/* =========================================================================
   Gagan Randhawa — Portfolio (Product-Grade)
   Design system + layout. Dark-first, theme-aware.
   ========================================================================= */

@import url('https://api.fontshare.com/v2/css?f[]=clash-display@600,700&f[]=satoshi@400,500,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&display=swap');

/* ---- Tokens ---- */
:root {
  --bg: #08090d;
  --surface: #0f1117;
  --surface-2: #161922;
  --border: rgba(255, 255, 255, 0.08);
  --border-2: rgba(255, 255, 255, 0.14);
  --ink: #eef1f6;
  --muted: #98a1b3;
  --faint: #747d90;
  --accent: #5b6cff;
  --accent-ink: #eaecff;
  --accent-2: #34e0e8;
  --warm: #ffb454;
  --good: #43d17a;

  --font-display: 'Clash Display', system-ui, sans-serif;
  --font-body: 'Satoshi', system-ui, -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  --maxw: 1180px;
  --pad: clamp(20px, 5vw, 40px);
  --radius: 14px;
  --radius-sm: 9px;

  --shadow: 0 30px 80px -40px rgba(0, 0, 0, 0.75);
  --shadow-premium: 0 40px 100px -50px rgba(0, 0, 0, 0.9), inset 0 1px 0 rgba(255,255,255,.04);
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

:root[data-theme="light"] {
  --bg: #f6f7f9;
  --surface: #ffffff;
  --surface-2: #f0f2f6;
  --border: rgba(12, 16, 26, 0.10);
  --border-2: rgba(12, 16, 26, 0.18);
  --ink: #10131a;
  --muted: #545c6b;
  --faint: #8b93a3;
  --accent: #4550e0;
  --accent-ink: #ffffff;
  --accent-2: #0f9aa2;
  --warm: #b9711a;
  --good: #1f9d57;
  --shadow: 0 30px 70px -45px rgba(20, 26, 45, 0.35);
}

/* ---- Reset-ish ---- */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 17px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  background-image: radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--accent) 5%, transparent), transparent 32%);
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
::selection { background: var(--accent); color: var(--accent-ink); }

:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 3px; }
.skip-link { position: fixed; top: 10px; left: 10px; z-index: 100; padding: 10px 14px; border-radius: 8px; background: var(--accent); color: var(--accent-ink); transform: translateY(-150%); transition: transform .2s; }
.skip-link:focus { transform: translateY(0); }

/* ---- Layout primitives ---- */
.wrap { max-width: var(--maxw); margin: 0 auto; padding-left: var(--pad); padding-right: var(--pad); }
.section { padding: clamp(76px, 12vh, 144px) 0; position: relative; isolation: isolate; }
.section + .section::before { content: ""; position: absolute; top: 0; left: 50%; width: min(calc(100% - var(--pad) * 2), var(--maxw)); height: 1px; transform: translateX(-50%); background: linear-gradient(90deg, transparent, var(--border-2) 18%, var(--border-2) 82%, transparent); }
.section:nth-of-type(2n + 1)::after { content: ""; position: absolute; z-index: -1; inset: 8% 0; pointer-events: none; background: radial-gradient(40% 45% at 8% 50%, color-mix(in srgb, var(--accent) 5%, transparent), transparent 100%); }

.eyebrow {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 18px;
  display: flex; align-items: center; gap: 10px;
}
.eyebrow::before { content: ""; width: 22px; height: 1px; background: var(--accent); opacity: 0.7; }

h1, h2, h3 { font-family: var(--font-display); font-weight: 600; letter-spacing: -0.035em; line-height: .98; margin: 0; text-wrap: balance; }
.section-title { font-size: clamp(34px, 5vw, 56px); max-width: 17ch; }
.section-lead { color: var(--muted); font-size: clamp(16px, 2vw, 19px); max-width: 60ch; margin: 18px 0 0; }
.premium-card { --mx: 50%; --my: 50%; box-shadow: var(--shadow-premium); }
.premium-card::after { content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; opacity: 0; transition: opacity .45s var(--ease); background: radial-gradient(420px circle at var(--mx) var(--my), color-mix(in srgb, var(--accent) 10%, transparent), transparent 55%); }
.premium-card:hover::after { opacity: 1; }

.mono { font-family: var(--font-mono); }

/* ---- Buttons ---- */
.btn {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--font-body); font-weight: 700; font-size: 14px; letter-spacing: 0.01em;
  padding: 13px 20px; border-radius: 999px; cursor: pointer;
  border: 1px solid transparent; transition: transform 0.25s var(--ease), background 0.25s, border-color 0.25s, color 0.25s;
}
.btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.btn:hover { transform: translateY(-2px); }
.btn-primary { background: var(--accent); color: var(--accent-ink); }
.btn-primary:hover { box-shadow: 0 12px 30px -10px var(--accent); }
.btn-ghost { border-color: var(--border-2); color: var(--ink); background: transparent; }
.btn-ghost:hover { border-color: var(--ink); background: var(--surface); }
.btn-ai { border-color: color-mix(in srgb, var(--accent) 45%, var(--border-2)); background: color-mix(in srgb, var(--surface) 80%, transparent); box-shadow: inset 0 1px 0 color-mix(in srgb, white 8%, transparent); }
.btn-ai:hover { border-color: var(--accent); box-shadow: 0 16px 34px -22px var(--accent); }
.ai-spark { color: var(--accent-2); text-shadow: 0 0 12px var(--accent-2); }

/* =========================================================================
   NAV
   ========================================================================= */
.nav {
  position: sticky; top: 0; z-index: 50;
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  background: color-mix(in srgb, var(--bg) 90%, transparent);
  border-bottom: 1px solid var(--border);
  /* Promote to its own compositor layer so the blur doesn't shimmer
     while the WebGL hero repaints behind it. */
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
}
.nav-inner { max-width: var(--maxw); margin: 0 auto; padding: 14px var(--pad); display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.brand { display: flex; align-items: center; gap: 12px; font-family: var(--font-mono); font-size: 14px; letter-spacing: 0.02em; }
.brand .glyph {
  width: 30px; height: 30px; border-radius: 8px; display: grid; place-items: center;
  border: 1px solid var(--border-2); font-family: var(--font-display); font-weight: 700; font-size: 14px; color: var(--accent);
}
.nav-links { display: flex; align-items: center; gap: 26px; }
.nav-links a { position: relative; font-family: var(--font-body); font-weight: 500; font-size: 14px; color: var(--muted); transition: color 0.2s; }
.nav-links a:hover { color: var(--ink); }
.nav-links a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -9px; height: 2px; border-radius: 2px; background: var(--accent); transform: scaleX(0); transition: transform .25s var(--ease); }
.nav-links a.active { color: var(--ink); }
.nav-links a.active::after { transform: scaleX(1); }
.nav-links .nav-ai { display: inline-flex; align-items: center; gap: 7px; padding: 7px 11px; margin: -7px -11px; border: 1px solid color-mix(in srgb, var(--accent) 26%, var(--border)); border-radius: 999px; color: var(--ink); background: color-mix(in srgb, var(--accent) 7%, transparent); }
.nav-links .nav-ai::after { display: none; }
.nav-ai-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent-2); box-shadow: 0 0 10px var(--accent-2); }
.mobile-contact-link { display: none; }
.nav-actions { display: flex; align-items: center; gap: 12px; }
.nav-contact { padding: 9px 16px; }
.icon-btn {
  width: 44px; height: 44px; border-radius: 10px; border: 1px solid var(--border-2); background: transparent;
  color: var(--muted); cursor: pointer; display: grid; place-items: center; transition: color 0.2s, border-color 0.2s;
}
.icon-btn:hover { color: var(--ink); border-color: var(--ink); }
.icon-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.lang-toggle { width: auto; min-width: 58px; padding: 0 10px; grid-auto-flow: column; gap: 6px; font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.06em; }
.theme-icon-sun { display: none; }
:root[data-theme="light"] .theme-icon-sun { display: block; }
:root[data-theme="light"] .theme-icon-moon { display: none; }
.menu-toggle { display: none; }
@media (max-width: 840px) {
  .nav-inner { position: relative; padding-block: 10px; }
  .brand > span:last-child, .nav-contact { display: none; }
  .menu-toggle { display: grid; }
  .nav-actions { gap: 8px; }
  .nav-links { display: none; position: absolute; top: calc(100% + 1px); left: var(--pad); right: var(--pad); padding: 10px; flex-direction: column; align-items: stretch; gap: 2px; border: 1px solid var(--border-2); border-radius: 12px; background: color-mix(in srgb, var(--surface) 96%, transparent); box-shadow: var(--shadow); }
  .nav-links.open { display: flex; }
  .nav-links a { padding: 12px 14px; border-radius: 8px; font-size: 15px; }
  .nav-links .mobile-contact-link { display: block; color: var(--accent); }
  .nav-links .nav-ai { margin: 0; border-radius: 8px; }
  .nav-links a:hover, .nav-links a.active { background: var(--surface-2); }
  .nav-links a::after { display: none; }
}

/* =========================================================================
   HERO
   ========================================================================= */
.hero { position: relative; min-height: 92vh; display: flex; align-items: center; overflow: hidden; }
.hero-canvas-wrap { position: absolute; inset: 0; z-index: 0; }
#hero-canvas { width: 100%; height: 100%; display: block; }
.hero-canvas-wrap::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  /* Theme-aware fade so the vignette matches the (now theme-aware) hero canvas. */
  background: radial-gradient(120% 90% at 70% 30%, transparent 30%, var(--bg) 88%);
}
/* WebGL fallback gradient (hero sets .hero-webgl-unavailable; glue sets .no-webgl) */
.hero-canvas-wrap.no-webgl,
.hero-canvas-wrap.hero-webgl-unavailable {
  background:
    radial-gradient(60% 60% at 72% 32%, color-mix(in srgb, var(--accent) 40%, transparent), transparent 70%),
    radial-gradient(50% 50% at 25% 70%, color-mix(in srgb, var(--accent-2) 26%, transparent), transparent 70%),
    var(--bg);
}
.hero-content { position: relative; z-index: 2; max-width: var(--maxw); }
/* Hero background is theme-aware (hero.js setTheme), so text follows theme tokens. */
.hero h1 { font-size: clamp(42px, 6.7vw, 100px); font-weight: 700; margin: 22px 0 0; color: var(--ink); letter-spacing: -0.05em; line-height: .92; }
.hero h1 .lit { color: var(--accent); }
.hero .sub { color: var(--muted); font-size: clamp(16px, 2.15vw, 21px); margin: 26px 0 0; max-width: 52ch; }
/* Own the width on large screens: text anchored left, 3D breathing to the right. */
@media (min-width: 900px) {
  .hero h1 { max-width: 66%; }
  .hero .sub { max-width: 46ch; }
}
.hero-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.hero-scroll { position: absolute; bottom: 26px; left: var(--pad); z-index: 2; font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--faint); display: flex; align-items: center; gap: 10px; }
.hero-scroll::after { content: ""; width: 1px; height: 26px; background: linear-gradient(var(--faint), transparent); }
/* Graceful seam: fade the dark hero into the page background (invisible in dark, smooth in light). */
.hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 20%; z-index: 1; pointer-events: none; background: linear-gradient(to bottom, transparent, var(--bg)); }
@media (max-width: 700px) {
  .hero { min-height: min(860px, calc(100svh - 64px)); align-items: flex-start; padding-top: clamp(72px, 13vh, 120px); }
  /* hero.js already centres the sculpture below 700px; keep the full canvas in
     frame and use the vignette—not a second translation—to protect text. */
  .hero-canvas-wrap { opacity: .78; transform: none; }
  .hero-canvas-wrap::after { background: linear-gradient(90deg, color-mix(in srgb, var(--bg) 92%, transparent) 0%, color-mix(in srgb, var(--bg) 58%, transparent) 54%, transparent 100%), radial-gradient(110% 82% at 58% 38%, transparent 30%, var(--bg) 94%); }
  .hero h1 { font-size: clamp(42px, 13vw, 66px); }
  .hero .sub { max-width: 38ch; }
  .hero-scroll { display: none; }
  .eyebrow { font-size: 11px; letter-spacing: .12em; }
}
@media (max-height: 650px) and (orientation: landscape) { .hero { min-height: 680px; } .hero-scroll { display: none; } }

/* =========================================================================
   PROOF STRIP (metric instruments)
   ========================================================================= */
.proof-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--border); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
@media (min-width: 640px) { .proof-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 980px) { .proof-grid { grid-template-columns: repeat(6, 1fr); } }
.metric { background: var(--surface); padding: 22px 20px; position: relative; }
.metric::before { content: ""; position: absolute; top: 0; left: 0; width: 26px; height: 2px; background: var(--accent); }
.metric .val { font-family: var(--font-display); font-weight: 700; font-size: clamp(22px, 3vw, 30px); letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.metric .val em { font-style: normal; color: var(--accent); }
.metric .lbl { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.06em; color: var(--muted); margin-top: 8px; line-height: 1.4; text-transform: uppercase; }

/* =========================================================================
   WORK / CASE STUDIES
   ========================================================================= */
.work-list { display: flex; flex-direction: column; gap: 28px; margin-top: 54px; }
.case {
  display: grid; grid-template-columns: 1fr; gap: 22px;
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  padding: clamp(24px, 3.4vw, 44px); position: relative; overflow: hidden;
  transition: border-color 0.35s var(--ease), transform 0.35s var(--ease), box-shadow 0.35s var(--ease);
}
/* Ambient accent that warms on hover — a glow, not a rail. */
.case::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity 0.4s var(--ease);
  background: radial-gradient(80% 130% at 100% 0%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 60%);
}
@media (min-width: 860px) { .case { grid-template-columns: .82fr 1.18fr; align-items: center; gap: clamp(30px, 5vw, 64px); } }
.case:hover { border-color: color-mix(in srgb, var(--accent) 38%, var(--border-2)); box-shadow: var(--shadow-premium); transform: translateY(-3px); }
.case:nth-child(2) { --case-accent: var(--accent-2); }
.case:nth-child(3) { --case-accent: var(--warm); }
.case:nth-child(4) { --case-accent: #b276ff; }
.case > * { position: relative; z-index: 1; }
.case-index { font-family: var(--font-mono); font-size: 12.5px; color: var(--faint); letter-spacing: 0.1em; transition: color 0.35s var(--ease); }
.case h3 { font-size: clamp(22px, 3vw, 30px); margin: 12px 0 0; }
.case .role { font-family: var(--font-mono); font-size: 12.5px; color: var(--accent); margin-top: 10px; letter-spacing: 0.02em; }
.case p { color: var(--muted); font-size: 15.5px; margin: 16px 0 0; }
.case-metrics { display: flex; flex-direction: column; gap: 10px; }
.case-side { display: flex; flex-direction: column; gap: 14px; }
.case-metric {
  display: flex; align-items: baseline; gap: 16px; padding: 15px 17px;
  border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-2);
  transition: border-color 0.3s var(--ease);
}
.case-metric:hover { border-color: var(--border-2); }
.case-metric .m-val { font-family: var(--font-display); font-weight: 700; font-size: 22px; line-height: 1; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; min-width: 74px; }
.case-metric .m-val em { font-style: normal; color: var(--accent); }
.case-metric .m-lbl { font-size: 13.5px; color: var(--muted); line-height: 1.45; }
.tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 18px; }
.tags span { font-family: var(--font-mono); font-size: 11px; color: var(--muted); border: 1px solid var(--border); border-radius: 6px; padding: 4px 9px; }

/* Confidential-work visualizations: code-rendered product abstractions, not fake screenshots. */
.case-visual { --v-accent: var(--case-accent, var(--accent)); min-height: 230px; position: relative; overflow: hidden; border: 1px solid var(--border-2); border-radius: 12px; background: #090b12; box-shadow: inset 0 1px 0 rgba(255,255,255,.05); }
.case-visual::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(70% 80% at 75% 20%, color-mix(in srgb, var(--v-accent) 18%, transparent), transparent 70%), linear-gradient(115deg, transparent 55%, rgba(255,255,255,.025)); }
.visual-bar { height: 34px; display: flex; align-items: center; gap: 6px; padding: 0 12px; border-bottom: 1px solid rgba(255,255,255,.08); color: #798197; font: 9px/1 var(--font-mono); letter-spacing: .05em; }
.visual-bar i { width: 5px; height: 5px; border-radius: 50%; background: #343949; }
.visual-bar span { margin-left: 6px; }
.clinic-grid { display: grid; grid-template-columns: 48px 1fr; height: 196px; }
.clinic-nav { display: flex; flex-direction: column; align-items: center; gap: 17px; padding-top: 15px; border-right: 1px solid rgba(255,255,255,.07); }
.clinic-nav b { color: #8e98ff; font: 700 10px var(--font-display); }
.clinic-nav span { width: 15px; height: 3px; border-radius: 3px; background: #303547; }
.clinic-main { padding: 20px; }
.visual-kicker { color: #6f7891; font: 8px var(--font-mono); letter-spacing: .12em; }
.clinic-chart { height: 82px; display: flex; align-items: flex-end; gap: 7px; margin: 12px 0 16px; padding: 0 8px; border-bottom: 1px solid rgba(255,255,255,.08); }
.clinic-chart i { flex: 1; height: var(--h, 50%); min-width: 7px; background: linear-gradient(#7f8aff, #424cbd); border-radius: 3px 3px 0 0; opacity: .9; }
.clinic-chart i:nth-child(1){--h:35%}.clinic-chart i:nth-child(2){--h:62%}.clinic-chart i:nth-child(3){--h:48%}.clinic-chart i:nth-child(4){--h:82%}.clinic-chart i:nth-child(5){--h:68%}.clinic-chart i:nth-child(6){--h:95%}
.clinic-row { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }.clinic-row span { height: 31px; border: 1px solid rgba(255,255,255,.07); border-radius: 5px; background: rgba(255,255,255,.025); }
.aero-radar { position: absolute; width: 170px; aspect-ratio: 1; left: 9%; top: 48px; border: 1px solid rgba(52,224,232,.24); border-radius: 50%; background: repeating-radial-gradient(circle, transparent 0 22px, rgba(52,224,232,.07) 23px 24px); }
.aero-radar::after { content:""; position:absolute; inset:50% 50% 50% 50%; width:48%; height:1px; transform-origin:left; background:linear-gradient(90deg,#34e0e8,transparent); box-shadow:0 0 14px #34e0e8; animation:radar-sweep 7s linear infinite; }
@keyframes radar-sweep{to{transform:rotate(360deg)}}
.radar-cross::before,.radar-cross::after{content:"";position:absolute;background:rgba(52,224,232,.12)}.radar-cross::before{width:1px;height:100%;left:50%}.radar-cross::after{height:1px;width:100%;top:50%}.aero-radar b,.aero-radar i,.aero-radar span{position:absolute;width:6px;height:6px;background:#34e0e8;border-radius:50%;box-shadow:0 0 10px #34e0e8}.aero-radar b{left:28%;top:31%}.aero-radar i{left:68%;top:56%}.aero-radar span{left:48%;top:76%}
.aero-readout { position: absolute; right: 10%; top: 76px; display:flex; flex-direction:column; color:#768097; font:9px var(--font-mono); letter-spacing:.08em }.aero-readout strong{font:700 32px var(--font-display);color:#dffcff;letter-spacing:-.03em;margin:8px 0 2px}.aero-readout small{color:#34e0e8;font-size:8px}
.sap-flow { position:absolute;inset:34px 0 0; }.sap-node{position:absolute;display:grid;place-items:center;width:72px;height:34px;border:1px solid rgba(255,180,84,.35);border-radius:7px;color:#d7b884;background:rgba(255,180,84,.07);font:9px var(--font-mono)}.sap-node.primary{width:88px;height:42px;left:calc(50% - 44px);top:32px;color:#fff2dd;background:rgba(255,180,84,.14)}.sap-node.n1{left:9%;bottom:27px}.sap-node.n2{left:calc(50% - 36px);bottom:27px}.sap-node.n3{right:9%;bottom:27px}.sap-line{position:absolute;top:74px;height:55px;width:1px;background:rgba(255,180,84,.3);transform-origin:top}.sap-line.l1{left:50%;rotate:55deg}.sap-line.l2{left:50%}.sap-line.l3{left:50%;rotate:-55deg}
.migration-flow{position:absolute;inset:58px 28px 20px;display:grid;grid-template-columns:1fr auto 1fr;gap:22px;align-items:center}.migration-flow small{font:8px var(--font-mono);color:#747d90;letter-spacing:.12em}.legacy-column,.modern-column{display:flex;flex-direction:column;gap:10px}.legacy-column span,.modern-column span{display:block;height:15px;border-radius:4px}.legacy-column span{background:#252a38;border-left:2px solid #596176}.legacy-column span:nth-child(2){margin-left:10px}.legacy-column span:nth-child(3){margin-left:20px}.legacy-column span:nth-child(4){margin-left:30px}.modern-column{display:grid;grid-template-columns:1fr 1fr}.modern-column small{grid-column:1/-1}.modern-column span{background:rgba(178,118,255,.15);border:1px solid rgba(178,118,255,.38)}.migration-arrow{font:26px var(--font-display);color:#b276ff}

/* =========================================================================
   FLAGSHIP (currently building)
   ========================================================================= */
.flagship {
  border: 1px solid var(--border-2); border-radius: var(--radius); overflow: hidden;
  background:
    radial-gradient(90% 120% at 85% 0%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 60%),
    var(--surface);
  padding: clamp(26px, 4vw, 48px); margin-top: 40px; position: relative;
}
.flagship { display: grid; gap: 32px; }
@media (min-width: 900px) { .flagship { grid-template-columns: .86fr 1.14fr; align-items: center; } }
.flagship-copy { position: relative; z-index: 2; }
.badge {
  display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 11.5px;
  letter-spacing: 0.06em; text-transform: uppercase; color: var(--warm);
  border: 1px solid color-mix(in srgb, var(--warm) 45%, transparent); border-radius: 999px; padding: 5px 12px;
}
.badge .pulse { width: 7px; height: 7px; border-radius: 50%; background: var(--warm); box-shadow: 0 0 0 0 color-mix(in srgb, var(--warm) 70%, transparent); animation: pulse 2.4s infinite; }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--warm) 60%, transparent); } 70% { box-shadow: 0 0 0 10px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }
@media (prefers-reduced-motion: reduce) { .badge .pulse { animation: none; } }
.flagship h3 { font-size: clamp(24px, 3.4vw, 36px); margin: 20px 0 0; max-width: 20ch; }
.flagship p { color: var(--muted); margin: 16px 0 0; max-width: 62ch; }
.flagship .stack { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.flagship .stack span { font-family: var(--font-mono); font-size: 11.5px; color: var(--ink); background: var(--surface-2); border: 1px solid var(--border); border-radius: 6px; padding: 5px 10px; }
.workflow-visual { min-height: 340px; position: relative; z-index: 1; overflow: hidden; border-radius: 12px; border: 1px solid var(--border-2); background: #090b12; box-shadow: 0 25px 70px -34px rgba(91,108,255,.65); transform: perspective(1000px) rotateY(-2deg) rotateX(1deg); }
.workflow-top{height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid rgba(255,255,255,.08);color:#8790a4;font:9px var(--font-mono)}.workflow-top span{display:flex;align-items:center;gap:8px}.workflow-top i{width:6px;height:6px;border-radius:50%;background:#43d17a;box-shadow:0 0 8px #43d17a}.workflow-top b{padding:4px 7px;border:1px solid rgba(255,255,255,.1);border-radius:5px;color:#697287}.workflow-body{display:grid;grid-template-columns:48px 1fr;height:296px}.workflow-sidebar{border-right:1px solid rgba(255,255,255,.07);display:flex;flex-direction:column;align-items:center;gap:17px;padding-top:18px}.workflow-sidebar i{width:16px;height:4px;border-radius:3px;background:#303547}.workflow-sidebar i:first-child{height:16px;border-radius:5px;background:#5b6cff}.workflow-thread{padding:30px}.workflow-thread small{font:8px var(--font-mono);letter-spacing:.14em;color:#737c91}.thread-line{display:block;width:60%;height:7px;background:#242938;border-radius:4px;margin-top:12px}.thread-line.wide{width:88%;margin-top:20px}.ai-response{margin-top:28px;padding:18px 18px 18px 42px;border:1px solid rgba(91,108,255,.25);border-radius:9px;background:rgba(91,108,255,.07);position:relative}.ai-response b{position:absolute;left:16px;top:16px;color:#7e8aff}.ai-response span{display:block;width:100%;height:6px;background:#343a50;border-radius:3px;margin-bottom:9px}.ai-response span:nth-child(3){width:82%}.ai-response span:nth-child(4){width:66%;margin:0}.workflow-status{margin-top:17px;color:#697287;font:8px var(--font-mono);display:flex;align-items:center;gap:7px}.workflow-status i{width:5px;height:5px;border-radius:50%;background:#43d17a}

/* Light-theme product canvases: retain each visual's identity without leaving
   dark-mode islands inside the light editorial layout. */
:root[data-theme="light"] .case-visual,
:root[data-theme="light"] .workflow-visual {
  background: linear-gradient(145deg, #ffffff, #f0f2f9);
  border-color: rgba(32, 39, 65, .14);
  box-shadow: 0 22px 50px -36px rgba(38, 46, 82, .35), inset 0 1px 0 #fff;
}
:root[data-theme="light"] .case-visual::after { background: radial-gradient(70% 80% at 75% 20%, color-mix(in srgb, var(--v-accent) 12%, transparent), transparent 70%), linear-gradient(115deg, transparent 55%, rgba(69,80,224,.025)); }
:root[data-theme="light"] .visual-bar,
:root[data-theme="light"] .workflow-top { border-color: rgba(32,39,65,.1); color: #6f7890; }
:root[data-theme="light"] .visual-bar i { background: #c9cede; }
:root[data-theme="light"] .clinic-nav { border-color: rgba(32,39,65,.09); }
:root[data-theme="light"] .clinic-nav span { background: #d4d8e5; }
:root[data-theme="light"] .visual-kicker { color: #737c91; }
:root[data-theme="light"] .clinic-chart { border-color: rgba(32,39,65,.1); }
:root[data-theme="light"] .clinic-chart i { background: linear-gradient(#6672ee,#4550e0); }
:root[data-theme="light"] .clinic-row span { background: rgba(69,80,224,.035); border-color: rgba(69,80,224,.12); }
:root[data-theme="light"] .aero-radar { border-color: rgba(15,154,162,.35); background: repeating-radial-gradient(circle,transparent 0 22px,rgba(15,154,162,.1) 23px 24px); }
:root[data-theme="light"] .radar-cross::before,
:root[data-theme="light"] .radar-cross::after { background: rgba(15,154,162,.16); }
:root[data-theme="light"] .aero-readout { color: #667187; }
:root[data-theme="light"] .aero-readout strong { color: #122f3b; }
:root[data-theme="light"] .aero-readout small { color: #0f858d; }
:root[data-theme="light"] .sap-node { color: #8b5b17; background: rgba(185,113,26,.08); border-color: rgba(185,113,26,.34); }
:root[data-theme="light"] .sap-node.primary { color: #5c380d; background: rgba(185,113,26,.14); }
:root[data-theme="light"] .sap-line { background: rgba(185,113,26,.32); }
:root[data-theme="light"] .legacy-column span { background: #dfe2ec; border-left-color: #8a93a8; }
:root[data-theme="light"] .modern-column span { background: rgba(115,67,184,.09); border-color: rgba(115,67,184,.38); }
:root[data-theme="light"] .migration-arrow { color: #7343b8; }
:root[data-theme="light"] .workflow-sidebar { border-color: rgba(32,39,65,.09); }
:root[data-theme="light"] .workflow-sidebar i { background: #d3d7e3; }
:root[data-theme="light"] .workflow-sidebar i:first-child { background: var(--accent); }
:root[data-theme="light"] .workflow-top b { color: #667087; border-color: rgba(32,39,65,.13); }
:root[data-theme="light"] .workflow-thread small { color: #717a90; }
:root[data-theme="light"] .thread-line { background: #dfe2eb; }
:root[data-theme="light"] .ai-response { border-color: rgba(69,80,224,.22); background: rgba(69,80,224,.055); }
:root[data-theme="light"] .ai-response span { background: #cbd0e5; }
:root[data-theme="light"] .workflow-status { color: #687187; }

/* =========================================================================
   APPROACH
   ========================================================================= */
.approach-grid { display: grid; grid-template-columns: 1fr; gap: 18px; margin-top: 46px; }
@media (min-width: 720px) { .approach-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1040px) { .approach-grid { grid-template-columns: repeat(4, 1fr); } }
.pillar { border: 1px solid var(--border); border-radius: var(--radius); padding: 28px 24px; background: linear-gradient(145deg, color-mix(in srgb, var(--surface) 96%, var(--accent) 4%), var(--surface)); transition: transform .3s var(--ease), border-color .3s; }
.pillar:hover { transform: translateY(-4px); border-color: color-mix(in srgb, var(--accent) 32%, var(--border)); }
.pillar .num { font-family: var(--font-mono); font-size: 12px; color: var(--accent); }
.pillar h3 { font-family: var(--font-display); font-weight: 600; font-size: 18px; margin: 14px 0 8px; letter-spacing: -0.01em; }
.pillar p { color: var(--muted); font-size: 14.5px; margin: 0; }

/* =========================================================================
   AI SECTION
   ========================================================================= */
.ai-section { position: relative; overflow: hidden; }
.section.ai-section::after { content:""; position:absolute; z-index:-1; inset:8% 0; background:radial-gradient(45% 55% at 82% 48%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 100%);pointer-events:none }
.ai-shell { display:grid;grid-template-columns:1fr;gap:34px;margin-top:0;padding:clamp(26px,5vw,58px);border:1px solid var(--border-2);border-radius:24px;background:linear-gradient(135deg,color-mix(in srgb,var(--surface) 96%,var(--accent) 4%),var(--surface));box-shadow:var(--shadow-premium);position:relative;overflow:hidden }
.ai-shell::before { content:"PORTFOLIO INTELLIGENCE";position:absolute;top:18px;right:24px;color:var(--faint);font:8px var(--font-mono);letter-spacing:.15em }
@media (min-width: 900px) { .ai-shell { grid-template-columns: 0.85fr 1.15fr; align-items: start; } }
.ai-copy { padding-top: 16px; }
.ai-copy h2 { font-size: clamp(36px, 4.5vw, 54px); max-width: 10ch; }
.ai-copy p { color: var(--muted); margin: 18px 0 0; }
.ai-copy .note { font-family: var(--font-mono); font-size: 12px; color: var(--faint); margin-top: 20px; border-left: 2px solid var(--border-2); padding-left: 14px; }
.ai-proof { display:flex;flex-wrap:wrap;gap:8px;margin-top:24px }
.ai-proof span { display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid var(--border);border-radius:999px;color:var(--ink);background:var(--surface-2);font:10px var(--font-mono);letter-spacing:.04em }
.ai-proof span::before { content:"✓";color:var(--good) }
#ai-mount { min-height: 420px; }
@media(max-width:560px){.ai-shell{border-radius:18px;padding:28px 20px 20px}.ai-shell::before{display:none}.ai-copy h2{font-size:clamp(34px,11vw,46px)}}

/* =========================================================================
   ABOUT
   ========================================================================= */
.about-grid { display: grid; grid-template-columns: 1fr; gap: 34px; margin-top: 40px; }
@media (min-width: 860px) { .about-grid { grid-template-columns: 1.3fr 0.7fr; } }
.about-body p { color: var(--muted); font-size: 16.5px; margin: 0 0 18px; max-width: 60ch; }
.about-body strong { color: var(--ink); font-weight: 500; }
.timeline { display: flex; flex-direction: column; gap: 0; }
.tl-item { display: grid; grid-template-columns: 66px minmax(0, 1fr); gap: 14px; padding: 15px 14px 15px 22px; border-left: 1px solid var(--border); position:relative; transition:background .25s,border-color .25s; }
.tl-item::before{content:"";position:absolute;left:-4px;top:24px;width:7px;height:7px;border-radius:50%;background:var(--surface);border:1px solid var(--faint)}
.tl-item:first-child::before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 70%,transparent)}
.tl-item:hover{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 7%,transparent),transparent);border-left-color:var(--accent)}
.tl-year { font-family: var(--font-mono); font-size: 12px; color: var(--accent); white-space: nowrap; padding-top: 2px; }
.tl-role { font-weight: 500; font-size: 15px; }
.tl-org { color: var(--muted); font-size: 13.5px; font-family: var(--font-mono); }
@media(max-width:520px){.tl-item{grid-template-columns:58px minmax(0,1fr);gap:10px;padding:14px 8px 14px 18px}.tl-role{font-size:14px}.tl-org{font-size:12px}}

/* =========================================================================
   CONTACT / FOOTER
   ========================================================================= */
.contact { text-align: left; overflow: hidden; }
.contact-card { position: relative; overflow: hidden; display:grid;gap:clamp(40px,6vw,82px);border:1px solid var(--border-2);border-radius:24px;padding:clamp(28px,5.5vw,68px);background:radial-gradient(70% 100% at 100% 0%,color-mix(in srgb,var(--accent) 16%,transparent),transparent 62%),var(--surface); }
.contact-card > * { position:relative;z-index:2 }
@media(min-width:900px){.contact-card{grid-template-columns:minmax(0,1.08fr) minmax(360px,.92fr);align-items:center}.contact-actions{width:100%}}
.contact h2 { font-size: clamp(38px, 5.2vw,64px); max-width:14ch; text-wrap:balance; }
.contact .lead { color: var(--muted); max-width: 48ch; margin: 22px 0 0; font-size: 18px; }
.availability{display:inline-flex;align-items:center;gap:9px;margin-bottom:34px;padding:7px 11px;border:1px solid color-mix(in srgb,var(--good) 35%,transparent);border-radius:999px;color:var(--good);font:10px var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.availability span{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 12px var(--good)}
.contact-meta{display:flex;flex-wrap:wrap;gap:24px;margin-top:34px}.contact-meta>span{display:flex;flex-direction:column;font:13px var(--font-mono);color:var(--ink)}.contact-meta small{font:9px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:5px}.contact-actions{display:flex;flex-direction:column;gap:11px;scroll-margin-top:120px}.contact-actions .btn{justify-content:center}.contact-email{overflow:hidden}.contact-email span{overflow:hidden;text-overflow:ellipsis}.resume-panel{padding:26px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));border-radius:18px;background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 11%,var(--surface)),color-mix(in srgb,var(--surface-2) 86%,transparent));box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 9%,transparent)}.resume-kicker{margin:0 0 9px;color:var(--accent);font:700 10px var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.resume-panel h3{max-width:18ch;margin:0;font-size:clamp(22px,2.2vw,29px);line-height:1.06;letter-spacing:-.035em}.resume-panel>p:not(.resume-kicker){margin:12px 0 20px;color:var(--muted);font-size:14px;line-height:1.55}.resume-downloads{display:grid;grid-template-columns:1fr;gap:10px}.resume-downloads .btn{min-height:62px;justify-content:space-between;padding:16px 20px;border-radius:14px;font-size:14px}.resume-downloads .btn span:last-child{font-size:20px;font-weight:400;transition:transform .2s var(--ease)}.resume-downloads .btn:hover span:last-child{transform:translateY(3px)}.contact-divider{display:flex;align-items:center;gap:12px;margin:5px 0;color:var(--faint);font:9px var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.contact-divider::before,.contact-divider::after{content:"";height:1px;flex:1;background:var(--border)}.social-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}.copy-email.is-copied{border-color:var(--good);color:var(--good)}
@media(max-width:520px){.contact-card{border-radius:18px}.contact-actions .btn{padding-inline:14px;font-size:12.5px}.resume-downloads,.social-row{grid-template-columns:1fr}.contact-meta{display:grid;grid-template-columns:1fr 1fr}.contact-meta>span:last-child{grid-column:1/-1}}
@media(max-width:420px){.aero-readout{display:none}.aero-radar{left:50%;transform:translateX(-50%)}.case-visual{min-height:215px}.migration-flow{inset-inline:16px;gap:12px}}
.foot { border-top: 1px solid var(--border); padding: 28px 0; }
.foot-inner { max-width: var(--maxw); margin: 0 auto; padding: 0 var(--pad); display: flex; flex-wrap: wrap; gap: 12px; justify-content: space-between; align-items: center; font-family: var(--font-mono); font-size: 12px; color: var(--faint); }

/* =========================================================================
   Reveal on scroll
   ========================================================================= */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity 0.8s var(--ease), transform 0.8s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } .aero-radar::after { animation: none; transform: rotate(-32deg); } }
