
:root{
  --bg:#F3F5F3; --surface:#FFFFFF; --ink:#1B272B; --muted:#56666B; --line:#D5DCDA;
  --slate:#2F5D73; --slate-soft:#E3ECEF; --hazard:#E8A800; --hazard-ink:#5A4100;
  --warn-bg:#FFF4D6; --pro-bg:#FBE7E3; --pro-ink:#8A2E1E;
  --d-stroke:#1B272B; --d-fill:#FFFFFF; --d-water:#9CC7DA; --d-accent:#E8A800;
  --img-filter:none; --img-ring:transparent;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#121A1D; --surface:#1A2428; --ink:#E4EBEC; --muted:#9AAAAF; --line:#2E3C41;
  --slate:#8FC0D6; --slate-soft:#20323A; --hazard:#F2C230; --hazard-ink:#F2C230;
  --warn-bg:#2E2710; --pro-bg:#33201C; --pro-ink:#F1A596;
  --d-stroke:#DCE5E7; --d-fill:#1F2B30; --d-water:#3E7D98; --d-accent:#F2C230; --img-filter:brightness(.88) contrast(1.02); --img-ring:#2E3C41; color-scheme:dark;}}
:root[data-theme="dark"]{
  --bg:#121A1D; --surface:#1A2428; --ink:#E4EBEC; --muted:#9AAAAF; --line:#2E3C41;
  --slate:#8FC0D6; --slate-soft:#20323A; --hazard:#F2C230; --hazard-ink:#F2C230;
  --warn-bg:#2E2710; --pro-bg:#33201C; --pro-ink:#F1A596;
  --d-stroke:#DCE5E7; --d-fill:#1F2B30; --d-water:#3E7D98; --d-accent:#F2C230; --img-filter:brightness(.88) contrast(1.02); --img-ring:#2E3C41; color-scheme:dark;}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font:17px/1.65 "Public Sans",system-ui,sans-serif;padding-inline:16px;padding-block:0 48px}
.wrap{max-width:1040px;margin:0 auto}
h1,h2,h3{font-family:"Archivo",system-ui,sans-serif;font-stretch:80%;line-height:1.1;text-wrap:balance;margin:0}
a{color:var(--slate)}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--hazard);outline-offset:2px}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase}
header.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:18px;border-bottom:2px solid var(--ink)}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.logo b{font-family:"Archivo";font-stretch:75%;font-weight:800;font-size:1.5rem;letter-spacing:.01em;text-transform:uppercase}
.logo svg{flex:none}
nav.top a{color:var(--muted);text-decoration:none;font-weight:600;font-size:.95rem}
nav.top a:hover{color:var(--ink)}
/* home */
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:center;padding-block:48px 36px}
.hero h1{font-size:clamp(2.4rem,6vw,4.2rem);font-weight:800}
.hero h1 em{font-style:normal;background:linear-gradient(transparent 62%,var(--hazard) 62%);color:inherit}
.hero p{color:var(--muted);max-width:52ch;margin:18px 0 0;font-size:1.1rem}
.tag{display:inline-flex;gap:6px;align-items:center;color:var(--slate);margin-bottom:14px}
.list-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-top:1px solid var(--line);padding-top:18px;margin-top:8px;flex-wrap:wrap}
.list-head h2{font-size:1.6rem}
.filters{display:flex;gap:8px;flex-wrap:wrap}
.filters button{font:600 .85rem "Public Sans",sans-serif;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 14px;cursor:pointer}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:20px}
.card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:6px;text-decoration:none;color:var(--ink);overflow:hidden;transition:transform .15s,border-color .15s}
.card:hover{transform:translateY(-2px);border-color:var(--slate)}
.card .art{background:#E9F0F2;max-width:100%}
.card .art svg{width:100%;height:auto;display:block}
.card .body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.card h3{font-size:1.3rem}
.card p{margin:0;color:var(--muted);font-size:.95rem}
.specs{display:flex;gap:14px;flex-wrap:wrap;margin-top:auto;padding-top:8px;color:var(--muted)}
.lvl{display:inline-flex;gap:3px;align-items:center}
.lvl i{width:8px;height:8px;border-radius:2px;background:var(--line);display:inline-block}
.lvl i.on{background:var(--hazard)}
/* article */
.crumb{padding-block:20px 0}
.crumb a{text-decoration:none;font-weight:600}
article{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:48px;padding-block:20px}
article h1{font-size:clamp(2.1rem,5vw,3.4rem);font-weight:800}
.lede{font-size:1.15rem;color:var(--muted);max-width:60ch;margin:14px 0 24px}
.figure{background:#E9F0F2;border-radius:8px;padding:0;margin:0 0 10px;overflow:hidden}
.figure svg{display:block;width:100%;height:auto}
figcaption{color:var(--muted);font-size:.88rem;margin-bottom:28px}
.prose{max-width:66ch}
.prose h2{font-size:1.7rem;margin:36px 0 12px}
.steps{list-style:none;padding:0;margin:0;counter-reset:s;display:grid;gap:18px}
.steps li{counter-increment:s;display:grid;grid-template-columns:40px 1fr;gap:14px}
.steps li::before{content:counter(s);font:800 1.3rem "Archivo";font-stretch:75%;width:40px;height:40px;display:grid;place-items:center;border:2px solid var(--ink);border-radius:50%}
.steps b{display:block}
.note{border-radius:6px;padding:14px 18px;margin:24px 0;font-size:.97rem}
.note.warn{background:var(--warn-bg)}
.note.pro{background:var(--pro-bg)}
.note .mono{display:block;margin-bottom:4px;color:var(--hazard-ink)}
.note.pro .mono{color:var(--pro-ink)}
aside.side{position:sticky;top:calc(env(safe-area-inset-top,0px) + 20px);align-self:start;display:grid;gap:16px}
.box{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:18px}
.box h3{font-size:1.1rem;margin-bottom:10px}
.box dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:.95rem}
.box dt{color:var(--muted)}
.box dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums}
.box ul{margin:0;padding-left:18px;font-size:.95rem}
.check{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.check label{display:flex;gap:10px;align-items:flex-start;cursor:pointer}
.check input{margin-top:6px;accent-color:var(--slate);width:18px;height:18px;flex:none}
.check input:checked+span{color:var(--muted);text-decoration:line-through}
.season{margin-top:28px}
.season h2{display:flex;gap:10px;align-items:baseline}
.season h2 .mono{color:var(--slate)}
footer{border-top:1px solid var(--line);margin-top:48px;padding-top:20px;color:var(--muted);font-size:.9rem}
@media (max-width:860px){.hero,article{grid-template-columns:1fr}.grid{grid-template-columns:repeat(2,1fr)}aside.side{position:static}.hero-art{display:none}}
@media (max-width:560px){.grid{grid-template-columns:1fr}header.top{flex-direction:column;align-items:flex-start;gap:8px}nav.top{font-size:.9rem}}
@media (prefers-reduced-motion:reduce){.card{transition:none}}
/* svg */
.s{stroke:var(--d-stroke);stroke-width:2.5;fill:var(--d-fill);stroke-linejoin:round;stroke-linecap:round}
.sn{stroke:var(--d-stroke);stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.w{fill:var(--d-water);stroke:none}
.a{fill:var(--d-accent);stroke:var(--d-stroke);stroke-width:2.5}
.lbl{font:600 13px "Public Sans",sans-serif;fill:var(--d-stroke)}
.ln{stroke:var(--d-stroke);stroke-width:1.2;stroke-dasharray:3 3;fill:none}
.trouble{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:22px;margin-bottom:32px}
.trouble h2{font-size:1.6rem}.trouble p{margin:6px 0 14px;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:var(--bg);color:var(--ink);text-decoration:none;border-radius:999px;padding:8px 14px;font-weight:600;font-size:.93rem}
.chip:hover{border-color:var(--slate);color:var(--slate)}
.chip.urgent{border-color:var(--pro-ink);color:var(--pro-ink)}
.note.tipn{background:var(--slate-soft)}.note.tipn .mono{color:var(--slate)}
.prose p{margin:0 0 14px}
.nextup{display:grid;gap:4px;margin-top:32px;padding:18px 20px;border:2px solid var(--ink);border-radius:6px;text-decoration:none;color:var(--ink)}
.nextup strong{font:800 1.3rem "Archivo";font-stretch:80%}.nextup span:last-child{color:var(--muted)}
.nextup:hover{border-color:var(--slate)}
.byline{display:flex;gap:12px;align-items:center;color:var(--muted);font-size:.93rem;margin:-8px 0 22px}
.byline .av{width:40px;height:40px;border-radius:50%;background:var(--slate-soft);display:grid;place-items:center;font:800 1rem "Archivo";color:var(--slate)}
.byline .av{background:none}.byline .av svg{width:40px;height:40px}
.author{display:grid;grid-template-columns:88px 1fr;gap:18px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px;margin-top:32px}
.author .av-lg svg{width:88px;height:88px;display:block}
.author h3{font-size:1.4rem;margin:2px 0 6px}.author p{margin:0 0 8px;color:var(--muted);font-size:.97rem}
.author .mono{color:var(--slate)}.author a{font-weight:600;text-decoration:none}
@media (max-width:480px){.author{grid-template-columns:1fr}}
.search{position:relative;margin-bottom:16px}
.search input{width:100%;font:1rem "Public Sans",sans-serif;padding:12px 14px;border:1.5px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}
.res{display:grid;gap:2px;margin-top:8px;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.res a{display:grid;padding:10px 14px;background:var(--surface);text-decoration:none;color:var(--ink)}
.res a:hover{background:var(--slate-soft)}.res a span{color:var(--muted);font-size:.9rem}.res p{margin:0;padding:12px 14px;background:var(--surface)}
.toc{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;padding-block:10px;margin-bottom:8px;border-block:1px solid var(--line)}
.toc .mono{color:var(--muted)}.toc a{font-weight:600;text-decoration:none}
.prog{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.bar{flex:1;height:8px;background:var(--line);border-radius:99px;overflow:hidden}.bar i{display:block;height:100%;width:0;background:var(--hazard);transition:width .25s}
.done{display:inline-flex;gap:6px;align-items:center;margin-top:6px;font-size:.88rem;color:var(--muted);cursor:pointer}
.done input{accent-color:var(--slate);width:17px;height:17px}
.steps li.ok::before{background:var(--hazard);border-color:var(--hazard);color:#1B272B}
.steps li.ok b{color:var(--muted)}
.faq{display:grid;gap:8px}
.faq details{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:12px 16px}
.faq summary{font-weight:600;cursor:pointer}.faq details p{margin:10px 0 2px;color:var(--muted)}
h2[id]{scroll-margin-top:20px}
@media (prefers-reduced-motion:reduce){.bar i{transition:none}}
.stepimg figcaption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.stepimg{position:relative;margin:12px 0 4px;border-radius:8px;overflow:hidden;max-width:480px}.stepimg svg{display:block;width:100%;height:auto}
.done{display:flex;width:max-content}
.causes{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px}.cause{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:14px 16px}.cause b{display:block;margin-bottom:4px}.cause p{margin:0;color:var(--muted);font-size:.95rem}
.note .cost{margin:10px 0 0}
@media (max-width:560px){.causes{grid-template-columns:1fr}}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:6px;z-index:10}.skip:focus{left:16px}
#app:focus{outline:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.figure{position:relative}
.zoom{position:absolute;right:10px;bottom:10px;font:600 .85rem "Public Sans",sans-serif;background:var(--ink);color:var(--bg);border:0;border-radius:999px;padding:7px 14px;cursor:pointer;opacity:.9}
.zoom:hover{opacity:1}
.zoomv{position:fixed;inset:0;z-index:50;background:#0E1517;display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top,0px) + 12px) 12px calc(env(safe-area-inset-bottom,0px) + 12px)}
.zoomv[hidden]{display:none}
.zin{flex:1;overflow:auto;display:flex;align-items:center;-webkit-overflow-scrolling:touch}
.zin svg,.zin img{display:block;flex:none;width:max(900px,min(100%,1200px));height:auto;margin:auto;border-radius:8px}
.zclose{align-self:flex-end;font:700 1rem "Public Sans",sans-serif;background:#FFFFFF;color:#1B272B;border:0;border-radius:999px;padding:10px 18px;cursor:pointer}
.zhint{color:#C9D2D6;text-align:center;font-size:.85rem;margin:8px 0 0}
@media (min-width:1000px){.zhint{display:none}}
.btn{margin-top:12px;font:600 .9rem "Public Sans",sans-serif;background:var(--slate-soft);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:9px 14px;cursor:pointer;width:100%}
.btn:hover{border-color:var(--slate)}
.copied{display:block;font-size:.85rem;color:var(--slate);margin-top:6px;min-height:1em}
.card{content-visibility:auto;contain-intrinsic-size:auto 380px}
.figure img,.card .art img{display:block;width:100%;height:auto}
.stepimg img{display:block;width:100%;height:auto}
.stepimg{max-width:100%!important}
.sos{margin-left:10px;background:#C0392B;color:#FFFFFF!important;padding:6px 12px;border-radius:999px;text-decoration:none}
.sos:hover{background:#A93226}
.emerg{max-width:760px;padding-block:20px}
.emerg h1{font-size:clamp(2.1rem,5vw,3.2rem);font-weight:800}
.ejump{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}
.ejump a{border:2px solid var(--c);color:var(--ink);text-decoration:none;border-radius:999px;padding:8px 14px;font-weight:600;font-size:.93rem;background:var(--surface)}
.ecard{background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--c);border-radius:8px;padding:18px 22px;margin-bottom:16px;scroll-margin-top:16px}
.ecard h2{font-size:1.45rem;margin-bottom:10px}.ecard ol{margin:0 0 10px;padding-left:22px;display:grid;gap:6px}.enext{margin:0 0 8px}.elink{font-weight:600;text-decoration:none}
.efoot{color:var(--muted);font-size:.9rem}

/* header */
header.top{flex-wrap:nowrap}
nav.top{display:flex;align-items:center;gap:6px}
nav.top .nl{display:flex;gap:18px;margin-right:10px}
nav.top .nl a{color:var(--muted);text-decoration:none;font-weight:600;font-size:.95rem}
nav.top .nl a:hover{color:var(--ink)}
.sos{margin-left:0}
details.menu{display:none;position:relative}
details.menu summary{list-style:none;cursor:pointer;font-weight:700;font-size:.92rem;border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:var(--surface)}
details.menu summary::-webkit-details-marker{display:none}
.menupop{position:absolute;right:0;top:calc(100% + 8px);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px;display:grid;min-width:200px;z-index:20;box-shadow:0 12px 30px #0000002a}
.menupop a{padding:10px 12px;border-radius:6px;text-decoration:none;color:var(--ink);font-weight:600}
.menupop a:hover{background:var(--slate-soft)}
@media (max-width:760px){nav.top .nl{display:none}details.menu{display:block}header.top{flex-direction:row!important;align-items:center!important}.logo b{font-size:1.2rem}.logo svg{width:28px;height:28px}}
/* home */
.hero2{display:grid;grid-template-columns:1fr 1.05fr;gap:40px;align-items:start;padding-block:40px 28px}
.hero2 h1{font-size:clamp(2.2rem,5vw,3.6rem);font-weight:800}
.hero2 h1 em{font-style:normal;background:linear-gradient(transparent 62%,var(--hazard) 62%)}
.hero-copy p{color:var(--muted);max-width:46ch;margin:16px 0 0;font-size:1.08rem}
.hero-copy .stat{color:var(--slate);font-size:.78rem;margin-top:18px}
.hero2 .trouble{margin:0}
.trouble h2{font-size:1.45rem;margin-bottom:12px}
details.more{margin-top:12px}details.more summary{cursor:pointer;font-weight:600;color:var(--slate);font-size:.93rem;margin-bottom:10px}
.sect{padding-block:28px 8px;scroll-margin-top:16px}
.sect-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:18px;flex-wrap:wrap}
.sect-head h2{font-size:1.7rem}.sect-head p{margin:0;color:var(--muted)}.sect-head .count{color:var(--muted)}
.grid.small{grid-template-columns:repeat(4,1fr);gap:16px}
.card .art{background:#E9F0F2;aspect-ratio:4/3;overflow:hidden}
.card .art img{width:100%;height:100%;object-fit:cover;transition:transform .25s}
.card:hover .art img{transform:scale(1.03)}
.card .cat{color:var(--slate)}
.grid.small .card h3{font-size:1.1rem}
.grid.small .card .body{padding:12px 14px 14px;gap:6px}
.grid.small .specs{gap:10px;font-size:.7rem}
.catnav{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:16px 18px;margin-top:28px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.catnav .mono{color:var(--muted);margin-right:6px}
.catnav a{text-decoration:none;color:var(--ink);font-weight:600;font-size:.93rem;border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:var(--bg)}
.catnav a:hover{border-color:var(--slate);color:var(--slate)}
.seasonal-band{display:grid;grid-template-columns:220px 1fr;gap:24px;align-items:center;margin-top:36px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--ink)}
.seasonal-band img{width:100%;height:auto;border-radius:6px;display:block}
.seasonal-band h2{font-size:1.6rem;margin:4px 0 6px}.seasonal-band p{margin:0;color:var(--muted)}.seasonal-band .mono{color:var(--slate)}
.seasonal-band:hover{border-color:var(--slate)}
@media (max-width:980px){.grid.small{grid-template-columns:repeat(3,1fr)}}
@media (max-width:860px){.hero2{grid-template-columns:1fr;gap:24px;padding-block:28px 12px}}
@media (max-width:640px){.grid.small{grid-template-columns:repeat(2,1fr)}.grid.small .specs span:not(.lvl){display:none}.seasonal-band{grid-template-columns:1fr}}
/* steps: text beside picture on wide screens */
.st{display:grid;gap:12px}
.stt .done{margin-top:8px}
@media (min-width:1000px){.steps li:has(.stepimg) .st{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:22px;align-items:start}.steps li .stepimg{margin:0}}
@media (min-width:1000px){article:has(.steps .stepimg){grid-template-columns:minmax(0,1fr) 260px}.prose{max-width:none}.prose>p,.prose>.causes,.prose>.note,.prose>.faq,.prose>h2{max-width:760px}}
/* images in dark mode */
.figure img,.stepimg img,.card .art img,.seasonal-band img,.zin img{filter:var(--img-filter)}
.figure,.stepimg{box-shadow:0 0 0 1px var(--img-ring)}
/* footer */
footer#foot{border-top:2px solid var(--ink);margin-top:56px;padding-top:28px;color:var(--muted);font-size:.93rem}
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px}
.fgrid h3{font-size:1rem;color:var(--ink);margin-bottom:10px;font-family:"Public Sans",sans-serif;font-weight:700}
.fgrid a{display:block;color:var(--muted);text-decoration:none;padding:3px 0}.fgrid a:hover{color:var(--ink)}
.fgrid .logo b{font-size:1.2rem;color:var(--ink)}.fgrid p{margin:10px 0 14px;max-width:40ch}
.fgrid .sos{display:inline-block;padding:7px 14px}
.fine{margin-top:26px;padding-top:16px;border-top:1px solid var(--line);font-size:.85rem}
@media (max-width:760px){.fgrid{grid-template-columns:1fr 1fr}.fgrid>div:first-child{grid-column:1/-1}}
@media (prefers-reduced-motion:reduce){.card .art img{transition:none}}
.logo b{white-space:nowrap}header.top{gap:10px}nav.top{flex:none}.logo{min-width:0}
@media (max-width:760px){.logo b{font-size:1.05rem}.logo{gap:8px}nav.top .sos{padding:6px 11px;font-size:.88rem}details.menu summary{padding:6px 9px;font-size:.88rem;display:flex;color:var(--ink)}}
@media (max-width:360px){.logo b{font-size:.95rem}}
.stepimg .zoom{top:10px;bottom:auto}
.resume{margin-top:8px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
.resume-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px}.resume-head h2{font-size:1.3rem}
.linkbtn{background:none;border:0;color:var(--slate);font:600 .9rem "Public Sans",sans-serif;cursor:pointer;padding:4px}
.resume-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.rcard{display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;text-decoration:none;color:var(--ink);padding:8px;border-radius:8px;border:1px solid var(--line);background:var(--bg)}
.rcard:hover{border-color:var(--slate)}
.rcard img{width:72px;height:54px;object-fit:cover;border-radius:5px;filter:var(--img-filter)}
.rcard strong{display:block;font-size:.92rem;line-height:1.25;margin-bottom:6px}
.rbar{display:block;height:6px;background:var(--line);border-radius:99px;overflow:hidden;margin-bottom:4px}.rbar i{display:block;height:100%;background:var(--hazard)}
.rtxt{font-size:.68rem;color:var(--muted)}.done5{color:#2E8B57}
@media (max-width:980px){.resume-row{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.resume-row{grid-template-columns:1fr}}
.tools{max-width:1000px;padding-block:20px}.tools h1{font-size:clamp(2.1rem,5vw,3.2rem);font-weight:800}.tools h2{font-size:1.6rem;margin:34px 0 14px}
.kit{display:grid;grid-template-columns:1fr auto;gap:12px 20px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px 18px}.kit .btn{margin:0;width:auto}.kit .copied{grid-column:1/-1;margin:0}
.tgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.tool{display:grid;grid-template-columns:150px 1fr;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:14px;scroll-margin-top:16px}
.tool svg{width:150px;height:auto;display:block;filter:var(--img-filter)}
.thead{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.thead h3{font-size:1.2rem}.price{color:var(--slate);white-space:nowrap}
.tool p{margin:6px 0;font-size:.95rem}.ttip{color:var(--muted)}
.tused{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}.tused .mono{color:var(--muted);margin-right:4px}.tused a{font-size:.85rem;font-weight:600;text-decoration:none;border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--ink)}.tused a:hover{border-color:var(--slate)}
.tk{display:block;margin-top:10px;font-weight:600;text-decoration:none;font-size:.9rem}
@media (max-width:860px){.tgrid{grid-template-columns:1fr}}
@media (max-width:480px){.tool{grid-template-columns:1fr}.tool svg{width:100%;max-width:220px}.kit{grid-template-columns:1fr}}
.ecard.haspic{display:grid;grid-template-columns:170px 1fr;gap:18px;align-items:start}
.epic{width:170px;height:auto;border-radius:8px;display:block;filter:var(--img-filter)}
.eout{background:var(--pro-bg);border-radius:8px;padding:12px;display:grid;justify-items:center;gap:6px}.eout svg{width:110px}.eout span{font-weight:700;color:var(--pro-ink);font-size:.9rem}
@media (max-width:560px){.ecard.haspic{grid-template-columns:1fr}.epic{width:100%;max-width:280px}}

body{margin:0}img{max-width:100%}[hidden]{display:none!important}
#app{display:block}
.logo{min-width:0;overflow:hidden}.logo b{overflow:hidden;text-overflow:ellipsis}
@media (max-width:420px){.logo b{font-size:.92rem}.logo svg{width:24px;height:24px}header.top{gap:8px}nav.top .sos{padding:6px 10px;font-size:.84rem}}

.crumb{font-size:.93rem;color:var(--muted)}.crumb a{font-weight:600;text-decoration:none}
.catpage{padding-block:20px}.catpage h1{font-size:clamp(2.1rem,5vw,3.2rem);font-weight:800}.catsym{margin:6px 0 24px}.catsym h2{font-size:1.2rem;margin-bottom:10px}
.catmore{margin-top:28px;color:var(--muted)}
.catstart{max-width:68ch;margin:0 0 22px;line-height:1.6}.catstart a,.catfaq a{color:inherit;text-decoration-thickness:2px;text-underline-offset:3px}
.catfaq{max-width:68ch;margin-top:36px}.catfaq h2{font-size:1.4rem;margin-bottom:6px}.catfaq h3{font-size:1.05rem;margin:18px 0 4px}.catfaq p{margin:0;line-height:1.6}
.seeall{text-decoration:none;color:var(--slate)!important;font-weight:600}
.symgroup{margin-top:14px}.symgroup h3{font-size:.72rem;color:var(--muted);margin-bottom:8px;font-family:"JetBrains Mono",ui-monospace,monospace;letter-spacing:.04em;text-transform:uppercase}
.remind{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:20px 22px;margin:4px 0 28px;scroll-margin-top:16px}
.remind h2{font-size:1.5rem;margin:6px 0 8px}.remind p{margin:0 0 12px}.remind .mono{color:var(--slate)}
.remind-btn{display:inline-block;width:auto;text-decoration:none;background:var(--ink);color:var(--bg);border-color:var(--ink);padding:11px 18px}
.remind-btn:hover{opacity:.9}
.fine2{font-size:.85rem;color:var(--muted);margin:8px 0 0}
.remind-list{list-style:none;margin:0;padding:0;display:grid;gap:6px;align-content:start}
.remind-list li{display:flex;justify-content:space-between;gap:12px;font-size:.9rem;border-bottom:1px solid var(--line);padding-bottom:6px}.remind-list span{color:var(--muted);white-space:nowrap}
@media (max-width:760px){.remind{grid-template-columns:1fr}}
@media print{
 .skip,header.top,footer#foot,.noprint,.zoom,.toc,.crumb,.nextup,aside.side>.box:last-child,.resume,#zoom,.prog,.author{display:none!important}
 body{background:#fff;color:#000;font-size:11pt;padding:0}
 article{display:block!important}
 aside.side{position:static;display:block}
 .box{border:1px solid #999;break-inside:avoid;margin-bottom:10px}
 .steps li{break-inside:avoid}
 .steps li .st{display:grid;grid-template-columns:1fr 45%;gap:12px}
 .stepimg{max-width:100%!important;box-shadow:none}
 .figure{max-width:70%;box-shadow:none}
 .figure img,.stepimg img{filter:none}
 .causes{grid-template-columns:1fr 1fr}
 a{color:#000;text-decoration:none}
 .done input{width:14px;height:14px}
 h2{break-after:avoid}
 details{display:block}details>*{display:block}
 @page{margin:14mm}
}
