/* Student study UI. Loaded after styles.css (shared with the admin panel). Light: CSS only, no images or web fonts.
   Palette: bright, friendly greens/blues with warm accents; every text/background pair checked for contrast (WCAG AA). */
:root{
  --bg:#f4faef;--card:#fff;--ink:#3c3c3c;--mute:#6b6b6b;--line:#e5e5e5;
  --brand:#58cc02;--brand-lip:#3f9a00;--brand-ink:#153b00;--brand-text:#2f8f00;
  --blue:#1cb0f6;--blue-bg:#ddf4ff;--blue-line:#84d8ff;--blue-ink:#0b4f7a;
  --ok:#58cc02;--okbg:#d7ffb8;--ok-ink:#2b6b00;
  --bad:#ff4b4b;--badbg:#ffe3e3;--bad-ink:#b3261e;
  --warnbg:#fff3c4;--warn:#7a5400;--fox:#ff9600;--bee:#ffc800;
  --r:16px;--lip:4px
}
@media (prefers-color-scheme:dark){:root{
  --bg:#131f24;--card:#1f2c34;--ink:#f1f7fb;--mute:#9fb3bf;--line:#37464f;
  --brand:#58cc02;--brand-lip:#3f9a00;--brand-ink:#0f1f26;--brand-text:#7bdc2b;
  --blue-bg:#14323f;--blue-line:#1cb0f6;--blue-ink:#8fdcff;
  --okbg:#1c3a14;--ok-ink:#a5ed6e;--badbg:#3a1f24;--bad-ink:#ff9a9a;--warnbg:#3a2e12;--warn:#ffd35c}}
body{background:var(--bg);color:var(--ink);font-weight:500;-webkit-tap-highlight-color:transparent}
main{padding-bottom:104px}
body.in-session main{padding-bottom:168px}
body.in-session nav{display:none}
h1,h2{font-weight:800;letter-spacing:-.01em}
.mute{color:var(--mute)}
.card{border:2px solid var(--line);border-radius:var(--r);box-shadow:none;background:var(--card)}
/* chunky buttons: flat "lip" instead of blurred shadows */
button{font-weight:700;border:2px solid var(--line);border-bottom-width:var(--lip);border-radius:14px;background:var(--card);color:var(--blue-ink);transition:transform .06s}
button:active:not(:disabled){transform:translateY(2px);border-bottom-width:2px}
button.primary{background:var(--brand);border-color:var(--brand-lip);color:var(--brand-ink);letter-spacing:.02em;font-size:1.02rem}
button:disabled{opacity:.5}
button.link,.icon.plain{border:0;background:none}
.hero{padding:20px 4px 8px}.hero.center{text-align:center}
.hero h1{font-size:1.55rem;line-height:1.2;margin:8px 0 6px}
.hero .primary{margin-top:18px;min-height:54px;width:100%}
.hero button:not(.primary){margin-top:14px;width:100%}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 6px}
.chip{display:inline-flex;gap:6px;align-items:center;padding:6px 12px;border-radius:99px;font-weight:800;font-size:.9rem;background:var(--card);border:2px solid var(--line)}
.chip.fire{color:#b45f00;border-color:#ffd9a0;background:#fff4e0}
.chip.blue{color:var(--blue-ink);border-color:var(--blue-line);background:var(--blue-bg)}
@media (prefers-color-scheme:dark){.chip.fire{color:#ffbe5c;border-color:#6b4a14;background:#2f2410}}
.ring{--p:0;width:116px;height:116px;border-radius:50%;display:grid;place-items:center;margin:8px 0;
  background:conic-gradient(var(--brand) calc(var(--p)*1%),var(--line) calc(var(--p)*1%))}
.center .ring{margin-left:auto;margin-right:auto}
.ring>div{width:90px;height:90px;border-radius:50%;background:var(--bg);display:grid;place-content:center;text-align:center;line-height:1.1}
.ring b{font-size:1.4rem;font-weight:800}.ring small{color:var(--mute);font-size:.72rem}
.tile{display:flex;gap:12px;align-items:center;justify-content:space-between}
.tile h2{margin:0 0 2px}.tile p{margin:0}
.tile .primary{width:auto;margin:0;padding:12px 18px}
.tile.accent{border-color:var(--brand);background:var(--okbg)}
.tile.accent .mute{color:var(--ok-ink)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0}
.stats div{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:12px 8px;text-align:center}
.stats b{display:block;font-size:1.5rem;font-weight:800}.stats small{color:var(--mute);font-size:.75rem}
.stats div:nth-child(1) b{color:var(--brand-text)}.stats div:nth-child(2) b{color:var(--blue-ink)}.stats div:nth-child(3) b{color:#b45f00}
.explain{margin-top:14px;text-align:left;background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:12px 14px;font-size:.9rem;color:var(--mute)}
.insights{text-align:left;margin:10px auto 0;padding-left:20px;max-width:34em;color:var(--mute)}.insights b{color:var(--ink)}
/* session */
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:10px 0;background:var(--bg)}
.icon{min-height:40px;width:40px;padding:0;border-radius:50%;flex:none;font-size:1rem}
.dots{flex:1;display:flex;gap:4px;min-width:0}
.dots i{flex:1;height:10px;border-radius:99px;background:var(--line);max-width:30px}
.dots i.cur{background:var(--blue)}.dots i.ok{background:var(--brand)}.dots i.no{background:var(--bad)}
.dots i.ok.cur,.dots i.no.cur{outline:2px solid var(--blue);outline-offset:1px}
.dots i.go{cursor:pointer}
.stage{padding-top:4px}
.meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.topic{font-size:.8rem}
.tag{display:inline-block;font-size:.75rem;font-weight:800;padding:3px 10px;border-radius:99px;background:var(--blue-bg);border:2px solid var(--blue-line);color:var(--blue-ink)}
.tag.warn{background:var(--warnbg);color:var(--warn);border-color:var(--bee)}
.stmt{font-size:1.08rem;line-height:1.6;margin:12px 0 16px;font-weight:600;white-space:pre-line}
.support{max-height:16em;overflow:auto;-webkit-overflow-scrolling:touch;white-space:pre-line;background:var(--card);border:2px solid var(--line);border-left:5px solid var(--blue);border-radius:12px;padding:12px 14px;margin:10px 0;font-size:.97rem;line-height:1.6}
.opts{display:grid;gap:10px}
.optwrap .opt{margin:0;width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;padding:13px 14px;border-radius:16px;line-height:1.45;background:var(--card);color:var(--ink);font-weight:600}
.opt .letter{flex:none;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;border:2px solid var(--line);font-weight:800;font-size:.9rem;color:var(--mute)}
.opt.sel{border-color:var(--blue);background:var(--blue-bg);color:var(--blue-ink);box-shadow:none}
.opt.sel .letter{background:var(--blue);border-color:var(--blue);color:#fff}
.opt.right{border-color:var(--ok);background:var(--okbg);color:var(--ok-ink)}.opt.right .letter{background:var(--ok);border-color:var(--ok);color:var(--brand-ink)}
.opt.wrong{border-color:var(--bad);background:var(--badbg);color:var(--bad-ink)}.opt.wrong .letter{background:var(--bad);border-color:var(--bad);color:#fff}
.opt:disabled{opacity:1}
.otext{padding-top:4px;white-space:pre-line}
.why{margin:4px 4px 2px 44px;font-size:.9rem;color:var(--mute)}
.why summary{cursor:pointer;padding:6px 0;font-weight:800;font-size:.82rem;list-style:none}
.why summary::-webkit-details-marker{display:none}.why summary::before{content:"▸ "}.why[open] summary::before{content:"▾ "}
.why p{margin:0 0 6px;white-space:pre-wrap;line-height:1.5;color:var(--ink)}
.verdict{display:flex;flex-direction:column;gap:2px;margin:0 0 14px;padding:12px 14px;border-radius:16px;border:2px solid}
.verdict.ok{background:var(--okbg);border-color:var(--ok);color:var(--ok-ink)}
.verdict.no{background:var(--badbg);border-color:var(--bad);color:var(--bad-ink)}
.verdict b{font-size:1.1rem;font-weight:800}.verdict span{font-size:.93rem}
.verdict.ok{animation:pop .28s ease-out}
.src{font-size:.8rem;color:var(--mute);margin:10px 2px 0;white-space:pre-wrap}
.macete{margin:10px 0 0;padding:10px 12px;border-radius:14px;background:var(--warnbg);color:var(--warn);border:2px solid var(--bee);font-size:.92rem}
.rule{margin:14px 0 0;padding:12px 14px;border:2px dashed var(--bad);border-radius:16px}
.rule label{margin:0 0 6px;font-size:.92rem}.rule textarea{resize:vertical;border:2px solid var(--line)}
.actionbar{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--card);border-top:2px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));max-width:640px;margin:0 auto}
.actionbar .primary{margin:0;min-height:52px;width:100%}
.hint{margin:6px 0;text-align:center;color:var(--mute);font-size:.92rem;font-weight:700}
.actionbar .conf{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 0}
.conf button{display:flex;flex-direction:column;align-items:center;gap:0;min-height:58px;padding:8px 4px;border-radius:14px}
.conf button small{font-size:.72rem;color:inherit;opacity:.85;font-weight:600}.conf button b{font-size:.95rem;font-weight:800}
.conf .c1{background:#fff3c4;border-color:var(--bee);color:var(--warn)}
.conf .c2{background:var(--blue-bg);border-color:var(--blue-line);color:var(--blue-ink)}
.conf .c3{background:var(--okbg);border-color:var(--ok);color:var(--ok-ink)}
@media (prefers-color-scheme:dark){.conf .c1{background:#3a2e12}}
.navrow{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:8px}.navrow button{margin:0;min-height:50px}
.navrow.two{grid-template-columns:1fr 1.6fr}.navrow.two .hint{margin:0;align-self:center;text-align:center}
.timer{font-variant-numeric:tabular-nums;font-size:1.15rem;flex:1;text-align:center;font-weight:800}.timer.low{color:var(--bad-ink)}
.grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.grid button{padding:8px 0;min-height:40px}
.grid button.done{background:var(--okbg);border-color:var(--ok);color:var(--ok-ink)}.grid button.cur{outline:2px solid var(--blue)}
/* progress */
.bars{display:grid;gap:10px}
.brow{display:grid;grid-template-columns:minmax(80px,32%) 1fr auto;gap:10px;align-items:center;font-size:.9rem;font-weight:700}
.meter{height:12px;border-radius:99px;background:var(--line);overflow:hidden}.meter i{display:block;height:100%;background:var(--brand);border-radius:99px}
.meter.c1 i{background:var(--bee)}.meter.c2 i{background:var(--blue)}
.brow small{color:var(--mute);min-width:3.5em;text-align:right}
.spark{display:flex;gap:4px;align-items:flex-end;height:70px}.spark i{flex:1;background:var(--line);border-radius:6px 6px 0 0}.spark i.on{background:var(--brand)}
/* nav */
nav{background:var(--card);border-top:2px solid var(--line)}
nav button{border:0;border-radius:0;background:none;color:var(--mute);font-weight:700;font-size:.85rem;padding:14px 2px}
nav button.on{color:var(--blue-ink);box-shadow:inset 0 3px 0 var(--blue);background:var(--blue-bg)}
/* dialog, toast, confetti */
.dlg{border:2px solid var(--line);border-radius:var(--r);background:var(--card);color:var(--ink);width:min(92vw,440px);padding:16px}
.dlg::backdrop{background:rgba(0,0,0,.45)}
.dlg-actions{display:flex;gap:8px;margin-top:12px}.dlg-actions button{flex:1;margin:0}
.toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:99px;z-index:20;max-width:92vw;font-size:.9rem;font-weight:700}
.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:30}
.confetti i{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation:fall 1.8s ease-in forwards}
@keyframes fall{to{transform:translateY(105vh) rotate(540deg);opacity:.9}}
@keyframes pop{0%{transform:scale(.96)}60%{transform:scale(1.02)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.confetti{display:none}}
@media (min-width:720px){.stmt{font-size:1.14rem}}

/* completed ring: solid light green with a check */
.ring.full{background:var(--brand)}
.ring.full>div{background:var(--okbg)}.ring.full b{color:var(--ok-ink)}.ring.full small{color:var(--ok-ink)}
.big{font-size:3.2rem;line-height:1;margin:6px 0}
/* revisão */
.garden{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 0}
.plot{background:var(--card);border:2px solid var(--line);border-radius:var(--r);padding:12px;display:grid;justify-items:center;gap:0;text-align:center}
.plot .pic{font-size:1.9rem}.plot b{font-size:1.5rem;font-weight:800}.plot small{font-weight:800}.plot em{font-style:normal;font-size:.75rem;color:var(--mute)}
.plot:nth-child(1){background:#fff8e1;border-color:var(--bee)}.plot:nth-child(2){background:var(--okbg);border-color:var(--ok)}
.plot:nth-child(3){background:var(--blue-bg);border-color:var(--blue-line)}.plot:nth-child(4){background:#f3e8ff;border-color:#ce82ff}
.plot:nth-child(n) small,.plot:nth-child(n) b{color:var(--ink)}
@media (prefers-color-scheme:dark){.plot:nth-child(1){background:#3a2e12}.plot:nth-child(4){background:#2d1f3d}.plot:nth-child(2){background:var(--okbg)}}
.lock{text-align:center;padding:18px 14px;border:2px dashed var(--line);border-radius:var(--r);margin-top:14px;background:var(--card)}
.lock p{margin:4px 0}
.lock .bar{margin:12px 0 0;height:12px}.lock .bar>span{background:var(--blue)}
/* pausa motivacional */
.break{text-align:center;padding:36px 8px}
.break .big{font-size:4.2rem;animation:pop .4s ease-out}
.break .phrase{font-size:1.3rem;line-height:1.5;font-weight:800;margin:16px auto;max-width:26em}
/* trilha */
.trail{display:grid;gap:0;margin-top:10px;position:relative}
.node{display:flex;gap:14px;align-items:center;padding:10px 0;position:relative}
.node:not(:last-child)::after{content:"";position:absolute;left:27px;top:68px;bottom:-12px;width:0;border-left:4px dotted var(--line)}
.node:nth-child(4n+2){margin-left:22px}.node:nth-child(4n+3){margin-left:44px}.node:nth-child(4n+4){margin-left:22px}
.disc{flex:none;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:1.3rem;border:3px solid var(--line);border-bottom-width:6px;background:var(--card);color:var(--mute)}
.node.done .disc{background:var(--brand);border-color:var(--brand-lip);color:var(--brand-ink)}
.node.today .disc{background:var(--blue);border-color:#1899d6;color:#fff;animation:pulse 1.6s ease-in-out infinite}
.node.partial .disc{background:var(--fox);border-color:#cc7a00;color:#3b2200}
.node.missed .disc{background:var(--badbg);border-color:var(--bad);color:var(--bad-ink)}
.node.locked{opacity:.6}
.node.ahead .disc{background:var(--card);border-color:var(--blue);color:var(--blue)}
.ninfo{display:grid;gap:2px}.ninfo small{color:var(--mute);font-weight:700}
.subjects{display:flex;gap:6px}.subj{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:1rem;background:var(--card);border:2px solid var(--line);filter:grayscale(1);opacity:.55}
.subj.done{filter:none;opacity:1;background:var(--okbg);border-color:var(--ok)}.subj.part{filter:none;opacity:1;background:#fff3c4;border-color:var(--bee)}
.stars{display:flex;gap:2px;font-size:1.25rem;line-height:1}.stars span{color:var(--line)}.stars span.on{color:#ffb800;text-shadow:0 1px 0 #c98600}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(28,176,246,.45)}50%{box-shadow:0 0 0 10px rgba(28,176,246,0)}}

.node .catch{margin-top:8px;padding:8px 14px;font-size:.9rem}

.vids{margin-top:12px;border:2px solid var(--line);border-radius:14px;padding:10px 14px;background:#fff}
.vids summary{font-weight:800;cursor:pointer;color:var(--blue-ink)}
.vids ul{margin:10px 0;padding-left:18px}.vids li{margin:6px 0}

/* Hoje: compact home */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 2px 6px}
.greet{margin:0;font-weight:800;font-size:1.05rem}
.topbar .chips{margin:0;flex-wrap:nowrap}.topbar .chip{padding:4px 10px;font-size:.85rem}
.card.today{display:flex;gap:16px;align-items:center;padding:16px;margin:8px 0}
.today .ring{width:92px;height:92px;margin:0;flex:none}.today .ring>div{width:70px;height:70px}
.today .ring b{font-size:1.15rem}
.today .big{font-size:2.6rem;margin:0;flex:none}
.today-body{flex:1;min-width:0}
.today-body h1{font-size:1.3rem;line-height:1.2;margin:0}
.today-body p{margin:2px 0 0}
.today-body button{margin-top:12px;width:100%;min-height:46px}
.today-body .ghost{background:none;border-color:var(--line);color:var(--blue-ink);min-height:40px}
.card.rows{padding:0;overflow:hidden;margin:12px 0}
.rowlink{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-radius:0;border-top:2px solid var(--line);background:none;color:var(--ink);padding:12px 14px;min-height:60px}
.rowlink:first-child{border-top:0}
.rowlink:active:not(:disabled){transform:none;background:var(--blue-bg)}
.rowlink .ico{flex:none;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--blue-bg);font-size:1.15rem}
.rowlink.accent .ico{background:var(--okbg)}.rowlink.warn .ico{background:var(--warnbg)}
.rl-text{flex:1;min-width:0;display:grid;gap:1px}
.rl-text b{font-weight:800;font-size:.98rem}
.rl-text small{color:var(--mute);font-size:.8rem;font-weight:600;line-height:1.3}
.rowlink .badge{flex:none;min-width:24px;padding:2px 8px;border-radius:99px;background:var(--brand);color:var(--brand-ink);font-weight:800;font-size:.8rem;text-align:center}
.rowlink .chev{flex:none;color:var(--mute);font-size:1.4rem;line-height:1}
.note{text-align:center;margin:6px 0}
/* nav with icons */
nav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:.72rem;padding:8px 2px 10px}
nav button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media (min-width:720px){main{padding-top:24px}}
.today .ring.full b{font-size:.98rem}

/* Revisar / Progresso / Simulado / Conta: compact */
.garden{grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}
.plot{padding:10px 4px;border-radius:14px}.plot .pic{font-size:1.4rem}.plot b{font-size:1.25rem}.plot small{font-size:.72rem}
details.how{padding:0}details.how summary{cursor:pointer;font-weight:800;padding:14px 16px;list-style:none;display:flex;justify-content:space-between}
details.how summary::-webkit-details-marker{display:none}details.how summary::after{content:"+";color:var(--mute);font-size:1.2rem;line-height:1}
details.how[open] summary::after{content:"–"}
details.how>:not(summary){margin:0 16px 14px}
.mockhead{padding:16px;margin:8px 0}.mockhead h1{font-size:1.3rem;margin:0 0 8px}.mockhead .chips{margin:0 0 8px}.mockhead p{margin:0 0 12px}
.mockhead .primary{margin:0;width:100%;min-height:50px}
.mockhead .lock{margin:0;padding:12px;border-radius:14px}.mockhead .lock .bar{margin-top:8px}
.card h2{font-size:1rem;margin:0 0 10px}
.card .spark{height:56px}
.trail{margin-top:6px}
.node,.node:nth-child(n){margin-left:0;padding:8px 0;gap:12px;border-top:2px solid var(--line)}
.node:first-child{border-top:0}
.node:not(:last-child)::after{display:none}
.disc{width:42px;height:42px;font-size:1.05rem;border-width:3px;border-bottom-width:4px}
.ninfo{flex:1;min-width:0;gap:4px}.ninfo small{font-size:.78rem}
.subj{width:24px;height:24px;border-radius:8px;font-size:.78rem}.subjects{gap:4px}
.stars{font-size:1rem}
.node .catch{margin:0;flex:none;padding:6px 14px;min-height:38px;font-size:.85rem}
.profile{text-align:center;padding:24px 16px;margin:12px 0;display:grid;justify-items:center;gap:8px}
.profile h1{margin:0;font-size:1.3rem}.profile p{margin:0}
.avatar{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--blue-bg);border:3px solid var(--blue-line);color:var(--blue-ink);font-size:1.8rem;font-weight:800}
button.ghost.wide{width:100%;min-height:46px;background:none;color:var(--bad-ink);border-color:var(--line)}
.brand-foot{text-align:center;color:var(--mute);font-size:.78rem;letter-spacing:.04em;margin-top:18px}.brand-foot b{letter-spacing:.14em}

/* gamificação leve */
.week{display:flex;gap:6px;justify-content:space-between}
.wd{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1}
.wd i{width:26px;height:26px;border-radius:50%;background:var(--line);color:#fff;font-style:normal;font-weight:800;font-size:.8rem;display:grid;place-items:center}
.wd.on i{background:var(--fox)}
.wd.now i{box-shadow:0 0 0 3px var(--blue-line)}
.wd small{font-size:.7rem;color:var(--mute);font-weight:700}
.weekcard{padding:10px 14px;display:grid;gap:6px}
.streak{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;align-items:center;animation:pop .5s ease-out}
.streak .week{grid-column:1/-1}
.streak .n{font-size:1.2rem;display:block}
.flame{font-size:2.2rem;animation:flame 1.2s ease-in-out infinite alternate}
@keyframes flame{from{transform:scale(1) rotate(-3deg)}to{transform:scale(1.12) rotate(3deg)}}
.chest{width:100%;display:grid;gap:2px;justify-items:center;padding:14px;border:2px dashed var(--bee);border-radius:var(--r);background:var(--warnbg);color:var(--warn);cursor:pointer;font:inherit;margin:8px 0;animation:pop .6s ease-out}
.chest .lid{font-size:2rem;animation:wobble 1.4s ease-in-out infinite}
.chest.open{border-style:solid;cursor:default}.chest.open .lid{animation:none}
@keyframes wobble{0%,100%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}
.soundopt{display:flex;align-items:center;gap:10px;padding:12px 14px}
.soundopt input{width:20px;height:20px;accent-color:var(--brand)}
.chestwrap{display:grid;gap:6px}
.chestvid{display:grid;gap:2px;text-align:left;padding:10px 14px;text-decoration:none}
.chestvid small{opacity:.8;font-weight:600}
.lesson{border-color:var(--blue-line);background:var(--blue-bg);color:var(--blue-ink);display:grid;gap:6px}
.lesson h2{margin:0;font-size:1.05rem}.lesson p{margin:0}.lesson .mute{color:var(--blue-ink);opacity:.75}
.tag.real{background:var(--okbg);color:var(--ok-ink)}
details.made{margin-top:8px}

/* Nik, o mascote */
.nik{display:block;height:auto;flex:none;user-select:none;-webkit-user-drag:none;pointer-events:none;animation:bob 3.2s ease-in-out infinite}
.nik.float{margin:0 auto}
@keyframes bob{50%{transform:translateY(-4px)}}
.nikrow{display:flex;align-items:flex-end;gap:8px;margin:0 0 10px}
.bubble{position:relative;flex:1;margin:0 0 14px;padding:10px 12px;background:var(--card);border:2px solid var(--line);border-radius:16px;font-weight:700;font-size:.95rem;line-height:1.3}
.bubble::before{content:"";position:absolute;left:-8px;bottom:14px;width:12px;height:12px;background:var(--card);border-left:2px solid var(--line);border-bottom:2px solid var(--line);transform:rotate(45deg)}
.verdict.withnik{flex-direction:row;align-items:center;gap:10px}.verdict .vtext{display:flex;flex-direction:column;gap:2px;min-width:0}
.lesson .lhead{display:flex;align-items:center;gap:8px}
.mockhead{position:relative}.mockhead .mockpic{position:absolute;right:12px;top:10px}
.lock{display:grid;gap:6px;justify-items:center;text-align:center}
.hero.center .nik{margin-bottom:6px}
.chest .nik{margin:0 auto}
@media (prefers-reduced-motion:reduce){.nik{animation:none}}
.vgroup{display:grid;gap:8px;margin:12px 0}
.chestvid{color:inherit;background:var(--card);border:2px solid var(--line);border-bottom-width:4px;border-radius:14px;font-weight:800}.chestvid small{color:var(--mute)}.vgroup{margin:14px 0}

/* Entrada: boas-vindas, perguntas do Nik e cadastro do teste grátis */
.welcome{min-height:calc(100svh - 32px);display:flex;flex-direction:column;justify-content:space-between;gap:16px}
.welcome-hero{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px}
.welcome-hero h1{font-size:2rem;margin:10px 0 0}.welcome-hero p{max-width:20em;margin:0}
.onb-actions{position:sticky;bottom:0;display:grid;gap:12px;padding:14px 0 calc(14px + env(safe-area-inset-bottom));background:linear-gradient(to bottom,transparent,var(--bg) 22%)}
.onb-actions:empty{display:none}
.onb-actions button{width:100%;min-height:54px;margin:0}
button.outline{background:none;border-color:var(--line);color:var(--blue-ink);letter-spacing:.02em}
button.outline.wide{width:100%;min-height:50px;margin-top:4px}
.onb-top{display:flex;align-items:center;gap:12px;padding:6px 0 14px}
.onb-bar{flex:1;height:14px;background:var(--line);border-radius:99px;overflow:hidden}
.onb-bar i{display:block;height:100%;background:var(--brand);border-radius:99px;transition:width .25s}
.choices{display:grid;gap:10px;margin:14px 0}
.choice{width:100%;text-align:left;min-height:56px;padding:14px 16px;background:var(--card);color:var(--ink);font-size:1.02rem;border-radius:16px}
.choice[aria-pressed="true"]{border-color:var(--blue);background:var(--blue-bg);color:var(--blue-ink)}
.freebox{background:var(--okbg);border:2px solid var(--brand);border-radius:var(--r);padding:12px 14px;margin:12px 0;color:var(--ok-ink)}.freebox p{margin:4px 0 0}
.insights.plain{list-style:disc;max-width:none;margin:0;color:var(--ink)}.insights.plain li{margin:6px 0}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
.signup .check{display:flex;gap:10px;align-items:flex-start;font-weight:500;font-size:.9rem;margin-top:14px}
.signup .check input{width:22px;height:22px;margin-top:2px;flex:none}
.signup .primary{min-height:54px}
.signup .outline{width:100%;margin-top:10px}
.small{font-size:.85rem}
.freepath{display:flex;gap:8px;list-style:none;margin:10px 0 2px;padding:0}
.freepath li{flex:1;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:800;border:2px solid var(--line);color:var(--mute);background:var(--card)}
.freepath li.done{background:var(--brand);border-color:var(--brand-lip);color:var(--brand-ink)}
.freepath li.today{border-color:var(--blue);background:var(--blue-bg);color:var(--blue-ink)}
.freepath li.past{opacity:.6}
[hidden]{display:none!important}

/* lembrete do Nik */
.remind-head{display:flex;gap:12px;align-items:center;margin-bottom:8px}
.remind-head h2{margin:0}
.remind .chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.remind .ghost{margin-top:4px}

/* ===== v2: mais limpo ===== */
:root{--mute:#667085;--soft:#f6f9f3;--hair:#e8eee3}
@media (prefers-color-scheme:dark){:root{--mute:#b0c0cb;--hair:#2a3a43}}
/* cartão = superfície, não caixa: sem contorno grosso */
.card{border:0;box-shadow:0 0 0 1px var(--hair)}
@media (prefers-color-scheme:dark){.card{box-shadow:none}}
.bubble,.plot,.stats div,.explain{border-width:1px}
.rowlink{border-top-width:1px;border-top-color:var(--hair)}
.card.rows{margin:10px 0}
.rowlink{padding:14px 16px;min-height:64px}
.rowlink .ico{width:40px;height:40px;border-radius:12px;color:var(--blue-ink)}
.rowlink .ico svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.rowlink.accent .ico{color:var(--ok-ink)}.rowlink.warn .ico{color:var(--warn)}
.card{padding:16px}
.card.rows,.card.today,details.how{padding-left:0;padding-right:0}
.card.today{padding:16px}
.grow{flex:1;min-width:0}
.card .row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.card .row h2{margin:0}
.card h2{font-size:1.05rem}
main > *+*{margin-top:12px}
nav{border-top-width:1px;border-top-color:var(--hair)}
/* Por matéria: cor diz algo (meta 70%) */
.subjbars{display:grid;gap:16px}
.sbar{display:grid;gap:5px}
.sbar-top{display:flex;justify-content:space-between;align-items:baseline;font-weight:800}
.sbar-top b{font-size:1.05rem}
.meter.goal{position:relative;height:12px;overflow:visible;background:var(--hair)}
.meter.goal i{border-radius:99px}
.meter.goal::after{content:"";position:absolute;left:70%;top:-3px;bottom:-3px;width:2px;border-radius:2px;background:var(--mute);opacity:.55}
.sbar.good .meter i{background:var(--brand)}.sbar.good .sbar-top b{color:var(--ok-ink)}
.sbar.mid .meter i{background:var(--fox)}.sbar.mid .sbar-top b{color:var(--warn)}
.sbar.low .meter i{background:var(--bad)}.sbar.low .sbar-top b{color:var(--bad-ink)}
.sbar.few .meter i{background:var(--blue-line)}.sbar.few .sbar-top b{color:var(--mute)}
.sbar small{font-size:.78rem}
/* Próximo passo */
.card.next{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r);background:var(--blue-bg);box-shadow:none}
.card.next .grow{display:grid;gap:1px}
.card.next b{font-size:1.02rem}
.card.next button{flex:none;min-height:44px;padding:0 14px;font-size:.9rem}
/* últimos 14 dias: calendário */
.heat{display:grid;grid-template-columns:repeat(14,1fr);gap:4px}
.hc{display:grid;gap:4px;justify-items:center}
.hc i{width:100%;aspect-ratio:1;max-width:22px;border-radius:7px;background:var(--hair)}
.hc i.l1{background:#b9ec8a}.hc i.l2{background:#7ed321}.hc i.l3{background:var(--brand-lip)}
@media (prefers-color-scheme:dark){.hc i.l1{background:#2f5a1a}.hc i.l2{background:#3f8a12}.hc i.l3{background:var(--brand)}}
.hc small{font-size:.62rem;color:var(--mute);font-weight:700}
.hc.now small{color:var(--ink)}.hc.now i{outline:2px solid var(--blue);outline-offset:1px}
/* trilha: resultado por matéria */
.subjects{flex-wrap:wrap}
.subj{width:auto;height:auto;padding:2px 8px;border-radius:99px;font-size:.72rem;font-weight:800;filter:none;opacity:1;background:var(--soft);border:1px solid var(--hair);color:var(--mute);white-space:nowrap}
.subj.done{background:var(--okbg);border-color:transparent;color:var(--ok-ink)}
.subj.part{background:var(--warnbg);border-color:transparent;color:var(--warn)}
.subj.bad{background:var(--badbg);border-color:transparent;color:var(--bad-ink)}
@media (prefers-color-scheme:dark){.subj{background:#1a262d}}
.node,.node:nth-child(n){border-top-width:1px;border-top-color:var(--hair)}
/* Conta: "Sair" discreto */
button.quiet{display:block;margin:18px auto 0;border:0;background:none;color:var(--mute);font-weight:700;text-decoration:underline;text-underline-offset:3px;min-height:44px;padding:0 16px}
.profile{padding:20px 16px}

/* próximo passo: texto em cima, botão embaixo (nada espremido) */
.card.next{display:grid;gap:12px}
.next-top{display:flex;align-items:center;gap:12px;min-width:0}
.card.next b{font-size:1.1rem;line-height:1.25}
.card.next button{width:100%;min-height:46px}
/* lembrete: título alinhado com o Nik */
.remind-head h2,.remind-head p{margin:0}
.remind-head>div{display:grid;gap:2px}
/* cartão de compartilhar */
.dlg.share{max-width:min(92vw,420px);padding:16px;text-align:center}
.share-pic{display:block;width:100%;max-height:58vh;object-fit:contain;border-radius:14px;margin:8px 0 12px;background:#10252d}
.dlg.share .dlg-actions{display:grid;gap:8px}
.btn-link{display:grid;place-items:center;min-height:48px;border:2px solid var(--line);border-bottom-width:4px;border-radius:14px;font-weight:700;text-decoration:none;color:var(--blue-ink);background:var(--card)}
.dlg.share .quiet{margin:8px auto 0}

/* reconhecimento: seguidas, acima de 90%, selo Mestre */
.streakline{margin-top:4px;font-weight:800;color:var(--fox)}
.verdict.ok .streakline{color:var(--ok-ink)}
.card.praise{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--okbg);box-shadow:none;color:var(--ok-ink)}
.card.praise small{color:var(--ok-ink);opacity:.85;display:block}
.card.praise b{font-size:1.05rem}
.master{font-style:normal;margin-left:8px;padding:2px 8px;border-radius:99px;background:var(--bee);color:#3b2a00;font-size:.7rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}

/* tela de recompensa (fim do dia) */
.rw{min-height:100dvh;display:flex;flex-direction:column;padding:16px 0 0}
.rw-dots{display:flex;gap:6px;justify-content:center;margin:4px 0 8px}
.rw-dots i{height:6px;flex:1;max-width:48px;border-radius:3px;background:var(--line,#e5e7eb)}
.rw-dots i.on{background:var(--brand,#f97316)}
.rw-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;animation:rwin .35s ease both}
.rw-main h1{margin:6px 0 0;font-size:1.7rem}
.rw-main p{margin:0;max-width:30ch}
.rw-tiles{display:flex;gap:12px;margin-top:14px;width:100%;max-width:340px}
.rw-tile{flex:1;border-radius:16px;padding:10px 8px 14px;border:2px solid var(--line,#e5e7eb);display:grid;gap:4px}
.rw-tile small{font-size:.7rem;font-weight:800;letter-spacing:.06em;color:var(--mute,#6b7280)}
.rw-tile b{font-size:2rem;line-height:1.1}
.rw-tile em{font-style:normal;font-size:.72rem;font-weight:800;letter-spacing:.06em}
.rw-tile.a.great{border-color:#16a34a;color:#15803d}.rw-tile.a.good{border-color:#f59e0b;color:#b45309}.rw-tile.a.train{border-color:#94a3b8;color:#475569}
.rw-stars{display:flex;gap:10px;font-size:3.6rem;line-height:1;margin-top:10px}
.rw-stars span{color:#d1d5db;transform:scale(.4);opacity:0;animation:rwstar .5s cubic-bezier(.2,1.4,.4,1) forwards}
.rw-stars span.on{color:#f59e0b}
.rw-foot{margin-top:12px;font-weight:700;color:var(--mute,#6b7280)}
.rw-streak{display:grid;justify-items:center;gap:2px;margin-top:6px}
.rw-flame{font-size:3rem;animation:rwstar .6s ease both}
.rw-num{font-size:4.6rem;line-height:1;color:#f97316}
.rw-streak .week{margin-top:14px}
.rw-btns{display:grid;grid-template-columns:1fr 54px;gap:10px}
.rw-btns .rw-share{padding:0;display:grid;place-items:center}
.rw-btns .rw-share svg{width:22px;height:22px}
@keyframes rwin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes rwstar{to{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.rw-stars span{animation:none;transform:none;opacity:1}.rw-main,.rw-flame{animation:none}}
.rw-btns .rw-share{color:inherit}.rw-btns .rw-share svg{stroke:currentColor}
@media (prefers-color-scheme:dark){.rw-tile.a.great{color:#4ade80}.rw-tile.a.good{color:#fbbf24}.rw-tile.a.train{color:#cbd5e1}.rw-btns .rw-share{color:#e5e7eb}}

/* abertura: continua verde como a splash do Android, sem faixa branca antes do app montar */
html:has(.boot){background:#4fcb0b}
body:has(#app .boot){background:#4fcb0b}
.boot{position:fixed;inset:0;display:grid;place-items:center;background:#4fcb0b}
.boot img{display:block;width:144px;height:144px}
body:has(.boot) #nav{display:none}

.legal-links{text-align:center;font-size:.85rem;color:var(--mute);margin:14px 0 4px}.legal-links a{color:inherit}

.vnote{font-size:.7rem;line-height:1.35;color:var(--mute,#6b7280);text-align:center;margin:.5rem 1rem}

/* Baú de bônus */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.tile{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;min-height:84px;padding:12px;border:2px solid var(--line);border-radius:var(--r);background:var(--card);color:var(--ink)}
.tile b{font-size:.98rem;line-height:1.2}.tile small{font-size:.78rem}
.bonusstat{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center;padding:12px}
.bonusstat .n{display:block;font-size:1.5rem}
.offnote{margin:8px 0;padding:10px 12px;border-radius:12px;background:var(--warnbg);color:var(--warn);font-weight:700;text-align:center}
@media (max-width:340px){.tiles{grid-template-columns:1fr}}
.tile{position:relative;align-items:center;text-align:center;gap:4px;padding:10px 8px 8px;border:2px solid var(--c,var(--line));border-bottom-width:5px;border-radius:18px;background:var(--card)}
.tile:active{transform:translateY(2px);border-bottom-width:3px}
.tile img{width:100%;height:auto;max-width:124px;aspect-ratio:1;object-fit:contain}
.tile .meter{width:100%;height:8px}.tile .meter i{background:var(--c,var(--brand))}
.tile .tcount{font-weight:800}.tile .tstat{font-size:.72rem;color:var(--mute)}
.tile.ready{background:var(--card)}
.catart{width:44px;height:44px;object-fit:contain;flex:none}
.meta:has(.catart){align-items:center}
.dlg select{width:100%;min-height:48px;margin:8px 0;padding:0 12px;border:2px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);font:inherit}
.tile .pendbadge{position:absolute;top:6px;right:6px;min-width:24px;height:24px;padding:0 6px;border-radius:99px;background:var(--c);color:#fff;font-weight:800;font-size:.8rem;display:grid;place-items:center}
.dlg.sheet{width:min(92vw,420px)}
.sheethead{display:flex;gap:12px;align-items:center}.sheethead img{width:72px;height:72px;object-fit:contain}.sheethead h2{margin:0}
.sizes{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.sizes button{flex:1 1 72px;min-height:48px}
.bonusbar{display:flex;gap:10px;align-items:center}.bonusbar .binner{flex:1;min-width:0}
.homebtn{flex:none;width:52px;height:52px;border-radius:16px;border:2px solid var(--line);background:var(--card);display:grid;place-items:center;margin:0}
.homebtn svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

.offtag{display:inline-flex;align-items:center;gap:4px;color:#e5383b;font-weight:800;vertical-align:middle}
.offtag svg{width:1.05em;height:1.05em;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
