.drill{display:grid;gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(0,300px);align-items:start}@media (max-width: 860px){.drill{grid-template-columns:minmax(0,1fr)}}.drill__head{grid-column:1 / -1;display:flex;gap:var(--space-4);align-items:baseline;justify-content:space-between;flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-bottom:3px solid var(--accent)}.drill__head h1{margin:0}.drill__summary{margin:var(--space-1) 0 0;color:var(--ink-muted);font-size:var(--step--1)}.drill__clock{margin:0;font:600 1.4rem/1 var(--mono);font-variant-numeric:tabular-nums}.drill__clock--low{color:var(--bad)}.drill__stage{padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.drill__stage:focus{outline:none}.drill__controls{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center;align-items:center;font-size:var(--step--1)}.drill__aside{display:flex;flex-direction:column;gap:var(--space-4)}.drill__aside .panel{padding:var(--space-4)}.drill__aside h2{font-size:var(--step--1);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin-bottom:var(--space-2)}.drill__aside ol,.drill__aside ul{margin:0;padding-left:1.2em;font-size:var(--step--1)}.drill__aside li{margin-bottom:var(--space-2)}.drill--brief{grid-template-columns:minmax(0,1fr)}.drill--brief .drill__stage{align-items:stretch}.brief{width:100%}.brief__meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);align-items:baseline;margin:0 0 var(--space-4);font-size:var(--step--1);color:var(--ink-muted);max-width:none}.brief__code{font:var(--step--1) var(--mono);color:var(--accent-ink);background:var(--accent);padding:2px var(--space-2);border-radius:var(--radius)}.brief__cols{display:grid;gap:var(--space-5);grid-template-columns:minmax(0,1fr) minmax(240px,320px);align-items:start}@media (max-width: 760px){.brief__cols{grid-template-columns:minmax(0,1fr)}}.brief__text h2{font-size:var(--step--1);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:0 0 var(--space-2)}.brief__text h2+.brief__list{margin-bottom:var(--space-4)}.brief__list{margin:0;padding-left:1.3em}.brief__list li{margin-bottom:var(--space-2)}.brief__list li:last-child{margin-bottom:0}.brief__figure{margin:0;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken)}.brief__figure svg{display:block;width:100%;height:auto}.brief__figure figcaption{margin-top:var(--space-2);font-size:var(--step--1);color:var(--ink-muted)}.report{width:100%}.report__scores{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(92px,1fr));margin:0 0 var(--space-4)}.report__scores div{margin:0}.report__scores dt{font-size:var(--step--1);color:var(--ink-muted);order:2}.report__scores dd{margin:0;order:1;font:600 1.6rem/1.15 var(--mono);font-variant-numeric:tabular-nums}.report__scores>div{display:flex;flex-direction:column}.report__v--good{color:var(--good)}.report__v--bad{color:var(--bad)}.report__advice{font-size:var(--step--1)}.report__actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.verdict{min-height:1.7em;margin:0;font-weight:600;text-align:center}.verdict--good{color:var(--good)}.verdict--bad{color:var(--bad)}.verdict--neutral{color:var(--ink)}.grid__ask{margin:0;color:var(--ink-muted);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em}.grid__level{font:var(--step--1) var(--mono);color:var(--ink-muted);font-variant-numeric:tabular-nums}.grid__board{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:var(--space-2);width:min(100%,360px);aspect-ratio:1}.grid__cell{padding:0;aspect-ratio:1;min-height:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);color:var(--ink);cursor:pointer;display:grid;place-items:center;transition:background-color 90ms ease,box-shadow 90ms ease}.grid__cell[disabled]{cursor:default}.grid__cell:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 10%,var(--surface-sunken));border-color:var(--ink-muted)}.grid__cell.is-lit{background:var(--accent);border-color:var(--accent)}.grid__cell.is-chosen{background:color-mix(in srgb,var(--accent) 30%,var(--surface));border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.grid__cell.is-hit{background:color-mix(in srgb,var(--good) 26%,var(--surface));border-color:var(--good)}.grid__cell.is-missed{border:2px dashed var(--good);background:var(--surface)}.grid__cell.is-wrong{border:2px solid var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--surface))}.grid__glyph{font:600 1.1rem/1 var(--mono);color:var(--ink-muted)}.grid__cell.is-wrong .grid__glyph{color:var(--bad)}.grid__cell.is-missed .grid__glyph{color:var(--good);font-size:1.8rem}.grid__breakdown{border-collapse:collapse;margin:0 0 var(--space-4);font:var(--step--1) var(--mono);font-variant-numeric:tabular-nums}.grid__breakdown caption{text-align:left;font-family:var(--font);color:var(--ink-muted);font-size:var(--step--1);margin-bottom:var(--space-2)}.grid__breakdown th,.grid__breakdown td{padding:var(--space-1) var(--space-3);text-align:right;border-bottom:1px solid var(--line)}.grid__breakdown thead th{color:var(--ink-muted);font-weight:500}.grid__breakdown tbody th{text-align:left}.vwm__phase{margin:0;color:var(--ink-muted);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em}.vwm__level{font:var(--step--1) var(--mono);color:var(--ink-muted);font-variant-numeric:tabular-nums}.vwm__idle{margin:0;color:var(--ink-muted)}.vwm__matrix{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:var(--space-2);width:min(100%,420px);aspect-ratio:1}.vwm__cell{aspect-ratio:1;min-height:0;padding:0;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);color:var(--ink);transition:background-color .12s ease,border-color .12s ease}.vwm__cell[disabled]{cursor:default}.vwm__cell:not([disabled]){cursor:pointer}.vwm__cell:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 10%,var(--surface-sunken));border-color:var(--ink-muted)}.vwm__cell.is-lit{background:var(--accent);border-color:var(--accent)}.vwm__cell.is-chosen{background:color-mix(in srgb,var(--accent) 28%,var(--surface));border-color:var(--accent)}.vwm__cell.is-hit{background:color-mix(in srgb,var(--good) 26%,var(--surface));border:2px solid var(--good)}.vwm__cell.is-wrong{background:color-mix(in srgb,var(--bad) 18%,var(--surface));border:2px solid var(--bad)}.vwm__cell.is-missed{border:2px dashed var(--good)}.vwm__ord{font:600 var(--step-0) var(--mono);font-variant-numeric:tabular-nums}.vwm__judge{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.vwm__judge-actions{display:flex;gap:var(--space-3);flex-wrap:wrap;justify-content:center}.vwm__sym{display:grid;grid-template-columns:repeat(var(--n),1fr);width:min(100%,240px);aspect-ratio:1;border:1px solid var(--line);background:var(--surface)}.vwm__sym span{background:var(--surface)}.vwm__sym span.is-on{background:var(--ink)}.vwm__row{display:flex;gap:var(--space-2);flex-wrap:wrap;justify-content:center}.vwm__actions,.vwm__result{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);width:100%}.vwm__count{font:var(--step--1) var(--mono);color:var(--ink-muted);font-variant-numeric:tabular-nums}.vwm__figures{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(78px,1fr));margin:0;width:100%;max-width:520px}.vwm__figures>div{display:flex;flex-direction:column;margin:0}.vwm__figures dt{order:2;font-size:var(--step--1);color:var(--ink-muted)}.vwm__figures dd{order:1;margin:0;font:600 1.4rem/1.15 var(--mono);font-variant-numeric:tabular-nums}.vwm__figures .is-bad{color:var(--bad)}.vwm__distraction{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.vwm__prompt{margin:0;font-size:var(--step-1)}.vwm__shapes{display:flex;gap:var(--space-4);flex-wrap:wrap;justify-content:center}.vwm__shape{width:56px;height:56px;padding:0;cursor:pointer;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);position:relative;transition:border-color .12s ease}.vwm__shape:hover{border-color:var(--ink-muted)}.vwm__shape:after{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;background:currentColor}.vwm__shape--circle:after{border-radius:50%}.vwm__shape--square:after{border-radius:2px}.vwm__shape--triangle:after{clip-path:polygon(50% 0,100% 100%,0 100%)}.vwm__shape--red{color:#d2453a}.vwm__shape--green{color:#2f8f4e}.vwm__shape--blue{color:#2f6fb5}.vwm__shape--yellow{color:#d8a01c}.vwm__table{border-collapse:collapse;margin:0 0 var(--space-4);font:var(--step--1) var(--mono);font-variant-numeric:tabular-nums}.vwm__table caption{text-align:left;font-family:var(--font);color:var(--ink-muted);font-size:var(--step--1);margin-bottom:var(--space-2)}.vwm__table th,.vwm__table td{padding:var(--space-1) var(--space-3);text-align:right;border-bottom:1px solid var(--line)}.vwm__table thead th{color:var(--ink-muted);font-weight:500}.vwm__table tbody th{text-align:left}.vwm__deadline{width:min(100%,240px);height:6px;border:1px solid var(--line);border-radius:999px;background:var(--surface);overflow:hidden}.vwm__deadline span{display:block;height:100%;background:var(--accent);transition:width 80ms linear}.vwm__deadline.is-low span{background:var(--bad)}.nav__ask{margin:0;color:var(--ink-muted);font-size:var(--step--1)}.nav__arrows{display:flex;align-items:center;justify-content:center;gap:var(--space-4);flex-wrap:wrap}.nav__arrows figure{margin:0;text-align:center}.nav__arrows figcaption{font-size:var(--step--1);color:var(--ink-muted);margin-top:var(--space-1)}.nav__box{width:clamp(88px,26vw,124px);aspect-ratio:1;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);display:grid;place-items:center}.nav__box svg{width:76%;height:76%}.nav__to{font-size:1.6rem;color:var(--ink-muted)}.nav__steps{margin:0;padding-left:1.2em;font-weight:600}.nav__steps li{margin-bottom:var(--space-1)}.nav__options{display:grid;gap:var(--space-2);grid-template-columns:repeat(2,minmax(140px,1fr));width:100%;max-width:440px}.nav__options--arrows{grid-template-columns:repeat(4,1fr);max-width:340px}.nav__opt{font:inherit;min-height:var(--tap);display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);color:var(--ink);cursor:pointer}.nav__opt{transition:background-color .12s ease,border-color .12s ease}.nav__opt:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 8%,var(--surface-sunken));border-color:var(--ink-muted)}.nav__opt:active:not([disabled]){background:color-mix(in srgb,var(--ink) 16%,var(--surface-sunken))}.nav__opt[disabled]{cursor:default}.nav__opt.is-right{border:2px solid var(--good);background:color-mix(in srgb,var(--good) 12%,var(--surface))}.nav__opt.is-wrong{border:2px solid var(--bad);background:color-mix(in srgb,var(--bad) 12%,var(--surface))}.nav__opt kbd{font:500 var(--step--1) var(--mono);color:var(--ink-muted)}.field{display:flex;align-items:center;gap:var(--space-2)}.field>span{color:var(--ink-muted)}.field select{font:inherit;min-height:var(--tap);padding:var(--space-1) var(--space-2);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer;transition:border-color .12s ease}.field select:hover{border-color:var(--ink-muted)}.field--check input{width:20px;height:20px}.spark{display:block;width:100%;height:32px;overflow:visible}.log__head{margin-bottom:var(--space-5)}.log__lede{font-size:var(--step-1);color:var(--ink-muted)}.log__empty{padding:var(--space-5) var(--space-4)}.log__empty .btn{display:inline-block;text-decoration:none;line-height:var(--tap);padding-block:0}.log__totals,.log__drill{padding:var(--space-4);margin-bottom:var(--space-4)}.log__figures{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(104px,1fr));margin:0 0 var(--space-4)}.log__figures>div{display:flex;flex-direction:column;margin:0}.log__figures dt{order:2;font-size:var(--step--1);color:var(--ink-muted)}.log__figures dd{order:1;margin:0;font:600 1.5rem/1.15 var(--mono);font-variant-numeric:tabular-nums}.log__soft{font-size:var(--step-0)!important;font-weight:500!important;color:var(--ink-muted)}.log__up{color:var(--good)}.log__down{color:var(--bad)}.log__actions{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.btn--danger{background:var(--bad);border-color:var(--bad);color:var(--accent-ink)}.log__drill-head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.log__drill-head h2{margin:0}.log__drill-head .spark{flex:1 1 120px;min-width:90px;max-width:220px;margin-left:auto}.log__code{font:var(--step--1) var(--mono);color:var(--accent-ink);background:var(--accent);padding:2px var(--space-2);border-radius:var(--radius)}.log__scroll{overflow-x:auto;margin-bottom:var(--space-3)}.log__table{width:100%;border-collapse:collapse;font-size:var(--step--1);font-variant-numeric:tabular-nums}.log__table th,.log__table td{padding:var(--space-2) var(--space-3);text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}.log__table thead th{color:var(--ink-muted);font-weight:500;text-align:right;text-transform:uppercase;letter-spacing:.05em;font-size:var(--step--1)}.log__table thead th:first-child,.log__table tbody th{text-align:left}.log__table tbody th{font-weight:500;color:var(--ink-muted);font-family:var(--mono)}.log__table td{font-family:var(--mono)}.log__table tbody tr:last-child th,.log__table tbody tr:last-child td{border-bottom:0}.log__note{font-family:var(--font)!important;color:var(--ink-muted);text-align:left!important}.log__scroll:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.theme{display:inline-flex;margin:0;padding:2px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:2px}.theme__opt{display:inline-flex;align-items:center;justify-content:center;min-height:calc(var(--tap) - 8px);padding:0 var(--space-3);font-size:var(--step--1);color:var(--ink-muted);border-radius:2px;cursor:pointer;transition:background-color .12s ease,color .12s ease}.theme__opt:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 8%,var(--surface))}.theme__opt.is-on{background:var(--accent);color:var(--accent-ink)}.theme__opt:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}.home__head{margin-bottom:var(--space-6)}.home__lede{font-size:var(--step-1);color:var(--ink-muted)}.home__family{margin-bottom:var(--space-6)}.home__family-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-4);padding-bottom:var(--space-2);margin-bottom:var(--space-4);border-bottom:1px solid var(--line)}.home__family-head h2{margin:0;font-size:var(--step--1);text-transform:uppercase;letter-spacing:.08em;color:var(--ink);white-space:nowrap}.home__family-head p{margin:0;flex:1 1 22rem;font-size:var(--step--1);color:var(--ink-muted);max-width:62ch}.cards{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(255px,1fr))}.card{position:relative;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);transition:border-color .12s ease}.card:hover{border-color:var(--accent)}.card__link:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.card__head{display:flex;align-items:center;gap:var(--space-3)}.glyph{flex:0 0 auto;color:var(--ink-muted);transition:color .12s ease}.card:hover .glyph{color:var(--accent)}.card__name{margin:0;font-size:var(--step-1)}.card__link{color:var(--ink);text-decoration:none}.card:hover .card__link{color:var(--accent)}.card__link:focus-visible{outline:none}.card:has(.card__link:focus-visible){outline:3px solid var(--accent);outline-offset:2px}.card__meta{margin:0;display:flex;align-items:center;gap:var(--space-2);font-size:var(--step--1);color:var(--ink-muted)}.card__code{font:var(--step--1) var(--mono);color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface));padding:2px var(--space-2);border-radius:var(--radius)}.card__measures{margin:0;font-size:var(--step--1);color:var(--ink-muted);flex:1}.card__last{margin:0;padding-top:var(--space-2);border-top:1px solid var(--line);display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;font-size:var(--step--1)}.card__figure{font:600 var(--step-0) var(--mono);font-variant-numeric:tabular-nums;color:var(--ink)}.card__when{color:var(--ink-muted);margin-left:auto}.card__last--none{color:var(--ink-muted);font-style:italic}.home__note{padding:var(--space-4)}.home__clear{margin:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.crumb{font-size:var(--step--1)}.home__actions{margin:var(--space-4) 0 0}.home__actions .btn{display:inline-flex;align-items:center;text-decoration:none;color:var(--ink);padding-block:0}.home__actions .btn:hover{border-color:var(--accent);color:var(--accent)}:root{--bg: #dde1dc;--surface: #ffffff;--surface-sunken: #f2f4f2;--line: #c6ccc5;--ink: #18222c;--ink-muted: #59636d;--accent: #1a5f96;--accent-ink: #ffffff;--good: #1f6b39;--bad: #a8291d;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius: 4px;--radius-lg: 8px;--font: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--step--1: clamp(.78rem, .76rem + .1vw, .84rem);--step-0: clamp(.94rem, .9rem + .2vw, 1rem);--step-1: clamp(1.1rem, 1rem + .5vw, 1.3rem);--step-2: clamp(1.35rem, 1.15rem + 1vw, 1.75rem);--tap: 44px;accent-color:var(--accent)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #12171c;--surface: #1b2229;--surface-sunken: #232b33;--line: #38424c;--ink: #e8edf2;--ink-muted: #a3b0bb;--accent: #6fb3e8;--accent-ink: #0d1216;--good: #6cc48a;--bad: #f08a80}}:root[data-theme=dark]{--bg: #12171c;--surface: #1b2229;--surface-sunken: #232b33;--line: #38424c;--ink: #e8edf2;--ink-muted: #a3b0bb;--accent: #6fb3e8;--accent-ink: #0d1216;--good: #6cc48a;--bad: #f08a80}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:var(--step-0)/1.55 var(--font);-webkit-text-size-adjust:100%}h1,h2,h3{line-height:1.25;margin:0 0 var(--space-3);text-wrap:balance}h1{font-size:var(--step-2)}h2{font-size:var(--step-1)}p{margin:0 0 var(--space-3);max-width:68ch}a{color:var(--accent)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:2px}.skip-link{position:absolute;left:var(--space-3);top:calc(-1 * var(--tap) - 8px);z-index:10;padding:var(--space-2) var(--space-4);background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);transition:top .12s ease}.skip-link:focus{top:var(--space-3)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.shell{max-width:1040px;margin:0 auto;padding:var(--space-4)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.btn{font:inherit;min-height:var(--tap);padding:var(--space-2) var(--space-4);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-sunken);color:var(--ink);cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.btn:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 8%,var(--surface-sunken));border-color:var(--ink-muted)}.btn:active:not([disabled]){background:color-mix(in srgb,var(--ink) 16%,var(--surface-sunken))}.btn[disabled]{opacity:.5;cursor:default}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--primary:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 14%,var(--accent));border-color:color-mix(in srgb,var(--ink) 14%,var(--accent))}.btn--primary:active:not([disabled]){background:color-mix(in srgb,var(--ink) 24%,var(--accent))}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.btn--quiet{background:transparent;border-color:transparent;color:var(--ink-muted);text-decoration:underline}.btn--quiet:hover{color:var(--ink);filter:none}
