/* FM concept - tokens */
:root{
  --ink:#0d102b;        /* FM navy (from fm.com CSS) */
  --slate:#383b54;      /* FM slate (from fm.com CSS) */
  --orange:#ff5100;     /* FM orange - use on navy only */
  --orange-d:#c93102;   /* FM deep orange - AA with white text */
  --teal:#0d6f79;       /* FM teal (#15909c) deepened for AA text on light */
  --teal-l:#89c6cc;     /* FM light teal */
  --paper:#eef0f4;
  --line:#d4d8e2;
  --mute:#4a4d63;
  --soft:#c4c8de;
  --banner-h:40px; --head-h:76px; --strip-h:112px;
  --pad:clamp(40px,4.5vw,80px);
  --serif:"Domine",Georgia,"Times New Roman",serif;
  --sans:"Public Sans","Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;max-width:1920px;margin-inline:auto;background:#fff;color:var(--ink);font:400 17px/1.62 var(--sans);-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.wrap{width:min(1340px,100% - 48px);margin-inline:auto}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.14;margin:0 0 .5em;letter-spacing:-.005em}
h1{font-size:clamp(40px,4.6vw,72px);line-height:1.06}
h2{font-size:clamp(28px,3vw,44px)}
h3{font-size:clamp(20px,1.7vw,25px)}
p{margin:0 0 1em;max-width:68ch}
.lead{font-size:clamp(18px,1.4vw,21px);line-height:1.55}
.sec{padding-block:var(--pad)}
.sec.paper{background:var(--paper)}
.sec.navy{background:var(--ink);color:#fff}
.sec.navy p{color:var(--soft)}
.sec.navy .lead,.sec.navy h2,.sec.navy h3{color:#fff}
.mute{color:var(--mute)}
.navy .mute{color:var(--soft)}

/* concept banner */
.concept{background:#ffe1d3;color:var(--ink);min-height:var(--banner-h);display:flex;align-items:center;justify-content:center;text-align:center;font-size:14px;font-weight:600;padding:6px 16px;line-height:1.3}

/* header */
.site-head{background:var(--ink);color:#fff;position:relative;z-index:20}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:var(--head-h)}
.logo img{height:44px;width:auto}
.nav-d{display:flex;gap:clamp(14px,1.8vw,30px);align-items:center;white-space:nowrap}
.nav-d a{text-decoration:none;font-size:15.5px;font-weight:500;padding:6px 0;border-bottom:2px solid transparent}
.nav-d a:hover,.nav-d a[aria-current]{border-bottom-color:var(--orange)}
.head-cta{white-space:nowrap}
.btn{display:inline-block;text-decoration:none;font-weight:700;font-size:16px;padding:13px 24px;border-radius:4px;background:var(--orange-d);color:#fff;border:2px solid var(--orange-d);line-height:1.2}
.btn:hover{background:#a82800;border-color:#a82800}
.btn.ghost{background:transparent;border-color:#fff;color:#fff}
.btn.ghost:hover{background:#fff;color:var(--ink)}
.btn.dark{background:transparent;border-color:var(--ink);color:var(--ink)}
.btn.dark:hover{background:var(--ink);color:#fff}
.nav-m{display:none}
@media (max-width:1180px){
  .nav-d,.head-cta{display:none}
  .nav-m{display:block;position:relative}
  .nav-m summary{list-style:none;cursor:pointer;font-weight:700;padding:10px 16px;border:2px solid #fff;border-radius:4px}
  .nav-m summary::-webkit-details-marker{display:none}
  .nav-m .panel{position:absolute;right:0;top:calc(100% + 10px);background:var(--ink);border:1px solid var(--slate);width:min(300px,calc(100vw - 32px));padding:10px 0;box-shadow:0 12px 32px rgba(0,0,0,.35)}
  .nav-m .panel a{display:block;padding:11px 20px;text-decoration:none;font-weight:500}
  .nav-m .panel a:hover{background:var(--slate)}
}

/* home hero */
.hero{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);min-height:clamp(340px,calc(100svh - var(--banner-h) - var(--head-h) - var(--strip-h) - 6px),640px);background:var(--ink);color:#fff}
.hero-copy{display:flex;flex-direction:column;justify-content:center;padding:clamp(20px,2.4vw,48px) clamp(24px,3.5vw,64px) clamp(20px,2.4vw,48px) 24px;padding-left:max(24px,calc((min(100vw,1920px) - 1340px)/2))}
.hero-copy h1{border-left:6px solid var(--orange);padding-left:clamp(16px,1.6vw,26px);margin-bottom:.4em;max-width:none}
.hero-copy p{color:var(--soft);font-size:clamp(16px,1.2vw,19px);max-width:46ch;margin-left:calc(6px + clamp(16px,1.6vw,26px))}
.hero-copy .actions{margin-left:calc(6px + clamp(16px,1.6vw,26px));display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}
.hero-photo{position:relative;min-height:260px;background:var(--slate)}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:70% 40%}
.hero-photo figcaption{position:absolute;left:0;bottom:0;background:var(--ink);color:var(--soft);font-size:13px;padding:8px 16px;max-width:34ch}
.strip{background:#fff;border-bottom:1px solid var(--line)}
.strip ul{list-style:none;margin:0 auto;padding:0;display:grid;grid-template-columns:repeat(5,1fr);width:min(1340px,100% - 48px);min-height:var(--strip-h)}
.strip li{display:flex;flex-direction:column;justify-content:center;padding:14px 22px;border-left:1px solid var(--line)}
.strip li:first-child{border-left:0;padding-left:0}
.strip b{font:600 clamp(26px,2.3vw,36px)/1.05 var(--serif);color:var(--ink)}
.strip span{font-size:14px;color:var(--mute);line-height:1.35;margin-top:4px}

/* split / feature layouts */
.split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(28px,5vw,88px);align-items:start}
.split.rev{grid-template-columns:minmax(0,6fr) minmax(0,5fr)}
.ph{border-radius:6px;overflow:hidden;background:var(--slate)}
.ph img{width:100%;height:100%;object-fit:cover}
.tall{aspect-ratio:4/5}
.stack > * + *{margin-top:clamp(28px,3vw,48px)}
.tlink{font-weight:700;color:var(--orange-d);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}
.navy .tlink{color:var(--orange)}
.duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,3vw,48px)}

/* engineering band (home) */
.lab{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:clamp(28px,5vw,80px);align-items:center}
.lab-photos{position:relative;padding-bottom:clamp(40px,6vw,90px)}
.lab-photos .a{width:82%;aspect-ratio:4/3}
.lab-photos .b{position:absolute;right:0;bottom:0;width:52%;aspect-ratio:4/3;border:8px solid var(--ink)}
.facts-inline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 28px;margin:28px 0 0;padding:0;list-style:none}
.facts-inline li{font-size:14.5px;color:var(--soft);line-height:1.4}
.facts-inline b{display:block;font:600 clamp(22px,1.9vw,28px)/1.15 var(--serif);color:#fff;margin-bottom:6px}

/* industry mosaic */
.mosaic{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:clamp(210px,19vw,300px);gap:14px}
.tile{position:relative;overflow:hidden;border-radius:6px;background:var(--slate);color:#fff;text-decoration:none;display:block}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tile .cap{position:absolute;left:0;right:0;bottom:0;background:rgba(13,16,43,.9);padding:14px 18px 16px}
.tile h3{font-size:clamp(18px,1.4vw,22px);margin:0 0 4px;color:#fff}
.tile p{margin:0;font-size:14px;line-height:1.45;color:var(--soft)}
.tile.w2{grid-column:span 2}
.tile.txt{background:var(--slate)}
.tile.txt .cap{position:static;background:none;padding:22px}
.tile.txt{display:flex;align-items:flex-end}

/* group list */
.org{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3vw,48px) clamp(24px,3vw,56px)}
.org div{border-top:4px solid var(--ink);padding-top:16px}
.org h3{margin-bottom:.3em}
.org p{color:var(--mute);margin-bottom:.6em}

/* credit banner */
.credit{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);background:var(--slate);color:#fff;border-radius:6px;overflow:hidden}
.credit .ph{border-radius:0;min-height:300px}
.credit .txt{padding:clamp(28px,4vw,64px)}
.credit h2{color:#fff}
.credit p{color:var(--soft)}

/* offices cta */
.offices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:8px}
.office{background:var(--slate);border-radius:6px;padding:22px 26px}
.office h3{color:#fff;margin-bottom:.25em}
.office p{margin:0 0 .3em;color:var(--soft)}
.office a{color:#fff;font-weight:700}
.light .office{background:var(--paper)}
.light .office h3{color:var(--ink)}
.light .office p{color:var(--mute)}
.light .office a{color:var(--ink)}

/* inner hero variants */
.ihero{position:relative;background:var(--ink);color:#fff;min-height:340px;display:flex;align-items:flex-end;overflow:hidden}
.ihero > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ihero .shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(13,16,43,.94) 0%,rgba(13,16,43,.86) 45%,rgba(13,16,43,.35) 100%)}
.ihero .in{position:relative;padding-block:clamp(36px,4vw,64px)}
.ihero h1{max-width:16ch;margin:0 0 .35em}
.ihero p{color:var(--soft);font-size:clamp(17px,1.3vw,20px);max-width:56ch;margin:0}
.crumb{font-size:14px;color:var(--soft);margin-bottom:14px}
.crumb a{text-decoration:underline;text-underline-offset:3px}

.ihero.plain{background:var(--ink)}
.ihero.light{background:var(--paper);color:var(--ink)}
.ihero.light p{color:var(--mute)}
.ihero.light .crumb{color:var(--mute)}
.ihero.light h1{max-width:20ch}
.ihero .side{position:absolute;right:0;top:0;bottom:0;width:38%}
.ihero .side img{width:100%;height:100%;object-fit:cover}

/* article with sticky toc */
.art{display:grid;grid-template-columns:260px minmax(0,1fr);gap:clamp(28px,5vw,88px);align-items:start}
.toc{position:sticky;top:24px;font-size:15.5px}
.toc b{display:block;margin-bottom:10px;font-family:var(--serif)}
.toc a{display:block;padding:8px 0 8px 14px;border-left:3px solid var(--line);text-decoration:none;color:var(--mute)}
.toc a:hover{border-left-color:var(--orange-d);color:var(--ink)}
.callout{background:var(--paper);border-left:6px solid var(--orange-d);padding:clamp(20px,2.4vw,34px);border-radius:0 6px 6px 0}
.callout h3{margin-bottom:.3em}
.callout p:last-child{margin-bottom:0}

/* big words */
.words{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin-top:28px}
.words div{padding:clamp(22px,2.6vw,40px) 0;border-top:1px solid var(--slate)}
.words h3{font-size:clamp(26px,2.6vw,40px);margin:0;color:#fff}
.words div:nth-child(odd){padding-right:24px}

/* process */
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;counter-reset:s;margin-top:28px;position:relative}
.steps li{list-style:none;padding:0 clamp(14px,1.8vw,28px) 0 0;position:relative}
.steps li::before{counter-increment:s;content:counter(s);display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--orange-d);color:#fff;font:600 19px var(--serif);margin-bottom:16px}
.steps{padding:0;margin-bottom:0}
.team{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,36px)}
.team div{background:var(--ink);color:#fff;padding:clamp(22px,2.6vw,38px);border-radius:6px}
.team h3{color:#fff;margin-bottom:.3em}
.team p{color:var(--soft);margin:0}

/* ratings */
.ratings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.ratings div{background:#fff;border:1px solid var(--line);border-top:6px solid var(--teal);border-radius:0 0 6px 6px;padding:22px 24px}
.ratings b{display:block;font:600 clamp(34px,3vw,48px)/1 var(--serif);color:var(--ink)}
.ratings span{display:block;color:var(--mute);font-size:15px;margin-top:8px}
.ratings strong{display:block;margin-top:10px}
.claimgrid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:clamp(28px,5vw,80px);align-items:start}
.act{position:sticky;top:24px;background:var(--ink);color:#fff;border-radius:6px;padding:28px}
.act h2{font-size:26px;color:#fff}
.act p{color:var(--soft);font-size:15.5px}
.act .btn{display:block;text-align:center;margin-top:10px}
.checks{list-style:none;padding:0;margin:0 0 1em}
.checks li{padding:10px 0 10px 34px;position:relative;border-bottom:1px solid var(--line)}
.checks li::before{content:"";position:absolute;left:4px;top:17px;width:11px;height:6px;border-left:3px solid var(--teal);border-bottom:3px solid var(--teal);transform:rotate(-45deg)}
.quote{margin:0;font:500 clamp(22px,2vw,30px)/1.4 var(--serif);max-width:34ch}
.quote cite{display:block;font:400 15px var(--sans);margin-top:14px;color:var(--soft);font-style:normal}

/* directories */
.grp{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(24px,4vw,72px);padding-block:clamp(32px,3.5vw,56px);border-top:1px solid var(--line)}
.grp:first-of-type{border-top:0}
.grp .ph{aspect-ratio:4/3;margin-top:18px}
.svc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px clamp(24px,3vw,48px)}
.svc h3{font-size:20px;margin-bottom:.25em}
.svc p{margin:0;color:var(--mute);font-size:16px}
.svc a{text-decoration:none}

/* why */
.pillars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,36px)}
.pillar .ph{aspect-ratio:476/560;margin-bottom:18px}
.bigstats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,40px);margin-top:24px}
.bigstats b{display:block;font:600 clamp(54px,6vw,96px)/1 var(--serif);color:var(--orange)}
.bigstats span{color:var(--soft);display:block;max-width:24ch}

/* faq */
details.q{border-top:1px solid var(--line);padding:18px 0}
details.q:last-of-type{border-bottom:1px solid var(--line)}
details.q summary{cursor:pointer;font:600 20px/1.35 var(--serif);list-style:none;display:flex;justify-content:space-between;gap:16px}
details.q summary::-webkit-details-marker{display:none}
details.q summary::after{content:"+";font:400 28px/1 var(--sans);color:var(--orange-d)}
details.q[open] summary::after{content:"\2212"}
details.q p{margin:12px 0 0;color:var(--mute)}

/* reading list */
.reads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,2.4vw,36px)}
.reads .ph{aspect-ratio:16/10;margin-bottom:14px}

/* research list */
.rlist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,3vw,48px)}
.rlist div{padding-top:18px;border-top:4px solid var(--teal)}
.rlist h3{margin-bottom:.3em}
.rlist p{color:var(--mute)}

/* footer */
footer{background:var(--ink);color:var(--soft);padding-block:clamp(36px,4vw,64px) 28px;font-size:15px}
.fgrid{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:32px}
footer h4{font:700 16px var(--sans);color:#fff;margin:0 0 12px}
footer ul{list-style:none;margin:0;padding:0}
footer li{margin-bottom:7px}
footer a{text-decoration:none}
footer a:hover{text-decoration:underline;color:#fff}
footer .logo img{height:50px;margin-bottom:14px}
.legal{border-top:1px solid var(--slate);margin-top:36px;padding-top:20px;color:#d8dbee;font-size:14.5px}

@media (max-width:1024px){
  .hero{grid-template-columns:1fr}
  .hero-copy{padding:36px 24px}
  .hero-photo{min-height:240px;order:2}
  .strip ul{grid-template-columns:repeat(2,1fr)}
  .strip li{border-left:0;border-top:1px solid var(--line);padding-left:0}
  .strip li:nth-child(-n+2){border-top:0}
  .split,.split.rev,.lab,.credit,.art,.claimgrid,.grp{grid-template-columns:1fr}
  .toc{position:static}
  .act{position:static}
  .mosaic{grid-template-columns:repeat(2,minmax(0,1fr))}
  .org,.pillars,.reads,.team,.ratings,.steps,.bigstats{grid-template-columns:1fr}
  .steps li{padding-bottom:22px}
  .svc,.rlist,.duo,.offices,.words{grid-template-columns:1fr}
  .words div:nth-child(odd){padding-right:0}
  .fgrid{grid-template-columns:1fr 1fr}
  .ihero .side{display:none}
  .lab-photos .a{width:100%}
  .lab-photos .b{display:none}
  .lab-photos{padding-bottom:0}
}
@media (max-width:700px){.facts-inline{grid-template-columns:1fr}}
@media (max-width:560px){
  .mosaic{grid-template-columns:1fr}
  .tile.w2{grid-column:auto}
  .fgrid{grid-template-columns:1fr}
  .strip ul{grid-template-columns:1fr 1fr}
  .btn{padding:12px 18px}
}
@media (max-width:400px){h1{font-size:35px}.hero-copy h1{padding-left:14px}.hero-copy p,.hero-copy .actions{margin-left:20px}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
