:root{
  --night:#1a2030; --dusk:#262e42; --line:#3a4560;
  --lamp:#e8b04b; --lamp-soft:rgba(232,176,75,.16);
  --paper:#efe6d2; --ink:#2a2420; --muted:#9aa3b5; --text:#e9e6df;
  --head:"IM Fell English",Georgia,"Times New Roman",serif;
  --ui:"Source Sans 3","Segoe UI",system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--night);color:var(--text);font:17px/1.55 var(--ui);
  min-height:100vh;-webkit-font-smoothing:antialiased}
a{color:var(--lamp)}
.wrap{max-width:560px;margin:0 auto;padding:28px 22px 64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);
  font:22px/1 var(--head)}
.brand svg{width:26px;height:34px;flex:none}
h1,h2,h3{font-family:var(--head);font-weight:400;line-height:1.15;margin:0}
h1{font-size:40px;margin:36px 0 10px}
.lede{color:var(--muted);margin:0 0 28px}
.series{color:var(--lamp);font-size:15px;margin-top:34px}
button,.btn{font:600 16px/1 var(--ui);border-radius:6px;cursor:pointer;
  padding:13px 18px;border:1px solid var(--line);background:var(--dusk);color:var(--text)}
button:hover{border-color:var(--muted)}
button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--lamp);outline-offset:2px}
.primary{background:var(--lamp);border-color:var(--lamp);color:#241a08}
.primary:hover{background:#f0c066}
.ghost{background:none;border-color:transparent;color:var(--muted);padding:8px 0;font-weight:400;text-decoration:underline}

/* chapter path */
.path{list-style:none;margin:0;padding:0;position:relative}
.path::before{content:"";position:absolute;left:17px;top:18px;bottom:18px;width:2px;background:var(--line)}
.ch{position:relative;padding:0 0 26px 54px}
.dot{position:absolute;left:0;top:0;width:36px;height:36px;border-radius:50%;
  display:grid;place-items:center;font:20px/1 var(--head);background:var(--night);
  border:2px solid var(--line);color:var(--muted)}
.ch.open .dot{border-color:var(--lamp);color:var(--lamp);box-shadow:0 0 18px var(--lamp-soft)}
.ch.done .dot{background:var(--lamp);border-color:var(--lamp);color:#241a08}
.ch h2{font-size:25px;padding-top:4px}
.ch .q{margin:6px 0 14px}
.ch.locked h2,.ch.locked .q{color:var(--muted)}
.locknote{color:var(--muted);font-size:15px;margin:4px 0 0}
.actions{display:flex;gap:10px;flex-wrap:wrap}

/* the lit slip: the one memorable element */
.slip{background:var(--paper);color:var(--ink);border-radius:3px;padding:16px 18px;margin-top:14px;
  font:18px/1.6 Georgia,"Times New Roman",serif;
  box-shadow:0 0 0 1px rgba(0,0,0,.2),0 0 46px var(--lamp-soft)}
.slip .tag{font:600 13px/1 var(--ui);color:#8a6a2a;display:block;margin-bottom:8px}
.slip p{margin:0}
.slip .why{margin-top:8px;color:#5a4f45;font-size:16px}
@media (prefers-reduced-motion:no-preference){
  .slip{animation:light .6s ease-out}
  @keyframes light{from{opacity:0;box-shadow:0 0 0 1px rgba(0,0,0,.2),0 0 0 transparent}}
}

/* accusation */
.accuse{margin-top:22px;padding-top:26px;border-top:1px solid var(--line)}
.accuse h2{font-size:30px;margin-bottom:6px}
.row{display:flex;gap:10px;margin-top:14px}
input[type=text]{flex:1;min-width:0;font:17px var(--ui);padding:12px 14px;border-radius:6px;
  border:1px solid var(--line);background:var(--dusk);color:var(--text)}
.msg{margin:12px 0 0;color:#e7a08f}
.letter{background:var(--paper);color:var(--ink);padding:26px 22px;margin-top:20px;border-radius:3px;
  font:18px/1.7 Georgia,serif;box-shadow:0 0 70px var(--lamp-soft)}
.letter h3{font-size:22px;margin-bottom:14px;color:#6b5228}
.letter p{margin:0 0 12px}
.letter .sig{font-style:italic;text-align:right;margin-top:18px}
.epilogue{color:var(--muted);margin-top:18px}

/* modal */
.modal{position:fixed;inset:0;background:rgba(10,13,20,.75);display:none;align-items:flex-end;justify-content:center;padding:18px}
.modal.show{display:flex}
.sheet{background:var(--dusk);border:1px solid var(--line);border-radius:10px;padding:22px;max-width:520px;width:100%}
.sheet h3{font-size:24px;margin-bottom:8px}
.sheet p{color:var(--muted);margin:0 0 18px}
@media (min-width:600px){.modal{align-items:center}h1{font-size:46px}}
footer{color:var(--muted);font-size:14px;margin-top:48px}
.reset{font-size:14px}
