:root{--bg:#fbf4ea;--card:#fffaf3;--ink:#2b1d16;--muted:#6b5446;--line:#ead9c6;--ember:#b4432c;--ember-2:#8f2f1d;--saffron:#e3a03a;--sage:#3f7a5a;--sage-bg:#e3f0e7;--amber:#a85f06;--amber-bg:#fbecd3;--plum:#5b2a45;
 --r:18px;--safe-b:env(safe-area-inset-bottom,0px);--fs:16px;--shadow:0 2px 0 rgba(43,29,22,.06),0 8px 24px rgba(43,29,22,.07)}
[data-theme=dark]{--bg:#1c1411;--card:#271c17;--ink:#f6ead9;--muted:#cdb7a2;--line:#3d2d24;--ember:#ec7a5e;--ember-2:#f3967e;--saffron:#f0b555;--sage:#7cc39b;--sage-bg:#1f3428;--amber:#f2b25c;--amber-bg:#3a2a14;--plum:#d59abd}
[data-large=true]{--fs:19px}
*{box-sizing:border-box}html{font-size:var(--fs);scroll-padding-bottom:calc(110px + var(--safe-b));scroll-padding-top:72px}
.btn,.opt,.chip,#next,#nx{scroll-margin-top:76px;scroll-margin-bottom:calc(100px + var(--safe-b))}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1rem/1.55 "DM Sans",system-ui,sans-serif;min-height:100vh;padding-bottom:calc(84px + var(--safe-b))}
[data-reduced=true] *{animation:none!important;transition:none!important}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
h1,h2,h3{font-family:Fraunces,Georgia,serif;line-height:1.2;margin:.2em 0 .4em}h1{font-size:1.65rem}h2{font-size:1.3rem}h3{font-size:1.08rem}
a{color:var(--ember)}.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--ink);color:var(--bg);padding:8px;z-index:99}
:focus-visible{outline:3px solid var(--saffron);outline-offset:2px;border-radius:8px}
.top{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:10px 16px;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{font-family:Fraunces,serif;font-weight:700;font-size:1.25rem;color:var(--ink);text-decoration:none;display:flex;gap:8px;align-items:center}
.flame{width:14px;height:20px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:linear-gradient(var(--saffron),var(--ember));display:inline-block}
.hud{display:flex;gap:10px;font-size:.85rem;color:var(--muted);font-weight:500}.hud b{color:var(--ink)}
main{max-width:560px;margin:0 auto;padding:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin:0 0 14px;box-shadow:var(--shadow)}
.hero{background:linear-gradient(140deg,var(--ember-2),var(--plum));color:#fff7ee;border:0}.hero h1,.hero h2{color:#fff7ee}.hero .muted{color:#f3dccb}
[data-theme=dark] .hero{background:linear-gradient(140deg,#7a2c1c,#4a2238)}
.muted{color:var(--muted)}.small{font-size:.86rem}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}
.btn{appearance:none;border:0;border-radius:14px;padding:13px 18px;font:700 1rem "DM Sans",sans-serif;background:var(--ember);color:#fff;cursor:pointer;min-height:48px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}
[data-theme=dark] .btn{color:#1c1411}.btn:hover{filter:brightness(1.06)}.btn.block{width:100%}
.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--line)}.btn.soft{background:var(--amber-bg);color:var(--ink)}.btn[disabled]{opacity:.5;cursor:not-allowed}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:8px 14px;font:500 .92rem "DM Sans";cursor:pointer;min-height:44px}
.chip[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.opt{display:block;width:100%;text-align:left;border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:14px;padding:13px 14px;margin:8px 0;font:500 1rem/1.4 "DM Sans";cursor:pointer;min-height:48px}
.opt.right{border-color:var(--sage);background:var(--sage-bg)}.opt.wrong{border-color:var(--amber);background:var(--amber-bg)}
.fb{border-radius:12px;padding:12px;margin-top:8px;font-size:.95rem}.fb.ok{background:var(--sage-bg);border-left:4px solid var(--sage)}.fb.no{background:var(--amber-bg);border-left:4px solid var(--amber)}
blockquote{margin:12px 0;padding:12px 14px;border-left:4px solid var(--saffron);background:color-mix(in srgb,var(--saffron) 12%,var(--card));border-radius:0 12px 12px 0;font-family:Fraunces,serif;font-size:1.05rem}
cite{display:block;font:500 .8rem "DM Sans";color:var(--muted);margin-top:6px;font-style:normal}
.mn{font-family:Fraunces,serif;font-size:1.2rem;text-align:center;padding:22px 14px;border-radius:var(--r);background:linear-gradient(135deg,var(--saffron),var(--ember));color:#fff;margin:10px 0}
.bar{height:10px;border-radius:99px;background:var(--line);overflow:hidden}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--saffron),var(--ember));border-radius:99px}
.levels{display:grid;gap:10px}.lvl{display:flex;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--card);text-decoration:none;color:var(--ink);min-height:56px}
.lvl.locked{opacity:.55}.lvl .n{flex:0 0 40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--amber-bg);color:var(--ink)}
.lvl.boss{border:2px solid var(--plum)}.lvl.boss .n{background:var(--plum);color:#fff}
.s0{background:var(--line)}.s1{background:#f1d9b5}.s2{background:#e9b26a}.s3{background:#cf7a45}.s4{background:#3f7a5a}
[data-theme=dark] .s1{background:#5a4430}[data-theme=dark] .s2{background:#8a5f2e}[data-theme=dark] .s3{background:#b05a35}[data-theme=dark] .s4{background:#4f9a72}
.heat{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.heat a{aspect-ratio:1;border-radius:8px;display:grid;place-items:center;font-size:.7rem;color:var(--ink);text-decoration:none;font-weight:700}
.heat a.s4,.heat a.s3{color:#fff}
.ring{--p:0;width:64px;height:64px;border-radius:50%;background:conic-gradient(var(--saffron) calc(var(--p)*1%),rgba(255,255,255,.25) 0);display:grid;place-items:center;flex:0 0 64px}.ring>span{width:50px;height:50px;border-radius:50%;background:var(--ember-2);display:grid;place-items:center;font-weight:700;font-size:.8rem;color:#fff}
textarea,input,select{width:100%;font:1rem "DM Sans";padding:12px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);min-height:48px}
label{font-weight:500;display:block;margin:10px 0 4px}
.tabbar{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:560px;display:grid;grid-template-columns:repeat(5,1fr);background:var(--card);border-top:1px solid var(--line);padding:6px 6px calc(6px + var(--safe-b));z-index:20}
.tabbar a{display:flex;flex-direction:column;align-items:center;font-size:.74rem;color:var(--muted);text-decoration:none;padding:6px 0;border-radius:10px;min-height:48px;justify-content:center;font-weight:500}
.tabbar a span{font-size:1.2rem;line-height:1}.tabbar a[aria-current=page]{color:var(--ember)}
.toast{position:fixed;left:50%;bottom:calc(92px + var(--safe-b));transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;opacity:0;pointer-events:none;transition:.25s;max-width:90vw;z-index:30;font-weight:500}
.toast.show{opacity:1;transform:translateX(-50%)}
.steps{display:flex;gap:4px;margin-bottom:12px}.steps i{flex:1;height:5px;border-radius:9px;background:var(--line)}.steps i.on{background:var(--ember)}
.badge{display:inline-flex;gap:6px;align-items:center;padding:6px 10px;border-radius:999px;background:var(--amber-bg);font-size:.85rem;margin:3px}.badge.off{opacity:.4}
.bubble{padding:10px 14px;border-radius:16px;margin:8px 0;max-width:88%}.them{background:var(--amber-bg)}.you{background:var(--sage-bg);margin-left:auto}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.foot{font-size:.78rem;color:var(--muted);text-align:center;padding:10px}
.fb.neutral{background:var(--card);border-left:4px solid var(--line)}
.ref{margin:-6px 0 10px}
/* Lesson actions stay pinned just above the tab bar, so Continue is reachable without scrolling the lesson top away. */
.actbar{position:sticky;bottom:calc(64px + var(--safe-b));z-index:5;margin:8px -16px 0;padding:10px 16px;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(8px)}
.burst{position:fixed;left:50%;top:40%;width:0;height:0;pointer-events:none;z-index:60}
.burst i{position:absolute;font-style:normal;color:var(--saffron);font-size:1.3rem;transform:translate(-50%,-50%);animation:burst 1.2s ease-out forwards}
@keyframes burst{0%{opacity:1;transform:translate(-50%,-50%) rotate(var(--a)) translateY(0) scale(.6)}100%{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateY(calc(-1*var(--d))) scale(1.1)}}
