
:root{--bg:#07051a;--panel:#0d0b2b;--line:#2a2466;--text:#d6d9ff;--dim:#8a86c9;--blue:#4da3ff;--violet:#b45cff;--hot:#ff4fd8;color-scheme:dark;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
:root[data-theme="dark"]{--bg:#07051a}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.65 "JetBrains Mono","Cascadia Code","Fira Code",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
a{color:inherit;text-decoration:none}
a:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.wrap{max-width:960px;margin:0 auto;padding:0 20px}
header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.brand{font-weight:700;color:var(--blue);letter-spacing:.02em}
nav{display:flex;gap:20px;color:var(--dim)}
nav a{position:relative}
nav a:hover{color:var(--blue)}
h1{font-size:clamp(1.6rem,4.5vw,2.5rem);line-height:1.2;margin:40px 0 28px;max-width:22ch;letter-spacing:-.01em}
h2{font-size:1.1rem;margin:0 0 6px;color:var(--blue);display:flex;align-items:center;gap:8px}
h2::before{content:"#";color:var(--violet);opacity:.55;font-weight:400}
.dim{color:var(--dim);margin:0 0 20px;max-width:64ch}
.term{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.bar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);color:var(--dim);font-size:.85rem}
.bar i{width:10px;height:10px;border-radius:50%;background:var(--line)}
.bar span{margin-left:8px}
.tb{padding:18px 20px 22px}
.tb p{margin:0 0 4px;overflow-wrap:anywhere}
.l{opacity:0;animation:show .01s forwards;animation-delay:var(--d)}
@keyframes show{to{opacity:1}}
.pr{color:var(--violet);margin-right:8px}
.out{color:var(--dim);margin-bottom:12px!important}
.cur{display:inline-block;width:9px;height:1.1em;background:var(--blue);vertical-align:text-bottom;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
section{margin-top:56px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.card{display:block;border:1px solid var(--line);border-radius:6px;padding:16px;background:var(--panel)}
.card:hover{border-color:var(--blue)}
.card b{color:var(--blue)}
.card p{margin:6px 0 10px;color:var(--dim);font-size:.9rem}
.card small{color:var(--violet)}
.ad{margin:40px 0 0;min-height:90px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--line);color:var(--dim);font-size:.85rem;text-align:center}
.feed{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.feed li{display:grid;grid-template-columns:5ch 11ch 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.feed .crit{color:var(--violet)}
.feed .hi{color:var(--blue)}
.feed .in{color:var(--dim)}
.feed a:hover{color:var(--blue)}
footer{margin:64px 0 32px;color:var(--dim);font-size:.85rem;display:flex;gap:20px;flex-wrap:wrap}
footer a:hover{color:var(--blue)}
@media (max-width:560px){.feed li{grid-template-columns:5ch 1fr}.feed .src{display:none}}
@media (prefers-reduced-motion:reduce){.l{opacity:1;animation:none}.cur{animation:none}}

body{background-image:radial-gradient(60% 40% at 50% 0,rgba(120,80,255,.22),transparent),linear-gradient(rgba(77,163,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(77,163,255,.06) 1px,transparent 1px);background-size:auto,44px 44px,44px 44px;background-attachment:fixed;position:relative}
body::before{content:"";position:fixed;top:-20%;left:50%;width:70vw;height:70vw;max-width:900px;max-height:900px;transform:translateX(-50%);background:radial-gradient(circle,rgba(180,92,255,.14),transparent 70%);pointer-events:none;z-index:-1;animation:orb 14s ease-in-out infinite}
@keyframes orb{0%,100%{opacity:.6;transform:translateX(-50%) scale(1)}50%{opacity:1;transform:translateX(-50%) scale(1.12)}}
html{scroll-behavior:smooth}
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}
.card,.dcard,.story-card{transition:border-color .2s,box-shadow .2s,transform .2s}
.card:hover,.dcard:hover,.story-card:hover{transform:translateY(-3px)}
@media (prefers-reduced-motion:reduce){body::before{animation:none}html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.card:hover,.dcard:hover,.story-card:hover{transform:none}}
.brand,h2{text-shadow:0 0 12px rgba(77,163,255,.7)}
h1{background:linear-gradient(90deg,var(--blue),var(--violet) 70%,var(--hot));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 14px rgba(180,92,255,.35))}
.term{border-color:var(--violet);box-shadow:0 0 0 1px rgba(180,92,255,.25),0 0 36px rgba(180,92,255,.28),inset 0 0 40px rgba(77,163,255,.06)}
.bar i:nth-child(1){background:var(--hot)}.bar i:nth-child(2){background:var(--violet)}.bar i:nth-child(3){background:var(--blue)}
.tb{position:relative}
.tb::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 2px,rgba(0,0,0,.18) 2px 3px)}
.pr{color:var(--hot);text-shadow:0 0 8px var(--hot)}
.cur{background:var(--violet);box-shadow:0 0 10px var(--violet)}
.card{transition:border-color .2s,box-shadow .2s}
.card:hover{border-color:var(--violet);box-shadow:0 0 22px rgba(180,92,255,.3)}
.card small{color:var(--hot)}
.feed .crit{color:var(--hot);text-shadow:0 0 8px rgba(255,79,216,.6)}
.feed .hi{color:var(--violet)}
nav a:hover,.feed a:hover,footer a:hover{color:var(--blue);text-shadow:0 0 10px rgba(77,163,255,.7)}

.q{width:100%;background:var(--panel);color:var(--text);border:1px solid var(--violet);border-radius:6px;padding:14px 16px;font:inherit;box-shadow:0 0 22px rgba(180,92,255,.25)}
.q::placeholder{color:var(--dim)}
.q:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.res{margin-top:22px;display:grid;gap:12px}
.hit{border:1px solid var(--line);border-radius:6px;padding:16px;background:var(--panel)}
.hit b{color:var(--blue);text-shadow:0 0 10px rgba(77,163,255,.6)}
.hit p{margin:6px 0 0}
.hit .k{color:var(--violet)}
.note{color:var(--dim);font-size:.85rem;margin-top:22px}

textarea.q{min-height:110px;resize:vertical}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;margin:16px 0 0}
.kv dt{color:var(--dim)}.kv dd{margin:0;color:var(--blue);overflow-wrap:anywhere}
pre{margin:8px 0 0;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:14px;overflow-x:auto;font:inherit;font-size:.85rem}
.tool{margin-top:56px}

nav{flex-wrap:wrap}
.ctl{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center;margin-bottom:12px}
.ctl label{display:flex;gap:8px;align-items:center;color:var(--dim)}
.btn{background:transparent;color:var(--blue);border:1px solid var(--blue);border-radius:6px;padding:8px 14px;font:inherit;cursor:pointer}
.btn:hover{box-shadow:0 0 16px rgba(77,163,255,.5)}
.btn:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
input[type=range],input[type=checkbox]{accent-color:var(--violet)}

input.n{width:84px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit}
.tw{overflow-x:auto;margin-top:16px}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th,.tbl td{padding:7px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tbl th{color:var(--violet);font-weight:400}
.tbl td:first-child{color:var(--blue);white-space:nowrap}

.prose{max-width:72ch}.prose h2{margin:34px 0 8px;font-size:1.05rem}.prose ul{padding-left:20px}.prose a{color:var(--blue);text-decoration:underline}
.ph{background:rgba(255,79,216,.16);color:var(--hot);padding:0 4px;border-radius:3px}

.snip{border:1px solid var(--line);border-radius:6px;padding:16px;background:var(--panel);margin-top:14px}
.snip h3{margin:0 0 4px;font-size:1rem;color:var(--blue)}
.snip p{margin:0 0 8px;color:var(--dim);font-size:.9rem}
.snip pre{margin:0 0 12px;background:var(--bg)}

.chk{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line);cursor:pointer}
.chk input{margin-top:5px;accent-color:var(--violet)}
.chk b{font-weight:400;display:block}
.chk small{display:block;color:var(--dim);font-size:.85rem}
.chk input:checked+span b{color:var(--dim);text-decoration:line-through}
#pg{color:var(--blue)}
@media print{body{background:#fff!important;color:#000!important}header,footer,.ad,.ctl button,#cb{display:none!important}h1,h2{background:none!important;color:#000!important;-webkit-text-fill-color:#000;filter:none!important;text-shadow:none!important}.chk small{color:#444}}

[hidden]{display:none!important}
.term{padding:12px 0;border-bottom:1px solid var(--line)}
.term h3{margin:0 0 2px;font-size:1rem;color:var(--blue)}
.term p{margin:0}
.term a{color:var(--violet);text-decoration:underline}
.ltr{margin:32px 0 4px}

.perm{border-collapse:collapse;margin-top:12px}
.perm th,.perm td{padding:8px 18px;text-align:center;border-bottom:1px solid var(--line)}
.perm th{color:var(--violet);font-weight:400}
.perm th:first-child,.perm td:first-child{text-align:left;color:var(--dim)}
.st-recommended{color:var(--blue)}.st-acceptable{color:var(--text)}.st-legacy{color:var(--violet)}.st-broken{color:var(--hot)}

.tin{padding:12px 20px 16px}
.tin .row{display:flex;align-items:center;gap:8px}
.cmdin{flex:1;min-width:0;background:transparent;border:0;color:var(--text);font:inherit;outline:none;caret-color:var(--violet)}
.tin:focus-within{box-shadow:inset 0 0 0 1px var(--blue)}
.tout{max-height:180px;overflow:auto}
.tout p{margin:0 0 4px;color:var(--dim)}
.tout .echo{color:var(--text)}
.sbtn{padding:4px 10px;font-size:.85rem}

.fw{overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:12px}
.fw:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.fsvg{display:block;width:100%;min-width:640px;height:auto}
.fsvg text{fill:var(--text);font:13px "JetBrains Mono","Cascadia Code","Fira Code",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
.fsvg .box{fill:var(--bg);stroke:var(--violet)}
.fsvg .life{stroke:var(--line);stroke-dasharray:4 4}
.fsvg .st{opacity:0;transition:opacity .3s}
.fsvg .st.on{opacity:.5}
.fsvg .st.on.now{opacity:1}
.fsvg .st line,.fsvg .st path{stroke:var(--blue);fill:none;stroke-width:2}
.fsvg .st polygon{fill:var(--blue)}
.fsvg .st.atk line,.fsvg .st.atk path{stroke:var(--hot)}
.fsvg .st.atk polygon{fill:var(--hot)}
.fsvg .st.atk text{fill:var(--hot)}
.fcnt{color:var(--dim)}
.fcap{margin-top:12px;border:1px solid var(--line);border-radius:6px;padding:14px;background:var(--panel);min-height:96px}
.fcap b{color:var(--blue)}
.fcap p{margin:6px 0 0}
.fnote{color:var(--violet)}.fnote.atk{color:var(--hot)}
h3.fh{margin:26px 0 6px;font-size:1rem;color:var(--blue)}
details{margin-top:14px}summary{cursor:pointer;color:var(--blue)}
.steps li{margin:6px 0}.rel{margin-top:14px;color:var(--dim)}.rel a{color:var(--violet);text-decoration:underline;margin-right:12px}
@media (prefers-reduced-motion:reduce){.fsvg .st{transition:none}}

.sim{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-top:8px}
.sim label{display:block;color:var(--dim);font-size:.85rem}
select.sel{display:block;width:100%;margin-top:4px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:10px;font:inherit}
select.sel:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.pol{display:flex;gap:12px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line)}
.pol input{margin-top:5px;accent-color:var(--violet)}
.pol small{display:block;color:var(--dim);font-size:.85rem}
.pol .hit1{color:var(--blue)}.pol .lic{color:var(--violet);font-size:.8rem;margin-left:8px}
.rbox{border:1px solid var(--blue);border-radius:8px;padding:16px;background:var(--panel);box-shadow:0 0 24px rgba(77,163,255,.2)}
.rbox.bad{border-color:var(--hot);box-shadow:0 0 24px rgba(255,79,216,.25)}
.rbox b{font-size:1.15rem;color:var(--blue)}.rbox.bad b{color:var(--hot)}
.rbox p{margin:6px 0 0}
.qf{border:0;border-bottom:1px solid var(--line);padding:14px 0;margin:0}
.qf legend{padding:0;color:var(--text)}
.qo{display:inline-flex;gap:6px;align-items:center;margin:8px 20px 0 0;color:var(--dim);cursor:pointer}
.qo input{accent-color:var(--violet)}
.pbar{height:10px;background:var(--line);border-radius:5px;overflow:hidden;margin:4px 0 12px}
.pbar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--violet))}
.score{font-size:2.4rem;font-weight:700;color:var(--blue);text-shadow:0 0 14px rgba(77,163,255,.6)}
.act a{color:var(--violet);text-decoration:underline}

.msg{border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:16px}
.msg p{margin:0 0 8px}
.kk{color:var(--dim)}
.lnk{color:var(--violet);overflow-wrap:anywhere}
.btn:disabled{opacity:.45;cursor:default;box-shadow:none}
#fb{margin-top:14px}
#fb ul{margin:8px 0 12px;padding-left:20px}

.feed li{grid-template-columns:7ch 13ch 1fr}
.feed .src{overflow-wrap:anywhere}
.feed small.ex{display:block;color:var(--dim);font-size:.85rem}
.kev h3 span{color:var(--dim);font-weight:400;font-size:.9rem;margin-left:8px}
.kev a{color:var(--violet);text-decoration:underline;margin-right:14px}
.chk small a{color:var(--violet)}

.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:16px}
.track{border:1px solid var(--line);border-radius:8px;padding:18px;background:var(--panel)}
.track h3{margin:0 0 6px;font-size:1rem;color:var(--blue)}
.track p{margin:0 0 10px;color:var(--dim);font-size:.9rem}
.track ul{margin:0;padding-left:18px;color:var(--dim);font-size:.88rem}
.track ul a{color:var(--violet);text-decoration:underline}
.hero{border:1px solid var(--violet);border-radius:8px;padding:20px;background:var(--panel);box-shadow:0 0 32px rgba(180,92,255,.2);margin-bottom:32px}
.hero p{margin:6px 0 0}

.mdout{margin-top:14px;border:1px solid var(--line);border-radius:6px;padding:16px;background:var(--panel)}
.mdout h1,.mdout h2,.mdout h3{color:var(--blue);margin:0 0 10px}
.mdout p{margin:0 0 10px}
.mdout code{background:var(--bg);padding:1px 5px;border-radius:4px}
.mdout pre{background:var(--bg);padding:10px;border-radius:6px;overflow-x:auto}
.mdout a{color:var(--violet);text-decoration:underline}
.mdout table{border-collapse:collapse;margin:0 0 10px}
.mdout th,.mdout td{border:1px solid var(--line);padding:6px 10px}
.dtxt{white-space:pre-wrap;overflow-x:auto;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:12px}
.dtxt .da{color:var(--blue)}.dtxt .dr{color:var(--hot)}.dtxt .dc{color:var(--dim)}

.timeline{border-left:2px solid var(--violet);margin:20px 0 0;padding-left:0}
.tl-entry{position:relative;padding:0 0 22px 26px;border-bottom:none}
.tl-entry::before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--blue)}
.tl-entry.crit::before{border-color:var(--hot);box-shadow:0 0 10px rgba(255,79,216,.6)}
.tl-time{color:var(--blue);font-weight:700;display:block;margin-bottom:2px}
.tl-entry.crit .tl-time{color:var(--hot)}
.tl-entry p{margin:0}
.story-meta{display:flex;gap:16px;flex-wrap:wrap;color:var(--dim);font-size:.85rem;margin:6px 0 22px}
.story-meta span b{color:var(--violet)}
.lesson-box{border:1px solid var(--blue);border-radius:8px;padding:16px;background:var(--panel);margin-top:12px}
.lesson-box b{color:var(--blue)}
.lesson-box ul{margin:8px 0 0;padding-left:20px}
.story-card{display:block;border:1px solid var(--line);border-radius:8px;padding:18px;background:var(--panel);margin-top:14px}
.story-card:hover{border-color:var(--violet)}
.story-card b{color:var(--blue);font-size:1.05rem}
.story-card p{margin:6px 0 10px;color:var(--dim)}
.story-card .tag{color:var(--hot);font-size:.8rem;margin-right:10px}

.dtop{margin:0 0 18px}
.btn.ghost{border-color:var(--line);color:var(--dim)}
.btn.ghost:hover{border-color:var(--blue);color:var(--blue);box-shadow:none}
.dtrail{display:flex;flex-direction:column;gap:4px;margin:0 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--dim);font-size:.85rem}
.dcard{border:1px solid var(--violet);border-radius:8px;padding:22px;background:var(--panel);box-shadow:0 0 28px rgba(180,92,255,.18)}
.dcard h3{color:var(--blue);margin:0 0 16px;font-size:1.15rem;line-height:1.4}
.dopts{display:flex;flex-wrap:wrap;gap:10px}
.dctl{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.dleaf{border-color:var(--hot);box-shadow:0 0 28px rgba(255,79,216,.18)}
.dleaf h3{color:var(--hot)}
.dleaf p{color:var(--text);line-height:1.7}
.dlinks{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.dlinks a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.dlinks a:hover{color:var(--violet)}

.fl{display:block;color:var(--dim);font-size:.85rem;margin:16px 0 0}
.fl .q,.fl input.q,.fl select.q{display:block;margin-top:6px;color:var(--text);font-size:.95rem}
.optlist{display:flex;flex-direction:column;gap:10px;margin:16px 0;color:var(--text)}
.optlist label{display:flex;gap:8px;align-items:center}
#offboard-gen .btn,#bulk-gen .btn,#mailbox-gen .btn,#ca-gen .btn{margin:16px 10px 0 0}

.lic td:first-child{white-space:normal;color:var(--text);min-width:220px}
.lic th:not(:first-child),.lic td:not(:first-child){text-align:center}
.lic .yes{color:var(--blue);font-weight:700}
.lic .no{color:var(--dim)}
.lic .partial{color:var(--hot);font-size:.8rem}
.lic tr.cathead td{color:var(--violet);font-weight:700;background:var(--panel);padding-top:16px;border-bottom:1px solid var(--violet)}
.lic tbody tr:hover:not(.cathead){background:rgba(77,163,255,.05)}




/* subnet-calculator */
input.sel{display:block;width:100%;margin-top:4px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:10px;font:inherit}
input.sel:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
input[type="range"]{margin-top:8px;accent-color:var(--violet)}
.kvlist{margin-top:10px;display:grid;gap:0}
.kvrow{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.kvrow:last-child{border-bottom:none}
.kvrow .k{color:var(--dim)}
.kvrow code{color:var(--blue);font-family:var(--mono,monospace)}
.submap{margin-top:8px}
.smgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.smgrid.wide{grid-template-columns:repeat(8,1fr)}
.smcell{aspect-ratio:1;border:1px solid var(--line);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.65rem;color:var(--dim);background:var(--panel)}
.smcell.on{border-color:var(--blue);color:#fff;font-weight:700;background:rgba(77,163,255,.32);box-shadow:0 0 14px rgba(77,163,255,.3)}
@media(max-width:480px){.smgrid{grid-template-columns:repeat(4,1fr)}.smgrid.wide{grid-template-columns:repeat(8,1fr)}.smcell{font-size:.55rem}}

/* password-strength */
.pwrow{display:flex;gap:8px;margin-top:4px}
.pwrow input.q{flex:1}
.pwrow .btn{white-space:nowrap}
.meter{margin-top:18px;height:10px;border-radius:5px;background:var(--panel);border:1px solid var(--line);overflow:hidden}
.meter-fill{height:100%;border-radius:5px;transition:width .2s ease,background .2s ease;width:0}
.meter-fill.vbad{background:var(--hot)}
.meter-fill.vweak{background:#ff9d4d}
.meter-fill.vok{background:var(--violet)}
.meter-fill.vgood{background:var(--blue)}
.mlabel{margin-top:8px;font-weight:700;font-size:1.05rem}
.mlabel.vbad{color:var(--hot)}
.mlabel.vweak{color:#ff9d4d}
.mlabel.vok{color:var(--violet)}
.mlabel.vgood{color:var(--blue)}

/* status-center */
.statusdot{width:11px;height:11px;border-radius:50%;margin-top:6px;flex-shrink:0;display:inline-block;border:1px solid var(--line);background:var(--panel)}
.statusdot.pending{background:var(--dim);animation:pulse-dot 1.1s ease-in-out infinite}
.statusdot.ok{background:var(--blue);box-shadow:0 0 8px rgba(77,163,255,.7);border-color:var(--blue)}
.statusdot.bad{background:var(--hot);box-shadow:0 0 8px rgba(255,79,216,.7);border-color:var(--hot)}
@keyframes pulse-dot{0%,100%{opacity:.4}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.statusdot.pending{animation:none;opacity:.7}}

/* ===== visual upgrade pass: HUD/terminal polish ===== */

/* cards: gradient corner-brackets + layered glow, replacing the flat outline */
.card,.dcard,.story-card{position:relative;background:linear-gradient(180deg,rgba(77,163,255,.04),transparent 40%),var(--panel);isolation:isolate}
.card::before,.dcard::before,.story-card::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(135deg,var(--line),var(--line) 60%,var(--line));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;transition:background .25s ease;z-index:0}
.card:hover::before,.dcard:hover::before,.story-card:hover::before{background:linear-gradient(135deg,var(--blue),var(--violet) 55%,var(--hot))}
.card>*,.dcard>*,.story-card>*{position:relative;z-index:1}
.card::after,.dcard::after,.story-card::after{content:"";position:absolute;top:8px;right:8px;width:7px;height:7px;border-top:1px solid var(--violet);border-right:1px solid var(--violet);opacity:0;transition:opacity .2s ease,transform .2s ease;transform:translate(-3px,3px);z-index:1}
.card:hover::after,.dcard:hover::after,.story-card:hover::after{opacity:.85;transform:translate(0,0)}
.card:hover,.dcard:hover,.story-card:hover{box-shadow:0 0 0 1px rgba(77,163,255,.1),0 8px 28px -8px rgba(180,92,255,.45),0 0 32px -4px rgba(77,163,255,.25)}
@media (prefers-reduced-motion:reduce){.card::before,.dcard::before,.story-card::before,.card::after,.dcard::after,.story-card::after{transition:none}}

/* buttons: sweeping light + stronger glow on hover */
.btn{position:relative;overflow:hidden;z-index:0;transition:box-shadow .2s ease,border-color .2s ease,color .2s ease}
.btn::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(77,163,255,.35) 50%,transparent 70%);transform:translateX(-120%);transition:transform .5s ease;z-index:-1}
.btn:hover::before{transform:translateX(120%)}
.btn:hover{border-color:var(--violet);color:var(--text);box-shadow:0 0 18px rgba(180,92,255,.45),0 0 2px rgba(77,163,255,.8)}
@media (prefers-reduced-motion:reduce){.btn::before{display:none}}

/* nav: underline glow sweep instead of flat color swap */
nav a{padding-bottom:3px}
nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-1px;height:1px;background:linear-gradient(90deg,var(--blue),var(--violet));transition:right .25s ease;box-shadow:0 0 8px rgba(77,163,255,.6)}
nav a:hover::after{right:0}

/* section headers: subtle animated gradient underline */
h2{position:relative;padding-bottom:10px}
h2::after{content:"";position:absolute;left:0;bottom:0;width:46px;height:2px;background:linear-gradient(90deg,var(--blue),var(--violet),var(--hot));border-radius:2px;box-shadow:0 0 10px rgba(180,92,255,.5)}

/* brand mark: one-time boot flicker on load, never repeats, respects reduced motion */
.brand{display:inline-block}
@media (prefers-reduced-motion:no-preference){
  .brand{animation:brand-boot 1.4s steps(1) 1}
}
@keyframes brand-boot{
  0%{opacity:0}
  4%{opacity:1}
  6%{opacity:.2}
  8%{opacity:1}
  40%{opacity:1}
  42%{opacity:.3}
  44%{opacity:1}
  100%{opacity:1}
}

/* search button: give it the same treatment as other buttons plus a quiet pulse ring */
.sbtn{position:relative}
.sbtn::after{content:"";position:absolute;inset:-3px;border-radius:9px;border:1px solid rgba(77,163,255,.35);opacity:0;animation:none}
.sbtn:hover::after{opacity:1}

/* table rows: faint left accent bar on hover for .tbl, ties into the HUD language */
.tbl tbody tr{position:relative;transition:background .15s ease}
.tbl tbody tr:hover{background:rgba(77,163,255,.05)}
.tbl tbody tr:hover td:first-child{box-shadow:inset 2px 0 0 var(--blue)}

/* inputs: focus state gets the same gradient-glow family as buttons/cards */
.q:focus-visible,input.sel:focus-visible,select.sel:focus-visible,input.n:focus-visible{box-shadow:0 0 0 1px var(--blue),0 0 24px rgba(77,163,255,.35)}

/* product-lifecycle: stack the table into cards on narrow screens so status
   (the one thing that matters) is never scrolled out of view */
@media (max-width:640px){
  #pl-table thead{display:none}
  #pl-table,#pl-table tbody,#pl-table tr,#pl-table td{display:block;width:100%}
  #pl-table{border:none}
  #pl-table tr{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-bottom:10px;background:var(--panel)}
  #pl-table td{border:none;padding:4px 0}
  #pl-table td:first-child{color:var(--text);font-weight:700;padding-top:0}
  #pl-table td:nth-child(2)::before{content:"End of support: ";color:var(--dim);font-weight:400}
  #pl-table td:nth-child(3){padding-bottom:0}
  #pl-table td:last-child{padding-top:6px}
}

/* ===== design pass 2: depth, light and motion (palette unchanged) ===== */
::selection{background:rgba(180,92,255,.45);color:#fff}
html{scrollbar-color:var(--line) var(--bg);scrollbar-width:thin}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--blue),var(--violet));border-radius:10px;border:2px solid var(--bg)}

/* reading progress: pure CSS, only where scroll-driven animations exist */
@supports (animation-timeline:scroll()){
  body::after{content:"";position:fixed;top:0;left:0;right:0;height:2px;z-index:60;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--blue),var(--violet),var(--hot));box-shadow:0 0 10px rgba(180,92,255,.7);animation:read-progress linear both;animation-timeline:scroll(root);pointer-events:none}
  @keyframes read-progress{to{transform:scaleX(1)}}
}

/* cursor spotlight on cards (position set by reveal.js; no-op without it) */
.card,.dcard,.story-card{background:radial-gradient(240px circle at var(--mx,50%) var(--my,0%),rgba(180,92,255,var(--spot,0)),transparent 70%),linear-gradient(180deg,rgba(77,163,255,.04),transparent 40%),var(--panel)}
@media (hover:hover){.card:hover,.dcard:hover,.story-card:hover{--spot:.16}}

/* status chips */
.card small{display:inline-block;margin-top:4px;padding:1px 9px;border:1px solid rgba(255,79,216,.4);border-radius:99px;font-size:.72rem;letter-spacing:.04em;background:rgba(255,79,216,.07)}
.card small::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--hot);margin-right:6px;vertical-align:middle;box-shadow:0 0 6px var(--hot)}
.card small:empty{display:none}

/* staggered grid reveal */
.grid>.reveal:nth-child(3n+2){transition-delay:.07s}
.grid>.reveal:nth-child(3n){transition-delay:.14s}

/* terminal caret after page titles */
h1::after{content:"_";margin-left:.08em;color:var(--hot);-webkit-text-fill-color:var(--hot);animation:caret 1.1s steps(1) infinite}
@keyframes caret{50%{opacity:0}}

footer{position:relative;padding-top:22px}
footer::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--blue),var(--violet) 40%,transparent)}

/* segmented metric buttons (cvss-calculator) */
.seg{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 2px}
.seg .btn{padding:6px 12px;border-color:var(--line);color:var(--dim)}
.seg .btn[aria-pressed="true"]{border-color:var(--violet);color:var(--text);background:rgba(180,92,255,.16);box-shadow:0 0 14px rgba(180,92,255,.35)}
.metric{padding:12px 0;border-bottom:1px solid var(--line)}
.metric>b{color:var(--blue)}
.metric>small{display:block;color:var(--dim);min-height:1.6em}
.scorebox{position:sticky;top:8px;z-index:5;margin-top:18px;padding:16px 18px;border:1px solid var(--line);border-radius:8px;background:rgba(13,11,43,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.scorebox .num{font-size:2.4rem;font-weight:700;line-height:1}
.scorebox code{display:block;margin-top:10px;word-break:break-all;color:var(--dim)}

@media (max-width:640px){.scorebox{position:static}}
@media (prefers-reduced-motion:reduce){h1::after{animation:none}.grid>.reveal{transition-delay:0s}}

/* long unbreakable identifiers must not widen the page on phones */
.snip,.snip p,.snip b,main p,main li,.card p{overflow-wrap:anywhere}
.snip{min-width:0;max-width:100%}

/* ================================================================
   CONSOLE SHELL  (v3 redesign: structure, navigation, status line)
   palette unchanged
   ================================================================ */
html{scroll-padding-top:76px}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.16s}
@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}

/* --- sticky top bar --- */
header{position:sticky;top:0;z-index:40;padding:12px 0;border-bottom:0;background:rgba(7,5,26,.88);border-image:conic-gradient(rgba(7,5,26,.88) 0 0) fill 0/0/0 100vmax;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);view-transition-name:topbar}
header::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--line) 20%,var(--violet) 50%,var(--line) 80%,transparent)}
.brand::before{content:">_";color:var(--hot);margin-right:8px;text-shadow:0 0 8px var(--hot)}
header nav{gap:4px 18px;font-size:.92rem}
header nav a[aria-current="page"]{color:var(--text);text-shadow:0 0 10px rgba(180,92,255,.8)}
header nav a[aria-current="page"]::after{right:0}
header nav a[aria-current="page"]::before{content:"";position:absolute;left:-9px;top:50%;width:4px;height:4px;margin-top:-3px;border-radius:50%;background:var(--hot);box-shadow:0 0 6px var(--hot)}
.sbtn{display:inline-flex;align-items:center;gap:10px}
kbd{font:inherit;font-size:.72rem;padding:0 6px;border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;color:var(--dim);background:rgba(13,11,43,.8);white-space:nowrap}
@media (max-width:760px){
  header{display:grid;grid-template-columns:1fr auto;gap:8px 12px;padding:10px 0 6px}
  header nav{grid-column:1/-1;flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;gap:22px;padding:4px 10px 8px;margin:0 -20px;padding-left:20px;padding-right:36px;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent)}
  header nav::-webkit-scrollbar{display:none}
  .sbtn kbd{display:none}
  html{scroll-padding-top:104px}
}

/* --- prompt breadcrumb --- */
.crumb{margin:30px 0 0;font-size:.82rem;color:var(--dim);overflow-wrap:anywhere}
.crumb .cu{color:var(--violet)}
.crumb a{color:var(--blue)}
.crumb a:hover{text-decoration:underline}
.crumb b{color:var(--text);font-weight:400}
.crumb .cs{color:var(--hot);margin-left:6px}
.crumb+h1{margin-top:6px}

/* --- section headers become ruled console headings --- */
h2{padding-bottom:0;margin-bottom:12px}
h2::after{position:static;flex:1;width:auto;min-width:24px;height:1px;border-radius:0;box-shadow:none;background:linear-gradient(90deg,var(--line),transparent)}
h2 .cnt{font-size:.72rem;font-weight:400;color:var(--dim);border:1px solid var(--line);border-radius:99px;padding:0 8px;text-shadow:none}
.mdout h2::after,.mdout h2::before{content:none}

/* --- tables --- */
.tbl th{font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;border-bottom-color:var(--violet);white-space:nowrap}

/* --- stat strip --- */
.stats{display:grid;grid-template-columns:repeat(var(--cols,4),1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:22px}
.stat{background:var(--panel);padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0}
.stat-k{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.stat-v{font-size:1.55rem;line-height:1.2;color:var(--text);font-weight:700}
.stat-s{font-size:.74rem;color:var(--dim)}
@media (max-width:760px){.stats{grid-template-columns:1fr 1fr}.stat:last-child:nth-child(odd){grid-column:span 2}.stat-v{font-size:1.3rem}}

/* --- jump chips --- */
.jump{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.jump a{border:1px solid var(--line);border-radius:99px;padding:3px 13px;font-size:.8rem;color:var(--dim);background:rgba(13,11,43,.6);transition:border-color .2s,color .2s,box-shadow .2s}
.jump a:hover{border-color:var(--violet);color:var(--text);box-shadow:0 0 14px rgba(180,92,255,.35)}
.jump a::before{content:"./";color:var(--violet)}

/* --- feature panel --- */
.feature{position:relative;display:grid;grid-template-columns:1.1fr 1fr;gap:26px;margin-top:40px;padding:26px;border:1px solid var(--violet);border-radius:10px;background:radial-gradient(120% 140% at 100% 0,rgba(180,92,255,.2),transparent 60%),var(--panel);box-shadow:0 0 0 1px rgba(180,92,255,.2),0 0 48px -8px rgba(180,92,255,.4)}
.feature::before,.feature::after{content:"";position:absolute;width:14px;height:14px;border:2px solid var(--hot);pointer-events:none}
.feature::before{top:-2px;left:-2px;border-right:0;border-bottom:0;border-top-left-radius:10px}
.feature::after{bottom:-2px;right:-2px;border-left:0;border-top:0;border-bottom-right-radius:10px}
.feature .kick{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--hot)}
.feature h3{margin:6px 0 8px;font-size:1.45rem;line-height:1.25;color:var(--text)}
.feature p{margin:0 0 16px;color:var(--dim)}
.feature .ctl{margin:0}
.btn.solid{background:linear-gradient(90deg,var(--blue),var(--violet));border-color:transparent;color:#07051a;font-weight:700}
.btn.solid:hover{color:#07051a;box-shadow:0 0 24px rgba(180,92,255,.6)}
.peek{align-self:center;border:1px solid var(--line);border-radius:8px;background:var(--bg);font-size:.8rem;overflow:hidden}
.peek .bar{padding:7px 12px;font-size:.74rem}
.peek ul{list-style:none;margin:0;padding:6px 0}
.peek li{display:grid;grid-template-columns:max-content 1fr;align-items:center;gap:10px;padding:6px 12px;border-bottom:1px solid rgba(42,36,102,.6);color:var(--text)}
.peek li:last-child{border-bottom:0}
@media (max-width:760px){.feature{grid-template-columns:1fr;padding:20px}}

/* --- severity language (shared) --- */
.sevtag{display:inline-block;min-width:11ch;white-space:nowrap;text-align:center;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;border:1px solid currentColor;border-radius:4px;padding:0 6px;font-weight:700}
.s-crit,.f-crit .sevtag{color:var(--hot)}
.s-high,.f-high .sevtag{color:#ff9d4d}
.s-med,.f-med .sevtag{color:var(--violet)}
.s-info,.f-info .sevtag{color:var(--blue)}

/* --- sign-in analyzer --- */
.drop{display:block;margin-top:18px;padding:34px 20px;text-align:center;border:1px dashed var(--violet);border-radius:10px;background:rgba(13,11,43,.7);cursor:pointer;transition:background .2s,box-shadow .2s,border-color .2s}
.drop:hover,.drop.over,.drop:focus-within{border-style:solid;background:rgba(180,92,255,.1);box-shadow:0 0 36px -6px rgba(180,92,255,.5)}
.drop b{display:block;font-size:1.1rem;color:var(--text)}
.drop span{color:var(--dim);font-size:.88rem}
.drop input{position:absolute;opacity:0;width:1px;height:1px}
.verdict{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-top:8px;padding:16px 18px;border:1px solid var(--line);border-left-width:4px;border-radius:8px;background:var(--panel)}
.verdict b{font-size:1.5rem}
.verdict span{color:var(--dim)}
.v-crit{border-color:var(--hot);box-shadow:0 0 30px -6px rgba(255,79,216,.5)}.v-crit b{color:var(--hot)}
.v-high{border-color:#ff9d4d}.v-high b{color:#ff9d4d}
.v-med{border-color:var(--violet)}.v-med b{color:var(--violet)}
.v-info,.v-none{border-color:var(--blue)}.v-info b,.v-none b{color:var(--blue)}
#sa-out h2{margin-top:38px}
.finding{margin-top:12px;border:1px solid var(--line);border-left:3px solid var(--line);border-radius:8px;background:var(--panel);padding:0 16px}
.finding[open]{padding-bottom:16px}
.finding summary{display:flex;gap:12px;align-items:baseline;padding:13px 0;color:var(--text);list-style:none}
.finding summary::-webkit-details-marker{display:none}
.finding summary::after{content:"+";margin-left:auto;color:var(--dim)}
.finding[open] summary::after{content:"-"}
.finding summary b{font-weight:400}
.finding p{margin:0 0 4px;color:var(--dim);max-width:78ch}
.f-crit{border-left-color:var(--hot)}.f-high{border-left-color:#ff9d4d}.f-med{border-left-color:var(--violet)}.f-info{border-left-color:var(--blue)}
.finding .tbl td:first-child{white-space:normal;overflow-wrap:anywhere;min-width:15ch}
.finding .tbl th{white-space:normal}
.finding .tbl td{min-width:9ch}
.chartbox{position:relative;border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:12px 14px 6px}
.chart{display:block;width:100%;height:auto}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .axis{fill:var(--dim);font:11px ui-monospace,Menlo,Consolas,monospace}
.chart .s-ok,.sw.s-ok{fill:var(--blue);background:var(--blue)}
.chart .s-bad,.sw.s-bad{fill:var(--hot);background:var(--hot)}
.chart .hit{fill:transparent}
.chart .bar:hover .hit,.chart .bar:focus .hit{fill:rgba(214,217,255,.07)}
.chart .bar:focus{outline:none}
.legend{display:flex;gap:18px;font-size:.8rem;color:var(--dim);margin-bottom:6px}
.legend .sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px}
.charttip{position:absolute;top:34px;width:170px;padding:8px 10px;border:1px solid var(--violet);border-radius:6px;background:var(--bg);font-size:.78rem;pointer-events:none;z-index:3}
.charttip b,.charttip span{display:block}
.charttip span{color:var(--dim)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}
@media (max-width:760px){.grid2{grid-template-columns:1fr}}

/* --- status line (injected by shell.js on wide, hover-capable screens) --- */
#sl{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;align-items:stretch;height:26px;font-size:.74rem;line-height:26px;background:#0b0926;border-top:1px solid var(--line);color:var(--dim);white-space:nowrap;view-transition-name:statusline}
#sl>*{padding:0 12px;border-right:1px solid var(--line)}
#sl .mode{background:var(--blue);color:#07051a;font-weight:700;letter-spacing:.08em;border-right:0}
#sl .mode.pending{background:var(--hot)}
#sl .path{color:var(--text);overflow:hidden;text-overflow:ellipsis}
#sl .sp{flex:1;border-right:0}
#sl .on::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--blue);box-shadow:0 0 6px var(--blue);margin-right:7px;vertical-align:middle}
#sl .on.off::before{background:var(--hot);box-shadow:0 0 6px var(--hot)}
#sl button{background:none;border:0;border-left:1px solid var(--line);border-right:0;color:var(--dim);font:inherit;cursor:pointer}
#sl button:hover{color:var(--text);background:rgba(180,92,255,.16)}
body.has-sl{padding-bottom:26px}
#kh{position:fixed;inset:0;z-index:100;background:rgba(7,5,26,.82);display:flex;align-items:flex-start;justify-content:center;padding:12vh 16px 16px}
#kh .bx{width:100%;max-width:520px;background:var(--panel);border:1px solid var(--violet);border-radius:8px;box-shadow:0 0 40px rgba(180,92,255,.35);padding:18px 20px}
#kh h2{margin:0 0 10px}
#kh dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 18px;margin:0}
#kh dd{margin:0;color:var(--dim)}
@media print{#sl,#kh,.drop,.crumb,.jump{display:none!important}.finding{break-inside:avoid;border-color:#999;background:#fff}.finding p,.tbl td,.tbl th,.stat-v,.stat-k{color:#000!important}.stats,.stat,.chartbox,.verdict{background:#fff!important;border-color:#999}pre{background:#fff;color:#000;border-color:#999}}
.scorebox{top:68px}
a.btn{display:inline-block}
@media (min-width:900px){header,header nav{flex-wrap:nowrap}header nav{gap:16px;font-size:.88rem}}
.wrap{max-width:1060px}
header nav a{white-space:nowrap}
@media (max-width:560px){.feed li{grid-template-columns:5ch 1fr}}
@media (max-width:760px){header nav{order:3}}
.finding pre+.btn{margin-top:10px}
.sim label{min-width:0}
select.sel{max-width:100%;min-width:0}
#sa-map .sim{grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr))}
@media (max-width:760px){.chartbox{overflow-x:auto}.chart{min-width:600px}}
.grid2>*{min-width:0}

/* ================= attack-map ================= */
.cgroup{border:1px solid var(--line);border-radius:8px;margin:0 0 12px;padding:10px 12px 12px;display:flex;flex-wrap:wrap;gap:8px;min-width:0}
.cgroup legend{padding:0 8px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--violet)}
.cchip{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 10px;border:1px solid var(--line);border-radius:99px;font-size:.82rem;color:var(--dim);cursor:pointer;background:rgba(13,11,43,.7);transition:border-color .2s,color .2s,background .2s,box-shadow .2s;max-width:100%}
.cchip input{position:absolute;opacity:0;width:1px;height:1px}
.cchip::before{content:"";flex:none;width:9px;height:9px;border-radius:2px;border:1px solid var(--dim)}
.cchip:has(input:checked){border-color:var(--blue);color:var(--text);background:rgba(77,163,255,.12);box-shadow:0 0 14px -2px rgba(77,163,255,.5)}
.cchip:has(input:checked)::before{background:var(--blue);border-color:var(--blue);box-shadow:0 0 8px var(--blue)}
.cchip:has(input:focus-visible){outline:2px solid var(--violet);outline-offset:2px}
.cchip em{font-style:normal;font-size:.72rem;color:var(--violet);margin-left:4px}
.amscore{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1.2fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:18px 0 8px}
.amscore .stat-v.hot{color:var(--hot);text-shadow:0 0 16px rgba(255,79,216,.6)}
.amscore .stat-v.or{color:#ff9d4d}.amscore .stat-v.bl{color:var(--blue)}
.amscore .meter{margin-top:6px}
@media (max-width:760px){.amscore{grid-template-columns:1fr 1fr 1fr}.amscore .stat:first-child,.amscore .stat:last-child{grid-column:1/-1}}
.amap{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0 46px;margin-top:22px;align-items:start}
.amlines{position:absolute;inset:0;pointer-events:none;overflow:visible}
.amlines path{fill:none;stroke-width:1.4;transition:opacity .2s,stroke .3s}
.amlines path.shut{stroke:var(--line);opacity:.55}
.amlines path.open{stroke:var(--hot);opacity:.75;stroke-dasharray:5 7;animation:flow 1.1s linear infinite;filter:drop-shadow(0 0 3px rgba(255,79,216,.7))}
.amlines path.hot{opacity:1;stroke-width:2.2}
.amlines path.faded{opacity:.08}
@keyframes flow{to{stroke-dashoffset:-12}}
.amcol{display:flex;flex-direction:column;gap:10px;position:relative;z-index:1;min-width:0}
.amstage{display:flex;align-items:baseline;gap:8px;padding:0 0 8px;margin-bottom:4px;border-bottom:1px solid var(--violet);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase}
.amstage b{color:var(--text);font-weight:700}
.amno{color:var(--hot)}
.anode{display:block;width:100%;text-align:left;font:inherit;font-size:.8rem;line-height:1.35;color:var(--text);background:var(--panel);border:1px solid var(--line);border-left-width:3px;border-radius:6px;padding:9px 10px;cursor:pointer;transition:border-color .25s,box-shadow .25s,opacity .2s,background .25s,transform .15s}
.anode b{display:block;font-weight:400;overflow-wrap:anywhere}
.anode small{display:block;margin-top:3px;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase}
.anode:hover{transform:translateX(2px)}
.anode:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.anode.st-exp{border-color:var(--hot);background:linear-gradient(90deg,rgba(255,79,216,.14),transparent 70%),var(--panel);box-shadow:0 0 18px -6px rgba(255,79,216,.8)}
.anode.st-exp small{color:var(--hot)}
.anode.st-par{border-color:#ff9d4d;background:linear-gradient(90deg,rgba(255,157,77,.1),transparent 70%),var(--panel)}
.anode.st-par small{color:#ff9d4d}
.anode.st-cov{border-color:var(--line);border-left-color:var(--blue);color:var(--dim)}
.anode.st-cov small{color:var(--blue)}
.anode.sel{outline:1px solid var(--text);outline-offset:2px}
.anode.faded{opacity:.3}
.amdetail{margin-top:26px;padding:18px 20px;border:1px solid var(--line);border-left:3px solid var(--line);border-radius:8px;background:var(--panel);scroll-margin-top:110px}
.amdetail.st-exp{border-left-color:var(--hot)}.amdetail.st-par{border-left-color:#ff9d4d}.amdetail.st-cov{border-left-color:var(--blue)}
.amdh{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center}
.amdetail h3{margin:0;font-size:1.15rem;color:var(--text)}
.amdetail h4{margin:18px 0 8px;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--violet);font-weight:400}
.amdetail p{margin:8px 0 0;max-width:80ch}
.ammitre{font-size:.82rem;color:var(--dim)}.ammitre a{color:var(--blue);text-decoration:underline}
.amnote{border-left:2px solid var(--violet);padding-left:12px;color:var(--dim)}
.amctl{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
@media (max-width:899px){.amap{grid-template-columns:1fr;gap:22px}.amlines{display:none}.anode{font-size:.88rem}}
@media (prefers-reduced-motion:reduce){.amlines path.open{animation:none}.anode:hover{transform:none}}
@media print{.amlines,#am-controls,#am-presets{display:none}}
@media (max-width:899px){.anode.faded{opacity:1}}

/* ca-analyzer */
.polrow{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px;align-items:start;padding:12px 0;border-bottom:1px solid var(--line)}
.polrow b{color:var(--text);font-weight:700;overflow-wrap:anywhere}
.polrow p{margin:2px 0 0;color:var(--dim);max-width:86ch}
.polrow .sevtag{margin-top:3px}
.cov td:first-child{white-space:normal;min-width:16ch}
.cov td:nth-child(3){overflow-wrap:anywhere;min-width:14ch}
#ca-out h2{margin-top:38px}
#ca-text{min-height:120px;font-size:.82rem}
@media (max-width:640px){.polrow{grid-template-columns:1fr}}

/* home: second feature row */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.fcard{position:relative;display:flex;flex-direction:column;gap:6px;padding:22px;border:1px solid var(--line);border-radius:10px;background:radial-gradient(120% 120% at 0 0,rgba(77,163,255,.12),transparent 55%),var(--panel);transition:border-color .25s,box-shadow .25s,transform .2s}
.fcard:hover{border-color:var(--violet);box-shadow:0 0 40px -10px rgba(180,92,255,.6);transform:translateY(-3px)}
.fcard .kick{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--hot)}
.fcard h3{margin:0;font-size:1.2rem;color:var(--text)}
.fcard p{margin:0;color:var(--dim);font-size:.92rem}
.fcard .go{margin-top:auto;padding-top:8px;color:var(--blue)}
.fcard:hover .go{color:var(--text)}
.mini{width:100%;max-width:300px;height:70px;margin:8px 0 2px}
.mini path{fill:none;stroke-width:1.5}
.mini path.o{stroke:var(--hot);stroke-dasharray:4 6;animation:flow 1.1s linear infinite}
.mini path.c{stroke:var(--line)}
.mini circle.o{fill:var(--bg);stroke:var(--hot);stroke-width:2}
.mini circle.c{fill:var(--bg);stroke:var(--blue);stroke-width:2}
.minilist{list-style:none;margin:8px 0 2px;padding:0;font-size:.8rem;color:var(--text)}
.minilist li{display:flex;gap:10px;align-items:center;padding:4px 0}
@media (max-width:760px){.duo{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.mini path.o{animation:none}.fcard:hover{transform:none}}

/* ---------- language picker and on-device translation bar ---------- */
.lang{min-width:3.4em;justify-content:center;border-color:var(--line);color:var(--dim)}
.lang::after{content:none}
#langmenu{position:absolute;top:calc(100% + 6px);right:0;z-index:50;width:236px;padding:6px;background:var(--panel);border:1px solid var(--violet);border-radius:8px;box-shadow:0 12px 40px -8px rgba(180,92,255,.5)}
#langmenu button{display:block;width:100%;text-align:left;background:none;border:0;border-radius:5px;padding:8px 10px;color:var(--text);font:inherit;cursor:pointer}
#langmenu button:hover,#langmenu button:focus-visible{background:rgba(180,92,255,.18);outline:none}
#langmenu button[aria-checked="true"]{color:var(--blue)}
#langmenu button[aria-checked="true"]::before{content:"\25CF  ";color:var(--hot);font-size:.7em}
#langmenu small{display:block;padding:8px 10px 4px;margin-top:4px;border-top:1px solid var(--line);color:var(--dim);font-size:.72rem;line-height:1.4}
#trbar{position:fixed;left:16px;bottom:40px;z-index:46;max-width:min(440px,calc(100vw - 32px));display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 34px 10px 14px;background:var(--panel);border:1px solid var(--violet);border-left-width:3px;border-radius:8px;box-shadow:0 10px 36px -8px rgba(180,92,255,.55);font-size:.82rem;color:var(--text)}
#trbar small{flex-basis:100%;color:var(--dim);font-size:.74rem}
#trbar a,#trbar button{background:none;border:0;padding:0;font:inherit;color:var(--blue);text-decoration:underline;cursor:pointer}
#trbar .x{position:absolute;top:4px;right:8px;text-decoration:none;color:var(--dim);font-size:1.1rem;line-height:1}
@media (max-width:760px){header{grid-template-columns:1fr auto auto}#trbar{bottom:16px}}
@media print{#trbar,.lang,#langmenu{display:none!important}}

/* domain-check */
.gradebox{display:grid;grid-template-columns:auto 1fr;gap:18px 22px;align-items:center;margin-top:8px;padding:18px 20px;border:1px solid var(--line);border-left-width:4px;border-radius:8px;background:var(--panel)}
.gradebox .grade{width:84px;height:84px;display:grid;place-items:center;font-size:3rem;font-weight:700;line-height:1;border:2px solid currentColor;border-radius:12px;text-shadow:0 0 18px currentColor}
.gradebox b{font-size:1.15rem;color:var(--text)}
.gradebox p{margin:6px 0 0;color:var(--dim);max-width:70ch}
.g-A,.g-B{border-color:var(--blue)}.g-A .grade,.g-B .grade{color:var(--blue)}
.g-C{border-color:var(--violet)}.g-C .grade{color:var(--violet)}
.g-D{border-color:#ff9d4d}.g-D .grade{color:#ff9d4d}
.g-F{border-color:var(--hot);box-shadow:0 0 30px -6px rgba(255,79,216,.5)}.g-F .grade{color:var(--hot)}
#dc-out h2{margin-top:38px}
.rec td{overflow-wrap:anywhere}
.rec td:first-child{white-space:normal;min-width:14ch}
@media (max-width:560px){.gradebox{grid-template-columns:1fr}.gradebox .grade{width:64px;height:64px;font-size:2.2rem}}

/* incident-sim */
.pickcard{text-align:left;font:inherit;color:inherit;cursor:pointer;width:100%}
.simgrid{display:grid;grid-template-columns:1.15fr 1fr;gap:16px;margin-top:14px;align-items:start}
.isfeed{background:var(--bg);border:1px solid var(--violet);border-radius:8px;padding:14px 16px;height:460px;overflow-y:auto;font-size:.82rem;line-height:1.55;box-shadow:inset 0 0 40px rgba(77,163,255,.06),0 0 30px -8px rgba(180,92,255,.4)}
.isfeed p{margin:0 0 5px;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere}
.isfeed .sys{color:var(--dim)}
.isfeed .sep{color:var(--violet);margin-top:12px}
.isfeed .you{color:var(--blue)}
.isfeed .warn{color:var(--hot)}
.isfeed:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.isq{margin:0 0 12px;font-size:1.02rem;color:var(--text)}
.choice{display:block;width:100%;text-align:left;font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:11px 14px;margin-bottom:8px;cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .15s}
.choice small{display:block;margin-top:4px;color:var(--dim);font-size:.74rem}
.choice:hover:not(:disabled){border-color:var(--violet);box-shadow:0 0 22px -6px rgba(180,92,255,.7);transform:translateX(3px)}
.choice:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.choice:disabled{opacity:.45;cursor:default}
.isfb{margin-top:6px;padding:14px 16px;border:1px solid var(--line);border-left-width:3px;border-radius:8px;background:var(--panel)}
.isfb b{display:block}
.isfb p{margin:6px 0 12px;color:var(--dim)}
.isfb.r3{border-left-color:var(--blue)}.isfb.r3 b{color:var(--blue)}
.isfb.r2{border-left-color:var(--violet)}.isfb.r2 b{color:var(--violet)}
.isfb.r1{border-left-color:#ff9d4d}.isfb.r1 b{color:#ff9d4d}
.isfb.r0{border-left-color:var(--hot)}.isfb.r0 b{color:var(--hot)}
#is-end h2{margin-top:32px}
@media (max-width:860px){.simgrid{grid-template-columns:1fr}.isfeed{height:260px}}
@media (prefers-reduced-motion:reduce){.choice:hover:not(:disabled){transform:none}}

/* attack-map: what to fix first */
.moverow{display:grid;grid-template-columns:minmax(0,1.3fr) auto;gap:6px 18px;align-items:center;padding:14px 16px;margin-top:10px;border:1px solid var(--line);border-left:3px solid var(--line);border-radius:8px;background:var(--panel)}
.moverow.top{border-color:var(--violet);border-left-color:var(--hot);box-shadow:0 0 30px -10px rgba(180,92,255,.7)}
.moverow .kick{display:block;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--hot);margin-bottom:2px}
.moverow b{display:block;color:var(--text)}
.moverow p{grid-column:1/-1;margin:0;color:var(--dim);font-size:.86rem}
.moverow .btn{grid-column:1/-1;justify-self:start}
.movefx{text-align:right}
.mnum{display:block;font-size:1.35rem;font-weight:700;color:var(--blue);white-space:nowrap}
.movefx small{color:var(--dim);font-size:.72rem}
.road{margin:14px 0 0;padding-left:26px}
.road li{margin:0 0 10px;color:var(--dim)}
.road li b{display:block;color:var(--text);font-weight:400}
.roadbar{display:inline-block;width:160px;height:6px;border-radius:3px;background:var(--line);vertical-align:middle;margin-right:10px;overflow:hidden}
.roadbar i{display:block;height:100%;background:linear-gradient(90deg,var(--hot),var(--violet));border-radius:3px}
@media (max-width:560px){.moverow{grid-template-columns:1fr}.movefx{text-align:left}}
/* CRT mode (type crt in the home terminal) */
html.crt::after{content:"";position:fixed;inset:0;z-index:90;pointer-events:none;background:repeating-linear-gradient(transparent 0 2px,rgba(0,0,0,.22) 2px 3px),radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55));mix-blend-mode:multiply}
html.crt body{text-shadow:0 0 6px rgba(120,160,255,.45)}
html.crt .wrap{animation:crt-flicker 6s steps(1) infinite}
@keyframes crt-flicker{0%,97%,100%{opacity:1}98%{opacity:.93}99%{opacity:.98}}
@media (prefers-reduced-motion:reduce){html.crt .wrap{animation:none}}
@media print{html.crt::after{display:none}}

/* cockpit */
.cpbar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin:18px 0 6px}
.cockpit{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;margin-top:14px}
.cptile{position:relative;margin:0;padding:16px 18px 18px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(180deg,rgba(77,163,255,.05),transparent 45%),var(--panel);display:flex;flex-direction:column;gap:6px;min-width:0}
.cptile.empty{border-style:dashed}
.cptile.empty .btn{align-self:flex-start;margin-top:4px}
.cph{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.cph .kick{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--violet)}
.cpopen{font-size:.76rem;color:var(--blue)}
.cpopen:hover{color:var(--text)}
.cpbig{font-size:2.1rem;line-height:1.15;font-weight:700;color:var(--text)}
.cpbig.hot{color:var(--hot);text-shadow:0 0 18px rgba(255,79,216,.55)}.cpbig.or{color:#ff9d4d}.cpbig.bl{color:var(--blue);text-shadow:0 0 18px rgba(77,163,255,.5)}.cpbig.vi{color:var(--violet)}
.cpbig.gA,.cpbig.gB{color:var(--blue)}.cpbig.gC{color:var(--violet)}.cpbig.gD{color:#ff9d4d}.cpbig.gF{color:var(--hot)}
.cptile p{margin:0;color:var(--text);font-size:.88rem}
.cptile p.dim,.cptile .cpl{color:var(--dim)}
.cplist{margin:2px 0 0;padding-left:18px;color:var(--dim);font-size:.82rem}
.cplist a{color:var(--blue)}
.cpage{margin-top:auto;padding-top:6px;color:var(--dim);font-size:.72rem}
.cptile .meter{margin-top:4px}

/* glossary entries share the class name of the hero terminal: give them their own plain look */
.term:not(:has(>.bar)){background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;overflow:visible;padding:14px 0}
.term:not(:has(>.bar)) p{color:var(--dim);max-width:86ch}
.stat-v{overflow-wrap:anywhere}


/* ================================================================
   PASS 4: discipline. Fewer effects, one type scale, listings on home.
   Motion only where it answers an action or carries meaning.
   ================================================================ */
body::before{animation:none}
h1{filter:none;letter-spacing:-.015em;margin-bottom:22px}
h1::after{animation:caret 1.1s steps(1) 3}
.brand,h2{text-shadow:none}
nav a:hover,.feed a:hover,footer a:hover{text-shadow:none}
h2{font-size:1.02rem;letter-spacing:.01em}
main p{max-width:76ch}
.dim{max-width:68ch}
.stat-v,.tbl td,.mnum,.cpbig,.grade{font-variant-numeric:tabular-nums}

/* cards: a quiet border change is enough */
.card,.dcard,.story-card,.fcard{transition:border-color .15s ease,background-color .15s ease}
.card:hover,.dcard:hover,.story-card:hover,.fcard:hover{transform:none;box-shadow:none}
.card::after,.dcard::after,.story-card::after{content:none}
.card:hover::before,.dcard:hover::before,.story-card:hover::before{background:var(--violet)}
.fcard:hover{border-color:var(--violet)}
.fcard .go{text-decoration:underline;text-underline-offset:3px}
.card small:empty{display:none}

/* buttons: state, not spectacle */
.btn::before{content:none}
.btn{transition:border-color .15s ease,background-color .15s ease,color .15s ease}
.btn:hover{box-shadow:none;border-color:var(--violet);color:var(--text);background:rgba(180,92,255,.12)}
.btn.solid:hover{box-shadow:none;background:linear-gradient(90deg,var(--blue),var(--violet));filter:brightness(1.12)}
.btn:disabled:hover{background:transparent}
.choice:hover:not(:disabled),.anode:hover{transform:none}
.jump a:hover,.cchip:has(input:checked){box-shadow:none}

/* labels in sentence case: the mono face already says "console" */
.tbl th{text-transform:none;letter-spacing:0;font-size:.82rem}
.stat-k,.kick,.cph .kick,.feature .kick,.fcard .kick,.moverow .kick,.cgroup legend,.amdetail h4,.amstage,.anode small{text-transform:none;letter-spacing:.01em}
.stat-k{font-size:.76rem}
.feature .kick,.fcard .kick,.moverow .kick{font-size:.78rem}
.amdetail h4,.cgroup legend{font-size:.8rem}
.anode small{font-size:.72rem}

/* home: directory listings */
.ls{display:grid;grid-template-columns:1fr 1fr;gap:0 36px;border-top:1px solid var(--line)}
.lsrow{display:grid;grid-template-columns:18ch 1fr auto;gap:4px 16px;align-items:baseline;padding:11px 6px;border-bottom:1px solid var(--line);transition:background-color .12s ease}
.lsrow b{color:var(--blue);font-weight:700;overflow-wrap:anywhere}
.lsrow span{color:var(--dim);font-size:.88rem;line-height:1.5}
.lsrow em{font-style:normal;font-size:.72rem;color:var(--hot);border:1px solid rgba(255,79,216,.45);border-radius:99px;padding:0 8px}
.lsrow:hover{background:rgba(77,163,255,.07)}
.lsrow:hover b{color:var(--text)}
.lsrow:hover span{color:var(--text)}
.lsrow:focus-visible{outline:2px solid var(--blue);outline-offset:-2px}
@media (max-width:900px){.ls{grid-template-columns:1fr}}
@media (max-width:520px){.lsrow{grid-template-columns:1fr auto}.lsrow span{grid-column:1/-1}}
section{margin-top:52px}
.jump{margin-top:20px}
.feature{margin-top:34px}

/* footer: a way out of every page */
footer{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px 28px;margin:84px 0 34px;padding-top:28px;font-size:.84rem}
.fcol{display:flex;flex-direction:column;gap:7px;min-width:0}
.fcol b{color:var(--text);font-weight:700;margin-bottom:2px}
.fcol a{color:var(--dim)}
.fcol a:hover{color:var(--blue)}
.fline{grid-column:1/-1;margin:6px 0 0;color:var(--dim);font-size:.78rem;max-width:none}
@media (max-width:640px){footer{grid-template-columns:1fr 1fr}}
@media print{footer{display:none}}
@media (max-width:520px){.lsrow em{grid-row:1;grid-column:2;align-self:center}.lsrow span{grid-row:2}}
.lsrow em{justify-self:end;white-space:nowrap}

/* mail flow debugger */
.chipbtn{font:inherit;font-size:.82rem;color:var(--dim);background:rgba(13,11,43,.7);border:1px solid var(--line);border-radius:99px;padding:5px 13px;cursor:pointer;transition:border-color .15s ease,color .15s ease}
.chipbtn:hover,.chipbtn:focus-visible{border-color:var(--violet);color:var(--text)}
#mf-out h2{margin-top:34px}#mf-out h3{margin:18px 0 4px;font-size:.95rem;color:var(--blue)}
#mf-out .steps{max-width:78ch}#mf-out pre+.btn,#mf-out p+.btn{margin-top:10px}
#mf-out .kv dt{white-space:nowrap}
@media (max-width:520px){#mf-out .kv{grid-template-columns:1fr;gap:0 0}#mf-out .kv dd{margin-bottom:8px}}
@media (max-width:520px){#mf-out .verdict b{font-size:1.15rem;line-height:1.35}}
/* intune analyzer */
#ia-out h2,#sa-out h2{margin-top:36px}
#ia-out .finding .tw+.btn,#ia-out .finding .note+.btn{margin-top:12px}
#ia-out .grid2 h3.fh{margin-top:10px}
@media (min-width:980px){#is-list{grid-template-columns:repeat(3,minmax(0,1fr))}#is-list .pickcard h3{font-size:1.05rem}}
/* license optimizer */
#lo-out h2,#aa-out h2{margin-top:36px}
#lo-out .finding .tw+.btn,#lo-out .finding .note+.btn,#lo-out pre+.btn,#lo-script+.btn,#aa-out .finding .tw+.btn,#aa-out .finding .note+.btn,#aa-out pre+.btn,#aa-script+.btn{margin-top:12px}
#lo-out .tbl input.q{font-size:.85rem}
#aa-out .finding td:last-child,#aa-out .finding th:last-child,#lo-out .finding td:last-child{white-space:nowrap}

/* ============ PASS 5: typography ============
   Running text is set in IBM Plex Sans. JetBrains Mono stays for everything that is identity,
   interface or data: brand, navigation, headings, labels, buttons, code, numbers. */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url("plex-400.woff2") format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url("plex-400-ext.woff2") format("woff2");unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url("plex-400-sym.woff2") format("woff2");unicode-range:U+2000-200D,U+2015,U+2032-2033,U+2190-2199,U+21A9-21AA,U+2202,U+2206,U+2211,U+221A,U+221E,U+2248,U+2260,U+2264-2265,U+2713,U+274C}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600 700;font-display:swap;src:url("plex-600.woff2") format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+20AC,U+2122,U+2212,U+FB01-FB02}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600 700;font-display:swap;src:url("plex-600-ext.woff2") format("woff2");unicode-range:U+0100-0101,U+0104-0130,U+0132-0151,U+0154-017F,U+018F,U+0192,U+01A0-01A1,U+01AF-01B0,U+01FA-01FF,U+0218-021B,U+0237,U+0259,U+1E80-1E85,U+1E9E}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:100 800;font-display:swap;src:url("jbmono.woff2") format("woff2")}
:root{--sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:"JetBrains Mono",ui-monospace,"Cascadia Code",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
body{font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
/* identity, interface, data */
header,.brand,nav,.crumb,h1,h2,h3,kbd,code,pre,samp,textarea,input,select,button,.btn,.sbtn,.lang,#langmenu,#sl,#kh,#spal,
.sevtag,.cnt,.kick,.stat,.stats,.jump,.chipbtn,.cchip,.cgroup,.verdict b,.lsrow b,.lsrow em,.card b,.card small,.dcard b,.fcard .kick,.fcard .go,
.feed .hi,.feed .src,.kv,.ltr,.term:has(>.bar),.isfeed,.fdiag,.amap,.amscore,.anode,.cpbig,.cpage,.grade,.gradebox,.mini,.minilist,.polrow>span:first-child,
.tbl th,svg text,.note code,summary{font-family:var(--mono)}
/* prose */
p,li,dd,td,.dim,.note,.lsrow span,.card p,.fcard p,.finding p,.choice,.isfb p,.fline{font-family:var(--sans)}
p,li,dd{line-height:1.62}
.dim{font-size:.97rem}
main>p.dim,section>p.dim,.tool>p.dim{max-width:66ch}
.finding p,#mf-out p,.note{max-width:74ch}
.tbl td{font-size:.93rem;line-height:1.5;font-variant-numeric:tabular-nums}
.tbl th{font-weight:500}
.lsrow span{font-size:.92rem;line-height:1.5}
.card p,.fcard p{font-size:.94rem;line-height:1.55}
.note{font-size:.9rem;line-height:1.6}
.steps li,main ul li{margin:7px 0}
h1,h2,h3{font-feature-settings:"calt" 0}
/* containers that stay monospace all the way down: terminals, log feeds, palettes, key-value facts */
:is(.term:has(>.bar),.isfeed,#sl,#kh,.kv,.stat,.fdiag,.amap,pre) :is(p,li,dd,dt,td,span,b,small,div){font-family:var(--mono)}
.btn,.sbtn{font-size:.9rem}
.finding summary b,.verdict span{font-family:var(--sans)}
.finding summary b{font-weight:600;font-size:1rem}
.isfeed{font-size:.86rem}
.choice span{font-size:1rem;line-height:1.5}
.term:has(>.bar){font-size:.93rem}

/* ============ DESIGN 2: hub pages ============ */
.hubbar{display:flex;align-items:center;gap:14px;margin-top:22px;max-width:560px}
.hubbar .q{margin:0;flex:1}
.hubbar #hubn{white-space:nowrap;font-family:var(--mono);font-size:.82rem}
.hubbar+.jump{margin-top:14px}
.hubsec{margin-top:46px;scroll-margin-top:84px}
.hubsec>p.dim{margin:2px 0 14px}
.ls.hub .lsrow{grid-template-columns:23ch 1fr auto;padding:12px 6px}
.lsrow i{font-style:normal;font-family:var(--mono);font-size:.74rem;color:var(--dim);white-space:nowrap;justify-self:end;align-self:baseline;opacity:.85}
.lsrow[hidden]{display:none}
@media (max-width:900px){.ls.hub{grid-template-columns:1fr}}
@media (max-width:520px){.ls.hub .lsrow{grid-template-columns:1fr auto}.ls.hub .lsrow i{grid-row:1;grid-column:2}.ls.hub .lsrow span{grid-row:2;grid-column:1/-1}}
.ls.hub{grid-template-columns:1fr}
.ls.hub .lsrow{grid-template-columns:24ch 1fr auto;gap:4px 22px}
.ls.hub .lsrow span{max-width:76ch}
@media (max-width:760px){.ls.hub .lsrow{grid-template-columns:1fr auto;gap:2px 12px}.ls.hub .lsrow i{grid-row:1;grid-column:2}.ls.hub .lsrow span{grid-row:2;grid-column:1/-1}}

/* ============ DESIGN 3: home ============ */
.lede{font-family:var(--sans);font-size:1.12rem;line-height:1.55;color:var(--text);max-width:60ch;margin:0 0 26px}
.term:has(>.bar) .tout{min-height:2.6em;max-height:15em;overflow:auto}
.tryrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.tryrow>span{font-family:var(--mono);font-size:.8rem;color:var(--dim);margin-right:2px}
.jobs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 34px;margin-top:58px}
.job{border-top:2px solid var(--blue);padding-top:16px;display:flex;flex-direction:column;min-width:0}
.job.j2{border-top-color:var(--violet)}.job.j3{border-top-color:var(--hot)}
.job h2{margin:0;font-size:1.22rem;color:var(--text);background:none;-webkit-text-fill-color:currentColor;display:block}
.job h2::before,.job h2::after{content:none}
.job>p{margin:6px 0 12px;color:var(--dim);font-size:.95rem;line-height:1.5;min-height:4.4em}
.jl{border-top:1px solid var(--line)}
.jl a{display:block;padding:10px 2px;border-bottom:1px solid var(--line);transition:background-color .15s ease}
.jl a:hover,.jl a:focus-visible{background:rgba(77,163,255,.07)}
.jl b{display:block;font-family:var(--mono);font-size:.92rem;color:var(--blue);font-weight:700}
.jl span{display:block;font-family:var(--sans);font-size:.9rem;color:var(--dim);line-height:1.45}
.jmore{margin-top:12px;font-family:var(--mono);font-size:.82rem;color:var(--violet);text-decoration:underline;text-underline-offset:3px;align-self:flex-start}
.dirs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:54px}
.dirs a{background:var(--panel);padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0;transition:background-color .15s ease}
.dirs a:hover,.dirs a:focus-visible{background:#141046}
.dirs b{font-family:var(--mono);font-size:1.5rem;line-height:1.2;color:var(--text)}
.dirs span{font-family:var(--mono);font-size:.76rem;color:var(--dim)}
h2.plain{margin-top:60px}
.live{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:0 44px;margin-top:58px}
.live h2{margin-top:0}
.live p.dim a{text-decoration:underline;text-underline-offset:3px}
.live .feed li{grid-template-columns:6.5ch 1fr;gap:2px 12px;padding:9px 0}
.live .feed .src{grid-column:2;grid-row:1;font-family:var(--mono);font-size:.74rem}
.live .feed li>:last-child{grid-column:2;font-family:var(--sans);font-size:.94rem;line-height:1.45}
.live .feed .hi{grid-row:1/3;font-size:.8rem;padding-top:1px}
@media (max-width:900px){.jobs{grid-template-columns:1fr;gap:34px 0}.job>p{min-height:0}.dirs{grid-template-columns:repeat(3,minmax(0,1fr))}.live{grid-template-columns:1fr;gap:44px 0}}
@media (max-width:480px){.dirs{grid-template-columns:repeat(2,minmax(0,1fr))}.lede{font-size:1.03rem}}
main :not(.tw)>table.tbl{display:block;overflow-x:auto;max-width:100%}
table.perm{display:block;overflow-x:auto;max-width:100%}

/* ============ DESIGN 4: tool frame ============ */
.jump.toc{margin:16px 0 0}
.tframe{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:26px;align-items:start;margin-top:20px}
.tframe.done{grid-template-columns:1fr}.tframe.done .tprev{display:none}
.tfin>:first-child{margin-top:0!important}
.tfin .drop{padding:44px 20px}
.tprev{align-self:stretch;display:flex;flex-direction:column;font-size:.86rem;background:rgba(7,5,26,.75)}
.tprev .bar span{color:var(--dim)}
.tpv{padding:14px 14px 12px;border-bottom:1px solid var(--line);border-left:3px solid var(--line)}
.tpv b{display:block;font-family:var(--mono);font-size:1.02rem;line-height:1.35}
.tpv span{display:block;margin-top:3px;font-family:var(--sans);font-size:.84rem;color:var(--dim)}
.tpv.v-crit{border-left-color:var(--hot);box-shadow:none}.tpv.v-high{border-left-color:#ff9d4d}.tpv.v-med{border-left-color:var(--violet)}.tpv.v-med b{color:var(--violet)}.tpv.v-info{border-left-color:var(--blue)}
.tprev ul{flex:1}
.tprev li{font-family:var(--sans);font-size:.88rem;line-height:1.35;padding:8px 14px;align-items:baseline}
.tprev .sevtag{min-width:10ch;font-size:.62rem}
.tplink{margin:0;border:0;border-top:1px solid var(--line);background:none;color:var(--blue);font-family:var(--mono);font-size:.82rem;text-align:left;padding:11px 14px;cursor:pointer;transition:background-color .15s ease}
.tplink:hover,.tplink:focus-visible{background:rgba(77,163,255,.09)}
main h2[id^="s-"],main [id$="-out"]{scroll-margin-top:84px}
@media (max-width:860px){.tframe{grid-template-columns:1fr}}

/* ============ DESIGN 5: components ============ */
[hidden]{display:none!important}
/* focus: one ring everywhere */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--blue);outline-offset:2px}
/* form fields: quiet until used */
.q,select.sel,input.sel,input.n{border-color:var(--line);box-shadow:none;transition:border-color .15s ease,background-color .15s ease}
.q{padding:12px 14px}
.q:hover,select.sel:hover,input.sel:hover,input.n:hover{border-color:#3d3590}
.q:focus,.q:focus-visible,select.sel:focus,select.sel:focus-visible,input.sel:focus,input.sel:focus-visible,input.n:focus,input.n:focus-visible{border-color:var(--violet);box-shadow:none;outline:2px solid rgba(180,92,255,.4);outline-offset:1px}
.drop:hover,.drop.over,.drop:focus-within{box-shadow:none}
/* buttons: one shape, three weights */
.btn,a.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:7px 14px;line-height:1.2;font-weight:500;border-radius:6px}
.btn:active{transform:translateY(1px)}
.btn.ghost{border-color:var(--line);color:var(--dim)}
.btn.ghost:hover{border-color:var(--blue);color:var(--blue);background:transparent}
/* chips */
.jump a,.chipbtn{font-family:var(--mono);font-size:.8rem;padding:4px 13px;border:1px solid var(--line);border-radius:99px;color:var(--dim);background:rgba(13,11,43,.6);transition:border-color .15s ease,color .15s ease;box-shadow:none}
.jump a:hover,.jump a:focus-visible,.chipbtn:hover,.chipbtn:focus-visible{border-color:var(--violet);color:var(--text);box-shadow:none}
/* links inside running text */
main :is(p,li,td,dd) a:where(:not([class])):where(:not(.feed a,.crumb a,.jl a,.cplist a,.minilist a,.rel a,.fline a)){color:var(--blue);text-decoration:underline;text-decoration-color:rgba(77,163,255,.4);text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-color .15s ease}
main :is(p,li,td,dd) a:where(:not([class])):where(:not(.feed a,.crumb a,.jl a,.cplist a,.minilist a,.rel a,.fline a)):hover{text-decoration-color:var(--blue)}
/* inline code */
:not(pre)>code{font-size:.87em;background:rgba(77,163,255,.09);border:1px solid rgba(77,163,255,.16);border-radius:4px;padding:.5px 5px;overflow-wrap:anywhere}
pre{line-height:1.55;border-radius:8px}
/* tables */
.tbl th,.tbl td{padding:9px 12px}
.tbl tbody tr{transition:background-color .12s ease}
.tbl tbody tr:hover{background:rgba(77,163,255,.045)}
.tbl td:first-child{font-weight:500}
/* findings */
.finding{border-radius:8px}
.finding summary{align-items:center;cursor:pointer}
.finding summary::after,.finding[open] summary::after{content:"";flex:none;width:8px;height:8px;margin:0 4px 0 auto;border-right:1.5px solid var(--dim);border-bottom:1.5px solid var(--dim);transform:rotate(45deg) translate(-2px,-2px);transition:transform .15s ease}
.finding[open] summary::after{transform:rotate(-135deg) translate(-2px,-2px)}
.finding[open] summary{border-bottom:1px solid var(--line);margin-bottom:14px}
.finding h3.fh{font-family:var(--mono);font-size:.8rem;font-weight:500;color:var(--dim);margin:22px 0 6px}
.finding .steps{margin-top:4px}
/* cheat sheet snippets: title and copy on one line */
#snips .snip{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 14px;align-items:start;padding:16px 16px 16px;border-radius:8px}
#snips .snip h3{grid-column:1;grid-row:1;font-family:var(--sans);font-weight:600;font-size:1.02rem;color:var(--text);margin:0}
#snips .snip>.btn{grid-column:2;grid-row:1;min-height:28px;padding:2px 12px;font-size:.76rem;border-color:var(--line);color:var(--dim)}
#snips .snip>.btn:hover{border-color:var(--blue);color:var(--blue)}
#snips .snip p{grid-column:1/-1;grid-row:2;margin:3px 0 11px;font-size:.93rem}
#snips .snip pre{grid-column:1/-1;grid-row:3;margin:0;font-size:.84rem}
/* scrollbar: no gradient */
::-webkit-scrollbar-thumb{background:#2a2466;border-radius:10px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#3d3590}
/* pictograms on the home page */
.job h2{display:flex;align-items:center;gap:10px}
.jico{flex:none;width:22px;height:22px;fill:none;stroke:var(--blue);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.j2 .jico{stroke:var(--violet)}.j3 .jico{stroke:var(--hot)}
.sbtn,.lang{min-height:32px;padding:5px 12px}
.seg .btn{min-height:32px}
.job>p{min-height:3.1em}
#ob-fwd{max-width:100%;min-width:0}label:has(>#ob-fwd){flex-wrap:wrap}

/* ============ DESIGN 6: start-here, about, 404 ============ */
.ways{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 34px;border-top:1px solid var(--line);margin-top:6px}
.ways>div{padding:16px 0}
.ways b{font-family:var(--mono);color:var(--blue)}
.ways p{margin:4px 0 0;color:var(--dim);font-size:.95rem}
.prose{max-width:74ch}
.prose h2{margin-top:44px}
.facts{margin:10px 0 0;display:grid;grid-template-columns:minmax(0,22ch) minmax(0,1fr);gap:0 26px;border-top:1px solid var(--line)}
.facts dt,.facts dd{margin:0;padding:13px 0;border-bottom:1px solid var(--line)}
.facts dt{font-family:var(--mono);font-size:.88rem;color:var(--blue);font-weight:700}
.facts dd{font-family:var(--sans);color:var(--dim);line-height:1.6}
.term.nf .tb{padding:16px 20px}
.term.nf p{margin:2px 0}
.term.nf .out{color:var(--dim)}
.term.nf .out a{color:var(--blue);text-decoration:underline;text-underline-offset:3px;margin-right:6px}
@media (max-width:760px){.ways{grid-template-columns:1fr}.facts{grid-template-columns:1fr}.facts dt{border-bottom:0;padding-bottom:0}.facts dd{padding-top:4px}}

/* ============ DESIGN 7: motion ============ */
/* page change: the header stays put, the content cross-fades */
@view-transition{navigation:auto}
header{view-transition-name:site-header}
#sl{view-transition-name:status-line}
::view-transition-old(root),::view-transition-new(root){animation-duration:.16s;animation-timing-function:ease}
::view-transition-group(site-header),::view-transition-group(status-line){animation-duration:0s}
/* a result arriving: verdict first, then the numbers, then the findings one by one */
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.rvl>.verdict{animation:rise .32s cubic-bezier(.2,.8,.2,1) both}
.rvl>.stats,.rvl>.kv{animation:rise .32s cubic-bezier(.2,.8,.2,1) .08s both}
.rvl>.finding{animation:rise .3s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(.16s + var(--i,0)*.045s)}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}.rvl>*{animation:none!important}}

/* DESIGN 8: mobile, accessibility, print */
.sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip{position:fixed;left:12px;top:-60px;z-index:300;padding:10px 16px;border:1px solid var(--blue);border-radius:8px;background:var(--panel);color:var(--text);font-family:var(--mono);font-size:.85rem;transition:top .12s ease}
.skip:focus{top:12px}
main:focus{outline:none}
@media (prefers-reduced-motion:reduce){.skip{transition:none}}
@media (pointer:coarse),(max-width:760px){
header .brand,header nav a{display:inline-flex;align-items:center;min-height:44px}
header nav a{padding-inline:2px}
.fcol{gap:0}
.fcol a{display:flex;align-items:center;min-height:40px}
.fcol b{margin-bottom:4px}
.fline a{display:inline-block;padding-block:9px}
.jmore,.cpopen{display:inline-flex;align-items:center;min-height:40px}
.jmore{margin-top:4px}
.jl a,.minilist a,.cplist a,.rel a{padding-block:6px}
main h3>a,main .term>a{display:inline-block;padding-block:7px}
main nav:not([class]) a,main nav.az a{display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:36px}
.hubbar .jump a,.jump a{min-height:36px;display:inline-flex;align-items:center}
input,select,textarea{font-size:max(16px,1em)}
}
@media print{
@page{margin:16mm 14mm}
:root{--text:#000;--dim:#444;--blue:#000;--violet:#000;--hot:#000;--line:#bbb;--panel:#fff;--bg:#fff}
html,body{background:#fff!important;color:#000!important;font-size:10.5pt}
body::before,body::after,html::before,html::after{display:none!important}
.skip,header,footer,.crumb,.jump,.hubbar,.tprev,.tryrow,.term:has(#cmd),.term.nf,.btn,.chipbtn,.ctl,.drop,input.q,#q,#sl,#kh,#trbar,.rel,.jmore,.dirs,.live,.lang,dialog,.copy{display:none!important}
.wrap{max-width:none!important;padding:0!important;margin:0!important}
*{box-shadow:none!important;text-shadow:none!important;animation:none!important;transition:none!important}
h1,h2,h3{color:#000!important;background:none!important;-webkit-text-fill-color:#000!important;break-after:avoid}
h1{font-size:18pt;margin-top:0}h2{font-size:13pt}h3{font-size:11pt}
p,li{orphans:3;widows:3}
main a{color:#000!important;text-decoration:underline}
main :is(p,li,dd) a[href^="http"]::after{content:" (" attr(href) ")";font-size:.85em;color:#444;word-break:break-all}
pre,code{background:#fff!important;color:#000!important;border-color:#bbb!important;white-space:pre-wrap!important;overflow-wrap:anywhere;font-size:8.5pt}
pre{border:1px solid #bbb;break-inside:avoid}
.snip,.finding,.stat,.verdict,.chk li,.term,tr,.hubsec .lsrow,figure{break-inside:avoid}
.snip,.finding,.stat,.stats,.verdict,.chartbox,.card,.feature,.job,.tfin,.tframe,.ls,.lsrow{background:#fff!important;border-color:#bbb!important;color:#000!important}
#snips{display:block!important}#snips .snip{margin:0 0 10pt;padding:8pt 10pt}
.snip[hidden],[hidden]{display:none!important}
details{display:block}details>summary{list-style:none}details:not([open])>*:not(summary){display:block}
table{border-collapse:collapse;width:100%}th,td{border:1px solid #bbb!important;color:#000!important;background:#fff!important;padding:3pt 5pt}
thead{display:table-header-group}.tw{overflow:visible!important}
input[type=checkbox]{-webkit-appearance:auto;appearance:auto;accent-color:#000}
main::after{content:"admin-hub.xyz";display:block;margin-top:14pt;padding-top:6pt;border-top:1px solid #bbb;font-size:8pt;color:#444}
}
@media print{:root{color-scheme:light}h1::after,h1::before{display:none!important}.tframe.done .tfin,.tframe.done textarea{display:none!important}}
@media print{.reveal,.rvl,.rvl>*{opacity:1!important;transform:none!important}}

/* CA policy builder */
.cbset{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:4px 22px;margin-top:4px}
.cbset .fl small,.cbopt small{display:block;margin-top:6px;font-family:var(--sans);font-size:.8rem;color:var(--dim)}
.cbset .q{width:100%;margin-top:6px}
.cbpre{align-items:center;margin-top:10px}
.cbpre #cb-count{margin-left:auto;font-size:.82rem}
.cbgroup{margin-top:26px}
.cbgroup h3{margin:0;font-size:.95rem;color:var(--text)}
.cbgroup>p{margin:2px 0 10px;font-size:.85rem}
.cbrow{display:grid;grid-template-columns:auto 1fr auto;gap:4px 14px;align-items:start;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:rgba(13,11,43,.55);cursor:pointer;transition:border-color .15s ease,background .15s ease}
.cbrow+.cbrow{margin-top:8px}
.cbrow:hover{border-color:var(--dim)}
.cbrow.on{border-color:var(--blue);background:var(--panel)}
.cbrow input{margin-top:4px;width:16px;height:16px}
.cbtxt b{display:block;font-family:var(--mono);font-size:.9rem;font-weight:600;color:var(--dim)}
.cbrow.on .cbtxt b{color:var(--text)}
.cbtxt span{display:block;margin-top:2px;font-family:var(--sans);font-size:.9rem;color:var(--dim);max-width:74ch}
.cblic{font-style:normal;font-family:var(--mono);font-size:.7rem;color:var(--dim);border:1px solid var(--line);border-radius:4px;padding:1px 7px;white-space:nowrap;margin-top:2px}
.cblic.p2{color:var(--violet);border-color:var(--violet)}
.cbopts{display:none}
.cbrow+.cbopt{margin:6px 0 0 44px}.cbopt+.cbrow{margin-top:8px}
#s-tenant{margin-top:36px}#s-policies{margin-top:44px}
.cbopt{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;padding:10px 14px;border-left:3px solid var(--violet);background:rgba(13,11,43,.55);border-radius:0 8px 8px 0;font-family:var(--sans);font-size:.92rem;color:var(--text)}
.cbopt label{display:inline-flex;gap:8px;align-items:center}
.cbopt .q{width:auto;margin:0;padding:6px 10px}
.cbopt input[type=number]{width:7ch}
#cb-out{margin-top:34px}
#cb-out h2{margin-top:34px}
#cb-out .cbt td:first-child{font-family:var(--mono);font-size:.82rem;min-width:20ch;max-width:30ch;white-space:normal;color:var(--text)}
#cb-out .cbt td{vertical-align:top}
.cbtabs{margin-top:6px}
.chipbtn.on{border-color:var(--blue);color:var(--text)}
#cb-code{max-height:520px;overflow:auto;white-space:pre;font-size:.8rem;margin-top:10px}
#cb-code+.ctl{margin-top:12px}
ol.prose{padding-left:1.3em;max-width:74ch;font-family:var(--sans)}
ol.prose li{margin-top:8px;color:var(--dim)}ol.prose li b{color:var(--text)}
@media (max-width:640px){.cbrow+.cbopt{margin-left:0}.cbopt .q{max-width:100%;min-width:0}.cbopt label{flex-wrap:wrap}.cbrow{grid-template-columns:auto 1fr}.cblic{grid-column:2;justify-self:start}.cbpre #cb-count{margin-left:0;flex-basis:100%}}
@media print{.cbset,.cbpre,#cb-list,.cbopts,.cbtabs{display:none!important}#cb-code{max-height:none;overflow:visible}}

/* firewall rule reviewer */
#fw-out h2{margin-top:36px}
#fw-out .finding .tw+.btn{margin-top:12px}
#fw-out .tbl td{vertical-align:top}
#fw-text{width:100%;font-size:.8rem;white-space:pre}

/* calculators */
.pair{display:grid;grid-template-columns:1fr auto;gap:8px}
.pair select.sel{width:auto;min-width:9ch}
.disks{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.disk{width:64px;height:78px;border:1px solid var(--line);border-radius:8px;background:var(--panel);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-family:var(--mono);border-top-width:4px}
.disk i{font-style:normal;font-size:1.05rem;font-weight:700;color:var(--text)}
.disk span{font-size:.68rem;color:var(--dim)}
.disk.data{border-top-color:var(--blue)}
.disk.parity{border-top-color:var(--violet);background:rgba(180,92,255,.1)}
.disk.mirror{border-top-color:var(--violet)}
.disk.spare{border-style:dashed;opacity:.75}
.disk.gap{margin-right:18px}
.cmp tbody tr{cursor:pointer}
.cmp tbody tr.iscur td{color:var(--text);background:rgba(77,163,255,.1)}
.cmp tbody tr.iscur td:first-child{box-shadow:inset 3px 0 0 var(--blue)}
.bktl{position:relative;height:46px;margin-top:14px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgba(13,11,43,.2),rgba(13,11,43,.8))}
.bktl i{position:absolute;bottom:-1px;width:3px;margin-left:-1px;border-radius:2px 2px 0 0}
.bktl i.d,.bklg i.d{height:14px;background:var(--blue)}
.bktl i.w,.bklg i.w{height:22px;background:var(--violet)}
.bktl i.m,.bklg i.m{height:32px;background:var(--hot)}
.bktl i.y,.bklg i.y{height:42px;background:#ff9d4d}
.bkax{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.74rem;color:var(--dim);margin-top:6px}
.bklg{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.84rem;color:var(--dim);margin-top:8px}
.bklg span{display:inline-flex;align-items:flex-end;gap:7px}
.bklg i{display:inline-block;width:3px;height:14px!important;border-radius:2px}
#bk-out h2,#tr-out h2{margin-top:34px}
.optlist label span b{color:var(--blue);font-family:var(--mono)}
@media (max-width:640px){.stats{--cols:2!important}.disk{width:52px;height:66px}}
@media print{.sim,#tr-presets,.optlist{display:none!important}}

/* certificate decoder */
#cd-out h2{margin-top:36px}
.cdchain{display:flex;flex-direction:column;align-items:flex-start;margin-top:12px}
.cdcard{display:grid;gap:2px;min-width:min(100%,420px);padding:12px 16px;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:8px;background:var(--panel)}
.cdcard.r-intermediate{border-left-color:var(--violet)}.cdcard.r-root{border-left-color:var(--hot)}.cdcard.r-selfsigned{border-left-color:#ff9d4d}
.cdrole{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.cdcard b{font-family:var(--mono);font-size:1rem;color:var(--text);overflow-wrap:anywhere}
.cdmeta{font-size:.82rem;color:var(--dim)}
.cdlink{margin:0 0 0 22px;padding:9px 0 9px 16px;border-left:2px solid var(--line);font-family:var(--sans);font-size:.84rem;color:var(--dim)}
.cdlink.ok{border-left-color:var(--blue)}.cdlink.ok::before{content:"\2713  ";color:var(--blue)}
.cdlink.bad{border-left-color:var(--hot);color:var(--hot)}.cdlink.bad::before{content:"\2717  "}
.cdkv th{width:22ch;text-align:left;font-weight:400;color:var(--dim);vertical-align:top;white-space:nowrap}
.cdkv td{font-family:var(--mono);font-size:.82rem;overflow-wrap:anywhere;word-break:break-word}
.cddet .tw{margin-top:4px}
@media (max-width:640px){.cdkv th{width:auto;white-space:normal}.cdkv tr{display:grid}.cdkv th{padding-bottom:0;border-bottom:0}}

/* command builder */
.cmdtabs{margin-top:18px}.cmdtabs .chipbtn{font-family:var(--mono);font-size:.95rem;padding:8px 18px}
.cmdpre{margin-top:10px;align-items:center}
.cmdgrid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:34px;margin-top:22px;align-items:start}
.cmdform{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
.cmdfld{margin:0;grid-column:1/-1}.cmdfld.narrow{grid-column:auto}
.cmdfld .q{width:100%;margin-top:6px}
.cmdfld small,.cmdchk small{display:block;margin-top:5px;font-family:var(--sans);font-size:.78rem;color:var(--dim);line-height:1.4}
.cmdchk{grid-column:1/-1;display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;cursor:pointer;font-family:var(--sans)}
.cmdchk input{margin-top:4px;width:16px;height:16px}
.cmdchk b{font-weight:400;color:var(--text);font-size:.93rem}
.cmdres{position:sticky;top:76px;min-width:0}
.cmdterm{margin:0}
.cmdterm .tbar{display:flex;align-items:center;gap:7px;padding:9px 14px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:.74rem;color:var(--dim)}
.cmdterm .tbar i{width:9px;height:9px;border-radius:50%;background:var(--hot)}.cmdterm .tbar i:nth-child(2){background:var(--violet)}.cmdterm .tbar i:nth-child(3){background:var(--blue);margin-right:8px}
#cmd-line{margin:0;border:0;background:none;padding:16px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.9rem;line-height:1.6;color:var(--text);min-height:4.5em}
.cmdw{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-left-width:3px;border-radius:8px;background:var(--panel)}
.cmdw p{margin:0;font-family:var(--sans);font-size:.88rem;color:var(--dim)}
.cmdw.w-high,.cmdw.w-crit{border-left-color:var(--hot)}.cmdw.w-med{border-left-color:var(--violet)}.cmdw.w-info{border-left-color:var(--blue)}
.cmdh{margin-top:26px!important;font-size:.95rem}
.cmdx{display:grid;grid-template-columns:minmax(9ch,auto) 1fr;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);align-items:baseline}
.cmdx code{white-space:pre-wrap;overflow-wrap:anywhere;max-width:26ch;background:none;border:0;padding:0;color:var(--blue);font-size:.84rem}
.cmdx span{font-family:var(--sans);font-size:.88rem;color:var(--dim)}
#cmd-after h2{margin-top:44px}
@media (max-width:900px){.cmdgrid{grid-template-columns:1fr}.cmdres{position:static;order:-1}}
@media (max-width:520px){.cmdform{grid-template-columns:1fr}.cmdfld.narrow{grid-column:1/-1}.cmdx{grid-template-columns:1fr;gap:2px}.cmdx code{max-width:none}.cmdw{grid-template-columns:1fr;gap:6px}}
@media print{.cmdform,.cmdtabs,.cmdpre{display:none!important}.cmdgrid{display:block}.cmdres{position:static}}

/* slow server walkthrough */
.swprog{margin-top:26px;font-family:var(--mono);font-size:.8rem}
.swstep{margin-top:22px;padding:22px 24px 24px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:10px;background:rgba(13,11,43,.55);scroll-margin-top:80px}
.swstep.s-ok{border-left-color:var(--blue)}.swstep.s-bad{border-left-color:var(--hot)}.swstep.s-go{border-left-color:var(--violet)}
.swstep h2{margin:0;display:flex;align-items:baseline;gap:14px;font-size:1.15rem}
.swstep h2::before,.swstep h2::after{display:none!important}
.swnum{font-family:var(--mono);font-weight:700;color:var(--violet);min-width:1.2em}
.swwhy{margin:10px 0 0;font-family:var(--sans);color:var(--dim);max-width:76ch}
.swcode{position:relative;margin-top:14px}
.swcode pre{margin:0;white-space:pre;overflow-x:auto;font-size:.82rem;padding-right:84px}
.swcp{position:absolute;top:8px;right:8px;min-height:30px;padding:3px 12px;font-size:.74rem}
#sw-first+.swcp{position:static;margin-top:10px}
.swread{margin:12px 0 0;padding-left:1.2em;font-family:var(--sans);font-size:.92rem;color:var(--dim);max-width:76ch}
.swread li{margin-top:4px}
.swcalc{display:grid;grid-template-columns:repeat(3,minmax(0,150px));gap:10px 14px;margin-top:16px;align-items:end}
.swcalc label{font-size:.8rem;color:var(--dim)}.swcalc .q{width:100%;margin-top:5px}
.swcalc p{grid-column:1/-1;margin:0;font-family:var(--sans);color:var(--text);min-height:1.4em}
.swask{margin:20px 0 8px;font-family:var(--mono);font-size:.82rem;color:var(--text)}
.swopts{display:flex;flex-wrap:wrap;gap:8px}
.swopt{font:inherit;font-family:var(--sans);font-size:.9rem;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:9px 14px;cursor:pointer;text-align:left;transition:border-color .15s ease}
.swopt:hover{border-color:var(--dim)}.swopt.on{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.swcard{margin-top:14px;padding:16px 18px;border-radius:8px;background:var(--panel);border:1px solid var(--line)}
.swcard>b{display:block;font-family:var(--sans);font-size:1.02rem;color:var(--text)}
.swcard.k-bad>b{color:var(--hot)}.swcard.k-ok>b{color:var(--blue)}.swcard.k-go>b{color:var(--violet)}
.swcard>p{margin:6px 0 0;font-family:var(--sans);color:var(--dim);max-width:76ch}
.swnext{display:inline-block;margin-top:14px;font-family:var(--mono);font-size:.82rem;color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.swfound{margin-top:12px;padding:14px 18px;border:1px solid var(--line);border-left:3px solid var(--hot);border-radius:8px;background:var(--panel)}
.swfound b{font-family:var(--sans);color:var(--text)}.swfound p{margin:4px 0 6px;font-family:var(--sans);font-size:.9rem;color:var(--dim);max-width:76ch}
.swfound a{font-family:var(--mono);font-size:.78rem;color:var(--blue)}
@media (max-width:640px){.swstep{padding:18px 16px}.swcalc{grid-template-columns:1fr 1fr}.swcode pre{padding-right:14px;padding-top:40px}}
@media print{.swopts,.swask,.swcp,.swcalc,.swnext{display:none!important}.swstep{break-inside:avoid;background:#fff!important}}

/* ip plan builder */
.iphead,.iprow{display:grid;grid-template-columns:14px minmax(0,3fr) minmax(0,1fr) minmax(0,1fr) auto;gap:10px;align-items:center}
.iphead{margin-top:16px;font-family:var(--mono);font-size:.72rem;color:var(--dim);padding-right:2px}
.iphead span:last-child{width:86px}
.iprow{margin-top:8px}.iprow .q{width:100%;margin:0;padding:8px 10px}
.ipsw{display:inline-block;width:12px;height:12px;border-radius:3px}
.ipdel{min-height:34px;padding:4px 10px;font-size:.74rem;width:86px}
.ipopt{margin-top:18px}.ipopt summary{cursor:pointer;font-family:var(--mono);font-size:.82rem;color:var(--dim)}
.ipbar{display:flex;gap:2px;height:34px;margin-top:18px;border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.ipbar i{display:block;min-width:4px;flex-basis:0}.ipbar i.gap{background:rgba(13,11,43,.9)}
.ipbarn{margin-top:8px;font-size:.84rem}
#ip-out h2{margin-top:34px}
.iptbl td{font-family:var(--mono);font-size:.76rem;white-space:nowrap;padding-inline:8px}.iptbl th{padding-inline:8px}.iptbl td:nth-child(2){font-family:var(--sans);font-size:.92rem;white-space:normal;color:var(--text)}
#ip-code{max-height:460px;overflow:auto;white-space:pre;font-size:.8rem;margin-top:10px}#ip-code+.ctl{margin-top:12px}
ul.prose{padding-left:1.2em;max-width:76ch;font-family:var(--sans)}ul.prose li{margin-top:8px;color:var(--dim)}ul.prose li b{color:var(--text)}
@media (max-width:560px){.iphead{display:none}.iprow{grid-template-columns:14px 1fr 1fr;row-gap:6px;padding:10px 0;border-bottom:1px solid var(--line);margin:0}.iprow .q:first-of-type{grid-column:2/-1}.ipdel{grid-column:2/-1;width:auto;justify-self:start}}
@media print{.iprow,.iphead,.ipopt,#ip-add{display:none!important}#ip-code{max-height:none;overflow:visible}}
/* compact header on phones */
@media (max-width:760px){header{padding:6px 0 0;gap:2px 10px}header .brand,header nav a{min-height:38px}header nav{padding-top:0;padding-bottom:4px}header .sbtn{min-height:34px;padding-block:4px}}

/* reference cards */
.rflist{margin-top:26px}
.rfcard{margin-top:16px;padding:20px 22px 22px;border:1px solid var(--line);border-radius:10px;background:rgba(13,11,43,.55);scroll-margin-top:80px}
.rfcard h2{margin:0;font-size:1.05rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;color:var(--text);overflow-wrap:anywhere}
.rfcard h2::before,.rfcard h2::after{display:none!important}
.rfkey{font-family:var(--mono);color:var(--hot);font-weight:700}
.rfalias{margin:4px 0 0;font-family:var(--mono);font-size:.74rem;color:var(--dim)}
.rfp{margin:10px 0 0;font-family:var(--sans);color:var(--dim);max-width:78ch}
.rfsec{margin-top:14px}
.rfsec h3{margin:0;font-family:var(--mono);font-size:.74rem;font-weight:400;color:var(--violet)}
.rfsec ul,.rfsec ol{margin:6px 0 0;padding-left:1.25em;font-family:var(--sans);font-size:.93rem;color:var(--text);max-width:80ch}
.rfsec li{margin-top:4px}
.rflk{margin:14px 0 0;font-family:var(--sans);font-size:.86rem;color:var(--dim)}
.rflk a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
@media print{.rfcard{break-inside:avoid;background:#fff!important}}

.rftips{margin-top:16px}.rftips[open]{padding-bottom:6px}.rftips .prose{margin-top:10px}

/* smart reader and survival matrix */
#sm-out h2{margin-top:36px}
.smtbl td{vertical-align:top;font-size:.86rem}.smtbl td:nth-child(-n+6){font-family:var(--mono);font-size:.8rem;white-space:nowrap}.smtbl td:nth-child(2){white-space:normal;font-family:var(--sans);font-size:.88rem;color:var(--text)}
.smtbl tr.sm-bad td,.smtbl tr.sm-failing td{background:rgba(255,79,216,.08)}.smtbl tr.sm-bad td:first-child,.smtbl tr.sm-failing td:first-child{box-shadow:inset 3px 0 0 var(--hot)}
.smtbl tr.sm-check td,.smtbl tr.sm-worn td{background:rgba(180,92,255,.08)}.smtbl tr.sm-check td:first-child,.smtbl tr.sm-worn td:first-child{box-shadow:inset 3px 0 0 var(--violet)}
.svm th[scope=row]{text-align:left;font-weight:400;font-family:var(--sans);color:var(--text);min-width:22ch;white-space:normal}
.svm thead th{font-size:.72rem;white-space:normal;min-width:9ch;vertical-align:bottom}
.svm td{text-align:center;padding:6px}
.svc{display:inline-block;min-width:7ch;padding:5px 8px;border-radius:6px;border:1px solid var(--line);background:var(--panel);font:inherit;font-family:var(--mono);font-size:.76rem;cursor:pointer;color:var(--dim)}
.svc.y{color:var(--blue);border-color:var(--blue)}.svc.p{color:#ff9d4d;border-color:#ff9d4d}.svc.n{color:var(--hot);border-color:rgba(255,79,216,.55)}
button.svc.on{box-shadow:0 0 0 2px var(--text)}
.svmwhy{margin-top:14px;padding:14px 18px;border:1px solid var(--line);border-left:3px solid var(--violet);border-radius:8px;background:var(--panel);font-family:var(--sans);color:var(--dim);min-height:3.2em;max-width:none}
.svmwhy b{color:var(--text);font-weight:600}
.svmkey{margin-top:10px;font-size:.84rem}.svmkey .svc{cursor:default;margin:0 4px 0 12px}.svmkey .svc:first-child{margin-left:0}
p.prose{font-family:var(--sans);max-width:74ch;color:var(--dim);margin-top:12px}

/* log reader */
#lg-out h2{margin-top:36px}
.lgchart{display:flex;align-items:flex-end;gap:2px;height:110px;margin-top:20px;padding:6px 6px 0;border:1px solid var(--line);border-bottom-color:var(--dim);border-radius:8px 8px 0 0;background:rgba(13,11,43,.55)}
.lgchart i{flex:1 1 0;min-width:2px;background:var(--blue);border-radius:2px 2px 0 0;display:flex;flex-direction:column;justify-content:flex-end;opacity:.85}
.lgchart i b{display:block;background:var(--hot);border-radius:0}
.lgax{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.72rem;color:var(--dim);margin-top:5px}
.lgcap{margin-top:6px;font-size:.84rem}
.lgtbl td{font-size:.84rem;vertical-align:top;overflow-wrap:anywhere}.lgtbl td:first-child{font-family:var(--mono);font-size:.8rem}

/* bash and powershell side by side */
.rssec{margin-top:34px}.rssec h2{margin:0 0 6px}
.rsrow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 14px;padding:14px 0;border-bottom:1px solid var(--line)}
.rsrow h3{grid-column:1/-1;margin:0;font-family:var(--sans);font-size:.98rem;font-weight:600;color:var(--text)}
.rscell{position:relative;min-width:0;padding:26px 12px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
.rslab{position:absolute;top:6px;left:12px;font-family:var(--mono);font-size:.66rem;color:var(--dim)}
.rscell:nth-of-type(1) .rslab{color:var(--blue)}.rscell:nth-of-type(2) .rslab{color:var(--violet)}
.rscell code{display:block;background:none;border:0;padding:0;font-size:.82rem;line-height:1.5;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere}
.rscp{position:absolute;top:4px;right:6px;font:inherit;font-family:var(--mono);font-size:.66rem;color:var(--dim);background:none;border:0;padding:3px 6px;cursor:pointer;border-radius:4px}
.rscp:hover,.rscp:focus-visible{color:var(--text);background:rgba(138,134,201,.15)}
.rsnote{grid-column:1/-1;margin:0;font-family:var(--sans);font-size:.84rem;color:var(--dim)}
@media (max-width:700px){.rsrow{grid-template-columns:1fr}}
@media print{.rscp,#rs-cats{display:none!important}.rsrow{break-inside:avoid}}

/* small office blueprint */
.bpsum{margin-top:18px;font-family:var(--sans);color:var(--text)}
.bppic{margin-top:16px;display:flex;flex-direction:column;align-items:center}
.bprow{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;width:100%}
.bpbox{display:grid;gap:2px;padding:12px 18px;border:1px solid var(--line);border-radius:10px;background:var(--panel);text-align:center;min-width:min(100%,220px)}
.bpbox b{font-family:var(--mono);color:var(--text)}.bpbox span{font-family:var(--sans);font-size:.82rem;color:var(--dim)}
.bpbox.net{border-color:var(--dim)}.bpbox.cloud{border-style:dashed}
.bpbox.fw{border-color:var(--hot);min-width:min(100%,320px)}.bpbox.sw{border-color:var(--blue);min-width:min(100%,420px)}
.bpline{width:2px;height:22px;background:var(--line)}
.bpzones{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;width:100%;padding-top:14px;border-top:2px solid var(--line)}
.bpzone{display:grid;gap:3px;align-content:start;padding:12px 14px;border:1px solid var(--line);border-top:3px solid var(--blue);border-radius:8px;background:rgba(13,11,43,.55)}
.bpzone i{font-style:normal;font-family:var(--mono);font-size:.68rem;color:var(--dim)}.bpzone b{font-family:var(--mono);font-size:.95rem;color:var(--text)}.bpzone span{font-family:var(--sans);font-size:.82rem;color:var(--dim)}
.bpzone.z10{border-top-color:var(--violet)}.bpzone.z70{border-top-color:#ff9d4d}.bpzone.z80{border-top-color:#ff9d4d}.bpzone.z90{border-top-color:var(--hot)}
.bpbuy td{vertical-align:top}.bpbuy td:first-child{font-family:var(--mono);font-size:.84rem;color:var(--text);white-space:normal;min-width:16ch}.bpbuy td:nth-child(2){font-family:var(--sans);color:var(--text);min-width:24ch}.bpbuy td:nth-child(3){font-family:var(--sans);font-size:.88rem;color:var(--dim)}
.bpprog{display:flex;align-items:center;gap:14px;margin-top:10px}
.bpprogbar{flex:1 1 auto;height:8px;border-radius:99px;background:var(--panel);border:1px solid var(--line);overflow:hidden}
.bpprogbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--violet));transition:width .2s ease}
.bpgroup{margin-top:22px}.bpgroup h3{margin:0 0 4px;font-size:.95rem;color:var(--text)}
.bpgroup .bpchk{list-style:none;margin:0;padding:0}
.bpgroup .bpchk li{border-bottom:1px solid var(--line)}
.bpgroup .bpchk label{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:11px 2px;cursor:pointer;font-family:var(--sans);color:var(--text)}
.bpgroup .bpchk input{margin-top:4px;width:16px;height:16px}
.bpgroup .bpchk input:checked+span{color:var(--dim);text-decoration:line-through;text-decoration-color:rgba(138,134,201,.5)}
@media (prefers-reduced-motion:reduce){.bpprogbar i{transition:none}}
@media print{.bpprog button,#bp-iplink{display:none!important}.bpbox,.bpzone{background:#fff!important}}

/* front door, second version */
.jobs.four{grid-template-columns:repeat(2,minmax(0,1fr));gap:44px 48px}
@media (max-width:820px){.jobs.four{grid-template-columns:1fr;gap:34px 0}}

/* sql playground */
.sq{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:32px;margin-top:26px;align-items:start}
.sqmain{min-width:0}
.sqcard{padding:22px 24px 24px;border:1px solid var(--line);border-radius:10px;background:rgba(13,11,43,.55);scroll-margin-top:84px}
.sqcard h2{margin:2px 0 0;font-size:1.3rem;color:var(--text);outline:0}
.sqcard h2::before,.sqcard h2::after{display:none!important}
.sqstep{margin:0;font-family:var(--mono);font-size:.74rem;color:var(--violet)}
.sqcard p{font-family:var(--sans);max-width:74ch;color:var(--text);margin:12px 0 0}
.sqex{margin-top:16px}.sqex pre{margin:0;white-space:pre-wrap}
.sqex .btn{margin-top:8px;font-size:.78rem;padding:6px 12px}
.sqtask{margin-top:22px;padding:14px 18px 16px;border-left:3px solid var(--hot);background:rgba(255,79,216,.06);border-radius:0 8px 8px 0}
.sqtask b{font-family:var(--mono);font-size:.78rem;color:var(--hot)}
.sqtask p{margin:6px 0 0}.sqtask p.dim{color:var(--dim);font-size:.88rem}
.sqed{margin-top:18px}
#sq-in{display:block;width:100%;box-sizing:border-box;font-family:var(--mono);font-size:.9rem;line-height:1.55;padding:14px 16px;background:#050316;color:var(--text);border:1px solid var(--line);border-radius:10px;resize:vertical;tab-size:2}
#sq-in:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.sqbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:10px}
.sqbar .sqsp{flex:1}
.sqtx{font-family:var(--mono);font-size:.74rem;color:#ff9d4d;border:1px solid #ff9d4d;border-radius:99px;padding:3px 10px}
.sqcheck{margin-top:14px}.sqcheck:empty{display:none}
.sqcheck p{font-family:var(--sans);margin:0;max-width:74ch}.sqcheck p+p{margin-top:10px}
.sqcheck.isgood{padding:14px 18px;border:1px solid var(--blue);border-radius:10px;background:rgba(77,163,255,.08)}
.sqcheck.isnot{padding:14px 18px;border:1px solid var(--line);border-radius:10px;background:rgba(13,11,43,.55)}
.sqgood b{color:var(--blue)}.sqcheck.isnot b{color:#ff9d4d}
.sqout{margin-top:6px;min-height:30px}
.sqmeta,.sqstmt{font-family:var(--mono);font-size:.74rem;color:var(--dim);margin:14px 0 6px;overflow-wrap:anywhere}
.sqstmt{color:var(--violet);margin-top:20px}
.sqmsg{font-family:var(--sans);margin:10px 0 0}
.sqwarn{font-family:var(--sans);margin:10px 0 0;padding:12px 16px;border-left:3px solid #ff9d4d;background:rgba(255,157,77,.07);border-radius:0 8px 8px 0;max-width:74ch}
.sqerr{font-family:var(--sans);margin:14px 0 0;padding:12px 16px;border-left:3px solid var(--hot);background:rgba(255,79,216,.07);border-radius:0 8px 8px 0;max-width:74ch}
.sqerr b{color:var(--hot)}
.sqwhere{margin:8px 0 0;color:var(--dim);overflow:auto}
.sqscroll{overflow:auto;max-height:440px;border:1px solid var(--line);border-radius:8px}
.sqscroll:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.sqtbl{border-collapse:collapse;width:100%;margin:0;font-family:var(--mono);font-size:.8rem}
.sqtbl th{position:sticky;top:0;background:var(--panel);text-align:left;color:var(--blue);font-weight:400;padding:7px 12px;border:0;border-bottom:1px solid var(--line);white-space:nowrap}
.sqtbl td{padding:5px 12px;border:0;border-bottom:1px solid rgba(42,36,102,.5);white-space:nowrap;color:var(--text)}
.sqtbl tr:last-child td{border-bottom:0}
.sqtbl .num{text-align:right}
.sqnull{color:var(--dim);font-style:normal;opacity:.75}
.sqpn{display:flex;justify-content:space-between;gap:10px;margin-top:24px}
.sqside{position:sticky;top:84px;max-height:calc(100vh - 104px);overflow:auto;padding-right:4px}
.sqh{margin:0;font-family:var(--mono);font-size:.8rem;font-weight:400;color:var(--violet);display:flex;justify-content:space-between;gap:8px}
.sqh::before,.sqh::after{display:none!important}
.sqh~.sqh{margin-top:28px}
.sqh .dim{font-size:.72rem}
.sqhint{margin:4px 0 0;font-size:.76rem;font-family:var(--sans)}
.sqnav{list-style:none;margin:8px 0 0;padding:0}
.sqnav li{margin:0}
.sqnav button{display:flex;gap:10px;align-items:baseline;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;border-radius:0 6px 6px 0;color:var(--dim);font-family:var(--sans);font-size:.86rem;line-height:1.3;padding:5px 8px;cursor:pointer}
.sqnav button:hover{color:var(--text)}
.sqnav button:focus-visible{outline:2px solid var(--violet);outline-offset:-2px}
.sqnav button[aria-current]{color:var(--text);border-left-color:var(--hot);background:rgba(255,79,216,.07)}
.sqn{font-family:var(--mono);font-size:.72rem;color:var(--violet);width:1.5em;flex:none;text-align:right}
.sqok{margin-left:auto;color:var(--blue);font-family:var(--mono);font-size:.8rem}
.sqt{margin-top:14px}
.sqt button{font-family:var(--mono);font-size:.86rem;color:var(--blue);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.sqt button:focus-visible{outline:2px solid var(--violet);outline-offset:2px}
.sqt p{margin:2px 0 0;font-size:.78rem;color:var(--dim);font-family:var(--sans)}
.sqt ul{list-style:none;margin:6px 0 0;padding:0}
.sqt li{margin-top:3px;font-size:.76rem;line-height:1.35;color:var(--dim);font-family:var(--sans)}
.sqt li code{color:var(--text);background:none;border:0;padding:0;font-size:.78rem}
.sqx{margin-top:10px;border:1px solid var(--line);border-radius:8px;background:rgba(13,11,43,.55);padding:0 16px}
.sqx summary{padding:12px 0;font-family:var(--sans);color:var(--text);cursor:pointer}
.sqx summary:hover{color:var(--blue)}
.sqx[open]{padding-bottom:14px}.sqx pre{margin:0;white-space:pre-wrap}.sqx p{margin:10px 0 0}
.sqx .btn{font-size:.78rem;padding:6px 12px}
@media(max-width:940px){.sq{grid-template-columns:minmax(0,1fr);gap:36px}.sqside{position:static;max-height:none;overflow:visible}.sqcard{padding:18px 16px 20px}.sqbar .sqsp{display:none}.sqnav button{padding:9px 8px}}
@media print{.sqside,.sqbar,.sqpn,#sq-in{display:none!important}.sqscroll{max-height:none;overflow:visible}}

/* config reviewer */
#cr-out h2{margin-top:36px}
#cr-text{width:100%;font-size:.8rem;white-space:pre}
.crsel{display:block;margin-top:12px;font-family:var(--mono);font-size:.78rem;color:var(--dim)}
.crsel .sel{max-width:340px}
.crhits{list-style:none;margin:12px 0 0;padding:0}
.crhits li{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;margin:0;padding:8px 0;border-top:1px solid rgba(42,36,102,.6)}
.crhits li:last-child{border-bottom:1px solid rgba(42,36,102,.6)}
.crln{font-family:var(--mono);font-size:.74rem;color:var(--blue);white-space:nowrap;text-decoration:underline;text-underline-offset:3px}
.crhits code{font-size:.8rem;overflow-wrap:anywhere;background:none;border:0;padding:0;color:var(--text)}
.crnote{flex-basis:100%;font-family:var(--sans);font-size:.9rem;color:var(--dim)}
.crfix{margin:0;white-space:pre-wrap;font-size:.8rem}
.crfile{margin-top:14px;border:1px solid var(--line);border-radius:10px;background:#050316;max-height:560px;overflow:auto;padding:10px 0;font-family:var(--mono);font-size:.78rem;line-height:1.6}
.crl{display:flex;gap:14px;align-items:baseline;padding:0 14px 0 0;border-left:3px solid transparent;scroll-margin-top:120px}
.crl code{flex:1;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;background:none;border:0;padding:0;font-size:inherit;color:var(--text)}
.crn{flex:none;width:3.4em;text-align:right;color:var(--dim);user-select:none}
.crl.iscom code{color:var(--dim)}
.crl.isflag{background:rgba(180,92,255,.09);border-left-color:var(--violet)}
.crl.isflag.f-crit,.crl.isflag.f-high{background:rgba(255,79,216,.09);border-left-color:var(--hot)}
.crl.isflag.f-high{border-left-color:#ff9d4d;background:rgba(255,157,77,.08)}
.crl.isflag.f-info{background:rgba(77,163,255,.07);border-left-color:var(--blue)}
.crl.ishit{outline:2px solid var(--violet);outline-offset:-2px}
.crtag{flex:none;max-width:42%;font-family:var(--sans);font-size:.78rem;color:var(--dim);text-align:right}
.crtag .sevtag{margin-right:2px}
@media(max-width:760px){.crl{flex-wrap:wrap;gap:0 10px;padding-bottom:2px}.crn{width:2.6em}.crtag{flex-basis:100%;max-width:none;text-align:left;padding-left:calc(2.6em + 10px);padding-bottom:4px}}
@media print{.crfile{max-height:none;overflow:visible;background:#fff!important}.crl code{color:#000!important}}

/* hardware drawings and guides */
.hwsvg{display:block;width:100%;height:auto;color:var(--text)}
.hwsvg .o{fill:rgba(77,163,255,.07);stroke:currentColor;stroke-width:2;stroke-linejoin:round}
.hwsvg .i{fill:none;stroke:var(--dim);stroke-width:1.5;stroke-linejoin:round}
.hwsvg .m{fill:var(--dim)}.hwsvg .a,.hwsvg .ok{fill:var(--blue)}.hwsvg .h{fill:var(--hot)}
.hwsvg .ha{fill:none;stroke:var(--hot);stroke-width:2;stroke-dasharray:3 3}
.hwsvg .sel{fill:rgba(180,92,255,.2);stroke:var(--violet);stroke-width:2}
.hwsvg .dash{fill:none;stroke:var(--dim);stroke-width:1.5;stroke-dasharray:4 4}
.hwsvg .ar{fill:none;stroke:var(--blue);stroke-width:2.5}.hwsvg .arh{fill:var(--blue)}
.hwsvg .ah{fill:none;stroke:var(--hot);stroke-width:2.5}.hwsvg .ahh{fill:var(--hot)}
.hwsvg text{font-family:var(--sans);font-size:11px;fill:var(--dim)}
.hwsvg text.t2{fill:var(--text)}.hwsvg text.tk{font-family:var(--mono);font-size:9px;fill:var(--bg)}
.cncard .hwsvg text{font-family:var(--mono);font-size:8px}
.cnchips{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.cnchip{font-family:var(--mono);font-size:.78rem;color:var(--dim);background:none;border:1px solid var(--line);border-radius:99px;padding:6px 14px;cursor:pointer}
.cnchip:hover{color:var(--text);border-color:var(--dim)}
.cnchip[aria-pressed="true"]{color:var(--text);border-color:var(--violet);background:rgba(180,92,255,.14)}
.cngrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:26px}
.cncard{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;align-items:start;padding:20px 22px;border:1px solid var(--line);border-radius:10px;background:rgba(13,11,43,.55);scroll-margin-top:90px}
.cncard[hidden]{display:none}
.cnfig{border:1px solid var(--line);border-radius:8px;background:#050316;padding:8px}
.cncard h2{margin:0;font-size:1.05rem;color:var(--text)}
.cncard h2::before,.cncard h2::after{display:none!important}
.cnfam{margin:2px 0 0;font-family:var(--mono);font-size:.72rem;color:var(--violet)}
.cntxt p{margin:8px 0 0;font-family:var(--sans);font-size:.92rem;color:var(--text)}
.cntxt p.cnwhat{color:var(--dim)}
.cntxt h3{margin:14px 0 0;font-family:var(--mono);font-size:.72rem;font-weight:400;color:var(--blue)}
.cntxt ul{margin:6px 0 0;padding-left:1.2em;font-family:var(--sans);font-size:.9rem;color:var(--text)}
.cntxt li{margin:5px 0}
.hwsec{margin-top:48px;scroll-margin-top:90px}
.hwsec h2{margin-top:0}
.hwfig{margin:18px 0 6px;max-width:640px;border:1px solid var(--line);border-radius:10px;background:#050316;padding:16px 18px 14px}
.hwfig.small{max-width:340px}
.hwfig figcaption{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);font-family:var(--sans);font-size:.86rem;color:var(--dim)}
.hwsec ul.prose,.hwsec ol.prose{font-family:var(--sans);padding-left:1.3em;margin-top:12px}
.hwsec ul.prose li,.hwsec ol.hwol li{margin:8px 0;color:var(--text)}
.hwsec .tw{margin-top:14px}
.hwpre{margin-top:12px;white-space:pre-wrap;font-size:.82rem}
@media(max-width:1000px){.cngrid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:560px){.cncard{grid-template-columns:minmax(0,1fr);padding:16px}.cnfig{max-width:220px}}
@media print{.cncard,.hwfig{background:#fff!important;break-inside:avoid}.cnfig,.hwfig{background:#fff!important}.hwsvg{color:#000}.hwsvg text,.hwsvg text.t2{fill:#000}.cnchips{display:none}.cncard[hidden]{display:grid!important}}

/* power calculators, dmarc */
.pwbar{height:10px;margin-top:14px;border:1px solid var(--line);border-radius:99px;background:#050316;overflow:hidden}
.pwbar i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--violet));border-radius:99px}
.pwbar.warn i{background:linear-gradient(90deg,var(--violet),#ff9d4d)}
.pwbar.over i{background:var(--hot)}
#up-out h2,#po-out h2,#dm-out h2{margin-top:36px}
#up-rows label span.dim,#po-rows label span.dim{font-size:.74rem}
.dmpol{margin:16px 0 0;font-family:var(--mono);font-size:.82rem;color:var(--dim);overflow-wrap:anywhere}
#dm-out .tbl td{vertical-align:top;overflow-wrap:anywhere}
#dm-out .finding .tw{margin-top:10px}

/* rack planner, dcdiag */
.rk{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:32px;align-items:start;margin-top:22px}
.rkview{position:sticky;top:84px}
#rk-draw{border:1px solid var(--line);border-radius:10px;background:#050316;padding:10px;max-height:calc(100vh - 170px);overflow:auto}
.rksvg{max-width:420px;margin:0 auto}
.rksvg .rku{fill:none;stroke:var(--line);stroke-width:.6}
.rksvg .rkd{stroke-width:1.5}
.rksvg .rkd.k-net{fill:rgba(77,163,255,.22);stroke:var(--blue)}
.rksvg .rkd.k-srv{fill:rgba(180,92,255,.22);stroke:var(--violet)}
.rksvg .rkd.k-pwr{fill:rgba(255,157,77,.2);stroke:#ff9d4d}
.rksvg .rkd.k-oth{fill:rgba(138,134,201,.18);stroke:var(--dim)}
.rksvg .rkd.bad{fill:rgba(255,79,216,.3);stroke:var(--hot)}
.rksvg text{font-family:var(--mono);font-size:9px}
.rklist{margin-top:22px}
.rkh{margin:18px 0 6px;font-family:var(--mono);font-size:.74rem;font-weight:400;color:var(--violet)}
.rkrow{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:8px 10px;border:1px solid var(--line);border-left-width:3px;border-radius:6px;margin-top:6px;background:rgba(13,11,43,.55)}
.rkrow.k-net{border-left-color:var(--blue)}.rkrow.k-srv{border-left-color:var(--violet)}.rkrow.k-pwr{border-left-color:#ff9d4d}.rkrow.k-oth{border-left-color:var(--dim)}
.rkrow b{font-family:var(--sans);font-weight:500;color:var(--text)}
.rkrow .dim{font-size:.76rem}
.rkpos{font-family:var(--mono);font-size:.74rem;color:var(--dim);min-width:5.5em}
.rkctl{margin-left:auto;display:flex;gap:6px}
.rkb{font-family:var(--mono);font-size:.74rem;color:var(--dim);background:none;border:1px solid var(--line);border-radius:5px;padding:3px 8px;cursor:pointer;min-width:28px}
.rkb:hover{color:var(--text);border-color:var(--blue)}
#rk-out h2,#dd-out h2,#sl-out h2{margin-top:36px}
#dd-out .tbl td{vertical-align:top;overflow-wrap:anywhere}
#dd-out td.ddbad{color:var(--hot);font-family:var(--mono);font-size:.78rem}
#dd-out td.ddok{color:var(--dim);font-family:var(--mono);font-size:.78rem}
@media(max-width:900px){.rk{grid-template-columns:minmax(0,1fr)}.rkview{position:static;order:-1}#rk-draw{max-height:none}.rkb{padding:8px 12px}}
@media print{.rkform .sim,.rkform .ctl,.rkform h2,.rkctl{display:none!important}#rk-draw{background:#fff!important;max-height:none}.rksvg text{fill:#000}}

/* round 61: wifi planner, connection strings, incident plan, lookup commands */
.rfpre{margin:14px 0 0;white-space:pre-wrap;font-size:.82rem}
.wffig{margin-top:18px;border:1px solid var(--line);border-radius:10px;background:#050316;padding:12px;overflow-x:auto}
.wfsvg{min-width:640px}
.wfsvg .wfo{fill:rgba(77,163,255,.2);stroke:var(--blue);stroke-width:1.5}
.wfsvg .wfd{fill:rgba(180,92,255,.2);stroke:var(--violet);stroke-width:1.5}
.wfsvg .wfx{fill:rgba(138,134,201,.06);stroke:var(--line);stroke-width:1}
.wfsvg .used{stroke-width:2.5}
.wfsvg text{font-family:var(--mono);font-size:10px}.wfsvg text.wfn{fill:var(--hot);font-size:8px}
.wfkey{margin-top:8px;font-size:.8rem}
#wf-out h2{margin-top:36px}
.csrow{margin-top:14px}.cshd{display:flex;align-items:center;justify-content:space-between;gap:12px}
.cshd b{font-family:var(--mono);font-size:.78rem;font-weight:400;color:var(--violet)}
.cshd .btn{font-size:.74rem;padding:4px 10px}
.csrow pre{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.82rem}
.cschk{display:flex!important;align-items:center;gap:10px;color:var(--text)!important;font-family:var(--sans)}
.cschk input{width:18px;height:18px;accent-color:var(--violet)}
.ip2form textarea.sel{display:block;width:100%;margin-top:4px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:10px;font:inherit;resize:vertical}
.ip2plan{margin-top:14px;padding:30px 34px;border:1px solid var(--line);border-radius:10px;background:rgba(13,11,43,.55);max-width:820px;font-family:var(--sans)}
.ip2plan h2.ip2t{margin:0;font-size:1.5rem;color:var(--text)}.ip2plan h2::before,.ip2plan h2::after{display:none!important}
.ip2sub{margin:6px 0 0;color:var(--dim);font-size:.88rem}
.ip2plan h3{margin:24px 0 6px;font-family:var(--mono);font-size:.84rem;font-weight:700;color:var(--hot)}
.ip2plan ol,.ip2plan ul{margin:0;padding-left:1.3em}.ip2plan li{margin:6px 0;color:var(--text)}
.ip2tbl{width:100%;margin:0}.ip2tbl th{width:32%;text-align:left;font-weight:500;color:var(--dim);vertical-align:top}.ip2tbl td{color:var(--text);overflow-wrap:anywhere}
.ip2empty{color:var(--dim)!important;font-style:italic}
.ip2foot{margin:26px 0 0;padding-top:12px;border-top:1px solid var(--line);color:var(--dim);font-size:.84rem}
@media print{.noprint{display:none!important}.ip2plan{border:0;padding:0;background:#fff!important;max-width:none}.ip2plan h3{color:#000}.ip2plan li,.ip2tbl td,.ip2plan h2.ip2t{color:#000}.ip2empty{color:#777!important}.wffig{background:#fff!important}}

/* round 62: cron builder, posters, printer drawings */
.cnexpr{font-family:var(--mono)!important;font-size:1.05rem!important;letter-spacing:.06em}
.cnsay{margin:6px 0 0;font-family:var(--sans);font-size:1.25rem;color:var(--text);max-width:60ch}
.cnnext{margin:8px 0 0;padding-left:1.4em;font-family:var(--mono);font-size:.86rem;color:var(--text)}.cnnext li{margin:4px 0}
#cn-out h2{margin-top:34px}.crnote2{margin:6px 0 0;font-size:.84rem;max-width:74ch}
.hwsvg .pgw{fill:#e8e8f0;stroke:var(--dim);stroke-width:1}
.hwsvg .pgk{fill:none;stroke:#111;stroke-width:1.6}.hwsvg .pgk2{fill:none;stroke:#333;stroke-width:1.4}
.hwsvg .pgl{fill:none;stroke:#b9b9c6;stroke-width:1.4}.hwsvg .pgf{fill:#111}.hwsvg .pgg{fill:#b4b4c0}.hwsvg .pgg2{fill:#c9c9d4}.hwsvg .pgsm{fill:rgba(40,40,50,.35)}
.pslist{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px 22px;margin-top:18px}
.pssheet{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:14px}
.poster{background:#fff;color:#111;border-radius:6px;padding:26px 24px 20px;font-family:var(--sans);aspect-ratio:210/297;display:flex;flex-direction:column}.poster>*{flex:none}
.poster .pk{margin:0;font-family:var(--mono);font-size:.62rem;color:#555}
.poster h2.ph{margin:8px 0 0;font-family:var(--sans);font-size:1.5rem;line-height:1.12;font-weight:700;color:#111;letter-spacing:-.01em}
.poster h2.ph::before,.poster h2.ph::after{display:none!important}
.poster .psub{margin:8px 0 0;font-size:.74rem;color:#444}
.poster .pr{margin:14px 0 0;padding-left:1.2em;font-size:.72rem;line-height:1.4;color:#111}.poster .pr li{margin:6px 0}
.poster .pf{margin:12px 0 0;padding:8px 10px;border-left:3px solid #111;font-size:.72rem;font-weight:600;color:#111}
.poster .pc{margin:auto 0 0;padding-top:10px;border-top:1px solid #111;font-size:.66rem;color:#111}
.poster .po{margin:4px 0 0;font-size:.58rem;color:#666}
@media print{@page{margin:14mm}.pssheet{display:block;margin:0}main:has(#ps-sheet) h1,main:has(#ps-sheet) .crumb,main:has(#ip2-plan) h1{display:none!important}main:has(#ps-sheet)::after,main:has(#ip2-plan)::after{display:none!important}main:has(#ps-sheet){margin:0!important;padding:0!important}.poster{aspect-ratio:auto;height:255mm;overflow:hidden;border-radius:0;padding:10mm 6mm 6mm;break-after:page;page-break-after:always}.poster:last-child{break-after:auto;page-break-after:auto}
 .poster .pk{font-size:11pt}.poster h2.ph{font-size:42pt;margin-top:8mm}.poster .psub{font-size:17pt;margin-top:7mm}.poster .pr{font-size:16.5pt;line-height:1.35;margin-top:9mm}.poster .pr li{margin:5mm 0}.poster .pf{font-size:16pt;margin-top:8mm;padding:4mm 5mm;border-left-width:2mm}.poster .pc{font-size:14pt;padding-top:5mm}.poster .po{font-size:10pt}}

/* round 63: linux playground, network diagram builder, pc build checker, asset inventory */
.lp{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,1fr);gap:22px;margin-top:20px;align-items:start}
@media (max-width:980px){.lp{grid-template-columns:minmax(0,1fr)}}
.lpterm{border:1px solid var(--line);border-radius:10px;background:#04031a;overflow:hidden;min-width:0}
.lpbar{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--panel)}
.lpdots{display:flex;gap:6px}.lpdots i{width:10px;height:10px;border-radius:50%;background:var(--line)}
.lptitle{font-family:var(--mono);font-size:.78rem;color:var(--dim);flex:1}
.lpreset{font:inherit;font-size:.78rem;color:var(--dim);background:none;border:1px solid var(--line);border-radius:6px;padding:3px 10px;cursor:pointer}.lpreset:hover{color:var(--text);border-color:var(--dim)}
.lpscreen{height:min(62vh,560px);min-height:320px;overflow-y:auto;padding:14px 16px;font-family:var(--mono);font-size:.84rem;line-height:1.5;cursor:text;scrollbar-width:thin}
.lpl{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text);min-height:1.5em}
.lpp,.lpprompt{color:var(--blue)}.lpc{color:#fff}
.lperr{color:#ff9d4d}.lpdim{color:var(--dim)}.lpok{color:var(--hot);font-weight:600}.lpwhy{color:var(--dim);font-family:var(--sans);font-size:.86rem}
.lprow{display:flex;gap:8px;align-items:baseline}
.lpprompt{white-space:nowrap;flex:none}
#lp-in{flex:1;min-width:0;background:none;border:0;outline:0;color:#fff;font:inherit;padding:0;caret-color:var(--hot)}
.lprow:focus-within{box-shadow:-3px 0 0 var(--violet);margin-left:-8px;padding-left:8px}
@media (max-width:520px){.lpscreen{font-size:.74rem;padding:10px}.lprow{flex-wrap:wrap}#lp-in{flex-basis:100%}}
.lpkeys{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;border-top:1px solid var(--line);background:var(--panel)}
.lpkeys .btn{padding:5px 12px;font-size:.82rem}
.lphelp{margin:0;padding:8px 12px 12px;font-size:.78rem;background:var(--panel)}
.lpside h2{margin-top:0}
.lpprog{height:4px;border-radius:2px;background:var(--line);overflow:hidden;margin:8px 0 12px}.lpprog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--hot));transition:width .3s ease}
.lpms{list-style:none;margin:0;padding:0}
.lpm{border-left:2px solid var(--line);margin:0}
.lpm.isopen{border-left-color:var(--violet);background:rgba(13,11,43,.6)}
.lpmh{display:flex;gap:10px;align-items:baseline;width:100%;text-align:left;background:none;border:0;color:var(--dim);font-family:var(--sans);font-size:.9rem;line-height:1.3;padding:7px 10px;cursor:pointer}
.lpmh:hover,.lpm.isopen .lpmh{color:var(--text)}.lpmh:focus-visible{outline:2px solid var(--violet);outline-offset:-2px}
.lpn{font-family:var(--mono);font-size:.74rem;min-width:1.4em;color:var(--dim)}
.lpm.isdone .lpn{color:var(--hot)}.lpm.isdone .lpmh{color:var(--dim)}
.lpmb{padding:0 12px 12px 34px}.lpmb p{margin:0 0 8px;font-size:.88rem;max-width:52ch}
.lpwhy2{color:var(--dim)}
.lpmbar{display:flex;gap:8px;flex-wrap:wrap}.lpmbar .btn{padding:4px 11px;font-size:.8rem}
.lphint{margin:10px 0 6px!important;color:var(--dim)}
.lpsol{display:block;width:100%;text-align:left;margin:4px 0;background:#04031a;border:1px solid var(--line);border-radius:6px;color:var(--text);font-family:var(--mono);font-size:.76rem;line-height:1.4;padding:6px 9px;cursor:pointer;overflow-wrap:anywhere;white-space:pre-wrap}
.lpsol:hover{border-color:var(--blue)}
@media (prefers-reduced-motion:reduce){.lpprog i{transition:none}}
.ndpal{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin-top:16px}
.ndadd{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--text);font-family:var(--sans);font-size:.72rem;line-height:1.2;padding:7px 4px 6px;cursor:pointer;text-align:center}
.ndadd:hover{border-color:var(--blue)}.ndadd span{color:var(--dim)}.ndadd:hover span{color:var(--text)}
.ndctl{margin:12px 0 0;justify-content:space-between}.ndex{display:flex;flex-wrap:wrap;gap:6px;align-items:center;color:var(--dim);font-size:.85rem}
.nd{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:12px}
.ndside{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:14px;align-items:start}
@media (max-width:820px){.ndside{grid-template-columns:minmax(0,1fr)}}
.ndpanel{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 16px;align-items:end}.ndpanel>h2,.ndpanel>p,.ndpanel>.ndbtn{grid-column:1/-1}
.ndwrap{border:1px solid var(--line);border-radius:10px;overflow-x:auto;background:var(--bg)}
.ndcanvas{touch-action:none;min-width:760px}.ndcanvas svg{display:block;width:100%;height:auto;user-select:none;-webkit-user-select:none}
.ndcanvas [data-n]:focus,.ndcanvas [data-k]:focus{outline:none}
.ndcanvas [data-n]:focus-visible>rect:first-child{stroke:#fff;stroke-width:2.6}.ndcanvas [data-k]:focus-visible line+line{stroke:#fff}
.ndpanel{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:14px}
.ndpanel h2{margin:0 0 8px}.ndpanel label{display:block;color:var(--dim);font-size:.85rem;margin-top:10px}.ndpanel p{margin:0 0 4px;font-size:.88rem}
.ndbtn{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.ndbtn .btn{padding:6px 11px;font-size:.84rem}
.ndhelp{margin-top:10px!important;font-size:.78rem!important}
.ndexp{display:grid;gap:8px;margin-top:14px}.ndexp label{color:var(--dim);font-size:.85rem}
.ndprint{display:none}
@media print{.ndprint{display:block}.ndprint svg{width:100%;height:auto}.nd{display:block}}
.pbset{border:0;border-top:1px solid var(--line);margin:22px 0 0;padding:12px 0 0;min-width:0}
.pbset legend{padding:0 10px 0 0;font-family:var(--mono);font-size:.8rem;color:var(--blue)}
.pbfig{margin-top:22px}
.pbsvg text.tk{fill:var(--dim);font-size:10px}
.pbsvg .pbboard{fill:rgba(138,134,201,.16);stroke:var(--dim);stroke-width:1.5}
.pbsvg .pbbadl{fill:rgba(255,79,216,.28);stroke:var(--hot);stroke-width:2}
.pbsvg .pbok{fill:var(--blue)}.pbsvg .pbbad{fill:var(--hot)}
.pbsvg .pbmax{fill:none;stroke:var(--text);stroke-width:1.5;stroke-dasharray:4 3}
.pbsvg .a{fill:rgba(77,163,255,.3);stroke:var(--blue);stroke-width:1.5}
.pbsvg .h{fill:rgba(180,92,255,.25);stroke:var(--violet);stroke-width:1.5}
.asfile{cursor:pointer;display:inline-block}.asfile:focus-within{outline:2px solid var(--violet);outline-offset:2px}
.askeep{margin:10px 0 0;font-size:.88rem;max-width:80ch}
.asform{border:1px solid var(--violet);border-radius:10px;background:var(--panel);padding:16px;margin:10px 0 18px}.asform h2{margin:0 0 6px}
.assort{background:none;border:0;color:inherit;font:inherit;font-weight:inherit;padding:0;cursor:pointer;text-align:left;white-space:nowrap}.assort:hover{color:var(--text)}
.astbl td{font-size:.84rem}.astbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.astbl tr.as-out td:first-child{box-shadow:inset 3px 0 0 var(--hot)}.astbl tr.as-soon td:first-child{box-shadow:inset 3px 0 0 #ff9d4d}.astbl tr.as-old td:first-child{box-shadow:inset 3px 0 0 var(--violet)}
.asbtn{padding:2px 9px;font-size:.78rem}.asmeta{margin:0 0 6px;font-size:.82rem}
#as-paste{display:block;width:100%;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:10px;font-family:var(--mono);font-size:.82rem}
@media print{.astbl td,.astbl th{font-size:8pt;padding:3px 5px}.astbl .sevtag{border:0;padding:0;color:#000!important;background:none!important}}
.lpside h2 span{font-size:.8rem;font-weight:400}
.pbfig{max-width:none}
.asd{white-space:nowrap}.astbl .sevtag{display:inline-block;margin-top:3px;white-space:nowrap}
.astag{font-family:var(--mono);font-size:.8rem;color:var(--blue);background:rgba(77,163,255,.08);border:1px solid rgba(77,163,255,.4);border-radius:5px;padding:1px 7px;cursor:pointer;white-space:nowrap}.astag:hover{border-color:var(--blue);color:#fff}
@media print{.astag{border:0;background:none;color:#000;padding:0}}

/* round 64: mail header reader, unit builder, storage planner, poster, drill kit, areas */
.mhauths{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:8px}
.mhauth{border:1px solid var(--line);border-left-width:4px;border-radius:8px;background:var(--panel);padding:10px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.mhauth .mhak{font-family:var(--mono);font-size:.74rem;color:var(--dim);overflow-wrap:anywhere}.mhauth b{font-family:var(--mono);font-size:1.15rem;color:var(--text)}
.mhauth.mhpass{border-left-color:var(--blue)}.mhauth.mhpass b::before{content:"\2713  ";color:var(--blue)}
.mhauth.mhfail{border-left-color:var(--hot)}.mhauth.mhfail b{color:var(--hot)}.mhauth.mhfail b::before{content:"\2717  "}
.mhauth.mhwarn{border-left-color:#ff9d4d}.mhauth.mhwarn b{color:#ff9d4d}.mhauth.mhwarn b::before{content:"~  "}
.mhauth.mhnone{border-left-color:var(--dim)}.mhauth.mhnone b{color:var(--dim)}
.mhnote{margin:10px 0 0;font-size:.86rem;max-width:80ch}
.mhdl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 18px;margin:8px 0 0;font-size:.9rem}
.mhdl dt{font-family:var(--mono);font-size:.78rem;color:var(--dim);padding-top:2px}.mhdl dd{margin:0;overflow-wrap:anywhere;color:var(--text)}.mhdl dd.mhodd{color:#ff9d4d}
.mhtl{list-style:none;margin:14px 0 0;padding:0;border-left:2px solid var(--line)}
.mhhop{position:relative;padding:10px 0 12px 22px;display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:2px 16px;align-items:center}
.mhhop::before{content:"";position:absolute;left:-7px;top:16px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--blue)}
.mhhop.iswarm::before{border-color:#ff9d4d}.mhhop.isslow::before{border-color:var(--hot);background:var(--hot)}
.mhhh{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline;min-width:0}.mhhh b{font-family:var(--mono);font-size:.9rem;color:var(--text);overflow-wrap:anywhere}
.mhn{font-family:var(--mono);font-size:.72rem;color:var(--dim)}
.mhproto{font-family:var(--mono);font-size:.68rem;color:var(--dim);border:1px solid var(--line);border-radius:99px;padding:0 7px}.mhproto.istls{color:var(--blue);border-color:rgba(77,163,255,.5)}
.mhmeta{grid-column:1;display:flex;flex-wrap:wrap;gap:2px 16px;font-size:.8rem;color:var(--dim);overflow-wrap:anywhere}.mhmeta .mht{font-family:var(--mono);font-size:.74rem}
.mhbar{grid-column:1;height:6px;border-radius:3px;background:rgba(42,36,102,.6);overflow:hidden;margin-top:4px}.mhbar i{display:block;height:100%;background:var(--blue);border-radius:3px}
.mhhop.iswarm .mhbar i{background:#ff9d4d}.mhhop.isslow .mhbar i{background:var(--hot)}
.mhd{grid-column:2;grid-row:1/4;font-family:var(--mono);font-size:.84rem;color:var(--dim);text-align:right}.mhhop.iswarm .mhd{color:#ff9d4d}.mhhop.isslow .mhd{color:var(--hot);font-weight:700}
@media (max-width:560px){.mhhop{grid-template-columns:minmax(0,1fr)}.mhd{grid-column:1;grid-row:auto;text-align:left}}
.mhall{margin-top:26px}.mhtbl th{font-family:var(--mono);font-size:.74rem;white-space:nowrap;vertical-align:top;text-align:left;color:var(--dim)}.mhtbl td{font-family:var(--mono);font-size:.74rem;overflow-wrap:anywhere;word-break:break-word}
.sdcmd{font-family:var(--mono)!important}.sdchk{display:flex!important;gap:8px;align-items:center;align-self:end;padding-bottom:10px}
.sdwhy{margin-top:8px}.sdwhy th{text-align:left;vertical-align:top;font-weight:400;white-space:nowrap}.sdwhy td{font-size:.86rem}
@media (max-width:640px){.sdwhy th{white-space:normal;overflow-wrap:anywhere}}
.hwsvg .stbg{fill:#050316}
.stsol li{margin:8px 0;max-width:76ch}
.potbl td,.potbl th{padding:5px 10px;font-size:.84rem}.potbl td:first-child{font-family:var(--mono);white-space:nowrap;color:var(--text)}.pocols .potbl td:first-child{white-space:normal}.potbl .num{text-align:right;font-variant-numeric:tabular-nums}
.pohint{margin:12px 0 0;font-size:.88rem;max-width:86ch}.pocols{display:grid;grid-template-columns:1fr 1fr;gap:0 30px}@media (max-width:760px){.pocols{grid-template-columns:1fr}}
.poster2 h2{margin-top:34px}.polist li{margin:5px 0}
.poin{width:100%;min-width:70px;background:none;border:0;border-bottom:1px dashed var(--line);color:var(--text);font:inherit;font-size:.84rem;padding:3px 0}.poin:focus{outline:0;border-bottom-color:var(--violet)}
@media print{@page{margin:12mm}.poster2{color:#000}.poster2 h2{margin-top:5mm;font-size:13pt}.pobreak{break-before:page;page-break-before:always}.crumb,h1{display:none}.potbl td,.potbl th{font-size:8.5pt;padding:.9mm 2.5mm;color:#000!important;border-color:#999!important}.potbl td:first-child{color:#000}.pohint,.polist li{font-size:9.5pt;color:#000}.pocols{grid-template-columns:1fr 1fr;gap:0 8mm}.poin{border:0;color:#000;font-size:9pt}.pomine td{height:6.5mm}.poster2 .tw{overflow:visible}}
.pdmail{border:1px solid var(--line);border-radius:10px;background:var(--panel);margin:16px 0;overflow:hidden;max-width:820px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
.pdhead{grid-column:1/-1;display:grid;grid-template-columns:max-content minmax(0,1fr);gap:2px 14px;padding:12px 16px;border-bottom:1px solid var(--line);font-size:.86rem}.pdhead span{color:var(--dim);font-family:var(--mono);font-size:.74rem;padding-top:2px}.pdhead b{color:var(--text);font-weight:600;overflow-wrap:anywhere}
.pdbody{padding:12px 16px;font-size:.9rem}.pdbody p{margin:0 0 8px}.pdbody u{color:var(--blue);overflow-wrap:anywhere}
.pdtells{padding:12px 16px;border-left:1px solid var(--line);background:rgba(255,79,216,.05);font-size:.84rem}.pdtells b{font-family:var(--mono);font-size:.74rem;color:var(--hot)}.pdtells ul{margin:6px 0 0;padding-left:1.1em}.pdtells li{margin:5px 0;color:var(--text)}
@media (max-width:700px){.pdmail{grid-template-columns:minmax(0,1fr)}.pdtells{border-left:0;border-top:1px solid var(--line)}}
.pdland{border:1px solid var(--blue);border-radius:10px;background:var(--panel);padding:18px 20px;max-width:640px;font-size:.92rem}.pdland p{margin:0 0 10px}.pdland ul{margin:0 0 10px;padding-left:1.2em}.pdlh{font-size:1.3rem;font-weight:700;color:var(--text)}
.aico{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.lsrow b .aico{width:15px;height:15px;margin-right:9px;vertical-align:-2px;color:var(--dim)}.lsrow:hover b .aico{color:var(--violet)}
.areabar{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.achip{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.78rem;color:var(--dim);background:rgba(13,11,43,.6);border:1px solid var(--line);border-radius:8px;padding:5px 10px;cursor:pointer;transition:border-color .15s ease,color .15s ease}
.achip .aico{width:15px;height:15px}.achip i{font-style:normal;font-size:.7rem}
.achip:hover{color:var(--text);border-color:var(--dim)}.achip[aria-pressed="true"]{color:var(--text);border-color:var(--violet);background:rgba(180,92,255,.14)}
.amap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:14px}
@media (max-width:900px){.amap{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.amap{grid-template-columns:minmax(0,1fr)}}
.acard{background:var(--panel);padding:16px 18px 14px;display:flex;flex-direction:column;min-width:0}
.acard h3{margin:0;display:flex;align-items:center;gap:9px;font-family:var(--sans);font-size:1.02rem;color:var(--text)}.acard h3 .aico{color:var(--violet)}
.acard p{margin:5px 0 8px;font-size:.86rem;color:var(--dim);line-height:1.45}
.acard ul{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:4px 14px}.acard li a{font-family:var(--sans);font-size:.88rem;color:var(--blue)}.acard li a:hover{color:var(--text);text-decoration:underline}
.amore{margin-top:auto;font-family:var(--mono);font-size:.74rem;color:var(--dim)}.amore:hover{color:var(--text)}
#areas{margin-top:54px}
.amap{align-items:stretch}.acard{align-self:stretch}
@media print{.poster2 h2.plain{margin:3mm 0 1mm!important;font-size:12pt}.poster2.pobreak{margin-top:0;padding-top:0}.polist{margin:1mm 0}.polist li{margin:.6mm 0}.pomine td{height:6mm}.poster2 .tw{margin-top:1mm}}
@media print{main:has(.poster2)::after{display:none!important}main:has(.poster2){margin:0!important;padding:0!important}main:has(.poster2) .poster2:last-of-type{margin-bottom:0}.pomine td{height:5.5mm}}

/* round 65: packet journey, practise bar */
.prbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0 4px}
.prk{font-family:var(--mono);font-size:.74rem;color:var(--dim);margin-right:4px}
.prchip{position:relative;display:flex;gap:8px;align-items:baseline;border:1px solid var(--line);border-radius:8px;background:rgba(13,11,43,.6);padding:5px 11px 8px;font-size:.8rem;color:var(--dim);overflow:hidden}
.prchip b{font-family:var(--mono);font-weight:700;color:var(--blue)}.prchip span{font-family:var(--mono);font-size:.72rem}
.prchip i{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--line)}.prchip u{display:block;height:100%;background:linear-gradient(90deg,var(--blue),var(--hot))}
.prchip:hover{border-color:var(--dim);color:var(--text)}.prchip.iscur{border-color:var(--violet);background:rgba(180,92,255,.12)}.prchip.iscur b{color:var(--text)}
.pjtop{display:flex;flex-wrap:wrap;gap:10px 24px;align-items:end;margin-top:18px}.pjtop label{color:var(--dim);font-size:.85rem;min-width:min(100%,340px)}.pjtop p{margin:0 0 10px;font-size:.85rem}
.pjstage{margin-top:14px;border:1px solid var(--line);border-radius:10px;background:#050316;overflow-x:auto}
.pjsvg{display:block;width:100%;min-width:640px;height:auto}
.pjsvg .pjlink{stroke:var(--line);stroke-width:2}
.pjsvg .pjnode{fill:var(--panel);stroke:var(--line);stroke-width:1.2}.pjsvg .pjnode.ison{stroke:var(--blue);stroke-width:2.4}.pjsvg .pjnode.isbad{stroke:var(--hot);stroke-width:2.4;fill:rgba(255,79,216,.12)}
.pjsvg .pjico{fill:none;stroke:var(--text);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.pjsvg text{font-family:var(--sans);text-anchor:middle}.pjsvg .pjl{font-size:12px;fill:var(--text)}.pjsvg .pjs{font-size:10.5px;fill:var(--dim);font-family:var(--mono)}
.pjsvg .pjpkt rect{fill:var(--blue);stroke:none}.pjsvg .pjpkt path{fill:none;stroke:#050316;stroke-width:1.6}.pjsvg .pjpkt.isbad rect{fill:var(--hot)}
.pjsvg .pjx{stroke:var(--hot);stroke-width:3;stroke-linecap:round}
.pjgrid{display:grid;grid-template-columns:270px minmax(0,1fr);gap:26px;margin-top:20px;align-items:start}@media (max-width:860px){.pjgrid{grid-template-columns:minmax(0,1fr)}}
.pjlist{list-style:none;margin:0;padding:0;border-left:2px solid var(--line)}
.pjst{display:flex;gap:10px;align-items:baseline;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;margin-left:-2px;color:var(--dim);font-family:var(--sans);font-size:.86rem;line-height:1.3;padding:6px 10px;cursor:pointer}
.pjst:hover{color:var(--text)}.pjst:focus-visible{outline:2px solid var(--violet);outline-offset:-2px}
.pjst.iscur{color:var(--text);border-left-color:var(--violet);background:rgba(13,11,43,.7)}.pjst.isbad{border-left-color:var(--hot);color:var(--hot)}.pjst.isoff{opacity:1;color:#57539a;cursor:default;text-decoration:line-through}
.pjn{font-family:var(--mono);font-size:.72rem;min-width:1.5em}
.pjbody h2{margin-top:0}.pjbody p{max-width:74ch}
.pjk{margin:18px 0 6px!important;font-family:var(--mono);font-size:.76rem;color:var(--blue)}
.pjhdr th{width:11em;font-weight:400;color:var(--dim);font-size:.82rem;text-align:left;white-space:nowrap}.pjhdr td{font-family:var(--mono);font-size:.82rem;overflow-wrap:anywhere}
.pjhdr td.pjch{color:var(--text);background:rgba(180,92,255,.14);box-shadow:inset 3px 0 0 var(--violet)}
.pjleg{margin:6px 0 0!important;font-size:.78rem}
.pjnote{margin-top:14px!important;padding:10px 14px;border-left:3px solid var(--blue);background:rgba(77,163,255,.06);border-radius:0 8px 8px 0;font-size:.92rem}
.pjcmds{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 18px}.pjcmds pre{margin:0;font-size:.78rem}
.pjsee{font-size:1.08rem;color:var(--text);border-left:3px solid var(--hot);padding:8px 14px;background:rgba(255,79,216,.06);border-radius:0 8px 8px 0}
.pjtools td{font-size:.84rem;vertical-align:top}.pjtools code{white-space:nowrap}.pjtools .pjres{font-family:var(--mono);font-size:.8rem;color:#ff9d4d}
@media (max-width:640px){.pjtools code{white-space:normal;overflow-wrap:anywhere}.pjhdr th{white-space:normal;width:7em}}
.pjquiz{margin-top:12px;max-width:820px}
.pjopts{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px;margin-top:14px}
.pjopt{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--text);font-family:var(--sans);font-size:.9rem;line-height:1.35;padding:10px 14px;cursor:pointer}
.pjopt:hover:not(:disabled){border-color:var(--blue)}.pjopt.iswrong{color:var(--dim);text-decoration:line-through;cursor:default}.pjopt.isright{border-color:var(--blue);background:rgba(77,163,255,.14);cursor:default}
.pjright{color:var(--text);border-left:3px solid var(--blue);padding:8px 14px;margin-top:14px}.pjwrong{color:#ff9d4d;margin-top:12px}.pjdone{font-size:1.05rem;color:var(--text)}
@media (prefers-reduced-motion:reduce){.pjpkt{animation:none}}

/* regex tester */
/* regex-tester */
.rxchips{margin:16px 0 4px;gap:8px}
.rxexnote{font-size:.88rem;min-height:1.4em;margin:6px 0 10px;max-width:86ch}
.rxform{grid-template-columns:2fr 1fr}
.rxform input{font-family:var(--mono)}
.rxflags{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;margin-top:14px;color:var(--dim);font-size:.85rem}
.rxflags label{display:flex;align-items:center;gap:8px;color:var(--text);font-family:var(--sans);cursor:pointer}
.rxflags code{color:var(--blue)}
.rxtl{display:block;color:var(--dim);font-size:.85rem;margin-top:14px}
.rxta{display:block;width:100%;min-height:140px;margin-top:4px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:10px;font-family:var(--mono);line-height:1.5;resize:vertical}
.rxta:hover{border-color:#3d3590}
.rxout,.rxrep{position:relative;max-height:320px;overflow:auto;margin:14px 0 0;padding:12px 14px;background:var(--panel);border:1px solid var(--line);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.86rem;line-height:1.7}
.rxrep{max-height:240px;margin-top:6px}
.rxm{color:var(--text);border-radius:2px}
.rxm0{background:rgba(77,163,255,.26);box-shadow:inset 0 -2px 0 var(--blue)}
.rxm1{background:rgba(180,92,255,.3);box-shadow:inset 0 -2px 0 var(--violet)}
.rxz{display:inline-block;width:2px;height:1.1em;vertical-align:text-bottom;background:var(--blue);box-shadow:none}
.rxz.rxm1{background:var(--violet)}
.rxon{outline:2px solid var(--hot);outline-offset:1px}
.rxwarn{color:#ff9d4d;font-size:.9rem;margin-top:10px;max-width:80ch}
.rxcap{caption-side:top;text-align:left;color:var(--dim);font-family:var(--sans);font-size:.84rem;padding:0 0 6px}
.rxtbl td.rxval{font-family:var(--mono);font-size:.85rem;white-space:pre-wrap;overflow-wrap:anywhere;min-width:11ch}
.rxtbl td.rxpos{white-space:nowrap}
.rxh3{margin-top:26px}
.rxsmall{font-size:.85rem;margin-top:8px;max-width:86ch}
.rxpat{position:sticky;top:0;z-index:2;padding:10px 14px;background:var(--bg);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:.95rem;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--dim)}
.rxhl{background:rgba(255,79,216,.28);color:var(--text);box-shadow:inset 0 -2px 0 var(--hot);border-radius:2px}
.rxtree{list-style:none;margin:10px 0 0;padding:0}
.rxline{display:grid;grid-template-columns:minmax(8ch,calc(32% - var(--d,0)*20px)) 1fr;gap:2px 18px;align-items:baseline;margin-left:calc(var(--d,0)*20px);padding:6px 12px;border-left:2px solid var(--line)}
.rxline:hover,.rxline:focus-visible{background:rgba(77,163,255,.08);border-left-color:var(--blue)}
.rxpiece{color:var(--blue);white-space:pre-wrap;overflow-wrap:anywhere;background:none;border:0;padding:0}
.rxmean{font-family:var(--sans);color:var(--text);font-size:.95rem;line-height:1.5}
.rxk-alt .rxmean,.rxk-alt .rxpiece{color:var(--violet)}
.rxk-err{border-left-color:#ff9d4d}
.rxk-err .rxmean,.rxk-err .rxpiece{color:#ff9d4d}
.rxk-note{display:block;border-left:0;padding-left:0}
.rxk-note .rxmean{color:var(--dim)}
.rxvar td,.rxvar th{vertical-align:top}
.rxvar th[scope=row]{white-space:nowrap;text-align:left;color:var(--text);font-weight:400}
.rxvar pre.rxcmd{margin:0 0 8px;padding:8px 10px;min-width:24ch;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.82rem}
.rxvar .btn{padding:4px 10px;font-size:.8rem}
.rxnotes{margin:0;padding-left:18px;font-size:.88rem;min-width:22ch}
.rxnotes li{font-family:var(--sans);line-height:1.5}
.rxnotes li+li{margin-top:4px}
.rxfixctl{margin:10px 0 14px}
.finding .csrow pre{margin-top:4px}
@media (max-width:700px){
.rxform{grid-template-columns:1fr}
.rxline{grid-template-columns:1fr;margin-left:calc(var(--d,0)*10px);padding:6px 10px}
.rxtbl td.rxval{min-width:17ch}
.rxvar,.rxvar tbody{display:block}
.rxvar thead{display:none}
.rxvar tr{display:block;padding:12px 0;border-bottom:1px solid var(--line)}
.rxvar th[scope=row],.rxvar td{display:block;padding:3px 0;border:0;box-shadow:none!important}
.rxvar th[scope=row]{color:var(--violet)}
.rxvar pre.rxcmd,.rxnotes{min-width:0}
}
@media print{.rxpat{position:static}}

/* round 66: how-to cards */
.hcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;margin-top:22px}
.hcard{background:#fff;color:#111;border-radius:8px;padding:24px 24px 18px;font-family:var(--sans);display:flex;flex-direction:column}
.hcard h2.hch{margin:0 0 10px;font-family:var(--sans);font-size:1.3rem;line-height:1.2;color:#111;background:none;-webkit-text-fill-color:#111;display:block}.hcard h2.hch::before,.hcard h2.hch::after{display:none!important}
.hcard ol{margin:0;padding-left:1.3em;font-size:.9rem;line-height:1.45;color:#111}.hcard li{margin:7px 0}
.hcard .hcf{margin:14px 0 0;padding:8px 12px;border-left:3px solid #111;font-size:.84rem;color:#111}.hcard .hcc{margin:auto 0 0;padding-top:12px;font-size:.78rem;color:#444}
@media print{@page{margin:16mm}main:has(.hcards) h1,main:has(.hcards) .crumb{display:none!important}main:has(.hcards)::after{display:none!important}main:has(.hcards){margin:0!important;padding:0!important}.hcards{display:block;margin:0}.hcard{border-radius:0;padding:0;height:240mm;break-after:page;page-break-after:always}.hcard:last-child{break-after:auto;page-break-after:auto}.hcard h2.hch{font-size:30pt;margin-bottom:10mm}.hcard ol{font-size:17pt}.hcard li{margin:6mm 0}.hcard .hcf{font-size:14pt;margin-top:10mm;padding:4mm 5mm}.hcard .hcc{font-size:12pt;border-top:1px solid #111;padding-top:4mm}}
/* it-documentation */
.dgtabs{gap:6px;margin-bottom:6px}.dgtabs .btn{font-size:.8rem}.dgn{opacity:.75;font-size:.75em;margin-left:3px}
.dgedit{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:14px 16px 18px;margin-top:14px}
.dgrow{border:1px solid var(--line);border-radius:8px;padding:10px 14px 12px;margin:12px 0 0;min-width:0}.dgrow legend{color:var(--dim);font-size:.8rem;padding:0 6px}.dgrow .ctl{margin-top:10px}.dgrow .ctl .btn{font-size:.75rem}
.dgta{width:100%;resize:vertical;min-height:4.2em;font:inherit}
.dgbook{border:1px solid var(--line);border-radius:10px;padding:6px 20px 20px;background:var(--panel)}
.dgcover{padding:18px 0 22px;border-bottom:1px solid var(--line)}.dgk{color:var(--violet);text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;margin:0}
.dgtitle{font-size:1.8rem;margin:.2em 0 .4em}.dgdl{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;margin:14px 0}.dgdl dt{color:var(--dim)}.dgdl dd{margin:0}
.dgwarn{font-size:.85rem;border-left:3px solid var(--hot);padding-left:10px;margin-top:14px}
.dgh{font-size:1.15rem;margin:26px 0 10px}.dgbox{border:1px solid var(--line);border-left:3px solid var(--hot);border-radius:6px;padding:8px 14px;margin:10px 0;break-inside:avoid}.dgbox h3{font-size:.9rem;margin:.3em 0}.dgbox p{margin:.3em 0 .5em}
.dgtoc li{margin:3px 0}.dgtbl td{vertical-align:top;font-size:.85rem}.dgchk{list-style:none;padding:0}.dgchk li{margin:8px 0;line-height:1.5}
@media print{
 .dgbook{page:handbook;border:0;padding:0;background:#fff!important;color:#000}.dgbook *{color:#000!important}
 .dgemerg,.dgpage{break-after:page}.dgcover{break-after:page;border:0;padding-top:30vh}.dgtitle{font-size:26pt}
 .dgsec{break-inside:auto}.dgh{break-after:avoid;border-bottom:1px solid #000;padding-bottom:3px}
 .dgtbl{border-collapse:collapse;width:100%}.dgtbl td,.dgtbl th{border:1px solid #999!important;font-size:8.5pt;padding:3px 5px;background:#fff!important}.dgtbl tr{break-inside:avoid}
 .dgbox{border:1px solid #000;border-left:4pt solid #000;background:#fff!important}.dgwarn{border-left:3pt solid #000}
 .dgchk .sevtag{border:0;padding:0;min-width:0}
 .tw:has(.dgtbl){overflow:visible}
}
@page handbook{margin:16mm 14mm 18mm;@bottom-right{content:"page " counter(page) " of " counter(pages);font-size:8pt}@bottom-left{content:"IT handbook, confidential";font-size:8pt}}
