[dir=ltr]{--dir-flip:1}[data-tone=positive]{--tone-fg:var(--positive);--tone-soft:var(--positive-soft);--tone-line:var(--positive-line);--tone-stripes:var(--stripes-positive)}[data-tone=warning]{--tone-fg:var(--warning);--tone-soft:var(--warning-soft);--tone-line:var(--warning-line);--tone-stripes:var(--stripes-warning)}[data-tone=negative]{--tone-fg:var(--negative);--tone-soft:var(--negative-soft);--tone-line:var(--negative-line);--tone-stripes:var(--stripes-negative)}[data-tone=neutral]{--tone-fg:var(--neutral);--tone-soft:var(--neutral-soft);--tone-line:var(--neutral-line);--tone-stripes:var(--stripes-neutral)}[data-tone=accent]{--tone-fg:var(--accent);--tone-soft:var(--accent-soft);--tone-line:var(--accent-line);--tone-stripes:var(--stripes-accent)}[data-tone=plain]{--tone-fg:var(--ink);--tone-soft:var(--fill);--tone-line:var(--line);--tone-stripes:var(--stripes-plain)}.striped{background:var(--tone-stripes)!important}.screen{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;display:flex;position:relative}.screen-wide{max-width:1100px}.screen-main{padding:4px 16px calc(24px + var(--safe-bottom));flex-direction:column;flex-grow:1;gap:14px;display:flex}.screen-main.tight{gap:6px}.header{z-index:5;background:color-mix(in srgb, var(--ground) 88%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);align-items:center;gap:4px;padding:16px 8px 4px;display:flex;position:sticky;top:0}.header-titles{flex-direction:column;flex-grow:1;min-width:0;display:flex}.history-nav{flex-shrink:0;display:inline-flex}.history-nav .icon-btn:disabled{opacity:.35}.header h1{white-space:nowrap;text-overflow:ellipsis;min-height:1.3em;margin:0;font-size:18px;font-weight:700;line-height:1.3;overflow:hidden}.header-title{align-items:center;gap:2px;min-width:0;display:flex}.header-title h1{min-width:0}.header .guide-btn{width:24px;height:22px;color:var(--muted);border-radius:50%}.header .guide-btn:before{content:"";position:absolute;inset:-11px -10px 0}.header-titles:has(h1:empty)>.header-title{position:relative;top:12px}.header .sub{height:24px;line-height:24px;font-size:var(--text-sm);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.header .sub-button{text-align:start;font-size:var(--text-sm);color:var(--muted);background:0 0;border:0;align-items:center;gap:4px;height:24px;padding:0;display:inline-flex}.header .sub-row{align-items:center;gap:6px;min-width:0;height:24px;display:flex}.header .sub-row>.sub{min-width:0}.header .fit-line{position:relative}.fit-probe{top:0;visibility:hidden;pointer-events:none;flex-direction:column;width:max-content;display:flex;position:absolute;inset-inline-start:0}.fit-probe>span{white-space:nowrap}.year-chip{border:1px solid var(--line);background:var(--stripes-neutral);height:22px;color:var(--ink);font-size:var(--text-xs2);border-radius:11px;flex-shrink:0;align-items:center;gap:4px;padding:0 7px;font-weight:700;display:inline-flex}.section{flex-direction:column;gap:8px;display:flex}.section-head{align-items:center;gap:8px;min-height:28px;display:flex}.section-head h2,.section-head h3{font-size:var(--text-sm);color:var(--muted);flex-grow:1;margin:0;font-weight:500}.section-link{font-size:var(--text-sm);color:var(--accent);background:0 0;border:0;padding:4px 0;text-decoration:none}.icon-btn{width:var(--tap);height:var(--tap);border-radius:var(--radius-md);color:var(--ink);touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative}.icon-btn:active{background:var(--fill)}.icon-btn[data-tone]{color:var(--tone-fg)}.icon-btn.soft{background:var(--tone-soft);border-radius:var(--radius)}.icon-btn.soft[data-striped=true]{background:var(--tone-stripes)}.icon-btn.soft:active{filter:brightness(.96)}.icon-btn.small{width:var(--ctl);height:var(--ctl);border-radius:var(--radius-sm)}.icon-btn:disabled{color:var(--disabled)}.icon-btn .badge{top:6px;background:var(--accent);min-width:16px;height:16px;color:var(--on-accent);text-align:center;border-radius:8px;padding:0 4px;font-size:10px;font-weight:700;line-height:16px;position:absolute;inset-inline-end:6px}.hold-tip{z-index:60;background:var(--toast);color:var(--toast-ink);font-size:var(--text-sm);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;padding:6px 12px;position:fixed;transform:translate(-50%)}.btn{border-radius:var(--radius-md);height:44px;font-size:var(--text-md);white-space:nowrap;touch-action:manipulation;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:700;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:disabled{background:var(--disabled)}.btn-dark{background:var(--ink);color:var(--ground)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line);font-weight:500}.btn-ghost{color:var(--accent);background:0 0;font-weight:500}.btn-danger{background:var(--negative);color:#fff}.btn-danger:disabled{background:var(--disabled)}.confirm-btn{color:var(--negative)}.confirm-btn[data-armed]{background:var(--negative);color:#fff}.btn-soft{background:var(--accent-soft);color:var(--accent);font-weight:500}.btn-lg{border-radius:var(--radius-xl);height:56px;font-size:var(--text-lg)}.btn-sm{height:36px;font-size:var(--text-sm);border-radius:var(--radius);padding:0 12px}.btn-block{width:100%}.btn:active:not(:disabled){filter:brightness(.95)}.chip{border-radius:var(--radius);height:32px;font-size:var(--text-sm2);color:var(--tone-fg);background:var(--tone-soft);white-space:nowrap;align-items:center;gap:6px;padding:0 12px;font-weight:700;display:inline-flex}.chip[data-striped=true]{background:var(--tone-stripes)}.chip.sm{border-radius:var(--radius-xs);height:24px;font-size:var(--text-xs2);gap:4px;padding:0 8px}.chip.xs{height:20px;font-size:var(--text-xs);border-radius:5px;gap:3px;padding:0 6px}.pills{scrollbar-width:none;gap:6px;padding:1px;display:flex;overflow-x:auto}.pills::-webkit-scrollbar{display:none}.pill{border:1px solid var(--line);background:var(--surface);height:32px;color:var(--ink);font-size:var(--text-sm);border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:0 12px;text-decoration:none;display:inline-flex}.pill[aria-pressed=true],.pill[aria-current=page]{background:var(--ink);border-color:var(--ink);color:var(--ground)}.pill.soft[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent)}.tabs{scrollbar-width:none;gap:4px;padding:8px 16px;display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{color:var(--muted);font-size:var(--text-sm);background:0 0;border:0;border-radius:999px;flex-shrink:0;align-items:center;gap:5px;padding:6px 10px;text-decoration:none;display:inline-flex}.tab[aria-current=page]{background:var(--ink);color:var(--ground)}.segmented{background:var(--fill);border-radius:var(--radius-md);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:4px;padding:4px;display:grid}.segmented button{height:36px;font-size:var(--text-sm);color:var(--ink);white-space:nowrap;background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:4px;padding-inline:2px;font-weight:700;display:inline-flex}.segmented:has(>:nth-child(5)) button{font-size:var(--text-xs2)}.segmented button[aria-pressed=true]{background:var(--surface);box-shadow:0 0 0 1px var(--line)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-xl);flex-direction:column;gap:12px;padding:16px;display:flex}.card.pad-sm{border-radius:var(--radius-md);gap:8px;padding:12px}.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);flex-direction:column;display:flex;overflow:hidden}.list>*+*{border-top:1px solid var(--line-soft)}.list-row{min-height:48px;color:var(--ink);text-align:start;width:100%;font-size:var(--text-md);background:0 0;border:0;align-items:center;gap:12px;padding:12px;text-decoration:none;display:flex}.list-row .meta{font-size:var(--text-sm);color:var(--muted)}.rows{flex-direction:column;gap:6px;display:flex}.row{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);min-height:52px;color:var(--ink);touch-action:pan-y;-webkit-user-select:none;user-select:none;align-items:center;gap:12px;padding:8px 12px;text-decoration:none;display:flex;position:relative}.row.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:var(--accent-soft)}.list-row.selected{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.select-bar{inset-inline:0;bottom:var(--nav-h,0px);z-index:25;padding:10px 16px calc(12px + var(--safe-bottom));background:var(--surface);border-top:1px solid var(--line);align-items:center;gap:8px;max-width:560px;margin:0 auto;display:flex;position:fixed}.row.link:active{background:var(--fill)}.row-main{flex-direction:column;flex-grow:1;min-width:0;display:flex}.row-title{font-size:var(--text-md);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.row-title.plain{font-weight:400}.row-title.person{white-space:normal;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.35;display:-webkit-box;overflow:hidden}.row-sub{font-size:var(--text-sm);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.row-bar{border-radius:2px;flex-shrink:0;align-self:stretch;width:4px}.swipe-track{border-radius:var(--radius-md);position:relative}.swipe-under{border-radius:var(--radius-md);font-weight:700;font-size:var(--text-md);justify-content:space-between;align-items:center;padding:0 18px;display:flex;position:absolute;inset:0}.avatar{background:var(--avatar);width:32px;height:32px;color:var(--ink);font-size:var(--text-sm);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.avatar.md{width:36px;height:36px;font-size:var(--text-md)}.avatar.lg{width:56px;height:56px;font-size:var(--text-2xl)}.avatar[data-tone]{background:var(--tone-soft);color:var(--tone-fg)}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);flex-direction:column;gap:2px;min-width:0;padding:12px;display:flex}.stat .label{font-size:var(--text-xs2);color:var(--muted)}.stat .value{font-size:var(--text-xl);font-weight:700;line-height:1.3}.stat .value.big{font-size:24px}.stat .note{font-size:var(--text-xs2);color:var(--muted)}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.blocks{align-items:center;gap:3px;display:inline-flex}.blocks>i{background:var(--tone-soft);border-radius:3px;width:14px;height:14px}.blocks[data-striped=true]>i{background:var(--tone-stripes)}.segbar{flex-grow:1;gap:2px;display:flex}.segbar>i{background:var(--tone-line);border-radius:2px;flex-grow:1;height:6px}.segbar>i.on{background:var(--tone-fg)}.segbar.striped-rest>i:not(.on){background:var(--stripes-neutral)}.segbar.tall>i{height:8px}.pace-bar{background:var(--stripes-neutral);border-radius:3px;width:100%;min-width:32px;height:5px;margin-top:5px;display:block;position:relative;overflow:visible}.pace-bar.pace-none{background:var(--stripes-plain)}.pace-bar .pace-fill{background:var(--tone-fg);border-radius:3px;height:100%;transition:width .2s;display:block}.pace-bar.pace-none .pace-fill{background:0 0}.pace-bar .pace-mark{background:var(--ink);opacity:.4;border-radius:1px;width:2px;height:9px;position:absolute;top:-2px}.progress{background:var(--line-soft);border-radius:2px;height:4px;overflow:hidden}.progress>i{background:var(--accent);border-radius:2px;height:100%;display:block}.banner{border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--tone-fg);background:var(--tone-soft);text-align:start;border:0;align-items:center;gap:10px;width:100%;padding:10px 12px;text-decoration:none;display:flex}.banner[data-tone=warning]{color:var(--warning-ink)}.banner b{font-weight:700}.banner.readonly{background:var(--stripes-neutral);color:var(--ink);border:1px solid var(--line);padding:12px 14px}.sheet-backdrop{background:var(--backdrop);z-index:40;flex-direction:column;justify-content:flex-end;animation:.15s ease-out fade;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;padding:12px 16px calc(24px + var(--safe-bottom));flex-direction:column;gap:12px;width:100%;max-width:560px;max-height:88dvh;margin:0 auto;animation:.18s ease-out rise;display:flex;overflow-y:auto}.sheet-handle{background:var(--handle);border-radius:2px;flex-shrink:0;align-self:center;width:40px;height:4px;margin-bottom:4px}.sheet h2{font-size:var(--text-lg);margin:0;font-weight:700}.sheet .sub{font-size:var(--text-sm);color:var(--muted)}.sheet-actions{gap:8px;display:flex}.sheet-actions>.btn:first-child{flex-grow:1}.student-end,.class-end{flex-wrap:wrap;gap:4px 8px;display:flex}.move-out{flex-direction:column;gap:10px;display:flex}@keyframes rise{0%{opacity:.6;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}.popover-layer{z-index:45;position:fixed;inset:0}.popover{z-index:46;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);flex-direction:column;gap:10px;min-width:220px;max-width:min(340px,100vw - 16px);max-height:calc(100dvh - 16px);padding:12px;animation:.12s ease-out fade;display:flex;position:fixed;overflow-y:auto;box-shadow:0 10px 30px #14181c29}.toast-host{inset-inline:0;bottom:calc(24px + var(--safe-bottom));z-index:50;pointer-events:none;justify-content:center;padding:0 16px;display:flex;position:fixed}.toast-host.above-nav{bottom:calc(84px + var(--safe-bottom))}.toast{pointer-events:auto;background:var(--toast);width:100%;max-width:528px;color:var(--toast-ink);border-radius:var(--radius-lg);font-size:var(--text-sm2);touch-action:none;align-items:center;gap:12px;padding:12px 8px 12px 16px;padding-inline:16px 8px;animation:.18s ease-out rise;display:flex}.toast .text{flex-grow:1;min-width:0}.toast .undo{height:32px;color:var(--toast-link);font-size:var(--text-sm2);background:0 0;border:0;align-items:center;gap:6px;padding:0 8px;font-weight:700;display:inline-flex}.toast .close{width:32px;height:32px;color:var(--toast-ink);opacity:.6;background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.field{font-size:var(--text-sm);color:var(--muted);flex-direction:column;gap:6px;display:flex}.input{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);height:48px;font-size:var(--text-md);color:var(--ink);width:100%;min-width:0;padding:0 14px}.input.lg{height:52px;font-size:var(--text-lg)}.input.code{font-family:var(--mono);letter-spacing:2px;text-align:center;direction:ltr;font-weight:700}.input.time-field{text-align:center;width:88px;padding:0 10px}.input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);outline:none}.input[aria-invalid=true]{border-color:var(--negative);box-shadow:0 0 0 1px var(--negative)}textarea.input{resize:vertical;height:auto;min-height:96px;padding:12px 14px;line-height:1.6}.phone-field{direction:ltr;gap:8px;display:flex}.phone-prefix{border-radius:var(--radius-lg);background:var(--fill);height:52px;color:var(--muted);font-size:var(--text-lg);flex-shrink:0;align-items:center;padding:0 14px;display:flex}.check-row{min-height:44px;font-size:var(--text-sm2);color:var(--ink);align-items:center;gap:10px;display:flex}.check-row input{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0}.switch{appearance:none;background:var(--handle);cursor:pointer;border-radius:12px;flex-shrink:0;width:40px;height:24px;margin:0;transition:background .15s;position:relative}.switch:after{content:"";top:3px;background:var(--surface);border-radius:50%;width:18px;height:18px;transition:inset-inline-start .15s;position:absolute;inset-inline-start:3px;box-shadow:0 1px 2px #0003}.switch:checked{background:var(--accent)}.switch:checked:after{inset-inline-start:19px}.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bottom-nav{inset-inline:0;z-index:20;padding:6px 8px calc(8px + var(--safe-bottom));background:var(--surface);border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;position:fixed;bottom:0}.bottom-nav .inner{display:contents}.bottom-nav a{height:48px;color:var(--muted);border-radius:var(--radius-md);justify-content:center;align-items:center;display:flex}.bottom-nav a[aria-current=page]{color:var(--accent)}.bottom-nav a:active{background:var(--fill)}@media (min-width:600px){.bottom-nav{border-inline:1px solid var(--line);border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-width:560px;margin:0 auto}}.logo-lockup{align-items:center;gap:calc(var(--logo) * .3);color:var(--ink);display:inline-flex}.logo-mark{flex-shrink:0;display:block}.logo-text{flex-direction:column;line-height:1.2;display:flex}.logo-text b{font-size:calc(var(--logo) * .6);font-weight:700}.logo-text small{font-size:max(12px, calc(var(--logo) * .34));color:var(--muted);white-space:nowrap;font-weight:500}.spreadsheet{--ss-line:var(--line);border-collapse:separate;border-spacing:0;min-width:100%;font-size:var(--text-sm2);font-variant-numeric:tabular-nums}.spreadsheet th,.spreadsheet td{text-align:center;vertical-align:middle;white-space:nowrap;background:var(--surface);border-inline-end:1px solid var(--ss-line);border-block-end:1px solid var(--ss-line);padding:0}.spreadsheet thead tr:first-child>:first-child,.spreadsheet tbody tr>:first-child,.spreadsheet tfoot tr>:first-child{border-inline-start:1px solid var(--ss-line)}.spreadsheet thead tr:first-child>*{border-block-start:1px solid var(--ss-line)}.spreadsheet thead th{background:var(--fill);color:var(--ink);font-size:var(--text-xs);font-weight:500}.spreadsheet thead th[data-tone]{background:var(--tone-soft);color:var(--tone-fg);font-weight:700}.spreadsheet{background:var(--stripes-neutral)}.spreadsheet td.ss-empty{background:0 0}.spreadsheet td.ss-missing{box-shadow:inset 0 0 0 100vmax color-mix(in srgb, var(--negative) 14%, transparent);background:0 0}.spreadsheet .ss-name{text-align:start}.spreadsheet thead .ss-name{vertical-align:bottom;color:var(--muted);font-size:var(--text-xs2);padding:6px 8px}.spreadsheet{--ss-num:30px}.spreadsheet .ss-num{width:var(--ss-num);min-width:var(--ss-num);max-width:var(--ss-num);box-sizing:border-box;color:var(--muted);font-size:var(--text-xs2);padding:0 2px}.spreadsheet tfoot>tr>*{background:var(--fill);color:var(--muted);font-size:var(--text-sm)}.spreadsheet.sticky thead th{top:var(--row-top,0px);z-index:2;position:sticky}.spreadsheet.sticky .ss-name,.spreadsheet.sticky .ss-num{z-index:1;position:sticky;inset-inline-start:0}.spreadsheet.sticky.numbered .ss-name{inset-inline-start:var(--ss-num)}.spreadsheet.sticky thead .ss-name,.spreadsheet.sticky thead .ss-num{z-index:3}.spreadsheet.sticky tbody tr{scroll-margin-top:var(--head-h,0px)}@media print{.spreadsheet.sticky thead th,.spreadsheet.sticky .ss-name,.spreadsheet.sticky .ss-num{position:static}.spreadsheet.sticky thead .col-head{position:relative;top:auto}}.save-login{flex-wrap:wrap;gap:6px;display:flex}.save-login .input{text-align:center;flex:120px;min-width:0}.time-range{direction:rtl;unicode-bidi:isolate;align-items:center;gap:3px;display:inline-flex}.time-range small{margin-inline-start:2px;font-size:.85em}.time-range i{opacity:.7;font-style:normal}.search-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);height:44px;color:var(--muted);align-items:center;gap:8px;padding:0 12px;display:flex}.search-box input{min-width:0;height:40px;font-size:var(--text-md);color:var(--ink);background:0 0;border:0;outline:none;flex-grow:1}.search-box input::-webkit-search-cancel-button{display:none}.search-box button{color:var(--muted);background:0 0;border:0;width:32px;height:32px}.empty{color:var(--muted);text-align:center;font-size:var(--text-sm2);flex-direction:column;align-items:center;gap:10px;padding:32px 16px;display:flex}.empty .glyph{border-radius:var(--radius-xl);background:var(--stripes-neutral);width:56px;height:56px;color:var(--muted);justify-content:center;align-items:center;display:flex}.danger{border:1px solid var(--negative-line);border-radius:var(--radius-md);flex-direction:column;display:flex;overflow:hidden}.danger-head{background:var(--stripes-negative);color:var(--negative);font-size:var(--text-sm2);align-items:center;gap:8px;padding:10px 12px;font-weight:700;display:flex}.danger-body{background:var(--surface);flex-direction:column;gap:8px;padding:12px;display:flex}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.num{font-variant-numeric:tabular-nums}.accent{color:var(--accent)}.pos{color:var(--positive)}.neg{color:var(--negative)}.grow{flex-grow:1}.hidden{display:none!important}:root{--rail:76px}.screen-main{container:main/inline-size}.shell{grid-template-columns:var(--rail) minmax(0, 1fr);min-height:100dvh;display:grid}.shell-main{min-width:0}.shell-main .screen{max-width:none}.nav-rail{z-index:20;height:100dvh;padding:16px 0 calc(16px + var(--safe-bottom));background:var(--surface);border-inline-end:1px solid var(--line);flex-direction:column;align-items:center;gap:6px;display:flex;position:sticky;top:0}.nav-rail a{border-radius:var(--radius-xl);width:52px;height:52px;color:var(--muted);justify-content:center;align-items:center;display:flex}.nav-rail a[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.nav-rail a:active{background:var(--fill)}.rail-logo{margin-bottom:10px;display:flex}.rail-gap{background:var(--line);width:28px;height:1px;margin:6px 0}.nav-rail .grow{flex-grow:1}.split{grid-template-columns:clamp(280px,28%,340px) minmax(0,1fr);height:100dvh;transition:grid-template-columns .2s;display:grid}.split[data-pane=closed]{grid-template-columns:0 minmax(0,1fr)}.split[data-pane=closed] .split-list{visibility:hidden;border:0}.split-list{overscroll-behavior:contain;border-inline-end:1px solid var(--line);overflow-y:auto}.split-detail{overscroll-behavior:contain;min-width:0;overflow-y:auto;transform:translateZ(0)}.split-list .screen,.split-detail .screen{max-width:none;min-height:100%}.split-detail>.empty{justify-content:center;min-height:100%}.list-row.current{background:var(--accent-soft)}.class-pick{gap:6px;padding-inline-end:4px}.grade-pill{justify-content:center;min-width:40px}.class-name-preview{min-height:40px;font-size:var(--text-xl);align-items:center;gap:10px;display:flex}.class-row{gap:2px;padding-inline-end:4px}.rows-2{flex-direction:column;gap:6px;display:flex}@container main (width>=520px){.stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@container main (width>=640px){.rows-2:not(.roomy){grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}@container main (width>=840px){.rows-2.roomy{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}}@container main (width>=1000px){.rows-2:not(.roomy){grid-template-columns:repeat(3,minmax(0,1fr))}}.board,.board-main,.board-cards,.board-side{flex-direction:column;gap:12px;min-width:0;display:flex}@container main (width>=600px){.board{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start;display:grid}}@container main (width>=900px){.board{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.board-cards{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;display:grid}}body{--nav-h:0px}body[data-nav="1"]{--nav-h:calc(62px + var(--safe-bottom))}body[data-nav="1"] .screen-main{padding-bottom:calc(24px + var(--nav-h))}body[data-nav="1"] .toast-host{bottom:calc(12px + var(--nav-h))}@media (min-width:760px){.bottom-nav{display:none}body[data-nav="1"]{--nav-h:0px}.toast-host{padding-inline-start:calc(var(--rail) + 16px)}.sheet-backdrop{justify-content:center;align-items:center;padding:24px}.sheet{border-radius:var(--radius-sheet);max-width:520px;max-height:86dvh;padding-bottom:20px}.sheet-handle{display:none}}.status-btn{border-radius:var(--radius);min-width:80px;height:38px;font-size:var(--text-sm);color:var(--tone-fg);background:var(--tone-soft);touch-action:manipulation;-webkit-user-select:none;user-select:none;border:0;flex-shrink:0;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-weight:700;display:inline-flex}.status-btn[data-striped=true]{background:var(--tone-stripes)}.status-btn:active{transform:scale(.97)}.card-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;display:flex}.card-head .card-title{margin:0}.legend{font-size:var(--text-xs2);color:var(--muted);flex-wrap:wrap;gap:4px 12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-inline-end:4px;display:inline-block}.absences{font-size:var(--text-xs2);color:var(--muted);align-items:center;gap:6px;display:inline-flex}.letter-strip{z-index:20;background:color-mix(in srgb, var(--surface) 88%, transparent);box-shadow:0 0 0 1px var(--line-soft);touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;border-radius:13px;flex-direction:column;justify-content:space-around;align-items:stretch;padding:4px 0;display:flex;position:fixed}.letter-strip span{min-height:0;color:var(--muted);flex:1;justify-content:center;align-items:center;font-weight:700;line-height:1;display:flex}.letter-strip span[data-on]{background:var(--accent);color:var(--on-accent);border-radius:8px;margin:0 3px}.letter-next{pointer-events:none;background:var(--surface);box-shadow:0 0 0 1px var(--line), 0 6px 18px #00000014;padding:0;animation:.12s ease-out letter-next-in}@keyframes letter-next-in{0%{opacity:0}}.letter-bubble{z-index:21;border-radius:var(--radius-xl);white-space:nowrap;background:var(--toast);min-width:72px;max-width:calc(100vw - 32px);height:72px;color:var(--toast-ink);pointer-events:none;justify-content:center;align-items:center;padding:0 18px;font-size:36px;font-weight:700;transition:opacity .4s;animation:.15s ease-out letter-in;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.letter-bubble small{top:-8px;background:var(--surface);min-width:26px;height:26px;color:var(--ink);box-shadow:0 0 0 1px var(--line);text-align:center;border-radius:13px;padding:0 6px;font-size:13px;line-height:26px;position:absolute;inset-inline-start:-8px}.letter-bubble[data-fading=true]{opacity:0}@keyframes letter-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.9)}}.narrow-chip{border:1px solid var(--line);background:var(--surface);height:34px;color:var(--ink);font:inherit;font-size:var(--text-md);white-space:nowrap;touch-action:manipulation;border-radius:999px;flex-shrink:0;align-self:flex-start;align-items:center;gap:8px;padding:0 8px 0 12px;font-weight:700;display:inline-flex}.narrow-chip small{background:var(--fill);min-width:22px;height:22px;color:var(--muted);font-size:var(--text-xs2);text-align:center;border-radius:11px;padding:0 6px;line-height:22px}.narrow-chip svg{color:var(--muted)}.screen>.narrow-chip{margin:4px 16px 0}.reason-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.reason-btn{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);min-height:48px;color:var(--ink);font-size:var(--text-sm2);text-align:start;align-items:center;gap:8px;padding:6px 12px;display:flex}.reason-btn:active{background:var(--fill)}.reason-btn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.guide-lead{color:var(--muted);font-size:var(--text-sm2);margin:-4px 0 4px}.guide-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.guide-list li{align-items:center;gap:14px;display:flex}.guide-art{border-radius:var(--radius-md);background:var(--fill);direction:ltr;flex-shrink:0;justify-content:center;align-items:center;width:92px;height:52px;display:flex;position:relative;overflow:hidden}.guide-text{font-size:var(--text-sm2);line-height:1.6}.guide-list li:not([data-live=true]) .guide-art *,.guide-list li:not([data-live=true]) .guide-art :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.guide-art *,.guide-art :after{animation-duration:var(--round)!important}}.guide-list .guide-art{cursor:pointer}.guide-foot{font-size:var(--text-xs2);color:var(--muted);align-self:center}.guide-hand{color:var(--accent);display:flex}.guide-letters{--round:6s;position:absolute;inset:0}.guide-letters-rows{flex-direction:column;align-items:flex-end;gap:6px;display:flex;position:absolute;top:7px;left:10px;right:28px}.guide-letters-rows i{background:var(--line);height:4px;animation:guide-letters-fold var(--round) ease-in-out infinite;border-radius:2px}.guide-letters-rows i[data-left="2"]{animation:none}.guide-letters-strip{background:var(--fill);border-radius:7px;flex-direction:column;justify-content:space-around;align-items:center;width:14px;display:flex;position:absolute;top:4px;bottom:4px;right:6px}.guide-letters-strip b{width:12px;height:12px;color:var(--muted);border-radius:4px;justify-content:center;align-items:center;font-size:8px;line-height:1;display:flex}.guide-letters-strip b[data-on]{animation:guide-letters-on var(--round) linear infinite}.guide-letters-finger{animation:guide-letters var(--round) ease-in-out infinite;display:flex;position:absolute;top:26px;right:-2px}@keyframes guide-letters{0%,8%{opacity:0;transform:translate(-14px,14px)}14%,18%{opacity:1;transform:translate(0)}21%{opacity:1;transform:translate(0)scale(.9)}25%,40%{opacity:1;transform:translate(0)}48%,to{opacity:0;transform:translate(-14px,14px)}}@keyframes guide-letters-on{0%,20%{color:var(--muted);background:0 0}21%,86%{background:var(--accent);color:var(--on-accent)}88%,to{color:var(--muted);background:0 0}}@keyframes guide-letters-fold{0%,22%{opacity:1;height:4px;margin-bottom:0}27%,86%{opacity:0;height:0;margin-bottom:-6px}92%,to{opacity:1;height:4px;margin-bottom:0}}.guide-hold{--round:3s;display:inline-flex;position:relative}.guide-hold:after{content:"";border:2px solid var(--accent);opacity:0;animation:guide-hold var(--round) ease-out infinite;border-radius:50%;position:absolute;inset:-5px}@keyframes guide-hold{0%,10%{opacity:0;transform:scale(.4)}18%{opacity:.9}62%{opacity:0;transform:scale(1)}to{opacity:0;transform:scale(1)}}.guide-swipe{--round:6s;position:absolute;inset:0}.guide-swipe>b{font-size:var(--text-sm);color:var(--tone-fg);position:absolute;top:17px}.guide-swipe-plus{left:24px}.guide-swipe-minus{right:24px}.guide-swipe-row{animation:guide-swipe var(--round) ease-in-out infinite;position:absolute;top:12px;left:22px}.guide-swipe-row .guide-hand{position:absolute;top:15px;left:17px}.guide-mini-row{box-sizing:border-box;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);align-items:center;gap:5px;width:48px;height:28px;padding:0 6px;display:flex}.guide-mini-row i:first-child{background:var(--fill);border-radius:50%;width:12px;height:12px}.guide-mini-row i:last-child{background:var(--line);border-radius:3px;flex-grow:1;height:5px}@keyframes guide-swipe{0%,8%{transform:translate(0)}28%,40%{transform:translate(18px)}50%,56%{transform:translate(0)}76%,88%{transform:translate(-18px)}98%,to{transform:translate(0)}}.guide-cycle{color:var(--faint);direction:rtl;align-items:center;gap:2px;display:flex}.guide-cycle-step{align-items:center;gap:2px;display:inline-flex}.guide-cycle i{background:var(--tone-soft);width:20px;height:20px;color:var(--tone-fg);border-radius:6px;justify-content:center;align-items:center;display:flex}.guide-icon{color:var(--ink);direction:rtl;align-items:center;gap:4px;display:inline-flex}.guide-icon i{border-radius:var(--radius-sm);background:var(--tone-soft);width:30px;height:30px;color:var(--tone-fg);justify-content:center;align-items:center;display:flex}.guide-word{background:var(--surface);border:1px solid var(--line);font-size:var(--text-sm);color:var(--tone-fg,var(--ink));white-space:nowrap;border-radius:7px;padding:3px 7px}.shared-names{background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-md);gap:10px;margin-bottom:8px}.shared-names .grow{flex-direction:column;gap:2px;display:flex}.list-row .two-line{flex-direction:column;gap:2px;min-width:0;display:flex}.school-list-note{border:1px dashed var(--accent-line);border-radius:var(--radius-md);background:var(--fill-2);font-size:var(--text-sm2);flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:8px;padding:12px;display:flex}.school-list-note p{color:var(--ink-soft);margin:0;line-height:1.6}.school-list-note .school-list-or{color:var(--muted)}.school-list-said{color:var(--accent);margin:0}.school-list-said[data-tone]{color:var(--tone-fg)}.school-list-out{font-size:var(--text-sm2);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.school-list-out[hidden]{display:none}.list-guide{border-radius:var(--radius-md);background:#000;width:100%;max-height:70dvh;display:block}.list-actions{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.school-list-guide{padding-block:4px}.listed-moves{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.listed-moves .list{align-self:stretch;max-height:220px;overflow-y:auto}
