/* Explicit foregrounds prevent low-contrast host/theme inheritance. */
:root {
  --bg:#080f1b;--panel:#111b2b;--text:#f2f6ff;--muted:#acbbd0;
  --line:#2d3d54;--violet:#88cdff;--lime:#c8f691;
  --ambient:#145199;--grid:rgba(136,205,255,.075);--header:#080f1bf2;
  --node:#162235;--selected:#1b3550;--art:#101f35;--ink:#080f1b;
}
:root[data-direction="signal"] {
  --bg:#0b0e0c;--panel:#171c18;--text:#f4f7ef;--muted:#b2bcae;
  --line:#354235;--violet:#d4f98c;--lime:#b5e8d8;
  --ambient:#355521;--grid:rgba(212,249,140,.12);--header:#0b0e0cf2;
  --node:#1b251d;--selected:#2c3d23;--art:#172416;--ink:#111b09;
}
:root[data-direction="ultraviolet"] {
  --bg:#110c1d;--panel:#1e172d;--text:#faf5ff;--muted:#c1b2d3;
  --line:#49365e;--violet:#c1a1ff;--lime:#ffbcd9;
  --ambient:#5726a0;--grid:rgba(193,161,255,.09);--header:#110c1df2;
  --node:#271c3c;--selected:#3c2857;--art:#281441;--ink:#1a0c2a;
}
body {isolation:isolate;background:var(--bg);transition:background-color .35s,color .35s}
body::before {content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 88% 12%,var(--ambient),transparent 52%);opacity:.25}
header {background:var(--header)}
.hero {position:relative;isolation:isolate}
.hero::before {content:"";position:absolute;inset:0 0 20%;z-index:-1;pointer-events:none;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:64px 64px;mask-image:linear-gradient(120deg,transparent 12%,#000 80%,transparent)}
[data-direction="signal"] .hero::before {background-image:radial-gradient(var(--grid) 1.3px,transparent 1.3px);background-size:22px 22px}
[data-direction="ultraviolet"] .hero::before {background-image:repeating-radial-gradient(ellipse at 110% 0,transparent 0 55px,var(--grid) 56px 57px,transparent 58px 90px);background-size:auto}
.hero h1 {max-width:100%;text-wrap:balance}
.hero h1 em {background:linear-gradient(105deg,var(--text),var(--violet) 40%,var(--violet));background-clip:text;-webkit-background-clip:text;color:transparent}
.pipeline {background:var(--panel);box-shadow:0 20px 80px #0002}
.node {background:var(--node);border-color:var(--line)}
.node.active {background:var(--selected);border-color:var(--violet);box-shadow:inset 0 0 24px #ffffff04}
.node:hover {border-color:var(--violet);transform:translateY(-3px)}
.project {background:var(--panel);transition:border-color .25s,box-shadow .25s}
.project:hover {border-color:var(--violet);box-shadow:0 20px 70px #0003}
.quick {background:var(--art);color:var(--text);position:relative;isolation:isolate;min-height:540px;padding-top:28px}
.quick::before {content:"";inset:0;position:absolute;z-index:-1;background:radial-gradient(ellipse at 100% 25%,var(--ambient),transparent 70%);opacity:.6}
.quick .big-stat {color:var(--violet);font-size:110px;line-height:1;margin-top:12px}
.quick .big-stat span {font-size:75px}
.quick .bar {background:var(--violet)}
.quick .comparison {margin-top:12px}
.quick .visual-footer {border-color:var(--line)}
.quick .visual-label {color:var(--muted)}
.quick .stat-caption {margin-bottom:6px}
.flow-diagram {width:100%;height:155px;margin:16px 0 0;overflow:visible}
.flow-diagram .trace {fill:none;stroke:var(--violet);stroke-width:1.4;opacity:.5}
.flow-diagram .flow-box {fill:var(--node);stroke:var(--line);stroke-width:1}
.flow-diagram .hub {fill:var(--selected);stroke:var(--violet)}
.flow-diagram text {fill:var(--text);font-family:'Space Grotesk',sans-serif;font-size:13px}
.flow-diagram .packet {fill:var(--violet)}
.flow-diagram .flow-label {fill:var(--muted);font-size:12px}
.dbt-visual {background:var(--lime);color:var(--ink)}
.analytics-stat,.stanford-visual {background:var(--art)}
.stanford-visual .visual-label,.quality-lines {color:var(--muted)}
.analytics-stat strong,.migration b {color:var(--violet)}
.tags span {color:var(--text);border-color:var(--line)}
.scroll-meter {height:2px;background:var(--violet);position:fixed;inset:0 auto auto 0;width:100%;z-index:30;transform:scaleX(0);transform-origin:left;pointer-events:none}
.direction-switch {margin:22px auto 0;max-width:1230px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:0 6%}
.direction-switch button {background:var(--panel);border:1px solid var(--line);border-radius:30px;color:var(--text);padding:10px 16px;font-size:14px;cursor:pointer;min-height:44px}
.direction-switch button[aria-pressed="true"] {background:var(--violet);color:var(--ink);border-color:var(--violet)}
.direction-switch>span {font-size:12px;color:var(--muted);margin-right:12px}
.reveal-wait {opacity:0;transform:translateY(28px);transition:opacity .75s ease,transform .85s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0ms)}
.reveal-wait.is-visible,.reveal-wait:focus-within {opacity:1;transform:none}
.section-heading {gap:16px}
nav a[aria-current="location"] {color:var(--violet)}
@media(min-width:951px){.featured{align-items:start}.featured .quick{position:sticky;top:116px}.featured .project-copy{padding-top:45px;padding-bottom:45px}.featured{overflow:clip}.quick{height:auto}.project-grid .project:nth-child(2){--reveal-delay:110ms}}
@media(max-width:650px){.quick{min-height:460px}.quick .big-stat{font-size:90px}.flow-diagram{height:135px}.hero h1{font-size:clamp(40px,9.8vw,64px);letter-spacing:-2px}.direction-switch{gap:8px}.direction-switch>span{width:100%}.direction-switch button{padding:9px 12px;font-size:13px}}
@media(prefers-reduced-motion:reduce){.reveal-wait{opacity:1;transform:none}.node:hover{transform:none}.flow-diagram .packet{display:none}body{transition:none}html{scroll-behavior:auto}}

/* Project art lives above solid reading surfaces, never beneath body copy. */
body h1,body h2,body h3,body h4,summary{color:#f7f9ff}
.hero h1 em{background:none;color:var(--violet);-webkit-text-fill-color:var(--violet)}
.project-copy{background:#111927;color:#f7f9ff;position:relative;z-index:1}
.project-copy>p,.detail-body,.detail-body .note,.about p,.hero-bottom p,.toolbox p{color:#d0d9e7}
.project-meta,.eyebrow,.mono.muted,.pipeline>p{color:#bccbe0}
.project-meta .status{color:#b5f0d0}
.tags span{color:#eaf0fa;background:#1b2a40;border-color:#465d7e;font-size:14px}
.quick{background:#10172b;min-height:630px;justify-content:flex-start;padding-top:300px;overflow:hidden}
.quick:before{inset:0 0 auto;height:285px;background:url('quickcruit-network.svg') center/cover no-repeat;opacity:1}
.quick .flow-diagram{display:none}
.quick .big-stat{color:#c5b6ff;margin-top:18px}
.quick .visual-label,.quick .stat-caption,.quick .comparison,.quick .visual-footer{color:#f0efff}
.quick .visual-footer{margin-top:auto;padding-top:20px}
.analytics-stat{background:#0c1a2b;position:relative;padding:270px 30px 32px;overflow:hidden}
.analytics-stat:before{content:"";position:absolute;inset:0 0 auto;height:250px;background:url('analytics-dashboard.svg') center/cover no-repeat}
.analytics-stat strong{font-size:90px;color:#9cddff}
.analytics-stat>span{color:#f7f9ff}
.analytics-stat p{color:#d0d9e7}
.dbt-visual{height:390px;position:relative;background:#0c201e;padding:260px 28px 22px;color:#f0fff5;display:block}
.dbt-visual:before{content:"";position:absolute;inset:0 0 auto;height:235px;background:url('dbt-pipeline.svg') center/cover no-repeat}
.dbt-visual .visual-label{color:#c9e9dc;font-size:12px}
.dbt-title,.dbt-title span{color:#c0ffdd;font-size:36px;margin:12px 0;line-height:1.2}
.dbt-visual .model-flow{display:none}
.progress-label{position:static;display:block;color:#f0fff5;margin-top:5px;font-size:14px}
.art-note{display:block;font-size:12px;color:#bccbe0;margin-top:10px;font-style:normal}
@media(max-width:650px){.quick{min-height:610px;padding-top:275px}.quick:before{height:250px}.analytics-stat{padding-top:250px}.analytics-stat:before{height:230px}.dbt-visual{height:370px;padding-top:240px}.dbt-visual:before{height:220px}.dbt-title,.dbt-title span{font-size:32px}.quick .visual-footer{margin-top:18px}}
