/* HastingsOne v1.1: "the balance" design system. See F:\Clients\hastingsone.com\DESIGN.md.
   Graphite + signal orange, Instrument Serif (display) + Instrument Sans (text, tabular figures), 2px corners, hairline rules. */
@font-face{font-family:"Instrument Sans";src:url(/assets/fonts/instrument-sans-var.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url(/assets/fonts/instrument-serif-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Instrument Serif";src:url(/assets/fonts/instrument-serif-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
:root{
--g0:#111214;--g1:#16171a;--g2:#1f2125;--g3:#2c2f34;--gl:#3b3f46;--on-dark:#ecebe6;--on-dark-2:#a9abb0;
--paper:#f3f2ee;--panel:#fff;--ink:#141518;--ink-2:#55585f;--rule:#d6d5cf;--rule-2:#e7e6e1;
--signal:#ff5b1f;--signal-ink:#b23c0c;--signal-soft:#fff0e8;--ok:#1d6b45;--err:#b3261e;
--fg:var(--ink);--fg2:var(--ink-2);--line:var(--rule);--track:var(--rule-2);--bar:var(--ink);--focus:var(--signal-ink);--miss:var(--err);
--serif:"Instrument Serif","Iowan Old Style",Georgia,serif;
--sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
--mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,"Liberation Mono",monospace;
--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:72px;--s9:112px}
.hd,.hero,.ft,.spec-plus,.result{--fg:var(--on-dark);--fg2:var(--on-dark-2);--line:var(--gl);--track:var(--gl);--bar:var(--on-dark);--focus:var(--signal);--miss:#ff9b8a}
.closer{--focus:var(--ink)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16.5px/1.6 var(--sans);font-feature-settings:"tnum" 0;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration-color:var(--signal);text-decoration-thickness:1.5px;text-underline-offset:3px}
a:hover{text-decoration-thickness:3px}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
h1,h2,h3{line-height:1.15;margin:0}
h1{font:400 clamp(2.4rem,5.4vw,3.9rem)/1.02 var(--serif);letter-spacing:-.012em;margin:0 0 var(--s4)}
h2{font-size:1.2rem;font-weight:600;letter-spacing:-.005em;margin:var(--s7) 0 var(--s3)}
h3{font-size:1.05rem;font-weight:600}
i{font-family:var(--serif);font-style:italic;font-weight:400}
.frame,.wrap{max-width:1240px;margin:0 auto;padding-left:clamp(16px,4vw,40px);padding-right:clamp(16px,4vw,40px)}
.narrow{max-width:820px}
.pad{padding-top:var(--s7);padding-bottom:var(--s8)}
.skip{position:absolute;left:-999px;top:8px;z-index:9;background:var(--panel);color:var(--ink);padding:10px 14px;font-weight:600}.skip:focus{left:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.eyebrow{display:flex;align-items:center;gap:12px;margin:0 0 var(--s4);font-size:.75rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--signal-ink)}
.eyebrow::before{content:"";width:28px;height:1.5px;background:currentColor}
.eyebrow-dark{color:var(--signal);justify-content:center}
.eyebrow-dark::after{content:"";width:28px;height:1.5px;background:currentColor}
.disp{font:400 clamp(2rem,4.2vw,3.3rem)/1.04 var(--serif);letter-spacing:-.01em;margin:0 0 var(--s4)}
.disp i{color:var(--signal-ink)}
.disp-s{font-size:clamp(1.8rem,3vw,2.4rem)}
.lede{font-size:1.15rem;color:var(--ink-2);max-width:60ch;margin:0}
.small{font-size:.9rem;color:var(--ink-2)}
.dim{color:var(--ink-2)}
.arrow{font-weight:600;text-decoration:none;border-bottom:2px solid var(--signal);padding-bottom:2px}
.arrow::after{content:" \2192"}
.arrow:hover{border-bottom-width:4px}

/* header: an instrument bezel */
.hd{background:var(--g1);color:var(--on-dark)}
.hd-in{display:flex;align-items:center;justify-content:space-between;gap:var(--s3) var(--s6);min-height:72px;flex-wrap:wrap;padding-top:var(--s2);padding-bottom:var(--s2)}
.wordmark{display:flex;align-items:center;gap:10px;color:var(--on-dark);text-decoration:none;font-size:1.3rem;font-weight:600;letter-spacing:-.01em}
.wordmark i{color:var(--signal);font-size:1.3em;margin-left:1px}
.beam{width:36px;height:22px}
.hd-nav{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s6)}
.hd-nav a{color:var(--on-dark);text-decoration:none;font-size:.95rem;font-weight:500;padding:var(--s2) 0;border-bottom:2px solid transparent}
.hd-nav a:hover{border-bottom-color:var(--signal)}
.hd-nav small{font-size:.68rem;font-weight:600;color:var(--signal);margin-right:7px;letter-spacing:.06em;font-variant-numeric:tabular-nums;vertical-align:2px}
.status p{margin:0;padding:10px 0 12px;border-top:1px dashed var(--gl);font-size:.84rem;color:var(--on-dark-2)}
.status strong{color:var(--on-dark);font-weight:600}
.status a{color:var(--on-dark);font-weight:600}
.status-led{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 3px rgba(255,91,31,.22);margin-right:9px;vertical-align:1px}
.status-k{font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--signal);margin-right:8px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 22px;border:1.5px solid var(--ink);border-radius:2px;background:transparent;color:var(--ink);font:600 .97rem/1.2 var(--sans);letter-spacing:.005em;text-decoration:none;cursor:pointer}
.btn:hover{background:var(--ink);color:var(--paper)}
.btn-main{background:var(--ink);color:#fff}
.btn-main:hover{background:#000;box-shadow:inset 0 -3px 0 var(--signal)}
.btn-signal{background:var(--signal);border-color:var(--signal);color:var(--ink)}
.btn-signal:hover{background:#ff7a47;border-color:#ff7a47;color:var(--ink)}
.btn-line{border-color:var(--on-dark-2);color:var(--on-dark)}
.btn-line:hover{background:var(--g2);border-color:var(--on-dark);color:var(--on-dark)}
.btn-ghost{border-color:transparent;text-decoration:underline;text-decoration-color:var(--signal);padding:0 8px}
.btn-ghost:hover{background:transparent;color:var(--ink);text-decoration-thickness:3px}
.btn-danger{background:var(--err);border-color:var(--err);color:#fff}
.btn-danger:hover{background:#8e1d17;color:#fff}
.linkish{background:none;border:0;padding:0;font:inherit;color:inherit;text-decoration:underline;text-decoration-color:var(--signal);text-underline-offset:3px;cursor:pointer}
.danger{color:var(--err)}
.cta{display:flex;flex-wrap:wrap;gap:var(--s3);margin:var(--s6) 0 var(--s4)}

/* home: hero */
.hero{background:var(--g1);color:var(--on-dark);text-align:center;overflow:hidden}
.hero-in{padding-top:var(--s8);padding-bottom:var(--s5)}
.hero-h{font:400 clamp(3.4rem,10.5vw,8.6rem)/.9 var(--serif);letter-spacing:-.025em;margin:0 0 var(--s5)}
.hero-h i{color:var(--signal)}
.hero-lede{max-width:60ch;margin:0 auto;color:var(--on-dark-2);font-size:1.15rem}
.hero .cta{justify-content:center}
.hero-small{font-size:.9rem;color:var(--on-dark-2);margin:0}
.hero-small a{color:var(--on-dark)}
.scale-art{display:block;width:100%;max-width:1000px;height:auto;margin:var(--s5) auto 0}
.sa-ruler path{stroke:var(--gl);stroke-width:1.5;fill:none}
.sa-post{stroke:var(--on-dark-2);stroke-width:3;fill:none;stroke-linecap:round}
.sa-beam{stroke:var(--on-dark);stroke-width:7;stroke-linecap:round}
.sa-pivot{fill:var(--signal)}
.sa-cord{stroke:var(--on-dark-2);stroke-width:1.5;fill:none}
.sa-pan{fill:var(--g3);stroke:var(--on-dark);stroke-width:2}
.sa-pan-b{fill:none}
.sa-big{font:400 64px var(--serif);fill:var(--on-dark)}
.sa-dim{fill:var(--on-dark-2)}
.sa-lab{font:600 24px var(--sans);letter-spacing:.16em;text-transform:uppercase;fill:var(--signal)}

/* home: worked-example readout */
.readout-sec{padding:var(--s9) 0;border-bottom:1px solid var(--rule)}
.readout-in{display:grid;grid-template-columns:5fr 7fr;gap:var(--s8);align-items:center}
.ro-note{font-size:1.1rem;color:var(--ink-2);margin:0 0 var(--s5)}
.ro-note strong{color:var(--ink)}
.ro-panel{background:var(--panel);border:1px solid var(--rule);padding:var(--s6) var(--s6) var(--s5);box-shadow:0 1px 0 var(--rule),0 24px 48px -28px rgba(20,21,24,.35)}
.ro-scale{display:flex;justify-content:space-between;margin:0 calc(4.5rem + 16px) var(--s2) calc(12rem + 16px);font-size:.72rem;color:var(--ink-2);font-variant-numeric:tabular-nums;border-bottom:1px solid var(--rule);padding-bottom:4px}

/* ranking (home readout, decide result, printable copy) */
.rank{list-style:none;padding:0;margin:var(--s3) 0;counter-reset:r}
.rank li{display:grid;grid-template-columns:minmax(0,9rem) minmax(60px,1fr) 4.5rem;gap:var(--s2) 16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);counter-increment:r;color:var(--fg)}
.rank li:last-child{border-bottom:0}
.rank li span::before{content:counter(r,decimal-leading-zero);display:inline-block;width:2.1em;font-size:.75rem;font-weight:600;color:var(--fg2);font-variant-numeric:tabular-nums}
.rank li span{font-weight:500}
.rank li b{font:600 1.35rem var(--sans);font-variant-numeric:tabular-nums;text-align:right}
.rank li em{display:block;font-style:normal;font-size:.8rem;color:var(--miss);margin-left:2.6em}
.rank li.out span,.rank li.out b{color:var(--fg2)}
.rank li.out b{text-decoration:line-through;text-decoration-thickness:2px}
.rank li.win span{font-weight:700}
.rank li.win b{color:var(--fg)}
.rank-big li{grid-template-columns:minmax(0,14rem) minmax(80px,1fr) 4.5rem}
.rank-ro li{grid-template-columns:minmax(0,12rem) minmax(60px,1fr) 4.5rem}
meter{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:10px;border:0;border-radius:0;background:var(--track)}
meter::-webkit-meter-bar{background:var(--track);border:0;border-radius:0;height:10px}
meter::-webkit-meter-optimum-value{background:var(--bar);border-radius:0}
meter::-moz-meter-bar{background:var(--bar);border-radius:0}
.rank li.win meter::-webkit-meter-optimum-value{background:var(--signal)}
.rank li.win meter::-moz-meter-bar{background:var(--signal)}
.rank li.out meter::-webkit-meter-optimum-value{background:repeating-linear-gradient(135deg,var(--fg2) 0 2px,transparent 2px 6px)}
.rank li.out meter::-moz-meter-bar{background:repeating-linear-gradient(135deg,var(--fg2) 0 2px,transparent 2px 6px)}

/* home: three features as an editorial row */
.feats{display:grid;grid-template-columns:repeat(3,1fr);padding-top:var(--s9);padding-bottom:var(--s9)}
.feat{padding:0 var(--s6) 0 0;border-top:1.5px solid var(--ink)}
.feat+.feat{padding-left:var(--s6);border-left:1px solid var(--rule)}
.feat-n{font-size:.78rem;font-weight:600;color:var(--signal-ink);letter-spacing:.1em;margin:var(--s4) 0 var(--s5);font-variant-numeric:tabular-nums}
.feat-art{width:120px;height:80px;display:block;margin-bottom:var(--s5)}
.fa-line{fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fa-signal{stroke:var(--signal);stroke-width:3}
.fa-dash{stroke:var(--ink-2);stroke-dasharray:4 5;stroke-width:1.5}
.fa-ghost{opacity:0}
.fa-dot{fill:var(--ink)}
.fa-x{fill:none;stroke:var(--ink-2);stroke-width:2}
.feat h2{font:400 2rem/1.08 var(--serif);margin:0 0 var(--s3)}
.feat p{margin:0;color:var(--ink-2);max-width:40ch}

/* prices: a spec sheet */
.prices-sec{background:var(--panel);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:var(--s9) 0}
.sec-head{margin-bottom:var(--s6)}
.spec{display:grid;grid-template-columns:repeat(2,1fr);border:1.5px solid var(--ink);margin:var(--s5) 0;background:var(--panel)}
.spec-3{grid-template-columns:repeat(3,1fr)}
.spec-col{padding:var(--s6);color:var(--fg)}
.spec-col+.spec-col{border-left:1.5px solid var(--ink)}
.spec-plus{background:var(--g1);color:var(--on-dark)}
.spec-plus+.spec-plus{border-left-color:var(--gl)}
.spec h2,.spec h3{font-size:.8rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin:0 0 var(--s4);color:var(--fg)}
.amount{font:400 4rem/1 var(--serif);margin:0 0 var(--s2);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.amount span{font:500 1rem var(--sans);color:var(--fg2);letter-spacing:0}
.alt{margin:0 0 var(--s3);color:var(--fg2)}
.alt strong{color:var(--fg)}
.spec ul{list-style:none;padding:0;margin:var(--s5) 0 0}
.spec li{padding:11px 0 11px 22px;border-top:1px solid var(--line);position:relative}
.spec li::before{content:"";position:absolute;left:0;top:19px;width:8px;height:8px;background:var(--signal)}
.free-box{margin:var(--s5) 0 0;padding:12px 14px;border:1px solid var(--signal);font-weight:600;font-size:.93rem;color:var(--fg)}
.free-box::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--signal);margin-right:10px;vertical-align:1px}
.free{color:var(--signal-ink);font-weight:600}
.split{display:grid;grid-template-columns:1fr 2fr;gap:var(--s7);margin-top:var(--s8);padding-top:var(--s6);border-top:1.5px solid var(--ink)}
.ticks{list-style:none;padding:0;margin:0}
.ticks li{padding:14px 0 14px 34px;border-bottom:1px solid var(--rule);position:relative;max-width:68ch}
.ticks li::before{content:"";position:absolute;left:0;top:26px;width:20px;height:1.5px;background:var(--signal-ink)}

/* home: closing band */
.closer{background:var(--signal);color:var(--ink)}
.closer-in{display:flex;align-items:center;justify-content:space-between;gap:var(--s5) var(--s7);flex-wrap:wrap;padding-top:var(--s8);padding-bottom:var(--s8)}
.closer .disp{margin:0;max-width:18ch}
.closer .disp i{color:var(--ink)}
.closer .cta{margin:0}
.closer .btn-signal{background:var(--ink);border-color:var(--ink);color:#fff}
.closer .btn-signal:hover{background:#000}
.closer .btn-line{border-color:var(--ink);color:var(--ink)}
.closer .btn-line:hover{background:var(--ink);color:var(--signal)}

/* inner pages */
.page-head{padding:var(--s8) 0 var(--s6);border-bottom:1px solid var(--rule);background:var(--panel)}
.page-head .disp{font-size:clamp(2.6rem,6vw,4.4rem)}
.prose{font-size:1.06rem}
.prose p,.prose li{max-width:66ch}
.prose h2{padding-top:var(--s5);border-top:1px solid var(--rule)}
.prose ul{padding-left:1.1em}
.prose li{margin:var(--s2) 0}
.plain{padding-left:1.1em}
.price-line{display:block;border:1px solid var(--rule);border-left:3px solid var(--signal);background:var(--panel);padding:10px 14px;margin:var(--s4) 0;font-size:.93rem}
.tag{display:inline-block;font-size:.66rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;background:var(--ink);color:#fff;padding:3px 7px;border-radius:2px;vertical-align:middle}
.note{padding:14px 18px;margin:var(--s4) 0;border:1px solid var(--rule);border-left:3px solid var(--ink);background:var(--panel)}
.note p{margin:.2em 0}.note ul{margin:.3em 0}
.note-err{border-color:#e9b9b5;border-left-color:var(--err);color:#8e1d17;background:#fdf1f0}
.note-ok{border-color:#b6d6c3;border-left-color:var(--ok);color:var(--ok);background:#f1f8f4}
.note-main{border-color:#f3c8b4;border-left-color:var(--signal);background:var(--signal-soft)}
.ok{color:var(--ok)}
.pill{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--signal-ink);color:var(--signal-ink);background:var(--signal-soft);padding:1px 7px;border-radius:2px;vertical-align:middle}
.pill-dim{background:var(--rule-2);border-color:var(--rule);color:var(--ink-2)}

/* forms and the matrix */
fieldset{border:0;border-top:1.5px solid var(--ink);padding:var(--s5) 0 var(--s2);margin:0 0 var(--s6);min-width:0}
legend{font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;padding:0 var(--s3) 0 0}
label{display:block;font-size:.9rem;font-weight:600}
input,select,textarea{display:block;width:100%;margin-top:6px;font:16px var(--sans);padding:10px 12px;border:1px solid #8d8f94;border-radius:2px;background:#fff;color:var(--ink);min-width:0}
input:focus,select:focus,textarea:focus{border-color:var(--ink)}
input::placeholder,textarea::placeholder{color:#8a8c92}
.hint{display:block;font-weight:400;font-size:.8rem;color:var(--ink-2);margin-top:4px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4) var(--s5)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s4) var(--s5)}
.span2{grid-column:1/-1}
.actions{display:flex;flex-wrap:wrap;gap:var(--s3);margin:var(--s4) 0}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin:8px 0!important}
.check input{width:auto;margin-top:5px;flex:none}
.checks{margin-top:8px}
.gridwrap{position:relative;overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;background:var(--panel);border:1px solid var(--rule);padding:var(--s2)}
.matrix{border-collapse:separate;border-spacing:6px;min-width:100%}
.matrix th,.matrix td{vertical-align:top;text-align:left;padding:0}
.matrix thead th.ch{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-2);vertical-align:bottom;padding-bottom:10px}
.matrix th.ch{min-width:230px;width:270px}
.matrix tbody th.ch{padding:var(--s2) var(--s2) var(--s2) 0;border-right:1px solid var(--rule-2)}
.matrix .oc{min-width:96px}
.matrix thead .oc input{font-weight:700;border:0;border-bottom:3px solid var(--ink);background:var(--paper);text-align:center}
.matrix input,.matrix select{margin-top:0}
.matrix tbody td{padding-top:var(--s2)}
.cmeta{display:flex;gap:6px;align-items:center;margin-top:6px}
.cmeta select{flex:1 1 auto;font-size:.85rem;padding:7px 6px}
.cmeta .must{display:flex;align-items:center;gap:5px;font-size:.78rem;font-weight:600;white-space:nowrap}
.cmeta .must input{width:auto;margin:0;accent-color:var(--signal-ink)}
.cmeta input.min{width:50px;padding:7px 4px;text-align:center}
.matrix input.score{text-align:center;font-size:1.15rem;font-weight:600;font-variant-numeric:tabular-nums;min-height:46px}
.result{background:var(--g1);color:var(--on-dark);padding:var(--s6) var(--s6) var(--s5);margin:var(--s4) 0 var(--s7);border-top:4px solid var(--signal)}
.result .small{color:var(--on-dark-2)}
.verdict{font:400 clamp(1.7rem,3.4vw,2.5rem)/1.1 var(--serif);margin:0 0 var(--s2);color:var(--fg)}
.q{margin:0 0 var(--s3);color:var(--fg2)}
.h-solid{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin:var(--s6) 0 var(--s2);color:var(--fg)}
.solid{list-style:none;padding:0;margin:0}
.solid li{padding:10px 0 10px 22px;border-top:1px solid var(--line);position:relative;color:var(--fg)}
.solid li::before{content:"";position:absolute;left:0;top:19px;width:10px;height:10px;border:2px solid var(--signal);border-radius:50%}
.solid li.ok::before{background:var(--signal)}
.result .solid li.ok{color:var(--on-dark)}
.toolbar{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;margin-bottom:var(--s4)}
.inline{display:inline}

/* printable copy */
.doc{background:#fff;border:1px solid var(--rule);padding:56px 64px;max-width:880px;margin:var(--s2) 0 var(--s6);box-shadow:0 30px 60px -40px rgba(20,21,24,.45)}
.doc-kicker{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--signal-ink);margin:0}
.doc-title{margin:var(--s2) 0 var(--s5)}
.doc h2{font-size:.78rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.doc-t{border-collapse:collapse;margin:var(--s2) 0;min-width:100%}
.doc-t th,.doc-t td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--rule);vertical-align:top}
.doc-t thead th{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;border-bottom:1.5px solid var(--ink)}
.doc-t td.miss{color:var(--err);font-weight:700}
.doc .gridwrap{background:transparent;border:0;padding:0}
.num{text-align:right!important;font-variant-numeric:tabular-nums}
.doc-notes{margin-top:var(--s5);border-top:1.5px solid var(--ink);padding-top:var(--s2)}
.doc-notes h3{font-size:.95rem;margin:var(--s4) 0 4px}.doc-notes p{margin:4px 0}
.pre{white-space:pre-line}
.doc-made{margin-top:var(--s6);font-size:.78rem;letter-spacing:.06em;color:var(--ink-2);text-align:center}
.notes{background:var(--panel);border:1px solid var(--rule);padding:var(--s2) var(--s5) var(--s5);max-width:880px}
.notes h2{margin-top:var(--s4)}
.danger-line{margin-top:var(--s4)}

/* journal */
.keybox{background:var(--panel);border:1.5px solid var(--ink);padding:var(--s4) var(--s5);margin:var(--s4) 0}
.keyrow{display:flex;gap:8px;margin-top:8px}.keyrow input{margin:0;font-family:var(--mono);font-size:.9rem}
.jhead{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);flex-wrap:wrap;margin:var(--s4) 0}
.jlist{width:100%;border-collapse:collapse;background:var(--panel);margin:var(--s3) 0;border:1px solid var(--rule)}
.jlist th,.jlist td{padding:12px 14px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top}
.jlist thead th{font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;border-bottom:1.5px solid var(--ink)}
.jlist td:first-child{font-variant-numeric:tabular-nums;color:var(--ink-2)}
.jlist .sub{display:block;font-size:.82rem;color:var(--ink-2)}

/* footer */
.ft{background:var(--g0);color:var(--on-dark-2);margin-top:0}
.ft-in{display:grid;grid-template-columns:1fr 1.4fr;gap:var(--s6) var(--s7);padding-top:var(--s8);padding-bottom:var(--s6)}
.ft-say{font:400 clamp(2.4rem,4.4vw,3.6rem)/.95 var(--serif);color:var(--on-dark);margin:0 0 var(--s5);letter-spacing:-.02em}
.ft-say i{color:var(--signal)}
.powered{font-weight:600;color:var(--on-dark);margin:0;font-size:.92rem}
.powered a{color:var(--on-dark)}
.ft-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s5)}
.ft-cols a{display:block;color:var(--on-dark);text-decoration:none;padding:6px 0;font-size:.95rem}
.ft-cols a:hover{text-decoration:underline;text-decoration-color:var(--signal)}
.ft-h{font-size:.7rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--on-dark-2);margin:0 0 var(--s2)}
.fine{grid-column:1/-1;border-top:1px solid var(--gl);padding-top:var(--s5);margin:0;font-size:.84rem;max-width:none}

@media (max-width:960px){
.readout-in{grid-template-columns:1fr;gap:var(--s6)}
.feats{grid-template-columns:1fr;gap:var(--s7)}
.feat,.feat+.feat{padding:0;border-left:0}
.spec,.spec-3{grid-template-columns:1fr}
.spec-col+.spec-col,.spec-plus+.spec-plus{border-left:0;border-top:1.5px solid var(--ink)}
.spec-plus+.spec-plus{border-top-color:var(--gl)}
.split{grid-template-columns:1fr;gap:var(--s3)}
.ft-in{grid-template-columns:1fr}
.grid3{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
body{font-size:16px}
.hd-in{min-height:0;padding-top:14px;padding-bottom:6px;gap:6px}
.hd-nav{gap:2px 18px;width:100%}
.hd-nav small{display:none}
.hd-nav a{font-size:.9rem}
.status p{font-size:.8rem}
.hero-in{padding-top:var(--s7)}
.scale-art{width:128%;max-width:none;margin-left:-14%}
.eyebrow{letter-spacing:.12em}
.hero-lede{font-size:1.04rem}
.hero .cta .btn{flex:1 1 100%}
.readout-sec,.prices-sec,.feats{padding-top:var(--s8);padding-bottom:var(--s8)}
.ro-panel{padding:var(--s4)}
.ro-scale{display:none}
.rank li,.rank-big li{grid-template-columns:1fr auto;gap:6px 12px}
.rank li meter{grid-column:1/-1;grid-row:2}
.spec-col{padding:var(--s5) var(--s4)}
.amount{font-size:3.2rem}
.grid2,.grid3{grid-template-columns:1fr}
.result{padding:var(--s5) var(--s4) var(--s4)}
.doc{padding:24px 16px}
.matrix th.ch{min-width:190px;width:200px}
.matrix .oc{min-width:76px}
.cmeta{flex-wrap:wrap}
.cmeta label:first-child{flex:1 1 100%}
.jlist td:nth-child(3),.jlist th:nth-child(3){display:none}
.ft-cols{grid-template-columns:1fr 1fr}
.closer-in{padding-top:var(--s7);padding-bottom:var(--s7)}
}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media print{
.hd,.ft,.status,.noprint,.toolbar,.skip{display:none!important}
body{background:#fff;color:#000}
.wrap,.frame{max-width:none;padding:0}
.pad{padding:0}
.doc{border:0;box-shadow:none;padding:0;max-width:none;margin:0}
.result{background:#fff;color:#000;--fg:#000;--fg2:#444;--line:#ccc;--track:#eee;--bar:#000;--miss:#b3261e}
a{text-decoration:none}
.rank meter{display:none}
.gridwrap{overflow:visible;border:0;padding:0}
}

/* ---------- v1.2.0: AdEngine banner (adengine.us) ----------
   One labelled slot between the main content and the footer, on the home page, the empty or example matrix, the guide,
   pricing and about only (the controllers opt in). The label, the reserved height and the space around it sit 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 and the page
   closes up as before. 110px = 16px label + 4px gap + 90px banner; 270px on phones (300x250). Pages end with .pad (72px
   bottom padding) and the dark footer has no top margin; the home page ends with the orange closer band, so the slot takes
   its own space above it there. display stays in this file and is never !important: tag.js hides a slot with
   style.display='none'. Label: the eyebrow face in --ink-2 (6.4:1 on paper). */
.ae-slot{padding:0 clamp(16px,4vw,40px)}
.ae-slot ins.adengine{display:block;max-width:728px;min-height:110px;margin:0 auto var(--s7);text-align:center;text-decoration:none}
.ae-slot ins.adengine::before{content:"Advertisement";display:block;margin-bottom:4px;font:600 11px/16px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2)}
.ae-slot ins.adengine a{display:inline-block;vertical-align:top}
.ae-slot:has(> ins.adengine[style*="none"]){display:none}
main:has(> .closer:last-child)+.ae-slot ins.adengine{margin-top:var(--s7)}
@media (max-width:767px){.ae-slot ins.adengine{max-width:300px;min-height:270px;margin-bottom:var(--s6)}}
@media print{.ae-slot{display:none!important}}
