/* ==========================================================================
   SKANGEN.AI — page styles (base, components, sections)
   Tokens, header, mobile menu and footer live in shell.css (loaded first).
   ========================================================================== */

/* ---------- Base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0; font-family:var(--f-body); font-size:var(--fs-body); line-height:1.65;
  background:var(--ink); color:#f5f5f0; -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
h1,h2,h3,h4{ margin:0; font-family:var(--f-display); font-weight:600; line-height:1.05; letter-spacing:-.035em; text-wrap:balance; }
p{ margin:0; }
ul{ margin:0; padding:0; list-style:none; }
::selection{ background:var(--lime); color:var(--ink); }
:focus-visible{ outline:2px solid var(--lime); outline-offset:4px; border-radius:4px; }
.s-light :focus-visible{ outline-color:var(--violet); }

.wrap{ width:min(var(--wrap),100% - 2*var(--gutter)); margin-inline:auto; }
.sec{ padding-block:var(--sec-y); position:relative; }
.sec-tight{ padding-block:clamp(3.5rem,7vw,6rem); }

.sr-only{ position:absolute!important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ---------- Typography helpers ---------- */
.label{
  font-family:var(--f-mono); font-size:var(--fs-label); letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent-2); display:inline-flex; align-items:center; gap:.7em;
}
.label::before{ content:""; width:8px; height:8px; border-radius:50%; background:var(--accent); flex:none; }
.s-dark .label::before{ background:var(--lime); }
.h2{ font-size:var(--fs-h2); margin-top:1rem; }
.h3{ font-size:var(--fs-h3); }
.lead{ font-size:var(--fs-lead); color:var(--muted); line-height:1.55; max-width:58ch; }
.serif{ font-family:var(--f-serif); font-style:italic; font-weight:400; letter-spacing:-.01em; }
.accent{ color:var(--accent); }
.s-dark .accent{ color:var(--lime); }
.s-light .accent{ color:var(--violet); }
.muted{ color:var(--muted); }
.measure{ max-width:64ch; }
.sec-head{ display:grid; gap:1.25rem; max-width:860px; margin-bottom:clamp(2.5rem,6vw,4.5rem); }
.sec-head--split{ max-width:none; grid-template-columns:1.1fr .9fr; align-items:end; gap:3rem; }
.sec-head--split .lead{ max-width:46ch; }

/* ---------- Buttons ---------- */
.btn{
  --btn-bg:var(--lime); --btn-fg:var(--ink);
  display:inline-flex; align-items:center; gap:.65em; padding:.95em 1.5em;
  border-radius:var(--r-pill); font-family:var(--f-display); font-weight:600; font-size:.95rem; letter-spacing:-.01em;
  background:var(--btn-bg); color:var(--btn-fg); border:1px solid transparent;
  position:relative; overflow:hidden; isolation:isolate;
  transition:transform var(--dur-1) var(--ease), box-shadow var(--dur-1) var(--ease), background var(--dur-1) var(--ease), color var(--dur-1) var(--ease), border-color var(--dur-1) var(--ease);
  min-height:48px; white-space:nowrap;
}
.btn::after{
  content:""; position:absolute; inset:0; z-index:-1; border-radius:inherit;
  background:rgba(255,255,255,.35); transform:translateY(101%); transition:transform var(--dur-2) var(--ease);
}
.btn:hover{ transform:translateY(-2px); box-shadow:0 14px 30px rgba(215,255,99,.25); }
.btn:hover::after{ transform:translateY(0); }
.btn:active{ transform:translateY(0); }
.btn .arr{ display:inline-block; transition:transform var(--dur-1) var(--ease); }
.btn:hover .arr{ transform:translateX(4px); }
.btn--ghost{ --btn-bg:transparent; --btn-fg:var(--fg); border-color:var(--line-strong); }
.btn--ghost::after{ background:var(--fg); opacity:.06; }
.btn--ghost:hover{ box-shadow:none; border-color:var(--fg); }
.btn--ink{ --btn-bg:var(--ink); --btn-fg:#fff; }
.btn--ink::after{ background:var(--violet); }
.btn--ink:hover{ box-shadow:0 14px 30px rgba(116,103,255,.25); }
.btn--sm{ padding:.7em 1.1em; font-size:.85rem; min-height:40px; }
.btn[disabled]{ opacity:.6; cursor:progress; transform:none!important; }

.link{
  display:inline-flex; align-items:center; gap:.5em; font-family:var(--f-display); font-weight:600; font-size:.95rem;
  position:relative; padding-bottom:2px;
}
.link::after{ content:""; position:absolute; left:0; bottom:-2px; height:1px; width:100%; background:currentColor; transform:scaleX(.3); transform-origin:left; transition:transform var(--dur-2) var(--ease); }
.link:hover::after{ transform:scaleX(1); }
.link .arr{ transition:transform var(--dur-1) var(--ease); }
.link:hover .arr{ transform:translate(3px,-3px); }

/* ---------- Hero (home) ---------- */
.hero{
  min-height:100svh; display:grid; align-items:center; padding-top:calc(var(--nav-h) + 3rem); padding-bottom:4rem;
  position:relative; overflow:hidden; isolation:isolate;
}
.hero-bg{ position:absolute; inset:0; z-index:-1; pointer-events:none; }
.hero-bg .glow{ position:absolute; width:60vmax; height:60vmax; border-radius:50%; filter:blur(80px); opacity:.55; will-change:transform; }
.hero-bg .glow--v{ background:radial-gradient(circle, rgba(116,103,255,.55), transparent 60%); right:-20vmax; top:-25vmax; }
.hero-bg .glow--l{ background:radial-gradient(circle, rgba(215,255,99,.22), transparent 60%); left:-30vmax; bottom:-30vmax; }
.hero-bg .grid{
  position:absolute; inset:0;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size:72px 72px;
  mask-image:radial-gradient(ellipse 70% 60% at 60% 40%, #000 30%, transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 60% 40%, #000 30%, transparent 100%);
}
.hero-cursor{ position:absolute; width:520px; height:520px; border-radius:50%; background:radial-gradient(circle, rgba(215,255,99,.12), transparent 60%); left:0; top:0; transform:translate(-50%,-50%); pointer-events:none; opacity:0; transition:opacity .6s; will-change:transform; }
.hero.has-cursor .hero-cursor{ opacity:1; }

.hero-grid{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:clamp(2rem,5vw,5rem); align-items:center; }
.hero h1{ font-size:var(--fs-hero); font-weight:600; letter-spacing:-.045em; line-height:.98; margin:1.4rem 0 1.6rem; max-width:12ch; }
.hero h1 .serif{ color:var(--lime); font-size:1.02em; }
.hero .lead{ max-width:52ch; font-size:clamp(1.05rem,1.5vw,1.3rem); }
.hero-cta{ display:flex; gap:.9rem; flex-wrap:wrap; margin-top:2.2rem; }
.hero-meta{ margin-top:3rem; display:flex; gap:2rem; flex-wrap:wrap; color:var(--muted); font-size:.9rem; }
.hero-meta b{ color:#fff; font-weight:600; }

/* word-reveal */
.w{ display:inline-block; overflow:hidden; vertical-align:bottom; padding-bottom:.08em; margin-bottom:-.08em; }
.w > span{ display:inline-block; transform:translateY(110%); transition:transform 1s var(--ease); transition-delay:calc(var(--i)*.07s + .1s); }
.is-ready .w > span{ transform:none; }
.fade-up{ opacity:0; transform:translateY(16px); transition:opacity .9s var(--ease), transform .9s var(--ease); transition-delay:var(--d,.6s); }
.is-ready .fade-up{ opacity:1; transform:none; }

/* hero visual: system diagram + floating cards */
.hero-visual{ position:relative; aspect-ratio:1/1; max-width:620px; justify-self:end; width:100%; }
.sys{ width:100%; height:100%; overflow:visible; padding:9%; }
.sys .ring{ fill:none; stroke:rgba(255,255,255,.08); stroke-width:1; }
.sys .ring--dash{ stroke-dasharray:3 9; stroke:rgba(255,255,255,.14); }
.sys .path{ fill:none; stroke:url(#sysGrad); stroke-width:1.5; stroke-linecap:round; stroke-dasharray:1000; stroke-dashoffset:1000; transition:stroke-dashoffset 2.2s var(--ease-io); }
.is-ready .sys .path{ stroke-dashoffset:0; }
.sys .path:nth-of-type(2){ transition-delay:.25s } .sys .path:nth-of-type(3){ transition-delay:.5s } .sys .path:nth-of-type(4){ transition-delay:.75s }
.sys .node{ transform-box:fill-box; transform-origin:center; opacity:0; transform:scale(.6); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.is-ready .sys .node{ opacity:1; transform:none; }
.sys .node:nth-of-type(1){ transition-delay:.9s } .sys .node:nth-of-type(2){ transition-delay:1.1s } .sys .node:nth-of-type(3){ transition-delay:1.3s } .sys .node:nth-of-type(4){ transition-delay:1.5s } .sys .node:nth-of-type(5){ transition-delay:.5s }
.sys .node text{ font-family:var(--f-mono); font-size:11px; letter-spacing:.1em; fill:#c9ccd4; text-transform:uppercase; }
.sys .core{ filter:drop-shadow(0 0 30px rgba(215,255,99,.35)); }
.sys .pulse{ fill:none; stroke:var(--lime); stroke-width:1.5; opacity:0; transform-box:fill-box; transform-origin:center; }
.is-ready .sys .pulse{ animation:pulse 3.2s var(--ease) 2s infinite; }
@keyframes pulse{ 0%{ transform:scale(1); opacity:.7 } 100%{ transform:scale(2.6); opacity:0 } }
.sys .dot{ fill:var(--lime); offset-rotate:0deg; }
.sys .dot--v{ fill:var(--violet-soft); }
.is-ready .sys .dot{ animation:travel 5s linear 2.3s infinite; }
.is-ready .sys .dot--v{ animation-duration:7s; animation-delay:3s; }
@keyframes travel{ from{ offset-distance:0% } to{ offset-distance:100% } }

.fcard{
  position:absolute; background:rgba(20,22,28,.85); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.12); border-radius:14px; padding:.8rem 1rem; display:flex; gap:.75rem; align-items:center;
  box-shadow:0 20px 50px rgba(0,0,0,.35); font-size:.82rem; color:#e8e9ec; min-width:210px;
  opacity:0; transform:translateY(20px); transition:opacity 1s var(--ease), transform 1s var(--ease);
}
.is-ready .fcard{ opacity:1; transform:none; animation:float 7s ease-in-out infinite; }
.fcard--1{ left:-6%; top:2%; transition-delay:1.6s; animation-delay:0s!important; }
.fcard--2{ right:-8%; top:63%; transition-delay:1.8s; animation-delay:-2.3s!important; }
.fcard--3{ left:-4%; bottom:-2%; transition-delay:2s; animation-delay:-4.6s!important; }
@keyframes float{ 0%,100%{ translate:0 0 } 50%{ translate:0 -8px } }
.fcard .ic{ width:34px; height:34px; border-radius:9px; display:grid; place-items:center; flex:none; font-weight:700; font-size:.8rem; }
.fcard .ic--lime{ background:var(--lime); color:var(--ink); }
.fcard .ic--violet{ background:var(--violet); color:#fff; }
.fcard .ic--cyan{ background:var(--cyan); color:var(--ink); }
.fcard small{ display:block; color:var(--muted); font-family:var(--f-mono); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; margin-bottom:.15rem; }
.fcard b{ font-weight:600; }

.scroll-cue{ position:absolute; left:50%; bottom:1.5rem; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:.4rem; color:var(--muted); font-family:var(--f-mono); font-size:.62rem; letter-spacing:.2em; text-transform:uppercase; }
.scroll-cue i{ width:1px; height:40px; background:linear-gradient(var(--lime), transparent); display:block; animation:cue 2s var(--ease-io) infinite; transform-origin:top; }
@keyframes cue{ 0%{ transform:scaleY(0) } 50%{ transform:scaleY(1) } 100%{ transform:scaleY(0); transform-origin:bottom } }

/* ---------- Marquee ---------- */
.marquee{ border-block:1px solid var(--line); padding:1.1rem 0; overflow:hidden; mask-image:linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); -webkit-mask-image:linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.marquee-track{ display:flex; gap:3rem; width:max-content; animation:marquee 40s linear infinite; }
.marquee:hover .marquee-track{ animation-play-state:paused; }
.marquee span{ font-family:var(--f-mono); font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); display:inline-flex; align-items:center; gap:3rem; white-space:nowrap; }
.marquee span b{ color:var(--fg); font-weight:500; }
.marquee span::after{ content:"◆"; color:var(--lime); font-size:.5rem; }
.s-light .marquee span::after{ color:var(--violet); }
@keyframes marquee{ to{ transform:translateX(-50%) } }

/* ---------- Statement + stats ---------- */
.statement{ font-family:var(--f-display); font-size:clamp(1.6rem,3.4vw,2.9rem); font-weight:500; letter-spacing:-.035em; line-height:1.18; max-width:28ch; }
.statement .serif{ color:var(--accent); }
.stats{ display:grid; grid-template-columns:repeat(4,1fr); gap:0; margin-top:clamp(3rem,6vw,5rem); border-top:1px solid var(--line); }
.stat{ padding:2rem 1.5rem 2rem 0; border-right:1px solid var(--line); position:relative; }
.stat:last-child{ border-right:0; }
.stat + .stat{ padding-left:1.5rem; }
.stat .num{ font-family:var(--f-display); font-size:clamp(2.4rem,4.5vw,4rem); font-weight:600; letter-spacing:-.05em; line-height:1; color:var(--fg); display:flex; align-items:baseline; gap:.1em; }
.stat .num sup{ font-size:.4em; color:var(--accent); font-weight:600; align-self:flex-start; margin-top:.25em; }
.stat .cap{ color:var(--muted); font-size:.92rem; margin-top:.9rem; max-width:22ch; line-height:1.45; }
.stat-note{ margin-top:1.5rem; font-size:.8rem; color:var(--muted-2); font-family:var(--f-mono); letter-spacing:.02em; }

/* ---------- Services (sticky left + expanding rows) ---------- */
.svc-layout{ display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(2rem,6vw,6rem); align-items:start; }
.svc-sticky{ position:sticky; top:calc(var(--nav-h) + 2rem); }
.svc-list{ border-top:1px solid var(--line); }
.svc{ border-bottom:1px solid var(--line); }
.svc-head{ width:100%; display:grid; grid-template-columns:4rem 1fr auto; align-items:center; gap:1.5rem; padding:1.75rem 0; text-align:left; transition:padding var(--dur-2) var(--ease); }
.svc-head:hover{ padding-left:.5rem; }
.svc .idx{ font-family:var(--f-mono); font-size:.8rem; color:var(--accent); letter-spacing:.1em; }
.svc .ttl{ font-family:var(--f-display); font-size:clamp(1.6rem,3vw,2.6rem); font-weight:600; letter-spacing:-.04em; line-height:1; }
.svc .ttl small{ display:block; font-family:var(--f-body); font-size:.95rem; font-weight:400; color:var(--muted); letter-spacing:0; margin-top:.5rem; line-height:1.5; max-width:46ch; }
.svc .plus{ width:44px; height:44px; border-radius:50%; border:1px solid var(--line-strong); display:grid; place-items:center; position:relative; transition:background var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), transform var(--dur-2) var(--ease); }
.svc .plus::before,.svc .plus::after{ content:""; position:absolute; width:14px; height:1.5px; background:currentColor; transition:transform var(--dur-2) var(--ease); }
.svc .plus::after{ transform:rotate(90deg); }
.svc[aria-expanded="true"] .plus,.svc-head[aria-expanded="true"] .plus{ background:var(--fg); color:var(--bg); border-color:var(--fg); transform:rotate(45deg); }
.svc-body{ display:grid; grid-template-rows:0fr; transition:grid-template-rows var(--dur-2) var(--ease); }
.svc-body > div{ overflow:hidden; }
.svc.is-open .svc-body{ grid-template-rows:1fr; }
.svc-body ul{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem 2rem; padding:0 0 1.75rem 5.5rem; }
.svc-body li{ font-size:.95rem; color:var(--fg); padding-left:1.1rem; position:relative; line-height:1.5; }
.svc-body li::before{ content:""; position:absolute; left:0; top:.6em; width:6px; height:6px; border-radius:50%; background:var(--accent); }

/* ---------- Real estate spotlight ---------- */
.re{ position:relative; overflow:hidden; }
.re::before{ content:""; position:absolute; width:70vmax; height:70vmax; border-radius:50%; right:-35vmax; top:-40vmax; background:radial-gradient(circle, rgba(116,103,255,.28), transparent 60%); filter:blur(40px); pointer-events:none; }
.re-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(2rem,6vw,6rem); align-items:center; position:relative; }
.re h2{ font-size:var(--fs-h2); }
.re .lead{ margin-top:1.25rem; }
.re-pills{ display:flex; gap:.6rem; flex-wrap:wrap; margin-top:1.5rem; }
.re-pills span{ font-size:.82rem; padding:.45rem .9rem; border:1px solid var(--line-strong); border-radius:var(--r-pill); color:var(--muted); }
.re-pills span::before{ content:"✓ "; color:var(--lime); }
.agents{ display:grid; gap:.75rem; }
.agent{
  display:grid; grid-template-columns:auto 1fr auto; gap:1.25rem; align-items:center; padding:1.35rem 1.5rem;
  border:1px solid var(--line); border-radius:var(--r-md); background:var(--surface);
  position:relative; overflow:hidden; transition:transform var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), background var(--dur-2) var(--ease);
}
.agent::before{ content:""; position:absolute; inset:0; background:linear-gradient(120deg, var(--tint), transparent 60%); opacity:0; transition:opacity var(--dur-2) var(--ease); }
.agent:hover{ transform:translateX(6px); border-color:var(--tint-strong); }
.agent:hover::before{ opacity:1; }
.agent > *{ position:relative; }
.agent .glyph{ width:46px; height:46px; border-radius:12px; display:grid; place-items:center; background:var(--tint); color:var(--tint-fg); font-size:1.2rem; font-weight:700; }
.agent small{ display:block; font-family:var(--f-mono); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-bottom:.3rem; }
.agent h3{ font-size:1.25rem; letter-spacing:-.03em; }
.agent p{ color:var(--muted); font-size:.9rem; margin-top:.25rem; }
.agent .arr{ font-size:1.3rem; color:var(--muted); transition:transform var(--dur-2) var(--ease), color var(--dur-2); }
.agent:hover .arr{ transform:translateX(4px); color:var(--fg); }
.agent--sales{ --tint:rgba(128,156,255,.18); --tint-strong:rgba(128,156,255,.6); --tint-fg:#c7d4ff; }
.agent--crm{ --tint:rgba(112,191,167,.18); --tint-strong:rgba(112,191,167,.6); --tint-fg:#b9e5d4; }
.agent--purchase{ --tint:rgba(215,155,122,.18); --tint-strong:rgba(215,155,122,.6); --tint-fg:#f0cdb6; }
.re-foot{ margin-top:1.5rem; font-size:.85rem; color:var(--muted); }

/* ---------- Solutions (editorial grid) ---------- */
.sol-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden; }
.sol{ background:var(--bg); padding:clamp(1.75rem,3vw,2.75rem); display:flex; flex-direction:column; gap:1rem; min-height:360px; position:relative; transition:background var(--dur-2) var(--ease); }
.sol:hover{ background:var(--surface); }
.sol .chip{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); }
.sol h3{ font-size:clamp(1.5rem,2.4vw,2.1rem); letter-spacing:-.04em; margin-top:auto; }
.sol p{ color:var(--muted); font-size:.98rem; line-height:1.6; }
.sol .link{ margin-top:.5rem; }
.sol-ic{ width:56px; height:56px; border-radius:16px; display:grid; place-items:center; background:var(--surface-2); color:var(--fg); margin-bottom:1rem; transition:transform var(--dur-2) var(--ease), background var(--dur-2) var(--ease); }
.sol:hover .sol-ic{ transform:translateY(-4px) rotate(-6deg); background:var(--accent); color:var(--ink); }
.s-light .sol:hover .sol-ic{ color:#fff; }
.sol-ic svg{ width:26px; height:26px; }

/* ---------- Process (how we work) ---------- */
.proc{ counter-reset:step; }
.proc-track{ position:relative; display:grid; grid-template-columns:repeat(5,1fr); gap:1.25rem; margin-top:1rem; }
.proc-line{ position:absolute; left:0; right:0; top:22px; height:1px; background:var(--line); }
.proc-line i{ position:absolute; inset:0; background:linear-gradient(90deg, var(--violet), var(--lime)); transform:scaleX(0); transform-origin:left; transition:transform 1.4s var(--ease); }
.proc.is-in .proc-line i{ transform:scaleX(1); }
.step{ position:relative; padding-top:3.5rem; }
.step::before{
  counter-increment:step; content:"0" counter(step);
  position:absolute; top:0; left:0; width:44px; height:44px; border-radius:50%; display:grid; place-items:center;
  font-family:var(--f-mono); font-size:.75rem; background:var(--bg); border:1px solid var(--line-strong); color:var(--fg);
  transition:background .5s var(--ease), color .5s, border-color .5s, transform .5s var(--ease); transition-delay:calc(var(--i)*.22s);
}
.proc.is-in .step::before{ background:var(--lime); color:var(--ink); border-color:var(--lime); transform:scale(1.05); }
.step .when{ font-family:var(--f-mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); }
.step h3{ font-size:1.3rem; margin:.5rem 0 .6rem; letter-spacing:-.03em; }
.step p{ color:var(--muted); font-size:.92rem; line-height:1.6; }

/* ---------- Results ---------- */
.case{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:clamp(2rem,5vw,5rem); align-items:start; }
.case-tag{ display:flex; gap:.5rem; flex-wrap:wrap; }
.case-tag span{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; padding:.4rem .7rem; border:1px solid var(--line-strong); border-radius:var(--r-pill); color:var(--muted); }
.case-tag span:first-child{ background:var(--fg); color:var(--bg); border-color:var(--fg); }
.case h3{ font-size:clamp(1.8rem,3.4vw,3rem); letter-spacing:-.04em; margin:1.25rem 0 1.5rem; }
.case .prose p{ color:var(--muted); line-height:1.7; margin-bottom:1rem; }
.case .prose b{ color:var(--fg); font-weight:600; }
.case-metrics{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem; margin:2rem 0; padding:1.5rem 0; border-block:1px solid var(--line); }
.case-metrics b{ display:block; font-family:var(--f-display); font-size:1.4rem; letter-spacing:-.03em; }
.case-metrics small{ display:block; color:var(--muted); font-size:.8rem; margin-top:.3rem; line-height:1.4; }
.quote{ font-family:var(--f-serif); font-style:italic; font-size:clamp(1.25rem,2vw,1.6rem); line-height:1.35; letter-spacing:-.01em; padding-left:1.5rem; border-left:2px solid var(--accent); }
.quote cite{ display:block; font-family:var(--f-mono); font-style:normal; font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin-top:1rem; }

/* animated pipeline diagram */
.pipe{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:clamp(1.5rem,3vw,2.5rem); position:sticky; top:calc(var(--nav-h) + 2rem); }
.pipe-head{ display:flex; justify-content:space-between; align-items:center; font-family:var(--f-mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin-bottom:1.5rem; }
.pipe-head i{ display:inline-flex; gap:5px; }
.pipe-head i::before,.pipe-head i::after{ content:""; width:8px; height:8px; border-radius:50%; background:var(--line-strong); }
.pipe-steps{ display:grid; gap:.6rem; }
.pstep{ display:grid; grid-template-columns:36px 1fr auto; gap:1rem; align-items:center; padding:.9rem 1rem; border-radius:12px; border:1px solid var(--line); background:var(--bg); opacity:.45; transform:translateX(-6px); transition:opacity .5s var(--ease), transform .5s var(--ease), border-color .5s; transition-delay:calc(var(--i)*.28s); }
.is-in .pstep{ opacity:1; transform:none; }
.pstep .pi{ width:36px; height:36px; border-radius:10px; display:grid; place-items:center; font-family:var(--f-mono); font-size:.7rem; background:var(--surface-2); color:var(--fg); }
.is-in .pstep .pi{ background:var(--lime); color:var(--ink); transition:background .4s; transition-delay:calc(var(--i)*.28s + .2s); }
.pstep b{ font-weight:600; font-size:.95rem; display:block; }
.pstep small{ color:var(--muted); font-size:.8rem; }
.pstep .st{ font-family:var(--f-mono); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.pstep--out{ border-style:dashed; }
.pipe-foot{ margin-top:1.25rem; display:flex; justify-content:space-between; gap:1rem; font-size:.8rem; color:var(--muted); flex-wrap:wrap; }
.pipe-foot b{ color:var(--fg); }

.cases{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem; margin-top:clamp(3rem,6vw,5rem); }
.cs{ padding:2rem; border:1px solid var(--line); border-radius:var(--r-md); background:var(--surface); display:flex; flex-direction:column; gap:.8rem; transition:transform var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease), border-color var(--dur-2); }
.cs:hover{ transform:translateY(-6px); box-shadow:var(--shadow-2); border-color:var(--line-strong); }
.cs .tag{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); }
.cs h3{ font-size:1.3rem; letter-spacing:-.03em; }
.cs p{ color:var(--muted); font-size:.92rem; line-height:1.6; flex:1; }
.cs .metric{ font-family:var(--f-display); font-size:2.4rem; font-weight:600; letter-spacing:-.05em; line-height:1; margin-top:.5rem; padding-top:1.25rem; border-top:1px solid var(--line); }
.cs .metric small{ display:block; font-family:var(--f-body); font-size:.82rem; font-weight:400; color:var(--muted); letter-spacing:0; margin-top:.4rem; }
.cases-note{ margin-top:1.5rem; font-size:.82rem; color:var(--muted-2); max-width:70ch; }

/* ---------- About ---------- */
.about-grid{ display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(2rem,6vw,6rem); align-items:start; }
.about-grid .prose p{ color:var(--muted); font-size:1.05rem; line-height:1.75; margin-bottom:1.25rem; }
.about-grid .prose b{ color:var(--fg); font-weight:600; }
.values{ display:grid; gap:0; border-top:1px solid var(--line); }
.value{ display:grid; grid-template-columns:3rem 1fr; gap:1rem; padding:1.5rem 0; border-bottom:1px solid var(--line); }
.value .vi{ font-family:var(--f-mono); font-size:.75rem; color:var(--accent); padding-top:.35rem; }
.value :is(h3,h4){ font-size:1.15rem; letter-spacing:-.02em; margin-bottom:.35rem; }
.value p{ color:var(--muted); font-size:.92rem; line-height:1.55; }
.team{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem; margin-top:clamp(3rem,6vw,5rem); }
.tm{ padding:2rem; border:1px solid var(--line); border-radius:var(--r-md); background:var(--surface); position:relative; overflow:hidden; transition:transform var(--dur-2) var(--ease), border-color var(--dur-2); }
.tm:hover{ transform:translateY(-4px); border-color:var(--line-strong); }
.tm .ti{ width:52px; height:52px; border-radius:14px; display:grid; place-items:center; font-family:var(--f-mono); font-size:.8rem; font-weight:600; margin-bottom:1.25rem; }
.tm:nth-child(1) .ti{ background:rgba(116,103,255,.2); color:#c7c2ff; }
.tm:nth-child(2) .ti{ background:rgba(215,255,99,.18); color:var(--lime); }
.tm:nth-child(3) .ti{ background:rgba(116,231,247,.16); color:var(--cyan); }
.tm :is(h3,h4){ font-size:1.2rem; letter-spacing:-.03em; }
.tm .role{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:.4rem 0 .9rem; }
.tm p{ color:var(--muted); font-size:.92rem; line-height:1.6; }

/* ---------- Industries (large type list) ---------- */
.ind-list{ border-top:1px solid var(--line); }
.ind{ display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1.1rem 0; border-bottom:1px solid var(--line); font-family:var(--f-display); font-size:clamp(1.4rem,3.2vw,2.6rem); font-weight:500; letter-spacing:-.04em; color:var(--muted); transition:color var(--dur-2) var(--ease), padding-left var(--dur-2) var(--ease); position:relative; }
.ind:hover,.ind:focus-visible{ color:var(--fg); padding-left:1rem; }
.ind .arr{ font-size:.6em; opacity:0; transform:translateX(-8px); transition:opacity var(--dur-2), transform var(--dur-2) var(--ease); color:var(--accent); }
.ind:hover .arr{ opacity:1; transform:none; }
.ind small{ font-family:var(--f-mono); font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); margin-left:1rem; }
.ind-grid{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(2rem,6vw,6rem); align-items:start; }
.ind-grid .sec-head{ margin-bottom:0; position:sticky; top:calc(var(--nav-h) + 2rem); }

/* ---------- Insights ---------- */
.posts{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.25rem; }
.post{ display:flex; flex-direction:column; gap:.9rem; padding:2rem; border-radius:var(--r-md); border:1px solid var(--line); background:var(--surface); min-height:300px; transition:transform var(--dur-2) var(--ease), border-color var(--dur-2), box-shadow var(--dur-2) var(--ease); position:relative; }
.post:hover{ transform:translateY(-6px); border-color:var(--line-strong); box-shadow:var(--shadow-2); }
.post .meta{ font-family:var(--f-mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); display:flex; gap:1rem; }
.post h3{ font-size:1.35rem; letter-spacing:-.03em; line-height:1.2; }
.post p{ color:var(--muted); font-size:.92rem; line-height:1.6; flex:1; }
.post .link{ font-size:.88rem; }
.post--feature{ grid-column:span 2; flex-direction:row; align-items:flex-end; min-height:380px; background:var(--ink-2); color:#f5f5f0; --muted:#9ea3ae; --accent:var(--lime); overflow:hidden; }
.post--feature::before{ content:""; position:absolute; width:50vmax; height:50vmax; right:-25vmax; top:-30vmax; border-radius:50%; background:radial-gradient(circle, rgba(116,103,255,.4), transparent 60%); filter:blur(30px); }
.post--feature > *{ position:relative; }
.post--feature h3{ font-size:clamp(1.6rem,3vw,2.5rem); max-width:18ch; }
.post--feature .big{ font-family:var(--f-display); font-size:clamp(4rem,10vw,9rem); font-weight:600; letter-spacing:-.06em; line-height:.9; color:var(--lime); margin-left:auto; flex:none; }
.post--feature .big small{ display:block; font-family:var(--f-mono); font-size:.65rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-top:.5rem; }
.posts-all{ margin-top:2rem; display:flex; justify-content:center; }

/* ---------- FAQ ---------- */
.faq{ display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:clamp(2rem,6vw,6rem); align-items:start; }
.faq .sec-head{ margin-bottom:0; position:sticky; top:calc(var(--nav-h) + 2rem); }
.faq-list{ border-top:1px solid var(--line); }
.faq-item{ border-bottom:1px solid var(--line); }
.faq-q{ width:100%; display:flex; justify-content:space-between; align-items:center; gap:1.5rem; padding:1.4rem 0; text-align:left; font-family:var(--f-display); font-size:1.2rem; font-weight:600; letter-spacing:-.02em; }
.faq-q .plus{ width:36px; height:36px; flex:none; border-radius:50%; border:1px solid var(--line-strong); position:relative; transition:transform var(--dur-2) var(--ease), background var(--dur-2), border-color var(--dur-2), color var(--dur-2); }
.faq-q .plus::before,.faq-q .plus::after{ content:""; position:absolute; left:50%; top:50%; width:12px; height:1.5px; background:currentColor; transform:translate(-50%,-50%); }
.faq-q .plus::after{ transform:translate(-50%,-50%) rotate(90deg); }
.faq-q[aria-expanded="true"] .plus{ transform:rotate(45deg); background:var(--fg); color:var(--bg); border-color:var(--fg); }
.faq-a{ display:grid; grid-template-rows:0fr; transition:grid-template-rows var(--dur-2) var(--ease); }
.faq-a > div{ overflow:hidden; }
.faq-a p{ color:var(--muted); padding-bottom:1.4rem; max-width:60ch; line-height:1.65; }
.faq-item.is-open .faq-a{ grid-template-rows:1fr; }

/* ---------- Final CTA + contact ---------- */
.cta{ position:relative; overflow:hidden; }
.cta::before{ content:""; position:absolute; width:80vmax; height:80vmax; left:50%; bottom:-60vmax; transform:translateX(-50%); border-radius:50%; background:radial-gradient(circle, rgba(215,255,99,.14), transparent 60%); filter:blur(40px); pointer-events:none; }
.cta-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(2.5rem,6vw,6rem); align-items:start; position:relative; }
.cta h2{ font-size:clamp(2.6rem,6.5vw,5.6rem); letter-spacing:-.05em; line-height:.98; }
.cta h2 .serif{ color:var(--lime); }
.cta .lead{ margin-top:1.5rem; }
.contact-lines{ margin-top:2.5rem; display:grid; gap:0; border-top:1px solid var(--line); max-width:420px; }
.contact-lines a,.contact-lines div{ display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 0; border-bottom:1px solid var(--line); font-size:.98rem; }
.contact-lines small{ font-family:var(--f-mono); font-size:.64rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.contact-lines a:hover b{ color:var(--lime); }
.contact-lines b{ font-weight:500; transition:color var(--dur-1); }

.form{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:clamp(1.5rem,3vw,2.5rem); display:grid; gap:1.1rem; }
.frow{ display:grid; grid-template-columns:1fr 1fr; gap:1.1rem; }
.field{ display:grid; gap:.4rem; }
.field label{ font-size:.82rem; font-weight:500; color:var(--muted); }
.field input,.field textarea,.field select{
  width:100%; font:inherit; font-size:.95rem; color:var(--fg); background:var(--bg); border:1px solid var(--line-strong); border-radius:var(--r-sm);
  padding:.85rem 1rem; transition:border-color var(--dur-1), box-shadow var(--dur-1); appearance:none; -webkit-appearance:none; min-height:48px;
}
.field select{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239ea3ae' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 1rem center; padding-right:2.5rem; }
.field textarea{ min-height:130px; resize:vertical; }
.field input:focus,.field textarea:focus,.field select:focus{ outline:none; border-color:var(--lime); box-shadow:0 0 0 3px rgba(215,255,99,.18); }
.field input::placeholder,.field textarea::placeholder{ color:var(--muted-2); }
.form-foot{ display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.form-note{ font-size:.8rem; color:var(--muted); }
.hp{ position:absolute; left:-9999px; opacity:0; height:0; width:0; }

/* toast */
.toast{
  position:fixed; bottom:1.5rem; right:1.5rem; z-index:200; max-width:360px; display:flex; gap:.9rem; align-items:center;
  background:#14161c; color:#f5f5f0; border:1px solid rgba(215,255,99,.4); border-radius:14px; padding:1rem 1.2rem; box-shadow:0 20px 50px rgba(0,0,0,.45);
  transform:translateY(140%); opacity:0; transition:transform .5s var(--ease), opacity .3s;
}
.toast.show{ transform:none; opacity:1; }
.toast.err{ border-color:rgba(255,120,120,.5); }
.toast .ti{ width:34px; height:34px; border-radius:50%; background:var(--lime); color:var(--ink); display:grid; place-items:center; flex:none; font-weight:700; }
.toast.err .ti{ background:#ff7a7a; }
.toast b{ display:block; font-weight:600; font-size:.95rem; }
.toast span{ color:#9ea3ae; font-size:.85rem; }

/* ---------- Page hero (sub-pages) ---------- */
.phero{ padding-top:calc(var(--nav-h) + clamp(4rem,9vw,8rem)); padding-bottom:clamp(3rem,6vw,5rem); position:relative; overflow:hidden; }
.phero::before{ content:""; position:absolute; width:60vmax; height:60vmax; right:-25vmax; top:-35vmax; border-radius:50%; background:radial-gradient(circle, rgba(116,103,255,.3), transparent 60%); filter:blur(50px); pointer-events:none; }
.crumbs{ font-family:var(--f-mono); font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); display:flex; gap:.6rem; align-items:center; margin-bottom:2rem; position:relative; }
.crumbs a:hover{ color:#fff; }
.crumbs span::before{ content:"/"; margin-right:.6rem; opacity:.5; }
.phero h1{ font-size:clamp(2.6rem,6.5vw,5.6rem); letter-spacing:-.045em; line-height:.98; max-width:14ch; position:relative; }
.phero h1 .serif{ color:var(--lime); }
.phero .lead{ margin-top:1.5rem; position:relative; }
.phero-grid{ display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr); gap:3rem; align-items:end; position:relative; }
.phero-aside{ display:grid; gap:.75rem; font-size:.95rem; color:var(--muted); border-left:1px solid var(--line); padding-left:1.5rem; }
.phero-aside b{ color:#fff; font-weight:500; }

/* ---------- Article (blog + legal) ---------- */
.article{ padding-top:calc(var(--nav-h) + clamp(3rem,7vw,6rem)); padding-bottom:var(--sec-y); }
.article .wrap{ max-width:760px; }
.article .meta{ font-family:var(--f-mono); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:1.5rem 0 3rem; padding-bottom:1.5rem; border-bottom:1px solid var(--line); display:flex; gap:1.25rem; flex-wrap:wrap; }
.article h1{ font-size:clamp(2.2rem,5vw,3.8rem); letter-spacing:-.04em; line-height:1.05; margin-top:1.25rem; }
.prose-body > p,.prose-body li{ font-size:1.08rem; line-height:1.8; color:#c9ccd4; margin-bottom:1.25rem; }
.prose-body > p:first-of-type{ font-size:1.2rem; color:#e8e9ec; }
.prose-body h2{ font-size:1.7rem; letter-spacing:-.03em; margin:3rem 0 1rem; color:#fff; }
.prose-body h3{ font-size:1.3rem; margin:2rem 0 .75rem; }
.prose-body b,.prose-body strong{ color:#fff; font-weight:600; }
.prose-body ul{ padding-left:1.25rem; list-style:disc; margin-bottom:1.5rem; }
.prose-body ol{ padding-left:1.25rem; margin-bottom:1.5rem; }
.prose-body li{ margin-bottom:.6rem; }
.prose-body li::marker{ color:var(--lime); }
.prose-body a{ color:var(--violet-soft); text-decoration:underline; text-underline-offset:3px; }
.prose-body blockquote{ margin:2.5rem 0; padding:1.5rem 0 1.5rem 1.5rem; border-left:2px solid var(--lime); font-family:var(--f-serif); font-style:italic; font-size:1.5rem; line-height:1.35; color:#f5f5f0; }
.prose-body .stat-band{ display:flex; gap:1rem; flex-wrap:wrap; margin:2rem 0; }
.prose-body .stat-band .s{ flex:1; min-width:150px; padding:1.25rem; border:1px solid var(--line); border-radius:14px; background:var(--surface); }
.prose-body .stat-band .s b{ display:block; font-family:var(--f-display); font-size:2rem; letter-spacing:-.04em; color:var(--lime); }
.prose-body .stat-band .s span{ font-size:.85rem; color:var(--muted); }
.prose-body .cta{ margin-top:3.5rem; padding:2.25rem; border-radius:var(--r-lg); background:var(--surface); border:1px solid var(--line); text-align:left; }
.prose-body .cta h3{ font-size:1.6rem; letter-spacing:-.03em; margin:0 0 .6rem; }
.prose-body .cta p{ margin-bottom:1.5rem; color:var(--muted); font-size:1rem; }
.prose-body .cta::before{ display:none; }
.prose-body .back{ display:inline-flex; margin-top:2.5rem; }
.article-nav{ margin-top:4rem; padding-top:2rem; border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; }

.blog-list{ display:grid; gap:1.25rem; }
.blog-list .post{ min-height:0; }

/* ---------- Scroll reveal ---------- */
.rv{ opacity:0; transform:translateY(28px); transition:opacity var(--dur-3) var(--ease), transform var(--dur-3) var(--ease); transition-delay:calc(var(--i,0)*.08s); will-change:opacity,transform; }
.rv[data-rv="left"]{ transform:translateX(-32px); }
.rv[data-rv="right"]{ transform:translateX(32px); }
.rv[data-rv="scale"]{ transform:scale(.94); }
.rv[data-rv="fade"]{ transform:none; }
.rv.is-in{ opacity:1; transform:none; }
.rv-clip{ clip-path:inset(0 100% 0 0); transition:clip-path 1.2s var(--ease); transition-delay:calc(var(--i,0)*.08s); }
.rv-clip.is-in{ clip-path:inset(0 0 0 0); }

/* ---------- Responsive ---------- */
@media (max-width:1100px){
  .sol-grid{ grid-template-columns:repeat(2,1fr); }
  .sol:last-child{ grid-column:span 2; min-height:260px; }
  .proc-track{ grid-template-columns:repeat(3,1fr); row-gap:2.5rem; }
  .proc-line{ display:none; }
  .posts{ grid-template-columns:repeat(2,1fr); }
  .post--feature{ grid-column:span 2; }
}
@media (max-width:900px){
  .hero{ min-height:auto; padding-top:calc(var(--nav-h) + 3rem); padding-bottom:6rem; }
  .hero-grid{ grid-template-columns:1fr; gap:3rem; }
  .hero h1{ max-width:none; }
  .hero-visual{ max-width:460px; justify-self:center; aspect-ratio:1/1; }
  .fcard{ min-width:0; font-size:.76rem; }
  .fcard--1{ left:-2%; } .fcard--2{ right:-2%; } .fcard--3{ left:2%; }
  .scroll-cue{ display:none; }
  .sec-head--split{ grid-template-columns:1fr; gap:1.25rem; }
  .stats{ grid-template-columns:1fr 1fr; }
  .stat{ border-right:0; border-bottom:1px solid var(--line); padding-left:0!important; }
  .stat:nth-child(odd){ border-right:1px solid var(--line); padding-right:1.5rem; }
  .stat:nth-child(even){ padding-left:1.5rem!important; }
  .stat:nth-last-child(-n+2){ border-bottom:0; }
  .svc-layout,.re-grid,.case,.about-grid,.ind-grid,.faq,.cta-grid,.phero-grid{ grid-template-columns:1fr; }
  .svc-sticky,.ind-grid .sec-head,.faq .sec-head{ position:static; }
  .svc-head{ grid-template-columns:3rem 1fr auto; gap:1rem; }
  .svc-body ul{ grid-template-columns:1fr; padding-left:4rem; }
  .pipe{ position:static; }
  .case-metrics{ grid-template-columns:1fr; gap:1rem; }
  .cases,.team{ grid-template-columns:1fr; }
  .phero-aside{ border-left:0; padding-left:0; border-top:1px solid var(--line); padding-top:1.5rem; }
  .post--feature{ flex-direction:column; align-items:flex-start; }
  .post--feature .big{ margin-left:0; font-size:clamp(3.5rem,18vw,6rem); }
}
@media (max-width:640px){
  :root{ --sec-y:4.5rem; }
  .hero h1{ font-size:clamp(2.6rem,12.5vw,3.6rem); }
  .hero .lead{ font-size:1.02rem; }
  .hero-cta .btn{ width:100%; justify-content:center; }
  .hero-visual{ max-width:100%; }
  .fcard--1{ top:4%; } .fcard--3{ bottom:2%; }
  .marquee-track{ animation-duration:28s; }
  .stats{ grid-template-columns:1fr; }
  .stat{ border-right:0!important; padding:1.5rem 0!important; border-bottom:1px solid var(--line); }
  .stat:last-child{ border-bottom:0; }
  .svc .ttl{ font-size:1.6rem; }
  .svc-head{ grid-template-columns:2.4rem 1fr auto; padding:1.35rem 0; }
  .svc-body ul{ padding-left:3.4rem; }
  .sol-grid{ grid-template-columns:1fr; }
  .sol,.sol:last-child{ grid-column:auto; min-height:0; }
  .proc-track{ grid-template-columns:1fr; gap:2rem; }
  .step{ padding-top:0; padding-left:3.6rem; }
  .step::before{ top:0; }
  .posts{ grid-template-columns:1fr; }
  .post--feature{ grid-column:auto; }
  .frow{ grid-template-columns:1fr; }
  .form .btn{ width:100%; justify-content:center; }
  .toast{ left:1rem; right:1rem; max-width:none; }
  .agent{ grid-template-columns:auto 1fr; }
  .agent .arr{ display:none; }
  .ind{ font-size:1.4rem; }
  .ind small{ display:none; }
  .faq-q{ font-size:1.05rem; }
  .article h1{ font-size:2.1rem; }
  .prose-body > p,.prose-body li{ font-size:1rem; }
  .prose-body blockquote{ font-size:1.25rem; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms!important; animation-iteration-count:1!important; transition-duration:.001ms!important; scroll-behavior:auto!important; }
  .rv,.rv-clip,.fade-up,.w > span,.sys .path,.sys .node,.fcard,.pstep{ opacity:1!important; transform:none!important; clip-path:none!important; stroke-dashoffset:0!important; }
  .marquee-track{ animation:none; flex-wrap:wrap; width:auto; gap:1rem 2rem; justify-content:center; }
  .marquee{ mask-image:none; -webkit-mask-image:none; }
  .marquee-track[aria-hidden="true"]{ display:none; }
  .hero-cursor,.scroll-cue{ display:none; }
}

/* ---------- Failsafe: content is never hidden without working scripts ---------- */
:is(.no-js,.reveal-all) :is(.rv,.rv-clip,.fade-up,.w > span,.sys .path,.sys .node,.fcard,.pstep){
  opacity:1!important; transform:none!important; clip-path:none!important; stroke-dashoffset:0!important; transition:none!important;
}
