:root{--bg:#eceff1;--panel:#fafbfc;--ink:#15202a;--muted:#586774;--rule:#c6cfd6;--accent:#f7a41d;--accent-ink:#9a5800;--code-bg:#e1e6ea;--again:#b4372b;--hard:#a26a08;--good:#23744f;--easy:#2a62a6;--tk-kw:#9a3f00;--tk-str:#2d6a3e;--tk-com:#7b8894;--tk-num:#2457a0;--tk-bi:#7a3e9a;--tk-ty:#00727a;--display:"Martian Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--body:"Source Serif 4", Georgia, "Times New Roman", serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e141a;--panel:#151d25;--ink:#e2e8ed;--muted:#8e9ca8;--rule:#2a3642;--accent:#f7a41d;--accent-ink:#f6b44c;--code-bg:#0a0f14;--again:#e0705f;--hard:#e0a53a;--good:#5fc08f;--easy:#6fa3e8;--tk-kw:#f6a85a;--tk-str:#8fcb8f;--tk-com:#6e7d8a;--tk-num:#82b4f0;--tk-bi:#c99be6;--tk-ty:#5cc7cf;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e141a;--panel:#151d25;--ink:#e2e8ed;--muted:#8e9ca8;--rule:#2a3642;--accent:#f7a41d;--accent-ink:#f6b44c;--code-bg:#0a0f14;--again:#e0705f;--hard:#e0a53a;--good:#5fc08f;--easy:#6fa3e8;--tk-kw:#f6a85a;--tk-str:#8fcb8f;--tk-com:#6e7d8a;--tk-num:#82b4f0;--tk-bi:#c99be6;--tk-ty:#5cc7cf;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.6}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3{text-wrap:balance}.wrap{max-width:980px;margin:0 auto;padding:0 20px}header.top{border-bottom:1px solid var(--rule);background:var(--panel)}.top .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;padding-top:14px;padding-bottom:10px;display:flex}.brand{font-family:var(--display);letter-spacing:-.02em;align-items:center;gap:10px;font-size:15px;font-weight:800;text-decoration:none;display:flex}.brand .chip{background:var(--accent);width:14px;height:14px;display:inline-block}.brand span.dim{color:var(--muted);font-weight:400}nav.main{flex-wrap:wrap;gap:4px;display:flex}nav.main a{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;border:1px solid #0000;padding:7px 11px;font-size:12px;text-decoration:none}nav.main a:hover{border-color:var(--rule)}nav.main a[aria-current=page]{border-color:var(--ink)}nav.main a .n{background:var(--accent);color:#1a1300;text-align:center;min-width:18px;margin-left:6px;padding:0 5px;font-weight:600;display:inline-block}.regline{border-top:1px dashed var(--rule)}.regline .wrap{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:6px 22px;padding-top:6px;padding-bottom:7px;font-size:12px;display:flex}.regline b{color:var(--ink);font-weight:600}.regline .sync:before{content:"";background:var(--muted);vertical-align:1px;border-radius:50%;width:7px;height:7px;margin-right:7px;display:inline-block}.regline .sync.ok:before{background:var(--good)}.regline .sync.local:before{background:var(--hard)}main{padding:36px 0 80px}.label{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px}.addr{font-family:var(--mono);color:var(--accent-ink);font-variant-numeric:tabular-nums}.btn{font-family:var(--display);border:1px solid var(--ink);background:var(--ink);color:var(--panel);cursor:pointer;align-items:center;gap:8px;padding:11px 18px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--accent);border-color:var(--accent);color:#1a1300}.btn.ghost{color:var(--ink);background:0 0}.btn.ghost:hover{background:var(--panel);color:var(--ink);border-color:var(--accent)}.btn[disabled]{opacity:.45;cursor:default}.btn[disabled]:hover{background:var(--ink);border-color:var(--ink);color:var(--panel)}.btn kbd{font-family:var(--mono);opacity:.7;font-size:11px;font-weight:400}.panel{background:var(--panel);border:1px solid var(--rule)}section.block{margin-top:44px}section.block>.head{border-bottom:1px solid var(--ink);justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;padding-bottom:6px;display:flex}section.block>.head h2{font-family:var(--display);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:14px;font-weight:600}.hero{grid-template-columns:1.3fr 1fr;gap:20px;display:grid}.hero .queue{border-left:6px solid var(--accent);flex-direction:column;gap:14px;padding:26px 28px;display:flex}.hero .big{font-family:var(--display);letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:clamp(64px,11vw,112px);font-weight:800;line-height:.9}.hero .big small{letter-spacing:0;color:var(--muted);margin-left:10px;font-size:18px;font-weight:400}.hero .split{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:16px;font-size:13px;display:flex}.hero .next{flex-direction:column;gap:10px;padding:24px 26px;display:flex}.hero .next h3{font-family:var(--body);margin:0;font-size:26px;line-height:1.2}.hero .next p{color:var(--muted);margin:0;font-size:16px}.hero .next .btn{align-self:flex-start;margin-top:auto}.stats{background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(4,1fr);gap:1px;margin-top:20px;display:grid}.stats>div{background:var(--panel);padding:14px 16px}.stats .v{font-family:var(--display);font-variant-numeric:tabular-nums;font-size:24px;font-weight:600}.hexdump{font-family:var(--mono);padding:16px 18px;font-size:14px;line-height:1.9;overflow-x:auto}.hexdump .row{white-space:nowrap;gap:18px;display:flex}.hexdump .off{color:var(--muted);width:9ch}.hexdump .bytes{gap:6px;display:flex}.hexdump .b{text-align:center;width:2.4ch;color:var(--muted)}.hexdump .b.l1{background:color-mix(in srgb, var(--accent) 25%, transparent);color:var(--ink)}.hexdump .b.l2{background:color-mix(in srgb, var(--accent) 55%, transparent);color:var(--ink)}.hexdump .b.l3{background:var(--accent);color:#1a1300;font-weight:600}.hexdump .b.today{outline:1px solid var(--ink)}.hexdump .ascii{color:var(--muted);letter-spacing:.15em}.hexnote{color:var(--muted);margin:8px 0 0;font-size:15px}.lrows{border-top:1px solid var(--rule);flex-direction:column;display:flex}.lrow{border-bottom:1px solid var(--rule);grid-template-columns:70px 1fr auto;align-items:center;gap:18px;padding:16px 4px;text-decoration:none;display:grid}.lrow:hover{background:var(--panel)}.lrow .addr{font-size:15px}.lrow h3{margin:0;font-size:21px;line-height:1.25}.lrow p{color:var(--muted);margin:2px 0 0;font-size:16px}.pill{font-family:var(--mono);border:1px solid var(--rule);white-space:nowrap;color:var(--muted);padding:3px 9px;font-size:12px}.pill.on{border-color:var(--good);color:var(--good)}.pill.due{border-color:var(--accent);background:var(--accent);color:#1a1300}.pill.new{border-color:var(--easy);color:var(--easy)}.pill.learn{border-color:var(--hard);color:var(--hard)}.partlabel{align-items:baseline;gap:14px;margin:34px 0 10px;display:flex}.partlabel h2{font-family:var(--display);margin:0;font-size:18px}.cardgrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.proj{flex-direction:column;gap:6px;padding:16px 18px;display:flex}.proj h3{margin:0;font-size:19px;line-height:1.3}.proj p{color:var(--muted);margin:0;font-size:16px}.proj .tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.proj .tags a{font-family:var(--mono);color:var(--accent-ink);font-size:12px}.res{padding:14px 18px;text-decoration:none;display:block}.res:hover{border-color:var(--accent)}.res strong{font-size:17px;display:block}.res span{color:var(--muted);font-size:15px}.lesson-head{grid-template-columns:110px 1fr;gap:6px 24px;margin-bottom:28px;display:grid}.lesson-head .addr{padding-top:10px;font-size:28px;font-weight:600;line-height:1.2}.lesson-head h1{font-family:var(--display);letter-spacing:-.035em;margin:4px 0 10px;font-size:clamp(28px,5vw,44px);font-weight:800;line-height:1.08}.lesson-head .lede{color:var(--muted);max-width:34em;margin:0;font-size:21px;font-style:italic}.prose{max-width:680px;margin-left:134px}.prose h3{font-family:var(--display);letter-spacing:-.01em;margin:40px 0 10px;font-size:16px;font-weight:600;position:relative}.prose h3 .hx{width:110px;font-family:var(--mono);color:var(--muted);font-size:13px;font-weight:400;position:absolute;top:2px;left:-134px}.prose p{margin:0 0 16px}.prose ul,.prose ol{margin:0 0 16px;padding-left:24px}.prose ol li::marker{font-family:var(--mono);font-size:.85em}.prose h3.recap{border-top:1px solid var(--ink);padding-top:18px}.toc{max-width:680px;margin:0 0 8px 134px;padding:14px 18px}.toc ol{flex-wrap:wrap;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.toc button{font-family:var(--display);border:1px solid var(--rule);background:var(--bg);cursor:pointer;text-align:left;padding:5px 9px;font-size:12px}.toc button:hover{border-color:var(--accent)}.prose h3{scroll-margin-top:16px}.prose li{margin-bottom:6px}.prose li::marker{color:var(--accent-ink)}code{font-family:var(--mono);background:var(--code-bg);white-space:nowrap;border-radius:2px;padding:1px 5px;font-size:.84em}.prose pre.astro-code{background:var(--code-bg);border-left:3px solid var(--accent);font-family:var(--mono);margin:18px 0 22px;padding:16px 18px;font-size:14px;line-height:1.6;position:relative;overflow-x:auto}.prose pre.astro-code code{font-size:inherit;white-space:pre;background:0 0;border-radius:0;padding:0}.prose pre.astro-code:after{content:attr(data-language);font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);pointer-events:none;font-size:10px;position:absolute;top:6px;right:10px}.codeblk{background:var(--code-bg);border-left:3px solid var(--accent);margin:18px 0 22px;position:relative}.codeblk .lang{font-family:var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:10px;position:absolute;top:6px;right:10px}.codeblk pre{font-family:var(--mono);margin:0;padding:16px 18px;font-size:14px;line-height:1.6;overflow-x:auto}.codeblk pre code{font-size:inherit;white-space:pre;background:0 0;padding:0}.t-kw{color:var(--tk-kw);font-weight:600}.t-str{color:var(--tk-str)}.t-com{color:var(--tk-com);font-style:italic}.t-num{color:var(--tk-num)}.t-bi{color:var(--tk-bi)}.t-ty{color:var(--tk-ty)}.note{border:1px solid var(--rule);border-left:3px solid var(--easy);background:var(--panel);margin:0 0 18px;padding:12px 16px;font-size:16px}.tbl{margin:0 0 20px;overflow-x:auto}.tbl table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:16px}.tbl th{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:left;border-bottom:1px solid var(--ink);padding:6px 12px 6px 0;font-size:11px;font-weight:600}.tbl td{border-bottom:1px solid var(--rule);vertical-align:top;padding:7px 12px 7px 0}.tryit{border:1px dashed var(--accent-ink);max-width:680px;margin:36px 0 0 134px;padding:18px 22px}.tryit .label{color:var(--accent-ink)}.tryit p{margin:6px 0 0}.deckbox{flex-direction:column;gap:14px;max-width:680px;margin:36px 0 0 134px;padding:22px;display:flex}.deckbox .row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.deckbox h3{font-family:var(--display);margin:0;font-size:15px}.deckbox details{border-top:1px solid var(--rule);padding-top:4px}.deckbox details>summary{cursor:pointer;font-family:var(--display);color:var(--muted);padding:6px 0;font-size:12px}.qlist{counter-reset:q;margin:4px 0 0;padding:0;list-style:none}.qlist li{border-bottom:1px dotted var(--rule);grid-template-columns:34px 1fr;gap:8px;padding:9px 0;font-size:16px;display:grid}.qlist li:before{counter-increment:q;content:counter(q, decimal-leading-zero);font-family:var(--mono);color:var(--muted);padding-top:3px;font-size:12px}.pager{flex-wrap:wrap;justify-content:space-between;gap:12px;max-width:680px;margin:36px 0 0 134px;display:flex}.pager a{font-family:var(--display);padding:10px 0;font-size:13px;text-decoration:none}.pager a:hover{color:var(--accent-ink)}.widget{margin:18px 0 24px;padding:18px}.bits{grid-template-columns:repeat(8,1fr);gap:6px;display:grid}.bit{border:1px solid var(--rule);background:var(--bg);cursor:pointer;font-family:var(--mono);flex-direction:column;align-items:center;gap:4px;padding:10px 0 8px;display:flex}.bit .v{font-size:26px;font-weight:600;line-height:1}.bit .w{color:var(--muted);font-size:10px}.bit[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#1a1300}.bit[aria-pressed=true] .w{color:#4a3300}.bit.sign .w{color:var(--again)}.bit[aria-pressed=true].sign .w{color:#6a1a0e}.readout{background:var(--rule);border:1px solid var(--rule);grid-template-columns:repeat(4,1fr);gap:1px;margin-top:12px;display:grid}.readout>div{background:var(--panel);padding:8px 12px}.readout .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:18px;font-weight:600}.wbtns{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.wbtns button{font-family:var(--mono);border:1px solid var(--rule);background:var(--bg);cursor:pointer;padding:6px 10px;font-size:13px}.wbtns button:hover{border-color:var(--accent)}.layout{flex-direction:column;gap:14px;display:flex}.lay-row .cap{font-family:var(--mono);margin-bottom:6px;font-size:13px}.cells{grid-template-columns:repeat(12,minmax(24px,1fr));gap:3px;display:grid}.cell{height:38px;font-family:var(--mono);border:1px solid var(--rule);justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.cell.fa{background:var(--accent);border-color:var(--accent);color:#1a1300}.cell.fb{background:var(--easy);border-color:var(--easy);color:#fff}.cell.fc{background:var(--good);border-color:var(--good);color:#fff}.cell.pad{background:repeating-linear-gradient(135deg, transparent 0 4px, var(--rule) 4px 6px);color:var(--muted);font-weight:400}.cell.none{border:1px dashed #0000}.idx{font-family:var(--mono);color:var(--muted);text-align:center;grid-template-columns:repeat(12,minmax(24px,1fr));gap:3px;margin-top:2px;font-size:10px;display:grid}.rv-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.rv-progress{background:var(--rule);height:4px;margin-bottom:18px}.rv-progress>div{background:var(--accent);width:0;height:100%;transition:width .25s}.rv-card{flex-direction:column;gap:18px;min-height:300px;padding:34px 36px;display:flex}.rv-card .tag{font-family:var(--display);color:var(--muted);align-items:baseline;gap:10px;font-size:12px;display:flex}.rv-card .tag a{color:var(--muted)}.rv-q{font-size:26px;line-height:1.35}.rv-q p,.rv-a p{margin:0 0 10px}.rv-a{border-top:1px solid var(--rule);padding-top:18px;font-size:20px}.rv-a[hidden]{display:none}.rv-actions{margin-top:18px}.grades{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.grade{border:1px solid var(--rule);background:var(--panel);cursor:pointer;font-family:var(--display);flex-direction:column;align-items:center;gap:2px;padding:12px 6px;display:flex}.grade .nm{font-size:14px;font-weight:600}.grade .iv{font-family:var(--mono);color:var(--muted);font-size:12px}.grade kbd{font-family:var(--mono);color:var(--muted);font-size:10px}.grade.g1{border-top:4px solid var(--again)}.grade.g2{border-top:4px solid var(--hard)}.grade.g3{border-top:4px solid var(--good)}.grade.g4{border-top:4px solid var(--easy)}.grade:hover{border-color:var(--ink)}.reveal{justify-content:center;width:100%;padding:16px;font-size:15px}.done{flex-direction:column;align-items:flex-start;gap:14px;padding:40px 36px;display:flex}.done h2{font-family:var(--display);letter-spacing:-.03em;margin:0;font-size:30px}.done p{color:var(--muted);margin:0}.toolbar{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.toolbar input,.toolbar select,.form input,.form select,.form textarea{border:1px solid var(--rule);background:var(--panel);padding:9px 12px;font-size:16px}.toolbar input{flex:220px}.crow{border-bottom:1px solid var(--rule);grid-template-columns:90px 1fr auto;align-items:start;gap:14px;padding:12px 4px;font-size:16px;display:grid}.crow .addr{padding-top:3px;font-size:13px}.crow .q p{margin:0}.crow .side{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.crow .del{font-family:var(--mono);color:var(--again);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}details.box{margin-top:18px;padding:0 18px}details.box>summary{cursor:pointer;font-family:var(--display);padding:14px 0;font-size:13px;font-weight:600}.form{flex-direction:column;gap:10px;padding-bottom:18px;display:flex}.form label{font-family:var(--display);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);flex-direction:column;gap:4px;font-size:11px;display:flex}.form textarea{resize:vertical;min-height:80px;font-family:var(--body)}.form .hint{color:var(--muted);margin:0;font-size:14px}.msg{font-family:var(--mono);color:var(--good);min-height:1.2em;font-size:13px}.empty{color:var(--muted);padding:26px}@media (width<=760px){body{font-size:17px}.hero{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.lesson-head{grid-template-columns:1fr}.lesson-head .addr{padding-top:0;font-size:18px}.prose,.tryit,.deckbox,.pager,.toc{margin-left:0}.prose h3 .hx{width:auto;margin-bottom:2px;display:block;position:static}.lrow{grid-template-columns:48px 1fr}.lrow .pill{grid-column:2;justify-self:start}.crow{grid-template-columns:1fr;gap:6px}.crow .side{flex-direction:row;align-items:flex-start}.grades,.readout{grid-template-columns:repeat(2,1fr)}.rv-card{padding:24px 20px}.rv-q{font-size:22px}.bit .v{font-size:20px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
