:root{--colour-page:#fbf6ee;--colour-surface:#fffbf3;--colour-surface-sunk:#f3ecde;--colour-paper:#fff;--colour-ink:#1b1a17;--colour-ink-strong:#0a0906;--colour-ink-soft:#4a4740;--colour-ink-mute:#86806f;--colour-ink-faint:#b4ae9b;--colour-line:#e6dcc7;--colour-line-soft:#efe7d6;--colour-line-strong:#1b1a17;--colour-accent:oklch(0.68 0.15 45);--colour-accent-deep:oklch(0.55 0.17 40);--colour-accent-soft:oklch(0.92 0.05 60);--colour-accent-on:#fffbf3;--colour-sage:oklch(0.72 0.09 155);--colour-sage-deep:oklch(0.55 0.11 160);--colour-sage-soft:oklch(0.93 0.04 150);--colour-blueberry:oklch(0.62 0.13 260);--colour-blueberry-deep:oklch(0.48 0.15 265);--colour-blueberry-soft:oklch(0.93 0.04 260);--colour-butter:oklch(0.92 0.09 90);--colour-cover-navy:var(--colour-ink);--colour-cover-gold:var(--colour-accent-deep);--colour-cover-surface:var(--colour-surface);--colour-ok:var(--colour-sage-deep);--colour-ok-soft:var(--colour-sage-soft);--colour-warn:oklch(0.66 0.14 70);--colour-warn-soft:oklch(0.94 0.05 80);--colour-danger:#dc2626;--colour-danger-soft:#fef2f2;--fig-annotation:#7c3aed;--fig-geometry-primary:#06c;--fig-geometry-second:#c60;--fig-geometry-accent:#b91c1c;--fig-bg:#fff;--fig-ink:var(--colour-ink);--fig-ink-soft:var(--colour-ink-soft);--fig-grid:#eadfc7;--fig-grid-major:#d5c7a9;--fig-axis:var(--colour-ink);--fig-dash:var(--colour-ink-mute);--fig-shade:color-mix(in oklab,var(--colour-accent) 14%,transparent);--fig-shade-alt:color-mix(in oklab,var(--colour-sage) 18%,transparent);--fig-emphasis:var(--colour-accent-deep);--fig-secondary:var(--colour-sage-deep);--fig-tertiary:var(--colour-blueberry-deep);--fig-halo:var(--colour-paper);--font-display:"Source Serif 4","Source Serif Pro","Cormorant Garamond",Georgia,serif;--font-body:"Inter Tight","Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--font-exam:"Times New Roman",Times,Georgia,serif;--type-display-xl:clamp(48px,6.2vw,88px);--type-display-lg:clamp(36px,4.6vw,64px);--type-display-md:clamp(28px,3.2vw,44px);--type-display-sm:clamp(22px,2.2vw,30px);--type-body-lg:18px;--type-body:15.5px;--type-body-sm:14px;--type-body-xs:12.5px;--type-mono-md:13px;--type-mono-sm:11.5px;--type-mono-xs:10.5px;--lh-display:1.06;--lh-display-tight:1.00;--lh-body:1.55;--lh-body-tight:1.35;--lh-caption:1.4;--ls-display:-0.012em;--ls-display-tight:-0.02em;--ls-body:0em;--ls-caps:0.14em;--ls-caps-tight:0.08em;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:128px;--section-pad-y:96px;--section-pad-y-lg:128px;--radius-sharp:0;--radius-sm:2px;--radius:2px;--radius-md:4px;--radius-lg:6px;--shadow-0:none;--shadow-1:0 1px 0 rgba(27,26,23,.04);--shadow-2:0 1px 0 rgba(27,26,23,.06);--shadow-3:0 2px 10px rgba(27,26,23,.08);--shadow-4:0 8px 28px rgba(27,26,23,.14);--border-hair:1px solid var(--colour-line);--border-soft:1px solid var(--colour-line-soft);--border-strong:1px solid var(--colour-line-strong);--container-max:1200px;--container-lg:1320px;--container-sm:900px;--container-text:680px;--ease-out:cubic-bezier(0.2,0.8,0.2,1);--ease-in-out:cubic-bezier(0.45,0,0.55,1);--duration-1:120ms;--duration-2:200ms;--duration-3:400ms;--duration-4:700ms;--z-nav:50;--z-dialog:90;--z-toast:100}:root[data-theme=sage]{--colour-accent:var(--colour-sage);--colour-accent-deep:var(--colour-sage-deep);--colour-accent-soft:var(--colour-sage-soft);--fig-emphasis:var(--colour-sage-deep);--fig-shade:color-mix(in oklab,var(--colour-sage) 16%,transparent)}:root[data-theme=blueberry]{--colour-accent:var(--colour-blueberry);--colour-accent-deep:var(--colour-blueberry-deep);--colour-accent-soft:var(--colour-blueberry-soft);--fig-emphasis:var(--colour-blueberry-deep);--fig-shade:color-mix(in oklab,var(--colour-blueberry) 14%,transparent)}:root[data-theme=dark]{--colour-page:#111418;--colour-surface:#181c22;--colour-surface-sunk:#0c0e12;--colour-paper:#1a1e25;--colour-ink:#e8e4d4;--colour-ink-strong:#f4f1e3;--colour-ink-soft:#beb8a5;--colour-ink-mute:#8a8573;--colour-ink-faint:#5a5648;--colour-line:#2b2f38;--colour-line-soft:#23262d;--colour-line-strong:#e8e4d4;--colour-accent:oklch(0.76 0.13 50);--colour-accent-deep:oklch(0.68 0.15 45);--colour-accent-soft:oklch(0.28 0.07 45);--colour-accent-on:#0c0e12;--fig-bg:#1a1e25;--fig-ink:#e8e4d4;--fig-grid:#2b2f38;--fig-grid-major:#3b404c;--fig-axis:#e8e4d4;--fig-halo:#1a1e25}:root[data-density=compact]{--type-body-lg:17px;--type-body:14.5px;--type-body-sm:13px;--section-pad-y:72px;--section-pad-y-lg:96px}:root[data-density=spacious]{--type-body-lg:19px;--type-body:16.5px;--type-body-sm:15px;--section-pad-y:128px;--section-pad-y-lg:176px}button[role=tab]:focus-visible{outline:2px solid var(--colour-accent);outline-offset:2px}.saved-diagram-tile:focus-visible{outline:2px solid var(--colour-accent);outline-offset:2px;border-radius:6px}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--colour-page);color:var(--colour-ink);font-family:var(--font-body);font-size:var(--type-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"ss01","cv11","tnum" 0}a{text-decoration:none}a,button{color:inherit}button{font-family:inherit;cursor:pointer;background:none;border:0;padding:0}img,svg{display:block;max-width:100%}h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--fw-regular);letter-spacing:var(--ls-display);line-height:var(--lh-display);color:var(--colour-ink);margin:0}h1{font-size:var(--type-display-xl);letter-spacing:var(--ls-display-tight)}h2{font-size:var(--type-display-lg)}h3{font-size:var(--type-display-md)}h3,h4{font-weight:var(--fw-medium)}h4{font-size:var(--type-display-sm)}p{margin:0;text-wrap:pretty}.mono{font-family:var(--font-mono)}.italic{font-style:italic}.serif{font-family:var(--font-display)}.num{font-variant-numeric:tabular-nums}.body-lg{font-size:var(--type-body-lg);line-height:var(--lh-body)}.body-sm{font-size:var(--type-body-sm)}.body-xs{font-size:var(--type-body-xs);color:var(--colour-ink-mute)}.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:var(--type-mono-sm);text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--colour-ink-soft);font-weight:var(--fw-medium)}.eyebrow:before{content:"";width:20px;height:1px;background:var(--colour-ink)}.eyebrow-plain:before{display:none}.kicker{display:inline-flex;align-items:baseline;gap:10px;font-family:var(--font-mono);font-size:var(--type-mono-sm);text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--colour-ink-mute)}.kicker .n{color:var(--colour-ink);font-weight:var(--fw-medium)}.container{width:100%;max-width:var(--container-max);margin:0 auto;padding:0 var(--space-6)}.container-lg{max-width:var(--container-lg)}.container-sm{max-width:var(--container-sm)}.container-text{max-width:var(--container-text)}section{padding:var(--section-pad-y) 0;position:relative}section.pad-lg{padding:var(--section-pad-y-lg) 0}.rule{background:var(--colour-line)}.rule,.rule-strong{height:1px;width:100%}.rule-strong{background:var(--colour-ink)}.nav{position:sticky;top:0;z-index:var(--z-nav);background:var(--colour-page);border-bottom:1px solid transparent;transition:border-color var(--duration-2) var(--ease-out)}.nav.scrolled{border-bottom-color:var(--colour-line)}.nav-inner{display:flex;align-items:center;justify-content:space-between;padding:18px 0;gap:var(--space-6)}.wordmark{display:inline-flex;align-items:baseline;color:var(--colour-ink);font-family:var(--font-display);font-size:22px;font-weight:var(--fw-medium);letter-spacing:-.005em;line-height:1}.wordmark .t{color:var(--colour-accent)}.wordmark .pi,.wordmark .t{font-style:italic;font-weight:var(--fw-regular)}.wordmark .pi{color:var(--colour-ink);font-family:var(--font-display);font-size:.88em;margin-right:.18em;letter-spacing:-.01em;line-height:1}.nav-links{display:flex;align-items:center;gap:28px;font-size:var(--type-body-sm);color:var(--colour-ink-soft)}.nav-links a{transition:color var(--duration-1);padding:4px 0;position:relative}.nav-links a.active,.nav-links a:hover{color:var(--colour-ink)}.nav-links a.active:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--colour-ink)}.nav-cta{display:flex;align-items:center;gap:20px}.nav-signin{font-size:var(--type-body-sm);color:var(--colour-ink-soft);transition:color var(--duration-1)}.nav-signin:hover{color:var(--colour-ink)}@media (max-width:860px){.nav-links{display:none}.nav-cta{gap:12px}}.btn{--_pad-y:9px;--_pad-x:16px;--_fs:var(--type-body-sm);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:var(--_pad-y) var(--_pad-x);border-radius:var(--radius-sm);font-size:var(--_fs);font-weight:var(--fw-medium);border:1px solid transparent;transition:background var(--duration-1),color var(--duration-1),border-color var(--duration-1);white-space:nowrap;letter-spacing:0;font-family:var(--font-body);line-height:1.2}.btn:focus-visible{outline:2px solid var(--colour-accent);outline-offset:2px}.btn[aria-disabled=true],.btn[disabled]{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--colour-ink);color:var(--colour-surface)}.btn-primary:hover{background:var(--colour-ink-strong)}.btn-accent{background:var(--colour-accent);color:var(--colour-accent-on)}.btn-accent:hover{background:var(--colour-accent-deep)}.btn-ghost{background:transparent;color:var(--colour-ink);border-color:var(--colour-line)}.btn-ghost:hover{border-color:var(--colour-ink)}.btn-subtle{background:var(--colour-surface);color:var(--colour-ink);border-color:var(--colour-line-soft)}.btn-subtle:hover{background:var(--colour-surface-sunk)}.btn-link{background:transparent;padding:4px 0;border:0;border-radius:0;color:var(--colour-ink);border-bottom:1px solid var(--colour-ink)}.btn-link:hover{color:var(--colour-accent-deep);border-bottom-color:var(--colour-accent-deep)}.btn-danger{background:var(--colour-danger);color:var(--colour-surface)}.btn-sm{--_pad-y:6px;--_pad-x:12px;--_fs:var(--type-body-xs)}.btn-lg{--_pad-y:13px;--_pad-x:22px;--_fs:var(--type-body)}.field{display:flex;flex-direction:column;gap:6px}.label{font-family:var(--font-mono);font-size:var(--type-mono-sm);text-transform:uppercase;letter-spacing:var(--ls-caps-tight);color:var(--colour-ink-mute);font-weight:var(--fw-medium)}.input,.select,.textarea{display:block;width:100%;padding:10px 12px;font-family:var(--font-body);font-size:var(--type-body-sm);line-height:1.4;color:var(--colour-ink);background:var(--colour-surface);border:1px solid var(--colour-line);border-radius:var(--radius-sm);transition:border-color var(--duration-1),background var(--duration-1)}.input:hover,.select:hover,.textarea:hover{border-color:var(--colour-ink-mute)}.input:focus,.select:focus,.textarea:focus{outline:0;border-color:var(--colour-ink);background:var(--colour-paper)}.input::-moz-placeholder,.textarea::-moz-placeholder{color:var(--colour-ink-faint)}.input::placeholder,.textarea::placeholder{color:var(--colour-ink-faint)}.input[disabled]{background:var(--colour-surface-sunk);color:var(--colour-ink-mute)}.textarea{min-height:120px;resize:vertical}.input-mono{font-family:var(--font-mono);font-size:var(--type-mono-md)}.help{color:var(--colour-ink-mute)}.error-text,.help{font-size:var(--type-body-xs)}.error-text{color:var(--colour-danger);font-family:var(--font-mono)}.input-group{display:flex;align-items:stretch;border:1px solid var(--colour-line);border-radius:var(--radius-sm);background:var(--colour-surface)}.input-group:focus-within{border-color:var(--colour-ink);background:var(--colour-paper)}.input-group .input{border:0}.input-group .input,.input-group .input:focus{background:transparent}.input-group .addon{display:flex;align-items:center;padding:0 12px;font-family:var(--font-mono);font-size:var(--type-mono-sm);color:var(--colour-ink-mute);border-left:1px solid var(--colour-line-soft)}.input-group .addon:first-child{border-left:0;border-right:1px solid var(--colour-line-soft)}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--colour-line);border-radius:999px;background:var(--colour-surface);font-size:var(--type-body-xs);color:var(--colour-ink-soft);cursor:pointer;transition:background var(--duration-1),border-color var(--duration-1),color var(--duration-1)}.chip:hover{border-color:var(--colour-ink-soft);color:var(--colour-ink)}.chip.active,.chip[aria-pressed=true]{background:var(--colour-ink);color:var(--colour-surface);border-color:var(--colour-ink)}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:var(--radius-sm);background:var(--colour-surface);border:1px solid var(--colour-line);font-family:var(--font-mono);font-size:var(--type-mono-sm);color:var(--colour-ink-soft);letter-spacing:.02em}.pill-accent{background:var(--colour-accent-soft);border-color:color-mix(in oklab,var(--colour-accent) 25%,transparent);color:var(--colour-accent-deep)}.pill-ink{background:var(--colour-ink);color:var(--colour-surface);border-color:var(--colour-ink)}.pill-ok{background:var(--colour-ok-soft);border-color:color-mix(in oklab,var(--colour-ok) 25%,transparent);color:var(--colour-ok)}.pill-warn{background:var(--colour-warn-soft);border-color:color-mix(in oklab,var(--colour-warn) 25%,transparent);color:oklch(.4 .1 70)}.pill-danger{background:var(--colour-danger-soft);border-color:color-mix(in oklab,var(--colour-danger) 25%,transparent);color:var(--colour-danger)}.card{background:var(--colour-surface);border:1px solid var(--colour-line);border-radius:var(--radius-md);padding:var(--space-6)}.card-sunk{background:var(--colour-surface-sunk)}.card-paper{background:var(--colour-paper)}.card-ink{background:var(--colour-ink);border-color:var(--colour-ink)}.card-ink,.card-ink h3,.card-ink h4{color:var(--colour-surface)}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-4)}.card-title{font-family:var(--font-display);font-size:var(--type-display-sm);font-weight:var(--fw-medium)}.dialog-backdrop{position:fixed;inset:0;background:color-mix(in oklab,var(--colour-ink-strong) 35%,transparent);z-index:var(--z-dialog);display:grid;place-items:center;padding:var(--space-6)}.dialog{background:var(--colour-surface);border:1px solid var(--colour-line);border-radius:var(--radius-md);box-shadow:var(--shadow-4);width:100%;max-width:520px;padding:var(--space-6)}.dialog-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-4)}.dialog h3{font-size:var(--type-display-sm)}.dialog-body{color:var(--colour-ink-soft);font-size:var(--type-body-sm)}.dialog-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--colour-line-soft)}.toast{display:inline-flex;align-items:center;gap:12px;background:var(--colour-ink);color:var(--colour-surface);padding:10px 14px;border-radius:var(--radius-sm);box-shadow:var(--shadow-4);font-size:var(--type-body-sm)}.toast.ok{background:var(--colour-ok)}.toast.warn{background:oklch(.4 .1 70)}.toast.danger{background:var(--colour-danger)}.table{width:100%;border-collapse:collapse;font-size:var(--type-body-sm)}.table th{text-align:left;font-family:var(--font-mono);font-size:var(--type-mono-sm);text-transform:uppercase;letter-spacing:var(--ls-caps-tight);color:var(--colour-ink-mute);font-weight:var(--fw-medium);padding:10px 12px;border-bottom:1px solid var(--colour-ink)}.table td{padding:12px;border-bottom:1px solid var(--colour-line-soft);vertical-align:middle}.table tr:last-child td{border-bottom:0}.meter{position:relative;height:6px;background:var(--colour-surface-sunk);border-radius:var(--radius-sharp);overflow:hidden}.meter-fill{position:absolute;inset:0 auto 0 0;background:var(--colour-ink);width:0;transition:width var(--duration-3) var(--ease-out)}.meter-fill.warn{background:oklch(.55 .14 60)}.meter-fill.danger{background:var(--colour-danger)}.footer{background:var(--colour-page);padding:var(--section-pad-y) 0 var(--space-6);margin-top:var(--section-pad-y-lg);border-top:1px solid var(--colour-ink)}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--space-7);margin-bottom:var(--space-8)}.footer h4{font-family:var(--font-mono);font-size:var(--type-mono-sm);text-transform:uppercase;letter-spacing:var(--ls-caps-tight);color:var(--colour-ink-mute);margin-bottom:var(--space-3);font-weight:var(--fw-medium)}.footer ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.footer li a{color:var(--colour-ink-soft);font-size:var(--type-body-sm);border-bottom:1px solid transparent;padding-bottom:1px}.footer li a:hover{color:var(--colour-ink);border-bottom-color:var(--colour-ink)}.footer-bottom{display:flex;justify-content:space-between;align-items:baseline;padding-top:var(--space-4);border-top:1px solid var(--colour-line);color:var(--colour-ink-mute);font-size:var(--type-mono-sm);font-family:var(--font-mono);letter-spacing:.02em}@media (max-width:860px){.footer-grid{grid-template-columns:1fr 1fr}}.figure{border:1px solid var(--colour-line);padding:var(--space-5)}.figure,.figure-plain{background:var(--fig-bg);border-radius:var(--radius-sharp)}.figure-plain{padding:var(--space-4)}.figure-caption{margin-top:12px;font-family:var(--font-mono);font-size:var(--type-mono-sm);color:var(--colour-ink-mute);text-transform:uppercase;letter-spacing:var(--ls-caps-tight)}.figure-caption .n{color:var(--colour-ink);font-weight:var(--fw-medium)}.diag text{paint-order:stroke;stroke:var(--fig-halo);stroke-width:3;stroke-linejoin:round}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.rise{animation:rise var(--duration-4) var(--ease-out) both}.rise-2{animation-delay:.08s}.rise-3{animation-delay:.16s}.rise-4{animation-delay:.24s}.rise-5{animation-delay:.32s}@media (prefers-reduced-motion:reduce){.rise{animation:none}}.stack>*+*{margin-top:var(--space-3)}.stack-lg>*+*{margin-top:var(--space-5)}.cluster{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-3{display:grid;gap:var(--space-5)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-5)}@media (max-width:860px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.muted{color:var(--colour-ink-mute)}.soft{color:var(--colour-ink-soft)}.accent{color:var(--colour-accent-deep)}.app{--sidebar-w:248px;display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.app,.app-side{background:var(--colour-page)}.app-side{border-right:1px solid var(--colour-line);padding:20px 18px;display:flex;flex-direction:column;gap:28px;position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto}@media (max-width:900px){.app{grid-template-columns:1fr}.app-side{position:static;height:auto;flex-direction:row;align-items:center;gap:14px;padding:10px 14px;border-right:none;border-bottom:1px solid var(--colour-line);overflow-x:auto;overflow-y:visible}.app-side .wordmark{flex-shrink:0}.app-nav{flex-direction:row;gap:2px;flex:none;white-space:nowrap}.app-allowance,.app-nav .section-label,.app-nav a .icon{display:none}.app-user{flex-shrink:0;margin-left:auto}.app-user .who{display:none}.app-body{padding:20px 16px}.app-page-head{flex-direction:column;align-items:flex-start}.app-page-head h1{font-size:28px}}.app-side .wordmark{font-size:22px;padding:4px 6px}.app-nav{display:flex;flex-direction:column;gap:2px;flex:1}.app-nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;font-size:14px;color:var(--colour-ink-soft);border-radius:4px;transition:background .14s,color .14s;position:relative}.app-nav a:hover{color:var(--colour-ink);background:var(--colour-surface)}.app-nav a:focus-visible{outline:2px solid var(--colour-accent);outline-offset:-2px}.app-nav a:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;background:var(--colour-accent);border-radius:0 2px 2px 0;transform:scaleY(0);transform-origin:center;transition:transform .22s cubic-bezier(.22,1,.36,1)}.app-nav a[aria-current=page]{color:var(--colour-ink);background:var(--colour-surface);font-weight:600}.app-nav a[aria-current=page]:before{transform:scaleY(1)}.app-nav a[aria-current=page] .icon{opacity:1;color:var(--colour-accent-deep)}.problem-reporter{margin-top:12px;padding:12px 14px;border:1px solid var(--colour-line);background:var(--colour-surface);display:flex;flex-direction:column;gap:10px}.problem-reporter textarea{width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:13px;resize:vertical}.problem-reporter-prompt{font-size:13px;color:var(--colour-ink-soft);margin:0}.problem-reporter-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.problem-reporter-error{color:var(--colour-danger);font-family:var(--font-mono);font-size:12px}.problem-reporter-sent{margin-top:12px;padding:10px 14px;border-left:2px solid var(--colour-accent);background:var(--colour-surface-sunk);font-family:var(--font-mono);font-size:13px;color:var(--colour-ink)}.input-error{border-color:var(--colour-danger)!important;background:color-mix(in oklab,var(--colour-danger) 5%,var(--colour-surface))}.input-error:focus{outline:2px solid var(--colour-danger)}.field-error{margin-top:6px;font-family:var(--font-mono);font-size:12px;color:var(--colour-danger);letter-spacing:.02em;line-height:1.45}.saved-dgm-grid,.saved-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.saved-dgm-card,.saved-tpl-card{border:1px solid var(--colour-line);background:var(--colour-surface);display:flex;flex-direction:column;overflow:hidden}.saved-dgm-fig{aspect-ratio:1/1;background:var(--colour-paper);border-bottom:1px solid var(--colour-line-soft);display:flex;align-items:center;justify-content:center;overflow:hidden;padding:8px}.saved-dgm-fig svg{max-width:100%;max-height:100%;height:auto}.saved-dgm-body,.saved-tpl-body{padding:12px 14px;display:flex;flex-direction:column;gap:6px}.saved-dgm-name,.saved-tpl-name{background:transparent;border:none;padding:0;text-align:left;font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--colour-ink);cursor:pointer}.saved-dgm-name:hover,.saved-tpl-name:hover{color:var(--colour-accent-deep)}.saved-dgm-meta,.saved-tpl-meta{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--colour-ink-mute)}.saved-dgm-actions,.saved-tpl-actions{display:flex;gap:14px;padding-top:6px;margin-top:2px;border-top:1px solid var(--colour-line-soft)}.saved-tpl-body p{font-size:13px;color:var(--colour-ink-soft);line-height:1.5;margin:0}.app-nav .section-label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);padding:16px 10px 4px}.app-nav .icon{width:16px;height:16px;color:currentColor;opacity:.7;flex-shrink:0}.app-allowance{border:1px solid var(--colour-line);padding:12px;background:var(--colour-surface);font-size:13px}.app-allowance .label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);margin-bottom:6px}.app-allowance .big{font-family:var(--font-display);font-size:22px;color:var(--colour-ink);line-height:1}.app-allowance .big .of{color:var(--colour-ink-mute);font-size:14px}.app-allowance .bar{height:4px;background:var(--colour-line);margin-top:10px;overflow:hidden}.app-allowance .bar>span{display:block;height:100%;background:var(--colour-accent)}.app-allowance .note{margin-top:8px;color:var(--colour-ink-soft);font-size:12.5px}.app-user{border-top:1px solid var(--colour-line);padding-top:14px;gap:10px;font-size:13px}.app-user,.app-user .avatar{display:flex;align-items:center}.app-user .avatar{width:32px;height:32px;border-radius:4px;background:var(--colour-accent-soft);color:var(--colour-accent-deep);font-family:var(--font-display);font-size:16px;justify-content:center;flex-shrink:0}.app-user .who{flex:1;min-width:0}.app-user .who .name{color:var(--colour-ink);font-weight:500}.app-user .who .name,.app-user .who .school{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-user .who .school{color:var(--colour-ink-mute);font-size:12px}.app-main{display:flex;flex-direction:column;min-width:0}.app-topbar{display:flex;align-items:center;gap:20px;padding:18px 32px;border-bottom:1px solid var(--colour-line);background:var(--colour-page);position:sticky;top:0;z-index:5}.app-topbar .crumbs{flex:1;display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--colour-ink-mute);text-transform:uppercase;letter-spacing:.12em}.app-topbar .crumbs .here{color:var(--colour-ink)}.app-search,.app-topbar .crumbs .sep{color:var(--colour-ink-mute)}.app-search{flex:0 1 320px;display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--colour-line);background:var(--colour-surface);font-size:13px}.app-search .icon{width:14px;height:14px;color:currentColor;opacity:.7;flex-shrink:0}.app-search kbd{margin-left:auto;font-family:var(--font-mono);font-size:11px;background:var(--colour-page);border:1px solid var(--colour-line);padding:2px 6px}.app-body{padding:32px;max-width:1280px;width:100%;margin:0}.app-body.wide{max-width:none}.app-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:28px}.app-page-head h1{font-size:42px;letter-spacing:-.02em;line-height:1.02}.app-page-head .lede{color:var(--colour-ink-soft);font-size:var(--type-body-lg);margin-top:6px;max-width:52ch}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--colour-line);border:1px solid var(--colour-line);margin-bottom:32px}.stat-row .stat{background:var(--colour-page);padding:18px 20px}.stat .lbl{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);margin-bottom:8px}.stat .val{font-family:var(--font-display);font-size:36px;letter-spacing:-.015em;line-height:1;color:var(--colour-ink)}.stat .sub{color:var(--colour-ink-soft);font-size:13px;margin-top:6px}.panel{border:1px solid var(--colour-line);background:var(--colour-page)}.panel .panel-head{display:flex;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--colour-line)}.panel .panel-head h3{font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--colour-ink);letter-spacing:0}.panel .panel-head .flex{flex:1}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th{text-align:left;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);font-weight:400;padding:10px 20px;border-bottom:1px solid var(--colour-line);background:var(--colour-surface)}table.data td{padding:14px 20px;border-bottom:1px solid var(--colour-line-soft);color:var(--colour-ink);vertical-align:top}table.data tr:last-child td{border-bottom:0}table.data tr:hover td{background:var(--colour-surface)}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--font-mono)}table.data .t-title{font-weight:500;color:var(--colour-ink)}table.data .t-sub{color:var(--colour-ink-mute);font-size:12.5px;margin-top:2px}table.data a:hover{color:var(--colour-accent-deep)}.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;padding:3px 8px;border:1px solid var(--colour-line)}.badge .dot{width:6px;height:6px;border-radius:50%;background:var(--colour-ink-mute)}.badge.used{color:var(--colour-sage-deep);border-color:color-mix(in oklab,var(--colour-sage) 45%,transparent)}.badge.used .dot{background:var(--colour-sage-deep)}.badge.draft{color:var(--colour-accent-deep);border-color:color-mix(in oklab,var(--colour-accent) 45%,transparent)}.badge.draft .dot{background:var(--colour-accent-deep)}.badge.published{color:var(--colour-blueberry-deep);border-color:color-mix(in oklab,var(--colour-blueberry) 45%,transparent)}.badge.published .dot{background:var(--colour-blueberry-deep)}.badge.archived{color:var(--colour-ink-mute)}.status-picker{display:inline-flex;align-items:stretch;gap:0;border:1px solid var(--colour-line);border-radius:2px;overflow:hidden;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;background:var(--colour-paper)}.status-picker.is-disabled{opacity:.5;pointer-events:none}.status-picker-sm .status-chip{padding:3px 8px;font-size:10px}.status-picker-md .status-chip{padding:5px 10px;font-size:11px}.status-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-right:1px solid var(--colour-line);background:transparent;color:var(--colour-ink-mute);cursor:pointer;transition:background .12s,color .12s;font-family:inherit;letter-spacing:inherit;text-transform:inherit}.status-chip:last-child{border-right:0}.status-chip:hover:not(.is-active):not(:disabled){background:color-mix(in oklab,var(--colour-ink) 4%,transparent);color:var(--colour-ink)}.status-chip:disabled{cursor:not-allowed}.status-chip.is-active{color:var(--colour-paper);font-weight:600}.status-chip.is-active.draft{background:var(--colour-accent-deep)}.status-chip.is-active.published{background:var(--colour-blueberry-deep)}.status-chip.is-active.used{background:var(--colour-sage-deep)}.status-chip.is-active.archived{background:var(--colour-ink)}.status-cycle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:2px;border:1px solid var(--colour-line);background:var(--colour-paper);color:var(--colour-ink);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;transition:background .14s,border-color .14s,transform .14s}.status-cycle-sm{font-size:10px;padding:3px 8px}.status-cycle-md{font-size:11px;padding:5px 11px}.status-cycle:hover{border-color:color-mix(in oklab,var(--colour-ink) 20%,var(--colour-line))}.status-cycle:focus-visible{outline:2px solid var(--colour-accent);outline-offset:1px}.status-cycle-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}.status-cycle-label{line-height:1}.status-cycle-draft{color:var(--colour-accent-deep);border-color:color-mix(in oklab,var(--colour-accent) 45%,transparent);background:color-mix(in oklab,var(--colour-accent) 8%,var(--colour-paper))}.status-cycle-published{color:var(--colour-blueberry-deep);border-color:color-mix(in oklab,var(--colour-blueberry) 45%,transparent);background:color-mix(in oklab,var(--colour-blueberry) 8%,var(--colour-paper))}.status-cycle-used{color:var(--colour-sage-deep);border-color:color-mix(in oklab,var(--colour-sage) 45%,transparent);background:color-mix(in oklab,var(--colour-sage) 8%,var(--colour-paper))}.status-cycle-archived{color:var(--colour-ink-mute);border-color:var(--colour-line)}.status-cycle.is-pulse{animation:status-cycle-pulse .24s ease-out}@keyframes status-cycle-pulse{0%{transform:scale(1);box-shadow:0 0 0 0 currentColor}30%{transform:scale(1.04);box-shadow:0 0 0 4px color-mix(in oklab,currentColor 18%,transparent)}to{transform:scale(1);box-shadow:0 0 0 0 currentColor}}@media (prefers-reduced-motion:reduce){.status-cycle{transition:none}.status-cycle.is-pulse{animation:none}}.papers-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:20px}.papers-toolbar-field{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--colour-ink-soft)}.papers-toolbar-field .input{padding:6px 10px;font-size:13px;min-width:170px}.papers-toolbar-label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute)}.papers-toolbar-count{margin-left:auto;align-self:center;font-size:13px;color:var(--colour-ink-mute)}.papers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px;margin-bottom:32px}.paper-card{display:flex;flex-direction:column;gap:10px;background:var(--colour-page);border:1px solid var(--colour-line);padding:14px;transition:border-color .12s,box-shadow .12s}.paper-card:hover{border-color:color-mix(in oklab,var(--colour-ink) 18%,var(--colour-line));box-shadow:0 1px 3px rgba(27,26,23,.05)}.paper-card-link{display:block;text-decoration:none}.paper-card-body{display:flex;flex-direction:column;gap:8px}.paper-card-title-link{text-decoration:none}.paper-card-title{font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--colour-ink);letter-spacing:0;line-height:1.35;margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.paper-card-meta{font-family:var(--font-mono);font-size:11px;color:var(--colour-ink-mute);letter-spacing:.04em}.paper-card-topics{font-size:12px;color:var(--colour-ink-soft);overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.paper-card-thumb{width:100%;aspect-ratio:1/1.3;background:var(--colour-cover-surface,#fffbf3);color:var(--colour-cover-navy,#14274e);border:1px solid color-mix(in oklab,var(--colour-cover-navy,#14274e) 12%,transparent);overflow:hidden;display:flex;align-items:stretch;justify-content:stretch}.paper-card-thumb-minimal{background:var(--colour-surface);color:var(--colour-ink);border:1px solid var(--colour-line)}.paper-card-thumb-inner-minimal{padding:18px 14px;gap:6px}.pct-min-wordmark{font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--colour-ink);margin:0;letter-spacing:-.01em}.pct-min-subject{font-size:11px;color:var(--colour-ink-mute);margin:0 0 10px;text-transform:uppercase;letter-spacing:.08em}.pct-min-marks{font-size:13px;color:var(--colour-ink-soft);margin:0}.pct-min-topics{font-size:11px;color:var(--colour-ink-mute);margin:8px 0 0;line-height:1.4;padding:0 4px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.paper-card-thumb-inner{flex:1;padding:14px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:3px}.pct-sec-line{font-style:italic;font-size:8px;margin:0;color:var(--colour-cover-navy,#14274e)}.pct-crest,.pct-sec-line-gap{margin-bottom:8px}.pct-crest{width:32px;height:32px;border:1.5px solid color-mix(in oklab,var(--colour-cover-navy,#14274e) 30%,transparent);background:transparent}.pct-exam-line{font-size:9px;margin:0 0 4px;color:var(--colour-cover-navy,#14274e)}.pct-rule{border-top:1px solid var(--colour-cover-gold,#c9a84c);width:60%;margin:3px auto}.pct-subject{font-size:16px;font-weight:700;margin:2px 0;color:var(--colour-cover-gold,#c9a84c);letter-spacing:.02em}.pct-marks{font-size:10px;margin:4px 0 0}.pct-marks,.pct-notice{color:var(--colour-cover-navy,#14274e)}.pct-notice{margin:8px auto 0;padding:4px 8px;border:1px solid var(--colour-cover-gold,#c9a84c);background:color-mix(in oklab,var(--colour-cover-gold,#c9a84c) 8%,transparent);font-size:7.5px;font-style:italic;line-height:1.3}.pct-footer{margin:auto 0 0;padding-top:6px;font-size:7px;font-style:italic;color:#aaa}.papers-table-fallback{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.search-bar{display:flex;align-items:center;gap:8px;padding:7px 10px 7px 12px;border:1px solid var(--colour-line);background:var(--colour-paper);width:100%;min-width:0;transition:border-color .12s,box-shadow .12s}.search-bar:focus-within{border-color:color-mix(in oklab,var(--colour-accent) 55%,var(--colour-line));box-shadow:0 0 0 3px color-mix(in oklab,var(--colour-accent) 14%,transparent)}.search-bar-icon{width:14px;height:14px;color:var(--colour-ink-mute);flex-shrink:0}.search-bar:focus-within .search-bar-icon{color:var(--colour-accent-deep)}.search-bar-input{flex:1;border:0;background:transparent;outline:none;font-family:inherit;font-size:13px;color:var(--colour-ink);min-width:0}.search-bar-input::-moz-placeholder{color:var(--colour-ink-mute)}.search-bar-input::placeholder{color:var(--colour-ink-mute)}.search-bar-clear{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--colour-ink-mute);cursor:pointer;font-size:18px;line-height:1;padding:0 4px;border-radius:2px}.search-bar-clear:hover{color:var(--colour-ink)}.search-bar-clear:focus-visible{outline:2px solid var(--colour-accent);outline-offset:1px}.lib-toolbar{display:flex;flex-direction:column;gap:18px;margin-bottom:24px;padding:18px 20px;background:var(--colour-surface);border:1px solid var(--colour-line)}.lib-toolbar-row{display:flex;flex-wrap:wrap;gap:18px;align-items:flex-end}.lib-field{display:flex;flex-direction:column;gap:6px;min-width:0}.lib-field-search,.lib-field-year{flex:1 1 220px;min-width:220px}.lib-field-topics{flex-basis:100%}.lib-field-label{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);display:flex;align-items:baseline;gap:8px}.lib-field-value{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--colour-ink);text-transform:none}.lib-field .input{padding:7px 10px;font-size:13px}.lib-toolbar-tail{margin-left:auto;display:flex;align-items:center;gap:12px}.lib-toolbar-count{font-size:13px;color:var(--colour-ink-mute);font-family:var(--font-mono);letter-spacing:.04em}.lib-chips{display:inline-flex;border:1px solid var(--colour-line);background:var(--colour-paper);overflow:hidden;border-radius:2px}.lib-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-right:1px solid var(--colour-line);background:transparent;padding:7px 14px;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--colour-ink-mute);cursor:pointer;transition:background .12s,color .12s}.lib-chip:last-child{border-right:0}.lib-chip:hover:not(.is-active){color:var(--colour-ink);background:color-mix(in oklab,var(--colour-ink) 4%,transparent)}.lib-chip:focus-visible{outline:2px solid var(--colour-accent);outline-offset:-2px}.lib-chip.is-active{background:var(--colour-accent-deep);color:var(--colour-paper);font-weight:600}.lib-range{position:relative;height:28px;padding:0 10px}.lib-range-track{left:10px;right:10px;background:var(--colour-line)}.lib-range-fill,.lib-range-track{position:absolute;top:50%;height:3px;transform:translateY(-50%);border-radius:2px}.lib-range-fill{background:var(--colour-accent);pointer-events:none;margin-left:10px;margin-right:10px}.lib-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;top:0;left:0;right:0;width:100%;height:28px;background:transparent;pointer-events:none;margin:0}.lib-range-input::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:16px;height:16px;border-radius:50%;background:var(--colour-accent-deep);border:2px solid var(--colour-paper);box-shadow:0 1px 2px rgba(27,26,23,.2);cursor:pointer}.lib-range-input::-moz-range-thumb{pointer-events:auto;width:16px;height:16px;border-radius:50%;background:var(--colour-accent-deep);border:2px solid var(--colour-paper);box-shadow:0 1px 2px rgba(27,26,23,.2);cursor:pointer}.lib-range-input::-webkit-slider-runnable-track{background:transparent;height:28px}.lib-range-input::-moz-range-track{background:transparent;height:28px}.lib-range-input:focus-visible::-webkit-slider-thumb{outline:2px solid var(--colour-accent);outline-offset:2px}.lib-range-input:focus-visible::-moz-range-thumb{outline:2px solid var(--colour-accent);outline-offset:2px}.lib-topic-chips{display:flex;flex-wrap:wrap;gap:6px}.lib-chip-sm{padding:5px 10px;font-size:11px;letter-spacing:.04em;text-transform:none;border:1px solid var(--colour-line);border-radius:14px;background:var(--colour-paper)}.lib-chip-sm.is-active{background:color-mix(in oklab,var(--colour-accent) 14%,var(--colour-paper));color:var(--colour-accent-deep);border-color:color-mix(in oklab,var(--colour-accent) 45%,var(--colour-line));font-weight:600}.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;margin-bottom:32px}.lib-card{display:flex;flex-direction:column;gap:12px;padding:20px 20px 18px;background:var(--colour-page);border:1px solid var(--colour-line);text-decoration:none;color:inherit;transition:border-color .14s,box-shadow .14s,transform .14s;position:relative}.lib-card:hover{border-color:color-mix(in oklab,var(--colour-accent) 45%,var(--colour-line));box-shadow:0 1px 4px rgba(27,26,23,.06);transform:translateY(-1px)}.lib-card:focus-visible{outline:2px solid var(--colour-accent);outline-offset:-2px}.lib-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--colour-accent);opacity:0;transition:opacity .14s}.lib-card:hover:before{opacity:1}.lib-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.lib-card-year{font-family:var(--font-display);font-size:34px;line-height:1;letter-spacing:-.015em;color:var(--colour-ink)}.lib-card-level{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:3px 7px;border:1px solid var(--colour-line);color:var(--colour-ink-soft);flex-shrink:0}.lib-card-level.lib-level-hl{color:var(--colour-accent-deep);border-color:color-mix(in oklab,var(--colour-accent) 45%,transparent)}.lib-card-level.lib-level-ol{color:var(--colour-blueberry-deep);border-color:color-mix(in oklab,var(--colour-blueberry) 45%,transparent)}.lib-card-level.lib-level-fl{color:var(--colour-sage-deep);border-color:color-mix(in oklab,var(--colour-sage) 45%,transparent)}.lib-card-paper{font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--colour-ink);letter-spacing:.02em;margin-top:-4px}.lib-card-topics{font-size:13px;color:var(--colour-ink-soft);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em}.lib-card-rule{border-top:1px solid var(--colour-line);margin:2px 0 0}.lib-card-meta{font-size:11px}.lib-card-meta,.sp-breadcrumb{font-family:var(--font-mono);color:var(--colour-ink-mute);letter-spacing:.06em}.sp-breadcrumb{margin-bottom:18px;font-size:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.sp-breadcrumb-action{flex-shrink:0}.sp-breadcrumb-actions{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap}.sp-breadcrumb-link{color:inherit;text-decoration:none;transition:color .12s}.sp-breadcrumb-link:hover,.sp-paper{color:var(--colour-ink)}.sp-paper{max-width:780px;background:var(--colour-page);border:1px solid var(--colour-line);padding:36px 48px 44px;font-family:var(--font-exam,"Times New Roman",serif);line-height:1.55}.sp-paper-head{border-bottom:1px solid var(--colour-line);padding-bottom:18px;margin-bottom:24px}.sp-paper-kicker{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);margin-bottom:6px}.sp-paper-title{font-family:var(--font-display);font-size:30px;font-weight:500;letter-spacing:-.01em;margin:0 0 6px;color:var(--colour-ink)}.sp-paper-meta{font-family:var(--font-mono);font-size:12px;color:var(--colour-ink-soft);letter-spacing:.06em}.sp-section{margin-top:32px}.sp-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--colour-line)}.sp-section-title{font-family:var(--font-display);font-size:20px;font-weight:500;margin:0}.sp-section-meta{font-family:var(--font-mono);font-size:11px;color:var(--colour-ink-mute);letter-spacing:.06em;text-transform:uppercase}.sp-section-instructions{font-style:italic;color:var(--colour-ink-soft);margin:10px 0 16px;font-size:14px}.sp-questions{list-style:none;margin:0;padding:0}.sp-question{padding:22px 0 20px;border-bottom:1px solid var(--colour-line)}.sp-question:last-child{border-bottom:0}.sp-question-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;flex-wrap:wrap}.sp-question-head-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sp-seed-btn{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;padding:5px 10px;border:1px solid var(--colour-line);color:var(--colour-ink-soft);background:var(--colour-paper);text-decoration:none;transition:border-color .12s,color .12s,background .12s;cursor:pointer}.sp-seed-btn:hover{border-color:color-mix(in oklab,var(--colour-accent) 45%,var(--colour-line));color:var(--colour-accent-deep);background:color-mix(in oklab,var(--colour-accent) 6%,var(--colour-paper))}.sp-seed-btn:focus-visible{outline:2px solid var(--colour-accent);outline-offset:1px}.sp-question-label{font-family:var(--font-display);font-size:17px;font-weight:500;color:var(--colour-ink)}.sp-question-marks{font-family:var(--font-mono);font-size:11px;color:var(--colour-ink-mute);letter-spacing:.06em}.sp-question-topic{color:var(--colour-accent-deep);text-transform:uppercase;letter-spacing:.1em}.sp-question-text{margin-bottom:10px;font-size:15px}.sp-question-diagram{margin:10px 0 14px}.sp-parts{list-style:none;margin:6px 0 0;padding:0}.sp-part{margin-top:12px}.sp-part-depth-0{padding-left:0}.sp-part-depth-1{padding-left:22px}.sp-part-depth-2{padding-left:44px}.sp-part-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.sp-part-label{font-family:var(--font-display);font-weight:500;color:var(--colour-ink);min-width:2.2em}.sp-part-marks{font-family:var(--font-mono);font-size:10.5px;color:var(--colour-ink-mute);letter-spacing:.06em}.sp-part-text{font-size:14.5px}.sp-part-diagram{margin:10px 0 12px}.sp-rich .katex{font-size:1em}.sp-rich .katex-display{margin:8px 0}.sp-rich .math-fallback{font-family:var(--font-mono,monospace);font-size:.9em}.lib-print-screen{max-width:820px}.lib-print-toolbar{justify-content:space-between;margin-bottom:18px}.lib-print-toolbar,.lib-print-toolbar-right{display:flex;align-items:center;gap:12px}.lib-print-preview{display:flex;flex-direction:column;gap:24px}.lib-print-cover{max-width:780px;background:var(--colour-surface);border:1px solid var(--colour-line);padding:48mm 24mm 36mm;font-family:var(--font-exam,"Times New Roman",serif);color:var(--colour-ink);text-align:center}.lib-print-cover-inner{display:flex;flex-direction:column;align-items:center;gap:6mm}.lib-print-cover-kicker{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.18em;color:var(--colour-accent-deep);margin:0}.lib-print-cover-title{font-family:var(--font-display);font-size:28pt;font-weight:500;letter-spacing:-.01em;margin:0;color:var(--colour-ink)}.lib-print-cover-rule{width:80mm;border-top:1px solid var(--colour-accent-deep);margin:0}.lib-print-cover-line{font-family:var(--font-display);font-size:18pt;margin:0;color:var(--colour-ink)}.lib-print-cover-marks{font-family:var(--font-mono);font-size:12pt;letter-spacing:.12em;text-transform:uppercase;margin:0;color:var(--colour-ink-soft)}.lib-print-cover-notice{max-width:120mm;font-size:9.5pt;font-style:italic;color:var(--colour-ink-soft);margin:2mm 0 0;line-height:1.5}.ms-paper{max-width:780px;background:var(--colour-page);border:1px solid var(--colour-line);padding:36px 48px 44px;font-family:var(--font-exam,"Times New Roman",serif);color:var(--colour-ink);line-height:1.55}.ms-paper-head{border-bottom:1px solid var(--colour-line);padding-bottom:18px;margin-bottom:24px}.ms-paper-kicker{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-accent-deep);margin-bottom:6px}.ms-paper-title{font-family:var(--font-display);font-size:26px;font-weight:500;letter-spacing:-.01em;margin:0 0 6px;color:var(--colour-ink)}.ms-paper-meta{font-family:var(--font-mono);font-size:12px;color:var(--colour-ink-soft);letter-spacing:.06em}.ms-section{margin-top:28px}.ms-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--colour-line)}.ms-section-title{font-family:var(--font-display);font-size:18px;font-weight:500;margin:0}.ms-section-meta{font-family:var(--font-mono);font-size:11px;color:var(--colour-ink-mute);letter-spacing:.06em;text-transform:uppercase}.ms-questions{list-style:none;margin:0;padding:0}.ms-question{padding:20px 0 18px;border-bottom:1px solid var(--colour-line)}.ms-question:last-child{border-bottom:0}.ms-question-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px}.ms-question-label{font-family:var(--font-display);font-size:16px;font-weight:500}.ms-question-marks{font-family:var(--font-mono);font-size:11px;color:var(--colour-ink-mute)}.ms-question-text{font-size:14.5px;color:var(--colour-ink-soft);margin-bottom:10px}.ms-parts{list-style:none;margin:6px 0 0;padding:0}.ms-part{margin-top:14px}.ms-part-depth-0{padding-left:0}.ms-part-depth-1{padding-left:22px}.ms-part-depth-2{padding-left:44px}.ms-part-head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.ms-part-label{font-family:var(--font-display);font-weight:500;min-width:2.2em}.ms-part-marks{font-family:var(--font-mono);font-size:10.5px;color:var(--colour-ink-mute);letter-spacing:.06em}.ms-part-text{font-size:14px;color:var(--colour-ink-soft);margin-bottom:8px}.ms-scheme{background:var(--colour-surface);border:1px solid var(--colour-line);padding:12px 14px;display:flex;flex-direction:column;gap:10px}.ms-scheme-scale{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--colour-ink-soft)}.ms-scheme-solution{font-size:14px;color:var(--colour-ink)}.ms-scheme-ladder{width:100%;border-collapse:collapse;font-size:13px}.ms-scheme-ladder thead th{text-align:left;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--colour-ink-mute);padding:6px 8px;border-bottom:1px solid var(--colour-line);font-weight:500}.ms-scheme-ladder tbody td{padding:8px;border-bottom:1px solid var(--colour-line);vertical-align:top;color:var(--colour-ink)}.ms-scheme-ladder tbody tr:last-child td{border-bottom:0}.ms-scheme-level{font-family:var(--font-display);font-weight:500;width:30%}.ms-scheme-ladder .ms-scheme-marks{text-align:right;font-family:var(--font-mono);font-size:12px;width:60px}.ms-scheme-missing{font-style:italic;color:var(--colour-ink-mute);font-size:13px}.ms-fallback{max-width:780px;background:var(--colour-surface);border:1px solid var(--colour-line);padding:28px 32px;font-family:var(--font-exam,"Times New Roman",serif);color:var(--colour-ink-soft);font-style:italic;line-height:1.55}.sp-diagram-actions{display:flex;justify-content:flex-end;margin-top:6px}.sp-save-diagram-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--colour-line);background:var(--colour-paper);color:var(--colour-ink-soft);font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;cursor:pointer;transition:border-color .14s,color .14s,background .14s}.sp-save-diagram-btn:hover{border-color:color-mix(in oklab,var(--colour-accent) 45%,var(--colour-line));color:var(--colour-accent-deep);background:color-mix(in oklab,var(--colour-accent) 6%,var(--colour-paper))}.sp-save-diagram-btn:focus-visible{outline:2px solid var(--colour-accent);outline-offset:1px}.sp-save-diagram-btn.is-saved{color:var(--colour-sage-deep);border-color:color-mix(in oklab,var(--colour-sage) 45%,var(--colour-line));background:color-mix(in oklab,var(--colour-sage) 8%,var(--colour-paper));cursor:default}.sp-diagram-fallback{border:1px dashed var(--colour-line);padding:14px 16px;background:var(--colour-surface);font-family:var(--font-mono);max-width:480px}.sp-diagram-fallback-title{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--colour-ink);margin-bottom:4px}.sp-diagram-fallback-body{font-size:12px;color:var(--colour-ink-soft);line-height:1.5}.app-cols{display:grid;grid-template-columns:1fr 320px;gap:32px;align-items:start}.app-cols.cols-3{grid-template-columns:240px 1fr}.set-nav{display:flex;flex-direction:column;gap:2px;position:sticky;top:96px}.set-nav a{display:block;padding:8px 12px;font-size:14px;color:var(--colour-ink-soft);border-left:2px solid transparent}.set-nav a[aria-current=page]{color:var(--colour-ink);border-left-color:var(--colour-accent);font-weight:500}.set-nav a:hover{color:var(--colour-ink)}.set-section{border-bottom:1px solid var(--colour-line);padding:28px 0}.set-section:first-child{padding-top:0}.set-section:last-child{border-bottom:0}.set-section h2{font-family:var(--font-body);font-size:16px;font-weight:500;margin-bottom:4px;letter-spacing:0}.set-section p.lede{color:var(--colour-ink-soft);font-size:14px;margin-bottom:20px;max-width:52ch}.set-row{display:grid;grid-template-columns:1fr 320px;gap:24px;padding:14px 0;align-items:start;border-top:1px solid var(--colour-line-soft)}.set-row:first-of-type{border-top:0}.set-row .rlabel{font-size:14px;color:var(--colour-ink);font-weight:500}.set-row .rdesc{color:var(--colour-ink-soft);font-size:13px;margin-top:2px}.set-row .rcontrol{text-align:left}.set-row .rcontrol .input,.set-row .rcontrol select{width:100%}.paper-shell{display:grid;grid-template-columns:1fr 360px;gap:0;min-height:calc(100vh - 67px)}.paper-canvas{padding:40px 48px 120px;background:var(--colour-surface);border-right:1px solid var(--colour-line);overflow-y:auto}.paper-sheet{max-width:720px;margin:0 auto;background:var(--colour-page);border:1px solid var(--colour-line);padding:56px 64px;min-height:860px}.paper-sheet .school-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1.5px solid var(--colour-ink);padding-bottom:14px;margin-bottom:22px}.paper-sheet .school-head .school{font-family:var(--font-display);font-size:20px;letter-spacing:-.015em}.paper-sheet .school-head .meta{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--colour-ink-soft);text-align:right;line-height:1.6}.paper-sheet h2.paper-title{font-family:var(--font-display);font-size:32px;letter-spacing:-.015em;margin-bottom:4px;font-weight:400}.paper-sheet .paper-sub{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--colour-ink-soft);margin-bottom:32px}.q{margin-bottom:36px}.q-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.q-head .q-no{font-family:var(--font-display);font-size:22px;letter-spacing:-.015em}.q-head .q-marks{font-family:var(--font-mono);font-size:12px;color:var(--colour-ink-soft)}.q-stem{font-size:15px;line-height:1.55;margin-bottom:14px;color:var(--colour-ink)}.q-part{display:grid;grid-template-columns:28px 1fr auto;gap:8px 12px;margin-bottom:10px;align-items:start}.q-part .roman{font-family:var(--font-display);font-style:italic;color:var(--colour-ink-soft);font-size:14px}.q-part .ptxt{font-size:14.5px;line-height:1.55}.q-part .pmark{font-family:var(--font-mono);font-size:11px;color:var(--colour-ink-mute)}.q-figure{margin:14px 0;border:1px solid var(--colour-line);padding:8px;background:var(--fig-bg);display:inline-block}.paper-inspector{background:var(--colour-page);padding:24px 24px 40px;overflow-y:auto}.insp-tabs{display:flex;border-bottom:1px solid var(--colour-line);margin-bottom:20px;gap:24px}.insp-tabs button{padding:10px 0;font-size:13px;color:var(--colour-ink-mute);border-bottom:2px solid transparent;margin-bottom:-1px;font-family:var(--font-body)}.insp-tabs button.on{color:var(--colour-ink);border-bottom-color:var(--colour-accent);font-weight:500}.insp-section{margin-bottom:28px}.insp-section h4{font-family:var(--font-body);font-size:13px;font-weight:500;margin-bottom:10px;letter-spacing:0;color:var(--colour-ink)}.insp-section p{font-size:13px;color:var(--colour-ink-soft);line-height:1.5}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:12px;border:1px solid var(--colour-line);color:var(--colour-ink-soft);background:var(--colour-page);font-family:var(--font-body)}.chip-btn.on{background:var(--colour-accent);color:var(--colour-page);border-color:var(--colour-accent)}.ms-card{border:1px solid var(--colour-line);padding:14px;background:var(--colour-surface);margin-bottom:10px;font-size:13px;line-height:1.55}.ms-card .lbl{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--colour-ink-mute);margin-bottom:6px;display:flex;justify-content:space-between}.ms-card ul{margin:0;padding-left:18px;color:var(--colour-ink-soft)}.ms-card ul li{margin-bottom:4px}.ms-card ul li .m{font-family:var(--font-mono);color:var(--colour-accent-deep);margin-right:6px}.paper-actionbar{display:flex;align-items:center;gap:12px;padding:12px 32px;border-bottom:1px solid var(--colour-line);background:var(--colour-page)}.paper-actionbar .title-edit{font-family:var(--font-display);font-size:18px;letter-spacing:-.015em;color:var(--colour-ink);background:transparent;border:0;padding:4px 6px;border-radius:2px}.paper-actionbar .title-edit:hover{background:var(--colour-surface)}.paper-actionbar .spacer{flex:1}.paper-actionbar .save-state{font-family:var(--font-mono);font-size:11.5px;color:var(--colour-ink-mute);text-transform:uppercase;letter-spacing:.12em}.ic{width:16px;height:16px;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}