:root{--font-family: "DM Sans", system-ui, sans-serif;--color-text: #243b5a;--color-text-muted: #4a5568;--color-text-faint: #8a96a6;--color-text-disabled: #a7b0bc;--color-bg: #f4f6f8;--color-splash-bg: #f5f6f8;--splash-logo-width: 70vw;--splash-logo-max: 360px;--login-logo-width: 200px;--login-logo-width-short: 120px;--login-logo-top: 40px;--color-surface: #ffffff;--color-surface-sunken: #e8eef4;--color-border: #dde3ea;--color-border-strong: #c9d1da;--color-border-section: #e2e4e9;--color-scrim: rgba(36, 59, 90, .45);--color-scrim-soft: rgba(36, 59, 90, .35);--color-hairline: rgba(0, 0, 0, .08);--color-primary: #243b5a;--color-on-primary: #ffffff;--color-accent: #0b7a75;--color-on-accent: #ffffff;--color-accent-soft: #e3f1ee;--color-bar: #243b5a;--color-on-bar: #ffffff;--color-info-bg: #e8eef4;--color-info-ink: #243b5a;--color-type-pill: #1f5ba6;--color-warn-bg: #fdf1e3;--color-warn-ink: #7a3e00;--color-success-bg: #e3f1ee;--color-success-ink: #0b5a56;--color-danger: #b42318;--color-caution: #f79009;--color-star: #e8b86d;--color-key-usual: #b9c4d0;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 15px;--font-size-base: 16px;--font-size-lg: 17px;--font-size-xl: 18px;--font-size-title: 26px;--font-size-heading: 24px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-body: 1.45;--space-half: 2px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--radius-sm: 10px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-pill: 999px;--radius-round: 50%;--border-width: 1px;--border-width-strong: 2px;--shadow-menu: 0 10px 30px rgba(0, 0, 0, .18);--shadow-selected: 0 0 0 var(--border-width) var(--color-accent);--shadow-today: 0 0 0 var(--border-width-strong) var(--color-accent);--shadow-bar: 0 -1px 0 var(--color-border);--tap-min: 48px;--tap-comfortable: 56px;--row-min: 56px;--lesson-row-min: 64px;--tab-height: 56px;--header-height: 56px;--icon-size: 24px;--check-icon-size: 14px;--row-icon-size: 40px;--dot-size: 10px;--tab-dot-top: -1px;--tab-dot-right: -4px;--bar-height: 8px;--letter-spacing-wide: .06em;--fade-width: 32px;--motion-duration: .25s;--motion-ease: ease-in-out;--placeholder-pulse: 1.2s;--confetti-duration: 1s;--ring-size: 56px;--time-column: 80px;--money-tile-min: 88px;--money-totals-from: #49d2c7;--money-totals-to: #006de6;--money-paid-from: #49d27d;--money-paid-to: #009863;--money-unpaid-from: #eeba2a;--money-unpaid-to: #ff8579;--radius-square: 0;--nav-icon-size: 16px;--nav-box-size: 32px;--view-select-width: 68px;--view-select-height: 28px;--font-size-pill: 9px;--color-replacement-bg: #e6f0fb;--color-replacement: #1d5fa8;--money-text-shadow: 0 1px 2px rgb(0 0 0 / 35%);--gradient-money-totals: linear-gradient(135deg, var(--money-totals-from), var(--money-totals-to));--gradient-money-paid: linear-gradient(135deg, var(--money-paid-from), var(--money-paid-to));--space-section: 24px;--lesson-pill-gap: 4px;--gradient-money-unpaid: linear-gradient(135deg, var(--money-unpaid-from), var(--money-unpaid-to));--auth-icon-size: 64px;--auth-icon-glyph: 32px;--welcome-mark: 96px;--step-number-size: 32px;--screen-max: 560px;--sidebar-width: 232px;--rail-width: 372px;--wide-screen-max: 1200px;--wide-form-max: 720px;--sheet-max: 520px;--focus-ring: 3px solid var(--color-accent);--focus-inset: -3px;--tab-marker: 3px;--navy: var(--color-primary);--teal: var(--color-accent);--teal-soft: var(--color-accent-soft);--ink: var(--color-text);--muted: var(--color-text-muted);--line: var(--color-border);--bg: var(--color-bg);--card: var(--color-surface);--warn-bg: var(--color-warn-bg);--warn-ink: var(--color-warn-ink)}:root{font-family:var(--font-family);color:var(--color-text);background:var(--color-bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:26px;margin:0;line-height:1.15}h2{font-size:17px;margin:0 0 8px}h2.today{color:var(--teal)}h2.page-title{font-size:26px;margin:0;line-height:1.15}p{margin:0;line-height:1.45}code{background:var(--color-surface-sunken);padding:2px 6px;border-radius:6px}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:var(--color-bar);color:var(--color-on-bar)}.screen{width:100%;max-width:var(--screen-max);margin:0 auto;padding:var(--space-6) var(--space-5) calc(var(--tab-height) + var(--space-6) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;flex:1}.stack{display:flex;flex-direction:column;gap:14px}.stack.tight{gap:6px}.row{display:flex;align-items:center;gap:12px}.grow{flex:1}.muted{color:var(--muted);font-size:15px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px}.lesson{display:flex;align-items:center;gap:14px;margin-bottom:8px}.lesson .time{min-width:76px;font-weight:700;display:flex;flex-direction:column}.lesson .time .until{font-size:14px;font-weight:500;color:var(--muted)}.pill{font-size:13px;background:var(--color-surface-sunken);border-radius:var(--radius-pill);padding:4px 10px;white-space:nowrap}.day{display:flex;flex-direction:column}label{display:flex;flex-direction:column;gap:6px;font-size:15px;font-weight:500}input,select,textarea{min-height:48px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:0 14px;font:inherit;font-size:16px;background:var(--color-surface);color:var(--ink)}input.short{width:88px;flex:none}.inline-word{font-size:16px}.field-label{font-size:15px;font-weight:500}fieldset{border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px;margin:0;background:var(--card)}legend{font-weight:700;padding:0 6px}button{font-family:inherit}button.primary{min-height:56px;border:0;border-radius:var(--radius-lg);background:var(--navy);color:var(--color-on-primary);font-size:18px;font-weight:700;cursor:pointer}button.primary.small{min-height:48px;padding:0 18px;font-size:16px}button.primary:disabled{opacity:.6}button.link{min-height:var(--tap-min);border:0;background:transparent;color:var(--teal);font-size:16px;font-weight:700;cursor:pointer;padding:0 8px;text-decoration:underline}button.tappable{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;min-height:56px}button.secondary{min-height:48px;padding:0 18px;border:1px solid var(--navy);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--navy);font-size:16px;font-weight:700;cursor:pointer}button.secondary:disabled{opacity:.45;cursor:default}button.danger{min-height:48px;border:1px solid var(--color-danger);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-danger);font-size:16px;font-weight:700;cursor:pointer}label.choice{flex-direction:row;align-items:center;gap:12px;min-height:48px;font-size:16px}label.choice input{width:22px;height:22px;min-height:0;margin:0}button.icon{width:48px;height:48px;border-radius:24px;border:1px solid var(--line);background:var(--color-surface);font-size:26px;cursor:pointer}.notice{background:var(--warn-bg);color:var(--warn-ink);border-radius:var(--radius-md);padding:12px 14px}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--teal);outline-offset:2px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-scrim);display:flex;align-items:center;justify-content:center;padding:16px;z-index:10}.dialog{background:var(--card);border-radius:var(--radius-xl);padding:28px 24px;width:100%;max-width:320px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.spinner{width:40px;height:40px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--teal);animation:spin .8s linear infinite}.tick{width:48px;height:48px;border-radius:50%;background:var(--teal);color:var(--color-on-primary);font-size:28px;line-height:48px;font-weight:700}.tick-wrap{position:relative;display:flex;align-items:center;justify-content:center}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.confetti-piece{--dx: 0;--dy: 0;--turn: 0;position:absolute;top:50%;left:50%;width:var(--space-2);height:var(--space-3);margin:calc(var(--space-3) / -2) 0 0 calc(var(--space-2) / -2);border-radius:var(--space-half);background:var(--color-accent);opacity:0;animation:confetti-burst var(--confetti-duration) ease-out forwards}.confetti-piece:nth-child(4n+2){background:var(--color-caution)}.confetti-piece:nth-child(4n+3){background:var(--color-primary)}.confetti-piece:nth-child(4n){background:var(--color-star)}@keyframes confetti-burst{0%{opacity:1;transform:translate(0) rotate(0)}80%{opacity:1}to{opacity:0;transform:translate(calc(var(--dx) * var(--space-4)),calc(var(--dy) * var(--space-4))) rotate(calc(var(--turn) * 1deg + 360deg))}}@media (prefers-reduced-motion: reduce){.confetti{display:none}}.day-head h2{margin:0}.day-head{margin-bottom:8px}button.add-day{width:48px;height:48px;flex:none;border:0;background:transparent;cursor:pointer;position:relative;font-size:0}button.add-day:before{content:"+";position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:50%;border:1px solid var(--line);background:var(--color-surface);color:var(--teal);font-size:20px;font-weight:700;line-height:26px}.outcome-tiles{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}button.outcome{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--tap-comfortable);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--ink);font:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;padding:var(--space-4) var(--space-2)}button.outcome.wide{grid-column:1 / -1}button.outcome[aria-pressed=true]{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-on-accent);font-weight:var(--font-weight-bold)}button.outcome:disabled{opacity:.45;cursor:default}.student-list .outcome-tiles button.outcome{width:auto;min-height:var(--tap-comfortable);justify-content:center;text-align:center;border:var(--border-width) solid var(--color-border);padding:var(--space-4) var(--space-2)}.student-list .outcome-tiles button.outcome[aria-pressed=true]{border-color:var(--color-accent);outline:0}button.outcome .icon{flex:none}.student-list .choices button{width:auto;justify-content:center;text-align:center;border:var(--border-width) solid var(--color-border-strong);padding:0 var(--space-3)}.student-list .choices button[aria-pressed=true]{border-color:var(--color-accent);outline:0}.pill.todo{background:var(--warn-bg);color:var(--warn-ink)}textarea{padding:12px 14px;min-height:96px;resize:vertical}.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.scale.three{grid-template-columns:repeat(3,1fr)}.scale button{min-height:48px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--ink);font-size:18px;font-weight:700;cursor:pointer}.scale button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:var(--color-on-primary)}.grade{margin-top:6px;font-size:14px;color:var(--ink);display:flex;flex-direction:column;gap:2px}.grade .remarks{color:var(--muted);font-style:italic;white-space:pre-wrap}.graded{border-top:1px solid var(--line);padding-top:8px}.graded-star{color:var(--color-star);font-size:22px;line-height:1}.grade-table{margin:0;display:flex;flex-direction:column}.grade-table div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.grade-table dt{font-weight:500}.grade-table dd{margin:0;font-weight:700}.grade-table dd.muted{font-weight:400}p.remarks{white-space:pre-wrap}.choices{display:flex;flex-wrap:wrap;gap:8px}.choices button{flex:1 1 30%;min-height:48px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--ink);font-size:16px;font-weight:700;cursor:pointer;padding:0 12px}.choices button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:var(--color-on-primary)}.dialog p{white-space:pre-line}.dialog.left{align-items:stretch;text-align:left;max-width:400px}.criterion{border-top:1px solid var(--line);padding-top:10px}button.icon.small{font-size:20px;flex:none}button.icon:disabled,button.link:disabled{opacity:.4;cursor:default}button.danger:disabled{opacity:.45;cursor:default}.stars{font-size:20px;letter-spacing:2px;color:var(--color-border-strong);white-space:nowrap}.stars .on,.star-picker button.on{color:var(--color-star)}.star-picker{display:flex;gap:4px}.star-picker button{width:52px;height:52px;border:0;background:transparent;font-size:36px;line-height:1;color:var(--color-border-strong);cursor:pointer;padding:0}input[type=search]{width:100%}.chips{display:flex;flex-wrap:wrap;gap:8px}.schedule.overdue-note{color:var(--warn-ink);font-weight:700}.chips button{min-height:48px;padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--card);color:var(--muted);font-size:15px;font-weight:500;cursor:pointer}.chips button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:var(--color-on-primary);font-weight:700}.student-list{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.student-list li+li{border-top:1px solid var(--line)}.student-list li>.row{min-height:64px;padding:12px 14px}.student-list button{width:100%;min-height:64px;display:flex;align-items:center;gap:12px;padding:12px 14px;border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer}.student-list button:active{background:var(--bg)}.student-list button:focus-visible{outline-offset:-3px}.avatar{width:40px;height:40px;flex:none;border-radius:50%;background:var(--teal-soft);color:var(--teal);font-weight:700;font-size:15px;display:grid;place-items:center}.student-name{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:17px;font-weight:600}.tag{font-size:12px;font-weight:600;color:var(--muted);background:var(--bg);border-radius:6px;padding:2px 8px}.card.faded{opacity:.7}.schedule{display:block;margin-top:2px;font-size:14px;color:var(--muted)}.chevron{flex:none;color:var(--color-text-faint);font-size:22px;line-height:1}.profile-nav{position:relative}.menu-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-scrim-soft);z-index:10}.menu{position:absolute;top:52px;right:0;z-index:11;min-width:200px;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-menu);overflow:hidden;display:flex;flex-direction:column}.menu button{min-height:48px;padding:0 16px;border:0;background:transparent;font:inherit;font-size:16px;color:var(--ink);text-align:left;cursor:pointer}.menu button+button{border-top:1px solid var(--line)}.menu button.danger-item{color:var(--color-danger);font-weight:700}.menu button:focus-visible{outline-offset:-3px}.hero{display:flex;align-items:center;gap:14px}.avatar.large{width:60px;height:60px;font-size:22px}.hero .student-name{font-size:24px;font-weight:700}.hero .schedule{line-height:1.4}.card.info{padding:4px 16px}.card.info h2{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 0 2px}.card.info dl{margin:0}.card.info dl div{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:8px 0;border-bottom:1px solid var(--line);font-size:15px}.card.info dl div:last-child{border-bottom:0}.card.info dt{color:var(--muted);white-space:nowrap}.card.info dd{margin:0;text-align:right;font-weight:500}.card.info dl div.block-row{align-items:flex-start}.card.info dd .block-change{display:flex;justify-content:flex-end}.card.info dd .block-locked{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);text-align:right;font-weight:400;font-size:13px}.card.info>p.muted{padding:8px 0 14px}.card.info>p.bill-to{margin:0;padding:4px 0 14px;font-size:17px;font-weight:600}.lesson-title{padding:8px 0 2px}.card.info .remarks{font-style:italic;padding-bottom:8px}button.text-action{min-height:44px;border:0;background:transparent;padding:0;color:var(--teal);font:inherit;font-weight:700;cursor:pointer}button.see-all{width:100%;min-height:48px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--teal);font:inherit;font-size:15px;font-weight:700;cursor:pointer}.pill.replacement{display:inline-block;margin-top:4px;background:var(--teal-soft);color:var(--teal);border:1px solid var(--teal);font-weight:700}.center{text-align:center}.done-head{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.done-head h2{margin:0}.section-action{width:100%;margin:4px 0 14px}.warn-text{color:var(--warn-ink);font-weight:700}.minutes-bar{display:flex;gap:2px;height:14px;margin:12px 0 6px;border-radius:7px;overflow:hidden}.minutes-bar .usual,.minutes-key .key.usual{background:var(--color-key-usual)}.minutes-bar .extra,.minutes-key .key.extra{background:var(--teal)}.minutes-key{margin:0 0 6px;font-size:15px;font-weight:700}.minutes-key .key{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}.plain-list{list-style:none;margin:0;padding:0}.credit-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:15px}.credit-row button{flex:none}.calendar{display:flex;flex-direction:column;gap:10px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.calendar-head{text-align:center;font-size:13px;font-weight:600;color:var(--muted)}.day-cell{position:relative;min-height:44px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--ink);font:inherit;font-size:16px;font-weight:600;cursor:pointer;padding:0}.day-cell.outside{color:var(--muted);font-weight:400}.day-cell.is-today{border-color:var(--teal);border-width:2px}.day-cell[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:var(--color-on-primary)}.day-cell:disabled{background:var(--bg);color:var(--color-text-disabled);cursor:default;text-decoration:line-through}.day-cell .dot{position:absolute;left:50%;bottom:5px;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:var(--teal)}.day-cell[aria-pressed=true] .dot{background:var(--color-surface)}.clock{display:flex;flex-direction:column;gap:12px;align-items:center}.clock-head{justify-content:center;flex-wrap:wrap}.clock-part{min-width:64px;min-height:56px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--ink);font-size:30px;font-weight:700;cursor:pointer}.clock-part[aria-pressed=true]{border:2px solid var(--teal);color:var(--teal)}.clock-colon{font-size:30px;font-weight:700}.choices.ampm{flex-wrap:nowrap}.choices.ampm button{flex:none;min-width:56px}.dial{position:relative;width:min(280px,100%);aspect-ratio:1;border-radius:50%;background:var(--bg);border:1px solid var(--line)}.dial-mark{position:absolute;width:44px;height:44px;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;color:var(--ink);font-size:17px;font-weight:600;cursor:pointer}.dial-mark[aria-pressed=true]{background:var(--teal);color:var(--color-on-primary);font-weight:700}.toggle-list{display:flex;flex-direction:column;gap:8px}.toggle-row{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 14px;border:var(--border-width-strong) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--ink);font:inherit;font-size:15px;text-align:left;cursor:pointer}.toggle-row[aria-pressed=true]{border-color:var(--color-accent)}.toggle-row .check{box-sizing:border-box;width:var(--space-5);height:var(--space-5);flex:none;border:var(--border-width-strong) solid var(--color-text-faint);border-radius:var(--space-1);display:grid;place-items:center;font-weight:700;color:var(--color-on-accent);background:var(--color-surface)}.toggle-row[aria-pressed=true] .check{background:var(--color-accent);border-color:var(--color-accent)}.toggle-row .check .icon{display:block;width:var(--check-icon-size);height:var(--check-icon-size)}.invoice-row-end{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}.lesson-link{width:100%;min-height:48px;display:flex;align-items:center;gap:12px;padding:8px 0;border:0;border-top:1px solid var(--color-hairline);background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer}.notice .plain-list{margin-top:4px}.unbilled-note{padding:8px 0;border-top:1px solid var(--color-hairline)}.invoice-line{border-bottom:1px solid var(--line)}.line-head{width:100%;min-height:64px;display:flex;align-items:center;gap:12px;padding:10px 0;border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer}.line-desc{display:block;font-size:16px;font-weight:600}.line-working{display:block;margin-top:var(--space-half);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium, 500);color:var(--color-info-ink)}.line-head .amount{flex:none;white-space:nowrap}.line-lessons{padding:0 0 8px 12px}.line-lessons .lesson-link{border-top:1px solid var(--line)}.invoice-paper{display:flex;flex-direction:column;gap:16px;border:1px solid var(--line)}.invoice-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px}.invoice-head>div{min-width:0}.invoice-business{margin:0;font-size:20px}.invoice-detail{margin:0;font-size:15px;overflow-wrap:anywhere}.invoice-meta{text-align:right;margin-left:auto}.invoice-number{margin:0;font-size:15px;font-weight:700}.invoice-section h3{margin:0 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.invoice-section p.bill-to{margin:0;font-size:17px;font-weight:600}.invoice-bank{margin:0;display:flex;flex-direction:column;gap:6px}.invoice-bank dt{font-size:13px;color:var(--muted)}.invoice-bank dd{margin:0;font-size:16px;font-weight:600;overflow-wrap:anywhere}.invoice-total{display:flex;justify-content:space-between;align-items:center;min-height:56px;font-size:18px}.overlay.sheet{align-items:flex-end;padding:0}.sheet-panel{background:var(--card);border-radius:var(--radius-xl) 20px 0 0;padding:24px 20px 28px;width:100%;max-width:520px;max-height:92vh;overflow-y:auto;display:flex;flex-direction:column;gap:12px;text-align:left}.sheet-panel h2,.sheet-panel p{margin:0}.travel-gap+.travel-gap{margin-top:12px}.student-list li button[aria-pressed=true]{outline:3px solid var(--teal);outline-offset:-3px}.qr-preview{display:block;width:100%;max-width:160px;height:auto;border:1px solid var(--line);border-radius:8px;background:var(--card)}.invoice-section h4{margin:0 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.invoice-payment{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px}.invoice-qr{margin:0;display:flex;flex-direction:column;gap:4px}.invoice-qr figcaption{font-size:13px;color:var(--muted)}.invoice-text p{margin:0 0 6px;font-size:15px;overflow-wrap:anywhere}.invoice-text p.text-heading{font-weight:700;margin-bottom:2px}.invoice-text .text-block{margin:0 0 12px}.text-edit-badge{font-size:13px;color:var(--muted)}.shell-body{flex:1;display:flex;flex-direction:column}.approve-bar{position:sticky;bottom:64px;padding:12px 0;background:var(--bg);z-index:5}.approve-bar>button{width:100%}[data-subscreen=true] .screen{padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom))}[data-subscreen=true] .approve-bar,[data-subscreen=true] .save-bar{bottom:0;padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom))}.issued-facts{margin:0;display:flex;flex-direction:column}.issued-facts div{display:flex;justify-content:space-between;gap:16px;min-height:44px;align-items:center;border-bottom:1px solid var(--line)}.issued-facts dt{color:var(--muted)}.issued-facts dd{margin:0;font-weight:700}.student-list li.overdue-row{background:var(--warn-bg)}.outstanding{font-size:24px}.spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2.4s}}.row.between{justify-content:space-between}.choose-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.choose-row{display:flex;align-items:center;gap:var(--space-3);min-height:var(--row-min);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);cursor:pointer}.choose-row.ticked{border-color:var(--color-accent);border-width:var(--border-width-strong)}.choose-row input[type=checkbox]{width:24px;height:24px;flex:none;accent-color:var(--color-accent)}.combined-summary{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-info-bg)}.segments{display:flex;gap:var(--space-1)}.segment{flex:1;height:8px;border-radius:var(--radius-pill);background:var(--color-border)}.segment.issued{background:var(--color-accent)}.segment.skipped{background:var(--color-caution)}.segment.current{background:var(--color-primary)}.queue-head{display:flex;flex-direction:column;gap:var(--space-2)}.happens-card{border:var(--border-width-strong) solid var(--color-accent)}.eyebrow{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.04em;color:var(--color-text-muted)}button.change-row{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:var(--tap-min);padding:0 var(--space-2);border:0;border-top:var(--border-width) solid var(--color-hairline);background:transparent;color:var(--color-accent);font:inherit;font-weight:var(--font-weight-bold);text-align:left;cursor:pointer}button.change-link{display:block;width:100%;min-height:var(--tap-min);padding:0 var(--space-2);border:0;border-top:var(--border-width) solid var(--color-hairline);background:transparent;color:var(--color-accent);font:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);text-align:center;cursor:pointer}.choice-rows{display:flex;flex-direction:column;gap:var(--space-2)}.choice-row{display:flex;flex-direction:row;align-items:center;gap:var(--space-3);min-height:56px;padding:var(--space-2) var(--space-3);background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);cursor:pointer}.choice-row.selected{border-color:var(--color-accent);border-width:var(--border-width-strong)}.choice-row input[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--space-5);height:var(--space-5);min-height:0;padding:0;flex:none;margin:0;border:var(--border-width-strong) solid var(--color-text-faint);border-radius:var(--radius-round);background:var(--color-surface)}.choice-row input[type=radio]:checked{border-color:var(--color-accent);background:radial-gradient(circle,var(--color-accent) 0 40%,var(--color-surface) 45%)}.choice-row input[type=radio]:focus-visible{outline:var(--focus-ring);outline-offset:var(--space-half)}.choice-title{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.choice-sentence{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted)}.schedule.due-note{font-weight:var(--font-weight-bold);color:var(--color-text)}.suggest-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--color-info-bg);color:var(--color-info-ink)}.suggest-head{display:flex;align-items:flex-start;gap:var(--space-3)}.suggest-head p{margin:0}.suggest-dismiss{flex:none;display:grid;place-items:center;width:var(--tap-min);height:var(--tap-min);margin:calc(var(--space-3) * -1) calc(var(--space-4) * -1) 0 0;border:0;background:transparent;color:inherit;cursor:pointer}.button-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.button-pair button{padding-left:var(--space-2);padding-right:var(--space-2)}.invoice-number-line{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold)}.approve-bar.queue-bar{grid-template-columns:1fr 2fr}.title-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.title-row button{margin-left:auto}.field-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.choice-row.disabled{cursor:default;color:var(--color-text-muted)}.choice-row.disabled input[type=radio]{border-color:var(--color-border)}.save-bar{position:sticky;bottom:calc(var(--tab-height) + var(--border-width) + env(safe-area-inset-bottom));padding:var(--space-3) 0;background:var(--color-bg);z-index:5}.save-bar button{width:100%}.icon{width:var(--icon-size);height:var(--icon-size);flex:none}.visually-hidden,.step-controls:not(:focus-within){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}button.back{align-self:flex-start;display:inline-flex;align-items:center;gap:var(--space-1);min-height:var(--tap-min);min-width:var(--tap-min);border:0;background:transparent;padding:0 var(--space-1) 0 0;color:var(--color-accent);font:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-bold);cursor:pointer}.page-header{position:sticky;top:0;z-index:6;display:grid;grid-template-columns:var(--tap-min) minmax(0,1fr) var(--tap-min);align-items:center;column-gap:var(--space-2);box-sizing:border-box;min-height:calc(var(--header-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--space-2) 0;background:var(--color-bar);color:var(--color-on-bar)}.page-header h1{margin:0;text-align:center;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-header button{display:inline-grid;place-items:center;width:var(--tap-min);height:var(--tap-min);padding:0;border:0;border-radius:var(--radius-round);background:transparent;color:inherit;cursor:pointer}.page-header button:focus-visible{outline:var(--border-width-strong) solid var(--color-on-bar);outline-offset:calc(var(--space-1) * -1)}.page-header .header-spot{width:var(--tap-min);height:var(--tap-min)}.menu.in-header{position:fixed;top:calc(var(--header-height) + env(safe-area-inset-top));right:var(--space-2)}button.more{display:inline-grid;place-items:center;width:var(--tap-min);height:var(--tap-min);flex:none;border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.tabs{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--color-surface);border-top:var(--border-width) solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);z-index:5}.tabs button{flex:1 1 0;min-width:0;min-height:var(--tab-height);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-half);padding:var(--space-1) var(--space-half);border:0;background:transparent;font:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-muted);cursor:pointer}.tabs button[aria-current=page]{color:var(--color-accent);font-weight:var(--font-weight-bold);box-shadow:inset 0 var(--tab-marker) 0 var(--color-accent)}.tab-icon{position:relative;display:inline-flex}.tab-dot{position:absolute;top:var(--tab-dot-top);right:var(--tab-dot-right);width:var(--dot-size);height:var(--dot-size);border-radius:var(--radius-round);background:var(--color-caution);border:var(--border-width-strong) solid var(--color-surface)}.banner{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md)}.banner .icon{margin-top:var(--border-width)}.banner-body{flex:1;min-width:0}.banner.info{background:var(--color-info-bg);color:var(--color-info-ink)}.banner.warning{background:var(--color-warn-bg);color:var(--color-warn-ink)}.banner.success{background:var(--color-success-bg);color:var(--color-success-ink)}.card.sunken{background:var(--color-surface-sunken)}.list-group{list-style:none;margin:0;padding:0;background:var(--color-surface);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.list-row+.list-row{border-top:var(--border-width) solid var(--color-border)}.row-button{width:100%;min-height:var(--row-min);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer}.row-button.static{cursor:default}button.row-button:active{background:var(--color-bg)}.row-button:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-inset)}.row-button:disabled{opacity:.45;cursor:default}.row-icon{display:grid;place-items:center;width:var(--row-icon-size);height:var(--row-icon-size);flex:none;border-radius:var(--radius-round);background:var(--color-accent-soft);color:var(--color-accent)}.row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-half)}.row-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}.row-status{font-size:var(--font-size-sm);color:var(--color-text-muted);overflow-wrap:anywhere}.row-status.warning{color:var(--color-warn-ink);font-weight:var(--font-weight-bold)}.list-row.danger .row-title,.list-row.danger .row-icon{color:var(--color-danger)}.list-row.danger .row-icon{background:transparent}.row-chevron.open .icon{transform:rotate(180deg)}.row-chevron{flex:none;display:inline-flex;color:var(--color-text-faint)}.field-hint{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.field-error{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-danger)}.picker-field{position:relative;display:flex;align-items:center}.picker-input{flex:1;width:100%;min-width:0;min-height:var(--tap-min);padding-right:calc(var(--space-4) + var(--icon-size) + var(--space-3));-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:left}.picker-input::-webkit-calendar-picker-indicator{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.picker-icon{position:absolute;right:var(--space-4);display:inline-flex;color:var(--color-text-muted);pointer-events:none}.title-with-badge{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.title-with-badge .page-title{margin:0}.pill.replacement.with-icon{display:inline-flex;align-items:center;gap:var(--space-1);margin-top:0;font-size:var(--font-size-xs)}.segmented{display:flex;border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface)}.segmented button{flex:1 1 0;min-height:var(--tap-min);border:0;background:transparent;font:inherit;font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text);cursor:pointer}.segmented button+button{border-left:var(--border-width) solid var(--color-border-strong)}.segmented button[aria-pressed=true]{background:var(--color-accent);color:var(--color-on-accent)}.progress-bar{height:var(--bar-height);border-radius:var(--radius-pill);background:var(--color-border);overflow:hidden}.progress-fill{display:block;height:100%;background:var(--color-accent);border-radius:var(--radius-pill)}.section-title{margin:var(--space-2) 0 calc(var(--space-2) * -1);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);color:var(--color-text-muted)}.app-name-text{font-size:var(--font-size-heading);font-weight:var(--font-weight-bold)}.app-name{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.setup-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.env-label{padding:var(--space-half) var(--space-3);border-radius:var(--radius-pill);background:var(--color-caution);color:var(--color-text);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.footnote{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center}.screen-head{display:flex;align-items:center;gap:var(--space-2)}.screen-head h1{flex:1;font-size:var(--font-size-heading)}.preview-address{white-space:pre-line;font-size:var(--font-size-md)}.chips-scroll{position:relative}.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.chips.scroll::-webkit-scrollbar{display:none}.chips.scroll button{flex:none;white-space:nowrap}.chips-scroll:before,.chips-scroll:after{content:"";position:absolute;top:0;bottom:0;width:var(--fade-width);pointer-events:none;opacity:0}.chips-scroll:before{left:0;background:linear-gradient(to left,transparent,var(--color-bg))}.chips-scroll:after{right:0;background:linear-gradient(to right,transparent,var(--color-bg))}.chips-scroll.fade-start:before,.chips-scroll.fade-end:after{opacity:1}button.field-button{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:var(--tap-min);padding:0 var(--space-4);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--font-size-base);text-align:left;cursor:pointer}.total-card{display:flex;flex-direction:column;gap:var(--space-1)}.total-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.total-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-wide);color:var(--color-text-muted)}.total-amount{font-size:var(--font-size-title)}.checklist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.check-item{display:flex;align-items:flex-start;gap:var(--space-3)}.check-item.done .icon{color:var(--color-accent)}.check-item.warn .icon{color:var(--color-warn-ink)}.check-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.preview-line{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0}.fee-sentence{margin:0;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.step-count{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.locked-field{position:relative;display:flex;align-items:center}.locked-field select{width:100%;border-style:dashed;background:var(--color-surface-sunken);color:var(--color-text-muted)}.locked-field .icon{position:absolute;right:var(--space-4);color:var(--color-text-muted);pointer-events:none}.choice-list{margin:0}.choice-list div{display:flex;flex-direction:column;gap:var(--space-half);padding:var(--space-2) 0;border-bottom:var(--border-width) solid var(--color-border)}.choice-list div:last-child{border-bottom:0}.choice-list dt{color:var(--color-text-muted);font-size:var(--font-size-md)}.choice-list dd{margin:0;font-weight:var(--font-weight-medium)}.tag.danger{background:var(--color-danger);color:var(--color-on-primary)}.tag.warning{background:var(--color-warn-bg);color:var(--color-warn-ink)}.tag.info{background:var(--color-info-bg);color:var(--color-info-ink)}.tag.type{background:var(--color-type-pill);color:var(--color-on-primary);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-size:var(--font-size-md)}.tag.success{background:var(--color-success-bg);color:var(--color-success-ink)}button.recent-lesson{display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between;gap:var(--space-3);width:100%;min-height:var(--tap-min);padding:var(--space-3) 0;border:0;border-top:var(--border-width) solid var(--color-border);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.row.tight{gap:var(--space-2);align-items:center}.lesson-main{display:flex;flex-direction:column;gap:var(--space-1);flex:1;min-width:0}.lesson-side{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1);flex:none;max-width:50%;text-align:right}.card-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--tap-min)}.usual-lessons{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm)}.usual-lessons p{margin:0}.usual-lessons .usual-title{font-weight:var(--font-weight-bold)}.usual-lessons ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.usual-lessons .day-line{padding:var(--space-2) 0}.icon-link{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-min);vertical-align:middle;color:var(--color-accent)}.icon-link:focus-visible{outline:var(--focus-ring)}.recorded-head{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);text-align:center;padding-top:var(--space-4)}.recorded-head h2,.recorded-head p{margin:0}.recorded-mark{display:grid;place-items:center;width:var(--ring-size);height:var(--ring-size);border:var(--border-width-strong) solid var(--color-accent);border-radius:var(--radius-round);color:var(--color-accent)}.screen-actions{padding-top:var(--space-3)}.screen-actions>.link,.screen-actions>.muted{text-align:center}.card-legend{margin:0;font-size:var(--font-size-base);font-weight:var(--font-weight-bold)}.card-line{margin:0;font-weight:var(--font-weight-bold)}.session-label{margin:var(--space-3) 0 0;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-text-muted);text-decoration:underline}.field-static{display:flex;align-items:center;min-height:var(--tap-min);padding:0 var(--space-4);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-sunken);color:var(--color-text)}.toggle-row .minutes,.booking-row .minutes{white-space:nowrap}.toggle-row .minutes s{color:var(--color-text-muted)}.booking-state{margin:0;font-weight:var(--font-weight-bold)}.booking-rows{list-style:none;margin:0;padding:0}button.booking-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:var(--tap-min);padding:0;border:0;background:transparent;color:var(--color-accent);font:inherit;font-weight:var(--font-weight-bold);text-align:left;cursor:pointer}button.booking-row .grow{display:flex;align-items:center;gap:var(--space-1)}button.booking-row .minutes{color:var(--color-text);font-weight:var(--font-weight-normal)}.day-list{list-style:none;margin:0;padding:0;position:relative}.day-line{display:flex;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:var(--border-width) solid var(--color-border);background:var(--color-surface)}.day-line:last-child{border-bottom:0}.day-time{display:flex;flex-direction:column;min-width:var(--time-column);font-size:var(--font-size-sm)}.day-to{color:var(--color-text-muted);font-size:var(--font-size-xs)}.day-what{display:flex;flex-direction:column;min-width:0}.day-detail{color:var(--color-text-muted);font-size:var(--font-size-sm)}.day-line.booked,.day-line.booked .day-to,.day-line.booked .day-detail{color:var(--color-accent)}@media (prefers-reduced-motion: reduce){.day-line{transition:none!important}}.today-slot:empty{display:none}.today-slot[data-slot=attention]{margin:calc(var(--space-6) * -1) calc(var(--space-5) * -1) 0}.today-slot[data-slot=attention] button.attention-bar,.today-slot[data-slot=attention] .all-clear{border-radius:var(--radius-square)}.today-slot[data-slot=attention] .all-clear{padding:0 var(--space-5)}.date-row{display:flex;align-items:center;gap:var(--space-2);min-height:var(--tap-min)}.date-row .week-of{flex:1 1 auto;min-width:0;margin:0;white-space:nowrap;font-size:var(--font-size-base);font-weight:var(--font-weight-bold);line-height:var(--line-height-body)}.date-row .week-of span{display:inline}.date-row .week-of span+span:before{content:" "}.date-row .view-select{flex:none;width:var(--view-select-width)}.date-row .view-select .picker-input{min-height:var(--view-select-height);height:var(--view-select-height);padding:0 var(--space-5) 0 var(--space-2);font-size:var(--font-size-xs)}.date-row .view-select .picker-icon{right:var(--space-1)}.date-row .view-select .icon{width:var(--nav-icon-size);height:var(--nav-icon-size)}.date-row .week-controls{display:flex;flex:none}.date-row .week-controls button{display:inline-grid;place-items:center;width:var(--nav-box-size);height:var(--nav-box-size);padding:0;border:0;background:transparent;color:var(--color-text);cursor:pointer}.date-row .week-controls .icon{width:var(--nav-icon-size);height:var(--nav-icon-size)}.date-button{position:relative;flex:1 1 auto;display:inline-flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:var(--space-2);min-height:var(--tap-min);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);cursor:pointer}.date-button input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.date-button input::-webkit-calendar-picker-indicator{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.date-row .step-chevrons{display:none;flex:none}@media (hover: hover) and (pointer: fine){.date-row .step-chevrons{display:flex}}.date-row .step-chevrons button{display:inline-grid;place-items:center;width:var(--nav-box-size);height:var(--nav-box-size);padding:0;border:0;background:transparent;color:var(--color-text);cursor:pointer}.date-row .step-chevrons .icon{width:var(--nav-icon-size);height:var(--nav-icon-size)}.step-controls{display:flex;gap:var(--space-2)}.step-controls button{flex:1 1 0;min-height:var(--tap-min);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-weight:var(--font-weight-semibold);cursor:pointer}.day-title{margin:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.day-block{display:flex;flex-direction:column;gap:var(--space-2)}.card.lesson-card{padding:0}.card.lesson-card.next{border-color:var(--color-accent);box-shadow:inset 0 0 0 var(--border-width) var(--color-accent)}button.lesson-hit{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-2);width:100%;min-height:var(--lesson-row-min);padding:var(--space-3) var(--space-4);border:0;border-radius:inherit;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.lesson-line{display:flex;align-items:flex-start;gap:var(--space-4)}.lesson-time{display:flex;flex-direction:column;flex:none;min-width:var(--time-column);font-weight:var(--font-weight-bold)}.lesson-time .until{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.lesson-main{display:flex;flex-direction:column;flex:1 1 auto;align-items:flex-start;min-width:0}.lesson-side{flex:none}.lesson-place{overflow-wrap:anywhere;color:var(--color-text-muted);font-size:var(--font-size-sm)}.lesson-main .pill.replacement{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;font-size:var(--font-size-pill);background:var(--color-replacement-bg);border-color:var(--color-replacement);color:var(--color-replacement)}.next-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-accent)}.today-caption{display:flex;align-items:center;gap:var(--space-2);margin:0;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-muted)}.quick-create{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.quick-create button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2)}.quick-create button .icon{color:var(--color-accent)}.today-section{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-2)}.money-panel{display:flex;flex-direction:column;gap:var(--space-3);margin:0 calc(var(--space-5) * -1);padding:var(--space-4) var(--space-5);border-style:solid;border-color:var(--color-border-section);border-width:var(--border-width) 0;background:var(--color-surface)}.progress-segments{display:flex;gap:var(--space-1)}.progress-segment{flex:1;height:var(--bar-height);border-radius:var(--radius-pill);background:var(--color-border)}.progress-segment.done{background:var(--color-accent)}.onboarding{width:100%;max-width:var(--screen-max);min-height:100vh;margin:0 auto;display:flex;flex-direction:column;box-sizing:border-box;padding:var(--space-6) var(--space-5) 0;background:var(--color-bg)}.onboarding-body{flex:1;display:flex;flex-direction:column;gap:var(--space-4)}.onboarding-body h1{margin:0;font-size:var(--font-size-heading)}.onboarding-actions{position:sticky;bottom:0;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) 0 calc(var(--space-3) + env(safe-area-inset-bottom));background:var(--color-bg)}.onboarding-pair{display:flex;gap:var(--space-3)}.onboarding-pair>*{flex:1}.onboarding-centre{align-items:center;justify-content:center;text-align:center}.welcome-mark{display:grid;place-items:center;width:var(--welcome-mark);height:var(--welcome-mark);border-radius:var(--radius-xl);background:var(--color-primary);color:var(--color-on-primary)}.done-mark{display:grid;place-items:center;width:var(--welcome-mark);height:var(--welcome-mark);border:var(--border-width-strong) solid var(--color-accent);border-radius:var(--radius-round);color:var(--color-accent)}.install-steps{list-style:none;margin:0;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.install-steps li{display:flex;align-items:flex-start;gap:var(--space-3)}.step-number{display:grid;place-items:center;flex:none;width:var(--step-number-size);height:var(--step-number-size);border-radius:var(--radius-round);background:var(--color-primary);color:var(--color-on-primary);font-weight:var(--font-weight-bold)}button.attention-bar{width:100%;min-height:var(--tap-min);border:0;align-items:center;font:inherit;font-weight:var(--font-weight-bold);text-align:left;cursor:pointer}button.attention-bar .banner-body{flex:1}.all-clear{display:flex;align-items:center;gap:var(--space-2);min-height:var(--tap-min);margin:0;color:var(--color-text-muted);font-size:var(--font-size-sm)}.money-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.money-card{grid-column:1;grid-row:1 / span 2;display:flex;flex-direction:column;border-radius:var(--radius-lg);background:var(--gradient-money-totals);color:var(--color-on-primary);text-shadow:var(--money-text-shadow)}.money-card button.money-tile{flex:1;background:transparent;border-radius:inherit}button.money-tile{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;gap:var(--space-2);min-height:var(--money-tile-min);padding:var(--space-3) var(--space-4);border:0;border-radius:var(--radius-lg);color:var(--color-on-primary);text-shadow:var(--money-text-shadow);font:inherit;text-align:left;cursor:pointer}button.money-tile.paid{grid-column:2;grid-row:1;background:var(--gradient-money-paid)}button.money-tile.unpaid{grid-column:2;grid-row:2;background:var(--gradient-money-unpaid)}.money-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.money-line{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.money-amount{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);overflow-wrap:anywhere}.money-wait{font-size:var(--font-size-md);font-weight:var(--font-weight-medium)}.month-picker{display:flex;flex-direction:column;gap:var(--space-3)}.year-switch{display:flex;align-items:center;justify-content:space-between}.year-switch button{display:inline-grid;place-items:center;width:var(--tap-min);height:var(--tap-min);padding:0;border:0;background:transparent;color:var(--color-text);cursor:pointer}.year-label{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2)}.month-grid .month{min-height:var(--tap-min);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font:inherit;font-weight:var(--font-weight-semibold);cursor:pointer}.month-grid .month[aria-checked=true]{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary)}.month-grid .month.off{border-style:dashed;background:var(--color-surface-sunken);color:var(--color-text-faint);cursor:default}.month-grid .month:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-inset)}.week-pane{display:flex;flex-direction:column;gap:inherit;will-change:transform;touch-action:pan-y}@media (prefers-reduced-motion: reduce){.week-pane{transition:none!important}}.lesson-placeholder{min-height:var(--lesson-row-min);border-radius:var(--radius-md);background:var(--color-surface-sunken);animation:placeholder-pulse var(--placeholder-pulse) var(--motion-ease) infinite alternate}@keyframes placeholder-pulse{0%{opacity:1}to{opacity:.45}}@media (prefers-reduced-motion: reduce){.lesson-placeholder{animation:none}}.label-row{position:relative;display:flex;align-items:center;gap:var(--space-1)}.info-tip{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-min);padding:0;border:0;background:none;color:var(--color-text-muted);cursor:pointer}.tooltip{position:absolute;top:100%;left:0;right:0;z-index:1;margin:0;padding:var(--space-3);border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-menu);font-size:var(--font-size-base)}.type-cards{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.type-card{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;box-sizing:border-box;padding:var(--space-3);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-size:var(--font-size-base)}.type-card button{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap-min);min-height:var(--tap-min);margin:calc(-1 * var(--space-3)) calc(-1 * var(--space-3)) calc(-1 * var(--space-3)) 0;padding:0;border:0;background:none;color:var(--color-danger);cursor:pointer}.type-add>button{flex:none;width:auto;padding-inline:var(--space-5)}.onboarding-progress{margin-bottom:var(--space-4)}.type-add>button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1)}.type-add>button svg{width:var(--nav-icon-size);height:var(--nav-icon-size)}.row-dot{flex:none;width:var(--dot-size);height:var(--dot-size);border-radius:var(--radius-round);background:var(--color-caution)}.pager{display:flex;justify-content:center;align-items:center;gap:var(--space-1);padding:var(--space-2) 0}.pager button{min-width:var(--tap-min);min-height:var(--tap-min);border:0;background:transparent;color:var(--color-accent);font:inherit;font-weight:var(--font-weight-medium);cursor:pointer}.pager button[aria-current=page]{text-decoration:underline;font-weight:var(--font-weight-bold)}.pager button:disabled{color:var(--color-text-disabled);cursor:default}button.profile-tap{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;min-height:var(--lesson-row-min);padding:var(--space-3) 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}button.profile-tap .tap-text{display:flex;flex-direction:column;gap:var(--space-half);flex:1;min-width:0}button.profile-tap .tap-sub{color:var(--color-text-muted);font-size:var(--font-size-md)}button.profile-tap .tap-end{display:flex;align-items:center;gap:var(--space-2);flex:none;color:var(--color-text-muted)}.profile-tap-list{list-style:none;margin:0;padding:0}.profile-tap-list>li+li{border-top:var(--border-width) solid var(--color-border)}.profile-tap-list .bullets{margin:0;padding-left:var(--space-5);color:var(--color-text-muted);font-size:var(--font-size-md)}.profile-tap-list .tap-note{font-weight:var(--font-weight-bold);font-size:var(--font-size-sm)}.grading-table{display:grid;grid-template-columns:1fr auto auto;column-gap:var(--space-4);row-gap:var(--space-2);align-items:center;padding:var(--space-2) 0;font-size:var(--font-size-base)}.grading-table .col-head{color:var(--color-text-muted);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);text-align:right}.grading-table .cell{text-align:right;white-space:nowrap}.grading-table .label{color:var(--color-text-muted)}.grading-table .bold{font-weight:var(--font-weight-bold);color:var(--color-text)}.grading-table .star{color:var(--color-star)}.unpaid-figure{margin:0;padding:var(--space-1) 0 var(--space-3);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.grading-table [role=row]{display:contents}.tap-note{font-weight:var(--font-weight-bold);font-size:var(--font-size-sm)}.star{color:var(--color-star)}button.recent-lesson .tap-end{align-self:center;display:flex;color:var(--color-text-muted)}.amount-col{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1)}.amount-col .amount{font-size:var(--font-size-lg);color:var(--color-text)}.page-title{margin:0;font-size:var(--font-size-title);font-weight:var(--font-weight-bold)}.fee-actions{padding:var(--space-3) 0}.report-button{width:100%;margin:var(--space-3) 0}#replacement-booking{scroll-margin-top:var(--header-height)}.splash{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--color-splash-bg)}.splash img{width:var(--splash-logo-width);max-width:var(--splash-logo-max);height:auto}.login-logo{display:block;width:var(--login-logo-width);max-width:100%;height:auto;margin:var(--login-logo-top) auto 0}@media (max-height: 40em){.login-logo{width:var(--login-logo-width-short);margin-top:var(--space-4)}}.login-title{text-align:center}.auth-icon{display:grid;place-items:center;width:var(--auth-icon-size);height:var(--auth-icon-size);margin:var(--space-2) auto 0;border-radius:var(--radius-round)}.auth-icon .icon{width:var(--auth-icon-glyph);height:var(--auth-icon-glyph)}.auth-icon.accent{background:var(--color-accent-soft);color:var(--color-accent)}.auth-icon.success{background:var(--color-success-bg);color:var(--color-success-ink)}.auth-icon.warning{background:var(--color-warn-bg);color:var(--color-warn-ink)}.auth-lead{margin:0;text-align:center;color:var(--color-text-muted);line-height:var(--line-height-body)}.auth-lead.small{font-size:var(--font-size-sm)}.auth-sent{margin:0;text-align:center;font-size:var(--font-size-sm);color:var(--color-success-ink);font-weight:var(--font-weight-bold)}.login-forgot{align-self:flex-end;margin-top:calc(-1 * var(--space-2))}.password-box{position:relative;display:flex;align-items:center}.password-box input{flex:1;width:100%;min-width:0;padding-right:calc(var(--tap-min) + var(--space-5))}.password-toggle{position:absolute;top:0;right:0;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-1);min-width:var(--tap-min);min-height:var(--tap-min);padding:0 var(--space-3);border:0;background:transparent;color:var(--color-primary);font:inherit;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);cursor:pointer}.password-toggle .icon{width:var(--check-icon-size);height:var(--check-icon-size)}input[aria-invalid=true]{border-width:var(--border-width-strong);border-color:var(--color-danger)}.field-error.with-icon{display:flex;align-items:center;gap:var(--space-1)}.field-error.with-icon .icon{width:var(--check-icon-size);height:var(--check-icon-size)}.shell-main{display:flex;flex-direction:column;flex:1;min-width:0}.today-main,.today-rail{display:contents}.sidebar{display:none}.lesson-panel .panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.lesson-panel .panel-name{font-size:var(--font-size-heading)}.panel-facts{display:flex;flex-direction:column;gap:var(--space-2);margin:0}.panel-facts>div{display:flex;justify-content:space-between;gap:var(--space-3)}.panel-facts dt{color:var(--color-text-muted)}.panel-facts dd{margin:0;font-weight:var(--font-weight-semibold);text-align:right}.panel-actions{display:flex;flex-direction:column;gap:var(--space-2)}.attention-pop{position:absolute;top:100%;left:0;right:0;z-index:7;margin-top:var(--space-2);padding:var(--space-4);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-menu)}.attention-pop-title{margin:0 0 var(--space-2);font-size:var(--font-size-base)}@media (min-width: 1024px){.shell[data-wide=true]{flex-direction:row}.sidebar{display:flex;flex-direction:column;gap:var(--space-3);flex:none;position:sticky;top:0;align-self:flex-start;width:var(--sidebar-width);height:100vh;box-sizing:border-box;padding:var(--space-5) var(--space-3);overflow-y:auto;background:var(--color-surface);border-right:var(--border-width) solid var(--color-border)}.sidebar .app-name{padding:0 var(--space-3)}.side-list{display:flex;flex-direction:column;gap:var(--space-half);margin:0;padding:0;list-style:none}.side-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--tap-min);padding:0 var(--space-3);border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-text);font:inherit;font-weight:var(--font-weight-semibold);text-align:left;cursor:pointer}.side-item:hover{background:var(--color-surface-sunken)}.side-item[aria-current=page]{background:var(--color-accent-soft);color:var(--color-accent);font-weight:var(--font-weight-bold)}.side-heading{margin:var(--space-3) 0 0;padding:0 var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-muted)}.side-footer{margin:auto 0 0;padding:0 var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-muted)}.shell[data-wide=true] .screen{max-width:var(--wide-form-max);padding-bottom:var(--space-6)}.shell[data-wide=true] .screen:has(>.today-wide){max-width:var(--wide-screen-max)}.shell[data-wide=true] .approve-bar,.shell[data-wide=true] .save-bar{bottom:0}.today-wide{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.today-wide.with-rail{grid-template-columns:minmax(0,1fr) var(--rail-width);align-items:start}.today-wide>.today-slot[data-slot=attention]{grid-column:1 / -1;position:relative;margin:0}.today-wide>.today-slot[data-slot=attention] button.attention-bar{border-radius:var(--radius-md)}.today-main,.today-rail{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.today-wide .money-panel{margin:0;border-width:var(--border-width);border-radius:var(--radius-lg)}.today-wide .today-section{margin-top:0}.today-wide.with-rail .card.lesson-card:has(button[aria-pressed=true]){border-color:var(--color-accent);box-shadow:var(--shadow-selected)}.today-wide:not(.with-rail) .week-pane{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:start;gap:var(--space-2)}.today-wide:not(.with-rail) .day-block[data-today=true]{padding:var(--space-1);border-radius:var(--radius-md);box-shadow:var(--shadow-today)}.today-wide:not(.with-rail) .lesson-line{flex-direction:column;gap:var(--space-1)}.today-wide:not(.with-rail) .lesson-time{min-width:0}.today-wide:not(.with-rail) .lesson-side{align-items:flex-start;max-width:none;text-align:left}.today-wide:not(.with-rail) .today-rail{flex-direction:row;align-items:flex-start}.today-wide:not(.with-rail) .today-rail>*{flex:1 1 0;min-width:0}}
