:root{
  --ink:#1b2430; --ink-soft:#4b5868; --bg:#eef2f4; --card:#ffffff; --line:#d2dae1;
  --ice:#264f66; --ice-soft:#e0eaf0; --ember:#b8621b; --ember-soft:#f7ecdf;
  --good:#2f7d4a; --good-soft:#e2f3e7; --bad:#b23a3a; --bad-soft:#f8e3e3;
  --display:"Marcellus","Palatino Linotype",Palatino,Georgia,serif;
  --body:"Atkinson Hyperlegible","Segoe UI",system-ui,-apple-system,sans-serif;
  --r:10px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--body);color:var(--ink);background:var(--bg);font-size:1.125rem;line-height:1.55}
a{color:var(--ice)}
:focus-visible{outline:3px solid var(--ember);outline-offset:2px}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(2.2rem,6vw,3.6rem)}
h2{font-size:clamp(1.6rem,4vw,2.3rem)}
h3{font-size:1.3rem}
p{margin:0 0 1em;max-width:68ch}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}

/* top bar */
.topbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.topbar .home{white-space:nowrap;font-family:var(--display);font-size:1.2rem;text-decoration:none;color:var(--ink)}
.topbar .where{color:var(--ink-soft);font-size:.95rem;margin-left:auto;text-align:right}

/* index */
.hero{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:center;max-width:1080px;margin:0 auto;padding:3.5rem 1.25rem 2.5rem}
.hero .lead{font-size:1.25rem;color:var(--ink-soft)}
.hero .by{font-family:var(--display);font-size:1.3rem;color:var(--ice);margin-bottom:.4rem}
.frame{border:2px solid var(--ice);border-radius:18px;padding:1rem 1rem 1.1rem;background:var(--card)}
.frame .inner{border:2px solid var(--ember);border-radius:12px;padding:.9rem .9rem 1rem;margin-top:.7rem;background:var(--ember-soft)}
.frame .core{border:2px dashed var(--ink-soft);border-radius:8px;padding:.7rem .8rem;margin-top:.7rem;background:var(--card);color:var(--ink-soft)}
.frame b{font-family:var(--display);font-weight:400;font-size:1.2rem;display:block}
.frame .inner b{color:var(--ember)} .frame > b{color:var(--ice)} .frame .core b{color:var(--ink-soft)}
.frame span{font-size:.95rem}
.frame .cap{font-size:.9rem;color:var(--ink-soft);margin:.8rem 0 0}
.path{max-width:1080px;margin:0 auto;padding:0 1.25rem 3rem}
.path h2{margin-top:1.5rem}
.path ol{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.path li a{display:grid;grid-template-columns:7.5rem 1fr auto;gap:1rem;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.9rem 1.2rem;text-decoration:none;color:var(--ink)}
.path li a:hover{border-color:var(--ice)}
.path .lab{font-family:var(--display);font-size:1.2rem;color:var(--ice)}
.path .t{font-size:1.05rem}
.path li.big a{background:var(--ember-soft);border-color:#e6c9a6}
.path li.big .lab{color:var(--ember)}
.badge{font-size:.9rem;padding:.25rem .6rem;border-radius:999px;background:var(--bg);color:var(--ink-soft);white-space:nowrap}
.badge.done{background:var(--good-soft);color:var(--good)}
.namebox{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin:1rem 0}
.namebox input{padding:.5rem .7rem;border:1px solid var(--line);border-radius:8px;min-width:14rem;background:#fbfcfd}

/* lesson stage */
.progress{display:flex;gap:4px;padding:0 1.25rem;max-width:900px;margin:1rem auto 0}
.progress button{flex:1;height:8px;border:0;border-radius:4px;background:var(--line);padding:0}
.progress button.seen{background:#9fb5c4}
.progress button.on{background:var(--ember)}
.stage{max-width:900px;margin:0 auto;padding:1.5rem 1.25rem 7rem;min-height:60vh}
.step{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:clamp(1.25rem,4vw,2.5rem)}
.step .kicker{font-family:var(--display);color:var(--ember);font-size:1.3rem;margin-bottom:.2rem}
.step .setting{color:var(--ink-soft);font-style:italic}
.readbtn{display:inline-block;text-decoration:none;margin:.5rem 0 1rem}
.vocab{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.6rem;margin:1rem 0 1.5rem;padding:0}
.vocab div{border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;background:var(--bg)}
.vocab dt{font-weight:700;color:var(--ice)}
.vocab dt{text-decoration:underline solid var(--ember) 2px;text-underline-offset:3px}
.vocab dd{margin:0;font-size:1rem;color:var(--ink-soft)}
.note{background:var(--ice-soft);border-radius:8px;padding:.9rem 1.1rem;margin:1rem 0}
.hint{font-size:.95rem;color:var(--ink-soft)}

/* controls */
.controls{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);padding:.7rem 1.25rem calc(.7rem + env(safe-area-inset-bottom,0px))}
.controls .in{max-width:900px;margin:0 auto;display:flex;gap:.75rem;align-items:center}
.controls .count{color:var(--ink-soft);font-size:.95rem;margin:0 auto}
.btn{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:.6rem 1.1rem}
.btn.primary{background:var(--ice);border-color:var(--ice);color:#fff}
.btn:disabled{opacity:.4;cursor:default}
.btn.small{padding:.35rem .8rem;font-size:1rem}

/* reading */
.readhead{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;border-bottom:1px solid var(--line);padding-bottom:.6rem}
.readhead h2{margin:0}
.text{max-width:68ch;font-size:1.15rem;line-height:1.75}
.text.big{font-size:1.35rem}
.text p{margin:0 0 1.1em}
.text p.short{margin-bottom:.4em;color:var(--ink-soft)}
.text p.verse{margin:1em 0 .3em 2rem;font-style:italic}
.text p.src{margin-left:2rem;font-size:.95rem;color:var(--ink-soft)}
.vw{border:0;background:none;padding:0;font:inherit;color:inherit;text-decoration:underline dotted var(--ice) 2px;text-underline-offset:3px;cursor:help;border-radius:3px}
.vw.key{text-decoration:underline solid var(--ember) 2px}
.vw[aria-expanded="true"]{background:var(--ember-soft)}
.pop{position:absolute;z-index:20;max-width:min(20rem,calc(100vw - 16px));background:var(--ink);color:#fff;border-radius:8px;padding:.55rem .75rem;font-size:1rem;line-height:1.4;box-shadow:0 6px 18px rgba(27,36,48,.25)}
.pop b{display:block;font-family:var(--display);font-weight:400;font-size:1.1rem;color:#f3c99a}
.pop::after{content:"";position:absolute;left:var(--ax,50%);top:100%;margin-left:-7px;border:7px solid transparent;border-top-color:var(--ink)}
.pop.below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--ink)}
.source{border-top:1px solid var(--line);padding-top:.8rem;margin-top:1.5rem}

/* short answers */
.sq{border-top:1px solid var(--line);padding:1.3rem 0}
.sq:first-of-type{border-top:0;padding-top:.3rem}
.sq label{display:block;font-weight:700;margin-bottom:.5rem;max-width:68ch}
.sq .n{font-family:var(--display);color:var(--ember);font-weight:400;margin-right:.35rem}
textarea{width:100%;min-height:5.5rem;font-size:1.05rem;padding:.7rem;border:1px solid var(--line);border-radius:8px;resize:vertical;background:#fbfcfd}
textarea.long{min-height:16rem}
.sq .row{display:flex;gap:.8rem;align-items:center;margin-top:.5rem;flex-wrap:wrap}
.reveal{margin-top:.8rem;padding:.9rem 1.1rem;border-radius:8px;background:var(--ice-soft)}
.reveal p:last-child{margin-bottom:0}

/* quiz */
.q{border-top:1px solid var(--line);padding:1.2rem 0}
.q:first-of-type{border-top:0}
.q .qt{font-weight:700;margin-bottom:.6rem}
.q .choices{display:grid;gap:.45rem}
.q .choices button{text-align:left;border:1px solid var(--line);border-radius:8px;padding:.6rem .8rem;background:var(--card)}
.q .choices button.right{background:var(--good-soft);border-color:#9fd1b0}
.q .choices button.wrong{background:var(--bad-soft);border-color:#e0a9a9}
.q .fb{margin-top:.6rem;font-size:1rem}
.result{margin-top:1rem;padding:1rem 1.2rem;border-radius:8px;background:var(--ember-soft);font-size:1.15rem}

/* send + big question */
.checklist{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.35rem}
.checklist li::before{content:"○ ";color:var(--ink-soft)}
.checklist li.ok::before{content:"● ";color:var(--good)}
.prompts{display:grid;gap:.7rem;margin:1rem 0}
.prompt{display:block;text-align:left;border:1px solid var(--line);border-radius:var(--r);padding:.9rem 1rem;background:var(--card)}
.prompt b{font-family:var(--display);font-weight:400;font-size:1.25rem;display:block;color:var(--ice)}
.prompt.chosen{border-color:var(--ember);box-shadow:0 0 0 2px var(--ember) inset;background:var(--ember-soft)}
.quotes{margin:.6rem 0 0;padding-left:1.1rem;font-size:1rem}
.quotes li{margin-bottom:.35rem}
.wc{font-size:.95rem;color:var(--ink-soft)}
.wc.ok{color:var(--good)}

@media (max-width:720px){
  .hero{grid-template-columns:1fr;padding-top:2rem}
  .path li a{grid-template-columns:1fr auto;gap:.2rem .8rem}
  .path li a .t{grid-column:1/-1;grid-row:2}
}
@media (prefers-reduced-motion:no-preference){
  .step{animation:in .25s ease-out}
  @keyframes in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
}
@media print{.controls,.progress,.topbar{display:none}}
