:root{--background: #fbf7f1;--surface: #ffffff;--surface-elevated: #f1ece3;--line: #e4dccf;--ink: #221f1b;--ink-soft: #5b564d;--ink-faint: #6b6459;--accent: #155e56;--secondary: #8f5227;--celebration: #8a5a08;--state-mastered: #2a6e47;--state-alert: #b23a2e;--state-neutral: #6b6459;--font-heading: "Fraunces", Georgia, "Times New Roman", serif;--font-body: "Atkinson Hyperlegible", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--radius: 14px;--radius-card: 22px;--radius-chip: 999px;--gap: 16px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--ease: cubic-bezier(.32, .72, 0, 1);--fast: .12s;--medium: .22s;--shadow-1: 0 1px 2px rgba(34, 31, 27, .04), 0 1px 3px rgba(34, 31, 27, .06);--shadow-2: 0 2px 4px rgba(34, 31, 27, .04), 0 4px 12px rgba(34, 31, 27, .08)}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);font-size:15px;line-height:1.5;color:var(--ink);background:var(--background)}h1,h2,h3{font-family:var(--font-heading);font-weight:600}code,.code{font-family:var(--font-mono);font-size:.85em}.page{max-width:1080px;margin:0 auto;padding:32px 20px 64px}.banner{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius-card);padding:16px 20px;margin-bottom:24px}.banner h1{margin:0 0 6px;font-size:20px}.banner p{margin:0;color:var(--ink-soft);font-size:14px}.page .panel h2{margin:0 0 4px;font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft)}.main .page{max-width:none;padding:0}.panel .hint{margin:0 0 16px;font-size:13px;color:var(--ink-soft)}.controls{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.control{display:flex;flex-direction:column;gap:4px}.control label{font-size:12px;color:var(--ink-soft)}.control select,.control input{font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-elevated);color:var(--ink);min-height:36px}button{font:inherit;min-height:36px;padding:6px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer}button:hover{border-color:var(--accent);color:var(--accent)}button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stats{display:flex;flex-wrap:wrap;gap:24px}.stat .value{font-family:var(--font-mono);font-weight:700;font-size:24px;font-variant-numeric:tabular-nums}.stat .label{font-size:12px;color:var(--ink-soft)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:600}tbody tr:hover{background:var(--surface-elevated)}.strand-head td{background:var(--surface-elevated);font-weight:600;font-size:13px}.state{font-size:12px;white-space:nowrap}.state--mastered{color:var(--state-mastered)}.state--needs_review,.state--checkpoint_failed,.state--practising{color:var(--state-alert)}.state--learning,.state--not_started{color:var(--state-neutral)}.state--marked{color:var(--state-mastered)}.state--incomplete{color:var(--state-alert)}.state--awaiting_marking,.state--superseded{color:var(--state-neutral)}.slot{font-size:12px;white-space:nowrap;margin-bottom:4px}.slot--usable{color:var(--state-mastered)}.slot--problem{color:var(--state-alert);font-weight:600}.slot--planned{color:var(--state-neutral)}.warn{color:var(--state-alert);font-size:13px;margin:0 0 12px}.modes{display:flex;gap:6px;flex-wrap:wrap}.mode{font-size:11px;padding:1px 6px;border:1px solid var(--line);border-radius:var(--radius-chip);color:var(--ink-soft);white-space:nowrap}.mode--private{border-color:var(--secondary);color:var(--secondary)}.row-actions{display:flex;gap:4px;flex-wrap:wrap}.row-actions button{min-height:28px;padding:2px 8px;font-size:12px}.empty{color:var(--ink-soft);font-size:14px;margin:0}.table-scroll{overflow-x:auto}.marking{border:1px solid var(--line);border-radius:var(--radius-card);padding:14px;margin-bottom:12px}.marking:last-child{margin-bottom:0}.marking-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;font-size:13px;color:var(--ink-soft)}.marking-head .warn{margin:0}.marking .row-actions{align-items:center;font-size:13px;color:var(--ink-soft)}.marking button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);font-weight:600}.marking button:disabled{opacity:.5;cursor:not-allowed}.dash-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.dash-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:14px 16px}.dash-card h3{margin:0 0 2px;font-family:var(--font-body);font-weight:700;font-size:15px}.dash-card .count{font-family:var(--font-mono);font-weight:700;font-size:22px;font-variant-numeric:tabular-nums;color:var(--ink)}.bar{height:8px;margin:8px 0 12px;border-radius:var(--radius-chip);background:var(--surface-elevated);overflow:hidden}.bar-fill{height:100%;background:var(--celebration)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:2px 9px;border:1px solid var(--line);border-radius:var(--radius-chip);white-space:nowrap}.chip-shape{width:9px;height:9px;flex:none}.chip--mastered{color:var(--state-mastered);border-color:var(--state-mastered)}.chip--weak{color:var(--state-alert);border-color:var(--state-alert)}.chip--neutral{color:var(--state-neutral);border-color:var(--state-neutral)}.chip-shape[data-shape=circle]{border-radius:50%;background:currentColor}.chip-shape[data-shape=triangle]{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:9px solid currentColor}.chip-shape[data-shape=circle-dashed]{border-radius:50%;border:1px dashed currentColor}.focus-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.focus-row:last-child{border-bottom:none}.focus-row .title{flex:1 1 240px}.focus-row .code{color:var(--ink-soft)}.mark-card{border-radius:var(--radius-card);padding:12px 14px;margin-bottom:10px}.mark-card:last-child{margin-bottom:0}.mark-card--signed{border:1px solid var(--line);background:var(--surface)}.mark-card--draft{border:1px dashed var(--line);background:var(--surface-elevated)}.mark-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:13px}.mark-glyph{font-size:14px}.mark-card--signed .mark-glyph{color:var(--state-mastered)}.mark-card--draft .mark-label{color:var(--ink-soft)}.mark-score{margin-left:auto;font-family:var(--font-mono);font-weight:700;font-variant-numeric:tabular-nums}.mark-corrected{font-size:12px;color:var(--secondary)}:root[data-audience=student]{--background: #f2f8fd;--surface: #ffffff;--surface-elevated: #e3effa;--line: #c9ddf0;--ink: #17222e;--ink-soft: #4b5768;--ink-faint: #5a6675;--accent: #0a5590;--secondary: #5e3590;--celebration: #7e5207;--state-mastered: #1b6b3c;--state-alert: #b33326;--state-neutral: #5a6675;--radius: 20px;--radius-card: 30px}.boot{padding:48px;color:var(--ink-soft);font-family:var(--font-body)}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:var(--gap);flex-wrap:wrap;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:var(--accent);font-family:var(--font-heading);font-weight:700;font-size:18px}.brand-mark{font-size:20px}.topnav{display:flex;gap:4px;flex-wrap:wrap}.topnav-link{padding:8px 12px;border-radius:var(--radius);text-decoration:none;color:var(--ink-soft);font-family:var(--font-body);font-size:14px}.topnav-link:hover{background:var(--surface-elevated);color:var(--ink)}.topnav-link.is-current{background:var(--surface-elevated);color:var(--accent);font-weight:700}.topbar-end{margin-left:auto;display:flex;align-items:center;gap:12px}.whoami{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--ink-soft)}.role-tag{padding:2px 8px;border-radius:var(--radius-chip);background:var(--surface-elevated);border:1px solid var(--line);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.banner{margin:0;padding:10px 24px;background:var(--surface-elevated);border-bottom:1px solid var(--line);color:var(--ink-soft);font-size:14px}.main{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:32px 24px 64px}.btn{display:inline-block;padding:10px 18px;border-radius:var(--radius);border:1px solid transparent;font-family:var(--font-body);font-size:15px;cursor:pointer;text-decoration:none}.btn-primary{background:var(--accent);color:#fff;font-weight:700}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-quiet{background:transparent;border-color:var(--line);color:var(--accent)}.btn-quiet:hover{background:var(--surface-elevated)}.btn-block{width:100%;text-align:center}.landing-hero{padding:40px 0 24px;max-width:720px}.landing-eyebrow{margin:0 0 12px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--secondary)}.landing-title{margin:0 0 16px;font-family:var(--font-heading);font-size:clamp(30px,5vw,46px);line-height:1.12;color:var(--ink)}.landing-title em{color:var(--accent);font-style:italic}.landing-lede{margin:0 0 24px;font-size:18px;line-height:1.55;color:var(--ink-soft)}.landing-actions{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.landing-note{margin:0;font-size:14px;color:var(--ink-faint)}.landing-section-title{font-family:var(--font-heading);font-size:24px;margin:40px 0 16px}.landing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--gap)}.landing-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:20px}.landing-card h3{margin:0 0 8px;font-family:var(--font-heading);font-size:17px;color:var(--accent)}.landing-card p{margin:0;font-size:15px;line-height:1.55;color:var(--ink-soft)}.landing-foot{margin-top:48px;padding-top:16px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-faint)}.auth-page{display:flex;justify-content:center;padding-top:32px}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:28px}.auth-title{margin:0 0 20px;font-family:var(--font-heading);font-size:26px}.field{display:block;margin-bottom:16px}.field span{display:block;margin-bottom:6px;font-size:14px;color:var(--ink-soft)}.field input{width:100%;padding:10px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-elevated);color:var(--ink);font-family:var(--font-body);font-size:15px}.auth-error{margin:0 0 14px;padding:10px 12px;border-radius:var(--radius);background:var(--surface-elevated);border:1px solid var(--state-alert);color:var(--state-alert);font-size:14px}.auth-warning{margin:0 0 16px;font-size:14px;color:var(--secondary)}.auth-foot{margin:18px 0 0;font-size:13px;line-height:1.5;color:var(--ink-faint)}.home-head{margin-bottom:28px}.home-eyebrow{margin:0 0 6px;font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--secondary)}.home-title{margin:0;font-family:var(--font-heading);font-size:clamp(26px,4vw,36px);color:var(--ink)}.home-sub{margin:6px 0 0;color:var(--ink-soft)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:20px;margin-bottom:var(--gap)}.panel-title{margin:0 0 10px;font-family:var(--font-heading);font-size:18px}.panel p{margin:0 0 10px;line-height:1.55;color:var(--ink-soft)}.muted{color:var(--ink-faint);font-size:14px}.ticklist{margin:0 0 10px;padding-left:20px;color:var(--ink-soft);line-height:1.7}.empty{max-width:560px;padding-top:24px}.empty h1{font-family:var(--font-heading);margin:0 0 12px}.empty p{line-height:1.55;color:var(--ink-soft)}.spine-picker{display:flex;gap:6px;margin-bottom:var(--gap);flex-wrap:wrap}.spine-tab{padding:8px 14px;border-radius:var(--radius-chip);border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);font-family:var(--font-mono);font-size:13px;cursor:pointer}.spine-tab.is-current{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.coverage-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:12px}.stat{background:var(--surface-elevated);border:1px solid var(--line);border-radius:var(--radius);padding:12px}.stat--alert{border-color:var(--state-alert)}.stat-value{display:block;font-family:var(--font-mono);font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink)}.stat--alert .stat-value{color:var(--state-alert)}.stat-label{display:block;margin-top:4px;font-size:12px;line-height:1.35;color:var(--ink-faint)}.unit-list,.unit-sublist{list-style:none;margin:0;padding:0}.strand{margin-bottom:20px}.strand-name{margin:0 0 8px;font-family:var(--font-heading);font-size:15px;color:var(--secondary)}.unit-row{padding:10px 0;border-top:1px solid var(--line)}.unit-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:6px}.unit-code{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint)}.unit-title{font-size:15px;color:var(--ink)}.slot-row{display:flex;gap:6px;flex-wrap:wrap}.slot{display:inline-flex;align-items:baseline;gap:6px;padding:3px 10px;border-radius:var(--radius-chip);border:1px dashed var(--line);font-size:11px;color:var(--ink-faint)}.slot.is-built{border-style:solid;border-color:var(--state-mastered);color:var(--state-mastered)}.slot-state{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.count{display:inline-block;margin-left:6px;padding:1px 9px;border-radius:var(--radius-chip);background:var(--accent);color:#fff;font-family:var(--font-mono);font-size:12px}.queue{list-style:none;margin:0;padding:0}.queue-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--line)}.queue-target,.queue-channel{font-size:12px;padding:2px 8px;border-radius:var(--radius-chip);background:var(--surface-elevated);color:var(--ink-faint)}.queue-when{margin-left:auto;font-family:var(--font-mono);font-size:12px;color:var(--ink-faint)}.queue-missing{font-family:var(--font-mono);font-size:12px;color:var(--state-alert)}.student-list{list-style:none;margin:0;padding:0}.student-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--line)}.student-name{font-size:15px;color:var(--ink);font-weight:700}.student-level{padding:2px 8px;border-radius:var(--radius-chip);background:var(--surface-elevated);border:1px solid var(--line);font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.agenda{list-style:none;margin:0;padding:0}.agenda-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line)}.agenda-row.is-requested{border-left:3px solid var(--secondary);padding-left:10px}.agenda-row.is-date{border-left:3px solid var(--celebration);padding-left:10px}.agenda-when{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);min-width:150px}.agenda-what{font-size:15px;color:var(--ink)}.agenda-tag{margin-left:auto;padding:2px 10px;border-radius:var(--radius-chip);background:var(--surface-elevated);border:1px solid var(--line);font-size:11px;color:var(--ink-faint)}.agenda-tag.is-warn{border-color:var(--secondary);color:var(--secondary)}.subnav{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:var(--gap);padding-bottom:10px;border-bottom:1px solid var(--line)}.subnav-link{padding:8px 14px;border-radius:var(--radius);border:1px solid transparent;background:transparent;color:var(--ink-soft);font-family:var(--font-body);font-size:14px;cursor:pointer}.subnav-link:hover{background:var(--surface-elevated);color:var(--ink)}.subnav-link.is-current{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.subnav-note{margin:0 0 var(--gap);padding:10px 14px;border-radius:var(--radius);background:var(--surface-elevated);border:1px solid var(--line);font-size:13px;line-height:1.5;color:var(--ink-soft)}.banner--preview{background:var(--surface);border-bottom:2px solid var(--secondary);color:var(--secondary)}.banner--preview a{color:var(--secondary)}.deflist{margin:0 0 10px;display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:8px 16px}.deflist dt{font-size:13px;color:var(--ink-faint)}.deflist dd{margin:0;font-size:15px;color:var(--ink)}.segmented{display:inline-flex;padding:3px;border-radius:var(--radius);background:var(--surface-elevated);border:1px solid var(--line);margin-bottom:12px}.segment{padding:8px 20px;border:none;border-radius:calc(var(--radius) - 3px);background:transparent;color:var(--ink-soft);font-family:var(--font-body);font-size:14px;cursor:pointer}.segment.is-current{background:var(--accent);color:#fff;font-weight:700}.ring{position:relative;width:128px;flex:0 0 auto;text-align:center}.ring-svg{width:128px;height:128px;transform:rotate(-90deg)}.ring-track{fill:none;stroke:var(--surface-elevated);stroke-width:14}.ring-fill{fill:none;stroke-width:14;stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.22,1,.36,1)}@media (prefers-reduced-motion: reduce){.ring-fill{transition:none}}.ring-fill--mastered{stroke:var(--state-mastered)}.ring-fill--alert{stroke:var(--state-alert)}.ring-fill--neutral{stroke:var(--state-neutral)}.ring-centre{position:absolute;top:0;right:0;bottom:0;left:0;height:128px;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.ring-value{font-family:var(--font-heading);font-size:34px;font-weight:700;line-height:1;color:var(--ink)}.ring-of{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);margin-top:2px}.ring-label{margin:6px 0 0;font-size:12px;color:var(--ink-soft)}.ring--empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:128px;height:128px;border-radius:50%;border:3px dashed var(--line);color:var(--ink-faint)}.ring-empty-mark{font-size:28px;line-height:1}.ring-empty-text{margin:6px 12px 0;font-size:11px;line-height:1.3}.bar-block{flex:1 1 220px;min-width:200px}.bar{display:flex;gap:3px;height:14px;margin-bottom:12px}.bar-seg{border-radius:var(--radius-chip);min-width:8px;transition:flex-grow .6s cubic-bezier(.22,1,.36,1)}.bar-seg--mastered{background:var(--state-mastered)}.bar-seg--alert{background:var(--state-alert)}.bar-seg--neutral{background:var(--state-neutral);opacity:.35}.bar-key{list-style:none;margin:0;padding:0;display:grid;gap:4px}.bar-key-item{display:flex;align-items:baseline;gap:8px;font-size:13px;color:var(--ink-soft)}.bar-glyph--mastered{color:var(--state-mastered)}.bar-glyph--alert{color:var(--state-alert)}.bar-glyph--neutral{color:var(--state-neutral)}.bar-key-count{font-family:var(--font-mono);font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);min-width:20px}.bar-empty{margin:0;font-size:13px;color:var(--ink-faint)}.child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--gap)}.child-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);padding:20px}.child-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:14px}.child-name{margin:0;font-family:var(--font-heading);font-size:21px;color:var(--ink)}.child-level{margin:2px 0 0;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--secondary)}.child-subject{margin-bottom:18px}.child-subject-name{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.child-subject-body{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.child-foot{display:flex;gap:8px;flex-wrap:wrap;padding-top:14px;border-top:1px solid var(--line)}.persona-pickers{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}.segmented--wrap{flex-wrap:wrap}a:not(.btn):not(.topnav-link):not(.brand){color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);text-underline-offset:2px}a:not(.btn):not(.topnav-link):not(.brand):hover{text-decoration-color:var(--accent)}button.slot{background:transparent;cursor:pointer;min-height:0;font-family:var(--font-body)}button.slot:hover{border-color:var(--accent);color:var(--accent)}.panel--notice{border-left:3px solid var(--secondary)}.child-card{display:flex;flex-direction:column}.child-foot{margin-top:auto}.chapter-no{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;margin-right:8px;padding:0 6px;border-radius:var(--radius-chip);background:var(--secondary);color:#fff;font-family:var(--font-mono);font-size:11px;font-weight:700;vertical-align:middle}.enrol-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-bottom:10px}.enrol-chip{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:var(--radius);border:1px dashed var(--line);background:var(--surface-elevated);color:var(--ink-faint);font-family:var(--font-body);font-size:13px;text-align:left;cursor:pointer}.enrol-chip:hover{border-color:var(--accent);color:var(--ink)}.enrol-chip.is-on{border-style:solid;border-color:var(--state-mastered);background:var(--surface);color:var(--ink);font-weight:700}.enrol-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--line);color:var(--surface);font-size:11px;flex:0 0 auto}.enrol-chip.is-on .enrol-mark{background:var(--state-mastered);color:#fff}.enrol-warn{margin-left:auto;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;color:var(--secondary)}.btn,.topnav-link,.subnav-link,.segment,.spine-tab,.enrol-chip,.slot{transition:background-color var(--fast) var(--ease),border-color var(--fast) var(--ease),color var(--fast) var(--ease),transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.btn:active,.subnav-link:active,.segment:active,.spine-tab:active,.enrol-chip:active{transform:scale(.97)}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-2);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:scale(.97);box-shadow:none}.btn:focus-visible,.topnav-link:focus-visible,.subnav-link:focus-visible,.segment:focus-visible,.spine-tab:focus-visible,.enrol-chip:focus-visible,.field input:focus-visible,.field select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled,.enrol-chip:disabled{opacity:.5;cursor:not-allowed;transform:none}[aria-busy=true]{cursor:progress;opacity:.75}.panel,.landing-card,.child-card,.auth-card{border-radius:var(--radius-card);border:1px solid var(--line);box-shadow:var(--shadow-1);transition:box-shadow var(--medium) var(--ease),transform var(--medium) var(--ease)}.child-card:hover,.landing-card:hover{box-shadow:var(--shadow-2)}.field input,.field select{border-radius:var(--radius);transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.field input:focus,.field select:focus{border-color:var(--accent)}.skeleton{position:relative;overflow:hidden;background:var(--surface-elevated);border-radius:var(--radius)}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:skeleton-sweep 1.4s infinite}@keyframes skeleton-sweep{to{transform:translate(100%)}}.skeleton-line{height:14px;margin-bottom:var(--space-2)}.skeleton-line:last-child{margin-bottom:0;width:60%}.skeleton-title{height:26px;width:45%;margin-bottom:var(--space-4)}.skeleton-ring{width:128px;height:128px;border-radius:50%}.skeleton-row{height:44px;margin-bottom:var(--space-2);border-radius:var(--radius)}.page-skeleton{min-height:60vh}.fade-in{animation:fade-in var(--medium) var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}:root[data-audience=student]{--ease: cubic-bezier(.34, 1.56, .64, 1);--fast: .16s;--medium: .32s}:root[data-audience=student] .btn:active,:root[data-audience=student] .subnav-link:active{transform:scale(.94)}:root[data-audience=student] .btn-primary:hover:not(:disabled){transform:translateY(-2px) scale(1.02)}:root[data-audience=student] .ring-fill{transition:stroke-dashoffset 1.2s cubic-bezier(.34,1.3,.64,1)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:root{--radius: 16px;--radius-card: 26px;--line-soft: rgba(34, 31, 27, .06)}:root[data-audience=student]{--radius: 22px;--radius-card: 32px}.panel,.landing-card,.child-card,.auth-card,.stat{border-color:var(--line-soft);box-shadow:var(--shadow-1)}.topbar{margin:var(--space-3) auto 0;max-width:1040px;width:calc(100% - var(--space-5));border-bottom:none;border:1px solid var(--line-soft);border-radius:var(--radius-card);box-shadow:var(--shadow-1);padding:var(--space-3) var(--space-4)}.banner{max-width:1040px;margin:var(--space-3) auto 0;width:calc(100% - var(--space-5));border:1px solid var(--line-soft);border-left:3px solid var(--accent);border-radius:var(--radius-card);box-shadow:var(--shadow-1)}.banner--preview{border-left-color:var(--secondary)}.topnav-link,.subnav-link{border-radius:var(--radius-chip)}.child-head,.child-foot,.unit-row,.queue-row,.student-row,.agenda-row,.subnav{border-color:var(--line-soft)}.field input,.field select,.control select,.control input,button{border-radius:var(--radius);border-color:var(--line-soft)}.field input,.field select{padding:var(--space-3) var(--space-4)}.segmented{border-radius:var(--radius-chip);border-color:var(--line-soft);padding:var(--space-1)}.segment,.enrol-chip,.spine-tab{border-radius:var(--radius-chip)}.table-wrap,.panel table{border-radius:var(--radius);overflow:hidden}.panel table th,.panel table td{border-color:var(--line-soft)}.skeleton-row,.skeleton-line,.skeleton-title{border-radius:var(--radius-chip)}.assign-list{list-style:none;margin:0;padding:0}.assign-row{padding:var(--space-4) 0;border-top:1px solid var(--line-soft)}.assign-row:first-child{border-top:none}.assign-main{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-2)}.assign-kind{padding:3px var(--space-3);border-radius:var(--radius-chip);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.assign-kind--quiet{background:var(--surface-elevated);color:var(--ink-faint)}.assign-kind--loud{background:var(--secondary);color:#fff}.assign-who{font-size:13px;color:var(--ink-soft)}.assign-instructions{margin:0 0 var(--space-3);font-size:14px;line-height:1.55;color:var(--ink-soft)}.assign-handin{margin-top:var(--space-3);padding:var(--space-4);border-radius:var(--radius-card);background:var(--surface-elevated)}.level-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.level-label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}:root{--background: #f4f0e8;--surface: #fcfaf6;--surface-elevated: #e4dccc;--line: #d8cfbe;--line-soft: rgba(18, 41, 63, .08);--ink: #12293f;--ink-soft: #4a5a6b;--ink-faint: #535e67;--accent: #3c4c5c;--secondary: #5f5334;--celebration: #6f5015;--state-mastered: #19603f;--state-alert: #98301f;--state-neutral: #535e67;--shadow-1: 0 1px 2px rgba(18, 41, 63, .05), 0 1px 3px rgba(18, 41, 63, .07);--shadow-2: 0 2px 4px rgba(18, 41, 63, .05), 0 4px 12px rgba(18, 41, 63, .09)}:root{--brand-gold-fill: #c08f3c;--brand-taupe-fill: #8a7a63;--brand-slate-light: #9fb2c2}:root[data-audience=student]{--ink: #17222e;--shadow-1: 0 1px 2px rgba(23, 34, 46, .05), 0 1px 3px rgba(23, 34, 46, .07);--shadow-2: 0 2px 4px rgba(23, 34, 46, .05), 0 4px 12px rgba(23, 34, 46, .09)}.lockup{display:inline-flex;align-items:center;gap:14px}.lockup-rule{width:1px;align-self:stretch;background:var(--line)}.lockup-words{display:flex;flex-direction:column;gap:3px;line-height:1}.lockup-the{font-family:var(--font-body);font-size:8px;font-weight:400;letter-spacing:.6em;color:var(--brand-gold-fill);padding-left:2px}.lockup-anchor{font-family:Marcellus,Georgia,serif;font-size:20px;letter-spacing:.16em;line-height:1}.lockup-academy{font-family:var(--font-body);font-size:9px;font-weight:300;letter-spacing:.5em;padding-left:2px}.lockup--compact .lockup-anchor{font-size:17px}.lockup--compact .lockup-the{font-size:7px}.lockup--compact .lockup-academy{font-size:8px}.brand{text-decoration:none}.brand:hover .lockup-anchor{color:inherit}:root{--font-heading: "Marcellus", Georgia, "Times New Roman", serif}.home-eyebrow,.landing-eyebrow{font-family:var(--font-body);font-weight:400;letter-spacing:.3em}.mark-square{display:inline-flex;align-items:center;justify-content:center;background:var(--ink);border-radius:var(--radius)}:root{--font-body: "Jost", "Atkinson Hyperlegible", ui-sans-serif, system-ui, sans-serif;--font-heading: "Marcellus", Georgia, "Times New Roman", serif}body{font-weight:300}.lockup-the,.lockup-academy,.home-eyebrow,.landing-eyebrow{font-family:var(--font-body)}.topbar{flex-wrap:nowrap;gap:var(--space-5);padding:var(--space-3) var(--space-5)}.topnav{flex:1 1 auto;min-width:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:2px}.topnav::-webkit-scrollbar{display:none}.topnav-link{white-space:nowrap;padding:7px 11px;font-size:13.5px;letter-spacing:.01em}.topbar-end{flex:0 0 auto;gap:var(--space-3)}@media (max-width: 900px){.whoami{display:none}}.topbar-end .btn{padding:8px 16px;font-size:13.5px}.role-tag{padding:2px 9px;font-size:10px}.brand{flex:0 0 auto}.main{padding-top:var(--space-5)}.cal-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.cal-nav{display:flex;gap:var(--space-2)}.cal-nav .btn{padding:8px 14px;font-size:13.5px}.cal-range{margin:0 0 var(--space-4);font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);letter-spacing:.04em;text-transform:uppercase}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(124px,1fr));gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-2);margin-bottom:var(--space-5)}.cal-day{display:flex;flex-direction:column;gap:var(--space-2);min-height:150px;padding:var(--space-3);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card)}.cal-day.is-today{border-top:3px solid var(--accent)}.cal-day-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:var(--space-2);border-bottom:1px solid var(--line)}.cal-day-name{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.cal-day-num{font-family:var(--font-heading);font-size:18px;color:var(--ink)}.cal-item{display:flex;flex-direction:column;gap:2px;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--surface-elevated);border-left:3px solid var(--line)}.cal-item.is-lesson{border-left-color:var(--accent)}.cal-item.is-requested{border-left-color:var(--secondary)}.cal-item.is-date{border-left-color:var(--celebration)}.cal-item-time{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.cal-item-title{font-size:13.5px;color:var(--ink)}.cal-item-meta{font-size:11px;color:var(--ink-soft)}.cal-slot{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--space-2) var(--space-3);text-align:left;font-family:var(--font-body);border-radius:var(--radius);border:1px dashed var(--line);background:transparent;color:var(--ink-soft);cursor:pointer;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease),transform var(--fast) var(--ease)}.cal-slot.is-open{border-style:solid;border-color:var(--accent);color:var(--accent)}.cal-slot.is-open:hover:not(:disabled){background:var(--surface-elevated);transform:translateY(-1px)}.cal-slot:disabled{cursor:default;opacity:.65}.cal-slot.is-full{border-color:var(--secondary);color:var(--secondary)}.cal-slot.is-past,.cal-slot.is-withdrawn{color:var(--ink-faint)}.cal-slot-time{font-family:var(--font-mono);font-size:11px}.cal-slot-mode{font-size:13px;color:var(--ink)}.cal-slot-state{font-size:11px}.cal-slot-note{font-size:10px;color:var(--secondary)}.cal-empty{margin:auto 0 0;text-align:center;color:var(--ink-faint)}.booking-field{margin:0 0 var(--space-4);padding:0;border:0}.booking-field legend{margin-bottom:var(--space-2);padding:0;font-size:14px;color:var(--ink-soft)}.booking-choice{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) 0;font-size:15px;cursor:pointer}.booking-actions{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap;margin:var(--space-4) 0 var(--space-3)}.field select{width:100%;padding:10px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-elevated);color:var(--ink);font-family:var(--font-body);font-size:15px}.field select:disabled{color:var(--ink-faint)}.banner--warn{border-left-color:var(--state-alert);color:var(--state-alert)}.linkish{padding:0;border:0;background:none;color:var(--accent);font:inherit;text-decoration:underline;cursor:pointer}.persona-current{margin:var(--space-4) 0 0;padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--surface-elevated);border-left:3px solid var(--accent);font-size:14px;color:var(--ink)}.library{max-inline-size:78rem;margin-inline:auto}.lib-masthead{padding-block:var(--space-6) var(--space-5);margin-block-end:var(--space-5);border-block-end:1px solid var(--line)}.lib-eyebrow{margin:0 0 var(--space-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}.lib-title{margin:0 0 var(--space-4);font-family:var(--font-heading);font-size:clamp(2.25rem,5vw,3.5rem);font-weight:600;line-height:1.04;letter-spacing:-.02em;color:var(--ink)}.lib-standfirst{max-inline-size:62ch;margin:0 0 var(--space-5);font-size:16.5px;line-height:1.6;color:var(--ink-soft)}.lib-facts{display:flex;flex-wrap:wrap;gap:var(--space-6);margin:0}.lib-facts>div{display:flex;flex-direction:column;gap:2px}.lib-facts dt{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.lib-facts dd{margin:0;font-family:var(--font-heading);font-size:26px;line-height:1;color:var(--ink)}.lib-facts-of{font-size:15px;color:var(--ink-faint)}.lib-section-title{margin:0;font-family:var(--font-heading);font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint)}.lib-coverage{padding:var(--space-5);margin-block-end:var(--space-6);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card)}.lib-coverage-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);margin-block-end:var(--space-3)}.lib-coverage-pct{font-family:var(--font-heading);font-size:30px;line-height:1;color:var(--accent)}.lib-meter{block-size:8px;border-radius:var(--radius-chip);background:var(--surface-elevated);overflow:hidden}.lib-meter-fill{display:block;block-size:100%;min-inline-size:2px;border-radius:var(--radius-chip);background:var(--accent);transition:inline-size var(--medium) var(--ease)}.lib-coverage-stats{display:flex;flex-wrap:wrap;gap:var(--space-6);margin:var(--space-4) 0 0}.lib-coverage-stats>div{display:flex;flex-direction:column;gap:2px}.lib-coverage-stats dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.lib-coverage-stats dd{margin:0;font-family:var(--font-mono);font-size:19px;color:var(--ink)}.lib-coverage-stats .is-alert dd{color:var(--state-alert)}.lib-note{max-inline-size:68ch;margin:var(--space-4) 0 0;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}.lib-units{padding-block-end:var(--space-7)}.unit-list{list-style:none;margin:var(--space-4) 0 0;padding:0}.strand{padding-block:var(--space-5);border-block-start:1px solid var(--line)}.strand:first-child{border-block-start:0}.strand-head{display:grid;grid-template-columns:3.5rem 1fr;align-items:start;gap:var(--space-4);margin-block-end:var(--space-4)}.chapter-no{display:block;min-inline-size:0;block-size:auto;margin:0;padding:0;background:none;border-radius:0;font-family:var(--font-heading);font-size:34px;font-weight:600;line-height:.9;color:var(--line);font-variant-numeric:tabular-nums}.strand-name{margin:0;font-family:var(--font-heading);font-size:21px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.strand-count{margin:2px 0 0;font-size:12px;letter-spacing:.04em;color:var(--ink-faint)}.unit-sublist{list-style:none;margin:0;padding:0;padding-inline-start:calc(3.5rem + var(--space-4))}@media (max-width: 640px){.strand-head{grid-template-columns:2.25rem 1fr;gap:var(--space-3)}.chapter-no{font-size:24px}.unit-sublist{padding-inline-start:0}}.unit-row{padding-block:var(--space-4);border-block-start:1px dashed var(--line)}.unit-row:first-child{border-block-start:0;padding-block-start:0}.unit-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);margin-block-end:var(--space-3)}.unit-title{font-size:16.5px;line-height:1.35;color:var(--ink)}.unit-head .unit-code{flex:0 0 auto;font-size:10.5px;letter-spacing:.02em;color:var(--ink-faint)}.slot-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-2)}@media (max-width: 720px){.slot-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.slot{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding:var(--space-3);text-align:left;font-family:var(--font-body);background:transparent;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}.slot:hover{background:var(--surface-elevated)}.slot-name{font-size:12.5px;color:var(--ink-soft)}.slot-state{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.slot.is-built{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.slot.is-built .slot-name{color:var(--ink)}.slot.is-built .slot-state{color:var(--accent)}.spine-picker{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-block-end:var(--space-5)}.spine-tab{padding:8px 16px;font-family:var(--font-body);font-size:13.5px;color:var(--ink-soft);background:transparent;border:1px solid var(--line);border-radius:var(--radius-chip);cursor:pointer;transition:color var(--fast) var(--ease),background var(--fast) var(--ease),border-color var(--fast) var(--ease)}.spine-tab:hover{background:var(--surface-elevated)}.spine-tab.is-current{color:var(--surface);background:var(--accent);border-color:var(--accent)}.tutor-bar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-block-end:var(--space-4)}.tutor-card{padding:var(--space-5);margin-block-end:var(--space-5);background:var(--surface);border:1px solid var(--line);border-inline-start:3px solid var(--accent);border-radius:var(--radius-card)}.tutor-card.is-compact{padding:var(--space-4);margin-block:var(--space-3) var(--space-4)}.tutor-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.tutor-name{margin:0;font-family:var(--font-heading);font-size:22px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.tutor-headline{max-inline-size:56ch;margin:var(--space-2) 0 0;font-size:14.5px;line-height:1.5;color:var(--ink-soft)}.tutor-years{flex:0 0 auto;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);text-align:right}.tutor-years strong{display:block;font-family:var(--font-heading);font-size:26px;line-height:1;color:var(--ink)}.tutor-teaches{margin:var(--space-4) 0 0;font-family:var(--font-mono);font-size:12px;letter-spacing:.03em;color:var(--accent)}.tutor-bio{max-inline-size:68ch;margin:var(--space-3) 0 0;font-size:14.5px;line-height:1.65;color:var(--ink-soft)}.cal-rule-note{max-inline-size:68ch;margin:0 0 var(--space-4);font-size:13px;line-height:1.6;color:var(--ink-faint)}.cal-slot-tutor{font-size:11px;line-height:1.25;color:var(--ink-soft)}.cal-slot.is-soon{border-style:dashed;border-color:var(--line);color:var(--ink-faint)}.cal-day.is-closed{opacity:.55}.cal-item.is-mine{border-left-color:var(--accent)}.cal-item.is-withdrawn{border-left-color:var(--line);opacity:.6}.cal-add{display:flex;flex-wrap:wrap;gap:4px;margin-block-start:auto;padding-block-start:var(--space-2)}.cal-add-hour{padding:3px 7px;font-family:var(--font-mono);font-size:10px;color:var(--ink-faint);background:transparent;border:1px dashed var(--line);border-radius:var(--radius-chip);cursor:pointer;transition:color var(--fast) var(--ease),border-color var(--fast) var(--ease)}.cal-add-hour:hover:not(:disabled){color:var(--accent);border-color:var(--accent);border-style:solid}.cal-add-hour:disabled{opacity:.4;cursor:default}.inbox{max-inline-size:62rem;margin-inline:auto}.request{padding:var(--space-5);margin-block-end:var(--space-4);background:var(--surface);border:1px solid var(--line);border-inline-start:3px solid var(--secondary);border-radius:var(--radius-card)}.request-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding-block-end:var(--space-4);border-block-end:1px solid var(--line)}.request-when{margin:0;font-family:var(--font-heading);font-size:20px;font-weight:600;color:var(--ink)}.request-meta{margin:var(--space-2) 0 0;font-size:13.5px;color:var(--ink-soft)}.request-student{padding-block:var(--space-4)}.request-student-head{display:flex;align-items:baseline;gap:var(--space-2);margin-block-end:var(--space-2)}.request-student-head h3{margin:0;font-family:var(--font-heading);font-size:16.5px;color:var(--ink)}.request-progress{margin:0 0 var(--space-3);font-size:14.5px;color:var(--ink)}.assign-controls{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-block-end:var(--space-4)}.assign-sort{margin-block-end:0;min-inline-size:12rem}.assign-controls .segment .count{margin-inline-start:6px;font-family:var(--font-mono);font-size:10px;opacity:.75}.assign-row.is-late{border-inline-start:3px solid var(--state-alert);padding-inline-start:10px}.assign-title{font-size:14.5px;color:var(--ink)}.assign-due{margin:var(--space-2) 0 0;font-size:13px;color:var(--ink-soft)}.assign-due.is-late{color:var(--state-alert)}.assign-late-tag{margin-inline-start:var(--space-2);padding:1px 8px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--state-alert);border:1px solid var(--state-alert);border-radius:var(--radius-chip)}.assign-kind--homework{background:var(--surface-elevated);color:var(--ink-soft)}.assign-kind--quiz{background:color-mix(in srgb,var(--secondary) 12%,transparent);color:var(--secondary)}.cal-window{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-elevated)}.cal-window.is-soon,.cal-window.is-past,.cal-window.is-withdrawn{opacity:.6;border-style:dashed}.cal-window-head{display:flex;flex-direction:column;gap:1px}.cal-window-note{margin:0;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint)}.cal-times{display:flex;flex-wrap:wrap;gap:4px}.cal-time{padding:4px 9px;font-family:var(--font-mono);font-size:11px;color:var(--accent);background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius-chip);cursor:pointer;transition:background var(--fast) var(--ease),transform var(--fast) var(--ease)}.cal-time:hover:not(:disabled){background:var(--accent);color:var(--surface);transform:translateY(-1px)}.cal-time:disabled{color:var(--ink-faint);border-color:var(--line);cursor:default}.cal-time.is-preferred{border-color:var(--celebration);color:var(--celebration);font-weight:700}.cal-time.is-preferred:before{content:"°5�a0";font-size:9px}.window-range{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.admin{max-inline-size:68rem;margin-inline:auto}.admin-list{display:flex;flex-direction:column;gap:var(--space-4)}.admin-row{padding:var(--space-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card)}.admin-row-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;padding-block-end:var(--space-4);border-block-end:1px solid var(--line);margin-block-end:var(--space-4)}.admin-open{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.admin-field{margin:0 0 var(--space-4);padding:0;border:0}.admin-field legend{margin-block-end:var(--space-2);padding:0;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.admin-chips{display:flex;flex-wrap:wrap;gap:5px}.admin-chip{padding:4px 11px;font-family:var(--font-body);font-size:12px;color:var(--ink-soft);background:transparent;border:1px solid var(--line);border-radius:var(--radius-chip);cursor:pointer;transition:color var(--fast) var(--ease),background var(--fast) var(--ease),border-color var(--fast) var(--ease)}.admin-chip:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.admin-chip.is-on{color:var(--surface);background:var(--accent);border-color:var(--accent)}.admin-chip:disabled{opacity:.5;cursor:default}.topbar{position:sticky;top:0;z-index:40;background:var(--surface);border-block-end:1px solid var(--line);-webkit-backdrop-filter:saturate(1.4) blur(6px);backdrop-filter:saturate(1.4) blur(6px)}.account{position:relative}.account-trigger{display:flex;align-items:center;gap:var(--space-2);padding:5px 10px 5px 5px;font-family:var(--font-body);font-size:13.5px;color:var(--ink);background:transparent;border:1px solid transparent;border-radius:var(--radius-chip);cursor:pointer;transition:background var(--fast) var(--ease),border-color var(--fast) var(--ease)}.account-trigger:hover,.account-trigger.is-open{background:var(--surface-elevated);border-color:var(--line)}.account-avatar{display:grid;place-items:center;inline-size:28px;block-size:28px;border-radius:var(--radius-chip);background:var(--accent);color:var(--surface);font-size:11px;font-weight:700;letter-spacing:.02em}.account-caret{font-size:9px;color:var(--ink-faint)}@media (max-width: 720px){.account-name{display:none}}.account-menu{position:absolute;inset-block-start:calc(100% + 8px);inset-inline-end:0;min-inline-size:15rem;padding:var(--space-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);box-shadow:0 12px 32px -12px #00000047;z-index:50}.account-menu-head{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);margin-block-end:var(--space-2);border-block-end:1px solid var(--line)}.account-menu-head .muted{font-size:12px}.account-menu-head .role-tag{align-self:flex-start;margin-block-start:4px}.account-item{display:block;inline-size:100%;padding:9px var(--space-3);text-align:left;font-family:var(--font-body);font-size:14px;color:var(--ink);text-decoration:none;background:transparent;border:0;border-radius:var(--radius);cursor:pointer;transition:background var(--fast) var(--ease)}.account-item:hover{background:var(--surface-elevated)}.account-item.is-current{color:var(--accent)}.account-item.is-danger{color:var(--state-alert)}.account-item.is-danger:hover{background:color-mix(in srgb,var(--state-alert) 8%,transparent)}select,.field select,.assign-sort select{-moz-appearance:none;appearance:none;-webkit-appearance:none;inline-size:100%;padding:10px 36px 10px 14px;font-family:var(--font-body);font-size:14.5px;color:var(--ink);background-color:var(--surface);background-image:linear-gradient(45deg,transparent 50%,var(--ink-faint) 50%),linear-gradient(135deg,var(--ink-faint) 50%,transparent 50%);background-position:calc(100% - 19px) calc(50% + 2px),calc(100% - 14px) calc(50% + 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;transition:border-color var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}select:hover{border-color:var(--ink-faint)}select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}select:disabled{color:var(--ink-faint);background-color:var(--surface-elevated);cursor:default}input[type=file]{inline-size:100%;padding:var(--space-4);font-family:var(--font-body);font-size:13.5px;color:var(--ink-soft);background:var(--surface-elevated);border:1.5px dashed var(--line);border-radius:var(--radius-card);cursor:pointer;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}input[type=file]:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent)}input[type=file]::file-selector-button{margin-inline-end:var(--space-3);padding:8px 16px;font-family:var(--font-body);font-size:13px;color:var(--surface);background:var(--accent);border:0;border-radius:var(--radius-chip);cursor:pointer}input[type=file]::file-selector-button:hover{background:color-mix(in srgb,var(--accent) 88%,black)}.field input:focus-visible,input[type=email]:focus-visible,input[type=password]:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}input[type=checkbox],input[type=radio]{accent-color:var(--accent);inline-size:17px;block-size:17px;cursor:pointer}.tile-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:var(--space-3);margin-block-end:var(--space-5)}.tile{display:flex;flex-direction:column;gap:3px;padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);text-decoration:none;color:inherit}.tile.is-link{transition:border-color var(--fast) var(--ease),transform var(--fast) var(--ease)}.tile.is-link:hover{border-color:var(--accent);transform:translateY(-1px)}.tile-value{font-family:var(--font-heading);font-size:34px;line-height:1;color:var(--ink)}.tile-label{font-size:13px;color:var(--ink-soft)}.tile-hint{font-size:11.5px;color:var(--ink-faint)}.tile.is-warn{border-inline-start:3px solid var(--secondary)}.tile.is-warn .tile-value{color:var(--secondary)}.inspector-drawer{margin-block-start:var(--space-6)}.inspector-drawer>summary{cursor:pointer;font-family:var(--font-heading);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint)}.inspector-drawer[open]>summary{margin-block-end:var(--space-4)}.admin-chip.is-ours{border-block-end-width:2px;border-block-end-color:var(--secondary)}.admin-chip.is-off-level:not(.is-on){opacity:.45}.admin-chip.is-off-level.is-on{outline:1px dashed var(--state-alert);outline-offset:1px}.admin-chip.is-static{cursor:default;background:var(--surface-elevated);color:var(--ink-soft)}.admin-chip.is-static.is-ours{color:var(--accent);border-color:var(--accent)}.student-progress,.student-past{margin-block-start:var(--space-4);padding-block-start:var(--space-4);border-block-start:1px solid var(--line)}.student-progress-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-block-end:var(--space-3)}.student-progress-head h3,.student-past h3{margin:0;font-family:var(--font-heading);font-size:14px;font-weight:600;color:var(--ink)}.student-progress-score{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft)}.student-progress-score strong{font-family:var(--font-heading);font-size:17px;color:var(--accent)}.student-past h3{margin-block-end:var(--space-3)}.student-past .count{margin-inline-start:6px;padding:1px 8px;border-radius:var(--radius-chip);background:var(--surface-elevated);font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.student-past .agenda-row{padding-block:7px}.student-past .agenda-when{min-inline-size:7rem}.cal-item-actions{display:flex;gap:var(--space-3);margin-block-start:2px}.linkish.is-quiet{color:var(--ink-faint);text-decoration-style:dotted}.terms{max-inline-size:52rem;margin-inline:auto;padding-block-end:var(--space-7)}.terms-clause{padding-block:var(--space-5);border-block-start:1px solid var(--line)}.terms-clause-title{display:grid;grid-template-columns:2.5rem 1fr;align-items:baseline;gap:var(--space-3);margin:0 0 var(--space-3);font-family:var(--font-heading);font-size:19px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.terms-clause-no{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);font-variant-numeric:tabular-nums}.terms-clause p{max-inline-size:68ch;margin:0 0 var(--space-3);padding-inline-start:calc(2.5rem + var(--space-3));font-size:15.5px;line-height:1.65;color:var(--ink)}.terms-clause p.muted{font-size:14px;color:var(--ink-soft)}.terms-clause .ticklist{margin:0 0 var(--space-3);padding-inline-start:calc(2.5rem + var(--space-3) + 1rem)}@media (max-width: 640px){.terms-clause-title{grid-template-columns:1.75rem 1fr;gap:var(--space-2)}.terms-clause p,.terms-clause .ticklist{padding-inline-start:0}}.banner--impersonating{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;border-left-color:var(--celebration);background:color-mix(in srgb,var(--celebration) 8%,var(--surface))}.btn-inline{margin-inline-start:auto;padding:6px 14px;font-size:13px}.grid-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin:var(--space-6) 0 var(--space-3)}.week-grid{display:grid;grid-template-columns:62px repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius-card);overflow:hidden;background:var(--surface);-webkit-user-select:none;user-select:none;touch-action:none}.week-grid-corner{background:var(--brand-taupe-fill);border-bottom:1px solid var(--line)}.week-grid-day{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-2) 0;background:var(--brand-taupe-fill);border-bottom:1px solid var(--line);border-left:1px solid var(--line-soft)}.week-grid-day.is-closed{opacity:.45}.week-grid-dayname{font-family:var(--font-body);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.week-grid-daynum{font-family:var(--font-heading);font-size:17px;color:var(--ink)}.week-grid-hour{padding:0 var(--space-2);font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);text-align:right;line-height:34px;border-bottom:1px solid var(--line-soft)}.week-cell{height:34px;padding:0;border:0;border-left:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:var(--surface);cursor:cell;transition:background var(--fast) var(--ease)}.week-cell.is-free:hover{background:var(--brand-gold-fill)}.week-cell.is-selected{background:color-mix(in srgb,var(--accent) 42%,var(--surface))}.week-cell.is-published{background:color-mix(in srgb,var(--state-mastered) 30%,var(--surface));cursor:default}.week-cell.is-booked{background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--state-mastered) 34%,var(--surface)),color-mix(in srgb,var(--state-mastered) 34%,var(--surface)) 5px,color-mix(in srgb,var(--state-mastered) 16%,var(--surface)) 5px,color-mix(in srgb,var(--state-mastered) 16%,var(--surface)) 10px);cursor:not-allowed}.week-cell.is-closed{background:var(--brand-slate-light);cursor:not-allowed}.week-cell-mark{font-family:var(--font-body);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.grid-legend{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-3);font-size:12px;color:var(--ink-soft)}.key{display:inline-block;width:14px;height:14px;border:1px solid var(--line);border-radius:3px;margin-inline-start:var(--space-3);vertical-align:-2px}.grid-legend .key:first-child{margin-inline-start:0}.key--selected{background:color-mix(in srgb,var(--accent) 42%,var(--surface))}.key--published{background:color-mix(in srgb,var(--state-mastered) 30%,var(--surface))}.key--booked{background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--state-mastered) 34%,var(--surface)),color-mix(in srgb,var(--state-mastered) 34%,var(--surface)) 3px,color-mix(in srgb,var(--state-mastered) 16%,var(--surface)) 3px,color-mix(in srgb,var(--state-mastered) 16%,var(--surface)) 6px)}.key--closed{background:var(--brand-slate-light)}.week-cell.is-soon{background:repeating-linear-gradient(45deg,var(--surface),var(--surface) 4px,var(--brand-gold-fill) 4px,var(--brand-gold-fill) 8px)}.week-cell.is-soon:hover{background:var(--brand-gold-fill)}.key--soon{background:repeating-linear-gradient(45deg,var(--surface),var(--surface) 3px,var(--brand-gold-fill) 3px,var(--brand-gold-fill) 6px);border:1px solid var(--accent)}.week-cell.is-floor{background:var(--brand-slate-light);opacity:.55}.short-notice-toggle{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-3) 0;padding:var(--space-3);font-size:14px;line-height:1.45;border:1px dashed var(--line);border-radius:var(--radius);cursor:pointer}.short-notice-toggle:hover{border-color:var(--accent)}.short-notice-toggle input{margin-top:3px}.publish-bar{position:sticky;bottom:var(--space-4);margin-top:var(--space-4);box-shadow:var(--shadow-2);border-color:var(--accent)}.window-range{display:flex;gap:var(--space-4);flex-wrap:wrap;margin:var(--space-3) 0}.window-range .field{min-width:190px}.agenda-tag.is-warn{color:var(--state-alert);border-color:color-mix(in srgb,var(--state-alert) 40%,var(--line))}@media (max-width: 720px){.week-grid{grid-template-columns:46px repeat(7,minmax(0,1fr))}.week-grid-daynum{font-size:14px}.week-cell,.week-grid-hour{height:30px;line-height:30px}.week-cell-mark{display:none}}.week-cell.is-locked{cursor:not-allowed}.week-cell.is-locked.is-published,.week-cell.is-locked.is-booked{opacity:.7}.plan-current{margin-bottom:var(--space-5)}.plan-current-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.plan-badge{font-family:var(--font-body);font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:5px 12px;border-radius:var(--radius-chip);background:var(--brand-gold-fill);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));color:var(--ink);white-space:nowrap}.plan-summary{margin:var(--space-3) 0 0;color:var(--ink-soft)}.allowance{margin:var(--space-4) 0 0}.allowance-bar{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:var(--space-2)}.allowance-pip{width:26px;height:8px;border-radius:4px;background:var(--brand-taupe-fill);border:1px solid var(--line-soft)}.allowance-pip.is-used{background:var(--accent);border-color:var(--accent)}.allowance-pip.is-over{background:var(--state-alert);border-color:var(--state-alert)}.allowance-note{margin:0;color:var(--ink-soft);font-size:14px}.plan-renewal{margin:var(--space-4) 0 0;padding-top:var(--space-3);border-top:1px solid var(--line-soft);color:var(--ink-soft);font-size:14px}.plan-advice{margin:var(--space-3) 0 0;padding:var(--space-3);border-radius:var(--radius);background:var(--brand-taupe-fill);font-size:14px}.plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--gap);margin-top:var(--space-4)}.plan-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface)}.plan-card.is-yours{border-color:var(--accent);background:var(--surface-elevated);box-shadow:var(--shadow-1)}.plan-card-flag{margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.plan-card-name{margin:0;font-family:var(--font-heading);font-size:19px}.plan-card-suits{margin:0;font-size:13px;color:var(--ink-soft)}.plan-card-price{margin:var(--space-2) 0;font-family:var(--font-heading);font-size:24px;color:var(--ink)}.plan-card-price.is-unset{font-family:var(--font-body);font-size:14px;font-style:italic;color:var(--ink-faint)}.plan-card-summary{margin:0;font-size:13px;color:var(--ink-soft)}.plan-card-body{margin:0;font-size:14px;line-height:1.55}.price-editor{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-3) 0}.price-input{display:flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:0 10px}.price-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.price-input input{border:0;background:none;padding:9px 0;width:110px;font-family:var(--font-mono);color:var(--ink)}.price-input input:focus{outline:none;box-shadow:none}.price-prefix{font-family:var(--font-mono);font-size:12px;color:var(--ink-faint);white-space:nowrap}.price-warn{flex-basis:100%;margin:0;font-size:13px}.plan-badge.is-none{background:var(--brand-taupe-fill);border-color:var(--line);color:var(--ink-faint)}.tutor-modes{margin:var(--space-2) 0 0;font-size:13px;color:var(--ink-soft)}.tutor-quals{margin-top:var(--space-4)}.tutor-quals-head{margin:0 0 var(--space-2);font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint)}.tutor-quals .ticklist{font-size:13px;color:var(--ink-soft)}.next-up{margin-bottom:var(--space-5)}.next-up-foot{margin:var(--space-3) 0 0;font-size:13px}.cal-mode{margin:var(--space-4) 0 var(--space-2)}.person{border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);margin-bottom:var(--space-3);overflow:hidden}.person:has(>details[open]){border-color:var(--accent);box-shadow:var(--shadow-1)}.person-summary{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-4) var(--space-5);cursor:pointer;list-style:none;transition:background var(--fast) var(--ease)}.person-summary::-webkit-details-marker{display:none}.person-summary::marker{content:""}.person-summary:hover{background:var(--brand-taupe-fill)}.person-summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.person-name{font-family:var(--font-heading);font-size:18px;color:var(--ink)}.person-meta{font-size:13px;color:var(--ink-soft);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-chevron{flex:none;width:8px;height:8px;border-right:2px solid var(--ink-faint);border-bottom:2px solid var(--ink-faint);transform:rotate(45deg) translate(-2px,-2px);transition:transform var(--fast) var(--ease)}details[open]>.person-summary .person-chevron{transform:rotate(225deg) translate(-2px,-2px)}.person-body{padding:0 var(--space-5) var(--space-5);border-top:1px solid var(--line-soft);padding-top:var(--space-4)}.person-actions{display:flex;justify-content:flex-end;gap:var(--space-3);padding:0 var(--space-5) var(--space-4)}.person:has(>details:not([open])) .person-actions{padding-top:0;margin-top:calc(-1 * var(--space-2))}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--space-4);margin:0 0 var(--space-5)}.fact{margin:0}.fact-label{margin:0 0 4px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint)}.fact-value{margin:0;font-size:14px;line-height:1.5;color:var(--ink)}.fact-value .ticklist{margin:0;font-size:14px}.embedded-standfirst{margin-top:var(--space-2)}.ask{display:flex;flex-direction:column;gap:var(--space-4);margin:var(--space-5) 0;padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface-elevated)}.ask-step{border:0;padding:0;margin:0}.ask-step legend{padding:0 0 var(--space-2);font-family:var(--font-heading);font-size:15px;color:var(--ink)}.offer-days{display:flex;flex-direction:column;gap:var(--space-5);margin-top:var(--space-4)}.offer-day-head{margin:0 0 var(--space-3);font-family:var(--font-body);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding-bottom:var(--space-2);border-bottom:1px solid var(--line-soft)}.offer-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-2)}.offer{display:flex;align-items:baseline;gap:var(--space-3);width:100%;text-align:left;padding:var(--space-3) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:border-color var(--fast) var(--ease),background var(--fast) var(--ease)}.offer:hover:not(:disabled){border-color:var(--accent);background:var(--brand-gold-fill)}.offer:disabled{opacity:.5;cursor:not-allowed}.offer-time{font-family:var(--font-mono);font-size:15px;color:var(--ink);white-space:nowrap}.offer-who{flex:1;min-width:0;font-size:14px;color:var(--ink)}.offer-flag{display:block;font-size:11px;color:var(--accent)}.offer-meta{font-size:12px;color:var(--ink-faint);white-space:nowrap}.offer.is-chosen{border-color:var(--accent);background:var(--brand-gold-fill);box-shadow:inset 3px 0 0 var(--accent)}.offer-new{display:block;font-size:11px;color:var(--accent)}.sheet{position:fixed;inset-inline:0;bottom:0;z-index:50;display:flex;justify-content:center;padding:0 var(--space-4) var(--space-4);pointer-events:none}.sheet-body{position:relative;pointer-events:auto;width:min(680px,100%);max-height:50dvh;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-4);background:var(--surface-elevated);border:1px solid var(--accent);border-radius:var(--radius-card);box-shadow:var(--shadow-2)}.sheet-close{position:absolute;top:var(--space-2);inset-inline-end:var(--space-2);width:32px;height:32px;font-size:20px;line-height:1;color:var(--ink-soft);background:none;border:0;border-radius:var(--radius-chip);cursor:pointer}.sheet-close:hover{background:var(--brand-gold-fill);color:var(--ink)}.book.has-sheet{padding-block-end:54dvh}.book.has-sheet{scroll-padding-block-end:54dvh}html:has(.book.has-sheet){scroll-padding-block-end:54dvh}@media (max-width: 720px){.sheet-body{max-height:62dvh}.sheet{padding-inline:var(--space-2)}}.banner--good{border-left-color:var(--state-mastered);background:color-mix(in srgb,var(--state-mastered) 10%,var(--surface))}.plan-group{margin-top:var(--space-6)}.plan-group-head{margin:0 0 var(--space-1);font-family:var(--font-heading);font-size:17px;color:var(--ink)}.plan-group-note{margin:0 0 var(--space-3);font-size:13px;color:var(--ink-soft);max-width:62ch}.plan-mixing{margin:var(--space-3) 0 0;padding:var(--space-3);border-radius:var(--radius);background:var(--brand-gold-fill);font-size:14px;line-height:1.5}.cal-grid{grid-template-columns:repeat(7,minmax(132px,1fr));gap:var(--space-2);align-items:start}.cal-day{min-height:0;gap:var(--space-2);padding:var(--space-3) var(--space-2) var(--space-3)}.cal-day.is-today .cal-day-num,.cal-day.is-today .cal-day-name{color:var(--accent)}.cal-day-head{align-items:center;gap:var(--space-2);border-bottom:0;padding-bottom:0}.cal-day-name{font-size:10px}.cal-day-num{font-size:16px;line-height:1}.cal-empty{margin:0;min-height:6px;font-size:0;color:transparent}.cal-item{position:relative;gap:3px;padding:var(--space-2) var(--space-2) var(--space-2) var(--space-3);border-left-width:3px;transition:box-shadow var(--fast) var(--ease),transform var(--fast) var(--ease)}.cal-item:hover{box-shadow:var(--shadow-1)}.cal-item-time{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink);letter-spacing:-.01em}.cal-item-title{font-size:13px;line-height:1.25;color:var(--ink)}.cal-item-meta{font-size:11px;line-height:1.35;color:var(--ink-soft)}.cal-chip{display:inline-block;align-self:flex-start;margin-top:2px;padding:2px 7px;border-radius:var(--radius-chip);font-size:10px;letter-spacing:.04em;text-transform:uppercase;background:color-mix(in srgb,var(--state-mastered) 16%,var(--surface));color:var(--ink-soft);border:1px solid color-mix(in srgb,var(--state-mastered) 30%,var(--line))}.cal-chip.is-waiting{background:color-mix(in srgb,var(--secondary) 14%,var(--surface));border-color:color-mix(in srgb,var(--secondary) 40%,var(--line));color:var(--ink);text-transform:none;letter-spacing:0;font-size:10.5px}.cal-item-undo{margin-top:2px;align-self:flex-start;font-size:10.5px;color:var(--ink-faint);text-decoration:none;border-bottom:1px solid transparent}.cal-item:hover .cal-item-undo,.cal-item-undo:hover,.cal-item-undo:focus-visible{color:var(--ink-soft);border-bottom-color:currentColor}.cal-item.child-a{border-left-color:#6b7fa8;background:color-mix(in srgb,#6B7FA8 7%,var(--surface-elevated))}.cal-item.child-b{border-left-color:#a8756b;background:color-mix(in srgb,#A8756B 7%,var(--surface-elevated))}.cal-item.child-c{border-left-color:#6ba888;background:color-mix(in srgb,#6BA888 7%,var(--surface-elevated))}.cal-item.child-d{border-left-color:#9a6ba8;background:color-mix(in srgb,#9A6BA8 7%,var(--surface-elevated))}.cal-item.child-e{border-left-color:#a89a6b;background:color-mix(in srgb,#A89A6B 7%,var(--surface-elevated))}.cal-item.child-f{border-left-color:#6ba0a8;background:color-mix(in srgb,#6BA0A8 7%,var(--surface-elevated))}.cal-item.is-requested{border-left-style:dashed}.cal-cluster{margin-block-end:var(--space-3)}.cal-cluster-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);padding-block-end:2px;border-block-end:1px solid var(--line-soft);margin-block-end:var(--space-1)}.cal-cluster-time{font-family:var(--font-mono);font-size:13px;color:var(--ink)}.cal-cluster-what{font-size:11px;color:var(--ink-faint);text-align:right}.cal-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-2);padding:3px 0 3px var(--space-2);border-inline-start:3px solid var(--line);margin-block-end:1px}.cal-line-who{font-size:13px;color:var(--ink)}.cal-line-meta{flex:1;min-width:0;font-size:11px;color:var(--ink-faint)}.cal-line.is-lesson{border-inline-start-color:var(--accent)}.cal-line.is-requested{border-inline-start-color:var(--secondary);border-inline-start-style:dashed}.cal-line.is-free{border-inline-start-color:var(--state-mastered)}.cal-line.is-free .cal-line-who{color:var(--ink-faint)}.cal-line.child-a{border-inline-start-color:#6b7fa8}.cal-line.child-b{border-inline-start-color:#a8756b}.cal-line.child-c{border-inline-start-color:#6ba888}.cal-line.child-d{border-inline-start-color:#9a6ba8}.cal-line.child-e{border-inline-start-color:#a89a6b}.cal-line.child-f{border-inline-start-color:#6ba0a8}@media (max-width: 900px){.cal-grid{grid-template-columns:1fr}.cal-day{padding:var(--space-3)}.cal-day:not(:has(.cal-item)):not(:has(.cal-slot)):not(:has(.cal-cluster)){display:none}.cal-day-head{border-bottom:1px solid var(--line-soft);padding-bottom:var(--space-2)}}.mixer{padding:var(--space-4) var(--space-5) var(--space-5);border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);position:relative}.mixer.is-busy{opacity:.6;pointer-events:none}.mixer-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-3)}.mixer-summary{margin:0;font-size:14px;color:var(--ink-soft)}.mixer-price{margin:0;font-family:var(--font-heading);font-size:26px;color:var(--ink);line-height:1}.mixer-price.is-unset{font-family:var(--font-body);font-size:14px;font-style:italic;color:var(--ink-faint)}.mixer-range{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;margin:var(--space-3) 0 0;height:26px;background:transparent;cursor:grab}.mixer-range:active{cursor:grabbing}.mixer-range:disabled{cursor:not-allowed;opacity:.55}.mixer-range::-webkit-slider-runnable-track{height:14px;border-radius:7px;border:1px solid var(--line);background:linear-gradient(to right,var(--accent) 0 var(--filled, 0%),transparent var(--filled, 0%) 100%),repeating-linear-gradient(-45deg,color-mix(in srgb,var(--secondary) 22%,var(--surface)),color-mix(in srgb,var(--secondary) 22%,var(--surface)) 6px,color-mix(in srgb,var(--secondary) 12%,var(--surface)) 6px,color-mix(in srgb,var(--secondary) 12%,var(--surface)) 12px)}.mixer-range::-moz-range-track{height:14px;border-radius:7px;border:1px solid var(--line);background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--secondary) 22%,var(--surface)),color-mix(in srgb,var(--secondary) 22%,var(--surface)) 6px,color-mix(in srgb,var(--secondary) 12%,var(--surface)) 6px,color-mix(in srgb,var(--secondary) 12%,var(--surface)) 12px)}.mixer-range::-moz-range-progress{height:14px;border-radius:7px 0 0 7px;background:var(--accent)}.mixer-range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;margin-top:-6px;border-radius:50%;background:var(--surface);border:2px solid var(--accent);box-shadow:var(--shadow-1);cursor:grab}.mixer-range::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--surface);border:2px solid var(--accent);box-shadow:var(--shadow-1);cursor:grab}.mixer-range:focus-visible::-webkit-slider-thumb{outline:2px solid var(--accent);outline-offset:2px}.mixer-range:focus-visible::-moz-range-thumb{outline:2px solid var(--accent);outline-offset:2px}.landing-pricing{padding:var(--space-7) 0;border-top:1px solid var(--line-soft)}.landing-pricing-note{max-width:64ch;margin:0 0 var(--space-5);color:var(--ink-soft);line-height:1.6}.landing-pricing-foot{margin-top:var(--space-5);font-size:13px;color:var(--ink-faint)}.landing-pricing .plan-card{background:var(--surface)}.offer-travel{display:block;font-size:11px;color:var(--state-mastered)}.offer-travel.is-remote{color:var(--ink-faint)}.mixer-warn{margin:var(--space-3) 0 0;padding:var(--space-3);border-radius:var(--radius);border-left:3px solid var(--secondary);background:color-mix(in srgb,var(--secondary) 8%,var(--surface));font-size:13px;line-height:1.55}.mixer-warn.is-blocked{border-left-color:var(--state-alert);background:color-mix(in srgb,var(--state-alert) 8%,var(--surface))}.allowance-split{display:flex;gap:var(--space-4);flex-wrap:wrap;margin:0 0 var(--space-1);font-size:13px;color:var(--ink-soft)}.allowance-half strong{color:var(--ink)}.allowance-half.is-over,.allowance-half.is-over strong{color:var(--state-alert)}.mixer-presets{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-3)}.mixer-preset{padding:4px 10px;font-family:var(--font-body);font-size:12px;color:var(--ink-soft);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-chip);cursor:pointer;transition:border-color var(--fast) var(--ease),color var(--fast) var(--ease)}.mixer-preset:hover:not(:disabled){border-color:var(--accent);color:var(--ink)}.mixer-preset:disabled{opacity:.5;cursor:not-allowed}.mixer-preset.is-current{border-color:var(--accent);background:var(--brand-gold-fill);color:var(--ink)}.plan-card-range{margin:var(--space-1) 0 var(--space-2);font-family:var(--font-heading);font-size:20px;color:var(--ink)}.plan-card-range .muted{font-family:var(--font-body);font-size:12px}.mixer{padding:var(--space-4) var(--space-5) var(--space-5)}.mixer-question{margin:0 0 var(--space-2);font-family:var(--font-heading);font-size:15px;color:var(--ink)}.mixer-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-1)}.mixer-scale{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2);margin-top:2px}.mixer-scale .mixer-preset:first-child{margin-inline-start:-4px}.mixer-scale .mixer-preset:last-child{margin-inline-end:-4px}.mixer-step-spacer{flex:0 0 auto;width:1px}.allowance-heading{margin:0 0 4px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint)}.admin-preview-head{margin:var(--space-4) 0 var(--space-2);font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-faint);padding-top:var(--space-3);border-top:1px solid var(--line-soft)}.student-plan{margin:var(--space-5) 0;padding-top:var(--space-4);border-top:1px solid var(--line-soft)}.student-plan>.muted{margin-top:var(--space-3)}.lib-note--family{margin:var(--space-4) 0 var(--space-5);padding:var(--space-4);border-left:3px solid var(--secondary);border-radius:var(--radius);background:color-mix(in srgb,var(--secondary) 7%,var(--surface));max-width:68ch}.cal-week{display:grid;grid-template-columns:3.25rem repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:var(--radius-card);background:var(--surface);overflow:hidden;margin-bottom:var(--space-5)}.cal-week-row{display:grid;grid-column:1 / -1;grid-template-columns:subgrid;border-top:1px solid var(--line-soft)}.cal-week-row:first-child{border-top:0}.cal-week-row--head{position:sticky;top:0;z-index:2;background:var(--surface-elevated);border-bottom:1px solid var(--line)}.cal-week-gutter{padding:var(--space-2) var(--space-2) var(--space-2) 0;text-align:right;font-size:11px;color:var(--ink-faint);white-space:nowrap;border-right:1px solid var(--line-soft)}.cal-week-day{display:flex;flex-direction:column;gap:2px;padding:var(--space-2);border-left:1px solid var(--line-soft)}.cal-week-dayname{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.cal-week-daynum{font-family:var(--font-heading);font-size:16px;line-height:1;color:var(--ink)}.cal-week-day.is-today .cal-week-dayname,.cal-week-day.is-today .cal-week-daynum{color:var(--accent)}.cal-week-date{margin-top:2px;font-size:10px;line-height:1.3;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-week-cell{display:flex;flex-direction:column;gap:3px;min-height:2.4rem;padding:3px;border-left:1px solid var(--line-soft)}.cal-week-cell.is-today{background:color-mix(in srgb,var(--accent) 4%,transparent)}.cal-block{display:flex;flex-direction:column;gap:1px;padding:4px 6px;border-radius:var(--radius);border-left:3px solid var(--line);background:var(--surface-elevated);font-size:11px;line-height:1.25;overflow:hidden}.cal-block-time{font-size:10px;color:var(--ink-faint)}.cal-block-who{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-block-meta{color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-block.is-requested{border-left-style:dashed;background:transparent}.cal-block-top{display:flex;align-items:center;gap:4px}.cal-block-top .cal-block-time{margin-right:auto}.cal-block-wait,.cal-block-where{padding:0 5px;border-radius:var(--radius-chip);font-size:9px;letter-spacing:.05em;text-transform:uppercase}.cal-block-wait{background:var(--brand-gold-fill);color:var(--ink)}.cal-block-where{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--ink-muted)}.cal-block-actions{display:flex;gap:var(--space-2);margin-top:2px;font-size:10px}.cal-free{margin-top:auto;padding:2px 5px;border-radius:var(--radius-chip);border:1px dashed var(--line);font-size:10px;color:var(--ink-faint);cursor:help;align-self:flex-start}@media (max-width: 900px){.cal-week{display:block;overflow-x:auto}.cal-week-row{grid-template-columns:2.75rem repeat(7,minmax(104px,1fr));min-width:780px}.cal-week-row--head{position:static}}.cal-more{align-self:flex-start;padding:2px 6px;border:1px solid var(--line);border-radius:var(--radius-chip);background:transparent;font-family:inherit;font-size:10px;color:var(--ink-muted);cursor:pointer}.cal-more:hover{border-color:var(--accent);color:var(--ink)}.cal-more:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
