:root {
    --preset--max-width: 767px;
    --preset--width: 92%;
    --preset--font-color: #333;
    --preset--border-color: #ddd;
    --preset--border-radius: 10px;
    --preset--body-color: #f5f5f5;
    --preset--space-20: 20px;
    --preset--space-30: 30px;
    --preset--space-40: 40px;
    --preset--space-50: 50px;
    --preset--space-60: 60px;
    --preset--space-70: 70px;
    --preset--space-80: 80px;
    --preset--space-90: 90px;
    --preset--space-100: 100px;
    --preset--error--color: red;
    --preset--image--close-button: url('/assets/images/close_icon.svg');
    --preset--image--increase-button: url('/assets/images/plus_icon.svg');
    --preset--image--decrease-button: url('/assets/images/minus_icon.svg');
    --preset--bg-color--menu-quantity-button: #e5e5e5;
}

body {
    color: var(--preset--font-color);
    font-family: "Noto Sans JP", sans-serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
    font-size: 3.5vw;
    margin: 0;
    background: var(--preset--body-color);
}
body * {
    color: var(--preset--font-color);
}

img {
    max-width: 100%;
    height: auto;
}

p {
    margin: 0;
}

:focus {
    outline: none;
}



.error {
    color: var(--preset--error--color);
}



.global-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: #fff;
}
.global-nav-list {
    list-style: none;
    display: flex;
    align-items: center;
    margin: 0;
    padding: 0;
}
.global-nav-item {
    width: 20%;
    position: relative;
}
.global-nav-item .search-form {
    display: flex;
    position: absolute;
    top: -12vw;
    width: 56vw;
    left: 0;
    opacity: 0;
    visibility: hidden;
}
.global-nav-item .search-form.active {
    opacity: 1;
    visibility: visible;
}
.global-nav-item .search-form .input-text {
    width: 38vw;
    border-radius: var(--preset--border-radius) 0 0 var(--preset--border-radius);
    border: 1px solid var(--preset--border-color);
    font-size: 4.3vw;
    padding: 2.5vw;
    box-sizing: border-box;
}
.global-nav-item .search-form .submit-button {
    background: var(--preset--border-color);
    border: 1px solid var(--preset--border-color);
    border-radius: 0 var(--preset--border-radius) var(--preset--border-radius) 0;
    font-size: 3.5vw;
}
.global-nav-link {
    display: block;
    text-align: center;
    text-decoration: none;
    padding: 2.5vw;
    font-size: 2.8vw;
}
.global-nav-link.menu {
    display: block;
    border: 0;
}
.global-nav-link.cart {
    position: relative;
}
.global-nav-link.cart .num {
    position: absolute;
    top: 0;
    right: 2vw;
    background: red;
    color: #fff;
    border-radius: 50%;
    font-size: 2.6vw;
    line-height: 1;
    width: 5.4vw;
    height: 5.4vw;
    display: none;
    justify-content: center;
    align-items: center;
}
.global-nav-link.cart .num.active {
    display: flex;
}
.global-nav-link .icon {
    display: block;
    height: 5.5vw;
    margin: 0 auto 1.5vw;
}





/* index, customer-login
---------------------------------*/
.index-contents,
.customer-login-contents {
    width: var(--preset--width);
    margin: 15vw auto;
    padding: 4vw;
    box-sizing: border-box;
    border: 1px solid var(--preset--border-color);
    border-radius: 8px;
    background: #fff;
}
.index-contents h1,
.customer-login-contents h1,
.customer-login-contents h2 {
    text-align: center;
    margin: 3vw 0;
    font-size: 5.5vw;
}
.customer-login-contents form {
    display: flex;
    justify-content: center;
    margin: 6vw 0 4vw;
}
.customer-login-contents input[type="text"] {
    padding: 2vw;
    font-size: 4.3vw;
    border-radius: 8px 0 0 8px;
    border: 1px solid var(--preset--border-color);
}
.customer-login-contents button[type="submit"] {
    background: var(--preset--border-color);
    border: 1px solid var(--preset--border-color);
    font-size: 3.5vw;
    padding: 2vw;
    border-radius: 0 8px 8px 0;
}
.customer-login-contents .error {
    margin-bottom: 3vw;
}
.customer-login-contents #password-generator {
    font-size: 3.5vw;
}





/* menu
---------------------------------*/
.menu-wrap {
    margin: 0 auto;
    padding: 35vw 0;
    min-height: 100vh;
    min-height: 100svh;
    box-sizing: border-box;
}

.menu-header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    background: #fff;
}

.menu-wrap .page-title {
    font-size: 4vw;
    margin: 4vw 4.5vw;
    width: 96%;
}

.menu-tab {
    overflow-x: auto;
    background: #fff;
    border-top: 1px solid var(--preset--border-color);
    border-bottom: 1px solid var(--preset--border-color);
}
.menu-tab-list {
    display: flex;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 0;
}
.menu-tab-list .category-button {
    background: #fff;
    padding: 2.5vw 8vw;
    font-size: 3.5vw;
    border: 0;
    border-bottom: 5px solid #fff;
    white-space: nowrap;
}
.menu-tab-list .category-button.active {
    border-bottom-color: var(--preset--font-color);
}

.category-contents {
    padding: 0 4.5vw;
}
.category-name {
    font-size: 5vw;
    margin: 0 auto 6vw;
}
.menu-contents {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3vw;
}
.menu {
    position: relative;
    display: grid;
    grid-template-rows: subgrid;
    grid-row: span 4;
    gap: 1.5vw;
    color: var(--preset--font-color);
    text-decoration: none;
    /* margin: 1.5%; */
    padding: 2.5vw;
    box-sizing: border-box;
    border: 1px solid var(--preset--border-color);
    border-radius: var(--preset--border-radius);
    background: #fff;
}
.menu.sold-out > * {
    opacity: .3;
}
.menu.sold-out::after {
    content: "SOLD OUT";
    display: block;
    position: absolute;
    top: 38%;
    left: 0;
    width: 100%;
    text-align: center;
    font-size: 5vw;
    font-weight: bold;
    opacity: 1;
}
.menu-img {
    display: block;
    border-radius: var(--preset--border-radius);
    width: 100%;
    height: 32vw;
    object-fit: cover;
    margin-bottom: 2.5vw;
}
.menu-name {
    font-size: 4.5vw;
    margin: 0;
}
.menu-description {
    padding: 2vw 0;
}
.menu-price {
    font-size: 6vw;
    font-weight: bold;
    padding-bottom: .2vw;
}

.menu-wrap .end-time-message {
    display: none;
    font-size: 30px;
    width: var(--preset--width);
    margin: 0px auto;
}
.menu-wrap .end-time-message:last-child {
    display: block;
}

.close-button {
    position: absolute;
    top: 0;
    right: 0;
    border: 0;
    width: 12vw;
    height: 12vw;
    background: #fff center center / 60% 60% no-repeat var(--preset--image--close-button);
    padding: 5vw;
    padding: 0;
    border-radius: 50%;
}

.menu-quantity {
    display: flex;
    align-items: center;
    margin: 2vw 0;
}
.menu-quantity button {
    width: 8vw;
    height: 8vw;
    border: 0;
    border-radius: 50%;
}
.menu-quantity button.menu-qunatity-increase {
    background: var(--preset--bg-color--menu-quantity-button) center center / 100% 100% no-repeat var(--preset--image--increase-button);
}
.menu-quantity button.menu-qunatity-decrease {
    background: var(--preset--bg-color--menu-quantity-button) center center / 100% 100% no-repeat var(--preset--image--decrease-button);
}
.menu-quantity-text {
    font-size: 6vw;
    padding: 1vw 3vw;
    margin: 0 2vw;
    background: var(--preset--bg-color--menu-quantity-button);
}

#menu-confirm {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, .5);
    display: flex;
    justify-content: center;
    align-items: center;
    opacity: 0;
    visibility: hidden;
    transition: all .5s ease;
}
#menu-confirm.active {
    opacity: 1;
    visibility: visible;
}
#menu-confirm .menu {
    background: #fff;
    width: 80vw;
    position: relative;
}
#menu-confirm .menu-img {
    height: 45vw;
}
#menu-confirm .set-cart-button,
#cart .order-button {
    border: 0;
    border-radius: 20vw;
    font-size: 4vw;
    width: 100%;
    padding: 3vw;
    background: var(--preset--bg-color--menu-quantity-button);
}
#menu-confirm .close-button {
    top: -6vw;
    right: -6vw;
}

#cart {
    position: fixed;
    bottom: -120vh;
    left: 0;
    width: 100%;
    background: #fff;
    height: 100vh;
    height: 92svh;
    border-radius: 30px 30px 0 0;
    box-shadow: aqua;
    border: 1px solid var(--preset--border-color);
    padding: 8vw 4vw;
    box-sizing: border-box;
    transition: all .5s ease;
}
#cart.active {
    bottom: 0;
}
#cart .close-button {
    top: 2vw;
    right: 2vw;
}
#cart .cart-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
#cart .cart-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 7vw;
}
#cart .cart-row {
    border-bottom: 1px solid var(--preset--border-color);
}
#cart .cart-table td {
    padding: 2vw;
    font-size: 4.2vw;
}
#cart .menu-name {
    padding-right: 2.5vw;
}
#cart .menu-price {
    font-weight: normal;
    padding-right: 2.5vw;
    text-align: right;
}
#cart .menu-quantity {
    margin: 0;
}
#cart .menu-quantity-text {
    font-size: 4.2vw;
}
#cart .menu-quantity button {
    width: 7vw;
    height: 7vw;
}


#user-info {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    background: rgba(0, 0, 0, .5);
    opacity: 0;
    visibility: hidden;
    transition: all .5s ease;
}
#user-info.active {
    opacity: 1;
    visibility: visible;
}
.user-info-contents {
    background: #fff;
    width: 80vw;
    position: relative;
    border-radius: var(--preset--border-radius);
    padding: 4vw;
    box-sizing: border-box;
    font-size: 4vw;
}
.user-info-contents h2 {
    font-size: 4.5vw;
    margin: 0 0 4vw;
}
.user-info-contents span.title {
    font-weight: bold;
}
.user-info-contents p {
    margin-bottom: 2vw;
}






/* order history
---------------------------------*/
.order-history-header {
    background: #fff;
    border-bottom: 1px solid var(--preset--border-color);
}
.order-history-wrap {
    padding-bottom: 30vw;
}
.order-history-wrap .page-title {
    font-size: 4vw;
    margin: 0;
    padding: 4vw 4.5vw;
}
.order-history-contents {
    width: 92%;
    margin: 5vw auto;
    background: #fff;
    border-radius: var(--preset--border-radius);
    padding: 4vw 5vw;
    box-sizing: border-box;
}
.order-history-wrap .orders-table {
    border-collapse: collapse;
    width: 100%;
}
.order-history-wrap .orders-table tr {
    border-bottom: 1px solid var(--preset--border-color);
}
.order-history-wrap .orders-table td {
    padding: 2.5vw;
    font-size: 4vw;
}
.order-history-wrap .orders-table td.menu-name {
    font-weight: bold;
}
.order-history-wrap .orders-table td.menu-name .order-time {
    font-size: 3.7vw;
    font-weight: normal;
    display: block;
}
.order-history-wrap .orders-table td.quantity {
    width: 18%;
    text-align: center;
}
.order-history-wrap .orders-table td.subtotal {
    width: 30%;
    text-align: right;
}
.order-history-wrap .orders-table.total {
    margin-top: 6vw;
    border-bottom: 2px solid var(--preset--border-color);
}
.order-history-wrap .orders-table.total th {
    font-size: 4vw;
    text-align: left;
    padding: 2.5vw;
}
.order-history-wrap .orders-table.total td {
    font-size: 7vw;
    font-weight: bold;
    text-align: right;
}
.order-history-wrap .button {
    display: block;
    font-size: 4.5vw;
    text-align: center;
    text-decoration: none;
    border: 0;
    border-radius: 20vw;
    padding: 3vw;
    margin: 12vw 4vw;
    background: var(--preset--bg-color--menu-quantity-button);
}






/*　order thanks
---------------------------------*/
.order-thanks-contents {
    font-size: 4.5vw;
    text-align: center;
}
.order-thanks-contents .page-title {
    border-bottom: 1px solid var(--preset--border-color);
    background: #fff;
    margin: 0 0 8vw;
    padding: 4.5vw 0;
    font-size: 5vw;
}
.order-thanks-contents a {
    display: block;
    text-decoration: none;
    border: 0;
    border-radius: 20vw;
    padding: 3vw;
    margin: 12vw 4vw;
    background: var(--preset--bg-color--menu-quantity-button);
}



/* thanks */
.thanks-contents {
    text-align: center;
    padding: 5vw 7vw;
    font-size: 4.5vw;
}
.thanks-contents h1 {
    font-size: 7vw;
    margin-bottom: 6vw;
}



/* session-error */
.session-error-contents {
    text-align: center;
    padding: 5vw 7vw;
    font-size: 4.5vw;
}





/* not found
---------------------------------*/
.not-found-contents {
    text-align: center;
    font-size: 5vw;
    padding: 0 5vw;
}
.not-found-contents h1 {
    font-size: 20vw;
    margin-bottom: 6vw;
}
