/* ===========================================================
   EngLab — единая тема (стиль Cowork: тёплый светлый, прямоугольный,
   со срезанными углами). Подключается на всех страницах.
   =========================================================== */
:root{
  --bg:#eeece4;          /* тёплый ivory фон приложения */
  --surface:#f6f4ec;     /* фон страницы */
  --panel:#fffdf7;       /* карточки/панели */
  --panel2:#f2efe5;      /* вторичный фон */
  --ink:#23211c;         /* основной текст */
  --muted:#645f54;       /* вторичный текст на светлых и тонированных панелях */
  --line:#d8d3c4;        /* тонкая граница */
  --line2:#c8c2b0;
  --field-border:#887d69;
  --accent:#a0472d;      /* терракота для ссылок, кнопок и фокуса */
  --accent-ink:#ffffff;
  --accent-soft:#efe0d7;
  --accent2:#9a6a4f;
  --good:#3f6c37; --good-bg:#e6efe1;
  --warn:#805b23; --warn-bg:#f3ead6;
  --bad:#963e34;  --bad-bg:#f3e0dc;
  --cut:12px;            /* размер среза углов */
  --cut-sm:7px;
  font-synthesis:none;
}
.learning-nav{display:flex;flex-wrap:wrap;gap:16px;margin:0 0 18px}
.learning-guidance{border:1px solid var(--line);background:var(--panel);padding:16px;margin:16px 0}
.learning-guidance h2,.learning-guidance h3{margin-top:0}
.learning-guidance-card { border-inline-start:3px solid var(--accent); padding:clamp(14px,3vw,24px); overflow-wrap:anywhere; }
.learning-guidance-card h2 { margin:4px 0 10px; font-size:clamp(20px,3vw,26px); }
.learning-guidance-card h3 { margin:16px 0 8px; font-size:17px; }
.learning-guidance-card p:last-child { margin-bottom:0; }
.learning-guidance-card > details > div { margin-top:16px; }
.learning-guidance-note { white-space:pre-wrap; }
.learning-guidance-comment summary { font-weight:600; }
.learning-guidance-links {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(185px,100%),1fr));
  gap:8px;
  margin:0;
  padding:0;
  list-style:none;
}
.learning-guidance-links li { min-width:0; }
.learning-guidance-links a {
  display:flex;
  align-items:center;
  min-height:44px;
  height:100%;
  padding:8px 12px;
  border:1px solid var(--field-border);
  font-size:14px;
}
.learning-guidance-links a:hover { background:var(--accent-soft); }
.learning-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:12px;margin:20px 0}
.learning-metrics .stat{padding:14px;background:var(--panel);border:1px solid var(--line)}
.learning-metrics b,.learning-metrics span{display:block}
.learning-form label{display:block;margin:12px 0}
.learning-form input:not([type=checkbox]),.learning-form textarea,.learning-form select{display:block;width:100%;padding:10px;background:var(--panel);color:var(--ink);border:1px solid var(--field-border);font:inherit}
.learning-checks{display:flex;gap:16px;flex-wrap:wrap}
.learning-analysis{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-width:100%;background:var(--panel);padding:16px}
.learning-day{display:flex;align-items:center;gap:16px;margin:8px 0}.learning-day meter{flex:1;max-width:400px}
.table-scroll{overflow-x:auto}.sync-warning{padding:16px;background:var(--warn-bg);border:2px solid var(--warn)}.sync-warning button{margin:8px}
.table-scroll table{width:100%;border-collapse:collapse;margin:12px 0;background:var(--panel)}
.table-scroll th,.table-scroll td{padding:10px 14px;border-bottom:1px solid var(--line);text-align:left}
.table-scroll th{background:var(--panel2);font-weight:600}
[hidden]{display:none!important}
@media(max-width:600px){.learning-form .controls{flex-wrap:wrap}.learning-day{gap:8px}.learning-nav{font-size:14px}.learning-metrics{grid-template-columns:1fr 1fr}}
*{box-sizing:border-box}
html{background:var(--bg)}
body{
  margin:0;color:var(--ink);
  font-family:ui-sans-serif,"Segoe UI",system-ui,-apple-system,Roboto,sans-serif;
  background:var(--surface);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
}
.wrap{max-width:1060px;margin:0 auto;padding:26px 20px 90px}
h1,h2,h3,.phrase,.front,.model,.result .big{
  font-family:Georgia,"Iowan Old Style","Times New Roman",serif;
  font-weight:600;letter-spacing:-.01em;
}
h1{font-size:26px;margin:10px 0 2px}
h2{font-size:18px;margin:30px 0 12px;color:var(--ink)}
.sub{color:var(--muted);font-size:14px;margin-bottom:16px}
a{color:var(--accent)}
a.back{color:var(--muted);text-decoration:none;font-size:13px;letter-spacing:.02em;text-transform:uppercase}
a.back:hover{color:var(--accent)}
.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin:30px 4px 12px;font-weight:700}
.legend,.hint{color:var(--muted);font-size:13px;line-height:1.55}

/* ---- срез углов (chamfer) ---- */
.chamfer,.card,.panel,.greet,.tip,.game,.stat,.qcard,.entry,.mistake,.guide,.addbox,.chart,.bubble,.snd,.opt,.pairbtn,.tab,.prompt{
  clip-path:polygon(var(--cut) 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%,0 var(--cut));
}
.snd,.opt,.pairbtn,.tab,.bubble,.chip,.stat{--cut:var(--cut-sm)}

/* ---- кнопки ---- */
button{
  font-family:inherit;cursor:pointer;border:1px solid var(--accent);
  background:var(--accent);color:var(--accent-ink);
  padding:10px 18px;font-weight:600;font-size:14px;line-height:1.1;
  border-radius:0;clip-path:polygon(var(--cut-sm) 0,100% 0,100% calc(100% - var(--cut-sm)),calc(100% - var(--cut-sm)) 100%,0 100%,0 var(--cut-sm));
  transition:filter .15s,background .15s;margin:6px 6px 0 0;
}
button:hover{filter:brightness(.95)}
button.ghost{background:var(--panel);color:var(--ink);border-color:var(--line2)}
button.ghost:hover{background:var(--panel2);filter:none}
button.sm{padding:5px 10px;font-size:12px;margin:0}
button:disabled{opacity:.55;cursor:default}

/* ---- поля ввода ---- */
input,select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--line2);background:var(--panel);
  color:var(--ink);font-family:inherit;font-size:14px;border-radius:0;
}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
textarea{min-height:120px;resize:vertical}
label{font-size:13px;color:var(--muted);display:block;margin:8px 0 4px}
details summary{cursor:pointer;color:var(--accent);font-size:14px}

/* ---- header / brand ---- */
header.top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:6px}
.brand{display:flex;align-items:center;gap:14px}
.logo{width:50px;height:50px;background:var(--accent);color:var(--accent-ink);
  display:grid;place-items:center;font-family:Georgia,serif;font-weight:700;font-size:22px;
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}

/* ---- panels / cards ---- */
.panel,.card,.greet,.tip,.game,.qcard,.entry,.mistake,.guide,.addbox,.chart,.prompt{
  background:var(--panel);border:1px solid var(--line);
}
.panel{padding:22px}
.tip,.guide,.prompt{background:var(--accent-soft);border-color:#e3cebf;padding:14px 16px;font-size:14px;line-height:1.55;margin:10px 0}
.tip b{color:var(--accent)}
.greet{padding:20px 22px;margin:18px 0}
.greet .phrase{font-size:22px}
.greet .phrase small{color:var(--muted);font-weight:400;font-size:14px;display:block;margin-top:6px;font-family:ui-sans-serif,"Segoe UI",sans-serif}

/* ---- stats ---- */
.stats{display:flex;gap:10px;flex-wrap:wrap}
.stats.grid5,.diary-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
.stat{background:var(--panel);border:1px solid var(--line);padding:12px 16px;min-width:92px;text-align:center}
.stat b{display:block;font-size:24px;font-family:Georgia,serif;line-height:1}
.stat span{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em}

/* ---- progress bars ---- */
.practice-progress{display:block;width:100%;height:10px;accent-color:var(--accent);overflow:hidden}
.bar{height:10px;background:var(--panel2);border:1px solid var(--line);overflow:hidden;margin-top:8px}
.bar>i{display:block;height:100%;background:var(--accent);width:0;transition:.6s}
.progress{height:8px;background:var(--panel2);border:1px solid var(--line);overflow:hidden;margin-bottom:18px}
.progress>i{display:block;height:100%;background:var(--accent);transition:.4s}

/* ---- daily plan ---- */
.plan{background:var(--panel);border:1px solid var(--line);padding:6px}
.task-row{display:flex;align-items:center;gap:14px;padding:12px 14px;cursor:pointer;transition:.15s}
.task-row:hover{background:var(--panel2)}
.task-row .chk{width:24px;height:24px;border:1.5px solid var(--line2);flex:none;display:grid;place-items:center;font-size:14px;color:transparent}
.task-row.done .chk{background:var(--good);border-color:var(--good);color:#fff}
.task-row.done .t-name{color:var(--muted);text-decoration:line-through}
.t-name{flex:1;font-weight:600}
.t-meta{color:var(--muted);font-size:12px}

/* ---- grids of cards ---- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.card{padding:18px;text-decoration:none;color:var(--ink);display:flex;flex-direction:column;gap:8px;transition:.16s}
.card:hover{border-color:var(--accent);transform:translateY(-2px)}
.card .ic{width:44px;height:44px;display:grid;place-items:center;font-size:22px;background:var(--accent-soft);
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}
.card h3{margin:4px 0 0;font-size:17px}
.card p{margin:0;color:var(--muted);font-size:13px;line-height:1.45}
.pill{align-self:flex-start;font-size:11px;padding:3px 9px;background:var(--panel2);color:var(--muted);border:1px solid var(--line)}

/* ---- quiz cards (tests menu) ---- */
.quizgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.qcard{padding:16px;cursor:pointer;transition:.15s}
.qcard:hover{border-color:var(--accent);transform:translateY(-2px)}
.qcard h3{margin:0 0 6px;font-size:16px}
.qcard .lvl{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-weight:700}
.qcard p{margin:6px 0 0;color:var(--muted);font-size:13px}

/* ---- chips / filters / tabs ---- */
.filters,.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.chip{padding:6px 13px;background:var(--panel);border:1px solid var(--line2);color:var(--muted);font-size:13px;cursor:pointer;transition:.15s}
.chip.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.tabs{display:flex;gap:8px;margin-bottom:16px}
.tab{flex:1;padding:11px;text-align:center;background:var(--panel);border:1px solid var(--line2);cursor:pointer;font-weight:600;color:var(--muted)}
.tab.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}

/* ---- phonetics ---- */
.sounds{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.snd{background:var(--panel);border:1px solid var(--line);padding:12px;cursor:pointer;transition:.15s;text-align:center}
.snd:hover{border-color:var(--accent);transform:translateY(-2px);background:var(--panel2)}
.snd .ipa{font-size:22px;font-weight:700;color:var(--accent);font-family:Georgia,serif}
.snd .ex{font-size:14px;margin-top:4px;font-weight:600}
.snd .ru{font-size:11px;color:var(--muted);margin-top:2px}
.game{padding:20px;margin-top:12px}
.pairbtns{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}
.pairbtn{flex:1;min-width:130px;background:var(--panel2);border:1px solid var(--line2);padding:16px;font-size:20px;font-weight:700;color:var(--ink);cursor:pointer;transition:.15s;font-family:Georgia,serif}
.pairbtn:hover{border-color:var(--accent)}
.pairbtn.right{border-color:var(--good);background:var(--good-bg)}
.pairbtn.wrong{border-color:var(--bad);background:var(--bad-bg)}
.score,.scorebar{font-size:14px;color:var(--muted);margin-top:10px}
.speakbtn{align-self:center;background:var(--panel2);border:1px solid var(--line2);color:var(--ink);width:46px;height:46px;font-size:20px;clip-path:none;border-radius:50%;padding:0}

/* ---- vocab flashcard (scoped) ---- */
#cardArea .card{padding:38px 26px;text-align:center;align-items:center;justify-content:center;min-height:260px;gap:10px;cursor:default}
#cardArea .card:hover{transform:none;border-color:var(--line)}
.reg{align-self:center;font-size:11px;text-transform:uppercase;letter-spacing:.1em;padding:3px 12px;background:var(--panel2);border:1px solid var(--line);color:var(--muted)}
.front{font-size:34px}
.ipa{color:var(--accent);font-size:16px;font-family:Georgia,serif}
#cardArea .back{display:none}#cardArea .back.show{display:block}
.ru{font-size:22px;font-weight:700;margin-top:6px}
.ex{color:var(--muted);font-style:italic;margin-top:10px;font-size:15px;line-height:1.5}
.ex b{color:var(--ink);font-style:normal}
.controls{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap;align-items:center}
.grade{display:flex;gap:8px;justify-content:center;margin-top:18px}
.g{flex:1;max-width:160px}
.again{background:var(--bad);border-color:var(--bad)}
.good{background:var(--good);border-color:var(--good)}
.easy{background:var(--warn);border-color:var(--warn)}
.done{text-align:center;padding:50px 20px;color:var(--muted)}
.task-row.done{text-align:left;padding:12px 14px;color:inherit}
.addbox{margin-top:26px;padding:16px}
.meta{display:flex;justify-content:space-between;color:var(--muted);font-size:13px;margin-bottom:10px}

/* ---- tests ---- */
.qtext{font-size:21px;font-weight:600;margin-bottom:18px;line-height:1.4;font-family:Georgia,serif}
.opt{display:block;width:100%;text-align:left;background:var(--panel2);border:1px solid var(--line2);padding:14px 16px;margin:8px 0;color:var(--ink);font-size:16px;cursor:pointer;transition:.12s;font-family:inherit}
.opt:hover{border-color:var(--accent)}
.opt.right{border-color:var(--good);background:var(--good-bg)}
.opt.wrong{border-color:var(--bad);background:var(--bad-bg)}
.expl{margin-top:14px;padding:12px 14px;background:var(--accent-soft);border-left:3px solid var(--accent);font-size:14px;line-height:1.5;display:none}
.expl.show{display:block}
.topbar{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:13px;margin-bottom:8px}
.result{text-align:center;padding:30px 10px}
.result .big{font-size:46px}

/* ---- speaking ---- */
.model{font-size:24px;line-height:1.4;margin:10px 0 4px}
.heard{margin-top:16px;padding:14px;background:var(--panel2);border:1px solid var(--line);min-height:50px;font-size:16px;line-height:1.6}
.w-ok{color:var(--good);font-weight:600}
.w-miss{color:var(--bad);text-decoration:underline}
.rec{background:#a8443a;border-color:#a8443a}
.rec.active{animation:pulse 1s infinite}
@keyframes pulse{50%{filter:brightness(1.25);transform:scale(1.03)}}
.dialog{margin:0 0 14px}
.bubble{padding:12px 16px;margin:8px 0;max-width:88%;line-height:1.5;border:1px solid var(--line)}
.bot{background:var(--panel)}
.me{background:var(--accent-soft);border-color:#e3cebf;margin-left:auto}
.bubble small{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.bubble .corr{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line2);color:var(--warn);font-size:13px}
.voice-correction-type{display:block;color:var(--muted);font-weight:600;margin-bottom:4px}
.bubble .voice-coaching{color:var(--ink);overflow-wrap:anywhere}
.voice-coaching>summary{cursor:pointer;font-weight:600}
.voice-coaching p{margin:6px 0}
.role-quote{margin:0;overflow-wrap:anywhere}
.role-review{border-top:1px solid var(--line2);margin-top:8px;padding-top:6px;font-size:.875rem;overflow-wrap:anywhere}
.role-review summary{cursor:pointer;font-weight:600}
.role-review p{margin:6px 0}

/* ---- voice ---- */
.setup{margin-bottom:14px;padding:18px}
.row{display:flex;gap:10px;flex-wrap:wrap}
.row>div{flex:1;min-width:140px}
.chat{flex:1;background:var(--panel);border:1px solid var(--line);padding:16px;overflow-y:auto;margin-bottom:12px;min-height:300px}
.controls input{flex:1}
.status{font-size:13px;color:var(--muted);min-height:18px;margin:6px 2px}
.toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-top:8px}
.toggle input{width:auto}

/* ---- diary ---- */
.chart{padding:18px;display:flex;align-items:flex-end;gap:6px;height:160px}
.chart .bar{flex:1;background:var(--panel2);border:1px solid var(--line);position:relative;min-height:4px;height:auto;margin:0;overflow:visible}
.chart .bar>i{position:absolute;bottom:0;left:0;right:0;background:var(--accent);transition:.5s}
.chart .bar span{position:absolute;bottom:-20px;left:0;right:0;text-align:center;font-size:10px;color:var(--muted)}
.entry{padding:14px;margin:10px 0}
.entry .d{font-size:12px;color:var(--muted);margin-bottom:6px}
.entry .t{white-space:pre-wrap;line-height:1.5}
.mistake{border-left:3px solid var(--bad);padding:12px;margin:8px 0;font-size:14px;line-height:1.5}
.mistake .top{font-size:12px;color:var(--muted);display:flex;justify-content:space-between}
.mistake .wrong{color:var(--bad)} .mistake .right{color:var(--good)}
.empty{color:var(--muted);font-size:14px;padding:14px;text-align:center}
.prompt{margin-bottom:12px}

/* ---- toast ---- */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(140%);background:var(--ink);color:#fff;
  padding:12px 22px;font-weight:600;transition:.3s;z-index:60;
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}
.toast.show{transform:translateX(-50%) translateY(0)}

/* ===========================================================
   Уроки (lessons)
   =========================================================== */
.crumbs{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:6px}
.lessonhead{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.lessonhead .lvl{font-size:12px;color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.08em}
.gram{background:var(--panel);border:1px solid var(--line);padding:20px 22px;margin:14px 0;
  clip-path:polygon(var(--cut) 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%,0 var(--cut))}
.gram h3{margin:0 0 10px;font-size:18px;color:var(--accent)}
.gram p{margin:8px 0;line-height:1.6}
.gtable{width:100%;border-collapse:collapse;margin:12px 0;font-size:14px}
.gtable th,.gtable td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.gtable th{background:var(--panel2);font-weight:700}
.gtable td b{color:var(--accent)}
.say{display:inline-flex;align-items:center;gap:6px;cursor:pointer;border-bottom:1px dashed var(--accent);color:var(--ink)}
.say:hover{background:var(--accent-soft)}
.say::before{content:"";width:14px;height:14px;flex:none;background:var(--accent);-webkit-mask:var(--ei-sound) center/contain no-repeat;mask:var(--ei-sound) center/contain no-repeat}
.ex-list{margin:10px 0;padding:0;list-style:none}
.ex-list li{padding:7px 0;border-bottom:1px solid var(--line);line-height:1.5}
.ex-list li:last-child{border-bottom:none}
.ex-list .tr{color:var(--muted);font-size:13px;margin-left:6px}
.step{display:flex;gap:12px;margin:14px 0;align-items:flex-start}
.step .num{flex:none;width:30px;height:30px;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:Georgia,serif;font-weight:700;
  clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}
.keys{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:12px 0}
.key{background:var(--panel2);border:1px solid var(--line);padding:10px 12px;cursor:pointer}
.key:hover{border-color:var(--accent)}
.key b{display:block;font-size:15px}
.key span{color:var(--muted);font-size:13px}
.lesson-nav{display:flex;justify-content:space-between;gap:10px;margin-top:30px;flex-wrap:wrap}
.complete-box{text-align:center;padding:24px;background:var(--accent-soft);border:1px solid #e3cebf;margin-top:24px;
  clip-path:polygon(var(--cut) 0,100% 0,100% calc(100% - var(--cut)),calc(100% - var(--cut)) 100%,0 100%,0 var(--cut))}
.lesson-card{position:relative}
.lesson-card .done-badge{position:absolute;top:10px;right:14px;color:var(--good);font-weight:700;font-size:13px}

/* Продуктивный ввод ответа в тестах/мини-квизах */
.qinput{display:block;width:100%;box-sizing:border-box;background:var(--panel2);border:1px solid var(--line2);padding:14px 16px;margin:8px 0;color:var(--ink);font-size:18px;font-family:inherit}
.qinput:focus{border-color:var(--accent)}
.qinput.right{border-color:var(--good);background:var(--good-bg)}
.qinput.wrong{border-color:var(--bad);background:var(--bad-bg)}

/* ---- иконки EngLab (englab-icons.js заменяет эмодзи на SVG) ---- */
:root{--ei-sound:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='square'%3E%3Cpath d='M3 9h4l5-4v14l-5-4H3z'/%3E%3Cpath d='M15.5 9a4 4 0 0 1 0 6M18.5 6a8 8 0 0 1 0 12'/%3E%3C/svg%3E")}
.ei{width:1.2em;height:1.2em;display:inline-block;vertical-align:-.24em;flex:none;
  fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:square;stroke-linejoin:miter;overflow:visible}
.ei + *, * + .ei{margin-left:0}
.ei-c-accent{color:var(--accent)} .ei-c-good{color:var(--good)} .ei-c-bad{color:var(--bad)} .ei-c-warn{color:var(--warn)}
.ei-c-gold{color:var(--warn)} .ei-c-silver{color:var(--muted)} .ei-c-bronze{color:var(--muted)}
.ei-square{width:.9em;height:.9em;vertical-align:-.08em}
.card .ic,.card .ic .ei{color:var(--accent)}
h1 .ei,h2 .ei,#heroEmblem .ei,.emblem .ei{color:var(--accent)}
.card .ic .ei{width:24px;height:24px;vertical-align:0}
.section-title .ei{width:14px;height:14px;vertical-align:-2px;margin-right:2px;color:var(--accent)}
.stat span .ei{width:13px;height:13px;vertical-align:-2px}
button .ei{vertical-align:-.22em}
#eng-gear .ei,

/* Shared usability fixes: keyboard focus, touch controls, narrow screens. */
:where(a,button,input,textarea,select,summary,[tabindex]):focus-visible{outline:3px solid var(--accent);outline-offset:3px;clip-path:none}
button,input,textarea,select{max-width:100%}textarea{resize:vertical}button{touch-action:manipulation}
.task-row{text-decoration:none;color:inherit}.chip{margin:0;line-height:1.4}.qcard{display:block;text-decoration:none;color:var(--ink)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:600px){.wrap{padding:20px 16px 100px}.tabs{flex-wrap:wrap}.tab{min-width:120px}.controls input,.controls textarea{min-width:0}.grade{flex-wrap:wrap}.g{min-width:90px}.gram{padding:16px}.gtable{font-size:13px;display:block;overflow-x:auto}.chart{gap:3px}.t-meta{max-width:64px;text-align:right}.task-row{padding:12px 8px;gap:10px}button,input:not([type=checkbox]):not([type=radio]),select{min-height:42px}button.sm{min-height:34px}}

/* Text RPG: the conversation is the main work surface. */
.quest-wrap{max-width:1180px}.quest-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.quest-header h1{font-size:34px;line-height:1.16;max-width:650px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:8px 0}.quest-header .sub{max-width:620px;margin:12px 0 0}
.quest-page .hidden{display:none!important}
.quest-page button{margin:0}.genres{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:20px 0 28px}.quest-genre{padding:22px;text-align:left;background:var(--panel);color:var(--ink);border:1px solid var(--line2);display:flex;flex-direction:column;gap:12px;min-height:240px}.quest-genre:hover{background:var(--accent-soft);border-color:var(--accent);filter:none}.quest-genre-icon{color:var(--accent);font-size:24px}.quest-genre strong{font:600 23px/1.2 Georgia,serif}.quest-genre-description{font-size:14px;line-height:1.6;color:var(--muted);font-weight:400}.quest-genre-action{margin-top:auto;font-size:13px;color:var(--accent)}
.quest-resume{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px;background:var(--accent-soft);border:1px solid var(--line2);margin:18px 0 28px}.quest-resume h2{margin:6px 0}.quest-resume p{margin-bottom:0}.quest-how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;border-top:1px solid var(--line);margin-top:30px;padding-top:24px}.quest-how b{font-size:14px}.quest-how p{font-size:13px;color:var(--muted);line-height:1.6}
.quest-scene{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:16px 0}.quest-scene h2{font-size:28px;line-height:1.2;margin:4px 0 8px}.quest-scene .sub{margin:0}.hud{display:flex;gap:20px;flex-shrink:0}.quest-stat span,.quest-stat strong{display:block}.quest-stat span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.quest-stat strong{font:600 22px Georgia,serif;margin-top:4px}
.quest-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.quest-conversation{min-width:0}.quest-storybar{display:flex;justify-content:space-between;align-items:center;gap:14px;font-weight:600;font-size:13px;padding:10px 0}.quest-storybar>div{display:flex;gap:12px;align-items:center}.quest-toggle{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);font-weight:400}.quest-toggle input{width:auto;min-height:0}
.quest-page .quest-chat{height:clamp(280px,48dvh,600px);min-height:280px;overflow:auto;padding:16px;background:var(--panel);border:1px solid var(--line2);scrollbar-gutter:stable;margin:0 0 12px;overscroll-behavior:contain;scroll-padding:16px}.quest-page .bubble{max-width:94%;padding:16px 18px;margin:0 0 18px;overflow-wrap:anywhere}.quest-page .bubble.gm{background:var(--panel2)}.quest-page .bubble.me{margin-left:auto;background:var(--accent-soft)}.quest-speaker{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.quest-message{margin:8px 0 0;white-space:pre-wrap;font-size:16px;line-height:1.75}.quest-page .bubble.me.bad{border-color:var(--warn)}.quest-page .corr{font-size:13px;color:var(--warn);line-height:1.6}.quest-page .corr p{white-space:pre-wrap}.quest-page .corr summary{cursor:pointer;font-weight:600;padding:4px 0}.quest-page .corr.ok{color:var(--good)}.quest-page .corr.neutral{color:var(--muted)}.quest-speak-correction{margin-top:8px!important}.quest-unsent{opacity:.8;border-style:dashed}
.quest-composer{position:relative;padding:16px;background:var(--surface);border:1px solid var(--line2);z-index:2}.quest-composer>label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}.quest-composer textarea{width:100%;min-height:80px;padding:12px;background:var(--panel);border:1px solid var(--line2);color:var(--ink);font:inherit;font-size:16px;line-height:1.5;resize:vertical}.quest-sendrow{display:flex;align-items:center;gap:10px;margin-top:10px}.quest-sendrow #composerHelp{font-size:11px;color:var(--muted);flex:1}.quest-sendrow button{white-space:nowrap}.quest-page .rec.active{background:var(--bad);color:#fff}.quest-starters{margin:18px 0}.quest-starters>div{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.quest-context{min-width:0}.quest-focus{background:var(--accent-soft);border:1px solid var(--line);padding:16px;margin:0 0 16px}.quest-focus h3{margin:8px 0}.quest-words{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.quest-detail{border-top:1px solid var(--line2);padding:12px 0}.quest-detail>summary{font:600 17px Georgia,serif;cursor:pointer;padding:5px 0;min-height:34px}.quest-detail>summary span{font:12px sans-serif;color:var(--muted);margin-left:6px}.quest-detail .pitem{padding:12px 0;border-bottom:1px solid var(--line)}.quest-detail .hint{margin:6px 0 10px}.quest-npc{display:flex;gap:10px;align-items:flex-start}.quest-npc img{image-rendering:pixelated}.quest-npc>div{min-width:0;overflow-wrap:anywhere}.quest-skill{display:grid;grid-template-columns:1fr 70px 32px;align-items:center;gap:8px;font-size:12px;margin:12px 0}.quest-skill meter{width:100%}.quest-utilities{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.quest-utilities button{font-size:12px}.quest-detail canvas{max-width:100%;height:auto;image-rendering:pixelated;margin-top:10px}.quest-error{border:1px solid var(--bad);background:var(--bad-bg);padding:16px;margin:12px 0}.quest-error p{margin:0 0 12px}.quest-error button{margin-right:8px}.quest-dialog{max-width:520px;width:calc(100% - 32px);padding:24px;color:var(--ink);background:var(--panel);border:1px solid var(--line2)}.quest-dialog::backdrop{background:rgb(35 33 28 / .45)}.quest-dialog h2{margin-top:0}
.quest-active .quest-header h1{font-size:26px}.quest-active .quest-header .sub,.quest-active .quest-header .eyebrow{display:none}
.quest-journal-controls>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.quest-journal-controls input{flex:1 1 10rem;width:100%;min-width:0}
.quest-journal-results{list-style:none;margin:0;padding:0}
.quest-journal-entry{padding:10px 0;border-top:1px solid var(--line)}
.quest-journal-entry>p{margin:0}
.quest-journal-entry>.quest-journal-quote{margin-top:4px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}
.quest-journal-pager{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
.quest-journal-pager button[aria-disabled="true"]{color:var(--muted);cursor:default}
.quest-chat-links{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.quest-page .corr .quest-coaching-label{font-weight:700;color:var(--ink);margin-bottom:4px}
.coaching-quote{color:var(--ink);font-size:1rem;margin:4px 0 8px;padding-inline-start:10px;border-inline-start:2px solid var(--line2)}
.quest-page .corr.contextual{color:var(--ink)}
.quest-page .corr.contextual>summary{color:var(--accent)}
.quest-page .corr .quest-check-retry { display:block; margin-top:8px; min-height:44px; white-space:normal; }
.coaching-options{padding-inline-start:24px;margin:8px 0 0}
.coaching-option{margin:8px 0;padding:8px 10px;color:var(--ink);background:var(--panel);border:1px solid var(--line);overflow-wrap:anywhere}
.quest-episode-brief{max-width:58ch;margin:8px 0 0}
.quest-scene .quest-objective {
  padding:8px 12px;
  border-inline-start:3px solid var(--accent);
  background:var(--accent-soft);
  color:var(--ink);
  font-size:clamp(15px,2.5vw,17px);
  font-weight:600;
  overflow-wrap:anywhere;
}
.episode-actions { display:flex; flex-wrap:wrap; gap:8px; }
.quest-page .episode-actions button { min-height:44px; white-space:normal; }
.quest-summary-steps { margin:0 0 16px; padding-inline-start:24px; }
.quest-summary-steps li { padding:10px 0; border-bottom:1px solid var(--line); }
.quest-summary-example { margin:6px 0 0; white-space:pre-wrap; overflow-wrap:anywhere; }
.quest-summary-metrics { margin:12px 0; }
.quest-summary-metrics > div { display:grid; grid-template-columns:1fr auto; gap:12px; padding:5px 0; }
.quest-summary-metrics dd { margin:0; font-weight:700; }
.quest-dialog-panel {
  width:calc(100% - 24px);
  max-height:calc(100dvh - 24px);
  padding:0;
}
.quest-dialog-panel.quest-journal { max-width:620px; }
.quest-dialog-panel[open] { display:grid; grid-template-rows:auto minmax(0,1fr); }
.quest-dialog-header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:12px clamp(14px,3vw,24px);
  border-bottom:1px solid var(--line);
}
.quest-dialog-header h2 { margin:0; font-size:clamp(19px,4vw,24px); }
.quest-dialog-header button { flex:none; min-height:44px; white-space:nowrap; }
.quest-dialog-body {
  padding:12px clamp(14px,3vw,24px) 20px;
  overflow:auto;
  overscroll-behavior:contain;
}
.quest-dialog-body:focus-visible { outline:var(--focus-ring); outline-offset:-3px; }
.quest-dialog-body > .hint:first-child { margin-top:0; }
.quest-journal-controls input { border-color:var(--field-border); }
@media(max-width:480px){
  .quest-detail>summary #memoryCount{display:block;margin:4px 0 0;line-height:1.4}
}
@media(max-width:860px){.quest-layout{grid-template-columns:minmax(0,1fr)}.quest-context{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.quest-focus,.quest-utilities,.quest-context>#saveState{grid-column:1/-1}.genres{grid-template-columns:repeat(2,minmax(0,1fr))}.quest-how{gap:16px}.quest-header{flex-wrap:wrap}}
@media(max-width:520px){.quest-header{gap:12px;margin-bottom:18px}.quest-header h1{font-size:29px}.quest-header #questProvider{font-size:12px}.quest-scene{align-items:flex-start;flex-direction:column;gap:12px}.quest-scene h2{font-size:25px}.hud{gap:28px}.quest-context{display:block}.genres{grid-template-columns:1fr}.quest-genre{min-height:190px;padding:20px}.quest-how{grid-template-columns:1fr;gap:12px}.quest-resume{align-items:stretch;flex-direction:column;padding:18px}.quest-storybar{align-items:flex-start}.quest-storybar>div{align-items:flex-end;flex-direction:column;gap:8px}.quest-page .quest-chat{padding:10px;height:42dvh;min-height:250px}.quest-page .bubble{max-width:100%;padding:14px}.quest-message{font-size:15px}.quest-composer{padding:12px}.quest-sendrow{flex-wrap:wrap}.quest-sendrow #composerHelp{order:3;flex-basis:100%}.quest-sendrow #sendTurn{margin-left:auto}.quest-composer textarea{min-height:76px}.quest-active .quest-header h1{font-size:24px}}

input[type=checkbox],input[type=radio]{accent-color:var(--accent)}
.quest-page 

.quest-objective{font-size:13px;line-height:1.6;max-width:680px;color:var(--muted);margin:10px 0 0}.snd{color:var(--ink);margin:0}.tabs>.tab{margin:0}

.greet{display:flow-root}
.vocab-packs-disclosure{border:1px solid var(--line);background:var(--panel);padding:12px 16px;margin:12px 0 16px}
.vocab-packs-disclosure>summary{cursor:pointer;font-size:14px;font-weight:600;min-height:24px}
.vocab-packs-disclosure .pack{color:var(--ink);text-align:left;margin:0;font-weight:400}
#trainView .b-med{color:var(--warn);border-color:var(--warn)}#trainView .b-known{color:var(--good);border-color:var(--good)}

@media(max-width:600px){.counters .counter{min-width:66px;padding:8px 4px}}

/* Administration */
 .admin-page .awrap{max-width:900px;margin:0 auto;padding:26px 16px 80px} .admin-page h1{font-family:Georgia,serif;font-size:26px;margin:0 0 4px} .admin-page h2{font-family:Georgia,serif;font-size:19px;margin:26px 0 10px;border-bottom:2px solid var(--line,#ddd7ca);padding-bottom:6px} .admin-page .card{background:var(--panel,#fffdf7);border:1px solid var(--line,#d8d3c4);padding:16px 18px;margin-bottom:14px} .admin-page label{display:block;font-size:13px;color:var(--muted,#726d62);margin:8px 0 3px} .admin-page input{padding:9px 11px;border:1px solid var(--line);background:#fff;font-size:14px} .admin-page button{background:var(--accent,#c15f3c);color:#fff;border:none;padding:10px 16px;cursor:pointer;font-size:14px} .admin-page .row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end} .admin-page .code{font-family:monospace;background:var(--surface,#f6f4ec);padding:2px 6px;border:1px solid var(--line)} .admin-page .msg{font-size:13px;margin-top:8px;color:#4a7c59} @media(max-width:600px){.admin-page .row{flex-direction:column;align-items:stretch}}

.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.admin-ai{background:var(--panel);padding:24px;border:1px solid var(--line);margin:24px 0}.access-list{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}.access-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 16px;background:var(--panel)}.access-row label{margin:0}.access-row input{width:auto}.config-grid label{min-width:0}
@media(max-width:600px){.config-grid{grid-template-columns:1fr}.admin-ai{padding:16px}}

/* Release 0.4: a quiet learning desk, one primary action, finite stories. */
.service-notice{display:flex;justify-content:space-between;gap:16px;padding:8px max(20px,calc((100vw - 1020px)/2));background:var(--ink);color:var(--panel);font-size:12px;letter-spacing:.025em}.service-notice a{color:inherit;text-decoration:none;white-space:nowrap}.service-notice a:hover{text-decoration:underline}.service-footer{max-width:1060px;margin:16px auto 0;padding:24px 80px 36px 20px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.7}.service-footer p{margin:0 0 6px}.service-footer a{display:inline-block;margin:4px 20px 0 0}.prose-page{max-width:760px;line-height:1.75}.prose-page h1{font-size:36px}.prose-page h2{font-size:24px;margin-top:32px}
.home-page .top{margin-bottom:28px}.home-page .logo{background:var(--ink)}.next-step{position:relative;padding:36px 40px;border-left:4px solid var(--accent);background:var(--ink);color:var(--panel);margin:20px 0 24px;overflow-wrap:anywhere}.next-kicker{font-size:11px;letter-spacing:.14em;margin:0 0 18px;color:#d9b6a6;font-weight:600}.next-step h2{color:inherit;font-size:clamp(28px,4.2vw,44px);line-height:1.15;max-width:730px;margin:0 0 18px;letter-spacing:-.025em}.next-reason{font-size:16px;line-height:1.65;max-width:660px;color:#dedbd1;margin-bottom:24px}.primary-link{display:inline-flex;align-items:center;gap:20px;padding:12px 20px;background:var(--panel);color:var(--ink);font-size:15px;font-weight:600;text-decoration:none;border:1px solid transparent;transition:background .15s,transform .15s}.primary-link:hover{background:#efe0d7;transform:translateY(-1px)}.next-step .hint{color:#bfb9ab;margin:16px 0 0}.home-details{border-bottom:1px solid var(--line);padding:16px 0}.home-details summary{font-size:14px;font-weight:600;cursor:pointer}.home-page .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}.home-page .grid>.card{clip-path:none;box-shadow:none;background:transparent;border:0;border-bottom:1px solid var(--line);padding:22px 8px 22px 48px;position:relative;min-height:0;transition:background .15s}.home-page .grid>.card:hover{transform:none;background:var(--panel2)}.home-page .card .ic{position:absolute;left:4px;top:24px;font-size:22px}.home-page .card h3{font-size:23px;margin:0 0 6px}.home-page .card p{font-size:14px;max-width:42ch;margin:0 0 10px}.home-page .card .pill{font-size:11px;background:transparent;border:none;padding:0;color:var(--accent)}.home-page .greet{margin-top:36px;background:var(--panel);border-top:1px solid var(--line);padding:20px}.home-page .section-title{margin-top:36px}
.story-mode{border:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 28px}.story-mode legend{font-weight:600;margin-bottom:12px}.story-mode label{border:1px solid var(--line);padding:16px;cursor:pointer;background:var(--panel);font-weight:600}.story-mode label:has(input:checked){border-color:var(--accent);box-shadow:inset 3px 0 var(--accent);background:var(--accent-soft)}.story-mode label span{display:block;margin:6px 0 0 24px;font-weight:400;font-size:12px;color:var(--muted)}.quest-episode-title{display:block;padding-top:12px;margin-top:auto;border-top:1px solid var(--line);font-size:13px;font-weight:600;color:var(--ink)}.episode-complete{padding:24px;margin:16px 0;background:var(--good-bg);border:1px solid var(--good)}.episode-complete h3{font-size:25px;margin:6px 0 12px}.episode-complete button{margin:8px 8px 0 0}.memory-note{border-bottom:1px solid var(--line);padding:10px 0}.memory-excerpt{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.65}.memory-event{font-size:12px;border-left:2px solid var(--good);padding-left:10px}#memoryForm textarea{width:100%;min-width:0;margin:8px 0}.quest-context details details{padding:12px 0;font-size:12px}.quest-context details details summary{font-size:12px}
button,a,input,textarea,select{scroll-margin-block:24px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button{transition:background-color .15s,color .15s}button:disabled{cursor:wait}label input[type=checkbox],label input[type=radio]{accent-color:var(--accent)}
@media(max-width:650px){.service-notice{padding:8px 16px;gap:8px;font-size:10px}.next-step{padding:26px 22px}.next-reason{font-size:14px}.home-page .grid{grid-template-columns:1fr}.home-page .card h3{font-size:22px}.home-page .top{gap:14px;align-items:flex-start}.story-mode{grid-template-columns:1fr}.service-footer{padding:20px 80px 28px 16px}.primary-link{width:100%;justify-content:space-between}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.primary-link:hover{transform:none}}

input[type=checkbox],input[type=radio]{width:auto;padding:0;min-height:0;vertical-align:middle;margin-right:6px}.admin-page input[type=checkbox]{padding:0}button:disabled{cursor:default;opacity:.65}@media(hover:none){.primary-link:hover{transform:none}}

.quest-detail>summary #questLabel{font:inherit;color:inherit;margin:0}.learning-guidance>details>summary{font-weight:600;cursor:pointer}.learning-guidance>details h2{font-size:18px;margin-top:18px}

/* Scoped irregular.html */

.page-irregular .modebar{display:flex;gap:8px;margin:14px 0}

.page-irregular .modebar .chip{cursor:pointer}

.page-irregular .trainer{background:var(--panel);border:1px solid var(--line);padding:22px;margin-top:8px;
    clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}

.page-irregular .v1{font-family:Georgia,serif;font-size:34px;letter-spacing:.5px}

.page-irregular .v1 .ru{display:block;font-family:inherit;font-size:15px;color:var(--muted);margin-top:4px;letter-spacing:0}

.page-irregular .ins{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}

.page-irregular .fld{flex:1;min-width:160px}

.page-irregular .fld label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}

.page-irregular .fld input{width:100%;padding:11px 12px;border:1px solid var(--line);background:var(--bg);font-size:17px;box-sizing:border-box}

.page-irregular .fld input.ok{border-color:var(--good);background:var(--good-bg)}

.page-irregular .fld input.no{border-color:var(--bad,#c0392b);background:#fbe9e7}

.page-irregular .fb{margin-top:8px;font-size:15px;min-height:22px}

.page-irregular .fb .right{color:var(--good);font-weight:700}

.page-irregular .fb .wrong{color:var(--bad,#c0392b)}

.page-irregular .tbl{width:100%;border-collapse:collapse;margin-top:8px}

.page-irregular .tbl th,.page-irregular .tbl td{border:1px solid var(--line);padding:8px 10px;text-align:left;font-size:15px}

.page-irregular .tbl th{background:var(--accent-soft)}

.page-irregular .tbl tr:hover{background:var(--accent-soft)}

.page-irregular .tbl .sp{cursor:pointer;user-select:none}

.page-irregular .grpsel{margin:8px 0 0;font-size:14px}

.page-irregular .grpsel select{padding:7px 10px;border:1px solid var(--field-border);background:var(--bg);font-size:14px}

.page-irregular .search{width:100%;padding:10px 12px;margin:10px 0;border:1px solid var(--line);background:var(--bg);box-sizing:border-box}


/* Scoped login.html */

.page-login .authwrap{max-width:420px;margin:0 auto;padding:40px 18px}

.page-login .authcard{background:var(--panel,#fffdf7);border:1px solid var(--line,#d8d3c4);padding:26px 24px;
    clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}

.page-login .authcard h1{font-family:Georgia,serif;font-size:26px;margin:0 0 4px}

.page-login .authcard .sub{color:var(--muted,#726d62);margin:0 0 18px;font-size:14px}

.page-login .tabs{display:flex;gap:8px;margin-bottom:16px}

.page-login .tabs button{flex:1;background:var(--surface,#f6f4ec);border:1px solid var(--line);color:var(--ink);padding:9px}

.page-login .tabs button.on{background:var(--accent,#c15f3c);color:#fff;border-color:var(--accent)}

.page-login label{display:block;font-size:13px;color:var(--muted,#726d62);margin:12px 0 4px}

.page-login input{width:100%;padding:11px 12px;border:1px solid var(--line,#d8d3c4);background:#fff;font-size:15px;box-sizing:border-box}

.page-login .go{width:100%;margin-top:18px;background:var(--accent,#c15f3c);color:#fff;border:none;padding:12px;font-size:15px;cursor:pointer}

.page-login .msg{margin-top:12px;font-size:13px;min-height:18px}

.page-login .msg.err{color:#b35347}

.page-login .msg.ok{color:#4a7c59}

.page-login .hint{font-size:12px;color:var(--muted);margin-top:14px;line-height:1.5}

@media(max-width:480px){
.page-login .authwrap{padding:20px 12px}
}


/* Scoped rpg.html */

.page-rpg .hero{display:flex;gap:18px;align-items:center;background:var(--panel);border:1px solid var(--line);padding:22px;
    clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}

.page-rpg .hero .emblem{font-size:54px;line-height:1}

.page-rpg .hero .title{font-family:Georgia,serif;font-size:26px}

.page-rpg .hero .lvl{color:var(--muted);font-size:14px}

.page-rpg .skill{margin:12px 0}

.page-rpg .skill .top{display:flex;justify-content:space-between;font-size:14px;margin-bottom:5px}

.page-rpg .ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}

.page-rpg .ach{background:var(--panel);border:1px solid var(--line);padding:14px;text-align:center;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}

.page-rpg .ach.locked{opacity:.4;filter:grayscale(1)}

.page-rpg .ach .i{font-size:30px}

.page-rpg .ach .n{font-weight:700;font-size:14px;margin-top:4px}

.page-rpg .ach .d{font-size:12px;color:var(--muted);margin-top:2px}

.page-rpg .quest{background:var(--accent-soft);border:1px solid #e3cebf;padding:16px;margin:16px 0;clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px)}

.page-rpg .sp-bar{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);padding:12px 16px;margin:8px 0 16px}

.page-rpg .sp-bar b{font-family:Georgia,serif;font-size:22px;color:var(--accent)}

.page-rpg .tree{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}

.page-rpg .branch{display:flex;flex-direction:column}

.page-rpg .branch .bhead{text-align:center;font-weight:700;font-size:13px;margin-bottom:8px}

.page-rpg .branch .bhead .bi{font-size:24px;display:block}

.page-rpg .node{background:var(--panel);border:1px solid var(--line2);padding:10px;text-align:center;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px)}

.page-rpg .node .nm{font-weight:700;font-size:13px}

.page-rpg .node .ds{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.35}

.page-rpg .node .pk{font-size:10px;color:var(--accent);margin-top:3px}

.page-rpg .node .cost{font-size:11px;margin-top:6px}

.page-rpg .connector{height:16px;width:2px;background:var(--line2);margin:0 auto}

.page-rpg .node.done{border-color:var(--good);background:var(--good-bg)}

.page-rpg .node.done .cost{color:var(--good);font-weight:700}

.page-rpg .node.avail{border-color:var(--accent);cursor:pointer;box-shadow:0 0 0 2px var(--accent-soft)}

.page-rpg .node.avail:hover{background:var(--accent-soft)}

.page-rpg .node.locked{opacity:.5;filter:grayscale(.6)}

.page-rpg .specs{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}

.page-rpg .spec{background:var(--panel);border:1px solid var(--line2);padding:14px;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}

.page-rpg .spec .si{font-size:26px}

.page-rpg .spec .sn{font-weight:700;margin-top:2px}

.page-rpg .spec .sd{font-size:12px;color:var(--muted);margin:3px 0}

.page-rpg .spec .req{font-size:11px;color:var(--muted);margin-top:4px}

.page-rpg .spec .req b{color:var(--ink)}

.page-rpg .spec.done{border-color:var(--good);background:var(--good-bg)}

.page-rpg .spec.avail{border-color:var(--accent);cursor:pointer;box-shadow:0 0 0 2px var(--accent-soft)}

.page-rpg .spec.avail:hover{background:var(--accent-soft)}

.page-rpg .spec.locked{opacity:.6}

@media(max-width:640px){
.page-rpg .tree{grid-template-columns:repeat(2,1fr)}
}


/* Scoped vocab.html */

.page-vocab .packs{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 10px}

.page-vocab .pack{padding:6px 11px;border:1px solid var(--line2);background:var(--panel2);font-size:12px;cursor:pointer;min-width:130px}

.page-vocab .pack .pmast{height:4px;background:var(--line);margin-top:5px}

.page-vocab .pack .pmast i{display:block;height:100%;background:var(--good);transition:width .3s}

.page-vocab .pack .pm-num{opacity:.7;font-size:11px}

.page-vocab .pack.locked{opacity:.6;border-style:dashed}

.page-vocab .pack.open{border-color:var(--good);background:var(--good-bg)}

.page-vocab .counters{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}

.page-vocab .counter{flex:1;min-width:90px;text-align:center;background:var(--panel);border:1px solid var(--line);padding:8px}

.page-vocab .counter b{display:block;font-size:20px;font-family:Georgia,serif}

.page-vocab .counter span{font-size:11px;color:var(--muted)}

.page-vocab .c-learn{border-color:var(--bad)}

.page-vocab .c-med{border-color:var(--warn)}

.page-vocab .c-known{border-color:var(--good)}

.page-vocab .c-new{border-color:var(--line2)}

.page-vocab .badge{display:inline-block;font-size:11px;padding:2px 9px;border:1px solid var(--line2)}

.page-vocab .b-learn{color:var(--bad);border-color:var(--bad)}

.page-vocab .b-med{color:var(--warn);border-color:var(--warn)}

.page-vocab .b-known{color:var(--good);border-color:var(--good)}

.page-vocab .b-new{color:var(--muted)}

.page-vocab .batchbar{font-size:13px;color:var(--muted);margin:6px 0}

.page-vocab .listrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line)}

.page-vocab .listrow:last-child{border-bottom:none}

.page-vocab .listrow .en{font-weight:600}

.page-vocab .listrow .ru{color:var(--muted);font-size:13px}

.page-vocab .listsec{background:var(--panel);border:1px solid var(--line);margin:10px 0;padding:4px 10px;
    clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px)}

.page-vocab .listsec h3{margin:10px 4px}

.page-vocab .mini{background:none;border:none;color:var(--accent);cursor:pointer;font-size:16px;padding:0 4px}

.page-vocab input.search{margin:8px 0}


/* Shared settings launcher; native dialog rules are below. */
#eng-gear{position:fixed;right:18px;bottom:18px;z-index:9000;width:50px;height:50px;cursor:pointer;background:var(--accent,#c15f3c);color:#fff;border:none;font-size:22px;display:grid;place-items:center;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);box-shadow:0 4px 14px rgba(0,0,0,.25)}

/* 0.4.1 — shared application shell and consistent working surfaces. */
:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--content-width:1100px;--reading-width:800px;--focus-ring:3px solid var(--accent)}
body{font-size:15px;line-height:1.6}.wrap{max-width:var(--content-width);padding:32px 24px 56px}.page-vocab .wrap,.page-speaking .wrap,.page-voice .wrap,.page-irregular .wrap,.page-tests .wrap,.page-exam .wrap,.page-diary .wrap,.page-lesson .wrap{max-width:var(--reading-width)}.quest-wrap{max-width:1180px}.prose-page{max-width:760px}.page-header{margin:16px 0 30px;padding-bottom:24px;border-bottom:1px solid var(--line)}.page-header h1{font-size:clamp(30px,3.2vw,40px);line-height:1.16;letter-spacing:-.025em;margin:0 0 14px;max-width:30ch}.page-header>.sub{font-size:15px;line-height:1.65;max-width:70ch;margin:0}.wrap>a.back:first-child{display:inline-block;margin-bottom:16px;text-transform:none;letter-spacing:0;font-size:13px}h2{font-size:24px;line-height:1.25;margin:32px 0 16px}h3{line-height:1.3}p{overflow-wrap:break-word}fieldset{min-width:0;border:1px solid var(--line);padding:16px 18px;margin:18px 0}legend{padding:0 8px;font-size:13px;font-weight:600}select[multiple]{min-height:180px}.learning-form{max-width:850px}.learning-checks label{display:flex;align-items:center;gap:8px;padding:8px 0}.learning-checks input{margin:0}.learning-metrics{gap:12px;margin:24px 0}.learning-metrics .stat{text-align:left;min-width:0;padding:20px}.learning-metrics .stat b{font-size:28px;line-height:1.2;overflow-wrap:anywhere}.learning-metrics .stat span{display:block;text-transform:none;font-size:12px;line-height:1.5;letter-spacing:0;margin-top:8px}.learning-guidance{padding:20px 24px;margin:24px 0}.learning-analysis:empty{display:none}.table-scroll,.scrollx{max-width:100%;overscroll-behavior-x:contain}.table-scroll table{font-size:14px}.table-scroll th{font-size:12px}.table-scroll td{vertical-align:top}.table-scroll caption{text-align:left;color:var(--muted);padding-bottom:12px}button,input:not([type=checkbox]):not([type=radio]),select{min-height:44px}button.sm{min-height:36px}button{line-height:1.4}input,select,textarea{font-size:15px}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}input[type=range]{padding-inline:0;border:none;accent-color:var(--accent)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:var(--focus-ring);outline-offset:3px;clip-path:none}.opt{min-height:52px;line-height:1.5}.opt.on{border:2px solid var(--accent);background:var(--accent-soft);font-weight:600}.opt.on::before{content:'✓ ';color:var(--accent)}.tabs{gap:8px}.tab{margin:0;line-height:1.5}.filters .chip{margin:0}.sub,.hint{line-height:1.65}.card,.panel,.gram,.qcard,.learning-guidance,.setup,.trainer,.listsec,.authcard{clip-path:none}.card:hover,.qcard:hover,.snd:hover{transform:none}.card .ic{background:transparent;clip-path:none;width:30px;height:30px}.card h3{font-size:20px}.lesson-card{padding:22px;gap:10px}.lesson-card .done-badge{position:static;order:-1;font-size:11px;border-left:2px solid var(--good);padding-left:8px}.lesson-card .ic{font:600 22px Georgia,serif;color:var(--muted)}.lessonhead h1{font-size:clamp(28px,4vw,38px);line-height:1.2;margin:8px 0 16px}.gram{padding:24px;margin:18px 0}.gram h3{font-size:22px;line-height:1.35}.gram p{line-height:1.8}.ex-list li{padding:12px 0}.ex-list .tr{display:block;margin:6px 0 0;padding-left:20px}.say{display:inline;line-height:1.8}.say::before{display:inline-block;margin-right:6px;vertical-align:-1px}.keys{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}.key{padding:16px}.key span{display:block;margin-top:6px}.quizgrid{grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr))}.qcard{padding:22px}.qcard h3{font-size:21px;line-height:1.35}.qcard p{font-size:14px}.qtext{font-size:25px;line-height:1.45}.prompt{padding:18px 20px}.setup{background:var(--panel);border:1px solid var(--line);padding:24px}.setup>details>summary{font-weight:600}.page-voice .wrap{display:flex;flex-direction:column}.page-voice .chat{height:clamp(300px,52dvh,640px);flex:none;min-height:300px}.controls{justify-content:flex-start;gap:8px}.controls input{min-width:180px}.controls button{margin:0}.page-speaking .bubble,.page-voice .bubble{line-height:1.75;max-width:92%;padding:16px 18px}.page-diary .diary-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.page-diary .stat{padding:14px 10px;min-width:0}.page-diary .stat span{text-transform:none;letter-spacing:0;line-height:1.4;display:block;margin-top:6px}.page-diary .entry{padding:20px}.page-diary .chart{clip-path:none;margin-bottom:36px}.page-vocab .pack{color:var(--ink);text-align:left;min-width:145px;margin:0;font-weight:400;line-height:1.5}.page-vocab .pack:disabled{opacity:1;cursor:default}.page-vocab .pack.locked{color:var(--muted);opacity:1}.page-vocab .pack .pm-num{display:block}.page-vocab .counters{gap:8px;margin-bottom:20px}.page-vocab .counter{padding:14px 8px}.page-vocab .counter span{font-size:12px}.page-vocab .b-med{color:var(--warn);border-color:var(--warn)}.page-vocab .b-known{color:var(--good);border-color:var(--good)}.page-vocab .listrow{align-items:flex-start;flex-wrap:wrap;padding:14px 8px}.page-vocab .listrow .ru{font-size:14px;font-weight:400;line-height:1.5}.page-vocab .addbox input,.page-vocab .addbox select{margin-bottom:12px}#cardArea .card{min-height:300px}.front{font-size:clamp(28px,5vw,40px);overflow-wrap:anywhere}.page-irregular .modebar .chip{margin:0}.page-irregular .trainer{clip-path:none;padding:28px}.page-irregular .fld{min-width:0}.page-irregular .fld input.no{background:var(--bad-bg)}.page-irregular .tbl .sp{white-space:nowrap}.page-irregular .table-scroll{margin-top:14px}.page-irregular .fb{font-size:14px;line-height:1.65}.page-rpg .tree{gap:16px;align-items:start}.page-rpg button.node,.page-rpg button.spec{display:block;width:100%;margin:0;color:var(--ink);line-height:1.5;font-weight:400;clip-path:none}.page-rpg .node>span,.page-rpg .spec>span,.page-rpg .spec>span>span{display:block}.page-rpg .node .ds{font-size:12px}.page-rpg .node .nm{font-size:14px}.page-rpg .node.locked,.page-rpg .spec.locked,.page-rpg .ach.locked{opacity:1;filter:none;background:var(--panel2)}.page-rpg .node.locked .nm,.page-rpg .spec.locked .sn{color:var(--muted)}.page-rpg .node.done,.page-rpg .spec.done{color:var(--ink)}.page-rpg .ach{clip-path:none}.page-rpg .ach .d{font-size:13px;line-height:1.6}.page-rpg .sp-bar{flex-wrap:wrap}.page-rpg .hero{clip-path:none;flex-wrap:wrap}.page-rpg .specs{grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr))}.page-rpg .spec{padding:18px}.page-rpg .spec .req{font-size:12px}.page-rpg #capstone{margin-top:20px}.page-rpg .bhead{min-height:64px}.page-login .authwrap{max-width:480px;padding:48px 24px 64px}.page-login .authcard{padding:32px}.page-login .authcard h1{font-size:36px}.page-login .tabs button{min-height:44px;margin:0}.page-admin .awrap{max-width:1140px}.admin-ai h2{margin-top:0}.admin-ai .learning-form{max-width:none}.admin-page .row{gap:16px}.admin-page .row>div{min-width:200px}.admin-page .card{clip-path:none}.admin-page .config-grid{gap:0 24px}.admin-page button.ghost{background:var(--panel);color:var(--ink);border:1px solid var(--line2)}
.skip-link{position:fixed;left:16px;top:10px;z-index:10000;background:var(--ink);color:var(--panel);padding:12px 18px;transform:translateY(-180%);text-decoration:none}.skip-link:focus{transform:none}.app-header{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--line)}.app-header-inner{max-width:1180px;padding:12px 24px;margin:0 auto;display:flex;align-items:center;gap:28px}.app-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);flex:none}.app-mark{display:grid;place-items:center;width:34px;height:34px;background:var(--ink);color:var(--panel);font:600 16px Georgia,serif;clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px)}.app-wordmark{font:600 20px Georgia,serif}.app-navigation{display:flex;flex:1;justify-content:center;gap:20px;min-width:0}.app-navigation a{text-decoration:none;font-size:13px;color:var(--muted);padding:10px 0;border-bottom:2px solid transparent;white-space:nowrap}.app-navigation a[aria-current]{color:var(--ink);font-weight:600;border-bottom-color:var(--accent)}.app-navigation a:hover{color:var(--accent)}.app-actions{margin-left:auto;display:flex;align-items:center;gap:14px;flex:none}.app-actions>a{font-size:13px}.app-more{position:relative}.app-more>summary{list-style:none;font-size:12px;color:var(--ink);border:1px solid var(--line2);padding:9px 12px;min-height:40px}.app-more>summary::-webkit-details-marker{display:none}.app-more>summary::after{content:' +';color:var(--accent)}.app-more[open]>summary{background:var(--accent-soft)}.app-more[open]>summary::after{content:' −'}.app-menu{position:absolute;right:0;top:calc(100% + 10px);width:280px;padding:10px;background:var(--panel);border:1px solid var(--line2);box-shadow:0 12px 28px #23211c14;max-height:calc(100dvh - 150px);overflow:auto}.app-menu>a,.app-staff>a{display:block;text-decoration:none;font-size:13px;color:var(--ink);padding:10px 12px;border-left:2px solid transparent}.app-menu a[aria-current]{background:var(--accent-soft);border-left-color:var(--accent);font-weight:600}.app-menu a:hover{background:var(--panel2)}.app-staff{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.app-header #eng-gear{position:static;width:40px;height:40px;min-height:40px;clip-path:none;background:var(--panel);border:1px solid var(--line2);color:var(--ink);box-shadow:none;margin:0;z-index:auto}.app-header #eng-gear:hover{background:var(--accent-soft)}.service-notice{font-size:11px;padding-block:6px}.service-footer{padding-bottom:32px;padding-right:24px}.app-header~main :is(input,select,textarea,button,[tabindex],summary){scroll-margin-top:var(--anchor-gap,150px)}.app-header~main{scroll-margin-top:var(--anchor-gap,140px)}.home-page .brand .logo{display:none}.home-page .top{margin-bottom:18px}.home-page .brand h1{font-size:26px}.home-page .brand .sub{font-size:13px}.home-page .stats .stat{padding:10px 16px}.home-page .next-step{margin-top:18px}.home-page .grid>.card{padding-left:48px}.home-page .grid>.card .ic{width:28px;height:28px}
@media(max-width:900px){.app-header-inner{gap:18px;flex-wrap:wrap;padding:10px 20px}.app-navigation{flex-basis:100%;justify-content:space-between;gap:12px}.app-navigation a{padding:6px 0}.app-header~main :is(input,select,textarea,button,[tabindex],summary){scroll-margin-top:var(--anchor-gap,170px)}.tree{min-width:0}}
@media(max-width:600px){.wrap{padding:24px 16px 40px}.page-header{margin:8px 0 24px;padding-bottom:20px}.page-header h1{font-size:30px}.page-header>.sub{font-size:14px}h2{font-size:23px}.app-header-inner{padding:10px 16px;gap:8px}.app-navigation{gap:4px 10px;flex-wrap:wrap}.app-navigation a{font-size:12px}.app-wordmark{font-size:19px}.app-actions{gap:10px}.app-menu{width:min(290px,calc(100vw - 32px))}.page-diary .diary-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.learning-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.learning-metrics .stat{padding:16px 12px}.learning-metrics .stat b{font-size:24px}.learning-guidance{padding:16px}.gram{padding:20px 16px}.gram h3{font-size:20px}.lesson-card{padding:20px}.page-irregular .ins{gap:10px}.page-irregular .fld{flex-basis:100%}.page-irregular .trainer{padding:20px}.page-irregular .tbl th,.page-irregular .tbl td{font-size:13px;padding:10px 8px}.page-vocab .counter{min-width:0;flex-basis:20%;padding:12px 3px}.page-vocab .counter span{font-size:10px}.grade{gap:6px}.grade .g{min-width:0;padding:10px 5px;font-size:12px}.page-rpg .tree{grid-template-columns:1fr 1fr;gap:12px}.page-rpg .hero{padding:20px;gap:14px}.page-rpg .hero .title{font-size:25px}.page-rpg .ach-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-login .authwrap{padding:28px 16px 40px}.page-login .authcard{padding:24px}.page-voice .chat{padding:12px;height:46dvh}.page-voice .controls input{flex-basis:calc(100% - 112px);min-width:0}.controls{flex-wrap:wrap}.controls button{max-width:100%}.qtext{font-size:23px}.setup{padding:18px}.service-footer{padding:24px 16px}.page-tests .topbar{gap:10px;align-items:flex-start}.page-rpg .specs{grid-template-columns:1fr}.quest-composer{position:static}.quest-header h1{font-size:30px}.quest-scene h2{font-size:25px}.quest-how{gap:14px}}
@media(prefers-reduced-motion:reduce){.app-menu,.app-navigation a{transition:none}}
@media(max-height:540px){
  :root{--anchor-gap:16px}
  .app-header{position:relative}
  .app-menu{max-height:max(96px,calc(100dvh - 125px))}
}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page-rpg .node:disabled:hover,.page-rpg .spec:disabled:hover{filter:none}.page-rpg .node .cost,.page-rpg .spec .cost{display:block}

.page-header h1 .ei{width:.85em;height:.85em;vertical-align:-.05em;margin-right:4px}.home-page .brand h1{font-size:28px;line-height:1.2;max-width:23ch}.page-login .authcard .tabs{margin-top:24px}.page-login .authcard input[type=checkbox]{min-height:0}

.toast{visibility:hidden;opacity:0;pointer-events:none;max-width:calc(100vw - 32px);text-align:center}.toast.show{visibility:visible;opacity:1}.practice-insights{margin:24px 0;border:1px solid var(--line);padding:18px 20px;background:var(--panel)}.practice-insights>summary{font-weight:600;color:var(--ink)}.practice-insights[open]>summary{margin-bottom:20px}.practice-insights h2{font-size:21px}.wrap [id]{scroll-margin-top:var(--anchor-gap,150px)}.page-diary .panel:has(#entry){padding:22px}.page-diary #entry{min-height:200px;font-size:17px;line-height:1.75}.page-diary #modeChips{margin-bottom:16px}@media(max-width:600px){.practice-insights{padding:16px}.page-diary .panel:has(#entry){padding:16px}}

.course-tools{display:grid;grid-template-columns:2fr 1fr;gap:20px;max-width:800px}.course-tools label{margin:0;font-size:12px}.course-tools input,.course-tools select{display:block;margin-top:8px}.course-jumps{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0 24px}.course-jumps a{padding:7px 15px;border:1px solid var(--line2);color:var(--ink);text-decoration:none;font-size:12px}.course-jumps a:hover{background:var(--accent-soft)}.course-empty{padding:40px 20px;border:1px solid var(--line);background:var(--panel)}.course-empty h2{margin-top:0}@media(max-width:600px){.course-tools{grid-template-columns:1fr;gap:14px}.course-jumps{gap:8px}.course-jumps a{padding:7px 13px}}

.vocab-session-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0}.vocab-session-bar .toggle{font-size:12px;margin:0}.page-vocab #cardArea .speakbtn{margin:4px 0}.page-vocab .listrow .mini{margin:0;min-width:36px;min-height:36px}

.home-page .brand .home-intro{margin:4px 0 0}
.home-rank{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-top:14px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);text-decoration:none;color:var(--ink)}
.home-rank:hover{border-color:var(--accent);background:var(--accent-soft)}
.home-rank-emblem{font-size:30px;line-height:1}
.home-rank-label{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 12px;margin-bottom:8px;font-size:.875rem}
.home-rank-label span{color:var(--muted)}
.home-rank-link{color:var(--accent);font-weight:600;font-size:.875rem}
.home-phrase{clip-path:none}
.home-phrase h2{margin:0 0 12px;font-size:1.25rem}
.home-phrase .phrase{margin:0}
.home-phrase .hint{margin:4px 0 14px}
.home-phrase-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.home-phrase-actions button{margin:0}
.home-phrase-settings{color:var(--accent);margin-inline-start:auto}
.home-note{margin-top:32px;color:var(--muted);font-size:.875rem;text-align:center}
.conversation-activity{margin:24px 0;padding:16px 18px;border:1px solid var(--line);background:var(--panel)}
.conversation-activity :is(h2,h3){margin:0 0 12px;font-size:1.25rem}
.conversation-activity .hint{margin:8px 0 0}
.conversation-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(132px,100%),1fr));gap:8px;margin:0}
.conversation-counts>div{min-width:0;padding:8px 10px;background:var(--panel2);overflow-wrap:anywhere}
.conversation-counts dt{font-size:.875rem;color:var(--muted)}
.conversation-counts dd{margin:0;font:600 1.25rem/1.4 Georgia,serif}
.progress-pager{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:12px 0}
.progress-pager [aria-disabled="true"]{color:var(--muted);cursor:default}
.page-progress #progressTopicSearch{display:block;max-width:32rem}
.heading-count{font:600 .875rem/1.4 ui-sans-serif,"Segoe UI",sans-serif;color:var(--muted);white-space:nowrap}
.section-intro{margin:0 0 16px}
.course-drill{display:block;margin-top:18px;text-decoration:none;color:inherit}
.page-rpg .hero-progress{flex:1 1 12rem;min-width:0}
.page-rpg .hero-progress progress{margin:8px 0}
.page-rpg .hero-streak{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;background:var(--panel2)}
.hero-streak-icon,.hero-streak strong{font-size:1.25rem}
.hero-skills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.page-rpg .hero-skills .skill{margin:0;padding:12px 14px;background:var(--panel);border:1px solid var(--line)}
.page-rpg .hero-skills .top{flex-wrap:wrap;gap:4px 12px}
.hero-skills .top span{color:var(--muted)}
.capstone-content{text-align:center}
.page-rpg .spec .pk,.page-rpg .spec .cost{margin-top:6px;font-size:.875rem}
.page-rpg .spec.avail .cost,.page-rpg .spec .pk{color:var(--accent)}
.page-rpg .spec.done .cost{color:var(--good)}
@media(max-width:520px){
  .conversation-counts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-page .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:8px}
  .home-page .stats .stat{min-width:0;padding:10px 6px;overflow-wrap:anywhere}
  .home-rank{grid-template-columns:auto minmax(0,1fr);gap:10px 12px}
  .home-rank-link{grid-column:2}
  .home-phrase-settings{margin-inline-start:0}
  .hero-skills{grid-template-columns:1fr}
  .page-rpg .hero{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start}
  .page-rpg .hero .emblem{font-size:36px}
  .page-rpg .hero-streak{grid-column:2;justify-self:start}
}

.sr-only{left:0;top:0}.table-scroll,.scrollx{position:relative}.chip,.tab,.lp{transition:none}.page-irregular .stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.page-irregular .stats .stat{min-width:0;padding:14px 6px}.page-irregular .stats .stat span{font-size:10px;letter-spacing:0;display:block;margin-top:6px;line-height:1.4}.page-irregular .stats .stat b{font-size:24px}

.app-navigation a{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}.app-more>summary{min-height:44px;display:flex;align-items:center;gap:4px}.app-header #eng-gear{width:44px;height:44px;min-height:44px}.app-brand{min-height:44px}

.page-vocab .listrow>div{flex:1;min-width:0;overflow-wrap:anywhere}.page-vocab .listrow>.mini{flex:none}.reg{max-width:100%;overflow-wrap:anywhere;line-height:1.6}button{overflow-wrap:anywhere}

@media(max-width:600px){.app-more{position:static}.app-menu{right:16px;top:calc(100% + 8px);width:calc(100% - 32px);max-height:calc(100dvh - 170px)}.app-navigation{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;overflow:visible}.app-navigation a{min-width:0;letter-spacing:-.01em}}@media(max-width:360px){.app-wordmark{display:none}.app-navigation a{font-size:12px;letter-spacing:0}}



/* Confirmed RPG effects stay with their originating turn. */
.quest-effects{margin-top:14px;border-top:1px solid var(--line2);padding-top:8px;font-size:13px;color:var(--muted)}
.quest-effects summary{min-height:36px;display:list-item;padding:6px 0;cursor:pointer;font-weight:600}
.quest-effects ul{padding-left:20px;margin:8px 0 0;line-height:1.7}
.quest-error{scroll-margin-top:var(--anchor-gap,100px);overflow-wrap:anywhere}

/* Vocabulary catalogue: a bounded page of readable words, rather than the entire deck in DOM. */
.page-vocab .vocab-list-tools{display:grid;grid-template-columns:minmax(0,1fr) 140px;gap:12px;align-items:end;margin:12px 0 16px}
.page-vocab .vocab-list-tools label{margin:0;min-width:0;font-size:12px;font-weight:600}
.page-vocab .vocab-list-tools input,.page-vocab .vocab-list-tools select{display:block;width:100%;margin:6px 0 0;min-width:0}
.page-vocab .vocab-list-tools button{margin:0}
.page-vocab .vocab-list-search{margin:24px 0 12px}
.page-vocab .vocab-list-search label{font-size:12px;font-weight:600}
.page-vocab .vocab-list-options{margin:0 0 24px;border-bottom:1px solid var(--line);padding-bottom:12px}
.page-vocab .vocab-list-options>summary{min-height:44px;padding:10px 0;font-size:13px;color:var(--muted);cursor:pointer;overflow-wrap:anywhere}
.page-vocab .vocab-search-row{display:flex;align-items:center;gap:8px;margin-top:6px}
.page-vocab .vocab-search-row input{flex:1;margin:0;min-width:0;width:100%}
.page-vocab .vocab-search-row button{flex:none;margin:0}
.page-vocab .vocab-list-statuses{margin-bottom:24px}
.page-vocab .vocab-list-heading h2{font-size:24px;margin:0 0 6px;scroll-margin-top:var(--anchor-gap,120px)}
.page-vocab .vocab-list-heading .hint{margin:0}
.page-vocab .vocab-list-heading{display:flex;justify-content:space-between;align-items:start;flex-wrap:wrap;gap:12px 20px}
.page-vocab .vocab-list-heading>div{min-width:0}
.page-vocab .vocab-list-action button{margin:0 0 6px}
.page-vocab .vocab-list-action .hint{font-size:11px;margin-bottom:0;max-width:28ch}
.page-vocab .vocab-reward-note{font-size:12px;margin:14px 0 0}
.page-vocab .vocab-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0}
.page-vocab .vocab-pagination button{margin:0;min-width:100px}
.page-vocab .vocab-pagination button:disabled{cursor:default}
.page-vocab .vocab-pagination span{color:var(--muted);font-size:13px;text-align:center}
.page-vocab .vocab-results{list-style:none;padding:0 16px;margin:0;clip-path:none}
.page-vocab .vocab-results .listrow{flex-wrap:nowrap;align-items:flex-start;gap:16px;padding:18px 0}
.page-vocab .vocab-word-body>.en,.page-vocab .vocab-word-body>.ru{display:block;line-height:1.6}
.page-vocab .vocab-word-body>.en{font-size:17px}
.page-vocab .vocab-sense{display:block;color:var(--muted);font-size:.875rem;line-height:1.5}
.page-vocab .vocab-word-body>.ru{margin-top:3px}
.page-vocab .vocab-word-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:8px;font-size:11px;color:var(--muted);line-height:1.6}
.page-vocab .vocab-word-status{border-left:2px solid var(--line2);padding-left:7px}
.page-vocab .vocab-results .mini{min-width:44px;min-height:44px;border:1px solid var(--line2);background:var(--panel2);flex-shrink:0}
.page-vocab .vocab-list-empty{padding:28px 24px;border:1px solid var(--line);background:var(--panel)}
.page-vocab .vocab-list-empty h3{margin:0 0 12px}
.page-vocab .vocab-list-empty p{color:var(--muted);margin:0}
@media(max-width:700px){.page-vocab .vocab-list-tools{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media(max-width:400px){.page-vocab .vocab-pagination{flex-wrap:wrap;gap:8px}.page-vocab .vocab-pagination span{order:-1;flex-basis:100%}.page-vocab .vocab-pagination button{flex:1;min-width:0}.page-vocab .vocab-results{padding:0 12px}.page-vocab .vocab-results .listrow{gap:10px}.page-vocab .vocab-list-heading h2{font-size:23px}}
@media(max-width:600px){.page-vocab:has(#tabLists[aria-selected="true"]) .page-header>.sub{display:none}.page-vocab:has(#tabLists[aria-selected="true"]) .page-header h1{margin-bottom:0}.page-vocab .vocab-list-search{margin-top:16px}.page-vocab .vocab-list-options{margin-bottom:16px}}

/* Lesson attempts: legible feedback and stable keyboard targets. */
.page-lesson .lesson-note{margin-top:10px}.page-lesson .fade-instruction{margin:0 0 8px}.page-lesson #fade .qinput{display:inline-block;width:160px;min-width:0;max-width:100%;margin:4px;font-size:16px}.page-lesson .lesson-recording-status{margin-top:8px}.practice-panel h3{margin-top:0}.practice-score{font:600 28px Georgia,serif;margin:10px 0}.practice-miss{padding:12px 0;border-top:1px solid var(--line)}.practice-miss p{margin:6px 0}.practice-error{padding:12px;border:1px solid var(--bad);background:var(--bad-bg);overflow-wrap:anywhere}.practice-options .qinput{width:100%;max-width:420px}.practice-panel>.expl{line-height:1.7}.page-lesson .complete-box{padding:24px;border:1px solid var(--line);background:var(--panel);margin:28px 0}.page-lesson #lessonCompletionStatus:empty{display:none}.page-lesson #lessonCompletionStatus{color:var(--good);margin-bottom:0;scroll-margin-top:var(--anchor-gap,120px)}.page-lesson .lesson-nav{overflow-wrap:anywhere}

/* Diary workspace: compact composer, readable feedback, bounded history and recovery. */
.page-diary .diary-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;align-items:center}
.page-diary .diary-actions button{margin:0;max-width:100%}
.page-diary .diary-theme{margin:8px 0}
.page-diary .diary-composer{padding:22px}
.page-diary .diary-word-count{margin:4px 0 8px}
.page-diary .diary-tools{margin:18px 0;border-top:1px solid var(--line);padding-top:14px}
.page-diary .diary-tools summary{font-size:13px;color:var(--muted)}
.page-diary .diary-reward-note{font-size:12px;border-top:1px solid var(--line);margin:18px 0 0;padding-top:12px}
.page-diary .diary-status:empty{display:none}
.page-diary .diary-status{padding:14px 16px;border-left:3px solid var(--good);background:var(--panel);overflow-wrap:anywhere}
.page-diary .diary-status.is-error{border-color:var(--bad);color:var(--bad)}
.page-diary #draftStatus{font-size:12px;min-height:20px}
.page-diary .diary-feedback{margin-top:20px;padding:20px}
.page-diary .diary-feedback h3{margin-top:0}
.page-diary .diary-feedback li{line-height:1.8}
.page-diary .diary-pagination{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 0}
.page-diary .diary-pagination button{margin:0;font-size:12px;padding:8px 12px}
.page-diary #entriesTitle,.page-diary #mistakesTitle{scroll-margin-top:var(--anchor-gap,150px)}
.page-diary .entry,.page-diary .mistake,.page-diary .prompt{overflow-wrap:anywhere;clip-path:none}
.page-diary .entry .d{margin-top:0}
.page-diary .entry .t{font-size:16px;line-height:1.8}
.page-diary .entry details>summary{font-size:15px;line-height:1.65}
.page-diary .entry textarea{margin-top:16px;min-height:160px}
.page-diary .entry .diary-actions[hidden]{display:none}
.page-diary .mistake .top{flex-wrap:wrap;align-items:center;gap:8px}
.page-diary .mistake p{margin:8px 0}
.diary-mistake-filters{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:end}
.diary-mistake-filters .diary-filter{min-width:0;flex-wrap:wrap}
.diary-error-category{font-size:.875rem;font-weight:600;color:var(--muted)}
.page-diary .diary-review{margin-top:12px}
.page-diary .diary-answer-title{font-family:inherit;font-size:15px;font-weight:600;line-height:1.5;margin:0 0 6px}
.page-diary .diary-review-input{width:100%;max-width:440px;margin:0 8px 8px 0}
.page-diary .diary-filter{display:flex;align-items:center;gap:12px;font-size:13px}
.page-diary .diary-filter select{width:auto;max-width:100%;margin:0}
.page-diary #modeChips .chip{font-weight:400;min-height:40px}
.page-diary .chart .bar{height:100%;background:transparent;border:none}
.page-diary #searchEntries{margin:0}
@media(max-width:600px){.page-diary .diary-composer,.page-diary .diary-feedback{padding:16px}.page-diary .diary-actions>button{flex:1 1 125px}.page-diary .entry .diary-actions>button{flex-basis:100px}.page-diary .diary-filter{align-items:flex-start;flex-direction:column;gap:6px}.page-diary .diary-filter select{width:100%}.page-diary #modeChips{gap:6px}.page-diary #modeChips .chip{padding:7px 10px;font-size:12px}}
.page-diary .diary-pagination{display:grid;grid-template-columns:1fr auto 1fr;gap:8px}
.page-diary .diary-pagination>.hint:first-child{grid-column:1/-1}
.page-diary .diary-pagination>button{justify-self:start}
.page-diary .diary-pagination>button:last-child{justify-self:end}

/* Teacher analyst workspace: facts, explicit draft, bounded history. */
.page-teacher .teacher-picker{display:flex;align-items:end;gap:12px;margin-bottom:16px}
.page-teacher .teacher-picker label{flex:1;margin:0}
.page-teacher .teacher-picker select{margin-bottom:0}
.page-teacher .teacher-picker button{margin:0;white-space:nowrap}
.page-teacher #teacherStatus:empty,.page-teacher #saveStatus:empty,.page-teacher #historyStatus:empty{display:none}
.page-teacher .is-error{color:var(--bad)}
.page-teacher #studentName{font-size:22px;overflow-wrap:anywhere}
.teacher-student-heading { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 16px; }
.teacher-student-heading h2 { margin:0; min-width:0; }
.teacher-editor-link { display:inline-flex; align-items:center; min-height:44px; font-weight:600; font-size:14px; }
.teacher-editor-student { margin-top:-4px; overflow-wrap:anywhere; }
.page-teacher .teacher-active{padding:18px 20px;background:var(--panel2);border-left:3px solid var(--accent);overflow-wrap:anywhere}
.page-teacher .teacher-active h3{margin:6px 0 12px;font-size:22px}
.page-teacher .teacher-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0}
.page-teacher .teacher-conflict{padding:16px;border:1px solid var(--warn);background:var(--panel2);margin:16px 0}
.page-teacher .teacher-form-fields{border:0;padding:0;margin:18px 0}
.page-teacher .teacher-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.page-teacher .teacher-targets{border-block:1px solid var(--line);padding:16px 0;margin:16px 0 24px}
.page-teacher .teacher-targets>summary{font-size:13px;font-weight:600}
.page-teacher .teacher-lessons{max-height:260px;overflow:auto;overscroll-behavior:contain;margin-top:12px}
.page-teacher .teacher-lessons label{display:flex;gap:10px;align-items:flex-start;padding:9px 4px;margin:0;font-size:13px;font-weight:400;line-height:1.6;overflow-wrap:anywhere}
.page-teacher .teacher-lessons label[hidden]{display:none}
.page-teacher .teacher-lessons input{flex:none;margin-top:5px}
.page-teacher .teacher-pages{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin:14px 0}
.page-teacher .teacher-pages>.hint:first-child{grid-column:1/-1}
.page-teacher .teacher-pages button{font-size:12px;padding:8px 12px;margin:0;justify-self:start}
.page-teacher .teacher-pages button:last-child{justify-self:end}
.learning-topic-table { width:100%; table-layout:fixed; border-collapse:collapse; background:var(--panel); }
.learning-topic-table :is(th,td) {
  padding:10px clamp(6px,1.8vw,14px);
  border-bottom:1px solid var(--line);
  text-align:start;
  vertical-align:top;
  overflow-wrap:anywhere;
  font-size:clamp(13px,2vw,15px);
}
.learning-topic-table thead { background:var(--panel2); }
.learning-topic-table thead th:first-child { width:46%; }
.learning-topic-table thead th:nth-child(2) { width:25%; }
.learning-topic-table tbody th { font-weight:500; }
.learning-topic-sample { display:block; margin-top:2px; color:var(--muted); font-size:12px; }
.page-teacher .teacher-trend{margin:20px 0 0}
.page-teacher .teacher-trend summary{font-size:13px;color:var(--muted)}
.page-teacher .teacher-trend #trend{margin-top:16px}
.page-teacher .teacher-history-card{padding:20px;border:1px solid var(--line);background:var(--surface);margin:14px 0;overflow-wrap:anywhere}
.page-teacher .teacher-history-card h3{margin:0 0 10px;font-size:20px}
.page-teacher .teacher-history-card summary{font-size:13px;color:var(--muted)}
.page-teacher #analysis{white-space:pre-wrap;overflow-wrap:anywhere}
.page-teacher #saveStatus{padding:12px 0;overflow-wrap:anywhere}
@media(max-width:600px){.page-teacher .teacher-picker{align-items:stretch;flex-direction:column}.page-teacher .teacher-picker button{align-self:flex-start}.page-teacher .teacher-form-grid{grid-template-columns:1fr;gap:0}.page-teacher .teacher-active,.page-teacher .teacher-history-card{padding:16px}.page-teacher .controls button{flex:1 1 150px}.page-teacher .teacher-pages button{padding:8px}.page-teacher .learning-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
.page-teacher .teacher-note{white-space:pre-wrap;line-height:1.75}
.page-teacher .teacher-active summary{font-size:13px;color:var(--muted)}
.page-teacher .teacher-history-card>details{margin-top:12px}
.page-teacher .teacher-metric-detail{font-size:12px;color:var(--muted);line-height:1.5;margin:10px 0 0}

/* Native shared settings dialog. Header/tabs/footer stay visible; only content scrolls. */
body.eng-settings-open{overflow:hidden}
dialog#eng-overlay{inset:0;position:fixed;width:min(640px,calc(100vw - 32px));height:fit-content;max-height:calc(100dvh - 40px);max-width:none;margin:auto;padding:0;border:1px solid var(--line2);background:var(--panel);color:var(--ink);overflow:hidden;box-shadow:0 24px 80px #0003}
dialog#eng-overlay:not([open]){display:none}
dialog#eng-overlay[open]{display:flex}
dialog#eng-overlay::backdrop{background:rgb(35 33 28 / .5)}
#eng-overlay #eng-modal{display:flex;flex-direction:column;width:100%;max-width:none;max-height:calc(100dvh - 42px);padding:0;border:0;clip-path:none;background:var(--panel)}
#eng-overlay [hidden]{display:none!important}
#eng-modal .eng-settings-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 24px 16px;flex:none}
#eng-modal .eng-settings-header h2{margin:0;font-size:28px}
#eng-modal #eng-close{float:none;margin:0;flex:none;min-height:40px;width:40px;border:1px solid var(--line2);background:var(--panel);color:var(--ink);padding:4px;font-size:19px;clip-path:none}
#eng-modal .eng-settings-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:0 24px 14px;flex:none;border-bottom:1px solid var(--line)}
#eng-modal .eng-settings-tabs button{margin:0;padding:10px 5px;font-size:13px;min-width:0;clip-path:none;background:transparent;border:1px solid transparent;color:var(--muted)}
#eng-modal .eng-settings-tabs button[aria-selected=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:600}
#eng-modal .eng-settings-content{padding:0 24px 20px;overflow:auto;overscroll-behavior:contain;min-height:0;flex:1}
#eng-modal [role=tabpanel]{outline-offset:-2px}
#eng-modal h3{border:0;padding:0;margin:22px 0 16px;font:600 21px Georgia,serif;color:var(--ink);letter-spacing:0;text-transform:none}
#eng-modal label{font-size:13px;font-weight:500;color:var(--ink);margin:16px 0 6px}
#eng-modal input,#eng-modal select{max-width:100%;margin:0 0 10px}
#eng-modal input[type=range]{width:100%;margin-bottom:20px}
#eng-modal button{max-width:100%;margin:10px 8px 0 0;font-size:13px}
#eng-modal fieldset{padding:16px;margin:20px 0 0}
#eng-modal legend{font-size:13px;color:var(--muted)}
#eng-modal .note{font-size:13px;line-height:1.65;margin:10px 0 18px;overflow-wrap:anywhere}
#eng-modal .eng-warn{font-size:13px;line-height:1.6;color:var(--warn);margin:8px 0 16px}
#eng-modal .eng-inline-check{display:flex;gap:10px;align-items:flex-start;line-height:1.5;margin:14px 0}
#eng-modal .eng-inline-check input{flex:none;margin:4px 0 0}
#eng-modal .eng-hosts{margin:16px 0}
#eng-modal .eng-hosts summary{font-size:13px;color:var(--muted)}
#eng-modal .eng-settings-footer{padding:14px 24px;display:flex;align-items:center;gap:16px;border-top:1px solid var(--line);background:var(--surface);flex:none}
#eng-modal #eng-status{margin:0;flex:1;font-size:12px;line-height:1.6;min-height:0;overflow-wrap:anywhere;max-height:96px;overflow:auto;color:var(--muted)}
#eng-modal #eng-status.is-error{color:var(--bad)}
#eng-modal #eng-cancel{margin:0;flex:none}
@media(max-width:600px){dialog#eng-overlay{width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}#eng-overlay #eng-modal{max-height:calc(100dvh - 22px)}#eng-modal .eng-settings-header{padding:16px 16px 12px}#eng-modal .eng-settings-header h2{font-size:25px}#eng-modal .eng-settings-tabs{padding:0 12px 12px;gap:0}#eng-modal .eng-settings-tabs button{font-size:12px;padding:10px 3px}#eng-modal .eng-settings-content{padding:0 16px 18px}#eng-modal .eng-settings-footer{padding:12px 16px;gap:10px}#eng-modal fieldset{padding:12px}#eng-modal #eng-aiURL,#eng-modal #eng-aiModel,#eng-modal #eng-aiKey{font-size:14px}#eng-modal button{font-size:12px}}
#eng-modal #eng-status:focus-visible{outline:var(--focus-ring);outline-offset:3px}

#eng-modal #eng-aiURL,#eng-modal #eng-aiModel,#eng-modal #eng-aiKey{font-family:ui-monospace,Consolas,monospace}

/* Internal assessment: one readable column, persistent progress, native modal. */
.page-exam .assessment-page{max-width:900px}
.page-exam [hidden]{display:none!important}
.page-exam .assessment-intro{margin:24px 0;padding:24px;clip-path:none}
.page-exam .assessment-intro h2{margin-top:0}
.page-exam .assessment-intro li{margin:10px 0;line-height:1.65}
.page-exam .assessment-levels{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:18px 0}
.page-exam .assessment-level{display:flex;flex-direction:column;align-items:flex-start;gap:8px;background:var(--panel);color:var(--ink);border:1px solid var(--line2);clip-path:none;padding:16px;min-width:0;text-align:left}
.page-exam .assessment-level strong{font:600 28px Georgia,serif}
.page-exam .assessment-level span{font-size:12px;color:var(--muted);line-height:1.5}
.page-exam .assessment-level[aria-pressed=true]{border:2px solid var(--accent);padding:15px;background:var(--accent-soft)}
.page-exam .assessment-actions,.assessment-dialog .assessment-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:20px 0}
.page-exam .assessment-secondary{display:flex;gap:10px;flex-wrap:wrap;padding-top:12px;border-top:1px solid var(--line)}
.page-exam .assessment-run-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin:24px 0 12px}
.page-exam .assessment-clock{white-space:nowrap;font-variant-numeric:tabular-nums}
.page-exam #timer{font-weight:700;margin-left:8px}
.page-exam #timer.warn{color:var(--bad)}
.page-exam #examProgress{display:block;width:100%;height:8px;margin:10px 0 24px;accent-color:var(--accent)}
.page-exam #answerCount{font-size:13px;color:var(--muted)}
.page-exam .assessment-question{clip-path:none;padding:24px;min-width:0}
.page-exam #qtext{font-family:inherit;font-size:clamp(21px,3vw,28px);line-height:1.5;margin:12px 0 24px;overflow-wrap:anywhere;scroll-margin-top:var(--anchor-gap,120px)}
.page-exam #qtext:focus-visible,.page-exam .assessment-result>h2:focus-visible{outline:var(--focus-ring);outline-offset:5px}
.page-exam #opts{min-width:0}
.page-exam #opts .opt{clip-path:none;white-space:normal;overflow-wrap:anywhere;min-height:48px}
.page-exam #opts .opt[aria-pressed=true]{background:var(--accent-soft);border:2px solid var(--accent);padding:13px 15px}
.page-exam #opts .opt[aria-pressed=true]::before{content:'Выбрано · ';font-size:12px;color:var(--accent)}
.page-exam #opts .qinput:focus-visible{outline:var(--focus-ring);outline-offset:3px}
.page-exam .assessment-extra button{margin-right:8px;margin-bottom:8px}
.page-exam .assessment-passage{margin:0 0 20px;padding:16px 20px;border-left:3px solid var(--accent);background:var(--panel2);line-height:1.75;overflow-wrap:anywhere}
.assessment-status:empty{display:none}
.page-exam .assessment-status,.page-exam .assessment-error{padding:14px 16px;border:1px solid var(--line);background:var(--panel);overflow-wrap:anywhere}
.page-exam .assessment-error{border-color:var(--bad);background:var(--bad-bg)}
.page-exam .assessment-resume:not(:empty){border-left:3px solid var(--accent);padding:8px 18px;margin:24px 0}
.page-exam .assessment-history{padding-left:24px}
.page-exam .assessment-history li{padding:14px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}
.page-exam .assessment-history li span{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}
.page-exam .assessment-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin:20px 0}
.page-exam .assessment-score{font:600 clamp(32px,6vw,52px) Georgia,serif;margin:24px 0 12px}
.page-exam .assessment-level-results{display:flex;gap:12px;flex-wrap:wrap;padding:0;list-style:none}
.page-exam .assessment-level-results li{padding:10px;border:1px solid var(--line)}
.page-exam .assessment-review{padding:20px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.page-exam .assessment-review h4{font-size:17px;font-family:inherit;line-height:1.6;margin:0 0 12px}
.page-exam .assessment-review p{margin:8px 0}
.page-exam .assessment-review-status{font-weight:600}
.page-exam .assessment-review-answers{margin:12px 0;padding:12px 16px;background:var(--panel2)}
.page-exam .assessment-review-answers dt{font-size:13px;color:var(--muted)}
.page-exam .assessment-review-answers dt:not(:first-child){margin-top:10px}
.page-exam .assessment-review-answers dd{margin:2px 0 0;white-space:pre-wrap}
.page-exam .assessment-transcript{margin:12px 0;padding:12px;background:var(--panel2);font-style:italic}
.page-exam .assessment-filters{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 20px}
.page-exam .assessment-filters button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}
.assessment-dialog{width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 32px);box-sizing:border-box;overflow:auto;border:1px solid var(--line2);padding:28px;background:var(--bg);color:var(--ink);font-family:inherit}
.assessment-dialog::backdrop{background:rgba(28,24,20,.48)}
.assessment-dialog h2{margin-top:0}
.assessment-dialog button{white-space:normal}
.assessment-dialog .assessment-actions>button{flex:none;min-height:44px}
.assessment-dialog #finishFailure:empty{display:none}
.assessment-dialog #finishFailure{border-left:3px solid var(--bad);padding-left:12px;overflow-wrap:anywhere}
.page-exam:is(.assessment-active,.assessment-result-view) .page-header{padding-bottom:16px;margin:0 0 18px}
.page-exam:is(.assessment-active,.assessment-result-view) .page-header .eyebrow,.page-exam:is(.assessment-active,.assessment-result-view) .page-header .sub{display:none}
.page-exam:is(.assessment-active,.assessment-result-view) .page-header h1{font-size:26px;margin:0}

/* Account entry and administration */
.page-login #authForm { display:grid; gap:8px; }
.page-login #authForm > label { margin:8px 0 0; }
.page-login #authForm input:not([type=checkbox]) { width:100%; min-width:0; }
.page-login .auth-consent { display:flex; gap:8px; align-items:flex-start; margin:10px 0; color:var(--ink); }
.page-login .auth-consent input { width:auto; flex:none; margin-top:4px; padding:0; }
.page-login .auth-consent span { min-width:0; overflow-wrap:anywhere; }
.page-login #msg:empty, .admin-status:empty, .admin-assignment p:empty, .access-row p:empty { display:none; }
.admin-page .admin-sections { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 20px; }
.admin-page .admin-sections a { display:inline-flex; align-items:center; min-height:44px; padding:8px 14px; background:var(--panel); border:1px solid var(--line); }
.admin-page .admin-section { scroll-margin-top:var(--anchor-gap,145px); min-width:0; margin-top:32px; }
.admin-page .admin-section h2 { font-size:clamp(23px,3vw,30px); }
.admin-page .admin-invite-form h3, .admin-page .admin-ai h2 { margin-top:0; }
.admin-page .config-grid input, .admin-page .config-grid select { display:block; width:100%; min-width:0; margin-top:5px; }
.admin-page .admin-invite-form button { margin-top:14px; align-self:start; width:auto; }
.admin-page .admin-search { width:min(100%,420px); }
.admin-page .admin-status { overflow-wrap:anywhere; margin:10px 0; }
.admin-page .admin-status.err { color:var(--bad); }
.admin-ai-check { margin:20px 0 28px; padding:16px; border:1px solid var(--line); background:var(--panel); }
.admin-ai-check h3 { margin:0 0 8px; }
.admin-ai-check button { min-height:44px; white-space:normal; }
.admin-ai-check [role=status]:empty { margin:0; }
.admin-records { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(330px,100%),1fr)); gap:12px; padding:0; margin:12px 0; list-style:none; }
.admin-record { min-width:0; padding:clamp(14px,3vw,22px); border:1px solid var(--line); background:var(--panel); overflow-wrap:anywhere; }
.admin-record h3 { margin:0 0 4px; font-size:clamp(19px,3vw,23px); }
.admin-record p { margin:8px 0 0; }
.admin-record header p { color:var(--muted); font-size:14px; margin:0; }
.admin-record-metrics { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 16px; margin:14px 0 0; }
.admin-record-metrics dt { color:var(--muted); font-size:13px; }
.admin-record-metrics dd { margin:2px 0 0; font-weight:600; }
.admin-page .admin-assignment { margin-top:16px; padding-top:12px; border-top:1px solid var(--line); }
.admin-page .admin-assignment label { display:block; margin-top:8px; }
.admin-page .admin-assignment select { display:block; width:100%; min-width:0; max-width:100%; margin:5px 0 8px; }
.admin-page .admin-assignment p, .admin-page .access-row p { margin:5px 0 0; font-size:13px; }
.admin-page .admin-assignment [role=status]:empty { margin:0; }
.admin-page .admin-assignment [role=status].err { color:var(--bad); }
.admin-page .access-row { display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:8px 12px; overflow-wrap:anywhere; }
.admin-page .access-row p { grid-column:1 / -1; }
@media(max-width:520px) {
  .page-login .authcard h1 { font-size:29px; line-height:1.15; }
  .page-login .authcard .tabs { margin-top:16px; }
  .admin-page .access-row { grid-template-columns:minmax(0,1fr) auto; padding:12px; }
  .admin-page .access-row button { grid-column:1 / -1; justify-self:start; }
  .admin-page .config-grid { grid-template-columns:minmax(0,1fr); }
}

/* Voice practice and playback feedback */
#eng-tts-notice {
  position:fixed; z-index:20; bottom:16px; left:50%; transform:translateX(-50%);
  width:max-content; max-width:calc(100% - 32px); margin:0; padding:12px 16px;
  background:var(--panel); color:var(--ink); border:1px solid var(--accent);
  box-shadow:0 4px 18px #0002;
}
#eng-tts-notice button { display:block; min-height:44px; margin:8px 0 0; }
.assessment-audio #eng-tts-notice,.quiz-actions #eng-tts-notice,.coaching-audio #eng-tts-notice {
  position:static; transform:none; width:100%; max-width:100%; box-shadow:none;
  margin:8px 0; overflow-wrap:anywhere;
}
.voice-actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.voice-actions button { max-width:100%; white-space:normal; }
.voice-composer { display:grid; gap:8px; margin-top:14px; }
.voice-composer input, .speaking-panel input { width:100%; min-width:0; }
.voice-composer label, .speaking-panel label { font-weight:600; }
.voice-composer .status, .speaking-status { margin:0; overflow-wrap:anywhere; }
.voice-composer .status:empty, .speaking-status:empty, .speaking-transcript:empty { display:none; }
.voice-composer .status:empty { display:block; position:absolute; }
.voice-composer .voice-error { padding:10px 12px; border-inline-start:3px solid var(--bad); background:var(--bad-bg); color:var(--bad); }
.voice-composer #voiceStop { flex:0 1 auto; }
.voice-speaker { display:block; margin-bottom:4px; font-size:12px; font-weight:600; color:var(--muted); }
.voice-line { margin:0; }
.page-voice .voice-replay { display:block; min-height:44px; margin:8px 0 0; }
.speaking-panel { display:grid; gap:14px; margin:14px 0; }
.speaking-panel h2 { margin:0; }
.role-task h3 { margin:0; font-size:clamp(19px,3vw,23px); }
.role-task-hint { margin:0; padding:10px 12px; border-inline-start:3px solid var(--accent); background:var(--accent-soft); overflow-wrap:anywhere; }
.role-task .voice-actions button { min-height:44px; }
.page-speaking .role-quote { margin:0; }
.speaking-panel form { display:grid; gap:10px; }
.speaking-transcript { padding:10px 14px; margin:0; background:var(--panel2); overflow-wrap:anywhere; }
.role-cards { display:grid; gap:8px; grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr)); }
.role-cards button { text-align:left; white-space:normal; }
.page-speaking .dialog { max-height:360px; overflow:auto; }
.page-speaking .dialog:focus-visible{outline:var(--focus-ring);outline-offset:3px}
.page-voice .chat:empty { min-height:90px; height:auto; }
.page-voice .chat:empty::before { content:'Здесь появится диалог.'; color:var(--muted); }
.page-voice .bubble, .page-speaking .bubble { overflow-wrap:anywhere; white-space:pre-wrap; }
.page-voice #voiceSetup { display:grid; gap:10px; margin-top:12px; }
.page-voice #voiceSetup .row { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(210px,100%),1fr)); gap:12px; }
.page-voice #voiceSetup :is(input:not([type=checkbox]),select) { width:100%; min-width:0; }
@media(max-width:520px) {
  .page-speaking .speaking-panel { padding:16px; }
  .page-speaking .tabs { flex-wrap:wrap; }
  .voice-actions button { flex-grow:1; }
}

#phonTrainer, #irrForm { scroll-margin-top:var(--anchor-gap,150px); }
.page-phonetics .snd span { display:block; }
.page-phonetics .snd { white-space:normal; clip-path:none; }
.page-phonetics .phon-game { padding:clamp(16px,4vw,30px); }
.phon-game .pairbtn { min-width:0; flex:1 1 110px; white-space:normal; overflow-wrap:anywhere; }
.phon-game .pairbtn:disabled:is(.right,.wrong) { opacity:1; }
.phon-game .quiz-position { margin-bottom:12px; }
.drill-status:empty { display:none; }
.page-irregular .irr-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); }
.page-irregular .irr-stats .stat { min-width:0; }
.page-irregular .irr-stats .stat span { white-space:normal; }
.page-irregular .trainer .v1 { margin:0; }
.page-irregular .trainer .fb { overflow-wrap:anywhere; }
.page-irregular .grpsel { display:block; }
.page-irregular .grpsel select { max-width:100%; }
@media(max-width:520px) {
  .page-irregular .irr-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .page-phonetics .sounds { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* Short practice catalog and question flow */
.quiz-filters {
  display:grid;
  grid-template-columns:minmax(0, 2fr) minmax(0, 1fr);
  gap:16px;
}
.quiz-filters label { display:grid; gap:6px; font-weight:600; }
.quiz-filters input, .quiz-filters select { width:100%; min-width:0; }
.quiz-page .quizgrid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.quiz-page .qcard { display:flex; flex-direction:column; min-width:0; overflow-wrap:anywhere; }
.quiz-page .qcard h2 { font-size:21px; margin:12px 0 4px; }
.quiz-card-action { margin-top:auto; padding-top:12px; color:var(--accent); font-weight:600; }
.quiz-actions { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:20px 0 0; }
.quiz-exam-link { margin:0 0 18px; }
.quiz-panel { margin-top:16px; }
.quiz-position { margin:0; font-weight:600; }
.quiz-panel progress { width:100%; height:8px; margin-bottom:16px; accent-color:var(--accent); }
.quiz-panel .qtext { margin:12px 0 16px; overflow-wrap:anywhere; }
.quiz-panel .opt { white-space:normal; overflow-wrap:anywhere; }
.quiz-panel .opt:disabled { opacity:1; }
.quiz-passage { margin:8px 0 14px; padding:12px 16px; background:var(--panel2); overflow-wrap:anywhere; }
.quiz-feedback, #quizError { padding:14px 16px; margin:16px 0; border-left:3px solid var(--accent); overflow-wrap:anywhere; }
.quiz-feedback.is-correct { background:var(--good-bg); border-color:var(--good); }
.quiz-feedback.is-wrong, #quizError { background:var(--bad-bg); border-color:var(--bad); }
.quiz-feedback p { margin:8px 0 0; }
.quiz-review { margin:16px 0; overflow-wrap:anywhere; }
.quiz-review summary { cursor:pointer; font-weight:600; }
.quiz-review-answers { margin:10px 0; }
.quiz-review-answers dt { color:var(--muted); font-size:13px; }
.quiz-review-answers dt:not(:first-child) { margin-top:8px; }
.quiz-review-answers dd { margin:2px 0 0; white-space:pre-wrap; }
@media(max-width:800px) {
  .quiz-page .quizgrid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:520px) {
  .quiz-page .quizgrid, .quiz-filters { grid-template-columns:1fr; }
  .quiz-panel { padding:16px; }
}
@media(max-width:600px){.page-exam .assessment-levels{grid-template-columns:repeat(2,minmax(0,1fr))}.page-exam .assessment-intro,.page-exam .assessment-question{padding:18px}.page-exam .assessment-page .assessment-actions>button{flex:1 1 130px}.page-exam .assessment-secondary>button{flex:1 1 150px}.assessment-dialog{padding:20px}.assessment-dialog .assessment-actions{align-items:stretch;flex-direction:column}.page-exam .assessment-run-head{align-items:flex-start}}
/* Visible input boundaries and keyboard focus on scrollable regions. */
main :is(input,select,textarea):not([type=range],[type=checkbox],[type=radio],[type=hidden],[type=file],:disabled,.ok,.no,.right,.wrong,[aria-invalid=true]),
#eng-modal :is(input,select,textarea):where(:not([type=range],[type=checkbox],[type=radio],[type=hidden],:disabled)) {
  border-color:var(--field-border);
}
main [aria-invalid=true] { border-color:var(--bad); }
main [tabindex="0"]:focus-visible { outline:var(--focus-ring); outline-offset:3px; }
.page-login .msg.err { color:var(--bad); }
.page-login .msg.ok, .admin-page .msg { color:var(--good); }
@media (forced-colors:active) {
  :is(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
    outline:3px solid Highlight;
    outline-offset:3px;
    clip-path:none;
  }
  :is(button,[role=tab])[aria-pressed=true], [role=tab][aria-selected=true] {
    border:2px solid Highlight;
  }
}
