:root{
  --bg:#0B0C0C; --scrim-rgb:11,12,12; --surface:#141517; --surface-2:#1B1D20; --surface-3:#202326;
  --text:#F3F1EC; --muted:#A5A29A; --faint:#6E6B63; --line: rgba(243,241,236,0.10); --line-strong: rgba(243,241,236,0.18);
  /* soft, muted triad tuned to sit gently on the dark ground: enough hue to feel alive,
     never neon enough to fight the eye. */
  --blue:#7FADD9; --green:#7ECEAE; --pink:#DE9BB0;
  --accent:#7FADD9; --accent-light:#B3D0EC; --accent-hover:#5E8FBE; --accent-dim: rgba(127,173,217,0.10);
  /* menu-driven selection highlight: kept distinct from --accent so it reads as "you picked
     this" rather than blending into the site's regular link/eyebrow colour. */
  --highlight:#DE9BB0; --highlight-tint:#1C2024;
  --radius: 4px;
  --image-filter: grayscale(0.4) contrast(0.96) brightness(0.92);

  /* glass layer system: 4 tiers of elevation. Kept low-saturation and low-contrast on
     purpose — the goal is a quiet, restful surface, not a shiny one. */
  --glass-1: rgba(243,241,236,0.03); --glass-1-border: rgba(243,241,236,0.05); --glass-1-blur: 10px;
  --glass-2: rgba(243,241,236,0.04); --glass-2-border: rgba(243,241,236,0.07); --glass-2-blur: 14px;
  --glass-3: rgba(243,241,236,0.05); --glass-3-border: rgba(243,241,236,0.09); --glass-3-blur: 18px;
  --glass-4: rgba(243,241,236,0.07); --glass-4-border: rgba(243,241,236,0.12); --glass-4-blur: 22px;
  --glass-shadow: 0 12px 32px -14px rgba(0,0,0,0.45);
  --glass-highlight: inset 0 1px 0 rgba(255,255,255,0.05);
}

/* ---------- light theme ---------- */
/* Same structure, same restfulness — warm paper ground, ink text, glass panels made of
   soft light instead of soft dark. Toggled via [data-theme] on <html>, set by carbon.js. */
:root[data-theme="light"]{
  --bg:#F3F6FA; --scrim-rgb:243,246,250; --surface:#FFFFFF; --surface-2:#E6ECF3; --surface-3:#D7E0EA;
  --text:#161A22; --muted:#555F6E; --faint:#8B93A2;
  --line: rgba(22,26,34,0.08); --line-strong: rgba(22,26,34,0.15);
  /* a cooler indigo / emerald / raspberry triad — deliberately distinct from the dark theme's
     warm sky-blue / sage / dusty-rose set, so the light mode reads as its own palette. */
  --blue:#3B5BD9; --green:#0E9A76; --pink:#C24C7C;
  --accent:#3B5BD9; --accent-light:#6478E6; --accent-hover:#2C46B0; --accent-dim: rgba(59,91,217,0.10);
  --highlight:#4A7FB5; --highlight-tint:#F2F6FA;
  --image-filter: grayscale(0.08) contrast(1.02) brightness(1.02);

  --glass-1: rgba(255,255,255,0.5); --glass-1-border: rgba(22,26,34,0.06); --glass-1-blur: 10px;
  --glass-2: rgba(255,255,255,0.62); --glass-2-border: rgba(22,26,34,0.08); --glass-2-blur: 14px;
  --glass-3: rgba(255,255,255,0.72); --glass-3-border: rgba(22,26,34,0.10); --glass-3-blur: 18px;
  --glass-4: rgba(255,255,255,0.82); --glass-4-border: rgba(22,26,34,0.13); --glass-4-blur: 22px;
  --glass-shadow: 0 12px 28px -16px rgba(22,26,34,0.14);
  --glass-highlight: inset 0 1px 0 rgba(255,255,255,0.85);
}
:root[data-theme="light"] .nav{ background:linear-gradient(120deg, rgba(243,246,250,0.65) 0%, rgba(243,246,250,0.42) 55%, rgba(243,246,250,0.6) 100%); }
:root[data-theme="light"] .btn{ color:#F3F6FA; }
.glass-1{ background:var(--glass-1); border:1px solid var(--glass-1-border); backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur)); }
.glass-2{ background:var(--glass-2); border:1px solid var(--glass-2-border); backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur)); box-shadow:var(--glass-shadow), var(--glass-highlight); }
.glass-3{ background:var(--glass-3); border:1px solid var(--glass-3-border); backdrop-filter:blur(var(--glass-3-blur)); -webkit-backdrop-filter:blur(var(--glass-3-blur)); box-shadow:var(--glass-shadow), var(--glass-highlight); }
.glass-4{ background:var(--glass-4); border:1px solid var(--glass-4-border); backdrop-filter:blur(var(--glass-4-blur)); -webkit-backdrop-filter:blur(var(--glass-4-blur)); box-shadow:var(--glass-highlight); }
*{box-sizing:border-box;}
/* every anchor target clears the sticky nav (~73px) plus breathing room — sections already
   have enough top padding to clear it on their own, but small anchor targets like a single
   .card inside a grid (e.g. the Technology Services cards) do not, and land tucked under
   the nav without this. */
[id]{ scroll-margin-top:104px; }
/* overflow-x:hidden belongs on html, not body: setting it on body forces body's own
   overflow-y to compute as "auto" per the CSS overflow spec, which silently turns body
   into its own inner scroll container instead of the document/viewport — breaking
   scrollIntoView, native #anchor jumps, and window.scrollY everywhere. */
html{background:var(--bg); scroll-behavior:smooth; overflow-x:hidden;}
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }
body{
  background:var(--bg); color:var(--text);
  font-family:'Red Hat Text', -apple-system, 'Segoe UI', Arial, sans-serif;
  font-weight:350; font-size:16px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
  max-width:100%;
  position:relative; z-index:0;
}
/* film-grain texture + soft vignette: sit BEHIND real content (negative z-index inside the
   stacking context body's own position+z-index establishes), never on top of it — a layer
   painted over text/photos is what reads as a haze, not a texture. */
body::before{
  content:''; position:fixed; inset:0; z-index:-1; pointer-events:none;
  opacity:0.05; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
body::after{
  content:''; position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:radial-gradient(ellipse 80% 60% at 50% 0%, transparent 40%, rgba(var(--scrim-rgb),0.35) 100%);
}
.mono{ font-family:'JetBrains Mono', ui-monospace, Menlo, monospace; font-variant-numeric: tabular-nums; }
/* Display face: Red Hat Display, used only for headings, an enterprise/infra type system.
   Body face: Red Hat Text, used for everything you read. Data face: JetBrains Mono, used for
   every number, tag, label and stat, never for prose. Three roles, never mixed. */
h1,h2,h3,h4{
  font-family:'Red Hat Display', 'Red Hat Text', sans-serif; font-weight:500; color:var(--text);
  text-wrap:balance; margin:0; letter-spacing:-0.01em;
}
p{ margin:0; }
a{ color:inherit; text-decoration:none; }
.wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }
@media (max-width:700px){ .wrap{ padding:0 20px; } }

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:0.001ms !important; transition-duration:0.001ms !important; }
}

/* ---------- scroll-reveal (applied by carbon.js, no markup edits needed) ---------- */
.reveal{
  opacity:0; transform:translateY(38px); filter:blur(7px);
  transition:opacity 1s cubic-bezier(.16,.8,.24,1), transform 1s cubic-bezier(.16,.8,.24,1), filter 1s cubic-bezier(.16,.8,.24,1);
  will-change:opacity, transform, filter;
}
.reveal.is-visible{ opacity:1; transform:translateY(0); filter:blur(0px); }
.reveal-scale{ transform:translateY(30px) scale(0.94); filter:blur(7px); }
.reveal-scale.is-visible{ transform:translateY(0) scale(1); filter:blur(0px); }

/* anchor landing highlight: whatever a menu link jumps to (a full section or a single
   card within one) gets a quiet background tint plus a ring so it's obvious where you
   arrived, not just that the page moved. Two animations run together at different
   speeds on purpose: the tint settles quickly (it's just a backdrop), the ring keeps
   drawing in a touch longer at a constant pace so the arrival reads as deliberate
   rather than snappy. carbon.js keeps the ring in place until the visitor scrolls away
   from the section (or 60s pass, whichever first), rather than fading it on a timer.
   Uses --highlight rather than --accent so a menu-driven selection reads as "you picked
   this," distinct from the site's ordinary link/eyebrow colour; --highlight-tint has no
   effect on elements with their own background-image (e.g. .section-tinted's gradient),
   so tinted sections still get the ring without the backdrop fighting their own tint. */
@keyframes anchor-flash-tint{
  from{ background-color:var(--surface); }
  to{ background-color:var(--highlight-tint); }
}
@keyframes anchor-flash-ring{
  from{ box-shadow:0 0 0 0 transparent; }
  to{ box-shadow:0 0 0 2px var(--highlight); }
}
.anchor-flash{
  animation:anchor-flash-tint 0.4s ease-out both, anchor-flash-ring 0.7s linear both;
}


/* ---------- nav ---------- */
.nav{
  position:sticky; top:0; z-index:50;
  background:linear-gradient(120deg, rgba(var(--scrim-rgb),0.55) 0%, rgba(var(--scrim-rgb),0.38) 55%, rgba(var(--scrim-rgb),0.5) 100%);
  backdrop-filter: blur(var(--glass-4-blur));
  -webkit-backdrop-filter: blur(var(--glass-4-blur));
  border-bottom:1px solid var(--glass-4-border);
  box-shadow:var(--glass-highlight), 0 12px 28px -18px rgba(0,0,0,0.6);
}
.nav-inner{ display:flex; align-items:center; justify-content:space-between; height:72px; }
.brand{ display:flex; align-items:center; gap:10px; font-family:'Red Hat Display','Red Hat Text',sans-serif; font-weight:500; font-size:16px; letter-spacing:-0.01em; color:var(--text); }
.brand-logo{ width:24px; height:auto; display:block; transition:transform 0.35s cubic-bezier(.34,1.56,.64,1); }
.brand:hover .brand-logo{ transform:rotate(-8deg) scale(1.08); }
.footer-brand{ display:flex; align-items:center; gap:10px; font-family:'Red Hat Display','Red Hat Text',sans-serif; font-weight:500; font-size:15px; color:var(--text); margin-bottom:8px; }
.footer-brand .brand-logo{ width:20px; }
.nav-links{ display:flex; align-items:center; gap:28px; }
@media (max-width:860px){ .nav-links{ display:none; } }

/* dropdown nav items */
.nav-item{ position:relative; }
.nav-trigger-row{ display:flex; align-items:center; gap:4px; }
.nav-trigger-row > a{ position:relative; font-size:14px; color:var(--muted); font-weight:400; padding-bottom:4px; transition:color 0.2s ease; }
.nav-trigger-row > a::after{
  content:''; position:absolute; left:0; right:100%; bottom:0; height:1px;
  background:var(--local-accent, var(--accent)); transition:right 0.28s cubic-bezier(.16,.8,.24,1);
}
.nav-trigger-row > a:hover::after, .nav-trigger-row > a.is-current::after{ right:0; }
.nav-trigger-row > a:hover, .nav-trigger-row > a.is-current{ color:var(--text); }
.nav-caret{ display:none; background:none; border:none; padding:2px; cursor:pointer; color:var(--faint); transition:color 0.2s ease; }
.nav-caret svg{ width:12px; height:12px; transition:transform 0.25s cubic-bezier(.16,.8,.24,1); }
.nav-item:hover .nav-caret, .nav-item.open .nav-caret{ color:var(--local-accent, var(--accent)); }
.nav-item:hover .nav-caret svg, .nav-item.open .nav-caret svg{ transform:rotate(180deg); }
.nav-dropdown{
  list-style:none; margin:0; padding:8px; position:absolute; top:calc(100% + 14px); left:0;
  min-width:230px; background:var(--glass-4); border:1px solid var(--glass-4-border); border-radius:12px;
  backdrop-filter:blur(var(--glass-4-blur)); -webkit-backdrop-filter:blur(var(--glass-4-blur));
  box-shadow:0 20px 40px -12px rgba(0,0,0,0.6), var(--glass-highlight);
  opacity:0; visibility:hidden; transform:translateY(-6px); transition:opacity 0.16s ease, transform 0.16s ease, visibility 0.16s;
  z-index:60;
}
.nav-item:hover .nav-dropdown, .nav-item:focus-within .nav-dropdown, .nav-item.open .nav-dropdown{
  opacity:1; visibility:visible; transform:translateY(0);
}
.nav-dropdown li + li{ margin-top:2px; }
.nav-dropdown a{
  display:block; padding:9px 12px; border-radius:6px; font-size:0.88rem; color:var(--muted); font-weight:400;
}
.nav-dropdown a:hover, .nav-dropdown a:focus-visible{ background:var(--surface-2); color:var(--text); }
@media (max-width:860px){
  .nav-caret{ display:inline-flex; align-items:center; justify-content:center; }
  .nav-dropdown{
    position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:none;
    background:transparent; padding:4px 0 4px 14px; max-height:0; overflow:hidden;
  }
  .nav-item.open .nav-dropdown{ max-height:400px; }
}
.btn{
  display:inline-flex; align-items:center; gap:8px;
  background:var(--accent); color:#0B0C0C; font-weight:500; font-size:14px;
  padding:11px 18px; border-radius:100px; border:none; cursor:pointer;
  transition:background 0.25s ease, transform 0.25s cubic-bezier(.34,1.56,.64,1), box-shadow 0.25s ease;
}
.btn:hover{ background:var(--accent-light); transform:translateY(-2px); box-shadow:0 10px 24px -8px var(--accent-dim); }
.btn:active{ transform:translateY(0); }
.btn svg{ width:14px; height:14px; transition:transform 0.25s ease; }
.btn:hover svg{ transform:translateX(3px); }
.btn-ghost{
  display:inline-flex; align-items:center; gap:8px; font-size:14px; color:var(--text);
  padding:11px 18px; border-radius:100px;
  background:var(--glass-4); border:1px solid var(--glass-4-border);
  backdrop-filter:blur(var(--glass-4-blur)); -webkit-backdrop-filter:blur(var(--glass-4-blur));
  box-shadow:var(--glass-highlight);
  transition:border-color 0.25s ease, background 0.25s ease, transform 0.25s cubic-bezier(.34,1.56,.64,1);
}
.btn-ghost:hover{ border-color:var(--local-accent, var(--accent)); background:var(--accent-dim); transform:translateY(-2px); }

/* ---------- theme toggle ---------- */
.theme-toggle{
  display:inline-flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:50%; margin-left:6px; cursor:pointer;
  background:var(--glass-3); border:1px solid var(--glass-3-border);
  backdrop-filter:blur(var(--glass-3-blur)); -webkit-backdrop-filter:blur(var(--glass-3-blur));
  color:var(--muted);
  transition:color 0.2s ease, border-color 0.2s ease, transform 0.3s cubic-bezier(.34,1.56,.64,1);
}
.theme-toggle:hover{ color:var(--text); border-color:var(--accent-light); transform:rotate(14deg); }
.theme-toggle svg{ width:16px; height:16px; }
.theme-toggle .icon-moon{ display:none; }
:root[data-theme="light"] .theme-toggle .icon-sun{ display:none; }
:root[data-theme="light"] .theme-toggle .icon-moon{ display:block; }

/* ---------- page hero (sub-pages) ---------- */
.page-hero{ position:relative; z-index:0; padding:72px 0 56px; border-bottom:1px solid var(--line); overflow:hidden; }
.page-hero-photo{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  z-index:-3; opacity:0.92; filter:var(--image-filter);
}
.page-hero-scrim{
  position:absolute; inset:0; z-index:-2;
  background:
    linear-gradient(100deg, var(--bg) 0%, rgba(var(--scrim-rgb),0.92) 32%, rgba(var(--scrim-rgb),0.45) 54%, rgba(var(--scrim-rgb),0.08) 70%, transparent 100%),
    linear-gradient(180deg, transparent 60%, var(--bg) 100%);
}
@media (max-width:860px){
  .page-hero-scrim{
    background: linear-gradient(180deg, rgba(var(--scrim-rgb),0.2) 0%, rgba(var(--scrim-rgb),0.55) 42%, var(--bg) 85%);
  }
}
.page-hero-bg{
  position:absolute; inset:0; z-index:-1;
  background: radial-gradient(ellipse 800px 420px at 85% 0%, var(--local-accent-dim, var(--accent-dim)), transparent 65%);
  opacity:0.9;
}
.page-hero-inner{
  position:relative; z-index:1; max-width:960px;
  background:var(--glass-2); border:1px solid var(--glass-2-border); border-radius:18px;
  backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur));
  box-shadow:var(--glass-shadow), var(--glass-highlight);
  padding:32px 36px;
}
@media (max-width:700px){ .page-hero-inner{ padding:24px 22px; border-radius:14px; } }
.page-hero-caption{
  margin-top:16px; font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--faint);
}
.page-title{ font-size:clamp(2.1rem,4.4vw,3.2rem); margin-top:16px; max-width:18ch; line-height:1.04; }
.page-lead{ margin-top:20px; max-width:62ch; color:var(--muted); font-size:1.05rem; font-weight:300; }
.crumb{ font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--faint); }
.crumb a:hover{ color:var(--muted); }

/* ---------- hero (home) ---------- */
.hero{ position:relative; z-index:0; padding:96px 0 72px; overflow:hidden; }
.hero-video{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  z-index:-3; opacity:0.9; filter:var(--image-filter);
  /* <video> paints solid black until its first frame decodes (no poster set) — on a
     light background that reads as a black flash while the file downloads. Matching
     the theme background here means the gap is invisible instead of jarring. */
  background:var(--bg);
}
.hero-scrim{
  position:absolute; inset:0; z-index:-2;
  background:
    linear-gradient(100deg, var(--bg) 0%, rgba(var(--scrim-rgb),0.92) 30%, rgba(var(--scrim-rgb),0.5) 52%, rgba(var(--scrim-rgb),0.1) 68%, transparent 100%),
    linear-gradient(180deg, transparent 55%, var(--bg) 100%);
}
@media (max-width:860px){
  .hero-scrim{
    background: linear-gradient(180deg, rgba(var(--scrim-rgb),0.25) 0%, rgba(var(--scrim-rgb),0.55) 38%, var(--bg) 82%);
  }
}
.hero-bg{
  position:absolute; inset:0; z-index:-1;
  background:
    radial-gradient(ellipse 900px 500px at 82% 8%, var(--accent-dim), transparent 62%),
    repeating-linear-gradient(90deg, var(--line) 0px, var(--line) 1px, transparent 1px, transparent 120px),
    repeating-linear-gradient(0deg, var(--line) 0px, var(--line) 1px, transparent 1px, transparent 120px);
  -webkit-mask-image: linear-gradient(to bottom, black, transparent);
          mask-image: linear-gradient(to bottom, black, transparent);
  opacity:0.7;
}
.hero-inner{
  position:relative; z-index:1; max-width:1040px;
  background:var(--glass-2); border:1px solid var(--glass-2-border); border-radius:20px;
  backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur));
  box-shadow:var(--glass-shadow), var(--glass-highlight);
  padding:40px 44px;
}
@media (max-width:700px){ .hero-inner{ padding:26px 24px; border-radius:16px; } }
.hero-caption{
  margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:11px; color:var(--faint);
}
.eyebrow{
  display:inline-flex; align-items:center; gap:8px;
  font-family:'JetBrains Mono', monospace; font-size:12px; letter-spacing:0.1em; text-transform:uppercase;
  color:var(--muted);
}
.eyebrow::before{ content:''; width:6px; height:6px; background:var(--local-accent, var(--accent)); border-radius:1px; }
h1.headline{
  font-size:clamp(2.6rem, 5.6vw, 4.6rem); font-weight:500; letter-spacing:-0.03em; line-height:0.98;
  margin-top:22px; max-width:15ch;
}
.hero-lead{
  margin-top:26px; max-width:56ch; font-size:1.1rem; color:var(--muted); font-weight:300; font-family:'Red Hat Text',sans-serif;
}
.hero-cta-row{ display:flex; gap:14px; align-items:center; margin-top:34px; flex-wrap:wrap; }

/* ---------- reveal paragraph ---------- */
.statement-section{ padding:64px 0 88px; border-top:1px solid var(--line); }
.statement{
  font-family:'Red Hat Text',sans-serif; font-size:clamp(1.5rem, 2.6vw, 2.15rem); font-weight:350; line-height:1.42; max-width:22ch; letter-spacing:-0.01em;
}
.statement .word{ color:var(--faint); transition:color 0.5s ease; }
.statement .word.lit{ color:var(--text); }

/* ---------- shared section scaffolding ---------- */
.section{ padding:108px 0; border-top:1px solid var(--line); }
@media (max-width:700px){ .section{ padding:72px 0; } }
/* one signature accent, not a rotating palette — the reference sites we studied
   (Axiom Power, Studio Loop, EMO) each commit to a single hue against the dark ground
   rather than cycling hues per section; blue is EWUS's actual brand colour, from the logo. */
.section-tint-green, .section-tint-pink, .section-tint-blue{ --local-accent: var(--blue); --local-accent-dim: var(--accent-dim); }
.section-tinted{ background: linear-gradient(180deg, color-mix(in srgb, var(--local-accent, var(--blue)) 5%, var(--bg)) 0%, var(--bg) 70%); }
.section-head{ max-width:560px; margin-bottom:64px; }
.section-head h2{ font-size:clamp(1.7rem,3vw,2.3rem); margin-top:18px; letter-spacing:-0.02em; line-height:1.15; }
.section-head p{ margin-top:18px; color:var(--muted); font-size:1rem; line-height:1.65; font-family:'Red Hat Text',sans-serif; }

/* ---------- commitments / divided rows ---------- */
.commit-list{ display:flex; flex-direction:column; }
.commit-row{
  display:grid; grid-template-columns:44px 1fr auto; gap:24px; align-items:center;
  padding:22px 20px; border-radius:14px; margin-bottom:10px;
  background:var(--glass-1); border:1px solid var(--glass-1-border);
  backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur));
  transition:background 0.3s ease, border-color 0.3s ease, transform 0.3s cubic-bezier(.16,.8,.24,1);
}
.commit-row:hover{ background:var(--glass-2); border-color:var(--local-accent, var(--glass-2-border)); transform:translateX(4px); }
.commit-row:last-child{ margin-bottom:0; }
.commit-icon{
  width:40px; height:40px; border-radius:10px;
  background:var(--glass-3); border:1px solid var(--glass-3-border);
  backdrop-filter:blur(var(--glass-3-blur)); -webkit-backdrop-filter:blur(var(--glass-3-blur));
  display:flex; align-items:center; justify-content:center; color:var(--local-accent, var(--accent));
  transition:transform 0.3s cubic-bezier(.34,1.56,.64,1);
}
.commit-row:hover .commit-icon{ transform:scale(1.08) rotate(-4deg); }
.commit-icon svg{ width:19px; height:19px; }
.commit-title{ font-size:1.05rem; font-weight:450; font-family:'Red Hat Text',sans-serif; }
.commit-desc{ margin-top:5px; color:var(--muted); font-size:0.92rem; max-width:52ch; font-family:'Red Hat Text',sans-serif; }
.commit-tag{ font-family:'JetBrains Mono',monospace; font-size:12px; letter-spacing:0.06em; color:var(--local-accent, var(--faint)); white-space:nowrap; }
@media (max-width:640px){
  .commit-row{ grid-template-columns:36px 1fr; }
  .commit-tag{ grid-column:2; }
}

/* ---------- facts strip ---------- */
.facts-grid{
  display:grid; grid-template-columns:repeat(4,1fr);
  background:var(--glass-1); border:1px solid var(--glass-1-border); border-radius:16px; overflow:hidden;
  backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur));
  box-shadow:var(--glass-shadow);
}
@media (max-width:820px){ .facts-grid{ grid-template-columns:repeat(2,1fr); } }
.fact{ padding:32px 26px; border-left:1px solid var(--glass-1-border); transition:background 0.3s ease; }
.fact:hover{ background:var(--glass-2); }
.fact:first-child{ border-left:none; }
@media (max-width:820px){ .fact:nth-child(2n+1){ border-left:none; } .fact:nth-child(n+3){ border-top:1px solid var(--glass-1-border); } }
.fact-status{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--local-accent, var(--accent)); }
.fact-num{ font-family:'JetBrains Mono',monospace; font-size:2.4rem; font-weight:600; margin-top:10px; letter-spacing:-0.02em; }
.fact-num span{ font-size:1.1rem; color:var(--muted); font-weight:400; margin-left:2px; }
.fact-label{ margin-top:8px; color:var(--muted); font-size:0.88rem; font-family:'Red Hat Text',sans-serif; }

/* ---------- capabilities ---------- */
.cap-grid{ display:grid; grid-template-columns:1fr 1.4fr; gap:56px; }
@media (max-width:860px){ .cap-grid{ grid-template-columns:1fr; gap:8px; } }
.cap-list{ display:flex; flex-direction:column; }
.cap-item{ padding:22px 20px; margin:0 -20px; border-top:1px solid var(--line); border-radius:10px; cursor:default; transition:background 0.3s ease, padding-left 0.3s cubic-bezier(.16,.8,.24,1); }
.cap-item:last-child{ border-bottom:1px solid var(--line); }
.cap-item:hover{ background:var(--glass-1); padding-left:28px; }
.cap-item:nth-child(1), .cap-item:nth-child(2), .cap-item:nth-child(3){ --local-accent: var(--blue); }
.cap-num{ font-family:'JetBrains Mono',monospace; font-size:12px; color:var(--local-accent, var(--faint)); }
.cap-name{ margin-top:8px; font-size:1.15rem; font-weight:500; letter-spacing:-0.01em; font-family:'Red Hat Display','Red Hat Text',sans-serif; }
.cap-desc{ margin-top:8px; color:var(--muted); font-size:0.94rem; max-width:46ch; font-family:'Red Hat Text',sans-serif; }
.cap-links{ margin-top:12px; display:flex; gap:16px; flex-wrap:wrap; }
.cap-links a{ font-size:0.85rem; color:var(--local-accent, var(--accent-light)); border-bottom:1px solid transparent; }
.cap-links a:hover{ border-color:var(--local-accent, var(--accent-light)); }
.cap-visual{
  position:relative; z-index:0; overflow:hidden;
  border:1px solid var(--glass-2-border); border-radius:16px; padding:32px;
  background:var(--glass-2);
  backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur));
  box-shadow:var(--glass-shadow), var(--glass-highlight);
  display:flex; flex-direction:column; justify-content:space-between; min-height:380px;
}
.cap-visual-photo{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  z-index:0; opacity:0.8; filter:grayscale(0.35);
}
.cap-visual-scrim{
  position:absolute; inset:0; z-index:1;
  background: linear-gradient(160deg, rgba(11,12,12,0.4), rgba(11,12,12,0.8));
}
.cap-visual > *:not(.cap-visual-photo):not(.cap-visual-scrim){ position:relative; z-index:2; }
/* text sits directly on a photo behind a fixed dark scrim, so it stays light in both
   themes rather than following --text/--muted (which flip to dark ink in light mode). */
.cap-visual-top{ font-family:'JetBrains Mono',monospace; font-size:12px; color:#B8B5AC; display:flex; justify-content:space-between; }
.cap-visual-mid{ margin-top:28px; }
.cap-visual-mid h3{ font-size:1.4rem; font-weight:500; max-width:16ch; color:#F3F1EC; }
.segment-row{ display:flex; flex-wrap:wrap; gap:8px; margin-top:20px; }
.segment-pill{
  font-family:'JetBrains Mono',monospace; font-size:11.5px; padding:6px 11px; border-radius:100px; color:#C9C6BC;
  background:rgba(243,241,236,0.08); border:1px solid rgba(243,241,236,0.16);
  backdrop-filter:blur(var(--glass-4-blur)); -webkit-backdrop-filter:blur(var(--glass-4-blur));
  transition:transform 0.25s cubic-bezier(.34,1.56,.64,1), border-color 0.25s ease, color 0.25s ease;
}
.segment-pill:hover{ transform:translateY(-2px); border-color:#B3D0EC; color:#F3F1EC; }

/* ---------- card grid (used by sub-pages) ---------- */
.card-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
@media (max-width:860px){ .card-grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){ .card-grid{ grid-template-columns:1fr; } }
.card{
  position:relative;
  background:var(--glass-2); border:1px solid var(--glass-2-border); border-radius:14px; padding:26px;
  backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur));
  box-shadow:var(--glass-shadow), var(--glass-highlight);
  overflow:hidden;
  transition:border-color 0.3s ease, transform 0.3s cubic-bezier(.16,.8,.24,1), box-shadow 0.3s ease;
}
/* soft light source washing in from the top-left on hover, alongside the lift and the
   tinted shadow below — kept faint on purpose, it should read as ambient, not a spotlight. */
.card::before{
  content:''; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:radial-gradient(160px 110px at 18% 0%, var(--local-accent-dim, var(--accent-dim)), transparent 70%);
  opacity:0; transition:opacity 0.3s ease;
}
.card:hover{
  border-color:var(--local-accent, var(--glass-3-border)); transform:translateY(-3px);
  box-shadow:0 14px 28px -16px var(--local-accent-dim, var(--accent-dim)), var(--glass-shadow), var(--glass-highlight);
}
.card:hover::before{ opacity:1; }
.card:hover h4{ color:var(--local-accent, var(--accent)); }
.card-photo{ width:100%; aspect-ratio:4/3; object-fit:cover; filter:grayscale(0.35); margin-bottom:18px; border-radius:2px; transition:transform 0.6s ease; }
.card-video{ width:100%; aspect-ratio:16/10; object-fit:cover; filter:grayscale(0.35); margin-bottom:18px; border-radius:2px; transition:transform 0.6s ease; background:var(--bg); }
.card:hover .card-photo, .card:hover .card-video{ transform:scale(1.03); }
.card a{ display:inline-block; transition:transform 0.25s cubic-bezier(.34,1.56,.64,1); }
.card a:hover{ transform:translateX(3px); }
.card-tag{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--local-accent, var(--accent)); }
.card h4{ margin-top:14px; font-size:1.05rem; font-weight:500; font-family:'Red Hat Display','Red Hat Text',sans-serif; transition:color 0.3s ease; }
.card p{ margin-top:10px; color:var(--muted); font-size:0.9rem; font-family:'Red Hat Text',sans-serif; }
.card a{ display:inline-block; margin-top:14px; font-size:0.85rem; color:var(--local-accent, var(--accent-light)); }

/* ---------- next / process ---------- */
.next-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
@media (max-width:700px){ .next-grid{ grid-template-columns:1fr; } }
.next-card{
  background:var(--glass-2); border:1px solid var(--glass-2-border); border-radius:14px; padding:28px;
  backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur));
  box-shadow:var(--glass-shadow), var(--glass-highlight);
  transition:transform 0.3s cubic-bezier(.16,.8,.24,1), border-color 0.3s ease;
}
.next-card:hover{ transform:translateY(-4px); border-color:var(--local-accent, var(--glass-3-border)); }
.next-card-tag{
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--local-accent, var(--accent));
  border:1px solid var(--local-accent, var(--accent)); display:inline-block; padding:3px 9px; border-radius:100px;
  backdrop-filter:blur(var(--glass-4-blur)); -webkit-backdrop-filter:blur(var(--glass-4-blur));
  transition:background 0.25s ease;
}
.next-card:hover .next-card-tag{ background:var(--local-accent-dim, var(--accent-dim)); }
.next-card h4{ margin-top:16px; font-size:1.1rem; font-weight:500; }
.next-card p{ margin-top:10px; color:var(--muted); font-size:0.9rem; font-family:'Red Hat Text',sans-serif; }

.process-list{ display:flex; flex-direction:column; }
.process-row{
  display:grid; grid-template-columns:64px 1fr; gap:24px; padding:24px 20px; margin:0 -20px;
  border-top:1px solid var(--line); border-radius:10px;
  transition:background 0.3s ease, padding-left 0.3s cubic-bezier(.16,.8,.24,1);
}
.process-row:hover{ background:var(--glass-1); padding-left:28px; }
.process-row:last-child{ border-bottom:1px solid var(--line); }
.process-num{ font-family:'JetBrains Mono',monospace; font-size:0.95rem; color:var(--local-accent, var(--accent)); transition:transform 0.3s cubic-bezier(.34,1.56,.64,1); }
.process-row:hover .process-num{ transform:scale(1.15); }
.process-title{ font-size:1.02rem; font-weight:500; font-family:'Red Hat Display','Red Hat Text',sans-serif; }
.process-desc{ margin-top:6px; color:var(--muted); font-size:0.9rem; max-width:56ch; font-family:'Red Hat Text',sans-serif; }
.process-get{ margin-top:8px; color:var(--faint); font-size:0.82rem; font-family:'JetBrains Mono',monospace; }

.honesty-note{
  margin-top:56px; padding:20px 24px; border:1px dashed var(--glass-2-border); border-radius:12px;
  background:var(--glass-1); backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur));
  color:var(--faint); font-size:0.85rem; max-width:70ch; font-family:'Red Hat Text',sans-serif;
}
.honesty-note b{ color:var(--muted); }

/* ---------- pull quote (studioloop-style statement) ---------- */
.pull-quote-block{
  position:relative; max-width:44ch; padding:40px 44px; border-radius:20px;
  background:var(--glass-2); border:1px solid var(--glass-2-border);
  backdrop-filter:blur(var(--glass-2-blur)); -webkit-backdrop-filter:blur(var(--glass-2-blur));
  box-shadow:var(--glass-shadow), var(--glass-highlight);
}
@media (max-width:700px){ .pull-quote-block{ padding:28px 26px; border-radius:16px; } }
.pull-quote-block .dot{
  position:absolute; width:8px; height:8px; border-radius:50%; background:var(--local-accent, var(--accent));
}
.pull-quote-block h2{
  font-size:clamp(1.7rem,3.4vw,2.6rem); line-height:1.28; font-weight:500; letter-spacing:-0.01em;
}
.pull-quote-block h2 .emph{ font-style:italic; font-weight:700; color:var(--local-accent, var(--accent-light)); }
.pull-quote-block p{
  margin-top:22px; font-size:1.05rem; line-height:1.6; color:var(--muted); font-family:'Red Hat Text',sans-serif; font-weight:300;
}
.pull-quote-block .underline{ text-decoration:underline; text-decoration-color:var(--local-accent, var(--accent)); text-underline-offset:4px; color:var(--text); }
.pull-quote-cta{ margin-top:28px; display:inline-block; font-size:0.9rem; color:var(--text); border-bottom:1px solid var(--line-strong); padding-bottom:2px; transition:border-color 0.25s ease, transform 0.25s ease; }
.pull-quote-cta:hover{ border-color:var(--local-accent, var(--accent)); transform:translateX(3px); }

/* ---------- footer photo collage ---------- */
.footer-collage{
  position:relative; height:170px; margin-top:40px; overflow:visible;
}
.footer-collage img{
  position:absolute; width:120px; height:160px; object-fit:cover; border-radius:8px;
  box-shadow: -14px 20px 30px -6px rgba(0,0,0,0.55); border:1px solid var(--line-strong); filter:grayscale(0.35);
}
.footer-collage img:nth-child(1){ left:0%; top:10px; transform:rotate(-9deg); z-index:1; }
.footer-collage img:nth-child(2){ left:22%; top:-6px; transform:rotate(6deg); z-index:2; }
.footer-collage img:nth-child(3){ left:44%; top:14px; transform:rotate(-4deg); z-index:1; }
@media (max-width:640px){ .footer-collage{ display:none; } }

/* ---------- mission ---------- */
.mission-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:56px; }
@media (max-width:780px){ .mission-grid{ grid-template-columns:1fr; gap:40px; } }
.mission-grid > div{
  background:var(--glass-1); border:1px solid var(--glass-1-border); border-radius:14px; padding:26px 28px;
  backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur));
  transition:background 0.3s ease, transform 0.3s cubic-bezier(.16,.8,.24,1);
}
.mission-grid > div:hover{ background:var(--glass-2); transform:translateY(-3px); }
.mission-quote{ font-family:'Red Hat Text',sans-serif; font-size:1.4rem; font-weight:350; line-height:1.5; letter-spacing:-0.01em; max-width:30ch; }
.mission-quote::before{ content:'"'; color:var(--accent); font-family: Georgia, serif; }
.mission-label{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.1em; text-transform:uppercase; color:var(--faint); margin-bottom:16px; display:block; }

/* ---------- status badges ---------- */
.status{
  font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.06em; text-transform:uppercase; padding:4px 10px; border-radius:100px; border:1px solid; display:inline-block;
  backdrop-filter:blur(var(--glass-4-blur)); -webkit-backdrop-filter:blur(var(--glass-4-blur));
  transition:transform 0.25s cubic-bezier(.34,1.56,.64,1);
}
.status:hover{ transform:translateY(-2px); }
.status-planned{ color:var(--pink); border-color:var(--pink); }
.status-live{ color:var(--green); border-color:var(--green); }
.status-trial{ color:var(--blue); border-color:var(--blue); }

/* ---------- contact form ---------- */
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; }
@media (max-width:780px){ .form-grid{ grid-template-columns:1fr; gap:36px; } }
.channel-row{ display:flex; gap:12px; margin-top:24px; flex-wrap:wrap; }
.field{ display:flex; flex-direction:column; gap:8px; margin-bottom:18px; }
.field label{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.06em; text-transform:uppercase; color:var(--faint); }
.field input, .field select, .field textarea{
  background:var(--glass-1); border:1px solid var(--glass-1-border); border-radius:10px;
  backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur));
  padding:12px 14px; color:var(--text); font-family:'Red Hat Text',sans-serif; font-size:0.95rem;
  transition:border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
}
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--accent); background:var(--glass-2);
  box-shadow:0 0 0 3px var(--accent-dim);
}
.field textarea{ resize:vertical; min-height:100px; }

/* ---------- footer ---------- */
.footer{
  border-top:1px solid var(--glass-2-border); padding:56px 0 40px;
  background:var(--glass-1);
  backdrop-filter:blur(var(--glass-1-blur)); -webkit-backdrop-filter:blur(var(--glass-1-blur));
}
.footer-top{ display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:32px; }
.footer-cta h3{ font-size:1.6rem; font-weight:500; max-width:14ch; }
.footer-links{ display:flex; gap:48px; flex-wrap:wrap; }
.footer-col-title{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:0.08em; text-transform:uppercase; color:var(--faint); margin-bottom:14px; display:block; }
.footer-links-col{ display:flex; flex-direction:column; gap:10px; }
.footer-links-col a{ position:relative; display:inline-block; width:fit-content; font-size:0.88rem; color:var(--muted); font-family:'Red Hat Text',sans-serif; transition:color 0.2s ease; }
.footer-links-col a::after{
  content:''; position:absolute; left:0; right:100%; bottom:-2px; height:1px;
  background:var(--accent-light); transition:right 0.28s cubic-bezier(.16,.8,.24,1);
}
.footer-links-col a:hover::after{ right:0; }
.footer-links-col a:hover{ color:var(--text); }
.footer-legal{ margin-top:56px; padding-top:24px; border-top:1px solid var(--line); }
.footer-legal p{ font-size:0.8rem; color:var(--faint); font-family:'Red Hat Text',sans-serif; line-height:1.6; max-width:80ch; }
.footer-legal a{ color:var(--muted); text-decoration:underline; text-decoration-color:var(--line-strong); text-underline-offset:2px; }
.footer-legal a:hover{ color:var(--text); text-decoration-color:var(--accent); }
.footer-bottom{ margin-top:16px; display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:0.8rem; color:var(--faint); font-family:'Red Hat Text',sans-serif; }
.footer-legal-links a{ color:var(--faint); text-decoration:none; }
.footer-legal-links a:hover{ color:var(--text); }
.footer-legal-links a + a{ margin-left:14px; }

/* ---------- comparison bar chart ---------- */
.compare-chart{ display:flex; flex-direction:column; gap:22px; max-width:760px; }
.compare-row{ display:grid; grid-template-columns:200px 1fr 72px; gap:18px; align-items:center; }
@media (max-width:640px){ .compare-row{ grid-template-columns:1fr; gap:8px; } }
.compare-label{ font-size:0.92rem; color:var(--muted); font-family:'Red Hat Text',sans-serif; }
.compare-bar-track{
  position:relative; height:10px; border-radius:100px;
  background:var(--glass-1); border:1px solid var(--glass-1-border); overflow:hidden;
}
.compare-bar{
  position:absolute; inset:0 auto 0 0; height:100%; border-radius:100px;
  background:var(--faint); width:0%;
  transition:width 1.1s cubic-bezier(.16,.8,.24,1);
}
.compare-bar-accent{ background:linear-gradient(90deg, var(--local-accent, var(--accent)), var(--accent-light)); }
.compare-row.is-visible .compare-bar{ width:var(--bar-width, 0%); }
.compare-value{ font-family:'JetBrains Mono',monospace; font-size:0.9rem; color:var(--text); text-align:right; }
.compare-row-highlight .compare-label{ color:var(--text); font-weight:500; }
.compare-row-highlight .compare-value{ color:var(--local-accent, var(--accent-light)); font-weight:600; }
.compare-footnote{ margin-top:22px; color:var(--faint); font-size:0.82rem; font-family:'Red Hat Text',sans-serif; max-width:70ch; }
