:root{--bg:#fbf8f2;--fg:#1d2321;--muted:#5c6662;--card:#fff;--line:#e3ddd1;--acc:#1f6f5c;--acc-2:#e8f3ef;--warm:#c4572c;--sun:#ffcf5a;--ok:#1d7a3a;--bad:#b3261e;--r:14px;--sh:0 1px 2px rgba(0,0,0,.05),0 6px 20px rgba(30,40,35,.06);color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#131816;--fg:#e8ece9;--muted:#a3ada8;--card:#1b2220;--line:#2c3532;--acc:#5cc6a6;--acc-2:#1d2f29;--warm:#f08a5d;--ok:#6fd38c;--bad:#ff8a80;--sh:none}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.wrap{max-width:900px;margin:0 auto;padding:0 20px}
a{color:var(--acc)}a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--sun);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;background:var(--card);padding:8px 12px;z-index:9}
.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;flex-wrap:wrap}
.brand{display:flex;gap:9px;align-items:center;font-weight:800;font-size:1.15rem;color:var(--fg);text-decoration:none;letter-spacing:-.01em}
nav a{margin-left:16px;color:var(--fg);text-decoration:none;font-weight:600;font-size:.95rem}nav a:hover{color:var(--acc)}
.stamp-pill{background:var(--acc-2);color:var(--acc)!important;padding:4px 11px;border-radius:99px}
h1{font-size:clamp(1.8rem,4.5vw,2.6rem);line-height:1.15;letter-spacing:-.02em;margin:.6em 0 .3em}
h1 em{color:var(--warm);font-style:normal}
h2{font-size:1.35rem;margin:1.6em 0 .5em;letter-spacing:-.01em}.widget h2{margin-top:0}
.lead{font-size:1.15rem;color:var(--muted);max-width:68ch}
.meta,.crumb,.muted{color:var(--muted)}.small{font-size:.88rem}.crumb{margin:1.4em 0 0;font-size:.9rem}.crumb a{color:var(--muted)}
.hero{padding:28px 0 6px}.hero .lead{font-size:1.25rem}
.btn{display:inline-block;border:2px solid var(--acc);background:var(--acc);color:#fff;font:inherit;font-weight:700;padding:9px 18px;border-radius:12px;cursor:pointer;text-decoration:none;transition:transform .12s}
@media (prefers-color-scheme:dark){.btn{color:#0d1311}}
.btn:hover{transform:translateY(-1px)}.btn:active{transform:none}.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.btn.ghost{background:transparent;color:var(--acc)}.btn.big{font-size:1.08rem;padding:12px 22px;margin:4px 6px 4px 0}.btn.small{font-size:.85rem;padding:5px 12px}
.widget{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;margin:26px 0;box-shadow:var(--sh)}
.hint{color:var(--muted);margin-top:-.3em}
.row{display:flex;gap:10px;align-items:center;margin:12px 0;flex-wrap:wrap}
label{display:block;font-weight:650;margin:12px 0 5px}label.check{font-weight:500;display:flex;gap:8px;align-items:center;margin:4px 14px 4px 0}
input[type=text],input[type=url]{width:100%;font:inherit;padding:10px 12px;border:2px solid var(--line);border-radius:10px;background:var(--bg);color:var(--fg)}
input[type=text]:focus,input[type=url]:focus{border-color:var(--acc);outline:none}
input[type=range]{width:100%;accent-color:var(--acc)}
.mono,code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
code{background:var(--acc-2);padding:1px 6px;border-radius:6px;font-size:.9em}
.out{font-size:1.15rem;background:var(--bg);padding:12px;border-radius:10px;word-break:break-word}
.prose-list li{margin:.45em 0}
dfn{font-style:normal;font-weight:700;border-bottom:2px dotted var(--acc)}
.callout{border-left:5px solid var(--acc);background:var(--acc-2);padding:12px 16px;border-radius:0 10px 10px 0;margin:18px 0}
.callout.warn{border-color:var(--warm);background:color-mix(in srgb,var(--warm) 12%,var(--card))}
.glossary dt{font-weight:750;margin-top:12px}.glossary dd{margin:2px 0 0;color:var(--muted)}.glossary.big dt{font-size:1.08rem}
.lessons{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.lcard{position:relative;display:flex;flex-direction:column;gap:6px;height:100%;padding:20px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);color:var(--fg);text-decoration:none;box-shadow:var(--sh);transition:transform .15s,border-color .15s}
.lcard:hover{transform:translateY(-3px);border-color:var(--acc)}
.lcard .num{width:34px;height:34px;border-radius:50%;background:var(--acc-2);color:var(--acc);display:grid;place-items:center;font-weight:800}
.lcard span{color:var(--muted);font-size:.95rem}.lcard small{color:var(--acc);font-weight:650;margin-top:auto}
.lcard .st.on::after{content:"✓ stamp";position:absolute;top:16px;right:14px;transform:rotate(8deg);border:2px solid var(--warm);color:var(--warm);font-weight:800;font-size:.75rem;padding:1px 7px;border-radius:6px}
.slots{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:14px;margin:18px 0}
.slot{width:112px;text-align:center}.slot .ink{display:grid;place-items:center;width:84px;height:84px;margin:0 auto 6px;border-radius:50%;border:3px dashed var(--line);color:var(--line);font-size:1.6rem;font-weight:800}
.slot small{color:var(--muted);font-size:.8rem;line-height:1.3;display:block}
.slot.on .ink{border:4px double var(--warm);color:var(--warm);transform:rotate(-9deg);background:color-mix(in srgb,var(--warm) 8%,transparent)}
.slot.fresh .ink{animation:thump .55s cubic-bezier(.2,1.6,.4,1)}
@keyframes thump{0%{transform:scale(2.2) rotate(-25deg);opacity:0}100%{transform:scale(1) rotate(-9deg);opacity:1}}
.sb-title{font-weight:800;font-size:1.15rem;color:var(--warm);min-height:1.4em}
.journey-map{width:100%;height:auto;margin:6px 0}
.journey-map rect{fill:var(--bg);stroke:var(--line);stroke-width:2;transition:fill .3s,stroke .3s}
.journey-map text{fill:var(--fg);font-size:14px;text-anchor:middle;font-weight:600}
.journey-map .node.on rect{fill:var(--acc-2);stroke:var(--acc);stroke-width:3}
.wire{stroke:var(--line);stroke-width:3;stroke-dasharray:6 6;fill:none}
.packet{fill:var(--warm);transition:cx .6s ease,cy .6s ease}
.steps{padding-left:1.4em;min-height:4.5em}.steps li{color:var(--muted);display:none}.steps li.on{display:list-item;color:var(--fg)}
.bars{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.bar{display:flex;align-items:center;gap:10px;font-size:.92rem}.bar i{display:block;height:14px;border-radius:7px;background:var(--acc);transition:width .4s}
.parts{display:grid;gap:8px;margin-top:10px}
.part{display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:baseline;padding:8px 12px;border-radius:10px;background:var(--bg);border-left:6px solid var(--c)}
.part b{font-size:.9rem}.part code{background:none;padding:0;word-break:break-all}.part p{grid-column:2;margin:0;color:var(--muted);font-size:.9rem}
.url-pretty{font-family:ui-monospace,Menlo,monospace;font-size:1.05rem;word-break:break-all;background:var(--bg);padding:12px;border-radius:10px;line-height:1.9}
.url-pretty span{color:var(--c);font-weight:700;border-bottom:3px solid var(--c)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.chip{border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:99px;padding:4px 12px;font:inherit;font-size:.88rem;cursor:pointer}.chip:hover{border-color:var(--acc)}
.sim{width:100%;height:auto;background:var(--bg);border-radius:10px;border:1px solid var(--line)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width:600px){.grid2{grid-template-columns:1fr}.part{grid-template-columns:1fr}.part p{grid-column:1}}
.toggles{align-items:flex-start}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:10px}@media (max-width:600px){.stats{grid-template-columns:repeat(2,1fr)}}
.stats div{background:var(--bg);border-radius:10px;padding:10px;text-align:center}.stats span{display:block;font-size:1.4rem;font-weight:800}.stats small{color:var(--muted)}
.mood{font-weight:700;min-height:1.5em;font-size:1.05rem}
.gauges{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.gauge{background:var(--bg);border-radius:12px;padding:14px;text-align:center}.gauge svg{width:110px;height:64px}.gauge b{display:block;font-size:1.3rem}.gauge small{color:var(--muted)}
.gauge .trk{stroke:var(--line)}.gauge .val{stroke:var(--acc);transition:stroke-dashoffset .8s}
.svc{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.svc span{background:var(--bg);border-radius:99px;padding:4px 12px;font-size:.88rem}.svc .dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--ok);margin-right:6px}.svc .down .dot{background:var(--bad)}
.crack{columns:2;font-size:.85rem}.crack li.hit{color:var(--warm);font-weight:700}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;font-size:.92rem}.kv dt{font-weight:700}.kv dd{margin:0;font-family:ui-monospace,Menlo,monospace;word-break:break-all}
.hash{font-size:.85rem;word-break:break-all;background:var(--bg);padding:8px 10px;border-radius:8px;margin:6px 0}.hash i{font-style:normal;color:var(--warm);font-weight:800}
.families{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.fam{border-radius:12px;padding:12px;background:var(--bg);border-top:5px solid var(--c)}.fam b{font-size:1.4rem;display:block}.fam span{font-weight:700;display:block}.fam small{color:var(--muted)}
.f1{--c:#7b8794}.f2{--c:#1d7a3a}.f3{--c:#2d6cdf}.f4{--c:#c4572c}.f5{--c:#b3261e}
.resp{background:var(--bg);padding:12px;border-radius:10px;white-space:pre-wrap;min-height:3em}
.card-game{font-size:1.1rem;background:var(--bg);border-radius:12px;padding:18px;text-align:center;min-height:5em}.card-game b{font-size:2.2rem;display:block}
.quiz fieldset{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin:12px 0}
.quiz legend{font-weight:700;padding:0 6px}.opt{font-weight:500;display:flex;gap:9px;align-items:baseline;margin:6px 0;cursor:pointer}
.q.right{border-color:var(--ok)}.q.wrong{border-color:var(--bad)}.fb{margin:6px 0 0;font-size:.92rem}.q.right .fb{color:var(--ok)}.q.wrong .fb{color:var(--bad)}
.qz-result{font-weight:800;font-size:1.1rem;min-height:1.5em}
.stamp-big{display:inline-grid;place-items:center;width:110px;height:110px;border-radius:50%;border:5px double var(--warm);color:var(--warm);font-size:.95rem;text-align:center;line-height:1.2;transform:rotate(-10deg);animation:thump .6s cubic-bezier(.2,1.6,.4,1);margin:10px}
.pn{display:flex;justify-content:space-between;margin:30px 0;font-weight:700}
.nf{text-align:center}.big404{font-size:6rem;font-weight:900;color:var(--warm);margin:0;line-height:1}
.foot{border-top:1px solid var(--line);margin-top:50px;padding:18px 0;color:var(--muted);font-size:.9rem}.foot a{color:var(--muted)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* lesson 6: world race + packets */
select{width:100%;font:inherit;padding:9px 10px;border:2px solid var(--line);border-radius:10px;background:var(--bg);color:var(--fg)}select:focus{border-color:var(--acc);outline:none}
.worldmap{width:100%;height:auto;margin:12px 0 4px;border-radius:12px;display:block}
.worldmap .sea{fill:color-mix(in srgb,#3b82c4 14%,var(--card))}
.worldmap .land{fill:color-mix(in srgb,var(--acc) 22%,var(--card));stroke:color-mix(in srgb,var(--acc) 35%,var(--card));stroke-width:1;stroke-linejoin:round}
.worldmap .city circle{fill:var(--muted);stroke:var(--card);stroke-width:1.5}.worldmap .city.on circle{fill:var(--warm);r:5.5}
.worldmap .route{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;opacity:.75}
.route.cable,.runner.cable,.lg.cable::before,.bar.cable i{stroke:var(--acc);background:var(--acc);fill:var(--acc)}
.route.lowsat,.runner.lowsat,.lg.lowsat::before,.bar.lowsat i{stroke:#7c5cd6;background:#7c5cd6;fill:#7c5cd6}
.route.geo,.runner.geo,.lg.geo::before,.bar.geo i{stroke:var(--warm);background:var(--warm);fill:var(--warm)}
.worldmap .route{fill:none}.worldmap .route.lowsat{stroke-dasharray:2 5}.worldmap .route.geo{stroke-dasharray:7 5}
.worldmap .runner{stroke:#fff;stroke-width:2}
.worldmap .sat rect{fill:var(--sun);stroke:var(--fg);stroke-width:1}.worldmap .sat path{stroke:var(--fg);stroke-width:2}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.88rem;color:var(--muted)}.lg::before{content:"";display:inline-block;width:18px;height:4px;border-radius:2px;margin-right:7px;vertical-align:middle}
.race{margin-top:12px}
.pk-lanes{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px}.pk-lanes h3{margin:0 0 6px;color:var(--muted)}
.pk-list{list-style:none;margin:0;padding:10px;min-height:56px;display:flex;flex-wrap:wrap;gap:6px;background:var(--bg);border-radius:10px}
.pk{display:flex;flex-direction:column;padding:4px 9px;border:2px solid var(--acc);border-radius:8px;background:var(--card);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88rem;animation:pkin .3s ease-out}
.pk small{font-family:system-ui,sans-serif;color:var(--muted);font-size:.72rem}.pk.lost{border-color:var(--warm);border-style:dashed}.pk.lost small::after{content:" · sent again"}
@keyframes pkin{from{transform:translateY(-8px);opacity:0}to{transform:none;opacity:1}}
@media (max-width:560px){.pk-lanes{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.pk{animation:none}}
.worldmap .equator{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 4;opacity:.6}.worldmap .eq-label{fill:var(--muted);font-size:10px}.worldmap .relay{fill:var(--warm);stroke:var(--card)}
.family{flex-basis:100%;font-size:.85em;line-height:1.7}
.seg{display:inline-flex;gap:0;margin-right:10px}.seg .btn{border-radius:0}.seg .btn:first-child{border-radius:10px 0 0 10px}.seg .btn:last-child{border-radius:0 10px 10px 0}
.wf-stage{position:relative;width:100%;aspect-ratio:3/2;margin:10px 0;border-radius:12px;overflow:hidden;background:var(--bg);border:1px solid var(--line);touch-action:none}
.wf-stage canvas,.wf-stage svg{position:absolute;inset:0;width:100%;height:100%}
.wf-room{font-size:15px;font-weight:700;fill:var(--fg);opacity:.55;pointer-events:none}
.wf-wall{stroke-width:9;stroke-linecap:square;cursor:pointer}.wf-wall:hover,.wf-wall:focus{stroke-width:13;outline:none}
.wf-wall.m-plaster{stroke:#d9d2c3}.wf-wall.m-brick{stroke:#b5583a}.wf-wall.m-concrete{stroke:#7d8487}.wf-wall.m-glass{stroke:#8fd3e8;stroke-dasharray:14 5}.wf-wall.m-metal{stroke:#4a5560;stroke-dasharray:3 3}
.wf-door{stroke:#a0763d;stroke-width:5;stroke-dasharray:2 6;cursor:pointer;opacity:.7}.wf-door.shut{stroke-dasharray:none;stroke-width:9;opacity:1}.wf-door:hover,.wf-door:focus{stroke-width:13;outline:none}
.wf-wall:focus-visible,.wf-door:focus-visible{stroke:var(--sun)}
.wf-obj.fridge{fill:#9aa4ab;stroke:#4a5560;stroke-width:2}.wf-obj.tank{fill:#5fb7e0;stroke:#2a7fa8;stroke-width:2}.wf-objt{font-size:12px;font-weight:700;fill:#10212b;pointer-events:none}
.wf-dev{cursor:grab;outline:none}.wf-dev rect{fill:var(--card);stroke:var(--fg);stroke-width:2.5}.wf-dev line{stroke:var(--fg);stroke-width:3;stroke-linecap:round}.wf-dev .dot{fill:var(--ok)}
.wf-dev.router rect{fill:var(--acc)}.wf-dev.mesh rect{fill:var(--warm)}.wf-dev:focus-visible rect{stroke:var(--sun);stroke-width:4}
.wf-devt{font-size:12px;font-weight:800;fill:var(--fg);paint-order:stroke;stroke:var(--bg);stroke-width:3;pointer-events:none}
.wf-ray{stroke:var(--fg);stroke-width:2;stroke-dasharray:5 5;opacity:.55;pointer-events:none}
.wf-read{display:flex;gap:16px;align-items:flex-start;margin-top:10px}.wf-read p{margin:.2em 0}.wf-sig{font-size:1.05rem}
.wf-bars{display:flex;gap:4px;align-items:flex-end;height:44px;flex:none;padding-top:4px}.wf-bars i{display:block;width:10px;border-radius:3px;background:var(--line)}
.wf-bars i:nth-child(1){height:25%}.wf-bars i:nth-child(2){height:50%}.wf-bars i:nth-child(3){height:75%}.wf-bars i:nth-child(4){height:100%}
.wf-bars.b1 i.on{background:#ee8a3c}.wf-bars.b2 i.on{background:#f2c14e}.wf-bars.b3 i.on{background:#8fc54a}.wf-bars.b4 i.on{background:#2e9d57}
.wf-key{margin-top:12px}.wf-key summary{cursor:pointer;font-weight:700}.wf-table{border-collapse:collapse;margin:10px 0;width:100%;max-width:460px}.wf-table th,.wf-table td{text-align:left;padding:4px 10px;border-bottom:1px solid var(--line)}.wf-table td{font-variant-numeric:tabular-nums}
@media (max-width:560px){.wf-room{font-size:20px}.wf-read{flex-direction:column;gap:6px}}
.wf-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:.85rem;color:var(--muted)}.hk::before{content:"";display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}.hk.h4::before{background:#2e9d57}.hk.h3::before{background:#8fc54a}.hk.h2::before{background:#f2c14e}.hk.h1::before{background:#ee8a3c}.hk.h0::before{background:#c94a3f}
/* lesson 8: deleted files */
.dl-wrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:18px;align-items:start;margin:10px 0}
.dl-disk{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;padding:10px;background:var(--bg);border:1px solid var(--line);border-radius:12px}
.blk{aspect-ratio:1;border-radius:5px;border:1px dashed var(--line);background:transparent;transition:background .25s,transform .25s}
.blk.live{background:var(--c);border:1px solid color-mix(in srgb,var(--c) 70%,#000)}
.blk.ghost{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--c) 55%,transparent) 0 4px,transparent 4px 8px);border:1px solid color-mix(in srgb,var(--c) 50%,transparent)}
.blk.zero{background:repeating-linear-gradient(0deg,var(--line) 0 2px,transparent 2px 6px);border-style:solid}
.blk.enc.live,.blk.enc.ghost{background-image:radial-gradient(circle at 30% 30%,rgba(255,255,255,.55) 0 2px,transparent 3px),radial-gradient(circle at 70% 65%,rgba(0,0,0,.35) 0 2px,transparent 3px)}
.blk.flash{animation:dlpop .45s ease-out}@keyframes dlpop{0%{transform:scale(.6)}70%{transform:scale(1.12)}100%{transform:scale(1)}}
.dk::before{content:"";display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:6px;vertical-align:-2px;border:1px dashed var(--line)}
.dk.live::before{background:var(--acc);border-style:solid}.dk.ghost::before{background:repeating-linear-gradient(135deg,var(--acc) 0 3px,transparent 3px 6px)}.dk.zero::before{background:repeating-linear-gradient(0deg,var(--muted) 0 2px,transparent 2px 5px)}
.dl-side h3{margin:0 0 6px;font-size:1rem;color:var(--muted)}
.dl-files{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:4px}
.dl-f{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;background:var(--card);cursor:pointer;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9rem}
.dl-f:has(input:checked){border-color:var(--acc);box-shadow:0 0 0 2px var(--acc-2)}.dl-f i{width:12px;height:12px;border-radius:3px;background:var(--c);flex:none}
.dl-f.inbin{opacity:.65}.dl-f small{font-family:system-ui,sans-serif;color:var(--warm)}
.dl-btns{flex-wrap:wrap;gap:6px}.btn:disabled{opacity:.45;cursor:not-allowed}
.dl-scan{list-style:none;padding:0;margin:8px 0;display:flex;flex-direction:column;gap:6px}
.dl-scan li{padding:8px 12px;border-radius:9px;background:var(--bg);border-left:4px solid var(--line)}
.dl-scan li.whole{border-color:var(--ok)}.dl-scan li.partial{border-color:var(--sun)}.dl-scan li.lost{border-color:var(--bad)}.dl-scan li.scrambled{border-color:var(--acc)}
.dl-slider{display:flex;flex-direction:column;gap:4px;margin:8px 0}.dl-slider input{width:100%;accent-color:var(--acc)}
.dl-copies{list-style:none;padding:0;margin:10px 0;display:grid;gap:8px}
.cp{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--card);transition:opacity .25s}
.cp small{grid-column:1/-1;color:var(--muted)}.cp-st{font-weight:700;text-align:right}
.cp.there .cp-st{color:var(--warm)}.cp.bin .cp-st{color:#b7860b}.cp.hidden .cp-st{color:var(--muted)}.cp.gone .cp-st{color:var(--ok)}.cp.gone,.cp.none{opacity:.6}
@media (prefers-color-scheme:dark){.cp.bin .cp-st{color:var(--sun)}}
@media (max-width:640px){.dl-wrap{grid-template-columns:1fr}.cp{grid-template-columns:1fr}.cp-st{text-align:left}}
@media (prefers-reduced-motion:reduce){.blk{transition:none}.blk.flash{animation:none}}
/* more lessons strip */
.more{margin-top:28px}.more .lessons{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.wordchips{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0}
.wordchips a{display:inline-block;padding:5px 12px;border:1px solid var(--line);border-radius:99px;background:var(--card);color:var(--acc);text-decoration:none;font-weight:650;font-size:.92rem}
.wordchips a:hover{border-color:var(--acc)}
.words{margin:26px 0 0}
.term .answer{font-size:1.15rem;background:var(--acc-2);border-radius:var(--r);padding:14px 18px;margin:12px 0 6px}
.term h2{margin-top:1.6em}.callout.like strong{display:block;margin-bottom:2px}
.related-words{list-style:none;padding:0}.related-words li{margin:10px 0}.related-words span{display:block;color:var(--muted)}
.gl-more{font-size:.88rem;white-space:nowrap;margin-left:4px}.glossary dt a{color:var(--fg);text-decoration:none}.glossary dt a:hover{color:var(--acc)}
/* lesson 9: maps & GPS */
.gp-stage{position:relative;width:100%;margin:10px 0;border-radius:12px;overflow:hidden;border:1px solid var(--line);touch-action:none}
.gp-stage svg{display:block;width:100%;height:auto;cursor:crosshair}
.gp-sea{fill:#bfe3f2}.gp-land{fill:#cfe6b0;stroke:#8fb26a;stroke-width:3}.gp-river{fill:none;stroke:#7cc4e4;stroke-width:6;stroke-linecap:round}
.gp-trees circle{fill:#6fa85a}.gp-hill{fill:#b9a27a;stroke:#8a744d;stroke-width:2}
.gp-place text{font-size:14px;font-weight:700;fill:#2f3d2a;opacity:.7;text-anchor:middle;pointer-events:none}.gp-scale{font-size:11px;fill:#24475a}
@media (prefers-color-scheme:dark){.gp-sea{fill:#183846}.gp-land{fill:#2f4a2a;stroke:#5b7d45}.gp-river{stroke:#2f6f8f}.gp-trees circle{fill:#4d7d3f}.gp-hill{fill:#6b5a3f;stroke:#8a744d}.gp-place text{fill:#e3eedc}.gp-scale{fill:#bcd8e6}}
.gp-sat rect{fill:#e9edf0;stroke:#36424a;stroke-width:2}.gp-sat .wing{fill:#3a6fb0}.gp-sat.on rect{stroke:var(--warm);stroke-width:3}.gp-satt{font-size:12px;font-weight:800;fill:#10212b;paint-order:stroke;stroke:#fff;stroke-width:3}
.gp-ring{fill:none;stroke-width:3;stroke-dasharray:8 5;pointer-events:none}.gp-ring.r0{stroke:#c4572c}.gp-ring.r1{stroke:#2d6cdf}.gp-ring.r2{stroke:#7a3fb0}.gp-ring.done{stroke-dasharray:none}
.gp-maybe{fill:rgba(255,207,90,.6);stroke:#8a6100;stroke-width:2}.gp-q{font-size:13px;font-weight:900;fill:#3b2a00;pointer-events:none}
.gp-pin{display:none;outline:none}.gp-pin.on{display:inline}.gp-pin path{fill:#e2463b;stroke:#7a1610;stroke-width:2}.gp-pin .dot{fill:#fff}.gp-pin:focus-visible path{stroke:var(--sun);stroke-width:4}
.gp-phone{display:none;pointer-events:none}.gp-phone.on{display:inline}.gp-phone rect{fill:#1d2321;stroke:#fff;stroke-width:2.5}.gp-phone .dot{fill:#5cc6a6}
.gp-aha{font-size:16px;font-weight:900;fill:var(--warm);paint-order:stroke;stroke:#fff;stroke-width:4;opacity:0}
.gp-stage.aha .gp-aha{animation:gp-aha 1.6s ease-out forwards}.gp-stage.aha .gp-phone.on{animation:gp-pop .5s ease-out}
.gp-phone.on .gp-aha{opacity:1}
@keyframes gp-aha{0%{opacity:0;transform:translateY(8px) scale(.6)}30%{opacity:1;transform:translateY(-4px) scale(1.25)}100%{opacity:1;transform:none}}
@keyframes gp-pop{0%{transform:scale(.2)}70%{transform:scale(1.2)}100%{transform:none}}
.gp-log{padding-left:1.3em;font-size:.95rem}.gp-log li{margin:.3em 0}
.dt-scene{display:block;width:100%;height:auto;margin:10px 0;border-radius:12px;border:1px solid var(--line)}
.dt-scene .sc{display:none}.s-open .sc-open,.s-city .sc-city,.s-indoors .sc-indoors,.s-tunnel .sc-tunnel{display:inline}
.dt-bg{fill:#d7ecf7}.s-tunnel .dt-bg,.s-indoors .dt-bg{fill:#efe7da}.dt-grass{fill:#a9d48a}.dt-sun{fill:#ffcf5a}.dt-tree{fill:#5f9a4c}.dt-road{fill:#8b9196}.dt-bld{fill:#9aa7b3;stroke:#5d6a75;stroke-width:2}
.dt-bounce{fill:none;stroke:#c4572c;stroke-width:2.5;stroke-dasharray:6 4}.dt-house{fill:#f6e2c4;stroke:#a3794a;stroke-width:4}.dt-door{fill:#c99a62}
.dt-earth{fill:#8a6d4d}.dt-tunnel{fill:#4b4f55}.dt-rail{fill:#b8bcc0}
.dt-ring{fill-opacity:.12;stroke-width:2.5;pointer-events:none}.dt-ring.k-sat{fill:#2d6cdf;stroke:#2d6cdf}.dt-ring.k-wifi{fill:#1d7a3a;stroke:#1d7a3a}.dt-ring.k-mast{fill:#7a3fb0;stroke:#7a3fb0}
.dt-you{fill:#1d2321;stroke:#fff;stroke-width:2}.dt-dot,.dt-halo{display:none}.dt-dot.on,.dt-halo.on{display:inline}.dt-dot{fill:#2f7bf6;stroke:#fff;stroke-width:3}.dt-halo{fill:#2f7bf6;fill-opacity:.18;stroke:#2f7bf6;stroke-opacity:.5}
.dk-you::before{background:#1d2321}.dk-dot::before{background:#2f7bf6}.dk-sat::before{background:#2d6cdf}.dk-wifi::before{background:#1d7a3a}.dk-mast::before{background:#7a3fb0}
.dt-list li.off{color:var(--muted)}
@media (prefers-reduced-motion:reduce){.gp-stage.aha .gp-aha,.gp-stage.aha .gp-phone.on{animation:none}}
.wf-obj.mw{fill:#d9dde0;stroke:#4a5560;stroke-width:2}.wf-noise{fill:#c4572c;fill-opacity:.07;stroke:#c4572c;stroke-dasharray:4 5;stroke-opacity:.6;pointer-events:none}
[hidden]{display:none!important}
@media (max-width:560px){.gp-place text{font-size:20px}.gp-satt{font-size:16px}.gp-scale{font-size:15px}}
.gp-sat.s0.on rect{stroke:#c4572c}.gp-sat.s1.on rect{stroke:#2d6cdf}.gp-sat.s2.on rect{stroke:#7a3fb0}

.dl-dw{position:relative}
.dl-disk.magging .blk{cursor:zoom-in}
.blk.peek{transform:scale(1.18);box-shadow:0 0 0 2px var(--fg)}
.blk.found{box-shadow:0 0 0 3px var(--warm);animation:dlfound 1s ease-in-out infinite alternate}
@keyframes dlfound{from{box-shadow:0 0 0 2px var(--warm)}to{box-shadow:0 0 0 4px color-mix(in srgb,var(--warm) 45%,transparent)}}
.dl-lens{--sz:calc((100% - 20px) / 8 * 1.7);position:absolute;left:calc(10px + (100% - 20px) * var(--lx,.5));top:calc(10px + (100% - 20px) * var(--ly,.5));width:0;height:0;padding:0;border:0;background:none;cursor:grab;touch-action:none;z-index:2}
.dl-lens::before{content:"";position:absolute;width:78px;height:78px;left:-39px;top:-39px;border-radius:50%;border:6px solid var(--fg);background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.55),rgba(255,255,255,.12) 60%,rgba(120,180,220,.18));box-shadow:0 4px 14px rgba(0,0,0,.25);pointer-events:auto}
.dl-lens::after{content:"";position:absolute;width:12px;height:42px;left:28px;top:26px;border-radius:6px;background:var(--warm);transform:rotate(-45deg);transform-origin:top center}
.dl-lens:active{cursor:grabbing}
.dl-lens:focus-visible::before{outline:3px solid var(--acc);outline-offset:3px}
.dl-lens-in{position:absolute;left:-36px;top:-10px;width:72px;text-align:center;font:800 11px/1.2 ui-monospace,Menlo,monospace;color:var(--fg);pointer-events:none;word-break:break-all}
.dl-lens.k-aha .dl-lens-in{color:var(--warm);font-size:12px}.dl-lens.k-scrambled .dl-lens-in{color:var(--acc)}
.dl-aha{position:absolute;left:-30px;top:-74px;width:60px;text-align:center;font-weight:900;font-size:20px;color:var(--warm);paint-order:stroke;-webkit-text-stroke:0;text-shadow:0 0 3px var(--bg),0 0 6px var(--bg);opacity:0;pointer-events:none}
.dl-lens.aha .dl-aha{animation:gp-aha 1.6s ease-out forwards}
.dl-lens.aha::before{animation:dllens .5s ease-out}@keyframes dllens{0%{transform:scale(.85)}60%{transform:scale(1.12)}100%{transform:none}}
@media (max-width:640px){.dl-lens::before{width:62px;height:62px;left:-31px;top:-31px;border-width:5px}.dl-lens::after{left:22px;top:20px;height:34px;width:10px}.dl-lens-in{font-size:10px}}
@media (prefers-reduced-motion:reduce){.dl-lens.aha .dl-aha{animation:none;opacity:1}.dl-lens.aha::before,.blk.found{animation:none}}

/* next-mystery teaser */
.nextm{margin:26px 0 30px;padding:18px 18px 10px;border-radius:var(--r);background:linear-gradient(135deg,var(--acc-2),color-mix(in srgb,var(--sun) 18%,var(--card)));border:1px dashed color-mix(in srgb,var(--acc) 45%,var(--line))}
.nextm .nm-h{margin:0 0 12px;font-size:1.05rem}
.nm-list{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.nm-card{padding:16px 18px}.nm-card strong{font-size:1.08rem;line-height:1.3}
.nm-card .nm-k{color:var(--warm);font-weight:800;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase}
.nm-card .st.on::after{content:"✓ stamp";position:absolute;top:12px;right:12px;transform:rotate(8deg);border:2px solid var(--warm);color:var(--warm);font-weight:800;font-size:.7rem;padding:1px 6px;border-radius:6px}
.nm-all{margin:10px 0 0;font-size:.95rem}
/* lesson 10: recommendations */
.rc-wrap{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px;align-items:start;border-radius:var(--r)}
.rc-h3{margin:0 0 10px;font-size:1rem}.rc-h4{margin:16px 0 2px;font-size:.95rem}
.rc-shelf{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.rc-card{display:grid;grid-template-columns:84px 1fr;gap:12px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--bg);animation:rcin .35s ease-out}
.rc-card.k-twin{border-color:var(--acc)}.rc-card.k-wild{border-style:dashed;border-color:var(--warm)}
@keyframes rcin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.rc-thumb{display:flex;align-items:center;justify-content:center;border-radius:10px;min-height:64px;font-size:2rem;background:var(--tc,#ccc)}
.t-dino{--tc:#c9e7b5}.t-space{--tc:#c7cdf2}.t-ball{--tc:#bfe3d2}.t-cook{--tc:#f6d7b0}.t-animal{--tc:#f2c6d4}.t-build{--tc:#f3e39b}
@media (prefers-color-scheme:dark){.t-dino{--tc:#33502a}.t-space{--tc:#2e3463}.t-ball{--tc:#1f4a3a}.t-cook{--tc:#5a4021}.t-animal{--tc:#5a2b3b}.t-build{--tc:#55491a}}
.rc-body strong{display:block;line-height:1.25}.rc-topic{color:var(--muted)}
.rc-why{margin:4px 0 8px;font-size:.88rem}.rc-wl{font-weight:700;color:var(--acc)}.k-wild .rc-wl{color:var(--warm)}
.rc-acts{display:flex;flex-wrap:wrap;gap:6px}
.rc-empty{padding:14px;border:1px dashed var(--line);border-radius:12px}
.rc-note{position:sticky;top:12px;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--bg)}
.rc-note h3{margin:0;font-size:1rem}
.rc-bars,.rc-twins{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.rc-bars li{display:grid;grid-template-columns:7.5em 1fr 2.2em;align-items:center;gap:8px;font-size:.88rem}
.rc-bars b{text-align:right;font-variant-numeric:tabular-nums}
.rc-bar{display:block;height:10px;border-radius:6px;background:var(--line);position:relative;overflow:hidden}
.rc-bar::after{content:"";position:absolute;inset:0 auto 0 0;width:calc(var(--w,0)*100%);background:var(--tc);border-radius:6px;transition:width .3s}
.rc-bars li.neg .rc-bar::after{background:var(--bad);opacity:.55}.rc-bars li.neg b{color:var(--bad)}
.rc-twins li{font-size:.9rem}.rc-twins b{float:right;color:var(--acc)}.rc-av{font-size:1.1rem}
.rc-hole{margin:12px 0 0;padding:8px 10px;border-radius:10px;background:var(--acc-2);font-size:.9rem}
.rc-hole.deep{background:var(--warm);color:#fff;font-weight:700}
.rc-wrap.aha{animation:rcaha .9s ease-out}
@keyframes rcaha{0%{box-shadow:0 0 0 0 var(--sun)}40%{box-shadow:0 0 0 8px var(--sun)}100%{box-shadow:0 0 0 0 transparent}}
@media (max-width:720px){.rc-wrap{grid-template-columns:1fr}.rc-note{position:static}.rc-card{grid-template-columns:60px 1fr}.rc-thumb{font-size:1.6rem;min-height:56px}}
@media (prefers-reduced-motion:reduce){.rc-card,.rc-wrap.aha{animation:none}.rc-bar::after{transition:none}}
/* Detective rank + hat stickers (stamp book) */
.det{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:20px;align-items:center;margin:16px 0 6px;padding:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg)}
@media (max-width:640px){.det{grid-template-columns:1fr}}
.hat{width:100%;max-width:380px;display:block;margin:0 auto;overflow:visible}
.tw-a{fill:#8a6a48}.tw-b{stroke:#6f5236;stroke-width:2}
.h-crown{fill:url(#tweed);stroke:#4f3a26;stroke-width:3}.h-brim{fill:#7a5c3d;stroke:#4f3a26;stroke-width:3}
.h-band{fill:#4f3a26}.h-flap{fill:#6f5236;stroke:#4f3a26;stroke-width:2}.h-bow{fill:#5a4129;stroke:#3d2b1a;stroke-width:2}
.stk .stk-in{opacity:0;transform:scale(.4);transition:opacity .25s,transform .35s cubic-bezier(.2,1.6,.4,1)}
.stk circle{fill:#fffaf2;stroke:var(--warm);stroke-width:2.5}.stk text{font-size:15px;text-anchor:middle}
.stk.on .stk-in{opacity:1;transform:none}
.stk.fresh .stk-in{animation:stkpop .7s cubic-bezier(.2,1.6,.4,1)}@keyframes stkpop{0%{transform:scale(2.2) rotate(-25deg);opacity:0}100%{transform:none;opacity:1}}
.det-l{margin:0;color:var(--muted);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.det-rank{margin:0;font-size:1.6rem;font-weight:800;color:var(--warm);line-height:1.2}.wb-chief .det-rank{color:#b8860b}
.det-next{margin:4px 0 10px;color:var(--muted)}
.ladder{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-wrap:wrap;gap:6px}
.ladder li{border:2px solid var(--line);border-radius:99px;padding:2px 10px;font-size:.8rem;color:var(--muted);display:flex;gap:6px;align-items:baseline}
.ladder li small{font-size:.7rem}.ladder li.got{border-color:var(--warm);color:var(--fg)}.ladder li.now{background:var(--warm);border-color:var(--warm);color:#fff}.ladder li.now small{color:#fff}
.det-gold{display:flex;gap:10px;align-items:center;margin:0;font-size:.92rem}
.glass{width:44px;height:44px;flex:none}.glass circle,.glass path{fill:none;stroke:#9aa39f;stroke-width:6;stroke-linecap:round}
.wb-chief .glass circle,.wb-chief .glass path{stroke:#d4a017;filter:drop-shadow(0 0 4px rgba(255,200,40,.7))}
.dcard{margin:6px 0 10px}.dcard summary{cursor:pointer;font-weight:700;color:var(--acc)}
.dc-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.dc-row input{font:inherit;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg);max-width:220px}
.dc-canvas{width:100%;height:auto;border-radius:10px;border:1px solid var(--line);margin-top:8px}
.rank-up{display:block;margin:6px 0;color:var(--warm)}.rank-up.gold{color:#b8860b}
/* Golden magnifier (all 10 stamps) in the deleted-files lesson */
.gold-note{font-size:.9rem;color:var(--muted)}.gold-note .if-chief{display:none;color:#b8860b;font-weight:700}
.wb-chief .gold-note .if-chief{display:inline}.wb-chief .gold-note .if-not{display:none}
.wb-chief .dl-lens::before{border-color:#d4a017;box-shadow:0 0 0 2px #fff3c4,0 0 18px rgba(255,200,40,.75),0 4px 14px rgba(0,0,0,.25)}
.wb-chief .dl-lens::after{background:linear-gradient(#f5d46a,#b8860b)}
@media (prefers-reduced-motion:reduce){.stk .stk-in{transition:none}.stk.fresh .stk-in{animation:none}}
/* lesson 11: face unlock */
.fc-wrap{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px;align-items:start}
.fc-design{display:grid;grid-template-columns:170px 1fr;gap:18px;align-items:start}
.fc-phone{background:#1d2321;border-radius:28px;padding:12px 9px;box-shadow:var(--sh)}
.fc-screen{position:relative;background:var(--acc-2);border-radius:20px;aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;overflow:hidden}
.fc-screen::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,color-mix(in srgb,var(--acc) 30%,transparent) 50%,transparent 60%);background-size:100% 200%;animation:fcscan 2.6s linear infinite;pointer-events:none}
@keyframes fcscan{from{background-position:0 100%}to{background-position:0 -100%}}
.fc-face{width:100%}.fc-lock{position:absolute;top:10px;font-size:1.3rem;transition:transform .3s}.fc-lock.open{transform:rotate(-12deg) scale(1.1)}
.fc-sliders label{margin:6px 0 2px;font-size:.9rem}
.fc-svg{display:block;width:100%;height:auto}
.fc-hair{fill:#3b2a20}.fc-eyew{fill:#fff;stroke:#1d2321;stroke-width:1.5}.fc-pupil{fill:#1d2321}
.fc-shut,.fc-nose,.fc-mouth{fill:none;stroke:#1d2321;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.fc-mouth{stroke:#9b3b2c}
.fc-lid{stroke:#1d2321;stroke-width:1.5}.fc-glass{fill:none;stroke:#1d2321;stroke-width:3}.fc-hat{fill:var(--warm)}
.fc-photo{fill:#fff;stroke:#bdb5a6;stroke-width:3}.fc-svg.flat{filter:saturate(.6)}
.fc-dots path{stroke:var(--acc);stroke-width:1.5;stroke-dasharray:3 3;fill:none}.fc-dots circle{fill:var(--sun);stroke:var(--acc);stroke-width:1.5}
.fc-print{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--bg)}.fc-print h3{margin:0;font-size:1rem}
.fc-print.draft .fc-nums{opacity:.55}
.fc-nums{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.fc-nums li{display:grid;grid-template-columns:9em 1fr 2.6em;align-items:center;gap:8px;font-size:.85rem}.fc-nums b{text-align:right;font-variant-numeric:tabular-nums}
.fc-bar{display:block;height:10px;border-radius:6px;background:var(--line);position:relative;overflow:hidden}.fc-bar::after{display:none}
.fc-bar i{position:absolute;inset:0 auto 0 0;background:var(--acc);border-radius:6px;transition:width .3s}
.fc-changed{margin:8px 0 0;padding:8px 10px;border-radius:10px;background:color-mix(in srgb,var(--warm) 14%,var(--card));font-size:.88rem}
.fc-controls{margin:16px 0 4px}.fc-controls output{color:var(--warm);font-weight:800}
.fc-h3{margin:14px 0 8px;font-size:1rem}
.fc-visitors{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.fc-v{display:grid;grid-template-columns:64px 1fr;gap:10px;padding:10px;border:2px solid var(--line);border-radius:12px;background:var(--bg)}
.fc-v.pop{animation:rcin .35s ease-out both;animation-delay:var(--d,0ms)}
.fc-v.open{border-color:var(--acc)}.fc-v.wrong{border-color:var(--bad);border-style:dashed}
.fc-vb{display:flex;flex-direction:column;gap:4px;font-size:.88rem}.fc-vb strong{line-height:1.2}.fc-vb small{color:var(--muted)}
.fc-v.wrong .fc-bar i{background:var(--bad)}
.fc-verdict{font-weight:800}.fc-ok{color:var(--ok);font-weight:700}.fc-bad{color:var(--bad);font-weight:800}
.fc-score{font-weight:800;margin:12px 0 0}.fc-score.perfect{color:var(--ok)}
@media (max-width:720px){.fc-wrap{grid-template-columns:1fr}.fc-design{grid-template-columns:120px 1fr}}
@media (prefers-reduced-motion:reduce){.fc-screen::after,.fc-v.pop{animation:none}}
/* Lesson 12: save-game machine */
.sv-tablet{background:#1d2321;border-radius:22px;padding:14px 16px 6px;box-shadow:var(--sh);margin:10px 0 16px}
.sv-screen{background:linear-gradient(180deg,#bfe6ff,#e9f7da 70%,#cde9b4);border-radius:12px;min-height:132px;padding:10px 12px;position:relative;transition:background .4s,filter .4s}
.sv-screen.off{background:#0b0f0e}
.sv-hud{margin:0 0 6px;font-weight:800;color:#1d2321;min-height:1.5em}.sv-screen.off .sv-hud{color:#8a9490}
.sv-path{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(12,1fr);gap:4px}
.sv-sq{aspect-ratio:1;background:#a77b4f;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:clamp(.8rem,3.4vw,1.35rem);box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}
.sv-sq.flag{background:#c79a63}.sv-sq.here{background:#e2b06b;outline:3px solid var(--sun)}
.sv-fox{display:inline-block;animation:svhop .35s ease-out}@keyframes svhop{0%{transform:translateY(-8px) scale(.9)}100%{transform:none}}
.sv-off-msg{color:#cfd6d3;margin:22px 0;text-align:center;font-size:.95rem}
.sv-tablet .btn.ghost{color:#e8ece9;border-color:#5cc6a6}.sv-tablet .btn{border-color:#5cc6a6}
.sv-mem{display:grid;grid-template-columns:1fr 1.3fr 1fr;gap:12px}
@media (max-width:700px){.sv-mem{grid-template-columns:1fr}}
.sv-box{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--bg);transition:opacity .3s}
.sv-box h3{margin:0;font-size:1rem}.sv-box h3 small{color:var(--muted);font-weight:600}.sv-box p{margin:2px 0 6px}
.sv-ram.empty .sv-code{color:var(--muted);font-style:italic}.sv-cloud.dim{opacity:.55}
.sv-code{margin:0;font:600 .82rem/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;background:var(--card);border-radius:8px;padding:6px 8px;min-height:5.2em}
.sv-slots{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sv-slot{border:2px solid var(--line);border-radius:10px;padding:6px 8px;font-size:.9rem}.sv-slot small{color:var(--muted)}
.sv-slot.good{border-color:var(--ok)}.sv-slot.bad{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--card))}
.sv-slot.fresh{animation:svwrite .6s ease-out}@keyframes svwrite{0%{box-shadow:0 0 0 6px color-mix(in srgb,var(--sun) 70%,transparent)}100%{box-shadow:none}}
@media (max-width:600px){.sv-path{grid-template-columns:repeat(6,1fr)}}
/* Lesson 13: fool the high-score server */
.sc-game{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:700px){.sc-game{grid-template-columns:1fr}}
.sc-hud{font-weight:800;margin:0 0 8px;min-height:1.5em}
.sc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-width:330px;background:#1d2321;padding:10px;border-radius:18px}
.sc-cell{aspect-ratio:1;border:0;border-radius:12px;background:#2c3a35;font-size:clamp(1.6rem,7vw,2.4rem);cursor:pointer;color:inherit;transition:background .15s,transform .12s}
.sc-cell:disabled{cursor:default;opacity:.8}.sc-cell.lit{background:#3d5c51;box-shadow:inset 0 0 0 3px var(--sun)}
.sc-cell.pop{transform:scale(.88);background:var(--sun)}.sc-cell:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.sc-side h3{margin:0 0 6px;font-size:1rem}
.sc-board{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.sc-board li{display:grid;grid-template-columns:2em 1fr auto;gap:8px;padding:6px 10px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
.sc-board li:first-child{border-top:0;font-weight:800}.sc-board li.you{background:color-mix(in srgb,var(--sun) 35%,var(--card));font-weight:800}
.sc-rk{color:var(--muted)}.sc-pt{font-weight:700}
.sc-wire{margin-top:16px}.sc-lbl{font-weight:800;display:block;margin-bottom:4px}.sc-lbl small{color:var(--muted);font-weight:600}
.sc-msg{width:100%;box-sizing:border-box;font:600 .85rem/1.45 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg);color:var(--fg);border:2px solid var(--line);border-radius:10px;padding:8px 10px;resize:vertical}
.sc-msg:focus{border-color:var(--acc);outline:none}
.sc-cheats{flex-wrap:wrap;gap:6px;align-items:center}.sc-k{font-weight:700;color:var(--muted);font-size:.9rem}
.sc-checks{border:1px solid var(--line);border-radius:12px;padding:8px 14px 10px;margin:14px 0 4px;display:flex;flex-wrap:wrap;gap:6px 18px}
.sc-checks legend{font-weight:800;padding:0 4px}
.sc-verdict ul{list-style:none;padding:0;margin:6px 0}.sc-verdict li{padding:4px 0}.sc-verdict li.pass{color:var(--ok)}.sc-verdict li.fail{color:var(--bad);font-weight:700}
.sc-stamp{display:inline-block;font-weight:900;letter-spacing:.12em;border:3px solid;border-radius:8px;padding:2px 10px;transform:rotate(-4deg);margin:6px 0 0;animation:scstamp .35s ease-out}
.sc-stamp.ok{color:var(--ok)}.sc-stamp.no{color:var(--bad)}
@keyframes scstamp{0%{transform:rotate(-4deg) scale(1.6);opacity:0}100%{transform:rotate(-4deg) scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.sc-stamp{animation:none}.sc-cell{transition:none}}
/* Lesson 14: invisible playground (multiplayer) */
.tg-wrap{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start;margin:10px 0}
@media (max-width:720px){.tg-wrap{grid-template-columns:1fr}}
.tg-tablet,.tg-server{border:1px solid var(--line);border-radius:16px;padding:10px 12px 14px;background:var(--bg)}
.tg-tablet{box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--sun) 55%,transparent)}
.tg-server{box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--acc) 45%,transparent)}
.tg-label{margin:0 0 4px;font-weight:800;font-size:.95rem}.tg-label small{color:var(--muted);font-weight:600}
.tg-hud{margin:0 0 8px;min-height:1.4em;font-size:.88rem;color:var(--muted);font-weight:650}
.tg-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:3px;background:#1d2321;padding:8px;border-radius:12px}
.tg-cell{aspect-ratio:1;border:0;border-radius:6px;background:#2c3a35;font-size:clamp(.7rem,2.8vw,1.15rem);cursor:pointer;color:inherit;padding:0;line-height:1;display:grid;place-items:center}
.tg-cell:disabled{cursor:default}.tg-cell:focus-visible{outline:3px solid var(--sun);outline-offset:1px}
.tg-cell.star{background:#3d5c51;box-shadow:inset 0 0 0 2px var(--sun)}
.tg-cell.you,.tg-cell.fox{background:#c4572c;box-shadow:inset 0 0 0 2px var(--sun)}
.tg-cell.friend{background:#355a6e}
.tg-scores{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.tg-sc{background:var(--card);border:1px solid var(--line);border-radius:99px;padding:4px 12px;font-size:.9rem}
.tg-sc b{margin-left:4px}.tg-sc.you{border-color:var(--warm);font-weight:800;background:color-mix(in srgb,var(--sun) 28%,var(--card))}
.tg-ctrls{align-items:center}.tg-lag{font-weight:700;display:flex;flex-direction:column;gap:2px;min-width:200px}
.tg-lag input{width:100%}.tg-lag output{color:var(--warm);font-weight:800}
.tg-keys{margin-top:0}
.tg-wire{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--card)}
.tg-wire h3{margin:0 0 6px;font-size:1rem}
.tg-log{list-style:none;margin:0;padding:0;max-height:9.5em;overflow:auto;font:600 .82rem/1.45 ui-monospace,SFMono-Regular,Menlo,monospace}
.tg-log li{padding:3px 0;border-top:1px solid var(--line);color:var(--muted)}.tg-log li:first-child{border-top:0}
.tg-log li.out{color:var(--fg)}.tg-log li.in{color:var(--acc)}.tg-log li.star{color:var(--warm);font-weight:800}
.tg-log li.rej{color:var(--bad)}.tg-log li.sys{font-style:italic}
@media (prefers-reduced-motion:reduce){.tg-cell{transition:none}}

/* Lesson 15: passwords */
.pw-dbs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0;opacity:.55;transition:opacity .3s}.pw-dbs.on{opacity:1}
.pw-db{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--bg);min-width:0}
.pw-db h3{margin:0 0 6px;font-size:1rem}.pw-db h3 small{display:block;color:var(--muted);font-weight:600;font-size:.8rem}
.pw-rows{list-style:none;margin:0;padding:0;font-size:.82rem}
.pw-rows li{padding:5px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.pw-rows li:first-child{border-top:0}
.pw-rows li.you b{color:var(--warm)}.pw-rows code{font:600 .78rem/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted)}
.pw-rows li.cracked{background:color-mix(in srgb,var(--bad) 10%,transparent)}.pw-rows li.safe{background:color-mix(in srgb,var(--ok) 10%,transparent)}
.pw-salt{color:var(--acc)}
.pw-tag{display:inline-block;border-radius:99px;padding:0 8px;font-weight:800;font-size:.78rem}.pw-tag.bad{background:var(--bad);color:#fff}.pw-tag.ok{background:var(--ok);color:#fff}
.pw-steal{border:1px solid var(--line);border-radius:12px;padding:6px 14px;background:var(--card);margin:10px 0}
.pw-step{margin:8px 0}.pw-step.bad b{color:var(--bad)}.pw-step.ok{font-weight:700;color:var(--ok)}
.pw-login{align-items:center}.pw-login-l{margin:0;font-weight:700}.pw-login input{flex:1;min-width:180px;width:auto}
.pw-bar{height:14px;border-radius:99px;background:var(--line);overflow:hidden;margin:10px 0 8px}
.pw-bar-in{height:100%;width:0;border-radius:99px;transition:width .25s,background .25s;background:var(--muted)}
.pw-bar-in.bad{background:var(--bad)}.pw-bar-in.meh{background:var(--sun)}.pw-bar-in.good{background:var(--ok)}
.pw-2fa{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.pw-phone{display:grid;place-items:center;gap:2px;width:150px;padding:18px 10px;border-radius:24px;background:#1d2321;color:#e8ece9;box-shadow:inset 0 0 0 4px #3a4642}
.pw-phone-t{font-size:.75rem;color:#a3ada8;font-weight:700}.pw-phone-code{font:800 1.5rem ui-monospace,Menlo,monospace;letter-spacing:.06em;color:var(--sun)}.pw-phone-left{font-size:.75rem;color:#a3ada8}
.mood.ok{color:var(--ok)}.mood.bad{color:var(--bad)}
@media (max-width:720px){.pw-dbs{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.pw-dbs,.pw-bar-in{transition:none}}
.fk-inbox{list-style:none;margin:12px 0;padding:0;display:grid;gap:12px}
.fk-msg{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--bg);transition:border-color .25s}
.fk-msg.right{border-color:var(--ok)}.fk-msg.wrong{border-color:var(--bad)}
.fk-head{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}.fk-ic{font-size:1.2rem}.fk-name{font-weight:800}.fk-sub{color:var(--muted);flex:1;min-width:12ch}.fk-n{font-size:.75rem;color:var(--muted)}
.fk-body{margin:8px 0}.fk-note{margin:6px 0 0;font-size:.85rem;color:var(--acc);font-weight:700}
.fk-btn{display:inline-block;padding:4px 12px;border-radius:8px;background:var(--acc);color:#fff;font-weight:800;font-size:.85rem;overflow-wrap:anywhere}
.fk-look{border-left:4px solid var(--sun);padding:4px 12px;margin:8px 0;background:var(--card);border-radius:0 8px 8px 0}.fk-look p{margin:6px 0}
.fk-url{font:600 .85rem/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}.fk-url.big{font-size:1rem}
.fk-own{color:var(--warm);background:color-mix(in srgb,var(--sun) 25%,transparent);border-radius:4px;padding:0 3px}.fk-pre,.fk-scheme,.fk-path{color:var(--muted)}
.fk-act{margin-top:6px}.fk-verdict{font-weight:800;margin:8px 0 4px}.fk-msg.right .fk-verdict{color:var(--ok)}.fk-msg.wrong .fk-verdict{color:var(--bad)}
.fk-clues{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:4px 0;padding:0}.fk-clues li{border:1px solid var(--line);border-radius:99px;padding:1px 10px;font-size:.8rem;font-weight:700;background:var(--card)}
.fk-ex{flex-wrap:wrap}.fk-x-out{margin-top:10px}.fk-owner{font-size:1.05rem}.fk-flags{margin:6px 0;padding-left:1.2em}.fk-flags li{margin:4px 0}.fk-clean{color:var(--ok)}
@media (prefers-reduced-motion:reduce){.fk-msg{transition:none}}
/* Lesson 17: bots & crawlers */
.bt-opts{gap:8px 18px}.bt-tg{display:inline-flex;gap:6px;align-items:center;font-weight:600}
.bt-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px}@media (max-width:720px){.bt-grid{grid-template-columns:1fr}}
.bt-sub{font-size:1rem;margin:8px 0 6px}
.bt-web{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.bt-pg{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:center;border:1px solid var(--line);border-left:5px solid var(--line);border-radius:10px;padding:6px 10px;background:var(--bg);transition:border-color .25s,background .25s}
.bt-pg.s1{border-left-color:#e0a03a}.bt-pg.s2{border-left-color:#3a8fd6}.bt-pg.s3{border-left-color:#9a6ad6}
.bt-u{font:600 .82rem/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere;flex:1;min-width:14ch}
.bt-st{font-size:.78rem;color:var(--muted)}
.bt-pg.todo{background:color-mix(in srgb,var(--sun) 18%,var(--bg))}.bt-pg.done{background:var(--acc-2)}.bt-pg.done .bt-st{color:var(--ok);font-weight:700}
.bt-pg.skip{opacity:.7}.bt-pg.skip .bt-st{font-weight:700}.bt-pg.block{background:color-mix(in srgb,var(--bad) 14%,var(--bg))}.bt-pg.block .bt-st{color:var(--bad);font-weight:700}
.bt-key{font-size:.8rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.bt-dot{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--line);vertical-align:middle}
.bt-dot.todo{background:color-mix(in srgb,var(--sun) 40%,var(--bg))}.bt-dot.done{background:var(--acc)}.bt-dot.skip{background:var(--line)}.bt-dot.block{background:var(--bad)}
.bt-log{margin:0;padding-left:1.3em;font-size:.88rem;display:grid;gap:4px;min-height:6em}
.bt-log .sign{color:var(--acc)}.bt-log .skip{color:var(--muted)}.bt-log .block{color:var(--bad);font-weight:700}
.bt-search{margin-top:14px;border-top:1px dashed var(--line);padding-top:8px}
.bt-res{padding-left:1.3em}.bt-res li{margin:4px 0}
.bh-list{list-style:none;margin:12px 0;padding:0;display:grid;gap:10px}
.bh-c{border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--bg)}.bh-c.right{border-color:var(--ok)}.bh-c.wrong{border-color:var(--bad)}
.bh-d{margin:0}.bh-act{margin-top:6px}.bh-v{margin:6px 0 0;font-weight:600}
@media (prefers-reduced-motion:reduce){.bt-pg{transition:none}}
.ck-browser{border:2px solid var(--line);border-radius:12px;overflow:hidden;margin:10px 0;background:var(--bg)}
.ck-bar{margin:0;padding:6px 12px;background:var(--acc-2);font-size:.88rem;border-bottom:1px solid var(--line)}.ck-addr{font-family:ui-monospace,monospace}
.ck-page{padding:12px 16px;min-height:4.5em}.ck-hello{font-size:1.15rem;font-weight:700;margin:0 0 4px}.ck-basket{margin:0;color:var(--muted)}
.ck-acts{flex-wrap:wrap;gap:6px}.ck-tg{display:inline-flex;gap:6px;align-items:center;font-weight:600;margin:8px 0}
.ck-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px}@media (max-width:720px){.ck-grid{grid-template-columns:1fr}}
.ck-jar{list-style:none;margin:0;padding:0;display:grid;gap:6px;min-height:3em}
.ck-c{display:flex;flex-wrap:wrap;gap:2px 8px;align-items:center;border:1px solid var(--line);border-left:5px solid var(--sun);border-radius:10px;padding:6px 10px;background:var(--bg);animation:ck-pop .3s ease-out}
.ck-c.ses{border-left-color:var(--acc)}.ck-c small{flex-basis:100%;color:var(--muted)}.ck-c code{word-break:break-all}
.ck-empty{color:var(--muted);font-style:italic}
.ck-lbl{margin:6px 0 2px;font-size:.85rem;font-weight:600}
.ck-msg{margin:0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);font-size:.8rem;white-space:pre-wrap;word-break:break-all}
@keyframes ck-pop{from{transform:scale(.9);opacity:.3}to{transform:none;opacity:1}}
.tr-sites{list-style:none;margin:10px 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media (max-width:720px){.tr-sites{grid-template-columns:1fr}}
.tr-s{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--bg);display:grid;gap:8px;align-content:start}
.tr-top{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:center}.tr-ic{font-size:1.4rem}
.tr-ad{border:2px dashed var(--bad);border-radius:8px;padding:6px 8px;font-size:.88rem;min-height:2.6em}.tr-adl{display:block;font-size:.72rem;color:var(--bad);font-weight:700}
.tr-book{border-top:1px dashed var(--line);padding-top:6px}.tr-list{padding-left:1.3em}.tr-list li{margin:4px 0}
.fp-list{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:10px 0}.fp-list dt{font-weight:700}.fp-list dd{margin:0;word-break:break-word}
@media (max-width:520px){.fp-list{grid-template-columns:1fr}.fp-list dd{margin-bottom:6px}}
@media (prefers-reduced-motion:reduce){.ck-c{animation:none}}
/* The Big Case */
.bc-pic{width:100%;height:auto;border-radius:12px;display:block;margin:10px 0;background:#0e1830}
.bc-s1{stop-color:#0e1830}.bc-s2{stop-color:#2a3d6b}.bc-star{fill:#fff7d6;opacity:.85}.bc-moon{fill:#ffe9a8}.bc-moon-c{fill:#152245}
.bc-sat rect{fill:#c9d2e3}.bc-sat .bc-panel{fill:#3b6fd1}.bc-wire,.bc-ant{stroke:#c9d2e3;stroke-width:2}.bc-beam{stroke:#ffe9a8;stroke-width:1;stroke-dasharray:3 5;opacity:.5;fill:none}
.bc-bld{fill:#1c2a4a}.bc-win{fill:#2b3a5e}.bc-win.lit{fill:#ffcf5a}
.bc-mast{stroke:#9fb0cf;stroke-width:3}.bc-tip{fill:#ff6b5a}.bc-wave{fill:none;stroke:#5cc6a6;stroke-width:2.2;stroke-linecap:round;opacity:.9}
.bc-cable{fill:none;stroke:#5c7099;stroke-width:1.6}.bc-pkt{fill:#5cc6a6}
.bc-wall{fill:#f3d9b5}.bc-roof{fill:#c4572c}.bc-sign{fill:#1f6f5c}.bc-signt{fill:#fff;font:800 11px system-ui,sans-serif;text-anchor:middle;letter-spacing:.06em}
.bc-door{fill:#8a4b2a}.bc-shop{fill:#ffcf5a}.bc-cookie{fill:#d9a05b;stroke:#8a5a2b;stroke-width:2}.bc-chip,.bc-chip2{fill:#4a2c17}
.bc-ground{fill:#16301f}.bc-bot rect{fill:#9aa6b8}.bc-eye{fill:#ff6b5a}.bc-net{fill:none;stroke:#e8ece9;stroke-width:1.4;opacity:.85}
.bc-429{fill:#ff8a80;font:800 13px system-ui,sans-serif;text-anchor:middle}.bc-mag circle{fill:rgba(255,255,255,.12);stroke:#e2b13c;stroke-width:5}.bc-mag path{stroke:#e2b13c;stroke-width:7;stroke-linecap:round}
.bc-jar rect{fill:rgba(220,240,255,.75);stroke:#fff;stroke-width:1}.bc-jar .bc-lid{fill:#c4572c}
.fog{transition:opacity .9s ease;cursor:pointer}.fog.off{opacity:0;pointer-events:none}
.fog-r{fill:#d8d1c3;stroke:#fbf8f2;stroke-width:2}.fog-a{fill:transparent}.fog-b{stroke:#c4bba9;stroke-width:1.4}
.fog-n{font:800 30px system-ui,sans-serif;fill:#8f8676;text-anchor:middle}.fog-q{font:600 10px system-ui,sans-serif;fill:#8f8676;text-anchor:middle}
.fog:hover .fog-r,.fog:focus .fog-r{fill:#e9e2d3}.fog:focus{outline:none}.fog:focus .fog-r{stroke:#1f6f5c;stroke-width:4}
@media (prefers-color-scheme:dark){.fog-r{fill:#2c3532;stroke:#131816}.fog-b{stroke:#3a4541}.fog-n,.fog-q{fill:#a3ada8}.fog:hover .fog-r{fill:#36413d}}
.bc-pic.complete .bc-win.lit{animation:twinkle 3s ease-in-out infinite alternate}.bc-pic.complete .bc-pkt{animation:pulse 1.4s ease-in-out infinite}
.bc-pic.complete .bc-pkt.p1,.bc-pic.complete .bc-pkt.p4{animation-delay:.5s}.bc-pic.complete .bc-pkt.p2,.bc-pic.complete .bc-pkt.p5{animation-delay:.9s}
@keyframes twinkle{from{opacity:1}to{opacity:.55}}@keyframes pulse{50%{opacity:.25}}
.bc-count{font-weight:800;color:var(--warm);min-height:1.4em}.bc-done{background:var(--acc-2);padding:10px 14px;border-radius:10px}
.suspects{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:16px 0}
.sus{position:relative;background:var(--bg);border:2px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;transition:opacity .4s,border-color .3s}
.sus-i{font-size:1.8rem}.sus small{color:var(--muted)}.sus-x{display:none;position:absolute;top:12px;right:8px;transform:rotate(10deg);border:2px solid var(--ok);color:var(--ok);font-weight:800;font-size:.7rem;padding:1px 6px;border-radius:6px}
.sus.out{opacity:.55}.sus.out .sus-x{display:block}.sus.caught{border-color:var(--warm);background:color-mix(in srgb,var(--warm) 10%,var(--card))}
.sus.caught .sus-x{display:block;border-color:var(--warm);color:var(--warm)}.sus.caught .sus-x::after{content:"";}
.clue{border:2px solid var(--line);border-radius:12px;padding:12px 16px;margin:14px 0}.clue legend{font-weight:800;padding:0 6px}
.clue.right{border-color:var(--ok)}.clue.wrong{border-color:var(--bad)}.clue .fb{min-height:1.2em;font-weight:600}
.ev{background:#1d2321;color:#e8ece9;padding:12px 14px;border-radius:10px;overflow-x:auto;font-size:.85rem;line-height:1.5;white-space:pre-wrap}
.cq{font-weight:700;margin:10px 0 4px}.cl-help{font-size:.9rem;margin-left:8px}.accs{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.acc.no{text-decoration:line-through;opacity:.6}
.bc-solved{display:flex;gap:18px;align-items:flex-start;background:color-mix(in srgb,var(--warm) 8%,var(--card));border:2px solid var(--warm);border-radius:14px;padding:16px;margin-top:16px}
.bc-solved h3{margin-top:0}.bc-seal{flex:none;width:96px;height:96px;border-radius:50%;border:5px double var(--warm);color:var(--warm);display:grid;place-items:center;text-align:center;font-weight:900;line-height:1.05;transform:rotate(-12deg);margin:6px 0 0}
.bc-grand{background:var(--acc-2);padding:8px 12px;border-radius:10px}
.bc-case{position:relative;overflow:hidden}.bc-confetti{position:absolute;inset:0;pointer-events:none}
.bc-confetti span{position:absolute;top:-30px;font-size:1.4rem;animation:fall 2.2s ease-in forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(540deg);opacity:0}}
.bigcase-cta{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
@media (max-width:560px){.bc-solved{flex-direction:column}.fog-q{display:none}}
@media (prefers-reduced-motion:reduce){.fog{transition:none}.bc-pic.complete .bc-win.lit,.bc-pic.complete .bc-pkt{animation:none}.bc-room .bc-rm-door,.bc-dragon-svg .bc-dg-flame,.bc-dragon-svg .bc-crumb,.bc-dragon-svg .bc-dragon{transition:none;animation:none}}
/* Big Case: secret bakery room + Master Dragon + certificate (Iteration 54) */
.bc-solved-body{flex:1;min-width:0}.bc-room{margin:14px 0;padding:12px;border-radius:12px;background:color-mix(in srgb,var(--acc) 6%,var(--card));border:1px solid var(--line)}
.bc-room-lead{margin:0 0 10px}.bc-room-svg,.bc-dragon-svg{width:100%;height:auto;display:block;border-radius:12px;margin:8px 0}
.bc-rm-wall{fill:#f3d9b5}.bc-rm-floor{fill:#c9a57a}.bc-rm-shelf{fill:#8a4b2a}.bc-rm-cook{fill:#d9a05b;stroke:#8a5a2b;stroke-width:1.5}.bc-rm-chip{fill:#4a2c17}
.bc-rm-jar rect{fill:rgba(220,240,255,.85);stroke:#fff;stroke-width:2}.bc-rm-lid{fill:#c4572c}.bc-rm-jarlab,.bc-rm-cakelab,.bc-rm-sign,.bc-rm-doorlab{font:700 11px system-ui,sans-serif;fill:#5c4030}
.bc-rm-plate{fill:#e8ece9}.bc-rm-tier{fill:#f6c98a}.bc-rm-frost{fill:#fff6ea}.bc-rm-cherry{fill:#c4572c}
.bc-rm-icing{font:800 13px Georgia,serif;fill:#c4572c}
.bc-rm-frame{fill:#8a4b2a}.bc-rm-inside{fill:#5a3a22}.bc-rm-doorface{fill:#a85c32}.bc-rm-knob{fill:#e2b13c}
.bc-rm-door{transform-origin:0% 50%;transform-box:fill-box;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.bc-room.open .bc-rm-door{transform:perspective(400px) rotateY(-72deg)}
.bc-room.instant .bc-rm-door,.bc-room.instant.open .bc-rm-door{transition:none}
.bc-name-lab{display:block;font-weight:700;margin:10px 0 4px}.bc-name-lab .mute{font-weight:500;color:var(--muted);font-size:.9em}
.bc-name{width:min(320px,100%);padding:8px 12px;border:2px solid var(--line);border-radius:10px;background:var(--bg);color:inherit;font:inherit}
.bc-name:focus{outline:3px solid var(--acc);outline-offset:2px}.bc-name-hint{margin-top:4px}
.bc-master{margin:16px 0;padding:14px;border-radius:14px;border:2px solid #c99a1c;background:color-mix(in srgb,#c99a1c 10%,var(--card))}
.bc-dg-sky{fill:#152245}.bc-dragon .bc-dg-body{fill:#1f6f5c}.bc-dg-belly{fill:#5cc6a6}.bc-dg-head{fill:#1f6f5c}.bc-dg-snout{fill:#167a62}
.bc-dg-eye{fill:#fff}.bc-dg-pupil{fill:#1d2321}.bc-dg-horn{fill:#c99a1c}.bc-dg-wing{fill:#14856a;opacity:.9}.bc-dg-wing2{opacity:.7}
.bc-dg-tail{fill:none;stroke:#1f6f5c;stroke-width:10;stroke-linecap:round}.bc-dg-label{font:800 13px system-ui,sans-serif;fill:#ffe9a8}
.bc-dg-f1{fill:#ff8a40;opacity:0}.bc-dg-f2{fill:#ffcf5a;opacity:0}
.bc-crumb circle{fill:#d9a05b;stroke:#8a5a2b;stroke-width:1.5}.bc-crumb-chip{fill:#4a2c17}.bc-crumb text{font:700 10px system-ui,sans-serif;fill:#ff8a80}
.bc-dragon-svg.eating .bc-dg-f1,.bc-dragon-svg.eating .bc-dg-f2{animation:bc-flame .5s ease-in-out 2}
.bc-dragon-svg.eating .bc-crumb{animation:bc-eaten 1.6s ease forwards}
.bc-dragon-svg.eating .bc-crumb[data-i="1"]{animation-delay:.15s}.bc-dragon-svg.eating .bc-crumb[data-i="2"]{animation-delay:.3s}.bc-dragon-svg.eating .bc-crumb[data-i="3"]{animation-delay:.45s}
.bc-dragon-svg.eating .bc-dragon{animation:bc-chomp .55s ease-in-out 2}
.bc-dragon-svg.ate .bc-crumb{opacity:0;visibility:hidden}.bc-dragon-svg.ate .bc-dg-f1,.bc-dragon-svg.ate .bc-dg-f2{opacity:0}
@keyframes bc-flame{0%,100%{opacity:0}40%{opacity:1}}
@keyframes bc-eaten{0%{opacity:1;transform:translate(0,0) scale(1)}70%{opacity:.6;transform:translate(80px,-40px) scale(.5)}100%{opacity:0;transform:translate(140px,-20px) scale(.1)}}
@keyframes bc-chomp{0%,100%{transform:translate(0,0)}50%{transform:translate(-18px,0)}}
.bc-cert-lead{margin:10px 0}.bc-cert-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.bc-cert{width:100%;max-width:640px;height:auto;display:block;margin:10px 0;border-radius:10px;border:1px solid var(--line);background:#fbf8f2}
@media (prefers-color-scheme:dark){.bc-rm-wall{fill:#4a3728}.bc-rm-floor{fill:#2f241c}.bc-rm-sign,.bc-rm-jarlab,.bc-rm-cakelab,.bc-rm-doorlab{fill:#e8d5c0}.bc-rm-frost{fill:#3a3028}.bc-rm-icing{fill:#ffb089}.bc-name{background:var(--card)}}

.ht-stage{display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:12px;align-items:stretch}.ht-phone{max-width:240px}
@media (max-width:600px){.ht-stage{grid-template-columns:1fr}.ht-phone{max-width:200px;margin:0 auto}}
.ht-lab{font-weight:700;margin:14px 0 0}
/* bonus: emoji */
.em-in{width:100%;font:inherit;font-size:1.25rem;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:var(--bg);color:var(--fg);margin:6px 0}
.em-cards{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin:12px 0}
.em-card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px}.em-glyph{font-size:2.2rem;line-height:1.2;display:block}
.em-meta{font-size:.8rem;color:var(--muted);font-weight:700}.em-cps{list-style:none;padding:0;margin:6px 0 0;font-size:.82rem}.em-cps li{padding:2px 0}
.em-cp code,.em-pill code{font-size:.78rem}.em-glue{color:var(--warm)}.em-mod{color:var(--acc)}.em-flag{color:var(--acc)}
.em-scenes{list-style:none;padding:0;margin:12px 0}.em-scene{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:10px 0;background:var(--bg)}
.em-scene.done{border-color:var(--ok)}.em-where{margin:0}.em-screen{font-family:ui-monospace,Menlo,Consolas,monospace;background:#111;color:#e8ece9;border-radius:10px;padding:10px 12px;margin:8px 0;word-break:break-all;font-size:1.05rem}
.em-big{font-size:4rem;line-height:1.2;margin:10px 0;text-align:center;min-height:1.2em}.em-recipe{text-align:center;line-height:2}
.em-pill{display:inline-block;border:1px solid var(--line);border-radius:99px;padding:2px 10px;background:var(--bg)}.em-pill.em-glue{border-style:dashed}

/* /hot blanket tug */
.bl-stage{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr);gap:16px;align-items:start;margin-top:10px}
.bl-canvas{width:100%;max-width:480px;touch-action:none;cursor:grab;user-select:none}
.bl-canvas:active{cursor:grabbing}
.bl-side .bl-lab{font-weight:700;margin:0 0 6px}
.bl-stats{grid-template-columns:repeat(3,1fr)}
@media (max-width:700px){.bl-stage{grid-template-columns:1fr}.bl-canvas{max-width:100%;margin:0 auto}}
@media (prefers-reduced-motion:reduce){.bl-canvas{cursor:default}}

/* /invisible ghost footprints */
.gf-stage{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.9fr);gap:16px;align-items:start;margin-top:10px}
.gf-sand{position:relative;min-height:140px;border-radius:16px;border:2px solid var(--line);overflow:hidden;background:
  repeating-linear-gradient(0deg,rgba(210,180,140,.35) 0 2px,transparent 2px 8px),
  repeating-linear-gradient(90deg,rgba(210,180,140,.25) 0 2px,transparent 2px 10px),
  linear-gradient(180deg,#f4e4c4,#e8d2a8);touch-action:none;user-select:none}
.dk .gf-sand{background:
  repeating-linear-gradient(0deg,rgba(120,90,50,.35) 0 2px,transparent 2px 8px),
  repeating-linear-gradient(90deg,rgba(120,90,50,.25) 0 2px,transparent 2px 10px),
  linear-gradient(180deg,#3a3228,#2a241c)}
.gf-msg{position:absolute;inset:18px 16px 48px;display:flex;align-items:center;justify-content:center;font:800 1.6rem/1.2 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.12em;color:#5c4030;pointer-events:none;white-space:pre}
.dk .gf-msg{color:#e8d2a8}
.gf-prints{position:absolute;left:0;right:0;bottom:18px;height:56px;pointer-events:none}
.gf-print{position:absolute;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:2px;animation:gf-pop .45s ease-out}
.gf-print-ico{font-size:1.4rem;filter:drop-shadow(0 0 6px rgba(120,180,255,.8))}
.gf-print-lab{font:800 10px/1 ui-monospace,Menlo,monospace;background:rgba(255,255,255,.85);color:#1f3a5c;border-radius:6px;padding:2px 5px}
.dk .gf-print-lab{background:rgba(20,30,45,.9);color:#cfe3ff}
@keyframes gf-pop{0%{transform:translateX(-50%) scale(.6);opacity:0}70%{transform:translateX(-50%) scale(1.08)}100%{transform:translateX(-50%) scale(1);opacity:1}}
.gf-lens{position:absolute;top:28%;width:0;height:0;padding:0;border:0;background:none;cursor:grab;z-index:3;transform:translate(-50%,-50%)}
.gf-lens:active{cursor:grabbing}
.gf-lens::before{content:"";position:absolute;width:78px;height:78px;left:-39px;top:-39px;border-radius:50%;border:6px solid var(--fg);background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.55),rgba(255,255,255,.1) 55%,rgba(120,180,220,.22));box-shadow:0 4px 14px rgba(0,0,0,.25)}
.gf-lens::after{content:"";position:absolute;width:12px;height:42px;left:28px;top:26px;border-radius:6px;background:var(--warm);transform:rotate(-45deg);transform-origin:top center}
.gf-lens.hit::before{border-color:var(--acc);box-shadow:0 0 0 3px color-mix(in srgb,var(--acc) 35%,transparent),0 0 18px rgba(100,180,255,.55)}
.gf-lens:focus-visible::before{outline:3px solid var(--acc);outline-offset:3px}
.gf-lens-in{position:absolute;left:-36px;top:-8px;width:72px;text-align:center;font:800 11px/1.2 ui-monospace,Menlo,monospace;color:var(--acc);pointer-events:none}
.gf-aha{position:absolute;left:-20px;top:-58px;font:800 12px/1 system-ui,sans-serif;color:var(--warm);background:color-mix(in srgb,var(--warm) 18%,var(--card));border:1px solid var(--warm);border-radius:8px;padding:3px 7px;pointer-events:none}
.gf-side .gf-lab{font-weight:700;margin:0 0 6px}
.gf-found{list-style:none;padding:0;margin:10px 0 0;font-size:.92rem}
.gf-found li{padding:3px 0;border-bottom:1px dashed var(--line)}
.gf-ta{width:100%;font:inherit;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:var(--bg);color:var(--fg);margin:6px 0;resize:vertical;min-height:4.5em}
.gf-strip{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0;min-height:2em}
.gf-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:10px;padding:4px 8px;background:var(--bg);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92rem}
.gf-chip.ghost{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 12%,var(--card));font-weight:700}
.gf-chip.space{color:var(--muted)}
@media (max-width:700px){.gf-stage{grid-template-columns:1fr}.gf-msg{font-size:1.25rem;letter-spacing:.08em}.gf-lens::before{width:64px;height:64px;left:-32px;top:-32px;border-width:5px}.gf-lens::after{left:22px;top:20px;height:34px;width:10px}}
@media (prefers-reduced-motion:reduce){.gf-print{animation:none}.gf-sand{cursor:default}}

/* /invisible Iteration 74: character cards + repair-a-message + space-is-good */
.gf-card{margin-top:12px;padding:12px 14px;border-radius:14px;border:2px solid var(--line);background:color-mix(in srgb,var(--acc) 8%,var(--card));}
.gf-card[data-kind="good"]{border-color:color-mix(in srgb,#2a9d6a 55%,var(--line));background:color-mix(in srgb,#2a9d6a 10%,var(--card));}
.gf-card[data-kind="trouble"]{border-color:color-mix(in srgb,var(--warm) 55%,var(--line));background:color-mix(in srgb,var(--warm) 10%,var(--card));}
.gf-card[data-kind="useful"]{border-color:color-mix(in srgb,var(--acc) 55%,var(--line));}
.gf-card[data-kind="watch"]{border-color:color-mix(in srgb,#c9a227 55%,var(--line));background:color-mix(in srgb,#c9a227 10%,var(--card));}
.gf-card-kicker{margin:0 0 4px;font:700 11px/1.2 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
.gf-card-name{margin:0 0 4px;font-size:1.05rem;}
.gf-card-cp{margin:0 0 8px;font-size:.9rem;}
.gf-card-does{margin:0;font-size:.95rem;}
.gf-found-btn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left;}
.gf-found-btn:hover,.gf-found-btn:focus-visible{color:var(--acc);text-decoration:underline;}
.gf-chip{cursor:pointer;font:inherit;}
button.gf-chip{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92rem;}
.gf-chip.good,.gf-chip.space.good{border-color:color-mix(in srgb,#2a9d6a 50%,var(--line));background:color-mix(in srgb,#2a9d6a 12%,var(--card));color:inherit;font-weight:700;}
.gf-space-callout{margin:16px 0;}
.rp-strip{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0;min-height:2.4em;}
.rp-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:10px;padding:5px 9px;background:var(--bg);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92rem;cursor:pointer;color:var(--fg);}
.rp-chip.lock{cursor:default;opacity:.95;}
.rp-chip.keep{border-color:color-mix(in srgb,#2a9d6a 50%,var(--line));background:color-mix(in srgb,#2a9d6a 12%,var(--card));font-weight:700;}
.rp-chip.replace{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 12%,var(--card));font-weight:700;}
.rp-chip.replace.fixed{border-color:color-mix(in srgb,#2a9d6a 50%,var(--line));background:color-mix(in srgb,#2a9d6a 12%,var(--card));opacity:1;text-decoration:none;filter:none;}
.rp-chip.drop{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 12%,var(--card));font-weight:700;}
.rp-chip.gone{opacity:.35;text-decoration:line-through;filter:grayscale(.4);}
.rp-chip.keep.gone{border-color:var(--warm);background:color-mix(in srgb,var(--warm) 12%,var(--card));}
.rp-case.done{outline:2px solid color-mix(in srgb,#2a9d6a 45%,transparent);border-radius:12px;padding:8px;}
@media (prefers-reduced-motion:reduce){.rp-chip,.gf-card{transition:none}.gf-print{animation:none}}


/* /compress — video-call compression bonus */
.vc-stage{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr);gap:16px;align-items:start;margin-top:10px}
.vc-canvas,.bb-canvas{width:100%;height:auto;touch-action:none}
.vc-side label{display:block;font-weight:700;margin:0 0 6px}
.vc-side input[type=range]{width:100%;margin:0 0 12px}
.vc-stats{grid-template-columns:repeat(2,1fr)}
.vc-table-wrap{overflow-x:auto;margin:8px 0}
.vc-table{width:100%;border-collapse:collapse;font-size:.95rem}
.vc-table th,.vc-table td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.vc-table th{background:var(--bg);font-weight:750}
.vc-table tbody tr:nth-child(even){background:color-mix(in srgb,var(--acc) 5%,var(--card))}
@media (max-width:700px){.vc-stage{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.vc-canvas,.bb-canvas{/* static frames only */}}

/* /resume — interrupted downloads / byte ranges bonus */
.rs-stage{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.95fr);gap:16px;align-items:start;margin-top:10px}
.rs-track{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:12px;border-radius:16px;border:1px solid var(--line);background:var(--bg);min-height:120px}
.rs-piece{display:flex;align-items:center;justify-content:center;min-height:44px;border-radius:12px;border:2px dashed var(--line);font:800 13px/1 ui-monospace,Menlo,Consolas,monospace;color:var(--muted);background:color-mix(in srgb,var(--card) 80%,transparent);transition:background .2s,border-color .2s,color .2s,transform .2s}
.rs-piece.have{border-style:solid;border-color:color-mix(in srgb,var(--acc) 55%,var(--line));background:color-mix(in srgb,var(--acc) 18%,var(--card));color:var(--fg)}
.rs-piece.active{border-color:var(--warm);box-shadow:0 0 0 3px color-mix(in srgb,var(--warm) 28%,transparent);transform:scale(1.04)}
.rs-side .row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.rs-stats{grid-template-columns:repeat(2,1fr)}
.rs-code{display:block;white-space:pre-wrap;word-break:break-word;font:500 12.5px/1.45 ui-monospace,Menlo,Consolas,monospace;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:10px 0;color:var(--fg)}
.rg-canvas{width:100%;height:auto;border-radius:12px;border:1px solid var(--line);margin:8px 0 12px}
@media (max-width:700px){.rs-stage{grid-template-columns:1fr}.rs-track{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){.rs-piece{transition:none}}

/* /compress face-budget game (Iteration 84) */
.fx-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:16px;align-items:start;margin-top:10px}
.fx-canvas{width:100%;height:auto;touch-action:none;border-radius:12px;border:1px solid var(--line)}
.fx-side label{display:block;font-weight:700;margin:0 0 6px}
.fx-side input[type=range]{width:100%;margin:0 0 10px}
.fx-budget{margin:0 0 10px;font-weight:650}
.fx-sliders{margin:0 0 8px}
.fx-stats{grid-template-columns:repeat(2,1fr)}
.fx-guess-label{font-weight:750;margin:14px 0 6px}
.fx-guesses{margin:0 0 8px}
.fx-result{min-height:1.4em;margin:8px 0;font-weight:650}
.fx-result.ok{color:color-mix(in srgb,#2a9d6a 80%,var(--fg))}
.fx-result.bad{color:color-mix(in srgb,var(--warm) 85%,var(--fg))}
.fx-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
@media (max-width:700px){.fx-stage{grid-template-columns:1fr}}

/* bonus: heist (emoji theft case) */
.hs-compare{gap:14px;margin:10px 0}
.hs-h3{margin:0 0 6px;font-size:1rem}
.hs-xray{margin-top:12px}
.hs-table{font-size:.9rem}
.hs-glyph{font-size:1.25rem;text-align:center}
.hs-ghost{background:color-mix(in srgb,var(--warm) 10%,var(--card))}
.hs-ghost-mark{display:inline-grid;place-items:center;width:1.4em;height:1.4em;border:1px dashed var(--warm);border-radius:6px;color:var(--warm);font-weight:800}
.hs-beats{list-style:none;padding:0;margin:12px 0;display:grid;gap:8px}
.hs-beat{border:1px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--bg);opacity:.55;transition:opacity .25s,border-color .25s}
.hs-beat.on{opacity:1;border-color:var(--acc);background:color-mix(in srgb,var(--acc) 8%,var(--card))}
.hs-beat.done{opacity:.85}
.hs-beat-k{font-weight:800;margin-right:8px}
.hs-msg{font-size:1.05rem}
.hs-beat small{display:block;color:var(--muted);margin-top:4px}
#hs-accuse .check{display:block;margin:6px 0}
@media (prefers-reduced-motion:reduce){.hs-beat{transition:none}}

/* bonus: cache (browser shelf vs server picture) */
.ca-stage{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,.95fr);gap:16px;align-items:start;margin-top:10px}
.ca-panels{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ca-panel{margin:0;border:1px solid var(--line);border-radius:14px;padding:12px;background:var(--card);transition:border-color .25s,box-shadow .25s}
.ca-panel.mismatch{border-color:var(--warm);box-shadow:0 0 0 3px color-mix(in srgb,var(--warm) 25%,transparent)}
.ca-panel figcaption{display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:750;margin:0 0 8px}
.ca-ver,.ca-badge{font-size:.78rem;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--acc-2);color:var(--acc)}
.ca-badge.ok{background:color-mix(in srgb,var(--ok) 22%,var(--card));color:color-mix(in srgb,var(--ok) 85%,var(--fg))}
.ca-badge.warn{background:color-mix(in srgb,var(--warm) 22%,var(--card));color:color-mix(in srgb,var(--warm) 90%,var(--fg))}
.ca-badge.stale{background:color-mix(in srgb,var(--muted) 18%,var(--card));color:var(--muted)}
.ca-frame{aspect-ratio:1;border-radius:12px;background:var(--bg);border:1px dashed var(--line);display:grid;place-items:center;overflow:hidden}
.ca-frame svg{width:100%;height:100%;display:block}
.ca-bg{fill:color-mix(in srgb,var(--bg) 70%,#fff 8%)}
.ca-label{font-size:11px;fill:var(--muted);font-family:ui-sans-serif,system-ui,sans-serif}
.ca-empty{color:var(--muted);font-weight:650;letter-spacing:.04em;text-transform:uppercase;font-size:.85rem}
.ca-etag{margin:8px 0 0;font-size:.78rem;color:var(--muted);word-break:break-all}
.ca-side .row{margin:0 0 10px}
.ca-side label{display:block;font-weight:700;margin:0 0 4px}
.ca-side input[type=range]{width:100%}
.ca-clock{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ca-actions{display:flex;flex-wrap:wrap;gap:8px}
.ca-stats{grid-template-columns:repeat(3,1fr)}
.ca-code,.ca-etag-stage .ca-code{display:block;white-space:pre-wrap;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:.82rem;margin:0 0 10px;min-height:4.5em}
.ca-etag-stage .row{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px}
@media (max-width:760px){.ca-stage,.ca-panels{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.ca-panel{transition:none}}
/* /draw lesson */
.dr-stage{display:grid;grid-template-columns:1fr minmax(140px,.7fr) 1fr;gap:14px;align-items:start;margin:12px 0}@media (max-width:760px){.dr-stage{grid-template-columns:1fr}}
.dr-tab{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px}.dr-tab h3{margin:0 0 8px;font-size:1rem}
.dr-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:3px;max-width:320px}.dr-grid.small{max-width:200px}
.dr-c{aspect-ratio:1;border:1px solid var(--line);border-radius:4px;padding:0;min-width:0;cursor:pointer}span.dr-c{cursor:default}
.dr-grid.locked .dr-c{cursor:not-allowed;opacity:.55}
.c-blank{background:var(--card)}.c-sun{background:#ffcf5a}.c-sky{background:#4aa3df}.c-leaf{background:#3fa34d}.c-berry{background:#e85d9a}.c-ink{background:#2b2b2b}
.dr-c.pend{outline:2px dashed var(--warm);outline-offset:-2px}
.dr-c.flash{animation:drflash .5s ease-in-out 4}@keyframes drflash{50%{box-shadow:0 0 0 3px var(--warm);transform:scale(1.12)}}
@media (prefers-reduced-motion:reduce){.dr-c.flash{animation:none;box-shadow:0 0 0 3px var(--warm)}}
.dr-pal{display:flex;gap:6px;margin:8px 0;flex-wrap:wrap}.dr-pal button{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);cursor:pointer;padding:0}
.dr-pal button[aria-pressed=true]{border-color:var(--fg);box-shadow:0 0 0 2px var(--acc)}.dr-pal .c-blank{background:repeating-linear-gradient(45deg,var(--card) 0 4px,var(--line) 4px 6px)}
.dr-penbadge{font-size:.8rem;background:var(--sun);color:#1d2321;border-radius:99px;padding:2px 8px;margin-left:6px}
.dr-out{background:var(--bg);border-radius:10px;padding:8px 12px}.dr-out code{font-size:1.1rem}
/* /holidays — day-off ticket rescue */
.hd-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 14px}.hd-tabs .chip.on{border-color:var(--acc);background:var(--acc-2);color:var(--acc);font-weight:700}
.hd-card{background:var(--bg);border-radius:12px;padding:12px 16px;border-left:5px solid var(--warm)}.hd-card h3{margin:.1em 0 .3em}
.hd-place{margin:0;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--warm)}.hd-rule{margin:0}
.hd-tray{display:flex;flex-wrap:wrap;gap:10px;min-height:58px;align-items:center;margin:14px 0;padding:10px;border:2px dashed var(--line);border-radius:12px}
.hd-tray p{margin:0}
.hd-ticket{position:relative;font:inherit;font-size:.86rem;font-weight:700;line-height:1.25;text-align:left;padding:6px 12px 6px 14px;border-radius:8px;border:2px solid var(--warm);background:color-mix(in srgb,var(--sun) 35%,var(--card));color:var(--fg);cursor:grab;touch-action:none;box-shadow:0 2px 0 color-mix(in srgb,var(--warm) 40%,transparent)}
.hd-ticket::before{content:"";position:absolute;left:-7px;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;background:var(--card);border-right:2px solid var(--warm)}
.hd-ticket small{display:block;font-weight:500;font-size:.72rem;color:var(--muted)}
.hd-ticket.picked{outline:3px solid var(--acc);transform:translateY(-2px) rotate(-2deg)}.hd-ticket.lifted{opacity:.35}
.hd-ticket.placed{cursor:default;font-size:.72rem;padding:3px 7px 3px 9px;width:100%;opacity:1}.hd-ticket.placed small{font-size:.64rem}
.hd-ghost{position:fixed;z-index:50;pointer-events:none;transform:translate(-50%,-60%) rotate(-4deg);box-shadow:0 10px 24px rgba(0,0,0,.25)}
.hd-calwrap{position:relative;margin:6px 0 14px}
.hd-trails{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.hd-trail{fill:none;stroke:var(--warm);stroke-width:2.5;stroke-dasharray:5 5;animation:hdtrail 1s linear infinite}.hd-arrowhead{fill:var(--warm)}
@keyframes hdtrail{to{stroke-dashoffset:-20}}
.hd-head,.hd-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.hd-head span{text-align:center;font-size:.78rem;font-weight:700;color:var(--muted)}
.hd-day{min-height:84px;padding:4px;border-radius:8px;border:1px solid var(--line);background:var(--card);display:flex;flex-direction:column;gap:3px;cursor:pointer;font-size:.8rem}
.hd-day.we{background:color-mix(in srgb,var(--acc) 7%,var(--bg))}.hd-day:hover,.hd-day.over{border-color:var(--acc);box-shadow:inset 0 0 0 2px var(--acc)}
.hd-date{font-size:.72rem;font-weight:700;color:var(--muted)}
.hd-orig{display:block;font-size:.72rem;font-weight:700;line-height:1.2;padding:3px 6px;border-radius:6px;background:var(--acc-2);color:var(--acc);border:1px solid var(--acc)}
.hd-orig small{display:block;font-weight:500;font-size:.64rem;color:var(--muted)}.hd-orig.wk{border-style:dashed;opacity:.85}
.hd-day.two{background:color-mix(in srgb,var(--sun) 12%,var(--card))}
.hd-win .hd-ticket.placed{animation:hdpop .6s ease}@keyframes hdpop{40%{transform:scale(1.12) rotate(-3deg)}}
.hd-share-day{max-width:320px;border:1px solid var(--line);border-radius:10px;padding:8px;background:var(--bg)}.hd-share-day>div{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.hd-share-day p{flex-basis:100%;margin:.3em 0 0}
@media (max-width:600px){.hd-day{min-height:70px;padding:2px}.hd-orig,.hd-ticket.placed{font-size:.62rem;padding:2px 3px}.hd-orig small,.hd-ticket.placed small{display:none}.hd-head span{font-size:.7rem}}
@media (prefers-reduced-motion:reduce){.hd-trail{animation:none}.hd-win .hd-ticket.placed{animation:none}}

/* /holidays — maybe tickets + neighbour picnic */
.hd-legend{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0 18px}
.hd-kind{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font:inherit;font-size:.86rem;line-height:1.25;text-align:left;padding:8px 10px;border-radius:10px;border:2px solid var(--line);background:var(--card);color:var(--fg);cursor:default}
.hd-kind strong{flex:1 1 auto}.hd-kind small{flex:1 1 100%;font-weight:500;font-size:.74rem;color:var(--muted)}
.hd-kind-calendar{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 12%,var(--card))}
.hd-kind-school{border-color:var(--ok, #2a7a4b);background:color-mix(in srgb,var(--ok, #2a7a4b) 12%,var(--card))}
.hd-kind-paid{border-color:var(--warm);background:color-mix(in srgb,var(--sun) 28%,var(--card))}
.hd-kind-maybe{border-style:dashed;border-color:var(--fg);background:repeating-linear-gradient(-45deg,var(--card),var(--card) 7px,color-mix(in srgb,var(--warm) 22%,var(--card)) 7px,color-mix(in srgb,var(--warm) 22%,var(--card)) 14px)}
button.hd-kind{cursor:pointer}button.hd-kind.on{outline:3px solid var(--acc);outline-offset:1px}
.hd-qmark{display:inline-flex;align-items:center;justify-content:center;width:1.35em;height:1.35em;border:2px solid currentColor;border-radius:50%;font-weight:900;line-height:1}
.hd-houses{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.hd-house{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--bg)}.hd-house h4{margin:.1em 0 .3em}
.hd-house .hint{margin:0 0 8px}
.hd-flip{display:block;width:100%;font:inherit;text-align:left;margin:0 0 8px;padding:8px 10px;border-radius:8px;border:2px solid var(--line);background:var(--card);color:var(--fg);cursor:pointer}
.hd-flip strong{display:block}.hd-flip small{display:block;margin-top:2px;color:var(--muted)}
.hd-flip.down{border-style:dotted;background:color-mix(in srgb,var(--line) 18%,var(--card))}
.hd-flip.yes{border-color:var(--ok, #2a7a4b);background:color-mix(in srgb,var(--ok, #2a7a4b) 12%,var(--card))}
.hd-flip.no{border-style:solid;opacity:.95}
.hd-flip.maybe{border-style:dashed;background:repeating-linear-gradient(-45deg,var(--card),var(--card) 7px,color-mix(in srgb,var(--warm) 22%,var(--card)) 7px,color-mix(in srgb,var(--warm) 22%,var(--card)) 14px)}
.hd-flip.na{border-style:solid;background:var(--bg)}
.hd-panswers{flex-wrap:wrap;gap:8px}
@media (max-width:700px){.hd-legend{grid-template-columns:1fr 1fr}.hd-houses{grid-template-columns:1fr}}
@media (max-width:420px){.hd-legend{grid-template-columns:1fr}}

/* /doorbell + NEW flags + new-since-last-visit shelf */
.db-wrap{overflow-x:auto;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:6px}
.db-svg{width:100%;min-width:560px;height:auto;display:block}
.db-night{fill:color-mix(in srgb,#3b4a8a 14%,transparent)}
.db-grid{stroke:var(--line);stroke-dasharray:3 4}.db-lane{stroke:var(--line);stroke-width:2}
.db-lab{fill:var(--fg);font-weight:700;font-size:13px}.db-small{fill:var(--muted);font-size:11px}
.db-card rect{fill:var(--sun);stroke:var(--warm);stroke-width:1.5}
.db-waste{stroke:var(--muted);stroke-width:1;opacity:.55}
.db-wait{stroke:var(--warm);stroke-width:3;opacity:.45;stroke-linecap:round}
.db-got{stroke:var(--card);stroke-width:2}.db-got.peek{fill:var(--warm)}.db-got.wait{fill:#5a6fd6}.db-got.bell{fill:var(--acc)}
.db-check{display:inline-flex;gap:6px;align-items:center}.db-now{color:var(--muted);margin-left:auto}
.db-tablewrap{overflow-x:auto}.db-table{border-collapse:collapse;width:100%;margin-top:6px;font-size:.95rem}
.db-table th,.db-table td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:right}.db-table th[scope=row],.db-table thead th:first-child{text-align:left}
.db-table thead th{color:var(--muted);font-weight:650;font-size:.85rem}
.pg-stage{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
.pg-box{width:96px}.pg-box svg{width:100%;height:auto;display:block}
.pg-b{fill:var(--acc-2);stroke:var(--acc);stroke-width:3}.pg-slot{fill:var(--acc)}.pg-flag{stroke:var(--muted);stroke-width:3}.pg-flagt{fill:var(--muted)}
.pg-box.full .pg-flagt{fill:var(--warm)}.pg-box.full .pg-flag{stroke:var(--warm)}
.pg-box.full svg{animation:pg-wig .9s ease-in-out infinite}
@keyframes pg-wig{0%,100%{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}
@media (prefers-reduced-motion:reduce){.pg-box.full svg{animation:none}}
.pg-clock{font-size:1.2rem;margin:0}
.fd-pair{display:grid;grid-template-columns:1fr 1.4fr;gap:10px}@media (max-width:640px){.fd-pair{grid-template-columns:1fr}}
.newflag{font-style:normal;background:var(--warm);color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.06em;padding:1px 6px;border-radius:6px;vertical-align:1px}
@media (prefers-color-scheme:dark){.newflag{color:#131816}}
.newshelf{border:2px dashed var(--warm);border-radius:var(--r);padding:12px 16px;margin:18px 0}
.newshelf .ns-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.newshelf h2{margin:.2em 0}

.sh-pick{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:10px 0;display:flex;flex-wrap:wrap;gap:8px 18px}
.sh-pick legend{font-weight:700;padding:0 6px}.sh-pick label{display:inline-flex;gap:6px;align-items:center}
.sh-preview{display:grid;grid-template-columns:140px 1fr;gap:16px;border:2px dashed var(--acc);border-radius:14px;padding:14px;margin:12px 0}
.sh-pic{font-size:5rem;line-height:1;display:grid;place-items:center;background:var(--bg);border:6px solid var(--card);outline:1px solid var(--line);border-radius:10px;min-height:130px}
.sh-aud{font-size:1.1rem;font-weight:700;color:var(--warm)}.sh-ok{display:flex;gap:8px;align-items:flex-start;margin:8px 0}
.sh-rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;align-items:start}
.sh-linkbox{border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin:10px 0;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.sh-visitors{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:12px 0}
.sh-vis{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--bg)}.sh-vis p{margin:2px 0}
.sh-who{font-weight:800;font-size:1.05rem}.sh-copy{background:var(--acc-2);border-radius:8px;padding:3px 6px}
.sh-res{font-weight:700;min-height:1.4em}.sh-res.ok{color:var(--ok)}.sh-res.no{color:var(--bad)}
.sh-log{border:1px solid var(--line);border-radius:12px;padding:10px;min-height:60px}
.sh-steps{list-style:none;padding:0;margin:6px 0}.sh-steps li{padding:2px 0}.sh-steps .yes{color:var(--ok)}.sh-steps .no{color:var(--bad)}
.sh-missions li{margin:4px 0}.sh-missions .done{color:var(--muted);text-decoration:line-through}.sh-missions .now{font-weight:700}.sh-missions .later{color:var(--muted)}
@media (max-width:560px){.sh-preview{grid-template-columns:1fr}}
.pk-items{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}
.pk-card{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--bg);display:flex;flex-direction:column;gap:6px}
.pk-card.revealed{border-color:var(--acc)}
.pk-card.yes{box-shadow:inset 0 0 0 2px var(--ok)}
.pk-ico{font-size:2.2rem;line-height:1;margin:0}
.pk-card h3{margin:0;font-size:1.05rem}
.pk-guess{border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin:6px 0 0;display:flex;flex-direction:column;gap:4px}
.pk-guess legend{font-weight:700;padding:0 4px}
.pk-guess label{display:flex;gap:8px;align-items:center}
.pk-reveal{margin-top:8px}
.pk-bars{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.pk-bar{position:relative;height:1.6em;background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.pk-bar-fill{display:block;height:100%;border-radius:7px}
.pk-bar-fill.raw{background:var(--acc-2)}
.pk-bar-fill.packed{background:var(--acc)}
.pk-bar-n{position:absolute;inset:0 8px;display:flex;align-items:center;font-size:.85rem;font-weight:700}
.pk-verdict{font-weight:700;margin:6px 0}
.pk-verdict.ok{color:var(--ok)}
.pk-verdict.near{color:var(--warm)}
.pk-faces{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin:12px 0;align-items:start}
.pk-faces figure{margin:0}
.pk-faces figcaption{font-weight:700;margin-bottom:6px}
.pk-grid{display:grid;grid-template-columns:repeat(8,1fr);width:min(100%,192px);aspect-ratio:1;border:4px solid var(--card);outline:1px solid var(--line);border-radius:10px;overflow:hidden}
.pk-px{width:100%;padding-top:100%;display:block}
.pk-px.c0{background:#c5e4d6}
.pk-px.c1{background:#245c44}
.pk-px.c2{background:#f3e2b0}
.pk-px.c3{background:#163528}
@media (prefers-reduced-motion:reduce){.pk-bar-fill{transition:none}}
@media (max-width:560px){.pk-items{grid-template-columns:1fr}}
/* /blocky */
.bk-play{display:grid;grid-template-columns:minmax(0,320px) 1fr;gap:20px;align-items:start;margin-top:12px}
.bk-stage{position:relative;width:100%;max-width:320px;aspect-ratio:1}
.bk-cv{display:block;width:100%;height:auto;image-rendering:pixelated;border-radius:10px;border:1px solid var(--line);background:var(--bg)}
.bk-cv.small{max-width:192px}
.bk-patches{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr)}
.bk-cell{border:1px dashed rgba(255,255,255,.55);background:transparent;margin:0;padding:0;cursor:pointer;border-radius:0}
.bk-cell:hover:not([disabled]),.bk-cell:focus-visible{outline:3px solid var(--acc);outline-offset:-3px;background:rgba(255,255,255,.12)}
.bk-cell.bought{border-color:transparent}
.bk-cell[disabled]{cursor:default}
.bk-coins{font-size:1.25rem;font-weight:800;margin:4px 0 10px}
.bk-coins::before{content:"\1FA99  "}
.bk-options{display:flex;flex-wrap:wrap;gap:8px}
.bk-end{margin-top:10px}
.bk-three{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:12px 0}
.bk-three figure{margin:0}.bk-three figcaption{font-weight:700;margin-bottom:6px}
.bk-pin{display:block;width:100%;max-width:300px;height:auto;image-rendering:pixelated;border:1px solid var(--line);border-radius:8px;background:#fff;margin:8px 0}
@media (max-width:620px){.bk-play{grid-template-columns:1fr}.bk-stage{margin:0 auto}}
@media (prefers-reduced-motion:reduce){.bk-cell{transition:none}}

/* /qr */
.qr-cv{display:block;width:100%;max-width:300px;height:auto;image-rendering:pixelated;border-radius:8px;border:1px solid var(--line);background:#fff}
.qr-cv.small{max-width:150px}
.qr-two{display:grid;grid-template-columns:minmax(0,300px) 1fr;gap:20px;align-items:start;margin-top:12px}
.qr-legend{list-style:none;padding:0;margin:0 0 10px}.qr-legend li{margin:3px 0}
.qr-sw{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;border:1px solid var(--line)}
.qr-dmg{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.qr-dbtn[aria-pressed="true"]{background:var(--acc);color:#fff;border-color:var(--acc)}
.qr-drawing{cursor:crosshair;touch-action:none;outline:3px dashed var(--sun);outline-offset:3px}
.qr-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px;margin-top:14px}
.qr-res{margin:0;padding:10px;border:2px solid var(--line);border-radius:12px;background:var(--card)}
.qr-res figcaption{font-weight:700;margin-bottom:6px}
.qr-res.ok{border-color:var(--ok)}.qr-res.bad{border-color:var(--bad)}
.qr-verdict{font-weight:700;margin:6px 0 0;word-break:break-all}.qr-res.ok .qr-verdict{color:var(--ok)}.qr-res.bad .qr-verdict{color:var(--bad)}
.qr-posters{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;margin-top:12px}
.qr-poster{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;box-shadow:var(--sh)}
.qr-poster h3{margin:2px 0 10px}.qr-place{margin:0;color:var(--muted);font-size:.9rem;font-weight:600}
.qr-codebox{position:relative;width:170px;margin:4px 0}
.qr-codebox .qr-cv{max-width:170px}
.qr-sticker{position:absolute;left:6px;top:4px;width:164px!important;max-width:none!important;transform:rotate(2.2deg);box-shadow:2px 3px 6px rgba(0,0,0,.35);border-color:#ddd;background:#fbfbf6;clip-path:polygon(0 0,100% 0,100% 86%,88% 100%,0 100%)}
.qr-printed{font-weight:700;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.95rem}
.qr-preview{background:var(--acc-2);border-radius:10px;padding:8px 12px;margin:8px 0}.qr-preview p{margin:4px 0}
.qr-dest{font-family:ui-monospace,Menlo,Consolas,monospace;word-break:break-all}
.qr-sub{opacity:.6}
.qr-match.yes{color:var(--ok);font-weight:700}.qr-match.no{color:var(--bad);font-weight:700}
.qr-why.ok{color:var(--ok)}.qr-why.bad{color:var(--bad)}.qr-why{margin-top:8px}
.qr-choices{gap:8px}
@media (max-width:620px){.qr-two{grid-template-columns:1fr}}
.tx-devs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:10px 0}
.tx-dev{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 6px}
.tx-dev .tx-ic{font-size:1.9rem;line-height:1}.tx-dev small{color:var(--muted);font-family:ui-monospace,monospace;font-size:.78rem}.tx-dev .tx-got{font-size:.78rem;color:var(--muted)}
.tx-dev .btn.small{font-size:.78rem;padding:4px 8px;white-space:normal}
.tx-router{text-align:center;font-weight:700;margin:8px 0;padding:6px;border:2px dashed var(--acc);border-radius:12px;background:var(--acc-2)}
.tx-tablewrap{overflow-x:auto;margin:10px 0}
.tx-table{width:100%;border-collapse:collapse;font-size:.9rem}.tx-table caption{text-align:left;font-weight:700;padding:4px 0}
.tx-table th,.tx-table td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:middle}
.tx-table .tx-tkt{font-family:ui-monospace,monospace;font-weight:700;color:var(--acc)}.tx-table .tx-empty{color:var(--muted);font-style:italic}
.tx-label{min-height:5.5em}.tx-score{font-weight:700;color:var(--muted)}
.tx-choices .btn{margin:2px 0}
.tg-clues{margin:8px 0;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--bg);position:relative}
.tg-stamp{display:inline-block;font-weight:800;letter-spacing:.06em;padding:3px 10px;border:3px solid currentColor;border-radius:6px;transform:rotate(-4deg);animation:tg-thump .35s ease-out}
.tg-stamp.ok{color:#2e7d32}.tg-stamp.bad{color:#c62828}
.tg-checks{list-style:none;margin:8px 0 0;padding:0}.tg-checks li{margin:3px 0}.tg-checks li.yes{color:#2e7d32}.tg-checks li.no{color:#c62828}.tg-checks li.skip{color:var(--muted)}
@keyframes tg-thump{0%{transform:scale(2.2) rotate(-12deg);opacity:0}70%{transform:scale(.95) rotate(-4deg);opacity:1}100%{transform:scale(1) rotate(-4deg)}}
@media (prefers-reduced-motion:reduce){.tg-stamp{animation:none}}
@media (max-width:640px){.tx-devs{grid-template-columns:repeat(2,1fr)}}
/* /roaming — Wi-Fi relay */
.rm-hall{margin:12px 0 4px}
.rm-lane{position:relative;height:92px;background:repeating-linear-gradient(90deg,var(--bg) 0 38px,var(--card) 38px 40px);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.rm-box{position:absolute;top:6px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;font-size:.72rem;line-height:1.1;z-index:2}
.rm-box .rm-ic{font-size:1.5rem}.rm-box small{color:var(--muted);white-space:nowrap}
.rm-box::after{content:"";width:10px;height:10px;border-radius:50%;margin-top:3px;background:currentColor}
.rm-wall{position:absolute;top:0;bottom:0;width:5px;transform:translateX(-50%);background:var(--muted);opacity:.45;z-index:1}
.rm-phone{position:absolute;bottom:4px;transform:translateX(-50%);font-size:1.6rem;z-index:3;transition:left .1s linear}
.rm-baton{position:absolute;bottom:22px;height:4px;border-radius:2px;background:var(--ok);z-index:2;transition:left .1s linear,width .1s linear}
.rm-baton.weak{background:var(--bad);background:repeating-linear-gradient(90deg,var(--bad) 0 6px,transparent 6px 10px)}
.rm-c0{color:var(--acc)}.rm-c1{color:#b7791f}.rm-c2{color:var(--warm)}
@media (prefers-color-scheme:dark){.rm-c1{color:var(--sun)}}
.rm-slide{display:flex;align-items:center;gap:10px;margin:6px 0 10px}.rm-slide span{min-width:11em;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.9rem}.rm-slide input{flex:1}
.rm-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.rm-sub{font-size:1rem;margin:10px 0 6px}
.rm-meters,.rm-phones{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.rm-meters li,.rm-phones li{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:6px 10px;font-size:.9rem}
.rm-meters li{display:grid;grid-template-columns:1fr auto;gap:2px 10px}.rm-meters li span:last-child{grid-column:1/-1;color:var(--muted);font-size:.84rem}
.rm-meters strong{color:inherit}.rm-phones li strong{color:var(--fg)}
.rm-bars{font-family:ui-monospace,monospace;letter-spacing:1px}
.rm-race{display:grid;gap:8px}
.rm-row{display:grid;grid-template-columns:minmax(9em,15em) 1fr auto;gap:10px;align-items:center}
.rm-rlab{display:flex;flex-direction:column;font-size:.9rem}.rm-rlab small{color:var(--muted);font-size:.76rem;line-height:1.25}
.rm-strip{position:relative;display:flex;height:22px;border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.rm-seg{display:inline-block;height:100%}
.rm-seg.rm-c0{background:var(--acc)}.rm-seg.rm-c1{background:#e0a526}.rm-seg.rm-c2{background:var(--warm)}.rm-seg.rm-gap{background:var(--muted);opacity:.55}.rm-seg.rm-frz{background:var(--bad)}
.rm-key .rm-seg{width:14px;height:10px;border-radius:3px;margin:0 3px 0 10px;vertical-align:middle}.rm-key .rm-seg:first-child{margin-left:0}
.rm-mark{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--fg);transform:translateX(-1px)}
.rm-score{font-size:.86rem;font-weight:700;white-space:nowrap}.rm-score.ok{color:var(--ok)}.rm-score.bad{color:var(--bad)}
.rm-opt{font-size:.9rem;color:var(--muted);display:inline-flex;gap:6px;align-items:center}
.rm-stat{font-family:ui-monospace,monospace;font-size:.86rem;min-height:1.5em;margin:6px 0}
.rm-buflab{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--muted)}.rm-buflab meter{flex:1;max-width:260px;height:14px}
.rm-grab{font-size:1.1rem;padding:12px 22px}
@media (max-width:640px){.rm-two{grid-template-columns:1fr}.rm-row{grid-template-columns:1fr auto}.rm-row .rm-strip{grid-column:1/-1;grid-row:2}.rm-box small{font-size:.64rem}.rm-slide span{min-width:8em}}
/* /queue — one-checkout shop (bufferbloat) */
.qs-opts{border:1px solid var(--line);border-radius:10px;padding:6px 12px 8px;margin:10px 0;display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.9rem}
.qs-opts legend{font-size:.84rem;color:var(--muted);padding:0 4px}.qs-opts label{display:inline-flex;gap:6px;align-items:center}.qs-q{font-weight:700}
.qs-lane{position:relative;height:46px;border:1px solid var(--line);border-radius:12px;background:var(--bg);overflow:hidden;margin:8px 0 2px;direction:rtl}
.qs-fill{position:absolute;top:8px;bottom:8px;right:0;background:repeating-linear-gradient(90deg,#a0673a 0 10px,#c48a55 10px 12px);border-radius:6px 0 0 6px;transition:width .1s linear}
.qs-limit{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed var(--bad);transform:translateX(50%)}
.qs-basket{position:absolute;top:10px;font-size:1.1rem;transform:translateX(50%);z-index:2}
.qs-till{position:absolute;right:4px;top:-1px;font-size:.7rem;color:var(--muted);z-index:3;direction:ltr}
.qs-fast{display:flex;gap:4px;align-items:center;border:1px dashed var(--ok);border-radius:10px;padding:2px 10px;min-height:28px;font-size:1.05rem;margin-bottom:4px}
.qs-flab{font-size:.78rem;color:var(--ok);font-weight:700;margin-right:6px}
.qs-read{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0}
.qs-read>div{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:6px 10px;display:flex;flex-direction:column;font-size:.9rem}
.qs-read small{color:var(--muted);font-size:.76rem}
.qs-big{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums}.qs-big.ok{color:var(--ok)}.qs-big.meh{color:#b7791f}.qs-big.bad,.qs-big.lost{color:var(--bad)}
.qs-spark{display:flex;align-items:flex-end;gap:2px;height:60px;border-bottom:1px solid var(--line);margin:4px 0}
.qs-bar{flex:1;height:2px;background:var(--line);border-radius:2px 2px 0 0}
.qs-bar.ok,.rm-seg.qs-ok,.qe-seg.ok{background:var(--ok)}.qs-bar.meh,.rm-seg.qs-meh,.qe-seg.meh{background:#e0a526}.qs-bar.bad,.qs-bar.lost,.rm-seg.qs-bad,.qe-seg.bad,.qe-seg.lost{background:var(--bad)}
.qe-strip{display:flex;height:24px;border:1px solid var(--line);border-radius:6px;overflow:hidden;margin:10px 0 4px;background:var(--bg)}
.qe-seg{flex:1}
.qc-lanes{display:flex;flex-direction:column;gap:6px;margin:8px 0}
.qc-row{display:grid;grid-template-columns:minmax(120px,30%) 1fr auto;gap:8px;align-items:center;font-size:.86rem}
.qc-rl{color:var(--muted)}.qc-n{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--muted);min-width:76px;text-align:right}
.qc-bar{position:relative;height:28px;border:1px solid var(--line);border-radius:8px;background:var(--bg);overflow:hidden}
.qc-bf{position:absolute;top:4px;bottom:4px;left:0;background:repeating-linear-gradient(90deg,#a0673a 0 10px,#c48a55 10px 12px);border-radius:0 6px 6px 0;transition:width .1s linear}
.qc-row.ok .qc-bar{border-color:var(--ok)}.qc-row.bad .qc-bar{border-color:var(--bad)}
.qc-ic{position:absolute;left:6px;top:3px;font-size:1rem;z-index:2;white-space:nowrap}
@media (prefers-reduced-motion:reduce){.qs-fill,.qc-bf{transition:none}}
@media (max-width:640px){.qs-read{grid-template-columns:1fr}.qs-big{font-size:1.25rem}.qc-row{grid-template-columns:1fr auto}.qc-rl{grid-column:1/-1}}
/* /cold */
.cd-canvas{max-width:100%}
.sd-plan{display:grid;gap:12px;padding-left:1.4em;margin:12px 0}.sd-plan li label{display:block;font-weight:600;margin:4px 0}
.sd-out{display:grid;gap:8px;padding-left:1.4em;margin:12px 0}.sd-out li{padding:8px 10px;border-radius:10px;background:var(--bg)}.sd-out .sd-ok{border-left:4px solid var(--ok)}.sd-out .sd-bad{border-left:4px solid var(--bad)}
/* /streaming */
.st-canvas{max-width:100%}

.inline{display:inline-flex;gap:6px;align-items:center;font-weight:600;margin:8px 0}.st-canvas[hidden]{display:none}

/* remote lesson */
.rd-sep{align-self:center;color:var(--muted);font-weight:700}.rd-bit{min-width:2.4em;font-family:ui-monospace,monospace}

/* /usb lesson */
.us-clues{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0}@media (max-width:640px){.us-clues{grid-template-columns:1fr}}
.us-clue{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px}.us-clue span{font-size:1.4rem;display:block}.us-clue small{display:block;color:var(--muted);margin-top:4px}
#gm-pick button[aria-pressed="true"]{border-color:var(--acc);box-shadow:0 0 0 2px var(--acc)}

.gp-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px;margin:10px 0}@media (max-width:600px){.gp-fields{grid-template-columns:1fr}}.gp-f{font-size:.92rem;font-weight:600}.gp-f select{margin-top:3px;padding:6px 8px}

.ct-pad{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.ct-pad .btn{min-width:6.5rem;touch-action:none;user-select:none;-webkit-user-select:none}.ct-pad .btn[aria-pressed="true"]{background:var(--sun);color:#1d2321;border-color:var(--sun)}
#ct-rate{width:min(100%,260px);vertical-align:middle}#ct-w1:focus-within{outline:none}
.ct-bar{display:flex;height:34px;border-radius:10px;overflow:hidden;background:var(--bg);border:1px solid var(--line);margin:12px 0 6px}.ct-seg{display:block;height:100%;min-width:2px}
.ct-legend{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:4px 14px;font-size:.92rem}.ct-key{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.ct-beats{display:flex;gap:14px;align-items:center;justify-content:center;margin:14px 0}.ct-beats span{width:28px;height:28px;border-radius:50%;background:var(--line);border:2px solid var(--muted)}.ct-beats span.big{width:46px;height:46px}.ct-beats span.on{background:var(--sun);border-color:var(--warm)}.ct-beats span.hit{background:var(--warm);box-shadow:0 0 0 6px rgba(240,138,93,.35)}
.ct-hit{font-size:1.15rem;padding:.7em 1.6em;touch-action:manipulation}.ct-log li.bt-perfect{color:var(--ok)}.ct-log li.bt-miss{color:var(--bad)}
/* /pipes */
.pp-houses{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0}@media (max-width:600px){.pp-houses{grid-template-columns:repeat(2,1fr)}}
.pp-card{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:0;min-width:0}.pp-card legend{font-weight:700;font-size:.9rem;padding:0 4px}.pp-card label{display:block;margin:3px 0}.pp-card select{width:100%;max-width:100%;font:inherit;font-size:.9rem;padding:3px}
#pp-street,#pp-town,#ev-street{width:min(100%,260px);vertical-align:middle}#ev-time{width:min(100%,220px);vertical-align:middle}
.pp-list{padding-left:1.1em}.pp-list li{margin:2px 0}.pp-list li.pp-ok{color:var(--ok)}.pp-list li.pp-meh{color:#9a6700}.pp-list li.pp-bad{color:var(--bad)}
.pp-case{font-size:1.08rem;font-style:italic;background:var(--bg);border-radius:10px;padding:12px 14px;margin:8px 0}.pp-opts{display:flex;flex-wrap:wrap;gap:8px}.pp-opts .btn{text-align:left}
.lr-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;max-width:420px;margin:10px 0}
.lr-cell{display:inline-flex;align-items:center;justify-content:center;min-height:30px;border-radius:7px;border:1px dashed var(--line);background:var(--bg);font:600 .82rem/1 ui-monospace,monospace;color:var(--muted)}
.lr-cell.lr-in{border-style:solid;border-color:var(--acc);background:var(--acc-2);color:var(--fg)}
.lr-cell.lr-ok{border-style:solid;border-color:var(--ok);background:rgba(29,122,58,.14);color:var(--ok)}
.lr-cell.lr-wrong{border-style:solid;border-color:var(--bad);background:rgba(179,38,30,.13);color:var(--bad);text-decoration:line-through}
.lr-cell.lr-lost{border-style:solid;border-color:var(--muted);background:var(--line);color:var(--muted)}
.lr-key .lr-cell{min-width:30px;min-height:22px;margin:0 4px 0 10px;vertical-align:middle}.lr-key .lr-cell:first-child{margin-left:0}
@media (prefers-reduced-motion:no-preference){.lr-cell{transition:background .2s,border-color .2s}}
.hs-talk{padding-left:1.3em;margin:8px 0}.hs-talk li{margin:3px 0}.hs-talk li.bad{color:var(--bad)}.hs-talk li.ok{color:var(--ok);font-weight:700}
.cl-stage{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.9fr);gap:16px;align-items:start;margin-top:10px}
.cl-canvas{width:100%;max-width:480px;height:auto;border-radius:12px;border:1px solid var(--line)}
.cl-stats{grid-template-columns:repeat(2,1fr)}
.cl-lab{font-weight:700;margin:12px 0 6px}
.cl-apps{margin:0 0 8px;padding-left:1.1em}
#cl-moves .btn.small{white-space:normal;text-align:left}
#cl-why li{margin:4px 0}
@media (max-width:700px){.cl-stage{grid-template-columns:1fr}.cl-canvas{max-width:100%;margin:0 auto}}
