/* Server City: "Cold Aisle" design system (v1.1.0, 2026-10-10; v1.1.2 focus rings use --cable-ink on light grounds). See DESIGN.md in the client folder. */
@font-face{font-family:"Mona Sans";src:url(/assets/fonts/mona-sans-var.woff2) format("woff2");font-weight:400 800;font-stretch:100% 125%;font-style:normal;font-display:swap}
@font-face{font-family:"Geist Mono";src:url(/assets/fonts/geist-mono-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Geist Mono";src:url(/assets/fonts/geist-mono-500.woff2) format("woff2");font-weight:500 700;font-display:swap}
:root{
--ink:#101418;--ink-2:#4b5560;--paper:#fff;--mist:#f3f5f7;--line:#dfe3e8;--line-2:#c4cbd3;
--stage:#0e1216;--stage-2:#171c22;--stage-3:#202731;--stage-line:#2a323b;--stage-ink:#e8edf2;--stage-mute:#9aa6b2;
--cable:#ff6b1a;--cable-ink:#b5470b;--cable-soft:#fff1e8;
--ok:#157a3c;--warn:#a85f00;--stop:#b42318;--led:#22c55e;--led-warn:#ffb020;--led-stop:#ff6b6b;
--sans:"Mona Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
--mono:"Geist Mono",ui-monospace,Menlo,Consolas,monospace;
--r:10px;--r-lg:18px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.6 var(--sans);font-stretch:100%;-webkit-font-smoothing:antialiased}
a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--cable);text-decoration-thickness:2px;text-underline-offset:3px}
a:hover{color:var(--cable-ink)}
h1,h2,h3{font-family:var(--sans);font-stretch:118%;font-weight:760;line-height:1.08;letter-spacing:-.02em;margin:0}
h1{font-size:clamp(2rem,4.6vw,3.25rem);margin:.15em 0 .35em}
h2{font-size:clamp(1.35rem,2.4vw,1.75rem);margin:1.7em 0 .55em}
h3{font-size:1.12rem;margin:.2em 0 .4em}
p{margin:.6em 0}
strong,b{font-weight:680}
code{font-family:var(--mono);font-size:.86em;background:var(--mist);border:1px solid var(--line);padding:1px 5px;border-radius:4px}
.shell{max-width:1240px;margin:0 auto;padding:0 20px}
.narrow{max-width:820px}
.pad{padding-top:36px;padding-bottom:48px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:10px 14px;border-radius:8px;z-index:20}.skip:focus{left:8px}
.small{font-size:.9rem;color:var(--ink-2)}
.eyebrow,.crumb{font:500 .78rem/1.4 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);margin:0}
.crumb a{color:var(--ink-2);text-decoration:none}.crumb a:hover{color:var(--ink);text-decoration:underline}
.crumb span{margin:0 .4em;color:var(--line-2)}
:focus-visible{outline:3px solid var(--cable-ink);outline-offset:2px}
.stage :focus-visible,.readout :focus-visible,.plan-out :focus-visible,.linkbox :focus-visible,.plan-plus .plan-head :focus-visible{outline-color:var(--cable)}
input:focus-visible,select:focus-visible{outline-offset:0}

/* Header: white, centred nav, Rack Book key on the right; preview as a status line */
.hd{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);backdrop-filter:saturate(1.4) blur(8px)}
.hd-in{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;min-height:64px}
.logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}
.logo-mark{width:28px;height:28px;flex:none}.logo-mark>rect:first-child{fill:var(--ink)}.logo-mark .b{fill:#56616d}.logo-mark .o{fill:var(--cable)}
.logo-word{white-space:nowrap;font:780 1.12rem/1 var(--sans);font-stretch:125%;letter-spacing:-.01em;text-transform:uppercase}
.hd-nav{display:flex;justify-content:center;gap:4px 6px;flex-wrap:wrap}
.hd-nav a{font-size:.95rem;font-weight:500;color:var(--ink);text-decoration:none;padding:8px 12px;border-radius:999px}
.hd-nav a:hover{background:var(--mist);color:var(--ink)}
.hd-nav a[aria-current]{background:var(--mist);box-shadow:inset 0 -2px 0 var(--cable);border-radius:8px 8px 0 0}
.hd-book{font-weight:650;font-size:.95rem;text-decoration:none;color:#fff;background:var(--ink);padding:9px 16px;border-radius:999px;white-space:nowrap}
.hd-book:hover,.hd-book[aria-current]{color:#fff;background:#2a323b}
.status{border-top:1px solid var(--line);background:var(--paper)}
.status-in{display:flex;align-items:baseline;gap:10px;font-size:.84rem;color:var(--ink-2);padding-top:7px;padding-bottom:7px}
.status-in strong{color:var(--ink)}
.status-k{font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink)}
.led{width:8px;height:8px;border-radius:50%;background:var(--led);box-shadow:0 0 0 3px #dcf5e5;flex:none;align-self:center}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border-radius:999px;border:1.5px solid var(--ink);background:var(--paper);color:var(--ink);font:650 .98rem/1.1 var(--sans);text-decoration:none;cursor:pointer}
.btn:hover{background:var(--mist);color:var(--ink)}
.btn-main,.btn-go{background:var(--cable);border-color:var(--cable);color:var(--ink)}
.btn-main:hover,.btn-go:hover{background:#ff8540;border-color:#ff8540;color:var(--ink)}
.btn-ghost{border-color:transparent;background:transparent;text-decoration:underline;text-decoration-color:var(--cable)}
.btn-danger{background:var(--stop);border-color:var(--stop);color:#fff}.btn-danger:hover{background:#8f1c13;color:#fff}
.linkish{background:none;border:0;padding:0;font:inherit;color:var(--ink);text-decoration:underline;text-decoration-color:var(--cable);text-decoration-thickness:2px;text-underline-offset:3px;cursor:pointer}
.danger,.linkish.danger{color:var(--stop);text-decoration-color:var(--stop)}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0}
.inline{display:inline}

/* Price line and tags */
.price-line{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:14px 0;padding:6px 14px 6px 6px;border:1px solid var(--line);border-radius:999px;background:var(--paper);font-size:.92rem}
.price-line strong{font-family:var(--mono);font-weight:500}
.tag{display:inline-block;font:500 .68rem/1.5 var(--mono);text-transform:uppercase;letter-spacing:.1em;background:var(--ink);color:#fff;padding:2px 8px;border-radius:999px;vertical-align:middle}
.free{color:var(--ok);font-weight:650}

/* Home hero: centred statement, tool chips, then a full-width product stage */
.hero{background:linear-gradient(180deg,var(--paper) 0,var(--paper) 62%,var(--mist) 62%);padding-bottom:56px}
.hero-in{text-align:center;padding-top:64px;padding-bottom:36px}
.hero-h{font-size:clamp(2.35rem,6.4vw,4.9rem);font-stretch:122%;font-weight:780;letter-spacing:-.035em;line-height:1.02;max-width:15ch;margin:.25em auto .3em}
.hero-lede{font-size:clamp(1.05rem,1.6vw,1.22rem);color:var(--ink-2);max-width:62ch;margin:0 auto}
.hero-small{font-size:.88rem;color:var(--ink-2);margin:0}
.chips{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:30px 0 10px}
.chip{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:10px 20px;border:1.5px solid var(--line-2);border-radius:999px;font-weight:600;text-decoration:none;color:var(--ink);background:var(--paper)}
.chip svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.chip-on{background:var(--cable);border-color:var(--cable)}
.chip-on:hover{background:#ff8540;border-color:#ff8540}
.stage{margin:0;background:var(--stage);color:var(--stage-ink);border-radius:var(--r-lg);overflow:hidden;box-shadow:0 30px 60px -30px rgba(14,18,22,.55),0 0 0 1px var(--stage-line)}
.stage-bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;padding:12px 18px;border-bottom:1px solid var(--stage-line);background:var(--stage-2);font:500 .8rem var(--mono)}
.dots{display:flex;gap:6px}.dots i{width:10px;height:10px;border-radius:50%;background:var(--stage-line)}.dots i:first-child{background:var(--cable)}
.stage-t{color:var(--stage-ink);text-transform:uppercase;letter-spacing:.08em}
.stage-m{color:var(--stage-mute);margin-left:auto}
.stage-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:0;background-image:linear-gradient(var(--stage-2) 1px,transparent 1px),linear-gradient(90deg,var(--stage-2) 1px,transparent 1px);background-size:48px 48px}
.stage-rack{padding:36px 28px;border-right:1px solid var(--stage-line)}
.stage-read{padding:32px 32px 36px;display:flex;flex-direction:column;gap:18px;justify-content:center}
.meters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin:0;background:var(--stage-line);border:1px solid var(--stage-line);border-radius:var(--r);overflow:hidden}
.meter{background:var(--stage);padding:16px 16px 14px}
.meter dt{font:500 .7rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--stage-mute)}
.meter dd{margin:6px 0 0;font:500 clamp(1.5rem,2.6vw,2.1rem)/1 var(--mono);color:#fff;font-variant-numeric:tabular-nums}
.meter small{font-size:.8rem;color:var(--stage-mute);margin-left:4px}
.stage-note{color:var(--stage-mute);font-size:.95rem;margin:0}
.stage-read .btn-go{align-self:flex-start}

/* Bands and tiles */
.band{padding:72px 0}
.band-mist{background:var(--mist)}
.band-head{display:flex;flex-direction:column;gap:6px;margin-bottom:28px}
.band-head h2{margin:0;font-size:clamp(1.7rem,3.4vw,2.6rem)}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--ink)}
.tile{position:relative;display:flex;flex-direction:column;gap:12px;padding:28px 28px 64px 0;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--line)}
.tile+.tile{padding-left:28px;border-left:1px solid var(--line)}
.tile-k{font:760 1.3rem/1.15 var(--sans);font-stretch:118%;letter-spacing:-.015em}
.tile-p{color:var(--ink-2)}
.tile-go{position:absolute;bottom:20px;right:28px;font:500 1.4rem var(--mono);color:var(--cable-ink);transition:transform .15s}
.tile:hover{color:var(--ink);background:linear-gradient(var(--cable),var(--cable)) top/100% 3px no-repeat}
.tile:hover .tile-go{transform:translateX(4px)}
.more{margin-top:18px;font-weight:600}
.not{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:24px 48px;align-items:start}
.not h2{margin:0}
.not p{margin:0;color:var(--ink-2);font-size:1.05rem;max-width:68ch}

/* Plans: spec-sheet columns sharing one frame */
.plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-lg);overflow:hidden;margin:8px 0}
.plan{padding:0 0 24px}
.plan+.plan{border-left:1px solid var(--line-2)}
.plan-head{padding:24px 28px 20px;border-bottom:1px solid var(--line)}
.plan h3{font:500 .78rem var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);margin:0 0 10px}
.plan-plus .plan-head{background:var(--stage);color:var(--stage-ink);border-bottom-color:var(--stage)}
.plan-plus h3{color:var(--cable)}
.amount{font:500 2.6rem/1 var(--mono);margin:0;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.amount span{font:400 1rem var(--sans);color:var(--ink-2);letter-spacing:0}
.plan-plus .amount span,.plan-plus .alt{color:var(--stage-mute)}
.plan-plus .alt strong{color:#fff}
.alt{margin:10px 0 0;font-size:.95rem}
.plan ul{list-style:none;margin:0;padding:8px 28px 0}
.plan li{position:relative;padding:12px 0 12px 28px;border-bottom:1px solid var(--line)}
.plan li:last-child{border-bottom:0}
.plan li::before{content:"";position:absolute;left:2px;top:19px;width:10px;height:10px;border-radius:2px;background:var(--line-2)}
.plan-plus li::before{background:var(--cable)}
.free-box{margin:12px 28px 0;padding:12px 14px;border-radius:var(--r);background:#ecf8f0;border:1px solid #b8e3c6;color:#0f5a2c;font-weight:600;font-size:.93rem}

/* Page head for inner pages */
.phead{background:var(--mist);border-bottom:1px solid var(--line);padding:40px 0 26px}
.phead h1{max-width:22ch}
.phead .note{margin-bottom:0}
.phead-c{text-align:center}.phead-c h1,.phead-c .lede{margin-left:auto;margin-right:auto}
.lede{font-size:1.15rem;color:var(--ink-2);max-width:62ch}

/* Tool console: inputs panel + dark readout */
.console{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:24px;padding-top:32px;padding-bottom:48px;align-items:start}
.console-foot{grid-column:1/-1;margin:0}
.panel{background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:24px}
.panel-h{font:500 .78rem var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);margin:0 0 4px}
.console .grid3{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;align-items:end}
.console .grid3 .panel-h,.console .grid3 .actions{grid-column:1/-1}
.console .grid3 .actions{margin:4px 0 0}
.readout{background:var(--stage);color:var(--stage-ink);border-radius:var(--r-lg);padding:24px;box-shadow:0 0 0 1px var(--stage-line)}
.readout .panel-h{color:var(--stage-mute)}
.readout .sum{background:transparent}
.readout .sum th,.readout .sum td{border-bottom-color:var(--stage-line);color:var(--stage-ink)}
.readout .sum th{color:var(--stage-mute)}
.readout .sum td strong{font-size:1.5rem;color:#fff}
.readout .small{color:var(--stage-mute)}
.readout .flag{background:var(--stage-2);color:var(--stage-ink)}
.readout .flag-stop b{color:var(--led-stop)}.readout .flag-caution b{color:var(--led-warn)}.readout .flag-ok b{color:var(--led)}
.readout .flag-stop{border-color:var(--led-stop)}.readout .flag-caution{border-color:var(--led-warn)}.readout .flag-ok{border-color:var(--led)}

/* Forms: filled fields with an ink baseline */
label{display:block;font-size:.88rem;font-weight:600;color:var(--ink)}
input,select{display:block;width:100%;min-width:0;margin-top:6px;font:400 16px var(--sans);color:var(--ink);background:var(--mist);border:0;border-bottom:2px solid var(--line-2);border-radius:6px 6px 0 0;padding:10px 12px;min-height:44px}
input[type=number],.linkbox input{font-family:var(--mono)}
input:hover,select:hover{border-bottom-color:var(--ink-2)}
input:focus,select:focus{border-bottom-color:var(--cable);background:#fff;outline:2px solid var(--cable-ink);outline-offset:0}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin:10px 0}
.check input{width:auto;min-height:0;margin-top:5px;flex:none}

/* Notes and flags */
.note{border-radius:var(--r);padding:12px 16px;margin:14px 0;border:1px solid var(--line-2);background:var(--paper)}
.note-err{border-color:var(--stop);color:var(--stop);background:#fff5f4}
.note-ok{border-color:var(--ok);color:var(--ok);background:#effaf3}
.note-main{border-color:#f5b48c;background:var(--cable-soft)}
.flag{border-left:4px solid;padding:10px 14px;margin:10px 0;background:var(--mist);border-radius:0 8px 8px 0}
.flag b{margin-right:8px;font:500 .74rem var(--mono);text-transform:uppercase;letter-spacing:.1em}
.flag-stop{border-color:var(--stop)}.flag-stop b{color:var(--stop)}
.flag-caution{border-color:var(--warn)}.flag-caution b{color:var(--warn)}
.flag-ok{border-color:var(--ok)}.flag-ok b{color:var(--ok)}

/* Summary table */
.sum{width:100%;border-collapse:collapse;margin:10px 0}
.sum th,.sum td{padding:11px 12px 11px 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.sum th{width:34%;font:500 .76rem/1.9 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}
.sum td{font-variant-numeric:tabular-nums}
.sum thead th{width:auto}

/* Rack elevation (SVG) */
.elev{display:block;width:100%;max-width:440px;height:auto;margin:0 auto;font:500 10px var(--mono)}
.elev .frame{fill:#06080a;stroke:#3a434e;stroke-width:2}
.elev .un{fill:#7d8995;font:500 9px var(--mono)}
.elev .slot{fill:#11161b;stroke:#222a33;stroke-width:1}
.elev .dev rect{stroke:#06080a;stroke-width:1}
.elev .dev-0 rect{fill:#3b4652}.elev .dev-1 rect{fill:#2f3944}.elev .dev-2 rect{fill:#46525f}.elev .dev-3 rect{fill:#353f4a}
.elev .dev text{fill:#f3f6f9;font:600 11px var(--sans)}
.elev .led{fill:var(--led)}

/* Planner page */
.planner{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:32px;align-items:start;margin:0 0 32px}
.plan-out{background:var(--stage);border-radius:var(--r-lg);padding:20px 18px 24px;box-shadow:0 0 0 1px var(--stage-line)}
.plan-tag{font:500 .76rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--stage-mute);margin:0 0 14px;text-align:center}
.plan-sum h2{margin:1.3em 0 .4em;font-size:1.3rem}
.plan-sum h2.section-h{margin-top:0}
.rackform{padding:28px}
.rackform .panel-h{margin-bottom:12px}
.grid5{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:16px;margin:4px 0 16px}
.devs{width:100%;border-collapse:collapse;margin:10px 0}
.devs th{text-align:left;font:500 .74rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);padding:6px 4px}
.devs td{padding:4px}.devs td:first-child{width:40%}
.devs input{margin:0;padding:8px 10px}
.mob-only{display:none}

/* Rack Book */
.linkbox{background:var(--stage);color:var(--stage-ink);border-radius:var(--r-lg);padding:18px 20px;margin:16px 0}
.linkbox label{color:var(--stage-ink);font:500 .76rem var(--mono);text-transform:uppercase;letter-spacing:.1em}
.linkbox .row{display:flex;gap:8px;margin-top:8px}
.linkbox input{margin:0;font-size:.86rem;background:var(--stage-2);color:#fff;border-bottom-color:var(--stage-line)}
.linkbox .small{color:var(--stage-mute)}
.linkbox .btn{background:var(--cable);border-color:var(--cable)}
.rackrow{display:block;padding:16px 0;border-bottom:1px solid var(--line);margin:0}
.rackrow:first-of-type{border-top:1px solid var(--ink)}
.rackrow h3{margin:0;font-size:1.15rem}.rackrow h3 a{text-decoration:none}.rackrow h3 a:hover{text-decoration:underline;text-decoration-color:var(--cable)}
.rackrow p{margin:2px 0}
.rackrow .small{font-family:var(--mono);font-size:.82rem}
.rowacts{font-size:.93rem}

/* Prose pages */
.prose p,.prose li{max-width:70ch}
.prose li{margin:.45em 0}
.narrow>h1:first-child{font-size:clamp(2rem,4.2vw,3rem);padding-bottom:.35em;border-bottom:1px solid var(--ink)}
.narrow h2{font-size:1.35rem}

/* Footer: light, column links */
.ft{background:var(--mist);border-top:1px solid var(--line);margin-top:0;padding:56px 0 32px;font-size:.93rem}
.ft-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:28px;padding-bottom:28px;border-bottom:1px solid var(--line-2)}
.ft-tag{color:var(--ink-2);margin:12px 0 0;max-width:30ch}
.ft-col{display:flex;flex-direction:column;gap:8px}
.ft-col h2{font:500 .74rem var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);margin:0 0 4px}
.ft-col a{text-decoration:none;color:var(--ink)}.ft-col a:hover{text-decoration:underline;text-decoration-color:var(--cable)}
.fine{font-size:.86rem;color:var(--ink-2);max-width:92ch;margin:20px 0 10px}
.powered{font-weight:650;margin:0}

/* Responsive */
@media (max-width:1000px){
.hd-in{grid-template-columns:auto auto;row-gap:0}
.hd-nav{grid-column:1/-1;grid-row:2;justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap;margin:0 -20px;padding:0 14px 8px;scrollbar-width:none}
.hd-nav a{white-space:nowrap;padding:7px 10px}
.hd-book{justify-self:end}
.stage-body{grid-template-columns:1fr}
.stage-rack{border-right:0;border-bottom:1px solid var(--stage-line)}
.planner{grid-template-columns:1fr}
.console{grid-template-columns:1fr}
.grid5{grid-template-columns:1fr 1fr}.grid5 label:first-child{grid-column:1/-1}
.ft-grid{grid-template-columns:1fr 1fr 1fr}.ft-brand{grid-column:1/-1}
}
@media (max-width:760px){
.tiles{grid-template-columns:1fr}
.tile,.tile+.tile{padding:24px 44px 24px 0;border-left:0}
.tile-go{top:24px;bottom:auto;right:0}
.plans{grid-template-columns:1fr}
.plan+.plan{border-left:0;border-top:1px solid var(--line-2)}
.not{grid-template-columns:1fr}
.band{padding:52px 0}
}
@media (max-width:640px){
body{font-size:16px}
.shell{padding:0 16px}
.hd{position:static}
.logo-word{font-size:.98rem;font-stretch:112%}
.hd-book{padding:8px 13px;font-size:.88rem}
.hd-nav{margin:0 -16px;padding:0 6px 8px;flex-wrap:wrap;overflow:visible}
.hd-nav a{padding:6px 10px;font-size:.9rem}
.console .grid3{grid-template-columns:1fr}
.status-in{font-size:.8rem;align-items:flex-start}.status-in .led{margin-top:6px;align-self:auto}
.hero-in{padding-top:40px;text-align:left}
.hero-h{margin-left:0;font-stretch:112%}
.hero-lede{margin:0}
.chips{justify-content:flex-start}
.chip{flex:1 1 100%;justify-content:flex-start}
.price-line{border-radius:14px}
.stage{border-radius:14px}
.stage-rack{padding:24px 10px}
.stage-read{padding:22px 16px 24px}
.stage-m{margin-left:0;width:100%}
.meters{grid-template-columns:repeat(2,minmax(0,1fr))}
.meter dd{font-size:1.6rem}
.phead{padding:28px 0 20px}
.phead-c{text-align:left}
.panel,.readout{padding:18px;border-radius:14px}
.rackform{padding:18px}
.mob-only{display:block}
.devs thead{display:none}.devs tr{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:10px 0;border-bottom:1px solid var(--line)}
.devs td:first-child{grid-column:1/-1;width:auto}.devs td{padding:0}
.devs td[data-label]::before{content:attr(data-label);display:block;font:500 .7rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);margin-bottom:2px}
.devs input{padding:8px}
.linkbox .row{flex-wrap:wrap}
.sum th{width:40%}
.ft-grid{grid-template-columns:1fr 1fr}
.plan-head,.plan ul{padding-left:20px;padding-right:20px}.free-box{margin:12px 20px 0}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{
.hd,.ft,.noprint,.skip,.price-line,.actions,.status{display:none!important}
body{background:#fff;font-size:12pt}
.shell{max-width:none;padding:0}.pad{padding:0}
.planner{grid-template-columns:300px 1fr}.rackform{display:none}
.plan-out{background:#fff;box-shadow:none;padding:0}
.elev .frame{fill:#fff;stroke:#000}.elev .slot{fill:#fff;stroke:#bbb}.elev .un{fill:#000}
.elev .dev rect{fill:#e6e6e6!important;stroke:#000}.elev .dev text{fill:#000}.elev .led{fill:#000}
.flag{background:#fff}
a{text-decoration:none}
}
/* ---------- v1.2.0: AdEngine banner (adengine.us) ----------
   One labelled slot between the main content and the footer, on public pages only (the controllers opt in). The label and
   the reserved height are on the <ins>, so when tag.js (or ae-size.js) hides a slot it cannot fill, the label and the space
   go with it. 110px = 16px label + 4px gap + 90px banner; 270px on phones (300x250). On wider screens every page with the slot
   already ends with 48px or more of padding, and the footer has no top margin, so the slot keeps 48px below it only. display stays in
   this file and is never !important: tag.js hides a slot with style.display='none'. */
.ae-slot{padding:0 20px}
.ae-slot ins.adengine{display:block;max-width:728px;min-height:110px;margin:0 auto 48px;text-align:center;text-decoration:none}
.ae-slot ins.adengine::before{content:"Advertisement";display:block;margin-bottom:4px;font:500 11px/16px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.ae-slot ins.adengine a{display:inline-block;vertical-align:top}
@media (max-width:767px){.ae-slot{padding:0 16px}.ae-slot ins.adengine{max-width:300px;min-height:270px}}
/* at 640px and narrower the site's .shell rule zeroes the vertical padding of .shell sections (pad, console), so a page
   that ends with one gets 32px above the label; pages ending with a band keep the band's own padding */
@media (max-width:640px){main:has(> .shell:last-child) + .ae-slot ins.adengine{margin-top:32px}}
/* a slot that stays empty (no ad, or tag.js blocked) drops its labelled landmark too, not only the <ins> */
.ae-slot:has(> ins.adengine[style*="none"]){display:none}
@media print{.ae-slot{display:none}}
