:root{--bg: #f7f4f4;--surface: #ffffff;--surface-alt: #f6eeef;--border: #e7dcdd;--text: #1c1416;--text-muted: #6d6266;--accent: #c8102e;--accent-strong: #8b0000;--accent-soft: #fdeaec;--accent-text: #ffffff;--brand-gradient: linear-gradient(140deg, #ff1e2d 0%, #c8102e 45%, #8b0000 100%);--danger: #b3261e;--warning: #9a6700;--success: #1f9d57;--radius: 10px;--radius-sm: 6px;--shadow: 0 1px 2px rgb(35 16 20 / 6%), 0 4px 12px rgb(35 16 20 / 5%);--header-h: 64px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #14100f;--surface: #1c1615;--surface-alt: #241b1c;--border: #362a2b;--text: #f0e9ea;--text-muted: #a99ea0;--accent: #ff5a68;--accent-strong: #ff8a93;--accent-soft: #33161a;--accent-text: #1a0608;--brand-gradient: linear-gradient(140deg, #ff5a68 0%, #e5122c 55%, #8b0000 100%);--danger: #f2837a;--warning: #e0b341;--success: #4ccf83;--shadow: 0 1px 2px rgb(0 0 0 / 35%), 0 4px 14px rgb(0 0 0 / 25%)}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;line-height:1.25}h1{font-size:1.5rem;font-weight:650}h2{font-size:1.05rem;font-weight:600}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{height:var(--header-h);display:flex;align-items:center;gap:24px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--border);border-top:3px solid transparent;border-image:var(--brand-gradient) 1;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}.brand-logo{width:38px;height:38px;object-fit:contain;display:block}.brand-title{font-weight:650;font-size:.9rem}.brand-sub{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.app-nav{display:flex;gap:4px;flex:1;overflow-x:auto}.nav-link{padding:7px 12px;border-radius:var(--radius-sm);color:var(--text-muted);text-decoration:none;font-size:.9rem;font-weight:500;white-space:nowrap}.nav-link:hover{background:var(--surface-alt);color:var(--text)}.nav-link.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.app-account{display:flex;align-items:center;gap:12px;margin-left:auto}.account-email{font-size:.85rem;color:var(--text-muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-main{flex:1;padding:28px 24px 48px;max-width:1240px;width:100%;margin:0 auto}.btn{font:inherit;font-size:.875rem;font-weight:550;padding:8px 14px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:background .12s ease,border-color .12s ease}.btn-primary{background:var(--accent);color:var(--accent-text)}.btn-primary:hover{filter:brightness(1.08)}.btn-ghost{background:transparent;color:var(--text-muted);border-color:var(--border)}.btn-ghost:hover{background:var(--surface-alt);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{filter:brightness(1.08)}.btn-danger-ghost{background:transparent;color:var(--danger);border-color:var(--danger)}.btn-danger-ghost:hover{background:color-mix(in srgb,var(--danger) 10%,transparent)}.btn:disabled{opacity:.55;cursor:not-allowed}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-sub{margin:4px 0 0;color:var(--text-muted);font-size:.9rem}.slots-badge{display:flex;flex-direction:column;align-items:flex-end;padding:8px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.slots-badge-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.slots-badge-value{font-size:1.1rem;font-weight:650;color:var(--accent)}.placeholder-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);max-width:640px}.placeholder-card p{margin:8px 0 0;color:var(--text-muted);font-size:.9rem}.state-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px;max-width:440px;margin:48px auto;text-align:center;box-shadow:var(--shadow)}.state-panel p{color:var(--text-muted);font-size:.9rem}.api-status{margin-top:20px;font-size:.8rem;font-family:ui-monospace,Cascadia Code,Consolas,monospace;color:var(--text-muted)}.api-status--up{color:var(--accent)}.api-status--down{color:var(--warning)}.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);max-width:520px}.form{display:flex;flex-direction:column;gap:18px}.form-field{display:flex;flex-direction:column;gap:6px;border:none;padding:0;margin:0}.form-field label,.form-field legend{font-size:.85rem;font-weight:600;color:var(--text);padding:0}.form-field input[type=text],.form-field input[type=email],.form-field input[type=tel],.form-field textarea{font:inherit;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);width:100%}.form-field input:focus,.form-field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-field input:disabled{color:var(--text-muted);cursor:not-allowed}.form-field input[aria-invalid=true],.form-field textarea[aria-invalid=true]{border-color:var(--danger)}.form-field textarea{resize:vertical;min-height:68px}.field-hint{font-size:.78rem;color:var(--text-muted)}.field-error{font-size:.78rem;color:var(--danger)}.radio-row{display:flex;gap:20px}.radio{display:flex;align-items:center;gap:7px;font-weight:500;font-size:.9rem;cursor:pointer}.radio input{accent-color:var(--accent)}.form-actions{display:flex;gap:12px;margin-top:4px}.form-banner{padding:10px 14px;border-radius:var(--radius-sm);font-size:.85rem;border:1px solid transparent}.form-banner--error{background:color-mix(in srgb,var(--danger) 12%,transparent);border-color:var(--danger);color:var(--danger)}.form-banner--success{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.slots-badge-max{color:var(--text-muted);font-weight:600}.schedule-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.week-nav{display:flex;align-items:center;gap:10px}.week-nav-btn{width:34px;height:34px;display:grid;place-items:center;font-size:1.4rem;line-height:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}.week-nav-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.week-nav-btn:disabled{opacity:.4;cursor:not-allowed}.week-nav-label{min-width:150px;text-align:center;font-weight:600;font-size:.95rem}.cal-legend{display:flex;gap:16px;font-size:.78rem;color:var(--text-muted)}.cal-legend-item{display:flex;align-items:center;gap:6px}.cal-legend-swatch{width:11px;height:11px;border-radius:3px;display:inline-block}.cal-legend-swatch.is-open{background:var(--accent)}.cal-legend-swatch.is-booked{background:var(--accent-soft);border:1px solid var(--accent)}.cal-legend-swatch.is-full{background:var(--text-muted)}.cal-legend-swatch.is-empty{background:var(--surface-alt);border:1px solid var(--border)}.cal-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow)}.cal{min-width:660px}.cal-head,.cal-row{display:grid;grid-template-columns:58px repeat(7,minmax(76px,1fr))}.cal-head{position:sticky;top:0;z-index:3;background:var(--surface);border-bottom:1px solid var(--border)}.cal-corner{position:sticky;left:0;z-index:4;background:var(--surface)}.cal-day-head{display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 4px;border-left:1px solid var(--border)}.cal-day-name{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.cal-day-num{font-size:1.05rem;font-weight:650}.cal-day-head.is-today{border-bottom:2px solid var(--accent)}.cal-day-head.is-today .cal-day-name,.cal-day-head.is-today .cal-day-num{color:var(--accent)}.cal-body{max-height:62vh;overflow-y:auto}.cal-row{border-bottom:1px solid var(--border)}.cal-row:last-child{border-bottom:none}.cal-time{position:sticky;left:0;z-index:2;background:var(--surface);display:flex;align-items:center;justify-content:flex-end;padding-right:8px;font-size:.72rem;font-variant-numeric:tabular-nums;color:var(--text-muted)}.slot-cell{min-height:42px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-left:1px solid var(--border);position:relative}.slot-cell:before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:3px;border-radius:2px}.slot-cell.is-open:before{background:var(--brand-gradient)}.slot-cell.is-open{cursor:default}.slot-cell.is-open:hover{background:var(--accent-soft)}.slot-cell.is-full:before{background:var(--text-muted)}.slot-cell.is-full{background:var(--surface-alt)}.slot-cell.is-past{opacity:.4}.slot-cell--empty{background:repeating-linear-gradient(45deg,transparent,transparent 6px,var(--surface-alt) 6px,var(--surface-alt) 12px);border-left:1px solid var(--border)}.slot-cell-status{font-size:.72rem;font-weight:600}.slot-cell.is-open .slot-cell-status{color:var(--accent)}.slot-cell.is-full .slot-cell-status{color:var(--text-muted);letter-spacing:.04em}.slot-cell.is-booked{background:var(--accent-soft)}.slot-cell.is-booked:before{background:var(--brand-gradient)}.slot-cell.is-booked .slot-cell-status{color:var(--accent);font-weight:700}.slot-cell-sub{font-size:.62rem;color:var(--text-muted);line-height:1}button.slot-cell{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:100%;min-height:42px;border-left:1px solid var(--border);position:relative}.slot-cell.is-clickable{cursor:pointer}.slot-cell.is-clickable:hover{background:var(--accent-soft)}.slot-cell.is-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.modal-backdrop{position:fixed;inset:0;background:#1c14168c;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--surface);border-radius:var(--radius);box-shadow:0 8px 32px #00000040;padding:24px;width:100%;max-width:380px}.modal h2{margin-bottom:16px}.modal-slot-summary{background:var(--accent-soft);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:16px}.modal-slot-date{font-size:.85rem;color:var(--text-muted)}.modal-slot-time{font-size:1.15rem;font-weight:650;margin:2px 0}.modal-slot-spots{font-size:.82rem;color:var(--accent);font-weight:600}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.schedule-confirmation{margin-bottom:16px}.bookings-list{display:flex;flex-direction:column;gap:20px}.bookings-day{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.bookings-day-heading{padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-alt);font-size:.9rem}.bookings-day-items{list-style:none;margin:0;padding:0}.booking-row{display:flex;align-items:center;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border)}.booking-row:last-child{border-bottom:none}.booking-time{font-weight:650;font-variant-numeric:tabular-nums;min-width:52px}.booking-type{color:var(--text-muted);font-size:.85rem;flex:1}.cancel-wrap{display:flex;align-items:center;gap:10px}.cancel-confirm{display:flex;align-items:center;gap:10px;font-size:.85rem;color:var(--text-muted)}.cancel-note{font-size:.8rem;color:var(--text-muted);font-style:italic}.landing{display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px 16px}.landing-title{font-size:1.8rem}.landing-sub{margin:6px 0 0;color:var(--text-muted)}.landing-tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:24px;margin-top:40px}.landing-tile{display:flex;flex-direction:column;align-items:center;gap:14px;width:200px;padding:32px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);color:inherit;text-decoration:none;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease}.landing-tile:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 8px 24px #c8102e24}.landing-tile-icon{display:grid;place-items:center;width:72px;height:72px;border-radius:50%;background:var(--brand-gradient);color:#fff}.landing-tile-icon svg{width:34px;height:34px}.landing-tile-label{font-size:1.05rem;font-weight:650}
