/* QELVOX site styles — tokens from the QELVOX Design System */
@font-face{font-family:'Outfit';font-style:normal;font-weight:400 500;font-display:swap;src:url('../fonts/outfit-400.woff') format('woff');unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+0394,U+03A9,U+03BC,U+2013-2014,U+2018-201E,U+2022,U+2026,U+2032-2033,U+2122,U+2190-2193,U+2212,U+00B5}
@font-face{font-family:'Outfit';font-style:normal;font-weight:600 700;font-display:swap;src:url('../fonts/outfit-700.woff') format('woff');unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+0394,U+03A9,U+03BC,U+2013-2014,U+2018-201E,U+2022,U+2026,U+2032-2033,U+2122,U+2190-2193,U+2212,U+00B5}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400 500;font-display:swap;src:url('../fonts/instrument-sans-400.woff') format('woff');unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+0394,U+03A9,U+03BC,U+2013-2014,U+2018-201E,U+2022,U+2026,U+2032-2033,U+2122,U+2190-2193,U+2212,U+00B5}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:600 700;font-display:swap;src:url('../fonts/instrument-sans-700.woff') format('woff');unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+0394,U+03A9,U+03BC,U+2013-2014,U+2018-201E,U+2022,U+2026,U+2032-2033,U+2122,U+2190-2193,U+2212,U+00B5}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400 500;font-display:swap;src:url('../fonts/ibm-plex-mono-400.woff') format('woff');unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+0394,U+03A9,U+03BC,U+2013-2014,U+2018-201E,U+2022,U+2026,U+2032-2033,U+2122,U+2190-2193,U+2212,U+00B5}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600 700;font-display:swap;src:url('../fonts/ibm-plex-mono-700.woff') format('woff');unicode-range:U+0020-007E,U+00A0-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+0394,U+03A9,U+03BC,U+2013-2014,U+2018-201E,U+2022,U+2026,U+2032-2033,U+2122,U+2190-2193,U+2212,U+00B5}
/* Layout: alternating ink and mist bands, like readings on an instrument screen; one interactive "signal scope" is the centrepiece. */
:root{
  --ink:#120F1F; --night:#1C1830; --line-dark:#3A3354; --haze:#A79FC0; --mist-2:#D9D4E8;
  --mist:#F2F0F7; --paper:#FFFFFF; --rule:#DCD8E6; --slate:#4E4766;
  --lime:#D4FF3A; --violet:#6A3DF0; --violet-deep:#5A31D6;
  --ok:#7BE0A8; --watch:#9FB8FF; --warn:#FFD166; --crit:#FF5C6C; --error:#B4232F; --success:#1F7A4D;
  --display:'Outfit','Segoe UI',system-ui,sans-serif;
  --body:'Instrument Sans','Segoe UI',system-ui,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --wrap:1240px; --radius:22px;
  --t-fast:.2s; --t-mid:.35s; --t-slow:.8s; --ease:cubic-bezier(.2,.7,.2,1); --ease-out:cubic-bezier(.16,1,.3,1);
  color-scheme: light;
}
*{box-sizing:border-box}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.35s; animation-timing-function:cubic-bezier(.2,.7,.2,1)}
@media (prefers-reduced-motion: reduce){ @view-transition{navigation:none} }
[hidden]{display:none!important}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}
body{background:var(--mist); color:var(--ink); font-family:var(--body); font-size:17px; line-height:1.6; overflow-x:hidden}
a{color:inherit}
:focus-visible{outline:2px solid var(--violet); outline-offset:3px; border-radius:6px}
.dark :focus-visible,.site-head :focus-visible{outline-color:var(--lime)}
h1,h2,h3{font-family:var(--display); text-wrap:balance; margin:0}
p{margin:0}
.wrap{max-width:var(--wrap); margin-inline:auto; padding-left:max(20px, env(safe-area-inset-left, 0px)); padding-right:max(20px, env(safe-area-inset-right, 0px))}
.band{padding-block:clamp(72px, 10vw, 128px)}
.dark{background:var(--ink); color:var(--mist)}
.eyebrow{font-family:var(--mono); font-size:13px; letter-spacing:.2em; text-transform:uppercase; color:var(--violet)}
.dark .eyebrow{color:var(--haze)}
.h2{font-size:clamp(34px, 4.4vw, 56px); line-height:1.04; font-weight:700; letter-spacing:-.02em}
.lede{font-size:clamp(17px, 1.5vw, 19px); color:var(--slate); max-width:60ch}
.dark .lede{color:var(--mist-2)}
.sec-head{display:flex; flex-direction:column; gap:14px; max-width:720px}

/* Buttons */
.btn{display:inline-flex; align-items:center; gap:10px; min-height:52px; padding:0 26px; border-radius:999px; font-family:var(--body); font-weight:600; font-size:16px; text-decoration:none; border:1.5px solid transparent; cursor:pointer; transition:transform .2s ease, background-color .2s ease, border-color .2s ease, color .2s ease}
.btn svg{transition:transform .2s ease}
.btn:hover svg{transform:translateX(3px)}
.btn:active{transform:scale(.97)}
.btn-lime:active{background:#BFE62F}
.btn-ghost:active{background:rgba(242,240,247,.06)}
.btn-lime{background:var(--lime); color:var(--ink)}
.btn-lime:hover{background:var(--paper)}
.btn-ghost{border-color:var(--line-dark); color:var(--mist); background:transparent}
.btn-ghost:hover{border-color:var(--mist)}
.btn-ink{background:var(--ink); color:var(--mist)}
.btn-ink:hover{background:var(--violet)}
.link-arrow{display:inline-flex; align-items:center; gap:8px; font-weight:600; text-decoration:none; color:var(--violet); padding-block:10px}
.link-arrow{background:linear-gradient(currentColor,currentColor) left calc(100% - 6px)/0 1.5px no-repeat; transition:background-size var(--t-mid) var(--ease), color var(--t-fast) ease}
.link-arrow:hover{color:var(--ink); background-size:calc(100% - 24px) 1.5px}
.link-arrow svg{transition:transform var(--t-fast) ease}.link-arrow:hover svg{transform:translateX(3px)}
.dark .link-arrow,.screen .link-arrow{color:var(--lime)}
.dark .link-arrow:hover,.screen .link-arrow:hover{color:var(--paper)}

/* Header */
.site-head{position:sticky; top:env(safe-area-inset-top, 0px); z-index:50; background:rgba(18,15,31,.86); backdrop-filter:saturate(1.4) blur(14px); -webkit-backdrop-filter:saturate(1.4) blur(14px); color:var(--mist); border-bottom:1px solid transparent; transition:border-color .3s ease}
.site-head.scrolled{border-bottom-color:var(--line-dark)}
.head-row{display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:72px}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--mist)}
.brand svg{display:block}
.nav{display:flex; align-items:center; gap:30px; font-size:15px; font-weight:500}
.nav a{text-decoration:none; color:var(--mist-2); padding-block:10px; position:relative}
.nav a:not(.btn)::after{content:""; position:absolute; left:0; right:0; bottom:4px; height:2px; background:var(--lime); transform:scaleX(0); transform-origin:left; transition:transform .25s ease}
.nav a:not(.btn):hover{color:var(--paper)}
.nav a:not(.btn):hover::after{transform:scaleX(1)}
.nav .btn{min-height:44px; padding:0 20px; font-size:15px; color:var(--ink)}
.menu-btn .l{transition:transform var(--t-mid) var(--ease), opacity var(--t-fast) ease; transform-origin:12px 12px}
.menu-btn[aria-expanded="true"] .l1{transform:translateY(5px) rotate(45deg)}.menu-btn[aria-expanded="true"] .l2{opacity:0}.menu-btn[aria-expanded="true"] .l3{transform:translateY(-5px) rotate(-45deg) scaleX(1.6)}
.menu-btn{display:none; background:transparent; border:1.5px solid var(--line-dark); color:var(--mist); border-radius:999px; min-height:44px; padding:0 16px; font:600 15px var(--body); cursor:pointer; align-items:center; gap:8px}
@media (max-width: 880px){
  .menu-btn{display:inline-flex}
  .nav{position:absolute; left:0; right:0; top:100%; background:var(--ink); border-bottom:1px solid var(--line-dark); flex-direction:column; align-items:stretch; gap:0; padding:8px max(20px, env(safe-area-inset-right, 0px)) 20px max(20px, env(safe-area-inset-left, 0px)); display:flex; visibility:hidden; opacity:0; transform:translateY(-8px); transition:opacity var(--t-mid) var(--ease), transform var(--t-mid) var(--ease), visibility 0s linear var(--t-mid)}
  .nav.open{visibility:visible; opacity:1; transform:none; transition-delay:0s}
  .nav a{opacity:0; transform:translateY(-6px); transition:opacity var(--t-mid) var(--ease), transform var(--t-mid) var(--ease)}
  .nav.open a{opacity:1; transform:none}
  .nav.open a:nth-child(2){transition-delay:.03s}.nav.open a:nth-child(3){transition-delay:.06s}.nav.open a:nth-child(4){transition-delay:.09s}.nav.open a:nth-child(5){transition-delay:.12s}.nav.open a:nth-child(6){transition-delay:.15s}
  .nav a{padding-block:14px; border-bottom:1px solid var(--night); font-size:18px}
  .nav a:not(.btn)::after{display:none}
  .nav .btn{margin-top:14px; justify-content:center; border-bottom:0}
}

/* Hero */
.hero{position:relative; overflow:hidden; background:var(--ink); color:var(--mist)}
.hero-grid{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(24px,4vw,64px); align-items:center; padding-block:clamp(48px,7vw,96px) clamp(56px,7vw,104px)}
.hero-copy{display:flex; flex-direction:column; gap:26px; min-width:0}
.hero h1{font-size:clamp(64px, 10.5vw, 148px); line-height:.9; font-weight:700; letter-spacing:-.035em}
.hero h1 .spoken{color:var(--lime); display:inline-block}
.hero h1 .w{display:inline-block}
.js .hero.intro h1 .w,.js .hero.intro .lede,.js .hero.intro .hero-actions,.js .hero.intro .eyebrow{animation:lift var(--t-slow) var(--ease-out) both}
.js .hero.intro .eyebrow{animation-delay:.05s}.js .hero.intro h1 .w1{animation-delay:.15s}.js .hero.intro h1 .w2{animation-delay:.3s}.js .hero.intro .lede{animation-delay:.45s}.js .hero.intro .hero-actions{animation-delay:.6s}
@keyframes lift{from{transform:translateY(24px)}to{transform:none}}
@media (prefers-reduced-motion: reduce){ .js .hero.intro *{animation:none!important} }
.hero .lede{font-size:clamp(18px, 1.7vw, 21px); max-width:34em; color:var(--mist-2)}
.hero .eyebrow{color:var(--haze)}
.hero-actions{display:flex; flex-wrap:wrap; gap:14px; margin-top:6px}
.hero-mark{position:relative; display:flex; flex-direction:column; align-items:center; gap:18px; min-width:0}
#mark{width:min(100%, 440px); height:auto; overflow:visible; display:block}
.sound-btn{display:inline-flex; align-items:center; gap:10px; min-height:44px; padding:0 18px; border-radius:999px; border:1.5px solid var(--line-dark); background:transparent; color:var(--haze); font:500 13px var(--mono); letter-spacing:.08em; text-transform:uppercase; cursor:pointer; transition:color .2s ease, border-color .2s ease}
.sound-btn:hover{color:var(--mist); border-color:var(--haze)}
.sound-btn[aria-pressed="true"]{color:var(--lime); border-color:var(--lime)}
.eq{display:none; gap:2px; align-items:flex-end; height:14px}.eq i{width:3px; background:currentColor; border-radius:2px; animation:eq 1s ease-in-out infinite}
.eq i:nth-child(2){animation-delay:-.3s}.eq i:nth-child(3){animation-delay:-.6s}
.sound-btn[aria-pressed="true"] .eq{display:inline-flex}.sound-btn[aria-pressed="true"] .spk{display:none}
@keyframes eq{0%,100%{height:4px}50%{height:14px}}
.readout{border-top:1px solid var(--line-dark)}
.readout-row{display:flex; flex-wrap:wrap; gap:12px 40px; padding-block:18px; font-family:var(--mono); font-size:13px; letter-spacing:.06em; color:var(--haze); font-variant-numeric:tabular-nums}
.readout-row b{color:var(--mist); font-weight:500}
.readout-row .live{display:inline-flex; align-items:center; gap:8px}
.readout-row .live::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--lime); box-shadow:0 0 0 0 rgba(212,255,58,.6); animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(212,255,58,.55)}70%{box-shadow:0 0 0 9px rgba(212,255,58,0)}100%{box-shadow:0 0 0 0 rgba(212,255,58,0)}}
@media (max-width: 880px){
  .hero-grid{grid-template-columns:1fr}
  .hero-grid{padding-block:32px 56px; gap:20px}
  .hero-mark{order:-1; flex-direction:row; justify-content:space-between; align-items:center}
  #mark{width:min(38vw, 150px)}
  .hero-copy{gap:20px}
}

/* Signals scope */
.scope{display:grid; grid-template-columns:minmax(0, 360px) minmax(0,1fr); gap:28px; margin-top:52px; align-items:stretch}
.tabs{display:flex; flex-direction:column; gap:10px; position:relative}
.tab-ind{position:absolute; left:-12px; width:4px; border-radius:4px; background:var(--lime); transition:transform var(--t-mid) var(--ease-out), height var(--t-mid) var(--ease-out); pointer-events:none}
.tab{position:relative}
.tab .d{transition:opacity var(--t-mid) ease}
.screen.swap .canvas-box,.screen.swap .readline{animation:swap var(--t-mid) var(--ease)}
@keyframes swap{from{opacity:.25; transform:translateY(6px)}to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){ .tab-ind{transition:none} .screen.swap .canvas-box,.screen.swap .readline{animation:none} }
.tab{display:grid; grid-template-columns:auto minmax(0,1fr); gap:4px 16px; text-align:left; background:var(--paper); border:1px solid var(--rule); border-radius:18px; padding:20px 22px; cursor:pointer; font:inherit; color:var(--ink); transition:border-color .2s ease, background-color .2s ease, transform .2s ease}
.tab:hover{border-color:var(--haze)}
.tab .k{font-family:var(--mono); font-size:12px; letter-spacing:.14em; color:var(--violet); grid-row:span 2; padding-top:6px}
.tab .t{font-family:var(--display); font-size:24px; font-weight:700; line-height:1.15}
.tab .d{font-size:15px; color:var(--slate); line-height:1.5; display:none}
.tab[aria-selected="true"]{background:var(--ink); color:var(--mist); border-color:var(--ink)}
.tab[aria-selected="true"] .k{color:var(--lime)}
.tab[aria-selected="true"] .d{display:block; color:var(--mist-2)}
.screen{background:var(--ink); color:var(--mist); border-radius:var(--radius); padding:22px; display:flex; flex-direction:column; gap:16px; min-width:0}
.screen-top{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; font-family:var(--mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--haze)}
.screen-top .rec{display:inline-flex; align-items:center; gap:8px; color:var(--lime)}
.screen-top .rec::before{content:""; width:7px; height:7px; border-radius:50%; background:var(--lime)}
.canvas-box{position:relative; width:100%; aspect-ratio:16/9; max-width:100%; border-radius:14px; overflow:hidden; background:var(--night); touch-action:none}
.canvas-box canvas{position:absolute; inset:0; width:100%; height:100%; display:block; cursor:crosshair}
.screen-foot{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:14px 24px}
.screen-foot .readline{font-family:var(--mono); font-size:14px; color:var(--mist); font-variant-numeric:tabular-nums; min-width:0}
.screen-foot .readline span{color:var(--lime)}
.ctrl{display:flex; align-items:center; gap:12px; font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--haze)}
.ctrl input[type=range]{width:170px; height:32px; accent-color:var(--lime)}
.hint{font-family:var(--mono); font-size:12px; color:var(--haze); letter-spacing:.04em}
.canvas-box canvas:focus-visible{outline:2px solid var(--lime); outline-offset:-2px; border-radius:14px}
@media (max-width: 960px){
  .scope{grid-template-columns:1fr}
  .tabs{flex-direction:row; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:6px}
  .tab{flex:0 0 auto; scroll-snap-align:start; grid-template-columns:1fr; padding:14px 18px}
  .tab-ind{display:none}
  .tab .k{grid-row:auto; padding-top:0}
  .tab .t{font-size:19px}
  .tab .d{display:none !important}
  .canvas-box{aspect-ratio:4/3}
}
.panel-copy{display:none; font-size:16px; color:var(--mist-2)}
@media (max-width: 960px){ .panel-copy{display:block} }

/* Field Companion */
.fc-grid{display:grid; grid-template-columns:minmax(0,1fr) minmax(0, 440px); gap:clamp(32px,6vw,88px); align-items:center}
.fc-copy{display:flex; flex-direction:column; gap:22px; min-width:0}
.fc-copy h2 .lime{color:var(--lime)}
.fc-list{display:flex; flex-wrap:wrap; gap:10px; padding:0; margin:0; list-style:none}
.fc-list li{border:1px solid var(--line-dark); border-radius:999px; padding:8px 16px; font-size:15px; color:var(--mist-2)}
.device{background:var(--night); border:1px solid var(--line-dark); border-radius:32px; padding:28px; display:flex; flex-direction:column; gap:20px}
.device-top{display:flex; justify-content:space-between; align-items:baseline; gap:12px}
.device-top .nm{font-family:var(--display); font-size:22px; font-weight:700}
.device-top .nm span{color:var(--lime)}
.device-top .tg{font-family:var(--mono); font-size:11px; letter-spacing:.14em; color:var(--haze); text-transform:uppercase}
.dt-label{display:flex; justify-content:space-between; font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--haze)}
.big{display:flex; align-items:baseline; gap:10px}
.big output{font-family:var(--display); font-size:76px; font-weight:700; line-height:1; font-variant-numeric:tabular-nums}
.big small{font-family:var(--mono); font-size:15px; color:var(--haze)}
#dt{width:100%; height:32px; -webkit-appearance:none; appearance:none; background:transparent; cursor:pointer; --fill:22%; --col:var(--warn)}
#dt::-webkit-slider-runnable-track{height:8px; border-radius:99px; background:linear-gradient(90deg, var(--col) var(--fill), var(--line-dark) var(--fill))}
#dt::-moz-range-track{height:8px; border-radius:99px; background:linear-gradient(90deg, var(--col) var(--fill), var(--line-dark) var(--fill))}
#dt::-webkit-slider-thumb{-webkit-appearance:none; width:26px; height:26px; margin-top:-9px; border-radius:50%; background:var(--mist); border:4px solid var(--col); transition:transform var(--t-fast) ease}
#dt::-moz-range-thumb{width:18px; height:18px; border-radius:50%; background:var(--mist); border:4px solid var(--col)}
#dt:active::-webkit-slider-thumb{transform:scale(1.15)}
#dt:focus-visible{outline:2px solid var(--lime); outline-offset:4px; border-radius:99px}
.pill.pop{animation:pop var(--t-mid) var(--ease-out)}
@keyframes pop{0%{transform:scale(.92)}100%{transform:none}}
@media (prefers-reduced-motion: reduce){ .pill.pop{animation:none} }
.scale{display:flex; height:10px; border-radius:99px; overflow:hidden; gap:2px}
.scale span{display:block}
.sc1{flex:1; background:var(--rule)}.sc2{flex:3; background:var(--watch)}.sc3{flex:12; background:var(--warn)}.sc4{flex:24; background:var(--crit)}
.wm{color:var(--mist)}
.band-flush{padding-top:0}
.foot-blurb{max-width:34ch}
.scale-legend{display:flex; justify-content:space-between; font-family:var(--mono); font-size:11px; color:var(--haze); font-variant-numeric:tabular-nums}
.verdict{border-radius:18px; background:var(--ink); padding:18px 20px; display:flex; flex-direction:column; gap:8px; border-top:5px solid var(--warn); transition:border-color .25s ease}
.pill{display:inline-flex; width:fit-content; border-radius:99px; padding:5px 12px; font-size:13px; font-weight:600; background:rgba(255,209,102,.14); color:var(--warn)}
.verdict p{font-size:16px; color:var(--mist-2)}
.std{font-family:var(--mono); font-size:11px; line-height:1.6; color:var(--haze)}

/* How we work */
.steps{display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:clamp(20px,3vw,40px); margin-top:56px; counter-reset:step}
.step{border-top:2px solid var(--ink); padding-top:26px; display:flex; flex-direction:column; gap:14px}
.step .n{font-family:var(--mono); font-size:13px; letter-spacing:.14em; color:var(--violet)}
.step h3{font-size:clamp(30px,3vw,40px); font-weight:700; letter-spacing:-.01em}
.step p{color:var(--slate); max-width:34ch}
.flow{margin-top:56px; height:56px; width:100%; display:block}
@media (max-width: 760px){ .steps{grid-template-columns:1fr} .flow{display:none} }

/* Industries */
.marquee{margin-top:44px; overflow:hidden; -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent)}
.track{display:flex; gap:14px; width:max-content; animation:slide 48s linear infinite}
.marquee:hover .track,.marquee.paused .track{animation-play-state:paused}
.strip-head{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:20px}
.pause-btn{display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 18px; border-radius:999px; border:1.5px solid var(--rule); background:var(--paper); color:var(--ink); font:500 13px var(--mono); letter-spacing:.08em; text-transform:uppercase; cursor:pointer}
.pause-btn:hover{border-color:var(--haze)}
@media (prefers-reduced-motion: reduce){ .pause-btn{display:none} }
.chip{flex:0 0 auto; background:var(--paper); border:1px solid var(--rule); border-radius:999px; padding:16px 28px; font-size:18px; font-weight:500; white-space:nowrap}
.chip{transition:border-color var(--t-fast) ease, color var(--t-fast) ease}.chip:hover{border-color:var(--violet); color:var(--violet)}
.chip i{font-style:normal; font-family:var(--mono); font-size:12px; color:var(--violet); margin-right:12px; letter-spacing:.1em}
@keyframes slide{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion: reduce){ .track{animation:none; flex-wrap:wrap; width:auto} .track [aria-hidden="true"]{display:none} .marquee{mask-image:none; -webkit-mask-image:none} }

/* Promises */
.promise-band{background:var(--paper); border-block:1px solid var(--rule)}
.promises{display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:clamp(24px,4vw,64px); margin-top:48px}
.promise{display:flex; flex-direction:column; gap:18px}
.promise q{font-family:var(--display); font-size:clamp(28px, 3.2vw, 44px); line-height:1.14; font-weight:600; letter-spacing:-.01em; quotes:none}
.promise q em{font-style:normal; color:var(--violet)}
.promise span{font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--slate)}
@media (max-width: 760px){ .promises{grid-template-columns:1fr} }

/* Questions (accordion) */
.faq{display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(32px,6vw,96px); align-items:start}
.faq-list{border-top:2px solid var(--ink)}
.qa{border-bottom:1px solid var(--rule)}
.qa h3{margin:0; font-size:inherit}
.qa-btn{width:100%; display:flex; justify-content:space-between; align-items:center; gap:20px; padding:24px 0; min-height:72px; background:transparent; border:0; text-align:left; cursor:pointer; font:600 clamp(19px,1.7vw,22px)/1.3 var(--display); color:var(--ink)}
.qa-btn:hover{color:var(--violet)}
.qa-ico{flex:0 0 auto; width:36px; height:36px; border-radius:50%; border:1.5px solid var(--rule); display:grid; place-items:center; transition:transform var(--t-mid) var(--ease-out), background-color var(--t-fast) ease, border-color var(--t-fast) ease}
.qa-btn[aria-expanded="true"] .qa-ico{transform:rotate(45deg); background:var(--ink); border-color:var(--ink); color:var(--lime)}
.qa-panel{display:grid; grid-template-rows:0fr; transition:grid-template-rows var(--t-mid) var(--ease)}
.qa-panel > div{overflow:hidden}
.qa-panel p{color:var(--slate); max-width:60ch; padding-bottom:26px}
.qa-btn[aria-expanded="true"] + .qa-panel, .qa.open .qa-panel{grid-template-rows:1fr}
@media (prefers-reduced-motion: reduce){ .qa-panel,.qa-ico{transition:none} }
@media (max-width: 860px){ .faq{grid-template-columns:1fr} }

/* Closing */
.closing{background:var(--violet); color:var(--paper)}
.closing-row{display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:32px}
.closing h2{font-size:clamp(40px, 6vw, 84px); line-height:1; font-weight:700; letter-spacing:-.03em; max-width:15ch}
.closing h2 span{color:var(--lime)}
.closing .btn{background:var(--paper); color:var(--ink)}
.closing .btn:hover{background:var(--lime)}

/* Footer */
.site-foot{background:var(--ink); color:var(--mist-2); font-size:15px}
.foot-grid{display:grid; grid-template-columns:minmax(0,1.3fr) repeat(4, minmax(0,1fr)); gap:32px; padding-block:72px 40px}
.foot-brand{display:flex; flex-direction:column; gap:16px}
.foot-brand .tag{font-family:var(--mono); font-size:13px; letter-spacing:.24em; text-transform:uppercase; color:var(--lime)}
.foot-col{display:flex; flex-direction:column; gap:10px; min-width:0}
.foot-col h3{font-family:var(--mono); font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--haze); font-weight:500; margin-bottom:6px}
.foot-col a{text-decoration:none; color:var(--mist-2); width:fit-content; min-height:32px; display:inline-flex; align-items:center}
.foot-col a{background:linear-gradient(var(--lime),var(--lime)) left calc(100% - 4px)/0 1px no-repeat; transition:background-size var(--t-mid) var(--ease), color var(--t-fast) ease}
.foot-col a:hover{color:var(--lime); background-size:100% 1px}
.foot-col address{font-style:normal; line-height:1.6}
.copyable{font-family:var(--mono); font-size:14px; color:var(--mist); background:transparent; border:0; padding:10px 0; min-height:44px; cursor:pointer; text-align:left; display:inline-flex; gap:8px; align-items:center}
.copyable:hover{color:var(--lime)}
.copyable .ck{display:none}.copyable.done .ck{display:inline}.copyable.done .cp{display:none}.copyable.done{color:var(--lime)}
.foot-base{border-top:1px solid var(--line-dark); padding-block:24px; display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; font-size:13px; color:var(--haze)}
.foot-base nav{display:flex; gap:20px; flex-wrap:wrap}
.foot-base a{color:var(--haze); text-decoration:none; display:inline-flex; align-items:center; min-height:32px}
.foot-base a:hover{color:var(--mist)}
@media (max-width: 880px){ .foot-grid{grid-template-columns:1fr 1fr} .foot-brand{grid-column:1/-1} }
@media (max-width: 480px){ .foot-grid{grid-template-columns:1fr} }

/* Reveal: content is visible at rest; the motion only adds a small lift */
.reveal{transition:transform var(--t-slow) var(--ease); transition-delay:calc(var(--i, 0) * 90ms)}
.js .reveal.pending{transform:translateY(22px)}
@media (prefers-reduced-motion: reduce){ .js .reveal.pending{transform:none} }

/* Toast */
.toast{position:fixed; left:50%; bottom:calc(24px + env(safe-area-inset-bottom, 0px)); transform:translate(-50%, 20px); background:var(--ink); color:var(--mist); border:1px solid var(--line-dark); border-radius:999px; padding:12px 20px; font-size:14px; opacity:0; pointer-events:none; transition:opacity .25s ease, transform .25s ease; z-index:80; max-width:calc(100% - 32px); text-align:center}
.toast.on{opacity:1; transform:translate(-50%, 0)}
.skip{position:absolute; left:-999px; top:8px; background:var(--lime); color:var(--ink); padding:10px 16px; border-radius:999px; z-index:100}
.skip:focus{left:16px}
.sr{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap}

/* ================= Inner pages (same tokens, same components) ================= */
.nav a[aria-current="page"]{color:var(--paper)}
.nav a[aria-current="page"]:not(.btn)::after{transform:scaleX(1)}

/* Page hero (SpokenHero) */
.ph{background:var(--ink); color:var(--mist)}
.ph-in{padding-block:clamp(56px,8vw,112px) clamp(56px,7vw,96px); display:flex; flex-direction:column; gap:24px; max-width:900px}
.ph .eyebrow{color:var(--haze)}
.ph h1{font-size:clamp(52px,8vw,104px); line-height:.92; font-weight:700; letter-spacing:-.03em}
.ph h1 span{color:var(--lime)}
.ph .lede{color:var(--mist-2); font-size:clamp(18px,1.7vw,21px)}
.ph .hero-actions{margin-top:4px}
.crumb{font-family:var(--mono); font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--haze)}
.crumb a{color:var(--haze); text-decoration:none}.crumb a:hover{color:var(--lime)}
.js .ph.intro .ph-in > *{animation:lift var(--t-slow) var(--ease-out) both}
.js .ph.intro .ph-in > *:nth-child(2){animation-delay:.08s}.js .ph.intro .ph-in > *:nth-child(3){animation-delay:.16s}.js .ph.intro .ph-in > *:nth-child(4){animation-delay:.24s}.js .ph.intro .ph-in > *:nth-child(5){animation-delay:.32s}
@media (prefers-reduced-motion: reduce){ .js .ph.intro .ph-in > *{animation:none} }

/* Rule blocks (StepRule without numbers) */
.rules{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(20px,3vw,36px); margin-top:56px}
.rules.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.rules.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.rb{border-top:2px solid var(--ink); padding-top:22px; display:flex; flex-direction:column; gap:10px; min-width:0}
.rb .k{font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--violet)}
.rb h3{font-size:clamp(22px,2vw,26px); font-weight:700; line-height:1.2}
.rb p{color:var(--slate)}
.dark .rb{border-top-color:var(--mist)}
.dark .rb .k{color:var(--haze)}
.dark .rb p{color:var(--mist-2)}
.dark .step{border-top-color:var(--mist)}
.dark .step .n{color:var(--haze)}
.dark .step p{color:var(--mist-2)}
@media (max-width: 960px){ .rules{grid-template-columns:repeat(2,minmax(0,1fr))} .rules.three{grid-template-columns:1fr} }
@media (max-width: 600px){ .rules,.rules.two{grid-template-columns:1fr} }

/* Product-group cards */
.cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr)); gap:18px; margin-top:48px}
.pcard{background:var(--paper); border:1px solid var(--rule); border-radius:var(--radius); padding:26px; display:flex; flex-direction:column; gap:12px; min-width:0; transition:border-color var(--t-fast) ease, transform var(--t-mid) var(--ease)}
.pcard:hover{border-color:var(--haze); transform:translateY(-3px)}
.pcard .tag{font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--violet)}
.pcard h3{font-size:24px; font-weight:700; line-height:1.15}
.pcard p{color:var(--slate); font-size:16px}
.pcard ul{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:6px; font-size:15px; color:var(--ink)}
.pcard li{display:flex; gap:10px}
.pcard li::before{content:""; flex:0 0 auto; width:6px; height:6px; margin-top:.6em; border-radius:50%; background:var(--violet)}
.pcard .link-arrow{margin-top:auto}
.pcard[hidden]{display:none}
.pcard.in{animation:cardIn var(--t-mid) var(--ease-out) both}
@keyframes cardIn{from{opacity:.2; transform:translateY(10px)}to{opacity:1; transform:none}}
@media (prefers-reduced-motion: reduce){ .pcard,.pcard.in{animation:none; transition:none} .pcard:hover{transform:none} }
.licence{display:flex; gap:12px; align-items:flex-start; margin-top:28px; font-size:15px; color:var(--slate); max-width:70ch}
.licence svg{flex:0 0 auto; margin-top:3px; color:var(--violet)}
.dark .licence{color:var(--mist-2)}.dark .licence svg{color:var(--lime)}

/* Filter chips */
.filters{display:flex; flex-wrap:wrap; gap:10px; margin-top:36px}
button.chip{font:500 16px var(--body); color:var(--ink); cursor:pointer; padding:12px 22px; min-height:48px}
button.chip[aria-pressed="true"]{background:var(--ink); color:var(--mist); border-color:var(--ink)}
.count{font-family:var(--mono); font-size:13px; color:var(--slate); margin-top:18px}

/* Solution rows */
.srows{margin-top:48px; border-bottom:1px solid var(--rule)}
.srow{display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(24px,5vw,80px); padding-block:clamp(36px,5vw,56px); border-top:1px solid var(--rule); align-items:start}
.srow:first-child{border-top:2px solid var(--ink)}
.srow .idx{font-family:var(--mono); font-size:13px; letter-spacing:.14em; text-transform:uppercase; color:var(--violet)}
.srow h2{font-size:clamp(34px,4vw,52px); line-height:1.02; font-weight:700; letter-spacing:-.02em; margin-top:10px}
.srow h2 span{color:var(--violet)}
.srow .body{display:flex; flex-direction:column; gap:16px}
.srow .body p{color:var(--slate); font-size:18px}
.ticks-list{margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:8px}
.ticks-list li{display:flex; gap:12px}
.ticks-list li::before{content:""; flex:0 0 auto; width:14px; height:2px; margin-top:.8em; background:var(--violet)}
.dark .ticks-list li::before{background:var(--lime)}
@media (max-width: 860px){ .srow{grid-template-columns:1fr} }

/* Tool fields on dark */
.tool-fields{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px}
.tf{display:flex; flex-direction:column; gap:6px; min-width:0}
.tf label{font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--haze)}
.tf .in{display:flex; align-items:stretch; border:1.5px solid var(--line-dark); border-radius:14px; background:var(--ink); overflow:hidden; transition:border-color var(--t-fast) ease}
.tf .in:focus-within{border-color:var(--lime)}
.tf input,.tf select{flex:1; min-width:0; border:0; background:transparent; color:var(--mist); font:500 20px var(--mono); padding:12px 14px; font-variant-numeric:tabular-nums}
.tf select{font:500 16px var(--body); appearance:none; -webkit-appearance:none; cursor:pointer; background-image:linear-gradient(45deg,transparent 50%,var(--haze) 50%),linear-gradient(135deg,var(--haze) 50%,transparent 50%); background-position:calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size:6px 6px; background-repeat:no-repeat; padding-right:36px}
.tf select option{background:var(--night); color:var(--mist)}
.tf input:focus,.tf select:focus{outline:none}
.tf .u{display:flex; align-items:center; padding:0 14px; font-family:var(--mono); font-size:13px; color:var(--haze); border-left:1px solid var(--line-dark)}
.tf.full{grid-column:1/-1}
.facts{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border-top:1px solid var(--line-dark); margin:0}
.facts div{padding:10px 0; border-bottom:1px solid var(--line-dark); min-width:0}
.facts dt{font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--haze)}
.facts dd{margin:2px 0 0; font-family:var(--mono); font-size:15px; color:var(--mist); font-variant-numeric:tabular-nums}
.route{position:relative; height:46px; margin-top:4px}
.route .cable{position:absolute; left:0; right:0; top:20px; height:6px; border-radius:99px; background:var(--line-dark)}
.route .done{position:absolute; left:0; top:20px; height:6px; border-radius:99px; background:var(--lime); opacity:.5; transition:width var(--t-mid) var(--ease)}
.route .pin{position:absolute; top:12px; width:22px; height:22px; margin-left:-11px; border-radius:50%; background:var(--lime); box-shadow:0 0 0 5px var(--night); transition:left var(--t-mid) var(--ease)}
.route-legend{display:flex; justify-content:space-between; font-family:var(--mono); font-size:11px; color:var(--haze); font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion: reduce){ .route .done,.route .pin{transition:none} }
@media (max-width: 480px){ .tool-fields{grid-template-columns:1fr} }

/* Statement band (mission, vision, industry question) */
.statement{font-family:var(--display); font-size:clamp(34px,5vw,68px); line-height:1.04; font-weight:700; letter-spacing:-.025em; max-width:18ch}
.statement span{color:var(--violet)}
.dark .statement span{color:var(--lime)}
.mv{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(32px,6vw,96px); margin-top:48px}
.mv > div{display:flex; flex-direction:column; gap:18px; border-top:2px solid var(--ink); padding-top:24px}
.mv .statement{font-size:clamp(30px,3.6vw,48px)}
@media (max-width: 860px){ .mv{grid-template-columns:1fr} }

/* Name decoded */
.name-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(20px,3vw,40px); margin-top:52px}
.name-grid .rb .big-l{font-family:var(--display); font-size:clamp(64px,8vw,112px); font-weight:700; line-height:.9; letter-spacing:-.03em; color:var(--violet)}
.say{margin-top:40px; font-family:var(--mono); font-size:14px; color:var(--slate); letter-spacing:.06em}
.say b{font-family:var(--display); font-size:22px; color:var(--ink); letter-spacing:0; margin-left:8px}
@media (max-width: 760px){ .name-grid{grid-template-columns:1fr} }

/* Symbol and seal */
.duo{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(32px,6vw,96px); margin-top:56px}
.duo > div{display:flex; flex-direction:column; gap:18px}
.duo .art{width:min(100%,260px); height:auto; aspect-ratio:1/1; max-width:100%}
.duo h3{font-size:clamp(26px,2.6vw,34px); font-weight:700}
.duo p{color:var(--mist-2); max-width:44ch}
@media (max-width: 760px){ .duo{grid-template-columns:1fr} }

/* Offices */
.offices{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:48px}
.office{background:var(--night); border:1px solid var(--line-dark); border-radius:var(--radius); padding:28px; display:flex; flex-direction:column; gap:14px; min-width:0}
.office .city{font-family:var(--display); font-size:clamp(36px,4vw,52px); font-weight:700; line-height:1}
.office .when{font-family:var(--mono); font-size:13px; color:var(--haze); font-variant-numeric:tabular-nums}
.office .when b{color:var(--lime); font-weight:500}
.office address{font-style:normal; color:var(--mist-2)}
.office .row{display:flex; flex-wrap:wrap; gap:10px 18px; align-items:center; font-family:var(--mono); font-size:14px; color:var(--mist-2)}
.office .tbc{color:var(--haze)}
.light-offices .office{background:var(--paper); border-color:var(--rule); color:var(--ink)}
.light-offices .office address,.light-offices .office .row{color:var(--slate)}
.light-offices .office .when{color:var(--slate)}.light-offices .office .when b{color:var(--violet)}
.light-offices .copyable{color:var(--ink)}.light-offices .copyable:hover,.light-offices .copyable.done{color:var(--violet)}
@media (max-width: 760px){ .offices{grid-template-columns:1fr} }

/* Contact form */
.contact-grid{display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr); gap:clamp(32px,5vw,72px); align-items:start}
.form{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px}
.field{display:flex; flex-direction:column; gap:8px; min-width:0}
.field.full{grid-column:1/-1}
.field label{font-weight:600; font-size:15px}
.field label .opt{font-weight:400; color:var(--slate)}
.field .help{font-size:14px; color:var(--slate); margin-top:-4px}
.input{min-height:52px; width:100%; border:1.5px solid var(--rule); border-radius:14px; background:var(--paper); padding:12px 16px; font:400 17px var(--body); color:var(--ink); transition:border-color var(--t-fast) ease, box-shadow var(--t-fast) ease}
.input:hover{border-color:var(--haze)}
.input:focus{outline:none; border-color:var(--violet); box-shadow:0 0 0 3px rgba(106,61,240,.25)}
textarea.input{min-height:150px; resize:vertical; line-height:1.5}
select.input{appearance:none; -webkit-appearance:none; cursor:pointer; background-image:linear-gradient(45deg,transparent 50%,var(--slate) 50%),linear-gradient(135deg,var(--slate) 50%,transparent 50%); background-position:calc(100% - 22px) 50%, calc(100% - 16px) 50%; background-size:6px 6px; background-repeat:no-repeat; padding-right:40px}
.field .err{display:none; gap:8px; align-items:center; font-size:14px; font-weight:600; color:var(--error)}
.field.is-error .input{border-color:var(--error)}
.field.is-error .err{display:flex; animation:shake .3s ease}
@keyframes shake{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
@media (prefers-reduced-motion: reduce){ .field.is-error .err{animation:none} }
.hp{position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden}
.form-foot{grid-column:1/-1; display:flex; flex-wrap:wrap; align-items:center; gap:16px 24px}
.form-foot .small{font-size:14px; color:var(--slate); max-width:46ch}
.btn .spin{display:none; width:16px; height:16px; border-radius:50%; border:2px solid currentColor; border-right-color:transparent; animation:spin .7s linear infinite}
.btn.loading .spin{display:inline-block}.btn.loading svg{display:none}
@keyframes spin{to{transform:rotate(360deg)}}
.form-alert{grid-column:1/-1; display:none; border-radius:16px; padding:16px 18px; background:var(--paper); border:1px solid var(--rule); border-top:4px solid var(--error); color:var(--ink)}
.form-alert.on{display:block}
.success{display:none; border-radius:var(--radius); background:var(--paper); border:1px solid var(--rule); border-top:5px solid var(--success); padding:28px; flex-direction:column; gap:10px}
.success.on{display:flex; animation:cardIn var(--t-slow) var(--ease-out)}
.success h3{font-size:28px; font-weight:700}
.success p{color:var(--slate)}
.side{display:flex; flex-direction:column; gap:18px}
@media (max-width: 960px){ .contact-grid{grid-template-columns:1fr} }
@media (max-width: 560px){ .form{grid-template-columns:1fr} }

/* Legal / text pages */
.prose{max-width:72ch; display:flex; flex-direction:column; gap:16px}
.prose h2{font-size:clamp(24px,2.4vw,30px); font-weight:700; margin-top:24px}
.prose p,.prose li{color:var(--slate)}
.prose ul{margin:0; padding-left:22px; display:flex; flex-direction:column; gap:6px}
.prose strong{color:var(--ink)}
.prose .tbc{background:var(--paper); border:1px dashed var(--haze); border-radius:6px; padding:0 6px; color:var(--ink); font-family:var(--mono); font-size:.88em}
.draft{background:var(--ink); color:var(--lime); font-family:var(--mono); font-size:12px; letter-spacing:.14em; text-transform:uppercase}
.draft .wrap{padding-block:10px; display:flex; gap:12px; flex-wrap:wrap}
.draft span{color:var(--mist-2); letter-spacing:.04em; text-transform:none}
.updated{font-family:var(--mono); font-size:13px; color:var(--slate)}

/* Field Companion page */
.fc-band{background:var(--ink); color:var(--mist)}
.fc-band .ph-in{padding-bottom:40px}
.fc-band .fcx{padding-bottom:clamp(56px,8vw,104px)}
.tips{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(20px,3vw,36px); margin-top:48px}
@media (max-width: 860px){ .tips{grid-template-columns:1fr} }

.pcard .ranges{font-family:var(--mono); font-size:12.5px; line-height:1.55; color:var(--slate); border-top:1px solid var(--rule); padding-top:12px; margin-top:4px}
.pcard .ranges span{display:block; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--haze); margin-bottom:2px}

.foot-col .tel,.foot-col .wa{color:var(--mist); font-size:15px; min-height:44px; display:inline-flex; align-items:center; gap:8px}
.foot-col .tel:hover,.foot-col .wa:hover{color:var(--lime)}
.office .tel{color:inherit; text-decoration:none; min-height:44px; display:inline-flex; align-items:center}
.light-offices .office .tel{color:var(--ink)}
.office .tel:hover{color:var(--violet)}
.wa-btn{align-self:flex-start; gap:10px}

.pcard .pimg{margin:-26px -26px 6px; aspect-ratio:4/3; border-radius:var(--radius) var(--radius) 0 0; overflow:hidden; background:var(--mist); display:flex; align-items:center; justify-content:center; border-bottom:1px solid var(--rule)}
.pcard .pimg img{width:100%; height:100%; object-fit:contain; display:block}
.pcard .pimg.ph{background:var(--mist); flex-direction:column; gap:12px}
.pcard .pimg.ph svg{width:46%; height:auto}
.pcard .pimg.ph svg path{stroke:var(--mist-2)}
.pcard .pimg.ph span{font-family:var(--mono); font-size:12px; letter-spacing:.24em; color:var(--haze)}
.pcard.cta .pimg{display:none}
.photo-band{padding-block:56px 0}
.photo-band + .band{padding-top:72px}
.photo{margin:0 auto; display:flex; flex-direction:column; gap:12px}
.photo img{width:100%; height:auto; aspect-ratio:1600/686; object-fit:cover; border-radius:var(--radius-lg,22px); display:block; background:var(--mist-2)}
.photo figcaption{font-family:var(--mono); font-size:12px; letter-spacing:.04em; color:var(--slate)}
.brand-logo{height:34px; width:auto; align-self:flex-start; margin-bottom:4px}
.brand-logo.tall{height:46px; margin-top:-6px; margin-bottom:-2px}

.dl-groups{display:grid; grid-template-columns:1fr; gap:40px; margin-top:12px}
.dl-group h3{font-family:var(--mono); font-size:12px; letter-spacing:.18em; text-transform:uppercase; color:var(--violet); font-weight:500; margin-bottom:10px}
.dl-list{list-style:none; margin:0; padding:0; border-top:1px solid var(--rule)}
.dl-list li{display:flex; align-items:center; justify-content:space-between; gap:20px; padding:18px 0; border-bottom:1px solid var(--rule)}
.dl-list li > div{display:flex; flex-direction:column; gap:4px; min-width:0}
.dl-t{font-family:var(--display); font-weight:700; font-size:19px; color:var(--ink)}
.dl-d{color:var(--slate); font-size:15px}
.dl-m{font-family:var(--mono); font-size:12px; color:var(--haze); letter-spacing:.04em}
.dl-btn{display:inline-flex; align-items:center; gap:8px; flex:0 0 auto; min-height:44px; padding:0 18px; border-radius:999px; border:1.5px solid var(--rule); background:var(--paper); color:var(--ink); font-weight:600; font-size:15px; text-decoration:none; transition:border-color .2s ease, color .2s ease}
.dl-btn:hover{border-color:var(--violet); color:var(--violet)}
@media (max-width:560px){.dl-list li{flex-direction:column; align-items:flex-start}}

.verdict.calm{border-top-color:var(--line-dark)}

/* ===== Field Companion (scoped) ===== */
.fcx{
  --bg: #120F1F; --surface: #1C1830; --surface-2: #241F3B; --line: #3A3354;
  --fg: #F2F0F7; --muted: #A79FC0; --accent: #D4FF3A; --on-accent: #120F1F; --violet: #B9A6FF;
  --ok: #7BE0A8; --p4: #9FB8FF; --p3: #FFD166; --p2: #FF9F43; --p1: #FF5C6C;
  --ok-bg: rgba(123,224,168,.14); --p4-bg: rgba(159,184,255,.14); --p3-bg: rgba(255,209,102,.14); --p2-bg: rgba(255,159,67,.16); --p1-bg: rgba(255,92,108,.16);
  --f-display: 'Outfit', 'Segoe UI', system-ui, sans-serif;
  --f-body: 'Instrument Sans', 'Segoe UI', system-ui, sans-serif;
  --f-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --r: 14px;
  
color:var(--fg); font-family:var(--f-body); font-size:15px; line-height:1.5}
.fcx /* Layout: one tool at a time. Phone: inputs,.fcx then the reading card. Wide: inputs left,.fcx reading right,.fcx recent checks underneath. */




*{ box-sizing: border-box; }.fcx{ background: var(--bg); color: var(--fg); font-family: var(--f-body); font-size: 15px; line-height: 1.5; }.fcx .fc-wrap{ max-width: 1040px; margin: 0 auto; padding-inline: 18px; padding-block: 22px 40px; display: flex; flex-direction: column; gap: 22px; }.fcx h1,.fcx h2,.fcx h3{ font-family: var(--f-display); margin: 0; text-wrap: balance; }.fcx .fc-mono{ font-family: var(--f-mono); font-variant-numeric: tabular-nums; }.fcx header.top{ display: flex; flex-direction: column; gap: 14px; }.fcx .brandrow{ display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }.fcx .wordmark{ color: var(--fg); display: block; }.fcx .tag{ font-family: var(--f-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); border: 1px solid var(--line); border-radius: 99px; padding: 4px 10px; }.fcx .title{ display: flex; flex-direction: column; gap: 6px; }.fcx .title h1{ font-size: clamp(30px, 6vw, 46px); font-weight: 700; letter-spacing: -0.02em; line-height: 1.02; }.fcx .title h1 span{ color: var(--accent); }.fcx .title p{ margin: 0; color: var(--muted); max-width: 58ch; }.fcx .fc-tabs{ display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; background: var(--surface); border: 1px solid var(--line); border-radius: 16px; padding: 6px; }.fcx .fc-tab{ appearance: none; border: 0; background: transparent; color: var(--muted); font-family: var(--f-body); font-weight: 600; font-size: 14px; padding: 10px 6px; border-radius: 11px; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 2px; }.fcx .fc-tab small{ font-family: var(--f-mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; font-weight: 400; }.fcx .fc-tab[aria-selected="true"]{ background: var(--accent); color: var(--on-accent); }.fcx .fc-tab:focus-visible,.fcx button:focus-visible,.fcx input:focus-visible,.fcx select:focus-visible{ outline: 2px solid var(--violet); outline-offset: 2px; }.fcx .fc-tool{ display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
@media (min-width: 820px) { .fcx .fc-tool { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); align-items: start; } .fcx .fc-reading { position: sticky; top: calc(env(safe-area-inset-top, 0px) + 16px); }}.fcx .fc-panel{ background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 18px; display: flex; flex-direction: column; gap: 14px; min-width: 0; }.fcx .panel-head{ display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }.fcx .panel-head h2{ font-size: 20px; font-weight: 600; }.fcx .eg{ font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }.fcx .fc-field{ display: flex; flex-direction: column; gap: 6px; min-width: 0; }.fcx .fc-field label,.fcx .legend{ font-size: 13px; font-weight: 600; }.fcx .fc-hint{ font-size: 12.5px; color: var(--muted); }.fcx .row2{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }.fcx .inputwrap{ display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); overflow: hidden; }.fcx .inputwrap input,.fcx .inputwrap select{ flex: 1; min-width: 0; border: 0; background: transparent; color: var(--fg); font-family: var(--f-mono); font-size: 17px; padding: 10px 12px; font-variant-numeric: tabular-nums; }.fcx select.plain{ width: 100%; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); color: var(--fg); font-family: var(--f-body); font-size: 14.5px; padding: 10px 12px; }.fcx .unit{ display: flex; align-items: center; padding: 0 12px; font-family: var(--f-mono); font-size: 13px; color: var(--muted); border-left: 1px solid var(--line); }.fcx .seg{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }.fcx .seg label{ display: flex; align-items: center; justify-content: center; text-align: center; gap: 8px; border: 1px solid var(--line); border-radius: 10px; padding: 9px 10px; font-size: 13.5px; cursor: pointer; background: var(--surface-2); }.fcx .seg input{ position: absolute; opacity: 0; pointer-events: none; }.fcx .seg label:has(input:checked){ border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent); }.fcx .seg label:has(input:focus-visible){ outline: 2px solid var(--violet); outline-offset: 2px; }.fcx details.opt{ border-top: 1px dashed var(--line); padding-top: 12px; }.fcx details.opt summary{ cursor: pointer; font-size: 13.5px; font-weight: 600; color: var(--violet); }.fcx details.opt[open] summary{ margin-bottom: 12px; }.fcx .fc-reading{ background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); overflow: hidden; display: flex; flex-direction: column; min-width: 0; }.fcx .fc-stripe{ height: 6px; background: var(--muted); }.fcx .reading-body{ padding: 18px; display: flex; flex-direction: column; gap: 16px; }.fcx .fc-big{ display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }.fcx .fc-big .fc-num{ font-family: var(--f-display); font-weight: 700; font-size: clamp(44px, 9vw, 60px); line-height: 1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }.fcx .fc-big .fc-u{ font-family: var(--f-mono); color: var(--muted); font-size: 15px; }.fcx .fc-chip{ display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 13.5px; border-radius: 99px; padding: 6px 12px; width: fit-content; }.fcx .fc-chip::before{ content: ""; width: 8px; height: 8px; border-radius: 99px; background: currentColor; }.fcx .fc-verdict{ display: flex; flex-direction: column; gap: 6px; }.fcx .fc-verdict p{ margin: 0; }.fcx .fc-facts{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--line); }.fcx .fc-facts div{ padding: 10px 0; border-bottom: 1px solid var(--line); display: flex; flex-direction: column; gap: 2px; min-width: 0; }.fcx .fc-facts div:nth-child(odd){ padding-right: 12px; }.fcx .fc-facts dt{ font-size: 11.5px; color: var(--muted); font-family: var(--f-mono); letter-spacing: .06em; text-transform: uppercase; }.fcx .fc-facts dd{ margin: 0; font-family: var(--f-mono); font-size: 15px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }.fcx .fc-note{ font-size: 13px; color: var(--muted); border-left: 2px solid var(--line); padding-left: 10px; margin: 0; }.fcx .fc-note.warn{ border-color: var(--p3); color: var(--fg); }.fcx .fc-ref{ font-size: 12px; color: var(--muted); margin: 0; }.fcx .fc-actions{ display: flex; gap: 8px; flex-wrap: wrap; }.fcx .fc-btn{ appearance: none; border: 1px solid var(--line); background: var(--surface-2); color: var(--fg); font-family: var(--f-body); font-weight: 600; font-size: 14px; border-radius: 10px; padding: 10px 14px; cursor: pointer; }.fcx .fc-btn.primary{ background: var(--accent); color: var(--on-accent); border-color: var(--accent); }.fcx .fc-status{ font-size: 13px; color: var(--muted); align-self: center; }.fcx /* Severity scale drawn to scale */
.fc-scale{ display: flex; flex-direction: column; gap: 6px; }.fcx .fc-track{ position: relative; height: 14px; border-radius: 99px; display: flex; overflow: visible; }.fcx .fc-track .fc-band-seg{ height: 100%; }.fcx .fc-track .fc-band-seg:first-child{ border-radius: 99px 0 0 99px; }.fcx .fc-track .fc-band-seg:last-child{ border-radius: 0 99px 99px 0; }.fcx .marker{ position: absolute; top: -5px; width: 4px; height: 24px; border-radius: 2px; background: var(--fg); transform: translateX(-2px); box-shadow: 0 0 0 2px var(--surface); }.fcx .marker.ghost{ background: transparent; border: 2px dashed var(--fg); width: 0; box-shadow: none; }.fcx .fc-ticks{ position: relative; height: 16px; font-family: var(--f-mono); font-size: 10.5px; color: var(--muted); }.fcx .fc-ticks span{ position: absolute; transform: translateX(-50%); white-space: nowrap; }.fcx .fc-ticks span:first-child{ transform: none; }.fcx .fc-ticks span:last-child{ transform: translateX(-100%); }.fcx .fc-scale-legend{ display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; color: var(--muted); }.fcx .fc-scale-legend i{ display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; }.fcx /* Cable route */
.fc-route{ position: relative; height: 54px; }.fcx .fc-route .fc-cable{ position: absolute; left: 0; right: 0; top: 22px; height: 8px; border-radius: 99px; background: var(--line); }.fcx .fc-route .fc-done{ position: absolute; left: 0; top: 22px; height: 8px; border-radius: 99px; background: var(--violet); opacity: .55; }.fcx .fc-route .fc-pin{ position: absolute; top: 4px; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 2px; }.fcx .fc-route .fc-pin b{ width: 14px; height: 14px; border-radius: 99px; background: var(--accent); box-shadow: 0 0 0 4px var(--surface), 0 0 0 6px var(--accent); margin-top: 18px; }.fcx .fc-route .fc-end{ position: absolute; top: 18px; width: 3px; height: 16px; background: var(--muted); }.fcx .fc-recent{ display: flex; flex-direction: column; gap: 10px; }.fcx .fc-recent h3{ font-size: 16px; font-weight: 600; }.fcx .fc-recent ol{ list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }.fcx .fc-recent li{ background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; font-size: 13.5px; }.fcx .fc-recent li .fc-t{ font-family: var(--f-mono); font-size: 11px; color: var(--muted); }.fcx .fc-recent li .fc-k{ font-family: var(--f-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--violet); }.fcx .fc-empty{ color: var(--muted); font-size: 13.5px; margin: 0; }.fcx .fc-foot{ border-top: 1px solid var(--line); padding-top: 16px; display: flex; flex-direction: column; gap: 8px; font-size: 12.5px; color: var(--muted); }.fcx .fc-foot .fc-sig{ display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-family: var(--f-mono); letter-spacing: .1em; text-transform: uppercase; font-size: 11px; }.fcx textarea.copybox{ width: 100%; min-height: 120px; font-family: var(--f-mono); font-size: 12.5px; background: var(--surface-2); color: var(--fg); border: 1px solid var(--line); border-radius: 10px; padding: 10px; }
@media (max-width: 420px) { .fcx .fc-tab { font-size: 13px; padding: 9px 2px; } .fcx .fc-tab small { display: none; } .fcx .fc-facts { grid-template-columns: minmax(0, 1fr); } .fcx .fc-facts div:nth-child(odd) { padding-right: 0; }}
@media (prefers-reduced-motion: no-preference) { .fcx .marker,.fcx .fc-route .fc-pin,.fcx .fc-route .fc-done { transition: left .35s ease, width .35s ease; }}

.foot-col h2.fh{font-family:var(--mono); font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--haze); font-weight:500; margin:0 0 6px}
.crumb a{display:inline-flex; align-items:center; min-height:28px}
.rules.stack{grid-template-columns:1fr; margin-top:0; gap:22px}
.pcard.cta{background:var(--ink); border-color:var(--ink); color:var(--mist)}
.pcard.cta .tag{color:var(--lime)}.pcard.cta p{color:var(--mist-2)}.pcard.cta .btn{margin-top:auto; align-self:flex-start}
.pcard.cta:hover{border-color:var(--ink)}
.qx-mini{display:flex; flex-wrap:wrap; gap:8px; margin-top:4px}
a.chip.mini{font-size:14px; padding:8px 14px; text-decoration:none; color:var(--ink); min-height:36px; display:inline-flex; align-items:center}
.rules.ind{margin-top:0}
.fc-band h1.fc-h1{font-size:clamp(52px,8vw,104px); line-height:.92; font-weight:700; letter-spacing:-.03em}
.fc-band h1 span{color:var(--lime)}
.fc-band .eyebrow{color:var(--haze)}.fc-band .lede{color:var(--mist-2)}
.fcx .fc-wrap{max-width:none; padding-inline:0; padding-block:0}
.fcx{border-radius:var(--radius)}
