@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:400 800;font-stretch:100%;font-display:swap;src:url(/fonts/bricolage-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:400 800;font-stretch:100%;font-display:swap;src:url(/fonts/bricolage-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(/fonts/figtree-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Figtree;font-style:normal;font-weight:300 900;font-display:swap;src:url(/fonts/figtree-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg:oklch(98.5% .004 265);--surface:#fff;--surface-2:oklch(97.5% .005 265);--fg:oklch(23% .025 265);--fg-soft:oklch(42% .02 265);--muted:oklch(53% .02 265);--line:oklch(92.5% .008 265);--line-soft:oklch(95% .006 265);--accent:oklch(52% .16 265);--accent-fg:#fff;--accent-soft:oklch(95.5% .02 265);--accent-ink:oklch(45% .14 265);--pass:oklch(60% .13 155);--pass-soft:oklch(96% .03 155);--pass-ink:oklch(45% .1 155);--fail:oklch(55% .19 25);--fail-soft:oklch(96.5% .025 25);--fail-ink:oklch(48% .17 25);--warn:oklch(72% .14 65);--warn-soft:oklch(96% .03 65);--warn-ink:oklch(52% .11 65);--r-sm:10px;--r:14px;--r-lg:16px;--sh-1:0 1px 2px oklch(23% .025 265/.05);--sh-2:0 1px 2px oklch(23% .025 265/.05), 0 8px 24px oklch(23% .025 265/.045);--display:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--body:"Figtree", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;font-family:var(--body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:oklch(18% .02 265);--surface:oklch(22.5% .02 265);--surface-2:oklch(26% .02 265);--fg:oklch(95% .008 265);--fg-soft:oklch(84% .012 265);--muted:oklch(68% .015 265);--line:oklch(31% .018 265);--line-soft:oklch(27% .018 265);--accent:oklch(70% .14 265);--accent-fg:oklch(18% .02 265);--accent-soft:oklch(29% .055 265);--accent-ink:oklch(82% .1 265);--pass:oklch(72% .14 155);--pass-soft:oklch(29% .05 155);--pass-ink:oklch(82% .11 155);--fail:oklch(68% .16 25);--fail-soft:oklch(30% .06 25);--fail-ink:oklch(82% .12 25);--warn:oklch(78% .13 65);--warn-soft:oklch(31% .05 65);--warn-ink:oklch(86% .1 65);--sh-1:none;--sh-2:0 8px 24px oklch(0% 0 0/.25);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);font-family:var(--body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.55}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}header{z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:saturate(180%)blur(12px);backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--line-soft);align-items:center;gap:.6rem;padding:.85rem 1.25rem;display:flex;position:sticky;top:0}.brand{font-family:var(--display);letter-spacing:-.01em;align-items:center;gap:.55rem;font-size:1rem;font-weight:800;display:flex}.brand svg{color:var(--accent);flex:none}header .badge{margin-left:auto}main{max-width:44rem;margin:0 auto;padding:1rem 1.25rem 4rem}main.center{text-align:center;padding-top:5rem}.stack{flex-direction:column;gap:1.4rem;display:flex}h1{font-family:var(--display);letter-spacing:-.025em;text-wrap:balance;margin:0 0 .4rem;font-size:clamp(1.6rem,6vw,1.95rem);font-weight:800;line-height:1.12}h2{font-family:var(--display);letter-spacing:-.02em;margin:0 0 .5rem;font-size:1.2rem;font-weight:700;line-height:1.2}h3{font-family:var(--display);margin:0 0 .4rem;font-size:1.05rem;font-weight:600}p{text-wrap:pretty;margin:.7rem 0}.muted{color:var(--muted)}.small{font-size:.84rem}.lead{color:var(--muted);margin-top:0;font-size:1rem}.kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.74rem;font-weight:700}code{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:.1rem .35rem;font-size:.85em}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1);padding:1.15rem}.card.raised{box-shadow:var(--sh-2)}.card>:first-child{margin-top:0}.card>:last-child{margin-bottom:0}.promo{background:var(--fg);color:var(--bg);border-radius:var(--r-lg);flex-direction:column;gap:.7rem;padding:1.35rem;display:flex}.promo h2{color:inherit}.promo .kicker{color:color-mix(in srgb, var(--bg) 72%, var(--accent))}.promo p{color:color-mix(in srgb, var(--bg) 78%, var(--fg));margin:0}.promo button{background:var(--bg);color:var(--fg);border-color:#0000}.promo button:hover{background:color-mix(in srgb, var(--bg) 90%, var(--fg))}.callout{background:var(--accent-soft);border-radius:var(--r);flex-direction:column;gap:.45rem;padding:.95rem 1.05rem;display:flex}.callout .kicker{color:var(--accent-ink);align-items:center;gap:.4rem;display:flex}.callout p{margin:0;font-weight:600}.notice{background:var(--fail-soft);color:var(--fail-ink);border-radius:var(--r);padding:.8rem 1rem}.notice p{margin:0}button{font:inherit;font-family:var(--body);border-radius:var(--r);background:var(--accent);min-height:48px;color:var(--accent-fg);cursor:pointer;border:1px solid #0000;padding:.75rem 1.15rem;font-weight:600;transition:background .15s,border-color .15s,transform 60ms}button:hover{background:color-mix(in srgb, var(--accent) 88%, var(--fg))}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default;transform:none}button.primary{width:100%;min-height:54px;font-size:1.05rem;font-weight:700}button.secondary{background:var(--surface);color:var(--fg);border-color:var(--line);box-shadow:var(--sh-1)}button.secondary:hover{background:var(--surface-2);border-color:var(--accent)}button.quiet{color:var(--accent);box-shadow:none;background:0 0;border-color:#0000}button.quiet:hover{background:var(--accent-soft)}button.wide{width:100%}.actions{flex-direction:column;gap:.55rem;margin:1.1rem 0 0;display:flex}.actions.inline{flex-flow:wrap}.actions.inline button{flex-grow:1}.link{box-shadow:none;min-height:44px;color:var(--fg);background:0 0;border:none;align-items:center;gap:.35rem;padding:0;font-size:.95rem;font-weight:600;display:inline-flex}.link:hover{color:var(--accent);background:0 0}.badge,.pill{background:var(--surface);border:1px solid var(--line);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:.38rem;padding:.22rem .6rem;font-size:.78rem;font-weight:600;line-height:1.35;display:inline-flex}.badge:before{content:"";background:var(--pass);border-radius:999px;width:6px;height:6px}.badge-off{color:var(--warn-ink);border-color:var(--warn);background:var(--warn-soft)}.badge-off:before{background:var(--warn)}.pill{background:var(--surface-2);border:none}.pill-accent{background:var(--accent-soft);color:var(--accent-ink)}.pill-pass{background:var(--pass-soft);color:var(--pass-ink)}.pill-warn{background:var(--warn-soft);color:var(--warn-ink)}.pill-num{font-variant-numeric:tabular-nums}.tag-inline{letter-spacing:.05em;text-transform:uppercase;background:var(--accent-soft);color:var(--accent-ink);vertical-align:middle;border-radius:999px;margin-left:.45rem;padding:.12rem .45rem;font-size:.7rem;font-weight:700;display:inline-block}.tag{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:var(--surface-2);border-radius:999px;margin:0 0 .6rem;padding:.18rem .5rem;font-size:.74rem;font-weight:600;display:inline-block}.dot{background:var(--accent);border-radius:999px;flex:none;width:8px;height:8px}.dot-warn{background:var(--warn)}.dot-pass{background:var(--pass)}.bar{background:var(--line);border-radius:999px;height:8px;display:block;position:relative;overflow:hidden}.bar-seen,.bar-mastered{border-radius:999px;position:absolute;inset:0 auto 0 0}.bar-seen{background:color-mix(in srgb, var(--muted) 45%, var(--line))}.bar-mastered{background:var(--pass)}.ring{background:conic-gradient(var(--accent) calc(var(--pct) * 1%), var(--line) 0);border-radius:999px;flex:none;place-items:center;width:62px;height:62px;display:grid}.ring span{background:var(--surface);width:48px;height:48px;font-family:var(--display);font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;font-size:1.02rem;font-weight:800;display:grid}.progress-head{align-items:center;gap:1rem;display:flex}.progress-head div{flex-direction:column;gap:.15rem;display:flex}.list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.list button{text-align:left;background:var(--surface);width:100%;color:var(--fg);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-1);flex-direction:column;gap:.5rem;padding:.85rem 1rem;font-weight:500;display:flex}.list button:hover:not(:disabled){background:var(--surface);border-color:var(--accent)}.list button:disabled{box-shadow:none;opacity:.55}.row{align-items:center;gap:.75rem;width:100%;display:flex}.row-title{flex-wrap:wrap;align-items:center;gap:.2rem;font-weight:600;display:flex}.row-meta{color:var(--muted);align-items:center;gap:.6rem;margin-left:auto;font-size:.85rem;display:flex}.chev{color:var(--accent);flex:none}.resume{text-align:left;background:var(--surface-2);width:100%;color:var(--fg);border:1px solid var(--line);border-radius:var(--r);box-shadow:none;align-items:center;gap:.75rem;min-height:60px;padding:.7rem .85rem;font-weight:600;display:flex}.resume:hover{background:var(--surface);border-color:var(--accent)}.resume-mark{border-radius:var(--r-sm);background:var(--accent-soft);width:36px;height:36px;color:var(--accent-ink);flex:none;place-items:center;display:grid}.resume-text{flex-direction:column;flex-grow:1;gap:.05rem;min-width:0;display:flex}.resume-text b{font-weight:600}.resume-text span{color:var(--muted);font-size:.82rem;font-weight:400}.rows{flex-direction:column;display:flex}.rows>*{border-bottom:1px solid var(--line-soft);align-items:center;gap:.7rem;padding:.7rem 0;display:flex}.rows>:last-child{border-bottom:none}.rows .name{font-weight:600}.rows .num{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:.88rem}table{border-collapse:collapse;width:100%;margin:.5rem 0}th,td{text-align:left;border-bottom:1px solid var(--line-soft);padding:.55rem .6rem}th{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-size:.78rem;font-weight:700}td{font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:none}.pass{color:var(--pass-ink)}.fail{color:var(--fail-ink)}.qnum{margin:0 0 .8rem;font-size:1.02rem;font-weight:600;line-height:1.45}.figure{image-rendering:crisp-edges;border:1px solid var(--line);border-radius:var(--r-sm);background:#fff;width:151px;height:151px;margin:0 0 .9rem;display:block}.option{cursor:pointer;border:1px solid var(--line);border-radius:var(--r);background:var(--surface-2);align-items:flex-start;gap:.65rem;margin:.35rem 0;padding:.65rem .8rem;display:flex}.option:hover{border-color:var(--accent)}.option:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.option input{accent-color:var(--accent);flex:none;margin:.3rem 0 0}.option-btn{text-align:left;background:var(--surface-2);width:100%;min-height:48px;color:var(--fg);border:1px solid var(--line);border-radius:var(--r);box-shadow:none;align-items:flex-start;gap:.55rem;margin:.4rem 0;padding:.7rem .85rem;font-weight:400;display:flex}.option-btn:not(:disabled):hover{background:var(--surface-2);border-color:var(--accent)}.option-btn b{color:var(--muted);font-weight:700}.option-btn.right{border-color:var(--pass);background:var(--pass-soft);color:var(--pass-ink)}.option-btn.right b{color:var(--pass-ink)}.option-btn.wrong{border-color:var(--fail);background:var(--fail-soft);color:var(--fail-ink)}.option-btn.wrong b{color:var(--fail-ink)}.option-btn:disabled{opacity:1}.feedback{align-items:center;gap:.4rem;margin:.8rem 0 0;font-weight:600;display:flex}.sticky{z-index:4;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-2);align-items:center;gap:.8rem;margin:0 0 1.1rem;padding:.6rem .9rem;display:flex;position:sticky;top:3.4rem}.sticky:before{content:"";background:var(--bg);height:.8rem;position:absolute;inset:auto -1px 100%}.sticky-progress{background:var(--line);border-radius:0 0 var(--r) var(--r);height:3px;position:absolute;inset:auto 0 0;overflow:hidden}.sticky-progress span{background:var(--accent);height:100%;display:block}.sticky>strong{font-family:var(--display);letter-spacing:-.01em;font-weight:700}.sticky button{min-height:40px;margin-left:auto;padding:.4rem .9rem;font-size:.9rem}.timer{font-family:var(--display);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:1.45rem;font-weight:800}.timer.urgent{color:var(--fail-ink)}section{margin:0 0 2rem}section>h2{flex-wrap:wrap;align-items:baseline;gap:.5rem;margin:1.6rem 0 .8rem;display:flex}section .card{margin:.7rem 0}.task{border-top:1px solid var(--line-soft);margin-top:.9rem;padding-top:.9rem}.task>strong{margin-bottom:.5rem;display:block}.values{flex-wrap:wrap;gap:.8rem;margin-top:.5rem;display:flex}.values label{flex-direction:column;gap:.28rem;display:flex}.values input,.code{font:inherit;font-family:var(--body);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--fg);width:11rem;min-height:46px;padding:.6rem .7rem}.values input:focus,.code:focus{border-color:var(--accent);background:var(--surface)}.code{width:100%;min-width:13rem}.coord{align-items:center;gap:.35rem;display:flex}.coord input{width:5.4rem}.coord .unit{color:var(--muted);font-size:.9rem}.values input[type=time]{width:11rem}.field{flex-direction:column;gap:.35rem;margin:.7rem 0;display:flex}.field span{color:var(--fg-soft);font-size:.85rem;font-weight:600}.field input,.field select{font:inherit;font-family:var(--body);border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--fg);width:100%;min-height:46px;padding:.65rem .8rem}.field input:focus,.field select:focus{border-color:var(--accent);background:var(--surface)}.field .hint{color:var(--muted);font-size:.8rem;font-weight:400}.form-row{gap:.8rem;display:flex}.form-row .field{flex:1 1 0;min-width:0}.form-error{background:var(--fail-soft);color:var(--fail-ink);border-radius:var(--r);flex-direction:column;gap:.2rem;padding:.7rem .9rem;font-size:.9rem;display:flex}.coupon-row{border-bottom:1px solid var(--line-soft);flex-direction:column;gap:.3rem;padding:.8rem 0;display:flex}.coupon-row:last-child{border-bottom:none}.coupon-row .top{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.coupon-row code{letter-spacing:.02em;background:var(--surface-2);padding:.15rem .5rem;font-size:1rem;font-weight:700}.coupon-row .top button{min-height:36px;margin-left:auto;padding:.3rem .8rem;font-size:.82rem}.avatar{background:var(--accent-soft);width:34px;height:34px;color:var(--accent-ink);cursor:pointer;font-size:.9rem;font-weight:700;font-family:var(--display);border:none;border-radius:999px;flex:none;place-items:center;display:grid}.profile-grid{grid-template-columns:1fr 1fr;gap:.9rem 1.2rem;margin:1rem 0;display:grid}.profile-grid>div{flex-direction:column;gap:.15rem;display:flex}.profile-grid .k{letter-spacing:.03em;text-transform:uppercase;color:var(--muted);font-size:.78rem;font-weight:600}.readbar{background:var(--line);border-radius:999px;height:4px;margin:0 0 1.3rem;overflow:hidden}.readbar span{background:var(--accent);border-radius:999px;height:100%;display:block}.lesson{max-width:36rem}.lesson h1{margin-bottom:.35rem}.lesson h2{border-top:1px solid var(--line-soft);margin:2.1rem 0 .7rem;padding-top:1.3rem;font-size:1.22rem}.lesson h2:first-of-type{border-top:none;margin-top:1.6rem;padding-top:0}.lesson h3{margin:1.5rem 0 .45rem;font-size:1.05rem}.lesson p{margin:.85rem 0;font-size:1.03rem;line-height:1.7}.lesson ul,.lesson ol{padding-left:1.25rem;font-size:1.03rem;line-height:1.7}.lesson li{margin:.35rem 0}.lesson li::marker{color:var(--accent)}.lesson strong{font-weight:700}.lesson blockquote{background:var(--accent-soft);border-radius:var(--r);border:none;margin:1.2rem 0;padding:.95rem 1.05rem}.lesson blockquote p{margin:0;font-size:1rem;font-weight:600}.table-wrap{overscroll-behavior-x:contain;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-1);margin:1.2rem 0;overflow-x:auto}.lesson .table-wrap table{border-collapse:separate;border-spacing:0;width:100%;box-shadow:none;background:0 0;border:none;margin:0;font-size:.95rem}.lesson th{background:var(--surface-2);padding:.6rem .75rem}.lesson td{padding:.6rem .75rem}.lesson code{background:var(--surface-2)}.lesson .figure{margin:1rem 0}.verify{flex-direction:column;gap:.8rem;margin-top:2.2rem;display:flex}.verify h2,.verify p{margin:0}.verify-meter{align-items:center;gap:.7rem;display:flex}.verify-meter .bar{flex-grow:1}.verify-meter .pill{flex:none}.result-rows{flex-direction:column;display:flex}.result-rows>div{border-bottom:1px solid var(--line-soft);flex-direction:column;gap:.2rem;padding:.8rem 0;display:flex}.result-rows>:first-child{padding-top:0}.result-rows>:last-child{border-bottom:none;padding-bottom:0}.result-rows .top{align-items:center;gap:.6rem;display:flex}.result-rows .name{font-weight:600}.result-rows .top .pill{flex:none;margin-left:auto}.verdict{text-align:center;border-radius:var(--r-lg);flex-direction:column;align-items:center;gap:.5rem;margin:0 0 1.2rem;padding:1.8rem 1.2rem;display:flex}.verdict-pass{background:var(--pass-soft);color:var(--pass-ink)}.verdict-fail{background:var(--fail-soft);color:var(--fail-ink)}.verdict h1{color:inherit;margin:0}.verdict p{margin:0;font-weight:600}.verdict-mark{place-items:center;width:52px;height:52px;display:grid}@media (width>=34rem){.actions{flex-flow:wrap}.actions button{flex-grow:1}button.primary{width:auto}}
