/* =============================================================================
   Coursecast — design system (marketing site + product previews)
   Dark-first with a light theme ([data-theme="light"]). No third-party fonts:
   the site's CSP is font-src 'self' and the privacy policy promises no
   third-party assets, so every face below is a local/system font.
   ============================================================================= */

/* ---- Tokens ---------------------------------------------------------------- */
:root {
  --bg: #070A12; --bg-2: #0A0E19; --bg-3: #0D1220;
  --panel: #0E1424; --panel-2: #121A2E; --panel-3: #172139;
  --line: rgba(255,255,255,.075); --line-2: rgba(255,255,255,.13); --line-strong: rgba(255,255,255,.22);
  --ink: #F5F7FC; --ink-2: #DCE3F2; --muted: #9DAAC3; --dim: #67758F;

  --iris: #7C86FF; --violet: #8B5CF6; --blue: #4C8DFF; --cyan: #27D3EE;
  --mint: #39E0A6; --amber: #FBBF4B; --rose: #FB7185; --lime: #C6F36B;
  --iris-weak: rgba(124,134,255,.14); --cyan-weak: rgba(39,211,238,.12);
  --mint-weak: rgba(57,224,166,.12); --amber-weak: rgba(251,191,75,.13);
  --rose-weak: rgba(251,113,133,.13); --violet-weak: rgba(139,92,246,.14);

  --grad: linear-gradient(135deg,#4C8DFF 0%,#7C86FF 46%,#8B5CF6 100%);
  --grad-text: linear-gradient(100deg,#7FB0FF 0%,#9AA2FF 30%,#5FE3D2 62%,#B794FF 100%);
  --grad-soft: linear-gradient(135deg,rgba(76,141,255,.2),rgba(139,92,246,.2));
  --grad-mint: linear-gradient(135deg,#27D3EE 0%,#39E0A6 100%);

  --shadow-sm: 0 1px 2px rgba(0,0,0,.4);
  --shadow: 0 18px 44px -24px rgba(0,0,0,.75);
  --shadow-lg: 0 40px 90px -40px rgba(0,0,0,.85);
  --glow: 0 0 70px -16px rgba(124,134,255,.45);

  --r-xs: 6px; --r-sm: 9px; --r: 14px; --r-lg: 20px; --r-xl: 28px; --r-pill: 999px;
  --maxw: 1220px; --gutter: clamp(16px, 4vw, 40px); --nav-h: 66px;

  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI Variable Text", "Segoe UI", "SF Pro Text", Roboto, "Helvetica Neue", Arial, sans-serif;
  --display: ui-sans-serif, system-ui, -apple-system, "Segoe UI Variable Display", "Segoe UI", "SF Pro Display", Roboto, "Helvetica Neue", Arial, sans-serif;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", "URW Palladio L", Georgia, serif;
  --mono: ui-monospace, "SF Mono", "Cascadia Code", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  color-scheme: dark;
}
:root[data-theme="light"] {
  --bg: #FAFBFE; --bg-2: #F3F5FB; --bg-3: #ECF0F9;
  --panel: #FFFFFF; --panel-2: #F7F9FD; --panel-3: #EEF2FA;
  --line: rgba(12,24,48,.085); --line-2: rgba(12,24,48,.14); --line-strong: rgba(12,24,48,.24);
  --ink: #0A1020; --ink-2: #1D2840; --muted: #48577A; --dim: #7A879F;
  --iris: #5359E0; --violet: #7C3AED; --blue: #2563EB; --cyan: #0891B2; --mint: #059669; --amber: #B7791F; --rose: #E11D48; --lime: #4D7C0F;
  --iris-weak: rgba(83,89,224,.09); --cyan-weak: rgba(8,145,178,.1); --mint-weak: rgba(5,150,105,.1);
  --amber-weak: rgba(183,121,31,.11); --rose-weak: rgba(225,29,72,.08); --violet-weak: rgba(124,58,237,.09);
  --grad-text: linear-gradient(100deg,#2563EB 0%,#5359E0 34%,#0E9F8E 64%,#7C3AED 100%);
  --shadow: 0 20px 50px -30px rgba(20,35,80,.42);
  --shadow-lg: 0 44px 100px -46px rgba(20,35,80,.5);
  --glow: 0 0 60px -20px rgba(83,89,224,.35);
  color-scheme: light;
}

/* ---- Reset & base ---------------------------------------------------------- */
*,*::before,*::after { box-sizing: border-box; }
* { margin: 0; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; scroll-padding-top: calc(var(--nav-h) + 16px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  font-family: var(--sans); background: var(--bg); color: var(--ink);
  font-size: 16px; line-height: 1.62; letter-spacing: -.004em; overflow-x: hidden;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
}
body::before {
  content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background:
    radial-gradient(900px 620px at 84% -12%, rgba(124,134,255,.15), transparent 60%),
    radial-gradient(760px 520px at 6% 2%, rgba(39,211,238,.08), transparent 58%),
    radial-gradient(1000px 760px at 50% 125%, rgba(139,92,246,.10), transparent 60%);
}
:root[data-theme="light"] body::before {
  background:
    radial-gradient(900px 620px at 84% -12%, rgba(83,89,224,.10), transparent 60%),
    radial-gradient(760px 520px at 6% 2%, rgba(8,145,178,.06), transparent 58%);
}
a { color: inherit; text-decoration: none; }
img, svg, video { max-width: 100%; display: block; }
img { height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
::selection { background: rgba(124,134,255,.32); }
:focus-visible { outline: 2px solid var(--iris); outline-offset: 2px; border-radius: 6px; }
.skip { position: absolute; left: -9999px; top: 8px; z-index: 200; background: var(--iris); color: #fff; padding: 8px 14px; border-radius: 8px; }
.skip:focus { left: 12px; }
[hidden] { display: none !important; }

/* ---- Layout ---------------------------------------------------------------- */
.wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }
.wrap-narrow { max-width: 860px; }
.wrap-tight { max-width: 1040px; }
.section { padding-block: clamp(64px, 9vw, 124px); position: relative; }
.section-tight { padding-block: clamp(44px, 6vw, 80px); position: relative; }
.section.alt, .section-tight.alt { background: linear-gradient(180deg, transparent, var(--bg-2) 10%, var(--bg-2) 90%, transparent); }
.section.band { background: var(--bg-2); border-block: 1px solid var(--line); }
.pt0 { padding-top: 0 !important; } .pb0 { padding-bottom: 0 !important; }
.grid { display: grid; gap: clamp(14px, 2vw, 24px); }
.g2 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.g3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
.g4 { grid-template-columns: repeat(4, minmax(0,1fr)); }
.g5 { grid-template-columns: repeat(5, minmax(0,1fr)); }
.split { display: grid; grid-template-columns: 1.04fr .96fr; gap: clamp(28px, 5vw, 72px); align-items: center; }
.split.top { align-items: start; }
.split.rev > :first-child { order: 2; }
.split-60 { grid-template-columns: 1.25fr .75fr; }
.stack > * + * { margin-top: 1rem; }
.center { text-align: center; } .mx { margin-inline: auto; }
.mt-xs { margin-top: .5rem; } .mt-s { margin-top: .9rem; } .mt { margin-top: 1.4rem; } .mt-l { margin-top: 2.2rem; } .mt-xl { margin-top: 3.4rem; }
.mb { margin-bottom: 1rem; } .m0 { margin: 0; }
.flex { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.between { justify-content: space-between; }

/* ---- Type ------------------------------------------------------------------ */
h1, h2, h3, h4, h5 { font-family: var(--display); line-height: 1.08; letter-spacing: -.028em; font-weight: 750; color: var(--ink); }
.display { font-size: clamp(2.5rem, 6vw, 4.7rem); line-height: 1.0; letter-spacing: -.042em; font-weight: 780; }
h1 { font-size: clamp(2.15rem, 4.7vw, 3.55rem); letter-spacing: -.036em; }
h2 { font-size: clamp(1.75rem, 3.5vw, 2.75rem); letter-spacing: -.032em; }
h3 { font-size: clamp(1.15rem, 1.6vw, 1.4rem); letter-spacing: -.02em; }
h4 { font-size: 1.04rem; letter-spacing: -.012em; font-weight: 700; }
h5 { font-size: .95rem; letter-spacing: -.01em; }
p { text-wrap: pretty; }
.lead { font-size: clamp(1.06rem, 1.45vw, 1.24rem); color: var(--muted); line-height: 1.62; }
.muted { color: var(--muted); } .dim { color: var(--dim); } .ink { color: var(--ink); }
.small { font-size: .9rem; } .tiny { font-size: .8rem; }
.mono { font-family: var(--mono); font-size: .92em; }
.ital { font-family: var(--serif); font-style: italic; font-weight: 500; letter-spacing: -.01em; }
.grad-text { background: var(--grad-text); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; }
.balance { text-wrap: balance; }
.eyebrow { display: inline-flex; align-items: center; gap: .55em; font-family: var(--mono); font-size: .72rem; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; color: var(--cyan); }
.eyebrow .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; box-shadow: 0 0 10px currentColor; }
.eyebrow.iris { color: var(--iris); } .eyebrow.mint { color: var(--mint); } .eyebrow.amber { color: var(--amber); }
.kicker { font-family: var(--mono); font-size: .68rem; letter-spacing: .14em; text-transform: uppercase; color: var(--dim); }
.overline { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-top: 1px solid var(--line); padding-top: 14px; margin-bottom: 26px; }
.overline .count { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; color: var(--dim); }
.section-head { max-width: 760px; }
.section-head.center { margin-inline: auto; text-align: center; }
.section-head h2 { margin-top: .55rem; }
.section-head .lead { margin-top: .9rem; }
.two-up { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(20px, 4vw, 60px); align-items: end; }
.two-up .lead { margin: 0; }

.pill { display: inline-flex; align-items: center; gap: .5em; padding: .38em .85em; border-radius: var(--r-pill); background: var(--iris-weak); border: 1px solid var(--line-2); font-family: var(--mono); font-size: .72rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.pill.cyan { background: var(--cyan-weak); color: var(--cyan); } .pill.mint { background: var(--mint-weak); color: var(--mint); } .pill.amber { background: var(--amber-weak); color: var(--amber); }

a.inline, .prose a, .link { color: var(--iris); text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--iris) 40%, transparent); text-underline-offset: 3px; }
a.inline:hover, .prose a:hover, .link:hover { text-decoration-color: currentColor; }

/* ---- Buttons --------------------------------------------------------------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .5em; padding: .76em 1.2em; border-radius: var(--r-pill); font-weight: 650; font-size: .95rem; letter-spacing: -.01em; border: 1px solid transparent; transition: transform .16s ease, box-shadow .2s, background .2s, border-color .2s, color .2s; white-space: nowrap; line-height: 1.2; }
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--grad); color: #fff; box-shadow: 0 10px 30px -12px rgba(124,134,255,.7), inset 0 1px 0 rgba(255,255,255,.2); }
.btn-primary:hover { box-shadow: 0 16px 40px -12px rgba(124,134,255,.85), inset 0 1px 0 rgba(255,255,255,.25); transform: translateY(-1px); }
.btn-ghost { background: rgba(255,255,255,.04); color: var(--ink); border-color: var(--line-2); }
.btn-ghost:hover { border-color: var(--line-strong); background: rgba(255,255,255,.08); }
:root[data-theme="light"] .btn-ghost { background: rgba(12,24,48,.025); }
:root[data-theme="light"] .btn-ghost:hover { background: rgba(12,24,48,.05); }
.btn-mint { background: var(--grad-mint); color: #04221a; }
.btn-sm { padding: .52em .9em; font-size: .85rem; } .btn-lg { padding: .95em 1.55em; font-size: 1.03rem; }
.btn-block { width: 100%; }
.btn-row { display: flex; flex-wrap: wrap; gap: .7rem; align-items: center; }
.arrow { display: inline-block; transition: transform .18s ease; }
.btn:hover .arrow, a:hover > .arrow, .card-link:hover .arrow { transform: translateX(3px); }
.link-arrow { display: inline-flex; align-items: center; gap: .4em; color: var(--iris); font-weight: 650; font-size: .95rem; }
.link-arrow:hover { color: var(--cyan); }

/* ---- Status badges (honesty system) ---------------------------------------- */
.badge { display: inline-flex; align-items: center; gap: .45em; padding: .26em .66em; border-radius: var(--r-pill); font-family: var(--mono); font-size: .66rem; font-weight: 650; letter-spacing: .07em; text-transform: uppercase; border: 1px solid var(--line-2); white-space: nowrap; vertical-align: middle; }
.badge .d { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.badge.live { background: var(--mint-weak); color: var(--mint); border-color: color-mix(in srgb, var(--mint) 30%, transparent); }
.badge.preview { background: var(--iris-weak); color: var(--iris); border-color: color-mix(in srgb, var(--iris) 30%, transparent); }
.badge.building { background: var(--cyan-weak); color: var(--cyan); border-color: color-mix(in srgb, var(--cyan) 30%, transparent); }
.badge.roadmap { background: rgba(255,255,255,.04); color: var(--muted); }
:root[data-theme="light"] .badge.roadmap { background: rgba(12,24,48,.04); }
.badge.illustrative { background: var(--amber-weak); color: var(--amber); border-color: color-mix(in srgb, var(--amber) 30%, transparent); }
.status-note { display: flex; gap: 10px; align-items: flex-start; font-size: .86rem; color: var(--muted); padding: 12px 14px; border: 1px dashed var(--line-2); border-radius: var(--r); background: rgba(255,255,255,.02); }
.status-note .badge { flex: none; margin-top: 1px; }
.illus-note { font-family: var(--mono); font-size: .72rem; color: var(--dim); letter-spacing: .02em; }
.legend { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; font-size: .82rem; color: var(--muted); }

/* ---- Announcement bar ------------------------------------------------------ */
.announce { position: relative; z-index: 91; background: linear-gradient(90deg, rgba(76,141,255,.14), rgba(139,92,246,.14)); border-bottom: 1px solid var(--line); font-size: .84rem; color: var(--ink-2); }
.announce .wrap { display: flex; align-items: center; justify-content: center; gap: 10px; padding-block: 8px; text-align: center; flex-wrap: wrap; }
.announce a { color: var(--ink); font-weight: 650; white-space: nowrap; }
.announce a:hover .arrow { transform: translateX(3px); }
.announce .x { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: none; border: 0; color: var(--muted); font-size: 1.1rem; width: 28px; height: 28px; border-radius: 6px; }
.announce .x:hover { color: var(--ink); background: rgba(255,255,255,.06); }

/* ---- Navigation ------------------------------------------------------------ */
.nav { position: sticky; top: 0; z-index: 90; height: var(--nav-h); backdrop-filter: saturate(150%) blur(16px); -webkit-backdrop-filter: saturate(150%) blur(16px); background: color-mix(in srgb, var(--bg) 80%, transparent); border-bottom: 1px solid var(--line); }
.nav-in { height: 100%; display: flex; align-items: center; gap: 14px; }
.brand { display: inline-flex; align-items: center; gap: 10px; font-family: var(--display); font-weight: 780; letter-spacing: -.035em; font-size: 1.16rem; color: var(--ink); }
.brand .logo { width: 31px; height: 31px; border-radius: 9px; background: var(--grad); display: grid; place-items: center; color: #fff; box-shadow: 0 6px 18px -8px rgba(124,134,255,.85), inset 0 1px 0 rgba(255,255,255,.25); flex: none; }
.brand .logo svg { width: 18px; height: 18px; }
.brand .by { font-family: var(--mono); font-size: .62rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--dim); margin-left: 2px; }
.nav-links { display: flex; align-items: center; gap: 2px; margin-left: 10px; }
.nav-links > a, .nav-drop > button { padding: 8px 11px; border-radius: 9px; color: var(--muted); font-weight: 560; font-size: .92rem; display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; }
.nav-links > a:hover, .nav-drop > button:hover, .nav-drop:focus-within > button { color: var(--ink); background: rgba(255,255,255,.05); }
:root[data-theme="light"] .nav-links > a:hover, :root[data-theme="light"] .nav-drop > button:hover { background: rgba(12,24,48,.045); }
.nav-links a.active, .nav-drop.active > button { color: var(--ink); }
.nav-drop { position: relative; }
.nav-drop > button .chev { font-size: .7rem; opacity: .7; transition: transform .2s; }
.nav-drop:hover > button .chev, .nav-drop.open > button .chev { transform: rotate(180deg); }
.mega { position: absolute; top: calc(100% + 12px); left: -14px; background: var(--panel); border: 1px solid var(--line-2); border-radius: var(--r-lg); box-shadow: var(--shadow-lg); padding: 14px; opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .16s, transform .16s, visibility .16s; z-index: 95; width: max-content; max-width: min(92vw, 940px); }
.mega::before { content: ""; position: absolute; inset: -14px 0 auto; height: 14px; }
.nav-drop:hover .mega, .nav-drop:focus-within .mega, .nav-drop.open .mega { opacity: 1; visibility: visible; transform: none; }
.mega-cols { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(228px, 1fr); gap: 6px; }
.mega-col h6 { font-family: var(--mono); font-size: .64rem; letter-spacing: .15em; text-transform: uppercase; color: var(--dim); font-weight: 600; padding: 6px 10px 6px; }
.mega a.mi { display: grid; grid-template-columns: 32px 1fr; gap: 10px; align-items: start; padding: 9px 10px; border-radius: 11px; }
.mega a.mi:hover { background: var(--iris-weak); }
.mega a.mi .ic { width: 32px; height: 32px; border-radius: 9px; display: grid; place-items: center; background: var(--panel-3); border: 1px solid var(--line); color: var(--iris); }
.mega a.mi .ic svg { width: 16px; height: 16px; }
.mega a.mi strong { display: flex; align-items: center; gap: 6px; font-size: .9rem; font-weight: 650; color: var(--ink); line-height: 1.25; }
.mega a.mi span.d { display: block; font-size: .78rem; color: var(--dim); line-height: 1.35; margin-top: 2px; }
.mega a.mi .badge { font-size: .56rem; padding: .16em .45em; }
.mega-foot { margin-top: 10px; padding: 12px 12px 4px; border-top: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: 16px; font-size: .84rem; color: var(--muted); flex-wrap: wrap; }
.nav-right { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.icon-btn { width: 38px; height: 38px; border-radius: 10px; border: 1px solid var(--line-2); background: rgba(255,255,255,.035); display: grid; place-items: center; color: var(--muted); flex: none; }
.icon-btn:hover { color: var(--ink); border-color: var(--line-strong); }
.icon-btn svg { width: 18px; height: 18px; }
.theme-btn .sun { display: none; } :root[data-theme="light"] .theme-btn .sun { display: block; } :root[data-theme="light"] .theme-btn .moon { display: none; }
.menu-btn { display: none; }
.drawer { display: none; }
@media (max-width: 1080px) {
  .nav-links { display: none; }
  .nav-right .hide-sm { display: none; }
  .menu-btn { display: grid; }
  .drawer { display: block; position: fixed; inset: var(--nav-h) 0 0 0; z-index: 89; background: var(--bg); padding: 12px var(--gutter) 48px; overflow-y: auto; transform: translateX(100%); transition: transform .25s ease; border-top: 1px solid var(--line); visibility: hidden; }
  .drawer.open { transform: none; visibility: visible; }
  .drawer details { border-bottom: 1px solid var(--line); }
  .drawer summary { list-style: none; padding: 15px 2px; font-weight: 650; font-size: 1.04rem; display: flex; justify-content: space-between; cursor: pointer; }
  .drawer summary::-webkit-details-marker { display: none; }
  .drawer summary::after { content: "+"; color: var(--iris); font-weight: 700; }
  .drawer details[open] summary::after { content: "–"; }
  .drawer details a { display: block; padding: 9px 4px 9px 12px; color: var(--muted); font-size: .96rem; }
  .drawer details div { padding-bottom: 10px; }
  .drawer > a { display: block; padding: 15px 2px; border-bottom: 1px solid var(--line); font-weight: 650; font-size: 1.04rem; }
  .drawer .btn { width: 100%; margin-top: 14px; }
  body.nav-open { overflow: hidden; }
}

/* ---- Cards ----------------------------------------------------------------- */
.card { background: linear-gradient(180deg, var(--panel), var(--panel-2)); border: 1px solid var(--line); border-radius: var(--r-lg); padding: clamp(20px, 2.3vw, 28px); position: relative; transition: transform .2s ease, border-color .2s, box-shadow .25s; min-width: 0; }
.card.hover:hover, a.card:hover { transform: translateY(-3px); border-color: var(--line-2); box-shadow: var(--shadow); }
.card h3 { margin-bottom: .45rem; } .card h4 { margin-bottom: .35rem; }
.card p { color: var(--muted); font-size: .95rem; }
.card .foot { margin-top: 16px; display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.card-link .arrow { color: var(--iris); }
.card.featured { border-color: color-mix(in srgb, var(--iris) 45%, transparent); box-shadow: var(--glow); }
.card.flat { background: var(--panel); }
.card.compact { padding: 16px 18px; }
.ico { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: var(--iris-weak); color: var(--iris); border: 1px solid var(--line-2); margin-bottom: 16px; flex: none; }
.ico svg { width: 21px; height: 21px; }
.ico.cyan { background: var(--cyan-weak); color: var(--cyan); } .ico.mint { background: var(--mint-weak); color: var(--mint); }
.ico.amber { background: var(--amber-weak); color: var(--amber); } .ico.rose { background: var(--rose-weak); color: var(--rose); } .ico.violet { background: var(--violet-weak); color: var(--violet); }
.ico.sm { width: 34px; height: 34px; border-radius: 10px; margin: 0; } .ico.sm svg { width: 17px; height: 17px; }
.panel { background: linear-gradient(180deg, var(--panel), var(--panel-2)); border: 1px solid var(--line); border-radius: var(--r-xl); box-shadow: var(--shadow); overflow: hidden; }
.glow { box-shadow: var(--shadow-lg), var(--glow); }
.tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.tag { font-family: var(--mono); font-size: .7rem; padding: 4px 9px; border-radius: var(--r-pill); border: 1px solid var(--line-2); color: var(--muted); white-space: nowrap; }
.tag.src { background: var(--cyan-weak); color: var(--cyan); } .tag.ok { background: var(--mint-weak); color: var(--mint); }
.tag.warnt { background: var(--amber-weak); color: var(--amber); } .tag.pend { background: var(--iris-weak); color: var(--iris); } .tag.bad { background: var(--rose-weak); color: var(--rose); }
.chip-row { display: flex; flex-wrap: wrap; gap: 8px; }
.ticks { list-style: none; padding: 0; display: grid; gap: .6rem; }
.ticks li { display: flex; gap: .65rem; align-items: flex-start; color: var(--muted); font-size: .95rem; }
.ticks li::before { content: "✓"; color: var(--mint); font-weight: 800; flex: none; width: 20px; height: 20px; display: grid; place-items: center; margin-top: 2px; background: var(--mint-weak); border-radius: 6px; font-size: .7rem; }
.ticks.plan li::before { content: "○"; color: var(--dim); background: rgba(255,255,255,.04); }
.ticks strong { color: var(--ink); font-weight: 650; }

/* numbered steps */
.steps { counter-reset: s; display: grid; gap: 14px; }
.step { display: grid; grid-template-columns: 44px 1fr; gap: 14px; align-items: start; }
.step .n { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-family: var(--mono); font-weight: 700; font-size: .82rem; color: var(--iris); background: var(--iris-weak); border: 1px solid var(--line-2); }
.step h4 { margin-bottom: 3px; } .step p { color: var(--muted); font-size: .94rem; }
.step-row { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }
.step-card { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 20px; position: relative; }
.step-card .n { font-family: var(--mono); font-size: .72rem; color: var(--iris); letter-spacing: .12em; }
.step-card h4 { margin: 8px 0 4px; } .step-card p { color: var(--muted); font-size: .9rem; }

/* metrics */
.metrics { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
.metric { background: var(--panel); padding: 22px; }
.metric .v { font-family: var(--display); font-size: clamp(1.5rem, 2.4vw, 2.1rem); font-weight: 780; letter-spacing: -.035em; }
.metric .l { color: var(--muted); font-size: .84rem; margin-top: 4px; }
.statline { display: flex; flex-wrap: wrap; gap: 8px; }
.stat { background: var(--panel-2); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; min-width: 130px; flex: 1; }
.stat .v { font-family: var(--display); font-size: 1.42rem; font-weight: 780; letter-spacing: -.03em; } .stat .l { color: var(--muted); font-size: .78rem; }
.v.good { color: var(--mint); } .v.warn { color: var(--amber); } .v.bad { color: var(--rose); } .v.iris { color: var(--iris); }

/* ---- Hero ------------------------------------------------------------------ */
.hero { padding-top: clamp(44px, 7vw, 96px); padding-bottom: clamp(36px, 6vw, 80px); position: relative; }
.hero-grid { display: grid; grid-template-columns: 1fr 1.02fr; gap: clamp(30px, 5vw, 64px); align-items: center; }
.hero h1 { margin-top: 18px; }
.hero .lead { margin-top: 18px; max-width: 620px; }
.hero .btn-row { margin-top: 26px; }
.hero-note { margin-top: 16px; font-size: .84rem; color: var(--dim); display: flex; flex-wrap: wrap; gap: 6px 16px; }
.hero-note span { display: inline-flex; align-items: center; gap: 6px; }
.hero-note span::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--mint); }
.hero-visual { position: relative; }
.float-card { position: absolute; z-index: 3; display: flex; gap: 10px; align-items: center; padding: 11px 14px; border-radius: 14px; background: color-mix(in srgb, var(--panel) 92%, transparent); border: 1px solid var(--line-2); box-shadow: var(--shadow-lg); backdrop-filter: blur(10px); font-size: .82rem; max-width: 250px; animation: floaty 7s ease-in-out infinite; }
.float-card strong { display: block; font-size: .84rem; } .float-card small { color: var(--dim); }
.float-card .ico { margin: 0; width: 32px; height: 32px; border-radius: 9px; } .float-card .ico svg { width: 15px; height: 15px; }
.float-card.tl { top: -18px; left: -26px; } .float-card.br { bottom: -22px; right: -18px; animation-delay: -3s; }
@keyframes floaty { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }
@media (prefers-reduced-motion: reduce) { .float-card { animation: none; } }

/* inner page hero */
.page-hero { padding-top: clamp(40px, 6vw, 84px); padding-bottom: clamp(26px, 4vw, 52px); position: relative; }
.page-hero h1 { margin-top: 14px; max-width: 920px; }
.page-hero .lead { margin-top: 16px; max-width: 760px; }
.page-hero.center h1, .page-hero.center .lead { margin-inline: auto; }
.page-hero .btn-row { margin-top: 24px; }
.page-hero.center .btn-row { justify-content: center; }
.crumbs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-family: var(--mono); font-size: .72rem; letter-spacing: .06em; color: var(--dim); text-transform: uppercase; }
.crumbs a:hover { color: var(--ink); }
.crumbs .sep { opacity: .5; }

/* marquee */
.marquee { border-block: 1px solid var(--line); background: var(--bg-2); overflow: hidden; }
.marquee .wrap { display: flex; align-items: center; gap: 18px; padding-block: 16px; }
.marquee b { font-family: var(--mono); font-size: .68rem; letter-spacing: .16em; color: var(--dim); white-space: nowrap; font-weight: 600; }
.marquee .track { display: flex; gap: 10px; flex-wrap: wrap; }
.marquee .track span { font-family: var(--mono); font-size: .76rem; color: var(--muted); padding: 6px 12px; border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--panel); white-space: nowrap; }

/* ---- Product window chrome ------------------------------------------------- */
.window { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line-2); background: var(--panel); box-shadow: var(--shadow-lg); min-width: 0; }
.window-bar { display: flex; align-items: center; gap: 10px; padding: 11px 14px; background: var(--panel-3); border-bottom: 1px solid var(--line); min-height: 42px; }
.dots { display: flex; gap: 6px; flex: none; }
.dots i { width: 10px; height: 10px; border-radius: 50%; display: block; background: var(--line-strong); }
.dots i:nth-child(1) { background: #F87171; } .dots i:nth-child(2) { background: #FBBF24; } .dots i:nth-child(3) { background: #34D399; }
.window-title { font-family: var(--mono); font-size: .72rem; color: var(--muted); letter-spacing: .02em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.window-title .sep { color: var(--dim); margin-inline: 6px; }
.window-bar .right { margin-left: auto; display: flex; gap: 8px; align-items: center; }
.window-body { padding: clamp(16px, 2vw, 24px); }

/* diff */
.diff { font-family: var(--mono); font-size: .8rem; border-radius: 12px; overflow: hidden; border: 1px solid var(--line); }
.diff .row { padding: 7px 12px; display: flex; gap: 10px; align-items: flex-start; }
.diff .del { background: rgba(251,113,133,.09); color: #ffbac5; }
.diff .add { background: rgba(57,224,166,.1); color: #aaf3d5; }
.diff .ctx { color: var(--muted); }
:root[data-theme="light"] .diff .del { color: #b0213e; } :root[data-theme="light"] .diff .add { color: #046c47; }
.diff .mark { width: 12px; flex: none; opacity: .8; }

/* flow nodes */
.flow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.node { border: 1px solid var(--line-2); background: var(--panel-2); border-radius: 11px; padding: 9px 13px; font-size: .82rem; font-weight: 620; transition: border-color .3s, box-shadow .3s, background .3s; min-width: 0; }
.node .n { font-family: var(--mono); font-size: .6rem; color: var(--dim); letter-spacing: .12em; text-transform: uppercase; display: block; font-weight: 600; }
.node.active { border-color: var(--iris); box-shadow: 0 0 0 1px var(--iris), var(--glow); background: var(--iris-weak); }
.node.done { border-color: color-mix(in srgb, var(--mint) 50%, transparent); }
.node.warn { border-color: color-mix(in srgb, var(--amber) 55%, transparent); background: var(--amber-weak); }
.flow .conn { width: 18px; height: 2px; background: var(--line-2); flex: none; border-radius: 2px; transition: background .3s, box-shadow .3s; }
.flow .conn.lit { background: var(--iris); box-shadow: 0 0 8px var(--iris); }

/* compiler diagram */
.compiler { display: grid; grid-template-columns: 1fr auto 1.15fr auto 1fr; gap: 14px; align-items: center; }
.compiler .stage { background: var(--panel); border: 1px solid var(--line-2); border-radius: var(--r-lg); padding: 20px; min-width: 0; }
.compiler .stage.core { border-color: color-mix(in srgb, var(--iris) 50%, transparent); box-shadow: var(--glow); background: linear-gradient(180deg, var(--iris-weak), var(--panel)); }
.compiler .stage h4 { margin: 6px 0 4px; } .compiler .stage p { color: var(--muted); font-size: .86rem; }
.compiler .chev { color: var(--iris); font-size: 1.4rem; }
.ir-lines { display: grid; gap: 6px; margin-top: 12px; font-family: var(--mono); font-size: .72rem; }
.ir-lines span { padding: 5px 9px; border-radius: 8px; background: var(--panel-2); border: 1px solid var(--line); color: var(--ink-2); }

/* evidence / quiz */
.ev-claim { border-left: 3px solid var(--iris); padding: 11px 14px; background: var(--panel-2); border-radius: 0 12px 12px 0; cursor: pointer; transition: background .15s; }
.ev-claim:hover, .ev-claim.sel { background: var(--panel-3); }
.ev-src { font-family: var(--mono); font-size: .74rem; color: var(--muted); margin-top: 8px; display: grid; gap: 5px; }
.ev-src b { color: var(--ink-2); font-weight: 600; }
.quiz-opt { border: 1px solid var(--line-2); border-radius: 11px; padding: 11px 14px; margin-bottom: 8px; cursor: pointer; transition: border-color .15s, background .15s; font-size: .92rem; display: block; width: 100%; text-align: left; background: transparent; }
.quiz-opt:hover { border-color: var(--iris); }
.quiz-opt.correct { border-color: var(--mint); background: var(--mint-weak); }
.quiz-opt.wrong { border-color: var(--rose); background: var(--rose-weak); }
.check-list { display: grid; gap: 7px; font-family: var(--mono); font-size: .8rem; }
.check-list .ck { display: flex; justify-content: space-between; gap: 10px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--panel-2); }
.check-list .ck .r { color: var(--dim); }
.ck.pass .s { color: var(--mint); } .ck.warn .s { color: var(--amber); } .ck.fail .s { color: var(--rose); } .ck.run .s { color: var(--iris); }

/* ---- Tables ---------------------------------------------------------------- */
.table-wrap { overflow-x: auto; border-radius: var(--r-lg); border: 1px solid var(--line); -webkit-overflow-scrolling: touch; }
.table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: .91rem; min-width: 640px; }
.table th, .table td { padding: 13px 16px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: top; }
.table thead th { background: var(--panel-3); font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); font-weight: 700; position: sticky; top: 0; }
.table tbody th { font-weight: 650; color: var(--ink); background: var(--panel); }
.table tbody td { background: var(--panel); color: var(--muted); }
.table tbody tr:last-child > * { border-bottom: 0; }
.table .col-us { background: color-mix(in srgb, var(--iris) 9%, var(--panel)) !important; color: var(--ink-2) !important; }
.table thead .col-us { color: var(--ink) !important; }
.yes { color: var(--mint); font-weight: 700; } .no { color: var(--rose); font-weight: 700; } .mid { color: var(--amber); font-weight: 700; }

/* tabs */
.tabs { display: flex; flex-wrap: wrap; gap: 6px; padding: 5px; border: 1px solid var(--line); border-radius: var(--r-pill); background: var(--panel); width: fit-content; max-width: 100%; }
.tabs button { border: 0; background: none; padding: 8px 15px; border-radius: var(--r-pill); color: var(--muted); font-weight: 600; font-size: .88rem; }
.tabs button:hover { color: var(--ink); }
.tabs button.active { background: var(--iris-weak); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line-2); }
.tabs.center { margin-inline: auto; }
.tab-panel { display: none; } .tab-panel.show { display: block; animation: fade .3s ease; }

/* ---- FAQ ------------------------------------------------------------------- */
.faq details { border: 1px solid var(--line); border-radius: var(--r); background: var(--panel); margin-bottom: 10px; overflow: hidden; transition: border-color .2s; }
.faq details[open] { border-color: var(--line-2); }
.faq summary { padding: 16px 20px; font-weight: 650; cursor: pointer; list-style: none; display: flex; justify-content: space-between; gap: 16px; align-items: center; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; color: var(--iris); font-weight: 700; font-size: 1.25rem; transition: transform .2s; flex: none; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq .ans { padding: 0 20px 18px; color: var(--muted); font-size: .95rem; }
.faq-group { font-family: var(--mono); font-size: .7rem; letter-spacing: .15em; text-transform: uppercase; color: var(--dim); margin: 26px 0 10px; }

/* ---- Pricing --------------------------------------------------------------- */
.plans { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; align-items: stretch; }
.plans.three { grid-template-columns: repeat(3, minmax(0,1fr)); }
.plan { background: linear-gradient(180deg, var(--panel), var(--panel-2)); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 24px; display: flex; flex-direction: column; gap: 12px; position: relative; min-width: 0; }
.plan.featured { border-color: color-mix(in srgb, var(--iris) 55%, transparent); box-shadow: var(--glow); }
.plan .badge { align-self: flex-start; }
.plan h3 { font-size: 1.25rem; }
.plan .amt { font-family: var(--display); font-size: 2.3rem; font-weight: 780; letter-spacing: -.04em; line-height: 1; }
.plan .amt small { font-size: .95rem; color: var(--muted); font-weight: 500; letter-spacing: 0; }
.plan .who { color: var(--muted); font-size: .9rem; }
.plan .ticks { margin-block: 6px auto; }
.plan .btn { margin-top: 10px; }

/* ---- Roadmap timeline ------------------------------------------------------ */
.lanes { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 16px; }
.lane { background: var(--panel); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 22px; }
.lane h3 { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 14px; }
.lane.now { border-color: color-mix(in srgb, var(--mint) 40%, transparent); }
.lane.next { border-color: color-mix(in srgb, var(--cyan) 35%, transparent); }
.phases { display: grid; gap: 0; border-left: 2px solid var(--line-2); margin-left: 8px; }
.phase { position: relative; padding: 0 0 26px 26px; }
.phase::before { content: ""; position: absolute; left: -8px; top: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--bg); border: 2px solid var(--iris); }
.phase.live::before { border-color: var(--mint); background: var(--mint); }
.phase h4 { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.phase p { color: var(--muted); font-size: .93rem; margin-top: 4px; }

/* ---- Gallery & previews ---------------------------------------------------- */
.shot { border-radius: var(--r-lg); overflow: hidden; border: 1px solid var(--line-2); background: var(--panel); box-shadow: var(--shadow); }
.shot img { width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.gallery { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 22px; }
.gallery figure { margin: 0; }
.gallery figcaption { margin-top: 12px; display: flex; justify-content: space-between; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.gallery figcaption strong { font-size: .98rem; } .gallery figcaption span { color: var(--dim); font-size: .84rem; }
.tour-card { display: block; border-radius: var(--r-lg); border: 1px solid var(--line); background: var(--panel); overflow: hidden; transition: transform .2s, border-color .2s, box-shadow .2s; }
.tour-card:hover { transform: translateY(-3px); border-color: var(--line-2); box-shadow: var(--shadow); }
.tour-card img { width: 100%; aspect-ratio: 16/10; object-fit: cover; border-bottom: 1px solid var(--line); }
.tour-card .tc { padding: 16px 18px; display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.tour-card .tc .kicker { display: block; margin-bottom: 4px; }

/* ---- Capability explorer --------------------------------------------------- */
.cap-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; margin-top: 22px; }
.cap { border: 1px solid var(--line); background: var(--panel); border-radius: var(--r); padding: 16px 18px; display: flex; flex-direction: column; gap: 6px; }
.cap .top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.cap h4 { font-size: .98rem; } .cap p { color: var(--muted); font-size: .88rem; }
.cap .kicker { font-size: .6rem; }

/* battlecards / comparison blocks */
.battle { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 18px; }
.battle .side { border: 1px solid var(--line); border-radius: var(--r-lg); padding: 20px; background: var(--panel); }
.battle .side.us { border-color: color-mix(in srgb, var(--iris) 45%, transparent); background: linear-gradient(180deg, var(--iris-weak), var(--panel)); }
.battle h4 { margin-bottom: 10px; }

/* ---- Forms ----------------------------------------------------------------- */
.form-card { background: linear-gradient(180deg, var(--panel), var(--panel-2)); border: 1px solid var(--line-2); border-radius: var(--r-xl); padding: clamp(20px, 3vw, 32px); box-shadow: var(--shadow); }
.field { display: block; margin-bottom: 14px; }
.field > span, .field > label { display: block; font-size: .84rem; font-weight: 620; margin-bottom: 6px; color: var(--ink-2); }
.field em { font-style: normal; color: var(--dim); font-weight: 500; }
.input, .field input, .field select, .field textarea { width: 100%; padding: 11px 13px; border-radius: 11px; border: 1px solid var(--line-2); background: var(--panel-2); color: var(--ink); font-size: .95rem; transition: border-color .15s, box-shadow .15s; }
textarea.input, .field textarea { min-height: 120px; resize: vertical; }
.input:focus, .field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--iris); box-shadow: 0 0 0 3px var(--iris-weak); }
.field .hint { color: var(--dim); font-size: .78rem; margin-top: 5px; }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.notice { border-radius: 11px; padding: 11px 14px; font-size: .9rem; margin-bottom: 14px; border: 1px solid var(--line-2); }
.notice.ok { background: var(--mint-weak); color: var(--mint); border-color: color-mix(in srgb, var(--mint) 35%, transparent); }
.notice.err { background: var(--rose-weak); color: var(--rose); border-color: color-mix(in srgb, var(--rose) 35%, transparent); }
.checks { display: grid; gap: 8px; }
.checks label { display: flex; gap: 9px; align-items: flex-start; font-size: .9rem; color: var(--muted); }
.checks input { width: auto; margin-top: 4px; accent-color: var(--iris); }
input[type="range"] { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; border-radius: 6px; background: var(--line-2); outline: none; padding: 0; border: 0; }
input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--iris); border: 3px solid var(--bg); box-shadow: 0 0 0 1px var(--iris); cursor: pointer; }
input[type="range"]::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--iris); border: 3px solid var(--bg); cursor: pointer; }
.range-row { display: grid; grid-template-columns: 1fr auto; gap: 8px 14px; align-items: center; margin-bottom: 18px; }
.range-row label { font-size: .9rem; font-weight: 600; } .range-row output { font-family: var(--mono); font-size: .85rem; color: var(--iris); min-width: 64px; text-align: right; }
.range-row input { grid-column: 1 / -1; }

/* ---- Prose / documents ----------------------------------------------------- */
.prose { max-width: 760px; color: var(--ink-2); font-size: 1.02rem; line-height: 1.75; }
.prose > * + * { margin-top: 1.05em; }
.prose h2 { font-size: 1.55rem; margin-top: 2.1em; } .prose h3 { font-size: 1.18rem; margin-top: 1.7em; }
.prose h2 + p, .prose h3 + p { margin-top: .6em; }
.prose ul, .prose ol { padding-left: 1.3em; } .prose li + li { margin-top: .45em; }
.prose li::marker { color: var(--iris); }
.prose strong { color: var(--ink); }
.prose blockquote { border-left: 3px solid var(--iris); padding: 4px 0 4px 18px; color: var(--muted); font-style: italic; }
.prose code { font-family: var(--mono); font-size: .86em; background: var(--panel-3); padding: .12em .4em; border-radius: 6px; border: 1px solid var(--line); }
.prose pre { font-family: var(--mono); font-size: .84rem; background: var(--panel); border: 1px solid var(--line-2); border-radius: var(--r); padding: 16px 18px; overflow-x: auto; line-height: 1.6; }
.prose pre code { background: none; border: 0; padding: 0; }
.prose .meta, .meta { font-family: var(--mono); font-size: .76rem; color: var(--dim); letter-spacing: .04em; }
.prose hr { border: 0; height: 1px; background: var(--line); margin-block: 2em; }
.doc-grid { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: clamp(24px, 4vw, 64px); align-items: start; }
.toc { position: sticky; top: calc(var(--nav-h) + 24px); font-size: .86rem; }
.toc h6 { font-family: var(--mono); font-size: .66rem; letter-spacing: .15em; text-transform: uppercase; color: var(--dim); margin-bottom: 10px; }
.toc a { display: block; padding: 6px 0 6px 12px; border-left: 2px solid var(--line); color: var(--muted); }
.toc a:hover, .toc a.on { color: var(--ink); border-color: var(--iris); }
.callout { border: 1px solid var(--line-2); border-radius: var(--r); padding: 16px 18px; background: var(--panel); font-size: .95rem; color: var(--muted); }
.callout strong { color: var(--ink); }
.callout.iris { background: var(--iris-weak); border-color: color-mix(in srgb, var(--iris) 30%, transparent); }
.article-meta { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; font-family: var(--mono); font-size: .74rem; color: var(--dim); letter-spacing: .04em; text-transform: uppercase; margin-top: 18px; }

/* code block (developer pages) */
.code { font-family: var(--mono); font-size: .8rem; line-height: 1.75; background: #070B15; color: #C9D3EE; border-radius: var(--r-lg); border: 1px solid var(--line-2); padding: 18px 20px; overflow-x: auto; white-space: pre; }
:root[data-theme="light"] .code { background: #0E1426; }
.code .k { color: #7FB0FF; } .code .s { color: #8EF0C6; } .code .n { color: #FFC66D; } .code .c { color: #66748F; } .code .p { color: #C792EA; }

/* ---- CTA band -------------------------------------------------------------- */
.cta-band { position: relative; overflow: hidden; border-radius: var(--r-xl); border: 1px solid var(--line-2); padding: clamp(36px, 6vw, 76px); text-align: center; background: linear-gradient(180deg, var(--panel), var(--panel-2)); }
.cta-band::before { content: ""; position: absolute; inset: 0; z-index: 0; background: radial-gradient(640px 320px at 50% -30%, rgba(124,134,255,.32), transparent 70%), radial-gradient(500px 300px at 100% 120%, rgba(39,211,238,.14), transparent 70%); }
.cta-band > * { position: relative; z-index: 1; }
.cta-band h2 { max-width: 720px; margin-inline: auto; }
.cta-band .lead { max-width: 600px; margin: 14px auto 0; }
.cta-band .btn-row { justify-content: center; margin-top: 26px; }

/* ---- Footer ---------------------------------------------------------------- */
.footer { border-top: 1px solid var(--line); background: var(--bg-2); padding-block: 64px 30px; margin-top: 30px; }
.footer-grid { display: grid; grid-template-columns: 1.5fr repeat(5, minmax(0,1fr)); gap: 28px; }
.footer h5 { font-family: var(--mono); font-size: .68rem; letter-spacing: .15em; text-transform: uppercase; color: var(--dim); font-weight: 600; margin-bottom: 14px; }
.footer ul { list-style: none; padding: 0; display: grid; gap: 8px; }
.footer a { color: var(--muted); font-size: .9rem; } .footer a:hover { color: var(--ink); }
.footer .about p { color: var(--muted); font-size: .9rem; max-width: 310px; margin-top: 12px; }
.footer .disclaimer { margin-top: 40px; color: var(--dim); font-size: .82rem; max-width: 860px; }
.footer-bottom { margin-top: 18px; padding-top: 20px; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 10px 20px; justify-content: space-between; color: var(--dim); font-size: .82rem; }

/* ---- Reveal ---------------------------------------------------------------- */
.js .reveal { opacity: 0; transform: translateY(16px); transition: opacity .6s ease, transform .6s cubic-bezier(.2,.7,.2,1); }
.js .reveal.in { opacity: 1; transform: none; }
.reveal.d1 { transition-delay: .06s; } .reveal.d2 { transition-delay: .12s; } .reveal.d3 { transition-delay: .18s; }
@media (prefers-reduced-motion: reduce) { .js .reveal { opacity: 1; transform: none; transition: none; } }
@keyframes fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
.pulse { animation: pulse 1.6s ease-in-out infinite; }

/* ---- Workbench (product preview app shell) -------------------------------- */
.app { display: grid; grid-template-columns: 240px minmax(0,1fr); min-height: 720px; border-radius: var(--r-xl); overflow: hidden; border: 1px solid var(--line-2); box-shadow: var(--shadow-lg); background: var(--panel); position: relative; }
.app-side { background: var(--bg-2); border-right: 1px solid var(--line); padding: 16px 12px; overflow-y: auto; }
.app-side .ws { display: flex; gap: 10px; align-items: center; padding: 8px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); margin-bottom: 8px; }
.app-side .ws .av { width: 30px; height: 30px; border-radius: 9px; background: var(--grad-mint); display: grid; place-items: center; font-weight: 800; color: #04221a; font-size: .85rem; }
.app-side .ws strong { display: block; font-size: .84rem; } .app-side .ws small { color: var(--dim); font-size: .72rem; }
.app-side .grp { font-family: var(--mono); font-size: .6rem; letter-spacing: .15em; text-transform: uppercase; color: var(--dim); margin: 16px 8px 6px; }
.app-nav { display: grid; gap: 1px; }
.app-nav button { text-align: left; display: flex; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 9px; border: 0; background: none; color: var(--muted); font-weight: 560; font-size: .86rem; width: 100%; }
.app-nav button svg { width: 15px; height: 15px; flex: none; opacity: .85; }
.app-nav button:hover { background: rgba(255,255,255,.05); color: var(--ink); }
.app-nav button.active { background: var(--iris-weak); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line); }
.app-nav button .cnt { margin-left: auto; font-family: var(--mono); font-size: .66rem; padding: 1px 6px; border-radius: 6px; background: var(--amber-weak); color: var(--amber); }
.app-main { overflow-y: auto; min-width: 0; max-height: 860px; }
.app-top { display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--panel) 94%, transparent); position: sticky; top: 0; z-index: 2; backdrop-filter: blur(8px); }
.app-top .crumb { font-family: var(--mono); font-size: .74rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.app-top .crumb b { color: var(--ink); font-weight: 600; }
.app-top .spacer { flex: 1; }
.app-body { padding: clamp(16px, 2.2vw, 28px); }
.app-view { display: none; } .app-view.show { display: block; animation: fade .3s ease; }
.app-view h2 { font-size: 1.45rem; } .app-view h3 { font-size: 1.05rem; }
.app-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.app-head p { color: var(--muted); font-size: .88rem; margin-top: 4px; }
.box { border: 1px solid var(--line); background: var(--panel-2); border-radius: 14px; padding: 16px; min-width: 0; }
.box h4 { font-size: .92rem; margin-bottom: 10px; display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.list { display: grid; gap: 6px; }
.li { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--line); border-radius: 11px; background: var(--panel); font-size: .86rem; }
.li .t { font-weight: 620; } .li small { display: block; color: var(--dim); font-size: .76rem; font-weight: 500; }
.pri { font-family: var(--mono); font-size: .68rem; font-weight: 700; padding: 3px 7px; border-radius: 6px; }
.pri.p0 { background: var(--rose-weak); color: var(--rose); } .pri.p1 { background: var(--amber-weak); color: var(--amber); } .pri.p2 { background: var(--iris-weak); color: var(--iris); } .pri.p3 { background: rgba(255,255,255,.05); color: var(--dim); }
.bar { height: 8px; border-radius: 8px; background: var(--line); overflow: hidden; }
.bar i { display: block; height: 100%; border-radius: 8px; background: var(--grad); transition: width .8s cubic-bezier(.2,.7,.2,1); }
.bar.mint i { background: var(--grad-mint); } .bar.amber i { background: var(--amber); }
.hbars { display: grid; gap: 10px; }
.hbar { display: grid; grid-template-columns: 150px 1fr 48px; gap: 12px; align-items: center; font-size: .82rem; }
.hbar span:last-child { font-family: var(--mono); color: var(--muted); text-align: right; }
textarea.src-edit { width: 100%; min-height: 96px; font-family: var(--mono); font-size: .8rem; line-height: 1.6; background: var(--panel); border: 1px solid var(--line-2); border-radius: 11px; padding: 10px 12px; color: var(--ink); resize: vertical; }
.toast { position: fixed; bottom: 22px; left: 50%; transform: translate(-50%, 20px); background: var(--panel-3); color: var(--ink); border: 1px solid var(--line-2); padding: 11px 16px; border-radius: 12px; box-shadow: var(--shadow-lg); font-size: .88rem; opacity: 0; transition: opacity .2s, transform .2s; z-index: 300; pointer-events: none; max-width: 92vw; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.graph-svg { width: 100%; height: auto; }
.graph-svg .gn rect { fill: var(--panel); stroke: var(--line-2); }
.graph-svg .gn.on rect { stroke: var(--iris); fill: var(--iris-weak); }
.graph-svg .gn.hot rect { stroke: var(--amber); fill: var(--amber-weak); }
.graph-svg text { fill: var(--ink-2); font-family: var(--mono); font-size: 11px; }
.graph-svg text.sub { fill: var(--dim); font-size: 9.5px; }
.graph-svg path { stroke: var(--line-strong); fill: none; stroke-width: 1.4; }
.graph-svg path.on { stroke: var(--iris); }
.graph-svg path.hot { stroke: var(--amber); stroke-dasharray: 4 4; }

/* ---- Responsive ------------------------------------------------------------ */
@media (max-width: 1080px) {
  .g4, .plans, .step-row { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .g5 { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .footer-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .footer .about { grid-column: 1 / -1; }
  .cap-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .compiler { grid-template-columns: 1fr; } .compiler .chev { transform: rotate(90deg); justify-self: center; }
}
@media (max-width: 900px) {
  .hero-grid, .split, .split-60, .two-up, .doc-grid { grid-template-columns: 1fr; }
  .split.rev > :first-child { order: 0; }
  .g3, .g2, .lanes, .gallery, .battle, .plans.three { grid-template-columns: 1fr; }
  .metrics { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .toc { display: none; }
  .float-card { display: none; }
  .app { grid-template-columns: 1fr; }
  .app-side { display: none; }
  .app.nav-open .app-side { display: block; position: absolute; inset: 52px auto 0 0; width: 250px; z-index: 6; box-shadow: var(--shadow-lg); }
  .app-main { max-height: none; }
  .hbar { grid-template-columns: 110px 1fr 40px; }
}
@media (max-width: 600px) {
  .g4, .g5, .plans, .step-row, .cap-grid, .row2 { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .metrics { grid-template-columns: 1fr 1fr; }
  .btn-row .btn { flex: 1 1 auto; }
  .brand .by { display: none; }
  .li { grid-template-columns: auto 1fr; } .li > :last-child { grid-column: 1 / -1; justify-self: start; }
}
.show-sm { display: none; }
@media (max-width: 900px) { .hide-mobile { display: none !important; } .show-sm { display: initial; } }

@media print {
  .nav, .footer, .announce, .drawer, .icon-btn { display: none !important; }
  body::before { display: none; }
  .js .reveal { opacity: 1; transform: none; }
}

/* ---- Additions (union build) ----------------------------------------------- */
.ticks a { color: var(--ink); text-decoration: underline; text-decoration-color: var(--line-2); text-underline-offset: 3px; }
.ticks a:hover { color: var(--iris); }
.stat .v svg { width: 22px; height: 22px; }
.tag svg { width: 12px; height: 12px; display: inline-block; vertical-align: -2px; margin-right: 4px; }
.btn svg { width: 16px; height: 16px; }
.cap.card-link { text-decoration: none; transition: border-color .2s, transform .2s; }
.cap.card-link:hover { border-color: var(--line-2); transform: translateY(-2px); }
button.li { font: inherit; color: inherit; cursor: pointer; }
button.li:hover { border-color: var(--line-2); }
.window pre.code { white-space: pre; }
.hero-visual .shot img, .page-hero .shot img { aspect-ratio: 16/10; }
.split > *, .grid > * { min-width: 0; }
.gn { outline: none; }
.gn:focus-visible rect { stroke: var(--cyan); stroke-width: 2; }
.app-view .window { box-shadow: none; }
.legend .badge { margin-right: 2px; }
details > summary { list-style: none; }
.prose h2[id], .prose h3[id] { scroll-margin-top: calc(var(--nav-h) + 20px); }
.page-hero.center .crumbs, .page-hero.center .flex { justify-content: center; }
.flex.mt { margin-top: 1.2rem; }
@media (max-width: 900px) { .app-body .grid[style] { grid-template-columns: 1fr !important; } }

/* mega menus centred under the nav bar so none overflows the viewport */
.nav-in { position: relative; }
.nav-drop { position: static; }
.mega { left: 50%; top: calc(100% - 4px); transform: translate(-50%, 8px); max-width: min(calc(100vw - 32px), 1000px); }
.nav-drop:hover .mega, .nav-drop:focus-within .mega, .nav-drop.open .mega { transform: translate(-50%, 0); }
.mega::before { inset: -10px 0 auto; height: 10px; }

/* ---- QA pass 1 (design polish) --------------------------------------------- */
.section { padding-block: clamp(56px, 7.5vw, 104px); }
.hero-visual { padding-block: 40px 34px; }
.float-card.tl { top: -2px; left: -30px; }
.float-card.br { bottom: 0; right: -22px; }
.grid > .card, .grid > a.card { display: flex; flex-direction: column; }
.card > .foot { margin-top: auto; padding-top: 16px; }
.mod-list { list-style: none; padding: 0; margin-top: 14px; display: grid; gap: 4px; }
.mod-list li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; border: 1px solid transparent; transition: background .15s, border-color .15s; }
.mod-list li:hover { background: rgba(255,255,255,.03); border-color: var(--line); }
:root[data-theme="light"] .mod-list li:hover { background: rgba(12,24,48,.03); }
.mod-list a { color: var(--ink); font-weight: 600; font-size: .95rem; }
.mod-list a:hover { color: var(--iris); }
.window .flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(64px, 1fr)); gap: 6px; }
.window .flow .conn { display: none; }
.window .flow .node { text-align: center; padding: 8px 6px; font-size: .78rem; }
.hero .btn-row .btn-lg { padding: .9em 1.3em; }

/* ul.ticks.plan must not inherit the pricing .plan card */
ul.ticks.plan { background: none; border: 0; border-radius: 0; padding: 0; box-shadow: none; display: grid; gap: .6rem; flex-direction: initial; }
.plan ul.ticks.plan { margin-block: 6px auto; }
.float-card.tl { top: -22px; left: -30px; }

.hero-grid > *, .two-up > *, .doc-grid > *, .compiler > *, .lanes > *, .plans > * { min-width: 0; }
.window-title { min-width: 0; }
.tag { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 600px) {
  .hero .btn-row .btn { flex: 1 1 100%; }
  .display { font-size: clamp(2.3rem, 11vw, 3rem); }
  .marquee .wrap { flex-wrap: wrap; }
  .window-body .flex.between { flex-wrap: wrap; }
}

@media (max-width: 600px) {
  .hide-xs { display: none; }
  .announce .wrap { flex-wrap: nowrap; gap: 8px; font-size: .8rem; padding-right: 34px; justify-content: flex-start; }
  .announce .badge { display: none; }
}

[data-scan] fieldset h4 { margin: 20px 0 10px; color: var(--iris); font-family: var(--mono); font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; }

/* tick lists: block flow so "<strong>Lead.</strong> text" stays one paragraph */
.ticks li { display: block; position: relative; padding-left: 30px; }
.ticks li::before { position: absolute; left: 0; top: 1px; margin-top: 0; }
.mod-list li { padding-left: 10px; }

/* depth on hero product shots */
@media (min-width: 901px) {
  .page-hero .hero-visual .shot { transform: perspective(1800px) rotateY(-7deg) rotateX(2deg); transform-origin: left center; box-shadow: var(--shadow-lg), var(--glow); transition: transform .5s ease; }
  .page-hero .hero-visual .shot:hover { transform: perspective(1800px) rotateY(-2deg) rotateX(0deg); }
}
@media (prefers-reduced-motion: reduce) { .page-hero .hero-visual .shot { transition: none; } }
/* facts strip */
.facts { display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); border: 1px solid var(--line); border-radius: var(--r-lg); background: linear-gradient(180deg, var(--panel), var(--panel-2)); overflow: hidden; }
.facts > div { padding: 22px 20px; border-right: 1px solid var(--line); }
.facts > div:last-child { border-right: 0; }
.facts .v { font-family: var(--display); font-size: clamp(1.4rem, 2.3vw, 1.9rem); font-weight: 780; letter-spacing: -.03em; }
.facts .l { color: var(--muted); font-size: .84rem; margin-top: 4px; }
@media (max-width: 900px) { .facts { grid-template-columns: repeat(2, minmax(0,1fr)); } .facts > div { border-bottom: 1px solid var(--line); } }
