:root{
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  --paper:#ECEEE9; --card:#FFFFFF; --ink:#1D2433; --mute:#586173; --rule:#D3D7CF;
  --sign:#F3B600; --sign-ink:#15171B;
  --ok:#17834A; --okbg:#DDF1E4; --bad:#B8322A; --badbg:#F8E0DD;
  --A1:#2F9B57; --A2:#1E6CC0; --B1:#D26F00; --B2:#7B41B3; --C1:#C33A2F;
  --focus:#1E6CC0;
  --disp:"Barlow Condensed","Arial Narrow","Roboto Condensed",Arial,sans-serif;
  --body:Barlow,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#11151C; --card:#1A202B; --ink:#E7EAF0; --mute:#9AA3B4; --rule:#2A3242;
    --ok:#4CC27F; --okbg:#153524; --bad:#F07267; --badbg:#3A1C1A;
    --A1:#45B86E; --A2:#4C92DE; --B1:#F0912B; --B2:#A873DB; --C1:#E25A4E; --focus:#6FA8E8;
  }
}
:root[data-theme="dark"]{
  --paper:#11151C; --card:#1A202B; --ink:#E7EAF0; --mute:#9AA3B4; --rule:#2A3242;
  --ok:#4CC27F; --okbg:#153524; --bad:#F07267; --badbg:#3A1C1A;
  --A1:#45B86E; --A2:#4C92DE; --B1:#F0912B; --B2:#A873DB; --C1:#E25A4E; --focus:#6FA8E8;
}
html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 64px)}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.55 var(--body);-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
img{max-width:100%}
.wrap{max-width:760px;margin:0 auto;padding:0 18px 96px}
h1,h2,h3{font-family:var(--disp);letter-spacing:.005em;line-height:1.1;margin:0}
p{margin:0 0 .6em}
.mute{color:var(--mute)}
.small{font-size:14px}

/* header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;background:var(--paper);border-bottom:1px solid var(--rule)}
.top-in{max-width:760px;margin:0 auto;padding:10px 18px;display:flex;align-items:center;gap:12px}
.brand{display:flex;align-items:center;gap:10px;background:none;border:0;padding:0}
.brand b{font-family:var(--disp);font-weight:800;font-size:24px;letter-spacing:.01em}
.lbadge{display:inline-grid;place-items:center;min-width:40px;height:28px;padding:0 8px;border-radius:14px;background:var(--c,var(--A1));color:#fff;font-family:var(--disp);font-weight:800;font-size:18px;line-height:1}
.stats{margin-left:auto;display:flex;gap:6px;align-items:center}
.pill{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--rule);background:var(--card);border-radius:999px;padding:3px 10px;font-size:14px;font-weight:600;white-space:nowrap}
button.pill:hover{border-color:var(--ink)}

/* Ortsschild */
.sign{background:var(--sign);color:var(--sign-ink);border-radius:10px;padding:6px;display:inline-block;max-width:100%;box-shadow:0 1px 0 rgba(0,0,0,.25)}
.sign-in{border:3px solid var(--sign-ink);border-radius:6px;padding:10px 22px 12px;text-align:center}
.sign-in b{display:block;font-family:var(--disp);font-weight:800;font-size:clamp(34px,8vw,54px);line-height:1;letter-spacing:.01em}
.sign-in span{display:block;font-family:var(--disp);font-weight:700;font-size:clamp(17px,3.6vw,22px);line-height:1.15;margin-top:4px}

/* hero */
.hero{padding:30px 0 22px;display:grid;gap:16px;justify-items:start}
.hero .ann{font-family:var(--disp);font-weight:700;font-size:20px;color:var(--mute)}
.hero .ep-name{font-family:var(--disp);font-size:30px;font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:2px solid var(--ink);background:var(--ink);color:var(--paper);padding:10px 20px;border-radius:10px;font-weight:700;font-size:17px;min-height:46px}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.sm{padding:6px 12px;min-height:36px;font-size:15px;border-width:1.5px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.lvl{background:var(--c);border-color:var(--c);color:#fff}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 30px}
.quick button{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:14px 12px;text-align:left;display:grid;gap:2px}
.quick button:hover{border-color:var(--ink)}
.quick b{font-family:var(--disp);font-size:21px;font-weight:700}
.quick span{font-size:14px;color:var(--mute);line-height:1.3}
@media (max-width:520px){.quick{grid-template-columns:1fr}}

/* line map */
.lvl{--c:var(--A1);margin-bottom:6px}
.lvl-h{display:flex;align-items:center;gap:14px;padding:14px 0 10px}
.lvl-h h2{font-size:27px;font-weight:800}
.lvl-h p{margin:0;font-size:14px;color:var(--mute)}
.lvl-h .lbadge{background:var(--c);height:34px;min-width:50px;font-size:21px;border-radius:17px}
.stops{list-style:none;margin:0;padding:0;position:relative}
.stops::before{content:"";position:absolute;left:21px;top:-10px;bottom:-10px;width:8px;background:var(--c);border-radius:4px}
.stop>button{position:relative;width:100%;background:none;border:0;text-align:left;padding:12px 8px 12px 64px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 12px;border-radius:10px}
.stop>button:hover{background:var(--card)}
.dot{position:absolute;left:12px;top:50%;width:26px;height:26px;margin-top:-13px;border-radius:50%;background:var(--card);border:5px solid var(--c)}
.stop.done .dot{background:var(--c)}
.stop.cur .dot{width:34px;height:34px;margin-top:-17px;left:8px;border-width:6px}
.stop.cur .dot::after{content:"";position:absolute;inset:-9px;border-radius:50%;border:3px solid var(--c);opacity:.5;animation:ping 1.8s ease-out infinite}
@keyframes ping{from{transform:scale(.7);opacity:.7}to{transform:scale(1.25);opacity:0}}
@media (prefers-reduced-motion:reduce){.stop.cur .dot::after{animation:none}}
.st-t{font-family:var(--disp);font-size:23px;font-weight:700;line-height:1.1}
.st-o{grid-column:1;font-size:14px;color:var(--mute)}
.chips{grid-row:1/3;grid-column:2;display:flex;gap:4px;align-items:center}
.chip{width:24px;height:24px;border-radius:6px;border:1.5px solid var(--c);display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--c)}
.chip.on{background:var(--c);color:#fff}
.xtag{font-size:12px;font-weight:700;border:1px solid var(--c);color:var(--c);border-radius:4px;padding:0 5px;margin-left:6px;vertical-align:middle;font-family:var(--body)}

/* episode */
.back{background:none;border:0;padding:14px 0 6px;font-weight:600;color:var(--mute)}
.back:hover{color:var(--ink)}
.ep-head{display:grid;gap:12px;padding:6px 0 18px;justify-items:start}
.ep-head h1{font-size:34px;font-weight:800}
.steps{display:grid;grid-template-columns:repeat(5,1fr);position:relative;margin:0 0 22px}
.steps::before{content:"";position:absolute;left:10%;right:10%;top:15px;height:6px;background:var(--rule);border-radius:3px}
.steps button{position:relative;background:none;border:0;padding:0;display:grid;justify-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--mute)}
.steps .sd{width:36px;height:36px;border-radius:50%;background:var(--card);border:4px solid var(--rule);display:grid;place-items:center;font-size:15px}
.steps button.done .sd{border-color:var(--c);background:var(--c);color:#fff}
.steps button.act{color:var(--ink)}
.steps button.act .sd{border-color:var(--c);box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 25%,transparent)}
.panel{background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:20px}
.panel+.panel{margin-top:14px}
.panel h3{font-size:24px;font-weight:700;margin-bottom:8px}

/* player */
.vor{border-left:5px solid var(--c);padding:4px 0 4px 14px;margin-bottom:16px}
.vor b{font-family:var(--disp);font-size:22px;font-weight:700;display:block}
.pctl{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.play{width:62px;height:62px;border-radius:50%;border:0;background:var(--c);color:#fff;font-size:24px;display:grid;place-items:center}
.seg{display:inline-flex;border:1px solid var(--rule);border-radius:9px;overflow:hidden}
.seg button{border:0;background:transparent;padding:6px 10px;font-size:14px;font-weight:600}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.tx{list-style:none;margin:0;padding:0;display:grid;gap:4px;max-height:52vh;overflow:auto;border-top:1px solid var(--rule);padding-top:10px}
.tx li button{width:100%;text-align:left;background:none;border:0;border-radius:8px;padding:7px 10px;display:grid;grid-template-columns:96px 1fr;gap:10px}
.tx li button:hover{background:var(--paper)}
.tx .who{font-weight:700;font-size:14px;color:var(--mute);padding-top:2px}
.tx .who.n{font-style:italic}
.tx.hide .say{filter:blur(6px);user-select:none}
.tx li.now button{background:color-mix(in srgb,var(--c) 14%,transparent)}
.tx li.now .who{color:var(--c)}
@media (max-width:520px){.tx li button{grid-template-columns:1fr;gap:0}}

/* exercises */
.bar{height:8px;background:var(--rule);border-radius:4px;overflow:hidden;margin-bottom:18px}
.bar i{display:block;height:100%;background:var(--c);transition:width .3s}
.q{font-size:21px;font-weight:600;line-height:1.4;margin-bottom:16px}
.q .de{font-size:22px}
.kind{font-size:14px;color:var(--mute);margin-bottom:6px;font-weight:600}
.opts{display:grid;gap:10px}
.opt{background:var(--card);border:2px solid var(--rule);border-radius:12px;padding:12px 16px;text-align:left;font-size:18px;font-weight:500;min-height:52px}
.opt:hover:not(:disabled){border-color:var(--ink)}
.opt.ok{border-color:var(--ok);background:var(--okbg)}
.opt.bad{border-color:var(--bad);background:var(--badbg)}
.opt:disabled{cursor:default}
.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.tile{aspect-ratio:1.25;background:var(--paper);border:2px solid var(--rule);border-radius:14px;display:grid;place-items:center;align-content:center;gap:4px;font-size:clamp(48px,13vw,76px);line-height:1}
.tile small{font-size:16px;font-weight:600;min-height:1.2em}
.tile.ok{border-color:var(--ok);background:var(--okbg)}
.tile.bad{border-color:var(--bad);background:var(--badbg)}
.tile:hover:not(:disabled){border-color:var(--ink)}
.big-emoji{font-size:clamp(90px,26vw,140px);line-height:1;text-align:center;margin:4px 0 18px}
.defbox{font-size:21px;line-height:1.45;border-left:5px solid var(--c);padding:6px 0 6px 16px;margin-bottom:18px}
.hearbig{display:flex;justify-content:center;margin:6px 0 20px;gap:10px}
.hearbig button{width:84px;height:84px;border-radius:50%;border:0;background:var(--c);color:#fff;font-size:32px}
.hearbig button.slow{width:56px;height:56px;font-size:20px;align-self:center;background:var(--ink);color:var(--paper)}
.gap{display:inline-block;min-width:80px;border-bottom:3px solid var(--c);text-align:center;padding:0 4px}
.gap.filled{border-bottom-color:var(--ok);color:var(--ok)}
.build{min-height:62px;border-bottom:2px dashed var(--rule);display:flex;flex-wrap:wrap;gap:8px;padding:8px 0;margin-bottom:14px;align-content:flex-start}
.pool{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.tok{background:var(--card);border:2px solid var(--rule);border-bottom-width:4px;border-radius:10px;padding:6px 12px;font-size:18px;font-weight:600}
.tok:hover{border-color:var(--ink)}
.tok.used{visibility:hidden}
.field{width:100%;border:2px solid var(--rule);background:var(--paper);border-radius:10px;padding:12px 14px;font-size:19px}
.field:focus{border-color:var(--ink);outline:none}
textarea.field{min-height:170px;resize:vertical;line-height:1.5}
.uml{display:flex;gap:6px;margin:8px 0 14px}
.uml button{border:1px solid var(--rule);background:var(--card);border-radius:8px;width:42px;height:38px;font-weight:700}
.diff span{padding:1px 3px;border-radius:4px;margin-right:2px}
.diff .w-ok{background:var(--okbg);color:var(--ok)}
.diff .w-bad{background:var(--badbg);color:var(--bad);text-decoration:line-through}
.diff .w-miss{background:var(--badbg);color:var(--bad)}
.match{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.match .col{display:grid;gap:10px;align-content:start}
.match .opt{font-size:16px;padding:10px 12px}
.match .opt.sel{border-color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent)}
.fb{margin-top:18px;border-radius:12px;padding:14px 16px;display:grid;gap:8px}
.fb.ok{background:var(--okbg)}
.fb.bad{background:var(--badbg)}
.fb b{font-family:var(--disp);font-size:22px}
.fb.ok b{color:var(--ok)}
.fb.bad b{color:var(--bad)}
.hear-inline{border:0;background:none;padding:0 4px;font-size:18px;vertical-align:middle}
.done-card{text-align:center;display:grid;gap:12px;justify-items:center;padding:14px 0}
.done-card .score{font-family:var(--disp);font-size:72px;font-weight:800;line-height:1;color:var(--c)}

/* grammar */
.tbl{overflow-x:auto;margin:6px 0 14px}
.tbl table{border-collapse:collapse;min-width:100%;font-size:16px}
.tbl th,.tbl td{border-bottom:1px solid var(--rule);padding:8px 12px;text-align:left;vertical-align:top}
.tbl th{font-family:var(--disp);font-size:18px;font-weight:700;border-bottom:3px solid var(--c)}
.tbl td:first-child{font-weight:600}
.pt{background:var(--paper);border-radius:10px;padding:12px 14px;font-size:16px;border:1px dashed var(--rule)}
.pt::before{content:"🇧🇷 ";}

/* review */
.card-rev{text-align:center;padding:10px 0}
.card-rev .term{font-family:var(--disp);font-size:44px;font-weight:800;line-height:1.1;margin:8px 0}
.card-rev .ex{font-style:italic;color:var(--mute);max-width:60ch;margin:6px auto 0}
.rate{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px}
.rate button{border:2px solid var(--rule);background:var(--card);border-radius:10px;padding:10px 4px;font-weight:700;display:grid}
.rate button small{font-weight:500;color:var(--mute);font-size:12px}

/* chat */
.chat{display:grid;gap:10px;margin:14px 0;max-height:55vh;overflow:auto;padding:4px}
.msg{max-width:86%;border-radius:14px;padding:10px 14px;font-size:17px}
.msg.them{background:var(--paper);justify-self:start;border-top-left-radius:4px}
.msg.me{background:var(--c);color:#fff;justify-self:end;border-top-right-radius:4px}
.msg .corr{margin-top:6px;font-size:14px;border-top:1px solid rgba(255,255,255,.35);padding-top:6px}
.corr-box{justify-self:end;max-width:86%;font-size:14px;background:var(--okbg);color:var(--ink);border-radius:10px;padding:8px 12px}
.corr-box b{color:var(--ok)}
.sendrow{display:grid;grid-template-columns:1fr auto auto;gap:8px}
.lvpick{display:flex;gap:6px;flex-wrap:wrap}
.lvpick button{border:2px solid var(--c);background:transparent;color:var(--c);border-radius:999px;padding:3px 12px;font-family:var(--disp);font-weight:800;font-size:18px}
.lvpick button[aria-pressed="true"]{background:var(--c);color:#fff}
.note{font-size:15px;color:var(--mute);border-left:3px solid var(--rule);padding-left:12px}
.corr-list{display:grid;gap:10px;margin:10px 0}
.corr-list div{border-left:4px solid var(--bad);padding:2px 0 2px 12px}
.corr-list s{color:var(--bad)}
.corr-list ins{color:var(--ok);text-decoration:none;font-weight:600}
.corrected{background:var(--okbg);border-radius:10px;padding:12px 14px;white-space:pre-wrap}
.toggle{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--rule)}
.toggle:last-child{border-bottom:0}
.toggle>span{flex:1}
.custom-list{display:grid;gap:8px}
.custom-list>div{display:flex;align-items:center;gap:10px;border:1px solid var(--rule);border-radius:10px;padding:8px 12px}
.custom-list>div span{flex:1}
.radio-now{font-family:var(--disp);font-size:28px;font-weight:700;margin:6px 0}
.radio-line{min-height:3.2em;font-size:19px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:10px 18px;border-radius:10px;font-weight:600;z-index:50;max-width:90vw}
.warn{background:var(--badbg);border-radius:10px;padding:10px 14px;font-size:15px;margin-bottom:14px}

.langs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 22px}
.langs button{display:flex;align-items:center;gap:8px;border:2px solid var(--rule);background:var(--card);border-radius:12px;padding:8px 12px;font-weight:600}
.langs button[aria-pressed="true"]{border-color:var(--ink)}
.langs button .fl{font-size:22px;line-height:1}
.langs button small{display:block;font-weight:500;color:var(--mute);font-size:12px;line-height:1.2}
.quick{grid-template-columns:repeat(2,1fr)}
.empty-lvl{margin:0 0 0 64px;padding:10px 0 16px;color:var(--mute);font-size:15px}
.seqlist{display:grid;gap:8px;margin-bottom:14px}
.seqlist .tok{text-align:left;font-weight:500;font-size:16px;width:100%}
.seqlist .tok b{color:var(--c);margin-right:6px}
.counter{font-family:var(--disp);font-weight:700;font-size:20px}

/* ---- trilha: começo, meio e fim ---- */
.journey{width:100%;margin-bottom:6px}
.jlab{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:14px;color:var(--mute);margin-bottom:6px}
.jlab b{font-family:var(--disp);font-size:21px;color:var(--ink);text-align:center}
.jbar{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.jseg{position:relative;height:28px;background:var(--rule);border-radius:6px;overflow:hidden}
.jseg i{position:absolute;left:0;top:0;bottom:0;background:var(--c);transition:width .4s}
.jseg span{position:relative;display:grid;place-items:center;height:100%;font-family:var(--disp);font-weight:800;font-size:15px}
.jseg.off{opacity:.35}
.here{display:inline-block;background:var(--c);color:#fff;border-radius:6px;padding:2px 10px;font-size:14px;font-weight:700;line-height:1.5}
.here.sm{font-size:11px;padding:0 6px;vertical-align:middle;margin-left:6px;font-family:var(--body);background:var(--c)}
.stepdots{display:flex;gap:6px}
.stepdots span{width:34px;height:8px;border-radius:4px;background:var(--rule)}
.stepdots span.on{background:var(--c)}
.lvbar{height:6px;background:var(--rule);border-radius:3px;overflow:hidden;margin-top:6px;width:180px;max-width:100%}
.lvbar i{display:block;height:100%;background:var(--c)}
.stop .stat{grid-row:1/3;grid-column:2;font-size:14px;font-weight:700;color:var(--mute);text-align:right;white-space:nowrap}
.stop.done .stat{color:var(--ok)}
.stop .dot{display:grid;place-items:center}
.stop.done .dot::before{content:"✓";color:#fff;font-size:12px;font-weight:800}
.stop.test .dot{border-radius:5px;transform:rotate(45deg)}
.stop.test.done .dot::before{transform:rotate(-45deg)}
.stop.test .st-t{font-style:italic}
.stop.locked>button{opacity:.42;cursor:not-allowed}
.stop.locked .dot{background:var(--paper);border-color:var(--rule)}
.stop.extra .dot{border-style:dashed}
.steps button.locked{opacity:.4;cursor:not-allowed}
.arrive-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:100%;margin:6px 0 10px}
.arrive-stats div{background:var(--card);border:1px solid var(--rule);border-radius:12px;padding:12px;display:grid;gap:2px}
.arrive-stats b{font-family:var(--disp);font-size:30px;line-height:1}
.arrive-stats span{font-size:13px;color:var(--mute)}
@media (max-width:520px){.arrive-stats{grid-template-columns:repeat(2,1fr)}}
details summary{cursor:pointer;color:var(--mute);font-weight:600}
.tok.bad-tok{border-color:var(--bad);background:var(--badbg);text-decoration:line-through}
.tok.ok-tok{border-color:var(--ok);background:var(--okbg);text-decoration:line-through}
/* ---- fala ---- */
.spk-live{margin:14px 0;min-height:2.6em;padding:12px 14px;border-radius:10px;background:var(--paper);border:1px dashed var(--rule);font-size:17px}
.spk-interim{color:var(--mute);font-style:italic}
.spk-err{color:var(--bad);font-size:15px}
.spk-words{font-size:20px;line-height:1.6}
.spk-words span{padding:1px 4px;border-radius:5px}
.spk-words .w-ok{background:var(--okbg);color:var(--ok)}
.spk-words .w-miss{background:var(--badbg);color:var(--bad)}
.mic-btn{min-width:150px}
.mic-btn.rec{background:var(--bad);border-color:var(--bad);animation:recpulse 1.2s ease-in-out infinite}
@keyframes recpulse{50%{opacity:.7}}
@media (prefers-reduced-motion:reduce){.mic-btn.rec{animation:none}}
.autobar{flex:1;max-width:160px;height:4px;background:color-mix(in srgb,var(--ok) 25%,transparent);border-radius:2px;overflow:hidden}
.autobar i{display:block;height:100%;width:0;background:var(--ok);transition:width .12s linear}
.opt.dim,.tile.dim{opacity:.45}
/* ---- aula em áudio: duas escutas ---- */
.passbar{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}
.pass{display:flex;align-items:center;gap:10px;border:2px solid var(--rule);border-radius:12px;padding:10px 12px;color:var(--mute);font-weight:600;font-size:15px}
.pass b{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--rule);color:var(--ink);font-family:var(--disp);font-size:17px;flex:none}
.pass.on{border-color:var(--c);color:var(--ink)}
.pass.on b{background:var(--c);color:#fff}
.pass.done b{background:var(--ok);color:#fff}
.lbar{height:10px;background:var(--rule);border-radius:5px;overflow:hidden;margin:4px 0 8px}
.lbar i{display:block;height:100%;background:var(--c);transition:width .3s}
.lnow{display:flex;gap:6px;align-items:baseline;min-height:1.6em;margin-bottom:10px}
.lnow b{font-family:var(--disp);font-size:19px}
.notext{border:2px dashed var(--rule);border-radius:12px;padding:28px 16px;text-align:center;color:var(--mute);font-weight:600}
.tx li.txh button{padding-top:14px}
.tx li.txh .say b{font-family:var(--disp);font-size:18px;color:var(--c)}
.tx li.ahead .say{opacity:.45}
.bk-warn{display:flex;flex-wrap:wrap;gap:10px;align-items:center;width:100%}
/* ---- correção automática ---- */
.lt-box{margin-top:16px;border:1px solid var(--rule);border-radius:12px;padding:14px 16px;background:var(--paper)}
.lt-text{font-size:18px;line-height:1.7;white-space:pre-wrap;margin-bottom:12px}
.lt-mark{background:var(--badbg);color:var(--bad);border-bottom:2px solid var(--bad);border-radius:3px;padding:0 2px}
.lt-rep{border:1.5px solid var(--ok);background:var(--okbg);color:var(--ok);border-radius:8px;padding:1px 8px;font-weight:700;font-size:15px}
.linkbtn{background:none;border:0;padding:0;color:var(--ink);text-decoration:underline;font-size:inherit}
/* ---- leitura, formulário, prova ---- */
.readbox{border:1px solid var(--rule);border-left:5px solid var(--c);border-radius:10px;background:var(--paper);padding:12px 16px;margin-bottom:16px}
.rtyp{font-size:12px;font-weight:700;color:var(--mute)}
.rtit{font-family:var(--disp);font-size:21px;font-weight:700;margin:2px 0 6px}
.rtext{font-size:17px;line-height:1.6}
.gloss{margin:12px 0 0;font-size:15px;color:var(--mute)}
.formbox{border:2px solid var(--ink);border-radius:10px;padding:12px 14px;margin-bottom:12px;display:grid;gap:8px}
.ftit{font-family:var(--disp);font-size:20px;font-weight:800;border-bottom:1px solid var(--rule);padding-bottom:6px}
.frow{display:grid;grid-template-columns:minmax(120px,40%) 1fr;gap:4px 10px;align-items:center;font-size:15px;font-weight:600}
.frow .field{padding:8px 10px;font-size:17px}
.frow .field.ok{border-color:var(--ok);background:var(--okbg)}
.frow .field.bad{border-color:var(--bad);background:var(--badbg)}
.fsol{grid-column:2;color:var(--ok);font-style:normal;font-weight:700;font-size:15px}
@media (max-width:520px){.frow{grid-template-columns:1fr}.fsol{grid-column:1}}
.partlbl{font-family:var(--disp);font-weight:800;font-size:15px;color:var(--c);margin:-6px 0 10px}
.transcript{margin-top:12px;font-size:15px;color:var(--mute);border-left:3px solid var(--rule);padding-left:12px}
.points{margin:0 0 12px;padding-left:20px}
.taskcard{border:2px dashed var(--c);border-radius:12px;padding:16px;font-size:20px;font-weight:600;margin-bottom:14px}
.parts{width:100%;max-width:420px;display:grid;gap:8px;margin:4px 0 8px}
.parts div{position:relative;display:flex;justify-content:space-between;padding:6px 10px;border-radius:8px;background:var(--paper);overflow:hidden;font-size:15px}
.parts div span,.parts div b{position:relative;z-index:1}
.parts div i{position:absolute;left:0;top:0;bottom:0;background:color-mix(in srgb,var(--c) 22%,transparent)}
/* ---- nota cultural ---- */
.infobox{width:100%;border-left:5px solid var(--sign);background:var(--card);border-radius:10px;padding:12px 16px;margin:4px 0 14px}
.infobox p{margin:6px 0 0}
