:root{font-family:"Yu Gothic UI","Meiryo",sans-serif;color:#253e38;background:#f4f5f0;line-height:1.65}*{box-sizing:border-box}body{margin:0}main{max-width:820px;margin:auto;background:white;padding:28px}header{border-bottom:2px solid #b8c9c0;padding-bottom:20px}h1{margin:4px 0;color:#174a3c}h2{font-size:1.2rem}.eyebrow{font-size:.8rem;letter-spacing:.15em}.badge{background:#e6eee6;padding:4px 12px;border-radius:20px;font-size:.85rem}label{display:block;margin:12px 0}input,select,textarea,button{font:inherit}input:not([type=checkbox]),select,textarea{display:block;width:100%;padding:10px;border:1px solid #8a9e96;border-radius:5px}input[type=checkbox]{width:20px;height:20px;flex-shrink:0}button{background:#286e58;color:white;border:1px solid #286e58;border-radius:6px;padding:10px 15px;cursor:pointer}button:disabled{opacity:.5;cursor:default}.secondary{background:white;color:#245441}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #da980e;outline-offset:3px}section{margin:24px 0}fieldset{margin:25px 0;border:0;padding:0;min-width:0}legend{font-weight:bold;font-size:1.15rem}.portal-menu{display:flex;gap:12px;align-items:flex-start;margin:0;padding:16px 12px;border:1px solid #b7c5bc;border-bottom:3px solid #9aaa9f;background:#fff}.portal-menu:nth-child(even){background:#f3f7f1}.portal-menu small{display:block;margin-top:5px;color:#456258}.portal-menu-list{max-height:440px;overflow-y:auto;margin-top:12px}.check-line{display:flex;gap:10px;align-items:flex-start}#feedback:not(:empty){background:#fff1c8;border-left:5px solid #b07815;padding:14px}a{color:#145b46}.week-actions{display:flex;justify-content:space-between;gap:8px;margin:12px 0}.booking-week-scroll{overflow:visible}table{border-collapse:collapse;width:100%;table-layout:fixed;font-size:.85rem}th,td{border:1px solid #adbbb3;text-align:center;padding:5px 2px}thead{background:#dfe9e0}th small{display:block}td button{padding:4px;width:100%;background:#fff;color:#245441;border:0;border-radius:2px;font-weight:bold;font-size:1.2rem}td button[aria-pressed=true]{background:#286e58;color:white}td span{color:#a5aba7}.portal-reservation{border:1px solid #b4c3ba;border-left:5px solid #286e58;margin:14px 0;padding:16px}footer{border-top:1px solid #bdc8c0;margin-top:30px;padding-top:16px;color:#627b70}[hidden]{display:none!important}@media(max-width:500px){main{padding:18px 12px}th,td{padding:3px 1px}td button{font-size:1rem;min-height:44px}.portal-menu{padding:13px 10px}h1{font-size:1.65rem}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.booking-home-nav{position:sticky;top:0;z-index:10;background:#fff;padding:10px 0;border-bottom:1px solid #d8e2db;margin-bottom:14px}#refresh-visitors{margin-top:8px;font-size:.9rem}
.privacy-notice{margin:22px 0;padding:14px 18px;background:#f3f7f1;border-left:4px solid #648674;border-radius:4px;font-size:.94rem}.privacy-notice p{margin:6px 0}.login-actions{display:flex;flex-wrap:wrap;gap:12px}.login-actions button{min-height:44px}.login-actions button:last-child{font-size:.9rem}@media(max-width:500px){.login-actions{display:grid}.login-actions button{width:100%}.privacy-notice{padding:12px}}

.portal-menu-list{max-height:none;overflow:visible}.portal-menu-group{margin:12px 0;border:1px solid #b7c5bc;border-radius:6px;overflow:hidden}.portal-menu-group>summary{padding:14px 12px;background:#edf4ec;font-weight:bold;cursor:pointer;min-height:48px}.portal-menu-group>summary small{font-weight:normal;margin-left:8px}.portal-menu small{white-space:pre-line}.menu-category-picker{position:static}#selected-menu-names{padding:10px;background:#f3f7f1;overflow-wrap:anywhere}

.booking-soon-notice{border:2px solid #be2525;background:#fff3f3;color:#a31616;border-radius:10px;padding:15px 18px;font-size:1.03em;line-height:1.65}.booking-soon-notice a{color:#a31616;font-weight:700;text-decoration:underline}
.cancel-policy-notice,.cancel-phone-notice{margin:18px 0;padding:14px 16px;background:#fff6df;border:1px solid #c6a45c;border-radius:6px;color:#59451f;overflow-wrap:anywhere}.cancel-policy-notice p,.cancel-phone-notice p{margin:7px 0}.cancel-policy-notice a,.cancel-phone-notice a{display:inline-block;min-height:44px;padding:7px 0;color:#59451f;font-weight:700}.cancel-status-note{color:#52685b}

/* booking-width1: allow the contents to shrink within a phone viewport. */
html,body{width:100%;max-width:100%}
main{width:100%;min-width:0}
section,form,#slots,.portal-menu-group,.check-line{min-width:0;max-width:100%}
input,select,textarea{min-width:0;max-width:100%}
input[type=date]{min-inline-size:0}
.portal-menu>span,.portal-menu>div{flex:1;min-width:0;overflow-wrap:anywhere}
.portal-menu-group>summary,#summary,#bookings,#feedback,.portal-reservation{overflow-wrap:anywhere}
button{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.week-actions{flex-wrap:wrap}
.booking-week-scroll{width:100%;max-width:100%}

/* booking-scroll2: the fixed-width calendar needs no nested horizontal scroller.
   Keep vertical panning and pinch zoom; suppress only sideways page bounce. */
html,body{overflow-x:clip;overscroll-behavior-x:none}
#reservation{touch-action:pan-y pinch-zoom}

.pass-menu-notice{margin:12px 0;padding:12px;border:1px solid #c39b3c;border-radius:8px;background:#fff7dd;color:#49380f}.pass-menu-notice[hidden]{display:none}.portal-pass-history details{margin:14px 0;border-top:1px solid #dce5df;padding-top:12px}.portal-pass-history summary{cursor:pointer}.portal-pass-history table{width:100%;border-collapse:collapse;margin:10px 0}.portal-pass-history th,.portal-pass-history td{padding:8px;border-bottom:1px solid #dce5df;text-align:left}.portal-pass-history th:last-child,.portal-pass-history td:last-child{text-align:right}

.booking-bottom-nav{margin:28px 0 12px;padding-top:18px;border-top:1px solid #d8e2db}
