/* The evidence field: typography stays still while the product's layers move. */
.hero{background:#fbfcff}.hero .field{inset:0}.hero .field canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.hero .hero-inner{background:linear-gradient(90deg,#fbfcfff7 0%,#fbfcffeb 36%,#fbfcff8f 59%,transparent 84%)}.hero .field-note{right:clamp(22px,5vw,72px);bottom:27px;color:#215bd7;font-size:.67rem}.hero .links a{background:#fbfcff}.hero .links .primary{background:#151a20}.hero .lede{max-width:640px}
.hero .field svg{right:-2%;width:min(72vw,970px)}
.hero .field .grid{opacity:.45}
.hero .field .bound{opacity:.8}
.hero .field .dots{opacity:.9}
.hero-inner{max-width:1320px}
.hero-side{max-width:530px}
.hero-fragment{position:absolute;z-index:1;right:7%;top:25%;width:260px;height:330px;padding:20px;background:#f7f7f4e8;box-shadow:17px 20px 0 #215bd74d;border:1px solid #202833;transform:rotate(7deg);pointer-events:none;transition:transform .3s ease-out}
.hero-fragment .fragment-heading{font:600 .7rem 'DM Mono',monospace;border-bottom:1px solid #202833;padding-bottom:12px}
.hero-fragment .fragment-label{font:400 .67rem 'DM Mono',monospace;display:block;margin-top:18px;color:#59636d}
.hero-fragment .fragment-map{height:140px;margin:14px 0;background:radial-gradient(circle at 65% 44%,#e34131 0 5px,transparent 6px),radial-gradient(circle at 65% 44%,transparent 0 41px,#215bd7 42px 43px,transparent 44px),linear-gradient(41deg,transparent 50%,#909aab 50.5% 51%,transparent 51.5%),linear-gradient(120deg,transparent 40%,#909aab 40.5% 41%,transparent 41.5%),#e7ebf1}
.hero-fragment .fragment-foot{font:400 .7rem 'DM Mono',monospace;color:#215bd7}
.case-card{width:min(100%,510px);background:#f7f7f4;color:#151a20;padding:clamp(20px,3vw,34px);box-shadow:15px 18px 0 #355189;transform:rotate(-2deg)}.case-meta,.case-foot{font-size:.64rem;line-height:1.5}.case-meta{padding-bottom:16px;border-bottom:1px solid #9da9b7}.case-map{height:158px;position:relative;overflow:hidden;margin:17px 0;background:linear-gradient(18deg,transparent 46%,#b5c3d6 46.5%,#b5c3d6 47%,transparent 47.5%),linear-gradient(145deg,transparent 49%,#b5c3d6 49.5%,#b5c3d6 50%,transparent 50.5%),linear-gradient(91deg,transparent 38%,#b5c3d6 38.5%,#b5c3d6 39%,transparent 39.5%),#e8edf4}.case-ring{position:absolute;border:1px solid #215bd7;border-radius:50%;left:55%;top:50%;transform:translate(-50%,-50%)}.ring-one{width:100px;height:100px}.ring-two{width:185px;height:185px}.case-location{position:absolute;left:55%;top:50%;width:11px;height:11px;transform:translate(-50%,-50%);border-radius:50%;background:#e34131;box-shadow:0 0 0 8px #e3413133}.case-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.case-stats>div{border-top:1px solid #151a20;padding-top:10px}.case-stats b{display:block;font-size:clamp(1.5rem,2.5vw,2.6rem);letter-spacing:-.07em}.case-stats span{display:block;font:400 .63rem/1.4 'DM Mono',monospace}.case-foot{color:#215bd7;padding-top:12px;border-top:1px solid #9da9b7}
.system-section{background:#e9ecef}
.system-stage{display:grid;grid-template-columns:minmax(300px,1.05fr) minmax(320px,.95fr);gap:clamp(34px,7vw,110px);margin-top:56px;align-items:start}
.system-map{position:sticky;top:40px;min-height:500px;background:#151a20;color:#fff;padding:28px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}
.map-top,.map-bottom{z-index:1;display:flex;justify-content:space-between;gap:15px;align-items:center}.map-top{font-size:.72rem;color:#b9c5d3}.map-bottom strong{font-size:clamp(1.75rem,3vw,3.5rem);letter-spacing:-.06em}.map-bottom span{color:#98b0ef;font-size:.7rem}.map-art{position:absolute;inset:0;transition:filter .6s,transform .6s;background:linear-gradient(17deg,transparent 49.85%,#374253 50%,transparent 50.15%),linear-gradient(123deg,transparent 49.85%,#374253 50%,transparent 50.15%),radial-gradient(circle at 55% 48%,#28364a,#151a20 64%)}.map-orbit{position:absolute;border:1px solid #5882e4;border-radius:50%;left:55%;top:48%;transform:translate(-50%,-50%);transition:all .7s}.orbit-a{width:160px;height:160px}.orbit-b{width:300px;height:300px;border-color:#465c80}.map-pin{position:absolute;left:55%;top:48%;transform:translate(-50%,-50%);font-size:3rem;color:#e34131;transition:all .7s}.map-node{position:absolute;width:8px;height:8px;background:#b8c6dd;border-radius:50%;transition:all .7s}.node-a{left:22%;top:31%}.node-b{left:68%;top:36%}.node-c{left:77%;top:71%}.map-cross{position:absolute;background:#657891;transition:all .6s}.cross-a{width:1px;height:100%;left:55%}.cross-b{height:1px;width:100%;top:48%}.system-map[data-step="1"] .map-orbit{opacity:.25;transform:translate(-50%,-50%) scale(.5)}.system-map[data-step="2"] .map-node{background:#e34131;box-shadow:0 0 0 12px #e3413130}.system-map[data-step="3"] .orbit-a{border-width:3px;box-shadow:0 0 0 20px #215bd725}.system-map[data-step="4"] .orbit-b{width:370px;height:370px;border-color:#e34131}.system-map[data-step="5"] .map-art{filter:saturate(.7) brightness(1.25);transform:scale(.84)}.system-map[data-step="6"] .map-node{background:#e34131;box-shadow:0 0 0 10px #e3413130}.stage-list{position:relative}.stage-list:before{content:"";position:absolute;left:19px;top:20px;bottom:60px;width:1px;background:#aeb5ba}.stage{position:relative;min-height:186px;display:flex;gap:28px;padding:12px 0 32px;color:#6e7880;transition:color .3s,transform .3s}.stage span{position:relative;z-index:1;flex:none;display:grid;place-items:center;background:#e9ecef;width:40px;height:40px;border:1px solid currentColor;border-radius:50%;font:400 .72rem 'DM Mono',monospace}.stage h3{font-size:clamp(1.4rem,2.7vw,2.35rem);letter-spacing:-.055em;margin:1px 0 10px}.stage p{font-size:1rem;line-height:1.5;margin:0;max-width:360px}.stage.active{color:#151a20;transform:translateX(5px)}.stage.active span{background:#e34131;color:#fff;border-color:#e34131}
.investigation .section-head .body-copy{max-width:650px}.viz{border:1px solid #53606b}.viz-unit{font:400 clamp(1rem,2vw,1.4rem) 'DM Mono',monospace;letter-spacing:0;color:#b8c5d1}.distribution{height:178px;display:flex;align-items:flex-end;gap:2px;margin-top:26px;margin-bottom:12px;padding:12px 0;border-bottom:1px solid #718091}.distribution .cluster{display:grid;grid-auto-flow:column;grid-template-rows:repeat(6,8px);grid-auto-columns:8px;gap:3px;align-content:end;align-items:end;justify-content:start;height:100%;padding:3px 5px;transition:opacity .3s,transform .3s;cursor:pointer}.distribution .cluster:nth-child(1){width:16.4%}.distribution .cluster:nth-child(2){width:22.3%}.distribution .cluster:nth-child(3){width:6%}.distribution .cluster:nth-child(4){width:55.3%}.distribution .cluster.dim{opacity:.2;transform:translateY(-9px)}.distribution .cluster.selected{transform:translateY(-13px)}.distribution .dot{display:block;width:7px;height:7px;background:#9fbae8;border-radius:50%;transition:transform .3s,background .3s}.distribution .cluster:nth-child(2) .dot{background:#638ce5}.distribution .cluster:nth-child(3) .dot{background:#a4a8c1}.distribution .cluster:nth-child(4) .dot{background:#e34131}.distribution .cluster.selected .dot:nth-child(3n){transform:translateY(-11px)}.viz .bins{margin-top:10px}.viz .bin{border:0;border-top:2px solid #708196;min-height:115px;padding:15px 9px;background:transparent}.viz .bin:hover,.viz .bin:focus-visible,.viz .bin.active{background:#354355;transform:none}.viz .bin:last-child.active{background:#633a3d}.finding{display:grid;grid-template-columns:130px 1fr;gap:18px;align-items:start;min-height:93px;margin:26px 0;border-top:1px solid #657181;padding-top:20px}.finding span{color:#9fb6f2;font-size:.72rem}.finding p{margin:0;font-size:clamp(1.05rem,1.7vw,1.35rem);line-height:1.45;max-width:780px}.viz-caption{display:none}
.method-visual{display:grid;grid-template-columns:minmax(320px,1fr) minmax(300px,1fr);gap:clamp(30px,6vw,110px);align-items:center;margin-top:35px;min-height:550px}.docs{position:relative;width:100%;height:520px;outline-offset:6px;cursor:pointer}.doc{position:absolute;left:50%;top:50%;width:min(57%,270px);height:330px;background:#fff;border:1px solid #151a20;padding:23px;box-shadow:7px 11px 0 #151a2020;transition:transform .55s cubic-bezier(.2,.8,.2,1),box-shadow .4s;transform:translate(-50%,-50%) rotate(var(--rot));display:flex;flex-direction:column;pointer-events:none}.doc span{font:400 .64rem 'DM Mono';color:#215bd7}.doc strong{font-size:1.5rem;letter-spacing:-.05em;margin:45px 0 30px;line-height:1.1}.doc i{display:block;height:7px;width:87%;background:#dbe2e8;margin-top:12px}.doc i:last-child{width:55%}.doc-1{--rot:-15deg;z-index:1}.doc-2{--rot:-10deg;z-index:2}.doc-3{--rot:-5deg;z-index:3}.doc-4{--rot:0deg;z-index:4}.doc-5{--rot:5deg;z-index:5}.doc-6{--rot:10deg;z-index:6}.doc-7{--rot:15deg;z-index:7;border-top:5px solid #e34131}.docs:is(:hover,:focus-visible,.open) .doc-1{transform:translate(-104%,-75%) rotate(-16deg)}.docs:is(:hover,:focus-visible,.open) .doc-2{transform:translate(-75%,-68%) rotate(-10deg)}.docs:is(:hover,:focus-visible,.open) .doc-3{transform:translate(-46%,-62%) rotate(-5deg)}.docs:is(:hover,:focus-visible,.open) .doc-4{transform:translate(-17%,-54%) rotate(0deg)}.docs:is(:hover,:focus-visible,.open) .doc-5{transform:translate(-92%,-32%) rotate(5deg)}.docs:is(:hover,:focus-visible,.open) .doc-6{transform:translate(-62%,-27%) rotate(10deg)}.docs:is(:hover,:focus-visible,.open) .doc-7{transform:translate(-30%,-20%) rotate(15deg)}.method-notes h3{font-size:clamp(2rem,3vw,3.4rem);line-height:1.1;letter-spacing:-.06em;margin:22px 0}.method-notes p{font-size:1.1rem;line-height:1.6;color:#47515b;max-width:480px}.method-number{margin-top:35px;border-top:1px solid #151a20;padding-top:22px;display:flex;align-items:baseline;gap:20px}.method-number b{font-size:4.5rem;letter-spacing:-.09em;color:#215bd7}.method-number span{max-width:190px;font:400 .76rem/1.5 'DM Mono',monospace}
@media(max-width:950px){.hero-fragment{opacity:.35;right:0;top:15%}.system-stage{grid-template-columns:1fr}.system-map{position:sticky;top:0;min-height:330px;z-index:2}.stage-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.stage-list:before{display:none}.stage{min-height:130px;padding:12px;gap:12px;border:1px solid #adb5ba}.stage span{width:32px;height:32px}.method-visual{gap:20px}.doc{height:280px}}
@media(max-width:650px){.hero .hero-inner{background:linear-gradient(90deg,#fbfcfff7 0%,#fbfcffe0 73%,transparent)}.hero .field-note{display:none}.system-map{min-height:290px;padding:20px}.map-bottom{align-items:end}.stage-list{grid-template-columns:1fr}.stage{min-height:100px}.stage h3{font-size:1.4rem}.distribution{height:120px;gap:1px}.distribution .cluster{grid-template-rows:repeat(6,5px);grid-auto-columns:5px;gap:2px;padding:2px}.distribution .dot{width:5px;height:5px}.viz .bin{min-height:100px}.viz .bin b{font-size:1.8rem}.viz .bin span{font-size:.62rem}.finding{grid-template-columns:1fr;gap:8px}.method-visual{display:flex;flex-direction:column}.docs{height:370px}.doc{height:240px;width:180px;padding:15px}.doc strong{font-size:1.15rem;margin:30px 0 15px}.doc i{margin-top:9px}.method-notes{width:100%}.method-number b{font-size:3.7rem}}
@media(prefers-reduced-motion:reduce){.hero-fragment,.map-art,.map-orbit,.map-node,.map-cross,.stage,.distribution .cluster,.distribution .dot,.doc{transition:none!important}.system-map{position:relative}.docs .doc-1{transform:translate(-104%,-75%) rotate(-16deg)}.docs .doc-2{transform:translate(-75%,-68%) rotate(-10deg)}.docs .doc-3{transform:translate(-46%,-62%) rotate(-5deg)}.docs .doc-4{transform:translate(-17%,-54%) rotate(0)}.docs .doc-5{transform:translate(-92%,-32%) rotate(5deg)}.docs .doc-6{transform:translate(-62%,-27%) rotate(10deg)}.docs .doc-7{transform:translate(-30%,-20%) rotate(15deg)}}
/* Perimtr's true blue carries evidence; scarlet remains a small signal of intervention. */
.nav .brand span{color:#0000ff!important}.hero .eyebrow,.hero .field-note{color:#0000ff}.hero h1 em{color:#0000ff}.hero .links .primary,.links .primary{background:#0000ff;border-color:#0000ff;color:#fff}.hero .links .primary:hover,.links .primary:hover{background:#151a20;border-color:#151a20;color:#fff}.proof>div:first-child .metric,.case-stats b,.method-number b,.doc span{color:#0000ff}.section:not(.investigation):not(.contact) h2 em{color:#0000ff}.section .eyebrow,.flow article b,.method article b{color:#0000ff}.investigation .eyebrow{color:#bfc7ff}.system-map{border-top:9px solid #0000ff}.stage.active span{background:#0000ff;border-color:#0000ff}.case-location{box-shadow:0 0 0 8px #0000ff33;background:#0000ff}.case-ring{border-color:#0000ff}.case-foot,.map-bottom span{color:#0000ff}.map-bottom span{color:#a8b8ff}.map-orbit{border-color:#7777ff}.viz .bin:hover,.viz .bin:focus-visible,.viz .bin.active{background:#0000ff}.viz .bin:last-child.active{background:#b83431}.doc-7{border-top-color:#0000ff}
.read-section{background:#0000ff;color:#fff;padding:clamp(70px,9vw,115px) 0}.read-intro{display:grid;grid-template-columns:1fr 2fr;gap:7vw;align-items:start}.read-intro .eyebrow{font-size:.8rem;line-height:1.5}.read-intro h2{font-size:clamp(3rem,6vw,6.4rem);letter-spacing:-.075em;line-height:.98;margin:0}.read-intro h2 em{font:italic 1em 'Instrument Serif',serif}.read-intro p{grid-column:2;font-size:1.15rem;line-height:1.5;margin:0;opacity:.85}.read-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:44px 0 30px}.read-grid article{min-height:262px;border:1px solid #ffffff8a;padding:23px;display:flex;flex-direction:column}.read-grid span{font:400 .75rem 'DM Mono',monospace}.read-grid strong{font-size:clamp(1.65rem,2.8vw,2.8rem);letter-spacing:-.06em;margin-top:23px}.read-grid p{font-size:.98rem;line-height:1.5;margin:12px 0 0;max-width:260px}.read-link{display:inline-block;background:#fff;color:#0000ff;padding:14px 19px;text-decoration:none;font-weight:700}.read-link:hover,.read-link:focus-visible{background:#151a20;color:#fff}
@media(max-width:850px){.read-intro{grid-template-columns:1fr;gap:20px}.read-intro p{grid-column:1}.read-grid{grid-template-columns:repeat(2,1fr)}.read-grid article{min-height:200px}}
@media(max-width:560px){.hero h1{font-size:clamp(2.9rem,10.8vw,4.5rem)}.read-grid{gap:8px}.read-grid article{padding:16px;min-height:230px}.read-grid strong{margin-top:20px}.read-grid p{font-size:.9rem}}
/* A human anchor within the evidence field. */
.hero .hero-inner{display:grid;grid-template-columns:minmax(0,1.42fr) minmax(280px,.8fr);align-items:center;gap:clamp(26px,4vw,64px);background:none;min-height:660px;padding-top:64px;padding-bottom:72px}
.hero-copy{min-width:0}
.hero h1{font-size:clamp(3.8rem,6.5vw,7.3rem);line-height:.94;max-width:800px;margin:30px 0 34px}
.hero .lede{max-width:650px}
.hero-portrait{position:relative;margin:0;align-self:stretch;min-height:500px;max-height:640px;background:#cfada0;overflow:hidden;border:1px solid #151a20;box-shadow:15px 15px 0 #0000ff}
.hero-portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:53% 35%}
.hero-portrait figcaption{position:absolute;bottom:0;left:0;background:#fbfcff;color:#151a20;padding:10px 14px;font-size:.7rem;letter-spacing:.08em}
.hero .field-note{z-index:3;right:clamp(22px,5vw,72px);bottom:16px}
@media(max-width:1000px){.hero .hero-inner{grid-template-columns:minmax(0,1.25fr) minmax(245px,.75fr);gap:28px}.hero h1{font-size:clamp(3.4rem,6.4vw,5.6rem)}.hero-portrait{min-height:450px;max-height:540px}}
@media(max-width:740px){.hero .hero-inner{display:flex;flex-direction:column;align-items:stretch;gap:34px;padding-top:55px;padding-bottom:70px}.hero h1{font-size:clamp(3.5rem,10vw,5.7rem)}.hero-portrait{width:min(100%,420px);height:420px;min-height:0;max-height:none;align-self:center;box-shadow:10px 10px 0 #0000ff}.hero .field{opacity:.5}}
@media(max-width:560px){.hero h1{font-size:clamp(3.05rem,10.5vw,4.5rem)}.hero .hero-inner{padding-top:48px}.hero-portrait{height:340px}.hero .lede{font-size:1.12rem}}
.test-evidence{display:grid;grid-template-columns:minmax(290px,.85fr) minmax(300px,1.15fr);gap:clamp(26px,5vw,76px);align-items:center;margin-top:clamp(35px,6vw,80px);border-top:1px solid #9ba6b3;padding-top:clamp(35px,6vw,80px)}.test-evidence-copy h3{font-size:clamp(2rem,3.5vw,4rem);line-height:1.06;letter-spacing:-.07em;margin:18px 0}.test-evidence-copy p{max-width:470px;font-size:1.05rem;line-height:1.6;color:#47515b}.test-evidence-copy a{display:inline-block;margin-top:14px;color:#0000ff;font-weight:700;text-underline-offset:4px}.test-evidence-image{display:block;overflow:hidden;background:#050505;border:1px solid #151a20;box-shadow:12px 12px 0 #0000ff}.test-evidence-image img{display:block;width:100%;height:330px;object-fit:cover;object-position:50% 100%;transition:transform .25s}.test-evidence-image:hover img,.test-evidence-image:focus-visible img{transform:scale(1.035)}@media(max-width:850px){.test-evidence{grid-template-columns:1fr}.test-evidence-image img{height:260px}}@media(max-width:560px){.test-evidence-image img{height:210px}}@media(prefers-reduced-motion:reduce){.test-evidence-image img{transition:none}}
.test-evidence-image:hover img{transform:none}
/* Evidence journey: each scroll stage lights up a connected node. */
.system-map{background:#171d27;isolation:isolate}
.system-map:before{content:"";position:absolute;inset:0;opacity:.35;background-image:radial-gradient(#8694b6 1px,transparent 1px);background-size:24px 24px;mask-image:linear-gradient(90deg,transparent,#000 30%,#000 80%,transparent)}
.node-field{position:absolute;inset:56px 18px 95px;overflow:visible}
.node-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 4px #0000ff40)}
.node-lines path{fill:none;stroke-width:1.5;vector-effect:non-scaling-stroke}
.node-track{stroke:#637087;stroke-dasharray:2 7}
.node-progress{stroke:#7777ff;stroke-width:2.5!important;stroke-dasharray:1000;stroke-dashoffset:1000;transition:stroke-dashoffset .75s ease}
.system-map[data-step="2"] .node-progress{stroke-dashoffset:875}.system-map[data-step="3"] .node-progress{stroke-dashoffset:690}.system-map[data-step="4"] .node-progress{stroke-dashoffset:530}.system-map[data-step="5"] .node-progress{stroke-dashoffset:350}.system-map[data-step="6"] .node-progress{stroke-dashoffset:0}
.journey-node{position:absolute;transform:translate(-50%,-50%);width:0;height:0;z-index:1;color:#9aa7bf}
.journey-node span{display:grid;place-items:center;position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:24px;height:24px;border:1px solid #8392aa;border-radius:50%;background:#202b3b;font:400 .6rem 'DM Mono',monospace;transition:width .4s,height .4s,background .4s,color .4s,box-shadow .4s}
.journey-node strong,.journey-node small{display:block;position:absolute;left:16px;width:175px;opacity:0;transform:translateY(8px);transition:opacity .35s,transform .35s;pointer-events:none}
.journey-node strong{top:16px;color:#fff;font-size:1.15rem;letter-spacing:-.035em}.journey-node small{top:43px;color:#bac6db;font:400 .68rem 'DM Mono',monospace}
.node-1{left:15%;top:20.5%}.node-2{left:39%;top:29.5%}.node-3{left:75%;top:19%}.node-4{left:63%;top:53.5%}.node-5{left:30%;top:66.75%}.node-6{left:78%;top:81.25%}
.node-3 strong,.node-3 small,.node-6 strong,.node-6 small{left:auto;right:16px;text-align:right}
.node-1 strong{top:58px;left:-10px}.node-1 small{top:85px;left:-10px}
/* Identify Ravi beneath the portrait, leaving the headline to lead. */
.hero .hero-inner{padding-bottom:108px}
.hero-portrait{overflow:visible}
.hero-portrait img{overflow:hidden}
.hero-portrait figcaption{position:absolute;top:calc(100% + 18px);bottom:auto;left:0;background:transparent;padding:0;color:#151a20;font-family:'DM Sans',Arial,sans-serif;letter-spacing:0;text-transform:none;display:flex;flex-direction:column;gap:4px;width:100%;font-size:.9rem;line-height:1.3}
.hero-portrait figcaption strong{font-weight:700}.hero-portrait figcaption span{font-size:.78rem;color:#505a64}
/* Blue marks distance and ambiguity throughout the investigation. */
.investigation h2 em{color:#91a4ff}
.investigation .distribution .cluster:nth-child(4) .dot{background:#7777ff}
.investigation .viz .bin:last-child.active{background:#0000ff}
@media(max-width:740px){.hero .hero-inner{padding-bottom:112px}}
.about .section-head{grid-template-columns:minmax(240px,.8fr) minmax(0,1.7fr);gap:clamp(36px,7vw,100px)}
.about-person{min-width:0}.about-portrait{margin:38px 0 0;max-width:370px}.about-portrait img{display:block;width:100%;height:clamp(300px,34vw,450px);object-fit:cover;object-position:54% 34%;border:1px solid #151a20;box-shadow:10px 10px 0 #0000ff}.about-portrait figcaption{margin-top:22px;line-height:1.45}.about-portrait figcaption strong{display:block;font-size:1rem}.about-portrait figcaption span{display:block;margin-top:3px;font-size:.84rem;color:#47515b}.about .body-copy p{margin:0 0 22px}.about .body-copy .about-education{font:400 .78rem/1.6 'DM Mono',monospace;color:#47515b;border-top:1px solid #bfc7ce;padding-top:18px;margin-top:30px}
@media(max-width:850px){.about .section-head{grid-template-columns:1fr}.about-person{display:grid;grid-template-columns:1fr minmax(160px,240px);gap:20px;align-items:start}.about-portrait{margin:0}.about-portrait img{height:280px}.about .section-head>div:last-child{grid-row:1}.about-person{grid-row:2;margin-top:10px}}
@media(max-width:560px){.about-person{display:block}.about-portrait{margin-top:22px;max-width:330px}.about-portrait img{height:340px}}
.system-map[data-step="1"] .node-1 span,.system-map[data-step="2"] .node-2 span,.system-map[data-step="3"] .node-3 span,.system-map[data-step="4"] .node-4 span,.system-map[data-step="5"] .node-5 span,.system-map[data-step="6"] .node-6 span{width:36px;height:36px;color:#fff;background:#0000ff;border-color:#a8b8ff;box-shadow:0 0 0 11px #0000ff25,0 0 34px #5f6dff88}
.system-map[data-step="1"] .node-1 :is(strong,small),.system-map[data-step="2"] .node-2 :is(strong,small),.system-map[data-step="3"] .node-3 :is(strong,small),.system-map[data-step="4"] .node-4 :is(strong,small),.system-map[data-step="5"] .node-5 :is(strong,small),.system-map[data-step="6"] .node-6 :is(strong,small){opacity:1;transform:translateY(0)}
.map-bottom{position:relative}.map-bottom strong{font-size:clamp(1.8rem,3vw,3.4rem)}
/* Keep the report-reading guide in the same visual family as the case study. */
.read-section{background:#f5f7fa;color:#151a20;border-bottom:1px solid #cfd1d2}
.read-intro{column-gap:5vw}.read-intro h2{font-size:clamp(2.8rem,5vw,5.4rem)}.read-intro h2 em{color:#0000ff}.read-intro p{color:#47515b}
.read-intro{row-gap:18px}
.read-grid{gap:0;border:1px solid #cbd2db;background:#fff}.read-grid article{border:0;border-right:1px solid #cbd2db;min-height:225px;padding:24px}.read-grid article:last-child{border:0}.read-grid article span{color:#0000ff}.read-grid strong{font-size:clamp(1.65rem,2.5vw,2.5rem)}.read-grid p{color:#47515b}
.read-link{background:#0000ff;color:#fff}.read-link:hover,.read-link:focus-visible{background:#151a20;color:#fff}
/* A clear finish, with the same blue action used above. */
.contact{background:#171d27;color:#fff}.contact .eyebrow{color:#b9c8ff}.contact h2 em{color:#a8b8ff}.contact .links .primary{background:#0000ff;border-color:#0000ff;color:#fff}.contact .links .primary:hover{background:#fff;color:#151a20;border-color:#fff}
.system-section h2,.contact h2{font-size:clamp(2.8rem,4.8vw,5.7rem);line-height:1.08}.stage{color:#58616a}
.system-section h2 em{font-size:.88em;letter-spacing:0;line-height:1.2}
@media(max-width:850px){.read-grid article:nth-child(2){border-right:0}.read-grid article:nth-child(-n+2){border-bottom:1px solid #cbd2db}}
@media(max-width:650px){.node-field{inset:48px 15px 80px}.journey-node strong{font-size:1rem}.journey-node small{font-size:.65rem}.system-map{position:relative}.read-grid article{min-height:175px}}
@media(max-width:560px){.read-grid article{padding:18px}.read-grid p{font-size:1rem}.read-grid strong{font-size:1.8rem}.read-grid article:nth-child(odd){border-right:1px solid #cbd2db}.read-grid article:nth-child(even){border-right:0}.node-field{inset:48px 18px 75px}.journey-node strong,.journey-node small{width:110px}.journey-node strong{font-size:.88rem}.journey-node small{font-size:.58rem}.node-5 strong,.node-5 small{left:0}}
/* Centre section navigation independently of the brand and résumé action. */
.nav{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center}
.nav .brand{grid-column:1;justify-self:start}.navlinks{display:contents}.nav-core{grid-column:2;display:flex;align-items:center;gap:28px}
.nav-core a,.nav .resume{display:inline-flex;align-items:center;justify-content:center;line-height:1.25;white-space:nowrap}
.nav .resume{grid-column:3;justify-self:end}
@media(max-width:850px){.nav-core{gap:14px}}
@media(max-width:650px){.nav-core{display:none}.nav{grid-template-columns:1fr auto}.nav .resume{grid-column:2}}
@media(prefers-reduced-motion:reduce){.node-progress,.journey-node span,.journey-node strong,.journey-node small{transition:none}}
/* Portfolio palette: one paper surface, one alternate surface, one dark field. */
:root{--paper:#fbfcff;--alternate:#e9ecef;--ink:#171d27;--evidence:#0000ff}
body,.hero,.method-section,footer{background:var(--paper)}
.hero .links a,.hero-portrait figcaption{background:var(--paper)}
.read-section,.system-section,.about,.feature{background:var(--alternate)}
.stage span{background:var(--alternate)}
.investigation,.contact{background:var(--ink)}
.hero-fragment .fragment-map{background:radial-gradient(circle at 65% 44%,var(--evidence) 0 5px,transparent 6px),radial-gradient(circle at 65% 44%,transparent 0 41px,var(--evidence) 42px 43px,transparent 44px),linear-gradient(41deg,transparent 50%,#909aab 50.5% 51%,transparent 51.5%),linear-gradient(120deg,transparent 40%,#909aab 40.5% 41%,transparent 41.5%),#e7ebf1}
.system-map[data-step="4"] .orbit-b{border-color:var(--evidence)}
.system-map[data-step="6"] .map-node{background:var(--evidence);box-shadow:0 0 0 10px #0000ff30}
.investigation .viz .bin:last-child.active{background:var(--evidence)}
::selection{background:var(--evidence);color:#fff}
/* Keep narrow screens at their actual viewport width, including large headings. */
html,body{max-width:100%;overflow-x:clip}
.wrap,.section-head,.section-head>*,.feature>*,.method-visual>*,.test-evidence>*,.read-intro>*,.system-stage>*{min-width:0}
@media(max-width:650px){
  .wrap{width:100%;padding-inline:clamp(20px,5.5vw,28px)}
  .section-head,.about .section-head{grid-template-columns:minmax(0,1fr)}
  .section h2,.system-section h2,.contact h2{font-size:clamp(2.3rem,9.2vw,3.25rem);line-height:1.04;letter-spacing:-.055em;overflow-wrap:break-word}
  .section h2 em{letter-spacing:-.035em}
  .body-copy,.section-head p{max-width:100%;overflow-wrap:break-word}
  .method-notes h3,.test-evidence-copy h3{font-size:clamp(1.9rem,7.5vw,2.6rem);overflow-wrap:break-word}
  .method-visual,.test-evidence,.system-stage,.read-intro{width:100%;min-width:0}
  .docs{max-width:100%}
  .read-intro h2{font-size:clamp(2.35rem,9vw,3.2rem);overflow-wrap:break-word}
  .contact .links a{max-width:100%}
  footer.wrap{padding-inline:clamp(20px,5.5vw,28px)}
}
/* Editorial type and evidence spacing across desktop and mobile. */
.eyebrow,.metric-label,.read-grid span,.figcaption{font-size:.875rem;line-height:1.5;letter-spacing:.055em}
.body-copy{font-size:clamp(1.05rem,1.25vw,1.18rem);line-height:1.62;max-width:66ch}
.method-visual{min-height:0;margin-top:clamp(46px,5vw,76px);gap:clamp(36px,5vw,80px)}
.docs{height:440px}
.method-notes h3{font-size:clamp(2rem,2.8vw,3rem);line-height:1.16;max-width:17ch}
.method-notes p{font-size:1.08rem;line-height:1.65;max-width:52ch}
.test-evidence{grid-template-columns:minmax(0,1fr);gap:30px;max-width:1020px;margin-inline:auto;margin-top:clamp(60px,7vw,100px)}
.test-evidence-copy{max-width:710px}
.test-evidence-copy h3{font-size:clamp(2.1rem,3vw,3.5rem);line-height:1.12;letter-spacing:-.06em}
.test-evidence-copy p{max-width:60ch;line-height:1.65}
.test-evidence-image img{height:auto;max-height:none;object-fit:contain}
@media(max-width:650px){
  .section{padding-block:clamp(62px,14vw,88px)}
  .section-head{gap:20px}
  .section h2{margin-bottom:24px}
  .eyebrow,.metric-label,.read-grid span,.figcaption{font-size:.81rem}
  .body-copy{font-size:1.06rem;line-height:1.62}
  .method-visual{margin-top:42px;gap:24px}
  .docs{height:350px}
  .method-notes h3{font-size:clamp(1.9rem,7.4vw,2.5rem);max-width:100%}
  .method-notes p,.test-evidence-copy p{font-size:1rem;line-height:1.65}
  .test-evidence{gap:25px;margin-top:62px}
  .test-evidence-copy h3{font-size:clamp(2rem,8vw,2.5rem)}
}
/* Keep editorial copy inside its column, including Safari's narrow visual viewport. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.section.wrap{width:100%;max-width:1320px}
.section-head{grid-template-columns:minmax(0,1fr) minmax(0,2fr);max-width:100%}
.section-head>div,.section-head p{min-width:0;max-width:100%}
.section-head .body-copy{width:100%;max-width:min(100%,66ch);overflow-wrap:break-word}
@media(max-width:850px){
  .section-head,.about .section-head{grid-template-columns:minmax(0,1fr);gap:clamp(18px,4vw,30px)}
}
