:root{--color-primary: #D22342;--color-primary-strong: #A81A35;--color-primary-soft: #FBE8EB;--color-accent: #8A6A2F;--color-bg: #F6F7F7;--color-surface: #ffffff;--color-border: #8A8D8E;--color-text: #222222;--color-text-muted: #5F6364;--color-text-invert: #ffffff;--color-success: #1E874A;--color-success-soft: #E6F4EC;--color-warning: #7A5B10;--color-warning-soft: #FBF1DA;--color-danger: #8E1B2C;--color-danger-soft: #F9E5E8;--color-info: #4A5356;--color-info-soft: #ECEEEE;--color-toast-bg: #222222;--color-slot-free: var(--color-surface);--color-slot-free-border: var(--color-primary);--color-slot-booked: var(--color-primary);--color-slot-blocked: #EAEBEB;--color-slot-mine: var(--color-success);--font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.375rem;--font-size-xl: 1.75rem;--font-weight-normal: 400;--font-weight-medium: 550;--font-weight-bold: 700;--line-height-body: 1.5;--line-height-heading: 1.25;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-pill: 999px;--shadow-card: 0 1px 3px rgb(16 24 40 / .08), 0 1px 2px rgb(16 24 40 / .06);--shadow-raised: 0 4px 12px rgb(16 24 40 / .12);--focus-ring-width: 3px;--focus-ring: var(--focus-ring-width) solid var(--color-accent);--focus-ring-offset: 2px;--touch-target-min: 44px;--transition-fast: .12s ease;--color-scrim: rgb(0 0 0 / .45);--z-overlay: 100;--z-toast: 200;--duration-spin: .8s;--border-width-thick: 3px;--sheet-max-block-size: 90vh;--sheet-max-block-size-wide: 80vh;--sheet-inline-size-wide: min(30rem, 90vw);--dialog-inline-size: min(26rem, 90vw);--content-max-width: 60rem;--content-gutter: var(--space-4);--content-narrow-width: 26rem;--shell-header-height: 3.5rem}:root[data-theme=admin]{--color-primary: #222222;--color-primary-strong: #000000;--color-primary-soft: #EAEBEB;--color-accent: #8A6A2F}*,*:before,*:after{box-sizing:border-box}*{margin:0}img,svg{display:block;max-inline-size:100%}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--font-size-base);line-height:var(--line-height-body);color:var(--color-text);background:var(--color-bg)}h1,h2,h3{line-height:var(--line-height-heading);font-weight:var(--font-weight-bold)}h1{font-size:var(--font-size-xl)}h2{font-size:var(--font-size-lg)}h3{font-size:var(--font-size-md)}p{margin-block-end:var(--space-3)}*+h2,*+h3{margin-block-start:var(--space-5)}small,.text-muted{font-size:var(--font-size-sm);color:var(--color-text-muted)}a{color:var(--color-primary)}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}label{display:block;font-weight:var(--font-weight-medium);margin-block-end:var(--space-1)}input,select,textarea,button{font:inherit}input,select,textarea{inline-size:100%;min-block-size:var(--touch-target-min);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-5)}.card>h3{font-size:var(--font-size-lg);margin-block-end:var(--space-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-block-size:var(--touch-target-min);padding:var(--space-2) var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-fast);background:var(--color-primary);color:var(--color-text-invert);text-decoration:none}.btn:hover{background:var(--color-primary-strong)}.btn-secondary{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-primary)}.btn-secondary:hover{background:var(--color-primary-soft)}.btn-danger{background:var(--color-danger)}.btn:disabled{opacity:.5;cursor:not-allowed}table{border-collapse:collapse;inline-size:100%}th,td{padding-inline:var(--space-3);padding-block:var(--space-2);text-align:start;vertical-align:middle}th{border-block-end:1px solid var(--color-border);font-size:var(--font-size-sm)}th:first-child,td:first-child{padding-inline-start:0}tbody tr{border-block-end:1px solid var(--color-slot-blocked)}tbody tr:last-child{border-block-end:0}.banner{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-info-soft);color:var(--color-text)}.banner-success{background:var(--color-success-soft)}.banner-warning{background:var(--color-warning-soft)}.banner-danger{background:var(--color-danger-soft)}.field{margin-block-end:var(--space-4)}.field:last-child{margin-block-end:0}.content{max-inline-size:var(--content-max-width);margin-inline:auto;padding:var(--content-gutter)}.content-narrow{max-inline-size:var(--content-narrow-width);margin-inline:auto;padding-block:var(--space-6);padding-inline:var(--content-gutter)}.auth-logo{display:block;margin-inline:auto;margin-block-end:var(--space-5);inline-size:var(--space-7);block-size:var(--space-7)}.banner-closed{background:var(--color-slot-blocked);color:var(--color-text-muted)}.empty-state{padding-block:var(--space-6);padding-inline:var(--space-4);text-align:center;color:var(--color-text-muted)}.spinner{display:inline-flex;align-items:center;justify-content:center;inline-size:var(--space-6);block-size:var(--space-6)}.spinner-visual{inline-size:100%;block-size:100%;border-radius:var(--radius-pill);border:var(--border-width-thick) solid var(--color-border);border-block-start-color:var(--color-primary);animation:spinner-spin var(--duration-spin) linear infinite}@keyframes spinner-spin{to{transform:rotate(360deg)}}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;inline-size:100%;block-size:100%;margin:0;padding:0;border:none;background:var(--color-scrim);display:flex;align-items:flex-end;justify-content:center;z-index:var(--z-overlay)}.sheet{inline-size:100%;max-block-size:var(--sheet-max-block-size);overflow-y:auto;background:var(--color-surface);color:var(--color-text);border-start-start-radius:var(--radius-md);border-start-end-radius:var(--radius-md);box-shadow:var(--shadow-raised);padding:var(--space-5);padding-block-start:0}.sheet-title{margin-block-end:var(--space-3)}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);position:sticky;inset-block-start:0;z-index:1;background:var(--color-surface);margin-inline:calc(var(--space-5) * -1);padding-inline:var(--space-5);padding-block:var(--space-4) var(--space-3);border-block-end:1px solid var(--color-slot-blocked);margin-block-end:var(--space-3)}.sheet-head .sheet-title{margin-block-end:0}.sheet-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-inline-size:var(--touch-target-min);min-block-size:var(--touch-target-min);padding-inline:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-weight:var(--font-weight-medium);cursor:pointer}.sheet-close:hover{background:var(--color-slot-blocked)}.confirm-dialog{inline-size:var(--dialog-inline-size);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-md);box-shadow:var(--shadow-raised);padding:var(--space-5)}.confirm-dialog-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-block-start:var(--space-4)}@media(min-width:768px){.sheet-scrim{align-items:center}.sheet{inline-size:var(--sheet-inline-size-wide);max-block-size:var(--sheet-max-block-size-wide);border-radius:var(--radius-md)}}.toast-region{position:fixed;inset-block-end:var(--space-4);inset-inline:0;display:flex;justify-content:center;pointer-events:none;z-index:var(--z-toast)}.toast{background:var(--color-toast-bg);color:var(--color-text-invert);padding-block:var(--space-3);padding-inline:var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-raised)}.booking-page{display:flex;flex-direction:column;gap:var(--space-5);padding-block-end:calc(var(--touch-target-min) + 2 * var(--space-3) + var(--content-gutter))}.child-sections{display:flex;flex-direction:column;gap:var(--space-6)}.child-section-header{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin-block-end:var(--space-3)}.teacher-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.teacher-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);inline-size:100%;min-block-size:var(--touch-target-min);padding-inline:var(--space-4);padding-block:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:inherit;font:inherit;text-align:start;cursor:pointer}button.teacher-row:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}.teacher-row:disabled{color:var(--color-text-muted);cursor:not-allowed}.teacher-row-cue{color:var(--color-primary);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);white-space:nowrap}.teacher-row:disabled .teacher-row-cue{color:var(--color-text-muted)}.teacher-row-info{display:flex;flex-direction:column;gap:var(--space-1)}.teacher-row-time{font-weight:var(--font-weight-bold)}.teacher-row-muted{color:var(--color-text-muted);cursor:default}.teacher-row-actions{display:flex;gap:var(--space-2);flex-basis:100%;flex-shrink:0;justify-content:flex-end}.teacher-row-booked{flex-wrap:wrap}@media(min-width:768px){.teacher-row-actions{flex-basis:auto}.teacher-row-booked{flex-wrap:nowrap}}.schedule-bar{position:fixed;inset-inline:0;inset-block-end:0;padding:var(--space-3);background:var(--color-surface);border-block-start:1px solid var(--color-border);box-shadow:var(--shadow-raised)}.schedule-bar .btn{inline-size:100%}.schedule-panel{display:none}.schedule-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.schedule-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-block-size:var(--touch-target-min);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.schedule-row-info{display:flex;flex-direction:column;gap:var(--space-1)}.schedule-row-actions{display:flex;gap:var(--space-2)}@media(min-width:768px){.schedule-bar{display:none}.booking-page{padding-block-end:var(--space-6)}.schedule-panel{display:block;position:sticky;inset-block-start:var(--space-5);align-self:flex-start;max-inline-size:var(--sheet-inline-size-wide)}.booking-page-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(17rem,21rem);gap:var(--space-5);align-items:start}.booking-page-columns .schedule-panel{max-inline-size:none}.schedule-panel h2{margin-block-end:var(--space-3)}}.picker-body{display:flex;flex-direction:column;gap:var(--space-4)}.picker-current-time{color:var(--color-text-muted)}.picker-length-label{display:block;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-block-end:var(--space-1)}.picker-length-toggle{display:flex;gap:var(--space-2)}.picker-transport-error{display:flex;flex-direction:column;gap:var(--space-2);align-items:flex-start}.picker-day-label{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin-block-end:var(--space-2)}.hour-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.hour-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);inline-size:100%;min-block-size:var(--touch-target-min);padding-inline:var(--space-4);padding-block:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:inherit;font:inherit;text-align:start;cursor:pointer}.hour-row:hover:not(:disabled){background:var(--color-primary-soft);border-color:var(--color-primary)}.hour-row-hour{font-weight:var(--font-weight-bold)}.hour-row-count{color:var(--color-text-muted);font-size:var(--font-size-sm);display:inline-flex;align-items:center;gap:var(--space-2)}.hour-row-glyph{font-size:var(--font-size-sm);color:var(--color-text-muted)}.hour-row[aria-expanded=true]{border-color:var(--color-primary);border-block-end-color:transparent;border-end-start-radius:0;border-end-end-radius:0}.hour-row:disabled{color:var(--color-text-muted);cursor:default;background:var(--color-bg)}.hour-row:disabled .hour-row-hour{color:var(--color-text-muted);font-weight:var(--font-weight-normal)}.hour-panel{border:1px solid var(--color-primary);border-block-start:none;border-end-start-radius:var(--radius-sm);border-end-end-radius:var(--radius-sm);padding:var(--space-3) var(--space-4) var(--space-4);background:var(--color-surface)}.picker-chip-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr));gap:var(--space-3) var(--space-2);align-items:start}.picker-chip-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);min-inline-size:0}.picker-chip{min-inline-size:var(--touch-target-min);min-block-size:var(--touch-target-min);padding-inline:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-primary-soft);color:var(--color-text);font:inherit;cursor:pointer}.picker-chip:disabled{background:var(--color-slot-blocked);color:var(--color-text-muted);cursor:not-allowed}.picker-clash-note{font-size:var(--font-size-sm);line-height:var(--line-height-heading);color:var(--color-text-muted);text-align:center;overflow-wrap:break-word}.shell-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding-block:var(--space-3);min-block-size:var(--shell-header-height);background:var(--color-surface);border-block-end:1px solid var(--color-border);padding-inline:max(var(--content-gutter),calc((100% - var(--content-max-width)) / 2 + var(--content-gutter)))}.shell-brand{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:var(--font-weight-bold);font-size:var(--font-size-md);display:inline-flex;align-items:center;gap:var(--space-3)}a.shell-brand{color:inherit;text-decoration:none;border-radius:var(--radius-sm);min-block-size:var(--touch-target-min)}a.shell-brand:hover{background:var(--color-primary-soft)}.shell-logo{flex-shrink:0;inline-size:var(--space-6);block-size:var(--space-6)}.shell-actions{flex-shrink:0}
