:root{--primitive-color-ink-50: #f1eefa;--primitive-color-ink-100: #e4def5;--primitive-color-ink-600: #4a3a8f;--primitive-color-ink-700: #33246e;--primitive-color-ink-800: #261a55;--primitive-color-paper-white: #ffffff;--primitive-color-paper-sunken: #f5f4fa;--primitive-color-paper-rule: #e1e4f3;--primitive-color-paper-rule-strong: #c6cae7;--primitive-color-pen-red: #c0261c;--primitive-color-pen-red-dark: #9b1d15;--primitive-color-pen-red-wash: #fcecea;--primitive-color-leaf-50: #e7f3ec;--primitive-color-leaf-700: #1c6b44;--primitive-color-amber-50: #fbf1d9;--primitive-color-amber-400: #c9902a;--primitive-color-amber-700: #8a5300;--primitive-color-sky-300: #8fbdf0;--primitive-color-sky-600: #2f6fb0;--primitive-color-text-strong: #1e1a33;--primitive-color-text-muted: #5d5875;--primitive-color-board-600: #46584f;--primitive-color-board-700: #34443c;--primitive-color-board-800: #26332d;--primitive-color-board-850: #202c26;--primitive-color-board-900: #1d2823;--primitive-color-board-950: #161f1b;--primitive-color-chalk-white: #ecede6;--primitive-color-chalk-muted: #b2b9ae;--primitive-color-chalk-yellow: #e9d784;--primitive-color-chalk-orange: #f2b872;--primitive-color-chalk-red: #f4998a;--primitive-color-chalk-green: #9fd8b4;--primitive-color-chalk-red-wash: #3a2622;--primitive-color-chalk-green-wash: #1f3a2b;--primitive-color-chalk-orange-wash: #3b2f1f;--primitive-color-chalk-grid: rgba(236, 237, 230, .05);--primitive-color-chalk-grid-strong: rgba(236, 237, 230, .08);--primitive-font-display: "Literata", Georgia, "Times New Roman", serif;--primitive-font-ui: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--primitive-size-xs: .8125rem;--primitive-size-sm: .875rem;--primitive-size-base: 1rem;--primitive-size-lg: 1.125rem;--primitive-size-xl: 1.375rem;--primitive-size-2xl: 1.75rem;--primitive-size-3xl: 2.25rem;--primitive-size-4xl: 3rem;--primitive-space-1: .25rem;--primitive-space-2: .5rem;--primitive-space-3: .75rem;--primitive-space-4: 1rem;--primitive-space-5: 1.25rem;--primitive-space-6: 1.5rem;--primitive-space-8: 2rem;--primitive-space-10: 2.5rem;--primitive-space-12: 3rem;--primitive-space-16: 4rem;--primitive-radius-sm: 3px;--primitive-radius-md: 6px;--primitive-radius-lg: 10px;--primitive-duration-fast: .12s;--primitive-duration-normal: .2s;--primitive-duration-slow: .32s}:root{--color-bg: #ffffff;--color-surface: #ffffff;--color-sunken: #f5f4fa;--color-text: #1e1a33;--color-muted: #5d5875;--color-primary: #33246e;--color-primary-hover: #261a55;--color-primary-wash: #f1eefa;--color-on-primary: #ffffff;--color-attention: #c0261c;--color-attention-hover: #9b1d15;--color-attention-wash: #fcecea;--color-success: #1c6b44;--color-success-wash: #e7f3ec;--color-warning: #8a5300;--color-warning-mark: #c9902a;--color-warning-wash: #fbf1d9;--color-digital: #2f6fb0;--color-rule: #e1e4f3;--color-rule-strong: #c6cae7;--color-margin: #c0261c;--color-focus: #2f6fb0;--color-grid: #e1e4f3;--color-grid-strong: #c6cae7;--shadow-raise: 0 1px 0 rgb(51 36 110 / .06), 0 10px 30px -12px rgb(51 36 110 / .28)}:root{--button-height: 2.5rem;--button-height-touch: 2.75rem;--button-radius: var(--primitive-radius-sm);--button-primary-bg: var(--color-primary);--button-primary-bg-hover: var(--color-primary-hover);--button-primary-fg: var(--color-on-primary);--button-danger-bg: var(--color-attention);--button-danger-bg-hover: var(--color-attention-hover);--input-height: 2.5rem;--input-radius: var(--primitive-radius-sm);--input-border: var(--color-rule-strong);--input-bg: var(--color-surface);--rail-width: 13.5rem;--rail-bg: var(--color-surface);--panel-radius: var(--primitive-radius-md);--panel-padding: var(--primitive-space-6);--z-sticky: 10;--z-drawer: 40;--z-modal: 50;--z-toast: 60}.dark{--color-bg: #1d2823;--color-surface: #202c26;--color-sunken: #26332d;--color-text: #ecede6;--color-muted: #b2b9ae;--color-primary: #e9d784;--color-primary-hover: #f3e3a0;--color-primary-wash: #34443c;--color-on-primary: #161f1b;--color-attention: #f4998a;--color-attention-hover: #f8b3a7;--color-attention-wash: #3a2622;--color-success: #9fd8b4;--color-success-wash: #1f3a2b;--color-warning: #f2b872;--color-warning-mark: #f2b872;--color-warning-wash: #3b2f1f;--color-digital: #8fbdf0;--color-rule: #34443c;--color-rule-strong: #46584f;--color-margin: #f4998a;--color-focus: #8fbdf0;--color-grid: rgba(236, 237, 230, .05);--color-grid-strong: rgba(236, 237, 230, .08);--shadow-raise: 0 1px 0 rgb(0 0 0 / .3), 0 14px 36px -10px rgb(0 0 0 / .55)}:root{color-scheme:light;--ease-out: cubic-bezier(.2, .7, .2, 1)}:root.dark{color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100dvh;background-color:var(--color-bg);color:var(--color-text);font:400 var(--primitive-size-base) / 1.6 var(--primitive-font-ui);-webkit-tap-highlight-color:transparent;touch-action:manipulation}h1,h2,h3,h4{font-family:var(--primitive-font-display);color:var(--color-primary);line-height:1.2;margin:0;text-wrap:balance}h1{font-size:clamp(var(--primitive-size-2xl),1.4rem + 1.8vw,var(--primitive-size-3xl));font-weight:700;letter-spacing:-.015em}h2{font-size:var(--primitive-size-xl);font-weight:600}h3{font-size:var(--primitive-size-lg);font-weight:600}p{margin:0 0 var(--primitive-space-2);text-wrap:pretty}a{color:var(--color-primary);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}small{font-size:var(--primitive-size-xs)}strong{font-weight:600}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px;border-radius:2px}::selection{background:var(--color-primary-wash)}.muted{color:var(--color-muted)}.num{font-variant-numeric:tabular-nums}.code{font-variant-numeric:tabular-nums;font-weight:600;letter-spacing:.01em;white-space:nowrap}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--primitive-space-4);top:-100px;z-index:var(--z-toast);background:var(--color-primary);color:var(--color-on-primary);padding:var(--primitive-space-2) var(--primitive-space-4);border-radius:var(--primitive-radius-sm);font-weight:600;text-decoration:none}.skip-link:focus{top:var(--primitive-space-3)}.btn{--_bg: transparent;--_fg: var(--color-primary);--_bd: var(--color-rule-strong);--_bg-hover: var(--color-primary-wash);display:inline-flex;align-items:center;justify-content:center;gap:var(--primitive-space-2);min-height:var(--button-height);padding:0 var(--primitive-space-4);font:600 var(--primitive-size-sm) / 1.2 var(--primitive-font-ui);color:var(--_fg);background:var(--_bg);border:1px solid var(--_bd);border-radius:var(--button-radius);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background-color var(--primitive-duration-fast) ease,border-color var(--primitive-duration-fast) ease,transform var(--primitive-duration-fast) ease}.btn:hover{background:var(--_bg-hover);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{--_bg: var(--button-primary-bg);--_fg: var(--button-primary-fg);--_bd: var(--button-primary-bg);--_bg-hover: var(--button-primary-bg-hover)}.btn-danger{--_bg: var(--button-danger-bg);--_fg: var(--color-on-primary);--_bd: var(--button-danger-bg);--_bg-hover: var(--button-danger-bg-hover)}:root.dark .btn-danger{--_fg: var(--primitive-color-board-950)}.btn-quiet{--_bd: transparent}.btn-sm{min-height:2rem;padding:0 var(--primitive-space-3);font-size:var(--primitive-size-xs)}.btn-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--primitive-space-2)}.field{display:flex;flex-direction:column;gap:var(--primitive-space-1);min-width:0}.field-label{font-weight:600;font-size:var(--primitive-size-sm);color:var(--color-text)}.field-hint{font-size:var(--primitive-size-xs);color:var(--color-muted)}.field-error{font-size:var(--primitive-size-xs);color:var(--color-attention);font-weight:500}.input,.select,.textarea{font:400 var(--primitive-size-base) var(--primitive-font-ui);color:var(--color-text);background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--input-radius);min-height:var(--input-height);padding:var(--primitive-space-2) var(--primitive-space-3);width:100%}.textarea{min-height:6rem;resize:vertical;line-height:1.5}.select{padding-right:var(--primitive-space-8)}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--color-primary);outline-offset:0;border-color:var(--color-primary)}.input[aria-invalid=true]{border-color:var(--color-attention)}.check{display:inline-flex;align-items:flex-start;gap:var(--primitive-space-2);cursor:pointer;min-height:2.75rem;padding:var(--primitive-space-2) 0}.check input{width:1.25rem;height:1.25rem;margin:.15rem 0 0;accent-color:var(--color-primary);cursor:pointer;flex:none}.section{margin-block:var(--primitive-space-10)}.section:first-child{margin-top:0}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--primitive-space-3);flex-wrap:wrap;padding-bottom:var(--primitive-space-2);margin-bottom:var(--primitive-space-4);border-bottom:1px solid var(--color-rule)}.section-head p{margin:var(--primitive-space-1) 0 0;color:var(--color-muted);font-size:var(--primitive-size-sm);max-width:70ch}.sheet{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--panel-radius)}.sheet-pad{padding:var(--panel-padding)}.page-header{margin-bottom:var(--primitive-space-8);max-width:72ch}.page-header p{margin-top:var(--primitive-space-3);color:var(--color-muted);font-size:var(--primitive-size-lg)}.page-header .btn-row{margin-top:var(--primitive-space-4)}.table-wrap{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--panel-radius)}.table{width:100%;border-collapse:collapse;font-size:var(--primitive-size-sm)}.table th,.table td{text-align:left;padding:var(--primitive-space-3);border-bottom:1px solid var(--color-rule);vertical-align:middle}.table thead th{font-weight:600;font-size:var(--primitive-size-xs);color:var(--color-muted);background:var(--color-sunken);white-space:nowrap}.table tbody tr:last-child>*{border-bottom:0}.table tbody tr:hover>*{background:color-mix(in srgb,var(--color-primary-wash) 45%,transparent)}.table .center{text-align:center}.mark{--_c: var(--color-muted);display:inline-flex;align-items:center;gap:.4em;font-size:var(--primitive-size-sm);font-weight:600;color:var(--_c);white-space:nowrap}.mark:before{content:attr(data-glyph);display:inline-grid;place-items:center;width:1.3em;height:1.3em;border-radius:50%;border:1.5px solid currentColor;font-size:.78em;line-height:1}.mark-good{--_c: var(--color-success)}.mark-warn{--_c: var(--color-warning)}.mark-bad{--_c: var(--color-attention)}.mark-digital{--_c: var(--color-digital)}.pen-circle{display:inline-block;padding:.05em .55em;color:var(--color-attention);border:2px solid var(--color-attention);border-radius:52% 46% 55% 43%/58% 50% 52% 46%;transform:rotate(-3deg)}.tabs{display:inline-flex;flex-wrap:wrap;gap:var(--primitive-space-1);padding:3px;background:var(--color-sunken);border-radius:var(--primitive-radius-md)}.tabs a,.tabs button{font:500 var(--primitive-size-sm) var(--primitive-font-ui);color:var(--color-muted);background:transparent;border:0;min-height:2.25rem;padding:0 var(--primitive-space-3);border-radius:var(--primitive-radius-sm);cursor:pointer;display:inline-flex;align-items:center;text-decoration:none}.tabs a:hover,.tabs button:hover{color:var(--color-text)}.tabs [aria-current=page],.tabs [aria-selected=true]{background:var(--color-surface);color:var(--color-primary);font-weight:600;box-shadow:0 1px 0 var(--color-rule-strong)}.note{border-left:3px solid var(--color-margin);padding:var(--primitive-space-2) var(--primitive-space-4);background:var(--color-surface)}.note-good{border-left-color:var(--color-success)}.note-warn{border-left-color:var(--color-warning)}.empty{padding:var(--primitive-space-8) var(--primitive-space-6);text-align:left;border:1px dashed var(--color-rule-strong);border-radius:var(--panel-radius);background:var(--color-surface)}.empty-title{font-size:var(--primitive-size-lg);margin-bottom:var(--primitive-space-2)}.empty p{color:var(--color-muted);max-width:60ch}.dialog{border:1px solid var(--color-rule-strong);border-radius:var(--primitive-radius-lg);padding:0;background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-raise);width:min(30rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);overscroll-behavior:contain}.dialog::backdrop{background:#161f1b80}.dialog-body{padding:var(--primitive-space-6)}.dialog-body h2{margin-bottom:var(--primitive-space-3)}.dialog-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:var(--primitive-space-2);margin-top:var(--primitive-space-6)}.dialog[open]{animation:dialog-in var(--primitive-duration-normal) var(--ease-out)}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px)}}.toast-region{position:fixed;z-index:var(--z-toast);left:50%;bottom:var(--primitive-space-4);transform:translate(-50%);display:grid;gap:var(--primitive-space-2);width:min(28rem,calc(100vw - 2rem));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--primitive-space-3);justify-content:space-between;background:var(--color-text);color:var(--color-bg);border-radius:var(--primitive-radius-md);padding:var(--primitive-space-3) var(--primitive-space-4);box-shadow:var(--shadow-raise);font-size:var(--primitive-size-sm);animation:dialog-in var(--primitive-duration-normal) var(--ease-out)}.toast .btn{--_fg: var(--color-bg);--_bd: transparent;--_bg-hover: rgb(127 127 127 / .25);text-decoration:underline}.tag{display:inline-block;padding:.1em .5em;border-radius:var(--primitive-radius-sm);background:var(--color-sunken);color:var(--color-text);font-size:var(--primitive-size-xs);font-weight:600;text-decoration:none}a.tag:hover{background:var(--color-primary-wash)}::view-transition-old(main),::view-transition-new(main){animation-duration:var(--primitive-duration-normal);animation-timing-function:var(--ease-out)}::view-transition-old(main){animation-name:vt-out}::view-transition-new(main){animation-name:vt-in}@keyframes vt-out{to{opacity:0;transform:translateY(-4px)}}@keyframes vt-in{0%{opacity:0;transform:translateY(6px)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after,::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{display:grid;grid-template-columns:var(--rail-width) minmax(0,1fr);min-height:100dvh}.rail{position:sticky;top:0;height:100dvh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--primitive-space-6);padding:var(--primitive-space-6) var(--primitive-space-4) var(--primitive-space-5);background:var(--rail-bg);border-right:2px solid var(--color-margin)}.brand{display:inline-flex;align-items:center;gap:var(--primitive-space-2);text-decoration:none;color:var(--color-primary)}.brand:hover{text-decoration:none}.brand-logo{width:2rem;height:2rem;flex:none;fill:var(--color-primary-wash);stroke:var(--color-primary);stroke-width:1.6;stroke-linejoin:round}.brand-bridge{fill:none;stroke:var(--color-attention);stroke-width:2.2;stroke-linecap:round}.brand-name{font:700 var(--primitive-size-lg) / 1.1 var(--primitive-font-display);white-space:nowrap}.nav-group+.nav-group{margin-top:var(--primitive-space-4)}.nav-label{font-size:var(--primitive-size-xs);color:var(--color-muted);font-weight:500;padding:0 var(--primitive-space-3);margin-bottom:var(--primitive-space-1)}.rail ul,.drawer ul{list-style:none;margin:0;padding:0}.rail nav a,.drawer nav a{display:flex;align-items:center;min-height:2.5rem;padding:0 var(--primitive-space-3);color:var(--color-text);text-decoration:none;border-radius:var(--primitive-radius-sm);font-size:var(--primitive-size-sm)}.rail nav a:hover,.drawer nav a:hover{background:var(--color-primary-wash)}.rail nav a[aria-current=page],.drawer nav a[aria-current=page]{color:var(--color-primary);font-weight:600;background:var(--color-primary-wash);box-shadow:inset 3px 0 0 var(--color-primary)}.rail-footer{margin-top:auto;display:grid;gap:var(--primitive-space-2);padding-top:var(--primitive-space-4);border-top:1px solid var(--color-rule)}.rail-footer .select{min-height:2.25rem;font-size:var(--primitive-size-sm)}.topbar{display:none}.drawer{margin:0;height:100dvh;max-height:100dvh;width:min(20rem,88vw);border:0;padding:var(--primitive-space-4);background:var(--color-surface);color:var(--color-text);border-right:2px solid var(--color-margin);overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--primitive-space-6)}.drawer:not([open]){display:none}.drawer::backdrop{background:#161f1b73}.drawer[open]{animation:drawer-in var(--primitive-duration-normal) var(--ease-out)}@keyframes drawer-in{0%{transform:translate(-100%)}}.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:var(--primitive-space-2)}.workspace{min-width:0;display:flex;flex-direction:column}.main{width:100%;max-width:72rem;padding:var(--primitive-space-10) var(--primitive-space-10) var(--primitive-space-16);flex:1;view-transition-name:main}.main:focus{outline:none}.banner{background:var(--color-warning-wash);color:var(--color-warning);padding:var(--primitive-space-3) var(--primitive-space-10);font-weight:500;border-bottom:1px solid var(--color-rule)}.footer{padding:var(--primitive-space-5) var(--primitive-space-10);color:var(--color-muted);font-size:var(--primitive-size-xs);border-top:1px solid var(--color-rule);background:var(--color-bg);max-width:72rem}.page-loading{display:grid;gap:var(--primitive-space-3);max-width:48rem}.skeleton{background:var(--color-sunken);border-radius:var(--primitive-radius-sm);animation:pulse 1.4s ease-in-out infinite}.skeleton-title{height:2.4rem;width:55%}.skeleton-line{height:1rem;width:90%}.skeleton-line.short{width:60%}.skeleton-block{height:14rem;margin-top:var(--primitive-space-4)}@keyframes pulse{50%{opacity:.55}}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,20rem);gap:var(--primitive-space-8);align-items:start}.toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:var(--primitive-space-3);margin-bottom:var(--primitive-space-5)}.toolbar .field{flex:0 1 14rem}.toolbar .grow{flex:1 1 16rem}.intro-hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(15rem,1fr);gap:var(--primitive-space-10);align-items:end;margin-bottom:var(--primitive-space-12)}.intro-hero h1{font-size:clamp(1.9rem,1.3rem + 2vw,2.6rem);max-width:20ch}.intro-hero .lead{font-size:var(--primitive-size-lg);color:var(--color-muted);max-width:58ch;margin:var(--primitive-space-4) 0 var(--primitive-space-6)}.today{border-left:1px solid var(--color-rule-strong);padding:var(--primitive-space-1) 0 var(--primitive-space-1) var(--primitive-space-5);display:grid;gap:var(--primitive-space-3)}.today-row{display:flex;align-items:baseline;gap:var(--primitive-space-3)}.today-row strong{font:700 var(--primitive-size-2xl) / 1 var(--primitive-font-display);color:var(--color-primary);min-width:2.5ch;font-variant-numeric:tabular-nums}.today small{color:var(--color-muted)}.flow{display:grid;justify-items:center;padding:var(--primitive-space-6)}.flow-start{background:var(--color-primary);color:var(--color-on-primary);font-weight:600;padding:var(--primitive-space-2) var(--primitive-space-5);border-radius:var(--primitive-radius-md)}.flow-q{position:relative;margin-top:1.5rem;background:var(--color-primary-wash);color:var(--color-primary);font-weight:600;padding:var(--primitive-space-2) var(--primitive-space-4);border-radius:var(--primitive-radius-sm);text-align:center;max-width:28rem}.flow-q:before,.flow-branch:before,.flow-sub:before,.flow-branches:before{content:"";position:absolute;left:50%;width:2px;background:var(--color-rule-strong);top:-1.5rem;height:1.5rem}.flow-branches{position:relative;width:100%;margin-top:1.5rem;padding-top:1.5rem;display:grid;grid-template-columns:1fr 1fr 2fr;gap:var(--primitive-space-4)}.flow-branches:after{content:"";position:absolute;top:0;height:2px;background:var(--color-rule-strong);left:calc((100% - 2rem)/8);right:calc((100% - 2rem)/4)}.flow-branch{position:relative;display:flex;flex-direction:column}.flow-label{text-align:center;font-weight:600;font-size:var(--primitive-size-sm);color:var(--color-primary);margin-bottom:var(--primitive-space-2)}.flow-branch>.flow-q{margin-top:0;align-self:center}.flow-branch>.flow-q:before{display:none}.flow-sub{position:relative;margin-top:1.25rem;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--primitive-space-3)}.flow-sub:before{top:-1.25rem;height:1.25rem}.flow-out{flex:1;background:var(--color-surface);border:1px solid var(--color-rule);border-top:3px solid var(--color-success);border-radius:var(--primitive-radius-sm);padding:var(--primitive-space-3);font-size:var(--primitive-size-sm);line-height:1.5}.flow-out b{display:block;font:600 var(--primitive-size-base) var(--primitive-font-display);color:var(--color-primary);margin-bottom:var(--primitive-space-1)}.flow-out.warn{border-top-color:var(--color-warning-mark)}.flow-out.bad{border-top-color:var(--color-attention)}.flow-all{margin-top:var(--primitive-space-6);width:100%;text-align:center;padding:var(--primitive-space-3) var(--primitive-space-4);border:1px dashed var(--color-rule-strong);border-radius:var(--primitive-radius-sm);color:var(--color-muted);font-size:var(--primitive-size-sm)}.layers{display:grid;gap:0}.layer{display:grid;grid-template-columns:minmax(10rem,14rem) minmax(0,1fr);gap:var(--primitive-space-6);padding:var(--primitive-space-5) 0;border-bottom:1px solid var(--color-rule)}.layer:first-child{padding-top:0}.layer h3{font-size:var(--primitive-size-xl)}.layer p{margin:0 0 var(--primitive-space-2)}.layer .law{color:var(--color-success);font-size:var(--primitive-size-sm)}.steps{margin:0;padding:0;list-style:none;counter-reset:step;display:grid;gap:var(--primitive-space-4);max-width:72ch}.steps li{counter-increment:step;display:grid;grid-template-columns:2.25rem 1fr;gap:var(--primitive-space-3);align-items:baseline}.steps li:before{content:counter(step);font:600 var(--primitive-size-lg) var(--primitive-font-display);color:var(--color-muted);text-align:right}.headline-stat{font:400 var(--primitive-size-xl) / 1.35 var(--primitive-font-display);margin:0 0 var(--primitive-space-2);max-width:48ch}.headline-stat strong{font-size:var(--primitive-size-3xl);color:var(--color-attention);font-weight:700;margin-right:var(--primitive-space-2);vertical-align:-.12em;font-variant-numeric:tabular-nums}.headline-stat.is-good strong{color:var(--color-success)}.headline-sub{color:var(--color-muted);max-width:64ch;margin-bottom:var(--primitive-space-8)}.heat{width:100%;border-collapse:collapse;background:var(--color-surface)}.heat th,.heat td{padding:var(--primitive-space-4) var(--primitive-space-3);border-bottom:1px solid var(--color-rule);text-align:left}.heat thead th{font-size:var(--primitive-size-xs);color:var(--color-muted);font-weight:600;background:var(--color-sunken)}.heat tbody th{font:700 var(--primitive-size-lg) var(--primitive-font-display);color:var(--color-primary);white-space:nowrap}.heat tbody th small{display:block;font:400 var(--primitive-size-xs) var(--primitive-font-ui);color:var(--color-muted)}.heat-n{font:700 var(--primitive-size-lg) var(--primitive-font-display);font-variant-numeric:tabular-nums;white-space:nowrap}.heat-n.good{color:var(--color-success)}.heat-n.ok{color:var(--color-warning)}.heat-none{color:var(--color-muted);font-size:var(--primitive-size-xs)}.legend{display:flex;flex-wrap:wrap;gap:var(--primitive-space-2) var(--primitive-space-5);margin-top:var(--primitive-space-3);font-size:var(--primitive-size-xs);color:var(--color-muted)}.todo{list-style:none;margin:0;padding:0;counter-reset:todo;display:grid}.todo li{counter-increment:todo;display:grid;grid-template-columns:1.75rem 1fr;gap:var(--primitive-space-2);padding:var(--primitive-space-4) 0;border-bottom:1px solid var(--color-rule)}.todo li:first-child{padding-top:0}.todo li:before{content:counter(todo);font:600 var(--primitive-size-base) / 1.5 var(--primitive-font-display);color:var(--color-muted)}.todo p{margin:0 0 var(--primitive-space-2);font-weight:500}.todo .muted{font-size:var(--primitive-size-xs);font-weight:400;display:block}.shortage{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:var(--primitive-space-3)}.shortage li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--primitive-space-2);padding:var(--primitive-space-3) var(--primitive-space-4);background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--primitive-radius-sm)}.shortage strong{font:600 var(--primitive-size-base) var(--primitive-font-ui);color:var(--color-text);font-variant-numeric:tabular-nums}.survey td{white-space:nowrap}.survey .student-name{font-weight:600}.survey .select{min-height:2.25rem;padding-block:0;font-size:var(--primitive-size-sm);width:auto}.survey .status-list{display:grid;gap:2px;white-space:normal;min-width:13rem}.survey .status-list small{color:var(--color-muted);margin-right:var(--primitive-space-1)}.survey .check{min-height:2.25rem;justify-content:center}.class-summary{color:var(--color-muted);font-size:var(--primitive-size-sm)}.add-row{display:flex;flex-wrap:wrap;align-items:end;gap:var(--primitive-space-3);margin-top:var(--primitive-space-4)}.add-row .field{flex:1 1 16rem;max-width:24rem}.qr-box{display:grid;justify-items:center;gap:var(--primitive-space-3);text-align:center}.qr-box svg{background:#fff;padding:var(--primitive-space-3);border-radius:var(--primitive-radius-sm)}.alloc-group+.alloc-group{margin-top:var(--primitive-space-8)}.alloc-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--primitive-space-2);margin-bottom:var(--primitive-space-3)}.alloc-head h2{font-size:var(--primitive-size-xl)}.schedule{display:grid;gap:2px;font-size:var(--primitive-size-xs);color:var(--color-muted)}.waiting{margin-top:var(--primitive-space-3)}.waiting .tag{margin:var(--primitive-space-1) var(--primitive-space-1) 0 0}.apply-bar{position:sticky;bottom:0;z-index:var(--z-sticky);margin-top:var(--primitive-space-8);display:flex;flex-wrap:wrap;align-items:center;gap:var(--primitive-space-3);padding:var(--primitive-space-3) var(--primitive-space-4);background:var(--color-surface);border:1px solid var(--color-rule-strong);border-radius:var(--primitive-radius-md);box-shadow:var(--shadow-raise)}.apply-bar .muted{margin-right:auto;font-size:var(--primitive-size-sm)}.book-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--primitive-space-5);align-items:start;padding:var(--primitive-space-5)}.book-card svg{background:#fff;padding:6px;border-radius:var(--primitive-radius-sm)}.book-card h2{font-size:var(--primitive-size-xl)}.scanner-view{width:100%;max-width:26rem;border-radius:var(--primitive-radius-md);overflow:hidden;background:#000;margin-bottom:var(--primitive-space-4)}.labels{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:var(--primitive-space-3)}.label-card{display:flex;gap:var(--primitive-space-3);align-items:center;border:1px dashed var(--color-rule-strong);border-radius:var(--primitive-radius-sm);padding:var(--primitive-space-3);background:var(--color-surface);break-inside:avoid}.label-card svg{background:#fff;padding:4px;flex:none}.label-card strong,.label-card .code,.label-card small{display:block}.label-card small{color:var(--color-muted)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--primitive-space-4) var(--primitive-space-5);max-width:42rem}.form-grid .full{grid-column:1 / -1}.ws-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:var(--primitive-space-5)}.ws-card{position:relative;display:flex;flex-direction:column;gap:var(--primitive-space-2);height:100%;padding:var(--primitive-space-5) var(--primitive-space-5) var(--primitive-space-4) var(--primitive-space-8);background-color:var(--color-surface);text-decoration:none;color:var(--color-text);border:1px solid var(--color-rule);border-radius:var(--primitive-radius-sm);transition:border-color var(--primitive-duration-fast) ease,transform var(--primitive-duration-fast) ease}.ws-card:before{content:"";position:absolute;left:var(--primitive-space-4);top:0;bottom:0;width:2px;background:var(--color-margin);opacity:.6}.ws-card:hover{border-color:var(--color-primary);text-decoration:none;transform:translateY(-1px)}.ws-card-meta{font-size:var(--primitive-size-xs);font-weight:600;color:var(--color-muted)}.ws-card h2{font-size:var(--primitive-size-lg)}.ws-card p{margin:0;color:var(--color-muted);font-size:var(--primitive-size-sm);flex:1}.ws-card-foot{font-size:var(--primitive-size-xs);color:var(--color-muted);padding-top:var(--primitive-space-2);border-top:1px dashed var(--color-rule)}.worksheet{position:relative;max-width:50rem;margin:0 auto;padding:var(--primitive-space-10) var(--primitive-space-10) var(--primitive-space-8) 4.5rem;background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--primitive-radius-sm);font-family:var(--primitive-font-display);font-size:1.04rem;line-height:1.75}.worksheet:before{content:"";position:absolute;left:2.75rem;top:0;bottom:0;width:2px;background:var(--color-margin);opacity:.6}.ws-head{border-bottom:2px solid var(--color-primary);padding-bottom:var(--primitive-space-3);margin-bottom:var(--primitive-space-5)}.ws-kicker{font:600 var(--primitive-size-sm) var(--primitive-font-ui);color:var(--color-muted)}.ws-head h1{font-size:var(--primitive-size-2xl);margin:var(--primitive-space-1) 0 var(--primitive-space-3)}.ws-meta{overflow-wrap:anywhere;font:400 var(--primitive-size-sm) var(--primitive-font-ui);color:var(--color-muted)}.worksheet section{margin:var(--primitive-space-5) 0}.worksheet h2{font-size:var(--primitive-size-lg);margin-bottom:var(--primitive-space-1)}.worksheet ul,.worksheet ol{margin:var(--primitive-space-1) 0;padding-left:1.3em}.ws-example{background:var(--color-primary-wash);padding:var(--primitive-space-3) var(--primitive-space-4);border-radius:var(--primitive-radius-sm);margin:var(--primitive-space-2) 0}.ws-example p{margin:2px 0}.ws-lines{height:4.5rem;margin:var(--primitive-space-1) 0 var(--primitive-space-3);background-image:repeating-linear-gradient(to bottom,transparent 0 calc(1.5rem - 1px),var(--color-rule-strong) calc(1.5rem - 1px) 1.5rem)}.ws-self{font-family:var(--primitive-font-ui);border:1px dashed var(--color-rule-strong);padding:var(--primitive-space-3) var(--primitive-space-4);border-radius:var(--primitive-radius-sm)}.ws-foot{font:400 var(--primitive-size-xs) / 1.5 var(--primitive-font-ui);color:var(--color-muted);border-top:1px solid var(--color-rule);padding-top:var(--primitive-space-3);margin-top:var(--primitive-space-6)}.subject-block{padding:var(--primitive-space-5) 0;border-bottom:1px solid var(--color-rule);display:grid;grid-template-columns:minmax(8rem,12rem) minmax(0,1fr);gap:var(--primitive-space-6)}.subject-block:first-of-type{padding-top:0}.subject-block h2{font-size:var(--primitive-size-xl)}.subject-block h2+.mark{margin-top:var(--primitive-space-2)}.subject-block h3{font-size:var(--primitive-size-base);margin:var(--primitive-space-4) 0 var(--primitive-space-1)}.plain-list{margin:0;padding-left:1.2em}.plain-list li{margin:var(--primitive-space-1) 0}.lookup{max-width:32rem}.lookup form{display:flex;gap:var(--primitive-space-3);align-items:end;flex-wrap:wrap}.lookup .field{flex:1 1 14rem}.closure{display:grid;gap:var(--primitive-space-3);padding:var(--primitive-space-6);border-left:4px solid var(--color-attention);background:var(--color-surface);max-width:48rem}.closure.is-closed{border-left-color:var(--color-success)}.closure .btn-row{margin-top:var(--primitive-space-2)}.recall+.recall{margin-top:var(--primitive-space-6)}.recall h3{margin-bottom:var(--primitive-space-2)}.not-found .pen-circle{font:700 var(--primitive-size-4xl) var(--primitive-font-display);margin-bottom:var(--primitive-space-4)}@media(max-width:1100px){.split{grid-template-columns:minmax(0,1fr)}.intro-hero{grid-template-columns:minmax(0,1fr);gap:var(--primitive-space-6)}}@media(max-width:900px){.shell{grid-template-columns:minmax(0,1fr)}.rail{display:none}.topbar{display:flex;position:sticky;top:0;z-index:var(--z-sticky);align-items:center;justify-content:space-between;gap:var(--primitive-space-3);padding:var(--primitive-space-3) var(--primitive-space-4);padding-top:max(var(--primitive-space-3),env(safe-area-inset-top));background:var(--color-surface);border-bottom:2px solid var(--color-margin)}.main{padding:var(--primitive-space-6) var(--primitive-space-4) var(--primitive-space-12)}.banner,.footer{padding-inline:var(--primitive-space-4)}.flow{padding:var(--primitive-space-2) 0}.flow-branches{grid-template-columns:minmax(0,1fr);padding-top:0}.flow-branches:after{display:none}.flow-branch+.flow-branch{margin-top:1.5rem}.flow-sub{grid-template-columns:minmax(0,1fr)}.layer,.subject-block{grid-template-columns:minmax(0,1fr);gap:var(--primitive-space-2)}.form-grid{grid-template-columns:minmax(0,1fr)}.worksheet{padding:var(--primitive-space-6) var(--primitive-space-4) var(--primitive-space-5) 2.75rem;font-size:1rem}.worksheet:before{left:1.6rem}.btn{min-height:var(--button-height-touch)}.btn-sm{min-height:2.5rem}.book-card{grid-template-columns:minmax(0,1fr)}}@media print{.rail,.topbar,.banner,.footer,.no-print,.skip-link,.toast-region,.page-header .btn-row{display:none!important}.shell{display:block}body{background:#fff;color:#000}.main{padding:0;max-width:none}.worksheet{border:0;padding:0 0 0 2rem}.worksheet:before{left:.5rem}.labels{grid-template-columns:repeat(3,1fr)}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}:root.dark{color-scheme:light;--color-bg: #ffffff;--color-surface: #ffffff;--color-sunken: #f5f4fa;--color-text: #1e1a33;--color-muted: #5d5875;--color-primary: #33246e;--color-primary-wash: #f1eefa;--color-attention: #c0261c;--color-margin: #c0261c;--color-success: #1c6b44;--color-warning: #8a5300;--color-rule: #e1e4f3;--color-rule-strong: #c6cae7;--color-grid: #e1e4f3;--color-grid-strong: #c6cae7}}.scan-panel{max-width:40rem}.flush{margin:0!important}.page-tabs{margin-bottom:var(--primitive-space-6)}.survey .student-name{white-space:nowrap}.survey tbody th{position:sticky;left:0;z-index:1;background:var(--color-surface);box-shadow:1px 0 0 var(--color-rule)}.worksheet li,.ws-example{break-inside:avoid}
