:root{--bg:#eef2f7;--surface:#fff;--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--soft-shadow:0 10px 24px #0f172a0f;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font:16px/1.5 system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);min-width:320px;min-height:100svh;margin:0}button,input,textarea,select{font:inherit}#root{min-height:100svh}.booking-page{min-height:100svh;padding:14px 14px 190px}.page-header{justify-content:space-between;align-items:flex-end;gap:16px;padding:12px 2px 14px;display:flex}.eyebrow{color:var(--muted);letter-spacing:0;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:700}.page-header h1{color:var(--ink);margin:0;font-size:26px;line-height:1.12}.header-note{color:var(--muted);margin:8px 0 0;font-size:14px}.date-section,.legend-section,.schedule-section{margin-top:12px}.date-strip{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;gap:8px;margin-inline:-14px;padding:0 14px 8px;scroll-padding-inline:14px;display:flex;overflow-x:auto}.date-strip::-webkit-scrollbar{display:none}.schedule-scroll::-webkit-scrollbar{display:none}.date-card{border:1px solid var(--line);background:var(--surface);min-width:72px;min-height:82px;box-shadow:var(--soft-shadow);color:var(--ink);cursor:pointer;font:inherit;scroll-snap-align:start;text-align:center;border-radius:8px;flex-direction:column;flex:none;justify-content:center;padding:8px 6px;transition:border-color .18s,box-shadow .18s,transform .18s;display:flex}.date-card:disabled{cursor:not-allowed}.date-card:not(:disabled):active{transform:translateY(1px)}.date-card strong{margin-top:6px;font-size:17px;line-height:1}.weekday,.date-meta,.today-badge{font-size:12px;line-height:1.2}.weekday,.date-meta{color:var(--muted)}.is-past{box-shadow:none;color:#9ca3af;background:#f3f4f6}.is-past .weekday,.is-past .date-meta{color:#a1a1aa}.is-today{background:#f8fafc}.date-card.is-today:not(.is-selected){box-shadow:none}.date-card.is-selected{box-shadow:0 0 0 2px #2563eb33, var(--soft-shadow);background:#eff6ff;border-color:#1d4ed8}.today-badge{color:#fff;background:#2563eb;border-radius:999px;width:fit-content;margin:0 auto 6px;padding:3px 8px;font-weight:700}.legend-section{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex-wrap:wrap;gap:8px 10px;padding:10px;display:flex}.legend-item{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:11px;display:inline-flex}.legend-dot{border:1px solid #0000;border-radius:3px;width:12px;height:12px}.legend-dot.is-available,.slot-available{color:#15803d;background:#f0fdf4;border-color:#bbf7d0}.slot-available{padding:0}.legend-dot.is-booked,.slot-booked{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.legend-dot.is-expired,.slot-expired{color:#9ca3af;background:#f3f4f6;border-color:#e5e7eb}.legend-dot.is-closed,.slot-closed{color:#b45309;background:#fffbeb;border-color:#fde68a}.section-title{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.section-title h2{color:var(--ink);margin:0;font-size:18px;line-height:1.2}.section-title p{color:var(--muted);text-align:right;white-space:nowrap;margin:0;font-size:12px;line-height:1.3}.schedule-scroll{z-index:0;overscroll-behavior:contain;scrollbar-width:none;min-height:300px;max-height:clamp(330px,100svh - 500px,430px);margin-inline:-14px;padding:0 14px 10px;position:relative;overflow:auto}.schedule-grid{border-collapse:separate;border-spacing:0;table-layout:fixed;border:1px solid var(--line);background:var(--surface);width:100%;min-width:500px;box-shadow:var(--soft-shadow);border-radius:8px;overflow:hidden}.schedule-grid th,.schedule-grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;padding:8px 7px}.schedule-grid th:last-child,.schedule-grid td:last-child{border-right:0}.schedule-grid tr:last-child th,.schedule-grid tr:last-child td{border-bottom:0}.schedule-grid thead th{z-index:3;color:var(--ink);background:#f8fafc;font-size:13px;font-weight:700;position:sticky;top:0}.schedule-grid tbody th{z-index:2;color:#475569;background:#f8fafc;width:96px;font-size:12px;font-weight:700;position:sticky;left:0}.time-heading{z-index:4;width:96px;left:0}.slot{border-radius:0;height:46px;font-size:13px;font-weight:700}.slot-button{width:100%;min-height:46px;color:inherit;cursor:pointer;font:inherit;touch-action:manipulation;background:0 0;border:0;font-weight:700}.slot-button:hover{background:#16a34a14}.slot.is-selected{color:#1d4ed8;background:#dbeafe;border-color:#2563eb;box-shadow:inset 0 0 0 2px #2563eb5c}.slot.is-selected .slot-button:hover{background:#2563eb14}.demo-confirmation{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;margin-top:12px;padding:12px}.demo-confirmation-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.demo-confirmation-header p{color:#166534;margin:0;font-size:13px;font-weight:700}.demo-confirmation-header strong{color:#14532d;flex:none;font-size:16px;line-height:1.2}.demo-confirmation-list{flex-direction:column;gap:6px;margin-top:10px;display:flex}.demo-confirmation-item{background:#ffffffc2;border:1px solid #16653424;border-radius:8px;grid-template-columns:minmax(70px,1fr) minmax(48px,.7fr) minmax(76px,1fr) auto;align-items:center;gap:6px;padding:7px 8px;font-size:12px;font-weight:700;display:grid}.demo-confirmation-item span{overflow-wrap:anywhere;min-width:0}.demo-confirmation-item strong{color:#14532d;white-space:nowrap;font-size:13px}.demo-confirmation-note{color:#166534;margin:10px 0 0;font-size:12px;font-weight:700;line-height:1.4}.booking-bar{z-index:20;border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fffffff5;justify-content:space-between;align-items:flex-end;gap:10px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 24px #0f172a14}.booking-summary{flex:1;min-width:0}.selection-empty{color:var(--muted);margin:0 0 6px;font-size:13px}.selected-count{color:var(--muted);margin:0 0 6px;font-size:12px;font-weight:700}.selected-list{scrollbar-width:thin;flex-direction:column;gap:5px;max-height:74px;margin-bottom:6px;padding-right:2px;display:flex;overflow-y:auto}.selected-item{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main remove""meta remove";align-items:center;gap:1px 8px;max-width:100%;padding:5px 6px 5px 8px;font-size:11px;font-weight:700;display:grid}.selected-item-main,.selected-item-meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.selected-item-main{grid-area:main}.selected-item-meta{color:#475569;grid-area:meta;font-weight:600}.selected-item button{color:#1d4ed8;cursor:pointer;width:20px;height:20px;font:inherit;background:#dbeafe;border:0;border-radius:999px;flex:none;grid-area:remove;justify-content:center;align-items:center;padding:0;font-size:16px;font-weight:700;line-height:1;display:inline-flex}.booking-bar strong{color:var(--ink);font-size:18px;line-height:1.1;display:block}.submit-button{color:#fff;cursor:not-allowed;min-width:98px;font:inherit;touch-action:manipulation;background:#cbd5e1;border:0;border-radius:8px;padding:12px 14px;font-size:14px;font-weight:700}.submit-button:not(:disabled){cursor:pointer;background:#2563eb}@media (width>=720px){.booking-page{padding-inline:22px;max-width:760px;margin:0 auto;padding-bottom:170px}.date-strip,.schedule-scroll{margin-inline:-22px;padding-inline:22px}.booking-bar{padding-inline:22px;left:calc(50vw - min(760px,100vw)/2);right:calc(50vw - min(760px,100vw)/2)}}@media (width<=380px){.booking-page{padding-inline:12px}.date-strip,.schedule-scroll{margin-inline:-12px;padding-inline:12px}.booking-bar{padding-inline:12px}.submit-button{min-width:92px;padding-inline:12px}.demo-confirmation-item{grid-template-columns:minmax(0,1fr) minmax(0,.8fr)}}
