/* ============================================================
   THE ANIMATE LAYER — shared stylesheet
   One design object across five pages. Only --accent changes
   per page (body.theme-*) and per section (data-accent → ambient).
   ============================================================ */

/* ------------------------------------------------------------
   TOKENS
   ------------------------------------------------------------ */
:root{
  --void:#060608;
  --void-2:#0a0a0d;
  --panel:#0e0e12;
  --elevated:#15151b;
  --line:#23222a;
  --line-soft:#1a1a20;
  --ink:#eceae4;
  --dim:#928f88;
  --muted:#7e7b72;   /* lifted from #605d57 for WCAG-AA contrast on small labels */
  --faint:#3b3a40;

  /* brand spine + agent sub-accents (Olympus crew) */
  --brand:#c9a84c;     /* antique brass — structural spine */
  --helen:#ec9a38;     /* warm amber */
  --sonya:#4fa8e0;     /* cold electric blue */
  --claire:#e8c66c;    /* warm cream / studio */
  --donna:#dd6b33;     /* copper / sunset */
  --alert:#d8483f;

  /* per-product accents (set globally by body.theme-*) */
  --olympus:#c9a84c;   /* gold — B2C shares the brand gold */
  --praxis:#e0762e;    /* orange (Donna) */
  --lykeion:#d4862a;   /* warm amber */
  --cortana:#3a93d8;   /* Juno — tactical blue (token name kept internal) */
  --calliope:#a486c9;  /* soft amethyst — writing / ink (working name) */

  --accent:var(--brand);

  --maxw:1240px;
  --pad:clamp(20px,5vw,80px);

  --f-display:"Fraunces",Georgia,serif;
  --f-mono:"Space Grotesk",ui-monospace,monospace;
}

/* page-level theme: each just re-points --accent */
body.theme-home   {--accent:var(--brand)}
body.theme-olympus{--accent:var(--olympus)}
body.theme-praxis {--accent:var(--praxis)}
body.theme-lykeion{--accent:var(--lykeion)}
body.theme-cortana{--accent:var(--cortana)}
body.theme-calliope{--accent:var(--calliope)}

/* ------------------------------------------------------------
   BASE
   ------------------------------------------------------------ */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  background:var(--void);
  color:var(--ink);
  font-family:var(--f-mono);
  font-weight:300;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%;display:block}

/* film grain + ambient glow overlays */
body::before{
  content:"";position:fixed;inset:0;z-index:1;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");
  opacity:.035;mix-blend-mode:screen;
}
.ambient{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(60vw 60vw at 80% -10%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 60%),
    radial-gradient(50vw 50vw at -10% 110%, color-mix(in srgb, var(--accent) 6%, transparent), transparent 55%);
  transition:background 1.2s ease;
}

/* ------------------------------------------------------------
   TYPOGRAPHY HELPERS
   ------------------------------------------------------------ */
.eyebrow{
  font-family:var(--f-mono);
  font-size:.7rem;font-weight:500;
  letter-spacing:.28em;text-transform:uppercase;
  color:var(--accent);
  display:inline-flex;align-items:center;gap:.7em;
}
.eyebrow::before{
  content:"";width:22px;height:1px;background:var(--accent);
  display:inline-block;opacity:.7;
}
.eyebrow.no-tick::before{display:none}

h2.statement{
  font-family:var(--f-display);
  font-weight:340;
  font-size:clamp(2rem,4.6vw,4.2rem);
  line-height:1.04;
  letter-spacing:-.015em;
  margin:.5em 0;
}
h2.statement em{font-style:italic;color:var(--accent)}
h2.statement .soft{color:var(--dim)}

.lead{
  font-size:clamp(1.05rem,1.5vw,1.35rem);
  color:var(--dim);font-weight:300;line-height:1.55;max-width:60ch;
}

.kicker{
  font-family:var(--f-display);
  font-weight:300;font-style:italic;
  font-size:clamp(1.1rem,1.8vw,1.6rem);
  color:var(--muted);line-height:1.4;
}

.tag{
  font-family:var(--f-mono);font-size:.66rem;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;color:var(--accent);
}

/* ------------------------------------------------------------
   LAYOUT PRIMITIVES
   ------------------------------------------------------------ */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}
.wrap.narrow{max-width:900px}
section{position:relative;z-index:2;padding:clamp(72px,10vh,150px) 0}
.divider{height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent);max-width:var(--maxw);margin:0 auto}

/* ------------------------------------------------------------
   NAV
   ------------------------------------------------------------ */
nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px var(--pad);
  background:color-mix(in srgb,var(--void) 72%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .4s ease,background .4s ease;
}
nav.scrolled{border-bottom-color:var(--line-soft)}
.brand-mark{
  display:flex;align-items:center;gap:11px;
  font-family:var(--f-mono);font-weight:600;letter-spacing:.22em;
  font-size:.82rem;color:var(--ink);text-decoration:none;text-transform:uppercase;
}
.brand-dot{
  width:9px;height:9px;border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 12px var(--accent);
  transition:background .8s ease,box-shadow .8s ease;
}
.nav-links{display:flex;gap:4px;align-items:center}
.nav-links a{
  font-family:var(--f-mono);font-size:.72rem;font-weight:400;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;
  padding:7px 13px;border-radius:100px;
  transition:color .25s ease,background .25s ease;
}
.nav-links a:hover{color:var(--dim)}
.nav-links a.active{color:var(--ink);background:color-mix(in srgb,var(--accent) 14%,transparent)}
.nav-toggle{display:none;background:none;border:0;cursor:pointer;width:36px;height:32px;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:6px}
.nav-toggle span{display:block;height:2px;width:20px;background:var(--ink);border-radius:2px;transition:transform .3s ease,opacity .3s ease}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media (max-width:860px){
  .nav-toggle{display:flex}
  .nav-links{
    display:none;position:absolute;top:100%;left:0;right:0;
    flex-direction:column;align-items:stretch;gap:0;
    background:color-mix(in srgb,var(--void) 96%,transparent);
    backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    border-bottom:1px solid var(--line-soft);
    padding:6px var(--pad) 14px;
  }
  .nav-links.open{display:flex}
  .nav-links a{padding:13px 6px;border-bottom:1px solid var(--line-soft);border-radius:0}
  .nav-links a:last-child{border-bottom:none}
}

/* ------------------------------------------------------------
   HERO
   ------------------------------------------------------------ */
.hero{
  min-height:100svh;display:flex;flex-direction:column;justify-content:center;
  padding-top:90px;padding-bottom:60px;position:relative;
}
.hero-grid{
  position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:
    linear-gradient(to right, var(--line-soft) 1px, transparent 1px),
    linear-gradient(to bottom, var(--line-soft) 1px, transparent 1px);
  background-size:clamp(48px,7vw,88px) clamp(48px,7vw,88px);
  mask-image:radial-gradient(120% 90% at 50% 35%, black, transparent 75%);
  -webkit-mask-image:radial-gradient(120% 90% at 50% 35%, black, transparent 75%);
  opacity:.5;
}
.hero .wrap{width:100%}
.hero-eyebrow{margin-bottom:clamp(20px,3vh,40px)}
.wordmark{
  font-family:var(--f-mono);font-weight:700;
  font-size:clamp(3.2rem,14vw,12rem);
  line-height:.92;letter-spacing:-.02em;
  background:linear-gradient(180deg,var(--ink),#b8b5ac);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.wordmark.two-line{line-height:.9}
.hero-sub{
  font-family:var(--f-display);font-style:italic;font-weight:300;
  font-size:clamp(1.2rem,3vw,2.3rem);
  color:var(--dim);margin-top:clamp(14px,2vh,26px);
  letter-spacing:.005em;max-width:24ch;
}
.hero-meta{
  margin-top:clamp(30px,5vh,60px);
  display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;
}
.crew-chip{
  font-family:var(--f-mono);font-size:.72rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;
  padding:7px 14px;border:1px solid var(--line);border-radius:100px;
  color:var(--dim);display:inline-flex;align-items:center;gap:8px;
  text-decoration:none;transition:border-color .3s ease,color .3s ease;
}
a.crew-chip:hover{color:var(--ink);border-color:color-mix(in srgb,var(--cc,var(--accent)) 50%,var(--line))}
.crew-chip i{width:7px;height:7px;border-radius:50%;display:inline-block}
.hero-byline{
  margin-top:clamp(28px,4vh,48px);
  font-family:var(--f-mono);font-size:.74rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--muted);
}
.scroll-cue{
  position:absolute;bottom:30px;left:50%;transform:translateX(-50%);
  font-family:var(--f-mono);font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--faint);display:flex;flex-direction:column;align-items:center;gap:10px;
}
.scroll-cue span{display:block;width:1px;height:34px;background:linear-gradient(var(--faint),transparent);animation:cuepulse 2.4s ease-in-out infinite}
@keyframes cuepulse{0%,100%{opacity:.3;transform:scaleY(.7)}50%{opacity:1;transform:scaleY(1)}}

/* load animation — applied by JS to .hl elements in order */
.hl{opacity:0}
.fadeup{animation:fadeup .9s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes fadeup{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){
  .fadeup{animation:none;opacity:1!important}
  .hl{opacity:1!important}
}

/* ------------------------------------------------------------
   REVEAL ON SCROLL
   ------------------------------------------------------------ */
.reveal{opacity:0;transform:translateY(34px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}.reveal.d5{transition-delay:.40s}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none}}

/* ------------------------------------------------------------
   PROBLEM / failure list
   ------------------------------------------------------------ */
.problem{text-align:left}
.problem .big-q{
  position:absolute;top:-4vh;right:var(--pad);z-index:-1;
  font-family:var(--f-display);font-weight:300;font-size:42vh;line-height:1;
  color:#101015;user-select:none;
}
.fail-list{margin:clamp(30px,5vh,56px) 0;max-width:820px}
.fail-list li{
  list-style:none;display:flex;gap:18px;align-items:baseline;
  padding:18px 0;border-bottom:1px solid var(--line-soft);
  font-size:clamp(1.05rem,1.9vw,1.5rem);color:var(--dim);font-weight:300;
}
.fail-list li .n{
  font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.1em;
  color:var(--alert);min-width:26px;
}
.problem-kicker{
  font-family:var(--f-display);font-weight:340;
  font-size:clamp(1.6rem,3.4vw,3rem);line-height:1.15;letter-spacing:-.01em;
}
.problem-kicker b{font-weight:340;color:var(--accent)}

/* ------------------------------------------------------------
   PILLARS (3-up: thesis / ALIVE-SEEN-RESPONSIVE)
   ------------------------------------------------------------ */
.pillars{
  display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  margin-top:clamp(40px,6vh,70px);border-top:1px solid var(--line);
}
.pillar{padding:clamp(28px,4vh,46px) clamp(20px,2.5vw,40px) clamp(28px,4vh,46px) 0;border-left:1px solid var(--line)}
.pillar:first-child{padding-left:0;border-left:none}
.pillar:not(:first-child){padding-left:clamp(20px,2.5vw,40px)}
.pillar-h{
  font-family:var(--f-mono);font-weight:700;font-size:clamp(1.4rem,2.4vw,2.1rem);
  letter-spacing:.04em;margin-bottom:14px;color:var(--pcolor,var(--accent));
}
.pillar p{color:var(--dim);font-size:1rem;font-weight:300;line-height:1.55}
.pillar .sub{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
.p-alive{--pcolor:var(--brand)}.p-seen{--pcolor:var(--sonya)}.p-responsive{--pcolor:var(--cortana)}
.p-local{--pcolor:var(--sonya)}.p-yours{--pcolor:var(--donna)}
@media (max-width:760px){
  .pillars{grid-template-columns:1fr}
  .pillar,.pillar:not(:first-child){border-left:none;border-top:1px solid var(--line);padding:30px 0}
  .pillar:first-child{border-top:none}
}

/* ------------------------------------------------------------
   GENERIC CARD GRID (news / capability cards)
   ------------------------------------------------------------ */
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:clamp(40px,6vh,64px)}
.card-grid.c2{grid-template-columns:repeat(2,1fr)}
.gcard{
  background:var(--panel);border:1px solid var(--line-soft);border-radius:4px;
  padding:28px 26px;position:relative;overflow:hidden;
  transition:transform .4s ease,border-color .4s ease;
}
.gcard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--cardc,var(--accent))}
.gcard:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--cardc,var(--accent)) 40%,var(--line))}
.gcard .lab{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--cardc,var(--accent));margin-bottom:16px;display:block}
.gcard h3{font-family:var(--f-display);font-weight:400;font-size:1.45rem;line-height:1.15;margin-bottom:12px;color:var(--ink)}
.gcard p{font-size:.92rem;color:var(--dim);font-weight:300;line-height:1.55}
.gcard .src{display:block;margin-top:16px;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
@media (max-width:860px){.card-grid,.card-grid.c2{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   CREW intro + roster
   ------------------------------------------------------------ */
.crew-intro{text-align:center}
.crew-intro .wrap{max-width:900px}
.crew-roster{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:clamp(44px,6vh,72px)}
.roster-card{
  border:1px solid var(--line-soft);border-radius:4px;overflow:hidden;
  background:var(--panel);text-align:left;position:relative;
  transition:transform .4s ease,border-color .4s ease;
}
.roster-card:hover{transform:translateY(-5px)}
.roster-photo{aspect-ratio:4/5;overflow:hidden;position:relative;background:#000 center top/cover}
.roster-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--panel),transparent 45%)}
.r-helen .roster-photo{background-image:url("../img/helen.png")}
.r-sonya .roster-photo{background-image:url("../img/sonya.png")}
.r-claire .roster-photo{background-image:url("../img/claire.png")}
.r-donna .roster-photo{background-image:url("../img/donna.png")}
.roster-meta{padding:16px 18px 20px;position:relative;margin-top:-30px}
.roster-name{font-family:var(--f-mono);font-weight:700;font-size:1.05rem;letter-spacing:.08em;color:var(--rc,var(--accent))}
.roster-role{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-top:4px}
.roster-card.r-helen{--rc:var(--helen)}.roster-card.r-sonya{--rc:var(--sonya)}
.roster-card.r-claire{--rc:var(--claire)}.roster-card.r-donna{--rc:var(--donna)}
.roster-card:hover{border-color:color-mix(in srgb,var(--rc) 45%,var(--line))}
.honorific{margin-top:clamp(34px,5vh,56px);font-family:var(--f-display);font-style:italic;font-weight:300;color:var(--muted);font-size:clamp(1rem,1.6vw,1.3rem)}
.honorific b{font-style:normal;font-weight:400;color:var(--dim)}
@media (max-width:860px){.crew-roster{grid-template-columns:repeat(2,1fr)}}
@media (max-width:460px){.crew-roster{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   CHARACTER sections — cinematic full-bleed
   ------------------------------------------------------------ */
.crew-member{padding:0;overflow:hidden}
.crew-inner{display:grid;grid-template-columns:1fr 1fr;align-items:stretch;min-height:88vh;max-width:1500px;margin:0 auto}
.crew-portrait{position:relative;overflow:hidden;background:#000 center 12%/cover;min-height:60vh}
.crew-helen .crew-portrait{background-image:url("../img/helen.png")}
.crew-sonya .crew-portrait{background-image:url("../img/sonya.png")}
.crew-claire .crew-portrait{background-image:url("../img/claire.png")}
.crew-donna .crew-portrait{background-image:url("../img/donna.png")}
.crew-portrait::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(120% 80% at 50% 30%, transparent, color-mix(in srgb,var(--accent) 14%, transparent) 130%);
  mix-blend-mode:soft-light;
}
.crew-copy{display:flex;flex-direction:column;justify-content:center;padding:clamp(40px,7vh,90px) clamp(28px,5vw,80px);position:relative}
.crew-copy::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(135deg, color-mix(in srgb,var(--accent) 7%, var(--void)) 0%, var(--void) 60%)}
.crew-index{font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.2em;color:var(--accent);margin-bottom:20px;display:flex;align-items:center;gap:12px}
.crew-index .bar{width:34px;height:1px;background:var(--accent)}
.crew-name{font-family:var(--f-mono);font-weight:700;font-size:clamp(2.8rem,7vw,5.5rem);line-height:.95;letter-spacing:.02em;color:var(--ink)}
.crew-tagline{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.2rem,2.2vw,1.7rem);color:var(--accent);margin:14px 0 6px;line-height:1.25}
.crew-role-line{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:26px}
.crew-traits{margin:0 0 30px;max-width:48ch}
.crew-traits li{list-style:none;padding:13px 0;border-bottom:1px solid var(--line-soft);color:var(--dim);font-size:.98rem;font-weight:300;line-height:1.5;display:flex;gap:14px;align-items:baseline}
.crew-traits li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;transform:translateY(2px)}
.crew-spec{display:flex;flex-wrap:wrap;gap:10px}
.spec-pill{font-family:var(--f-mono);font-size:.68rem;font-weight:500;letter-spacing:.08em;padding:8px 14px;border-radius:100px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));color:var(--dim);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.spec-pill b{color:var(--accent);font-weight:600}
.crew-auto{margin-top:24px;padding:16px 20px;border-left:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 5%,transparent);font-size:.92rem;color:var(--dim);font-weight:300;line-height:1.5}
.crew-auto .lab{font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:6px}
.crew-helen{--accent:var(--helen)}
.crew-sonya{--accent:var(--sonya)}
.crew-claire{--accent:var(--claire)}
.crew-donna{--accent:var(--donna)}
.crew-member.flip .crew-portrait{order:2}
.crew-member.flip .crew-copy{order:1}
.crew-member.flip .crew-copy::before{background:linear-gradient(225deg, color-mix(in srgb,var(--accent) 7%, var(--void)) 0%, var(--void) 60%)}
@media (max-width:900px){
  .crew-inner{grid-template-columns:1fr;min-height:0}
  .crew-portrait{min-height:62vh;order:1!important;background-position:center 8%}
  .crew-copy{order:2!important;padding:40px var(--pad) 64px}
  .crew-portrait::after{background:radial-gradient(120% 60% at 50% 20%, transparent, var(--void) 115%)}
}

/* cross-reference callout (agents inform each other) */
.crew-crossref{margin-top:20px;padding:18px 20px;border:1px solid color-mix(in srgb,var(--sonya) 22%,var(--line));border-radius:4px;background:color-mix(in srgb,var(--sonya) 5%,transparent)}
.crossref-label{font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--sonya);margin-bottom:12px}
.crossref-msg{display:flex;gap:14px;align-items:baseline;margin-bottom:10px}
.crossref-from{font-family:var(--f-mono);font-weight:700;font-size:.68rem;letter-spacing:.12em;flex-shrink:0}
.crossref-msg p{font-family:var(--f-display);font-style:italic;font-size:.98rem;color:var(--ink);font-weight:300;line-height:1.5}
.crossref-note{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.08em;color:var(--muted);margin-top:10px}

/* ------------------------------------------------------------
   ALIVE mechanics
   ------------------------------------------------------------ */
.mech{padding:clamp(56px,8vh,110px) 0;border-top:1px solid var(--line-soft)}
.mech:first-of-type{border-top:none}
.mech-grid{display:grid;grid-template-columns:0.9fr 1.1fr;gap:clamp(30px,5vw,80px);align-items:center}
.mech-grid.flip .mech-left{order:2}.mech-grid.flip .mech-right{order:1}
.mech-left .eyebrow{margin-bottom:18px}
.mech-num{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.2em;color:var(--accent)}
.mech-tech{font-family:var(--f-mono);font-size:.82rem;color:var(--dim);margin-top:18px;letter-spacing:.02em}
.mech-tech b{color:var(--accent);font-weight:500}
@media (max-width:840px){.mech-grid{grid-template-columns:1fr;gap:32px}.mech-grid.flip .mech-left{order:1}.mech-grid.flip .mech-right{order:2}}

/* memory cards */
.mem-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.mem-card{border:1px solid var(--line-soft);border-radius:4px;padding:20px 22px;background:var(--panel);position:relative}
.mem-card::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:2px;background:var(--mc)}
.mem-card .who{font-family:var(--f-mono);font-weight:700;font-size:.92rem;letter-spacing:.06em;color:var(--mc);margin-bottom:8px}
.mem-card p{font-size:.9rem;color:var(--dim);font-weight:300;line-height:1.5}
.m-helen{--mc:var(--helen)}.m-sonya{--mc:var(--sonya)}.m-claire{--mc:var(--claire)}.m-donna{--mc:var(--donna)}
@media (max-width:520px){.mem-grid{grid-template-columns:1fr}}

/* quote block (emotional relay) */
.quote-block{border-left:2px solid var(--accent);padding:24px 30px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--void)),var(--void));border-radius:0 4px 4px 0}
.quote-block .q{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.2rem,2vw,1.6rem);line-height:1.4;color:var(--ink)}
.quote-block .attr{margin-top:16px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}

/* jealousy timeline (OLYMPUS ONLY) */
.jeal-timeline{display:flex;flex-direction:column;gap:0}
.jeal-row{display:grid;grid-template-columns:90px 1fr;gap:20px;padding:18px 0;border-bottom:1px solid var(--line-soft);align-items:baseline}
.jeal-day{font-family:var(--f-mono);font-weight:700;font-size:1rem;letter-spacing:.04em}
.jeal-row.j1 .jeal-day{color:var(--claire)}.jeal-row.j2 .jeal-day{color:var(--donna)}.jeal-row.j3 .jeal-day{color:var(--alert)}
.jeal-row p{color:var(--dim);font-size:.98rem;font-weight:300}
.jeal-exchange{margin-top:26px;background:var(--panel);border:1px solid var(--line-soft);border-radius:4px;padding:22px 26px}
.jex{display:flex;gap:14px;align-items:baseline;margin-bottom:14px}
.jex:last-child{margin-bottom:0}
.jex .nm{font-family:var(--f-mono);font-weight:600;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;min-width:60px}
.jex.s1 .nm{color:var(--sonya)}.jex.s2 .nm{color:var(--donna)}
.jex .ln{font-family:var(--f-display);font-style:italic;font-size:1.05rem;color:var(--ink);font-weight:300}
.jex-note{margin-top:14px;font-family:var(--f-mono);font-size:.72rem;color:var(--muted);letter-spacing:.04em}

/* autonomous panels */
.auto-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.auto-card{border:1px solid var(--line-soft);border-radius:4px;padding:28px 28px;background:var(--panel);position:relative;overflow:hidden}
.auto-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--ac)}
.auto-card h4{font-family:var(--f-mono);font-weight:600;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ac);margin-bottom:16px}
.auto-card p{font-size:.95rem;color:var(--dim);font-weight:300;line-height:1.6}
.auto-card .em{font-family:var(--f-display);font-style:italic;color:var(--muted);margin-top:12px;font-size:.95rem}
.a-sonya{--ac:var(--sonya)}.a-donna{--ac:var(--donna)}.a-helen{--ac:var(--helen)}.a-claire{--ac:var(--claire)}
@media (max-width:760px){.auto-grid{grid-template-columns:1fr}}

/* mood strip (OLYMPUS ONLY) */
.mood-strip{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.mood-pill{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;padding:8px 14px;border-radius:100px;border:1px solid var(--line);color:var(--dim);display:inline-flex;gap:8px;align-items:center}
.mood-pill i{width:7px;height:7px;border-radius:50%;background:var(--mpc,var(--accent))}

/* ------------------------------------------------------------
   VISUAL LAYER — reactive states grid
   ------------------------------------------------------------ */
.states-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:clamp(40px,6vh,64px)}
.state-card{border:1px solid var(--line-soft);border-radius:4px;padding:24px 24px;background:var(--panel);transition:transform .35s ease,border-color .35s ease}
.state-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--sc) 40%,var(--line))}
.state-card::before{content:"";display:block;width:30px;height:3px;background:var(--sc);margin-bottom:18px}
.state-card h4{font-family:var(--f-mono);font-weight:600;font-size:.84rem;letter-spacing:.14em;text-transform:uppercase;color:var(--sc);margin-bottom:12px}
.state-card p{font-size:.92rem;color:var(--dim);font-weight:300;line-height:1.55}
.st-1{--sc:var(--helen)}.st-2{--sc:var(--sonya)}.st-3{--sc:var(--claire)}.st-4{--sc:var(--donna)}.st-5{--sc:var(--helen)}.st-6{--sc:var(--sonya)}
@media (max-width:860px){.states-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.states-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   SWITCHING COST — layers of time
   ------------------------------------------------------------ */
.layers{margin-top:clamp(40px,6vh,64px);border-top:1px solid var(--line)}
.layer-row{display:grid;grid-template-columns:200px 130px 1fr;gap:24px;align-items:center;padding:22px 0;border-bottom:1px solid var(--line-soft);transition:padding-left .35s ease,background .35s ease}
.layer-row:hover{padding-left:14px;background:linear-gradient(90deg,color-mix(in srgb,var(--lc) 8%,transparent),transparent)}
.layer-name{font-family:var(--f-mono);font-weight:600;font-size:.92rem;letter-spacing:.1em;text-transform:uppercase;color:var(--lc)}
.layer-scale{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.layer-desc{color:var(--dim);font-size:.98rem;font-weight:300}
.l-1{--lc:var(--claire)}.l-2{--lc:var(--helen)}.l-3{--lc:var(--sonya)}.l-4{--lc:var(--donna)}.l-5{--lc:var(--helen)}.l-6{--lc:var(--claire)}
@media (max-width:760px){.layer-row{grid-template-columns:1fr;gap:6px;padding:18px 0}.layer-scale{order:-1}}

/* ------------------------------------------------------------
   CONFIG / arch panels (Praxis configurable domain)
   ------------------------------------------------------------ */
.arch-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:clamp(40px,6vh,64px)}
.arch-panel{border:1px solid var(--line-soft);border-radius:4px;padding:32px 32px;background:var(--panel)}
.arch-panel.distinct{border-color:color-mix(in srgb,var(--accent) 24%,var(--line))}
.arch-panel h3{font-family:var(--f-mono);font-weight:600;font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;margin-bottom:18px;color:var(--accent)}
.arch-panel p{color:var(--dim);font-size:.98rem;font-weight:300;line-height:1.6;margin-bottom:12px}
.arch-panel p b{color:var(--ink);font-weight:500}
.config-list{margin-top:6px}
.config-item{padding:14px 0;border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:3px}
.config-item:last-child{border-bottom:none}
.config-item .ci-name{font-family:var(--f-mono);font-weight:600;font-size:.9rem;letter-spacing:.04em;color:var(--accent)}
.config-item .ci-desc{color:var(--dim);font-size:.86rem;font-weight:300}
@media (max-width:840px){.arch-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   AUDIENCE panels (Praxis "who it's for")
   ------------------------------------------------------------ */
.aud-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:clamp(40px,6vh,64px)}
.aud-panel{border:1px solid var(--line-soft);border-radius:4px;padding:32px 32px;background:var(--panel)}
.aud-panel::before{content:"";display:block;width:36px;height:3px;background:var(--audc,var(--accent));margin-bottom:20px}
.aud-panel h3{font-family:var(--f-mono);font-weight:700;font-size:1.1rem;letter-spacing:.08em;color:var(--audc,var(--accent));margin-bottom:6px}
.aud-tier{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:22px 0 12px}
.aud-panel ul li{list-style:none;padding:9px 0;color:var(--dim);font-size:.94rem;font-weight:300;display:flex;gap:12px;align-items:baseline;line-height:1.45}
.aud-panel ul li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--audc,var(--accent));flex-shrink:0;transform:translateY(2px)}
@media (max-width:840px){.aud-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   FRANCHISE (Praxis)
   ------------------------------------------------------------ */
.fr-hero{margin-top:clamp(34px,5vh,54px);padding:34px 38px;border-radius:4px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--void)),var(--void));border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line))}
.fr-hero p{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.3rem,2.6vw,2rem);color:var(--ink);line-height:1.3}
.fr-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:24px}
.fr-card{border:1px solid var(--line-soft);border-radius:4px;padding:24px 22px;background:var(--panel)}
.fr-card::before{content:"";display:block;width:28px;height:3px;background:var(--accent);margin-bottom:16px}
.fr-card h4{font-family:var(--f-mono);font-weight:600;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:10px}
.fr-card p{font-size:.88rem;color:var(--dim);font-weight:300;line-height:1.5}
@media (max-width:860px){.fr-grid{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.fr-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   PRICING
   ------------------------------------------------------------ */
.price-grid{display:grid;grid-template-columns:repeat(var(--cols,4),1fr);gap:16px;margin-top:clamp(40px,6vh,64px)}
.price-card{border:1px solid var(--line-soft);border-radius:4px;padding:30px 26px;background:var(--panel);position:relative;display:flex;flex-direction:column;transition:transform .4s ease,border-color .4s ease}
.price-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--pc,var(--accent))}
.price-card:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--pc,var(--accent)) 40%,var(--line))}
.price-amt{font-family:var(--f-mono);font-weight:700;font-size:clamp(1.5rem,2.4vw,2rem);color:var(--pc,var(--accent));letter-spacing:-.01em;line-height:1.05}
.price-label{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:12px 0 18px}
.price-card p{font-size:.9rem;color:var(--dim);font-weight:300;line-height:1.55}
.pc-1{--pc:var(--claire)}.pc-2{--pc:var(--sonya)}.pc-3{--pc:var(--donna)}.pc-4{--pc:var(--helen)}
.price-card.optional{border-style:dashed}
.price-note{margin-top:26px;text-align:center;font-family:var(--f-display);font-style:italic;color:var(--muted);font-size:1rem}
@media (max-width:900px){.price-grid{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.price-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   DEFENSIBILITY / moat
   ------------------------------------------------------------ */
.moat-statement{margin-top:30px;padding:30px;text-align:center;border:1px solid var(--line);border-radius:4px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 6%,var(--void)),var(--void))}
.moat-statement p{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.3rem,2.4vw,1.9rem);color:var(--accent)}

/* ------------------------------------------------------------
   COMPARE table (competitive)
   ------------------------------------------------------------ */
.compare-wrap{overflow-x:auto;margin-top:clamp(40px,6vh,64px)}
.compare{width:100%;border-collapse:collapse;font-size:.92rem}
.compare th,.compare td{text-align:left;padding:18px 18px;border-bottom:1px solid var(--line-soft);vertical-align:top}
.compare thead th{font-family:var(--f-mono);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line)}
.compare thead th.us{color:var(--accent)}
.compare tbody th{font-family:var(--f-mono);font-size:.74rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);width:18%}
.compare td{color:var(--dim);font-weight:300}
.compare .col-us{background:color-mix(in srgb,var(--accent) 6%,transparent);color:var(--ink);font-weight:400;border-left:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-right:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}
.compare tr:hover td:not(.col-us){color:var(--ink)}
@media (max-width:760px){.compare{font-size:.8rem}.compare th,.compare td{padding:12px 10px}}

/* ------------------------------------------------------------
   CLOSING / litany / mission
   ------------------------------------------------------------ */
.closing{min-height:90vh;display:flex;align-items:center;text-align:center;position:relative}
.closing .wrap{width:100%}
.litany{display:flex;flex-direction:column;gap:clamp(10px,1.8vh,20px);margin-bottom:clamp(40px,6vh,64px)}
.litany-line{font-family:var(--f-display);font-weight:300;font-size:clamp(1.5rem,4vw,3rem);line-height:1.1;letter-spacing:-.01em;color:var(--ink)}
.litany-line .nm{font-style:italic}
.l-h .nm{color:var(--helen)}.l-s .nm{color:var(--sonya)}.l-c .nm{color:var(--claire)}.l-d .nm{color:var(--donna)}
.l-lyk .nm{color:var(--lykeion)}.l-cor .nm{color:var(--cortana)}.l-oly .nm{color:var(--olympus)}
.litany-all{font-family:var(--f-mono)!important;font-weight:500;font-size:clamp(1rem,2.2vw,1.4rem)!important;letter-spacing:.06em;color:var(--dim);text-transform:uppercase;margin-top:14px}
.closing-imagine{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.4rem,3vw,2.4rem);color:var(--accent);margin-top:clamp(30px,5vh,50px)}
.closing-sub{font-family:var(--f-mono);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-top:22px}
.closing-accent{display:flex;justify-content:center;gap:8px;margin-top:50px}
.closing-accent i{width:60px;height:3px;border-radius:2px}

/* ------------------------------------------------------------
   FOOTER
   ------------------------------------------------------------ */
footer{border-top:1px solid var(--line);padding:50px 0 60px;position:relative;z-index:2}
.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}
.footer-brand{font-family:var(--f-mono);font-weight:700;letter-spacing:.2em;font-size:1.1rem;color:var(--accent)}
.footer-tag{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:6px}
.footer-contact a{color:var(--dim);text-decoration:none;font-family:var(--f-mono);font-size:.8rem;letter-spacing:.06em;border-bottom:1px solid var(--line);padding-bottom:2px;transition:color .25s,border-color .25s}
.footer-contact a:hover{color:var(--accent);border-color:var(--accent)}

/* ============================================================
   HOME — architecture diagram (signature)
   ============================================================ */
.arch-stage{margin-top:clamp(40px,6vh,70px);position:relative}
.arch-svg{width:100%;height:auto;display:block;max-width:1080px;margin:0 auto;aspect-ratio:16/9}
.arch-svg .core-ring{fill:none;stroke:color-mix(in srgb,var(--brand) 60%,transparent);stroke-width:1}
.arch-svg .core-pulse{fill:none;stroke:var(--brand);stroke-width:1;transform-box:fill-box;transform-origin:center;animation:corepulse 4.6s ease-out infinite}
.arch-svg .core-pulse.p2{animation-delay:2.3s}
@keyframes corepulse{0%{transform:scale(.35);opacity:.55}70%{opacity:0}100%{transform:scale(1.5);opacity:0}}
.arch-svg .core-fill{fill:color-mix(in srgb,var(--brand) 12%,var(--void))}
.arch-svg .link{fill:none;stroke-width:1.4;stroke-dasharray:7 9;stroke-linecap:round;opacity:.85;animation:linkflow 2.6s linear infinite}
@keyframes linkflow{to{stroke-dashoffset:-160}}
.arch-svg .node-ring{fill:var(--void-2);stroke-width:1.3}
.arch-svg .node-label{font-family:var(--f-mono);font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.arch-svg .node-role{font-family:var(--f-mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;fill:var(--muted)}
.arch-svg .core-label{font-family:var(--f-mono);font-weight:700;letter-spacing:.16em;fill:var(--ink);text-transform:uppercase}
.arch-svg .core-sub{font-family:var(--f-mono);font-size:7.5px;letter-spacing:.24em;fill:var(--brand);text-transform:uppercase}
.arch-svg .link-label{font-family:var(--f-mono);font-size:7px;letter-spacing:.18em;text-transform:uppercase;fill:var(--faint)}
@media (prefers-reduced-motion:reduce){
  .arch-svg .core-pulse{animation:none;opacity:0}
  .arch-svg .link{animation:none;stroke-dasharray:none;opacity:.6}
}

/* HOME — capability matrix (shared vs not) */
.matrix-wrap{overflow-x:auto;margin-top:clamp(40px,6vh,64px)}
.matrix{width:100%;border-collapse:collapse;font-size:.9rem;min-width:640px}
.matrix th,.matrix td{padding:16px 14px;text-align:center;border-bottom:1px solid var(--line-soft)}
.matrix thead th{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid var(--line)}
.matrix thead th.col-oly{color:var(--olympus)}.matrix thead th.col-cal{color:var(--calliope)}.matrix thead th.col-pra{color:var(--praxis)}
.matrix thead th.col-lyk{color:var(--lykeion)}.matrix thead th.col-cor{color:var(--cortana)}
.matrix tbody th{text-align:left;font-family:var(--f-mono);font-size:.78rem;font-weight:500;letter-spacing:.04em;color:var(--dim);text-transform:none}
.matrix .yes{color:var(--ink);font-family:var(--f-mono);font-size:1rem}
.matrix .no{color:var(--faint);font-family:var(--f-mono)}
.matrix tr.emph td,.matrix tr.emph th{background:color-mix(in srgb,var(--brand) 5%,transparent)}
.matrix tr.emph .yes{color:var(--brand)}
@media (max-width:760px){.matrix{font-size:.8rem}}

/* HOME — four worlds bands */
.worlds{display:flex;flex-direction:column;gap:18px;margin-top:clamp(40px,6vh,64px)}
.world-card{
  --accent:var(--wc);
  display:grid;grid-template-columns:auto 1fr auto;gap:clamp(20px,4vw,56px);align-items:center;
  border:1px solid var(--line-soft);border-radius:6px;background:var(--panel);
  padding:clamp(28px,4vw,46px) clamp(26px,4vw,52px);position:relative;overflow:hidden;
  text-decoration:none;transition:transform .4s ease,border-color .4s ease,background .4s ease;
}
.world-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--wc)}
.world-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--wc) 45%,var(--line));background:linear-gradient(100deg,color-mix(in srgb,var(--wc) 7%,var(--panel)),var(--panel) 60%)}
.world-idx{font-family:var(--f-mono);font-size:.72rem;font-weight:600;letter-spacing:.18em;color:var(--wc)}
.world-name{font-family:var(--f-mono);font-weight:700;font-size:clamp(1.8rem,4.5vw,3.2rem);letter-spacing:.02em;color:var(--ink);line-height:1}
.world-role{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.05rem,1.8vw,1.4rem);color:var(--dim);margin-top:10px;line-height:1.3}
.world-tag{font-family:var(--f-mono);font-size:.64rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--wc);margin-top:14px;display:inline-block}
.world-enter{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--wc);white-space:nowrap;display:inline-flex;align-items:center;gap:8px;transition:gap .3s ease}
.world-card:hover .world-enter{gap:14px}
.w-oly{--wc:var(--olympus)}.w-cal{--wc:var(--calliope)}.w-pra{--wc:var(--praxis)}.w-lyk{--wc:var(--lykeion)}.w-cor{--wc:var(--cortana)}
@media (max-width:760px){
  .world-card{grid-template-columns:1fr;gap:8px;padding:30px 26px}
  .world-enter{margin-top:14px}
}

/* ============================================================
   OLYMPUS — collaborator / screen-share window (favorite)
   ============================================================ */
.collab-section{--accent:var(--claire);padding:clamp(72px,10vh,150px) 0}
.collab-os-window{--cw:var(--claire);margin-top:clamp(36px,5vh,60px);border-radius:10px;overflow:hidden;border:1px solid color-mix(in srgb, var(--cw) 16%, var(--line));box-shadow:0 40px 100px -20px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.04);position:relative}
.collab-os-window.win-praxis{--cw:var(--praxis)}
.cos-titlebar{background:color-mix(in srgb,#1c1c22 95%, var(--cw) 5%);border-bottom:1px solid var(--line);padding:10px 16px;display:flex;align-items:center;gap:8px;position:relative}
.cos-dots{display:flex;gap:6px}
.cos-dots i{width:11px;height:11px;border-radius:50%}
.cos-title{position:absolute;left:50%;transform:translateX(-50%);font-family:var(--f-mono);font-size:.68rem;letter-spacing:.1em;color:var(--muted);display:flex;align-items:center;gap:8px;white-space:nowrap}
.cos-title::before{content:"⬤";color:#e84040;font-size:.5rem;animation:recdot 2s ease-in-out infinite}
@keyframes recdot{0%,100%{opacity:1}50%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.cos-title::before{animation:none}}
.cos-screen{background:#0d0e14;position:relative;font-family:ui-monospace,"SF Mono","Cascadia Code","Fira Code",monospace;font-size:clamp(11px,1.1vw,13.5px);line-height:1.65;min-height:420px;display:grid;grid-template-columns:48px 1fr}
.cos-gutter{background:#0a0b10;border-right:1px solid #1e1e28;padding:18px 0;text-align:right;color:#3a3a4a;font-size:.75em;line-height:1.65;user-select:none}
.cos-gutter span{display:block;padding:0 10px}
.cos-code{padding:18px 22px;overflow:hidden;position:relative}
.cos-code pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:inherit}
.tok-k{color:#c792ea}.tok-f{color:#82aaff}.tok-s{color:#c3e88d}.tok-c{color:#546e7a;font-style:italic}
.tok-n{color:#eeffff}.tok-p{color:#89ddff}.tok-num{color:#f78c6c}.tok-t{color:var(--claire)}
.cos-cursor-line{background:color-mix(in srgb, var(--claire) 8%, transparent);border-left:2px solid var(--claire);margin-left:-22px;padding-left:20px;display:block}
.cos-cursor{display:inline-block;width:2px;height:1.1em;background:var(--claire);vertical-align:text-bottom;margin-left:1px;animation:blink .9s step-end infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.cos-cursor{animation:none}}
.cos-transcript{border-top:1px solid var(--line);background:color-mix(in srgb,#0a0b10 90%,var(--cw) 10%);padding:10px 16px 10px 68px;display:flex;align-items:center;gap:12px;min-height:44px}
.cos-waveform{display:flex;gap:3px;align-items:center;flex-shrink:0}
.cos-waveform span{display:block;width:3px;border-radius:2px;background:var(--cw);height:3px;animation:wave var(--wd,.6s) ease-in-out infinite alternate}
@keyframes wave{from{height:3px}to{height:var(--wh,14px)}}
@media (prefers-reduced-motion:reduce){.cos-waveform span{animation:none;height:var(--wh,10px)}}
.cos-words{font-family:var(--f-mono);font-size:.8rem;color:var(--dim);letter-spacing:.02em;font-style:italic}
.cos-words em{color:var(--cw);font-style:normal;font-weight:500}
.cos-pip{position:absolute;bottom:52px;right:14px;width:clamp(100px,13%,160px);border-radius:8px;overflow:hidden;border:2px solid color-mix(in srgb,var(--cw) 45%,transparent);box-shadow:0 8px 30px rgba(0,0,0,.7);background:#000;aspect-ratio:3/4;z-index:10}
.cos-pip img{width:100%;height:100%;object-fit:cover;object-position:center 12%}
.cos-pip::after{content:"";position:absolute;inset:0;background:linear-gradient(to top, rgba(0,0,0,.5) 0%, transparent 45%)}
.cos-pip-label{position:absolute;bottom:6px;left:8px;z-index:11;font-family:var(--f-mono);font-size:.58rem;font-weight:600;letter-spacing:.1em;color:var(--cw);text-transform:uppercase}
.collab-caption{margin-top:clamp(32px,4vh,52px);display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,60px);align-items:start}
.collab-caption .em-statement{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.2rem,2.2vw,1.8rem);color:var(--ink);line-height:1.3}
.collab-caption .em-statement em{color:var(--cw,var(--claire));font-style:italic}
.collab-caption-right p{color:var(--dim);font-size:.98rem;font-weight:300;line-height:1.65;margin-bottom:14px}
.collab-caption-right p b{color:var(--ink);font-weight:500}
.collab-caption-right p em{color:var(--cw,var(--claire));font-style:italic}
.collab-pills{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
@media (max-width:860px){.collab-caption{grid-template-columns:1fr}.cos-pip{width:90px}}
@media (max-width:560px){.cos-screen{grid-template-columns:36px 1fr;font-size:10px}.cos-pip{width:70px;bottom:54px}}

/* ============================================================
   LYKEION — living whiteboard (signature) + bound evenings
   ============================================================ */
.lesson{margin-top:clamp(40px,6vh,64px);border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel);box-shadow:0 40px 100px -28px rgba(0,0,0,.85)}
.lesson-bar{display:flex;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--elevated) 80%,transparent)}
.lesson-bar .dots{display:flex;gap:6px}
.lesson-bar .dots i{width:10px;height:10px;border-radius:50%}
.lesson-title{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.lesson-live{margin-left:auto;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--lykeion);display:flex;align-items:center;gap:6px}
.lesson-live::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--lykeion);box-shadow:0 0 8px var(--lykeion);animation:blink 1.6s step-end infinite}
@media (prefers-reduced-motion:reduce){.lesson-live::before{animation:none}}
.whiteboard{position:relative;aspect-ratio:16/9;background:radial-gradient(120% 120% at 50% 0%,#0e1014,#0a0b0e);overflow:hidden}
.wb-svg{position:absolute;inset:0;width:100%;height:100%}
.wb-stroke{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1400;stroke-dashoffset:1400}
.whiteboard.draw .wb-stroke{animation:wbdraw 1.1s ease forwards;animation-delay:var(--d,0s)}
@keyframes wbdraw{to{stroke-dashoffset:0}}
.wb-fill{opacity:0}
.whiteboard.draw .wb-fill{animation:wbfade .6s ease forwards;animation-delay:var(--d,0s)}
@keyframes wbfade{to{opacity:1}}
.wb-label{font-family:var(--f-display);fill:var(--ink);opacity:0}
.whiteboard.draw .wb-label{animation:wbfade .6s ease forwards;animation-delay:var(--d,0s)}
.wb-hand{font-family:var(--f-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase}
@media (prefers-reduced-motion:reduce){
  .wb-stroke{stroke-dashoffset:0!important;animation:none!important}
  .wb-fill,.wb-label{opacity:1!important;animation:none!important}
}
.wb-pip{position:absolute;top:14px;right:14px;width:clamp(86px,12%,128px);aspect-ratio:3/4;border-radius:8px;overflow:hidden;border:2px solid color-mix(in srgb,var(--lykeion) 45%,transparent);box-shadow:0 8px 30px rgba(0,0,0,.7);background:#000;z-index:6}
.wb-pip img{width:100%;height:100%;object-fit:cover;object-position:center 12%}
.wb-pip-label{position:absolute;bottom:5px;left:7px;font-family:var(--f-mono);font-size:.56rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--lykeion);z-index:7}
.lesson-caption{border-top:1px solid var(--line);background:color-mix(in srgb,#0a0b0e 88%,var(--lykeion) 12%);padding:16px 22px;min-height:84px;display:flex;flex-direction:column;gap:10px}
.lc-thea{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1rem,1.7vw,1.35rem);color:var(--ink);line-height:1.4}
.lc-thea .caret{display:inline-block;width:2px;height:1.05em;background:var(--lykeion);vertical-align:text-bottom;margin-left:2px;animation:blink .9s step-end infinite}
.lc-interject{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.02em;color:var(--sonya);opacity:0;transition:opacity .4s ease}
.lc-interject.show{opacity:1}
.lc-interject b{font-weight:600;color:var(--sonya)}
@media (prefers-reduced-motion:reduce){.lc-thea .caret{animation:none}}

/* bound evenings — book spines */
.spines{display:flex;align-items:flex-end;gap:7px;margin-top:clamp(40px,6vh,64px);padding:30px clamp(20px,4vw,40px) 26px;border:1px solid var(--line-soft);border-radius:6px;background:linear-gradient(180deg,var(--panel),var(--void));overflow-x:auto}
.spine{position:relative;flex-shrink:0;width:var(--w,46px);height:var(--h,210px);border-radius:3px 3px 2px 2px;background:linear-gradient(100deg,color-mix(in srgb,var(--sc) 78%,#000) 0%,var(--sc) 50%,color-mix(in srgb,var(--sc) 60%,#000) 100%);box-shadow:inset 0 0 0 1px rgba(0,0,0,.25), 0 10px 24px -10px rgba(0,0,0,.8);display:flex;align-items:center;justify-content:center;transition:transform .35s ease}
.spine:hover{transform:translateY(-10px)}
.spine span{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--f-display);font-style:italic;font-size:.72rem;color:#0b0a08;letter-spacing:.02em;padding:8px 0;text-shadow:0 1px 0 color-mix(in srgb,var(--sc) 70%,#fff);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:90%}
.spine .foil{position:absolute;top:10px;left:50%;transform:translateX(-50%);width:60%;height:1px;background:color-mix(in srgb,#fff 55%,var(--sc));opacity:.6}
.spine .foil.b{top:auto;bottom:10px}
.spine.current{height:calc(var(--h,210px) + 26px)}
.spine.current::after{content:"";position:absolute;top:-12px;left:50%;transform:translateX(-50%);width:8px;height:34px;background:linear-gradient(var(--lykeion),color-mix(in srgb,var(--lykeion) 50%,#000));border-radius:2px;box-shadow:0 4px 10px rgba(0,0,0,.6)}
.spine-date{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--f-display);font-variant-numeric:oldstyle-nums;font-size:.62rem;color:rgba(0,0,0,.5);position:absolute;bottom:14px;left:50%;margin-left:-4px;letter-spacing:.04em}
.spines-note{margin-top:18px;font-family:var(--f-display);font-style:italic;color:var(--muted);font-size:1rem;text-align:center}

/* status: current vs next (Lykeion + reusable) */
.statusnow{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:clamp(40px,6vh,64px)}
.status-col{border:1px solid var(--line-soft);border-radius:6px;padding:30px 30px;background:var(--panel)}
.status-col.now{border-color:color-mix(in srgb,var(--cortana) 30%,var(--line))}
.status-col.next{border-style:dashed}
.status-h{font-family:var(--f-mono);font-size:.7rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;margin-bottom:20px;display:flex;align-items:center;gap:10px}
.status-col.now .status-h{color:var(--cortana)}
.status-col.next .status-h{color:var(--muted)}
.status-col ul li{list-style:none;padding:11px 0;border-bottom:1px solid var(--line-soft);color:var(--dim);font-size:.94rem;font-weight:300;line-height:1.5;display:flex;gap:12px;align-items:baseline}
.status-col ul li:last-child{border-bottom:none}
.status-col.now ul li::before{content:"▸";color:var(--cortana);flex-shrink:0}
.status-col.next ul li::before{content:"○";color:var(--muted);flex-shrink:0;font-size:.7em}
@media (max-width:760px){.statusnow{grid-template-columns:1fr}}

/* ============================================================
   JUNO (formerly Cortana) — module flow + roadmap
   ============================================================ */
.modules{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:clamp(40px,6vh,64px);position:relative}
.module{border:1px solid var(--line-soft);border-radius:4px;padding:26px 22px;background:var(--panel);position:relative}
.module::before{content:"";display:block;width:28px;height:3px;background:var(--accent);margin-bottom:16px}
.module .mstep{font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.module h4{font-family:var(--f-mono);font-weight:600;font-size:.95rem;letter-spacing:.02em;color:var(--ink);margin-bottom:10px}
.module p{font-size:.86rem;color:var(--dim);font-weight:300;line-height:1.5}
.module:not(:last-child)::after{content:"→";position:absolute;right:-12px;top:50%;transform:translateY(-50%);color:var(--accent);font-size:1rem;z-index:3}
@media (max-width:860px){.modules{grid-template-columns:1fr 1fr}.module:not(:last-child)::after{display:none}}
@media (max-width:480px){.modules{grid-template-columns:1fr}}

.doctrine{margin-top:clamp(34px,5vh,54px);padding:34px 38px;border-radius:6px;border:1px solid color-mix(in srgb,var(--cortana) 30%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--cortana) 10%,var(--void)),var(--void))}
.doctrine .lab{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--cortana);margin-bottom:14px;display:block}
.doctrine p{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.2rem,2.4vw,1.8rem);color:var(--ink);line-height:1.35}

.roadmap{margin-top:clamp(40px,6vh,64px);display:grid;grid-template-columns:repeat(3,1fr);gap:16px;position:relative}
.rm-stage{border:1px solid var(--line-soft);border-radius:6px;padding:28px 26px;background:var(--panel);position:relative}
.rm-stage::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--rmc)}
.rm-when{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--rmc);margin-bottom:8px}
.rm-stage h4{font-family:var(--f-display);font-weight:400;font-size:1.3rem;color:var(--ink);margin-bottom:14px}
.rm-stage ul li{list-style:none;padding:8px 0;color:var(--dim);font-size:.9rem;font-weight:300;line-height:1.45;display:flex;gap:10px;align-items:baseline}
.rm-stage ul li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--rmc);flex-shrink:0;transform:translateY(3px)}
.rm-now{--rmc:var(--cortana)}.rm-soon{--rmc:var(--sonya)}.rm-future{--rmc:var(--muted)}
.rm-future{border-style:dashed}
.rm-tag{position:absolute;top:14px;right:16px;font-family:var(--f-mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:var(--rmc);opacity:.8}
@media (max-width:860px){.roadmap{grid-template-columns:1fr}}

/* generic two-col prose */
.prose-2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,70px);margin-top:clamp(34px,5vh,54px);align-items:start}
.prose-2 p{color:var(--dim);font-weight:300;line-height:1.65;font-size:1.02rem;margin-bottom:14px}
.prose-2 p b{color:var(--ink);font-weight:500}
.prose-2 p em{font-style:italic;color:var(--accent)}
@media (max-width:760px){.prose-2{grid-template-columns:1fr;gap:24px}}

/* TODO / placeholder ribbon (visible note for working names) */
.todo-note{display:inline-flex;align-items:center;gap:8px;margin-top:18px;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border:1px dashed var(--line);border-radius:100px;padding:6px 14px}
.todo-note b{color:var(--dim);font-weight:500}

/* ============================================================
   PRODUCT HERO — desk image full-bleed with gradient scrim
   ============================================================ */
.phero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;padding:120px 0 clamp(56px,9vh,120px)}
.phero .wrap{width:100%;position:relative;z-index:2}
.phero-bg{position:absolute;inset:0;z-index:0;background:#000 center/cover no-repeat}
.phero::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg, color-mix(in srgb,var(--void) 78%,transparent), color-mix(in srgb,var(--void) 22%,transparent) 38%, color-mix(in srgb,var(--void) 94%,transparent) 100%),
    linear-gradient(90deg, color-mix(in srgb,var(--void) 82%,transparent), transparent 72%);
}
.theme-praxis   .phero-bg{background-image:url("../img/desk-praxis.jpg");background-position:center 20%}
.theme-lykeion  .phero-bg{background-image:url("../img/desk-lykeion.jpg");background-position:center 18%}
.theme-cortana  .phero-bg{background-image:url("../img/desk-cortana.jpg");background-position:center 30%}
.theme-calliope .phero-bg{background-image:url("../img/desk-calliope.jpg");background-position:center 16%}
.phero .hero-sub{color:var(--ink)}
.phero .scroll-cue{color:var(--dim)}
@media (max-width:640px){.phero::after{background:linear-gradient(180deg, color-mix(in srgb,var(--void) 60%,transparent), color-mix(in srgb,var(--void) 40%,transparent) 30%, var(--void) 100%)}}

/* litany color for the writing product */
.l-cal .nm{color:var(--calliope)}

/* CALLIOPE — manuscript variant of the screen-share window */
.cos-doc{position:relative;background:#0e0d12;padding:clamp(24px,3.4vw,48px) clamp(24px,4.5vw,64px);min-height:420px;font-family:var(--f-display);font-weight:300;color:var(--dim);line-height:1.9;font-size:clamp(1rem,1.3vw,1.22rem)}
.cos-doc p{margin-bottom:1.05em;max-width:60ch}
.cos-doc .ins{color:var(--ink);background:color-mix(in srgb,var(--claire) 18%,transparent);box-shadow:inset 0 -1px 0 var(--claire);border-radius:2px;padding:0 3px}
.cos-doc .del{color:var(--muted);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--alert) 70%,transparent)}
.cos-doc .sugg{display:block;margin:.4em 0 1.4em;font-family:var(--f-mono);font-style:normal;font-size:.74rem;letter-spacing:.03em;color:var(--claire);line-height:1.5}
.cos-doc .sugg::before{content:"✎  ";opacity:.85}

/* ============================================================
   ISOBAR / contour texture — accent-tinted topographic lines
   behind a section. Add class "isobar-bg" to a <section>.
   ============================================================ */
.isobar-bg{position:relative;isolation:isolate}
.isobar-bg::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.07;
  background:var(--accent);
  -webkit-mask:url("../img/isobar.svg") center/cover no-repeat;
  mask:url("../img/isobar.svg") center/cover no-repeat;
}
.isobar-bg > *{position:relative;z-index:1}

/* ============================================================
   JUNO (formerly Cortana) — hologram projection of the officer
   ============================================================ */
.holo-feature{display:flex;flex-direction:column;align-items:center;margin:clamp(38px,6vh,72px) auto 0;max-width:600px;text-align:center}
.holo-wrap{position:relative;display:flex;flex-direction:column;align-items:center;width:100%}
.holo-figure{position:relative;width:clamp(168px,26vw,278px);animation:holoflick 6s steps(48) infinite}
.holo-figure img{width:100%;height:auto;display:block;filter:drop-shadow(0 0 24px color-mix(in srgb,var(--sonya) 70%,transparent)) drop-shadow(0 0 64px color-mix(in srgb,var(--cortana) 35%,transparent))}
@keyframes holoflick{0%,100%{opacity:.97}45%{opacity:.92}47%{opacity:1}49%{opacity:.85}51%{opacity:.99}}
.holo-base{margin-top:-4px;width:clamp(250px,38vw,400px);height:40px;border-radius:50%;background:radial-gradient(closest-side, color-mix(in srgb,var(--cortana) 60%,transparent), transparent 72%);filter:blur(3px)}
.holo-tag{position:absolute;z-index:4;font-family:var(--f-mono);font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;color:var(--cortana);background:color-mix(in srgb,var(--void) 66%,transparent);border:1px solid color-mix(in srgb,var(--cortana) 30%,var(--line));border-radius:3px;padding:4px 8px;white-space:nowrap;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.holo-tag.t1{top:10%;left:-6%}.holo-tag.t2{top:42%;right:-8%}.holo-tag.t3{bottom:14%;left:-2%}
.holo-cap{margin-top:24px;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
@media (max-width:600px){.holo-tag{position:static;display:inline-block;margin:6px 4px 0}.holo-wrap{gap:4px}}

/* ============================================================
   JUNO (formerly Cortana) — tactical decorations: hero grid + area map
   ============================================================ */
.tac-grid{position:absolute;inset:0;z-index:2;pointer-events:none;
  background-image:linear-gradient(color-mix(in srgb,var(--cortana) 20%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--cortana) 20%,transparent) 1px,transparent 1px);
  background-size:clamp(48px,6vw,72px) clamp(48px,6vw,72px);
  -webkit-mask-image:radial-gradient(120% 100% at 50% 62%, black, transparent 80%);
  mask-image:radial-gradient(120% 100% at 50% 62%, black, transparent 80%);opacity:.55}
.tac-ticks{position:absolute;z-index:2;font-family:var(--f-mono);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb,var(--cortana) 65%,var(--muted))}
.tac-ticks.tl{top:88px;left:var(--pad)}.tac-ticks.br{bottom:26px;right:var(--pad)}
.tac-map{width:100%;height:auto;display:block;border:1px solid color-mix(in srgb,var(--cortana) 22%,var(--line));border-radius:6px;background:radial-gradient(130% 130% at 50% 25%, #0c1411, #070b09)}
.tac-map .mp-grid{stroke:color-mix(in srgb,var(--cortana) 26%,transparent);stroke-width:.8}
.tac-map .mp-contour{fill:none;stroke:color-mix(in srgb,var(--cortana) 38%,transparent);stroke-width:1.1}
.tac-map .mp-route{fill:none;stroke:var(--cortana);stroke-width:1.6;stroke-dasharray:6 6;animation:linkflow 3s linear infinite}
.tac-map .mp-label{font-family:var(--f-mono);font-size:9px;letter-spacing:.1em;fill:color-mix(in srgb,var(--cortana) 70%,var(--dim));text-transform:uppercase}
.tac-map .mp-blip{fill:var(--cortana);transform-box:fill-box;transform-origin:center;animation:blip 3.2s ease-out infinite}
.tac-map .mp-blip.b2{animation-delay:1.1s}.tac-map .mp-blip.b3{animation-delay:2.2s}
.tac-map .mp-dot{fill:var(--cortana)}
@keyframes blip{0%{transform:scale(.5);opacity:.9}70%{opacity:0}100%{transform:scale(2.6);opacity:0}}

/* ============================================================
   PRAXIS — Donna window: hard-to-navigate legacy dashboard
   ============================================================ */
.cos-dash{position:relative;background:#0c0d11;min-height:430px;display:grid;grid-template-columns:158px 1fr;font-family:var(--f-mono);font-size:11px;color:#9097a3;line-height:1.4}
.dash-toolbar{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:1px;background:#15161c;border-bottom:1px solid #24252e;padding:5px}
.dash-toolbar span{padding:3px 7px;background:#1b1c24;color:#7f8694;font-size:9.5px;letter-spacing:.03em;border:1px solid #24252e;white-space:nowrap}
.dash-toolbar span.on{background:color-mix(in srgb,var(--praxis) 32%,#1b1c24);color:#dce4ee;border-color:color-mix(in srgb,var(--praxis) 45%,#24252e)}
.dash-side{background:#0a0b0f;border-right:1px solid #1e1f27;padding:8px 0;font-size:10px;overflow:hidden}
.dash-side .grp{padding:6px 10px 3px;color:#565c6a;text-transform:uppercase;letter-spacing:.08em;font-size:8.5px}
.dash-side .it{padding:4px 10px 4px 16px;color:#7e8593;border-left:2px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-side .it.d2{padding-left:28px;color:#6c7280}
.dash-side .it.d3{padding-left:40px;color:#5d636f}
.dash-side .it.hit{color:#fff;border-left-color:var(--praxis);background:color-mix(in srgb,var(--praxis) 16%,transparent)}
.dash-main{padding:10px 12px;overflow:hidden}
.dash-bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;color:#6e7482;font-size:9.5px}
.dash-row{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.dash-w{border:1px solid #23242d;background:#101117;padding:8px 9px;flex:1;min-width:88px}
.dash-w h5{font-size:8.5px;color:#666c7a;text-transform:uppercase;letter-spacing:.05em;margin-bottom:5px;font-weight:500}
.dash-w .big{font-size:17px;color:#c9d2de;font-weight:600;letter-spacing:-.01em}
.dash-w .err{color:#d8745f}
.dash-table{width:100%;border-collapse:collapse;font-size:9.5px;margin-top:2px}
.dash-table th,.dash-table td{border:1px solid #20212a;padding:3px 6px;text-align:left;color:#7d8492;white-space:nowrap}
.dash-table th{background:#15161d;color:#9aa3b2;font-weight:500}
.dash-modal{position:absolute;top:54px;left:50%;transform:translateX(-50%);width:62%;background:#14151c;border:1px solid color-mix(in srgb,var(--praxis) 40%,#2a2b35);box-shadow:0 20px 50px -16px rgba(0,0,0,.85);padding:12px 14px;z-index:6;font-size:10px}
.dash-modal .x{position:absolute;top:6px;right:9px;color:#6e7482}
.dash-modal h5{color:#cdd6e2;font-size:11px;margin-bottom:6px;letter-spacing:.04em}
.dash-modal p{color:#8b92a0;font-size:9.5px;line-height:1.5}
@media (max-width:620px){.cos-dash{grid-template-columns:1fr;font-size:10px}.dash-side{display:none}.dash-modal{width:82%}}

/* clean daily-brief panel (contrast to the legacy portal) */
.cos-brief{position:relative;background:#0d0e13;min-height:430px;padding:clamp(22px,3vw,40px) clamp(22px,4vw,56px) clamp(22px,3vw,40px)}
.cb-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:18px}
.cb-title{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.15rem,2vw,1.55rem);color:var(--ink)}
.cb-date{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.cb-lead{font-family:var(--f-display);font-style:italic;font-size:clamp(.98rem,1.4vw,1.15rem);color:var(--dim);margin-bottom:18px}
.cb-item{display:grid;grid-template-columns:22px 1fr auto;gap:14px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--line-soft)}
.cb-item .n{font-family:var(--f-mono);color:var(--accent);font-weight:700;font-size:.82rem}
.cb-item .t{color:var(--ink);font-size:.96rem;font-weight:300;line-height:1.4}
.cb-item .t small{display:block;color:var(--muted);font-size:.8rem;margin-top:3px;font-family:var(--f-mono);letter-spacing:.01em}
.cb-item .tag{font-family:var(--f-mono);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));padding:4px 9px;border-radius:100px;white-space:nowrap}
.cb-foot{margin-top:18px;font-family:var(--f-mono);font-size:.78rem;color:var(--muted);line-height:1.5}
.cb-foot b{color:var(--accent);font-weight:500}
@media (max-width:620px){.cos-brief{padding:22px 22px 26px}.cb-item{grid-template-columns:18px 1fr;gap:10px}.cb-item .tag{grid-column:2;justify-self:start;margin-top:4px}}

/* ============================================================
   CIRCULAR INFOGRAPHICS — stat rings + concentric memory
   ============================================================ */
.stat-rings{display:flex;flex-wrap:wrap;gap:clamp(18px,3vw,46px);justify-content:center;margin-top:clamp(34px,5vh,56px)}
.stat-ring{position:relative;width:clamp(118px,15vw,152px);text-align:center}
.stat-ring svg{width:100%;height:auto;display:block;transform:rotate(-90deg)}
.stat-ring .rbg{fill:none;stroke:var(--line);stroke-width:7}
.stat-ring .rfg{fill:none;stroke:var(--accent);stroke-width:7;stroke-linecap:round;stroke-dasharray:var(--len,327);stroke-dashoffset:var(--len,327)}
.reveal.in .stat-ring .rfg{animation:ringfill 1.3s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes ringfill{to{stroke-dashoffset:var(--off,0)}}
.stat-ring .rval{position:absolute;top:50%;left:0;right:0;transform:translateY(-60%);font-family:var(--f-mono);font-weight:700;font-size:clamp(1.5rem,2.6vw,2rem);color:var(--ink);letter-spacing:-.01em}
.stat-ring .rval .u{font-size:.5em;color:var(--accent);font-weight:600;margin-left:1px}
.stat-ring .rlab{margin-top:10px;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);line-height:1.35}

.mem-rings{position:relative;width:clamp(230px,34vw,320px);aspect-ratio:1;margin:0 auto}
.mem-rings svg{width:100%;height:100%;display:block;overflow:visible}
.mem-rings .mr{fill:none;stroke:var(--accent)}
.mem-rings .mr-core{fill:color-mix(in srgb,var(--accent) 22%,var(--void));stroke:var(--accent);stroke-width:1.5}
.mem-rings .mr-yr{font-family:var(--f-mono);font-size:8.5px;letter-spacing:.08em;fill:var(--dim);text-transform:uppercase}
.mem-rings .mr-core-t{font-family:var(--f-mono);font-weight:700;font-size:11px;letter-spacing:.04em;fill:var(--ink);text-anchor:middle}
.mem-rings .mr-stroke{stroke-dasharray:var(--c);stroke-dashoffset:var(--c)}
.reveal.in .mem-rings .mr-stroke{animation:ringfill 1.4s ease forwards}
.mem-rings .mr2{animation-delay:.15s}.mem-rings .mr3{animation-delay:.3s}.mem-rings .mr4{animation-delay:.45s}.mem-rings .mr5{animation-delay:.6s}

/* ============================================================
   SCENE — contained, framed establishing photo with caption
   ============================================================ */
.scene{position:relative;margin-top:clamp(38px,5vh,62px);border-radius:10px;overflow:hidden;border:1px solid var(--line);box-shadow:0 34px 80px -34px rgba(0,0,0,.85)}
.scene-img{aspect-ratio:16/9;background:#0a0a0d center 22%/cover}
.scene::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,color-mix(in srgb,var(--void) 74%,transparent),transparent 60%),linear-gradient(0deg,color-mix(in srgb,var(--void) 82%,transparent),transparent 46%)}
.scene-cap{position:absolute;left:clamp(20px,3.5vw,42px);bottom:clamp(18px,3vw,32px);z-index:2;max-width:62%}
.scene-cap .l{font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:9px}
.scene-cap .t{font-family:var(--f-display);font-style:italic;font-weight:300;font-size:clamp(1.1rem,2.2vw,1.7rem);color:var(--ink);line-height:1.25}
@media (max-width:640px){.scene-img{aspect-ratio:4/3}.scene-cap{max-width:90%}}

/* ============================================================
   INSTITUTIONS (Lykeion) — teacher training + front office
   ============================================================ */
.inst-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:clamp(40px,6vh,64px)}
.inst-card{border:1px solid var(--line-soft);border-radius:8px;background:var(--panel);padding:clamp(28px,4vw,40px);position:relative;overflow:hidden}
.inst-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--ic,var(--accent))}
.inst-card .ic-lab{font-family:var(--f-mono);font-size:.66rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ic,var(--accent));display:block;margin-bottom:12px}
.inst-card h3{font-family:var(--f-display);font-weight:400;font-size:clamp(1.4rem,2.4vw,1.95rem);line-height:1.12;color:var(--ink);margin-bottom:14px}
.inst-card h3 .nm{font-style:italic;color:var(--ic,var(--accent))}
.inst-card p{color:var(--dim);font-weight:300;line-height:1.6;font-size:1rem;margin-bottom:12px}
.inst-card p b{color:var(--ink);font-weight:500}
.inst-queue{list-style:none;margin:6px 0 0}
.inst-queue li{display:flex;gap:12px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line-soft);color:var(--dim);font-size:.95rem;font-weight:300}
.inst-queue li:last-child{border-bottom:none}
.inst-queue li::before{content:"→";color:var(--ic,var(--accent));flex-shrink:0;font-size:.9em}
.inst-queue li s{color:var(--muted);text-decoration-color:color-mix(in srgb,var(--alert) 60%,transparent)}
@media (max-width:840px){.inst-grid{grid-template-columns:1fr}}

/* ------------------------------------------------------------
   REDUCED MOTION — suppress hover lifts + ambient pulses
   ------------------------------------------------------------ */
@media (prefers-reduced-motion:reduce){
  .gcard,.roster-card,.state-card,.price-card,.world-card,.spine,.layer-row,
  .world-card .world-enter,.nav-toggle span{transition:none}
  .gcard:hover,.roster-card:hover,.state-card:hover,.price-card:hover,
  .world-card:hover,.spine:hover{transform:none}
  .layer-row:hover{padding-left:0;background:none}
  .scroll-cue span{animation:none;opacity:.5}
  .holo-figure{animation:none}
  .tac-map .mp-blip,.tac-map .mp-route{animation:none}
  .stat-ring .rfg{stroke-dashoffset:var(--off,0);animation:none}
  .mem-rings .mr-stroke{stroke-dashoffset:0;animation:none}
}

/* ------------------------------------------------------------
   FOCUS + a11y
   ------------------------------------------------------------ */
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.skip-link{position:absolute;left:-999px;top:0;z-index:100;background:var(--accent);color:#0a0a0a;padding:10px 18px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;border-radius:0 0 6px 0}
.skip-link:focus{left:0}
::selection{background:color-mix(in srgb,var(--accent) 35%,transparent);color:#fff}
