/* Mission Control theme — loaded last on every page so it overrides each page's inline tokens.
   Palette: graph paper, navy, signal red, celery highlight. Case pages marked
   <body data-signal> keep their own per-case accent color. */
:root{
  --paper:#F7F9FC;--paper-deep:#E6EDF4;
  --navy:#0E2240;--ink:#0E2240;--petrol:#0E2240;
  --graphite:#33435A;--muted:#33435A;
  --celery:#DCE8B0;--butter:#DCE8B0;
  --hair:#0E2240;--hair-soft:#0E2240;
  --grid:#DCE8F3;--grid-major:#BCD3EA;
  --signal:#C8322B;--signal-tx:#A8281F;
  --rail:0px;
}
body:not([data-signal]){--persimmon:var(--signal);--persimmon-tx:var(--signal-tx);--oxblood:var(--signal);--oxblood-lt:var(--signal);}

/* Graph paper */
body{
  background-color:var(--paper);
  background-image:
    linear-gradient(var(--grid-major) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px;
  color:var(--ink);
}

/* No numbered side rail */
.rail{display:none!important;}
.wrap{margin-left:0!important;}

nav{background:rgba(247,249,252,0.9);}
.eyebrow{color:var(--navy);}
.eyebrow::before{background:var(--persimmon);}

/* Solid signal buttons */
body:not([data-signal]) .pill{background:var(--persimmon);color:#fff;border-color:var(--persimmon);font-weight:500;}
body:not([data-signal]) .pill:hover{background:var(--navy);border-color:var(--navy);color:#fff;}
.close.dark .pill{background:var(--celery)!important;color:var(--navy)!important;border-color:var(--celery)!important;}
.close.dark .pill:hover{background:#fff!important;border-color:#fff!important;}

/* Dark bands */
.manifesto{background:var(--navy);}
.stat .cap{color:#AFC1D6;}
.close .contact{color:var(--graphite);}
.close .contact a{color:var(--persimmon-tx);}
.close.dark .contact{color:#C9D6E6;}
.close.dark .contact a{color:var(--celery);}

/* Marquee: bold display band */
.ticker{background:var(--navy);border-top:4px solid var(--celery);padding:20px 0;}
.ticker-inner>span{padding:0!important;}
.ticker-inner>span>span{font-family:var(--grotesk);font-weight:700;font-size:20px;letter-spacing:1.5px;color:#fff;padding:0 22px;}
.ticker-inner>span>span::after{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--persimmon);margin-left:44px;vertical-align:middle;}
.ticker-inner span b{color:var(--celery);font-weight:700;}

/* Work list without index numbers */
.wrow{grid-template-columns:1.3fr 1.3fr auto auto;}
.wrow .idx{display:none;}
@media(max-width:820px){.wrow{grid-template-columns:1fr;}.wrow .wsub,.wrow .wtag{grid-column:1;}}

/* Hero orbit around the portrait */
.orbit-hero{position:relative;width:min(460px,100%);aspect-ratio:1/1;margin-left:auto;}
.orbit-rings{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.orbit-portrait{position:absolute;left:50%;top:50%;width:48%;height:48%;transform:translate(-50%,-50%);border-radius:50%;object-fit:cover;object-position:50% 28%;border:6px solid var(--navy);background:var(--paper-deep);}
.orbit-label{position:absolute;font-family:var(--mono);font-size:10.5px;letter-spacing:2px;text-transform:uppercase;color:var(--navy);background:var(--paper);padding:2px 7px;}
.orbit-label.l1{right:0;top:13%;}
.orbit-label.l2{left:0;bottom:15%;}
.orbit-label.l3{right:2%;bottom:11%;}
.hero .fn{margin-left:auto;}
@media(max-width:880px){.orbit-hero{margin:0 auto;}.hero .fn{margin:16px auto 0;}}

/* Accents that sit on navy need the celery, not the red */
.manifesto .ox{color:var(--celery);}
.stat .num .to{color:var(--celery);}

.mstrip .oxnum,.proc .pstep .pn,.srow.featured .sv b{color:var(--celery)!important;}
[data-signal] .oxw{color:var(--persimmon-tx);}
.frame .tick{border-color:var(--celery)!important;}

/* Legibility floor: no small label text under 12px */
.navlinks a,.pagenav .l,footer span,.secmark .n,.secmark .n small,.dfrow .dt small,.eyebrow,.label,.kicker,
.cap,.pcap,.footnote,figcaption,figcaption b,.sl,.awards span,.ba .bh,.metabar,.metabar span,.curr .k,.orbit-label,
.hw-card .sub,.manifesto .fn,.wtag,.sh,.job .dt,.exscore,.exnote,.exrec,.lvbadge,.lvhead span,.lvsec,.lvlog,
.lvhist summary,.lvhrow span,.wdate,.sctr,.frow label,.frow label span,.seg button,.fnote,.stat .cap,div.label{font-size:12px!important;}
.secmark .ln{height:2px;background:var(--navy);}
.const-line,.const-dot{display:none;}

/* Review round 1 */
/* Home: marquee first, then the stats in a white bordered panel */
.proof{background:transparent!important;color:var(--ink);padding:0!important;}
.proof .ticker{border-top:none;}
.proof-grid{background:#fff;border:2px solid var(--navy);margin:clamp(48px,7vh,80px) var(--mx) 0;padding:clamp(32px,4vw,48px)!important;}
.proof .stat .num{color:var(--navy);}
.proof .stat .num .to{color:var(--signal-tx);}
.proof .stat .cap{color:var(--graphite);}
/* Home: case cards lose the border, gain a shadow */
.hw-card .frame{border:none!important;box-shadow:0 12px 28px rgba(14,34,64,.20),0 2px 6px rgba(14,34,64,.12);}
/* Services engagements: no vertical line beside the side panel */
#engagements .srow .sside{border-left:none!important;border-top:none!important;}
/* Services + tools: numbered steps clear the dashed line */
.srow{padding-left:20px!important;}
.traj-line{left:calc(var(--mx) + 4px)!important;}
/* Contact form fields on white */
.frow input,.frow textarea,.frow select{background:#fff!important;border:2px solid var(--navy)!important;padding:12px 14px!important;border-radius:2px;}
.frow input::placeholder,.frow textarea::placeholder{color:#5D6B80;}
/* Resume summary a size down */
.rh .summary{font-size:clamp(16px,1.3vw,18px);}
.traj-dot{left:calc(var(--mx) + 4px)!important;}
.frow{border-bottom:none!important;padding:14px 0!important;}
.seg button:not(.on){background:#fff!important;}

/* Review round 2 */
/* Dividers stay on rows; the line in each section header goes */
.secmark .ln,.secmark .dot{display:none;}
/* Home hero: orbit up 20px, 20px more air above the definitions */
.orbit-hero{margin-top:-20px;}
.hero .fn{margin-top:36px!important;}
/* Contact: wider intro so "that matters." holds one line */
.cwrap{grid-template-columns:1.2fr 0.8fr;}
@media(max-width:880px){.cwrap{grid-template-columns:1fr;}}
.nw{white-space:nowrap;}
.hl{background:linear-gradient(transparent 16%,var(--celery) 16%,var(--celery) 90%,transparent 90%);padding:0 0.1em;-webkit-box-decoration-break:clone;box-decoration-break:clone;}
/* Writing footnote in the mono label face */
.footnote{font-family:var(--mono)!important;font-size:12px!important;letter-spacing:0.5px;color:var(--graphite);}
/* Before/after pairs side by side on every case page */
.afig{margin:0;}
.afig .frame{position:relative;border-radius:3px;overflow:hidden;background:#0d0d0d;}
.afig .frame img{width:100%;display:block;}
.afig .frame .tick{position:absolute;top:14px;left:14px;width:14px;height:14px;border-top:2px solid;border-left:2px solid;z-index:2;}
.afig figcaption{font-family:var(--mono);font-size:12px;letter-spacing:1px;text-transform:uppercase;color:var(--graphite);margin-top:12px;}
.afig figcaption b{color:var(--persimmon-tx);font-weight:500;}
.ba2{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start;}
@media(max-width:700px){.ba2{grid-template-columns:1fr;}}
.asec{padding:clamp(50px,8vh,90px) var(--mx);max-width:1180px;}
.asec .secmark{margin-bottom:30px;}
/* Background photos these rules point to were never uploaded; drop them */
.hero::before,.pstep.diagnose::before{content:none!important;}

/* Review round 3 */
/* Nav orbit mark at twice the size, dot in motion */
.navmark{width:38px!important;height:38px!important;}
.brand{gap:12px!important;}
/* "Currently" line matches the hiring line above it */
.hero .curr .v{font-family:var(--mono);font-style:normal;font-size:12px;letter-spacing:0.2px;color:var(--graphite);}
.hero .curr{align-items:baseline;}

/* Review round 4 */
/* Dark bands are solid navy; the graph paper stays on light sections */
.close.dark,.proc,.mstrip,.manifesto{background-image:none!important;}
/* "Currently" label in sentence case */
.hero .curr .k{text-transform:none!important;letter-spacing:0.2px!important;}

/* Review round 5 */
/* Hero: 3/5 text, 2/5 orbit, both top-aligned; headline 25% smaller */
@media(min-width:881px){.hero{grid-template-columns:3fr 2fr!important;align-items:start!important;}}
.hero h1{font-size:clamp(33px,4.95vw,78px)!important;margin-top:0!important;}
.orbit-hero{margin-top:0!important;}
/* Home stats 25% smaller */
.proof .stat .num{font-size:clamp(27px,3.3vw,43.5px)!important;}

/* Review round 6 */
/* Hero: even halves; orbit fills its column */
@media(min-width:881px){.hero{grid-template-columns:1fr 1fr!important;}}
.orbit-hero{width:100%!important;max-width:none!important;}
.hero .art{max-width:none!important;}
.orbit-label.l4{left:0;top:13%;}
/* Stats panel: four columns with faint dividers between them */
@media(min-width:1200px){
  .proof-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:0!important;}
  .proof .stat{padding:0 28px;}
  .proof .stat:first-child{padding-left:0;}
  .proof .stat:last-child{padding-right:0;}
  .proof .stat+.stat{border-left:1px solid #BCD3EA;}
}

/* Review round 9: half the gap between Selected work and the case list */
#selected{padding-bottom:clamp(28px,4.5vh,50px)!important;}
#work{padding-top:clamp(30px,5vh,55px)!important;}

/* Review round 10 */
/* Stat numbers in the headline face, each on one line */
.stat .num,.mstrip .num{font-family:var(--grotesk)!important;font-weight:700!important;white-space:nowrap;letter-spacing:0;}
.proof .stat .num{font-size:clamp(22px,2.4vw,38px)!important;}
.mstrip .num{font-size:clamp(26px,2.8vw,42px)!important;}
/* Phones: no top bar; paired links stack flush left */
@media(max-width:760px){
  .metabar{display:none!important;}
  .door .arrowlink{display:flex!important;width:max-content;margin-left:0!important;margin-top:12px;}
}

/* Review round 11 */
/* Manifesto statement 25% smaller */
.manifesto p{font-size:clamp(24px,4.05vw,60px)!important;}
/* Split-flap stat boards */
.proof .stat .num.flapboard{display:flex;gap:3px;align-items:center;font-size:clamp(18px,1.9vw,30px)!important;line-height:1;white-space:nowrap;}
.flap{flex-shrink:0;position:relative;display:inline-flex;align-items:center;justify-content:center;width:0.82em;height:1.32em;background:var(--navy);color:#fff;border-radius:3px;font-family:var(--grotesk);font-weight:700;box-shadow:inset 0 -2px 0 rgba(0,0,0,.35);}
.flap::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(0,0,0,.55);}
.flap-gap{display:inline-block;width:0.3em;}
.flap.flip{animation:flapflip 70ms ease-in;}
@keyframes flapflip{0%{transform:scaleY(1)}50%{transform:scaleY(.15)}100%{transform:scaleY(1)}}
.proof .stat .cap{margin-top:16px!important;}
/* Services paths: dots travel the borders and back */
.paths-grid{position:relative;}
.paths-grid::before,.paths-grid::after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);z-index:2;pointer-events:none;}
.paths-grid::before{background:var(--navy);animation:pdot-navy 9s linear infinite alternate;}
.paths-grid::after{background:var(--signal);animation:pdot-red 9s linear infinite alternate;animation-delay:-2.5s;}

@media(min-width:700px) and (max-width:1199px){.proof-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:36px 40px!important;}}
.flap-gap{flex-shrink:0;}
@keyframes pdot-navy{0%{left:0;top:0}62%{left:50%;top:0}100%{left:50%;top:100%}}
@keyframes pdot-red{0%{left:100%;top:100%}62%{left:50%;top:100%}100%{left:50%;top:0}}
@media(max-width:820px){.paths-grid::before,.paths-grid::after{display:none;}}

/* Review round 12 */
/* Split-flap boards beyond the homepage */
.flapboard{display:inline-flex!important;gap:3px;align-items:center;line-height:1;white-space:nowrap;}
.srow .snum.flapboard{font-size:clamp(22px,2vw,30px)!important;}
.wdate.flapboard{font-size:20px!important;gap:2px;}
/* About: sections inside the hero wrapper keep the page's single left margin */
.phero > .big-mark,.phero > .sec,.phero > .close,.phero > .faqsec,.phero > footer{padding-left:0!important;padding-right:0!important;}
/* Light closing sections: half the vertical padding */
.close:not(.dark){padding-top:clamp(37px,6vh,75px)!important;padding-bottom:clamp(37px,6vh,75px)!important;}

/* Review round 13 */
/* Resume sits on a white sheet with a shadow, 20px inside the edges */
.sheet{background:#fff;padding:20px;box-shadow:0 12px 28px rgba(14,34,64,.20),0 2px 6px rgba(14,34,64,.12);}
.sheet > :last-child{margin-bottom:0;}
@media print{.sheet{background:none!important;box-shadow:none!important;padding:0!important;}}

/* Review round 15 */
/* Home hero columns 7/12 and 5/12 */
@media(min-width:881px){.hero{grid-template-columns:7fr 5fr!important;}}

/* Review round 16 */
/* Page heroes with a graphic: text 7/12, graphic 5/12 anchored top */
.hx{width:min(1296px,calc(100vw - 2*var(--mx)));max-width:none;display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,4vw,64px);align-items:start;}
.hx-text{min-width:0;}
.hx-art{align-self:start;display:flex;justify-content:center;}
.hx-art .big-mark{padding:0!important;margin:0!important;max-width:none!important;}
.hx-art .big-mark svg{width:clamp(200px,24vw,320px)!important;height:auto!important;aspect-ratio:1;max-width:100%!important;}
article .hx-art .big-mark svg{width:clamp(160px,18vw,240px)!important;}
@media(max-width:880px){.hx{grid-template-columns:1fr;}.hx-art{justify-content:flex-start;}.hx-art .big-mark svg{width:180px!important;}.hx{width:auto;}}
.contact-page .cwrap,.cwrap{grid-template-columns:minmax(0,7fr) minmax(0,5fr);}
@media(max-width:880px){.cwrap{grid-template-columns:1fr;}}
/* Services radar */
.radar .sweep{transform-origin:100px 100px;animation:radar-spin 4s linear infinite;}
.radar .blip{animation:radar-blip 3s ease-in-out infinite;}.radar .b2{animation-delay:1.4s;}
@keyframes radar-spin{to{transform:rotate(360deg);}}
@keyframes radar-blip{0%,100%{opacity:.25}50%{opacity:1}}
/* Services close with gull-wing mark */
.close-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,4vw,64px);align-items:start;}
.close-art svg{display:block;width:100%;max-width:340px;margin:0 auto;}
.gw-draw{stroke-dasharray:420;animation:gw-draw 5s ease-in-out infinite;}
@keyframes gw-draw{0%{stroke-dashoffset:420}55%,100%{stroke-dashoffset:0}}
@media(max-width:880px){.close-grid{grid-template-columns:1fr;}.close-art svg{max-width:240px;margin:0;}}
/* About: bio on a white sheet, 40px inside */
#bio{background:#fff;padding:40px!important;box-shadow:0 12px 28px rgba(14,34,64,.20),0 2px 6px rgba(14,34,64,.12);margin-top:clamp(24px,4vh,48px);}
#bio p:last-child{margin-bottom:0;}
/* About: recognition as a marquee */
.recq{overflow:hidden;background:var(--navy);margin:14px 0 0 calc(-1*var(--mx));width:100vw;max-width:100vw;padding:18px 0;border-top:4px solid var(--celery);}
.recq-track{display:flex;width:max-content;animation:recq 36s linear infinite;}
.recq-track span{font-family:var(--grotesk);font-weight:700;font-size:18px;letter-spacing:1.2px;text-transform:uppercase;color:#fff;white-space:nowrap;padding:0 22px;display:inline-flex;align-items:center;}
.recq-track span::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--signal);margin-left:44px;}
.recq-track span:nth-child(odd){color:var(--celery);}
@keyframes recq{to{transform:translateX(-50%);}}
#recognition{max-width:none!important;}
.recnote{font-family:var(--mono)!important;font-size:12px!important;letter-spacing:0.5px;color:var(--graphite)!important;margin-top:14px!important;line-height:1.6!important;}
/* About: closing row on navy */
#close.dark{background:var(--navy);color:#fff;padding:clamp(40px,6vh,64px) 40px!important;}
#close.dark h2{color:#fff;}
/* Home: swoop on top of the closing band */
.close.swoop{position:relative;margin-top:90px;overflow:visible;}
.swoop-top{position:absolute;left:0;top:-89px;width:100%;height:90px;display:block;overflow:visible;}
.swoop-line{stroke-dasharray:2000;animation:swoop-draw 6s ease-in-out infinite;}
@keyframes swoop-draw{0%{stroke-dashoffset:2000}55%,100%{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.radar .sweep,.radar .blip,.gw-draw,.recq-track,.swoop-line{animation:none!important;}.gw-draw,.swoop-line{stroke-dasharray:none;}}
@media(max-width:600px){#bio{padding:24px!important;}#close.dark{padding:36px 24px!important;}}

/* Review round 17 */
.hx-mid{align-items:center;}
.hx-mid .hx-art{align-self:center;}
.cwrap > .big-mark{align-self:center;}
/* About: smaller headline, bio card hugs its text */

.phero .hx-mid h1{font-size:clamp(30px,4.95vw,69px)!important;}
#bio{width:fit-content;max-width:100%;box-sizing:border-box;}
#bio .ru{max-width:62ch;}
/* Navy closing band (Tools) */
.close.dark{background-color:var(--navy)!important;color:#fff;}
.close.dark h2{color:#fff;}
/* Tools telemetry */
.telemetry{position:relative;width:100%;max-width:440px;aspect-ratio:400/260;background:var(--navy);overflow:hidden;border:2px solid var(--navy);box-shadow:0 12px 28px rgba(14,34,64,.20);}
.telemetry::after{content:"";position:absolute;inset:0;background-image:linear-gradient(#23395C 1px,transparent 1px),linear-gradient(90deg,#23395C 1px,transparent 1px);background-size:40px 40px;opacity:.6;pointer-events:none;}
.tele-track{position:absolute;left:0;top:50%;transform:translateY(-50%);display:flex;width:200%;height:55%;animation:tele 6s linear infinite;}
.tele-track svg{width:50%;height:100%;display:block;}
.tele-track path{fill:none;stroke:var(--celery);stroke-width:2.5;vector-effect:non-scaling-stroke;}
.tele-live{position:absolute;top:14px;left:14px;z-index:1;font-family:var(--mono);font-size:12px;letter-spacing:2px;color:var(--signal);animation:tele-blink 1.2s steps(1) infinite;}
@keyframes tele{to{transform:translate(-50%,-50%);}}
@keyframes tele-blink{0%,60%{opacity:1}61%,100%{opacity:.25}}
@media(prefers-reduced-motion:reduce){.tele-track,.tele-live{animation:none!important;}}

/* Review round 18 */
/* All hero graphics centered vertically beside the text */
.hx{align-items:center;}
.hx-art{align-self:center;}
/* About: bio card centered, recognition note on one line */
#bio{margin-left:auto!important;margin-right:auto!important;}
.recnote{max-width:none!important;white-space:nowrap;}
@media(max-width:760px){.recnote{white-space:normal;}}

/* Review round 19 */
/* Case studies: headline 25% smaller, stat figures as split-flap boards */
body.case .phero h1{font-size:clamp(30px,4.95vw,69px)!important;}
.mstrip .num.flapboard{font-size:clamp(18px,1.8vw,28px)!important;flex-wrap:nowrap;}
.mstrip .flap{background:#2C4A75;color:#fff;box-shadow:inset 0 -2px 0 rgba(0,0,0,.35),0 0 0 1px #3E5D8A;}
.mstrip .num.oxnum .flap{color:var(--celery);}
#recognition{padding-top:34px!important;}
.mstrip .flap{text-transform:uppercase;}
