:root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#282522;background:#f6f3ee}*{box-sizing:border-box}body{margin:0}.booking{max-width:620px;margin:auto;padding:32px 20px 60px}.brand{font-weight:800;font-size:25px;letter-spacing:-1px}.brand small{display:block;font-size:10px;letter-spacing:3px;color:#988774}.eyebrow{color:#998976;font-size:11px;letter-spacing:2px;font-weight:700;margin:36px 0 10px}h1{font-size:32px;letter-spacing:-1px;margin:0 0 12px}p{color:#77716a;line-height:1.5}.steps{color:#998976;font-size:13px}.cards{display:grid;gap:10px;margin:24px 0}.card,.slot{display:flex;text-align:left;justify-content:space-between;align-items:center;background:white;border:1px solid #e4ddd2;border-radius:16px;padding:18px;color:#292522;font:inherit;min-height:64px;width:100%}.card:active,.slot:active,.primary:active{transform:scale(.98)}.card.selected,.slot.selected{border:2px solid #a18461;background:#f8f3eb}.card small{display:block;color:#837b72;margin-top:6px}.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.slot{justify-content:center}.primary,.secondary{width:100%;border:0;border-radius:14px;min-height:54px;font-size:16px;font-weight:700;margin-top:12px}.primary{background:#9f8260;color:white}.primary:disabled{opacity:.5}.secondary{background:transparent;color:#766a5b}.field{display:block;color:#80786e;font-size:14px;margin:18px 0}.field input{display:block;width:100%;margin-top:8px;padding:14px;border:1px solid #dfd7ca;border-radius:12px;background:#fff;color:#282522;font:inherit;font-size:16px;min-height:52px}.error{color:#a03731;background:#fff1ef;padding:12px;border-radius:10px}.summary{background:white;border:1px solid #e4ddd2;border-radius:18px;padding:20px;margin:22px 0}.summary div{display:flex;justify-content:space-between;gap:12px;padding:8px 0}.success{font-size:44px;color:#779a7e}.muted{font-size:13px}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #7596ae;outline-offset:2px}@media(max-width:380px){.booking{padding:24px 16px}.slots{grid-template-columns:repeat(2,1fr)}}
.field select{display:block;width:100%;margin-top:8px;padding:14px;border:1px solid #dfd7ca;border-radius:12px;background:#fff;color:#282522;font:inherit;font-size:16px;min-height:52px}
.manage-link{display:flex;align-items:center;justify-content:center;text-decoration:none;padding:12px}
.notice{color:#3d7450;background:#eef7f0;padding:12px;border-radius:10px}
/* Visual language shared with the salon prototype; public flows remain API-backed. */
.booking{max-width:660px;padding:28px 20px 64px}
.booking-brand{display:flex;align-items:center;justify-content:center;gap:11px;margin:6px 0 30px}
.booking-pole{display:block;width:15px;height:35px;flex:none;border-radius:6px;border-top:5px solid #292824;border-bottom:5px solid #292824;background:repeating-linear-gradient(-35deg,#46708f 0 5px,#fff 5px 8px,#bb5450 8px 13px,#fff 13px 16px);background-size:100% 19.5324px;animation:booking-pole-spin 5s linear infinite}
@keyframes booking-pole-spin{to{background-position:0 19.5324px}}
.booking-wordmark{font-family:Georgia,serif;font-size:29px;line-height:1;font-weight:700;letter-spacing:-1px;color:#292824}
.booking-wordmark small{display:block;margin-top:7px;font:500 8px/1 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:2.5px;text-align:center}
.booking-content{padding:26px;border:1px solid #e5dfd4;border-radius:22px;background:#fff;box-shadow:0 10px 35px #4d3a2210}
.booking .eyebrow{margin:0 0 14px;font-size:10px}
.booking h1{font-size:29px;line-height:1.15;letter-spacing:-.035em}
.booking-content>p:not(.booking-step):not(.error):not(.notice){margin:12px 0 0}
.booking-progress{display:flex;gap:5px;margin:0 0 9px}
.booking-progress span{height:3px;flex:1;background:#ece7df;border-radius:4px}
.booking-progress span.active{background:#a08461}
.booking-step{font-size:10px;letter-spacing:.12em;font-weight:700;color:#9b8b78;margin:0 0 13px}
.booking .cards{margin:22px 0;gap:10px}
.booking .card{border-radius:13px;min-height:72px;padding:16px;background:#fbfaf8}
.booking .card:hover,.booking .slot:hover{border-color:#b7a48b;background:#f8f3eb}
.booking .slot{min-height:48px;padding:10px;border-radius:11px;font-weight:600}
.booking .slots{margin-top:18px}
.booking .primary{background:#a08461;min-height:52px}
.booking .summary{background:#f8f6f2;border-color:#eee8df}
.booking .success{display:grid;place-items:center;width:66px;height:66px;margin:20px auto 8px;border-radius:50%;background:#e7eee5;color:#6e856c;font-size:32px}
@media(max-width:400px){.booking{padding:22px 14px 40px}.booking-brand{margin-bottom:23px}.booking-content{padding:20px;border-radius:19px}.booking h1{font-size:26px}}
@media(prefers-reduced-motion:reduce){.booking-pole{animation:none}}
/* White action text needs sufficient contrast against the brand colour. */
.booking .primary { background: #897053; }
/* Native selector with the same visual treatment as the salon panel. */
.field select:not([multiple]):not([size]) { -webkit-appearance: none; appearance: none; min-height: 52px; padding: 12px 46px 12px 15px; border: 1px solid #ded6ca; border-radius: 12px; background-color: #fff; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23786c5e' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 15px center; background-size: 20px 20px; font-size: 16px; line-height: 1.4; }
.field select:not([multiple]):not([size]):focus-visible { outline: 3px solid #526f83; outline-offset: 2px; border-color: #526f83; }
.field select:not([multiple]):not([size]):disabled { background-color: #f4f1ec; color: #777067; opacity: .7; }
@media (forced-colors: active) { .field select:not([multiple]):not([size]) { -webkit-appearance: auto; appearance: auto; background-image: none; } }
.nearest{margin:24px 0 8px}.nearest h2{font-size:17px;margin:0 0 12px;letter-spacing:-.01em}.nearest-list{display:grid;gap:8px}.nearest-slot{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:52px;padding:12px 15px;border:1px solid #e4ddd2;border-radius:11px;background:#fff;color:#302c27;font:inherit;text-align:left}.nearest-slot strong{color:#765b3d;font-variant-numeric:tabular-nums}.nearest-slot.selected{border:2px solid #a18461;background:#f8f3eb}.nearest-slot:active{background:#f4f0ea}.nearest-status{font-size:13px;margin:10px 0;color:#77716a}.nearest-more{min-height:44px;padding:8px 0;border:0;background:transparent;color:#765b3d;font:inherit;font-weight:600;text-align:left}.nearest-more:disabled{opacity:.6}.nearest-slot:focus-visible,.nearest-more:focus-visible{outline:3px solid #7596ae;outline-offset:2px}
.nearest-list{max-height:min(360px,45vh);overflow-y:auto;overscroll-behavior:contain;align-content:start;scrollbar-color:#c6b7a5 transparent;scrollbar-width:thin}.nearest-list:empty{display:none}.nearest-list:focus-visible{outline:3px solid #7596ae;outline-offset:3px;border-radius:11px}
.nearest-help{font-size:13px;line-height:1.45;margin:0 0 12px;color:#756e66}.nearest-slot-label{display:flex;align-items:center;flex-wrap:wrap;gap:4px 9px;min-width:0}.nearest-slot-label small{font-size:12px;font-weight:600;color:#725c45;background:#f2ede6;border-radius:999px;padding:4px 8px}.nearest-alternative{background:#fcf5f3;border-color:#ead8d1}.nearest-alternative .nearest-slot-label small{background:#f3e2dd;color:#804f46}.booking .slots .slot{flex-direction:column;gap:3px;line-height:1.2}.booking .slots .slot small{font-size:12px;font-weight:500;color:#756e66}
body.booking-dialog-open{overflow:hidden}.booking-slot-confirmation{position:fixed;inset:0;margin:auto;width:min(440px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;border:1px solid #e5dfd4;border-radius:22px;padding:0;color:#282522;background:#fff;box-shadow:0 18px 60px #30251b2b}.booking-slot-confirmation::backdrop{background:#29241e80}.booking-confirm-inner{position:relative;padding:28px}.booking-confirm-close{position:absolute;right:20px;top:20px;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:#f4f1ec;font-size:25px;line-height:1;color:#37312c}.booking-confirm-eyebrow{display:block;padding-right:52px;color:#998976;font-size:10px;letter-spacing:2px;font-weight:700}.booking-confirm-inner h2{margin:20px 0 8px;font-size:25px;letter-spacing:-.03em}.booking-confirm-inner>p{margin:0;line-height:1.45}.booking-confirm-details{margin:22px 0 16px;padding:5px 16px;border:1px solid #e8e2d9;border-radius:14px;background:#faf8f5}.booking-confirm-details div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;line-height:1.4}.booking-confirm-details div+div{border-top:1px solid #eae5dd}.booking-confirm-details span{color:#77716a}.booking-confirm-details strong{text-align:right;overflow-wrap:anywhere}.booking-confirm-inner .booking-confirm-note{font-size:13px;margin:0 0 10px}.booking-confirm-inner .primary{background:#897053;color:#fff}.booking-confirm-close:focus-visible,.booking-confirm-inner button:focus-visible{outline:3px solid #7596ae;outline-offset:2px}@media(max-width:400px){.booking-confirm-inner{padding:24px 20px max(20px,env(safe-area-inset-bottom))}.booking-confirm-details div{font-size:14px}}
/* Public booking: one day and one explicit selection at a time. */
.day-navigation{display:flex;align-items:stretch;gap:5px;margin-top:22px}.day-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));flex:1;min-width:0;gap:3px}.day-choice,.day-arrow{min-width:0;min-height:54px;border:1px solid #e5ded4;border-radius:10px;background:#fff;color:#5e554b;font:inherit}.day-choice{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:4px 1px;font-size:11px}.day-choice strong{font-size:16px}.day-choice.selected{border-color:#897053;background:#eee7de;color:#5b4530}.day-arrow{width:44px;flex:none;font-size:24px}.day-arrow:disabled{opacity:.35}.date-choice{margin:12px 0 22px}.slots-heading{font-size:17px;margin:20px 0 8px}.booking-summary{margin:22px 0 18px;padding:16px;border:1px solid #e7e0d7;border-radius:14px;background:#f8f6f2}.booking-summary h2{font-size:16px;margin:0 0 8px}.booking-summary>div{display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 0;font-size:14px}.booking-summary>div>span{color:#716a62}.booking-summary strong{overflow-wrap:anywhere}.summary-edit{border:0;background:none;color:#765b3d;font:inherit;text-decoration:underline;min-height:44px;padding:4px}.availability-empty{margin:14px 0}.outline-action{border:1px solid #e4ddd2;background:#fff;margin-top:8px}.field-error{margin:-12px 0 12px;color:#a03731;font-size:13px}.field input[aria-invalid=true]{border-color:#ae554b}.booking-content .slot{min-height:52px}.booking-content button:focus-visible,.booking-content input:focus-visible{outline:3px solid #526f83;outline-offset:2px}@media(max-width:400px){.day-navigation{gap:3px}.day-strip{gap:2px}.day-arrow{width:36px;min-width:36px}.day-choice{font-size:10px}.booking-summary>div{grid-template-columns:55px minmax(0,1fr) auto}}
.day-strip{display:flex;overflow-x:auto;scrollbar-width:thin}.day-choice{flex:1 0 44px}.day-arrow{width:44px;min-width:44px}
.summary-edit{min-width:44px}
/* Compact, touch-friendly booking controls. */
.day-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;gap:4px}
.day-choice{width:100%;min-width:0;font-size:11px}
.day-choice strong{font-size:14px;white-space:nowrap}
.calendar-open{min-height:44px;padding:8px 4px;border:0;background:transparent;color:#765b3d;font:inherit;font-weight:600;text-decoration:underline;text-underline-offset:3px}
.compact-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0;padding:12px 14px}
.compact-summary>div{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0;line-height:1.4}
.compact-summary>div>span{font-size:14px}
.booking-duration{white-space:nowrap}
body.booking-popup-open{overflow:hidden}
.booking-popup{position:fixed;inset:0;margin:auto;width:min(460px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;padding:0;border:1px solid #e5dfd4;border-radius:22px;background:#fff;color:#282522;box-shadow:0 18px 60px #30251b2b}
.booking-popup::backdrop{background:#29241e80}
.booking-popup-inner{padding:22px}
.popup-top,.popup-month{display:flex;align-items:center;justify-content:space-between;gap:12px}
.popup-top h2{font-size:22px;letter-spacing:-.025em;margin:0}
.popup-close,.popup-month button{display:grid;place-items:center;flex:none;min-width:44px;min-height:44px;border:0;border-radius:12px;background:#f6f3ee;color:#5d5042;font:inherit;font-size:24px}
.popup-month{margin:12px 0 8px;text-transform:capitalize}
.popup-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;text-align:center}
.popup-weekdays{color:#77716a;font-size:12px;font-weight:600}
.popup-weekdays span{padding:7px 0}
.popup-grid button{min-width:0;min-height:44px;border:1px solid transparent;border-radius:10px;background:transparent;color:#302c27;font:inherit}
.popup-grid button.available{border-color:#e4ddd2;background:#faf8f5;font-weight:600}
.popup-grid button[aria-current=date]{border-color:#897053;background:#eee7de}
.popup-grid button:disabled,.popup-month button:disabled{color:#aaa39a;opacity:.5}
.popup-status{font-size:13px;margin:12px 0 0}
.popup-actions{display:grid;gap:8px;margin-top:16px}
.popup-actions button{min-height:52px;text-align:left;padding:12px 15px;border:1px solid #e4ddd2;border-radius:12px;background:#faf8f5;color:#302c27;font:inherit;font-weight:600}
.booking-popup button:focus-visible,.calendar-open:focus-visible{outline:3px solid #526f83;outline-offset:2px}
@media(max-width:600px){.booking-popup{inset:auto 0 0;width:100%;max-height:calc(100dvh - env(safe-area-inset-top) - 12px);border-radius:22px 22px 0 0}.booking-popup-inner{padding:20px 16px max(20px,env(safe-area-inset-bottom))}.day-navigation{gap:3px}.day-arrow{width:44px;min-width:44px}.day-choice strong{font-size:13px}}
.booking-honeypot{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.booking .secondary:disabled{opacity:.55;cursor:default}

.privacy-ack{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:8px;margin:20px 0 8px;color:var(--text,#302e2a);font-size:16px;line-height:1.5}
.privacy-ack .privacy-check-target{display:flex;align-items:center;justify-content:center;width:44px;height:44px;cursor:pointer}
.privacy-ack input{width:24px;height:24px;margin:0;accent-color:#8e7352}
.privacy-ack div>label{cursor:pointer;padding-block:12px}
.privacy-ack a,.booking-privacy-footer a{color:#755c40;text-underline-offset:3px}
.booking-privacy-footer{margin-top:24px;text-align:center;font-size:14px}
.privacy-document{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75}
.privacy-brand{display:block;text-align:center;margin:20px 0 32px;font-family:Georgia,serif;font-size:34px;color:inherit;text-decoration:none}
.privacy-brand small{display:block;font-family:system-ui;font-size:11px;letter-spacing:.25em}
.privacy-page .booking-content h1{font-size:clamp(26px,5vw,40px);overflow-wrap:anywhere}

.booking-phone-input { display: flex; align-items: stretch; width: 100%; min-width: 0; margin-top: 8px; border: 1px solid #ded6c9; border-radius: 12px; background: #fff; }
.booking-phone-prefix { display: flex; align-items: center; padding: 0 14px; flex: none; border-right: 1px solid #e8e2d8; color: #6f6252; font-size: 16px; font-weight: 600; }
.booking-content .field .booking-phone-input input { min-width: 0; width: 100%; flex: 1; margin: 0; border: 0; border-radius: 0 12px 12px 0; font-size: 16px; }
.booking-phone-input:focus-within { outline: 3px solid #7596ae; outline-offset: 2px; }
.booking-content .field .booking-phone-input input:focus { outline: none; box-shadow: none; }
.booking-phone-input:has([aria-invalid="true"]) { border-color: #ad4b3f; }
