
:root{--ink:#2e332f;--muted:#666d66;--green:#304e43;--cream:#f5f3ed;--line:#dedfd6;--gold:#b39665}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.7 system-ui,-apple-system,"Noto Sans JP",sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.notice{background:#e7e3d7;text-align:center;padding:9px 15px;font-size:13px}.wrap{max-width:1080px;margin:auto;padding:0 24px}header{display:flex;align-items:center;justify-content:space-between;padding:26px 0;gap:15px;border-bottom:1px solid var(--line)}.brand{font-family:Georgia,serif;font-size:25px;line-height:1.1}.brand small{font-family:system-ui;display:block;color:var(--muted);font-size:10px;letter-spacing:2px;margin-top:9px}nav{display:flex;gap:5px;background:#e9e9e1;border-radius:9px;padding:4px}nav button{padding:9px 17px;background:none;border:0;color:var(--muted);border-radius:6px;font-size:14px}nav button.active{background:white;color:var(--green);box-shadow:0 1px 4px #0001}.eyebrow{letter-spacing:3px;font-size:12px;color:var(--green);margin:35px 0 8px}h1{font-size:32px;font-weight:500;margin:0 0 8px;letter-spacing:1px}h2{font-size:19px;margin:0 0 18px;font-weight:600}.intro{color:var(--muted);margin:0 0 30px;font-size:14px}.layout{display:grid;grid-template-columns:1fr 300px;gap:26px;align-items:start}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:25px;margin-bottom:22px}.num{font:italic 22px Georgia;color:var(--gold);margin-right:12px}.choices{display:grid;gap:10px}.choice{border:1px solid var(--line);border-radius:8px;padding:15px;display:flex;gap:12px;align-items:center;cursor:pointer}.choice:has(input:checked){background:#f1f5f0;border-color:var(--green)}input[type=radio],input[type=checkbox]{accent-color:var(--green);width:18px;height:18px;flex-shrink:0}.choice small{display:block;color:var(--muted)}.calhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.smallbtn{border:1px solid var(--line);background:white;border-radius:6px;padding:7px 12px;font-size:13px}.days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.day{border:1px solid var(--line);border-radius:7px;background:#fff;padding:11px 2px;font-size:13px}.day b{display:block;font-size:20px;font-weight:500}.day.selected,.slot.selected{background:var(--green);color:white;border-color:var(--green)}.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:18px}.slot{background:white;border:1px solid var(--line);border-radius:6px;padding:10px 4px;font-size:14px}.slot:disabled{background:#eee;opacity:1;color:#999}.legend{color:var(--muted);font-size:12px}.summary{position:sticky;top:20px}.summary dl{margin:0}.summary dt{font-size:12px;color:var(--muted);margin-top:17px}.summary dd{margin:3px 0;font-size:15px}.primary{width:100%;background:var(--green);color:white;border:0;border-radius:7px;padding:14px 12px;margin-top:20px}.secondary{background:white;border:1px solid var(--line);border-radius:7px;padding:9px 15px;color:var(--ink)}.fine{font-size:12px;color:var(--muted);line-height:1.8}.pill{font-size:11px;padding:4px 9px;border-radius:20px;background:#ece7d9;color:#66532c;display:inline-block}.success{background:#edf3ee;color:var(--green);border:1px solid #c9d8cb;border-radius:9px;padding:18px;margin:0 0 22px}.error{color:#a12b27;font-size:14px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-bottom:22px}.stat{background:white;padding:19px;border:1px solid var(--line);border-radius:10px;font-size:13px;color:var(--muted)}.stat b{display:block;font:32px Georgia;color:var(--green)}.bookingrow{border-top:1px solid var(--line);padding:19px 0}.bookingrow:first-of-type{border-top:0}.rowtop{display:flex;justify-content:space-between;gap:12px}.actions{display:flex;gap:10px;margin-top:12px}.log{font-size:13px;color:var(--muted);padding:12px 0;border-top:1px solid var(--line)}select,input[type=date]{border:1px solid var(--line);background:white;border-radius:6px;padding:10px;max-width:100%}.blockform{display:flex;gap:10px;flex-wrap:wrap}.blockform .primary{width:auto;margin:0;padding:9px 15px}.hidden{display:none!important}footer{margin:35px 0 20px;border-top:1px solid var(--line);padding-top:20px;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:15px}#live{scroll-margin-top:20px}@media(max-width:760px){.wrap{padding:0 16px}header{padding:20px 0;align-items:flex-start;flex-direction:column}.brand{font-size:23px}nav{width:100%}nav button{flex:1}.layout{grid-template-columns:1fr;gap:0}.summary{position:static}.card{padding:19px}.slots{grid-template-columns:repeat(3,1fr)}h1{font-size:27px}.intro{font-size:13px}.day{font-size:11px}.day b{font-size:18px}.stats{gap:8px}.stat{padding:14px 10px}.rowtop{flex-direction:column;gap:6px}footer{flex-direction:column}}

.field{display:block;margin:14px 0;color:var(--muted);font-size:13px}.field input,.field textarea{display:block;width:100%;border:1px solid var(--line);border-radius:6px;padding:11px;background:white;color:var(--ink);font-size:16px}.field textarea{min-height:80px}.actions{flex-wrap:wrap}.hp{position:absolute;left:-9999px}.state-pending{background:#f6eedc}.state-confirmed{background:#e4eee6}.state-cancelled{background:#ececec}.state-blocked{background:#ebe5e0}.mailrow{border-top:1px solid var(--line);padding:12px 0;font-size:13px;overflow-wrap:anywhere}.warning{background:#fff2d9;padding:15px;border-radius:8px;color:#654f23;font-size:14px;margin-bottom:20px}a{color:var(--green);overflow-wrap:anywhere}.statusPanel{max-width:650px;margin:30px auto}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.toolbar .field{margin:0}.toolbar button{margin-bottom:0}@media(max-width:760px){.formgrid{grid-template-columns:1fr}.toolbar{align-items:stretch}.toolbar .field{flex:1 1 120px}.slots{grid-template-columns:repeat(3,1fr)}}

.gap16{margin-top:16px}.gap20{margin-top:20px}.gap24{margin-top:24px}

/* v03: grouped catalog */
[hidden]{display:none!important}
.extra-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0}
.extra-tab{min-height:60px;padding:12px 8px;border:1px solid #b9c7bf;border-radius:12px;background:#fff;color:#304b40;font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.extra-tab.selected{background:#304b40;color:#fff;border-color:#304b40}
.category-count{display:block;margin-top:5px;font-size:11px}
.menu-choice strong,.extra-choice strong{display:block;line-height:1.6}
.menu-description{display:block;margin-top:9px;font-size:13px;line-height:1.85;color:#59665e;font-weight:400}
.extra-section{font-size:15px;margin:14px 0 4px;grid-column:1/-1}
.popular-choice{border:2px solid #b6975d!important;background:#fffcf5}
.popular-badge{display:inline-block;background:#9c793e;color:white;border-radius:4px;padding:2px 10px;font-size:11px;font-weight:700;margin-bottom:7px}
.choice:has(input:checked){outline:2px solid #425e4f;outline-offset:1px}
.extra-tab:focus-visible{outline:3px solid #b6975d;outline-offset:3px}
@media(max-width:480px){.extra-tab{font-size:12px;padding:10px 5px}.extra-tabs{gap:6px}}

/* v05: explicit review and receipt stages. */
.booking-stage[hidden],#customer[hidden]{display:none!important}
.booking-stage{max-width:760px;margin:24px auto}
.booking-stage h1{font-size:clamp(26px,5vw,38px);line-height:1.5;margin:12px 0 24px}
.review-details dd{white-space:pre-line;overflow-wrap:anywhere;margin-bottom:18px}
.stage-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.stage-actions button{flex:1 1 220px}
.stage-link{display:block;text-align:center;text-decoration:none}

.monitor-discount{margin:12px 0 18px}.pricing-breakdown{white-space:pre-line;overflow-wrap:anywhere}.section-description{line-height:1.9;margin:0 0 18px}

/* Framed confirmation and receipt, matching the salon palette. */
.booking-stage{padding:32px;border:1px solid #c4cec7;box-shadow:0 8px 30px #304e430a;border-radius:16px}
.booking-progress{list-style:none;display:flex;padding:0;margin:0 0 30px;border:1px solid #d7ded8;border-radius:9px;overflow:hidden;background:#f4f6f2}
.booking-progress li{flex:1;text-align:center;padding:12px 4px;font-size:12px;color:#7a817b;border-right:1px solid #d7ded8}
.booking-progress li:last-child{border:0}.booking-progress li span{display:inline-grid;place-items:center;width:21px;height:21px;border-radius:50%;background:#e4e8e2;margin-right:6px;font-size:11px}
.booking-progress .is-current{background:#304e43;color:white;font-weight:700}.booking-progress .is-current span{background:white;color:#304e43}.booking-progress .is-done{color:#304e43}
.booking-stage>.eyebrow{margin:8px 0 4px;text-align:center;font-size:11px;letter-spacing:2px}.booking-stage h1{text-align:center;font-size:clamp(24px,5vw,32px);margin:8px 0 16px;font-weight:700;color:#304e43}
.booking-stage>p:not(.eyebrow):not(.error):not(.receipt-number){font-size:14px;line-height:1.85}
.review-details{margin:24px 0}.detail-group{border:1px solid #d2dcd4;border-radius:10px;margin:0 0 18px;overflow:hidden;background:white}
.detail-group-heading{background:#edf2ed;border-bottom:1px solid #d2dcd4;padding:11px 16px;font-size:14px;font-weight:700;color:#304e43;letter-spacing:.04em}
.detail-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;padding:15px 16px;border-bottom:1px solid #e5e9e3}.detail-row:last-child{border:0}
.detail-row dt{font-size:12px;color:#687169;line-height:1.7}.review-details .detail-row dd{margin:0;font-size:14px;line-height:1.8;color:#303b34;min-width:0}
.detail-row.detail-total{background:#f7f3e8;border-top:1px solid #dbcbab;align-items:center;padding-top:18px;padding-bottom:18px}.detail-total dt{font-size:14px;font-weight:700;color:#53492f}.review-details .detail-total dd{font-size:28px;font-weight:700;color:#304e43;line-height:1.3}.detail-discount dd{color:#a45442!important;font-weight:600}
.booking-stage .warning{border:1px solid #e2d2a6;border-radius:9px;padding:16px 18px;background:#fcf7e9;color:#695632}.stage-actions{padding-top:8px;gap:12px;align-items:stretch}.stage-actions .primary{margin:0;box-shadow:0 3px 0 #233c33}.stage-actions .secondary{border-color:#a6b5ab;padding:14px 12px}
.receipt-check{display:grid;place-items:center;width:62px;height:62px;margin:12px auto 16px;border:1px solid #bfd1c1;background:#edf5ed;border-radius:50%;color:#304e43;font-size:34px;font-weight:600}
.receipt-number{text-align:center;border:1px dashed #a9b9ac;background:#f5f8f3;border-radius:8px;padding:12px;font-weight:700;color:#304e43;overflow-wrap:anywhere}
.booking-stage .stage-link{padding:16px;font-weight:700}.booking-stage h1:focus{outline:none}
@media(max-width:480px){.booking-stage{padding:20px 16px;margin:20px auto}.booking-progress li{font-size:11px;padding:11px 2px}.booking-progress li span{display:block;margin:0 auto 4px}.detail-row{grid-template-columns:1fr;gap:5px;padding:13px 14px}.detail-group-heading{padding:10px 14px}.detail-row.detail-total{grid-template-columns:1fr auto;gap:10px}.review-details .detail-total dd{font-size:25px}.stage-actions button{flex-basis:100%}.stage-actions .primary{order:-1}}

/* Dedicated full-screen stages and one continuous receipt. */
.stage-view>header,.stage-view>footer{display:none}.stage-view{max-width:820px;padding-top:24px;padding-bottom:32px}.stage-view .booking-stage{margin:0 auto;scroll-margin-top:16px}
#completeStage{border:1px solid #adbdaf;border-top:5px solid #304e43;padding:32px 28px;background:#fff;box-shadow:0 12px 36px #304e4310}
#completeStage .booking-progress{display:none}#completeStage>.eyebrow{font-size:10px;color:#89958b}#completeStage h1{font-size:clamp(23px,5vw,30px);margin-bottom:22px;letter-spacing:0}
#completeStage .warning{background:#f3f6ef;border-color:#d8e1d1;color:#4c5d47}#completeStage .receipt-number{border:0;border-top:1px solid #dbe2d9;border-bottom:1px solid #dbe2d9;background:white;border-radius:0;margin:24px 0 0;padding:18px 8px;font-size:14px}
#completeDetails{margin:0 0 24px}#completeDetails .detail-row{grid-template-columns:130px minmax(0,1fr);padding:16px 4px;border-bottom:1px solid #e5e9e3;gap:12px}#completeDetails .detail-row dt{font-size:12px}#completeDetails .detail-row dd{font-size:13px}#completeDetails .detail-total{padding:20px 12px;border-radius:6px;margin:10px 0;background:#f6f2e7;border:1px solid #e3d7be;align-items:center}#completeDetails .detail-total dd{font-size:27px;text-align:right}
.preference-hint{padding:12px 14px;background:#edf3ee;border-left:3px solid #537662;border-radius:4px;font-size:13px;line-height:1.8;color:#304e43;margin:16px 0 12px}
@media(max-width:480px){.stage-view{padding:16px 12px 24px}#completeStage{padding:24px 18px;border-radius:12px}#completeDetails .detail-row{grid-template-columns:88px minmax(0,1fr);gap:12px}#completeDetails .detail-total{grid-template-columns:1fr auto;padding:18px 10px}.stage-view .booking-stage{scroll-margin-top:8px}}

/* Start at the reservation title; keep the entire top edge of each stage visible. */
#notice{display:none}.booking-page{padding-top:24px}.booking-page #customer>.eyebrow{display:none}.booking-page #customer>h1{margin-top:0;margin-bottom:14px}.booking-page.stage-view{padding-top:28px}.booking-page.stage-view .booking-stage{scroll-margin-top:28px}
@media(max-width:480px){.booking-page{padding-top:22px}.booking-page.stage-view{padding-top:24px}.booking-page.stage-view .booking-stage{scroll-margin-top:24px}}

.admin-calendar{margin-top:24px}.calendar-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.calendar-toolbar .field{margin:0}.calendar-legend{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0;font-size:12px}.calendar-legend span{border:1px solid #cdd4ce;border-radius:5px;padding:5px 9px}.calendar-scroll{max-height:560px;overflow:auto;border:1px solid #cdd4ce;border-radius:8px}.week-table{border-collapse:separate;border-spacing:0;width:100%;min-width:740px;font-size:12px;line-height:1.4}.week-table th,.week-table td{border-right:1px solid #dfe5df;border-bottom:1px solid #dfe5df;padding:0;text-align:center}.week-table thead th{position:sticky;top:0;background:#304e43;color:#fff;padding:12px 6px;z-index:2;min-width:92px}.week-table th:first-child{position:sticky;left:0;min-width:62px;background:#f2f4ee;color:#304e43;z-index:1;padding:6px}.week-table thead th:first-child{z-index:3}.week-table button{width:100%;min-height:32px;border:0;background:transparent;color:inherit;font-size:12px;padding:6px}.week-table button:hover{outline:2px solid #304e43;outline-offset:-2px}.cal-free{background:#fff;color:#537060}.cal-confirmed{background:#dcebdd;color:#214c32}.cal-pending{background:#fff0ca;color:#775312}.cal-buffer{background:#e7e2f0;color:#615477}.cal-blocked{background:#dddfe2;color:#454c55}.cal-closed{background:#f0eeea;color:#8a8780}.calendar-detail{font-size:13px;color:#304e43;white-space:pre-line}.week-table button:disabled{opacity:.45}
