/* Layout: full-screen tiles that snap on scroll. Seven screens; detail opens in a side drawer, sources in a separate layer. */
/* Brand palette: slate navy, warm sand, charcoal; crimson-magenta for accents only. Single light look by design. */
:root{
  color-scheme:light;
  --navy:#364f69; --sand:#ebe7de; --char:#444342; --magenta:#d50030;
  --bg:#ebe7de; --surface:#f7f5f0; --ink:#444342; --muted:#5f5c58; --line:#d3cdc0;
  --accent:#d50030;                 /* accents only: current position, key words, small markers */
  --primary:#364f69; --primary-soft:#dde3ea;
  --good:#364f69; --good-soft:#dde3ea;          /* good for people: navy */
  --bad:#444342;  --bad-soft:#dcd7cc;           /* bad for people: charcoal */
  --pos:#1d7a66; --pos-soft:#dcefe9;   /* effect tiles only: good for people */
  --neg:#b5532a; --neg-soft:#f6e3d9;   /* effect tiles only: bad for people */
  --hero:#364f69; --hero-ink:#f3f0e9;
  --scrim:rgba(40,40,38,.45);
  --f-display:"Raleway","Avenir Next","Segoe UI",Helvetica,Arial,sans-serif;
  --f-body:"Raleway","Avenir Next","Segoe UI",Helvetica,Arial,sans-serif;
  --f-mono:"Raleway","Avenir Next","Segoe UI",Helvetica,Arial,sans-serif;
  --accent-soft:#dde3ea;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:17px;line-height:1.55;overflow:hidden;font-variant-numeric:lining-nums;font-feature-settings:'lnum' 1}
h1,h2,h3,h4{font-family:var(--f-display);text-wrap:balance;margin:0;letter-spacing:-.005em;font-weight:700}
em.hl{font-style:normal;color:var(--accent)}
.hero em.hl,.close-screen em.hl{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:.12em;text-underline-offset:.14em;text-decoration-skip-ink:none}
p{margin:0}
ul{margin:0;padding-left:1.2em;display:grid;gap:6px}
a{color:var(--primary)}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.eyebrow{font-family:var(--f-body);font-weight:700;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.muted{color:var(--muted)}

/* snap container */
.snap{height:100%;overflow-y:auto;scroll-snap-type:y mandatory;scroll-behavior:smooth}
.screen{min-height:100%;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;
  padding-left:max(20px, env(safe-area-inset-left, 0px));padding-right:max(64px, calc(env(safe-area-inset-right, 0px) + 56px));padding-block:56px}
.inner{width:100%;max-width:1120px;margin:0 auto;display:grid;gap:26px}
.screen h2{font-size:clamp(1.7rem,3.4vw,2.7rem);line-height:1.1;font-weight:700}
.lead{font-size:clamp(1.02rem,1.5vw,1.2rem);max-width:62ch}

/* dots nav */
.dots{position:fixed;right:max(18px, env(safe-area-inset-right, 0px));top:50%;transform:translateY(-50%);display:grid;gap:12px;z-index:20}
.dots button{width:12px;height:12px;border-radius:50%;border:2px solid var(--muted);background:transparent;padding:0;cursor:pointer}
.dots button[aria-current="true"]{background:var(--accent);border-color:var(--accent)}
.dots.on-hero button{border-color:var(--hero-ink)} .dots.on-hero button[aria-current="true"]{background:var(--accent);border-color:var(--accent)}

/* disclaimer: small note in the bottom padding of every screen, so it never covers content */
.screen{position:relative}
.disclaimer{position:absolute;left:0;right:0;bottom:14px;margin:0 auto;width:100%;max-width:1120px;
  padding-left:max(20px, env(safe-area-inset-left, 0px));padding-right:max(64px, calc(env(safe-area-inset-right, 0px) + 56px));
  font-size:.72rem;line-height:1.35;color:var(--muted)}
.hero .disclaimer,.close-screen .disclaimer{color:var(--hero-ink);opacity:.7}
@media (max-width:760px), (max-height:640px){ .disclaimer{padding-right:20px;bottom:10px} .screen.screen{padding-bottom:58px} }

/* 1 hero */
.hero{background:var(--hero);color:var(--hero-ink)}
.hero h1{font-size:clamp(2.3rem,6.4vw,5.2rem);line-height:1.04;font-weight:800;max-width:16ch}
.hero .lead{color:var(--hero-ink);opacity:.86}
.hero .eyebrow{color:var(--hero-ink);opacity:.7}
.next{justify-self:start;display:inline-flex;gap:10px;align-items:center;border:1px solid currentColor;border-radius:999px;padding:9px 16px;background:transparent;cursor:pointer;font-family:var(--f-display)}
.hero .next{color:var(--hero-ink)}
.next .chev{display:inline-block;animation:bob 2.2s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(4px)}}

/* 2 two sides */
.sides{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.side{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:22px;display:grid;gap:10px;align-content:start}
.side h3{font-size:1.3rem}
.side.g{border-top:4px solid var(--good)} .side.b{border-top:4px solid var(--accent)}
.side.a{background:var(--navy);color:var(--hero-ink);border-color:var(--navy)}
.side ul{font-size:.95rem;color:var(--muted)}

/* 3 default */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;display:grid;gap:8px;align-content:start}
.stat b{font-family:var(--f-display);font-size:clamp(1.6rem,2.6vw,2.2rem);line-height:1.05;font-variant-numeric:tabular-nums}

/* 4/5 explorer */
.xp{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:28px;align-items:start}
.panel{background:var(--navy);color:var(--hero-ink);border-radius:14px;padding:20px;display:grid;gap:16px;align-content:start}
.panel .step,.board .step{display:flex;gap:10px;align-items:baseline;font-family:var(--f-display);font-weight:700;font-size:1.02rem}
.step .num{display:inline-grid;place-items:center;width:1.6em;height:1.6em;border-radius:50%;font-size:.82rem;flex:none}
.panel .step .num{background:var(--hero-ink);color:var(--navy)}
.board .step .num{background:var(--navy);color:var(--hero-ink)}
.board{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px}
.groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}
.panel .group h4{color:var(--hero-ink);opacity:.75}
.panel .choice{background:transparent;color:var(--hero-ink);border:1px solid rgba(243,240,233,.38)}
.panel .choice:hover{border-color:var(--hero-ink);background:rgba(243,240,233,.08)}
.panel .choice[aria-pressed="true"]{background:var(--hero-ink);color:var(--navy);border-color:var(--hero-ink);box-shadow:inset 4px 0 0 var(--accent)}
.panel .choice.linked{border-color:var(--hero-ink);box-shadow:0 0 0 1px var(--hero-ink) inset;background:rgba(243,240,233,.12)}
.instr{font-size:1.05rem;max-width:70ch;background:var(--surface);border-left:4px solid var(--accent);padding:10px 14px;border-radius:0 8px 8px 0}
.group{display:grid;gap:6px;align-content:start;min-width:0}
.group h4{font-family:var(--f-mono);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.choice{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 11px;cursor:pointer;font-family:var(--f-display);font-weight:500;font-size:.92rem;line-height:1.22}
.choice:hover{border-color:var(--primary)}
.choice[aria-pressed="true"]{background:var(--primary);color:var(--surface);border-color:var(--primary);box-shadow:inset 4px 0 0 var(--accent)}
.choice.linked{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary) inset}
.pits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.pit{text-align:left;border:1px dashed var(--bad);background:var(--surface);border-radius:8px;padding:12px 14px;cursor:pointer;font-family:var(--f-display);font-weight:500;font-size:.98rem}
.pit:hover{background:var(--bad-soft)}
.pit[aria-pressed="true"]{background:var(--bad);color:var(--surface);border-style:solid;box-shadow:inset 4px 0 0 var(--accent)}
.pit.linked{background:var(--bad-soft)}
.board{display:grid;gap:14px}
.col-title{font-family:var(--f-display);font-weight:700;font-size:.98rem}
.col-title.g{color:var(--pos)} .col-title.b{color:var(--neg)}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.tile{display:flex;justify-content:space-between;gap:6px;align-items:center;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:9px 10px;min-height:56px;cursor:pointer;transition:opacity .25s,background .25s,border-color .25s}
.tile:hover{border-color:var(--primary)}
.tile .n{font-family:var(--f-display);font-weight:500;font-size:.86rem;line-height:1.2}
.tile .arrow{font-family:var(--f-display);font-weight:700;font-size:1.25rem;line-height:1}
.tile.dim{opacity:.35}
.tile.pos{background:var(--pos-soft);border-color:var(--pos)} .tile.pos .arrow{color:var(--pos)}
.tile.neg{background:var(--neg-soft);border-color:var(--neg)} .tile.neg .arrow{color:var(--neg)}
.tile[aria-pressed="true"]{box-shadow:0 0 0 2px var(--primary) inset}
.key{font-size:.82rem;color:var(--muted)}
.peek{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--primary);border-radius:10px;padding:12px 14px;min-height:56px}
.peek.empty{border-style:dashed;border-color:var(--line)}
.peek b{font-family:var(--f-display);font-weight:700}
.more{border:0;background:var(--primary);color:var(--surface);border-radius:999px;padding:8px 14px;cursor:pointer;font-family:var(--f-display);font-weight:500;font-size:.9rem;text-align:left}

/* 6 questions */
.qs{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr);gap:24px;align-items:start}
.qlist{display:grid;gap:6px}
.q{text-align:left;padding:10px 13px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-family:var(--f-display);font-weight:500;font-size:.95rem;line-height:1.25}
.q:hover{border-color:var(--primary)}
.q[aria-selected="true"]{background:var(--primary);color:var(--surface);border-color:var(--primary);box-shadow:inset 4px 0 0 var(--accent)}
.answer{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:24px;display:grid;gap:14px;min-width:0}
.answer .short{font-size:1.25rem;line-height:1.35;font-family:var(--f-display);font-weight:500}
.do{background:var(--primary-soft);border-left:4px solid var(--accent);border-radius:8px;padding:14px 16px;display:grid;gap:6px}
.do .eyebrow{color:var(--primary)}

/* 7 close */
.close-screen{background:var(--hero);color:var(--hero-ink)}
.close-screen h2{max-width:20ch}
.close-screen .lead{color:var(--hero-ink);opacity:.86}
.close-actions{display:flex;flex-wrap:wrap;gap:10px}
.btn{border:1px solid var(--hero-ink);color:var(--hero-ink);background:transparent;border-radius:999px;padding:10px 18px;cursor:pointer;font-family:var(--f-display);font-weight:500}
.btn.solid{background:var(--hero-ink);color:var(--hero)}
.close-screen .small{font-size:.86rem;opacity:.7;max-width:70ch}

/* drawer */
.scrim{position:fixed;inset:0;background:var(--scrim);z-index:30;opacity:0;pointer-events:none;transition:opacity .25s}
.scrim.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(480px,100%);background:var(--surface);z-index:31;transform:translateX(100%);transition:transform .3s ease,visibility .3s;visibility:hidden;display:flex;flex-direction:column}
.drawer.open{transform:none;visibility:visible;box-shadow:-8px 0 30px rgba(0,0,0,.18)}
.drawer .bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(14px + env(safe-area-inset-top, 0px)) max(20px, calc(env(safe-area-inset-right, 0px) + 20px)) 12px 22px;border-bottom:1px solid var(--line)}
.x{border:1px solid var(--line);background:var(--surface);border-radius:999px;width:36px;height:36px;cursor:pointer;font-size:1.1rem;line-height:1}
.drawer .body{overflow-y:auto;padding:20px max(20px, calc(env(safe-area-inset-right, 0px) + 20px)) calc(28px + env(safe-area-inset-bottom, 0px)) 22px;display:grid;gap:18px;align-content:start}
.drawer h3{font-size:1.35rem;line-height:1.2}
.fx{list-style:none;padding:0;display:grid;gap:4px}
.practice{background:var(--accent-soft);border-radius:8px;padding:14px 16px;display:grid;gap:6px}
.linklist{display:grid;gap:6px}
.linklist button{text-align:left;background:none;border:0;padding:0;color:var(--primary);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
details.src{border-top:1px solid var(--line);padding-top:12px}
details.src summary{cursor:pointer;font-family:var(--f-mono);font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
details.src[open] summary{margin-bottom:10px}
.refs{display:grid;gap:10px}
.ref{display:grid;gap:4px;padding:11px 13px;border-left:3px solid var(--line);background:var(--bg);border-radius:0 8px 8px 0;min-width:0}
.ref .cite{font-family:var(--f-mono);font-size:.72rem;color:var(--muted);overflow-wrap:anywhere}
.ref .tt{font-weight:600}
.ref .find{font-size:.93rem}
.ref .cav{font-size:.85rem;color:var(--muted)}

/* sources layer */
.layer{position:fixed;inset:0;background:var(--bg);z-index:40;display:none;flex-direction:column}
.layer.open{display:flex}
.layer .bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:calc(16px + env(safe-area-inset-top, 0px)) max(20px, calc(env(safe-area-inset-right, 0px) + 20px)) 14px max(20px, env(safe-area-inset-left, 0px));border-bottom:1px solid var(--line);background:var(--surface)}
.layer .body{overflow-y:auto;padding:22px max(20px, env(safe-area-inset-right, 0px)) calc(40px + env(safe-area-inset-bottom, 0px)) max(20px, env(safe-area-inset-left, 0px))}
.layer .wrap{max-width:1120px;margin:0 auto;display:grid;gap:16px}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:5px 11px;font-family:var(--f-mono);font-size:.76rem;cursor:pointer}
.chip[aria-pressed="true"]{border-color:var(--primary);background:var(--primary);color:var(--surface)}
.search{flex:1 1 220px;min-width:0;padding:8px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:.95rem}
.lib{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.lib .ref{background:var(--surface);border:1px solid var(--line);border-left-width:3px}

/* responsive */
@media (max-width:1000px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .xp,.qs{grid-template-columns:minmax(0,1fr)}
  .tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:760px), (max-height:640px){
  .snap{scroll-snap-type:y proximity}
  .screen{padding-right:max(20px, calc(env(safe-area-inset-right, 0px) + 20px));padding-block:48px}
  .dots{display:none}
}
@media (max-width:760px){
  body{font-size:16px}
  .sides{grid-template-columns:minmax(0,1fr)}
  .groups,.pits{grid-template-columns:minmax(0,1fr)}
  .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:460px){ .stats{grid-template-columns:minmax(0,1fr)} }

/* small layout helpers (replace inline styles from the prototype) */
.stack{display:grid;gap:8px}
.stack.tight{gap:6px}
.close-screen .eyebrow{color:var(--hero-ink);opacity:.7}
.fx .eff.good{color:var(--good)} .fx .eff.bad{color:var(--bad)}
.load-error{padding:24px;max-width:60ch}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.snap{scroll-behavior:auto}}
