/* Study ("Estudar") and speaking ("Conversar") modules — same tokens as app.css */
.mode.study{border-top-color:var(--sec-esc)} .mode.speak{border-top-color:var(--sec-aud)}
.mrow2{display:flex;gap:8px;flex-wrap:wrap}
.btn.small{padding:6px 12px;font-size:14px}
.btn.ghost{background:transparent;border-color:transparent;color:var(--scrub)}
.btn.rec{background:var(--bad);border-color:var(--bad);color:var(--on-accent)}
.swrap{max-width:900px;margin:0 auto;padding-block:16px 80px}
.shead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--rule);padding-bottom:10px;margin-bottom:18px}
.stabs{display:flex;gap:4px;flex-wrap:wrap}
.stabs button{border:1px solid var(--rule);background:var(--surface);color:var(--muted);border-radius:6px;padding:6px 12px;font-weight:600;cursor:pointer}
.stabs button[aria-pressed="true"]{background:var(--scrub);border-color:var(--scrub);color:var(--on-accent)}
.sintro h1,.unit h1,.convo h1{font-size:clamp(26px,4.5vw,36px);margin:0 0 8px}
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 18px}
.kpis div{background:var(--surface);border:1px solid var(--rule);border-top:3px solid var(--scrub);border-radius:6px;padding:10px 12px}
.kpis b{display:block;font-family:var(--serif);font-size:26px;color:var(--scrub);font-variant-numeric:tabular-nums}
.kpis span{font-size:13px;color:var(--muted)}
@media (max-width:560px){.kpis{grid-template-columns:1fr}}
.pday{background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:10px 14px;margin:8px 0}
.pday.today{border:2px solid var(--scrub);padding:14px 16px}
.pday.past{opacity:.7}
.pdate{margin:0 0 6px;font-weight:700;text-transform:capitalize}
.pday.today .pdate{color:var(--scrub);font-size:18px}
.plist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.pitem{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pitem.done .ptext2{text-decoration:line-through;color:var(--muted)}
.chk input{width:18px;height:18px;accent-color:var(--scrub)}
.ptag{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:3px;background:var(--surface-2);color:var(--muted)}
.t-u{color:var(--sec-esc)} .t-t{color:var(--sec-lec)} .t-r{color:var(--on-accent);background:var(--target)} .t-c,.t-p{color:var(--sec-aud)}
.ptext2{flex:1 1 220px;min-width:0}
.allplan{margin:16px 0}
.allplan summary{cursor:pointer;color:var(--scrub);font-weight:600}
.ucat{margin:22px 0;border-top:4px solid var(--c);padding-top:6px}
.c-lingua{--c:var(--sec-lec)} .c-estrategia{--c:var(--sec-ora)} .c-vocab{--c:var(--sec-esc)} .c-kit{--c:var(--sec-aud)} .c-c1{--c:var(--c1)}
.ucat h2{color:var(--c);margin:6px 0 2px;font-size:22px}
.ugrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:10px}
.ucard{display:flex;flex-direction:column;gap:3px;text-align:left;background:var(--surface);color:var(--ink);border:1px solid var(--rule);border-radius:6px;padding:12px 14px;cursor:pointer;min-width:0;font:inherit}
.ucard:hover{border-color:var(--scrub)}
.ucard.done{border-color:var(--ok);background:var(--ok-soft)}
.uid{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.06em}
.umeta{font-size:13px;color:var(--muted)}
.ustat{font-size:13px;font-weight:700;color:var(--ok)}
.unit .runhead{color:var(--c)}
.theory{background:var(--surface);border:1px solid var(--rule);border-left:4px solid var(--c);border-radius:4px;padding:10px 16px;margin:12px 0 18px}
.theory summary{cursor:pointer;font-weight:700}
.tbody{overflow-x:auto}
.tbody table{width:100%;border-collapse:collapse;font-size:15px;margin:8px 0}
.tbody th,.tbody td{border-bottom:1px solid var(--rule);padding:6px 8px;text-align:left;vertical-align:top}
.tbody th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.exlist{padding-left:22px;display:flex;flex-direction:column;gap:12px}
.exi{background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:10px 14px}
.extype{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--c)}
.exq{margin:6px 0;font-weight:600}
.target{font-family:var(--serif);font-size:19px;font-weight:600;margin:6px 0}
.blank{color:var(--c);font-weight:700}
.exopts{display:flex;flex-direction:column;gap:6px}
.exopt{text-align:left;border:1px solid var(--rule);background:var(--surface-2);color:var(--ink);border-radius:4px;padding:8px 12px;cursor:pointer;font:inherit}
.exopt:hover:not(:disabled){border-color:var(--c)}
.exopt.right{background:var(--ok-soft);border-color:var(--ok)}
.exopt.wrong{background:var(--bad-soft);border-color:var(--bad)}
.exrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0}
.exi input[type=text]{flex:1 1 200px;min-width:0;font:16px var(--sans);padding:7px 10px;border:1px solid var(--rule);border-radius:4px;background:var(--surface);color:var(--ink)}
.exi input.right{border-color:var(--ok);background:var(--ok-soft)} .exi input.wrong{border-color:var(--bad);background:var(--bad-soft)}
.exi textarea{min-height:64px;font-size:16px}
.exfb{font-size:15px}
.exfb:empty{display:none}
b.ok{color:var(--ok)} .bad,b.bad{color:var(--bad)} b.warn{color:var(--target)}
.diff{line-height:2;margin:6px 0}
.w-ok{color:var(--ok)} .w-acc{color:var(--target);border-bottom:2px dotted var(--target)} .w-miss{color:var(--bad);text-decoration:line-through} .w-extra{color:var(--muted);font-style:italic}
.live{min-height:1.4em;font-style:italic}
.ufoot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center;margin-top:20px;border-top:1px solid var(--rule);padding-top:12px}
.callout.warnbox{border:1px solid var(--target);background:var(--target-soft);border-radius:6px;padding:10px 14px;margin-bottom:14px}
.convo{max-width:760px}
.tutor{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:14px 16px;margin:12px 0}
.avatar{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--sec-aud);color:var(--on-accent);font-weight:700}
.tq{font-family:var(--serif);font-size:21px;margin:0 0 8px}
.recbar{display:flex;gap:12px;align-items:center;margin:10px 0}
.rtime{font-variant-numeric:tabular-nums;color:var(--muted)}
.sfb{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:12px 16px;margin-top:12px}
.sstats{display:flex;gap:8px 18px;flex-wrap:wrap;font-size:14px}
.sstats.big{font-size:18px;margin:12px 0}
.sstats b{font-variant-numeric:tabular-nums}
.sstats .ok b{color:var(--ok)} .sstats .bad b{color:var(--bad)}
.sfb .lbl{font-weight:700;margin:12px 0 4px}
.said{font-family:var(--serif);font-size:17px;background:var(--surface-2);border-radius:4px;padding:8px 12px}
.tips2{margin:0;padding-left:20px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips span{background:var(--surface-2);border:1px solid var(--rule);border-radius:999px;padding:2px 10px;font-size:14px}
.model2{font-family:var(--serif);background:var(--ok-soft);border:1px solid var(--ok);border-radius:4px;padding:8px 12px;margin-bottom:8px}
.ptext2box{background:var(--surface-2);border:1px solid var(--rule);border-radius:6px;padding:10px 14px;font-family:var(--serif)}
.ptext2box .t{font-weight:700;margin:0 0 4px}
.pgroup{margin:20px 0;border-top:3px solid var(--sec-aud);padding-top:6px}
.pgroup h2{color:var(--sec-aud);font-size:20px;margin:4px 0}
.prow{background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:8px 14px;margin:8px 0}
.privacy{margin-top:20px}
/* role-play chat */
.chat{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;padding:10px;background:var(--surface-2);border:1px solid var(--rule);border-radius:10px;margin:10px 0}
.chat.static{max-height:none}
.bub{max-width:82%;padding:8px 12px;border-radius:12px;font-family:var(--serif);font-size:17px;line-height:1.45;background:var(--surface);border:1px solid var(--rule)}
.bub .who{display:block;font:700 11px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.bub.npc{align-self:flex-start;border-top-left-radius:2px;border-left:3px solid var(--sec-aud)}
.bub.me{align-self:flex-end;border-top-right-radius:2px;background:var(--scrub-soft);border-color:var(--scrub)}
.taskbox{background:var(--target-soft);border:1px solid var(--target);border-radius:8px;padding:8px 14px}
.taskbox .lbl{margin:0 0 2px;font-weight:700;color:var(--target);text-transform:uppercase;font-size:12px;letter-spacing:.08em}
.taskbox p{margin:2px 0 6px}
ul.need{list-style:none;padding:0;margin:4px 0;display:flex;flex-wrap:wrap;gap:6px 14px}
ul.need li.ok,.qsum .ok{color:var(--ok);font-weight:600} ul.need li.bad,.qsum .bad{color:var(--bad);font-weight:600}
/* answer evaluation */
.evhead{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.evhead .lvpill{font-size:15px;padding:3px 10px}
.evbar{display:inline-flex;gap:3px;margin-left:auto}
.evbar i{width:14px;height:14px;border-radius:3px;background:var(--rule)}
.evbar i.good{background:var(--ok)} .evbar i.mid{background:var(--target)} .evbar i.bad{background:var(--bad)}
.evgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:10px 0}
@media (max-width:640px){.evgrid{grid-template-columns:1fr}}
.evcol{border:1px solid var(--rule);border-radius:6px;padding:8px 12px;min-width:0}
.evcol.good{border-top:3px solid var(--ok);background:var(--ok-soft)}
.evcol.bad{border-top:3px solid var(--bad);background:var(--bad-soft)}
.evcol .lbl{margin:4px 0 6px}
.evcol.good .lbl{color:var(--ok)} .evcol.bad .lbl{color:var(--bad)}
.evcol ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:15px}
.evcol li.mid::marker{color:var(--target)} .evcol li.bad::marker{color:var(--bad)} .evcol li.good::marker{color:var(--ok)}
.ulink{margin-left:4px;padding:2px 8px;font-size:12px}
.qsum{width:100%;border-collapse:collapse;font-size:14px;margin:10px 0}
.qsum th,.qsum td{border-bottom:1px solid var(--rule);padding:6px 8px;text-align:left;vertical-align:middle}
.qsum .num{text-align:right;font-variant-numeric:tabular-nums}
