/* =================================================================
   REFINEMENTS LAYER — loads after styles.css
   Polish pass: typography signature, card system, atmosphere, details
   ================================================================= */

/* --- Global tokens (define for future-proofing) --- */
:root {
  --ink: #F4F4F8;
  --ink-soft: #B8B8C0;
  --ink-mute: #9090A0;
  --ink-dim: #6F7280;
  --bg: #0B0C10;
  --surface: #13141B;
  --surface-2: #1A1C24;
  --surface-3: #1F2230;
  --border: #262830;
  --border-bright: #3A3D48;
  --accent: #3B82F6;
  --accent-2: #60A5FA;
  --accent-soft: #93C5FD;
  --accent-tint: rgba(59, 130, 246, 0.10);
  --accent-glow: rgba(59, 130, 246, 0.28);
}

/* --- Selection + scrollbar --- */
::selection {
  background: var(--accent);
  color: #FFFFFF;
}
* {
  scrollbar-width: thin;
  scrollbar-color: var(--border-bright) transparent;
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: var(--border); border-radius: 10px; }
*::-webkit-scrollbar-thumb:hover { background: var(--border-bright); }

/* --- Focus rings for accessibility + polish --- */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.btn-primary:focus-visible,
.btn-secondary:focus-visible,
.btn-outline:focus-visible,
[role="button"]:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
  border-radius: 4px;
}

/* --- Body atmosphere: subtle vignette --- */
body {
  font-feature-settings: "ss01", "cv02", "cv11";
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* --- Hero atmosphere: subtle radial glow + grain --- */
.hero {
  position: relative;
  background:
    radial-gradient(ellipse 80% 60% at 70% 20%, rgba(59, 130, 246, 0.07) 0%, transparent 60%),
    radial-gradient(ellipse 60% 50% at 20% 80%, rgba(59, 130, 246, 0.04) 0%, transparent 60%),
    #0B0C10 !important;
}
.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  pointer-events: none;
  opacity: 0.6;
  z-index: 0;
}
.hero > * { position: relative; z-index: 1; }

/* --- Hero typography tightening --- */
.hero-title {
  font-feature-settings: "ss01", "cv02";
  font-variation-settings: "wght" 800;
}
.hero-description {
  font-size: 1.18rem;
  line-height: 1.65;
  color: #C9CCD8;
  max-width: 56ch;
}
.hero-description strong { color: var(--ink); font-weight: 600; }

/* --- Highlight accent (Fraunces italic) — polish + subtle hover --- */
.highlight {
  position: relative;
  color: var(--accent-2);
  background: linear-gradient(120deg, transparent 0%, transparent 100%);
  background-size: 100% 0.18em;
  background-position: 0 92%;
  background-repeat: no-repeat;
  transition: background-size 0.5s cubic-bezier(0.4, 0.0, 0.2, 1);
}

/* Numeric tabular feel for stats — feels operator/precise */
.stat-number,
.metric-number,
.metric-value,
.achievement-number {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  letter-spacing: -0.02em;
}

/* --- Section header typography signature --- */
.section-header h2 {
  letter-spacing: -0.025em;
  font-weight: 700;
}
.section-header p {
  color: var(--ink-mute);
  letter-spacing: 0.005em;
}

/* --- Card system unified treatment --- */
.timeline-content,
.project-card,
.achievement-card,
.service-card,
.metric-card,
.client-card,
.bring-item,
.skill-category {
  transition:
    background-color 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
    border-color 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
    transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 0.3s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.timeline-content:hover,
.project-card:hover,
.achievement-card:hover,
.service-card:hover,
.metric-card:hover,
.client-card:hover,
.bring-item:hover,
.skill-category:hover {
  background-color: var(--surface);
  border-color: var(--border-bright);
  transform: translateY(-3px);
  box-shadow:
    0 10px 32px rgba(0, 0, 0, 0.45),
    0 0 0 1px var(--accent-tint);
}

/* --- Skills section: Variant A icon-led cards (2026-06-15) --- */
.skill-category{background:linear-gradient(180deg,#13141B,#0F1117)}
.skill-cat-head{display:flex;align-items:center;gap:.85rem}
.skill-cat-head h3{margin-bottom:0;font-family:'Fraunces','Hanken Grotesk',serif;font-weight:600;font-size:1.35rem;letter-spacing:-.01em}
.skill-ic{width:46px;height:46px;flex-shrink:0;border-radius:12px;display:flex;align-items:center;justify-content:center;background:rgba(59,130,246,.14);border:1px solid rgba(59,130,246,.28);color:#6AA6FF;font-size:1.2rem}
.skill-proof{display:inline-flex;align-items:center;gap:.42rem;margin:1rem 0 .3rem;font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6AA6FF;background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.22);border-radius:99px;padding:.32rem .72rem}
.skill-category .skill-list{margin-top:.5rem}

/* --- Buttons: refined hover micro-interactions --- */
.btn,
.btn-primary,
.btn-secondary,
.btn-outline {
  transition:
    background-color 0.2s cubic-bezier(0.2, 0.7, 0.2, 1),
    border-color 0.2s cubic-bezier(0.2, 0.7, 0.2, 1),
    color 0.2s cubic-bezier(0.2, 0.7, 0.2, 1),
    transform 0.2s cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 0.2s cubic-bezier(0.2, 0.7, 0.2, 1);
  letter-spacing: 0.005em;
  font-weight: 600;
}
.btn-primary:hover {
  box-shadow:
    0 6px 24px rgba(59, 130, 246, 0.35),
    0 2px 8px rgba(59, 130, 246, 0.20);
  transform: translateY(-2px);
}
.btn-outline {
  border-color: var(--border-bright);
}
.btn-outline:hover {
  border-color: var(--accent);
  background-color: var(--accent-tint);
  color: var(--accent-2);
}

/* --- Nav refinement --- */
.navbar {
  border-bottom: 1px solid transparent;
  backdrop-filter: blur(16px) saturate(140%);
  -webkit-backdrop-filter: blur(16px) saturate(140%);
}
.navbar.scrolled {
  border-bottom-color: var(--border);
}
.nav-link {
  position: relative;
  transition: color 0.2s;
}
.nav-link::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -4px;
  height: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.nav-link:hover::after,
.nav-link.active::after {
  transform: scaleX(1);
}
.nav-logo h2 .logo-tagline {
  font-family: 'Fraunces', 'Hanken Grotesk', serif;
  font-style: italic;
  font-weight: 500;
  color: var(--accent-2);
  letter-spacing: -0.005em;
}
.nav-logo .logo-name {
  letter-spacing: -0.015em;
  font-weight: 800;
}
.nav-logo .logo-divider { color: var(--ink-dim); font-weight: 300; }

/* --- Client logos: more visible on dark --- */
.client-logo {
  filter: brightness(0) invert(1) opacity(0.55);
  transition: filter 0.3s, opacity 0.3s, transform 0.3s;
}
.client-logo:hover {
  filter: brightness(0) invert(1) opacity(0.95);
  transform: scale(1.05);
}

/* --- Section atmosphere: subtle top hairline on alternating sections --- */
.about,
.projects,
.clients,
.skills,
.achievements,
.services,
.contact {
  position: relative;
}
.about::before,
.projects::before,
.clients::before,
.skills::before,
.achievements::before,
.services::before,
.contact::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: min(1200px, calc(100% - 80px));
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--border) 20%,
    var(--border-bright) 50%,
    var(--border) 80%,
    transparent 100%
  );
}

/* --- Section header chip-style kicker (the small descriptor text) --- */
.section-header {
  text-align: center;
}
.section-header h2 {
  font-size: clamp(2rem, 4vw, 2.75rem);
  line-height: 1.1;
  margin-bottom: 0.75rem;
}
.section-header > p {
  font-size: 1.05rem;
  max-width: 64ch;
  margin: 0 auto;
}

/* --- Expand button refinement --- */
.expand-btn {
  border: 1px solid var(--border);
  background: var(--surface) !important;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.expand-btn:hover {
  border-color: var(--accent);
  background: var(--accent-tint) !important;
  color: var(--accent-2);
}

/* --- Project type / tech-label badges: more refined --- */
.project-type,
.project-year,
.project-status,
.tech-label,
.skill-tag,
.capability-tag {
  border: 1px solid transparent;
  transition: all 0.2s;
  letter-spacing: 0.02em;
}
.project-type,
.tech-label {
  border-color: rgba(59, 130, 246, 0.22);
  background: rgba(59, 130, 246, 0.10);
  color: var(--accent-soft);
}
.project-year {
  border-color: var(--border-bright);
  background: var(--surface-2);
  color: var(--ink-soft);
  font-variant-numeric: tabular-nums;
}

/* --- Hero stats: tighter, more confident --- */
.hero-stats {
  gap: 2.5rem;
  margin-top: 2.5rem;
}
.stat {
  position: relative;
}
.stat-number {
  font-weight: 800;
  font-size: 2.4rem;
  letter-spacing: -0.03em;
  background: linear-gradient(180deg, var(--ink) 0%, #C9CCD8 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  display: inline-block;
  line-height: 1;
}
.stat-label {
  display: block;
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 600;
  margin-top: 0.4rem;
}

/* --- Timeline rail refinement --- */
.timeline::before {
  background: linear-gradient(
    180deg,
    transparent 0%,
    var(--border) 5%,
    var(--border-bright) 50%,
    var(--border) 95%,
    transparent 100%
  ) !important;
  width: 2px !important;
}
.timeline-marker {
  box-shadow:
    0 0 0 6px var(--bg),
    0 0 0 7px rgba(59, 130, 246, 0.18);
}

/* --- Hero buttons row: tighter --- */
.hero-buttons {
  gap: 0.875rem !important;
  margin-top: 1.5rem;
}

/* --- Misc detail polish --- */
strong, b { color: var(--ink); }
em { font-style: italic; }
abbr { text-decoration: none; border-bottom: 1px dotted var(--border-bright); cursor: help; }
hr { border: none; height: 1px; background: var(--border); margin: 2rem 0; }

/* --- Smooth reveal on scroll (works with existing IntersectionObserver if present) --- */
section { scroll-margin-top: 80px; }

/* --- Print: keep dark for consistency, but ensure text legible --- */
@media print {
  body { background: #fff !important; color: #000 !important; }
  .navbar, .hero-buttons, .expand-btn { display: none !important; }
}

/* =================================================================
   WRITING / FIELD NOTES SECTION
   ================================================================= */
.writing {
  padding: 80px 0;
  background-color: #0F1117;
}
.writing-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5rem;
  max-width: 1100px;
  margin: 0 auto;
}
.writing-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: linear-gradient(180deg, var(--surface), #0F1117);
  padding: clamp(1.5rem, 4vw, 2.2rem);
  transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.writing-card:hover {
  transform: translateY(-5px);
  border-color: var(--accent-glow);
  box-shadow: 0 14px 34px -14px rgba(0, 0, 0, .55);
}
.writing-meta {
  display: flex;
  gap: .7rem;
  align-items: center;
  flex-wrap: wrap;
  font-size: .72rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ink-dim);
  margin-bottom: 1rem;
}
.writing-tag { color: var(--accent-soft); }
.writing-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--ink-dim); }
.writing-card h3 {
  font-family: 'Fraunces', 'Hanken Grotesk', serif;
  font-weight: 600;
  font-size: clamp(1.4rem, 2.6vw, 1.9rem);
  line-height: 1.15;
  letter-spacing: -.01em;
  color: var(--ink);
  margin: 0;
}
.writing-card p {
  color: var(--ink-mute);
  font-size: 1rem;
  line-height: 1.6;
  margin-top: .85rem;
}
.writing-more {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  margin-top: 1.4rem;
  color: var(--accent-2);
  font-weight: 600;
  font-size: .92rem;
}
.writing-more i { transition: transform .25s ease; }
.writing-card:hover .writing-more i { transform: translateX(4px); }
.writing-footer { text-align: center; margin-top: 2.6rem; }
.writing-card.tool { border-left: 3px solid var(--accent); }
.writing-card.tool .writing-tag { color: var(--accent-2); }
@media (max-width: 720px) {
  .writing-grid { grid-template-columns: 1fr; }
}

/* =================================================================
   GRANTCOMPASS SPOTLIGHT — custom marquee (section within a section)
   ================================================================= */
.gc-spot{
  --gc:#3FA37A; --gc-soft:#8BD9B6; --gc-glow:rgba(63,163,122,.22);
  position:relative; margin:0 auto 3.4rem; max-width:1400px;
  border:1px solid rgba(63,163,122,.22); border-radius:24px;
  background:
    radial-gradient(900px 380px at 88% -20%, var(--gc-glow), transparent 60%),
    radial-gradient(680px 360px at -6% 120%, rgba(196,83,43,.10), transparent 60%),
    linear-gradient(165deg,#101a16,#0c100e);
  padding:clamp(1.6rem,3vw,2.8rem); overflow:hidden;
}
.gc-spot::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--gc),transparent)}
.gc-spot-inner{display:grid;grid-template-columns:0.92fr 1.18fr;gap:clamp(1.6rem,3vw,3rem);align-items:center}
.gc-spot-eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:var(--gc-soft);border:1px solid rgba(63,163,122,.32);border-radius:99px;padding:.34rem .8rem}
.gc-spark{color:var(--gc-soft);font-size:.8rem}
.gc-spot-title{font-family:'Fraunces','Hanken Grotesk',serif;font-weight:600;font-size:clamp(2rem,4vw,3rem);color:#fff;margin:1.05rem 0 .35rem;letter-spacing:-.01em;line-height:1.05}
.gc-spot-tagline{color:var(--gc-soft);font-size:1.02rem;font-weight:600;margin-bottom:.95rem}
.gc-spot-desc{color:#B8B8C0;font-size:1rem;line-height:1.65}
.gc-spot-stats{display:flex;gap:1.7rem;flex-wrap:wrap;margin:1.5rem 0;padding:1.1rem 0;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08)}
.gc-stat{display:flex;flex-direction:column}
.gc-stat-n{font-family:'Fraunces',serif;font-weight:600;font-size:1.7rem;color:#fff;line-height:1}
.gc-stat-l{font-size:.73rem;color:#9090A0;margin-top:.38rem;max-width:12ch;line-height:1.3}
.gc-spot-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.6rem}
.gc-spot-tags span{font-size:.73rem;color:#C7CAD3;background:rgba(255,255,255,.04);border:1px solid #262830;border-radius:99px;padding:.34rem .75rem}
.gc-spot-ctas{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}
.gc-spot-cta{display:inline-flex;align-items:center;gap:.55rem;background:var(--gc);color:#04140e;font-weight:700;font-size:.95rem;text-decoration:none;border:1px solid transparent;border-radius:12px;padding:.8rem 1.45rem;transition:transform .2s,background .2s,border-color .2s,color .2s}
.gc-spot-cta:hover{transform:translateY(-2px);background:var(--gc-soft)}
.gc-spot-cta-ghost{background:transparent;border-color:rgba(63,163,122,.55);color:var(--gc-soft)}
.gc-spot-cta-ghost:hover{background:rgba(63,163,122,.12);border-color:var(--gc);color:#fff}
/* P&G is a filled blue badge — grayscale flattens it to a featureless disc, so keep it in color */
img.client-logo[alt="Procter & Gamble"]{filter:opacity(.85)}
img.client-logo[alt="Procter & Gamble"]:hover{filter:opacity(1)}
/* gallery */
.gc-stage{position:relative;border-radius:18px;padding:clamp(1rem,2.4vw,2rem);border:1px solid rgba(255,255,255,.06);
  background:radial-gradient(120% 120% at 50% -10%, rgba(63,163,122,.20), transparent 55%), linear-gradient(160deg,#12241c,#0b120e)}
.gc-stage::after{content:"";position:absolute;inset:0;border-radius:18px;pointer-events:none;background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.05) 1px, transparent 0);background-size:24px 24px;opacity:.5}
.gc-browser{position:relative;z-index:2;border-radius:12px;overflow:hidden;box-shadow:0 26px 60px -22px rgba(0,0,0,.75);border:1px solid rgba(255,255,255,.1);background:#0c100e}
.gc-bar{display:flex;align-items:center;gap:.4rem;padding:.55rem .8rem;background:linear-gradient(180deg,#1a2620,#141d18);border-bottom:1px solid rgba(255,255,255,.06)}
.gc-bar i{width:10px;height:10px;border-radius:50%;background:#3a463f}
.gc-bar i:nth-child(1){background:#e06c5a}.gc-bar i:nth-child(2){background:#e0b34e}.gc-bar i:nth-child(3){background:#5bbf8a}
.gc-url{margin-left:auto;font-size:.7rem;color:#7f8a83;font-family:ui-monospace,monospace;background:rgba(255,255,255,.04);padding:.15rem .6rem;border-radius:6px}
.gc-shots{position:relative}
.gc-shot{display:none;width:100%;vertical-align:top}
.gc-shot.is-active{display:block;animation:gcfade .4s ease}
@keyframes gcfade{from{opacity:0}to{opacity:1}}
.gc-caption{position:relative;z-index:2;text-align:center;margin-top:.9rem;font-size:.82rem;color:#9090A0}
.gc-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:.9rem}
.gc-thumb{border:1px solid #262830;border-radius:9px;overflow:hidden;background:#0c100e;cursor:pointer;padding:0;aspect-ratio:16/10;transition:border-color .2s,transform .2s}
.gc-thumb img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block;opacity:.65;transition:opacity .2s}
.gc-thumb:hover{transform:translateY(-2px)}.gc-thumb:hover img{opacity:1}
.gc-thumb.is-active{border-color:var(--gc)}.gc-thumb.is-active img{opacity:1}
@media(max-width:900px){.gc-spot-inner{grid-template-columns:1fr}}
@media(max-width:560px){.gc-spot-stats{gap:1.1rem}.gc-stat-n{font-size:1.45rem}.gc-thumbs{gap:.4rem}}

/* =================================================================
   BUILT & SHIPPED — solo-built product showcase (interactive)
   Scoped to #builds-showcase. Per-product accent vars (--p, --ps,
   --pg, --pl, --pm) are set inline on each .build-item; JS mirrors
   the active item's vars onto #builds-showcase for the stage.
   ================================================================= */

/* reveal-on-scroll (scoped class so nothing else is affected) */
.b-reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.b-reveal.in{opacity:1;transform:none}

/* section kicker */
.builds-kicker{display:inline-flex;align-items:center;gap:.55rem;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:#9aa0ab;border:1px solid #23252e;border-radius:99px;padding:.36rem .9rem;margin-bottom:1.15rem}
.bk-dot{width:7px;height:7px;border-radius:50%;background:#3FA37A;box-shadow:0 0 0 4px rgba(63,163,122,.16);animation:bsPulse 2.6s infinite}

/* root + grid (default accent = GrantCompass green) */
.builds{--p:#3FA37A;--ps:#8BD9B6;--pg:rgba(63,163,122,.34);--pl:rgba(63,163,122,.12);--pm:rgba(63,163,122,.46);--dwell:7000ms;max-width:1240px;margin:0 auto}
.builds-grid{display:grid;grid-template-columns:.92fr 1.18fr;gap:clamp(1.4rem,3vw,2.8rem);align-items:center}

/* ---- LEFT: product rail ---- */
.builds-rail{display:flex;flex-direction:column;gap:.8rem}
.build-item{position:relative;display:block;width:100%;text-align:left;cursor:pointer;
  border:1px solid #1d1f27;border-radius:16px;padding:1.05rem 1.2rem;overflow:hidden;
  background:linear-gradient(180deg,#0e0f15,#0b0c10);
  transition:border-color .4s,background .4s,transform .25s,box-shadow .4s;-webkit-tap-highlight-color:transparent}
.build-item:hover{border-color:var(--pm);transform:translateX(3px)}
.build-item:focus-visible{outline:2px solid var(--p);outline-offset:2px}
.build-item.is-active{border-color:var(--pm);
  background:linear-gradient(155deg,var(--pl),#0b0c10 62%);
  box-shadow:0 14px 40px -26px var(--pg)}

.bi-head{display:flex;align-items:center;gap:.6rem}
.bi-idx{font-family:'Fraunces','Hanken Grotesk',serif;font-size:.82rem;font-weight:600;color:#5a606b;transition:color .3s;flex:none}
.build-item.is-active .bi-idx{color:var(--p)}
.bi-dot{width:8px;height:8px;border-radius:50%;background:#3a3f49;transition:background .3s,box-shadow .3s;flex:none}
.build-item.is-active .bi-dot{background:var(--p);box-shadow:0 0 0 4px var(--pl)}
.bi-name{font-family:'Fraunces','Hanken Grotesk',serif;font-weight:600;font-size:1.16rem;color:#E5E7EB;letter-spacing:-.01em}
.build-item.is-active .bi-name{color:#fff}
.bi-host{margin-left:auto;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.68rem;color:#5f6671;letter-spacing:.02em}
.bi-chev{font-size:.72rem;color:#4d535d;margin-left:.7rem;transition:color .3s,transform .3s;flex:none}
.build-item.is-active .bi-chev{color:var(--p)}
.build-item:hover .bi-chev{transform:translateX(3px)}

/* expanding body via grid-rows 0fr -> 1fr */
.bi-body{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .5s cubic-bezier(.4,0,.2,1),opacity .45s}
.bi-bodyinner{overflow:hidden;min-height:0}
.build-item.is-active .bi-body{grid-template-rows:1fr;opacity:1}

.bi-tagline{display:block;color:var(--ps);font-weight:600;font-size:.92rem;margin:.85rem 0 .45rem}
.bi-desc{display:block;color:#A6AAB4;font-size:.875rem;line-height:1.62}
.bi-stats{display:flex;gap:1.5rem;flex-wrap:wrap;margin:1.05rem 0 .15rem}
.bi-stat{display:flex;flex-direction:column}
.bi-n{font-family:'Fraunces','Hanken Grotesk',serif;font-weight:600;font-size:1.5rem;color:#fff;line-height:1}
.bi-n.t{font-size:1.02rem;letter-spacing:-.01em}
.bi-n.live{color:var(--ps)}
.bi-l{font-size:.66rem;color:#8A8F99;margin-top:.42rem;max-width:13ch;line-height:1.25}
.bi-tags{display:flex;flex-wrap:wrap;gap:.42rem;margin:1.05rem 0}
.bi-tags span{font-size:.66rem;color:#C7CAD3;background:rgba(255,255,255,.035);border:1px solid #22242d;border-radius:99px;padding:.28rem .64rem}
.bi-ctas{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.15rem}
.bi-cta{display:inline-flex;align-items:center;gap:.45rem;background:var(--p);color:#0a0b0e;font-weight:700;font-size:.82rem;text-decoration:none;border-radius:10px;padding:.62rem 1.05rem;border:1px solid transparent;transition:transform .2s,filter .2s,background .2s}
.bi-cta:hover{transform:translateY(-2px);filter:brightness(1.08)}
.bi-cta.ghost{background:transparent;border-color:var(--pm);color:var(--ps)}
.bi-cta.ghost:hover{background:var(--pl);filter:none}

/* auto-advance progress bar */
.bi-progress{position:absolute;left:0;right:0;bottom:0;height:2px;overflow:hidden;background:transparent}
.bi-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--p),var(--ps))}
.build-item.is-active .bi-progress i{animation:biFill var(--dwell) linear forwards}
.builds.is-paused .build-item.is-active .bi-progress i{animation-play-state:paused}
@keyframes biFill{from{width:0}to{width:100%}}

/* ---- RIGHT: cinematic stage ---- */
.builds-stage{position:relative;align-self:center}
.bs-glow{position:absolute;left:50%;top:-7%;width:82%;height:62%;transform:translateX(-50%);
  background:radial-gradient(60% 70% at 50% 0%,var(--pg),transparent 70%);filter:blur(38px);opacity:.85;
  z-index:0;pointer-events:none;transition:background .55s}
.bs-frame{position:relative;z-index:1;border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.1);
  background:#0c0d11;box-shadow:0 34px 80px -34px var(--pg),0 18px 50px -30px rgba(0,0,0,.85);
  transition:box-shadow .55s,border-color .4s}
.bs-bar{display:flex;align-items:center;gap:.42rem;padding:.62rem .85rem;background:linear-gradient(180deg,#16181f,#0f1116);border-bottom:1px solid rgba(255,255,255,.06)}
.bs-bar i{width:10px;height:10px;border-radius:50%;background:#3a3f47;flex:none}
.bs-bar i:nth-child(1){background:#e06c5a}.bs-bar i:nth-child(2){background:#e0b34e}.bs-bar i:nth-child(3){background:#5bbf8a}
.bs-url{margin-left:.5rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.72rem;color:#8a8f99;background:rgba(255,255,255,.04);padding:.18rem .65rem;border-radius:6px;transition:color .3s}
.bs-live{margin-left:auto;display:inline-flex;align-items:center;gap:.45rem;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--ps);transition:color .3s}
.bs-live b{width:7px;height:7px;border-radius:50%;background:var(--p);transition:background .3s;animation:bsPulse 2.4s infinite}
@keyframes bsPulse{0%{box-shadow:0 0 0 0 var(--pg)}70%{box-shadow:0 0 0 8px transparent}100%{box-shadow:0 0 0 0 transparent}}
.bs-shots{position:relative;aspect-ratio:16/10;background:#0c0d11}
.bs-shot{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center;opacity:0;transform:scale(1.04);transition:opacity .6s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.bs-shot.is-active{opacity:1;transform:scale(1)}
.bs-caption{text-align:center;margin-top:1rem;font-size:.78rem;color:#9096a1;transition:color .3s;min-height:1.1em}
.bs-foot{text-align:center;margin-top:.55rem;font-size:.72rem;color:#5f6671}
.bs-foot span{color:#9aa0ab}
.bs-foot a{color:#c9ced6;text-decoration:underline;text-underline-offset:2px}
.bs-foot a:hover{color:#fff}

/* ---- responsive ---- */
@media(max-width:920px){
  .builds-grid{grid-template-columns:1fr}
  .builds-stage{order:-1;margin-bottom:.5rem}
  .build-item{padding:.95rem 1.05rem}
}
@media(max-width:560px){
  .bi-host{display:none}
  .bi-stats{gap:1.1rem}
  .bi-n{font-size:1.3rem}
  .bi-n.t{font-size:.95rem}
  .bi-desc{font-size:.85rem}
}

/* ---- reduced motion ---- */
@media(prefers-reduced-motion:reduce){
  .b-reveal{opacity:1;transform:none;transition:none}
  .bs-shot,.bi-body,.build-item,.bi-cta,.bs-frame,.bs-glow,.bi-chev{transition:none}
  .bi-progress i,.bs-live b,.bk-dot{animation:none!important}
  .bi-progress{display:none}
}

/* Inline links inside timeline descriptions (2026-10-19) */
.timeline-description .tl-link{color:var(--accent-2);text-decoration:underline;text-decoration-color:rgba(96,165,250,.45);text-underline-offset:3px}
.timeline-description .tl-link:hover{color:var(--accent-soft);text-decoration-color:currentColor}

/* Homepage builds header: link to the products hub (2026-10-29) */
.section-header p .builds-all{color:#6AA6FF;text-decoration:none;font-weight:600;white-space:nowrap;border-bottom:1px solid rgba(106,166,255,.35);transition:border-color .2s,color .2s}
.section-header p .builds-all:hover{color:#9CC4FF;border-bottom-color:#9CC4FF}
