/* Bran Marketing review — "The Blueprint". Editorial-industrial: paper, hairlines, dimension lines, oversized numerals.
   Palette from getbran.com (brand.json) extended: ink #1B1B1E, navy #1A1E41, indigo #343C82, lavender #979DD7 (on dark only),
   cyan #6DD0E7 (fills / on dark only, 1.78:1 on white), link text #00738A (5.04:1 on paper), amber #E8A33D (marker only on light). */
:root{
  --ink:#1B1B1E; --ink-2:#3C3C4E; --mute:#5B5E6B;
  --navy:#1A1E41; --indigo:#343C82; --lav:#979DD7; --lav-2:#B7BBE6;
  --cyan:#6DD0E7; --link:#00738A; --amber:#E8A33D;
  --paper:#F6F5F1; --paper-2:#ECEBE5; --white:#FFFFFF;
  --hair:rgba(27,27,30,.14); --hair-2:rgba(27,27,30,.28); --hair-d:rgba(246,245,241,.16); --hair-d2:rgba(246,245,241,.34);
  --disp:"Instrument Serif",Georgia,"Times New Roman",serif;
  --text:"Inter",-apple-system,system-ui,"Segoe UI",Roboto,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --dur-fast:160ms; --dur:320ms; --dur-slow:600ms; --ease-out:cubic-bezier(.16,1,.3,1); --ease-in-out:cubic-bezier(.65,0,.35,1); --stagger:60ms;
  --gut:24px; --max:1240px; --pad:clamp(4rem,10vw,9rem); --mast-h:60px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--text);font-size:1.0625rem;line-height:1.6;overflow-wrap:break-word;-webkit-font-smoothing:antialiased;
  background-image:radial-gradient(ellipse at 50% 0%,rgba(255,255,255,.55),rgba(255,255,255,0) 60%)}
h1,h2,h3,h4{margin:0;font-weight:400;line-height:1.02;letter-spacing:-.01em}
h1,h2{font-family:var(--disp)}
h1{font-size:clamp(2.6rem,6vw,5.5rem)}
h2{font-size:clamp(2rem,4.2vw,3.4rem)}
h2+.sub,h2+.lede{margin-top:1.3rem}
h1 em,h2 em{font-style:italic;color:var(--indigo)}
h3{font-family:var(--text);font-weight:600;font-size:clamp(1.35rem,2.2vw,1.75rem);letter-spacing:-.015em;line-height:1.15}
h4{font-family:var(--text);font-weight:600;font-size:1.05rem;letter-spacing:-.01em}
p{margin:0 0 1em;max-width:68ch}
ul,ol{margin:0;padding:0}
a{color:var(--link);text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-size:0 1px;background-position:0 100%;transition:background-size var(--dur-fast) var(--ease-out),color var(--dur-fast)}
a:hover,a:focus-visible{background-size:100% 1px}
code{font-family:var(--mono);font-size:.85em;background:var(--paper-2);padding:.05em .35em;border-radius:2px}
small{font-size:.8em;color:var(--mute)}
:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:1px}
.skip{position:absolute;left:12px;top:-64px;z-index:100;background:var(--navy);color:#fff;padding:10px 16px;font-weight:500;border-radius:2px}
.skip:focus{top:12px}
.sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ----- grid ----- */
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}
.g12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gut);row-gap:1.5rem;align-items:start}
.c-3{grid-column:span 3}.c-4{grid-column:span 4}.c-5{grid-column:span 5}.c-6{grid-column:span 6}.c-7{grid-column:span 7}.c-8{grid-column:span 8}.c-9{grid-column:span 9}.c-10{grid-column:span 10}.c-12{grid-column:1/-1}
.off-5{grid-column:5/13}.off-6{grid-column:6/13}.off-8{grid-column:8/13}
@media (max-width:900px){.g12>[class*="c-"],.g12>[class*="off-"]{grid-column:1/-1}}

/* ----- type utilities ----- */
.kicker,.eyebrow,.meta,.lbl,.hint,.evidence,.disc,.spec-h,.specimen dl,.stamp,.tbl,.lc-status,.c-note,.c-count,.fic,.chip,.of,.phase .kicker,.criteria dt{font-family:var(--mono)}
.kicker{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin:0 0 .9rem;font-weight:500}
.eyebrow{font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--link);margin:0 0 1.4rem;font-weight:500}
.eyebrow .sec-no{display:inline-block;border:1px solid currentColor;padding:2px 8px;margin-right:10px;border-radius:2px}
.sub{color:var(--ink-2);font-size:1.0625rem;max-width:62ch}
.lede{font-size:1.25rem;line-height:1.5;color:var(--ink-2);max-width:60ch}
.lede b{color:var(--ink);font-weight:600}
.meta{font-size:.8125rem;color:var(--mute);display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;max-width:none;margin:1.4rem 0 0}
.meta b{color:var(--ink-2);font-weight:500}
.hint{font-size:.8125rem;color:var(--mute);line-height:1.6;max-width:none}

/* ----- masthead ----- */
.mast{position:sticky;top:0;z-index:40;background:rgba(246,245,241,.86);backdrop-filter:saturate(1.2) blur(10px);-webkit-backdrop-filter:saturate(1.2) blur(10px);border-bottom:1px solid var(--hair)}
.mast-in{max-width:var(--max);margin:0 auto;padding:0 var(--gut);height:var(--mast-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--gut)}
.mark{font-family:var(--disp);font-size:1.35rem;color:var(--ink);letter-spacing:-.01em;background:none;white-space:nowrap}
.mark:hover{color:var(--indigo)}
.mark .short{display:none}
@media (max-width:480px){.mark .full{display:none}.mark .short{display:inline}}
[id]{scroll-margin-top:calc(var(--mast-h) + 12px)}
.tag{margin:0;font-family:var(--mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);white-space:nowrap}
.snav{position:relative;display:flex;justify-content:flex-end;gap:2px}
.snav a{position:relative;font-size:.875rem;font-weight:500;color:var(--ink-2);padding:8px 12px;background:none;border-radius:2px}
.snav a:hover{color:var(--ink)}
.snav a[aria-current]{color:var(--ink)}
.snav .ind{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--indigo);transform-origin:0 50%;transition:transform var(--dur) var(--ease-out),width var(--dur) var(--ease-out);pointer-events:none}
.prog{position:absolute;left:0;right:0;bottom:-1px;height:1px;background:transparent}
.prog i{display:block;height:100%;background:var(--indigo);transform:scaleX(0);transform-origin:0 50%;will-change:transform}
@media (max-width:900px){.mast-in{grid-template-columns:1fr auto}.tag{display:none}.snav a{padding:8px 9px;font-size:.8125rem}}
@media (max-width:420px){.snav a{padding:8px 7px;font-size:.78rem}}

/* ----- hero ----- */
.hero{position:relative;overflow:hidden;padding:clamp(3.5rem,8vw,7rem) 0 clamp(3rem,7vw,6rem)}
.paper-grid{position:absolute;inset:0;width:100%;height:100%;color:var(--hair);pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,#000 0,rgba(0,0,0,.6) 38%,rgba(0,0,0,.18) 70%,transparent 100%);mask-image:linear-gradient(to bottom,#000 0,rgba(0,0,0,.6) 38%,rgba(0,0,0,.18) 70%,transparent 100%)}
.paper-grid line{stroke-dasharray:1;stroke-dashoffset:1}
.hero.in .paper-grid line{animation:draw 1.2s var(--ease-in-out) forwards}
.hero-in{position:relative;padding-top:2.2rem;padding-bottom:3.2rem}
.crop{position:absolute;width:18px;height:18px;border-color:var(--hair-2);border-style:solid;border-width:0}
.crop.tl{left:var(--gut);top:0;border-left-width:1px;border-top-width:1px}
.crop.tr{right:var(--gut);top:0;border-right-width:1px;border-top-width:1px}
.crop.bl{left:var(--gut);bottom:0;border-left-width:1px;border-bottom-width:1px}
.crop.br{right:var(--gut);bottom:0;border-right-width:1px;border-bottom-width:1px}
.hero h1{margin-top:-.4rem}
.hero .lede{margin-top:.6rem}
.specimen{grid-column:8/13;grid-row:3;align-self:stretch;position:relative;background:var(--white);border:1px solid var(--hair-2);border-radius:2px;padding:1rem 1.1rem 1.2rem;box-shadow:0 1px 0 rgba(27,27,30,.04),0 18px 40px -28px rgba(26,30,65,.35)}
.spec-h{display:flex;justify-content:space-between;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);border-bottom:1px solid var(--hair);padding-bottom:.6rem;margin:0 0 .3rem}
.specimen dl{margin:0;font-size:.8125rem;line-height:1.5}
.specimen dl>div{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:.5rem 0;border-bottom:1px dashed var(--hair)}
.specimen dl>div:last-of-type{border-bottom:0}
.specimen dt{color:var(--mute);text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;padding-top:.15em}
.specimen dd{margin:0;color:var(--ink);word-break:break-word}
.specimen dd small{display:block;color:var(--mute);font-size:.7rem}
.specimen .hit dd b{font-family:var(--disp);font-size:2.2rem;line-height:1;color:var(--indigo);font-weight:400}
.specimen .hit{background:linear-gradient(90deg,rgba(109,208,231,.18),rgba(109,208,231,0));margin:0 -1.1rem;padding-left:1.1rem;padding-right:1.1rem}
.stamp{position:absolute;right:14px;bottom:-14px;transform:rotate(-6deg);font-size:.66rem;text-transform:uppercase;letter-spacing:.14em;line-height:1.35;color:var(--indigo);border:1.5px solid var(--indigo);padding:6px 10px;border-radius:3px;background:var(--paper);opacity:.85;mix-blend-mode:multiply}
@media (max-width:900px){.specimen{grid-row:auto;margin-top:.5rem}.stamp{position:static;display:inline-block;margin-top:1rem;transform:rotate(-2deg)}}
/* word reveal */
[data-words] .w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.08em;margin-bottom:-.08em}
[data-words] .w>span{display:inline-block;transform:translateY(110%);opacity:0}
.hero.in [data-words] .w>span{animation:rise var(--dur-slow) var(--ease-out) forwards;animation-delay:calc(var(--i,0)*var(--stagger))}
[data-hero-lede],[data-hero-spec]{opacity:0}
.hero.in [data-hero-lede]{animation:fade var(--dur-slow) var(--ease-out) forwards;animation-delay:calc(200ms + var(--wn,8)*var(--stagger))}
.hero.in [data-hero-spec]{animation:slide-in var(--dur-slow) var(--ease-out) forwards;animation-delay:calc(320ms + var(--wn,8)*var(--stagger))}
@keyframes rise{to{transform:none;opacity:1}}
@keyframes fade{to{opacity:1}}
@keyframes slide-in{from{transform:translateX(28px);opacity:0}to{transform:none;opacity:1}}
@keyframes draw{to{stroke-dashoffset:0}}

/* ----- stats ----- */
.stats{padding:0 0 var(--pad);border-top:1px solid var(--hair)}
.stat-row{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--gut);padding-top:clamp(2rem,4vw,3.5rem)}
@media (max-width:900px){.stat-row{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:2.4rem}}
@media (max-width:480px){.stat-row{grid-template-columns:1fr}}
.stat .num{font-family:var(--disp);font-size:clamp(4rem,7.5vw,7.5rem);line-height:.9;letter-spacing:-.03em;margin:0;color:var(--ink);font-variant-numeric:tabular-nums}
.stat .of{font-size:.42em;color:var(--mute);letter-spacing:0;font-family:var(--mono)}
.stat .dim{display:block;width:100%;height:10px;margin:.9rem 0 .8rem;stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke;overflow:visible}
.stat .dim line{vector-effect:non-scaling-stroke}
.stat .dim line:first-child{transform-origin:0 50%;transform:scaleX(0);transition:transform var(--dur-slow) var(--ease-out) calc(var(--i,0)*var(--stagger) + 200ms)}
.stat .dim line:not(:first-child){opacity:0;transition:opacity var(--dur-fast) linear calc(var(--i,0)*var(--stagger) + 700ms)}
.in .stat .dim line:first-child{transform:none}
.in .stat .dim line:not(:first-child){opacity:1}
.stat .lbl{font-size:.8125rem;color:var(--mute);line-height:1.5;margin:0;max-width:30ch}

/* ----- reveal utility ----- */
[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}
[data-reveal].in{opacity:1;transform:none}
[data-stagger]>*{opacity:0;transform:translateY(16px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out);transition-delay:calc(var(--i,0)*var(--stagger))}
[data-stagger].in>*,.in [data-stagger]>*{opacity:1;transform:none}

/* ----- coverage table ----- */
.coverage{padding:var(--pad) 0;border-top:1px solid var(--hair)}
.coverage .side h2{margin-bottom:1rem}
.tbl{overflow-x:auto;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);background:transparent}
table{border-collapse:collapse;width:100%;font-size:.8125rem;min-width:720px}
th,td{text-align:left;padding:.75rem .7rem;border-bottom:1px solid var(--hair);vertical-align:top}
th{font-weight:500;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--mute);border-bottom:1px solid var(--hair-2)}
tbody tr:last-child td{border-bottom:0}
td:first-child{font-family:var(--text);font-weight:500;font-size:.9rem}
td small{display:block;font-family:var(--mono);font-size:.68rem;color:var(--mute);font-weight:400;margin-top:.15rem}
td.num{font-variant-numeric:tabular-nums;white-space:nowrap}
td.num small{display:inline;margin-left:.3rem}
tr.hot td{background:rgba(232,163,61,.09)}
tr.hot td b{color:var(--ink)}
.tbl-wrap .meta{margin-top:1rem}

/* ----- plates ----- */
.plates{border-top:1px solid var(--hair)}
.plates-head{padding:var(--pad) var(--gut) clamp(2rem,4vw,3rem)}
.plate{padding:clamp(3.5rem,7vw,6rem) 0;position:relative}
.plate+.plate{border-top:1px solid var(--hair)}
.plate--navy{background:var(--navy);color:var(--paper)}
.plate--navy+.plate,.plate+.plate--navy{border-top:0}
.plate-no{position:sticky;top:calc(var(--mast-h) + 2.5rem);align-self:start}
.plate-num{display:block;font-family:var(--disp);font-size:clamp(5rem,12vw,11rem);line-height:.8;letter-spacing:-.04em;color:var(--indigo);opacity:.9;margin:-.05em 0 .5rem -.04em}
.plate--navy .plate-num{color:var(--cyan)}
.plate--navy .kicker{color:var(--lav)}
.plate-body{max-width:40rem}
.plate-body h3{margin-bottom:1.1rem}
.plate-body h3::before{content:"";display:block;width:100%;height:1px;background:var(--hair-2);transform:scaleX(0);transform-origin:0 50%;transition:transform var(--dur-slow) var(--ease-in-out) 80ms;margin-bottom:1.3rem}
.plate--navy .plate-body h3::before{background:var(--hair-d2)}
.plate-body.in h3::before{transform:none}
.plate--navy h3{color:#fff}
.finding{color:var(--ink-2);max-width:none}
.plate--navy .finding{color:var(--lav-2)}
.plate--navy a{color:var(--cyan)}
.fix{display:grid;grid-template-columns:14px 1fr;gap:14px;margin:1.6rem 0 1.5rem;padding:1.1rem 1.2rem 1.1rem 1rem;border-left:1px solid var(--hair-2);position:relative}
.plate--navy .fix{border-left-color:var(--hair-d2)}
.fix .marker{width:10px;height:10px;margin-top:.45em;background:var(--amber);border-radius:1px;transform:rotate(45deg);position:relative}
.fix .marker::after{content:"";position:absolute;inset:-6px;border:1px solid var(--amber);border-radius:2px;opacity:0;transform:scale(.6)}
.in .fix .marker::after{animation:ping 900ms var(--ease-out) 1 forwards;animation-delay:calc(3*var(--stagger) + 300ms)}
@keyframes ping{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(1.5)}}
.fix p{margin:0;max-width:none;color:var(--ink)}
.plate--navy .fix p{color:var(--paper)}
.fix b{display:block;font-family:var(--mono);font-weight:500;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin-bottom:.4rem}
.plate--navy .fix b{color:var(--amber)}
.evidence{list-style:none;font-size:.8125rem;border-top:1px solid var(--hair)}
.plate--navy .evidence{border-top-color:var(--hair-d)}
.evidence li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--hair);align-items:baseline}
.plate--navy .evidence li{border-bottom-color:var(--hair-d)}
.evidence li{opacity:0;transform:translateX(-10px);transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out);transition-delay:calc(4*var(--stagger) + var(--j,0)*var(--stagger))}
.evidence li:nth-child(2){--j:1}.evidence li:nth-child(3){--j:2}.evidence li:nth-child(4){--j:3}
.in .evidence li{opacity:1;transform:none}
.evidence li a{min-width:0;overflow-wrap:anywhere}
.evidence li span{color:var(--mute);text-align:right;white-space:nowrap}
.plate--navy .evidence li span{color:var(--lav)}
@media (max-width:640px){.evidence li{grid-template-columns:1fr;gap:.15rem}.evidence li span{text-align:left;white-space:normal}}
@media (max-width:900px){.plate-no{position:static;display:flex;align-items:baseline;gap:1rem}.plate-num{font-size:3.4rem;margin:0}.plate-no .kicker{margin:0}}
.method{padding:clamp(3rem,6vw,5rem) var(--gut) var(--pad);border-top:1px solid var(--hair)}
.method p:not(.kicker){color:var(--ink-2);font-size:.95rem;max-width:80ch}

/* ----- prototype ----- */
.proto{background:var(--paper-2);padding:var(--pad) 0;border-top:1px solid var(--hair)}
.proto-intro{margin-bottom:clamp(2rem,4vw,3.5rem)}
.proto .sub b{color:var(--ink)}
.wiring{margin:0;align-self:center}
.wiring svg{width:100%;height:auto;display:block;font-family:var(--mono);font-size:12px;fill:var(--ink)}
.wiring .box rect{fill:var(--white);stroke:var(--ink);stroke-width:1}
.wiring text{font-size:12px;font-weight:500}
.wiring text.s{font-size:9.5px;fill:var(--mute);font-weight:400}
.wiring .wire path{fill:none;stroke:var(--indigo);stroke-width:1.2}
.wiring .lbl text{font-size:9.5px;fill:var(--indigo)}
.draw rect,.draw .wire path{stroke-dasharray:1;stroke-dashoffset:1}
.draw text{opacity:0;transition:opacity var(--dur) linear .55s}
.draw.in rect{animation:draw .9s var(--ease-in-out) forwards}
.draw.in .wire path{animation:draw .8s var(--ease-in-out) .35s forwards}
.draw.in text{opacity:1}
.wiring figcaption{font-family:var(--mono);font-size:.75rem;color:var(--mute);margin-top:.6rem}
.console{background:var(--white);border:1px solid var(--hair-2);border-radius:3px;box-shadow:0 30px 60px -40px rgba(26,30,65,.35)}
.console-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.2rem;padding:.9rem 1.2rem;background:var(--navy);color:var(--paper);border-radius:3px 3px 0 0}
.c-title{margin:0;font-family:var(--text);font-weight:600;font-size:.95rem;letter-spacing:-.01em}
.fic{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--navy);background:var(--cyan);padding:3px 9px;border-radius:2px;font-weight:500}
.c-note{font-size:.72rem;color:var(--lav)}
.c-count{margin-left:auto;font-size:.75rem;color:var(--lav-2);font-variant-numeric:tabular-nums}
.console-search{display:flex;gap:.8rem 1rem;flex-wrap:wrap;align-items:flex-end;padding:1rem 1.2rem;border-bottom:1px solid var(--hair)}
.console-search>div{flex:1 1 280px}
.console-search label{display:block;font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin-bottom:.4rem}
.console-search input{font:inherit;font-size:.95rem;width:100%;padding:.6rem .8rem;border:1px solid var(--hair-2);border-radius:2px;background:var(--paper);color:var(--ink);transition:border-color var(--dur-fast)}
.console-search input:focus{border-color:var(--link);outline-offset:1px}
@media (max-width:600px){.console-search .btn{width:100%;justify-content:center}}
.btn{appearance:none;cursor:pointer;font:inherit;font-weight:500;font-size:.875rem;padding:.65rem 1.1rem;border-radius:2px;border:1px solid var(--ink);background:var(--ink);color:#fff;transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast),transform var(--dur-fast)}
.btn:hover{background:var(--indigo);border-color:var(--indigo)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--paper-2)}
.console-grid{display:grid;grid-template-columns:280px minmax(0,1fr)}
@media (max-width:900px){.console-grid{grid-template-columns:1fr}}
.rail{padding:1rem;border-right:1px solid var(--hair);display:flex;flex-direction:column;gap:.5rem;background:var(--paper)}
@media (max-width:900px){.rail{border-right:0;border-bottom:1px solid var(--hair)}}
.facet{border:1px solid var(--hair);border-radius:2px;background:var(--white);padding:0 .8rem}
.facet summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:.65rem 0;font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;font-weight:500;color:var(--ink)}
.facet summary::-webkit-details-marker{display:none}
.facet summary::after{content:"+";color:var(--mute);font-weight:400}
.facet[open] summary::after{content:"−"}
.facet summary .fc{margin-left:auto;text-transform:none;letter-spacing:0;color:var(--link);font-size:.68rem}
.facet fieldset{border:0;margin:0;padding:.1rem 0 .6rem}
.fo{display:flex;align-items:center;gap:.6rem;padding:.3rem 0;font-size:.875rem;cursor:pointer;color:var(--ink)}
.fo input{width:15px;height:15px;margin:0;flex:none;accent-color:var(--indigo)}
.fo .fv{flex:1}
.fo .cnt{font-family:var(--mono);font-size:.7rem;color:var(--mute);font-variant-numeric:tabular-nums}
.fo.zero{color:var(--mute)}
.results{padding:1rem 1.2rem 1.2rem;min-width:0}
.lc-status{font-size:.75rem;color:var(--mute);margin:0 0 .8rem}
.plist{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:.6rem;position:relative}
.plist>li{min-width:0}
.prod{appearance:none;cursor:pointer;width:100%;height:100%;text-align:left;background:var(--white);border:1px solid var(--hair-2);border-radius:2px;padding:.75rem .85rem;color:var(--ink);font-family:var(--text);display:flex;flex-direction:column;gap:.3rem;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),border-color var(--dur-fast),background var(--dur-fast)}
.prod:hover{transform:translateY(-2px);box-shadow:0 10px 24px -14px rgba(26,30,65,.4);border-color:var(--ink)}
.prod .pn{font-weight:600;font-size:.9rem;line-height:1.3;letter-spacing:-.01em}
.prod .pm{font-size:.75rem;color:var(--mute);line-height:1.4}
.prod .lead{font-family:var(--mono);font-size:.64rem;text-transform:uppercase;letter-spacing:.08em;padding:2px 7px;border:1px solid var(--hair-2);border-radius:2px;color:var(--mute);margin-top:auto;align-self:flex-start;white-space:nowrap}
.prod .lead.in{color:var(--link);border-color:var(--link)}
.prod[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.prod[aria-pressed="true"] .pm{color:var(--lav-2)}
.prod[aria-pressed="true"] .lead{color:var(--lav-2);border-color:var(--hair-d2)}
.prod[aria-pressed="true"] .lead.in{color:var(--cyan);border-color:var(--cyan)}
.plist .empty{grid-column:1/-1;border:1px dashed var(--hair-2);border-radius:2px;padding:1rem;color:var(--ink-2);font-size:.9rem}
.plist .flip{will-change:transform,opacity}
.console-bottom{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);border-top:1px solid var(--hair)}
@media (max-width:900px){.console-bottom{grid-template-columns:1fr}}
.detail{padding:1.4rem 1.2rem 1.6rem;min-width:0}
.detail h3{font-size:1.35rem;margin-bottom:.3rem}
.detail .rule{font-family:var(--mono);font-size:.75rem;color:var(--mute);margin-bottom:.9rem}
.detail>div>p:not(.rule):not(.hint){color:var(--ink-2);font-size:.95rem}
.detail .tbl{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.detail table{min-width:0;font-size:.875rem}
.detail caption{text-align:left;font-family:var(--mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);padding:.6rem 0}
.detail th[scope="row"]{font-family:var(--text);font-weight:500;font-size:.85rem;text-transform:none;letter-spacing:0;color:var(--ink-2);width:40%;padding-left:0}
.detail td{padding-right:0}
.detail tbody tr{opacity:0;transform:translateY(6px)}
.detail.in tbody tr,.no-motion .detail tbody tr{animation:row-in var(--dur) var(--ease-out) forwards;animation-delay:calc(var(--i,0)*40ms)}
@keyframes row-in{to{opacity:1;transform:none}}
.dl{display:inline-flex;align-items:center;gap:.5rem;margin:1rem 0 .3rem;background:var(--ink);color:#fff;font-weight:500;font-size:.875rem;padding:.65rem 1rem;border-radius:2px;transition:background var(--dur-fast),transform var(--dur-fast) var(--ease-out)}
.dl:hover{background:var(--indigo);transform:translateY(-1px)}
.dl svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.drawer{background:var(--navy);color:var(--paper);padding:1.4rem 1.2rem 1.6rem;min-width:0;border-radius:0 0 3px 0}
@media (max-width:900px){.drawer{border-radius:0 0 3px 3px}}
.drawer .kicker{color:var(--lav)}
.drawer pre{margin:0;font-family:var(--mono);font-size:.74rem;line-height:1.65;color:#E6F7FB;max-height:520px;overflow:auto;background:rgba(0,0,0,.18);border:1px solid var(--hair-d);border-radius:2px;padding:.9rem 1rem;white-space:pre-wrap;overflow-wrap:anywhere}
.drawer pre .ln{display:inline;border-radius:2px}
.drawer pre .ln.chg{animation:flash var(--dur-slow) var(--ease-out) 1 forwards}
@keyframes flash{0%{background:rgba(109,208,231,.45)}100%{background:rgba(109,208,231,0)}}
.drawer .hint{color:var(--lav-2);margin-top:.9rem}
.drawer code{background:rgba(255,255,255,.08);color:var(--cyan)}
.ships{margin-top:clamp(2.5rem,5vw,4rem)}
.ships-h{margin-bottom:.8rem}
.ships .note{background:var(--white);border:1px solid var(--hair);border-radius:2px;padding:1.2rem 1.3rem}
.ships .note h4{margin-bottom:.8rem}
.ships .note ul{list-style:none}
.ships .note li{font-size:.875rem;color:var(--ink-2);padding:.55rem 0;border-top:1px solid var(--hair)}
.ships .note li b{display:block;font-family:var(--mono);font-weight:500;font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin-bottom:.15rem}

/* ----- plan ----- */
.plan{padding:var(--pad) 0;border-top:1px solid var(--hair)}
.timeline{margin-top:clamp(2rem,4vw,3rem)}
.tl-line{display:block;width:100%;height:40px;overflow:visible}
.tl-line .rule{stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1}
.timeline.in .tl-line .rule{animation:draw 1.1s var(--ease-in-out) forwards}
.tl-line .tick{stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke;opacity:0;transition:opacity var(--dur-fast) linear .9s}
.timeline.in .tl-line .tick{opacity:1}
.phases{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--gut);margin-top:1.2rem}
.phase{position:relative;padding-top:.4rem}
.phase .dot{position:absolute;top:-1.85rem;left:-5px;width:11px;height:11px;border-radius:50%;background:var(--ink);border:1.5px solid var(--ink);transform:scale(.9);opacity:0;transition:transform var(--dur) var(--ease-out),opacity var(--dur-fast)}
.timeline.in .phase .dot{transform:scale(1);opacity:1;transition-delay:calc(1s + var(--i,0)*120ms)}
.phase:nth-child(2) .dot{background:var(--indigo);border-color:var(--indigo)}
.phase:nth-child(3) .dot{background:var(--paper);border-color:var(--indigo)}
.phase .kicker{color:var(--indigo)}
.phase h3{font-size:1.35rem;margin-bottom:.9rem}
.phase ul{list-style:none;border-top:1px solid var(--hair)}
.phase li{font-size:.9rem;color:var(--ink-2);padding:.6rem 0;border-bottom:1px solid var(--hair)}
@media (max-width:900px){
  .tl-line{display:none}
  .phases{grid-template-columns:1fr;row-gap:2rem;margin-top:.5rem;border-left:1px solid var(--ink);padding-left:1.6rem}
  .phase .dot{top:.45rem;left:calc(-1.6rem - 6px)}
}
.criteria{margin-top:clamp(3rem,6vw,5rem);border-top:1px solid var(--hair);padding-top:2rem}
.criteria dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.2rem var(--gut);margin:0}
@media (max-width:900px){.criteria dl{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.criteria dl{grid-template-columns:1fr}}
.criteria dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--link);font-weight:500;border-top:1px solid var(--ink);padding-top:.7rem}
.criteria dd{margin:.5rem 0 0;font-size:.9rem;color:var(--ink-2)}

/* ----- about ----- */
.about{padding:var(--pad) 0;border-top:1px solid var(--hair)}
.bring{list-style:none;counter-reset:b}
.bring li{position:relative;padding:1.1rem 0 1.1rem 3.2rem;border-top:1px solid var(--hair);font-size:1.0625rem;color:var(--ink-2);counter-increment:b}
.bring li:last-child{border-bottom:1px solid var(--hair)}
.bring li::before{content:counter(b,decimal-leading-zero);position:absolute;left:0;top:1.35rem;font-family:var(--mono);font-size:.75rem;color:var(--mute)}
.bring li b{color:var(--ink);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.7rem}
.chip{display:inline-block;font-family:var(--mono);font-size:.75rem;padding:.35rem .7rem;border:1px solid var(--hair-2);border-radius:999px;color:var(--ink);background:var(--white);transition:border-color var(--dur-fast),color var(--dur-fast),transform var(--dur-fast) var(--ease-out);background-image:none}
.chip:hover{border-color:var(--indigo);color:var(--indigo);transform:translateY(-1px)}
.pagenav{margin-top:clamp(3rem,6vw,5rem);display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--hair);padding-top:1.5rem}
.pagenav .kicker{margin:0}
.btn.next{background-image:none;display:inline-block}

/* ----- footer ----- */
footer{background:var(--navy);color:var(--lav-2);padding:clamp(3.5rem,7vw,6rem) 0 3rem}
.foot .kicker{color:var(--lav)}
.who p:not(.kicker){color:var(--paper);font-size:.95rem;max-width:52ch}
.links{display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}
.links .chip{background:transparent;border-color:var(--hair-d2);color:var(--paper);font-size:.8125rem}
.links .chip:hover{border-color:var(--cyan);color:var(--cyan)}
.disc{font-size:.72rem;line-height:1.8;color:var(--lav);max-width:84ch;margin:2rem 0 0;border-top:1px solid var(--hair-d);padding-top:1.4rem}
@media (max-width:900px){.links{flex-direction:row;flex-wrap:wrap}}

/* ----- reduced motion: no transforms, opacity-only <=150ms, values shown instantly ----- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:1ms!important;animation-delay:0ms!important;transition-duration:1ms!important;transition-delay:0ms!important}
  [data-reveal],[data-stagger]>*,.detail tbody tr,.evidence li{opacity:1!important;transform:none!important}
  .plate-body h3::before{transform:none!important}
  [data-words] .w>span{transform:none;opacity:0;animation:fade 150ms linear forwards}
  [data-hero-lede],[data-hero-spec]{animation:fade 150ms linear forwards!important}
  .paper-grid line,.draw rect,.draw .wire path,.tl-line .rule{stroke-dashoffset:0!important;animation:none!important}
  .draw text,.tl-line .tick,.stat .dim line,.phase .dot{opacity:1!important;transform:none!important}
  .prod:hover,.chip:hover,.dl:hover{transform:none}
  .fix .marker::after{animation:none!important}
  .drawer pre .ln.chg{animation:none;background:rgba(109,208,231,.2)}
  .prog i{transition:none}
}
