:root {
  --bg: #0a0a0c;
  --bg-soft: #111114;
  --bg-panel: #0d0d10;
  --ink: #ece8df;
  --ink-mute: #8f8a80;
  --ink-faint: #4a463f;
  --rule: rgba(236, 232, 223, 0.08);
  --rule-strong: rgba(236, 232, 223, 0.16);
  --glow: #f5c47a;
  --glow-warm: #e8a04c;
  --warn: #d97757;
  --ok: #7aa97a;
  --serif: "Instrument Serif", "Iowan Old Style", Georgia, serif;
  --sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --mono: ui-monospace, "SF Mono", Menlo, monospace;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--bg); color: var(--ink); }
html { scroll-behavior: auto; } /* JS-controlled */

body {
  font-family: var(--sans);
  font-weight: 300;
  font-size: 17px;
  line-height: 1.6;
  letter-spacing: 0.005em;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

a { color: var(--ink); text-decoration: none; transition: color .25s ease; }
a:hover { color: var(--glow); }
::selection { background: var(--glow-warm); color: var(--bg); }

/* ---------- custom cursor (Framer-feel) ---------- */
.cursor-dot, .cursor-ring {
  position: fixed;
  top: 0; left: 0;
  pointer-events: none;
  z-index: 9999;
  will-change: transform;
}
.cursor-dot {
  width: 6px; height: 6px;
  background: var(--glow);
  border-radius: 50%;
  box-shadow: 0 0 12px var(--glow);
  mix-blend-mode: screen;
}
.cursor-ring {
  width: 36px; height: 36px;
  border: 1px solid rgba(245, 196, 122, 0.35);
  border-radius: 50%;
  transition: width .25s ease, height .25s ease, border-color .25s ease, background .25s ease;
}
.cursor-ring.is-hover {
  width: 64px; height: 64px;
  border-color: var(--glow);
  background: rgba(245, 196, 122, 0.06);
}
.cursor-ring.is-down {
  width: 26px; height: 26px;
  background: rgba(245, 196, 122, 0.15);
}
@media (pointer: coarse) {
  .cursor-dot, .cursor-ring { display: none; }
}
/* hide native cursor only on desktop where custom cursor is active */
@media (pointer: fine) {
  body, body * { cursor: none !important; }
}

/* ---------- floating ghost mascot ---------- */
/* Position, opacity, transform are all driven by JS so the ghost can emerge
   from the small Kiro logo as you scroll through chapter iii. */
.ghost {
  position: fixed;
  z-index: 8;
  width: 150px;
  height: 150px;
  top: 0;
  left: 0;
  pointer-events: none;
  opacity: 0;
  transform-origin: center;
  will-change: transform, opacity, left, top;
  filter: drop-shadow(0 20px 40px rgba(180, 140, 240, 0.45)) drop-shadow(0 0 60px rgba(180, 140, 240, 0.2));
}
.ghost img { width: 100%; height: 100%; object-fit: contain; display: block; }

@media (max-width: 1100px) {
  .ghost { display: none; }
}

/* nav brand globe icon */
.nav__brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.nav__globe {
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--glow);
  filter: drop-shadow(0 0 6px rgba(245, 196, 122, 0.4));
}
.nav__globe svg {
  animation: nav-globe-spin 14s linear infinite;
  transform-origin: center;
}
@keyframes nav-globe-spin {
  to { transform: rotate(360deg); }
}

/* ---------- scroll reveal mask ---------- */
[data-reveal] {
  clip-path: inset(0 0 105% 0);
  transition: clip-path 1.2s cubic-bezier(.22, 0.7, 0.16, 1);
}
[data-reveal].is-in { clip-path: inset(0 0 -5% 0); }

/* ---------- ambient orb field ---------- */
#orb-field {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}
/* ---------- 3D particle sphere (persistent across all chapters) ---------- */
#sphere {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
}
@media (max-width: 1100px) {
  #sphere { opacity: 0.45; }
}

/* ---------- nav ---------- */
.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 20;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 22px 36px;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: lowercase;
  backdrop-filter: blur(10px);
  background: linear-gradient(180deg, rgba(10,10,12,0.75) 0%, rgba(10,10,12,0) 100%);
}
.nav__brand { color: var(--ink); font-weight: 500; }
.nav__progress {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--ink-faint);
  font-family: var(--serif);
  font-style: italic;
  font-size: 14px;
}
.nav__bar {
  width: 220px;
  height: 1px;
  background: var(--rule);
  position: relative;
  overflow: hidden;
}
.nav__fill {
  position: absolute;
  inset: 0;
  width: 0%;
  background: linear-gradient(90deg, var(--glow-warm), var(--glow));
  transition: width 0.15s ease-out;
}
.nav__link {
  justify-self: end;
  color: var(--ink-mute);
}

/* ---------- horizontal story rail ---------- */
.story {
  position: relative;
  /* tall vertical scroll area drives horizontal motion in JS.
     9 chapters + 2 extra "pause" units for chapter v's vertical content scroll.
     Total scroll units = 8 transitions + 2 pause = 10 → +1 viewport = 11 × 100vh. */
  height: 1100vh;
  z-index: 1;
}
.story__sticky {
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
}
.story__rail {
  display: flex;
  height: 100vh;
  width: 900vw;             /* 9 scenes × 100vw */
  will-change: transform;
}

/* ---------- scenes (each fills viewport) ---------- */
.scene {
  flex: 0 0 100vw;
  width: 100vw;
  height: 100vh;
  display: flex;
  align-items: center;
  padding: 100px 8vw 80px;
  position: relative;
}

/* Chapter v override: scene anchors content to top and lets the inner wrapper
   exceed 100vh. The rail pauses on chapter v while inner translates upward.
   (Must come AFTER .scene to win the cascade.) */
.scene--day {
  align-items: flex-start !important;
  padding: 0 !important;
  overflow: hidden;
}
.scene--day .scene__inner {
  margin: 100px auto 80px !important;
  width: 100%;
  max-width: 1180px;
  padding: 0 8vw;
  height: auto;
  min-height: 130vh;
  will-change: transform;
  transition: none;
}
.scene__inner {
  width: 100%;
  max-width: 980px;
  margin: 0 auto;
}
.scene__inner--wide { max-width: 1180px; }

.scene__chapter {
  font-family: var(--serif);
  font-style: italic;
  font-size: 16px;
  letter-spacing: 0.03em;
  color: var(--glow);
  margin-bottom: 28px;
  opacity: 0.85;
}
.scene__title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(48px, 7.4vw, 108px);
  line-height: 1.04;
  letter-spacing: -0.02em;
  color: var(--ink);
  margin-bottom: 32px;
}
.scene__title--md { font-size: clamp(40px, 5.5vw, 76px); }
.scene__title--sm { font-size: clamp(32px, 4vw, 52px); margin-bottom: 24px; }
.scene__title em {
  font-style: italic;
  color: var(--glow);
  text-shadow: 0 0 60px rgba(245, 196, 122, 0.4);
}
.scene__sub, .scene__lede {
  font-size: 19px;
  color: var(--ink-mute);
  max-width: 560px;
  margin-bottom: 32px;
}
.scene__hint {
  margin-top: 56px;
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--ink-faint);
}
.scene__hint span {
  display: inline-block;
  animation: drift 2.4s ease-in-out infinite;
}
@keyframes drift {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(8px); }
}

/* ---------- chapter i — hero (bold display, 3D card stack) ---------- */
.scene--hero {
  padding: 100px 6vw 80px;
  overflow: hidden;
}
.hero-layout {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 4vw;
  align-items: center;
  width: 100%;
  height: 100%;
  max-width: 1480px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}
.hero-text { position: relative; }
.hero-meta {
  font-size: 12px;
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  margin-bottom: 32px;
  text-transform: uppercase;
}
.hero-meta em {
  font-family: var(--serif);
  font-style: italic;
  text-transform: none;
  font-size: 14px;
  letter-spacing: 0;
  color: var(--glow);
}
.hero-mega {
  font-family: var(--sans);
  font-weight: 900;
  font-size: clamp(64px, 11vw, 168px);
  line-height: 0.92;
  letter-spacing: -0.045em;
  color: var(--ink);
  margin-bottom: 36px;
  text-transform: lowercase;
}
.hero-mega span {
  display: block;
  opacity: 0;
  transform: translateY(28px);
  animation: fade-up-bold 1.1s cubic-bezier(.2,.7,.2,1) forwards;
}
.hero-mega span { white-space: nowrap; }
.hero-mega span:nth-child(1) { animation-delay: .25s; }
.hero-mega span:nth-child(2) { animation-delay: .38s; }
.hero-mega span:nth-child(3) { animation-delay: .51s; }
.hero-mega em {
  font-style: normal;
  color: var(--glow);
  text-shadow: 0 0 80px rgba(245, 196, 122, 0.55);
}
@keyframes fade-up-bold {
  to { opacity: 1; transform: translateY(0); }
}
.hero-sub {
  font-family: var(--sans);
  font-weight: 300;
  font-size: 18px;
  color: var(--ink-mute);
  max-width: 460px;
  opacity: 0;
  animation: fade-up-bold 1s .85s ease forwards;
}
.hero-sub em {
  font-family: var(--serif);
  font-style: italic;
  color: var(--glow);
  font-weight: 400;
  font-size: 20px;
  margin-left: 2px;
}

/* hero-stack removed — replaced by persistent 3D sphere canvas */

.hero-corner {
  position: absolute;
  bottom: 36px;
  left: 6vw;
  right: 6vw;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--ink-faint);
}
.hero-tag {
  display: inline-block;
  animation: drift 2.4s ease-in-out infinite;
}

/* ---------- chapter ii — before ---------- */
.scene--before .scene__inner { max-width: 880px; }
.leak {
  margin-top: 24px;
}
.leak__list {
  list-style: none;
  font-family: var(--mono);
  font-size: 15px;
  color: var(--ink-mute);
  padding: 0;
  margin-bottom: 36px;
  line-height: 2;
}
.leak__list li span { color: var(--ink-faint); margin-right: 10px; }
.leak__list em { color: var(--ink); font-style: italic; }
.leak__line {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(22px, 2.6vw, 30px);
  color: var(--ink-mute);
  margin-top: 16px;
}
.leak__line--turn { color: var(--glow); margin-top: 20px; }

/* ---------- chapter iii — cast (deeper cards) ---------- */
.cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
  margin-bottom: 24px;
}
.card {
  border: 1px solid var(--rule);
  padding: 26px 24px 24px;
  background: rgba(255, 255, 255, 0.015);
  transition: transform .4s ease, border-color .4s ease, background .4s ease;
  display: flex;
  flex-direction: column;
  border-radius: 12px;
}
.card:hover {
  transform: translateY(-4px);
  border-color: rgba(245, 196, 122, 0.28);
  background: rgba(245, 196, 122, 0.025);
}
.card__logo {
  width: 52px;
  height: 52px;
  border-radius: 12px;
  background: var(--bg-panel);
  border: 1px solid var(--rule);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--glow);
  margin-bottom: 18px;
  overflow: hidden;
}
.card__logo img { width: 100%; height: 100%; object-fit: contain; padding: 4px; }
.card__logo--kiro {
  background: linear-gradient(135deg, #2a1f3a 0%, #1a1428 100%);
  border-color: rgba(180, 140, 240, 0.35);
}
.card__logo--kiro img {
  animation: ghost-tilt 4.5s ease-in-out infinite;
  filter: drop-shadow(0 4px 10px rgba(180, 140, 240, 0.5));
}
@keyframes ghost-tilt {
  0%, 100% { transform: rotate(-4deg) translateY(0); }
  50%      { transform: rotate(4deg) translateY(-2px); }
}
.card__logo--cowork {
  background: #ece8df;
  border-color: rgba(236, 232, 223, 0.35);
}
.card__logo--cowork img {
  width: 80%; height: 80%;
  padding: 0;
  animation: cowork-pulse 3s ease-in-out infinite;
}
@keyframes cowork-pulse {
  0%, 100% { transform: scale(1) rotate(0); }
  50%      { transform: scale(1.05) rotate(2deg); }
}
.card__logo--obsidian {
  background: linear-gradient(135deg, #2a1f3a 0%, #1a1428 100%);
  border-color: rgba(150, 110, 230, 0.35);
}
.card__logo--obsidian img {
  width: 88%; height: 88%;
  padding: 0;
  animation: obsidian-float 4.5s ease-in-out infinite;
  filter: drop-shadow(0 4px 12px rgba(150, 110, 230, 0.55));
}
@keyframes obsidian-float {
  0%, 100% { transform: translateY(0) rotate(-2deg); }
  50%      { transform: translateY(-3px) rotate(2deg); }
}
.card__role {
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 8px;
}
.card__name {
  font-family: var(--serif);
  font-weight: 400;
  font-size: 32px;
  letter-spacing: -0.01em;
  margin-bottom: 4px;
  line-height: 1;
}
.card__tag {
  font-family: var(--serif);
  font-style: italic;
  color: var(--glow);
  font-size: 16px;
  margin-bottom: 18px;
  opacity: 0.9;
}
.card__what, .card__why {
  color: var(--ink-mute);
  font-size: 14px;
  line-height: 1.55;
  margin-bottom: 12px;
}
.card__what strong, .card__why strong {
  color: var(--ink);
  font-weight: 500;
  display: block;
  margin-bottom: 2px;
  font-size: 13.5px;
}
.card__what em, .card__why em { font-style: italic; color: var(--glow); }
.card .cta { margin-top: auto; align-self: flex-start; }
.alt-link {
  display: inline-block;
  margin-top: 10px;
  font-size: 12px;
  color: var(--ink-faint);
  letter-spacing: 0.02em;
  border-bottom: 1px dashed var(--ink-faint);
  padding-bottom: 1px;
  transition: color .25s ease, border-color .25s ease;
  align-self: flex-start;
}
.alt-link:hover {
  color: var(--glow);
  border-color: var(--glow);
}

/* cast intro lede */
.cast-lede {
  font-size: 15.5px;
  color: var(--ink-mute);
  max-width: 640px;
  margin-top: -36px;
  margin-bottom: 36px;
  line-height: 1.55;
}
.cast-lede strong { color: var(--glow); font-weight: 500; }

/* ---------- CTA pill (reusable) ---------- */
.cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  background: rgba(245, 196, 122, 0.08);
  border: 1px solid rgba(245, 196, 122, 0.32);
  color: var(--glow);
  border-radius: 999px;
  font-size: 13px;
  font-family: var(--sans);
  font-weight: 500;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: all .25s ease;
  cursor: pointer;
}
.cta:hover {
  background: var(--glow);
  color: var(--bg);
  border-color: var(--glow);
  transform: translateY(-1px);
}
.cta__arrow { transition: transform .25s ease; }
.cta:hover .cta__arrow { transform: translateX(3px); }
.cta--inline { margin-top: 6px; }
.cta--ghost {
  background: transparent;
  border-color: rgba(236, 232, 223, 0.2);
  color: var(--ink-mute);
}
.cta--ghost:hover {
  background: rgba(236, 232, 223, 0.06);
  color: var(--ink);
  border-color: rgba(236, 232, 223, 0.5);
}
.step__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: auto;
}

/* ---------- chapter iv — why this works ---------- */
.scene--why .scene__title { margin-bottom: 50px; }
.why-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 36px 56px;
  margin-bottom: 36px;
}
.why-cell {
  position: relative;
  padding-top: 4px;
}
.why-cell__num {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--glow);
  margin-bottom: 12px;
  opacity: 0.8;
}
.why-cell__hook {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(24px, 2.4vw, 32px);
  letter-spacing: -0.01em;
  color: var(--ink);
  margin-bottom: 12px;
  line-height: 1.15;
}
.why-cell__hook em { color: var(--glow); font-style: italic; }
.why-cell__body {
  font-size: 15.5px;
  line-height: 1.55;
  color: var(--ink-mute);
  max-width: 460px;
}
.why-cell__body em { color: var(--ink); font-style: italic; }
.why-close {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(20px, 2.1vw, 26px);
  color: var(--ink-mute);
  text-align: center;
  padding-top: 24px;
  border-top: 1px solid var(--rule);
}
.why-close em { color: var(--glow); }

/* ---------- chapter iv — a day + dashboard ---------- */
.day {
  display: grid;
  grid-template-columns: minmax(240px, 300px) 1fr;
  gap: 44px;
  align-items: center;
  height: 100%;
}

/* ---------- chapter v v2 — vertical stack, full-width dashboard ---------- */
.dayv2 {
  display: flex;
  flex-direction: column;
  gap: 18px;
  height: 100%;
  max-height: 100%;
}
.dayv2__head {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.dayv2__head .scene__chapter { margin-bottom: 4px; }
.dayv2__head .scene__title { margin-bottom: 4px; }
.dayv2-steps {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 6px;
  padding: 0;
}
.dayv2-steps li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 13px;
  color: var(--ink-mute);
  line-height: 1.45;
  padding: 8px 0;
  border-top: 1px solid var(--rule);
}
.dayv2-steps strong { color: var(--ink); font-weight: 500; margin-right: 4px; }
.dayv2-steps em { color: var(--glow); font-style: italic; }
.dayv2-steps .step__num {
  font-family: var(--serif);
  font-style: italic;
  color: var(--glow);
  font-size: 15px;
  flex-shrink: 0;
}
.dayv2 .personas { align-self: flex-start; }
.dayv2 .dashboard {
  width: 100%;
  flex: 1;
  min-height: 0;
  max-height: none;
}
.day-caption {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(14px, 1.4vw, 18px);
  color: var(--ink-mute);
  text-align: center;
  margin-top: 4px;
  max-width: 760px;
  align-self: center;
  line-height: 1.5;
}
.day-caption em {
  color: var(--glow);
  font-style: italic;
}
.day-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  align-self: center;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  border-bottom: 1px dashed rgba(245, 196, 122, 0.35);
  padding-bottom: 2px;
  transition: color .25s ease, border-color .25s ease, transform .25s ease;
  margin-top: 4px;
}
.day-link:hover {
  color: var(--glow);
  border-color: var(--glow);
}
.day-link span { transition: transform .25s ease; }
.day-link:hover span { transform: translateX(4px); }

/* ────────────── side-panel variants ────────────── */

/* maya — wall plan */
.wall-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}
.wall-list li {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 12px;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px dashed var(--d-rule);
}
.wall-list li:last-child { border-bottom: 0; }
.wall-num {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  color: var(--d-mute);
  letter-spacing: 0.06em;
}
.wall-meta { display: flex; flex-direction: column; gap: 1px; }
.wall-meta strong {
  font-family: var(--serif);
  font-style: italic;
  font-size: 13px;
  font-weight: 400;
  color: var(--d-ink);
}
.wall-meta em {
  font-style: normal;
  font-family: var(--mono);
  font-size: 10px;
  color: var(--d-mute);
  letter-spacing: 0.06em;
  text-transform: lowercase;
}

/* jules — family + work split */
.day-split {
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow: hidden;
  flex: 1;
  min-height: 0;
}
.split-section {
  background: rgba(0,0,0,0.02);
  border-radius: 6px;
  padding: 10px 12px;
}
.split-label {
  display: block;
  font-size: 9.5px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--d-mute);
  margin-bottom: 6px;
}
.split-section ul { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.split-section li {
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 10px;
  font-size: 12px;
  color: var(--d-ink);
  align-items: baseline;
}
.split-time {
  font-family: var(--mono);
  color: var(--d-mute);
  font-size: 10.5px;
}
.split-section strong { font-weight: 500; }

/* aiko — intention + habits */
.intention {
  padding: 14px 4px 14px 0;
  border-bottom: 1px dashed var(--d-rule);
  margin-bottom: 12px;
}
.intention-label {
  display: block;
  font-size: 9.5px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--d-mute);
  margin-bottom: 8px;
  font-weight: 600;
}
.intention-quote {
  font-family: var(--serif);
  font-style: italic;
  font-size: 15px;
  color: var(--d-ink);
  line-height: 1.35;
}
.habits-label {
  display: block;
  font-size: 9.5px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--d-mute);
  margin-bottom: 8px;
  font-weight: 600;
}
.habit-list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.hb {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12.5px;
  color: var(--d-ink);
}
.hb-box {
  font-family: var(--mono);
  color: var(--d-faint);
  font-size: 14px;
  width: 16px;
}
.hb--done .hb-box { color: #6fb98f; }
.hb--done { color: var(--d-mute); text-decoration: line-through; text-decoration-color: var(--d-faint); text-decoration-thickness: 1px; }

/* kai — trip pins */
.pin-list { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.pin-list li {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 10px;
  align-items: center;
  padding: 9px 0;
  border-bottom: 1px dashed var(--d-rule);
}
.pin-list li:last-child { border-bottom: 0; }
.pin-icon { font-size: 18px; line-height: 1; text-align: center; }
.pin-meta { display: flex; flex-direction: column; gap: 1px; }
.pin-meta strong {
  font-size: 13px;
  font-weight: 600;
  color: var(--d-ink);
  letter-spacing: -0.005em;
}
.pin-meta em {
  font-style: normal;
  font-family: var(--mono);
  font-size: 10px;
  color: var(--d-mute);
  letter-spacing: 0.04em;
}

/* persona chip row: handle 6 chips comfortably */
.personas { flex-wrap: wrap; }
.day__copy { padding-right: 0; }
.day__steps {
  list-style: none;
  margin-top: 8px;
}
.day__steps li {
  display: flex;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid var(--rule);
  color: var(--ink-mute);
  font-size: 15px;
  line-height: 1.5;
}
.day__steps li:last-child { border-bottom: 0; }
.day__steps strong { color: var(--ink); font-weight: 500; }
.day__steps em { color: var(--glow); font-style: italic; }
.step__num {
  font-family: var(--serif);
  font-style: italic;
  color: var(--glow);
  font-size: 18px;
  flex-shrink: 0;
  width: 24px;
}

/* ---------- persona switcher (above the dashboard) ---------- */
.personas {
  display: flex;
  gap: 6px;
  margin-bottom: 12px;
  padding: 4px;
  background: rgba(255,255,255,0.02);
  border: 1px solid var(--rule);
  border-radius: 999px;
  width: fit-content;
}
.persona {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
  background: transparent;
  border: 0;
  border-radius: 999px;
  color: var(--ink-mute);
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: color .25s ease, background .25s ease;
  text-transform: lowercase;
}
.persona__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--ink-faint);
  transition: background .25s ease, box-shadow .25s ease;
}
.persona:hover { color: var(--ink); }
.persona[data-persona="jay"]   .persona__dot { background: #f5a96d; }
.persona[data-persona="sam"]   .persona__dot { background: #6ad4a8; }
.persona[data-persona="jules"] .persona__dot { background: #d9a3e0; }
.persona.is-active {
  background: rgba(245,196,122,0.10);
  color: var(--ink);
}
.persona.is-active .persona__dot {
  box-shadow: 0 0 10px currentColor;
}

/* ---------- dashboard — light/pastel product UI inside the dark site ---------- */
.dashboard {
  --d-bg: #f6f3ec;
  --d-card: #ffffff;
  --d-ink: #2a2622;
  --d-mute: #8c857c;
  --d-faint: #c9c4b8;
  --d-rule: #ece8df;

  background: var(--d-bg);
  color: var(--d-ink);
  border-radius: 18px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  font-family: var(--sans);
  font-size: 13px;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.55),
    0 0 0 1px rgba(245, 196, 122, 0.10),
    0 0 120px -20px rgba(245, 196, 122, 0.18);
  max-height: 100%;
  overflow: hidden;
}

.dash__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 4px 6px 8px;
  border-bottom: 1px solid var(--d-rule);
}
.dash__eyebrow {
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--d-mute);
  margin-bottom: 4px;
}
.dash__title {
  font-family: var(--sans);
  font-weight: 600;
  font-size: 17px;
  color: var(--d-ink);
  margin-bottom: 2px;
  letter-spacing: -0.01em;
}
.dash__sub {
  font-size: 12.5px;
  color: var(--d-mute);
}
.avatar {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: linear-gradient(135deg, #f5a96d 0%, #e87a4a 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;
  box-shadow: 0 4px 14px rgba(232, 122, 74, 0.35);
}

.dash__grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1.1fr;
  grid-template-rows: auto auto auto;
  gap: 12px;
  flex: 1;
  min-height: 0;
}

/* stat cards */
.stat {
  border-radius: 14px;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: relative;
  overflow: hidden;
  min-height: 0;
}
.stat::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at top right, rgba(255,255,255,0.4), transparent 60%);
  pointer-events: none;
}
.stat--peach {
  background: linear-gradient(135deg, #fde0c8 0%, #f8c79b 50%, #f5a96d 100%);
  color: #5a2a14;
}
.stat--blue {
  background: linear-gradient(135deg, #d8e1f5 0%, #b8c8ec 50%, #9aafe2 100%);
  color: #1f2a4d;
}
.stat__label {
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  opacity: 0.7;
  font-weight: 500;
}
.stat__num {
  font-family: var(--sans);
  font-weight: 800;
  font-size: 38px;
  line-height: 1;
  letter-spacing: -0.03em;
  margin-top: 4px;
}
.stat__num small { font-size: 18px; font-weight: 600; opacity: 0.7; margin-left: 2px; }
.stat__sub { font-size: 11.5px; opacity: 0.75; margin-top: 2px; }

/* right sidebar — today's focus */
.dash__side {
  grid-row: 1 / span 3;
  grid-column: 3;
  background: var(--d-card);
  border-radius: 14px;
  padding: 14px 14px 8px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  border: 1px solid var(--d-rule);
}
.side__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--d-mute);
  padding-bottom: 10px;
  border-bottom: 1px solid var(--d-rule);
}
.side__head span { color: var(--d-faint); font-size: 14px; }
.side__list { list-style: none; overflow: hidden; }
.side__list li {
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px dashed var(--d-rule);
}
.side__list li:last-child { border-bottom: 0; }
.side__time {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--d-mute);
  padding-top: 1px;
}
.side__meta strong {
  display: block;
  font-weight: 500;
  font-size: 12.5px;
  color: var(--d-ink);
  letter-spacing: -0.005em;
}
.side__meta em {
  font-style: normal;
  font-size: 10.5px;
  color: var(--d-mute);
}

/* focus chart */
.focus {
  grid-column: 1 / span 2;
  background: var(--d-card);
  border: 1px solid var(--d-rule);
  border-radius: 14px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-height: 0;
}
.focus__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.focus__head h4 {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--d-ink);
}
.focus__range {
  font-size: 10px;
  color: var(--d-mute);
  letter-spacing: 0.06em;
}
.focus__chart {
  width: 100%;
  height: 80px;
  display: block;
}
.focus__chart path[fill="none"] {
  stroke-dasharray: 1200;
  stroke-dashoffset: 1200;
  transition: stroke-dashoffset 1.8s cubic-bezier(.2,.7,.2,1);
}
.focus__chart.is-drawn path[fill="none"] { stroke-dashoffset: 0; }
.focus__chart path[fill^="url"] {
  opacity: 0;
  transition: opacity 1.4s ease 0.6s;
}
.focus__chart.is-drawn path[fill^="url"] { opacity: 0.35; }
.focus__foot {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 10.5px;
  color: var(--d-mute);
  border-top: 1px solid var(--d-rule);
  padding-top: 8px;
  margin-top: 2px;
}
.focus__foot div { display: flex; align-items: center; gap: 6px; }
.focus__avg { margin-left: auto; }
.focus__avg strong { color: var(--d-ink); font-weight: 600; }
.dot-line {
  display: inline-block;
  width: 14px; height: 2px;
  border-radius: 1px;
}
.dot-line--peach { background: #e87a4a; }
.dot-line--blue { background: #6b8ade; }

/* what you're building (progress) */
.building {
  grid-column: 1 / span 2;
  background: var(--d-card);
  border: 1px solid var(--d-rule);
  border-radius: 14px;
  padding: 14px 16px;
}
.building__title {
  font-size: 12px;
  font-weight: 600;
  margin-bottom: 12px;
  color: var(--d-ink);
}
.building__list { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.building__row {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  margin-bottom: 5px;
  color: var(--d-ink);
}
.building__row em {
  font-style: normal;
  color: var(--d-mute);
  font-size: 11px;
}
.building__row em.warn { color: var(--warn); }
.bar {
  display: block;
  height: 4px;
  background: var(--d-rule);
  border-radius: 2px;
  overflow: hidden;
}
.bar > span {
  display: block;
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, #f5a96d, #e87a4a);
  border-radius: 2px;
  transition: width 1.4s cubic-bezier(.2,.7,.2,1);
}

/* quiet reminder */
.quiet {
  grid-column: 1 / -1;
  background: linear-gradient(120deg, #fff 0%, #faf6ed 100%);
  border: 1px solid var(--d-rule);
  border-radius: 14px;
  padding: 14px 18px;
}
.quiet__label {
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--glow-warm);
  margin-bottom: 10px;
  font-weight: 600;
}
.quiet__quote {
  font-family: var(--serif);
  font-style: italic;
  font-size: 16px;
  line-height: 1.45;
  color: var(--d-ink);
  min-height: 46px;
}
.quiet__quote::after {
  content: '▍';
  color: var(--glow-warm);
  margin-left: 2px;
  animation: caret 1s steps(2) infinite;
}
.quiet__quote.is-done::after { content: ''; }
@keyframes caret { 50% { opacity: 0; } }
.quiet__actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}
.chip {
  background: var(--d-ink);
  color: #fff;
  border: 0;
  padding: 7px 14px;
  border-radius: 999px;
  font-size: 11.5px;
  font-family: var(--sans);
  font-weight: 500;
  cursor: pointer;
  letter-spacing: 0.01em;
  transition: transform .2s ease, background .2s ease;
}
.chip:hover { transform: translateY(-1px); }
.chip--ghost {
  background: transparent;
  color: var(--d-mute);
  border: 1px solid var(--d-rule);
}
.chip--ghost:hover { color: var(--d-ink); border-color: var(--d-mute); }

/* ───────── persona theme: SAM (engineer — dark slate + cyan/green) ───────── */
.dashboard[data-theme="sam"] {
  --d-bg:    #0d1117;
  --d-card:  #161b22;
  --d-ink:   #d4e1d8;
  --d-mute:  #7d8a85;
  --d-faint: #4a5853;
  --d-rule:  #232a32;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.7),
    0 0 0 1px rgba(106, 212, 168, 0.12),
    0 0 120px -20px rgba(106, 212, 168, 0.18);
}
.dashboard[data-theme="sam"] .avatar {
  background: linear-gradient(135deg, #6ad4a8 0%, #2a9d6a 100%);
  box-shadow: 0 4px 14px rgba(42, 157, 106, 0.45);
}
.dashboard[data-theme="sam"] .stat--peach {
  background: linear-gradient(135deg, #1a2f24 0%, #1a4030 60%, #2a6048 100%);
  color: #c8f0d8;
}
.dashboard[data-theme="sam"] .stat--blue {
  background: linear-gradient(135deg, #1a2030 0%, #1f2940 60%, #2a3a5c 100%);
  color: #c8d8f0;
}
.dashboard[data-theme="sam"] .quiet {
  background: linear-gradient(120deg, #161b22 0%, #1a2228 100%);
}
.dashboard[data-theme="sam"] .quiet__label { color: #6ad4a8; }
.dashboard[data-theme="sam"] .focus__chart path[stroke="#e87a4a"] { stroke: #6ad4a8; }
.dashboard[data-theme="sam"] .focus__chart path[stroke="#6b8ade"] { stroke: #5fb4ff; }
.dashboard[data-theme="sam"] .focus__chart path[fill^="url"] { fill: url(#focusGradSam); }
.dashboard[data-theme="sam"] .focus__chart line { stroke: #1f2a32; }
.dashboard[data-theme="sam"] .dot-line--peach { background: #6ad4a8; }
.dashboard[data-theme="sam"] .dot-line--blue  { background: #5fb4ff; }
.dashboard[data-theme="sam"] .bar > span {
  background: linear-gradient(90deg, #6ad4a8, #2a9d6a);
}
.dashboard[data-theme="sam"] .chip { background: #c8f0d8; color: #0d1117; }

/* ───────── persona theme: JULES (founder+parent — warm gradient) ───────── */
.dashboard[data-theme="jules"] {
  --d-bg:    #fbeef3;
  --d-card:  #ffffff;
  --d-ink:   #3a2640;
  --d-mute:  #8a7090;
  --d-faint: #c8b8ce;
  --d-rule:  #f0e0e8;
  background: linear-gradient(135deg, #ffe4ec 0%, #f5d8ec 50%, #e8d0f0 100%);
  box-shadow:
    0 30px 90px rgba(0,0,0,0.55),
    0 0 0 1px rgba(217, 163, 224, 0.18),
    0 0 120px -20px rgba(217, 163, 224, 0.28);
}
.dashboard[data-theme="jules"] .avatar {
  background: linear-gradient(135deg, #f5a3c8 0%, #d9a3e0 100%);
  box-shadow: 0 4px 14px rgba(217, 163, 224, 0.45);
}
.dashboard[data-theme="jules"] .stat--peach {
  background: linear-gradient(135deg, #ffe0e8 0%, #ffc3d3 50%, #f5a3c8 100%);
  color: #4a1f30;
}
.dashboard[data-theme="jules"] .stat--blue {
  background: linear-gradient(135deg, #f0e0f5 0%, #e0c8ec 50%, #c8a3d8 100%);
  color: #3a1f44;
}
.dashboard[data-theme="jules"] .quiet {
  background: linear-gradient(120deg, #fff 0%, #fdeef5 100%);
}
.dashboard[data-theme="jules"] .quiet__label { color: #c97aa8; }
.dashboard[data-theme="jules"] .focus__chart path[stroke="#e87a4a"] { stroke: #d9678c; }
.dashboard[data-theme="jules"] .focus__chart path[stroke="#6b8ade"] { stroke: #a878c5; }
.dashboard[data-theme="jules"] .dot-line--peach { background: #d9678c; }
.dashboard[data-theme="jules"] .dot-line--blue  { background: #a878c5; }
.dashboard[data-theme="jules"] .bar > span {
  background: linear-gradient(90deg, #f5a3c8, #d9678c);
}
.dashboard[data-theme="jules"] .chip { background: #4a1f44; color: #fff; }

/* ───────── persona theme: MAYA (minimal architect / designer) ───────── */
.dashboard[data-theme="maya"] {
  --d-bg:    #ffffff;
  --d-card:  #fafaf7;
  --d-ink:   #1a1a1a;
  --d-mute:  #707070;
  --d-faint: #bcbcbc;
  --d-rule:  #ececec;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.55),
    0 0 0 1px rgba(255,255,255,0.08);
}
.dashboard[data-theme="maya"] .avatar {
  background: #1a1a1a;
  color: #fff;
  box-shadow: 0 4px 14px rgba(0,0,0,0.18);
}
.dashboard[data-theme="maya"] .stat--peach {
  background: #f4f3ef;
  color: #1a1a1a;
}
.dashboard[data-theme="maya"] .stat--blue {
  background: #1a1a1a;
  color: #f4f3ef;
}
.dashboard[data-theme="maya"] .stat--blue .stat__label,
.dashboard[data-theme="maya"] .stat--blue .stat__sub { opacity: 0.7; }
.dashboard[data-theme="maya"] .quiet {
  background: #fafaf7;
}
.dashboard[data-theme="maya"] .quiet__label { color: #1a1a1a; }
.dashboard[data-theme="maya"] .focus__chart path[stroke="#e87a4a"] { stroke: #1a1a1a; }
.dashboard[data-theme="maya"] .focus__chart path[stroke="#6b8ade"] { stroke: #707070; }
.dashboard[data-theme="maya"] .dot-line--peach { background: #1a1a1a; }
.dashboard[data-theme="maya"] .dot-line--blue  { background: #707070; }
.dashboard[data-theme="maya"] .bar > span {
  background: #1a1a1a;
}
.dashboard[data-theme="maya"] .chip { background: #1a1a1a; color: #fff; }

/* ───────── persona theme: DRE (terminal — true black + neon green) ───────── */
.dashboard[data-theme="dre"] {
  --d-bg:    #000000;
  --d-card:  #0a0d0a;
  --d-ink:   #d2f5d6;
  --d-mute:  #5e8e62;
  --d-faint: #2a4a2e;
  --d-rule:  #14201a;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.85),
    0 0 0 1px rgba(60, 220, 130, 0.18),
    0 0 120px -20px rgba(60, 220, 130, 0.25);
}
.dashboard[data-theme="dre"] .avatar {
  background: linear-gradient(135deg, #3cdc82 0%, #1ea850 100%);
  color: #000;
  box-shadow: 0 4px 14px rgba(60, 220, 130, 0.45);
}
.dashboard[data-theme="dre"] .stat--peach {
  background: linear-gradient(135deg, #122c1a 0%, #1e4830 60%, #2e7050 100%);
  color: #c8f5d8;
}
.dashboard[data-theme="dre"] .stat--blue {
  background: linear-gradient(135deg, #0e1a20 0%, #102838 60%, #184260 100%);
  color: #c8e5f5;
}
.dashboard[data-theme="dre"] .quiet {
  background: linear-gradient(120deg, #050805 0%, #0a120a 100%);
}
.dashboard[data-theme="dre"] .quiet__label { color: #3cdc82; }
.dashboard[data-theme="dre"] .focus__chart path[stroke="#e87a4a"] { stroke: #3cdc82; }
.dashboard[data-theme="dre"] .focus__chart path[stroke="#6b8ade"] { stroke: #5fb4ff; }
.dashboard[data-theme="dre"] .focus__chart line { stroke: #14201a; }
.dashboard[data-theme="dre"] .dot-line--peach { background: #3cdc82; }
.dashboard[data-theme="dre"] .dot-line--blue  { background: #5fb4ff; }
.dashboard[data-theme="dre"] .bar > span {
  background: linear-gradient(90deg, #3cdc82, #1ea850);
}
.dashboard[data-theme="dre"] .chip { background: #3cdc82; color: #000; }

/* ───────── persona theme: AIKO (zen — moss + terracotta + cream) ───────── */
.dashboard[data-theme="aiko"] {
  --d-bg:    #f3eee2;
  --d-card:  #fbf8ee;
  --d-ink:   #2e2820;
  --d-mute:  #8a7e6a;
  --d-faint: #c5b9a0;
  --d-rule:  #e5ddc9;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.55),
    0 0 0 1px rgba(180, 160, 90, 0.18),
    0 0 120px -20px rgba(180, 160, 90, 0.22);
}
.dashboard[data-theme="aiko"] .avatar {
  background: linear-gradient(135deg, #b87a5a 0%, #8a4a2e 100%);
  box-shadow: 0 4px 14px rgba(184, 122, 90, 0.45);
}
.dashboard[data-theme="aiko"] .stat--peach {
  background: linear-gradient(135deg, #f0e8d4 0%, #e0c8a0 60%, #c89a6c 100%);
  color: #4a2e1a;
}
.dashboard[data-theme="aiko"] .stat--blue {
  background: linear-gradient(135deg, #d8e2cc 0%, #b0c498 60%, #7a9268 100%);
  color: #2a3a1f;
}
.dashboard[data-theme="aiko"] .quiet {
  background: linear-gradient(120deg, #fbf8ee 0%, #f3edd8 100%);
}
.dashboard[data-theme="aiko"] .quiet__label { color: #8a4a2e; }
.dashboard[data-theme="aiko"] .focus__chart path[stroke="#e87a4a"] { stroke: #8a4a2e; }
.dashboard[data-theme="aiko"] .focus__chart path[stroke="#6b8ade"] { stroke: #7a9268; }
.dashboard[data-theme="aiko"] .dot-line--peach { background: #8a4a2e; }
.dashboard[data-theme="aiko"] .dot-line--blue  { background: #7a9268; }
.dashboard[data-theme="aiko"] .bar > span {
  background: linear-gradient(90deg, #b87a5a, #8a4a2e);
}
.dashboard[data-theme="aiko"] .chip { background: #2e2820; color: #fbf8ee; }

/* persona chip dot colors */
.persona[data-persona="maya"] .persona__dot { background: #1a1a1a; }
.persona[data-persona="dre"]  .persona__dot { background: #3cdc82; }
.persona[data-persona="aiko"] .persona__dot { background: #8a4a2e; }
.persona[data-persona="kai"]  .persona__dot { background: #4ab8d8; }
.persona[data-persona="rhi"]  .persona__dot { background: #ff6b8a; }

/* ───────── persona theme: RHI (fitness coach — dawn cream + coral) ───────── */
.dashboard[data-theme="rhi"] {
  --d-bg:    #fbf3ec;
  --d-card:  #ffffff;
  --d-ink:   #2a1820;
  --d-mute:  #8a6a78;
  --d-faint: #c8aab8;
  --d-rule:  #f0e0e8;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.55),
    0 0 0 1px rgba(255, 107, 138, 0.15),
    0 0 120px -20px rgba(255, 107, 138, 0.22);
}
.dashboard[data-theme="rhi"] .avatar {
  background: linear-gradient(135deg, #ff8a9c 0%, #d04a6a 100%);
  box-shadow: 0 4px 14px rgba(255, 107, 138, 0.45);
}
.dashboard[data-theme="rhi"] .stat--peach {
  background: linear-gradient(135deg, #ffd8d0 0%, #ff9a8a 60%, #ff6b6b 100%);
  color: #4a1a1a;
}
.dashboard[data-theme="rhi"] .stat--blue {
  background: linear-gradient(135deg, #f0e4d4 0%, #d8b890 60%, #b88a50 100%);
  color: #3a2618;
}
.dashboard[data-theme="rhi"] .quiet {
  background: linear-gradient(120deg, #fff 0%, #fdeae8 100%);
}
.dashboard[data-theme="rhi"] .quiet__label { color: #d04a6a; }
.dashboard[data-theme="rhi"] .bar > span {
  background: linear-gradient(90deg, #ff8a9c, #d04a6a);
}
.dashboard[data-theme="rhi"] .chip { background: #2a1820; color: #fff; }

/* rhi — weekly training calendar (middle panel) */
.week-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 12px;
}
.week-head h4 { font-size: 12px; font-weight: 600; color: var(--d-ink); }
.week-volume { font-size: 11px; color: var(--d-mute); font-family: var(--mono); }
.week-volume strong { color: var(--d-ink); font-weight: 700; }
.week-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 6px;
  flex: 1;
  align-items: stretch;
  min-height: 0;
}
.wkday {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 8px 4px;
  border-radius: 8px;
  background: rgba(0,0,0,0.02);
  border: 1px solid var(--d-rule);
  transition: background .25s ease, border-color .25s ease;
}
.wkday-letter {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  color: var(--d-mute);
  letter-spacing: 0.06em;
}
.wkday-bar {
  flex: 1;
  width: 12px;
  background: rgba(0,0,0,0.04);
  border-radius: 6px;
  position: relative;
  overflow: hidden;
  min-height: 30px;
}
.wkday-bar > span {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  background: linear-gradient(180deg, #ff8a9c, #d04a6a);
  border-radius: 6px;
  transition: height 0.9s cubic-bezier(.2,.7,.2,1);
}
.wkday-tag {
  font-size: 9.5px;
  letter-spacing: 0.04em;
  color: var(--d-mute);
  text-transform: lowercase;
}
.wkday--done { background: rgba(255, 107, 138, 0.06); }
.wkday--today {
  background: rgba(255, 107, 138, 0.10);
  border-color: rgba(255, 107, 138, 0.45);
  box-shadow: 0 0 0 1px rgba(255, 107, 138, 0.25);
}
.wkday--today .wkday-letter { color: #d04a6a; font-weight: 700; }
.wkday--planned .wkday-bar > span { background: rgba(0,0,0,0.10); }
.wkday--planned .wkday-tag { opacity: 0.65; }

/* rhi — clients tracker list (replaces "what you're building") */
.clients-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 14px;
}
.clients-eta {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #d04a6a;
  background: rgba(255, 107, 138, 0.10);
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 600;
}
.client-list { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.client-row {
  display: grid;
  grid-template-columns: 36px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 8px 10px;
  background: var(--d-card);
  border: 1px solid var(--d-rule);
  border-radius: 8px;
  transition: border-color .25s ease, transform .25s ease;
}
.client-row:hover {
  border-color: rgba(255, 107, 138, 0.4);
  transform: translateX(2px);
}
.client-avatar {
  width: 36px; height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.client-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.client-meta strong {
  font-size: 13px;
  font-weight: 600;
  color: var(--d-ink);
}
.client-meta em {
  font-style: normal;
  font-size: 11px;
  color: var(--d-mute);
}
.client-progress {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 200px;
}
.client-bar {
  flex: 1;
  height: 4px;
  background: var(--d-rule);
  border-radius: 2px;
  overflow: hidden;
}
.client-bar > span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #ff8a9c, #d04a6a);
  border-radius: 2px;
}
.client-streak {
  font-family: var(--mono);
  font-size: 10px;
  color: var(--d-mute);
  letter-spacing: 0.04em;
  white-space: nowrap;
}

/* ───────── persona theme: KAI (traveler — ocean cyan + paper) ───────── */
.dashboard[data-theme="kai"] {
  --d-bg:    #f0f4f7;
  --d-card:  #ffffff;
  --d-ink:   #1a2e3a;
  --d-mute:  #6b8295;
  --d-faint: #b8c4cd;
  --d-rule:  #dde6ec;
  box-shadow:
    0 30px 90px rgba(0,0,0,0.55),
    0 0 0 1px rgba(74, 184, 216, 0.15),
    0 0 120px -20px rgba(74, 184, 216, 0.22);
}
.dashboard[data-theme="kai"] .avatar {
  background: linear-gradient(135deg, #4ab8d8 0%, #2a7898 100%);
  box-shadow: 0 4px 14px rgba(74, 184, 216, 0.45);
}
.dashboard[data-theme="kai"] .stat--peach {
  background: linear-gradient(135deg, #c8eaf4 0%, #8acce0 60%, #4ab8d8 100%);
  color: #0e2838;
}
.dashboard[data-theme="kai"] .stat--blue {
  background: linear-gradient(135deg, #f0e8d4 0%, #d8c4a0 60%, #b89a6c 100%);
  color: #3a2a14;
}
.dashboard[data-theme="kai"] .quiet {
  background: linear-gradient(120deg, #fff 0%, #eaf2f8 100%);
}
.dashboard[data-theme="kai"] .quiet__label { color: #2a7898; }
.dashboard[data-theme="kai"] .focus__chart path[stroke="#e87a4a"] { stroke: #4ab8d8; }
.dashboard[data-theme="kai"] .focus__chart path[stroke="#6b8ade"] { stroke: #b89a6c; }
.dashboard[data-theme="kai"] .dot-line--peach { background: #4ab8d8; }
.dashboard[data-theme="kai"] .dot-line--blue  { background: #b89a6c; }
.dashboard[data-theme="kai"] .bar > span {
  background: linear-gradient(90deg, #4ab8d8, #2a7898);
}
.dashboard[data-theme="kai"] .chip { background: #1a2e3a; color: #fff; }

/* ───── persona-specific middle panels (swap into .focus container) ───── */

/* sam — code activity heat grid */
.code-panel { display: flex; flex-direction: column; gap: 8px; height: 100%; }
.code-panel__head { display: flex; justify-content: space-between; align-items: baseline; }
.code-panel__head h4 { font-size: 12px; font-weight: 600; color: var(--d-ink); }
.code-panel__head span { font-size: 10px; color: var(--d-mute); letter-spacing: 0.06em; }
.commits-grid {
  display: grid;
  grid-template-columns: repeat(30, 1fr);
  grid-template-rows: repeat(7, 1fr);
  gap: 2px;
  flex: 1;
  min-height: 0;
}
.commits-grid span {
  background: var(--d-rule);
  border-radius: 1.5px;
  transition: background 0.4s ease;
}
.commits-grid span[data-h="1"] { background: rgba(60, 220, 130, 0.15); }
.commits-grid span[data-h="2"] { background: rgba(60, 220, 130, 0.35); }
.commits-grid span[data-h="3"] { background: rgba(60, 220, 130, 0.55); }
.commits-grid span[data-h="4"] { background: rgba(60, 220, 130, 0.85); }
.code-panel__foot {
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  color: var(--d-mute);
  font-family: var(--mono);
  letter-spacing: 0.04em;
}

/* jules — work/family balance bar */
.balance-panel { display: flex; flex-direction: column; gap: 14px; height: 100%; justify-content: center; }
.balance-panel h4 { font-size: 12px; font-weight: 600; color: var(--d-ink); }
.balance-bars { display: flex; flex-direction: column; gap: 12px; }
.balance-bar {
  height: 28px;
  border-radius: 14px;
  padding: 0 14px;
  display: flex;
  align-items: center;
  color: #fff;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.01em;
  position: relative;
  overflow: hidden;
  transition: width 0.9s cubic-bezier(.2,.7,.2,1);
}
.balance-bar--family { background: linear-gradient(90deg, #f5a3c8, #d9678c); }
.balance-bar--work   { background: linear-gradient(90deg, #a878c5, #6b4d99); }
.balance-bar small { opacity: 0.85; margin-left: 8px; font-weight: 400; }

/* maya — canvas thumbnail grid */
.canvas-panel { display: flex; flex-direction: column; gap: 10px; height: 100%; }
.canvas-panel h4 { font-size: 12px; font-weight: 600; color: var(--d-ink); }
.canvas-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  flex: 1;
  min-height: 0;
}
.canvas-thumb {
  border-radius: 6px;
  position: relative;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0.06);
}
.canvas-thumb::after {
  content: attr(data-name);
  position: absolute;
  inset: auto 0 0 0;
  padding: 4px 6px;
  font-size: 9px;
  font-weight: 600;
  color: rgba(0,0,0,0.6);
  background: rgba(255,255,255,0.7);
  letter-spacing: 0.04em;
  text-transform: lowercase;
}

/* dre — service health */
.services-panel { display: flex; flex-direction: column; gap: 8px; height: 100%; }
.services-panel h4 { font-size: 12px; font-weight: 600; color: var(--d-ink); }
.services-list { list-style: none; display: flex; flex-direction: column; gap: 6px; flex: 1; min-height: 0; }
.services-list li {
  display: grid;
  grid-template-columns: 10px 60px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 6px 10px;
  background: rgba(60, 220, 130, 0.04);
  border: 1px solid rgba(60, 220, 130, 0.10);
  border-radius: 4px;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--d-ink);
}
.services-list li.warn { background: rgba(255, 200, 80, 0.05); border-color: rgba(255, 200, 80, 0.18); }
.service-dot { width: 8px; height: 8px; border-radius: 50%; background: #3cdc82; box-shadow: 0 0 6px #3cdc82; }
.services-list li.warn .service-dot { background: #ffc850; box-shadow: 0 0 6px #ffc850; }
.service-name { font-weight: 600; }
.service-uptime { color: var(--d-mute); }
.service-rps { color: var(--d-mute); text-align: right; }

/* aiko — weekly energy dots */
.mood-panel { display: flex; flex-direction: column; gap: 12px; height: 100%; justify-content: center; }
.mood-panel h4 { font-size: 12px; font-weight: 600; color: var(--d-ink); }
.mood-week { display: flex; gap: 8px; justify-content: space-between; }
.mood-day {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.mood-dot {
  width: 28px; height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
}
.mood-dot--high { background: #c8e3a8; box-shadow: 0 0 8px rgba(184, 200, 130, 0.5); }
.mood-dot--mid  { background: #f0e0c0; }
.mood-dot--low  { background: #e0c8c0; opacity: 0.6; }
.mood-label { font-size: 9px; color: var(--d-mute); font-weight: 600; letter-spacing: 0.08em; }

/* kai — flight card */
.trip-panel { display: flex; flex-direction: column; gap: 8px; height: 100%; padding: 4px 0; }
.trip-head {
  display: flex; justify-content: space-between; align-items: baseline;
}
.trip-title {
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--d-mute);
  font-weight: 600;
}
.trip-tag {
  font-family: var(--mono);
  font-size: 10.5px;
  color: #2a7898;
  background: rgba(74, 184, 216, 0.1);
  padding: 2px 8px;
  border-radius: 999px;
}
.trip-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 16px;
  align-items: center;
  flex: 1;
}
.trip-airport { text-align: center; }
.trip-code {
  font-family: var(--sans);
  font-weight: 800;
  font-size: 30px;
  line-height: 1;
  color: var(--d-ink);
  letter-spacing: -0.02em;
}
.trip-time {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--d-mute);
  margin-top: 4px;
}
.trip-plane {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--d-faint);
  text-align: center;
  letter-spacing: 0.1em;
  position: relative;
}
.trip-plane::before, .trip-plane::after {
  content: '';
  display: block;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--d-faint), transparent);
  margin: 6px 0;
}
.trip-plane span {
  background: var(--d-card);
  padding: 0 8px;
  position: relative;
  top: -10px;
  color: #4ab8d8;
  font-size: 14px;
}
.trip-meta {
  display: flex;
  justify-content: space-between;
  font-family: var(--mono);
  font-size: 10.5px;
  color: var(--d-mute);
  letter-spacing: 0.04em;
}
.trip-meta span { color: var(--d-ink); font-weight: 600; }

/* maya — show-card middle panel (replaces the canvas grid) */
.show-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  height: 100%;
  justify-content: center;
  padding: 4px 4px;
}
.show-card__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.show-card__tag {
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--d-mute);
  font-weight: 600;
}
.show-card__count {
  font-family: var(--mono);
  font-size: 14px;
  color: var(--d-ink);
  font-weight: 700;
  background: rgba(0,0,0,0.05);
  padding: 2px 10px;
  border-radius: 999px;
}
.show-card__title {
  font-family: var(--serif);
  font-style: italic;
  font-size: 26px;
  letter-spacing: 0.02em;
  color: var(--d-ink);
  line-height: 1;
}
.show-card__meta {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--d-mute);
  display: flex;
  gap: 6px;
  letter-spacing: 0.04em;
}
.show-card__dot { color: var(--d-faint); }
.show-card__progress {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 11px;
  color: var(--d-mute);
  margin-top: 4px;
}
.show-card__progress .show-bar {
  flex: 1;
  height: 4px;
  background: var(--d-rule);
  border-radius: 2px;
  overflow: hidden;
}
.show-card__progress .show-bar > span {
  display: block;
  height: 100%;
  background: var(--d-ink);
  border-radius: 2px;
}

/* maya — gallery preview (replaces "what you're building") */
.gallery-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 14px;
}
.gallery-eta {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--d-ink);
  background: rgba(0,0,0,0.06);
  padding: 3px 10px;
  border-radius: 999px;
}
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.art-thumb {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 6px 18px rgba(0,0,0,0.12), inset 0 0 0 1px rgba(255,255,255,0.06);
  transition: transform 0.4s cubic-bezier(.2,.7,.2,1), box-shadow 0.4s ease;
  cursor: pointer;
}
.art-thumb:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 28px rgba(0,0,0,0.22), inset 0 0 0 1px rgba(255,255,255,0.1);
}
.art-thumb::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 0%, transparent 50%, rgba(0,0,0,0.55) 100%);
  pointer-events: none;
}
.art-thumb__meta {
  position: absolute;
  left: 10px; right: 10px; bottom: 8px;
  display: flex;
  flex-direction: column;
  gap: 1px;
  z-index: 2;
}
.art-thumb__name {
  font-family: var(--serif);
  font-style: italic;
  font-size: 13px;
  color: #fff;
  line-height: 1.1;
  text-shadow: 0 1px 3px rgba(0,0,0,0.5);
}
.art-thumb__sub {
  font-family: var(--mono);
  font-size: 9.5px;
  color: rgba(255,255,255,0.78);
  letter-spacing: 0.05em;
}

/* fade-in when the middle panel swaps */
.panel-swap > * { animation: panel-in 0.4s cubic-bezier(.2,.7,.2,1); }
@keyframes panel-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Smooth content transitions when persona swaps */
.dashboard, .dashboard * {
  transition: background-color .5s ease, color .5s ease, border-color .5s ease, box-shadow .5s ease;
}

/* ---------- chapter vi — watch it happen (three-pane live demo) ---------- */
.scene--demo .scene__title { margin-bottom: 28px; }
.demo3 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 18px;
  margin-bottom: 22px;
  height: min(500px, 58vh);
}
.demo-stage {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 18px;
}
.demo-top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  height: min(280px, 32vh);
}
.demo-top .d3 { min-height: 0; }
.d3--bigdash {
  height: min(360px, 40vh);
  background: #f6f3ec;
  color: #2a2622;
  border: 1px solid rgba(245, 196, 122, 0.12);
  box-shadow: 0 30px 90px rgba(0,0,0,0.55), 0 0 0 1px rgba(245, 196, 122, 0.06), 0 0 120px -20px rgba(245, 196, 122, 0.12);
}
.d3--bigdash .d3__head {
  background: rgba(0,0,0,0.04);
  border-bottom: 1px solid #ece8df;
}
.d3--bigdash .d3__title { color: #2a2622; }
.d3--bigdash .d3__sub { color: #8c857c; }
.bigdash-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 14px 16px 16px;
  min-height: 0;
}

/* folder cards */
.folders {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  flex: 0 0 auto;
}
.folder {
  padding: 12px 14px;
  border-radius: 12px;
  position: relative;
  overflow: hidden;
  transition: transform 0.45s cubic-bezier(.2,.7,.2,1), box-shadow 0.45s ease;
}
.folder::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at top right, rgba(255,255,255,0.4), transparent 60%);
  pointer-events: none;
}
.folder--people    { background: linear-gradient(135deg, #fde0c8 0%, #f8c79b 60%, #f5a96d 100%); color: #5a2a14; }
.folder--projects  { background: linear-gradient(135deg, #d8e1f5 0%, #b8c8ec 60%, #9aafe2 100%); color: #1f2a4d; }
.folder--journal   { background: linear-gradient(135deg, #ecdef5 0%, #d4b8ec 60%, #b094e2 100%); color: #3a1f4d; }
.folder--inbox     { background: linear-gradient(135deg, #d8f0e8 0%, #b8e0d4 60%, #8ec5b5 100%); color: #1f4d3a; }
.folder.is-pulse {
  transform: translateY(-3px);
  box-shadow: 0 14px 28px rgba(0,0,0,0.25);
  animation: folder-pulse 1.2s ease-out;
}
@keyframes folder-pulse {
  0%   { box-shadow: 0 0 0 0 currentColor; }
  100% { box-shadow: 0 14px 28px rgba(0,0,0,0.25); }
}
.folder__num {
  font-family: var(--sans);
  font-weight: 800;
  font-size: 24px;
  line-height: 1;
  letter-spacing: -0.02em;
  margin-bottom: 2px;
  position: relative;
}
.folder__name {
  font-size: 11.5px;
  font-weight: 600;
  text-transform: lowercase;
  letter-spacing: 0.01em;
  position: relative;
}
.folder__sub {
  font-size: 10px;
  opacity: 0.65;
  margin-top: 1px;
  position: relative;
}

/* donut + feed row */
.bigdash-lower {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 16px;
  flex: 1;
  min-height: 0;
}

/* donut */
.dash-donut {
  position: relative;
  background: #fff;
  border: 1px solid #ece8df;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.donut {
  width: 110px;
  height: 110px;
}
.donut-track { stroke: #ece8df; }
.donut-fill {
  stroke: url(#donutGrad);
  transition: stroke-dashoffset 0.9s cubic-bezier(.2,.7,.2,1);
}
.dash-donut::before {
  /* gradient defs trick: use a hidden SVG gradient stop fallback via stroke color */
}
.donut-center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  text-align: center;
}
.donut-value {
  font-family: var(--sans);
  font-weight: 800;
  font-size: 26px;
  line-height: 1;
  color: #2a2622;
  letter-spacing: -0.02em;
}
.donut-value small { font-size: 14px; opacity: 0.7; margin-left: 1px; }
.donut-label {
  font-size: 9.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #8c857c;
  margin-top: 4px;
}
/* fallback donut stroke (no SVG gradient) */
.donut-fill { stroke: #e87a4a; }

/* feed */
.dash-feed {
  background: #fff;
  border: 1px solid #ece8df;
  border-radius: 10px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.dash-feed__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid #ece8df;
}
.dash-feed__title {
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #8c857c;
  font-weight: 600;
}
.dash-feed__live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 9.5px;
  color: #8c857c;
  font-family: var(--mono);
  letter-spacing: 0.06em;
}
.dash-feed__live .live-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #6fb98f;
  box-shadow: 0 0 6px #6fb98f;
  animation: pulse 1.6s ease-in-out infinite;
}
.dash-feed__list {
  list-style: none;
  margin: 0; padding: 0;
  overflow: hidden;
  flex: 1;
}
.feed-item {
  display: grid;
  grid-template-columns: 10px 1fr auto;
  gap: 10px;
  align-items: center;
  padding: 6px 0;
  font-size: 12px;
  border-bottom: 1px dashed #f0eadf;
  animation: feed-in 0.5s cubic-bezier(.2,.7,.2,1);
}
.feed-item:last-child { border-bottom: 0; }
@keyframes feed-in {
  from { opacity: 0; transform: translateX(-8px); }
  to   { opacity: 1; transform: translateX(0); }
}
.feed-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.feed-dot--people    { background: #f5a96d; }
.feed-dot--projects  { background: #9aafe2; }
.feed-dot--journal   { background: #b094e2; }
.feed-dot--inbox     { background: #8ec5b5; }
.feed-path {
  font-family: var(--mono);
  font-size: 11.5px;
  color: #2a2622;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.feed-time {
  font-size: 10px;
  color: #c9c4b8;
  font-family: var(--mono);
  letter-spacing: 0.04em;
  flex-shrink: 0;
}
.d3 {
  background: var(--bg-soft);
  border: 1px solid var(--rule);
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 20px 60px rgba(0,0,0,0.4), 0 0 0 1px rgba(245,196,122,0.04);
}
.d3__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  border-bottom: 1px solid var(--rule);
  font-size: 11px;
  background: rgba(255,255,255,0.014);
}
.d3__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.d3__dot--cream  { background: #ece8df; box-shadow: 0 0 8px rgba(236,232,223,0.5); }
.d3__dot--purple { background: #9b7adb; box-shadow: 0 0 8px rgba(155,122,219,0.6); }
.d3__dot--peach  { background: #e87a4a; box-shadow: 0 0 8px rgba(232,122,74,0.6); }
.d3__title {
  color: var(--ink);
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.01em;
}
.d3__sub {
  margin-left: auto;
  font-size: 10px;
  color: var(--ink-faint);
  font-family: var(--mono);
}
.d3__body {
  flex: 1;
  overflow: hidden;
  position: relative;
  padding: 14px;
}

/* chat pane */
.d3__body--chat {
  display: flex;
  flex-direction: column;
  gap: 9px;
  justify-content: flex-end;
}
.bubble {
  max-width: 92%;
  padding: 8px 12px;
  border-radius: 12px;
  font-size: 12.5px;
  line-height: 1.42;
  animation: bubble-in 0.45s cubic-bezier(.2,.7,.2,1);
  word-wrap: break-word;
}
.bubble em { font-style: italic; color: var(--glow); }
.bubble--user {
  align-self: flex-end;
  background: linear-gradient(135deg, #e87a4a, #d95a2a);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.bubble--bot {
  align-self: flex-start;
  background: rgba(236,232,223,0.08);
  color: var(--ink);
  border: 1px solid var(--rule);
  border-bottom-left-radius: 4px;
}
.bubble.typing {
  font-family: var(--mono);
  color: var(--ink-mute);
  letter-spacing: 0.25em;
  font-size: 11px;
  padding: 8px 14px;
}
@keyframes bubble-in {
  from { opacity: 0; transform: translateY(8px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* obsidian pane */
.d3__body--mono {
  font-family: var(--mono);
  font-size: 12.5px;
  line-height: 1.7;
  color: var(--ink-mute);
}
.vault-line {
  display: block;
  padding-left: 8px;
  margin-left: -8px;
  border-left: 2px solid transparent;
  transition: background 0.8s ease, border-color 0.8s ease, color 0.8s ease;
  white-space: pre-wrap;
}
.vault-line.is-new {
  background: rgba(245,196,122,0.10);
  border-left-color: var(--glow);
  color: var(--ink);
  animation: vault-in 0.5s cubic-bezier(.2,.7,.2,1);
}
.vault-line.is-new.fade-flash {
  background: transparent;
  border-left-color: transparent;
}
@keyframes vault-in {
  from { opacity: 0; transform: translateX(-8px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* dashboard pane */
.d3__body--dash {
  display: flex;
  flex-direction: column;
  gap: 9px;
  font-size: 12px;
}
.dash-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  background: rgba(255,255,255,0.018);
  border: 1px solid var(--rule);
  border-radius: 6px;
  transition: border-color 0.8s ease, background 0.8s ease;
}
.dash-row__label {
  color: var(--ink-faint);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.dash-row__val {
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
}
.dash-row.is-new {
  border-color: rgba(245,196,122,0.45);
  background: rgba(245,196,122,0.06);
  animation: dash-pop 0.5s cubic-bezier(.2,.7,.2,1);
}
.dash-row.is-new.cool {
  border-color: var(--rule);
  background: rgba(255,255,255,0.018);
}
@keyframes dash-pop {
  0%   { opacity: 0; transform: translateX(12px); }
  100% { opacity: 1; transform: translateX(0); }
}

.demo3-cap {
  font-family: var(--serif);
  font-style: italic;
  text-align: center;
  font-size: clamp(16px, 1.6vw, 20px);
  color: var(--ink-mute);
}
.demo3-cap em { color: var(--glow); }

@media (max-width: 1100px) {
  .demo3 { grid-template-columns: 1fr; height: auto; }
  .d3 { height: 280px; }
  .demo-top { grid-template-columns: 1fr; height: auto; }
  .demo-top .d3 { height: 220px; }
  .d3--bigdash { height: auto; min-height: 320px; }
  .bigdash-lower { grid-template-columns: 1fr; }
  .folders { grid-template-columns: repeat(2, 1fr); }
}

/* ---------- chapter vii — what unlocks ---------- */
.scene--unlocks .scene__title { margin-bottom: 16px; }
.scene--unlocks .scene__lede { margin-bottom: 40px; }
.unlocks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px 32px;
  margin-bottom: 32px;
}
.unlock {
  position: relative;
  padding: 24px 26px 22px;
  border: 1px solid var(--rule);
  border-radius: 12px;
  background: rgba(255,255,255,0.014);
  transition: border-color .35s ease, background .35s ease, transform .35s ease;
}
.unlock:hover {
  border-color: rgba(245,196,122,0.28);
  background: rgba(245,196,122,0.025);
  transform: translateY(-3px);
}
.unlock__num {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--glow);
  margin-bottom: 12px;
  text-transform: lowercase;
  opacity: 0.85;
}
.unlock__title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(22px, 2.2vw, 28px);
  letter-spacing: -0.005em;
  color: var(--ink);
  margin-bottom: 10px;
  line-height: 1.15;
}
.unlock__body {
  color: var(--ink-mute);
  font-size: 14.5px;
  line-height: 1.55;
}
.unlock__body code {
  font-family: var(--mono);
  font-size: 12.5px;
  background: rgba(245,196,122,0.06);
  color: var(--glow);
  padding: 1px 5px;
  border-radius: 3px;
}
.unlocks-close {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(18px, 1.8vw, 22px);
  color: var(--ink-mute);
  text-align: center;
  padding-top: 18px;
}
.unlocks-close .alt-link {
  margin-left: 12px;
  font-style: normal;
  font-family: var(--sans);
}

/* ---------- chapter vii — build (real install steps) ---------- */
.scene--build .scene__title { margin-bottom: 16px; }
.scene--build .scene__lede { margin-bottom: 36px; }

.build-steps {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 18px;
  margin-bottom: 32px;
}
.step {
  background: rgba(255,255,255,0.018);
  border: 1px solid var(--rule);
  border-radius: 12px;
  padding: 18px 18px 20px;
  display: flex;
  flex-direction: column;
  transition: border-color .3s ease, background .3s ease;
}
.step:hover { border-color: rgba(245,196,122,0.25); background: rgba(245,196,122,0.02); }
.step__head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  margin-bottom: 14px;
}
.step__index {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.15em;
  color: var(--glow);
  background: rgba(245,196,122,0.08);
  border: 1px solid rgba(245,196,122,0.25);
  padding: 4px 8px;
  border-radius: 6px;
  flex-shrink: 0;
}
.step__title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: 20px;
  line-height: 1.1;
  letter-spacing: -0.005em;
  color: var(--ink);
  margin-bottom: 3px;
}
.step__time {
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.04em;
}
.step__body {
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--ink-mute);
  margin-bottom: 12px;
  flex: 1;
}
.step__body code {
  font-family: var(--mono);
  font-size: 12px;
  background: rgba(245,196,122,0.06);
  color: var(--glow);
  padding: 1px 5px;
  border-radius: 3px;
}
.step__code {
  background: var(--bg-soft);
  border: 1px solid var(--rule);
  padding: 12px 14px;
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--ink-mute);
  line-height: 1.65;
  border-radius: 6px;
  overflow-x: auto;
  margin-top: auto;
}
.step .cta--inline {
  margin-top: auto;
  align-self: flex-start;
  font-size: 12px;
  padding: 8px 14px;
}
.build-close {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(20px, 2.1vw, 26px);
  color: var(--ink-mute);
  text-align: center;
  padding-top: 12px;
}
.build-close em { color: var(--glow); }

/* ---------- chapter vi — manifesto ---------- */
.scene--manifesto .scene__inner { max-width: 880px; }
.manifesto__title {
  font-family: var(--serif);
  font-weight: 400;
  font-style: italic;
  font-size: clamp(34px, 4.6vw, 60px);
  line-height: 1.1;
  letter-spacing: -0.015em;
  margin-bottom: 36px;
}
.manifesto__body {
  max-width: 620px;
  font-size: 18px;
  line-height: 1.7;
  color: var(--ink-mute);
}
.manifesto__body p { margin-bottom: 18px; }
.manifesto__body p:first-child { color: var(--ink); font-size: 21px; }
.manifesto__close {
  font-family: var(--serif);
  font-style: italic;
  font-size: 26px !important;
  color: var(--glow) !important;
  margin-top: 36px !important;
  text-shadow: 0 0 40px rgba(245, 196, 122, 0.3);
}

/* ---------- footer ---------- */
.footer {
  position: relative;
  z-index: 2;
  padding: 50px 36px;
  border-top: 1px solid var(--rule);
  text-align: center;
  font-size: 13px;
  color: var(--ink-faint);
  background: var(--bg);
}
.footer a { color: var(--ink-mute); }
.footer a:hover { color: var(--glow); }
.about-trigger {
  background: none;
  border: 0;
  color: var(--ink-mute);
  font: inherit;
  padding: 0;
  cursor: pointer;
  border-bottom: 1px dashed var(--ink-faint);
  transition: color .25s ease, border-color .25s ease;
}
.about-trigger:hover {
  color: var(--glow);
  border-bottom-color: var(--glow);
}

/* ---------- about overlay ---------- */
.about {
  position: fixed;
  inset: 0;
  z-index: 100;
  pointer-events: none;
  opacity: 0;
  transition: opacity .4s ease;
}
.about.is-open { opacity: 1; pointer-events: auto; }
.about__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(6, 6, 8, 0.78);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.about__panel {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(620px, calc(100vw - 40px));
  max-height: min(78vh, 720px);
  transform: translate(-50%, -46%) scale(0.97);
  background: linear-gradient(180deg, #14141a 0%, #0c0c10 100%);
  border: 1px solid var(--rule-strong);
  border-radius: 18px;
  box-shadow:
    0 40px 120px rgba(0,0,0,0.7),
    0 0 0 1px rgba(245, 196, 122, 0.06),
    0 0 80px -10px rgba(245, 196, 122, 0.12);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform .5s cubic-bezier(.2,.7,.2,1);
}
.about.is-open .about__panel {
  transform: translate(-50%, -50%) scale(1);
}
.about__close {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 2;
  width: 36px;
  height: 36px;
  background: transparent;
  border: 1px solid var(--rule);
  border-radius: 50%;
  color: var(--ink-mute);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .25s ease;
}
.about__close:hover {
  color: var(--glow);
  border-color: var(--glow);
  transform: rotate(90deg);
}
.about__inner {
  padding: 56px 48px 40px;
  overflow-y: auto;
}
.about__eyebrow {
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 12px;
}
.about__title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(40px, 5vw, 64px);
  letter-spacing: -0.02em;
  color: var(--ink);
  margin-bottom: 36px;
  line-height: 1;
}
.about__body {
  font-size: 16.5px;
  line-height: 1.65;
  color: var(--ink-mute);
}
.about__body p { margin-bottom: 18px; }
.about__body p:first-child { color: var(--ink); font-size: 18px; }
.about__body em {
  font-family: var(--serif);
  font-style: italic;
  color: var(--glow);
  font-size: 1.05em;
}
.about__sign {
  font-family: var(--serif);
  font-style: italic;
  font-size: 22px !important;
  color: var(--glow) !important;
  margin-top: 24px !important;
}
.about__links {
  display: flex;
  gap: 22px;
  flex-wrap: wrap;
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px solid var(--rule);
}
.about__links a {
  font-size: 13px;
  color: var(--ink-mute);
  letter-spacing: 0.02em;
  display: inline-flex;
  gap: 6px;
  transition: color .25s ease, transform .25s ease;
}
.about__links a span { transition: transform .25s ease; }
.about__links a:hover { color: var(--glow); }
.about__links a:hover span { transform: translateX(3px); }

@media (max-width: 600px) {
  .about__inner { padding: 48px 28px 32px; }
}

/* ---------- mobile fallback: vertical stack ---------- */
@media (max-width: 1100px) {
  .nav { padding: 16px 20px; grid-template-columns: 1fr auto; }
  .nav__progress { display: none; }
  .nav__link { display: none; }

  /* disable horizontal story; let scenes stack vertically */
  .story { height: auto; }
  .story__sticky { position: static; height: auto; overflow: visible; }
  .story__rail { display: block; width: 100%; height: auto; transform: none !important; }
  .scene { flex: none; width: 100%; height: auto; min-height: 100vh; padding: 100px 24px 80px; }

  .cards, .build { grid-template-columns: 1fr; }
  .day { grid-template-columns: 1fr; gap: 36px; }
  .view { grid-template-columns: 1fr; }
}
