body {
    font-family: Arial, sans-serif;
    background-color: #f9fafc;
    margin: 0;
}

.page-wrap {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.main-body-wrap {
    margin: 0 0 60px;
}

:root {
    --header-height: 50px;
    --hamburger-menu-width: 30px;
    --hamburger-left-margin: 5px;
    --hamburger-stick-height: 4px;
    --hamburger-inner-gap: 8px;
    --btn--orange-bottom-border: 6px;
    --btn--orange-sink-height: 4px;

    --btn--orange-background-color: #eb6100;
    --btn--orange-border-bottom-color: #b84c00;
    --btn--green-background-color: #4CAF50;
    --btn--red-background-color: #f2150e;
}

@media screen and (min-width: 900px) { /* for PC */
    :root {
        --header-right-left-padding: 15px;
        --header-title-top-bottom-padding: 3px;
        --hamburger-header-title-gap: 20px;
        --side-menu-width: 295px;
        --side-menu-left-margin: 25px;
        --title-top-margin: 20px;
        --title-bottom-margin: 20px;
        --btn--orange-top-bottom-margin: 2px;
        --btn--orange-right-left-padding: 11px;
        --input-table-label-width: 110px;
        --result-table-default-inner-padding: 7px 8px;
        --result-table-right-left-margin: 25px;
    }

    .level-1 {font-size: 32px;}
    .level-2 {font-size: 20px;}
    .level-3, .data-table > * {font-size: 16px;}
    .level-4 {font-size: 14px;}

    .input-form {
        width: 640px;
        margin: 0 auto 30px;
    }

    .input-table {
        table-layout: fixed;
        width: 70%;
    }
}

@media screen and (min-width: 600px) and (max-width: 900px) { /* for Tablet */
    :root {
        --header-right-left-padding: 12px;
        --header-title-top-bottom-padding: 4.5px;
        --hamburger-header-title-gap: 18px;
        --side-menu-width: 270px;
        --side-menu-left-margin: 20px;
        --title-top-margin: 15px;
        --title-bottom-margin: 15px;
        --btn--orange-top-bottom-margin: 2px;
        --btn--orange-right-left-padding: 9px;
        --input-table-label-width: 108px;
        --result-table-default-inner-padding: 7px 8px;
        --result-table-right-left-margin: 15px;
    }

    .level-1 {font-size: 32px;}
    .level-2 {font-size: 18px;}
    .level-3, .data-table > * {font-size: 16px;}
    .level-4 {font-size: 14px;}

    .input-form {
        width: 560px;
        margin: 0 auto 30px;
    }

    .input-table {
        table-layout: fixed;
        width: 70%;
    }
}

@media screen and (max-width: 600px) { /* for Smartphone */
    :root {
        --header-right-left-padding: 8px;
        --header-title-top-bottom-padding: 6px;
        --hamburger-header-title-gap: 15px;
        --side-menu-width: 240px;
        --side-menu-left-margin: 16px;
        --title-top-margin: 15px;
        --title-bottom-margin: 15px;
        --btn--orange-top-bottom-margin: 3px;
        --btn--orange-right-left-padding: 6px;
        --input-table-label-width: 107px;
        --result-table-default-inner-padding: 6px 3px;
        --result-table-right-left-margin: 5px;
    }

    .level-1 {font-size: 24px;}
    .level-2 {font-size: 17px;}
    .level-3 {font-size: 15px;}
    .level-4, .data-table > * {font-size: 14px;}

    .input-form {
        max-width: 100%;
        margin: 0 15px 30px;
    }

    .input-table {
        max-width: 370px;
        width: 100%;
    }

    .table-wrap.is-overflow .data-table th, .table-wrap.is-overflow .data-table td {
        padding: 6px 7px;
    }
}

/* common */
header {
    position: fixed; /* ここに注目! */
    top: 0;
    z-index: 1000;
    width: calc(100% - 2 * var(--header-right-left-padding));
    height: var(--header-height);
    color: #fff;
    background-color: green;
    padding-inline: var(--header-right-left-padding);
    display: flex;
    justify-content: space-between;
    margin: 0;
}

.header-left {
    display: flex;
    align-items: center;
    gap: var(--hamburger-header-title-gap);
}

.header-title {
    text-decoration: none;
    display: block;
    color: #fff;
    margin: 0;
    padding: var(--header-title-top-bottom-padding) 0;
}

.header-title:hover {
    color: #eee;
}

.title {
    text-align: center;
    padding: calc(var(--header-height) + var(--title-top-margin)) 0 0;
    margin: 0 auto var(--title-bottom-margin);
}

.input-table {
    margin: 0 auto 10px;
    border-collapse: collapse;
}

.input-table td {
    border: 0;
    padding: 4px 2px;
}

.input-table td:nth-child(1) {
    width: var(--input-table-label-width);
}

.input-table td:nth-child(2) {
    padding: 4px 4px;
}

.input-form {
    text-align: center;
    background-color: #fff;
    padding: 20px 5px;
    border-radius: 12px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

input[type="text"] {
    width: 100%;
    padding: 8px;
    border-radius: 8px;
    border: 1px solid #aaa;
    box-sizing: border-box;
    transition: border 0.1s, background-color 0.1s;
    user-select: none;
}

input[type="text"]:hover {
    border-color: #222;
}

input[type="text"]:focus {
    border-color: 1.5px solid #000;
    background-color: #f2f2f2;
}

input[type="checkbox"] {
    width: 14px;
    height: 14px;
    margin: auto 0 auto 3px;
}

input[type="checkbox"], .checkbox-label {
    user-select: none;
}

input[type="checkbox"]:hover, .checkbox-label:hover {
    cursor: pointer;
}

.select-label-wrap {
    display: flex;
    gap: 3px;
}

.select-label, .checkbox-label {
    margin: auto 0;
    user-select: none;
}

.null-checkbox {
    max-width: max-content;
    margin: 0 auto 10px;
    display: flex;
    gap: 3px;
}

.null-checkbox--all {
    max-width: max-content;
    margin: 0 auto 10px;
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: center;
}

.null-checkbox--all .--flex-wrap {
    max-width: max-content;
    margin: 0 auto;
    display: flex;
    gap: 3px;
}

.order-select {
    max-width: max-content;
    margin: 0 auto 20px;
    display: flex;
    justify-content: center;
    gap: 10px;
    flex-wrap: wrap;
}

select {
    padding: 2px 1px;
    border-radius: 3px;
    color: #000;
    border-color: #767676;
    user-select: none;
}

select:disabled {
    color: #6d6d6d;
    border-color: rgba(118, 118, 118, 0.3);
}

.btn {
    user-select: none;
}

.btn:hover {
    cursor: pointer;
}

.btn--search, .btn--clear {
    padding: 8px 16px;
    color: #fff;
    border: none;
    border-radius: 8px;
}

.btn--clear {
    display: block;
    margin: 0 auto 20px;
}

.btn--orange {
    color: #fff;
    background-color: var(--btn--orange-background-color);
    text-decoration: none;
    margin: calc(var(--btn--orange-top-bottom-margin) + var(--btn--orange-bottom-border) * 1 / 5) 0 var(--btn--orange-top-bottom-margin);
    padding: calc(var(--btn--orange-bottom-border) * 3 / 5) var(--btn--orange-right-left-padding) 0;
    border-bottom: var(--btn--orange-bottom-border) solid var(--btn--orange-border-bottom-color);
    display: flex;
    align-items: center;
}

.btn--orange:hover {
    background-color: hsl(from var(--btn--orange-background-color) h s calc(l + 2))
}

.btn--orange:active {
    margin-top: calc(var(--btn--orange-top-bottom-margin) + var(--btn--orange-sink-height));
    border-bottom: calc(var(--btn--orange-bottom-border) - var(--btn--orange-sink-height)) solid var(--btn--orange-border-bottom-color);
}

.btn--shadow {
    -webkit-box-shadow: 0 0 12px rgba(0, 0, 0, .3);
    box-shadow: 0 0 12px rgba(0, 0, 0, .3);
}

.btn--green {
    background-color: var(--btn--green-background-color);
}

.btn--green:hover {
    background-color: hsl(from var(--btn--green-background-color) h s calc(l - 3));
}

.btn--green:active {
    background-color: hsl(from var(--btn--green-background-color) h s calc(l - 6));
}

.btn--red {
    background-color: var(--btn--red-background-color);
}

.btn--red:hover {
    background-color: hsl(from var(--btn--red-background-color) h s calc(l - 3));
}

.btn--red:active {
    background-color: hsl(from var(--btn--red-background-color) h s calc(l - 6));
}

.overflow-checkbox-wrap {
    width: max-content;
    margin: 0 auto 10px;
    display: flex;
    gap: 3px;
}

.total-count {
    width: max-content;
    margin: 0 var(--result-table-right-left-margin) 2px auto;
}

.table-wrap {
    margin: 0 var(--result-table-right-left-margin) 30px;
}

.table-wrap.is-overflow {
    overflow-x: scroll;
}

.data-table {
    width: 100%;
    margin: 0 auto;
    border-collapse: collapse;
}

.table-wrap.is-overflow .data-table {
    min-width: max-content;
    margin: 0;
}

.data-table th, .data-table td {
    padding: var(--result-table-default-inner-padding);
    border: 1px solid #ddd;
}

.data-table th {
    background-color: #4CAF50;
    color: #fff;
}

.data-table td.num {
    text-align: right;
}

.data-table tr:nth-child(even) {
    background-color: #f2f2f2;
}

.no-data {
    text-align: center;
}

.go-to-top {
    width: max-content;
    margin: 0 var(--result-table-right-left-margin) 0 auto;
    user-select: none;
}

.go-to-top a {
    text-decoration: none;
    text-decoration-color: transparent;
    color: #00e;
    transition: text-decoration-color 0.1s;
    padding: 2px;
}

.go-to-top a:hover, .go-to-top a:focus {
    text-decoration: underline;
    text-decoration-color: currentColor;
}

.go-to-top::before, .go-to-top::after {
    content: "⇧";
}

footer {
    text-align: center;
    background-color: green;
    color: #fff;
    padding: 15px 10px;
    width: auto;
    margin: auto 0 0;
    display: flex;
    flex-direction: column;
}

footer .footer-inner {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin: auto;
}

* { /* Androidでタッチ時に青くなるのを防ぐ */
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}