/* ============================================================================
 * Umbriel — mystical / celestial theme
 * ==========================================================================*/
:root{
  --bg:#0a0a1f;
  --bg2:#12102b;
  --panel:rgba(28,24,58,0.55);
  --panel-solid:#1a1636;
  --ink:#ece8ff;
  --muted:#a49dc9;
  --gold:#e9c46a;
  --gold-soft:#f0d999;
  --violet:#8b7bd8;
  --line:rgba(233,196,106,0.18);
  --line-soft:rgba(180,157,201,0.16);
  --good:#8ce0b0;
  --hard:#ff9f9f;
  --shadow:0 20px 60px rgba(0,0,0,.45);
  --serif:'Cormorant Garamond','Cormorant','EB Garamond','Iowan Old Style','Palatino Linotype',Palatino,'Book Antiqua',Georgia,serif;
  --sans:'Jost','Avenir Next',Avenir,'Century Gothic',Futura,'Segoe UI',system-ui,-apple-system,Roboto,sans-serif;

  /* ── DESIGN TOKENS ─────────────────────────────────────────────────────────
   * One ramp, one grid, one radius family, one elevation family. Everything
   * shared references these so the whole app keeps a single, consistent hand.
   * Introduced in the design-system pass (v166). */
  /* Type ramp — a real modular scale */
  --fs-display:clamp(2.6rem,10vw,3.6rem);
  --fs-h1:clamp(2rem,5vw,3rem);
  --fs-h2:1.5rem;
  --fs-h3:1.25rem;
  --fs-lg:1.125rem;
  --fs-base:1rem;
  --fs-sm:.875rem;
  --fs-xs:.75rem;
  --lh-tight:1.12;
  --lh-body:1.6;
  --tracking-caps:.2em;
  /* Spacing — 8pt grid (with a 4px half-step) */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:24px; --sp-6:32px; --sp-7:40px; --sp-8:56px;
  /* Radii — five steps, from controls to hero cards, plus a true pill */
  --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:24px; --r-pill:999px;
  /* Elevation — three ambient depths + one gold "raised action" */
  --sh-1:0 2px 8px rgba(0,0,0,.28);
  --sh-2:0 8px 24px rgba(0,0,0,.34);
  --sh-3:0 18px 50px rgba(0,0,0,.42);
  --sh-gold:0 8px 24px rgba(233,196,106,.3);
  /* Motion — one easing, one base duration (movement still respects data-motion) */
  --ease:cubic-bezier(.22,.61,.36,1);
  --dur:.25s;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;font-family:var(--sans);color:var(--ink);
  background:
    radial-gradient(1200px 700px at 80% -10%, rgba(139,123,216,.22), transparent 60%),
    radial-gradient(900px 600px at 10% 10%, rgba(233,196,106,.10), transparent 55%),
    linear-gradient(180deg,#0a0a1f 0%, #0d0b22 40%, #0a0918 100%);
  min-height:100vh;overflow-x:hidden;line-height:1.6;
}
/* ── Splash / loading screen ──────────────────────────────────────────────
   Celestial glyphs swirl in, the eclipse blooms, the wordmark settles, then it
   fades to the app. Self-dismissing (never blocks) and theme-aware. */
#splash{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;
  background:var(--bg2,#12102b);overflow:hidden;
  animation:sp-hide 1.9s ease forwards}
@keyframes sp-hide{0%,74%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
.sp-ring{position:absolute;width:0;height:0;left:50%;top:50%;
  animation:sp-ring 1.7s cubic-bezier(.2,.7,.3,1) forwards}
@keyframes sp-ring{0%{transform:rotate(-140deg) scale(.25);opacity:0}
  38%{opacity:.95}72%{transform:rotate(18deg) scale(1);opacity:.9}
  100%{transform:rotate(42deg) scale(1.15);opacity:0}}
.sp-g{position:absolute;left:0;top:0;font-size:1.35rem;color:var(--gold-soft);
  transform:rotate(var(--a)) translateY(-136px);opacity:.9;
  filter:drop-shadow(0 0 8px rgba(233,196,106,.5))}
.sp-core{position:relative;display:flex;flex-direction:column;align-items:center;gap:20px;
  animation:sp-core 1.5s ease .28s both}
@keyframes sp-core{0%{opacity:0;transform:scale(.72)}55%{opacity:1}100%{opacity:1;transform:scale(1)}}
.sp-eclipse{width:92px;height:92px;border-radius:50%;background:#07070e;
  box-shadow:0 0 0 2px rgba(255,244,214,.92),0 0 30px 8px rgba(233,196,106,.55),0 0 70px 26px rgba(233,196,106,.22);
  animation:sp-ecl 2s ease-in-out .3s both}
.sp-eclipse::before{content:"";position:absolute;top:16px;left:18px;width:11px;height:11px;border-radius:50%;
  background:#fff8e6;box-shadow:0 0 10px 3px rgba(255,248,230,.9)}
@keyframes sp-ecl{0%{transform:scale(.6)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
.sp-word{font-family:var(--serif);font-size:2.1rem;font-weight:600;color:var(--gold);
  display:flex;flex-direction:column;align-items:center;line-height:1;letter-spacing:.5px}
.sp-sub{font-family:var(--sans);font-size:.42em;font-weight:500;letter-spacing:.42em;
  text-transform:uppercase;color:var(--gold-soft);margin-top:.7em}
#splash.sp-skip{opacity:0;visibility:hidden;transition:opacity .3s}
/* Reduced motion: no swirl, no scaling — a calm, brief still frame that fades out. */
html[data-motion="reduced"] #splash{animation:sp-hide 1.1s ease forwards}
html[data-motion="reduced"] .sp-ring{display:none}
html[data-motion="reduced"] .sp-core{animation:sp-fade .5s ease both}
html[data-motion="reduced"] .sp-eclipse{animation:none}
@keyframes sp-fade{from{opacity:0}to{opacity:1}}

/* starfield */
#starfield{position:fixed;inset:0;z-index:0;pointer-events:none}
.atmos-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:block}
/* view "arrive" transition — only ever applied when motion is full (see showView) */
.view-enter{animation:view-arrive .42s cubic-bezier(.22,.61,.36,1) both}
@keyframes view-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* Staged "settle into focus" — a screen's blocks rise in one after another.
   Motion=full only (the whole rule is scoped to it), so reduced motion is
   untouched: the view simply appears, no movement. */
@keyframes stagger-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
html[data-motion="full"] .view-stagger>*{animation:stagger-in .5s var(--ease) both}
html[data-motion="full"] .view-stagger>*:nth-child(1){animation-delay:0s}
html[data-motion="full"] .view-stagger>*:nth-child(2){animation-delay:.05s}
html[data-motion="full"] .view-stagger>*:nth-child(3){animation-delay:.1s}
html[data-motion="full"] .view-stagger>*:nth-child(4){animation-delay:.15s}
html[data-motion="full"] .view-stagger>*:nth-child(5){animation-delay:.2s}
html[data-motion="full"] .view-stagger>*:nth-child(6){animation-delay:.25s}
html[data-motion="full"] .view-stagger>*:nth-child(n+7){animation-delay:.3s}
/* Tactile press feedback — a gentle depress on the touchable surfaces, so a tap
   feels physical before the next screen settles in. Motion=full only. */
html[data-motion="full"] .home-tile:active,
html[data-motion="full"] .home-skymap:active,
html[data-motion="full"] .btn-primary:active,
html[data-motion="full"] .home-tile:active .ht-icon{transform:scale(.97)}
html[data-motion="full"] .cm-star:active .cm-dot{transform:scale(1.35);transition:transform .12s var(--ease)}
/* directional "page-turn" arrivals, set by swipe navigation (motion=full only) */
.view-from-right{animation:view-from-right .34s cubic-bezier(.22,.61,.36,1) both}
.view-from-left{animation:view-from-left .34s cubic-bezier(.22,.61,.36,1) both}
@keyframes view-from-right{from{opacity:0;transform:translateX(11%)}to{opacity:1;transform:none}}
@keyframes view-from-left{from{opacity:0;transform:translateX(-11%)}to{opacity:1;transform:none}}
/* the drag pill — tells you where you'll land before you let go */
.swipe-hint{position:fixed;top:50%;transform:translateY(-50%);z-index:60;pointer-events:none;
  padding:9px 15px;border-radius:999px;font-size:.92rem;font-weight:600;letter-spacing:.3px;
  color:var(--ink);background:rgba(18,18,40,.82);border:1px solid var(--line-soft);
  backdrop-filter:blur(7px);box-shadow:0 6px 22px rgba(0,0,0,.4);opacity:0;transition:opacity .12s}
.swipe-hint.right{right:16px}
.swipe-hint.left{left:16px}
.swipe-hint.ready{border-color:rgba(233,196,106,.75);color:var(--gold-soft);
  box-shadow:0 0 20px 3px rgba(233,196,106,.35)}

/* ── The Sky Right Now — living orrery of the real planets ─────────────────── */
.sky-orrery{position:relative;width:100%;margin:6px 0 16px;border-radius:var(--r-xl);overflow:hidden;
  background:radial-gradient(120% 100% at 50% 40%,rgba(30,26,58,.6),rgba(8,8,20,.85));
  border:1px solid var(--line-soft);box-shadow:var(--sh-2)}
.sky-canvas{display:block;width:100%;cursor:pointer}
.sky-personal{font-family:var(--serif);font-size:1.2rem;font-style:italic;color:var(--gold-soft);
  margin:4px auto 8px;max-width:40ch;line-height:1.4}
.sky-personal b{font-style:normal;font-weight:600;color:var(--gold)}
.sky-info{min-height:58px;display:flex;align-items:center;justify-content:center;gap:16px;
  text-align:center;padding:14px 18px;border:1px solid var(--line-soft);
  border-radius:var(--r-lg);background:var(--panel);margin-bottom:8px;transition:border-color .3s}
.sky-info.si-open{border-color:rgba(233,196,106,.4);text-align:left;box-shadow:inset 0 0 40px rgba(233,196,106,.05)}
.si-planet{flex:none;width:64px;height:64px;filter:drop-shadow(0 3px 10px rgba(0,0,0,.45))}
.si-text{min-width:0}
.sky-info .si-head{font-size:1.12rem}
.sky-info .si-glyph{color:var(--gold);font-size:1.2rem;margin-right:6px}
.sky-info .si-retro{color:var(--violet);font-weight:700}
.sky-info .si-deg{font-size:.78rem;letter-spacing:.6px;margin-top:3px;text-transform:uppercase}
.sky-info .si-line{font-size:.92rem;margin-top:6px;line-height:1.5;max-width:40ch}
.sky-info.si-in{animation:si-reveal .36s cubic-bezier(.22,.61,.36,1) both}
@keyframes si-reveal{from{opacity:.3;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
html[data-motion="reduced"] .sky-info.si-in{animation:none}
:root[data-theme="light"] .sky-orrery{background:radial-gradient(120% 100% at 50% 40%,#e9e6f5,#dcd8ee)}

/* ── The Sky Map: a touchable constellation of the whole app ─────────────── */
.starmap-wrap{margin:8px 0 14px}
.starmap{position:relative;width:100%;height:min(74vh,600px);min-height:440px}
.cm-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.cm-lines line{stroke:rgba(233,196,106,.22);stroke-width:.28;vector-effect:non-scaling-stroke;stroke-linecap:round}
.cm-star{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;
  align-items:center;gap:7px;text-decoration:none;color:var(--ink);width:104px;text-align:center;
  z-index:2;-webkit-tap-highlight-color:transparent}
.cm-dot{position:relative;width:34px;height:34px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 38% 34%,rgba(255,247,224,.95),rgba(233,196,106,.5) 55%,rgba(233,196,106,0) 74%);
  box-shadow:0 0 14px 4px rgba(233,196,106,.28);transition:transform .28s cubic-bezier(.22,.61,.36,1),box-shadow .28s}
.cm-glyph{font-size:15px;line-height:1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.cm-name{font-size:.82rem;font-weight:600;letter-spacing:.2px;color:var(--ink);
  text-shadow:0 1px 6px rgba(7,7,20,.9)}
.cm-bright .cm-dot{width:46px;height:46px;box-shadow:0 0 22px 7px rgba(233,196,106,.34)}
.cm-bright .cm-glyph{font-size:20px}
.cm-bright .cm-name{font-size:.9rem;color:var(--gold-soft)}
.cm-dim .cm-dot{width:27px;height:27px;opacity:.9;box-shadow:0 0 10px 3px rgba(199,186,247,.24);
  background:radial-gradient(circle at 38% 34%,rgba(255,247,224,.85),rgba(199,186,247,.4) 55%,rgba(199,186,247,0) 74%)}
.cm-dim .cm-glyph{font-size:12px}
.cm-dim .cm-name{font-size:.76rem;opacity:.85}
/* gentle breathing — ONLY when motion is full (reduced motion → dead still) */
html[data-motion="full"] .cm-dot{animation:cm-pulse 3.6s ease-in-out infinite;animation-delay:calc(var(--i) * .32s)}
@keyframes cm-pulse{0%,100%{box-shadow:0 0 12px 3px rgba(233,196,106,.22);transform:scale(1)}
  50%{box-shadow:0 0 20px 6px rgba(233,196,106,.4);transform:scale(1.06)}}
html[data-motion="full"] .cm-bright .cm-dot{animation-name:cm-pulse-bright}
@keyframes cm-pulse-bright{0%,100%{box-shadow:0 0 20px 6px rgba(233,196,106,.3);transform:scale(1)}
  50%{box-shadow:0 0 30px 10px rgba(233,196,106,.5);transform:scale(1.07)}}
/* focus + hover: the star blooms and stands proud */
.cm-star:hover .cm-dot,.cm-star:focus-visible .cm-dot{transform:scale(1.22);
  box-shadow:0 0 30px 10px rgba(233,196,106,.6)}
.cm-star:focus-visible{outline:none}
.cm-star:focus-visible .cm-name{color:var(--gold);text-decoration:underline}
.starmap-foot{text-align:center;font-size:.9rem;margin:2px 0 20px}
.starmap-foot a{color:var(--gold-soft)}

/* ── The "card of the day" hero — the reference for the new visual language ── */
.today-hero{position:relative;width:100%;min-height:min(76vh,660px);border-radius:var(--r-xl);
  overflow:hidden;display:flex;align-items:flex-end;margin:0 0 26px;isolation:isolate;
  box-shadow:var(--sh-3)}
/* shorter hero for content-heavy screens (Weather, Timeline) — leaves room below */
.today-hero.th-compact{min-height:min(56vh,480px)}
.th-sky{position:absolute;inset:0;z-index:0}
.th-eclipse{position:absolute;top:-46px;right:-40px;z-index:1;opacity:.5;
  filter:blur(1px) drop-shadow(0 0 40px rgba(233,196,106,.4));pointer-events:none}
.th-eclipse svg{display:block}
.th-stars{position:absolute;inset:0;z-index:1;pointer-events:none}
.th-stars span{position:absolute;background:#fff7e0;border-radius:50%;opacity:.55;
  box-shadow:0 0 5px rgba(255,247,224,.7)}
.th-scrim{position:absolute;inset:0;z-index:2;
  background:linear-gradient(0deg,rgba(6,6,16,.82) 4%,rgba(6,6,16,.34) 42%,transparent 72%)}
.th-content{position:relative;z-index:3;padding:clamp(22px,6vw,40px);width:100%}
/* the new type ramp, shown off here: kicker(caps) · display headline · lede · pill */
.th-kicker{font-family:var(--sans);font-size:.82rem;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:rgba(255,247,224,.82);margin:0 0 14px}
.th-title{font-family:var(--serif);font-weight:600;line-height:1.04;letter-spacing:-.01em;
  font-size:clamp(2.6rem,10vw,3.6rem);color:#fff;margin:0 0 16px;
  text-shadow:0 2px 24px rgba(0,0,0,.5)}
.th-line{font-size:clamp(1.02rem,3.6vw,1.18rem);line-height:1.5;color:rgba(255,247,224,.92);
  max-width:34ch;margin:0 0 26px;text-shadow:0 1px 10px rgba(0,0,0,.5)}
/* the heading is focused programmatically on nav (for screen readers), not tabbed
   to — so suppress the decorative ring here to keep the full-bleed hero pristine */
.today-hero .th-title:focus,.today-hero .th-title:focus-visible{outline:none}
.th-cta{font-family:var(--sans);font-size:1rem;font-weight:600;letter-spacing:.2px;
  color:#0a0a1f;background:var(--gold);border:none;border-radius:999px;
  padding:15px 34px;cursor:pointer;transition:transform .2s,box-shadow .2s;
  box-shadow:0 6px 20px rgba(233,196,106,.34)}
.th-cta:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(233,196,106,.5)}
.th-cta:focus-visible{outline:2px solid #fff;outline-offset:3px}
#today-deep .page-head{margin-top:6px}
/* motion=full: the generated sky breathes slowly; reduced motion → dead still */
.today-hero.th-live .th-sky{animation:th-breathe 22s ease-in-out infinite alternate}
.today-hero.th-live .th-stars span{animation:th-twinkle 4s ease-in-out infinite;animation-delay:var(--d,0s)}
@keyframes th-breathe{from{transform:scale(1.02) translateY(0)}to{transform:scale(1.08) translateY(-1.5%)}}
@keyframes th-twinkle{0%,100%{opacity:.25}50%{opacity:.75}}
:root[data-stim="minimal"] .th-eclipse{opacity:.28}
:root[data-stim="minimal"] .th-stars{display:none}

/* in-app dialogs — the calm replacement for native prompt/alert/confirm */
.ui-modal-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  padding:22px;background:rgba(6,6,16,.66);backdrop-filter:blur(4px);animation:ui-fade .18s ease both}
.ui-modal-overlay.leaving{animation:ui-fade .18s ease reverse both}
@keyframes ui-fade{from{opacity:0}to{opacity:1}}
.ui-modal{width:100%;max-width:400px;background:var(--panel-solid);border:1px solid var(--line-soft);
  border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-3);animation:ui-rise .22s var(--ease) both}
html[data-motion="reduced"] .ui-modal,html[data-motion="reduced"] .ui-modal-overlay{animation:none}
@keyframes ui-rise{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.ui-modal-title{font-family:var(--serif);color:var(--gold-soft);font-size:var(--fs-h3);font-weight:600;margin:0 0 8px}
.ui-modal-msg{color:var(--ink);font-size:var(--fs-base);line-height:1.5;margin:0 0 4px}
.ui-modal .ui-input{margin-top:14px}
.ui-modal-acts{display:flex;gap:10px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}
.ui-modal-acts .btn-ghost,.ui-modal-acts .btn-primary{padding:11px 22px}
.btn-primary.danger{background:linear-gradient(120deg,#e0817a,#c25248);color:#fff;box-shadow:0 8px 24px rgba(200,80,70,.28)}
.btn-primary.danger:hover{box-shadow:0 12px 32px rgba(200,80,70,.42)}
.ui-pick-list{display:flex;flex-direction:column;gap:8px;margin-top:14px;max-height:50vh;overflow:auto}
.ui-pick-item{text-align:left;padding:13px 16px;border-radius:var(--r-md);border:1px solid var(--line-soft);
  background:rgba(255,255,255,.03);color:var(--ink);font-family:var(--sans);font-size:var(--fs-base);cursor:pointer;transition:border-color .2s var(--ease),background .2s var(--ease)}
.ui-pick-item:hover,.ui-pick-item:focus-visible{border-color:rgba(233,196,106,.5);background:rgba(233,196,106,.08);outline:none}

/* home entry point to the sky map */
.home-skymap{display:flex;align-items:center;gap:13px;margin:12px 0 4px;padding:14px 16px;
  border:1px solid var(--line-soft);border-radius:16px;text-decoration:none;color:var(--ink);
  background:linear-gradient(120deg,rgba(233,196,106,.08),rgba(139,123,216,.07));transition:.22s}
.home-skymap:hover{border-color:rgba(233,196,106,.5);transform:translateY(-1px)}
.home-skymap .hs-ic{font-size:1.4rem;color:var(--gold)}
.home-skymap .hs-txt{display:flex;flex-direction:column;line-height:1.35;flex:1}
.home-skymap .hs-txt b{font-weight:600}
.home-skymap .hs-txt .muted{font-size:.85rem}
.home-skymap .hs-arrow{color:var(--gold-soft);font-size:1.1rem}
.star{position:absolute;background:#fff;border-radius:50%;
  animation:twinkle 4s infinite ease-in-out;box-shadow:0 0 4px rgba(255,255,255,.6)}
@keyframes twinkle{0%,100%{opacity:.2}50%{opacity:.9}}

/* layout */
.topbar,.view,.site-footer{position:relative;z-index:2}
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px clamp(16px,5vw,54px);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line-soft);position:sticky;top:0;z-index:20;
  background:rgba(10,10,31,.6);
}
.brand{font-family:var(--serif);font-size:1.7rem;font-weight:600;color:var(--gold);
  text-decoration:none;letter-spacing:.5px;display:flex;align-items:center;gap:9px}
.brand-glyph{display:inline-flex;align-items:center;filter:drop-shadow(0 0 8px rgba(233,196,106,.5))}
.brand-eclipse{display:block;width:1.5rem;height:1.5rem}
/* Wordmark lockup: "Umbriel" is the spoken name, "Astrology" a small kicker beneath. */
.brand-word{display:inline-flex;flex-direction:column;line-height:1;justify-content:center}
.brand-sub{font-family:var(--sans);font-size:.44em;font-weight:500;letter-spacing:.42em;
  text-transform:uppercase;color:var(--gold-soft);opacity:.85;margin-top:.32em;padding-left:.06em}
.nav{display:flex;gap:clamp(10px,2.5vw,30px);flex-wrap:wrap}
.nav-group{display:none}
.nav-link{color:var(--muted);text-decoration:none;font-weight:400;font-size:.98rem;
  letter-spacing:.4px;padding:6px 2px;border-bottom:2px solid transparent;transition:.25s}
.nav-link:hover{color:var(--ink)}
.nav-link.active{color:var(--gold);border-color:var(--gold)}

.view{display:none;max-width:1120px;margin:0 auto;padding:clamp(24px,4vw,48px) clamp(16px,5vw,40px) 60px}
.view.active{display:block;animation:fade .5s ease}
@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* hero */
.hero{text-align:center;padding:clamp(30px,7vw,90px) 10px 40px}
.hero-moon{font-size:clamp(3rem,10vw,5.5rem);color:var(--gold-soft);
  filter:drop-shadow(0 0 24px rgba(233,196,106,.45));animation:float 6s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
.hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(2.2rem,6vw,4rem);
  line-height:1.08;margin:.3em 0 .3em;background:linear-gradient(120deg,#fff,var(--gold-soft) 60%,var(--violet));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.hero-sub{max-width:640px;margin:0 auto 1.8em;color:var(--muted);font-size:clamp(1rem,2.2vw,1.18rem)}
.hero-cta{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

.btn-primary{
  display:inline-block;background:linear-gradient(120deg,var(--gold),#d99a3c);
  color:#231a05;font-weight:600;font-family:var(--sans);font-size:var(--fs-base);
  padding:14px 30px;border-radius:var(--r-pill);text-decoration:none;border:none;cursor:pointer;
  letter-spacing:.4px;box-shadow:var(--sh-gold);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 38px rgba(233,196,106,.42)}
.btn-primary.full{width:100%;margin-top:var(--sp-2)}
.btn-primary.wide{display:block;max-width:340px;margin:22px auto 0}
.btn-ghost{
  display:inline-block;background:transparent;color:var(--gold-soft);
  border:1px solid var(--line);padding:13px 26px;border-radius:var(--r-pill);text-decoration:none;
  cursor:pointer;font-family:var(--sans);font-size:.98rem;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}
.btn-ghost:hover{background:rgba(233,196,106,.08);border-color:var(--gold)}

/* feature cards */
.feature-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-top:30px}
.feature{background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--r-xl);
  padding:28px 24px;text-decoration:none;color:var(--ink);backdrop-filter:blur(6px);
  transition:transform .28s var(--ease),border-color .28s var(--ease),box-shadow .28s var(--ease);display:block}
.feature:hover{transform:translateY(-4px);border-color:var(--line);box-shadow:var(--shadow)}
.feature-glyph{font-size:2rem;color:var(--gold);margin-bottom:8px}
.feature h3{font-family:var(--serif);font-size:var(--fs-h2);margin:.1em 0 .3em;font-weight:600}
.feature p{color:var(--muted);font-size:.95rem;margin:0}
.home-note{text-align:center;margin-top:38px;color:var(--muted);font-size:.9rem;opacity:.85}

/* page heads */
.page-head{text-align:center;margin-bottom:var(--sp-5)}
.page-head h1{font-family:var(--serif);font-size:var(--fs-h1);font-weight:600;margin:.2em 0;line-height:var(--lh-tight)}
.page-head p{color:var(--muted);max-width:640px;margin:0 auto}
/* Route titles are focused programmatically on navigation (for screen readers),
   never tabbed to — so no decorative focus box. Real controls keep their ring. */
.page-head h1:focus,.page-head h1:focus-visible,
.hero h1:focus,.hero h1:focus-visible{outline:none}

/* forms */
.form-card{background:var(--panel);border:1px solid var(--line-soft);border-radius:22px;
  padding:clamp(20px,3vw,34px);backdrop-filter:blur(8px);box-shadow:var(--shadow);max-width:680px;margin:0 auto}
.form-card.slim{max-width:480px}
.form-title{font-family:var(--serif);color:var(--gold-soft);font-size:1.5rem;margin:0 0 14px;font-weight:600}
.syn-forms{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.field{margin-bottom:var(--sp-4)}
.field label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:6px;letter-spacing:.4px}
.field.checkbox label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.86rem;cursor:pointer}
.field.checkbox input{width:auto;accent-color:var(--gold)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
input[type=text],input[type=date],input[type=time],select{
  width:100%;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--line-soft);
  background:rgba(10,8,26,.6);color:var(--ink);font-family:var(--sans);font-size:var(--fs-base);transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
input:focus,select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(233,196,106,.15)}
input::placeholder{color:#6b6493}
select option{background:#171331;color:var(--ink)}
.place-search{display:flex;gap:8px}
.place-search input{flex:1}
.place-search .btn-ghost{padding:10px 18px;white-space:nowrap}
.place-results{margin-top:6px;max-height:210px;overflow:auto;border-radius:10px}
.place-item{padding:10px 12px;background:rgba(10,8,26,.5);border:1px solid var(--line-soft);
  border-radius:10px;margin-top:6px;cursor:pointer;font-size:.88rem;color:var(--muted);transition:.2s}
.place-item:hover{background:rgba(233,196,106,.1);color:var(--ink);border-color:var(--line)}
.coords{margin-top:8px;font-size:.85rem;color:var(--gold-soft)}
.coords a{color:var(--violet)}
.form-msg{color:var(--hard);margin-top:12px;min-height:1.2em;font-size:.92rem}
.form-msg.center{text-align:center}
.inline-link,.form-msg a{color:var(--gold)}
.muted{color:var(--muted)}

/* results */
.result{margin-top:34px}
.result-header{text-align:center;margin-bottom:22px}
.result-header h2{font-family:var(--serif);font-size:clamp(1.7rem,4vw,2.5rem);font-weight:600;margin:.1em 0}
.result-header .sub{color:var(--muted);font-size:.95rem}

.big-three{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:560px;margin:0 auto 30px}
.big-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:20px 12px;text-align:center}
.bc-glyph{font-size:1.8rem;color:var(--gold)}
.bc-label{font-size:.75rem;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:6px 0 2px}
.bc-sign{font-family:var(--serif);font-size:1.25rem;color:var(--gold-soft)}

.chart-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:26px;align-items:start}
.wheel-wrap{background:radial-gradient(circle at 50% 45%,rgba(30,24,64,.7),rgba(12,10,30,.4));
  border:1px solid var(--line-soft);border-radius:24px;padding:14px;box-shadow:var(--shadow)}
.wheel{width:100%;aspect-ratio:1/1}
.tables-wrap,.lower-grid{margin-top:0}
.lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:24px}

.card{background:var(--panel);border:1px solid var(--line-soft);border-radius:var(--r-lg);
  padding:var(--sp-5);backdrop-filter:blur(6px);margin-bottom:0}
.card h3{font-family:var(--serif);color:var(--gold-soft);font-size:var(--fs-h2);margin:0 0 12px;font-weight:600;
  border-bottom:1px solid var(--line-soft);padding-bottom:8px}
.data-table{width:100%;border-collapse:collapse;font-size:.9rem}
.data-table th{text-align:left;color:var(--muted);font-weight:500;font-size:.78rem;
  text-transform:uppercase;letter-spacing:.6px;padding:6px 8px;border-bottom:1px solid var(--line-soft)}
.data-table td{padding:8px 8px;border-bottom:1px solid rgba(180,157,201,.08)}
.data-table tr:last-child td{border-bottom:none}
.pl-name{color:var(--gold-soft)}
.retro{color:var(--violet);font-weight:600}
tr.asp-good td{color:var(--good)}
tr.asp-hard td{color:var(--hard)}

/* interpretations */
.interp{margin-top:24px}
.interp-lead{font-size:1.05rem;color:var(--ink);margin-bottom:16px}
.interp-item{border:1px solid var(--line-soft);border-radius:12px;margin-bottom:10px;
  background:rgba(10,8,26,.35);overflow:hidden}
.interp-item summary{padding:14px 18px;cursor:pointer;color:var(--gold-soft);font-weight:500;
  font-size:1rem;list-style:none;transition:.2s}
.interp-item summary::-webkit-details-marker{display:none}
.interp-item summary:before{content:"✦ ";color:var(--gold);opacity:.6}
.interp-item[open] summary{background:rgba(233,196,106,.06)}
.interp-item summary:hover{background:rgba(233,196,106,.06)}
.interp-body{padding:2px 20px 16px;color:var(--muted)}
.interp-body p{margin:.5em 0}

/* synastry score */
.score-card{background:var(--panel);border:1px solid var(--line);border-radius:22px;
  padding:30px;text-align:center;max-width:560px;margin:0 auto 26px;box-shadow:var(--shadow)}
.score-num{font-family:var(--serif);font-size:4rem;color:var(--gold);line-height:1;font-weight:700}
.score-num span{font-size:1.4rem;color:var(--muted)}
.score-label{font-family:var(--serif);font-size:1.5rem;color:var(--gold-soft);margin:6px 0 20px}
.score-bars{display:grid;gap:12px;text-align:left;max-width:420px;margin:0 auto}
.bar{display:grid;grid-template-columns:110px 1fr 34px;align-items:center;gap:10px}
.bar-label{font-size:.85rem;color:var(--muted)}
.bar-track{height:8px;background:rgba(10,8,26,.7);border-radius:8px;overflow:hidden}
.bar-fill{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--gold))}
.bar-val{font-size:.85rem;color:var(--gold-soft);text-align:right}

/* daily horoscope */
.daily-picker{max-width:360px;margin:0 auto 26px;text-align:center}
.daily-picker label{display:block;color:var(--muted);margin-bottom:8px;font-size:.85rem}
.horoscope-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;
  padding:36px 30px;text-align:center;max-width:600px;margin:0 auto;box-shadow:var(--shadow)}
.horo-symbol{font-size:3.4rem;color:var(--gold);filter:drop-shadow(0 0 16px rgba(233,196,106,.5))}
.horoscope-card h2{font-family:var(--serif);font-size:2.2rem;margin:.1em 0;color:var(--gold-soft);font-weight:600}
.horo-date{color:var(--muted);font-size:.85rem;letter-spacing:1px;text-transform:uppercase}
.horo-text{font-size:1.15rem;color:var(--ink);margin:18px 0 26px;line-height:1.7}
.horo-meta{display:flex;justify-content:center;gap:30px;border-top:1px solid var(--line-soft);padding-top:20px}
.horo-meta div{font-family:var(--serif);font-size:1.25rem;color:var(--gold-soft)}
.horo-meta span{display:block;font-family:var(--sans);font-size:.7rem;letter-spacing:1.5px;
  text-transform:uppercase;color:var(--muted);margin-bottom:2px}

/* chart wheel svg */
.chart-svg .wheel-ring{fill:none;stroke:var(--line-soft);stroke-width:1}
.chart-svg .sign-divider{stroke:var(--line);stroke-width:1}
.chart-svg .sign-glyph{font-size:20px;font-family:serif}
.chart-svg .cusp-line{stroke:var(--line-soft);stroke-width:.8;stroke-dasharray:3 3}
.chart-svg .cusp-line.angle{stroke:var(--gold);stroke-width:1.4;stroke-dasharray:none;opacity:.7}
.chart-svg .house-num{font-size:11px;fill:var(--muted);font-family:var(--sans)}
.chart-svg .planet-glyph{font-size:19px;fill:var(--gold-soft);font-family:serif;
  filter:drop-shadow(0 0 4px rgba(0,0,0,.6))}
/* glyph seated on a shaded planet sphere — crisp white, dark outline for contrast on any world */
.chart-svg .planet-glyph.on-sphere{font-size:14px;fill:#fff;paint-order:stroke;
  stroke:rgba(8,6,20,.6);stroke-width:1.1px;filter:none}
.chart-svg .planet-body{filter:drop-shadow(0 1px 3px rgba(0,0,0,.45))}
.chart-svg .planet-spec,.chart-svg .planet-ring{pointer-events:none}
.chart-svg .planet-glyph-g.tappable:hover .planet-glyph.on-sphere{fill:#fff;font-size:15px}
.chart-svg .planet-glyph-g.tappable:hover .planet-body{filter:drop-shadow(0 0 6px rgba(233,196,106,.7))}
.chart-svg .planet-tick{stroke:var(--violet);stroke-width:.8;opacity:.5}
.chart-svg .retro-mark{font-size:10px;fill:var(--violet)}
.chart-svg .axis-label{font-size:11px;fill:var(--gold);font-weight:600;letter-spacing:1px}
.chart-svg .wheel-center{fill:var(--gold)}

/* footer */
.site-footer{text-align:center;padding:40px 20px;border-top:1px solid var(--line-soft);
  color:var(--muted);margin-top:40px}
.site-footer .fine{font-size:.8rem;opacity:.7;margin-top:6px}

/* responsive */
@media(max-width:820px){
  .chart-grid{grid-template-columns:1fr}
  .lower-grid{grid-template-columns:1fr}
  .syn-forms{grid-template-columns:1fr}
  .nav{gap:14px}
}
@media(max-width:560px){
  .topbar{flex-direction:column;gap:12px}
  .big-three{grid-template-columns:1fr 1fr 1fr;gap:8px}
  .big-card{padding:14px 6px}
  .bc-sign{font-size:1rem}
  .row{grid-template-columns:1fr}
  .horo-meta{gap:18px}
}

/* ============================================================================
 * v2 — THEME SYSTEM + ACCESSIBILITY + NEW COMPONENTS
 * ==========================================================================*/

/* ---- Theme variants (override the base palette) ---- */
:root[data-theme="calm"]{
  --bg:#12131f; --bg2:#171827; --panel:rgba(34,36,54,0.55); --panel-solid:#1b1d2e;
  --ink:#e7e6ef; --muted:#9b9ab5; --gold:#cdb583; --gold-soft:#ddc99b; --violet:#8b86b8;
  --line:rgba(205,181,131,0.16); --line-soft:rgba(155,154,181,0.14);
}
:root[data-theme="calm"] body{
  background:linear-gradient(180deg,#12131f,#141525 60%,#101019);
}
:root[data-theme="dark"]{ /* uses base :root values, slight glow */ }
:root[data-theme="rich"]{
  --gold:#f2c94c; --gold-soft:#ffe08a; --violet:#a48bff;
  --line:rgba(233,196,106,0.28);
}
:root[data-theme="rich"] body{
  background:
    radial-gradient(1200px 700px at 80% -10%, rgba(164,139,255,.30), transparent 60%),
    radial-gradient(900px 600px at 10% 10%, rgba(233,196,106,.16), transparent 55%),
    linear-gradient(180deg,#0a0a1f,#0d0b22 40%,#0a0918);
}
:root[data-theme="light"]{  /* Sunlit — warm daylight, the real "walk into the light" */
  --bg:#faf6ec; --bg2:#f2e9d6; --panel:rgba(255,252,245,0.80); --panel-solid:#fffdf8;
  --ink:#33291f; --muted:#7a6a52; --gold:#b07d2b; --gold-soft:#8a5f1f; --violet:#7a5fc7;
  --line:rgba(176,125,43,0.30); --line-soft:rgba(122,106,82,0.18);
  --shadow:0 16px 44px rgba(150,110,40,.16);
}
:root[data-theme="light"] body{
  background:
    radial-gradient(1100px 640px at 80% -12%, rgba(255,198,96,.32), transparent 62%),
    radial-gradient(880px 520px at 12% 110%, rgba(255,150,90,.12), transparent 60%),
    linear-gradient(180deg,#fdf8ee,#f6edda);
}
:root[data-theme="light"] .topbar{background:rgba(255,255,255,.7)}
:root[data-theme="light"] .hero h1{background:linear-gradient(120deg,#4a3f8a,#b8863b);-webkit-background-clip:text;background-clip:text;color:transparent}
:root[data-theme="light"] input,:root[data-theme="light"] select,:root[data-theme="light"] textarea{background:#fff;color:var(--ink)}
:root[data-theme="light"] select option{background:#fff;color:var(--ink)}
:root[data-theme="light"] .star{background:#7a6fb0}

/* ---- Visual intensity ---- */
:root[data-stim="minimal"] #starfield{display:none}
:root[data-stim="minimal"] body{background-attachment:fixed}
:root[data-stim="balanced"] #starfield{opacity:.45}
:root[data-stim="rich"] #starfield{opacity:1}

/* ---- Motion ---- */
:root[data-motion="reduced"] *{animation:none !important;transition:none !important;scroll-behavior:auto !important}
:root[data-motion="reduced"] .hero-moon,:root[data-motion="reduced"] .star{animation:none !important}
@media (prefers-reduced-motion: reduce){ *{animation:none !important;transition:none !important} }

/* ---- Text size ---- */
:root[data-text="s"]{font-size:15px}
:root[data-text="m"]{font-size:16.5px}
:root[data-text="l"]{font-size:18.5px}
:root[data-text="xl"]{font-size:21px}
body{font-size:1rem}

/* ---- Legible / dyslexia-friendly font ---- */
:root[data-font="legible"]{--sans:'Atkinson Hyperlegible','Lexend','Inter',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;--serif:'Atkinson Hyperlegible','Lexend','Inter',system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}
:root[data-font="legible"] body{letter-spacing:.2px;line-height:1.75}
:root[data-font="legible"] .hero h1,:root[data-font="legible"] .horoscope-card h2{background:none;-webkit-text-fill-color:currentColor;color:var(--gold-soft)}

/* ---- Focus mode ---- */
:root[data-focus="on"] .site-footer,:root[data-focus="on"] .coming-soon,:root[data-focus="on"] #starfield{display:none}
:root[data-focus="on"] .nav{opacity:.5}

/* ---- Top actions: moon chip + gear ---- */
.top-actions{display:flex;align-items:center;gap:12px}
.moon-chip{display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line-soft);
  border-radius:30px;padding:4px 12px 4px 6px;color:var(--muted);cursor:pointer;font-family:var(--sans);font-size:.82rem}
.moon-chip:hover{border-color:var(--line);color:var(--ink)}
.moon-chip svg{flex:none}
.gear{background:var(--panel);border:1px solid var(--line-soft);border-radius:50%;width:40px;height:40px;
  color:var(--gold-soft);font-size:1.15rem;cursor:pointer;transition:.2s}
.gear:hover{border-color:var(--gold);transform:rotate(45deg)}
/* monochrome line icons in the header — refined, tonal, no emoji clash */
.gear.ico{display:flex;align-items:center;justify-content:center;font-size:0}
.gear.ico:hover{transform:none;border-color:var(--gold)}
.gear.ico svg{width:19px;height:19px;fill:none;stroke:var(--gold-soft);stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:stroke .2s}
.gear.ico:hover svg{stroke:var(--gold)}
.nav-toggle svg{width:22px;height:22px;fill:none;stroke:var(--gold-soft);stroke-width:1.8;stroke-linecap:round;display:block;margin:auto}
/* keep the header calm on phones: the rank pill lives in My Space, and language
   lives in Settings — so the bar stays down to moon · search · settings · menu */
@media(max-width:820px){ #rank-chip,#lang-chip{display:none !important} }
@media(max-width:560px){.brand{font-size:1.4rem}.nav{order:3;width:100%;justify-content:center}}

/* ---- Moon widget ---- */
.hero-moon-widget{margin-bottom:10px}
.moon-widget{display:flex;gap:24px;align-items:center;justify-content:center;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--line-soft);border-radius:24px;padding:24px 28px;
  max-width:620px;margin:0 auto 8px;box-shadow:var(--shadow)}
.moon-svg{filter:drop-shadow(0 0 14px rgba(233,196,106,.25))}
.moon-info{text-align:left;flex:1;min-width:220px}
.moon-phase-name{font-family:var(--serif);font-size:1.7rem;color:var(--gold-soft);font-weight:600}
.moon-sub{color:var(--muted);font-size:.9rem;margin-bottom:6px}
.moon-text{color:var(--ink);font-size:.98rem;margin:.4em 0}
.moon-next{display:flex;gap:18px;color:var(--muted);font-size:.85rem;margin-top:6px}

/* ---- tags ---- */
.tag{font-size:.6rem;letter-spacing:1px;text-transform:uppercase;padding:2px 7px;border-radius:20px;vertical-align:middle;font-family:var(--sans)}
.tag-free{background:rgba(140,224,176,.15);color:#8ce0b0}
.tag-freemium{background:rgba(233,196,106,.15);color:var(--gold-soft)}
.tag-advanced{background:rgba(164,139,255,.15);color:#b8a9f5}

/* ---- charts hub: filter + category groups ---- */
.hub-filter{margin:18px 0 6px}
.hub-filter input{width:100%;padding:13px 16px;border-radius:14px;border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.03);color:var(--ink);font-size:1rem}
.hub-filter input::placeholder{color:var(--muted)}
.hub-filter input:focus{outline:none;border-color:rgba(233,196,106,.5);background:rgba(255,255,255,.05)}
.hub-cat{font-family:var(--serif);font-size:1.15rem;color:var(--gold);opacity:.92;
  margin:26px 0 4px;padding-bottom:6px;border-bottom:1px solid var(--line-soft)}
.hub-cat:first-of-type{margin-top:14px}
.hub-cat + .feature-cards{margin-top:16px}

/* ---- coming soon ---- */
.coming-soon{text-align:center;margin-top:30px;padding:20px;border:1px dashed var(--line-soft);border-radius:16px}
.coming-soon h4{font-family:var(--serif);color:var(--gold-soft);margin:0 0 6px;font-size:1.2rem}

/* ---- settings panel ---- */
.settings-body{max-width:680px;margin:0 auto}
.settings-intro{color:var(--muted);text-align:center;margin-bottom:20px}
.setting-block{background:var(--panel);border:1px solid var(--line-soft);border-radius:16px;padding:16px 18px;margin-bottom:14px}
.setting-label{font-family:var(--serif);font-size:1.25rem;color:var(--gold-soft);margin-bottom:10px;font-weight:600}
.setting-hint{display:block;font-family:var(--sans);font-size:.82rem;color:var(--muted);font-weight:400;margin-top:2px}
.segmented{display:flex;gap:8px;flex-wrap:wrap}
.seg-btn{flex:1;min-width:70px;background:rgba(10,8,26,.35);border:1px solid var(--line-soft);border-radius:12px;
  padding:10px 12px;color:var(--muted);cursor:pointer;font-family:var(--sans);text-align:center;transition:.15s}
.seg-btn:hover{border-color:var(--line);color:var(--ink)}
.seg-btn.on{background:rgba(233,196,106,.14);border-color:var(--gold);color:var(--gold-soft)}
.seg-l{display:block;font-size:1rem;font-weight:500}
.seg-d{display:block;font-size:.72rem;color:var(--muted);margin-top:2px;overflow-wrap:break-word;word-break:break-word;hyphens:auto}
.focus-toggle,.settings-reset{width:100%;margin-top:8px;padding:12px;border-radius:12px;cursor:pointer;font-family:var(--sans);border:1px solid var(--line-soft);background:var(--panel);color:var(--muted)}
.focus-toggle.on{border-color:var(--gold);color:var(--gold-soft);background:rgba(233,196,106,.1)}
.settings-reset{margin-top:16px;color:var(--violet)}
:root[data-theme="light"] .seg-btn{background:#fff}

/* ---- ritual / streak ---- */
.ritual-top{display:flex;align-items:center;gap:16px;margin-bottom:12px}
.ritual-copy h3{margin:0}
.streak-row{display:flex;gap:14px;justify-content:center;margin:8px 0}
.streak-stat{background:var(--panel);border:1px solid var(--line-soft);border-radius:14px;padding:12px 20px;text-align:center;flex:1}
.streak-stat b{display:block;font-family:var(--serif);font-size:1.9rem;color:var(--gold)}
.streak-stat span{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.ritual-note{font-size:.82rem;color:var(--muted);text-align:center;margin-top:6px}

/* ---- people shelf ---- */
.people-shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.person-card{background:var(--panel);border:1px solid var(--line-soft);border-radius:14px;padding:14px}
.person-name{font-family:var(--serif);font-size:1.2rem;color:var(--gold-soft)}
.person-sub{font-size:.8rem}
.person-acts{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.chip{background:rgba(233,196,106,.1);border:1px solid var(--line-soft);border-radius:var(--r-pill);padding:5px 12px;
  color:var(--gold-soft);cursor:pointer;font-size:.8rem;font-family:var(--sans)}
.chip:hover{border-color:var(--gold)}
.chip.danger{color:var(--violet);background:transparent}

/* ---- badges ---- */
.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.badge{background:var(--panel);border:1px solid var(--line-soft);border-radius:14px;padding:16px 12px;text-align:center;opacity:.42;filter:grayscale(.6)}
.badge.got{opacity:1;filter:none;border-color:var(--line);box-shadow:0 4px 18px rgba(233,196,106,.12)}
.badge-icon{font-size:1.8rem}
.badge-name{font-family:var(--serif);font-size:1.05rem;color:var(--gold-soft);margin:4px 0 2px}
.badge-desc{font-size:.75rem}

/* ---- journal ---- */
.journal-input,.code-input{width:100%;padding:14px;border-radius:12px;border:1px solid var(--line-soft);
  background:rgba(10,8,26,.5);color:var(--ink);font-family:var(--sans);font-size:1rem;resize:vertical}
.mood-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.mood-chip{background:rgba(10,8,26,.4);border:1px solid var(--line-soft);border-radius:20px;padding:8px 14px;
  color:var(--muted);cursor:pointer;font-family:var(--sans);font-size:.9rem}
.mood-chip.on{border-color:var(--gold);color:var(--gold-soft);background:rgba(233,196,106,.12)}
.journal-entry{position:relative;background:rgba(10,8,26,.3);border:1px solid var(--line-soft);border-radius:14px;padding:14px 16px;margin-top:10px}
.je-head{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:6px;font-size:.8rem}
.je-date{color:var(--gold-soft)}
.je-stamp{color:var(--violet)}
.je-mood{color:var(--muted)}
.je-del{position:absolute;top:10px;right:10px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:.9rem}
:root[data-theme="light"] .journal-input,:root[data-theme="light"] .journal-entry,:root[data-theme="light"] .mood-chip{background:#fff}

/* ---- store / paywall ---- */
.store-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;margin-bottom:20px}
.store-card{background:var(--panel);border:1px solid var(--line-soft);border-radius:20px;padding:26px 22px;text-align:center;display:flex;flex-direction:column}
.store-card.featured{border-color:var(--gold);box-shadow:0 10px 40px rgba(233,196,106,.18)}
.sc-glyph{font-size:1.8rem;color:var(--gold)}
.store-card h3{font-family:var(--serif);font-size:1.35rem;margin:.2em 0}
.sc-price{font-family:var(--serif);font-size:2.2rem;color:var(--gold);font-weight:700}
.store-card p{flex:1;font-size:.9rem}
.store-card .btn-primary{margin-top:12px}
.sc-owned{color:#8ce0b0;font-weight:600;margin-top:12px}
.center-card{text-align:center;max-width:420px;margin:0 auto}
.center-card .code-input{margin:10px 0}

.deep{margin-top:24px}
.deep-title{color:var(--gold)}
.deep-section{position:relative;margin-bottom:16px}
.deep-section h4{font-family:var(--serif);color:var(--gold-soft);font-size:1.25rem;margin:.4em 0}
.deep-section.locked{max-height:88px;overflow:hidden}
.deep-section.locked p{filter:blur(4px);opacity:.5;user-select:none}
.lock-veil{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;
  background:linear-gradient(180deg,transparent,var(--bg2));font-size:1.4rem;padding-bottom:6px}
.paywall{background:linear-gradient(135deg,rgba(233,196,106,.1),rgba(139,123,216,.08));
  border:1px solid var(--line);border-radius:20px;padding:26px;text-align:center;margin-top:16px}
.pw-glyph{font-size:1.8rem;color:var(--gold)}
.paywall h4{font-family:var(--serif);font-size:1.4rem;margin:.2em 0;color:var(--gold-soft)}
.pw-price{font-family:var(--serif);font-size:2rem;color:var(--gold);font-weight:700;margin:8px 0}
.pw-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:8px}
.pw-note{font-size:.78rem;color:var(--muted);margin-top:10px}

/* ---- misc ---- */
.save-bar{text-align:center;margin:20px 0}
.small{font-size:.8rem}
.center{text-align:center}
.interp-lead.center{max-width:640px;margin:0 auto 20px}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--panel-solid);border:1px solid var(--gold);color:var(--gold-soft);
  padding:12px 22px;border-radius:var(--r-pill);box-shadow:var(--shadow);opacity:0;pointer-events:none;
  transition:.3s;z-index:100;font-size:.9rem;max-width:calc(100vw - 32px);text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* On mobile, float the toast clear of the fixed bottom nav so it's never cramped behind it */
@media(max-width:820px){ .toast{bottom:calc(74px + env(safe-area-inset-bottom))} }

/* ============================================================================
 * v3 — RANKS, CURRICULUM, WAIVER, TERMS
 * ==========================================================================*/
.rank-chip{display:flex;align-items:center;gap:6px;background:linear-gradient(120deg,rgba(233,196,106,.18),rgba(139,123,216,.14));
  border:1px solid var(--line);border-radius:30px;padding:5px 13px 5px 10px;color:var(--gold-soft);cursor:pointer;font-family:var(--sans);font-size:.82rem}
.rank-chip:hover{border-color:var(--gold)}
.rc-icon{font-size:1rem}
@media(max-width:700px){.rank-chip span:last-child{display:none}}

.rank-card{background:linear-gradient(135deg,rgba(233,196,106,.06),rgba(139,123,216,.05))}
.rank-top{display:flex;align-items:center;gap:16px;margin-bottom:12px}
.rank-badge{font-size:2.4rem;width:64px;height:64px;flex:none;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 40% 35%,rgba(233,196,106,.25),rgba(139,123,216,.12));
  border:1px solid var(--line);border-radius:50%;color:var(--gold);filter:drop-shadow(0 0 10px rgba(233,196,106,.3))}
.rank-name{font-family:var(--serif);font-size:1.7rem;color:var(--gold-soft);font-weight:600;line-height:1.1}
.rank-note{font-size:.9rem}
.rank-xp{font-size:.82rem;margin-top:3px}
.rank-bar{height:10px;background:rgba(10,8,26,.6);border-radius:10px;overflow:hidden;margin-bottom:16px}
.rank-fill{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--gold));transition:width .5s}
.rank-ladder{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;min-width:0;max-width:100%}
.rung{flex:none;min-width:96px;text-align:center;background:rgba(10,8,26,.35);border:1px solid var(--line-soft);
  border-radius:12px;padding:10px 8px;opacity:.5}
.rung.done{opacity:.85}
.rung.current{opacity:1;border-color:var(--gold);background:rgba(233,196,106,.12);box-shadow:0 4px 16px rgba(233,196,106,.15)}
.rung.locked{border-style:dashed}
.rung-icon{display:block;font-size:1.3rem;color:var(--gold-soft)}
.rung-name{display:block;font-size:.72rem;color:var(--ink);margin:3px 0 2px}
.rung-min,.rung-lock{display:block;font-size:.66rem;color:var(--muted)}
.rank-toggle{width:100%;margin-top:14px;padding:11px;border-radius:12px;cursor:pointer;font-family:var(--sans);
  border:1px solid var(--line-soft);background:var(--panel);color:var(--muted)}
.rank-toggle.on{border-color:var(--gold);color:var(--gold-soft);background:rgba(233,196,106,.08)}
.rank-hint{font-size:.8rem;margin-top:10px;text-align:center}

/* lessons */
.lesson-group{margin-bottom:16px}
.lesson-xp{color:var(--gold);font-size:.8rem;margin-left:6px}
.lesson.done summary{color:var(--good)}
.lesson.locked-lesson summary{color:var(--muted)}
.lesson-done-tag{color:var(--good);font-weight:600;margin-top:6px}
.course-banner{background:linear-gradient(135deg,rgba(233,196,106,.1),rgba(139,123,216,.08));
  border:1px solid var(--line);border-radius:14px;padding:16px;margin:6px 0 12px;display:flex;flex-direction:column;gap:10px}
.course-banner .btn-primary{align-self:flex-start}

/* terms */
.terms-doc{max-width:760px;margin:0 auto;background:var(--panel);border:1px solid var(--line-soft);
  border-radius:18px;padding:clamp(20px,4vw,40px);line-height:1.75}
.terms-doc h3{font-family:var(--serif);color:var(--gold-soft);font-size:1.3rem;margin:1.2em 0 .3em}
.terms-doc p{color:var(--ink)}
.terms-updated{margin-top:0}
.terms-legal{font-size:.85rem;margin-top:1.5em;border-top:1px solid var(--line-soft);padding-top:1em}
.footer-link{color:var(--gold-soft);text-decoration:underline}

/* waiver modal */
.waiver-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:rgba(6,6,16,.82);backdrop-filter:blur(6px);padding:20px;overflow-y:auto}
.waiver-overlay.closing{opacity:0;transition:opacity .3s}
.waiver-modal{max-width:520px;width:100%;background:var(--panel-solid);border:1px solid var(--line);
  border-radius:22px;padding:clamp(24px,5vw,40px);text-align:center;box-shadow:var(--shadow);
  max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain}
/* First-run waiver: text scrolls, the accept footer stays pinned & always reachable */
.waiver-firstrun{padding:0;overflow:hidden;display:flex;flex-direction:column}
.waiver-firstrun .waiver-scroll{overflow-y:auto;overscroll-behavior:contain;
  padding:clamp(24px,5vw,40px) clamp(24px,5vw,40px) 10px;text-align:center}
.waiver-firstrun .waiver-foot{flex:none;padding:14px clamp(24px,5vw,40px) clamp(22px,4vw,30px);
  border-top:1px solid var(--line-soft);background:var(--panel-solid)}
.waiver-firstrun .waiver-check{margin:0 0 14px}
.waiver-glyph{font-size:2.6rem;color:var(--gold);filter:drop-shadow(0 0 14px rgba(233,196,106,.4))}
.waiver-modal h2{font-family:var(--serif);font-size:1.7rem;color:var(--gold-soft);margin:.2em 0 .5em;font-weight:600}
.waiver-modal p{color:var(--ink);font-size:1rem;text-align:left;margin:.6em 0}
.waiver-small{font-size:.88rem}
.waiver-modal a{color:var(--gold)}
.waiver-check{display:flex;gap:10px;align-items:flex-start;text-align:left;color:var(--muted);
  font-size:.9rem;margin:16px 0;cursor:pointer;background:rgba(233,196,106,.06);padding:12px;border-radius:12px}
.waiver-check input{width:auto;margin-top:3px;accent-color:var(--gold);flex:none}
.btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none}
:root[data-theme="light"] .waiver-overlay{background:rgba(120,110,160,.4)}

/* ============================================================================
 * v4 — COMMUNITY, CERTIFICATE, IDENTITY, DATA
 * ==========================================================================*/
/* contribution */
.contrib-card{background:linear-gradient(135deg,rgba(139,123,216,.08),rgba(233,196,106,.05))}
.contrib-top{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.contrib-badge{font-size:2rem;width:54px;height:54px;flex:none;display:flex;align-items:center;justify-content:center;
  background:rgba(139,123,216,.15);border:1px solid var(--line-soft);border-radius:50%;color:var(--violet)}
.contrib-name{font-family:var(--serif);font-size:1.4rem;color:var(--gold-soft);font-weight:600}
.contrib-ladder{display:flex;gap:6px;flex-wrap:wrap}
.crung{font-size:.72rem;color:var(--muted);border:1px solid var(--line-soft);border-radius:20px;padding:3px 10px}
.crung.current{border-color:var(--violet);color:var(--violet);background:rgba(139,123,216,.1)}

/* composer */
.composer .tag-row{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 12px}
.composer textarea{margin-bottom:0}

/* feed */
.feed{display:grid;gap:14px}
.post-card{background:var(--panel);border:1px solid var(--line-soft);border-radius:16px;padding:16px 18px}
.post-card.mine{border-color:var(--line)}
.post-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.post-avatar{width:32px;height:32px;flex:none;display:flex;align-items:center;justify-content:center;
  background:rgba(233,196,106,.12);border-radius:50%;color:var(--gold-soft);transition:transform .12s,box-shadow .12s}
.post-avatar.clickable:hover,.post-avatar.clickable:focus-visible{transform:scale(1.08);box-shadow:0 0 0 2px rgba(233,196,106,.4);outline:none}
.post-author{font-weight:500;color:var(--ink)}
/* Brand eclipse hero */
.eclipse-hero{display:flex;flex-direction:column;align-items:center;gap:8px;margin:2px auto 6px}
.eclipse-svg{filter:drop-shadow(0 0 22px rgba(233,196,106,.28))}
.eclipse-caption{letter-spacing:.3px}
/* Big Three sharing + cosmic compatibility */
.b3-selects{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}
.b3-field{display:flex;flex-direction:column;gap:4px;flex:1;min-width:96px}
.b3-lab{font-weight:600}
.b3-sel{padding:8px;border-radius:10px;background:var(--panel,rgba(255,255,255,.04));border:1px solid rgba(255,255,255,.14);color:var(--ink)}
.compat-slot{margin-top:8px}
.compat-block{margin:10px 0 4px;padding:14px;border-radius:14px;
  background:linear-gradient(135deg,rgba(139,123,216,.16),rgba(233,196,106,.08));border:1px solid rgba(139,123,216,.34)}
.compat-overall{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 4px}
.compat-label{font-weight:600;font-size:1.05rem}
.compat-pct{font-family:var(--display,serif);font-size:1.5rem;color:var(--gold)}
.compat-blurb{margin:0 0 8px}
.compat-rows{display:flex;flex-direction:column;gap:8px}
.compat-row{display:flex;gap:10px;align-items:flex-start}
.compat-row .cr-icon{font-size:1.1rem;line-height:1.3;flex:none;width:20px;text-align:center;color:var(--gold-soft)}
.compat-row .cr-body{display:flex;flex-direction:column;gap:1px}
.compat-row .cr-pair{font-weight:600}
.compat-foot{margin:10px 0 0;text-align:center}
.you-tag{font-size:.66rem;background:rgba(139,123,216,.2);color:var(--violet);padding:1px 6px;border-radius:10px;text-transform:uppercase;letter-spacing:.5px}
.post-chip{font-size:.78rem;color:var(--gold-soft);background:rgba(233,196,106,.08);border:1px solid var(--line-soft);border-radius:20px;padding:3px 10px;margin-left:auto}
.post-text{color:var(--ink);margin:.3em 0 .6em;line-height:1.65}
.post-foot{display:flex;align-items:center;gap:12px}
.upvote-btn{background:transparent;border:1px solid var(--line-soft);border-radius:20px;padding:7px 15px;color:var(--muted);cursor:pointer;font-family:var(--sans);font-size:.85rem;transition:.15s}
.upvote-btn:hover{border-color:var(--gold);color:var(--gold-soft)}
.upvote-btn.voted{background:rgba(233,196,106,.14);border-color:var(--gold);color:var(--gold-soft)}
.post-tag{font-size:.75rem;color:var(--muted)}

/* identity */
.identity-row{display:flex;gap:14px;align-items:flex-end}
.identity-avatar{width:56px;height:56px;flex:none;display:flex;align-items:center;justify-content:center;font-size:1.6rem;
  background:rgba(233,196,106,.12);border:1px solid var(--line);border-radius:50%;color:var(--gold-soft)}
.identity-namewrap{flex:1}
.avatar-picker{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0}
.avatar-opt{width:38px;height:38px;border-radius:50%;border:1px solid var(--line-soft);background:rgba(10,8,26,.35);
  color:var(--gold-soft);font-size:1.1rem;cursor:pointer}
.avatar-opt.on{border-color:var(--gold);background:rgba(233,196,106,.14)}
.data-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:6px}
.file-btn{cursor:pointer;display:inline-block}
.erase-row{margin-top:16px;padding-top:12px;border-top:1px solid var(--line-soft)}
.erase-btn{color:#e98b8b !important;border-color:rgba(233,139,139,.4) !important}
.erase-btn:hover{background:rgba(233,139,139,.1) !important;border-color:#e98b8b !important}
.tiny{font-size:.76rem;margin:6px 0 0}
.form-prefill{margin:0 0 12px;padding:8px 12px;border-radius:10px;background:rgba(233,196,106,.08);border:1px solid rgba(233,196,106,.2)}
.form-save{margin-top:8px}
/* Interactive chart wheel */
.chart-svg .tappable{cursor:pointer}
.chart-svg .tap-hit{pointer-events:all}
.chart-svg .house-hit{pointer-events:all;fill:transparent;transition:fill .12s}
.chart-svg .house-tap.tappable:hover .house-hit{fill:rgba(233,196,106,.06)}
.chart-svg .planet-glyph-g.tappable:hover .planet-glyph{fill:var(--gold);font-size:1.25em}
.chart-svg .house-tap.tappable:hover .house-num{fill:var(--gold);font-weight:700}
.chart-svg .sign-glyph-g.tappable:hover .sign-glyph{font-size:1.2em}
.chart-svg .tap-hit-line{pointer-events:stroke}
.chart-svg .aspect-line-g.tappable:hover .aspect-line{stroke-opacity:1;stroke-width:2.2}
.chart-svg .planet-glyph,.chart-svg .house-num,.chart-svg .sign-glyph,.chart-svg .aspect-line{transition:.12s}
.chart-svg .fidget-able{cursor:grab;touch-action:none}
.chart-svg .fidget-grab{cursor:grabbing}
.chart-svg .fidget-grab .planet-glyph{fill:var(--gold);font-size:1.25em}
.wheel-hint{text-align:center;margin-top:6px}
.wheel-info{max-width:440px;text-align:left}
.wheel-info .wi-title{font-family:var(--display,serif);font-size:1.3rem;color:var(--gold);margin:0 0 10px;padding-right:24px}
.wheel-info .wi-body p{margin:0 0 10px;line-height:1.6}
/* Sensory corner */
.sfx-textures{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 10px}
.sfx-tex{flex:1;min-width:100px;padding:12px 10px;border-radius:12px;border:1px solid var(--line-soft);background:rgba(255,255,255,.04);color:var(--ink);cursor:pointer;font-family:inherit;transition:.12s}
.sfx-tex:hover{border-color:var(--gold)}
.sfx-tex.on{border-color:var(--gold);background:rgba(233,196,106,.14)}
.sfx-vol{display:flex;align-items:center;gap:12px;margin:6px 0 10px}
.sfx-vol input[type=range]{flex:1;accent-color:var(--gold)}
.star-field{position:relative;height:220px;border-radius:14px;overflow:hidden;cursor:pointer;user-select:none;
  background:radial-gradient(600px 300px at 50% 120%,rgba(139,123,216,.16),transparent)}
.fidget-star{position:absolute;color:var(--gold);opacity:.9;will-change:transform}
html .fidget-star{transition:transform .14s,opacity .14s}
.fidget-star.pop{transform:scale(2.3) rotate(18deg);opacity:0}
.breath-orb{width:96px;height:96px;border-radius:50%;margin:6px auto 4px;cursor:pointer;
  background:radial-gradient(circle at 38% 34%,#fff7e0,#e9c46a 42%,#8b7bd8 100%);box-shadow:0 0 36px rgba(233,196,106,.45)}
html .breath-orb.breathing{animation:umbriel-breathe 8s ease-in-out infinite}
@keyframes umbriel-breathe{0%,100%{transform:scale(.72);box-shadow:0 0 22px rgba(139,123,216,.4)}50%{transform:scale(1.32);box-shadow:0 0 58px rgba(233,196,106,.6)}}
.breath-label{min-height:1.4em;letter-spacing:.5px;text-align:center}
.mood-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.mood-btn{flex:1;min-width:140px;display:flex;flex-direction:column;gap:3px;padding:14px;border-radius:14px;
  border:1px solid var(--line-soft);background:rgba(255,255,255,.04);color:var(--ink);cursor:pointer;text-align:left;font-family:inherit;transition:.14s}
.mood-btn:hover{border-color:var(--gold);background:rgba(233,196,106,.08)}
.mood-btn .mood-ico{font-size:1.5rem;line-height:1}
.mood-btn .mood-name{font-weight:600}
/* tactile "squish" — only for people who've opted into motion */
:root[data-motion="full"] button:active{transform:scale(.96)}
/* Celestial companion */
.companion{position:fixed;right:14px;bottom:16px;width:76px;height:76px;z-index:60;cursor:pointer}
.companion .comp-sprite{width:100%;height:100%;filter:drop-shadow(0 4px 12px rgba(0,0,0,.4))}
html[data-motion="full"] .companion .comp-sprite{animation:comp-float 4.5s ease-in-out infinite}
@keyframes comp-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.companion .comp-eye,.companion .comp-pupil{transform-box:fill-box;transform-origin:center;transition:transform .1s}
.companion.blink .comp-eye,.companion.blink .comp-pupil{transform:scaleY(.12)}
.companion.sleeping .comp-eye,.companion.sleeping .comp-pupil{transform:scaleY(.12)}
.companion.sleeping .comp-sprite{animation:none}
.companion .comp-z{opacity:0}
.companion.sleeping .comp-z{opacity:1}
html[data-motion="full"] .companion.sleeping .comp-z{animation:comp-z 2.2s ease-in-out infinite}
@keyframes comp-z{0%{opacity:0;transform:translateY(4px)}40%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}
html[data-motion="full"] .companion.happy .comp-sprite{animation:comp-bounce .6s ease}
@keyframes comp-bounce{0%,100%{transform:translateY(0)}30%{transform:translateY(-12px) scale(1.06)}60%{transform:translateY(0) scale(.98)}}
.comp-bubble{position:absolute;bottom:82px;right:0;max-width:190px;background:var(--panel,#14122b);border:1px solid rgba(233,196,106,.3);
  color:var(--ink,#ece8ff);padding:8px 11px;border-radius:12px;font-size:.82rem;line-height:1.4;opacity:0;transform:translateY(6px);
  pointer-events:none;transition:opacity .2s,transform .2s;box-shadow:0 6px 18px rgba(0,0,0,.35)}
.comp-bubble.show{opacity:1;transform:translateY(0)}
.comp-close{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:1px solid var(--line-soft);
  background:var(--panel,#14122b);color:var(--muted);font-size:.8rem;line-height:1;cursor:pointer;padding:0;opacity:0;transition:opacity .15s}
.companion:hover .comp-close,.companion:focus-within .comp-close{opacity:1}
.comp-bubble .comp-name{display:block;font-weight:700;color:var(--gold);font-size:.78rem;margin-bottom:2px}
@media (max-width:520px){.companion{width:62px;height:62px;right:10px;bottom:12px}.comp-bubble{bottom:68px}}
.fam-row{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px}
.fam-btn{flex:1;min-width:96px;padding:12px 8px;border-radius:12px;border:1px solid var(--line-soft);background:rgba(255,255,255,.04);color:var(--ink);cursor:pointer;font-family:inherit;transition:.12s}
.fam-btn:hover{border-color:var(--gold)}
.fam-btn.on{border-color:var(--gold);background:rgba(233,196,106,.14)}
.fam-name{display:flex;flex-direction:column;gap:4px}
.fam-name input{padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid var(--line-soft);color:var(--ink);font-family:inherit}
.fam-btn.locked{opacity:.72}
.comp-hat{position:absolute;top:-6px;left:50%;transform:translateX(-50%);width:38px;height:20px;pointer-events:none;z-index:2;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
html[data-motion="full"] .companion .comp-hat{animation:comp-float 4.5s ease-in-out infinite}
.comp-hat svg{width:100%;height:100%}
/* Stimming Shelf */
.shelf-item{text-align:center}
.shelf-crystal-stage{display:flex;justify-content:center;padding:10px 0 4px}
.shelf-crystal{cursor:grab;touch-action:none;filter:drop-shadow(0 0 16px rgba(139,123,216,.4))}
.shelf-crystal:active{cursor:grabbing}
.shelf-sand{width:100%;max-width:320px;height:auto;border-radius:12px;touch-action:none;cursor:crosshair;display:block;margin:4px auto 10px;border:1px solid var(--line-soft)}
.shelf-planets{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:6px 0}
.shelf-planet{width:44px;height:44px;border-radius:50%;border:1px solid var(--line-soft);background:radial-gradient(circle at 38% 34%,rgba(255,247,224,.15),rgba(139,123,216,.14));color:var(--gold-soft);font-size:1.2rem;cursor:pointer;transition:transform .1s}
.shelf-planet:hover{border-color:var(--gold)}
html .shelf-planet.ping{animation:shelf-ping .5s ease}
@keyframes shelf-ping{0%{transform:translateY(0) scale(1)}30%{transform:translateY(-10px) scale(1.14)}100%{transform:translateY(0) scale(1)}}
.shelf-jar{position:relative;height:170px;max-width:200px;margin:6px auto 0;border-radius:0 0 40px 40px / 0 0 26px 26px;
  border:2px solid rgba(180,157,201,.35);border-top:2px solid rgba(180,157,201,.55);cursor:pointer;overflow:hidden;
  background:linear-gradient(180deg,rgba(139,123,216,.08),rgba(233,196,106,.05))}
.jar-star{position:absolute;color:var(--gold);font-size:15px}
html .jar-star{transition:left .5s cubic-bezier(.3,1.3,.5,1),top .5s cubic-bezier(.3,1.3,.5,1),opacity .5s}
/* Comfort button + moment */
.comfort-btn{display:inline-flex;align-items:center;gap:6px;margin:2px auto 8px;padding:11px 20px;border-radius:40px;
  border:1px solid rgba(233,196,106,.35);background:linear-gradient(135deg,rgba(139,123,216,.16),rgba(233,196,106,.1));
  color:var(--ink);font-family:inherit;font-size:.95rem;cursor:pointer;transition:.15s}
.comfort-btn:hover{border-color:var(--gold);background:linear-gradient(135deg,rgba(139,123,216,.24),rgba(233,196,106,.16))}
.comfort-home{display:flex;justify-content:center;margin:6px 0 4px}
.comfort-star{position:fixed;top:12%;right:-30px;width:5px;height:5px;border-radius:50%;background:#fff7e0;
  box-shadow:0 0 10px 3px rgba(255,247,224,.8);z-index:120;pointer-events:none;opacity:0}
.comfort-star::after{content:"";position:absolute;top:1px;left:3px;width:60px;height:2px;transform-origin:left center;transform:rotate(28deg);
  background:linear-gradient(90deg,rgba(255,247,224,.9),transparent)}
html .comfort-star{animation:comfort-shoot 1.6s ease-in forwards}
@keyframes comfort-shoot{0%{opacity:0;transform:translate(0,0)}12%{opacity:1}100%{opacity:0;transform:translate(-115vw,60vh)}}
.comfort-overlay{position:fixed;inset:0;z-index:110;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 40%,rgba(10,10,31,.55),rgba(10,10,31,.82));opacity:0;transition:opacity .4s;padding:24px}
.comfort-overlay.show{opacity:1}
.comfort-card{max-width:340px;text-align:center;background:var(--panel,#14122b);border:1px solid rgba(233,196,106,.3);
  border-radius:18px;padding:26px 24px;box-shadow:0 10px 40px rgba(0,0,0,.4);transform:scale(.96);transition:transform .4s}
.comfort-overlay.show .comfort-card{transform:scale(1)}
.comfort-card .comfort-glyph{font-size:2rem;margin-bottom:8px}
.comfort-card p{font-family:var(--display,serif);font-size:1.3rem;line-height:1.5;color:var(--ink);margin:0}
/* Secret discoveries */
#secret-overlay{position:fixed;inset:0;z-index:130;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 50% 38%,rgba(10,10,31,.6),rgba(10,10,31,.88));opacity:0;transition:opacity .4s;padding:24px;pointer-events:none}
#secret-overlay.show{opacity:1;pointer-events:auto}
.secret-card{position:relative;max-width:360px;text-align:center;background:var(--panel,#14122b);
  border:1px solid rgba(233,196,106,.36);border-radius:20px;padding:28px 24px 24px;
  box-shadow:0 12px 48px rgba(0,0,0,.5),0 0 60px rgba(233,196,106,.12);transform:scale(.94);transition:transform .4s}
#secret-overlay.show .secret-card{transform:scale(1)}
.secret-card.anim .secret-glyph{animation:secretPop .6s cubic-bezier(.2,1.4,.4,1)}
.secret-glyph{font-size:2.6rem;line-height:1;margin-bottom:6px}
.secret-tag{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);opacity:.85;margin-bottom:6px}
.secret-name{font-family:var(--display,serif);font-size:1.5rem;color:var(--ink);margin-bottom:10px}
.secret-blurb{font-size:.98rem;line-height:1.6;color:var(--ink);opacity:.92;margin:0 0 18px}
.secret-close{background:rgba(233,196,106,.16);color:var(--gold);border:1px solid rgba(233,196,106,.4);
  border-radius:999px;padding:9px 26px;font-size:.95rem;cursor:pointer}
.secret-close:hover{background:rgba(233,196,106,.26)}
.secret-star{position:absolute;color:var(--gold);pointer-events:none;opacity:0;animation:secretStar 2s ease-out forwards}
@keyframes secretPop{0%{transform:scale(.2) rotate(-18deg);opacity:0}100%{transform:scale(1) rotate(0);opacity:1}}
@keyframes secretStar{0%{opacity:0;transform:scale(.3)}30%{opacity:1}100%{opacity:0;transform:scale(1.4) translateY(-14px)}}
#secret-shimmer{position:fixed;right:16px;bottom:88px;z-index:120;width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(233,196,106,.5);background:radial-gradient(circle,rgba(233,196,106,.28),rgba(233,196,106,.05));
  color:var(--gold);font-size:1.2rem;cursor:pointer;opacity:0;transform:scale(.6);transition:opacity .4s,transform .4s}
#secret-shimmer.show{opacity:1;transform:scale(1)}
html[data-motion="full"] #secret-shimmer.show{animation:shimmerPulse 2.4s ease-in-out infinite}
@keyframes shimmerPulse{0%,100%{box-shadow:0 0 0 rgba(233,196,106,0)}50%{box-shadow:0 0 18px rgba(233,196,106,.5)}}
.disc-grid{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.disc-item{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:14px;
  border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02)}
.disc-item.got{border-color:rgba(233,196,106,.32);background:rgba(233,196,106,.06)}
.disc-glyph{font-size:1.5rem;line-height:1.2;flex:0 0 auto;width:30px;text-align:center}
.disc-item.locked .disc-glyph{opacity:.4}
.disc-name{font-weight:600;color:var(--ink);margin-bottom:2px}
.disc-item.locked .disc-name{opacity:.7;font-style:italic;font-weight:500}
.disc-hint{line-height:1.5}
/* The Library */
.lib-tabs{display:flex;gap:8px;margin:4px 0 18px}
.lib-tab{flex:1;padding:11px 10px;border-radius:12px;border:1px solid rgba(255,255,255,.1);
  background:rgba(255,255,255,.03);color:var(--ink);font-size:.95rem;cursor:pointer;transition:.15s}
.lib-tab.on{border-color:rgba(233,196,106,.45);background:rgba(233,196,106,.1);color:var(--gold)}
.lib-search{margin-bottom:14px}
.lib-search input{width:100%;padding:12px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.03);color:var(--ink);font-size:1rem}
.lib-search input:focus{outline:none;border-color:rgba(233,196,106,.5)}
.lib-group{font-family:var(--display,serif);font-size:1.05rem;color:var(--gold);opacity:.9;margin:18px 0 8px;
  letter-spacing:.02em;border-bottom:1px solid rgba(255,255,255,.07);padding-bottom:5px}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.lib-item{display:flex;gap:11px;align-items:flex-start;text-align:left;padding:12px 13px;border-radius:13px;
  border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02);color:var(--ink);cursor:pointer;transition:.15s}
.lib-item:hover{border-color:rgba(233,196,106,.35);background:rgba(233,196,106,.05);transform:translateY(-1px)}
.lib-glyph{font-size:1.35rem;line-height:1.3;flex:0 0 auto;width:26px;text-align:center}
.lib-body{display:flex;flex-direction:column;min-width:0}
.lib-name{font-weight:600;margin-bottom:1px}
.lib-desc{line-height:1.4}
.lib-mine-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.lib-mine{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;padding:18px 12px;
  border-radius:16px;border:1px solid rgba(233,196,106,.22);background:rgba(233,196,106,.05);color:var(--ink);cursor:pointer;transition:.15s}
.lib-mine:hover{border-color:rgba(233,196,106,.45);transform:translateY(-2px)}
.lm-glyph{font-size:1.5rem;opacity:.9}
.lm-val{font-family:var(--display,serif);font-size:1.7rem;color:var(--gold);line-height:1.1}
.lm-title{font-weight:600;font-size:.92rem;margin-top:2px}
.lm-sub{line-height:1.3}
.lib-rank{margin-top:16px;text-align:center}
.lib-empty{margin-top:16px;text-align:center;line-height:1.6}
.lib-bookshelf-cta{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:16px 18px;margin-bottom:16px;
  border-radius:16px;border:1px solid rgba(233,196,106,.3);cursor:pointer;color:var(--ink);
  background:linear-gradient(135deg,rgba(233,196,106,.1),rgba(120,90,160,.1))}
.lib-bookshelf-cta:hover{border-color:rgba(233,196,106,.5);transform:translateY(-1px)}
.lbc-ic{font-size:1.8rem;flex:0 0 auto}
.lbc-body{display:flex;flex-direction:column;min-width:0;flex:1}
.lbc-title{font-family:var(--display,serif);font-size:1.15rem;color:var(--gold)}
.lbc-sub{line-height:1.4}
.lbc-arrow{font-size:1.3rem;color:var(--gold);flex:0 0 auto}
/* Your Bookshelf */
.bs-plate{display:flex;align-items:center;gap:12px;justify-content:center;margin:2px 0 20px}
.bs-plate-ic{font-size:1.8rem;color:var(--gold)}
.bs-plate-body{display:flex;flex-direction:column}
.bs-plate-name{font-family:var(--display,serif);font-size:1.25rem;color:var(--ink)}
.bookshelf{display:flex;flex-wrap:wrap;align-items:flex-end;gap:5px;padding:14px 14px 0;
  background:linear-gradient(180deg,rgba(60,42,30,.35),rgba(40,28,20,.5));
  border:1px solid rgba(120,85,55,.35);border-bottom:none;border-radius:14px 14px 0 0;min-height:190px}
.bs-ledge{height:16px;border-radius:0 0 14px 14px;
  background:linear-gradient(180deg,#5b4436,#3a2b20);border:1px solid rgba(120,85,55,.5);border-top:none;
  box-shadow:0 8px 18px rgba(0,0,0,.35)}
.bs-book{position:relative;width:40px;flex:0 0 auto;border-radius:4px 4px 2px 2px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:10px 4px 8px;
  color:rgba(255,250,240,.95);border:1px solid rgba(0,0,0,.25);box-shadow:inset -3px 0 6px rgba(0,0,0,.28),inset 2px 0 3px rgba(255,255,255,.12);
  transition:transform .14s,box-shadow .14s}
.bs-book:hover{transform:translateY(-8px);box-shadow:inset -3px 0 6px rgba(0,0,0,.28),0 6px 14px rgba(0,0,0,.4)}
.bs-title{writing-mode:vertical-rl;text-orientation:mixed;font-size:.62rem;font-weight:600;letter-spacing:.02em;
  line-height:1;max-height:120px;overflow:hidden;text-shadow:0 1px 2px rgba(0,0,0,.4)}
.bs-emblem{font-size:.9rem;opacity:.95}
.bs-seal{position:absolute;top:6px;left:50%;transform:translateX(-50%);font-size:.7rem;color:#fff3c4;
  text-shadow:0 0 6px rgba(255,220,120,.9)}
.bs-book.locked{opacity:.32;filter:grayscale(.6);background:repeating-linear-gradient(180deg,rgba(120,110,130,.5),rgba(120,110,130,.5) 8px,rgba(100,92,110,.5) 8px,rgba(100,92,110,.5) 16px)!important;cursor:pointer}
.bs-book.locked:hover{opacity:.5;transform:translateY(-4px)}
.bs-book.ornate{box-shadow:inset -3px 0 6px rgba(0,0,0,.3),0 0 14px rgba(200,150,240,.4),inset 2px 0 3px rgba(255,255,255,.15)}
.bs-foundation{background:linear-gradient(90deg,#2e7d6b,#3fa088)}
.bs-cert{background:linear-gradient(90deg,#b78a2e,#e6c46a);color:#3a2a08}
.bs-cert2{background:linear-gradient(90deg,#6a4ba0,#9a7bd0)}
.bs-spec-a{background:linear-gradient(90deg,#b0455a,#d76b80)}
.bs-spec-b{background:linear-gradient(90deg,#3a6ea5,#5f97d0)}
.bs-spec-c{background:linear-gradient(90deg,#7a5aa0,#a07bc8)}
.bs-spec-d{background:linear-gradient(90deg,#4a7a52,#6fa878)}
.bs-prac{background:linear-gradient(90deg,#8a5a3a,#b07d55)}
.bs-codex{background:linear-gradient(90deg,#3a2a5a,#6a4ba0);color:#f3e8ff}
.bs-keep{background:linear-gradient(90deg,#2a5a7a,#4f8ab0)}
.bs-keep2{background:linear-gradient(90deg,#7a6a2a,#b0a055)}
.bs-keep3{background:linear-gradient(90deg,#a5622e,#d0925f)}
.bs-note{margin:14px 0 0;text-align:center;line-height:1.6}
.bs-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}
/* The Observatory */
.obs-room{position:relative;width:100%;height:300px;border-radius:18px;overflow:hidden;
  background:linear-gradient(180deg,#241d3a 0%,#2b2247 55%,#3a2c3e 78%,#43342a 100%);
  border:1px solid rgba(120,95,140,.35);box-shadow:inset 0 0 60px rgba(0,0,0,.4)}
.obs-room::after{content:"";position:absolute;left:0;right:0;bottom:0;height:74px;
  background:linear-gradient(180deg,rgba(70,50,38,.2),#4a3527 60%,#3a2a1e);box-shadow:inset 0 3px 8px rgba(0,0,0,.35)}
.obs-room.has-lights::before{content:"✦   ✦   ✦   ✦   ✦   ✦   ✦   ✦";position:absolute;top:4px;left:0;right:0;
  text-align:center;font-size:.7rem;letter-spacing:6px;color:rgba(255,220,140,.75);
  text-shadow:0 0 6px rgba(255,210,120,.8);z-index:4}
/* Dome window with the sky behind glass */
.obs-window{position:absolute;top:20px;left:50%;transform:translateX(-50%);width:186px;height:150px;
  border-radius:93px 93px 12px 12px;border:3px solid rgba(150,120,90,.55);cursor:pointer;overflow:hidden;
  display:flex;align-items:center;justify-content:center;z-index:2;
  box-shadow:0 0 22px rgba(0,0,0,.5),inset 0 0 30px rgba(0,0,0,.4);
  background:radial-gradient(circle at 50% 120%,#3a3570,#1a1636 70%)}
.obs-room[data-mood="aurora"] .obs-window{background:linear-gradient(180deg,#12233a,#134a44 70%,#1a6b58)}
.obs-room[data-mood="nebula"] .obs-window{background:radial-gradient(circle at 50% 40%,#5a2a6a,#2a1a44 75%)}
.obs-room[data-mood="golden"] .obs-window{background:linear-gradient(180deg,#3a2a4a,#8a5a3a 80%,#c8853a)}
.obs-room[data-mood="snow"] .obs-window{background:linear-gradient(180deg,#2a3a52,#4a5f7a 80%,#8aa0b8)}
.obs-window:hover{border-color:rgba(233,196,106,.7)}
.obs-stars{position:absolute;inset:0;
  background-image:radial-gradient(1.4px 1.4px at 20% 30%,#fff,transparent),radial-gradient(1.2px 1.2px at 60% 20%,#fff,transparent),radial-gradient(1.5px 1.5px at 80% 45%,#fff,transparent),radial-gradient(1px 1px at 35% 60%,#fff,transparent),radial-gradient(1.3px 1.3px at 70% 70%,#fff,transparent),radial-gradient(1px 1px at 45% 38%,#fff,transparent);
  opacity:.85}
.obs-room:not(.still) .obs-stars{animation:obsTwinkle 4s ease-in-out infinite}
@keyframes obsTwinkle{0%,100%{opacity:.55}50%{opacity:.95}}
.obs-eclipse{position:relative;z-index:1;filter:drop-shadow(0 0 10px rgba(233,196,106,.4))}
.obs-obj{position:absolute;background:none;border:none;cursor:pointer;line-height:1;z-index:3;padding:4px;
  transform:translate(-50%,-50%);transition:filter .14s;filter:drop-shadow(0 3px 4px rgba(0,0,0,.4));touch-action:none}
.obs-obj:hover{filter:drop-shadow(0 5px 8px rgba(0,0,0,.5)) brightness(1.14)}
.obs-shelf{font-size:2rem}
.obs-telescope{font-size:2.3rem;transform:translate(-50%,-50%) rotate(-18deg)}
.obs-companion{font-size:2.1rem}
.obs-decor{font-size:1.7rem;display:none}
.obs-room.has-plant .obs-d-plant,.obs-room.has-cat .obs-d-cat,.obs-room.has-hearth .obs-d-hearth,
.obs-room.has-crystal .obs-d-crystal,.obs-room.has-tea .obs-d-tea,.obs-room.has-moonlamp .obs-d-moonlamp,
.obs-room.has-gems .obs-d-gems,.obs-room.has-star .obs-d-star{display:block}
.obs-room.editing{cursor:grab}
.obs-room.editing .obs-obj{outline:1px dashed rgba(233,196,106,.6);outline-offset:3px;border-radius:6px;cursor:grab}
.obs-room.editing .obs-window{pointer-events:none}
.obs-edit-hint{text-align:center;color:var(--gold);font-size:.85rem;margin:8px 0 0}
.obs-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}
.obs-visit-banner{text-align:center;padding:10px 14px;margin-bottom:12px;border-radius:12px;
  background:rgba(233,196,106,.1);border:1px solid rgba(233,196,106,.3);color:var(--gold)}
/* Observatory themes */
.obs-theme-witch{background:linear-gradient(180deg,#221831 0%,#2b2440 48%,#33352a 76%,#2e2a1e 100%)}
.obs-theme-witch::after{background:linear-gradient(180deg,rgba(45,38,26,.25),#3a3324 60%,#2a2418);box-shadow:inset 0 3px 8px rgba(0,0,0,.4)}
.obs-theme-witch .obs-window{border-color:rgba(130,160,110,.55);box-shadow:0 0 22px rgba(80,120,60,.35),inset 0 0 30px rgba(0,0,0,.45)}
.obs-theme-witch.has-lights::before{content:"🕯   🕯   🕯   🕯   🕯";font-size:.9rem;letter-spacing:8px;color:rgba(180,230,150,.9);text-shadow:0 0 8px rgba(120,220,120,.7)}
.obs-theme-teahouse{background:linear-gradient(180deg,#2a2333 0%,#3d3129 44%,#5c4636 74%,#6b5038 100%)}
.obs-theme-teahouse::after{background:linear-gradient(180deg,rgba(95,72,50,.3),#7c6044 55%,#61492f);box-shadow:inset 0 3px 8px rgba(0,0,0,.35)}
.obs-theme-teahouse .obs-window{border-color:rgba(210,160,120,.6);box-shadow:0 0 22px rgba(180,120,70,.3),inset 0 0 30px rgba(0,0,0,.4)}
.obs-theme-teahouse.has-lights::before{content:"🏮    🏮    🏮    🏮";font-size:1rem;letter-spacing:6px;text-shadow:0 0 8px rgba(220,120,80,.6)}
.obs-theme-row{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.obs-theme-btn{display:flex;align-items:center;gap:12px;flex-wrap:wrap;text-align:left;padding:12px 14px;border-radius:14px;
  border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.02);color:var(--ink);cursor:pointer;transition:.15s}
.obs-theme-btn:hover{border-color:rgba(233,196,106,.4)}
.obs-theme-btn.on{border-color:rgba(233,196,106,.55);background:rgba(233,196,106,.1)}
.obs-theme-btn .ot-glyph{font-size:1.6rem;flex:0 0 auto}
.obs-theme-btn .ot-name{font-weight:600;color:var(--gold)}
.obs-theme-btn .ot-blurb{flex-basis:100%;line-height:1.4;margin-left:38px}
.obs-theme-btn.locked .ot-name{color:var(--ink);opacity:.85}
.obs-theme-eclipse{background:radial-gradient(circle at 50% 28%,#1a1626,#0a0912 82%)}
.obs-theme-eclipse::after{background:linear-gradient(180deg,rgba(18,16,28,.35),#141220 60%,#0a0912);box-shadow:inset 0 3px 8px rgba(0,0,0,.5)}
.obs-theme-eclipse .obs-window{border-color:rgba(233,196,106,.8);box-shadow:0 0 34px rgba(233,196,106,.4),inset 0 0 34px rgba(0,0,0,.65)}
.obs-theme-eclipse.has-lights::before{content:"✦   ✦   ✦   ✦   ✦   ✦   ✦";color:rgba(233,196,106,.95);text-shadow:0 0 10px rgba(233,196,106,.9)}
.obs-coll-link{margin-top:12px;width:100%}
/* Seasonal collections */
.coll-hero{text-align:center;background:linear-gradient(160deg,rgba(233,196,106,.09),rgba(120,90,160,.09))}
.coll-glyph{font-size:2.6rem;line-height:1}
.coll-name{font-family:var(--display,serif);font-size:1.6rem;color:var(--gold);margin:4px 0 6px}
.coll-tag{line-height:1.55;margin:0 auto 8px;max-width:34ch}
.coll-limited{color:var(--gold);font-size:.85rem;margin:0 0 14px}
.coll-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:8px 0 4px}
.coll-item{display:flex;flex-direction:column;align-items:center;gap:3px;padding:16px 10px;border-radius:16px;
  border:1px solid rgba(233,196,106,.24);background:rgba(255,255,255,.02)}
.coll-item.locked{border-style:dashed;opacity:.9}
.ci-glyph{font-size:1.9rem}
.ci-name{font-weight:600;text-align:center;font-size:.92rem}
.ci-btn{margin-top:6px;padding:7px 16px;border-radius:999px;border:1px solid rgba(233,196,106,.4);
  background:rgba(233,196,106,.12);color:var(--gold);font-size:.85rem;cursor:pointer}
.ci-btn:hover{background:rgba(233,196,106,.22)}
.coll-bundle{margin-top:16px}
.coll-upcoming-h{margin:22px 0 10px;color:var(--gold);font-family:var(--display,serif)}
.coll-strip{display:flex;gap:12px;flex-wrap:wrap}
.coll-teaser{flex:1;min-width:130px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:16px 10px;
  border-radius:16px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.02);text-align:center}
.coll-teaser.on{border-color:rgba(233,196,106,.45);background:rgba(233,196,106,.07)}
.ct-glyph{font-size:1.7rem}
.ct-name{font-weight:600;font-size:.92rem}
.obs-greet{text-align:center;margin:12px 0 4px;font-style:italic}
.obs-card{margin-top:14px}
.obs-mood-row,.obs-decor-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.obs-mood-btn,.obs-decor-btn{padding:9px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.03);color:var(--ink);font-size:.92rem;cursor:pointer;transition:.14s}
.obs-mood-btn:hover,.obs-decor-btn:hover{border-color:rgba(233,196,106,.4)}
.obs-decor-btn.on{border-color:rgba(233,196,106,.5);background:rgba(233,196,106,.12);color:var(--gold)}
.obs-links{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}
.amb-row{display:flex;align-items:center;gap:12px;margin:8px 0}
.amb-row label{flex:0 0 140px;font-size:.9rem;color:var(--ink)}
.amb-row input[type=range]{flex:1;accent-color:var(--gold)}
/* Mood skies */
#sky-mood{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.sky-aurora{background:linear-gradient(180deg,rgba(90,220,170,.10),transparent 42%),radial-gradient(120% 60% at 30% -12%,rgba(139,123,216,.18),transparent 62%)}
html[data-motion="full"] .sky-aurora{animation:sky-hue 20s ease-in-out infinite alternate}
@keyframes sky-hue{0%{filter:hue-rotate(0deg)}100%{filter:hue-rotate(45deg)}}
.sky-golden{background:radial-gradient(120% 80% at 50% 122%,rgba(233,196,106,.24),rgba(233,140,90,.09) 42%,transparent 72%)}
.sky-nebula{background:radial-gradient(60% 42% at 24% 28%,rgba(180,120,220,.18),transparent 60%),radial-gradient(52% 40% at 76% 62%,rgba(233,140,180,.13),transparent 60%)}
html[data-motion="full"] .sky-nebula{animation:sky-drift 46s ease-in-out infinite alternate}
@keyframes sky-drift{0%{transform:translate(0,0) scale(1)}100%{transform:translate(-24px,12px) scale(1.06)}}
.sky-meteor-el{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff7e0;box-shadow:0 0 8px 2px rgba(255,247,224,.8)}
.sky-meteor-el::after{content:"";position:absolute;top:1px;left:3px;width:52px;height:2px;transform-origin:left center;transform:rotate(28deg);background:linear-gradient(90deg,rgba(255,247,224,.85),transparent)}
html .sky-meteor-el{animation:sky-shoot 1.8s ease-in forwards}
@keyframes sky-shoot{0%{opacity:0;transform:translate(0,0)}10%{opacity:1}100%{opacity:0;transform:translate(-70vw,44vh)}}
.sky-flake{position:absolute;top:-14px;color:rgba(255,255,255,.75)}
html .sky-flake{animation:sky-fall linear forwards}
@keyframes sky-fall{to{transform:translateY(106vh) rotate(200deg)}}
.data-safety .safety-status{margin:2px 0 10px}
.data-safety .small{font-size:.86rem}
.data-safety .btn-primary{margin:4px 0 10px}
.backup-nudge .btn-ghost.small{white-space:nowrap}
.acct-invite .btn-primary.small{white-space:nowrap}
.sync-banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;
  background:linear-gradient(135deg,rgba(139,123,216,.16),rgba(233,196,106,.08));
  border:1px solid rgba(139,123,216,.4);margin:4px 0 10px;line-height:1.5}
.sync-banner .sb-glyph{font-size:1.3rem;line-height:1}
.cert-cta{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  background:linear-gradient(135deg,rgba(233,196,106,.12),rgba(139,123,216,.08));border-color:var(--gold)}

/* certificate */
.cert-wrap{display:flex;justify-content:center;padding:10px}
.certificate{width:100%;max-width:720px;aspect-ratio:1.4/1;background:
  radial-gradient(circle at 50% 30%,rgba(233,196,106,.08),transparent 70%),var(--panel-solid);
  border-radius:10px;padding:6px}
.cert-border{height:100%;border:2px solid var(--gold);border-radius:8px;padding:clamp(20px,4vw,44px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  box-shadow:inset 0 0 0 6px rgba(233,196,106,.12)}
.cert-glyph{font-size:2.4rem;color:var(--gold);filter:drop-shadow(0 0 12px rgba(233,196,106,.4))}
.cert-kicker{font-size:.72rem;letter-spacing:3px;text-transform:uppercase;color:var(--muted);margin:8px 0 18px}
.cert-this{color:var(--muted);font-style:italic}
.cert-name{font-family:var(--serif);font-size:clamp(2rem,6vw,3.2rem);color:var(--gold-soft);font-weight:700;margin:6px 0;line-height:1}
.cert-body{max-width:520px;color:var(--ink);font-size:.95rem;margin:10px 0}
.cert-rank{font-family:var(--serif);font-size:1.5rem;color:var(--gold);font-weight:600;margin:6px 0}
.cert-advanced .cert-border{box-shadow:inset 0 0 0 1px rgba(233,196,106,.35)}
.cert-advanced .cert-rank{background:linear-gradient(90deg,var(--gold-soft),var(--gold));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.cert-also{font-family:var(--sans);font-size:.82rem;color:var(--gold-soft);letter-spacing:.04em;margin-top:2px}
.cert-foot{display:flex;justify-content:space-between;width:100%;max-width:520px;margin-top:22px;color:var(--muted);font-size:.85rem}
.cert-sig{font-family:var(--serif);font-size:1.2rem;color:var(--gold-soft)}
.cert-actions{display:flex;gap:12px;justify-content:center;margin-top:20px}

/* print: show only the certificate */
@media print{
  body *{visibility:hidden !important}
  #view-certificate,#view-certificate *{visibility:visible !important}
  .no-print,.topbar,.site-footer,#starfield,.toast{display:none !important}
  #view-certificate{position:absolute;inset:0;margin:0;padding:0}
  .certificate{max-width:100%;box-shadow:none}
  :root{--panel-solid:#fff;--ink:#2a2740;--gold:#b8863b;--gold-soft:#9a6f2c;--muted:#666}
  .cert-border{border-color:#b8863b}
}

/* ============================================================================
 * v5 — ACCOUNT / AUTH
 * ==========================================================================*/
.account-chip{display:flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--line-soft);
  border-radius:30px;padding:4px 13px 4px 8px;color:var(--gold-soft);cursor:pointer;font-family:var(--sans);font-size:.82rem}
.account-chip:hover{border-color:var(--gold)}
.ac-avatar{font-size:1rem}
@media(max-width:700px){.account-chip span:last-child{display:none}}
.auth-modal{position:relative;text-align:center}
.auth-form{margin:6px 0}
.auth-form .field{text-align:left}
.auth-note{margin:14px 0 2px;line-height:1.45;text-align:left;opacity:.85}
.auth-swap{background:none;border:none;color:var(--violet);cursor:pointer;margin-top:12px;font-family:var(--sans);font-size:.88rem;text-decoration:underline}
.auth-close{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--muted);font-size:1rem;cursor:pointer}
input[type=email],input[type=password]{width:100%;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--line-soft);
  background:rgba(10,8,26,.6);color:var(--ink);font-family:var(--sans);font-size:var(--fs-base)}
:root[data-theme="light"] input[type=email],:root[data-theme="light"] input[type=password]{background:#fff}

/* ============================================================================
 * v6 — POLISH: skip link, mobile nav, focus states, chart print
 * ==========================================================================*/
.skip-link{position:absolute;left:-9999px;top:0;z-index:300;background:var(--gold);color:#231a05;
  padding:10px 16px;border-radius:0 0 10px 0;font-family:var(--sans);font-weight:600}
.skip-link:focus{left:0}

/* focus-visible for keyboard users */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,
summary:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--gold);outline-offset:2px;border-radius:6px}

/* mobile nav toggle */
.nav-toggle{display:none;background:var(--panel);border:1px solid var(--line-soft);border-radius:10px;
  width:40px;height:40px;color:var(--gold-soft);font-size:1.2rem;cursor:pointer}
.nav-toggle:hover{border-color:var(--gold)}

@media(max-width:820px){
  .nav-toggle{display:block}
  .topbar{flex-wrap:wrap;position:sticky}
  .nav{position:absolute;top:100%;left:0;right:0;flex-direction:column;flex-wrap:nowrap;gap:0;
    background:var(--panel-solid);border-bottom:1px solid var(--line);z-index:3;
    max-height:0;overflow:hidden;transition:max-height .28s ease;padding:0 clamp(16px,5vw,40px)}
  :root[data-motion="reduced"] .nav{transition:none}
  .topbar.nav-open .nav{max-height:82vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:6px clamp(16px,5vw,40px) 14px}
  .nav-link{display:flex;align-items:center;justify-content:space-between;min-height:26px;
    padding:12px 6px;width:100%;border-bottom:1px solid var(--line-soft)}
  .nav-link::after{content:"\203A";color:var(--muted);font-size:1.3rem;line-height:1;opacity:.4;font-weight:400}
  .nav-link:last-child{border-bottom:none}
  .nav-link:active,.nav-link:hover{background:rgba(255,255,255,.045)}
  .nav-link.active{color:var(--gold);background:rgba(233,196,106,.09);box-shadow:inset 3px 0 0 var(--gold);font-weight:600;border-color:var(--gold)}
  .nav-link.active::after{color:var(--gold);opacity:.8}
  .nav-group{display:block;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
    color:var(--gold-soft);opacity:.6;padding:16px 6px 4px;font-weight:600}
  .nav-group:first-child{padding-top:4px}
  .nav-shop{color:var(--gold)}
  /* Soft blurred backdrop behind the open menu; tap it to dismiss. */
  .nav-backdrop{position:absolute;top:100%;left:0;right:0;height:100vh;z-index:2;
    background:rgba(8,8,20,.35);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
    opacity:0;pointer-events:none;transition:opacity .25s}
  .topbar.nav-open .nav-backdrop{opacity:1;pointer-events:auto}
}
.nav-backdrop{display:none}
@media(max-width:820px){.nav-backdrop{display:block}}
/* Bottom tab bar — one-tap everyday destinations (mobile only) */
.bottom-nav{display:none}
@media(max-width:820px){
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;
    background:rgba(14,12,28,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
    border-top:1px solid var(--line);padding:5px 4px calc(5px + env(safe-area-inset-bottom))}
  .bottom-link{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
    padding:5px 2px;text-decoration:none;color:var(--muted);font-size:.64rem;min-height:46px;border-radius:12px}
  .bottom-link .bl-ic{display:flex;align-items:center;justify-content:center;height:24px;opacity:.85;transition:.15s}
  .bottom-link .bl-ic svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
  .bottom-link.active{color:var(--gold)}
  .bottom-link.active .bl-ic{opacity:1;transform:translateY(-1px);filter:drop-shadow(0 0 6px rgba(233,196,106,.5))}
  .bottom-link:active{background:rgba(255,255,255,.05)}
  body{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
  .companion{bottom:calc(74px + env(safe-area-inset-bottom))!important}
}
.btm-hint{display:none}
.btm-spot-scrim{position:fixed;inset:0;z-index:25;background:rgba(6,6,16,.62);
  -webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);opacity:0;transition:opacity .35s;cursor:pointer}
.btm-spot-scrim.show{opacity:1}
.bottom-nav.spotlit{z-index:40;box-shadow:0 -4px 34px rgba(233,196,106,.4),0 -1px 0 rgba(233,196,106,.5)}
@media(max-width:820px){
  .btm-hint{display:block;position:fixed;left:14px;right:14px;bottom:calc(66px + env(safe-area-inset-bottom));z-index:41;
    background:var(--panel-solid);border:1px solid rgba(233,196,106,.4);border-radius:14px;padding:11px 14px;
    color:var(--ink);font-size:.9rem;text-align:center;box-shadow:0 6px 22px rgba(0,0,0,.45);
    opacity:0;transform:translateY(8px);transition:opacity .35s,transform .35s;cursor:pointer}
  .btm-hint.show{opacity:1;transform:translateY(0)}
  .btm-hint::after{content:"";position:absolute;bottom:-7px;left:50%;transform:translateX(-50%) rotate(45deg);
    width:12px;height:12px;background:var(--panel-solid);border-right:1px solid rgba(233,196,106,.4);border-bottom:1px solid rgba(233,196,106,.4)}
}
/* keep brand + actions on one row on small screens */
@media(max-width:560px){
  .topbar{flex-direction:row;flex-wrap:wrap;gap:8px}
  .brand{font-size:1.4rem}
  .top-actions{gap:8px}
  /* collapse the moon-phase chip to just its dial on small phones (title keeps the name) */
  .moon-chip span{display:none}
  .moon-chip{padding:4px 7px;gap:0}
}
@media(max-width:400px){ .top-actions{gap:6px} .gear{width:38px;height:38px} }

/* Print any chart reading cleanly (button has .no-print) */
@media print{
  body.printing-chart *{visibility:hidden !important}
  body.printing-chart .view.active,body.printing-chart .view.active *{visibility:visible !important}
  body.printing-chart .view.active{position:absolute;inset:0;margin:0;padding:16px}
  body.printing-chart .no-print,body.printing-chart .form-card,body.printing-chart .paywall,
  body.printing-chart .save-bar,body.printing-chart .deep-section.locked,body.printing-chart .topbar,
  body.printing-chart .site-footer,body.printing-chart #starfield,body.printing-chart .toast{display:none !important}
  body.printing-chart{--panel:#fff;--panel-solid:#fff;--ink:#222;--muted:#555;--bg2:#fff}
}
.print-btn{margin-left:8px}
.reading-actions{display:flex;gap:10px;justify-content:center;margin:6px 0 20px;flex-wrap:wrap}

/* ============================================================================
 * v7 — Clearer locked/gated affordances (no fake dropdowns)
 * ==========================================================================*/
/* Locked lesson: a single obvious call-to-action, not an expandable row */
.lesson-locked{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  background:rgba(10,8,26,.28);border:1px dashed var(--line-soft);border-radius:12px;
  padding:14px 16px;margin-bottom:10px;cursor:pointer;color:var(--muted);
  font-family:var(--sans);font-size:1rem;transition:.18s}
.lesson-locked:hover{border-color:var(--gold);background:rgba(233,196,106,.06);color:var(--ink)}
.ll-lock{opacity:.8}
.ll-title{flex:1;min-width:0}
.ll-cta{font-size:.82rem;color:var(--gold-soft);white-space:nowrap;border:1px solid var(--line-soft);
  border-radius:20px;padding:4px 12px}
.lesson-locked:hover .ll-cta{border-color:var(--gold)}

/* Locked deep-reading section: clearly a gate you can tap, not a dropdown */
.deep-section.locked{cursor:pointer;border:1px dashed var(--line-soft);border-radius:12px;
  padding:12px 16px;transition:.18s}
.deep-section.locked:hover{border-color:var(--gold);background:rgba(233,196,106,.04)}
.lock-veil{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:8px;
  background:linear-gradient(180deg,rgba(20,18,40,.1),var(--bg2));font-size:1rem;color:var(--gold-soft);
  border-radius:12px;font-weight:500}
.lock-veil span{letter-spacing:.5px}

/* Pulse to draw the eye to the unlock CTA when a lock is tapped */
@keyframes pulseGlow{0%{box-shadow:0 0 0 0 rgba(233,196,106,.5)}100%{box-shadow:0 0 0 16px rgba(233,196,106,0)}}
.pulse{animation:pulseGlow 1s ease-out 1;border-color:var(--gold) !important}
:root[data-motion="reduced"] .pulse{animation:none;outline:2px solid var(--gold);outline-offset:3px}

/* ============================================================================
 * v8 — GROWTH: quick-start hook, share, membership
 * ==========================================================================*/
.quickstart{max-width:560px;margin:0 auto 18px}
.qs-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:var(--shadow)}
.qs-row{display:flex;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.qs-row>input[type=date],.qs-row>input[type=time]{flex:1;min-width:130px}
.qs-row>input[type=text]{flex:2;min-width:160px}
.qs-row>.btn-primary{white-space:nowrap}
.qs-results{max-height:180px;overflow:auto}
.qs-msg{color:var(--hard);font-size:.9rem;min-height:1em;text-align:center;margin-top:6px}
.qs-reveal{animation:fade .5s ease}
.qs-reveal .big-three{margin-top:6px}
.reading-actions{margin-top:14px}
.sc-recur{font-size:.5em}
@media(max-width:560px){.qs-row{flex-direction:column}.qs-row>*{width:100%}}

/* ============================================================================
 * v9 — SHADOW WORK
 * ==========================================================================*/
.shadow-intro{background:linear-gradient(135deg,rgba(139,123,216,.10),rgba(20,18,40,.3));border-color:var(--line-soft)}
.shadow-intro p{color:var(--muted);margin:0;font-size:.95rem}
.shadow-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:16px}
.shadow-card{text-align:left;background:var(--panel);border:1px solid var(--line-soft);border-radius:16px;
  padding:18px 18px 20px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.2s;position:relative}
.shadow-card:hover{border-color:var(--violet);transform:translateY(-3px);box-shadow:0 10px 30px rgba(139,123,216,.16)}
.shadow-card.done{border-color:var(--line)}
.sw-moon{font-size:1.6rem;color:var(--violet);margin-bottom:6px;filter:drop-shadow(0 0 8px rgba(139,123,216,.4))}
.sw-title{font-family:var(--serif);font-size:1.3rem;color:var(--gold-soft);font-weight:600;margin-bottom:6px}
.sw-done{color:var(--good);font-size:1rem}
.sw-teaser{color:var(--muted);font-size:.9rem;line-height:1.5}

.shadow-overlay{align-items:center}
.shadow-modal{position:relative;max-width:540px;width:100%;background:var(--panel-solid);
  border:1px solid var(--line);border-radius:22px;padding:clamp(24px,5vw,40px);
  box-shadow:var(--shadow);text-align:center;animation:fade .35s ease}
.sw-close{position:absolute;top:14px;right:16px}
.sw-step-count{font-size:.78rem;letter-spacing:2px;text-transform:uppercase;color:var(--violet);margin-bottom:10px}
.sw-step-title{font-family:var(--serif);font-size:1.8rem;color:var(--gold-soft);font-weight:600;margin:.1em 0 .5em}
.sw-step-body{color:var(--ink);font-size:1.08rem;line-height:1.7;text-align:left}
.sw-prompt{font-family:var(--serif);font-size:1.3rem;color:var(--violet);font-style:italic;margin:18px 0 12px;line-height:1.5}
.shadow-modal .journal-input{text-align:left;margin-bottom:14px}
.shadow-modal .btn-primary{margin-top:4px}
.shadow-modal .auth-swap{margin-top:10px}

/* ============================================================================
 * v10 — COSMIC SELF (game)
 * ==========================================================================*/
.game-hero{text-align:center;background:linear-gradient(135deg,rgba(139,123,216,.12),rgba(233,196,106,.06));border-color:var(--line)}
.gh-arch{font-family:var(--serif);font-size:clamp(2rem,6vw,3rem);color:var(--gold);font-weight:700;line-height:1.05}
.gh-line{font-size:1.05rem;margin:6px 0 14px}
.gh-meta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.gh-meta span{background:rgba(10,8,26,.4);border:1px solid var(--line-soft);border-radius:20px;padding:5px 14px;font-size:.85rem;color:var(--gold-soft)}
.stat-row{display:grid;grid-template-columns:130px 1fr 74px;align-items:center;gap:12px;margin:10px 0}
.stat-name{font-size:.92rem;color:var(--ink)}
.stat-track{height:12px;background:rgba(10,8,26,.6);border-radius:10px;overflow:hidden}
.stat-fill{display:block;height:100%;background:linear-gradient(90deg,var(--violet),var(--gold));transition:width .5s}
.stat-val{text-align:right;font-family:var(--serif);font-size:1.2rem;color:var(--gold-soft)}
.stat-buff{font-family:var(--sans);font-size:.72rem;margin-left:5px;padding:1px 6px;border-radius:10px}
.stat-buff.up{color:var(--good);background:rgba(140,224,176,.14)}
.stat-buff.down{color:var(--hard);background:rgba(255,159,159,.14)}
.buff-row{display:flex;align-items:center;gap:12px;margin:8px 0}
.buff-badge{font-size:.85rem;font-weight:600;padding:4px 12px;border-radius:20px;white-space:nowrap}
.buff-badge.up{color:var(--good);background:rgba(140,224,176,.14);border:1px solid rgba(140,224,176,.3)}
.buff-badge.down{color:var(--hard);background:rgba(255,159,159,.12);border:1px solid rgba(255,159,159,.3)}
.trait-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.trait-card{background:rgba(10,8,26,.35);border:1px solid var(--line-soft);border-radius:14px;padding:14px}
.trait-card.trait-trine,.trait-card.trait-sextile{border-color:rgba(106,183,255,.4)}
.trait-card.trait-square,.trait-card.trait-opposition{border-color:rgba(255,159,104,.4)}
.trait-card.trait-conjunction{border-color:rgba(233,216,166,.5)}
.trait-name{font-family:var(--serif);font-size:1.15rem;color:var(--gold-soft);font-weight:600;margin-bottom:4px}
.trait-fx{font-size:.85rem}
.quest-row{display:flex;align-items:center;gap:12px;padding:11px 6px;border-bottom:1px solid rgba(180,157,201,.08)}
.quest-row:last-of-type{border-bottom:none}
.quest-check{width:24px;height:24px;flex:none;display:flex;align-items:center;justify-content:center;border-radius:50%;
  border:1px solid var(--line-soft);color:var(--muted);font-size:.85rem}
.quest-row.done .quest-check{background:rgba(140,224,176,.18);border-color:var(--good);color:var(--good)}
.quest-row.done .quest-name{color:var(--muted);text-decoration:line-through}
.quest-name{flex:1;color:var(--ink)}
.quest-row:not(.done):hover .quest-name{color:var(--gold-soft)}
.quest-xp{font-size:.8rem;color:var(--gold-soft)}

/* ============================================================================
 * v11 — new chart types
 * ==========================================================================*/
.star-hit{padding:12px 0;border-bottom:1px solid rgba(180,157,201,.08)}
.star-hit:last-child{border-bottom:none}
.sh-head{color:var(--ink);margin-bottom:3px}
.sh-head .muted{font-size:.85rem}

/* ============================================================================
 * v12 — SCHOOL OF ASTROLOGY (lessons, quizzes, practice, glossary, exam)
 * ==========================================================================*/
.school-bar{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:18px}

/* ---- Start Here onramp ---- */
.start-here{background:linear-gradient(135deg,rgba(233,196,106,.12),rgba(139,123,216,.08));border:1px solid rgba(233,196,106,.32);text-align:center}
.sh-eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--gold-soft);margin-bottom:6px}
.sh-title{font-family:var(--serif);font-size:1.5rem;color:var(--ink);margin:2px 0 8px;line-height:1.2}
.sh-sub{color:var(--muted);max-width:46ch;margin:0 auto 14px;font-size:.95rem;line-height:1.55}
.sh-bar{height:7px;border-radius:99px;background:rgba(10,8,26,.4);overflow:hidden;margin:0 auto 16px;max-width:420px}
.sh-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--gold-soft),var(--gold));border-radius:99px;transition:width .5s ease}
.sh-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.school-banner{background:linear-gradient(90deg,rgba(233,196,106,.14),rgba(139,123,216,.08));border-color:rgba(233,196,106,.32)}

/* ---- Curriculum map / trail ---- */
.path-summary{display:flex;justify-content:space-around;gap:10px;text-align:center;flex-wrap:wrap}
.ps-stat{display:flex;flex-direction:column;min-width:90px}
.ps-stat b{font-family:var(--serif);font-size:1.35rem;color:var(--gold-soft);line-height:1.15}
.ps-stat span{font-size:.78rem;color:var(--muted)}
.onramp-cta{margin:14px 0 4px}
.path-trail{margin-top:20px}
/* home "drop me back in" continue card — the lowest-activation way back into the school */
.learn-continue{max-width:600px;margin:18px auto 0}
.lc-card{background:linear-gradient(135deg,rgba(233,196,106,.12),rgba(169,139,255,.10));border:1px solid rgba(233,196,106,.32);border-radius:18px;padding:18px 20px}
.lc-eyebrow{display:inline-block;font-size:.78rem;letter-spacing:.06em;color:var(--gold,#e9c46a);opacity:.95;margin-bottom:6px}
.lc-next{margin:2px 0 10px;font-size:1.25rem;font-family:var(--serif,serif);color:var(--ink,#efe9ff)}
.lc-bar{height:9px;border-radius:20px;background:rgba(255,255,255,.09);overflow:hidden;margin:4px 0 6px}
.lc-bar span{display:block;height:100%;border-radius:20px;background:linear-gradient(90deg,var(--gold,#e9c46a),var(--violet,#a98bff));transition:width .6s cubic-bezier(.22,1,.36,1)}
.lc-prog{font-size:.85rem;margin:0 0 14px}
.lc-go{font-size:1.05rem;padding:14px}
.lc-done .lc-next{font-size:1.1rem}
.lc-seals-link{display:block;width:100%;margin-top:12px;background:none;border:none;color:var(--gold,#e9c46a);cursor:pointer;font-size:.9rem;text-align:center;opacity:.9}
.lc-seals-link:hover{opacity:1;text-decoration:underline}
/* Seals collection — the gathered-things wheel */
.seals-progress{text-align:center}
.seals-progress .sp-count{font-size:1.05rem;margin-bottom:8px}
.seals-progress .sp-count b{color:var(--gold,#e9c46a);font-size:1.4rem}
.seals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:12px;margin:16px 0}
.seal-medallion{display:flex;flex-direction:column;align-items:center;gap:5px;padding:16px 8px;border-radius:16px;cursor:pointer;border:1px solid var(--line,rgba(255,255,255,.09));background:var(--panel,#171232);transition:transform .15s,box-shadow .3s}
.seal-medallion:hover{transform:translateY(-2px)}
.seal-medallion .seal-glyph{font-size:2rem;line-height:1}
.seal-medallion .seal-name{font-size:.82rem;text-align:center;color:var(--ink,#efe9ff)}
.seal-medallion .seal-state{font-size:.68rem;letter-spacing:.04em}
.seal-medallion.earned{background:linear-gradient(135deg,rgba(233,196,106,.16),rgba(169,139,255,.12));border-color:rgba(233,196,106,.45);box-shadow:0 0 18px rgba(233,196,106,.18)}
.seal-medallion.earned .seal-state{color:var(--gold,#e9c46a)}
.seal-medallion.locked{opacity:.5;filter:grayscale(.4)}
.seal-medallion.locked .seal-state{color:var(--muted,#a99fd6)}
.seal-capstone{text-align:center}
.seal-capstone .seal-glyph.big{font-size:2.6rem;display:block;margin-bottom:4px;opacity:.5}
.seal-capstone.earned .seal-glyph.big{opacity:1}
.path-stage{position:relative;padding-left:20px;margin-bottom:26px;border-left:2px solid var(--line-soft)}
.stage-head{display:flex;align-items:baseline;gap:10px;margin:0 0 2px}
.stage-name{font-family:var(--serif);font-size:1.28rem;color:var(--ink)}
.stage-count{font-size:.85rem}
.stage-blurb{margin:0 0 12px;font-size:.9rem;max-width:60ch}
.trail-module{margin-bottom:12px}
.tm-title{font-family:var(--sans);font-weight:600;font-size:.92rem;color:var(--gold-soft);margin:0 0 6px}
.trail-node{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:rgba(10,8,26,.28);border:1px solid var(--line-soft);border-radius:11px;padding:11px 14px;margin-bottom:7px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.14s}
.trail-node:hover{border-color:var(--gold);transform:translateX(2px)}
.trail-node .tn-mark{font-size:1rem;width:20px;text-align:center;flex:0 0 auto;color:var(--muted)}
.trail-node .tn-title{flex:1 1 auto;font-size:.95rem}
.trail-node .tn-xp{font-size:.75rem;color:var(--muted);flex:0 0 auto}
.trail-node.done{opacity:.72}
.trail-node.done .tn-mark{color:var(--gold)}
.trail-node.current{border-color:var(--gold);background:rgba(233,196,106,.1);box-shadow:0 0 0 1px rgba(233,196,106,.35)}
.trail-node.current .tn-mark{color:var(--gold-soft)}
.trail-node.locked,.trail-node.gated{opacity:.5}
.trail-node.locked{cursor:pointer}
.trail-milestone{display:flex;align-items:center;gap:11px;margin:10px 0 4px;padding:11px 14px;border-radius:12px;border:1px dashed rgba(233,196,106,.4);background:rgba(233,196,106,.05);font-family:var(--sans)}
.trail-milestone.earned{border-style:solid;border-color:var(--gold);background:rgba(233,196,106,.1);cursor:pointer}
.trail-milestone .ms-icon{font-size:1.15rem}
.trail-milestone .ms-name{flex:1 1 auto;font-weight:600;color:var(--ink);font-size:.95rem}
.trail-milestone .ms-state{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.trail-milestone.earned .ms-state{color:var(--gold-soft)}

/* ---- Retention: study plan, reviews, check-ins ---- */
.study-plan{background:linear-gradient(135deg,rgba(139,123,216,.08),rgba(233,196,106,.05))}
.sp-row{display:flex;gap:14px;justify-content:space-around;text-align:center;margin-bottom:12px}
.sp-cell{flex:1 1 0;min-width:0}
.sp-label{text-transform:uppercase;letter-spacing:.1em}
.sp-val{font-family:var(--serif);font-size:1.5rem;color:var(--gold-soft);line-height:1.1;margin:2px 0}
.sp-sub{line-height:1.3}
.sp-picker{display:flex;gap:7px;flex-wrap:wrap;justify-content:center;margin-bottom:12px}
.sp-chip{font-family:var(--sans);font-size:.82rem;padding:6px 12px;border-radius:99px;border:1px solid var(--line-soft);background:rgba(10,8,26,.3);color:var(--muted);cursor:pointer;transition:.14s}
.lots-toggle{display:flex;gap:8px;justify-content:center;margin-bottom:14px;flex-wrap:wrap}
.sp-chip:hover{border-color:var(--gold)}
.sp-chip.on{border-color:var(--gold);background:rgba(233,196,106,.14);color:var(--ink)}
.school-bar .has-due{border-color:var(--gold);color:var(--gold-soft);background:rgba(233,196,106,.1)}
.review-card{text-align:center}
.review-progress{margin-bottom:10px}
.review-done{font-size:2.4rem;margin-bottom:4px}
.checkin-btn{width:100%;margin-top:6px;padding:11px 14px;border-radius:12px;border:1px dashed rgba(233,196,106,.5);background:rgba(233,196,106,.05);color:var(--gold-soft);font-family:var(--sans);font-size:.92rem;cursor:pointer;transition:.14s}
.checkin-btn:hover{border-style:solid;border-color:var(--gold);background:rgba(233,196,106,.1)}
.module-mastered{margin-top:6px;padding:9px 14px;border-radius:12px;background:rgba(233,196,106,.1);border:1px solid var(--gold);color:var(--gold-soft);font-family:var(--sans);font-size:.9rem;text-align:center}
.module-seal{font-size:.72rem;color:var(--gold-soft);border:1px solid rgba(233,196,106,.5);border-radius:99px;padding:1px 7px;font-family:var(--sans);letter-spacing:.03em;white-space:nowrap}
.checkin-body{margin-top:14px}
.quiz-opt.locked{pointer-events:none;opacity:.85}

/* ---- Specialization tracks ---- */
.spec-earned-note{margin:-6px 0 14px}
.spec-card{border:1px solid var(--line-soft)}
.spec-card.earned{border-color:var(--gold);background:linear-gradient(135deg,rgba(233,196,106,.09),rgba(139,123,216,.05))}
.spec-top{display:flex;gap:13px;align-items:center;margin-bottom:8px}
.spec-icon{font-size:1.8rem;flex:0 0 auto}
.spec-head{display:flex;flex-direction:column;min-width:0}
.spec-name{font-family:var(--serif);font-size:1.25rem;color:var(--ink)}
.spec-tagline{font-size:.9rem}
.spec-blurb{font-size:.92rem;margin:0 0 10px;line-height:1.5}
.spec-bar{height:6px;border-radius:99px;background:rgba(10,8,26,.4);overflow:hidden;margin-bottom:5px}
.spec-bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--gold-soft),var(--gold));border-radius:99px;transition:width .5s}
.spec-count{margin-bottom:10px}
.spec-lessons{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.spec-lrow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:rgba(10,8,26,.26);border:1px solid var(--line-soft);border-radius:10px;padding:9px 12px;cursor:pointer;color:var(--ink);font-family:var(--sans);font-size:.9rem;transition:.14s}
.spec-lrow:hover{border-color:var(--gold)}
.spec-lrow .sl-mark{width:16px;text-align:center;flex:0 0 auto;color:var(--muted)}
.spec-lrow.done{opacity:.72}.spec-lrow.done .sl-mark{color:var(--gold)}
.spec-lrow.locked{opacity:.55}
.spec-lrow .sl-title{flex:1 1 auto}
.spec-lrow .sl-tag{font-size:.68rem;color:var(--gold-soft);border:1px solid rgba(233,196,106,.4);border-radius:99px;padding:1px 7px;flex:0 0 auto}
.spec-actions{margin-top:2px}
.spec-done-tag{padding:10px 14px;border-radius:12px;background:rgba(233,196,106,.1);border:1px solid var(--gold);color:var(--gold-soft);text-align:center;font-family:var(--sans);font-size:.92rem}
.spec-branch{margin-top:22px;background:linear-gradient(135deg,rgba(139,123,216,.08),rgba(233,196,106,.05))}
.spec-chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 14px}
.spec-chip-mini{font-family:var(--sans);font-size:.82rem;padding:5px 11px;border-radius:99px;border:1px solid var(--line-soft);background:rgba(10,8,26,.3);color:var(--muted)}
.spec-chip-mini.on{border-color:var(--gold);background:rgba(233,196,106,.12);color:var(--gold-soft)}
.spec-badge-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}
.spec-badge{font-family:var(--sans);font-size:.85rem;padding:5px 12px;border-radius:99px;border:1px solid var(--gold);background:rgba(233,196,106,.1);color:var(--gold-soft)}

/* ---- Same Chart, Many Lenses ---- */
.lens-controls{display:flex;flex-direction:column;gap:12px}
.lens-tabs{display:flex;gap:8px;flex-wrap:wrap}
.lens-tab{flex:1 1 auto;min-width:110px;font-family:var(--sans);font-size:.9rem;padding:9px 12px;border-radius:12px;border:1px solid var(--line-soft);background:rgba(10,8,26,.3);color:var(--muted);cursor:pointer;transition:.14s}
.lens-tab:hover{border-color:var(--gold)}
.lens-tab.on{border-color:var(--gold);background:rgba(233,196,106,.13);color:var(--ink)}
.lens-selrow{display:flex;align-items:center;gap:10px}
.lens-select{flex:0 0 auto;background:rgba(10,8,26,.5);color:var(--ink);border:1px solid var(--line-soft);border-radius:9px;padding:7px 10px;font-family:var(--sans)}
.lens-placement{text-align:center;margin:18px 0 14px}
.lens-placement .lp-title{display:block;font-family:var(--serif);font-size:1.5rem;color:var(--gold-soft)}
.lens-placement .lp-sub{display:block;font-size:.9rem;margin-top:2px}
.lens-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.lens-card{background:linear-gradient(135deg,rgba(139,123,216,.07),rgba(233,196,106,.04));border:1px solid var(--line-soft);border-radius:14px;padding:15px 16px;display:flex;flex-direction:column}
.lens-card-head{display:flex;align-items:center;gap:9px;margin-bottom:3px}
.lens-card-head .lc-icon{font-size:1.3rem}
.lens-card-head .lc-name{font-family:var(--serif);font-size:1.15rem;color:var(--ink)}
.lc-question{margin-bottom:9px;font-style:italic}
.lc-take{font-size:.95rem;line-height:1.55;color:var(--ink);margin:0 0 12px;flex:1 1 auto}
.lc-learn{align-self:flex-start;background:none;border:none;color:var(--gold-soft);font-family:var(--sans);font-size:.82rem;cursor:pointer;padding:0;opacity:.85;transition:.14s}
.lc-learn:hover{opacity:1;text-decoration:underline}
.lens-foot{margin-top:16px}

/* ---- Internationalization: language picker + RTL ---- */
.lang-chip{font-size:1rem}
.lang-overlay{position:fixed;inset:0;z-index:1000;background:rgba(4,4,14,.6);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px}
.lang-menu{background:var(--panel,#14131f);border:1px solid var(--line-soft);border-radius:16px;padding:18px;max-width:340px;width:100%;max-height:80vh;overflow:auto;box-shadow:0 18px 50px rgba(0,0,0,.5)}
.lang-title{font-family:var(--serif);font-size:1.2rem;color:var(--gold-soft);margin-bottom:12px;text-align:center}
.lang-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:6px 0}
.lang-opt,.lang-menu .lang-opt{display:block;width:100%;text-align:center;font-family:var(--sans);font-size:.95rem;padding:11px 12px;margin-bottom:8px;border-radius:11px;border:1px solid var(--line-soft);background:rgba(10,8,26,.3);color:var(--ink);cursor:pointer;transition:.14s}
.lang-grid .lang-opt{margin-bottom:0}
.lang-opt:hover{border-color:var(--gold)}
.lang-opt.on{border-color:var(--gold);background:rgba(233,196,106,.14);color:var(--gold-soft)}
.lang-note{margin-top:10px;font-size:.8rem;color:var(--muted);text-align:center;line-height:1.4}
.language-card .lang-note{text-align:left}

/* RTL support (Arabic, Hebrew, Persian, Urdu) — mirror the shell */
[dir="rtl"] body,[dir="rtl"]{direction:rtl}
[dir="rtl"] .skip-link{left:auto;right:6px}
[dir="rtl"] .nav{flex-direction:row}
[dir="rtl"] .page-head,[dir="rtl"] .card,[dir="rtl"] .lesson-p,[dir="rtl"] .interp-lead,[dir="rtl"] .muted,[dir="rtl"] .hero-sub{text-align:right}
[dir="rtl"] .hero,[dir="rtl"] .center,[dir="rtl"] .center-card,[dir="rtl"] .lens-placement,[dir="rtl"] .lens-foot,[dir="rtl"] .review-card{text-align:center}
[dir="rtl"] .lesson-row,[dir="rtl"] .trail-node,[dir="rtl"] .spec-lrow,[dir="rtl"] .founder-banner{text-align:right}
[dir="rtl"] .lr-check,[dir="rtl"] .tn-mark,[dir="rtl"] .sl-mark{transform:scaleX(-1)}
[dir="rtl"] .fb-arrow,[dir="rtl"] .rung-min{transform:scaleX(-1)}
[dir="rtl"] .lesson-example,[dir="rtl"] .lesson-tryit,[dir="rtl"] .lesson-mistake{border-left:none;border-right:3px solid var(--gold)}
[dir="rtl"] .path-stage{border-left:none;border-right:2px solid var(--line-soft);padding-left:0;padding-right:20px}

/* Screen-reader-only content (announced but not shown) */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* Visible, strong focus ring for keyboard users (kept off for mouse via :focus-visible) */
a:focus-visible,button:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--gold-soft);outline-offset:2px;border-radius:4px}
.view:focus{outline:none}
/* Honour the OS "reduce motion" preference even if the in-app toggle is untouched */
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Privacy explainer dropdown */
.privacy-drop{margin:16px 0}
.privacy-toggle{width:100%;text-align:left;background:rgba(139,123,216,.08);border:1px solid var(--line-soft);border-radius:12px;padding:12px 15px;color:var(--ink);font-family:var(--sans);font-size:.95rem;cursor:pointer;transition:.14s}
.privacy-toggle:hover{border-color:var(--gold)}
.privacy-toggle.open{border-color:var(--gold);border-bottom-left-radius:0;border-bottom-right-radius:0}
.privacy-panel{border:1px solid var(--gold);border-top:none;border-radius:0 0 12px 12px;padding:6px 16px 14px;background:rgba(139,123,216,.05)}
.privacy-panel p{line-height:1.6;margin:12px 0}
.privacy-oneline{color:var(--gold-soft)}
.privacy-page p{line-height:1.65}

/* Interweave: cross-space bridges */
.lesson-try-btn{margin:4px 0 8px}
.learn-bridge{background:linear-gradient(90deg,rgba(233,196,106,.13),rgba(139,123,216,.07));border-color:rgba(233,196,106,.32)}

/* Understand Anyone */
.ctx-row{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px}
.ctx-chip{font-family:var(--sans);font-size:.88rem;padding:8px 13px;border-radius:99px;border:1px solid var(--line-soft);background:rgba(10,8,26,.3);color:var(--muted);cursor:pointer;transition:.14s}
.ctx-chip:hover{border-color:var(--gold)}
.ctx-chip.on{border-color:var(--gold);background:rgba(233,196,106,.14);color:var(--ink)}
.understand-head h2{margin:0}
.ctx-tip{background:linear-gradient(135deg,rgba(233,196,106,.1),rgba(139,123,216,.06));border-color:rgba(233,196,106,.3);line-height:1.55}
.understand-dim .ud-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:6px}
.understand-dim .ud-icon{font-size:1.4rem;flex:0 0 auto;line-height:1.2}
.understand-dim .ud-heads{display:flex;flex-direction:column}
.understand-dim .ud-title{font-family:var(--serif);font-size:1.12rem;color:var(--ink)}
.understand-dim .ud-take{line-height:1.6;margin:0}
.understand-foot{text-align:center;font-style:italic}

/* Practice Vault */
.vault-bar{margin-bottom:14px}
.client-card .cc-head h3{margin:0}
.cc-notes{margin:6px 0}
.report-list{display:flex;flex-direction:column;gap:6px;margin:10px 0}
.report-row{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;text-align:left;background:rgba(10,8,26,.28);border:1px solid var(--line-soft);border-radius:10px;padding:9px 13px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.14s}
.report-row:hover{border-color:var(--gold)}
.cc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.tpl-grid{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.tpl-chip{text-align:left;width:100%;background:rgba(10,8,26,.28);border:1px solid var(--line-soft);border-radius:11px;padding:12px 15px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.14s}
.tpl-chip:hover{border-color:var(--gold)}
.report-title{width:100%;background:rgba(10,8,26,.4);color:var(--ink);border:1px solid var(--line-soft);border-radius:10px;padding:11px 14px;font-family:var(--serif);font-size:1.2rem;margin-bottom:14px}
.report-section{background:rgba(10,8,26,.22);border:1px solid var(--line-soft);border-radius:12px;padding:12px;margin-bottom:10px;position:relative}
.rs-heading{width:100%;background:transparent;color:var(--gold-soft);border:none;border-bottom:1px solid var(--line-soft);padding:4px 2px 6px;font-family:var(--serif);font-size:1.05rem;margin-bottom:8px}
.rs-body{width:100%;background:rgba(10,8,26,.4);color:var(--ink);border:1px solid var(--line-soft);border-radius:8px;padding:10px 12px;font-family:var(--sans);font-size:.95rem;resize:vertical}
.rs-ctrls{display:flex;gap:6px;justify-content:flex-end;margin-top:6px}
.report-tools{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 14px}
.report-actions{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:14px}
.pick-row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:rgba(10,8,26,.3);border:1px solid var(--line-soft);border-radius:10px;padding:10px 13px;margin-bottom:7px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.14s}
.pick-row:hover{border-color:var(--gold)}

/* "My interpretation" notebook */
.note-block{margin-top:12px;padding:12px 14px;border-radius:12px;background:rgba(233,196,106,.06);border:1px dashed rgba(233,196,106,.35)}
.note-head{font-family:var(--serif);color:var(--gold-soft);font-size:.98rem;margin-bottom:6px}
.note-text{line-height:1.55;margin:0 0 6px;white-space:pre-wrap}
.note-meta{margin-bottom:8px}
.note-add{background:none;border:none;color:var(--gold-soft);font-family:var(--sans);font-size:.9rem;cursor:pointer;padding:0;text-decoration:underline}
.note-input{width:100%;background:rgba(10,8,26,.5);color:var(--ink);border:1px solid var(--line-soft);border-radius:10px;padding:10px 12px;font-family:var(--sans);font-size:.95rem;resize:vertical;margin-bottom:8px}
.note-actions{display:flex;gap:8px;flex-wrap:wrap}
.note-card .note-text{margin:6px 0}
.notebook-count{margin:-4px 0 14px}
.note-search{width:100%;background:rgba(10,8,26,.4);color:var(--ink);border:1px solid var(--line-soft);border-radius:10px;padding:10px 14px;font-family:var(--sans);font-size:.95rem;margin-bottom:14px}
.note-search:focus{border-color:var(--gold);outline:none}
.pick-list{margin-top:10px}

/* "On this day" memory card */
.memory-card{background:linear-gradient(135deg,rgba(139,123,216,.1),rgba(233,196,106,.05));border-color:rgba(139,123,216,.3);text-align:center}
.mem-eyebrow{text-transform:uppercase;letter-spacing:.12em;margin-bottom:6px}
.mem-text{font-family:var(--serif);font-size:1.15rem;line-height:1.5;color:var(--ink);margin:0;max-width:44ch;margin-left:auto;margin-right:auto}

/* "Did this resonate?" prompt */
.resonance-prompt{background:linear-gradient(135deg,rgba(233,196,106,.1),rgba(139,123,216,.06));border-color:rgba(233,196,106,.3)}
.rp-eyebrow{text-transform:uppercase;letter-spacing:.12em;margin-bottom:5px}
.rp-q{font-size:1rem;line-height:1.5;margin:0 0 12px}
.rp-opts{display:flex;gap:9px;flex-wrap:wrap}
.rp-opts .btn-ghost{flex:1 1 auto;min-width:90px}
.resonance-stat{margin-top:10px}

/* Reflection journal — patterns */
.field-label{margin:12px 0 5px;text-transform:uppercase;letter-spacing:.08em}
.patterns-card{background:linear-gradient(135deg,rgba(139,123,216,.09),rgba(233,196,106,.05))}
.pattern-list{margin:6px 0 10px;padding-left:18px;display:flex;flex-direction:column;gap:8px}
.pattern-list li{line-height:1.55}

/* Accessibility Center onboarding (gentle, one-question-at-a-time) */
.a11y-modal{position:relative;background:var(--panel,#14131f);border:1px solid var(--line-soft);border-radius:18px;padding:26px 24px;max-width:440px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 20px 60px rgba(0,0,0,.55);text-align:center}
.a11y-eyebrow{font-family:var(--sans);text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;color:var(--gold-soft);margin-bottom:6px}
.a11y-progress{margin-bottom:6px}
.a11y-title{font-family:var(--serif);font-size:1.45rem;color:var(--ink);margin:2px 0 8px;line-height:1.25}
.a11y-sub{font-size:.95rem;line-height:1.55;max-width:38ch;margin:0 auto 16px}
.a11y-actions{display:flex;flex-direction:column;gap:9px;margin-top:6px}
.a11y-opts{display:flex;flex-direction:column;gap:9px;margin:4px 0 14px}
.a11y-opt{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;width:100%;background:rgba(10,8,26,.32);border:1px solid var(--line-soft);border-radius:13px;padding:13px 42px 13px 16px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.14s}
.a11y-opt:hover{border-color:var(--gold);transform:translateY(-1px)}
.a11y-opt.on{border-color:var(--gold);background:rgba(233,196,106,.13)}
.a11y-opt .ao-l{font-size:1rem;font-weight:600}
.a11y-opt .ao-d{font-size:.85rem}
.a11y-opt .ao-tick{position:absolute;right:15px;top:50%;transform:translateY(-50%) scale(.6);
  color:var(--gold);font-weight:700;opacity:0;transition:.16s}
.a11y-opt.on .ao-tick{opacity:1;transform:translateY(-50%) scale(1)}
.a11y-try{margin:0 0 12px;text-align:center}
.a11y-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.a11y-nav .a11y-back{flex:0 0 auto}
.a11y-nav .a11y-next{flex:1 1 auto;max-width:60%;margin-left:auto;padding:12px 20px}
.a11y-dots{display:flex;justify-content:center;gap:7px}
.a11y-dot{width:8px;height:8px;border-radius:50%;background:var(--line-soft);transition:.2s}
.a11y-dot.on{background:var(--gold);transform:scale(1.25)}
.a11y-dot.done{background:var(--gold-soft)}
.comfort-launch{margin-bottom:14px}

/* "Explain Why" — decomposition of an interpretation with confidence chips */
.explain-why{margin-top:12px;padding:12px 14px;border-radius:12px;background:rgba(139,123,216,.07);border:1px solid var(--line-soft)}
.ew-h{font-family:var(--serif);color:var(--gold-soft);font-size:1rem;margin-bottom:8px}
.ew-list{margin:0 0 10px;padding-left:18px;display:flex;flex-direction:column;gap:7px}
.ew-list li{line-height:1.5}
.ew-schools{font-size:.9rem;line-height:1.5;margin:0 0 10px}
.ew-note{margin:0 0 10px}
.ew-lens-link{background:none;border:none;color:var(--gold-soft);font-family:var(--sans);font-size:.85rem;cursor:pointer;padding:0;text-decoration:underline;white-space:nowrap}
.ew-legend{display:flex;flex-wrap:wrap;gap:6px}
.conf-chip{display:inline-block;font-family:var(--sans);font-size:.7rem;padding:1px 8px;border-radius:99px;white-space:nowrap;border:1px solid transparent}
.conf-agreed{background:rgba(120,200,140,.14);color:#a8dcb4;border-color:rgba(120,200,140,.3)}
.conf-house{background:rgba(233,196,106,.14);color:var(--gold-soft);border-color:rgba(233,196,106,.3)}
.conf-modern{background:rgba(139,123,216,.16);color:#c3b8f0;border-color:rgba(139,123,216,.35)}
.conf-interp{background:rgba(180,180,200,.12);color:var(--muted);border-color:var(--line-soft)}

/* Listen (text-to-speech) bar */
.listen-bar{display:inline-flex;align-items:center;gap:8px;margin:10px 0 2px;flex-wrap:wrap;background:rgba(139,123,216,.08);border:1px solid var(--line-soft);border-radius:99px;padding:5px 8px}
.listen-bar .listen-play{white-space:nowrap}
.listen-bar .listen-stop{padding:6px 10px}
.listen-speed{background:rgba(10,8,26,.5);color:var(--ink);border:1px solid var(--line-soft);border-radius:99px;padding:5px 9px;font-family:var(--sans);font-size:.85rem;cursor:pointer}
.listen-speed:hover{border-color:var(--gold)}

/* Chart correctness / transparency notes */
.chart-notes{margin:8px 0 4px;display:flex;flex-direction:column;gap:5px}
.chart-note{background:rgba(139,123,216,.07);border:1px solid var(--line-soft);border-radius:9px;padding:7px 11px;line-height:1.45}
.module-sub{margin:-6px 0 12px;font-size:.9rem}
.lesson-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:rgba(10,8,26,.28);
  border:1px solid var(--line-soft);border-radius:12px;padding:13px 16px;margin-bottom:8px;cursor:pointer;
  color:var(--ink);font-family:var(--sans);font-size:1rem;transition:.16s}
.lesson-row:hover{border-color:var(--gold);background:rgba(233,196,106,.05)}
.lesson-row.done{border-color:var(--line)}
.lesson-row.done .lr-title{color:var(--muted)}
.lesson-row.gated{opacity:.6;cursor:default}
.lr-check{width:24px;height:24px;flex:none;display:flex;align-items:center;justify-content:center;border-radius:50%;
  border:1px solid var(--line-soft);color:var(--muted);font-size:.8rem}
.lesson-row.done .lr-check{background:rgba(140,224,176,.18);border-color:var(--good);color:var(--good)}
.lr-title{flex:1}
.lr-min{color:var(--muted);font-size:.72rem;white-space:nowrap;opacity:.85}
.lesson-meta{margin:-2px 0 10px;letter-spacing:.02em}

/* lesson modal */
.lesson-overlay{align-items:flex-start;overflow-y:auto;padding:40px 16px}
.lesson-modal{position:relative;max-width:640px;width:100%;margin:auto;background:var(--panel-solid);
  border:1px solid var(--line);border-radius:22px;padding:clamp(24px,4vw,40px);box-shadow:var(--shadow);animation:fade .3s ease}
.lesson-obj{font-size:.9rem;color:var(--violet);background:rgba(139,123,216,.1);border-radius:10px;padding:10px 14px;margin-bottom:14px}
.lesson-h{font-family:var(--serif);font-size:1.9rem;color:var(--gold-soft);font-weight:600;margin:.1em 0 .5em}
.lesson-sh{font-family:var(--serif);color:var(--gold-soft);font-size:1.2rem;margin:1em 0 .2em}
.lesson-p{color:var(--ink);line-height:1.75;margin:.5em 0}
.lesson-example{background:rgba(233,196,106,.08);border-left:3px solid var(--gold);border-radius:8px;padding:12px 16px;margin:16px 0;color:var(--ink)}
/* learn-on-your-chart personalised callout */
.lesson-personal{background:linear-gradient(135deg,rgba(169,139,255,.16),rgba(233,196,106,.10));border:1px solid rgba(169,139,255,.35);border-radius:14px;padding:14px 16px;margin:18px 0;color:var(--ink)}
.lesson-personal .lp-h{font-size:.8rem;letter-spacing:.05em;color:var(--violet);margin-bottom:6px;text-transform:uppercase}
.lesson-personal p{margin:0;line-height:1.55}
.lesson-personal b{color:var(--gold2,#f0d68c)}
.lesson-personal-cta{text-align:center}
.lesson-personal-cta .btn-ghost{margin-top:10px}
.lesson-tryit{background:rgba(120,180,255,.09);border-left:3px solid #7fb0ff;border-radius:8px;padding:12px 16px;margin:16px 0;color:var(--ink)}
.lesson-tryit strong{color:#a9cbff}
.cert-progress{margin:8px 0 12px}
.lesson-takeaways{background:rgba(10,8,26,.3);border:1px solid var(--line-soft);border-radius:12px;padding:14px 18px;margin:14px 0}
.lt-h{font-family:var(--serif);color:var(--gold-soft);font-size:1.1rem;margin-bottom:6px}
.lesson-takeaways ul{margin:0;padding-left:20px;color:var(--muted)}
.lesson-takeaways li{margin:4px 0}
.lesson-mistake{color:var(--muted);font-size:.92rem;border-radius:8px;background:rgba(255,159,159,.06);padding:10px 14px;margin:12px 0}

/* quiz */
.quiz{margin-top:20px;border-top:1px solid var(--line-soft);padding-top:18px}
.quiz-h{font-family:var(--serif);color:var(--gold-soft);font-size:1.25rem;margin:0 0 12px}
.quiz-q{margin-bottom:16px}
.quiz-question{color:var(--ink);margin-bottom:8px;font-weight:500}
.quiz-opts{display:grid;gap:8px}
.quiz-opt{text-align:left;background:rgba(10,8,26,.4);border:1px solid var(--line-soft);border-radius:10px;
  padding:11px 14px;color:var(--ink);cursor:pointer;font-family:var(--sans);font-size:.95rem;transition:.14s}
.quiz-opt:hover{border-color:var(--gold)}
.quiz-opt.picked{border-color:var(--violet)}
.quiz-opt.right{border-color:var(--good);background:rgba(140,224,176,.14);color:var(--good)}
.quiz-opt.wrong{border-color:var(--hard);background:rgba(255,159,159,.12)}
.quiz-opt.locked{cursor:default;opacity:.9}
.quiz-fb{font-size:.88rem;margin-top:8px;padding:8px 12px;border-radius:8px}
.quiz-fb.ok{color:var(--good);background:rgba(140,224,176,.1)}
.quiz-fb.no{color:var(--hard);background:rgba(255,159,159,.08)}
:root[data-theme="light"] .quiz-opt{background:#fff}

/* practice drills */
.drill-q{font-size:1.2rem;font-family:var(--serif);color:var(--gold-soft);margin-bottom:14px;line-height:1.4}
#drill-score{text-align:center}

/* glossary */
.gl-glyph{font-size:1.4rem;color:var(--gold-soft);width:44px;text-align:center}

/* exam */
.exam-result{margin-top:18px;text-align:center;border-radius:16px;padding:20px}
.exam-result.pass{background:rgba(140,224,176,.1);border:1px solid var(--good)}
.exam-result.fail{background:rgba(255,159,159,.08);border:1px solid var(--line-soft)}
.er-score{font-family:var(--serif);font-size:3rem;color:var(--gold);font-weight:700}
.er-msg{color:var(--ink);margin:8px 0 14px}

/* v13 — practice drill categories */
.drill-cats{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-bottom:16px}
.drill-cats .chip.on{background:rgba(233,196,106,.16);border-color:var(--gold);color:var(--gold-soft)}

/* ============================================================================
 * v14 — CHART LAB (guided whole-chart reading)
 * ==========================================================================*/
.lab-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.lab-card{text-align:left;background:rgba(10,8,26,.3);border:1px solid var(--line-soft);border-radius:14px;
  padding:16px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.18s}
.lab-card:hover{border-color:var(--gold);transform:translateY(-3px);box-shadow:0 8px 22px rgba(233,196,106,.12)}
.lab-icon{font-size:1.5rem;color:var(--gold-soft)}
.lab-title{font-family:var(--serif);font-size:1.25rem;color:var(--gold-soft);margin:4px 0 3px}
.lab-blurb{font-size:.85rem;line-height:1.45}
.lab-steps{margin-top:20px}
.lab-step-count{font-size:.78rem;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
.lab-prompt{font-family:var(--serif);font-size:1.3rem;color:var(--ink);line-height:1.4;margin:0 0 14px}
.lab-model{margin-top:16px;background:rgba(233,196,106,.07);border-left:3px solid var(--gold);border-radius:8px;
  padding:14px 16px;color:var(--ink);line-height:1.7}
.lm-h{color:var(--gold-soft);font-weight:600;margin-bottom:6px}
.lab-finish{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}

/* v15 — Chart Lab blank-slate mode */
.lab-mode{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:18px}
.mode-btn{display:flex;flex-direction:column;gap:2px;align-items:flex-start;background:var(--panel);
  border:1px solid var(--line-soft);border-radius:14px;padding:12px 18px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.16s;min-width:220px}
.mode-btn:hover{border-color:var(--line)}
.mode-btn.on{border-color:var(--gold);background:rgba(233,196,106,.08)}
.mb-l{font-size:1rem;color:var(--gold-soft);font-weight:500}
.mb-d{font-size:.8rem;color:var(--muted)}
.lab-tag{font-size:.6rem;letter-spacing:1.5px;text-transform:uppercase;background:rgba(139,123,216,.2);color:var(--violet);padding:2px 8px;border-radius:10px;vertical-align:middle}
.lab-checklist{margin:0 0 14px;padding-left:20px;color:var(--muted)}
.lab-checklist li{margin:5px 0}
.lab-write{width:100%}
.sa-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:6px 0 14px}
.sa-chips .chip.on{background:rgba(233,196,106,.16);border-color:var(--gold);color:var(--gold-soft)}

/* v16 — peer-review readings + feedback threads */
.post-reading{border-color:rgba(139,123,216,.35);background:linear-gradient(180deg,rgba(139,123,216,.06),transparent)}
.reading-badge{font-size:.6rem;letter-spacing:1.5px;text-transform:uppercase;background:rgba(139,123,216,.2);
  color:var(--violet);padding:2px 8px;border-radius:10px;margin-left:auto}
.reading-chart{font-family:var(--serif);font-size:1.02rem;color:var(--gold-soft);margin:4px 0 2px}
.feedback-btn{background:none;border:1px solid var(--line-soft);border-radius:20px;padding:7px 13px;
  color:var(--muted);font-family:var(--sans);font-size:.82rem;cursor:pointer;transition:.15s}
.feedback-btn:hover{border-color:var(--line);color:var(--ink)}
.feedback-thread{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft)}
.thread-empty{margin:0 0 10px;font-style:italic}
.thread-list{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.thread-item{display:flex;gap:10px;align-items:flex-start}
.thread-item.mine .thread-body{background:rgba(233,196,106,.06);border-radius:8px;padding:6px 10px}
.thread-avatar{font-size:1.1rem;line-height:1.4;flex-shrink:0}
.thread-body{flex:1}
.thread-author{font-size:.82rem;color:var(--gold-soft);font-weight:500}
.thread-text{margin:2px 0 0;color:var(--ink);line-height:1.55;font-size:.92rem}
.thread-compose{display:flex;gap:8px;align-items:flex-end}
.thread-input{flex:1;min-height:44px}
.btn-primary.small{padding:8px 14px;font-size:.82rem;white-space:nowrap}

/* v17 — notification inbox + bell chip */
.inbox-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border-radius:50%;background:var(--panel);border:1px solid var(--line-soft);color:var(--ink);cursor:pointer;transition:.15s}
.inbox-chip:hover{border-color:var(--line)}
.inbox-chip.has-unread{border-color:var(--gold);color:var(--gold-soft)}
.bell-glyph{font-size:1rem;line-height:1}
.inbox-badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;
  background:var(--violet,#8b7bd8);color:#fff;font-size:.62rem;font-weight:700;display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 2px var(--bg,#12131f)}
.inbox-actions{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.btn-ghost.small{padding:5px 12px;font-size:.8rem}
.inbox-list{display:flex;flex-direction:column;gap:10px}
.notif-card{display:flex;gap:12px;align-items:flex-start;background:var(--panel);border:1px solid var(--line-soft);
  border-radius:14px;padding:14px 16px;transition:.15s}
.notif-card:hover{border-color:var(--line)}
.notif-card.unread{border-color:rgba(139,123,216,.4);background:linear-gradient(180deg,rgba(139,123,216,.07),transparent)}
.notif-avatar{font-size:1.4rem;line-height:1.2;flex-shrink:0}
.notif-body{flex:1;min-width:0}
.notif-line{color:var(--ink);font-size:.92rem;line-height:1.5}
.notif-line strong{color:var(--gold-soft)}
.notif-ctx{color:var(--violet)}
.notif-time{color:var(--muted);font-size:.76rem;margin-left:6px;white-space:nowrap}
.notif-text{margin:6px 0 0;color:var(--muted);font-style:italic;line-height:1.55;font-size:.9rem}
.empty-inbox .empty-glyph{font-size:2.6rem;opacity:.5;margin-bottom:8px}
.post-highlight{animation:postpulse 1.6s ease-out 1}
@keyframes postpulse{0%{box-shadow:0 0 0 0 rgba(139,123,216,.55)}100%{box-shadow:0 0 0 14px rgba(139,123,216,0)}}
:root[data-motion="reduced"] .post-highlight{animation:none;border-color:var(--violet)}

/* v18 — daily ritual (return hook) */
.ritual-overlay{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(8,9,16,.72);backdrop-filter:blur(6px);animation:ritfade .28s ease}
.ritual-overlay.closing{animation:ritfade .26s ease reverse}
@keyframes ritfade{from{opacity:0}to{opacity:1}}
.ritual-modal{position:relative;width:100%;max-width:460px;max-height:92vh;overflow-y:auto;background:var(--panel,#1a1b28);
  border:1px solid var(--line-soft);border-radius:22px;padding:26px 24px 22px;box-shadow:0 24px 60px rgba(0,0,0,.5);
  animation:ritpop .32s cubic-bezier(.2,.9,.3,1.2)}
@keyframes ritpop{from{transform:translateY(18px) scale(.97);opacity:0}to{transform:none;opacity:1}}
.ritual-close{position:absolute;top:14px;right:16px;background:none;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer;line-height:1}
.ritual-close:hover{color:var(--ink)}
.ritual-head{text-align:center;margin-bottom:16px}
.ritual-greet{font-family:var(--serif);font-size:1.55rem;color:var(--gold-soft)}
.ritual-date{color:var(--muted);font-size:.86rem;margin-top:2px}
.ritual-moon{display:flex;gap:16px;align-items:center;background:rgba(233,196,106,.06);border-radius:16px;padding:14px 16px;margin-bottom:14px}
.ritual-moon-info{flex:1;min-width:0}
.rm-phase{font-family:var(--serif);font-size:1.15rem;color:var(--ink)}
.rm-sub{font-size:.82rem;margin:1px 0 6px}
.rm-streak{font-size:.9rem;color:var(--ink)}
.ritual-horo{background:var(--bg-soft,rgba(255,255,255,.03));border:1px solid var(--line-soft);border-radius:14px;padding:12px 14px;margin-bottom:14px}
.rh-sign{color:var(--gold-soft);font-weight:600}
.rh-mood{color:var(--violet)}
.rh-text{margin:6px 0 0;color:var(--muted);line-height:1.55;font-size:.9rem}
.ritual-rows{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.ritual-row{display:flex;gap:12px;align-items:center;width:100%;text-align:left;background:var(--panel-2,rgba(255,255,255,.03));
  border:1px solid var(--line-soft);border-radius:14px;padding:12px 14px;color:var(--ink);font-family:var(--sans);cursor:pointer;transition:.15s}
button.ritual-row:hover{border-color:var(--gold);transform:translateY(-1px)}
.ritual-row.muted-row{cursor:default;opacity:.85}
.ritual-inbox{border-color:rgba(139,123,216,.4);background:linear-gradient(180deg,rgba(139,123,216,.09),transparent)}
.rr-glyph{font-size:1.3rem;flex-shrink:0;width:26px;text-align:center}
.rr-body{flex:1;display:flex;flex-direction:column;min-width:0}
.rr-title{font-size:.95rem;color:var(--ink);font-weight:500}
.rr-sub{font-size:.8rem;color:var(--muted);margin-top:1px}
.rr-arrow{color:var(--gold-soft);font-size:1.1rem;flex-shrink:0}
.ritual-bonus{text-align:center;color:var(--gold-soft);font-size:.82rem;margin-bottom:12px;letter-spacing:.3px}
.ritual-begin{margin-top:2px}
:root[data-motion="reduced"] .ritual-overlay,
:root[data-motion="reduced"] .ritual-modal{animation:none}

/* v19 — opt-in reminders */
.reminders-body{margin-top:20px}
.reminders-card .rem-perm{margin:6px 0 14px}
.rem-ok{color:#8fd6a8;font-size:.9rem}
.rem-bad{color:#e08a8a;font-size:.85rem;line-height:1.5}
.rem-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--line-soft)}
.rem-txt{flex:1;min-width:0}
.rem-label{color:var(--ink);font-size:.98rem}
.rem-hint{margin-top:2px}
.rem-soon{font-size:.62rem;letter-spacing:1px;text-transform:uppercase;background:rgba(139,123,216,.2);color:var(--violet);padding:2px 7px;border-radius:9px;margin-left:6px;vertical-align:middle}
.rem-time{display:flex;align-items:center;gap:10px;padding:2px 0 8px}
.rem-time input[type=time]{background:var(--panel);border:1px solid var(--line-soft);border-radius:8px;color:var(--ink);padding:6px 10px;font-family:var(--sans)}
.toggle-sw{position:relative;flex-shrink:0;width:46px;height:26px;border-radius:14px;border:1px solid var(--line-soft);
  background:var(--panel-2,rgba(255,255,255,.05));cursor:pointer;transition:.18s;padding:0}
.toggle-sw .toggle-knob{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--muted);transition:.18s}
.toggle-sw.on{background:rgba(233,196,106,.28);border-color:var(--gold)}
.toggle-sw.on .toggle-knob{left:22px;background:var(--gold)}
.toggle-sw.disabled{opacity:.45;cursor:not-allowed}
.rem-email{border-top:1px solid var(--line-soft)}
.reminders-card > .btn-ghost.small,.reminders-card > .btn-primary.small{margin-top:14px}

/* v20 — community presence ("online now") */
.presence-bar{margin:0 0 14px}
.presence-on{display:flex;align-items:center;gap:10px;background:rgba(143,214,168,.08);border:1px solid rgba(143,214,168,.3);
  border-radius:12px;padding:9px 14px;flex-wrap:wrap}
.presence-dot{width:9px;height:9px;border-radius:50%;background:#57d98a;box-shadow:0 0 0 0 rgba(87,217,138,.6);animation:pulseDot 2.2s infinite;flex-shrink:0}
@keyframes pulseDot{0%{box-shadow:0 0 0 0 rgba(87,217,138,.5)}70%{box-shadow:0 0 0 7px rgba(87,217,138,0)}100%{box-shadow:0 0 0 0 rgba(87,217,138,0)}}
:root[data-motion="reduced"] .presence-dot{animation:none}
.presence-count{color:var(--ink);font-size:.9rem;font-weight:500}
.presence-avatars{display:inline-flex;align-items:center;gap:-2px;margin-left:2px}
.presence-av{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;
  background:var(--panel);border:1px solid var(--line-soft);font-size:.82rem;margin-left:-6px}
.presence-more{color:var(--muted);font-size:.78rem;margin-left:4px}
.presence-hide{margin-left:auto;background:none;border:1px solid var(--line-soft);border-radius:16px;padding:3px 12px;
  color:var(--muted);font-family:var(--sans);font-size:.78rem;cursor:pointer;transition:.15s}
.presence-hide:hover{border-color:var(--line);color:var(--ink)}
.presence-off{background:none;border:1px dashed var(--line-soft);border-radius:12px;padding:8px 14px;color:var(--muted);
  font-family:var(--sans);font-size:.84rem;cursor:pointer;width:100%;text-align:left;transition:.15s}
.presence-off:hover{border-color:var(--line);color:var(--ink)}

/* v21 — moderation: menus, report sheet, hidden rows, mod queue */
.post-card{position:relative}
.post-menu{position:absolute;top:10px;right:10px}
.post-menu-btn{background:none;border:none;color:var(--muted);font-size:1.2rem;line-height:1;cursor:pointer;padding:6px 10px;min-width:36px;min-height:32px;border-radius:8px}
.post-menu-btn:hover{color:var(--ink);background:var(--panel-2,rgba(255,255,255,.05))}
.post-menu-pop{position:absolute;top:26px;right:0;z-index:20;min-width:180px;background:var(--panel,#1a1b28);
  border:1px solid var(--line-soft);border-radius:12px;padding:6px;box-shadow:0 12px 30px rgba(0,0,0,.4)}
.pm-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--ink);font-family:var(--sans);
  font-size:.86rem;padding:8px 10px;border-radius:8px;cursor:pointer}
.pm-item:hover{background:var(--panel-2,rgba(255,255,255,.05))}
.pm-item.danger{color:#e08a8a}
.hidden-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 14px;border:1px dashed var(--line-soft);border-radius:10px;margin-bottom:8px}
.link-btn{background:none;border:none;color:var(--gold-soft);cursor:pointer;font-size:.82rem;font-family:var(--sans);text-decoration:underline}
.report-sheet .report-reasons{display:flex;flex-direction:column;gap:8px;margin:6px 0 16px}
.report-reason{text-align:left;background:var(--panel-2,rgba(255,255,255,.04));border:1px solid var(--line-soft);border-radius:10px;
  padding:11px 14px;color:var(--ink);font-family:var(--sans);font-size:.9rem;cursor:pointer;transition:.15s}
.report-reason:hover{border-color:var(--line)}
.report-reason.on{border-color:var(--gold);background:rgba(233,196,106,.1);color:var(--gold-soft)}
.thread-acts{margin-left:auto;display:inline-flex;gap:4px;align-self:flex-start}
.thread-item{align-items:flex-start}
.thread-act{background:none;border:none;color:var(--muted);cursor:pointer;font-size:.85rem;padding:2px 5px;border-radius:6px;opacity:.6;transition:.15s}
.thread-act:hover{opacity:1;background:var(--panel-2,rgba(255,255,255,.05))}
.mod-entry{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:rgba(233,196,106,.07);
  border:1px solid rgba(233,196,106,.3);border-radius:12px;padding:10px 14px;margin-bottom:14px;font-size:.9rem}
.mod-card.is-hidden{border-color:rgba(224,138,138,.4)}
.mod-top{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.mod-type{font-weight:600;color:var(--gold-soft)}
.mod-hidden{font-size:.64rem;letter-spacing:1px;text-transform:uppercase;background:rgba(224,138,138,.18);color:#e08a8a;padding:2px 8px;border-radius:9px}
.mod-text{margin:8px 0;color:var(--ink);line-height:1.55}
.mod-reasons{color:var(--muted);font-size:.82rem;margin-bottom:12px}
.mod-actions{display:flex;gap:8px;flex-wrap:wrap}

/* v22 — privacy & blocking management */
.block-heading{font-size:.82rem;letter-spacing:.5px;text-transform:uppercase;color:var(--gold-soft);margin:14px 0 8px}
.muted-list{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.muted-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--panel-2,rgba(255,255,255,.03));
  border:1px solid var(--line-soft);border-radius:10px;padding:8px 12px}
.muted-name{color:var(--ink);font-size:.9rem}

/* v23 — appeals + moderator audit log */
.mod-section-h{font-family:var(--serif);font-size:1.25rem;color:var(--gold-soft);margin:22px 0 10px;border-bottom:1px solid var(--line-soft);padding-bottom:6px}
.appeal-card{border-color:rgba(139,123,216,.3)}
.appeal-msg{background:rgba(139,123,216,.08);border-radius:8px;padding:10px 12px;color:var(--ink);font-style:italic;line-height:1.5;margin-top:6px}
.audit-card{padding:6px 8px}
.audit-row{display:flex;align-items:center;gap:10px;padding:8px 8px;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.audit-row:last-child{border-bottom:none}
.audit-action{font-size:.86rem;font-weight:600}
.audit-action.remove,.audit-action.appeal_denied{color:#e08a8a}
.audit-action.restore,.audit-action.appeal_granted{color:#8fd6a8}
.audit-action.dismiss{color:var(--muted)}
.audit-meta{flex:1;font-size:.82rem}
.removed-card{border-color:rgba(224,138,138,.3)}
.removed-item{border-top:1px solid var(--line-soft);padding:12px 0}
.removed-item:first-of-type{border-top:none}
.ri-text{margin:4px 0 8px;color:var(--ink);line-height:1.5}
.appeal-status{font-size:.82rem;padding:4px 10px;border-radius:10px;display:inline-block}
.appeal-status.open{background:rgba(233,196,106,.12);color:var(--gold-soft)}
.appeal-status.granted{background:rgba(143,214,168,.14);color:#8fd6a8}
.appeal-status.denied{background:rgba(224,138,138,.14);color:#e08a8a}
.notif-mod{border-color:rgba(233,196,106,.35);background:linear-gradient(180deg,rgba(233,196,106,.06),transparent)}

/* v24 — relocation · astrocartography · eclipses */
.acg-card{overflow:hidden}
.acg-map{width:100%;border-radius:10px;overflow:hidden;background:#0d0f1c;border:1px solid var(--line-soft)}
.acg-svg{width:100%;height:auto;display:block}
.acg-grid{stroke:rgba(255,255,255,.07);stroke-width:.5}
.acg-equator{stroke:rgba(255,255,255,.18);stroke-width:.7}
.acg-tropic{stroke:rgba(233,196,106,.12);stroke-width:.5;stroke-dasharray:3 3}
.acg-city{fill:rgba(255,255,255,.4)}
.acg-city-label{fill:rgba(255,255,255,.4);font-size:6px;font-family:var(--sans)}
.acg-mc{stroke-width:1.3}
.acg-ic{stroke-width:1;opacity:.55}
.acg-as,.acg-ds{stroke-width:1.2;stroke-dasharray:4 3}
.acg-ds{opacity:.6}
.acg-lbl{font-size:7px;font-family:var(--sans);opacity:.85}
/* per-planet colours */
.acg-sun *{stroke:#e9c46a;fill:#e9c46a}
.acg-moon *{stroke:#c9d4e6;fill:#c9d4e6}
.acg-mercury *{stroke:#9ad0c2;fill:#9ad0c2}
.acg-venus *{stroke:#e6a3c9;fill:#e6a3c9}
.acg-mars *{stroke:#e07a5f;fill:#e07a5f}
.acg-jupiter *{stroke:#c9a3e6;fill:#c9a3e6}
.acg-saturn *{stroke:#b0a58c;fill:#b0a58c}
.acg-uranus *{stroke:#7fd6d0;fill:#7fd6d0}
.acg-neptune *{stroke:#8b9de6;fill:#8b9de6}
.acg-pluto *{stroke:#b07a8c;fill:#b07a8c}
/* focus mode: dim all but the selected planet */
.acg-svg[data-focus] .acg-line{opacity:.08}
.acg-svg[data-focus="sun"] .acg-sun,.acg-svg[data-focus="moon"] .acg-moon,.acg-svg[data-focus="mercury"] .acg-mercury,.acg-svg[data-focus="venus"] .acg-venus,.acg-svg[data-focus="mars"] .acg-mars,.acg-svg[data-focus="jupiter"] .acg-jupiter,.acg-svg[data-focus="saturn"] .acg-saturn,.acg-svg[data-focus="uranus"] .acg-uranus,.acg-svg[data-focus="neptune"] .acg-neptune,.acg-svg[data-focus="pluto"] .acg-pluto{opacity:1}
.acg-legend{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.acg-chip{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;border-radius:14px;border:1px solid var(--line-soft);background:var(--panel);color:var(--ink);font-size:.82rem;cursor:pointer;font-family:var(--sans)}
.acg-chip.on{border-color:var(--gold);background:rgba(233,196,106,.12)}
.reloc-dest{margin-top:4px}
.ecl-controls .ecl-date{background:var(--panel);border:1px solid var(--line-soft);border-radius:8px;color:var(--ink);padding:8px 10px}
.ecl-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--panel-2,rgba(255,255,255,.03));border:1px solid var(--line-soft);border-radius:12px;padding:12px 14px;margin-bottom:8px;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.15s}
.ecl-row:hover{border-color:var(--gold);transform:translateY(-1px)}
.ecl-glyph{font-size:1.4rem;flex-shrink:0}
.ecl-main{flex:1;display:flex;flex-direction:column;min-width:0}
.ecl-title{color:var(--ink);font-weight:500}
.ecl-sub{font-size:.8rem;margin-top:1px}
.ecl-arrow{color:var(--gold-soft)}

/* v25 — persona · antiscia · horary */
.persona-picker{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 16px;justify-content:center}
.persona-chip{padding:6px 14px;border-radius:16px;border:1px solid var(--line-soft);background:var(--panel);color:var(--ink);font-family:var(--sans);font-size:.9rem;cursor:pointer;transition:.15s}
.persona-chip:hover{border-color:var(--line)}
.persona-chip.on{border-color:var(--gold);background:rgba(233,196,106,.12);color:var(--gold-soft)}
.hor-kv{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px solid var(--line-soft);flex-wrap:wrap}
.hor-kv:last-child{border-bottom:none}
.hor-k{color:var(--muted);font-size:.86rem}
.hor-v{color:var(--ink);font-size:.9rem;text-align:right;font-weight:500}
.hor-when,.hor-q{background:var(--panel);border:1px solid var(--line-soft);border-radius:8px;color:var(--ink);padding:8px 10px;width:100%;font-family:var(--sans)}
.hor-topic{width:100%}

/* v26 — quick wins: library picker, readable locks, row interpretations, clear chart, profiles */
/* library / birth-info picker */
.library-bar{margin:0 0 14px;padding:10px 12px;background:rgba(233,196,106,.05);border:1px solid var(--line-soft);border-radius:12px}
.lib-label{display:block;margin-bottom:6px}
.lib-chips{display:flex;flex-wrap:wrap;gap:6px}
.lib-chip{padding:5px 12px;border-radius:14px;border:1px solid var(--line-soft);background:var(--panel);color:var(--ink);font-family:var(--sans);font-size:.85rem;cursor:pointer;transition:.15s}
.lib-chip:hover{border-color:var(--line)}
.lib-chip.self{border-color:var(--gold);background:rgba(233,196,106,.12);color:var(--gold-soft)}
/* readable locks — override old blur/clip */
.deep-section.locked{max-height:none;overflow:visible}
.deep-section.locked p.lock-teaser{filter:none;opacity:1;user-select:auto;color:var(--muted);font-style:italic;margin:.3em 0 .6em}
.lock-cta{display:flex;align-items:center;gap:10px;background:rgba(233,196,106,.08);border:1px solid var(--gold);
  border-radius:10px;padding:11px 14px;color:var(--gold-soft);font-size:.92rem}
.lock-cta .lc-text{flex:1;font-weight:500}
.lock-cta .lc-lock{font-size:1.1rem}
.lock-cta .lc-arrow{opacity:.7}
.deep-section.locked:hover .lock-cta{background:rgba(233,196,106,.14)}
/* expandable interpretation rows */
tr.expandable{cursor:pointer;transition:background .15s}
tr.expandable:hover{background:rgba(233,196,106,.05)}
tr.expandable.open{background:rgba(233,196,106,.08)}
.row-caret{color:var(--muted);font-size:.7rem;transition:transform .15s;display:inline-block}
tr.expandable.open .row-caret{transform:rotate(90deg);color:var(--gold-soft)}
.interp-row td{padding:0 !important;border:none}
.row-interp{padding:10px 14px;background:rgba(139,123,216,.06);border-left:2px solid var(--violet);color:var(--ink);line-height:1.6;font-size:.9rem}
.tap-hint{margin-top:6px;text-align:center;opacity:.7}
/* clear chart */
.wheel-tools{display:flex;justify-content:center;margin-top:8px}
.wheel-tools .btn-ghost.small.on{border-color:var(--gold);color:var(--gold-soft)}
.clear-wheel .chart-svg{filter:contrast(1.15)}
.clear-wheel .planet-glyph,.clear-wheel .sign-glyph{font-weight:700}
.clear-wheel .wheel-ring{stroke-opacity:.9}
/* person profile popup + library */
.person-card.is-self{border-color:var(--gold)}
.person-head{margin:-2px 0 8px}
.profile-modal{max-width:440px;text-align:center}
.prof-name{font-family:var(--serif);font-size:1.5rem;color:var(--gold-soft);margin-bottom:2px}
.prof-sub{font-size:.85rem;margin-bottom:14px}
.prof-acts{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.person-acts .chip.on{border-color:var(--gold);background:rgba(233,196,106,.12);color:var(--gold-soft)}

/* v27 — relationship lab */
.rel-tech{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;background:rgba(139,123,216,.06);border:1px solid var(--line-soft);border-radius:12px;padding:12px 14px;margin:0 0 14px}
.rel-tech .field{flex:1;min-width:180px;margin:0}
.rel-tech select{width:100%}
.rel-link{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.85rem;white-space:nowrap}
.rel-wheels{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;margin:14px 0}
.rel-wheel-col{flex:1;min-width:260px;max-width:360px;text-align:center}
.rel-wheel-name{font-family:var(--serif);color:var(--gold-soft);font-size:1.1rem;margin-bottom:6px}

/* v28 — life readings */
.reading-tagline{text-align:center;font-family:var(--serif);font-size:1.15rem;color:var(--gold-soft);font-style:italic;margin:6px 0 16px;line-height:1.4}
.reading-bullets{border-color:rgba(233,196,106,.3)}
.bullet-list{list-style:none;padding:0;margin:8px 0 0}
.bullet-list li{position:relative;padding:8px 0 8px 28px;border-bottom:1px solid var(--line-soft);color:var(--ink);line-height:1.5;font-size:.98rem}
.bullet-list li:last-child{border-bottom:none}
.bullet-list li::before{content:"✦";position:absolute;left:2px;top:8px;color:var(--gold-soft)}

/* v29 — community groups, prompts, images, profiles, expertise */
.prompt-banner{display:flex;align-items:center;gap:12px;background:linear-gradient(90deg,rgba(139,123,216,.12),rgba(233,196,106,.08));border:1px solid rgba(139,123,216,.35);border-radius:14px;padding:12px 14px;margin-bottom:14px}
.pb-icon{font-size:1.4rem;color:var(--gold-soft)}
.pb-body{flex:1;min-width:0}
.pb-label{font-size:.68rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--violet)}
.pb-text{color:var(--ink);font-size:.95rem;margin-top:2px}
/* Global search overlay */
.search-overlay{position:fixed;inset:0;z-index:140;display:flex;justify-content:center;align-items:flex-start;
  padding:64px 16px 16px;background:rgba(8,8,20,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.search-box{width:100%;max-width:560px;background:var(--panel-solid);border:1px solid rgba(233,196,106,.3);
  border-radius:16px;box-shadow:0 16px 50px rgba(0,0,0,.55);overflow:hidden;display:flex;flex-direction:column;max-height:80vh}
.search-top{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line-soft)}
.search-mag{font-size:1.1rem;opacity:.8;flex:0 0 auto}
.search-input{flex:1;background:none;border:none;color:var(--ink);font-size:1.05rem;outline:none}
.search-close{background:none;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer;flex:0 0 auto;padding:4px 8px;border-radius:8px}
.search-close:hover{background:rgba(255,255,255,.06);color:var(--ink)}
.search-results{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px}
.search-hint{padding:18px 12px;text-align:center;line-height:1.6}
.search-cat{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--violet);opacity:.75;padding:12px 10px 5px}
.search-result{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:11px 12px;border-radius:12px;
  border:none;background:none;color:var(--ink);cursor:pointer;transition:background .12s}
.search-result:hover{background:rgba(233,196,106,.09)}
.sr-glyph{font-size:1.2rem;flex:0 0 auto;width:24px;text-align:center}
.sr-body{flex:1;min-width:0;display:flex;flex-direction:column}
.sr-label{font-weight:500}
.sr-sub{line-height:1.3}
.sr-arrow{color:var(--gold);opacity:.5;flex:0 0 auto}
/* Redesigned community: prompt hero, founding note, slim composer, quick chips */
.prompt-hero{text-align:center;background:radial-gradient(circle at 50% 0%,rgba(139,123,216,.16),rgba(233,196,106,.06) 70%);
  border:1px solid rgba(139,123,216,.4);margin-bottom:14px}
.ph-eyebrow{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--violet);margin-bottom:8px}
.ph-text{font-family:var(--display,serif);font-size:1.35rem;line-height:1.4;color:var(--ink);margin:0 auto 16px;max-width:30ch}
.ph-btn{margin:0 auto}
.founding-note{text-align:center;padding:10px 14px;margin-bottom:14px;border-radius:12px;font-size:.9rem;
  background:rgba(233,196,106,.08);border:1px solid rgba(233,196,106,.28);color:var(--gold-soft);line-height:1.5}
.composer-wrap{margin-bottom:16px}
.composer-trigger{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px 14px;
  border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.03);color:var(--muted);cursor:pointer;transition:.15s}
.composer-trigger:hover{border-color:rgba(233,196,106,.4)}
.composer-trigger.expanded{border-radius:14px 14px 0 0}
.ct-ava{font-size:1.2rem;flex:0 0 auto}
.ct-ph{flex:1;font-size:.95rem}
.ct-plus{color:var(--gold);font-size:1.1rem;flex:0 0 auto}
.quick-reflect{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.quick-chip{padding:8px 13px;border-radius:999px;border:1px solid rgba(139,123,216,.35);background:rgba(139,123,216,.08);
  color:var(--ink);font-size:.82rem;cursor:pointer;transition:.15s;line-height:1.3}
.quick-chip:hover{border-color:rgba(233,196,106,.45);background:rgba(233,196,106,.08)}
.composer-wrap .composer{margin-top:8px;border-radius:0 0 14px 14px}
.group-sec-label{align-self:center;font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;color:var(--violet);opacity:.7;padding:0 2px 0 8px;flex:0 0 auto;white-space:nowrap}
.group-sec-label:first-of-type{padding-left:2px}
.react-wrap{position:relative;display:inline-block}
.react-picker{position:absolute;bottom:100%;left:0;margin-bottom:6px;gap:3px;padding:6px 9px;
  background:var(--panel-solid);border:1px solid rgba(233,196,106,.35);border-radius:999px;box-shadow:0 8px 20px rgba(0,0,0,.45);z-index:6}
.react-opt{font-size:1.2rem;background:none;border:none;cursor:pointer;padding:2px 4px;border-radius:8px;transition:transform .12s,background .12s;line-height:1}
.react-opt:hover{transform:scale(1.3)}
.react-opt.on{background:rgba(233,196,106,.2)}
.group-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:14px;-webkit-overflow-scrolling:touch}
.group-tab{white-space:nowrap;padding:6px 14px;border-radius:16px;border:1px solid var(--line-soft);background:var(--panel);color:var(--muted);font-family:var(--sans);font-size:.85rem;cursor:pointer;flex-shrink:0;transition:.15s}
.group-tab:hover{border-color:var(--line);color:var(--ink)}
.group-tab.on{border-color:var(--gold);background:rgba(233,196,106,.12);color:var(--gold-soft)}
.composer-group{width:100%}
.img-attach{margin:10px 0}
.img-preview{margin-top:8px;display:flex;align-items:center;gap:10px}
.img-preview img{max-width:120px;max-height:120px;border-radius:8px;border:1px solid var(--line-soft)}
.post-image{display:block;max-width:100%;max-height:420px;border-radius:10px;margin:10px 0 4px;border:1px solid var(--line-soft);cursor:zoom-in}
.img-lightbox{cursor:zoom-out;padding:20px}
.img-lightbox img{max-width:96vw;max-height:92vh;border-radius:10px}
.cert-mark{color:var(--gold-soft);margin-left:4px}
.exp-mark{margin-left:3px;font-size:.9em;opacity:.9}
.prof-avatar-lg{font-size:3rem;margin-bottom:4px}
.profile-card.center{text-align:center}
.prof-bio{margin-top:8px;color:var(--ink);line-height:1.5}
.prof-expertise{font-size:1.1rem;margin:4px 0;letter-spacing:3px}
.exp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:8px}
.exp-tile{border:1px solid var(--line-soft);border-radius:12px;padding:12px;text-align:center;opacity:.5}
.exp-tile.earned{opacity:1;border-color:var(--gold);background:rgba(233,196,106,.06)}
.et-icon{font-size:1.6rem}
.et-name{font-weight:500;color:var(--ink);margin:4px 0 2px}
.et-earned{color:var(--gold-soft);font-size:.78rem;margin-top:4px}
.exp-chip{display:inline-flex;gap:4px;padding:4px 10px;border-radius:12px;border:1px solid var(--gold);background:rgba(233,196,106,.1);color:var(--gold-soft);font-size:.82rem}
.badge-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.badge-chip{padding:4px 10px;border-radius:12px;border:1px solid var(--line-soft);background:var(--panel);font-size:.82rem;color:var(--ink)}
.prof-posts{display:flex;flex-direction:column;gap:8px;margin:6px 0}
.prof-post{background:var(--panel-2,rgba(255,255,255,.03));border:1px solid var(--line-soft);border-radius:10px;padding:8px 12px;text-align:left}
.pp-text{color:var(--ink);font-size:.9rem;margin-top:2px}

/* v30 — asteroid explorer */
.ast-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.ast-chip{padding:5px 11px;border-radius:14px;border:1px solid var(--line-soft);background:var(--panel);color:var(--ink);font-family:var(--sans);font-size:.82rem;cursor:pointer;transition:.15s}
.ast-chip:hover{border-color:var(--line)}
.ast-chip.added{border-color:var(--gold);background:rgba(233,196,106,.12);color:var(--gold-soft);opacity:.7}
.ast-add-row{display:flex;gap:8px;margin-top:8px}
.ast-add-row input{flex:1;background:var(--panel);border:1px solid var(--line-soft);border-radius:8px;color:var(--ink);padding:8px 10px;font-family:var(--sans)}
.ast-num{color:var(--muted);font-size:.78rem}

/* v31 — founder page */
.founder-banner{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:linear-gradient(90deg,rgba(139,123,216,.12),rgba(233,196,106,.07));border:1px solid rgba(139,123,216,.3);border-radius:16px;padding:16px 18px;margin:22px 0 0;cursor:pointer;color:var(--ink);font-family:var(--sans);transition:.16s}
.founder-banner:hover{border-color:var(--gold);transform:translateY(-1px)}
.fb-glyph{font-size:1.8rem;color:var(--gold-soft)}
.fb-body{flex:1;display:flex;flex-direction:column}
.fb-title{font-family:var(--serif);font-size:1.15rem;color:var(--gold-soft)}
.fb-sub{font-size:.85rem;margin-top:1px}
.fb-arrow{color:var(--gold-soft);font-size:1.2rem}
.founder-hero{text-align:center;padding:20px 0 6px}
.founder-glyph{font-size:3.4rem;color:var(--gold-soft);line-height:1}
.founder-name{font-family:var(--serif);font-size:2rem;margin:8px 0 2px;color:var(--ink)}
.founder-role{font-size:.9rem}
.founder-mission{text-align:center;font-family:var(--serif);font-size:1.4rem;font-style:italic;color:var(--gold-soft);line-height:1.4;max-width:640px;margin:14px auto 20px;padding:0 16px}
.founder-signature{border-color:rgba(139,123,216,.3);text-align:center}
.founder-sig-line{font-size:1.05rem;color:var(--ink);line-height:1.6;margin:6px 0}
.founder-houses{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-direction:column;gap:6px}
.founder-houses li{color:var(--muted);font-size:.9rem}
.founder-chart .wheel{max-width:460px;margin:0 auto}
.founder-story p{line-height:1.8;color:var(--ink);font-size:1.04rem;margin:0 0 1.1em}
.founder-signoff{color:var(--gold-soft);font-style:italic}
.founder-sign{font-family:var(--serif);font-size:1.2rem;color:var(--gold-soft);text-align:right;margin-top:8px}
.founder-cta{border-color:rgba(233,196,106,.3)}
.founder-cta-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:12px}

/* v32 — founder page: AuDHD-friendly, scannable, calm */
.founder-tldr{border-color:rgba(233,196,106,.35);background:rgba(233,196,106,.05)}
.tldr-label{font-size:.7rem;letter-spacing:1.5px;text-transform:uppercase;color:var(--violet);margin-bottom:10px}
.tldr-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}
.tldr-list li{position:relative;padding-left:30px;line-height:1.55;font-size:1.02rem;color:var(--ink)}
.tldr-list li::before{content:"✦";position:absolute;left:4px;top:1px;color:var(--gold-soft)}
.founder-story{padding-top:6px}
.story-block{padding:16px 0;border-bottom:1px solid var(--line-soft)}
.story-block:last-of-type{border-bottom:none}
.story-h{font-family:var(--serif);font-size:1.3rem;color:var(--gold-soft);margin:0 0 8px;display:flex;align-items:center;gap:2px}
.story-icon{font-size:1.15rem;opacity:.9}
.founder-story .story-block p{line-height:1.85;font-size:1.06rem;color:var(--ink);margin:0;max-width:64ch}
/* honor larger text sizes generously on this page */
:root[data-text="l"] .founder-story .story-block p,:root[data-text="xl"] .founder-story .story-block p{line-height:1.95}
.founder-tip{display:inline-flex;align-items:center;text-decoration:none}

/* v33 — chart signature & dominants panel */
.dominants-card{padding:20px 20px 16px}
.dom-h{font-family:var(--serif);color:var(--gold);font-size:1.3rem;margin:0 0 14px}
.sig-hero{display:flex;gap:16px;align-items:center;padding:16px;border-radius:16px;
  background:linear-gradient(120deg,rgba(233,196,106,.10),rgba(140,120,200,.08));
  border:1px solid var(--line);margin-bottom:18px}
.sig-glyph{font-size:3.2rem;line-height:1;color:var(--gold-soft);flex:none;
  width:74px;height:74px;display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:rgba(10,10,31,.5);border:1px solid var(--line)}
.sig-label{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.sig-name{font-family:var(--serif);font-size:1.9rem;color:var(--ink);line-height:1.1}
.sig-formula{font-size:.92rem;color:var(--gold-soft);margin-top:2px}
.sig-diff{margin:.5em 0 0;color:var(--muted);font-size:.95rem;line-height:1.6}
.dom-block{margin:0 0 16px}
.dom-sub{font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
  margin:0 0 8px;font-weight:600}
.dom-row{display:flex;align-items:center;gap:10px;margin:6px 0;font-size:.95rem}
.dom-lab{flex:0 0 42%;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dom-lab em{color:var(--muted);font-style:normal;font-size:.85em}
.dom-glyph{display:inline-block;width:1.4em;color:var(--gold-soft)}
.dom-bar{flex:1;height:10px;border-radius:6px;background:rgba(180,157,201,.14);overflow:hidden}
.dom-bar i{display:block;height:100%;border-radius:6px;transition:width .6s ease}
.dom-val{flex:0 0 42px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-size:.9rem}
.dom-row.lead .dom-lab{color:var(--gold-soft);font-weight:600}
.dom-bar.pl i{background:linear-gradient(90deg,var(--gold),#d99a3c)}
.dom-bar.el-fire i{background:linear-gradient(90deg,#ff8a5c,#e0492c)}
.dom-bar.el-earth i{background:linear-gradient(90deg,#c7a86a,#7d6a34)}
.dom-bar.el-air i{background:linear-gradient(90deg,#9fd0e6,#5a92b8)}
.dom-bar.el-water i{background:linear-gradient(90deg,#8fa9e6,#5a63b8)}
.dom-bar.mo-card i{background:linear-gradient(90deg,#f2b8a2,#c86b4c)}
.dom-bar.mo-fix i{background:linear-gradient(90deg,#b6c98f,#6f8a3f)}
.dom-bar.mo-mut i{background:linear-gradient(90deg,#c2a6e0,#7d57b0)}
.dom-meta{display:flex;flex-wrap:wrap;gap:8px 16px;padding:12px 0;border-top:1px solid var(--line-soft);
  color:var(--muted);font-size:.9rem}
.dom-meta b{color:var(--gold-soft);font-variant-numeric:tabular-nums}
.dom-how{margin-top:6px;font-size:.9rem}
.dom-how summary{cursor:pointer;color:var(--gold-soft);padding:6px 0}
.dom-how p{color:var(--muted);line-height:1.65;margin:.4em 0 0}
@media(max-width:520px){.dom-lab{flex-basis:48%}.sig-glyph{width:60px;height:60px;font-size:2.6rem}}

/* v34 — 60-second date-only "aha" peek */
.qs-hint{color:var(--muted);font-size:.9rem;margin:0 0 10px;text-align:center;line-height:1.5}
.qs-disclaimer{color:var(--muted);font-size:.78rem;opacity:.75;text-align:center;margin:10px 0 0}
.qs-lead{color:var(--gold-soft);font-size:.85rem;letter-spacing:.1em;text-transform:uppercase;margin:0 0 6px}
.qs-striking{font-family:var(--serif);font-size:1.25rem;line-height:1.5;color:var(--ink);
  text-align:center;max-width:40ch;margin:2px auto 18px}
.qs-striking strong{color:var(--gold-soft);font-weight:600}
.peek-grid{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:0 auto 6px}
.peek-card{flex:1 1 88px;min-width:88px;max-width:120px;text-align:center;padding:12px 8px;
  border-radius:14px;background:rgba(10,10,31,.45);border:1px solid var(--line-soft)}
.pk-glyph{font-size:1.5rem;color:var(--gold-soft);line-height:1}
.pk-lab{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:4px 0 2px}
.pk-sign{font-size:.95rem;color:var(--ink);white-space:nowrap}
@media(max-width:520px){.peek-card{flex-basis:28%;min-width:0}.qs-striking{font-size:1.1rem}}

/* v35 — daily "hidden aspect" variable-reward card */
.daily-whisper{max-width:600px;margin:0 auto}
.whisper-card{padding:18px 20px;background:linear-gradient(135deg,rgba(233,196,106,.09),rgba(140,120,200,.10));
  border:1px solid var(--line)}
.whisper-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.whisper-eyebrow{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft)}
.whisper-tag{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border-radius:20px;
  border:1px solid var(--line-soft);color:var(--muted)}
.whisper-tag.ease{color:#9fd0e6;border-color:rgba(159,208,230,.4)}
.whisper-tag.grow{color:#f2b8a2;border-color:rgba(242,184,162,.4)}
.whisper-tag.charge{color:#e9c46a;border-color:rgba(233,196,106,.4)}
.whisper-tag.feel{color:#c2a6e0;border-color:rgba(194,166,224,.4)}
.whisper-tag.you{color:#b6c98f;border-color:rgba(182,201,143,.4)}
.whisper-body{display:flex;gap:14px;align-items:flex-start}
.whisper-glyph{font-size:1.8rem;color:var(--gold-soft);line-height:1;flex:none;margin-top:2px}
.whisper-title{font-family:var(--serif);font-size:1.18rem;color:var(--ink);margin:0 0 4px;line-height:1.25}
.whisper-text{color:var(--muted);line-height:1.65;margin:0;font-size:.98rem}
.whisper-foot{color:var(--muted);opacity:.7;font-size:.8rem;margin:12px 0 0;font-style:italic}

/* v36 — "while you were gone" re-engagement card */
.welcome-back{position:relative;padding:18px 20px;margin-bottom:14px;
  background:linear-gradient(135deg,rgba(140,120,200,.12),rgba(233,196,106,.07));border:1px solid var(--line)}
.wb-close{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--muted);
  font-size:1rem;cursor:pointer;line-height:1;padding:4px;border-radius:8px}
.wb-close:hover{color:var(--ink)}
.wb-eyebrow{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:6px}
.wb-lead{font-family:var(--serif);font-size:1.2rem;color:var(--ink);margin:0 0 10px;line-height:1.3}
.wb-list{list-style:none;margin:0 0 10px;padding:0}
.wb-list li{position:relative;padding:5px 0 5px 22px;color:var(--muted);line-height:1.6;font-size:.97rem}
.wb-list li::before{content:"✦";position:absolute;left:0;color:var(--gold-soft);font-size:.85rem;top:6px}
.wb-list strong{color:var(--gold-soft);font-weight:600}
.wb-foot{color:var(--muted);opacity:.75;font-size:.85rem;margin:0;font-style:italic}

/* v37 — Deep Descent (premium shadow journey) */
.deep-descent{padding:22px 20px;margin-top:20px;
  background:linear-gradient(160deg,rgba(90,70,140,.16),rgba(10,10,31,.4));border:1px solid var(--line)}
.dd-eyebrow{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:6px}
.dd-title{font-family:var(--serif);font-size:1.5rem;color:var(--ink);margin:0 0 8px}
.dd-intro{color:var(--muted);line-height:1.7;margin:0 0 14px}
.dd-disclaimer{font-size:.85rem;color:var(--muted);opacity:.85;line-height:1.6;padding:10px 12px;
  border-left:2px solid var(--line);background:rgba(10,10,31,.35);border-radius:8px;margin-bottom:16px}
.dd-progress{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.dd-bar{flex:1;height:8px;border-radius:6px;background:rgba(180,157,201,.16);overflow:hidden}
.dd-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#8c78c8,var(--gold-soft));transition:width .6s ease}
.dd-count{font-size:.85rem;color:var(--muted);white-space:nowrap}
.dd-arc-label{font-family:var(--serif);font-size:1.05rem;color:var(--gold-soft);letter-spacing:.05em;
  margin:14px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--line-soft)}
.dd-path{display:flex;flex-direction:column;gap:8px}
.dd-gate{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  padding:12px 14px;border-radius:12px;background:rgba(10,10,31,.4);border:1px solid var(--line-soft);color:var(--ink)}
.dd-gate:hover{border-color:var(--line);background:rgba(90,70,140,.14)}
.dd-gate.locked{opacity:.62}
.dd-gate.done{border-color:rgba(233,196,106,.35)}
.ddg-num{flex:none;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(140,120,200,.22);color:var(--gold-soft);font-size:.9rem;font-variant-numeric:tabular-nums}
.dd-gate.done .ddg-num{background:linear-gradient(135deg,var(--gold),#d99a3c);color:#12102b}
.ddg-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ddg-name{color:var(--ink);font-weight:600;font-size:1rem}
.ddg-sub{color:var(--muted);font-size:.85rem}
.ddg-check{color:var(--gold-soft)}
.ddg-free{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;color:#b6c98f;
  border:1px solid rgba(182,201,143,.4);border-radius:10px;padding:1px 6px;margin-left:4px}
.ddg-mark{flex:none;color:var(--muted);font-size:1rem}
.dd-taste{color:var(--gold-soft);font-size:.9rem;text-align:center;margin:16px 0 8px}
/* gate flow modal */
.gate-modal{max-width:600px;max-height:88vh;overflow-y:auto;text-align:left}
.gate-arc{font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:6px}
.gate-name{font-family:var(--serif);font-size:1.6rem;color:var(--ink);margin:0 0 2px}
.gate-sub{color:var(--muted);font-style:italic;margin:0 0 14px}
.gate-lead{color:var(--ink);line-height:1.75;font-size:1.02rem;margin:0 0 12px}
.gate-para{color:var(--muted);line-height:1.8;margin:0 0 12px}
.gate-h{font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-soft);margin:14px 0 6px}
.gate-prompts{margin:0 0 14px;padding-left:20px}
.gate-prompts li{color:var(--ink);line-height:1.65;margin:6px 0}
.gate-practice{background:rgba(140,120,200,.14);border:1px solid var(--line-soft);border-radius:10px;
  padding:12px 14px;color:var(--gold-soft);line-height:1.6;margin:14px 0}
.gate-nav{display:flex;justify-content:space-between;gap:10px;margin-top:8px;flex-wrap:wrap}

/* v38 — "your cosmos so far" investment summary */
.cosmos-card{padding:20px;background:linear-gradient(150deg,rgba(233,196,106,.10),rgba(90,70,140,.12))}
.cosmos-eyebrow{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:14px}
.cosmos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.cosmos-tile{display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;
  padding:14px 8px;border-radius:14px;background:rgba(10,10,31,.4);border:1px solid var(--line-soft)}
.ct-icon{font-size:1.15rem;color:var(--gold-soft);line-height:1}
.ct-num{font-family:var(--serif);font-size:1.6rem;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1}
.ct-label{font-size:.76rem;color:var(--muted);line-height:1.25}
.cosmos-line{color:var(--ink);line-height:1.7;margin:14px 0 12px;text-align:center;font-size:1rem}
.cosmos-rank{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 14px;border-radius:12px;background:rgba(10,10,31,.35);border:1px solid var(--line-soft);margin-bottom:12px}
.cr-name{color:var(--gold-soft);font-weight:600}
.cr-lvl{font-size:.85rem}
@media(max-width:420px){.cosmos-grid{grid-template-columns:repeat(2,1fr)}.ct-num{font-size:1.4rem}}

/* v39 — referral: invite & unlock */
.invite-card{padding:20px;background:linear-gradient(150deg,rgba(159,208,230,.08),rgba(233,196,106,.08))}
.invite-eyebrow{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:6px}
.invite-title{font-family:var(--serif);font-size:1.35rem;color:var(--ink);margin:0 0 6px}
.invite-sub{color:var(--muted);line-height:1.65;margin:0 0 14px}
.invite-link-row{display:flex;gap:8px;margin-bottom:10px}
.invite-link-input{flex:1;min-width:0;background:rgba(10,10,31,.5);border:1px solid var(--line-soft);
  border-radius:10px;color:var(--muted);padding:10px 12px;font-size:.85rem}
.invite-count{color:var(--gold-soft);font-size:.92rem;margin:14px 0 10px;text-align:center}
.invite-ladder{display:flex;flex-direction:column;gap:8px}
.ladder-step{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;
  background:rgba(10,10,31,.35);border:1px solid var(--line-soft)}
.ladder-step.reached{border-color:rgba(233,196,106,.35);background:rgba(233,196,106,.08)}
.ls-mark{flex:none;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(180,157,201,.2);color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums}
.ladder-step.reached .ls-mark{background:linear-gradient(135deg,var(--gold),#d99a3c);color:#12102b}
.ls-label{flex:1;color:var(--ink);font-size:.95rem}
.ls-need{flex:none;color:var(--muted);font-size:.8rem}
.invite-thanks{margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft);text-align:center}
.invite-thanks p{margin:0 0 8px}
/* home thank banner */
.thank-banner{display:flex;align-items:center;gap:12px;max-width:640px;margin:14px auto 0;
  padding:12px 14px;border-radius:14px;background:linear-gradient(135deg,rgba(233,196,106,.10),rgba(140,120,200,.10));
  border:1px solid var(--line);position:relative}
.tb-glyph{font-size:1.5rem;color:var(--gold-soft);flex:none}
.tb-body{flex:1;display:flex;flex-direction:column;min-width:0}
.tb-title{color:var(--ink);font-weight:600}
.tb-sub{font-size:.85rem;line-height:1.4}
.tb-close{position:absolute;top:8px;right:10px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:.9rem;padding:2px}
@media(max-width:520px){.thank-banner{flex-wrap:wrap}}

/* v40 — Saturn Return cohort */
.saturn-hero{display:flex;gap:16px;align-items:center;padding:20px;
  background:linear-gradient(150deg,rgba(90,80,60,.25),rgba(10,10,31,.4));border:1px solid var(--line)}
.sat-glyph{font-size:3rem;color:var(--gold-soft);line-height:1;flex:none;width:76px;height:76px;
  display:flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(10,10,31,.5);border:1px solid var(--line)}
.sat-hero-body{flex:1;min-width:0}
.sat-class{font-family:var(--serif);font-size:1.5rem;color:var(--ink);line-height:1.2}
.sat-phase{color:var(--muted);line-height:1.6;margin:6px 0 0}
.sat-countdown{text-align:center;padding:22px 18px}
.sat-count-num{font-family:var(--serif);font-size:3rem;color:var(--gold-soft);line-height:1}
.sat-count-num span{display:block;font-size:.9rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
.sat-timeline{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.sat-hit{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;
  background:rgba(10,10,31,.4);border:1px solid var(--line-soft)}
.sat-hit.past{opacity:.7}
.sh-dot{flex:none;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:rgba(180,157,201,.2);color:var(--gold-soft);font-size:.85rem}
.sat-hit.past .sh-dot{background:linear-gradient(135deg,var(--gold),#d99a3c);color:#12102b}
.sh-date{flex:1;color:var(--ink)}
.sh-tag{flex:none;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
.saturn-cohort{background:linear-gradient(150deg,rgba(140,120,200,.12),rgba(10,10,31,.4))}
.saturn-cohort .btn-primary{margin-top:6px;margin-right:8px}
.saturn-teaser{display:flex;align-items:center;gap:14px;width:100%;text-align:left;cursor:pointer;
  background:linear-gradient(135deg,rgba(90,80,60,.22),rgba(10,10,31,.4))}
.st-glyph{font-size:1.9rem;color:var(--gold-soft);flex:none}
.st-body{flex:1;display:flex;flex-direction:column;min-width:0}
.st-title{font-family:var(--serif);font-size:1.15rem;color:var(--ink)}
.st-sub{font-size:.85rem}
.st-arrow{color:var(--muted);flex:none}

/* v41 — expanded share buttons */
.dom-share{margin-top:14px}
.sw-share{margin-top:8px}
.aspect-share{margin-left:10px;vertical-align:middle}
.row-interp{display:flex;flex-wrap:wrap;align-items:center;gap:6px}

/* v42 — placement meanings library */
.meaning-crumb{color:var(--muted);font-size:.9rem;margin-bottom:8px}
.meaning-card p{line-height:1.85;color:var(--ink)}
.meaning-cta{text-align:center;background:linear-gradient(150deg,rgba(233,196,106,.10),rgba(90,70,140,.10))}
.meaning-cta h3{font-family:var(--serif);color:var(--ink);margin:0 0 6px}
.meaning-section{margin:8px 0;border:1px solid var(--line-soft);border-radius:12px;padding:6px 12px;background:rgba(10,10,31,.3)}
.meaning-section summary{cursor:pointer;color:var(--gold-soft);font-weight:600;padding:8px 0}
.meaning-links{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0}
.meaning-chip{display:inline-block;padding:7px 12px;border-radius:20px;background:rgba(10,10,31,.5);
  border:1px solid var(--line-soft);color:var(--muted);text-decoration:none;font-size:.88rem}
.meaning-chip:hover{color:var(--ink);border-color:var(--line)}
.meaning-allink{margin-top:10px}

/* v43 — free mini shadow report (email capture) */
.freereport-card .fr-in{width:100%;box-sizing:border-box;background:rgba(10,10,31,.5);border:1px solid var(--line-soft);
  border-radius:10px;color:var(--ink);padding:12px 14px;font-size:1rem;margin-bottom:0}
.freereport-card .qs-row{display:flex;gap:8px;margin-bottom:10px}
.freereport-card .qs-row .fr-in{margin-bottom:0}
.freereport-card .btn-primary{margin-top:6px}
.fr-eyebrow{font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-soft);margin-bottom:12px}
.fr-para{line-height:1.85;color:var(--ink);margin:0 0 14px}
.fr-disclaimer{margin-top:10px;line-height:1.6}
.fr-teaser{background:linear-gradient(150deg,rgba(90,70,140,.16),rgba(10,10,31,.4))}
.fr-teaser h3{font-family:var(--serif);color:var(--ink);margin:0 0 6px}
.freereport-banner .fb-glyph{color:var(--gold-soft)}

/* v44 — flagship anchor + gifting */
.codex-flagship{position:relative;padding:32px 26px;margin-bottom:22px;text-align:center;border-radius:18px;
  background:linear-gradient(160deg,rgba(233,196,106,.16),rgba(90,70,140,.20));border:1.5px solid rgba(233,196,106,.5);
  box-shadow:0 0 60px rgba(233,196,106,.08)}
.codex-flagship.owned{border-color:rgba(233,196,106,.35)}
.cx-ribbon{position:absolute;top:16px;right:-2px;background:linear-gradient(120deg,#e9c46a,#d99a3c);color:#12102b;
  font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:5px 16px;border-radius:6px 0 0 6px}
.cx-glyph{font-size:2.6rem;color:var(--gold-soft)}
.cx-title{font-family:var(--serif);font-size:1.7rem;color:var(--ink);margin:6px auto 4px;max-width:20ch;line-height:1.2}
.cx-price{font-family:var(--serif);font-size:3rem;font-weight:700;color:var(--gold-soft);line-height:1;margin:6px 0}
.cx-price::before{content:"$";font-size:1.6rem;vertical-align:super;opacity:.8}
.cx-blurb{color:var(--muted);line-height:1.7;max-width:52ch;margin:10px auto 18px}
.cx-actions{display:flex;flex-direction:column;gap:10px;max-width:360px;margin:0 auto}
.gift-btn{margin-top:8px}
.gift-modal{max-width:460px;text-align:center}
.gift-glyph{font-size:2.6rem}
.gift-in{width:100%;box-sizing:border-box;background:rgba(10,10,31,.5);border:1px solid var(--line-soft);
  border-radius:10px;color:var(--ink);padding:11px 13px;font-size:1rem;margin:8px 0}
.gift-out{margin-top:12px}

/* v45 — Shadow Portals (planet-based shadow work, gamified) */
.blueprint-hero{text-align:center;padding:24px 20px;background:linear-gradient(160deg,rgba(90,70,140,.18),rgba(10,10,31,.4))}
.bp-title{font-family:var(--serif);color:var(--gold-soft);font-size:1.7rem;margin:0 0 8px}
.bp-sub{color:var(--muted);line-height:1.7;max-width:56ch;margin:0 auto 16px}
.bp-meter{max-width:460px;margin:0 auto}
.bp-bar{height:10px;border-radius:6px;background:rgba(180,157,201,.14);overflow:hidden}
.bp-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#8c78c8,var(--gold-soft));transition:width .6s ease}
.bp-meter-lab{color:var(--muted);font-size:.9rem;margin-top:8px}
.bp-meter-lab strong{color:var(--gold-soft)}
.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:18px 0}
.portal-card{position:relative;text-align:center;cursor:pointer;padding:18px 12px 14px;border-radius:16px;
  background:rgba(10,10,31,.55);border:1px solid var(--line-soft);color:var(--ink);overflow:hidden;transition:border-color .3s,box-shadow .5s}
.portal-card::before{content:"";position:absolute;inset:0;border-radius:16px;pointer-events:none;
  background:radial-gradient(circle at 50% 30%, rgba(233,196,106,calc(.22*var(--glow,0))), transparent 62%);transition:background .6s}
.portal-card.kindling{border-color:rgba(233,196,106,.28)}
.portal-card.lit{border-color:rgba(233,196,106,.6);box-shadow:0 0 26px rgba(233,196,106,.18)}
.pc-glyph{font-size:2.2rem;line-height:1;color:var(--muted);transition:color .5s,text-shadow .5s}
.portal-card.kindling .pc-glyph{color:var(--gold-soft)}
.portal-card.lit .pc-glyph{color:var(--gold-soft);text-shadow:0 0 18px rgba(233,196,106,.6)}
.pc-name{font-family:var(--serif);font-size:1.15rem;color:var(--ink);margin-top:4px}
.pc-domain{font-size:.74rem;color:var(--muted);line-height:1.3;margin:2px 0 8px;min-height:2.4em}
.pc-meter{height:5px;border-radius:4px;background:rgba(180,157,201,.14);overflow:hidden}
.pc-meter i{display:block;height:100%;background:linear-gradient(90deg,#8c78c8,var(--gold-soft));transition:width .5s}
.pc-pct{font-size:.72rem;color:var(--muted);margin-top:5px;letter-spacing:.03em}
.portal-card.lit .pc-pct{color:var(--gold-soft)}
/* portal modal */
.portal-modal{max-width:620px;max-height:90vh;overflow-y:auto;text-align:left}
.portal-head{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.portal-head.lit .ph-glyph{text-shadow:0 0 18px rgba(233,196,106,.6)}
.ph-glyph{font-size:2.6rem;color:var(--gold-soft);flex:none}
.ph-name{font-family:var(--serif);font-size:1.5rem;color:var(--ink)}
.ph-domain{font-size:.9rem}
.portal-meter{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.portal-meter .bp-bar{flex:1}
.portal-meter span{font-size:.82rem;color:var(--muted);white-space:nowrap}
.portal-overview{padding:14px;border-radius:12px;background:rgba(10,10,31,.4);border:1px solid var(--line-soft);margin-bottom:16px}
.po-shadow,.po-gift{line-height:1.7;margin:0 0 8px}
.po-personal{color:var(--gold-soft);line-height:1.7;margin:0 0 8px}
.po-questions{margin:8px 0;padding-left:20px}
.po-questions li{color:var(--muted);line-height:1.6;margin:4px 0}
.po-affirm{font-family:var(--serif);font-size:1.2rem;color:var(--gold-soft);text-align:center;margin-top:12px;font-style:italic}
.portal-arc-h{font-family:var(--serif);color:var(--gold-soft);font-size:1.25rem;margin:18px 0 4px}
.arc-move{border:1px solid var(--line-soft);border-radius:10px;margin:8px 0;background:rgba(10,10,31,.35);overflow:hidden}
.arc-move.done{border-color:rgba(233,196,106,.35)}
.arc-move summary{cursor:pointer;padding:12px 14px;display:flex;align-items:center;gap:10px;list-style:none}
.arc-move summary::-webkit-details-marker{display:none}
.am-num{flex:none;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(140,120,200,.22);color:var(--gold-soft);font-size:.85rem}
.arc-move.done .am-num{background:linear-gradient(135deg,var(--gold),#d99a3c);color:#12102b}
.am-title{font-weight:600;color:var(--ink)}
.am-verb{font-size:.85rem;margin-left:auto}
.am-body{padding:0 14px 14px}
.am-prompt{color:var(--ink);line-height:1.7;margin:0 0 10px}
.am-donebadge{color:var(--gold-soft);font-size:.9rem}
.portal-practice{background:rgba(140,120,200,.12);border:1px solid var(--line-soft);border-radius:10px;padding:12px 14px;color:var(--ink);line-height:1.65;margin:10px 0}
.portal-deep{background:rgba(233,196,106,.07);border:1px solid var(--line);border-radius:10px;padding:12px 14px;line-height:1.7;margin:8px 0}
.portal-lock{background:rgba(10,10,31,.5);border:1px dashed var(--line);border-radius:10px;padding:16px;color:var(--muted);line-height:1.6;cursor:pointer;text-align:center}
.portal-lock:hover{border-color:var(--gold-soft)}
.pl-lock{font-size:1.2rem}

/* v45 — birth time-zone follows the birth place; hint under the tz picker */
.tz-hint{margin-top:6px;line-height:1.35;color:var(--gold-soft,#f0d999);opacity:.9}
.tz-hint:empty{display:none}

/* v46 — recheck-saved-time-zones prompt (My Space) */
.tz-recheck{border:1px solid var(--gold-soft,#f0d999)}
.tz-recheck h3{margin-top:0}
.tz-list{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.tz-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 12px;border-radius:12px;background:rgba(10,10,31,.4);border:1px solid var(--line)}
.tz-info{line-height:1.4;min-width:0}
.tz-acts{display:flex;gap:8px;flex-shrink:0}
.tz-foot{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}

/* v50 — Achievements / credentials page + shareable card entry */
.cred-hero{text-align:center;background:linear-gradient(160deg,rgba(233,196,106,.10),rgba(139,123,216,.10));border:1px solid var(--gold-soft,#f0d999)}
.cred-eyebrow{font-family:'Jost',system-ui,sans-serif;text-transform:uppercase;letter-spacing:.22em;font-size:.8rem;color:var(--gold-soft,#f0d999);opacity:.9}
.cred-medal{font-family:'Cormorant Garamond',Georgia,serif;font-size:3.4rem;line-height:1;color:#f0d999;margin:.15em 0}
.cred-rank{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.9rem;font-weight:600;color:#fff}
.cred-name{font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;color:var(--muted);margin-top:.15em}
.cred-lvl{color:var(--muted);margin-top:.4em;font-size:.95rem}
.cred-bar{margin:14px auto 4px;max-width:320px;height:10px;border-radius:6px;background:rgba(255,255,255,.08);overflow:hidden}
.cred-bar i{display:block;height:100%;background:linear-gradient(90deg,#8b7bd8,#e9c46a)}
.cred-namelabel{display:block;font-size:.9rem;color:var(--muted);margin-bottom:6px}
.cred-namerow{display:flex;gap:8px}
.cred-namerow input{flex:1}
.badge-wall{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.badge-chip{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid rgba(180,157,201,.16);font-size:.9rem}
.badge-chip .bc-ic{font-size:1.05rem}
.badge-chip.got{border-color:rgba(233,196,106,.45);color:#fff;background:rgba(233,196,106,.08)}
.badge-chip.locked{opacity:.4;filter:grayscale(.6)}
.cred-sharecard{text-align:center;background:linear-gradient(160deg,rgba(139,123,216,.10),rgba(233,196,106,.08));border:1px solid var(--gold-soft,#f0d999)}
.cred-sharebtns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:6px}

/* v53 — profection year page */
.prof-hero{text-align:center;background:linear-gradient(160deg,rgba(233,196,106,.10),rgba(139,123,216,.10));border:1px solid var(--gold-soft,#f0d999)}
.prof-age{font-family:'Jost',system-ui,sans-serif;text-transform:uppercase;letter-spacing:.2em;font-size:.82rem;color:var(--muted)}
.prof-house{font-family:'Cormorant Garamond',Georgia,serif;font-size:2rem;font-weight:600;color:#fff;line-height:1.1;margin-top:.1em}
.prof-topic{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.4rem;color:#e9c46a}
.prof-lord{margin-top:12px;padding-top:12px;border-top:1px solid rgba(233,196,106,.18);font-weight:500;color:#f0d999}
tr.prof-now td{background:rgba(233,196,106,.10);font-weight:600}

/* v54 — degree images page */
.degree-row{padding:14px 0;border-bottom:1px solid var(--line)}
.degree-row:last-child{border-bottom:none}
.deg-head{font-size:.98rem;margin-bottom:5px}
.deg-img{font-family:'Cormorant Garamond',Georgia,serif;font-size:1.32rem;font-style:italic;color:#f0d999;line-height:1.4}

/* v55 — declinations & out-of-bounds */
.oob-card{border:1px solid var(--gold-soft,#f0d999);background:linear-gradient(160deg,rgba(139,123,216,.10),rgba(233,196,106,.06))}
tr.oob-row td{background:rgba(233,196,106,.08)}
.oob-tag{display:inline-block;padding:2px 9px;border-radius:12px;background:rgba(233,196,106,.16);border:1px solid rgba(233,196,106,.4);color:#f0d999;font-size:.78rem;white-space:nowrap}

/* v56 — "explore this chart further" cross-links on the natal result */
.explore-more{background:linear-gradient(160deg,rgba(139,123,216,.08),rgba(233,196,106,.05));border:1px solid rgba(233,196,106,.2)}
.explore-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.explore-chip{padding:9px 14px;border-radius:20px;background:rgba(255,255,255,.04);border:1px solid rgba(180,157,201,.2);color:#ece8ff;font-size:.92rem;cursor:pointer;transition:border-color .15s,background .15s}
.explore-chip:hover{border-color:var(--gold-soft,#f0d999);background:rgba(233,196,106,.08)}

/* v57 — profection "what's live now" transit tie-in */
.prof-live{border-left:3px solid var(--gold-soft,#f0d999)}
.prof-live .dom-sub{margin-top:14px}

/* v58 — degree image + declination woven into the natal planet table */
.oob-mini{display:inline-block;font-size:.62rem;font-weight:700;letter-spacing:.05em;padding:1px 5px;margin-left:4px;border-radius:8px;background:rgba(233,196,106,.16);border:1px solid rgba(233,196,106,.45);color:#f0d999;vertical-align:middle}
.deg-inline{margin-top:2px;line-height:1.5}
.deg-inline em{color:#f0d999;font-family:'Cormorant Garamond',Georgia,serif;font-size:1.08em}
.decl-inline{margin-top:6px;font-size:.9rem}

/* v59 — "chart at a glance" strip on the natal result */
.glance-card{background:linear-gradient(160deg,rgba(233,196,106,.09),rgba(139,123,216,.09));border:1px solid rgba(233,196,106,.2)}

/* v60 — transit timeline */
td.nowrap{white-space:nowrap}

/* v62 — personal "your sky today" card on the Daily page */
.personal-sky{background:linear-gradient(160deg,rgba(139,123,216,.10),rgba(233,196,106,.06));border:1px solid rgba(233,196,106,.2)}

/* v151 — seal-earn celebration */
.seal-earn-overlay{display:flex;align-items:center;justify-content:center;padding:20px}
.seal-earn-card{position:relative;max-width:400px;width:100%;text-align:center;padding:34px 24px 24px;border-radius:22px;
  background:linear-gradient(165deg,rgba(28,24,58,.98),rgba(18,16,43,.98));border:1px solid rgba(233,196,106,.4);
  box-shadow:0 0 60px rgba(233,196,106,.22),0 20px 60px rgba(0,0,0,.5);overflow:hidden}
.seal-earn-card .auth-close{position:absolute;top:10px;right:12px}
.se-spark-layer{position:absolute;top:64px;left:50%;width:0;height:0;pointer-events:none}
.se-spark{position:absolute;top:0;left:0;width:7px;height:7px;margin:-3px;border-radius:50%;
  background:radial-gradient(circle,var(--gold,#e9c46a),rgba(233,196,106,0));opacity:0;
  animation:seSpark 900ms cubic-bezier(.2,.7,.3,1) var(--dl,0ms) forwards}
@keyframes seSpark{0%{opacity:0;transform:rotate(var(--a)) translateX(0) scale(.4)}
  25%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--d,80px)) scale(1)}}
.se-medallion{width:96px;height:96px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(circle at 40% 35%,rgba(240,217,153,.35),rgba(139,123,216,.22));
  border:2px solid rgba(233,196,106,.6);box-shadow:0 0 34px rgba(233,196,106,.4),inset 0 0 20px rgba(255,255,255,.1);
  animation:seMedal 700ms cubic-bezier(.2,1.3,.4,1) both}
@keyframes seMedal{0%{transform:scale(.2) rotate(-40deg);opacity:0}60%{opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}
.se-glyph{font-size:2.9rem;line-height:1;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4))}
.se-kicker{font-size:.74rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold,#e9c46a);margin-bottom:2px;
  animation:seFade 500ms ease 300ms both}
.se-name{margin:0 0 8px;font-size:1.55rem;background:linear-gradient(90deg,var(--gold-soft,#f0d999),var(--violet,#8b7bd8));
  -webkit-background-clip:text;background-clip:text;color:transparent;animation:seFade 500ms ease 380ms both}
.se-sub{color:var(--muted,#a49dc9);font-size:.9rem;line-height:1.5;margin:0 auto 16px;max-width:320px;animation:seFade 500ms ease 460ms both}
.se-progress{font-size:.9rem;color:var(--ink);margin-bottom:2px;animation:seFade 500ms ease 540ms both}
.se-progress b{color:var(--gold,#e9c46a);font-size:1.05rem}
.se-xp{color:var(--violet,#8b7bd8);margin-left:6px}
.se-bar{max-width:260px;margin:6px auto 18px;animation:seFade 500ms ease 600ms both}
.se-actions{display:flex;gap:10px;justify-content:center;animation:seFade 500ms ease 680ms both}
@keyframes seFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.seal-earn-overlay.calm .se-medallion,.seal-earn-overlay.calm .se-kicker,.seal-earn-overlay.calm .se-name,
.seal-earn-overlay.calm .se-sub,.seal-earn-overlay.calm .se-progress,.seal-earn-overlay.calm .se-bar,
.seal-earn-overlay.calm .se-actions{animation:none}
@media (prefers-reduced-motion:reduce){.se-spark{display:none}
  .se-medallion,.se-kicker,.se-name,.se-sub,.se-progress,.se-bar,.se-actions{animation:none!important}}

/* v151 — chart-reveal first-cast moment */
.chart-reveal-overlay{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(circle at 50% 40%,rgba(28,24,58,.97),rgba(6,5,18,.99));
  animation:crIn 500ms ease both}
@keyframes crIn{from{opacity:0}to{opacity:1}}
.chart-reveal-overlay.cr-leaving{animation:crOut 420ms ease forwards}
@keyframes crOut{to{opacity:0}}
.cr-inner{position:relative;max-width:440px;width:100%;text-align:center}
.cr-sky{position:absolute;inset:-30px;pointer-events:none}
.cr-star{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff;opacity:0;
  box-shadow:0 0 6px 1px rgba(240,217,153,.8);animation:crTwinkle 2.4s ease var(--dl,0ms) infinite}
@keyframes crTwinkle{0%,100%{opacity:0;transform:scale(.5)}45%{opacity:.9;transform:scale(1)}}
.cr-kicker{font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold,#e9c46a);margin-bottom:18px;
  animation:crRise 600ms ease 200ms both}
.cr-cards{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:20px}
.cr-card{flex:1;min-width:96px;max-width:130px;padding:16px 10px;border-radius:16px;
  background:linear-gradient(160deg,rgba(233,196,106,.14),rgba(139,123,216,.12));border:1px solid rgba(233,196,106,.35);
  box-shadow:0 6px 24px rgba(0,0,0,.3);display:flex;flex-direction:column;gap:5px;align-items:center;opacity:0}
.cr-card{animation:crCard 700ms cubic-bezier(.2,1.2,.4,1) both}
.cr-c1{animation-delay:600ms}.cr-c2{animation-delay:820ms}.cr-c3{animation-delay:1040ms}
@keyframes crCard{0%{opacity:0;transform:translateY(18px) scale(.85)}100%{opacity:1;transform:translateY(0) scale(1)}}
.cr-sym{font-size:1.8rem;line-height:1;color:var(--gold-soft,#f0d999)}
.cr-lbl{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted,#a49dc9)}
.cr-sign{font-size:.98rem;font-weight:600;color:var(--ink,#ece8ff)}
.cr-line{color:var(--muted,#a49dc9);font-size:.95rem;line-height:1.55;margin:0 auto 20px;max-width:360px;
  animation:crRise 600ms ease 1200ms both}
.cr-go{animation:crRise 600ms ease 1360ms both}
@keyframes crRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.chart-reveal-overlay.calm{animation:none}
.chart-reveal-overlay.calm .cr-kicker,.chart-reveal-overlay.calm .cr-card,.chart-reveal-overlay.calm .cr-line,
.chart-reveal-overlay.calm .cr-go{animation:none;opacity:1;transform:none}
.chart-reveal-overlay.calm .cr-star{display:none}
@media (prefers-reduced-motion:reduce){.chart-reveal-overlay,.cr-kicker,.cr-card,.cr-line,.cr-go{animation:none!important;opacity:1!important;transform:none!important}.cr-star{display:none}}

/* v152 — the filling zodiac wheel (Seals) */
.seal-wheel{text-align:center;padding:18px 12px 12px}
.seal-wheel-svg{width:100%;max-width:280px;height:auto;display:block;margin:0 auto}
.sw-slice{stroke:rgba(10,8,26,.6);stroke-width:1.2;transition:fill .5s ease,opacity .5s ease}
.sw-slice.off{fill:rgba(255,255,255,.05);opacity:.7}
.sw-slice.on{fill:url(#swgrad);opacity:1}
/* gradient defined via CSS custom paint fallback: use solid golds since SVG gradient needs defs */
.sw-slice.on{fill:rgba(233,196,106,.85);filter:drop-shadow(0 0 4px rgba(233,196,106,.35))}
.seal-wheel:not(.complete) .sw-slice.on{fill:rgba(233,196,106,.8)}
.seal-wheel.complete .sw-slice.on{fill:rgba(240,217,153,.95);filter:drop-shadow(0 0 7px rgba(233,196,106,.6))}
.sw-glyph{text-anchor:middle;font-size:15px;dominant-baseline:middle}
.sw-glyph.on{fill:#241a05}
.sw-glyph.off{fill:rgba(255,255,255,.25);font-size:18px}
.sw-hub{fill:rgba(14,11,30,.9);stroke:rgba(233,196,106,.3);stroke-width:1.5}
.sw-center-num{text-anchor:middle;font-size:40px;font-weight:700;fill:var(--gold,#e9c46a)}
.sw-center-sub{text-anchor:middle;font-size:15px;fill:var(--muted,#a49dc9);letter-spacing:.05em}
.sw-center-big{text-anchor:middle;font-size:46px}
.seal-wheel.complete .sw-hub{stroke:rgba(233,196,106,.7);filter:drop-shadow(0 0 10px rgba(233,196,106,.5))}
.sw-caption{margin:10px 0 2px;font-size:.9rem}

/* v152 — lesson-format variety: flashcards + tap-to-match */
.lesson-warmup{margin:14px 0;padding:14px;border-radius:14px;background:rgba(139,123,216,.07);border:1px solid rgba(139,123,216,.2)}
.warmup-h{font-size:.92rem;font-weight:600;color:var(--violet,#8b7bd8);margin-bottom:10px}
.flash-row{display:flex;gap:10px;flex-wrap:wrap}
.flash-card{flex:1;min-width:140px;height:110px;perspective:900px;cursor:pointer;background:none;border:none;padding:0}
.flash-inner{position:relative;width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.8,.3,1);transform-style:preserve-3d}
.flash-card.flipped .flash-inner{transform:rotateY(180deg)}
.flash-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:12px;
  display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;font-size:.85rem;line-height:1.35}
.flash-front{background:linear-gradient(160deg,rgba(28,24,58,.9),rgba(18,16,43,.9));border:1px solid var(--line,rgba(255,255,255,.09));color:var(--ink,#ece8ff)}
.flash-front::after{content:"↻ tap to flip";position:absolute;bottom:6px;left:0;right:0;font-size:.62rem;color:var(--muted,#a49dc9);opacity:.7}
.flash-back{background:linear-gradient(160deg,rgba(233,196,106,.16),rgba(139,123,216,.14));border:1px solid rgba(233,196,106,.4);color:var(--gold-soft,#f0d999);font-weight:600;transform:rotateY(180deg)}
@media (prefers-reduced-motion:reduce){.flash-inner{transition:none}}
.match-status{margin-bottom:8px}
.match-status.ok{color:var(--gold,#e9c46a);font-weight:600}
.match-grid{display:flex;gap:10px}
.match-col{flex:1;display:flex;flex-direction:column;gap:8px}
.match-item{text-align:left;padding:10px 12px;border-radius:10px;font-size:.82rem;line-height:1.3;cursor:pointer;
  background:rgba(10,8,26,.3);border:1px solid var(--line,rgba(255,255,255,.09));color:var(--ink,#ece8ff);transition:background .15s,border-color .15s,opacity .3s}
.match-item:hover{border-color:var(--violet,#8b7bd8)}
.match-item.sel{border-color:var(--gold,#e9c46a);background:rgba(233,196,106,.1)}
.match-item.done{background:rgba(127,224,166,.14);border-color:rgba(127,224,166,.4);color:var(--good,#8ce0b0);opacity:.85;cursor:default}
.match-item.wrong{border-color:var(--red,#ff9a9a);background:rgba(255,154,154,.12);animation:matchShake .4s}
@keyframes matchShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

/* v153 — Glyph Rush mini-game */
.gr-launch{display:flex;flex-direction:column;gap:8px;align-items:flex-start;background:linear-gradient(160deg,rgba(139,123,216,.12),rgba(233,196,106,.07));border:1px solid rgba(139,123,216,.28)}
.gr-launch-h{font-size:1.05rem;font-weight:700;color:var(--gold-soft,#f0d999)}
.gr-card{text-align:center;padding:10px 6px}
.gr-title{font-size:1.3rem;font-weight:700;margin-bottom:6px;color:var(--gold-soft,#f0d999)}
.gr-sub{font-size:.9rem;line-height:1.5;margin:0 auto 12px;max-width:340px}
.gr-best{margin-bottom:12px;color:var(--muted,#a49dc9)}
.gr-best b,.gr-final{color:var(--gold,#e9c46a)}
.gr-hud{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:6px}
.gr-score{font-size:1.4rem;color:var(--gold,#e9c46a);min-width:2ch;text-align:left}
.gr-combo{font-size:1rem;color:var(--violet,#8b7bd8);flex:1;text-align:center}
.gr-time{font-size:1rem;color:var(--muted,#a49dc9);min-width:3ch;text-align:right}
.gr-timebar{height:6px;border-radius:20px;background:rgba(255,255,255,.08);overflow:hidden;margin-bottom:14px}
.gr-timebar span{display:block;height:100%;width:100%;border-radius:20px;background:linear-gradient(90deg,var(--gold,#e9c46a),var(--violet,#8b7bd8));transition:width 1s linear}
.gr-prompt{text-align:center;font-size:1.5rem;font-weight:700;margin-bottom:14px;min-height:1.6em;color:var(--ink,#ece8ff)}
.gr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.gr-opt{font-size:2rem;line-height:1;padding:16px 0;border-radius:14px;cursor:pointer;
  background:rgba(10,8,26,.35);border:1px solid var(--line,rgba(255,255,255,.1));color:var(--ink,#ece8ff);
  transition:transform .1s,background .15s,border-color .15s}
.gr-opt:hover{border-color:var(--gold,#e9c46a)}
.gr-opt:active{transform:scale(.94)}
.gr-opt.right{background:rgba(127,224,166,.2);border-color:rgba(127,224,166,.5)}
.gr-opt.wrong{background:rgba(255,154,154,.16);border-color:var(--red,#ff9a9a);animation:matchShake .4s}
.gr-end .gr-final{font-size:3.2rem;font-weight:800;line-height:1}
.gr-final-lbl{margin-bottom:4px}
.gr-msg{color:var(--gold-soft,#f0d999);margin:8px 0 14px}

/* v154 — Emotional Weather */
.weather-levels{display:flex;gap:8px;justify-content:center;margin:6px 0 4px;flex-wrap:wrap}
.wl-chip{padding:8px 16px;border-radius:20px;font-size:.9rem;cursor:pointer;background:rgba(10,8,26,.3);border:1px solid var(--line,rgba(255,255,255,.1));color:var(--ink,#ece8ff);transition:background .15s,border-color .15s}
.wl-chip:hover{border-color:var(--violet,#8b7bd8)}
.wl-chip.on{background:linear-gradient(135deg,rgba(233,196,106,.18),rgba(139,123,216,.16));border-color:rgba(233,196,106,.5);color:var(--gold-soft,#f0d999);font-weight:600}
.wl-note{margin:2px 0 14px}
.weather-sec{margin:22px 0 8px;font-size:1.05rem;color:var(--gold-soft,#f0d999)}
.weather-card{position:relative;border-left:4px solid var(--line,rgba(255,255,255,.12))}
.weather-card.wc-storm{border-left-color:#8fa6d8;background:linear-gradient(120deg,rgba(90,110,160,.14),transparent 70%)}
.weather-card.wc-intense{border-left-color:#b98bd8;background:linear-gradient(120deg,rgba(139,123,216,.16),transparent 70%)}
.weather-card.wc-bright{border-left-color:var(--gold,#e9c46a);background:linear-gradient(120deg,rgba(233,196,106,.14),transparent 70%)}
.weather-card.wc-calm{border-left-color:#7f8aa6}
.wc-top{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.wc-icon{font-size:2rem;line-height:1}
.wc-headwrap{display:flex;flex-direction:column}
.wc-name{font-weight:700;font-size:1.05rem;color:var(--ink,#ece8ff)}
.wc-cond{font-size:.78rem;letter-spacing:.04em;color:var(--muted,#a49dc9)}
.wc-head{font-size:1rem;font-weight:600;margin-bottom:5px;color:var(--ink,#ece8ff)}
.wc-body{color:#d5cdf2;font-size:.93rem;line-height:1.55;margin:0}
.wc-more{margin-top:8px;padding-top:8px;border-top:1px solid var(--line,rgba(255,255,255,.08))}
.wc-unfollow{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--muted,#a49dc9);font-size:.72rem;cursor:pointer;opacity:.7}
.wc-unfollow:hover{opacity:1;color:var(--red,#ff9a9a)}
.weather-add,.weather-rel-pick{margin:10px 0 4px;display:flex;align-items:center;gap:8px}
.weather-select{padding:9px 12px;border-radius:10px;background:var(--panel-solid,#1a1636);border:1px solid var(--line,rgba(255,255,255,.12));color:var(--ink,#ece8ff);font-size:.9rem;max-width:100%}
.weather-foot{margin-top:20px;font-style:italic}

/* v154 — home weather teaser */
.weather-teaser-card{border-left:4px solid var(--line,rgba(255,255,255,.12))}
.weather-teaser-card.wc-storm{border-left-color:#8fa6d8}
.weather-teaser-card.wc-intense{border-left-color:#b98bd8}
.weather-teaser-card.wc-bright{border-left-color:var(--gold,#e9c46a)}
.wt-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.wt-icon{font-size:1.9rem;line-height:1}
.wt-lbl{letter-spacing:.03em}
.wt-line{font-size:1rem;font-weight:600;color:var(--ink,#ece8ff);line-height:1.4}

/* v154 — weather push settings */
.wp-notice{padding:10px 12px;border-radius:10px;background:rgba(233,196,106,.08);border:1px solid rgba(233,196,106,.2)}
.wp-options{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.wp-opt{display:flex;gap:10px;align-items:flex-start;text-align:left;padding:12px;border-radius:12px;cursor:pointer;
  background:rgba(10,8,26,.3);border:1px solid var(--line,rgba(255,255,255,.1));color:var(--ink,#ece8ff);transition:border-color .15s,background .15s}
.wp-opt:hover{border-color:var(--violet,#8b7bd8)}
.wp-opt.on{border-color:rgba(233,196,106,.5);background:linear-gradient(135deg,rgba(233,196,106,.12),rgba(139,123,216,.1))}
.wp-mark{font-size:1.1rem;color:var(--gold,#e9c46a);line-height:1.4}
.wp-obody{display:flex;flex-direction:column;gap:3px}
.wp-t{font-weight:600}
.wp-d{line-height:1.45}

/* v158 — Life Timeline */
.tl-add{margin:6px 0 14px}
.tl-form{margin-top:10px;background:rgba(139,123,216,.06);border:1px solid rgba(139,123,216,.2);border-radius:14px;padding:14px}
.tl-lbl{display:block;font-size:.78rem;color:var(--muted,#a49dc9);margin:8px 0 3px;letter-spacing:.02em}
.tl-in{width:100%;padding:10px 12px;border-radius:10px;background:var(--panel-solid,#1a1636);border:1px solid var(--line,rgba(255,255,255,.12));color:var(--ink,#ece8ff);font-size:.95rem;margin-bottom:2px}
.tl-form .btn-primary{margin-top:12px}
.tl-line{margin-top:6px}
.tl-row{display:flex;gap:10px;align-items:stretch}
.tl-node{flex:0 0 34px;display:flex;justify-content:center;padding-top:2px}
.tl-dot{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.95rem;line-height:1;flex:0 0 30px}
.tl-dot.you{background:linear-gradient(135deg,rgba(233,196,106,.9),rgba(233,196,106,.55));color:#241a05;box-shadow:0 0 10px rgba(233,196,106,.3)}
.tl-dot.sky{background:linear-gradient(135deg,rgba(139,123,216,.85),rgba(139,123,216,.5));color:#160f2e}
.tl-dot.now{width:12px;height:12px;flex:0 0 12px;background:#fff;box-shadow:0 0 8px rgba(255,255,255,.6);margin-top:5px}
.tl-spine{flex:0 0 2px;width:2px;background:linear-gradient(var(--gold,#e9c46a),var(--violet,#8b7bd8));margin:0 15px 0 -18px;align-self:stretch}
.tl-spine.end{background:linear-gradient(var(--violet,#8b7bd8),transparent)}
.tl-body{flex:1;padding-bottom:16px;min-width:0}
.tl-head{display:block;width:100%;text-align:left;background:none;border:none;padding:2px 0;cursor:pointer}
.tl-t{display:block;font-weight:600;font-size:.98rem;color:var(--ink,#ece8ff)}
.tl-row.tl-sky .tl-t{color:var(--gold-soft,#f0d999)}
.tl-d{display:block;font-size:.76rem;color:var(--muted,#a49dc9);margin-top:1px}
.tl-corr{display:block;font-size:.8rem;color:#8fa6d8;margin-top:3px}
.tl-head.open .tl-t{color:var(--gold,#e9c46a)}
.tl-now-lbl{font-size:.8rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#fff;padding-top:3px}
.tl-detail{margin-top:8px;padding:12px 14px;border-radius:12px;background:rgba(10,8,26,.4);border:1px solid var(--line,rgba(255,255,255,.08))}
.tl-sky-h{font-size:.82rem;color:var(--violet,#8b7bd8);font-weight:600;margin-bottom:6px}
.tl-sky-l{margin:4px 0;font-size:.9rem;color:#d5cdf2;line-height:1.5}
.tl-corr-full{margin:8px 0 2px;font-size:.9rem;color:#cfe0ff;line-height:1.5;border-top:1px solid var(--line,rgba(255,255,255,.08));padding-top:8px}
.tl-del{margin-top:10px;background:none;border:none;color:var(--muted,#a49dc9);font-size:.78rem;cursor:pointer;opacity:.75}
.tl-del:hover{color:var(--red,#ff9a9a);opacity:1}
.tl-foot{margin-top:18px;font-style:italic}

/* v158 — Life Timeline Phase 2: layer toggles + share */
.tl-tools{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 10px}
.tl-layer{padding:7px 14px;border-radius:20px;font-size:.82rem;cursor:pointer;background:rgba(10,8,26,.3);border:1px solid var(--line,rgba(255,255,255,.1));color:var(--ink,#ece8ff);transition:border-color .15s,background .15s}
.tl-layer:hover{border-color:var(--violet,#8b7bd8)}
.tl-layer.on{background:linear-gradient(135deg,rgba(139,123,216,.2),rgba(139,123,216,.08));border-color:rgba(139,123,216,.5);color:#cfc6ff;font-weight:600}
.tl-share{margin-left:auto;color:var(--gold-soft,#f0d999);border-color:rgba(233,196,106,.3)}
.tl-share:hover{border-color:var(--gold,#e9c46a)}
.tl-dot.sky[style]{}
.tl-row.tl-sky .tl-dot.sky{}

/* v159 — Phase 3: the AI Story-Weaver */
.story-weaver{margin-top:16px;background:linear-gradient(160deg,rgba(139,123,216,.12),rgba(233,196,106,.06));border:1px solid rgba(139,123,216,.28)}
.sw-h{font-size:1.15rem;font-weight:700;color:var(--gold-soft,#f0d999);margin-bottom:4px}
.sw-body{margin-top:12px}
.sw-loading{padding:14px 0;text-align:center;font-size:.95rem;animation:swPulse 1.6s ease-in-out infinite}
@keyframes swPulse{0%,100%{opacity:.5}50%{opacity:1}}
.sw-story{white-space:pre-wrap;line-height:1.68;font-size:1rem;color:#e7e1ff;background:rgba(10,8,26,.35);border:1px solid var(--line,rgba(255,255,255,.08));border-radius:12px;padding:16px 18px}
.sw-acts{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}
.ai-consent p{margin:8px 0}

/* v161 — calm home: reading-level chooser + doorway tiles + More drawer */
.reading-level{margin:18px auto 6px;max-width:520px;text-align:center;padding:16px;border-radius:16px;
  background:linear-gradient(160deg,rgba(139,123,216,.09),rgba(233,196,106,.05));border:1px solid rgba(139,123,216,.2)}
.rl-q{font-size:.98rem;color:var(--ink,#ece8ff);margin-bottom:12px}
.rl-row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.rl-chip{padding:9px 18px;border-radius:22px;font-size:.92rem;cursor:pointer;background:rgba(10,8,26,.3);border:1px solid var(--line,rgba(255,255,255,.12));color:var(--ink,#ece8ff);transition:all .15s}
.rl-chip:hover{border-color:var(--violet,#8b7bd8)}
.rl-chip.on{background:linear-gradient(135deg,rgba(233,196,106,.2),rgba(139,123,216,.16));border-color:rgba(233,196,106,.5);color:var(--gold-soft,#f0d999);font-weight:600}
.rl-note{margin-top:10px;min-height:1.2em}
.home-open{margin-top:6px}
.home-sec{font-size:1.05rem;color:var(--gold-soft,#f0d999);margin:30px 0 12px;text-align:center;font-weight:600;letter-spacing:.01em}
.home-tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:600px;margin:0 auto}
.home-tile{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:20px 18px;border-radius:18px;cursor:pointer;min-height:118px;
  background:linear-gradient(155deg,rgba(28,24,58,.7),rgba(18,16,43,.5));border:1px solid var(--line,rgba(255,255,255,.09));transition:transform .12s,border-color .2s,box-shadow .3s}
.home-tile:hover{transform:translateY(-2px);border-color:rgba(233,196,106,.4);box-shadow:0 8px 24px rgba(0,0,0,.28)}
.ht-icon{font-size:1.9rem;line-height:1;margin-bottom:4px}
.ht-label{font-weight:700;font-size:1.02rem;color:var(--ink,#ece8ff)}
.ht-sub{font-size:.8rem;line-height:1.35}
.home-more{max-width:600px;margin:30px auto 0}
.home-more-toggle{display:block;width:100%;text-align:center;background:none;border:none;color:var(--muted,#a49dc9);font-size:.9rem;cursor:pointer;padding:10px;letter-spacing:.03em}
.home-more-toggle:hover{color:var(--ink,#ece8ff)}
.home-more-body{margin-top:6px;display:flex;flex-direction:column;gap:10px}
@media(max-width:420px){.home-tiles{gap:10px}.home-tile{padding:16px 14px;min-height:104px}}

/* v161 — calm Library: collapsible category accordion */
.lib-section{margin-bottom:8px;border:1px solid var(--line,rgba(255,255,255,.08));border-radius:14px;overflow:hidden;background:rgba(10,8,26,.22)}
.lib-section.open{border-color:rgba(233,196,106,.22)}
.lib-section-head{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:15px 16px;cursor:pointer;background:none;border:none;color:var(--ink,#ece8ff);font-size:1rem}
.lib-section-head:hover{background:rgba(255,255,255,.03)}
.ls-ic{font-size:1.25rem;line-height:1;flex:0 0 auto}
.ls-name{flex:1;font-weight:600}
.ls-count{font-size:.78rem;color:var(--muted,#a49dc9);background:rgba(255,255,255,.06);border-radius:20px;padding:2px 10px;min-width:26px;text-align:center}
.ls-chev{color:var(--muted,#a49dc9);font-size:.9rem;flex:0 0 auto}
.lib-section .lib-grid{padding:4px 12px 14px}

/* ======================================================================
   v181 — First-principles redesign: Today home, 4-tab nav, tiered Chart,
   People & Grow landings. Calm by default; everything one tap away.
   ====================================================================== */

/* ── Today (the daily ritual home) ─────────────────────────────────── */
.today-wrap{max-width:760px;margin:0 auto}
.today-greet{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.5rem;color:var(--ink,#ece8ff);margin:2px 0 14px;letter-spacing:.01em}
.today-wrap .today-hero{margin-bottom:16px}
.today-weather:empty,.today-sky:empty,.today-reading:empty,.today-foot:empty{display:none}
.today-weather,.today-sky,.today-reading{margin-bottom:14px}
.today-sec{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.35rem;color:var(--ink,#ece8ff);margin:24px 0 12px;text-align:center;font-weight:600}
.today-doors{margin-bottom:20px}
.today-foot{max-width:600px;margin:26px auto 0;display:flex;flex-direction:column;gap:10px}
.home-firstlinks{max-width:600px;margin:26px auto 0;display:flex;flex-direction:column;gap:10px}

/* ── Tiered chart: progressive-disclosure bands ────────────────────── */
.chart-tier{border:1px solid var(--line,rgba(255,255,255,.09));border-radius:16px;margin:14px 0;overflow:hidden;background:rgba(10,8,26,.24)}
.chart-tier.open{border-color:rgba(233,196,106,.22)}
.ct-head{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:16px 18px;cursor:pointer;background:none;border:none;color:var(--ink,#ece8ff)}
.ct-head:hover{background:rgba(255,255,255,.03)}
.ct-head:focus-visible{outline:2px solid var(--gold,#e9c46a);outline-offset:-2px}
.ct-titles{flex:1;display:flex;flex-direction:column;gap:2px}
.ct-title{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.22rem;font-weight:600;line-height:1.15}
.ct-sub{font-size:.82rem;color:var(--muted,#a49dc9);line-height:1.3}
.ct-chev{color:var(--muted,#a49dc9);font-size:1rem;flex:0 0 auto;transition:transform .2s var(--ease,ease)}
.chart-tier.open .ct-chev{transform:rotate(180deg)}
.ct-body{padding:2px 16px 18px}
:root[data-motion="reduced"] .ct-chev{transition:none}

/* Go deeper — the whole advanced canon in one calm shelf */
.chart-tier.go-deeper{background:linear-gradient(180deg,rgba(24,18,52,.4),rgba(10,8,26,.24))}
.gd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-top:6px}
.gd-item{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid var(--line,rgba(255,255,255,.08));border-radius:12px;text-decoration:none;color:var(--ink,#ece8ff);background:rgba(255,255,255,.02);transition:.15s var(--ease,ease)}
.gd-item:hover{border-color:rgba(233,196,106,.4);background:rgba(255,255,255,.05);transform:translateY(-1px)}
.gd-ic{font-size:1.3rem;line-height:1;flex:0 0 auto;width:26px;text-align:center;color:var(--gold,#e9c46a)}
.gd-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.gd-tx b{font-size:.94rem;font-weight:600}
.gd-tx .muted{font-size:.76rem;line-height:1.25}
:root[data-motion="reduced"] .gd-item{transition:none}

/* "This is you" sentence under the Big Three */
.big3-sentence{max-width:640px;margin:14px auto 4px;text-align:center;font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.2rem;line-height:1.5;color:var(--ink,#ece8ff)}
.big3-sentence strong{color:var(--gold,#e9c46a);font-weight:600}
.big3-sentence em{font-style:italic;color:#d9c9ff}

/* Chart tab: quiet "edit / recast" shelf above the folded form */
.natal-editbar{display:flex;justify-content:flex-end;margin:2px 0 10px}

/* ── People landing ────────────────────────────────────────────────── */
.people-strip{max-width:820px;margin:0 auto 10px}
.ppl-row{display:flex;flex-wrap:wrap;gap:9px;margin:8px 0 14px}
.ppl-chip{display:inline-flex;align-items:center;gap:9px;padding:7px 13px 7px 7px;border:1px solid var(--line,rgba(255,255,255,.1));border-radius:30px;background:rgba(255,255,255,.03);color:var(--ink,#ece8ff);cursor:pointer;transition:.15s var(--ease,ease)}
.ppl-chip:hover{border-color:rgba(233,196,106,.4);background:rgba(255,255,255,.06)}
.ppl-chip.me{border-color:rgba(233,196,106,.45)}
.ppl-av{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;background:linear-gradient(145deg,rgba(233,196,106,.32),rgba(150,120,220,.32));color:#fff}
.ppl-nm{font-size:.92rem;font-weight:500}
.ppl-you{font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gold,#e9c46a);margin-left:2px}
:root[data-motion="reduced"] .ppl-chip{transition:none}

/* ── Bottom tab labels (redesign wording) ─────────────────────────── */
@media(max-width:820px){
  .bottom-link .bl-label{font-size:.66rem;letter-spacing:.02em}
}

/* v182 — "Arc" motif: Daily Arc (Today), Your Arc (life timeline), Learning Arc (University) */
.arc-eyebrow{display:flex;flex-direction:column;gap:1px;margin:0 0 12px;padding-left:2px}
.arc-eyebrow-name{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.02rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--gold,#e9c46a)}
.arc-eyebrow-sub{font-size:.82rem;line-height:1.35;color:var(--muted,#a49dc9)}
.today-arc{margin-top:-4px}
.tl-arc-eyebrow{margin-bottom:10px}
/* Learning Arc caption above the University progress bar */
.sh-arc-label{display:flex;align-items:baseline;justify-content:space-between;margin:14px 0 5px}
.sh-arc-name{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--gold,#e9c46a);font-weight:600}
.sh-arc-pct{font-size:.78rem;color:var(--muted,#a49dc9);font-variant-numeric:tabular-nums}

/* v183 — University accreditation disclaimer (honest framing) */
.uni-disclaimer{max-width:640px;margin:18px auto 4px;padding-top:14px;border-top:1px solid var(--line,rgba(255,255,255,.08));line-height:1.5;text-align:center;opacity:.85}

/* v184 — Today rebuilt around one moment (hero → one sky card → one step; AM/PM arc) */
.today-body{display:flex;flex-direction:column;gap:14px;margin-top:16px}
.today-body:empty{display:none}
/* the single merged "your sky today" card */
.today-sky-card .tsc-eyebrow,.today-reflect .tsc-eyebrow,.today-tomorrow .tsc-eyebrow{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold,#e9c46a);font-weight:600;margin-bottom:10px}
.tsc-row{display:flex;align-items:center;gap:14px}
.tsc-moon{flex:0 0 auto;display:flex}
.tsc-moon .moon-svg{filter:drop-shadow(0 2px 10px rgba(233,196,106,.25))}
.tsc-body{min-width:0}
.tsc-weather{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.35rem;font-weight:600;color:var(--ink,#ece8ff);line-height:1.15}
.tsc-moonline{margin-top:2px}
.tsc-transit{margin:12px 0 4px;line-height:1.5;color:var(--ink,#ece8ff);font-size:.98rem}
/* the single forward step */
.today-ritual{display:flex;flex-direction:column;gap:10px}
.tr-streak{font-size:.86rem;color:var(--muted,#a49dc9);text-align:center}
.today-action{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:15px 16px;border:1px solid rgba(233,196,106,.28);border-radius:16px;background:linear-gradient(180deg,rgba(233,196,106,.08),rgba(255,255,255,.02));color:var(--ink,#ece8ff);cursor:pointer;transition:.16s var(--ease,ease)}
.today-action:hover{border-color:rgba(233,196,106,.55);transform:translateY(-1px);box-shadow:0 8px 22px rgba(0,0,0,.24)}
.ta-glyph{font-size:1.4rem;line-height:1;flex:0 0 auto;width:28px;text-align:center;color:var(--gold,#e9c46a)}
.ta-body{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.ta-title{font-weight:600;font-size:1rem}
.ta-arrow{color:var(--gold,#e9c46a);font-size:1.1rem;flex:0 0 auto}
:root[data-motion="reduced"] .today-action{transition:none}
/* evening: close-the-arc reflection */
.today-reflect .tr-prompt{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.25rem;color:var(--ink,#ece8ff);margin:0 0 12px;line-height:1.3}
.tr-input{width:100%;padding:12px 14px;border:1px solid var(--line,rgba(255,255,255,.14));border-radius:12px;background:rgba(0,0,0,.22);color:var(--ink,#ece8ff);font-size:1rem;margin-bottom:10px}
.tr-input:focus{outline:2px solid var(--gold,#e9c46a);outline-offset:1px;border-color:transparent}
.tr-done{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.2rem;color:var(--gold,#e9c46a);margin:0}
.today-tomorrow .tt-row{display:flex;align-items:center;gap:13px}
.tt-line{font-weight:600;color:var(--ink,#ece8ff)}

/* v185 — Reshaped paywall (shimmer teaser, price on its own screen) + curated Go-deeper */
/* The one taste: opening paragraph dissolving into shimmer, no blur/lock noise */
.deep-teaser{position:relative}
.deep-teaser-para{position:relative;max-height:8.5em;overflow:hidden;
  -webkit-mask-image:linear-gradient(180deg,#000 38%,transparent 96%);
  mask-image:linear-gradient(180deg,#000 38%,transparent 96%)}
/* aspirational close — desire, no price */
.deep-await{margin-top:8px;padding:22px 20px 24px;text-align:center;border-radius:16px;
  background:radial-gradient(120% 100% at 50% 0,rgba(233,196,106,.14),rgba(24,18,52,.28) 70%);
  border:1px solid rgba(233,196,106,.24);position:relative;overflow:hidden}
.deep-await::after{content:"";position:absolute;top:0;left:-60%;width:60%;height:100%;
  background:linear-gradient(105deg,transparent,rgba(255,244,214,.14),transparent);animation:daSheen 3.6s ease-in-out infinite}
@keyframes daSheen{0%{left:-60%}55%,100%{left:120%}}
:root[data-motion="reduced"] .deep-await::after{display:none}
.da-glyph{font-size:1.7rem;color:var(--gold,#e9c46a);line-height:1;margin-bottom:6px}
.da-head{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.4rem;font-weight:600;color:var(--ink,#ece8ff);line-height:1.25}
.da-sub{font-size:.9rem;line-height:1.45;margin:6px auto 0;max-width:34ch}
.da-list{margin:12px auto 0;font-size:.82rem;color:var(--muted,#a49dc9);max-width:42ch;line-height:1.4}
.da-titles{color:#d9c9ff}
.da-cta{margin-top:16px}
/* store: the card the reader came to unlock, gently pulsed */
.store-card.pulse,.codex-flagship.pulse{animation:scPulse 1.6s ease-out}
@keyframes scPulse{0%{box-shadow:0 0 0 0 rgba(233,196,106,.55)}70%{box-shadow:0 0 0 16px rgba(233,196,106,0)}100%{box-shadow:0 0 0 0 rgba(233,196,106,0)}}
:root[data-motion="reduced"] .store-card.pulse,:root[data-motion="reduced"] .codex-flagship.pulse{animation:none;outline:2px solid var(--gold,#e9c46a)}
/* curated Go-deeper: reasoned recs, then an inner "browse all" */
.gd-recs{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.gd-recs-lbl{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:var(--gold,#e9c46a);font-weight:600;margin-bottom:2px}
.gd-rec{display:flex;align-items:center;gap:12px;padding:13px 15px;border:1px solid rgba(233,196,106,.26);border-radius:14px;text-decoration:none;color:var(--ink,#ece8ff);background:linear-gradient(180deg,rgba(233,196,106,.07),rgba(255,255,255,.02));transition:.15s var(--ease,ease)}
.gd-rec:hover{border-color:rgba(233,196,106,.5);transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.22)}
.gd-rec .gd-go{color:var(--gold,#e9c46a);font-size:1.1rem;flex:0 0 auto}
.gd-all-toggle{display:block;width:100%;text-align:center;background:none;border:none;color:var(--muted,#a49dc9);font-size:.86rem;cursor:pointer;padding:12px 8px 6px;letter-spacing:.02em}
.gd-all-toggle:hover{color:var(--ink,#ece8ff)}
:root[data-motion="reduced"] .gd-rec{transition:none}

/* ======================================================================
   v186 — Retire the ☰ menu: four top links + search + account avatar,
   an account/settings bottom-sheet, and a keyboard command palette.
   ====================================================================== */
/* Account avatar button (right of the top bar) */
.avatar-btn{position:relative;width:40px;height:40px;border-radius:50%;flex:0 0 auto;cursor:pointer;
  border:1px solid var(--line-soft,rgba(255,255,255,.14));background:radial-gradient(circle at 38% 32%,rgba(233,196,106,.28),rgba(139,123,216,.24));
  display:flex;align-items:center;justify-content:center;transition:.16s var(--ease,ease)}
.avatar-btn:hover{border-color:rgba(233,196,106,.6);transform:translateY(-1px)}
.avatar-btn:focus-visible{outline:2px solid var(--gold,#e9c46a);outline-offset:2px}
.av-face{font-size:1.15rem;line-height:1;color:#fff8e6}
.av-dot{position:absolute;top:-1px;right:-1px;width:11px;height:11px;border-radius:50%;background:#e9c46a;border:2px solid var(--bg,#0a0a1f);box-shadow:0 0 8px rgba(233,196,106,.7)}

/* Account & settings bottom-sheet */
.acct-overlay{position:fixed;inset:0;z-index:150;display:flex;justify-content:center;align-items:flex-end;
  background:rgba(8,8,20,.5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .2s ease}
.acct-overlay.open{opacity:1}
@media(min-width:721px){.acct-overlay{align-items:flex-start;padding-top:64px}}
.acct-sheet{width:100%;max-width:520px;background:var(--panel-solid,#141233);border:1px solid rgba(233,196,106,.28);
  border-radius:22px 22px 0 0;box-shadow:0 -12px 50px rgba(0,0,0,.55);max-height:86vh;overflow-y:auto;
  transform:translateY(24px);transition:transform .24s var(--ease,cubic-bezier(.2,.8,.2,1))}
.acct-overlay.open .acct-sheet{transform:translateY(0)}
@media(min-width:721px){.acct-sheet{border-radius:20px}}
:root[data-motion="reduced"] .acct-overlay,:root[data-motion="reduced"] .acct-sheet{transition:none}
.as-head{display:flex;align-items:center;gap:13px;padding:20px 20px 14px;border-bottom:1px solid var(--line-soft,rgba(255,255,255,.08));position:sticky;top:0;background:var(--panel-solid,#141233);z-index:1}
.as-av{width:44px;height:44px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:1.4rem;
  background:radial-gradient(circle at 38% 32%,rgba(233,196,106,.32),rgba(139,123,216,.3));color:#fff8e6}
.as-id{flex:1;min-width:0;display:flex;flex-direction:column}
.as-name{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.3rem;font-weight:600;color:var(--ink,#ece8ff);line-height:1.1}
.as-close{background:none;border:none;color:var(--muted,#a49dc9);font-size:1.2rem;cursor:pointer;padding:6px 10px;border-radius:10px;flex:0 0 auto}
.as-close:hover{background:rgba(255,255,255,.06);color:var(--ink,#ece8ff)}
.as-list{padding:6px 10px 18px}
.as-sec{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--violet,#8b7bd8);opacity:.8;padding:14px 12px 5px}
.as-row{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:13px 12px;border:none;background:none;color:var(--ink,#ece8ff);cursor:pointer;border-radius:12px;transition:background .12s}
.as-row:hover{background:rgba(233,196,106,.08)}
.as-row:focus-visible{outline:2px solid var(--gold,#e9c46a);outline-offset:-2px}
.as-glyph{font-size:1.3rem;width:26px;text-align:center;flex:0 0 auto;color:var(--gold,#e9c46a)}
.as-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.as-lbl{font-weight:500;font-size:1rem}
.as-arrow{color:var(--muted,#a49dc9);font-size:1.3rem;flex:0 0 auto;opacity:.6}
.as-badge{flex:0 0 auto;min-width:20px;height:20px;padding:0 6px;border-radius:20px;background:var(--gold,#e9c46a);color:#1a1330;font-size:.74rem;font-weight:700;display:flex;align-items:center;justify-content:center}

/* Command palette: keyboard selection + open transition + footer */
.search-overlay{opacity:0;transition:opacity .16s ease}
.search-overlay.open{opacity:1}
:root[data-motion="reduced"] .search-overlay{transition:none}
.search-result.sel{background:rgba(233,196,106,.14);box-shadow:inset 0 0 0 1px rgba(233,196,106,.35)}
.search-result.sel .sr-arrow{opacity:1}
.search-foot{padding:9px 14px;border-top:1px solid var(--line-soft,rgba(255,255,255,.08));text-align:center;letter-spacing:.02em}

/* Four top links inline on desktop; hidden on mobile (bottom tabs are the nav) */
@media(max-width:820px){ .nav{display:none!important} .topbar{flex-direction:row!important;gap:12px} }
@media(max-width:560px){ .topbar{flex-direction:row!important} }

/* v187 — First-run resequenced: warm live moon + one-question onboarding */
.hero-moon-live{display:flex;flex-direction:column;align-items:center;gap:8px}
.hero-moon-live .moon-svg{filter:drop-shadow(0 4px 22px rgba(233,196,106,.4))}
:root[data-motion="full"] .hero-moon-live .moon-svg{animation:moonBreath 7s ease-in-out infinite}
@keyframes moonBreath{0%,100%{filter:drop-shadow(0 4px 18px rgba(233,196,106,.32))}50%{filter:drop-shadow(0 6px 30px rgba(233,196,106,.55))}}
.ob-card{max-width:520px;margin:0 auto;text-align:center}
.ob-ask{display:flex;flex-direction:column;align-items:center;gap:10px}
.ob-q{font-family:var(--serif,"Cormorant Garamond",serif);font-size:1.5rem;font-weight:600;color:var(--ink,#ece8ff)}
.ob-date{font-size:1.15rem;padding:14px 16px;border-radius:14px;border:1px solid rgba(233,196,106,.35);
  background:rgba(0,0,0,.2);color:var(--ink,#ece8ff);width:100%;max-width:280px;text-align:center}
.ob-date:focus{outline:2px solid var(--gold,#e9c46a);outline-offset:1px;border-color:transparent}
.ob-hint{max-width:34ch;margin:0 auto}
.ob-msg:empty{display:none}
.ob-msg{color:#ff9a9a}
.ob-reveal[hidden],.ob-deepen[hidden],.ob-level[hidden]{display:none}
.ob-reveal{margin-top:22px;padding-top:20px;border-top:1px solid var(--line-soft,rgba(255,255,255,.08))}
:root[data-motion="full"] .ob-reveal:not([hidden]){animation:obRise .5s var(--ease,ease) both}
@keyframes obRise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ob-lead{color:var(--muted,#a49dc9);margin-bottom:8px}
.ob-deepen{margin-top:22px;padding:18px 16px;border-radius:16px;border:1px solid rgba(233,196,106,.24);
  background:radial-gradient(120% 100% at 50% 0,rgba(233,196,106,.09),rgba(24,18,52,.22) 72%)}
.ob-deepen-head{font-weight:500;color:var(--ink,#ece8ff);line-height:1.4;margin-bottom:12px}
.obd-glyph{color:var(--gold,#e9c46a);margin-right:4px}
.ob-row{display:flex;gap:10px;flex-wrap:wrap}
.ob-in{flex:1;min-width:130px;padding:11px 13px;border-radius:11px;border:1px solid var(--line-soft,rgba(255,255,255,.14));
  background:rgba(0,0,0,.2);color:var(--ink,#ece8ff);font-size:1rem}
.ob-in:focus{outline:2px solid var(--gold,#e9c46a);outline-offset:1px;border-color:transparent}
.ob-in-time{flex:0 0 auto;min-width:120px}
.ob-place-res{margin:8px 0}
.ob-place-res:empty{display:none}
.ob-deepen .btn-primary{margin-top:12px}
.ob-level{margin-top:24px}

/* v188 — polish: compact tab-landing cards (People/Grow) so tabs breathe, not scroll */
.people-body .feature-cards,.grow-body .feature-cards{gap:10px;margin-top:12px}
.feature.gh-compact{display:flex;align-items:center;gap:14px;padding:15px 16px}
.feature.gh-compact .feature-glyph{font-size:1.5rem;margin-bottom:0;flex:0 0 auto;width:30px;text-align:center;line-height:1}
.feature.gh-compact .feat-tx{flex:1;min-width:0}
.feature.gh-compact h3{font-size:1.08rem;margin:0 0 2px}
.feature.gh-compact p{font-size:.85rem;line-height:1.35}
.feature.gh-compact:hover{transform:translateY(-2px)}

/* v190 — In-app feedback capture */
.fb-modal .fb-kinds{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0 12px}
@media(min-width:440px){.fb-modal .fb-kinds{grid-template-columns:repeat(4,1fr)}}
.fb-kind{display:flex;flex-direction:column;align-items:center;gap:4px;padding:11px 6px;border-radius:12px;cursor:pointer;
  border:1px solid var(--line-soft,rgba(255,255,255,.14));background:rgba(255,255,255,.02);color:var(--ink,#ece8ff);transition:.14s var(--ease,ease)}
.fb-kind:hover{border-color:rgba(233,196,106,.4)}
.fb-kind.on{border-color:var(--gold,#e9c46a);background:rgba(233,196,106,.12);box-shadow:inset 0 0 0 1px rgba(233,196,106,.4)}
.fbk-ic{font-size:1.3rem;line-height:1}
.fbk-lb{font-size:.82rem}
.fb-text,.fb-email{width:100%;border-radius:12px;border:1px solid var(--line-soft,rgba(255,255,255,.14));
  background:rgba(0,0,0,.2);color:var(--ink,#ece8ff);font-size:1rem;padding:11px 13px;font-family:inherit}
.fb-text{resize:vertical;min-height:88px;margin-bottom:9px}
.fb-text:focus,.fb-email:focus{outline:2px solid var(--gold,#e9c46a);outline-offset:1px;border-color:transparent}
.fb-note{margin:10px 0 4px;line-height:1.45}
:root[data-motion="reduced"] .fb-kind{transition:none}
/* footer link rendered as a button */
.footer-link-btn{background:none;border:none;padding:0;font:inherit;cursor:pointer}
/* gentle once-ever nudge on Today */
.fb-nudge{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.fbn-glyph{font-size:1.4rem;color:var(--gold,#e9c46a);flex:0 0 auto}
.fbn-body{flex:1;min-width:140px}
.fbn-title{font-weight:600;color:var(--ink,#ece8ff)}
.fbn-x{background:none;border:none;color:var(--muted,#a49dc9);font-size:1rem;cursor:pointer;padding:4px 8px;border-radius:8px;flex:0 0 auto}
.fbn-x:hover{background:rgba(255,255,255,.06);color:var(--ink,#ece8ff)}

/* ══════════════════════════════════════════════════════════════════════
   THE SHADOW SIDE · v2 · scoped ember skin (candlelight & oxblood)
   Everything here is namespaced under .shadow-side so it never leaks
   into the light build. Entered by choice, held with care.
   ══════════════════════════════════════════════════════════════════════ */
.view.shadow-side{
  position:relative;
  background:radial-gradient(120% 90% at 50% 60%,#3a0f1e 0%,#1c0714 40%,#0a0308 78%,#050206 100%);
  color:#e8cfc9;
  font-family:Georgia,'Times New Roman',serif;
  min-height:100vh;
  padding:0;
  overflow:hidden;
}
.shadow-side .ss-wrap{position:relative;max-width:620px;margin:0 auto;padding:30px 22px 72px;text-align:center;z-index:2}
.shadow-side .ss-grain{
  position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.06;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.shadow-side .ss-kick{
  font-family:ui-monospace,'Courier New',monospace;font-size:.68rem;letter-spacing:.24em;
  text-transform:uppercase;color:#c85a3c;margin:0 0 16px;
}
.shadow-side .ss-head{
  font-family:Georgia,serif;font-size:2rem;line-height:1.18;font-weight:500;color:#f0d9c2;
  margin:0 0 6px;letter-spacing:.01em;
}
.shadow-side .ss-head em{font-style:italic;color:#e8b06a}
.shadow-side .ss-moon-wrap{display:flex;justify-content:center;margin:24px 0 12px}
.shadow-side .ss-moon-wrap canvas{filter:drop-shadow(0 4px 40px rgba(200,60,40,.4))}
.shadow-side .ss-cap{
  font-family:ui-monospace,'Courier New',monospace;font-size:.6rem;letter-spacing:.2em;
  text-transform:uppercase;color:#8a5a52;margin:6px 0 22px;
}
.shadow-side .ss-body{font-size:1.08rem;line-height:1.62;color:#d8b0a8;margin:0 auto 22px;max-width:34ch}
.shadow-side .ss-body em{font-style:italic;color:#e8b06a}
.shadow-side .ss-intro{max-width:36ch}
.shadow-side .ss-acts{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:8px}
.shadow-side .ss-descend{
  font-family:ui-monospace,'Courier New',monospace;font-size:.92rem;letter-spacing:.14em;
  color:#0a0308;background:linear-gradient(180deg,#f0c874,#d0602e);border:none;border-radius:40px;
  padding:15px 40px;cursor:pointer;box-shadow:0 0 32px rgba(220,90,40,.5);transition:transform .15s ease,box-shadow .15s ease;
}
.shadow-side .ss-descend:hover{transform:translateY(-1px);box-shadow:0 0 44px rgba(220,90,40,.68)}
.shadow-side .ss-descend.small{font-size:.82rem;padding:11px 26px;margin-top:8px}
.shadow-side .ss-rise{
  font-family:ui-monospace,'Courier New',monospace;font-size:.8rem;letter-spacing:.08em;
  color:#a48a86;background:none;border:1px solid rgba(200,120,110,.28);border-radius:40px;
  padding:11px 26px;cursor:pointer;transition:color .15s ease,border-color .15s ease;
}
.shadow-side .ss-rise:hover{color:#e8cfc9;border-color:rgba(200,120,110,.5)}
.shadow-side .ss-rise.big{margin-top:34px}
.shadow-side .ss-consent{
  font-family:ui-monospace,'Courier New',monospace;font-size:.62rem;letter-spacing:.06em;
  color:#7a5a58;margin-top:22px;
}
.shadow-side .ss-space-head{margin-bottom:8px}
.shadow-side .ss-card{
  background:linear-gradient(180deg,rgba(60,18,30,.5),rgba(20,8,16,.4));
  border:1px solid rgba(200,90,60,.2);border-radius:18px;padding:24px 22px;margin:20px auto 0;
  max-width:40ch;text-align:left;box-shadow:inset 0 0 60px rgba(120,20,30,.18);
}
.shadow-side .ss-lil-head{font-family:Georgia,serif;font-size:1.32rem;font-weight:500;color:#e8b06a;margin:4px 0 12px;line-height:1.25}
.shadow-side .ss-frame{font-size:.98rem;line-height:1.58;color:#c89a94;font-style:italic;margin:0 0 16px}
.shadow-side .ss-card .ss-body{margin:0 0 14px;max-width:none;font-size:1.04rem}
.shadow-side .ss-house{color:#c89a94;font-size:.96rem}
.shadow-side .ss-soon{margin-top:30px;opacity:.86}
.shadow-side .ss-soon-list{max-width:38ch;color:#b8938c;font-size:.98rem}
/* honour reduced-motion / low-stim: calm the glow */
:root[data-motion="reduced"] .shadow-side .ss-descend{transition:none}
:root[data-motion="reduced"] .shadow-side .ss-descend:hover{transform:none}

/* ── The veil-tear · the descent ritual ────────────────────────────────
   A luminous veil covers, then tears at the seam and peels back like two
   doors of light; the ember moon flares through, sparks rise, dark beneath
   is revealed. Scoped to the shadow side; honours reduced-motion. */
.shadow-side .ss-tear{position:absolute;inset:0;z-index:40;overflow:hidden;border-radius:inherit;perspective:1200px}
.shadow-side .ss-tear-void{position:absolute;inset:0;z-index:0;opacity:0;
  background:radial-gradient(120% 90% at 50% 55%,#3a0f1e 0%,#1c0714 42%,#0a0308 78%,#050206 100%)}
.shadow-side .ss-tear-moonwrap{position:absolute;z-index:1;left:50%;top:46%;transform:translate(-50%,-46%) scale(.6);opacity:0}
.shadow-side .ss-tear-moonwrap canvas{filter:drop-shadow(0 0 52px rgba(220,90,40,.6))}
.shadow-side .ss-tear-embers{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.shadow-side .ss-ember{position:absolute;bottom:-12px;width:5px;height:5px;border-radius:50%;opacity:0;
  background:radial-gradient(circle,#ffd6a0 0%,#ff7a2e 60%,rgba(255,122,46,0) 100%)}
.shadow-side .ss-veil-half{position:absolute;inset:0;z-index:3;will-change:transform,opacity;backface-visibility:hidden;
  background:linear-gradient(180deg,#f4ead4 0%,#ead3a6 52%,#d9b88c 100%);
  box-shadow:inset 0 0 130px rgba(255,240,210,.55)}
.shadow-side .ss-veil-half.left{transform-origin:left center;
  clip-path:polygon(0 0,53% 0,47% 9%,52% 20%,46% 31%,51% 42%,47% 52%,52% 63%,46% 74%,51% 85%,47% 95%,52% 100%,0 100%)}
.shadow-side .ss-veil-half.right{transform-origin:right center;
  clip-path:polygon(53% 0,100% 0,100% 100%,52% 100%,47% 95%,51% 85%,46% 74%,52% 63%,47% 52%,51% 42%,46% 31%,52% 20%,47% 9%,53% 0)}
.shadow-side .ss-tear-seam{position:absolute;top:0;bottom:0;left:50%;width:3px;transform:translateX(-50%);z-index:4;opacity:0;
  background:linear-gradient(180deg,transparent 0%,#ffd27a 20%,#ff8a3c 50%,#ffd27a 80%,transparent 100%);
  box-shadow:0 0 30px 8px rgba(255,150,60,.8)}
.shadow-side .ss-tear-bloom{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:0;
  background:radial-gradient(circle at 50% 46%,rgba(255,240,210,.92) 0%,rgba(255,200,140,.22) 40%,transparent 70%)}
/* fire the animations once .tearing is added */
.shadow-side .ss-tear.tearing .ss-tear-void{animation:ss-void 1.2s ease forwards}
.shadow-side .ss-tear.tearing .ss-tear-moonwrap{animation:ss-moonrise 1.3s cubic-bezier(.2,.6,.2,1) forwards}
.shadow-side .ss-tear.tearing .ss-ember{animation-name:ss-emberrise;animation-timing-function:ease-out;animation-fill-mode:forwards}
.shadow-side .ss-tear.tearing .ss-veil-half{transition:transform 1.05s cubic-bezier(.55,.02,.2,1) .12s,opacity .9s ease .28s;opacity:0}
.shadow-side .ss-tear.tearing .ss-veil-half.left{transform:rotateY(-82deg) translateZ(34px)}
.shadow-side .ss-tear.tearing .ss-veil-half.right{transform:rotateY(82deg) translateZ(34px)}
.shadow-side .ss-tear.tearing .ss-tear-seam{animation:ss-seam 1.2s ease forwards}
.shadow-side .ss-tear.tearing .ss-tear-bloom{animation:ss-bloom 1.1s ease forwards}
@keyframes ss-void{0%{opacity:0}40%{opacity:.7}100%{opacity:1}}
@keyframes ss-moonrise{0%{opacity:0;transform:translate(-50%,-46%) scale(.6)}30%{opacity:1}100%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}}
@keyframes ss-seam{0%{opacity:0;transform:translateX(-50%) scaleY(.2)}18%{opacity:1;transform:translateX(-50%) scaleY(1)}55%{opacity:.5}100%{opacity:0}}
@keyframes ss-bloom{0%{opacity:0}12%{opacity:.85}45%{opacity:0}100%{opacity:0}}
@keyframes ss-emberrise{0%{opacity:0;transform:translate(0,0) scale(var(--sc,1))}15%{opacity:1}100%{opacity:0;transform:translate(var(--sx,0),-72vh) scale(calc(var(--sc,1)*.4))}}
/* the dark dawns in after the tear */
.shadow-side .ss-wrap.ss-emerging .ss-space-head,
.shadow-side .ss-wrap.ss-emerging .ss-card,
.shadow-side .ss-wrap.ss-emerging .ss-soon,
.shadow-side .ss-wrap.ss-emerging .ss-rise{animation:ss-emerge .7s ease both}
.shadow-side .ss-wrap.ss-emerging .ss-space-head{animation-delay:.02s}
.shadow-side .ss-wrap.ss-emerging .ss-card{animation-delay:.16s}
.shadow-side .ss-wrap.ss-emerging .ss-soon{animation-delay:.3s}
.shadow-side .ss-wrap.ss-emerging .ss-rise{animation-delay:.42s}
@keyframes ss-emerge{0%{opacity:0;transform:translateY(14px)}100%{opacity:1;transform:none}}
/* reduced-motion path: a calm dark wash, no violent motion */
.shadow-side .ss-tear-wash{position:absolute;inset:0;z-index:40;opacity:0;transition:opacity .5s ease;
  background:radial-gradient(120% 90% at 50% 55%,#3a0f1e 0%,#0a0308 78%,#050206 100%)}
.shadow-side .ss-tear-wash.on{opacity:1}
@media (prefers-reduced-motion: reduce){
  .shadow-side .ss-tear.tearing .ss-veil-half{transition:opacity .5s ease;transform:none!important}
  .shadow-side .ss-wrap.ss-emerging .ss-space-head,
  .shadow-side .ss-wrap.ss-emerging .ss-card,
  .shadow-side .ss-wrap.ss-emerging .ss-soon,
  .shadow-side .ss-wrap.ss-emerging .ss-rise{animation:none}
}

/* reduced-motion crossing: opacity-only (no transforms, no sparks) */
.shadow-side .ss-tear.reduced .ss-veil-sheet{position:absolute;inset:0;z-index:3;opacity:1;transition:opacity .8s ease;
  background:linear-gradient(180deg,#f4ead4 0%,#ead3a6 52%,#d9b88c 100%);box-shadow:inset 0 0 130px rgba(255,240,210,.5)}
.shadow-side .ss-tear.reduced .ss-tear-void{transition:opacity .8s ease}
.shadow-side .ss-tear.reduced .ss-tear-moonwrap{transform:translate(-50%,-50%) scale(1);opacity:0;transition:opacity .85s ease}
.shadow-side .ss-tear.reduced.go .ss-veil-sheet{opacity:0}
.shadow-side .ss-tear.reduced.go .ss-tear-void{opacity:1}
.shadow-side .ss-tear.reduced.go .ss-tear-moonwrap{opacity:1}

/* Pluto & 8th-house reading — sub-headings, tenants, emphasis */
.shadow-side .ss-card .ss-body strong{color:#e8b06a;font-weight:600}
.shadow-side .ss-kick.ss-sub{margin:18px 0 8px;color:#c88a6c}
.shadow-side .ss-tenant{margin:0 0 10px;font-size:1rem;color:#cfa39c}
.shadow-side .ss-card + .ss-card{margin-top:16px}

/* Editorial hand-drawn underline under the key word (the "actually want" touch) */
.shadow-side .ss-uword{position:relative;font-style:italic;color:#e8b06a;white-space:nowrap;display:inline-block}
.shadow-side .ss-uline{position:absolute;left:-2px;right:-2px;bottom:-.28em;width:calc(100% + 4px);height:.5em;overflow:visible;pointer-events:none}
.shadow-side .ss-uline path{stroke-dasharray:240;stroke-dashoffset:0}
:root[data-motion="full"] .shadow-side .ss-threshold .ss-uline path,
:root[data-motion="full"] .shadow-side .ss-space-head .ss-uline path{animation:ss-underline 1s cubic-bezier(.6,.02,.2,1) .35s both}
@keyframes ss-underline{from{stroke-dashoffset:240}to{stroke-dashoffset:0}}

/* Erotic synastry — partner picker chips + wires */
.shadow-side .ss-pick-cap{margin:2px 0 12px;color:#c89a94;font-size:1rem}
.shadow-side .ss-syn-people{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.shadow-side .ss-syn-pick{font-family:ui-monospace,'Courier New',monospace;font-size:.82rem;letter-spacing:.04em;
  color:#e8cfc9;background:rgba(60,18,30,.5);border:1px solid rgba(200,90,60,.32);border-radius:30px;
  padding:9px 18px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}
.shadow-side .ss-syn-pick:hover{border-color:rgba(232,176,106,.6)}
.shadow-side .ss-syn-pick.on{background:linear-gradient(180deg,#d0602e,#7a1f22);border-color:transparent;color:#fff2e0}
.shadow-side .ss-syn-host{margin-top:6px}
.shadow-side .ss-wire{margin:0 0 13px;font-size:1.04rem}
.shadow-side .ss-wire em{font-style:italic;color:#c88a6c;font-size:.94em}
.shadow-side .ss-synth{margin-top:14px;color:#e8b06a;font-style:italic}

/* Taboo asteroids — the shadow court */
.shadow-side .ss-taboo{margin:0 0 13px;font-size:1.04rem}

/* QA: guarantee 44px minimum tap targets in the shadow side (accessibility) */
.shadow-side .ss-syn-pick{min-height:44px}
.shadow-side .ss-rise{min-height:44px}
.shadow-side .ss-rise.big{min-height:48px}
.shadow-side .ss-descend.small{min-height:44px}

/* ══════════════════════════════════════════════════════════════════════
   THE THRESHOLD · the choosing — two faces, one crossing
   ══════════════════════════════════════════════════════════════════════ */
.view.threshold-view{
  background:linear-gradient(180deg,#0b0813 0%,#140d22 46%,#1c0714 100%);
  min-height:100vh;
}
.th-wrap{max-width:820px;margin:0 auto;padding:34px 18px 72px;text-align:center}
.th-kick{font-family:ui-monospace,'Courier New',monospace;font-size:.68rem;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gold,#e9c46a);opacity:.85;margin-bottom:14px}
.th-h1{font-family:var(--serif);font-weight:600;font-size:clamp(2rem,7vw,3rem);color:#f0d9c2;margin:0 0 10px;line-height:1.08}
.th-h1 .ss-uword{color:#e8b06a}
.th-lead{font-family:var(--serif);font-size:1.12rem;line-height:1.6;color:#cbb8d8;max-width:42ch;margin:0 auto 30px}
.th-doors{display:flex;gap:18px;justify-content:center;flex-wrap:wrap}
.th-door{position:relative;flex:1 1 300px;max-width:360px;text-align:center;cursor:pointer;
  border-radius:22px;padding:30px 24px 26px;overflow:hidden;transition:transform .18s var(--ease,ease),box-shadow .18s ease;
  font-family:var(--serif);color:#fff}
.th-door:hover{transform:translateY(-3px)}
.th-door-moon{display:flex;justify-content:center;margin-bottom:16px;min-height:120px;align-items:center}
.th-door-kick{font-family:ui-monospace,'Courier New',monospace;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:8px}
.th-door-h{font-family:var(--serif);font-weight:600;font-size:1.5rem;margin:0 0 8px}
.th-door-p{font-size:1rem;line-height:1.55;margin:0 auto 18px;max-width:26ch;opacity:.92}
.th-door-cta{display:inline-block;font-family:ui-monospace,'Courier New',monospace;font-size:.82rem;
  letter-spacing:.1em;padding:12px 24px;border-radius:40px;min-height:44px;line-height:20px}
/* light door — dawn */
.th-light{background:radial-gradient(120% 100% at 50% 30%,#f0d9a6 0%,#e6b877 42%,#c98a5a 78%,#7a5a3e 100%);
  box-shadow:0 18px 50px rgba(220,180,110,.28),inset 0 0 60px rgba(255,240,200,.3)}
.th-light .th-door-kick{color:#7a4a20}
.th-light .th-door-h{color:#3a2410}
.th-light .th-door-p{color:#4a3418}
.th-light .th-door-cta{background:#2a1a08;color:#f0d9a6}
/* shadow door — ember */
.th-shadow{background:radial-gradient(120% 100% at 50% 34%,#3a0f1e 0%,#1c0714 48%,#0a0308 100%);
  border:1px solid rgba(200,80,50,.28);box-shadow:0 18px 50px rgba(120,20,30,.4),inset 0 0 70px rgba(120,20,30,.3)}
.th-shadow .th-door-moon canvas{filter:drop-shadow(0 4px 34px rgba(200,60,40,.5))}
.th-shadow .th-door-kick{color:#c85a3c}
.th-shadow .th-door-h{color:#f0d9c2}
.th-shadow .th-door-p{color:#d8b0a8}
.th-shadow .th-door-cta{background:linear-gradient(180deg,#f0c874,#d0602e);color:#0a0308}
.th-foot{font-family:ui-monospace,'Courier New',monospace;font-size:.64rem;letter-spacing:.06em;
  color:#8a6f80;margin-top:30px}
/* the doorway band on Today */
.th-band{display:flex;align-items:center;gap:14px;width:100%;text-align:left;cursor:pointer;
  margin:8px 0 4px;padding:16px 18px;border-radius:16px;
  background:linear-gradient(100deg,rgba(233,196,106,.10),rgba(120,20,30,.14));
  border:1px solid rgba(200,120,90,.22);transition:border-color .15s ease,transform .15s ease}
.th-band:hover{border-color:rgba(232,176,106,.5);transform:translateY(-1px)}
.th-band-tx{flex:1;display:flex;flex-direction:column;gap:2px}
.th-band-k{font-family:var(--serif);font-size:1.1rem;color:var(--gold-soft,#e8b06a);font-weight:600}
.th-band-s{font-size:.86rem;color:var(--muted,#a49dc9)}
.th-band-arrow{font-size:1.5rem;color:#c85a3c;flex:0 0 auto}

/* Shadow reading share button */
.shadow-side .ss-share{margin-top:14px;font-family:ui-monospace,'Courier New',monospace;font-size:.78rem;
  letter-spacing:.08em;color:#e8b06a;background:rgba(200,90,60,.12);border:1px solid rgba(200,90,60,.34);
  border-radius:30px;padding:10px 20px;min-height:44px;cursor:pointer;transition:background .15s ease,border-color .15s ease}
.shadow-side .ss-share:hover{background:rgba(200,90,60,.22);border-color:rgba(232,176,106,.6)}

/* Descent of the day — the nightly return hook */
.shadow-side .ss-dod{border-color:rgba(232,176,106,.28)}
.shadow-side .ss-dod-moon{margin:0 0 16px}
.shadow-side .ss-dod-prompt{font-family:var(--serif,Georgia),serif;font-style:italic;font-size:1.6rem;line-height:1.35;
  color:#f0d9c2;text-align:center;margin:14px 0 16px;letter-spacing:.01em}
.shadow-side .ss-dod-note{font-size:.98rem;color:#c89a94;margin:0}

/* How to love them — the shadow-crave facet */
.love-crave{background:linear-gradient(180deg,rgba(60,18,30,.5),rgba(20,8,16,.35));border:1px solid rgba(200,90,60,.28)}
.love-crave h3{color:#e8b06a}
.love-crave .ud-take strong{color:#e8b06a}
.love-crave-teaser{border:1px dashed rgba(200,90,60,.4);text-align:center}
.love-crave-teaser em{color:#e8b06a;font-style:italic}

/* ══════════════════════════════════════════════════════════════════════
   POLISH PASS · readability + tap + gated motion (v206)
   Brighter dim text (AMOLED-safe), bigger glowing buttons, stronger nav,
   and "alive" ambient motion — gated to full-motion so ND default stays calm.
   ══════════════════════════════════════════════════════════════════════ */

/* — Readability: lift the dim text ~20-30% — */
.shadow-side .ss-body{color:#e4c0b8}
.shadow-side .ss-cap{color:#c08a80}
.shadow-side .ss-consent{color:#b294a0}
.shadow-side .ss-frame{color:#dca69e}
.shadow-side .ss-house{color:#d8a69e}
.shadow-side .ss-soon-list{color:#d9a79e}
.shadow-side .ss-dod-note{color:#d8a69e}
.shadow-side .ss-tenant{color:#e2b4aa}
.shadow-side .ss-wire em{color:#d89a7c}
.shadow-side .ss-cap,.shadow-side .ss-kick{opacity:1}
.shadow-side .ss-kick.ss-sub{color:#d88a6c}
.th-lead{color:#e0cfe8}
.th-kick{opacity:1;color:#f0d08a}
.th-foot{color:#b596a4}
.th-band-s{color:#c6bfda}

/* — Bigger, glowier action buttons — */
.shadow-side .ss-descend{min-height:54px;padding:17px 46px;border-radius:44px;font-size:1rem;letter-spacing:.16em;
  box-shadow:0 0 44px rgba(220,90,40,.55),0 8px 22px rgba(0,0,0,.4)}
.shadow-side .ss-descend:hover{box-shadow:0 0 56px rgba(220,90,40,.72),0 8px 22px rgba(0,0,0,.45)}
.th-door-cta{min-height:52px;padding:16px 32px;border-radius:44px;font-size:.86rem}
.th-shadow .th-door-cta{box-shadow:0 0 34px rgba(220,90,40,.5)}
.th-light .th-door-cta{box-shadow:0 6px 20px rgba(120,70,20,.35)}

/* — Stronger bottom nav (bigger icons, brighter/bolder active) — */
@media(max-width:820px){
  .bottom-link{color:rgba(236,232,255,.74);font-size:.66rem}
  .bottom-link .bl-ic svg{width:25px;height:25px;stroke-width:1.7}
  .bottom-link.active{color:var(--gold);font-weight:600}
  .bottom-link.active .bl-ic{filter:drop-shadow(0 0 8px rgba(233,196,106,.6))}
}

/* — "Alive" ambient motion · FULL-MOTION ONLY (opt-in; ND default stays still) — */
:root[data-motion="full"] .view.shadow-side::before,
:root[data-motion="full"] .view.threshold-view::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(58% 40% at 50% 26%,rgba(200,80,45,.16),transparent 70%);
  animation:ss-breathe 7.5s ease-in-out infinite}
@keyframes ss-breathe{0%,100%{opacity:.45}50%{opacity:1}}
:root[data-motion="full"] .shadow-side .ss-moon-wrap canvas,
:root[data-motion="full"] .th-shadow .th-door-moon canvas{animation:ss-moonfloat 6.5s ease-in-out infinite}
@keyframes ss-moonfloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
/* drifting ambient embers (injected only in full-motion) */
.ss-ambient{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.ss-ambient .ss-amb-ember{position:absolute;bottom:-14px;width:5px;height:5px;border-radius:50%;opacity:0;
  background:radial-gradient(circle,#ffd6a0 0%,#ff7a2e 60%,rgba(255,122,46,0) 100%);
  animation-name:ss-amb-rise;animation-timing-function:ease-in;animation-iteration-count:infinite}
@keyframes ss-amb-rise{0%{opacity:0;transform:translate(0,0) scale(var(--sc,1))}
  12%{opacity:.8}88%{opacity:.5}100%{opacity:0;transform:translate(var(--sx,0),-108vh) scale(calc(var(--sc,1)*.5))}}
@media (prefers-reduced-motion: reduce){
  :root .view.shadow-side::before,:root .view.threshold-view::before{animation:none;opacity:.6}
  .shadow-side .ss-moon-wrap canvas,.th-shadow .th-door-moon canvas{animation:none}
  .ss-ambient{display:none}
}

/* The depth slider — additive "how deep tonight" atmosphere dial */
/* deepen in COLOR — saturated oxblood → crimson → plum-void, not a grey dim.
   Transparent through the centre so the ember moon still glows through. */
.shadow-side .ss-depth-veil{position:absolute;inset:0;z-index:0;pointer-events:none;transition:opacity .25s ease;
  background:radial-gradient(125% 96% at 50% 30%,
    rgba(120,20,44,0) 0%,
    rgba(96,12,36,.42) 38%,
    rgba(66,8,30,.72) 62%,
    rgba(34,5,24,.9) 82%,
    rgba(12,4,18,1) 100%)}
.shadow-side .ss-ambient{z-index:1}
.shadow-side .ss-depthc .ss-depth-row{display:flex;align-items:center;gap:14px;margin-bottom:10px}
.shadow-side .ss-depth-moon{flex:0 0 auto;filter:drop-shadow(0 2px 16px rgba(200,60,40,.35))}
.shadow-side .ss-depth-tx{display:flex;flex-direction:column;gap:2px}
.shadow-side .ss-depth-tx .ss-kick{margin:0}
.shadow-side .ss-depth-word{font-family:var(--serif),Georgia,serif;font-style:italic;font-size:1.35rem;color:#e8b06a;line-height:1.1}
.shadow-side .ss-depth-range{width:100%;-webkit-appearance:none;appearance:none;height:7px;border-radius:7px;outline:none;margin:6px 0 2px;
  background:linear-gradient(90deg,#f0c874,#d0602e 38%,#7a1f22 72%,#0e0a12)}
.shadow-side .ss-depth-range::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;border-radius:50%;
  background:radial-gradient(circle at 35% 32%,#f6d283,#7a1f22 68%,#0e0a12);border:1px solid rgba(255,210,120,.6);
  box-shadow:0 0 16px rgba(220,90,40,.75);cursor:pointer}
.shadow-side .ss-depth-range::-moz-range-thumb{width:28px;height:28px;border-radius:50%;
  background:radial-gradient(circle at 35% 32%,#f6d283,#7a1f22 68%,#0e0a12);border:1px solid rgba(255,210,120,.6);
  box-shadow:0 0 16px rgba(220,90,40,.75);cursor:pointer}

/* depth voice hint */
.shadow-side .ss-depth-hint{margin:10px 0 0;font-family:ui-monospace,'Courier New',monospace;font-size:.72rem;
  letter-spacing:.06em;color:#d07a5c}

/* Sunlit theme: turn the flagship hero card into a warm dawn (bright, readable) */
:root[data-theme="light"] .th-sky{
  background:radial-gradient(120% 90% at 78% 8%, rgba(255,201,110,.55), transparent 48%),
    linear-gradient(168deg,#fff4de 0%,#ffe1ba 52%,#f6c99f 118%) !important}
:root[data-theme="light"] .th-scrim{
  background:linear-gradient(0deg,rgba(255,246,228,.92) 4%,rgba(255,246,228,.42) 40%,transparent 72%)}
:root[data-theme="light"] .th-title{color:#3a2a12;text-shadow:0 1px 12px rgba(255,222,150,.5)}
:root[data-theme="light"] .th-kicker{color:#9a6a20}
:root[data-theme="light"] .th-line{color:#5c4728;text-shadow:none}
:root[data-theme="light"] .th-cta{color:#fff;background:linear-gradient(180deg,#e0932e,#c06a1e);box-shadow:0 6px 18px rgba(200,120,40,.34)}
:root[data-theme="light"] .th-eclipse{opacity:.42}
:root[data-theme="light"] .th-stars{opacity:.2}

/* Sunlit theme — warm the chart views (wheel, tiers, first-cast reveal) */
:root[data-theme="light"] .wheel-wrap{background:radial-gradient(circle at 50% 45%,rgba(255,235,198,.75),rgba(246,231,208,.45))}
:root[data-theme="light"] .chart-tier{background:rgba(255,247,230,.6);border-color:rgba(176,125,43,.2)}
:root[data-theme="light"] .chart-tier.open{border-color:rgba(176,125,43,.42)}
:root[data-theme="light"] .chart-reveal-overlay{background:radial-gradient(circle at 50% 40%,rgba(255,241,216,.98),rgba(250,229,203,.99))}
:root[data-theme="light"] .cr-card{background:linear-gradient(160deg,rgba(224,147,46,.16),rgba(122,95,199,.10));border-color:rgba(176,125,43,.4);box-shadow:0 6px 20px rgba(150,110,40,.16)}
:root[data-theme="light"] .th-cta,:root[data-theme="light"] .cr-go .btn-primary{color:#fff}

/* ══════════════════════════════════════════════════════════════════════
   GOLDEN HOUR · the light side with personality
   Layered sunrise · moon-as-lightsource · soft elevation · faint celestial
   geometry · linen grain · ceramic buttons · breathing type.
   "Morning light through linen; an old astronomy book on warm marble."
   ══════════════════════════════════════════════════════════════════════ */
:root[data-theme="light"]{ --sh-gold:0 10px 28px rgba(210,150,60,.28); }
/* layered golden-hour background — ivory into champagne, amber sunrise glow */
:root[data-theme="light"] body{
  background:
    radial-gradient(1200px 760px at 82% -16%, rgba(255,193,92,.42), transparent 58%),
    radial-gradient(820px 560px at 8% 4%, rgba(255,228,180,.34), transparent 55%),
    radial-gradient(1200px 680px at 50% 120%, rgba(150,166,104,.22), transparent 60%),
    linear-gradient(180deg,#fdf8ee 0%,#f8efdb 50%,#f1e7cd 82%,#ece8cd 100%);
}
/* linen / paper grain — barely there */
:root[data-theme="light"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.055;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
/* faint celestial geometry — orbital rings, only if you really look */
:root[data-theme="light"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='560' height='560' fill='none' stroke='%23b07d2b' stroke-opacity='0.10' stroke-width='1'%3E%3Ccircle cx='280' cy='280' r='110'/%3E%3Ccircle cx='280' cy='280' r='175'/%3E%3Ccircle cx='280' cy='280' r='245'/%3E%3Ccircle cx='280' cy='90' r='7' fill='%23b07d2b' fill-opacity='0.1' stroke='none'/%3E%3Cline x1='40' y1='280' x2='520' y2='280'/%3E%3Cline x1='280' y1='40' x2='280' y2='520'/%3E%3C/svg%3E") no-repeat 84% 10%;
  background-size:560px 560px;
}
:root[data-theme="light"] #main{position:relative;z-index:1}
/* daylight: the stars nearly vanish (they blaze again at night — same sky) */
:root[data-theme="light"] #starfield{opacity:.1}

/* the moon as a light source — warm bloom across the hero, brighter near it */
:root[data-theme="light"] .th-sky{
  background:
    radial-gradient(58% 46% at 78% 12%, rgba(255,238,196,.95), rgba(255,216,142,.55) 40%, transparent 74%),
    radial-gradient(135% 104% at 78% 8%, rgba(255,201,110,.5), transparent 54%),
    linear-gradient(168deg,#fff6e4 0%,#ffe7c4 54%,#f7d0a6 120%) !important}

/* soft ambient elevation + translucent warm edges (not Material drop shadow) */
:root[data-theme="light"] .card{
  box-shadow:0 2px 5px rgba(150,110,50,.05), 0 20px 44px -20px rgba(190,140,70,.30);
  border-color:rgba(190,150,90,.20);
  background:linear-gradient(180deg,rgba(255,252,246,.9),rgba(255,249,238,.82));
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}

/* ceramic / polished-amber primary button */
:root[data-theme="light"] .btn-primary{
  background:radial-gradient(120% 82% at 30% 16%, rgba(255,242,206,.92), transparent 46%),linear-gradient(180deg,#e2a747,#c9822e);
  color:#3a2408;border-radius:20px;
  box-shadow:0 1px 0 rgba(255,242,206,.6) inset,0 -6px 14px rgba(150,90,20,.18) inset,0 10px 26px rgba(200,130,50,.32);
  text-shadow:0 1px 0 rgba(255,240,200,.45)}
:root[data-theme="light"] .btn-primary:hover{box-shadow:0 1px 0 rgba(255,242,206,.7) inset,0 -6px 14px rgba(150,90,20,.2) inset,0 14px 32px rgba(200,130,50,.42)}

/* typography breathes a little more in the light */
:root[data-theme="light"] .th-title{line-height:1.12}
:root[data-theme="light"] .page-head h1{letter-spacing:.004em}

/* ══════════════════════════════════════════════════════════════════════
   THE GREEN · daylight, growing things, and the Davison's Taurus/Earth bond.
   A dusty olive-sage — the quiet second voice beside the gold.
   ══════════════════════════════════════════════════════════════════════ */
:root{ --sage:#8a9160; --sage-soft:#aab081; }
:root[data-theme="light"]{ --sage:#7c8150; --sage-soft:#9aa06a; }
:root[data-theme="rich"]{ --sage:#8f9663; }

/* the Grow tab is where things grow — living sage instead of gold */
.bottom-link[data-view="grow"].active{color:var(--sage)}
.bottom-link[data-view="grow"].active .bl-ic{filter:drop-shadow(0 0 8px rgba(138,145,96,.6))}
.nav-link[data-view="grow"].active{color:var(--sage);border-color:var(--sage)}
@media(max-width:820px){ .nav-link[data-view="grow"].active{box-shadow:inset 3px 0 0 var(--sage)} }

/* the Grow page — living accents (section labels & the first-word of the title) */
#view-grow .hub-cat{color:var(--sage)}
:root[data-theme="light"] #view-grow .page-head h1{
  background:linear-gradient(120deg,#5c6a2e,#8a6a28);-webkit-background-clip:text;background-clip:text;color:transparent}
/* a sage cast on the growth/course cards in daylight */
:root[data-theme="light"] #view-grow .feature .feature-glyph{color:var(--sage)}

/* let the green breathe: a faint sage sprig growing among the orbital rings */
:root[data-theme="light"] body::after{
  background:
    url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27560%27%20fill%3D%27none%27%20stroke%3D%27%23b07d2b%27%20stroke-opacity%3D%270.10%27%20stroke-width%3D%271%27%3E%3Ccircle%20cx%3D%27280%27%20cy%3D%27280%27%20r%3D%27110%27%2F%3E%3Ccircle%20cx%3D%27280%27%20cy%3D%27280%27%20r%3D%27175%27%2F%3E%3Ccircle%20cx%3D%27280%27%20cy%3D%27280%27%20r%3D%27245%27%2F%3E%3Ccircle%20cx%3D%27280%27%20cy%3D%2790%27%20r%3D%277%27%20fill%3D%27%23b07d2b%27%20fill-opacity%3D%270.10%27%20stroke%3D%27none%27%2F%3E%3Cline%20x1%3D%2740%27%20y1%3D%27280%27%20x2%3D%27520%27%20y2%3D%27280%27%2F%3E%3Cline%20x1%3D%27280%27%20y1%3D%2740%27%20x2%3D%27280%27%20y2%3D%27520%27%2F%3E%3C%2Fsvg%3E") no-repeat 86% 9%,
    url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27300%27%20height%3D%27300%27%3E%3Cg%20stroke%3D%27%237c8150%27%20stroke-opacity%3D%270.24%27%20stroke-width%3D%272%27%20fill%3D%27none%27%20stroke-linecap%3D%27round%27%3E%3Cpath%20d%3D%27M150%2C290%20C150%2C242%20145%2C206%20150%2C168%20C154%2C140%20150%2C118%20150%2C94%27%2F%3E%3Cpath%20d%3D%27M150%2C240%20C132%2C238%20120%2C228%20112%2C212%27%2F%3E%3Cpath%20d%3D%27M150%2C208%20C168%2C206%20180%2C196%20188%2C180%27%2F%3E%3Cpath%20d%3D%27M150%2C178%20C134%2C176%20123%2C167%20116%2C152%27%2F%3E%3Cpath%20d%3D%27M150%2C150%20C166%2C148%20177%2C139%20184%2C124%27%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%27%237c8150%27%20fill-opacity%3D%270.15%27%3E%3Cellipse%20cx%3D%27108%27%20cy%3D%27208%27%20rx%3D%2713%27%20ry%3D%276%27%20transform%3D%27rotate%28-35%20108%20208%29%27%2F%3E%3Cellipse%20cx%3D%27192%27%20cy%3D%27176%27%20rx%3D%2713%27%20ry%3D%276%27%20transform%3D%27rotate%2835%20192%20176%29%27%2F%3E%3Cellipse%20cx%3D%27112%27%20cy%3D%27148%27%20rx%3D%2712%27%20ry%3D%275.5%27%20transform%3D%27rotate%28-35%20112%20148%29%27%2F%3E%3Cellipse%20cx%3D%27188%27%20cy%3D%27120%27%20rx%3D%2712%27%20ry%3D%275.5%27%20transform%3D%27rotate%2835%20188%20120%29%27%2F%3E%3Cellipse%20cx%3D%27150%27%20cy%3D%2790%27%20rx%3D%277%27%20ry%3D%2711%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") no-repeat 9% 96%;
  background-size:520px 520px, 300px 300px;
}

/* Companion — drag to move · drop in the bin to tuck away */
.companion.dragging{cursor:grabbing;transition:none;z-index:62}
.companion.dragging .comp-sprite{animation:none!important;transform:scale(1.06)}
.companion.over-trash .comp-sprite{opacity:.55;transform:scale(.82);filter:drop-shadow(0 4px 14px rgba(200,60,40,.5))}
.companion.comp-poof{animation:comp-poof .3s ease forwards;pointer-events:none}
@keyframes comp-poof{to{opacity:0;transform:scale(.35) translateY(12px)}}
.comp-trash{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));transform:translateX(-50%) scale(.82);
  z-index:59;display:flex;flex-direction:column;align-items:center;gap:3px;width:92px;padding:12px 0 10px;border-radius:20px;
  color:#c88a80;background:radial-gradient(circle at 50% 38%,rgba(60,18,30,.92),rgba(20,8,16,.94));
  border:1px dashed rgba(200,90,60,.5);opacity:0;pointer-events:none;
  transition:opacity .2s ease,transform .2s ease,color .15s,border-color .15s,background .15s}
.comp-trash.show{opacity:1;transform:translateX(-50%) scale(1)}
.comp-trash.hot{color:#f4e2cf;border-color:#e8b06a;border-style:solid;
  background:radial-gradient(circle at 50% 38%,rgba(130,22,34,.96),rgba(45,9,18,.96));transform:translateX(-50%) scale(1.14)}
.comp-trash-lbl{font-family:ui-monospace,'Courier New',monospace;font-size:.58rem;letter-spacing:.08em}

/* Live Sky — point at the real sky */
.ls-stage{position:relative;max-width:520px;margin:0 auto;border-radius:20px;overflow:hidden;
  border:1px solid rgba(233,196,106,.22);box-shadow:0 18px 50px rgba(0,0,0,.5)}
.ls-canvas{display:block;width:100%;touch-action:none;cursor:grab;background:#05060f}
.ls-canvas:active{cursor:grabbing}
.ls-reticle{position:absolute;left:50%;top:50%;width:44px;height:44px;transform:translate(-50%,-50%);pointer-events:none;
  border:1.5px solid rgba(233,196,106,.55);border-radius:50%}
.ls-reticle::before,.ls-reticle::after{content:"";position:absolute;background:rgba(233,196,106,.55)}
.ls-reticle::before{left:50%;top:-8px;width:1px;height:8px;transform:translateX(-50%)}
.ls-reticle::after{top:50%;left:-8px;height:1px;width:8px;transform:translateY(-50%)}
.ls-readout{position:absolute;left:0;right:0;bottom:0;padding:10px 14px;text-align:center;
  font-family:ui-monospace,'Courier New',monospace;font-size:.8rem;letter-spacing:.04em;color:#f0d9a6;
  background:linear-gradient(0deg,rgba(6,6,16,.82),transparent)}
.ls-controls{max-width:520px;margin:14px auto 0;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.ls-point{font-size:1rem}
.ls-hint{max-width:34ch}
.sky-livecta{text-align:center;margin:18px auto 0;max-width:400px}
.sky-livecta .btn-primary{font-size:1rem}
.sky-livecta p{margin:8px 0 0}

/* Secret passages — pager dots + one-time whisper for the hidden swipe ribbon */
.passage-dots{position:fixed;left:50%;bottom:calc(66px + env(safe-area-inset-bottom));transform:translateX(-50%);
  z-index:29;display:flex;align-items:center;gap:7px;padding:6px 12px 6px 12px;border-radius:22px;
  background:rgba(20,18,40,.5);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);
  border:1px solid rgba(233,196,106,.16);opacity:0;pointer-events:none;transition:opacity .3s ease}
.passage-dots.show{opacity:1;pointer-events:auto}
.passage-dot{width:7px;height:7px;border-radius:50%;border:none;padding:0;cursor:pointer;
  background:rgba(233,196,106,.32);transition:transform .2s ease,background .2s ease,box-shadow .2s ease}
.passage-dot.on{background:var(--gold,#e9c46a);transform:scale(1.5);box-shadow:0 0 8px rgba(233,196,106,.6)}
.passage-label{font-family:ui-monospace,'Courier New',monospace;font-size:.58rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold-soft,#f0d999);margin-left:5px;opacity:.85;white-space:nowrap}
.passage-hint{position:fixed;left:50%;bottom:calc(104px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(6px);
  z-index:30;padding:9px 16px;border-radius:20px;font-size:.8rem;color:#f0d9a6;text-align:center;
  background:rgba(20,18,40,.85);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);
  border:1px solid rgba(233,196,106,.28);opacity:0;transition:opacity .35s ease,transform .35s ease;pointer-events:none;max-width:80vw}
.passage-hint.show{opacity:1;transform:translateX(-50%) translateY(0)}
:root[data-theme="light"] .passage-dots{background:rgba(255,250,240,.72);border-color:rgba(176,125,43,.22)}
:root[data-theme="light"] .passage-dot{background:rgba(176,125,43,.32)}
:root[data-theme="light"] .passage-dot.on{background:#b07d2b;box-shadow:0 0 8px rgba(176,125,43,.5)}
:root[data-theme="light"] .passage-label{color:#8a5f1f}
:root[data-theme="light"] .passage-hint{background:rgba(255,250,240,.92);color:#5c4728;border-color:rgba(176,125,43,.3)}

/* ============================================================================
 * The descent birth form — taken IN the dark, styled ember, never bounced to
 * the blue. Overrides the light-theme .field/input/select chrome so the whole
 * intake reads as candlelit oxblood, not a bright form dropped into the shadow.
 * ==========================================================================*/
.shadow-side .ss-birth{max-width:44ch}
.shadow-side .ss-birth .ss-frame{margin-bottom:20px}
.shadow-side .ss-birth-form .field{margin:0 0 15px;text-align:left}
.shadow-side .ss-birth-form .row{display:flex;gap:12px}
.shadow-side .ss-birth-form .row .field{flex:1}
.shadow-side .ss-birth-form label{display:block;font-size:.82rem;letter-spacing:.02em;
  color:#d8a89e;margin:0 0 6px;font-weight:500}
.shadow-side .ss-birth-form input[type="text"],
.shadow-side .ss-birth-form input[type="date"],
.shadow-side .ss-birth-form input[type="time"],
.shadow-side .ss-birth-form select{
  width:100%;box-sizing:border-box;padding:11px 13px;font-size:.98rem;
  background:rgba(30,12,18,.72);color:#f0d8c8;
  border:1px solid rgba(200,90,60,.32);border-radius:12px;
  -webkit-appearance:none;appearance:none;
}
.shadow-side .ss-birth-form input::placeholder{color:#a07068;opacity:.75}
.shadow-side .ss-birth-form input:focus,
.shadow-side .ss-birth-form select:focus{
  outline:none;border-color:rgba(220,110,70,.7);
  box-shadow:0 0 0 3px rgba(200,80,50,.22),inset 0 0 24px rgba(120,30,30,.2);
}
/* date/time pickers show their glyphs on dark */
.shadow-side .ss-birth-form input[type="date"]::-webkit-calendar-picker-indicator,
.shadow-side .ss-birth-form input[type="time"]::-webkit-calendar-picker-indicator{
  filter:invert(1) sepia(.4) saturate(3) hue-rotate(-10deg);opacity:.8;cursor:pointer;
}
.shadow-side .ss-birth-form .field.checkbox label{
  display:flex;gap:9px;align-items:flex-start;font-size:.82rem;color:#c89a94;
  line-height:1.4;cursor:pointer;font-weight:400;
}
.shadow-side .ss-birth-form .field.checkbox input{width:auto;margin-top:2px;accent-color:#c85a3c}
.shadow-side .ss-birth-form .place-search{display:flex;gap:8px}
.shadow-side .ss-birth-form .place-search input{flex:1}
.shadow-side .ss-birth-form .place-search .btn-ghost{
  flex:none;padding:0 16px;font-size:.86rem;letter-spacing:.04em;cursor:pointer;
  background:rgba(60,20,26,.6);color:#e8b06a;
  border:1px solid rgba(200,90,60,.4);border-radius:12px;
}
.shadow-side .ss-birth-form .place-search .btn-ghost:hover{
  background:rgba(90,30,34,.72);border-color:rgba(220,110,70,.62);
}
.shadow-side .ss-birth-form .place-results{margin-top:6px}
.shadow-side .ss-birth-form .place-results .place-item{
  display:block;width:100%;text-align:left;padding:9px 12px;font-size:.9rem;
  background:rgba(30,12,18,.6);color:#e6cbbf;
  border:1px solid rgba(200,90,60,.22);border-radius:10px;margin:0 0 6px;cursor:pointer;
}
.shadow-side .ss-birth-form .place-results .place-item:hover{
  background:rgba(70,24,30,.7);border-color:rgba(220,110,70,.5);
}
.shadow-side .ss-birth-form .place-results .muted{color:#b08a84;font-size:.86rem;padding:4px 2px}
.shadow-side .ss-birth-form .coords,
.shadow-side .ss-birth-form .tz-hint{color:#b08a84;font-size:.78rem;margin-top:5px}
.shadow-side .ss-birth-form .muted{color:#a5817b}
/* pull-from-a-saved-chart chips, in oxblood */
.shadow-side .ss-birth-form .library-bar{margin:0 0 16px;text-align:left}
.shadow-side .ss-birth-form .lib-label{display:block;color:#c89a94;margin:0 0 8px}
.shadow-side .ss-birth-form .lib-chips{display:flex;flex-wrap:wrap;gap:8px}
.shadow-side .ss-birth-form .lib-chip{
  padding:8px 15px;font-size:.86rem;cursor:pointer;
  background:rgba(50,18,24,.62);color:#e6cbbf;
  border:1px solid rgba(200,90,60,.3);border-radius:40px;
}
.shadow-side .ss-birth-form .lib-chip.self{color:#e8b06a;border-color:rgba(220,140,70,.5)}
.shadow-side .ss-birth-form .lib-chip:hover{background:rgba(80,28,32,.72);border-color:rgba(220,110,70,.58)}
.shadow-side .ss-birth-msg{color:#f0a890;font-size:.9rem;margin:4px 0 10px;min-height:0;text-align:left}
.shadow-side .ss-birth-msg:empty{margin:0}
.shadow-side .ss-birth .ss-descend{margin-top:6px}

/* ============================================================================
 * On-the-cusp safeguard — exact degrees + a plain note when a placement sits
 * within a degree of a sign line (where timezone / birth-time accuracy decides
 * the sign). Shown in the chart reveal and the Big Three.
 * ==========================================================================*/
.cr-card .cr-exact{display:block;font-size:.72rem;letter-spacing:.04em;opacity:.72;margin-top:3px}
.cr-card .cr-cusp{display:block;font-size:.66rem;letter-spacing:.02em;margin-top:5px;
  color:#e8b06a;background:rgba(200,140,60,.14);border:1px solid rgba(200,140,60,.3);
  border-radius:20px;padding:2px 9px}
.cr-card.cr-oncusp{box-shadow:0 0 0 1px rgba(200,140,60,.4),0 6px 22px rgba(0,0,0,.28)}
.cr-cuspnote{font-size:.86rem;line-height:1.5;margin:12px auto 0;max-width:34ch;
  color:#d8b489;background:rgba(200,140,60,.1);border:1px solid rgba(200,140,60,.24);
  border-radius:14px;padding:11px 15px}
.cr-clock{font-size:.76rem;letter-spacing:.03em;opacity:.6;margin:9px 0 0}
.big-card .bc-exact{font-size:.74rem;opacity:.66;margin-top:2px}
.big-card .bc-cusp{display:inline-block;font-size:.68rem;margin-top:6px;color:var(--gold,#c8963c);
  background:rgba(200,150,60,.12);border:1px solid rgba(200,150,60,.28);
  border-radius:20px;padding:3px 10px;line-height:1.3;text-decoration:none}
.big-card a.bc-cusp:hover{background:rgba(200,150,60,.2);text-decoration:none}
.big-card.bc-oncusp{border-color:rgba(200,150,60,.42)}
:root[data-theme="light"] .big-card .bc-cusp{color:#8a5f1f;background:rgba(176,125,43,.12);border-color:rgba(176,125,43,.3)}
:root[data-theme="light"] .cr-cuspnote{color:#6b4e22;background:rgba(176,125,43,.1);border-color:rgba(176,125,43,.26)}

/* ============================================================================
 * Birth-form clarity — year tip + plain-language timezone. Reduces the two most
 * common points of confusion: scrolling for the year, and "which timezone?".
 * ==========================================================================*/
.field-hint{margin-top:6px;line-height:1.4;font-size:.78rem}
.tz-field .tz-sub{font-weight:400;font-size:.82em}
.tz-pretty{display:none;margin:2px 0 8px;font-size:.98rem;font-weight:600;
  color:var(--gold,#c8963c);letter-spacing:.01em}
.tz-pretty.show{display:block}
.tz-field .tz-hint{line-height:1.45;margin-top:6px}
:root[data-theme="light"] .tz-pretty{color:#8a5f1f}
/* in the shadow birth form, tint these to the ember palette */
.shadow-side .ss-birth-form .field-hint{color:#b8938c}
.shadow-side .ss-birth-form .tz-pretty{color:#e8b06a}
.shadow-side .ss-birth-form .tz-pretty.show{display:block}

/* ============================================================================
 * Guide & tips — a calm, revisitable help centre (native <details>), plus the
 * one-time coach note above the birth form. Low-stim: no auto-motion, generous
 * spacing, high contrast.
 * ==========================================================================*/
.guide-list{max-width:44ch;margin:8px auto 0;display:flex;flex-direction:column;gap:10px}
.guide-item{border:1px solid var(--line,rgba(120,120,160,.22));border-radius:14px;
  background:var(--card,rgba(255,255,255,.03));overflow:hidden}
.guide-item summary{list-style:none;cursor:pointer;padding:15px 16px;display:flex;
  align-items:center;gap:11px;font-weight:600;font-size:1rem;line-height:1.35}
.guide-item summary::-webkit-details-marker{display:none}
.guide-item summary::after{content:"+";margin-left:auto;font-size:1.3rem;opacity:.5;
  font-weight:400;transition:transform .18s ease}
.guide-item[open] summary::after{content:"–"}
.guide-item .gi-icon{font-size:1.2rem;flex:none}
.guide-item .gi-a{padding:0 16px 16px;line-height:1.6;font-size:.94rem;opacity:.92}
.guide-item .gi-a strong{font-weight:650}
.guide-item .gi-a em{font-style:italic;opacity:.9}
.guide-link,.guide-item .gi-a a{color:var(--gold,#c8963c);text-decoration:underline}
.guide-foot{max-width:40ch;margin:20px auto 0;text-align:center;font-size:.86rem}
:root[data-motion="reduced"] .guide-item summary::after{transition:none}

/* the one-time form coach note */
.form-coach{position:relative;margin:0 0 16px;padding:14px 16px 14px;border-radius:14px;
  background:linear-gradient(180deg,rgba(200,150,60,.12),rgba(200,150,60,.06));
  border:1px solid rgba(200,150,60,.3)}
.form-coach .fc-title{font-weight:650;font-size:.94rem;margin:0 0 5px;color:var(--gold,#c8963c)}
.form-coach .fc-body{margin:0 0 8px;font-size:.86rem;line-height:1.5;opacity:.95}
.form-coach .fc-link{font-size:.86rem;font-weight:600;color:var(--gold,#c8963c);text-decoration:none}
.form-coach .fc-link:hover{text-decoration:underline}
.form-coach .fc-close{position:absolute;top:8px;right:10px;border:none;background:none;
  font-size:1.3rem;line-height:1;cursor:pointer;color:inherit;opacity:.55;padding:2px 6px}
.form-coach .fc-close:hover{opacity:1}
:root[data-theme="light"] .form-coach .fc-title,
:root[data-theme="light"] .form-coach .fc-link{color:#8a5f1f}
.shadow-side .form-coach{background:linear-gradient(180deg,rgba(120,30,34,.4),rgba(40,14,20,.3));border-color:rgba(200,90,60,.34)}
.shadow-side .form-coach .fc-title,.shadow-side .form-coach .fc-link{color:#e8b06a}

/* ============================================================================
 * Asteroids, in the chart itself — a discoverable toggle on the wheel plus an
 * inline goddess reading, so nobody has to hunt for a separate tool.
 * ==========================================================================*/
.wheel-tools .ast-toggle{margin-left:6px}
.wheel-tools .ast-toggle.on{color:var(--gold,#c8963c);border-color:rgba(200,150,60,.5);
  background:rgba(200,150,60,.12)}
.asteroid-goddess{margin-top:14px;border:1px solid rgba(200,150,60,.28);
  background:linear-gradient(180deg,rgba(200,150,60,.07),rgba(200,150,60,.02))}
.asteroid-goddess h3{color:var(--gold,#c8963c)}
.asteroid-goddess .ag-line{line-height:1.55;margin:10px 0}
.asteroid-goddess .ag-line strong{font-weight:650}
.asteroid-goddess .btn-ghost{margin-top:6px}
:root[data-theme="light"] .asteroid-goddess h3,
:root[data-theme="light"] .wheel-tools .ast-toggle.on{color:#8a5f1f}

/* ============================================================================
 * Asteroid browser — searchable, grouped by theme, compact rows instead of a
 * wall of bubbles. Tapping a row adds it to the chart.
 * ==========================================================================*/
.ast-browser .ast-search{margin:8px 0 12px}
.ast-search-in{width:100%;box-sizing:border-box;padding:11px 14px;font-size:1rem;
  border:1px solid var(--line,rgba(120,120,160,.28));border-radius:12px;
  background:var(--card,rgba(255,255,255,.03));color:inherit;-webkit-appearance:none;appearance:none}
.ast-search-in:focus{outline:none;border-color:var(--gold,#c8963c);box-shadow:0 0 0 3px rgba(200,150,60,.18)}
.ast-picker{display:flex;flex-direction:column;gap:8px}
.ast-group{border:1px solid var(--line,rgba(120,120,160,.2));border-radius:12px;overflow:hidden}
.ast-group summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
  padding:12px 14px;font-weight:600;font-size:.98rem}
.ast-group summary::-webkit-details-marker{display:none}
.ast-group summary::after{content:"+";margin-left:auto;font-size:1.25rem;opacity:.5;font-weight:400}
.ast-group[open] summary::after{content:"–"}
.ast-group .ag-ic{font-size:1.1rem}
.ast-group .ag-count{margin-left:auto;font-size:.82rem;font-weight:400}
.ast-group[open] summary .ag-count{display:none}
.ast-rowlist{display:flex;flex-direction:column;padding:4px 8px 10px}
.ast-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;cursor:pointer;
  padding:10px 12px;border:none;border-radius:10px;background:none;color:inherit;
  border-bottom:1px solid var(--line,rgba(120,120,160,.12))}
.ast-row:last-child{border-bottom:none}
.ast-row:hover{background:rgba(200,150,60,.08)}
.ast-row .ar-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.ast-row .ar-name{font-weight:600;font-size:.98rem}
.ast-row .ar-theme{font-size:.8rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis}
.ast-row .ar-add{flex:none;font-size:.82rem;font-weight:600;color:var(--gold,#c8963c);white-space:nowrap}
.ast-row.on{opacity:.72}
.ast-row.on .ar-add{color:var(--sage,#7c8150)}
.ast-advanced{margin-top:12px;border-top:1px solid var(--line,rgba(120,120,160,.18));padding-top:10px}
.ast-advanced summary{cursor:pointer;font-size:.86rem;opacity:.7;list-style:none}
.ast-advanced summary::-webkit-details-marker{display:none}
.ast-advanced .ast-add-row{display:flex;gap:8px;margin-top:10px}
.ast-advanced .ast-add-row input{flex:1;min-width:0;padding:9px 12px;border-radius:10px;
  border:1px solid var(--line,rgba(120,120,160,.28));background:var(--card,rgba(255,255,255,.03));color:inherit}
:root[data-theme="light"] .ast-row .ar-add{color:#8a5f1f}
:root[data-theme="light"] .ast-row:hover{background:rgba(176,125,43,.1)}

/* ============================================================================
 * People & names library — searchable, count + tier, scroll-capped so a big
 * library never becomes an endless wall of bubbles.
 * ==========================================================================*/
.ppl-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ppl-count{margin-left:auto}
.ppl-search,.lib-search{margin:8px 0 10px}
.ppl-search-in,.lib-search-in{width:100%;box-sizing:border-box;padding:10px 13px;font-size:.98rem;
  border:1px solid var(--line,rgba(120,120,160,.28));border-radius:11px;
  background:var(--card,rgba(255,255,255,.03));color:inherit;-webkit-appearance:none;appearance:none}
.ppl-search-in:focus,.lib-search-in:focus{outline:none;border-color:var(--gold,#c8963c);
  box-shadow:0 0 0 3px rgba(200,150,60,.16)}
.ppl-row.scroll{max-height:220px;overflow-y:auto;padding-right:4px;
  -webkit-overflow-scrolling:touch}
.lib-chips.scroll{max-height:170px;overflow-y:auto;padding:2px;
  -webkit-overflow-scrolling:touch;display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start}
.lib-empty{padding:6px 2px}

/* library-full upsell */
.libfull-modal{max-width:30rem;text-align:center}
.libfull-modal h2{margin:6px 0 10px}
.libfull-acts{display:flex;flex-direction:column;gap:9px;margin-top:16px}

/* ============================================================================
 * Membership store — a clean Free-vs-Member comparison with a billing toggle,
 * plus the members-only gate shown on premium chart tools.
 * ==========================================================================*/
.tier-wrap{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin:8px 0 6px}
.tier-card{flex:1 1 300px;max-width:380px;border:1px solid var(--line,rgba(120,120,160,.22));
  border-radius:18px;padding:22px 20px;background:var(--card,rgba(255,255,255,.03));position:relative}
.tier-member{border-color:var(--gold,#c8963c);box-shadow:0 0 0 1px rgba(200,150,60,.25),0 10px 30px rgba(0,0,0,.2)}
.tier-member.owned{border-color:var(--sage,#7c8150)}
.tier-flag{position:absolute;top:-11px;left:20px;background:var(--gold,#c8963c);color:#1a1420;
  font-size:.72rem;font-weight:700;letter-spacing:.06em;padding:3px 12px;border-radius:20px}
.tier-name{font-size:1.4rem;font-weight:650;font-family:Georgia,serif}
.tier-sub{margin:2px 0 0}
.tier-sub2{margin:2px 0 12px}
.tier-price{font-size:2.4rem;font-weight:700;margin:10px 0 2px;line-height:1}
.tier-price .tier-per{font-size:1rem;font-weight:400;opacity:.6}
.tier-list{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-direction:column;gap:9px}
.tier-list li{position:relative;padding-left:24px;line-height:1.45;font-size:.94rem}
.tier-list li::before{content:"✦";position:absolute;left:0;color:var(--gold,#c8963c);font-size:.8rem;top:2px}
.tier-list li.tier-everything{padding-left:0;font-weight:650;opacity:.85;font-size:.9rem;margin-bottom:2px}
.tier-list li.tier-everything::before{content:""}
.tier-free .tier-list li::before{color:var(--sage,#7c8150)}
.tier-foot{margin-top:16px}
.tier-cta{margin:6px 0 4px}
.bill-toggle{display:inline-flex;align-items:center;gap:0;background:rgba(120,120,160,.12);
  border-radius:30px;padding:3px;margin:4px 0 8px;position:relative}
.bill-btn{border:none;background:none;color:inherit;font-size:.86rem;font-weight:600;
  padding:7px 16px;border-radius:26px;cursor:pointer;opacity:.7}
.bill-btn.on{background:var(--gold,#c8963c);color:#1a1420;opacity:1}
.bill-save{font-size:.72rem;font-weight:700;color:var(--sage,#7c8150);margin-left:10px}
.store-fineprint{margin-top:14px}
:root[data-theme="light"] .bill-btn.on,:root[data-theme="light"] .tier-flag{color:#fff8ee}
:root[data-theme="light"] .tier-list li::before{color:#8a5f1f}

/* members-only gate on premium tools */
.member-gate{max-width:34ch;margin:12vh auto 0;text-align:center;padding:0 20px}
.member-gate .mg-glyph{font-size:2.4rem;color:var(--gold,#c8963c);margin-bottom:10px}
.member-gate .mg-title{font-size:1.5rem;margin:0 0 12px;line-height:1.25}
.member-gate .mg-sub{line-height:1.6;opacity:.85;margin:0 0 22px}
.member-gate .btn-primary{margin-bottom:10px}
.member-gate .btn-ghost{display:block;margin:0 auto}
:root[data-theme="light"] .member-gate .mg-glyph{color:#8a5f1f}
