/* ═══ RESET ═══ */
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}

/* ═══ DESIGN TOKENS — base from theme.css ═══ */

/* ═══ BASE ═══ */
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Space Grotesk',system-ui,sans-serif;
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  flex-direction:column;
  overscroll-behavior:none;
}

/* ═══ HEADER ═══ */
header{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 18px;
  background:var(--hdr-bg);
  backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
  position:sticky;top:0;z-index:200;
}
/* .logo styles now from theme.css (logo-lockup, logo-svg, wordmark) */
.hdr-right{display:flex;align-items:center;gap:10px}
.srs-pill{
  background:linear-gradient(135deg,rgba(124,92,191,.2),rgba(91,63,160,.2));
  border:1px solid rgba(124,92,191,.4);
  color:#A89ACC;
  border-radius:20px;padding:4px 12px;
  font-size:.76rem;font-weight:700;cursor:pointer;display:none;
  transition:all .2s;
}
.srs-pill:hover{background:rgba(91,63,160,.3)}
.hdr-name{font-size:.8rem;color:var(--dim);display:none}
.hdr-logout{
  width:28px;height:28px;
  background:transparent;border:1px solid var(--border);
  border-radius:8px;cursor:pointer;color:var(--dim);
  display:none;align-items:center;justify-content:center;
  font-size:.75rem;transition:all .2s;
}
.hdr-logout:hover{border-color:var(--red);color:var(--red)}

/* ═══ BOTTOM NAV ═══ */
.bot-nav{
  position:fixed;bottom:0;left:0;right:0;z-index:200;
  display:none;
  background:var(--nav-bg);
  backdrop-filter:blur(20px);
  border-top:1px solid var(--border);
  padding:8px 0 max(8px,env(safe-area-inset-bottom));
}
.bot-nav.visible{display:flex}
.nav-item{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:6px 8px;cursor:pointer;transition:all .2s;
  border:none;background:transparent;color:var(--dim);
  font-family:inherit;
}
.nav-item.active{color:var(--accent)}
.nav-icon{font-size:1.25rem}
.nav-label{font-size:.65rem;font-weight:600;letter-spacing:.3px}

/* ═══ MAIN CONTENT ═══ */
main{
  flex:1;display:flex;flex-direction:column;
  padding:20px 16px 90px;
  max-width:680px;width:100%;margin:0 auto;
}

/* ═══ SCREENS ═══ */
.screen{display:none;animation:fadeUp .25s ease}
.screen.active{display:flex;flex-direction:column;flex:1}
@keyframes fadeUp{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}

/* ═══ LOGIN SCREEN ═══ */
.login-hero{
  display:flex;flex-direction:column;align-items:center;
  text-align:center;padding:28px 0 24px;
}
.login-icon{
  width:72px;height:72px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  border-radius:20px;
  display:flex;align-items:center;justify-content:center;
  font-size:2rem;margin-bottom:16px;
  box-shadow:0 12px 40px rgba(124,92,191,.3);
}
.login-title{font-size:1.6rem;font-weight:800;margin-bottom:6px}
.login-sub{color:var(--dim);font-size:.88rem}

/* ═══ CARDS ═══ */
.card{
  background:var(--surf);
  border:1px solid var(--border);
  border-radius:var(--r);
  padding:18px;margin-bottom:14px;
}
.card-label{
  font-size:.68rem;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--dim);font-weight:700;margin-bottom:10px;
}
.inp{
  width:100%;background:var(--surf2);
  border:1px solid var(--border);border-radius:var(--r2);
  padding:12px 14px;font-family:inherit;font-size:.95rem;
  color:var(--text);outline:none;transition:border-color .2s;
}
.inp:focus{border-color:var(--accent)}
select.inp{cursor:pointer;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236b7594' fill='none' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
  padding-right:36px;
}

/* ═══ BUTTONS ═══ */
.btn-primary{
  width:100%;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  border:none;border-radius:var(--r2);
  padding:14px;font-family:inherit;font-size:.95rem;font-weight:700;
  color:#fff;cursor:pointer;
  transition:opacity .2s,transform .1s,box-shadow .2s;
  box-shadow:0 4px 20px rgba(124,92,191,.3);
  margin-top:6px;
}
.btn-primary:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 8px 28px rgba(124,92,191,.4)}
.btn-primary:active{transform:translateY(0)}
.btn-primary:disabled{opacity:.3;cursor:not-allowed;transform:none;box-shadow:none}

.btn-sec{
  width:100%;
  background:var(--surf);border:1px solid var(--border);
  border-radius:var(--r2);padding:12px;
  font-family:inherit;font-size:.88rem;font-weight:600;
  color:var(--text2);cursor:pointer;transition:all .2s;
}
.btn-sec:hover{border-color:var(--accent);color:var(--accent)}

.btn-ghost{
  background:transparent;border:none;
  font-family:inherit;cursor:pointer;color:var(--dim);
  font-size:.85rem;transition:color .2s;padding:8px;
}
.btn-ghost:hover{color:var(--text)}

/* ═══ HOME SCREEN ═══ */
.home-greeting{margin-bottom:20px}
.home-greeting h2{font-size:1.3rem;font-weight:800}
.home-greeting p{color:var(--dim);font-size:.84rem;margin-top:2px}

.section-hd{
  font-size:.68rem;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--dim);font-weight:700;
  margin-bottom:10px;margin-top:20px;
}
.section-hd:first-of-type{margin-top:0}

/* ═══ UNIT GRID ═══ */
.unit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
/* Picker tabs (segmented control) */
.picker-tabs{display:flex;gap:4px;background:var(--surf2);border:1px solid var(--border);border-radius:10px;padding:3px;margin-bottom:10px}
.picker-tab{flex:1;min-width:0;background:transparent;border:none;border-radius:7px;padding:8px 6px;font-family:inherit;font-size:.75rem;font-weight:700;color:var(--dim);cursor:pointer;transition:all .15s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picker-tab:hover{color:var(--text)}
.picker-tab.active{background:var(--accent);color:#fff;box-shadow:0 1px 4px rgba(124,92,191,.35)}
.skill-pills{display:flex;gap:6px;margin-bottom:10px}
.skill-pill{background:var(--surf2);border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-family:inherit;font-size:.73rem;font-weight:700;color:var(--dim);cursor:pointer;transition:all .15s}
.skill-pill:hover{color:var(--text)}
.skill-pill.active{background:var(--accent);color:#fff;border-color:var(--accent)}
/* Accordion groups */
.acc-group{border:1px solid var(--border);border-radius:9px;background:var(--surf2);overflow:hidden;flex-shrink:0}
.acc-header{display:flex;align-items:center;gap:8px;padding:9px 10px;cursor:pointer;user-select:none;transition:background .15s}
.acc-header:hover{background:var(--surf3)}
.acc-caret{flex-shrink:0;font-size:.7rem;color:var(--dim);transition:transform .15s;width:12px;text-align:center}
.acc-group.open .acc-caret{transform:rotate(90deg)}
.acc-title{flex:1;min-width:0;font-size:.82rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acc-count{flex-shrink:0;font-size:.66rem;color:var(--dim);font-weight:600}
.acc-rollup{flex-shrink:0;width:46px;height:4px;background:var(--surf3);border-radius:99px;overflow:hidden}
.acc-rollup>div{height:100%;background:var(--green);border-radius:99px}
.acc-body{display:none;flex-direction:column;gap:3px;padding:0 8px 8px 8px}
.acc-group.open .acc-body{display:flex}
/* Unit list (compact) */
.unit-list-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer;border:1.5px solid var(--border);background:var(--surf2);transition:all .15s;user-select:none;flex-shrink:0}
.unit-list-item:hover{border-color:var(--border2);background:var(--surf3)}
.unit-list-item.sel{border-color:var(--accent);background:rgba(124,92,191,.1)}
.unit-list-cb{width:16px;height:16px;border-radius:4px;border:2px solid var(--border);background:transparent;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.7rem;transition:all .15s}
.unit-list-item.sel .unit-list-cb{background:var(--accent);border-color:var(--accent);color:#fff}
.unit-list-body{flex:1;min-width:0}
.unit-list-key{font-size:.74rem;color:var(--dim);font-weight:600}
.unit-list-title{font-size:.8rem;color:var(--yellow);font-weight:700;line-height:1.3;margin-top:1px}
.unit-list-meta{display:flex;gap:6px;align-items:center;margin-top:3px}
.unit-list-topic{font-size:.65rem;background:rgba(124,92,191,.15);color:var(--accent);border-radius:4px;padding:1px 6px}
.unit-list-cnt{font-size:.65rem;color:var(--dim)}
.passage-badge{display:inline-block;padding:1px 7px;border-radius:10px;font-size:.62rem;font-weight:700;margin-left:4px;white-space:nowrap}
.badge-progress{background:rgba(124,92,191,.15);color:var(--accent)}
.cefr-tag{display:inline-block;padding:1px 7px;border-radius:10px;font-size:.68rem;font-weight:700;letter-spacing:.4px;vertical-align:middle;margin-left:4px}
.cefr-a1{background:#e3f2fd;color:#0277bd;border:1px solid #c2e9fb}
.cefr-a2{background:#f1f8e9;color:#558b2f;border:1px solid #aed581}
.cefr-b1{background:#fffde7;color:#f57f17;border:1px solid #fff176}
.cefr-b2{background:#fff3e0;color:#e65100;border:1px solid #ffb74d}
.cefr-c1{background:#fce4ec;color:#c2185b;border:1px solid #f06292}
.cefr-c2{background:#ede7f6;color:#4527a0;border:1px solid #b39ddb}
.toggle-row{display:flex;align-items:center;gap:10px;padding:7px 0;cursor:pointer;font-size:.84rem;border-bottom:1px solid var(--border)}
.toggle-row:last-child{border-bottom:none;padding-bottom:0}
.toggle-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);flex-shrink:0;cursor:pointer}
.toggle-hint{font-size:.74rem;color:var(--dim)}
details.adv-settings summary{cursor:pointer;font-size:.84rem;color:var(--accent);font-weight:600;list-style:none;padding:2px 0;user-select:none}
details.adv-settings summary::before{content:'▶ ';font-size:.7rem}
details.adv-settings[open] summary::before{content:'▼ '}
.badge-complete{background:rgba(34,197,94,.15);color:var(--green)}
.badge-mastered{background:rgba(245,158,11,.18);color:var(--yellow)}
.passage-banner{padding:11px 14px;border-radius:8px;margin:10px 0;font-size:.84rem;line-height:1.5}
.banner-complete{background:rgba(34,197,94,.08);border-left:3px solid var(--green)}
.banner-master{background:rgba(245,158,11,.1);border-left:3px solid var(--yellow)}
.unit-btn{
  background:var(--surf2);border:1.5px solid var(--border);
  border-radius:var(--r2);padding:10px 12px;
  cursor:pointer;font-family:inherit;font-size:.82rem;
  color:var(--dim);text-align:left;transition:all .2s;
  display:flex;flex-direction:column;gap:4px;
}
.unit-btn:hover{border-color:var(--border2);color:var(--text2)}
.unit-btn.sel{
  border-color:var(--accent);
  background:rgba(124,92,191,.12);
  color:var(--text);
}
.unit-btn-top{display:flex;justify-content:space-between;align-items:center;gap:6px}
.unit-key{font-size:.78rem;font-weight:600;flex:1;line-height:1.3}
.unit-passage-title{
  font-size:.72rem;color:var(--yellow);font-weight:600;
  line-height:1.3;white-space:normal;
}
.unit-btn.sel .unit-passage-title{color:#fbbf24}
.unit-topic-badge{
  display:inline-block;font-size:.64rem;
  background:rgba(124,92,191,.15);color:var(--accent);
  border-radius:4px;padding:1px 6px;margin-top:2px;
  white-space:nowrap;align-self:flex-start;
}
.unit-cnt{
  font-size:.68rem;background:var(--surf);
  border-radius:6px;padding:2px 7px;color:var(--dim);flex-shrink:0;
}

/* ═══ TYPE GRID ═══ */
.type-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.type-btn{
  background:var(--surf2);border:2px solid var(--border);
  border-radius:var(--r2);padding:12px 12px 12px 10px;cursor:pointer;
  font-family:inherit;color:var(--dim);text-align:left;
  transition:all .2s;position:relative;
}
.type-btn.sel{border-color:var(--accent2);background:rgba(91,63,160,.12);color:var(--text)}
.type-icon{font-size:1.15rem;display:block;margin-bottom:3px}
.type-name{font-weight:700;font-size:.84rem}
.type-desc{font-size:.7rem;color:var(--dim);margin-top:2px}

/* difficulty-ranked left bar — keeps showing even when .sel turns the rest purple */
.type-btn[data-diff="easy"]{border-left:4px solid var(--green)}
.type-btn[data-diff="med"]{border-left:4px solid var(--yellow)}
.type-btn[data-diff="hard"]{border-left:4px solid var(--red)}
.type-btn.sel[data-diff="easy"]{border-left-color:var(--green)}
.type-btn.sel[data-diff="med"]{border-left-color:var(--yellow)}
.type-btn.sel[data-diff="hard"]{border-left-color:var(--red)}

.diff-badge{
  position:absolute;top:6px;right:6px;
  font-size:.58rem;font-weight:800;letter-spacing:.4px;
  padding:1px 6px;border-radius:999px;text-transform:uppercase;
  line-height:1.4;
}
.diff-badge.easy{background:rgba(34,197,94,.18);color:var(--green);border:1px solid rgba(34,197,94,.4)}
.diff-badge.med{background:rgba(245,158,11,.18);color:var(--yellow);border:1px solid rgba(245,158,11,.4)}
.diff-badge.hard{background:rgba(239,68,68,.18);color:var(--red);border:1px solid rgba(239,68,68,.4)}

/* difficulty legend chips above the grid */
.qtype-legend{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.qtype-legend .lg{
  display:inline-flex;align-items:center;
  font-size:.68rem;font-weight:600;
  padding:3px 8px;border-radius:999px;
}
.qtype-legend .lg.easy{background:rgba(34,197,94,.12);color:var(--green);border:1px solid rgba(34,197,94,.32)}
.qtype-legend .lg.med{background:rgba(245,158,11,.12);color:var(--yellow);border:1px solid rgba(245,158,11,.32)}
.qtype-legend .lg.hard{background:rgba(239,68,68,.12);color:var(--red);border:1px solid rgba(239,68,68,.32)}

/* ═══ QUESTION TYPE INFO PANEL ═══ */
details.qtype-info{
  margin-top:10px;
  background:var(--surf);border:1px solid var(--border);
  border-radius:var(--r2);overflow:hidden;
}
details.qtype-info summary{
  cursor:pointer;padding:10px 14px;
  font-weight:600;font-size:.84rem;color:var(--accent);
  list-style:none;display:flex;align-items:center;gap:6px;
  user-select:none;
}
details.qtype-info summary::-webkit-details-marker{display:none}
details.qtype-info summary::after{
  content:"▾";margin-left:auto;color:var(--dim);
  transition:transform .2s;font-size:.85rem;
}
details.qtype-info[open] summary::after{transform:rotate(180deg)}
.qtype-info-body{padding:0 14px 12px}
.qtype-row{
  display:grid;grid-template-columns:auto 1fr;gap:4px 12px;
  padding:10px 0;border-top:1px dashed var(--border);
}
.qtype-row:first-of-type{border-top:none;padding-top:4px}
.qtype-row .qti{font-size:1.25rem;align-self:start;line-height:1}
.qtype-row .qth{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-weight:700;color:var(--text);font-size:.86rem;margin-bottom:4px;
}
.qtype-row .qtdiff{
  font-size:.58rem;font-weight:800;letter-spacing:.4px;
  padding:1px 6px;border-radius:999px;text-transform:uppercase;
}
.qtype-row .qtdiff.easy{background:rgba(34,197,94,.18);color:var(--green)}
.qtype-row .qtdiff.med{background:rgba(245,158,11,.18);color:var(--yellow)}
.qtype-row .qtdiff.hard{background:rgba(239,68,68,.18);color:var(--red)}
.qtype-row .qio{font-size:.74rem;color:var(--dim);line-height:1.6}
.qtype-row .qio b{color:var(--text);font-weight:600}
.qtype-row .qio i{color:var(--text);font-style:italic}

/* ═══ COUNT SLIDER ═══ */
.count-row{display:flex;align-items:center;gap:12px;padding:4px 0}
.count-row input[type=range]{
  flex:1;accent-color:var(--accent);height:4px;
  appearance:none;background:var(--surf2);border-radius:99px;
}
.count-row input[type=range]::-webkit-slider-thumb{
  appearance:none;width:18px;height:18px;
  background:var(--accent);border-radius:50%;cursor:pointer;
  box-shadow:0 2px 8px rgba(124,92,191,.4);
}
.count-val{font-weight:800;color:var(--accent);min-width:30px;text-align:center;font-size:1.1rem}

/* ═══ SRS CARD ON HOME ═══ */
.srs-home-card{
  background:linear-gradient(135deg,rgba(91,63,160,.15),rgba(124,92,191,.1));
  border:1px solid rgba(91,63,160,.3);
  border-radius:var(--r);padding:18px;margin-bottom:14px;
}
.srs-due-num{font-size:2.4rem;font-weight:800;color:var(--accent2);line-height:1}
.srs-backlog-hint{font-size:.72rem;color:var(--dim);margin:-2px 0 2px;min-height:1em}
.srs-backlog-hint:empty{display:none}
.srs-home-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:12px 0}
.srs-stat{background:rgba(0,0,0,.2);border:1px solid transparent;border-radius:9px;padding:10px;text-align:center}
.srs-stat .sv{font-size:1.3rem;font-weight:800}
.srs-stat .sl{font-size:.68rem;color:var(--dim);margin-top:2px}
.srs-stat.learning{background:var(--stat-learning-bg);border-color:var(--stat-learning-border)}
.srs-stat.learning .sv{color:var(--stat-learning-text) !important}
.srs-stat.mastered{background:var(--stat-mastered-bg);border-color:var(--stat-mastered-border)}
.srs-stat.mastered .sv{color:var(--stat-mastered-text) !important}
.srs-stat.newwords{background:var(--stat-new-bg);border-color:var(--stat-new-border)}
.srs-stat.newwords .sv{color:var(--stat-new-text) !important}

/* ═══ QUIZ SCREEN ═══ */
.quiz-hdr{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;
}
.quiz-info{font-size:.82rem;color:var(--dim)}
.quiz-info b{color:var(--text)}
.pbar-wrap{height:4px;background:var(--surf2);border-radius:99px;overflow:hidden;margin-bottom:20px}
.pbar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:99px;transition:width .4s ease}

.qcard{
  background:var(--surf);border:1px solid var(--border);
  border-radius:var(--r);padding:24px;margin-bottom:14px;
}
.q-label{font-size:.68rem;text-transform:uppercase;letter-spacing:1.2px;color:var(--accent2);font-weight:700;margin-bottom:10px}
.q-prompt{font-size:1.2rem;font-weight:700;line-height:1.4;margin-bottom:4px}
.q-hint{font-size:.8rem;color:var(--dim)}

.opts{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}
.opt{
  position:relative;
  background:var(--surf2);border:2px solid var(--border);
  border-radius:var(--r2);padding:12px 13px 12px 38px;min-height:44px;
  text-align:left;cursor:pointer;font-family:inherit;
  font-size:.86rem;color:var(--text);transition:all .15s;line-height:1.3;
}
/* Keyboard-shortcut badge: rendered from data-key via ::before so the button's
   textContent stays the raw option text (answer-correctness compares textContent). */
.opt[data-key]::before{
  content:attr(data-key);
  position:absolute;left:9px;top:50%;transform:translateY(-50%);
  width:20px;height:20px;border-radius:6px;
  background:var(--surf3,var(--surf));color:var(--dim);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:.72rem;font-weight:800;line-height:1;
  border:1px solid var(--border);
}
.opt:hover:not(:disabled){border-color:var(--accent);background:rgba(124,92,191,.08)}
.opt:hover:not(:disabled)[data-key]::before{color:var(--accent);border-color:var(--accent)}
.opt.correct{border-color:var(--green)!important;background:rgba(34,197,94,.12)!important;color:var(--green)}
.opt.wrong{border-color:var(--red)!important;background:rgba(239,68,68,.1)!important;color:var(--red)}

.fill-inp{
  width:100%;background:var(--surf2);
  border:2px solid var(--border);border-radius:var(--r2);
  padding:12px 14px;font-family:inherit;font-size:.95rem;
  color:var(--text);outline:none;margin-top:14px;transition:border-color .2s;
}
.fill-inp:focus{border-color:var(--accent)}
.fill-inp.correct{border-color:var(--green);background:rgba(34,197,94,.08)}
.fill-inp.wrong{border-color:var(--red);background:rgba(239,68,68,.08)}

/* ═══ FILL-BLANK LETTER BOXES (replaces text dashes) ═══ */
.blank-boxes{display:inline-flex;flex-wrap:wrap;gap:12px;vertical-align:middle;margin:0 2px}
.blank-word{display:inline-flex;gap:3px}
.blank-box{
  display:inline-block;
  width:14px;height:20px;
  border-bottom:2px solid var(--border);
  vertical-align:middle;
}
.blank-box.filled{
  border-bottom-color:var(--accent);
  color:var(--accent);
  font-weight:700;
  text-align:center;
  line-height:20px;
  font-size:.88rem;
}
.blank-punct{display:inline-block;color:var(--dim);align-self:end;line-height:20px;font-size:.88rem}

/* ═══ REPLAY PRONUNCIATION BUTTON ═══ */
.btn-replay-audio{
  display:inline-flex;align-items:center;gap:5px;
  background:rgba(124,92,191,.12);
  border:1px solid var(--accent);
  border-radius:999px;
  padding:5px 12px;margin-top:8px;
  font-family:inherit;font-size:.76rem;font-weight:700;
  color:var(--accent);cursor:pointer;
  transition:all .15s;
}
.btn-replay-audio:hover{background:rgba(124,92,191,.22);transform:translateY(-1px)}
.btn-replay-audio:active{transform:translateY(0)}

/* ═══ NOVICE BOOST MODAL/BANNER ═══ */
.novice-modal-overlay{
  position:fixed;top:0;left:0;right:0;bottom:0;z-index:500;
  background:rgba(0,0,0,.55);backdrop-filter:blur(4px);
  display:none;align-items:center;justify-content:center;padding:20px;
}
.novice-modal-overlay.show{display:flex;animation:fadeUp .2s}
.novice-modal{
  background:var(--surf);
  border:1px solid var(--border);
  border-radius:16px;
  padding:22px;max-width:380px;width:100%;
  text-align:center;
}
.novice-modal h3{font-size:1.1rem;font-weight:800;margin-bottom:8px}
.novice-modal p{color:var(--dim);font-size:.86rem;line-height:1.5;margin-bottom:16px}
.novice-modal .btn-row{display:flex;flex-direction:column;gap:8px}
.novice-progress-dots{display:flex;gap:8px;justify-content:center;margin:10px 0}
.novice-dot{width:10px;height:10px;border-radius:50%;background:var(--surf3,var(--surf2));border:1px solid var(--border)}
.novice-dot.done{background:var(--green);border-color:var(--green)}
.novice-dot.active{background:var(--accent);border-color:var(--accent);transform:scale(1.2)}
.novice-banner{
  background:linear-gradient(135deg,rgba(124,92,191,.15),rgba(91,63,160,.1));
  border:1px solid rgba(124,92,191,.35);
  border-radius:12px;
  padding:12px 14px;margin-bottom:14px;
  display:flex;align-items:center;gap:10px;
}
/* Daily streak reminder (Issue #1) — three states: risk / safe / start */
.streak-reminder{
  border-radius:12px;padding:12px 14px;margin-bottom:14px;
  display:flex;align-items:center;gap:10px;
  animation:streakReminderIn .35s ease;
}
.streak-reminder.risk{
  background:linear-gradient(135deg,rgba(245,158,11,.16),rgba(239,68,68,.10));
  border:1px solid rgba(245,158,11,.45);
}
.streak-reminder.safe{
  background:linear-gradient(135deg,rgba(34,197,94,.13),rgba(16,163,74,.08));
  border:1px solid rgba(34,197,94,.35);
}
.streak-reminder.start{
  background:linear-gradient(135deg,rgba(124,92,191,.15),rgba(91,63,160,.1));
  border:1px solid rgba(124,92,191,.35);
}
.streak-reminder-ic{font-size:1.5rem;line-height:1;flex-shrink:0}
.streak-reminder-body{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}
.streak-reminder-label{font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.streak-reminder.risk  .streak-reminder-label{color:#f59e0b}
.streak-reminder.safe  .streak-reminder-label{color:#22c55e}
.streak-reminder.start .streak-reminder-label{color:var(--accent)}
.streak-reminder-msg{font-size:.84rem;color:var(--text);line-height:1.4}
.streak-reminder-msg b{color:#f59e0b;font-weight:800}
.streak-reminder.safe .streak-reminder-msg b{color:#22c55e}
.streak-reminder-btn{
  background:linear-gradient(135deg,#f59e0b,#f97316);
  border:none;color:#fff;font-family:inherit;font-weight:700;
  font-size:.78rem;padding:7px 14px;border-radius:999px;
  cursor:pointer;flex-shrink:0;white-space:nowrap;
}
.streak-reminder.start .streak-reminder-btn{background:linear-gradient(135deg,var(--accent),var(--accent2,var(--accent)))}
.streak-reminder-close{
  background:transparent;border:none;color:var(--dim);
  cursor:pointer;font-size:1rem;padding:4px;flex-shrink:0;line-height:1;
}
@keyframes streakReminderIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* Keyboard shortcut legend (Issue #3) — clarifies Enter=check, Space=next */
.hotkey-bar{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:6px 14px;margin-top:14px;padding:8px 10px;
  font-size:.72rem;color:var(--dim);
}
.hotkey-bar .hk-label{font-weight:700;color:var(--accent);letter-spacing:.02em}
.hotkey-bar .hk-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.hotkey-bar kbd{
  font-family:inherit;font-size:.7rem;font-weight:700;color:var(--text);
  background:var(--surf2);border:1px solid var(--border2,var(--border));
  border-bottom-width:2px;border-radius:5px;padding:1px 6px;min-width:14px;
  text-align:center;line-height:1.6;
}
/* Touch devices have no physical keyboard — hide the legend there. */
@media (hover:none) and (pointer:coarse){ .hotkey-bar{display:none} }
/* Novice persistent card */
#noviceCard{
  background:linear-gradient(135deg,rgba(20,184,166,.13),rgba(32,185,185,.08));
  border:1px solid rgba(20,184,166,.35);
  border-radius:12px;
  padding:12px 15px;
  margin-bottom:14px;
  display:flex;align-items:center;gap:10px;
}
#noviceCard .novice-card-body{flex:1;display:flex;flex-direction:column;gap:3px}
#noviceCard .novice-card-label{font-size:.75rem;color:var(--accent);font-weight:700;letter-spacing:.03em;text-transform:uppercase}
#noviceCard .novice-card-msg{font-size:.84rem;color:var(--text);line-height:1.4}
#noviceCard .novice-card-btn{
  background:linear-gradient(135deg,var(--accent),var(--accent2,var(--accent)));
  border:none;color:#fff;font-family:inherit;font-weight:700;
  font-size:.78rem;padding:7px 14px;border-radius:999px;
  cursor:pointer;flex-shrink:0;white-space:nowrap;
}
#boosterCard{
  background:linear-gradient(135deg,rgba(34,197,94,.13),rgba(16,163,74,.08));
  border:1px solid rgba(34,197,94,.35);
  border-radius:12px;padding:12px 15px;margin-bottom:14px;
  display:flex;align-items:center;gap:10px;
}
#boosterCard .novice-card-body{flex:1;display:flex;flex-direction:column;gap:3px}
#boosterCard .novice-card-label{font-size:.75rem;color:#22c55e;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
#boosterCard .novice-card-msg{font-size:.84rem;color:var(--text);line-height:1.4}
#boosterCard .novice-card-btn{
  background:linear-gradient(135deg,#16a34a,#22c55e);
  border:none;color:#fff;font-family:inherit;font-weight:700;
  font-size:.78rem;padding:7px 14px;border-radius:999px;
  cursor:pointer;flex-shrink:0;white-space:nowrap;
}
.novice-banner-text{flex:1;font-size:.84rem;color:var(--text);line-height:1.4}
.novice-banner-btn{
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  border:none;color:#fff;font-family:inherit;font-weight:700;
  font-size:.78rem;padding:7px 14px;border-radius:999px;
  cursor:pointer;flex-shrink:0;
}
.novice-banner-close{
  background:transparent;border:none;color:var(--dim);
  cursor:pointer;font-size:1rem;padding:4px;
}
.submit-btn{
  width:100%;background:rgba(124,92,191,.12);
  border:1px solid var(--accent);border-radius:var(--r2);
  padding:11px;font-family:inherit;font-size:.88rem;
  font-weight:700;color:var(--accent);cursor:pointer;
  margin-top:8px;transition:all .2s;
}
.submit-btn:hover{background:rgba(124,92,191,.22)}

.feedback{
  border-radius:var(--r2);padding:12px 14px;
  margin-top:10px;font-size:.85rem;line-height:1.5;display:none;
}
.feedback.show{display:block;animation:fadeUp .2s}
.feedback.ok{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.25)}
.feedback.bad{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2)}
.feedback .ans{color:var(--green);font-weight:700}
.feedback .eg{color:var(--dim);margin-top:4px;font-style:italic;font-size:.8rem}

.next-btn{
  width:100%;background:var(--surf);border:1px solid var(--border);
  border-radius:var(--r2);padding:12px;
  font-family:inherit;font-size:.88rem;font-weight:700;
  color:var(--text2);cursor:pointer;transition:all .2s;display:none;margin-top:6px;
}
.next-btn.show{display:block}
.next-btn:hover{border-color:var(--accent);color:var(--accent)}

/* ═══ SRS REVIEW SCREEN ═══ */

.rate-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rate-btn{border:none;border-radius:var(--r2);padding:14px;font-family:inherit;font-size:.88rem;font-weight:700;cursor:pointer;transition:all .15s}
.rate-again{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.rate-good{background:rgba(34,197,94,.15);color:var(--green);border:1px solid rgba(34,197,94,.3)}

/* ═══ RESULT SCREEN ═══ */
.res-hero{text-align:center;padding:20px 0 16px}
.res-emoji{font-size:3rem;margin-bottom:10px}
.res-name{font-size:.85rem;color:var(--dim);margin-bottom:4px}
.res-score{font-size:2.6rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.res-sub{color:var(--dim);font-size:.83rem;margin-top:2px}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0}
.stat-box{background:var(--surf);border:1px solid var(--border);border-radius:var(--r);padding:14px;text-align:center}
.stat-box .sv{font-size:1.45rem;font-weight:800}
.stat-box .sl{font-size:.7rem;color:var(--dim);margin-top:2px}
.stat-box.green .sv{color:var(--green)}.stat-box.red .sv{color:var(--red)}.stat-box.blue .sv{color:var(--accent)}
.wrong-hd{font-size:.68rem;text-transform:uppercase;letter-spacing:1.2px;color:var(--dim);font-weight:700;margin-bottom:8px}
.wcard{
  background:var(--surf);border:1px solid var(--border);
  border-left:3px solid var(--red);border-radius:var(--r2);
  padding:11px 13px;margin-bottom:6px;font-size:.84rem;
}
.wcard .we{font-weight:700}.wcard .wi{color:var(--dim);font-size:.73rem}
.wcard .wv{color:var(--yellow);margin-top:2px}
.wcard .wd{color:var(--dim);font-size:.76rem;margin-top:2px}
.res-actions{display:flex;gap:9px;margin-top:14px}
.res-actions .btn-sec{margin-top:0}
.saving{text-align:center;color:var(--dim);font-size:.8rem;padding:6px;margin-bottom:8px}

/* ═══ PROGRESS SCREEN ═══ */
.prog-section{margin-bottom:20px}
.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.kpi{background:var(--surf);border:1px solid var(--border);border-radius:var(--r);padding:16px;text-align:center}
.kpi .kv{font-size:1.7rem;font-weight:800}
.kpi .kl{font-size:.7rem;color:var(--dim);margin-top:2px}
.kpi.accent .kv{color:var(--accent)}
.kpi.green .kv{color:var(--green)}
.kpi.yellow .kv{color:var(--yellow)}
.kpi.purple .kv{color:var(--accent2)}
.chart-card{background:var(--surf);border:1px solid var(--border);border-radius:var(--r);padding:16px;margin-bottom:12px}
.chart-card h3{font-size:.82rem;font-weight:700;margin-bottom:12px;color:var(--text2)}
.chart-wrap{position:relative;height:180px}

/* ═══ LOADING ═══ */
.loader{
  display:flex;flex-direction:column;align-items:center;
  justify-content:center;min-height:60vh;min-height:60svh;gap:12px;
}
.spinner{
  width:36px;height:36px;
  border:3px solid var(--surf2);border-top-color:var(--accent);
  border-radius:50%;animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.loader-text{color:var(--dim);font-size:.85rem}

/* ═══ VOCAB STATUS BADGE ═══ */
.vocab-badge{
  display:inline-flex;align-items:center;gap:5px;
  font-size:.72rem;color:var(--dim);padding:4px 8px;
  background:var(--surf2);border-radius:6px;margin-bottom:12px;
}
.vocab-dot{width:7px;height:7px;border-radius:50%;background:var(--green)}
.vocab-dot.loading{background:var(--yellow);animation:pulse 1s infinite}
.vocab-dot.fallback{background:var(--dim)}

/* ═══ TOAST ═══ */
.toast{
  position:fixed;bottom:90px;left:50%;transform:translateX(-50%);
  background:var(--surf3);border:1px solid var(--border2);
  border-radius:var(--r2);padding:10px 18px;
  font-size:.82rem;color:var(--text);z-index:999;
  opacity:0;transition:opacity .25s;white-space:nowrap;pointer-events:none;
}
.toast.show{opacity:1}

/* ═══ GRADED READER WORDS ═══ */
.gr-card{
  background:linear-gradient(135deg,rgba(91,63,160,.08),rgba(124,92,191,.06));
  border:1px solid rgba(91,63,160,.25);
  border-radius:var(--r);padding:16px;margin-bottom:14px;
}
.gr-title{
  display:flex;align-items:center;gap:8px;
  font-size:.78rem;font-weight:700;
  text-transform:uppercase;letter-spacing:1px;
  color:#A89ACC;margin-bottom:12px;
}
.gr-word-item{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:10px;padding:10px 0;
  border-bottom:1px solid rgba(42,47,74,.6);
}
.gr-word-item:last-child{border-bottom:none}
.gr-word-info{flex:1;min-width:0}
.gr-word-en{font-weight:700;font-size:.92rem;margin-bottom:2px}
.gr-word-ctx{
  font-size:.74rem;color:var(--dim);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  max-width:220px;
}
.gr-word-src{
  font-size:.68rem;color:var(--accent2);
  margin-top:3px;
}
/* Form type legend */
.form-legend{display:flex;flex-wrap:wrap;gap:5px 12px;padding:8px 12px;background:var(--surf2);border:1px solid var(--border);border-radius:var(--r2);margin-bottom:10px}
.form-legend-item{display:flex;align-items:center;gap:5px;font-size:.68rem;color:var(--dim)}
.form-badge{border-radius:4px;padding:1px 6px;font-size:.6rem;font-weight:700;letter-spacing:.3px}
.btn-add-srs{
  background:rgba(91,63,160,.15);
  border:1px solid rgba(91,63,160,.35);
  border-radius:8px;padding:6px 12px;
  font-family:inherit;font-size:.75rem;font-weight:700;
  color:#A89ACC;cursor:pointer;
  white-space:nowrap;flex-shrink:0;
  transition:all .2s;
}
.btn-add-srs:hover{background:rgba(91,63,160,.28);border-color:rgba(91,63,160,.6)}
.btn-add-srs:disabled{opacity:.35;cursor:not-allowed}
.btn-add-srs.added{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.3);color:var(--green)}
/* Light mode: solid purple button for visibility */
[data-theme="light"] .btn-add-srs{background:#5B3FA0;border-color:#5B3FA0;color:#fff}
[data-theme="light"] .btn-add-srs:hover{background:#7C5CBF;border-color:#7C5CBF}
[data-theme="light"] .btn-add-srs.added{background:#0D7D6A;border-color:#0D7D6A;color:#fff}
.gr-empty{font-size:.82rem;color:var(--dim);text-align:center;padding:12px 0}
.gr-loading{font-size:.8rem;color:var(--dim);text-align:center;padding:8px 0}
.mfi-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(20,184,166,.3);border-top-color:#14b8a6;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle}

/* ═══ ACCORDION ═══ */
.accordion-item{background:var(--surf);border:1px solid var(--border);border-radius:var(--r2);margin-bottom:8px;overflow:hidden}
.accordion-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;cursor:pointer;transition:background .2s}
.accordion-header:hover{background:var(--surf2)}
.accordion-title{font-size:.82rem;font-weight:700;color:var(--text2)}
.accordion-count{font-size:.7rem;color:var(--dim);margin-left:8px}
.accordion-icon{font-size:.7rem;color:var(--dim);transition:transform .2s}
.accordion-item.open .accordion-icon{transform:rotate(180deg)}
.accordion-content{max-height:0;overflow:hidden;transition:max-height .3s ease}
.accordion-item.open .accordion-content{max-height:2000px}
.accordion-word{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid var(--border)}
.accordion-word-info{flex:1;min-width:0}
.accordion-word-en{font-size:.85rem;font-weight:600;color:var(--text)}
.accordion-word-vn{font-size:.75rem;color:var(--accent2);margin-top:2px}
.accordion-word-date{font-size:.68rem;color:var(--dim);white-space:nowrap;margin-left:10px}

/* ═══ WORD LIST SCREEN ═══ */
.wl-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:14px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.wl-tab{flex-shrink:0;padding:9px 14px;font-size:.76rem;font-weight:700;color:var(--dim);cursor:pointer;border:none;background:none;font-family:inherit;border-bottom:2px solid transparent;transition:all .2s;white-space:nowrap}
.wl-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.wl-add-btn{
  display:flex;align-items:center;gap:8px;
  width:100%;background:linear-gradient(135deg,rgba(124,92,191,.12),rgba(91,63,160,.1));
  border:1px dashed rgba(124,92,191,.4);border-radius:var(--r2);
  padding:12px 16px;font-family:inherit;font-size:.88rem;font-weight:700;
  color:var(--accent);cursor:pointer;transition:all .2s;margin-bottom:14px;
}
.wl-add-btn:hover{background:rgba(124,92,191,.2);border-color:var(--accent)}
.wl-item{
  background:var(--surf);border:1px solid var(--border);
  border-radius:var(--r2);padding:12px 14px;
  display:flex;align-items:flex-start;gap:10px;margin-bottom:8px;
  transition:border-color .2s;
}
.wl-item:hover{border-color:var(--border2)}
.wl-item-body{flex:1;min-width:0}
.wl-word{font-weight:700;font-size:.95rem;margin-bottom:2px}
.wl-meaning{font-size:.78rem;color:var(--accent2);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wl-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.wl-source{font-size:.62rem;font-weight:700;border-radius:4px;padding:1px 7px;letter-spacing:.2px}
.wl-srs{font-size:.68rem;color:var(--dim)}
.wl-actions{display:flex;gap:6px;flex-shrink:0;align-items:flex-start;margin-top:2px}
.wl-btn{width:28px;height:28px;border-radius:7px;border:1px solid var(--border);background:var(--surf2);cursor:pointer;font-size:.8rem;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.wl-btn:hover{border-color:var(--accent2)}
.wl-btn.del:hover{border-color:var(--red);background:rgba(239,68,68,.1)}
.wl-empty{text-align:center;color:var(--dim);font-size:.84rem;padding:24px 0}
.wl-controls{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.wl-controls input[type="search"]{flex:1;min-width:0;background:var(--surf2);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text);font-family:inherit;font-size:.86rem;outline:none}
.wl-controls input[type="search"]:focus{border-color:var(--accent)}
.wl-controls select{background:var(--surf2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;color:var(--text);font-family:inherit;font-size:.82rem;outline:none;cursor:pointer;max-width:42%}
.wl-summary{font-size:.74rem;color:var(--dim);margin-bottom:10px;padding:0 2px}
.wl-group{margin-bottom:14px}
.wl-group-hd{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--surf2);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:.84rem;font-weight:700;user-select:none;color:var(--text)}
.wl-group-hd:hover{border-color:var(--border2)}
.wl-group-toggle{display:inline-block;transition:transform .2s;font-size:.7rem;color:var(--dim)}
.wl-group-toggle.open{transform:rotate(90deg)}
.wl-group-count{margin-left:auto;color:var(--dim);font-weight:600;font-size:.74rem}
.wl-group-body{padding:8px 0 0 0}
/* 2-tier dropdown: Unit sub-sections nested under a Thầy soạn category */
.wl-subgroup{margin:8px 0 0 0;padding-left:12px;border-left:2px solid var(--border)}
.wl-subgroup-hd{display:flex;align-items:center;gap:7px;padding:6px 10px;background:var(--surf);border:1px solid var(--border);border-radius:7px;cursor:pointer;font-size:.78rem;font-weight:600;user-select:none;color:var(--text2)}
.wl-subgroup-hd:hover{border-color:var(--border2)}
.wl-subgroup .wl-group-body{padding:6px 0 0 0}
.wl-mastery{display:inline-block;font-size:.62rem;padding:1px 6px;border-radius:4px;margin-left:5px;font-weight:700;vertical-align:middle}
.wl-mastery.m-new{background:rgba(34,197,94,.14);color:#86efac}
.wl-mastery.m-learn{background:rgba(245,158,11,.14);color:var(--yellow)}
.wl-mastery.m-master{background:rgba(124,92,191,.2);color:var(--accent)}
.wl-loadmore{display:block;width:100%;background:transparent;border:1px dashed var(--border);border-radius:8px;padding:8px;color:var(--dim);font-family:inherit;font-size:.78rem;cursor:pointer;margin-top:6px;transition:all .2s}
.wl-loadmore:hover{border-color:var(--accent);color:var(--accent)}

/* ═══ ADD WORD MODAL ═══ */
/* Safety belt: when not .open we hide layout entirely (display:none) instead
   of just opacity:0. opacity:0 + display:flex left the overlay in the
   document flow with its flex container filling the viewport — children
   inherited pointer-events:none from the parent BUT in some browsers /
   stacking contexts the empty flex box was still capturing tap events on
   buttons that happened to overlap its bounds. display:none removes it
   from the layout entirely, making the bug impossible. */
.modal-overlay{
  position:fixed;inset:0;z-index:500;
  background:var(--overlay-bg);backdrop-filter:blur(8px);
  display:none;align-items:flex-end;justify-content:center;
  opacity:0;pointer-events:none;transition:opacity .25s;
}
.modal-overlay.open{display:flex;opacity:1;pointer-events:all}
.modal{
  width:100%;max-width:520px;
  background:var(--surf);border:1px solid var(--border2);
  border-radius:var(--r) var(--r) 0 0;
  padding:20px 18px max(20px,env(safe-area-inset-bottom));
  transform:translateY(24px);transition:transform .25s;
  max-height:85vh;overflow-y:auto;
}
.modal-overlay.open .modal{transform:translateY(0)}
.modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.modal-title{font-weight:800;font-size:1rem}
.modal-close{background:none;border:none;cursor:pointer;color:var(--dim);font-size:1.1rem;padding:4px;transition:color .2s}
.modal-close:hover{color:var(--text)}

.dict-result{
  background:var(--surf2);border:1px solid var(--border2);
  border-radius:var(--r2);padding:14px;margin:10px 0 14px;
  display:none;
}
.dict-result.show{display:block}
.dict-word{font-size:1.1rem;font-weight:800;margin-bottom:2px}
.dict-meta{font-size:.76rem;color:var(--dim);margin-bottom:8px}
.dict-def{font-size:.84rem;color:var(--text2);margin-bottom:6px;line-height:1.5}
.dict-eg{font-size:.78rem;color:var(--dim);font-style:italic;line-height:1.4}
.dict-notfound{font-size:.82rem;color:var(--yellow);text-align:center;padding:8px 0;display:none}
.dict-notfound.show{display:block}

/* ═══ MEANING BROWSER ═══ */
.pos-group{
  border:1px solid var(--border2);border-radius:var(--r2);
  margin-bottom:8px;overflow:hidden;
}
.pos-group summary{
  display:flex;align-items:center;gap:8px;
  padding:10px 14px;cursor:pointer;
  background:rgba(255,255,255,.04);
  list-style:none;user-select:none;
}
.pos-group summary::-webkit-details-marker{display:none}
.pos-group-chevron{
  font-size:.58rem;color:var(--dim);
  transition:transform .2s;display:inline-block;flex-shrink:0;
}
details[open] .pos-group-chevron{transform:rotate(90deg)}
.pos-group-name{
  font-size:.74rem;font-weight:700;
  color:#A89ACC;text-transform:uppercase;letter-spacing:.05em;
}
.btn-audio-pos{
  background:none;border:none;cursor:pointer;
  font-size:.82rem;padding:2px 4px;line-height:1;
}
.btn-add-all-pos{
  margin-left:auto;
  background:rgba(124,92,191,.1);
  border:1px solid rgba(124,92,191,.3);
  border-radius:6px;padding:3px 10px;
  font-size:.7rem;color:var(--accent);
  cursor:pointer;font-family:inherit;white-space:nowrap;
}
.all-saved-badge{margin-left:auto;font-size:.7rem;color:var(--yellow)}
.pos-group-body{padding:2px 14px 10px}
.meaning-row{
  display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;
  padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05);
}
.meaning-row:last-child{border-bottom:none}
.meaning-row-def{flex:1;min-width:0;font-size:.82rem;color:var(--text);line-height:1.4}
.meaning-row-eg{font-size:.75rem;color:var(--dim);font-style:italic;margin-top:3px}
.meaning-num{color:var(--dim);font-size:.78rem;margin-right:2px}
.btn-add-meaning{
  background:rgba(124,92,191,.12);
  border:1px solid rgba(124,92,191,.35);
  border-radius:7px;padding:4px 12px;
  font-size:.74rem;color:var(--accent);
  cursor:pointer;font-family:inherit;white-space:nowrap;flex-shrink:0;
}
.btn-add-meaning:disabled{opacity:.4;cursor:default}
.meaning-saved-tag{font-size:.72rem;color:var(--yellow);flex-shrink:0;align-self:center}
.meaning-add-form{width:100%;padding-top:6px;display:flex;flex-direction:column;gap:4px}

/* ═══ UNSAVE BUTTON ═══ */
.btn-unsave{
  background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);
  border-radius:8px;padding:6px 10px;
  font-family:inherit;font-size:.72rem;font-weight:700;
  color:var(--red);cursor:pointer;
  white-space:nowrap;flex-shrink:0;
  transition:all .2s;
}
.btn-unsave:hover{background:rgba(239,68,68,.2);border-color:rgba(239,68,68,.5)}
/* Light mode: stronger outline for "Bỏ lưu" */
[data-theme="light"] .btn-unsave{background:rgba(220,38,38,.08);border-color:rgba(220,38,38,.4);color:#dc2626}
[data-theme="light"] .btn-unsave:hover{background:rgba(220,38,38,.15);border-color:#dc2626}

/* ═══ RESPONSIVE ═══ */
@media(max-width:768px){
  main{padding:18px 14px 88px}
  .unit-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  /* iOS auto-zoom fix on inputs */
  input[type=text],input[type=email],input[type=password],
  input[type=number],input[type=search],select,textarea,
  .fill-inp,.inp{font-size:16px}
  .opt{min-height:46px}
  /* Larger buttons for tap */
  button.btn,button.btn-primary,.btn,.btn-primary{min-height:42px}
  /* M1: bump tiny labels to >=11px on mobile */
  .nav-label{font-size:.72rem}      /* was .65rem = 10.4px → 11.5px */
  .wl-mastery{font-size:.7rem}      /* was .62rem = 9.9px → 11.2px */
}
@media(max-width:480px){
  .opts{grid-template-columns:1fr}
  .type-grid{grid-template-columns:1fr 1fr}
  .stat-row{grid-template-columns:1fr 1fr}
  .q-prompt{font-size:1.05rem}
  main{padding:16px 14px 88px}
  .unit-grid{grid-template-columns:1fr}
}

/* ═══ LIGHT MODE CONTRAST ═══ */
[data-theme="light"] .srs-home-card{background:linear-gradient(135deg,rgba(91,63,160,.12),rgba(124,92,191,.07));border-color:rgba(91,63,160,.35)}
[data-theme="light"] .srs-stat{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.1)}
[data-theme="light"] .srs-stat .sl{color:#475569}
[data-theme="light"] .opt{background:#F5F0FF;border-color:#c8c2d8;color:#1a1a2e}
[data-theme="light"] .opt:hover:not(:disabled){background:#EAE2FF;border-color:#7C5CBF}
[data-theme="light"] .fill-inp{background:#F5F0FF;border-color:#c8c2d8;color:#1a1a2e}
[data-theme="light"] .unit-btn{background:#F5F0FF;border-color:#c8c2d8;color:#475569}
[data-theme="light"] .unit-btn:hover{background:#EAE2FF;border-color:#9470D4;color:#1a1a2e}
[data-theme="light"] .type-btn{background:#F5F0FF;border-color:#c8c2d8;color:#475569}
/* CRITICAL: state overrides need to come AFTER the light base rule so the
   .sel/.active visual feedback wins specificity ties in light mode.
   Without these, clicking a type/unit/unit-list button in light mode
   adds the .sel class but the visual stays unchanged — user sees no
   feedback and assumes the button is unresponsive ("đơ"). */
[data-theme="light"] .type-btn.sel{background:rgba(91,63,160,.14);border-color:#5B3FA0;color:#1a1a2e}
[data-theme="light"] .unit-btn.sel{background:rgba(124,92,191,.14);border-color:#5B3FA0;color:#1a1a2e}
[data-theme="light"] .unit-list-item.sel{background:rgba(124,92,191,.14);border-color:#5B3FA0;color:#1a1a2e}
[data-theme="light"] .chip{background:#F0EBF8;border-color:#c0b8d8;color:#2e2e42}
[data-theme="light"] .picker-tab{color:#475569}
[data-theme="light"] .picker-tab:hover{color:#1a1a2e}
[data-theme="light"] .picker-tab.active{color:#fff}
[data-theme="light"] .section-hd{color:#1a1a2e}
[data-theme="light"] .accordion-item{border-color:#c8c2d8}
[data-theme="light"] .accordion-word{border-top-color:#c8c2d8}
[data-theme="light"] .unit-list-item{background:#F5F0FF;border-color:#c8c2d8}
[data-theme="light"] .unit-list-key{color:#475569}
[data-theme="light"] .acc-group{background:#F5F0FF;border-color:#c8c2d8}

/* ══════════════════════════════════════════════════════════════════════
   PRONUNCIATION COACH (Phase 4A)
   ══════════════════════════════════════════════════════════════════════ */
:root{ --pron-teal:#20B9B9; --pron-ok:#22c55e; --pron-mid:#f59e0b; --pron-bad:#ef4444; }

/* Home entry card — mirrors the novice/booster card layout */
.pron-home-card{
  display:flex;align-items:center;gap:12px;margin:10px 0;padding:13px 15px;
  background:linear-gradient(135deg,rgba(32,185,185,.10),rgba(124,92,191,.08));
  border:1px solid rgba(32,185,185,.30);border-radius:13px}
.pron-home-card .novice-card-label{font-weight:700;color:var(--text);font-size:.92rem}
.pron-home-card .novice-card-msg{font-size:.76rem;color:var(--dim);margin-top:1px}
.pron-home-card .novice-card-body{flex:1;min-width:0}
.pron-home-card .novice-card-btn{
  flex-shrink:0;background:linear-gradient(135deg,#20B9B9,#159a9a);border:none;border-radius:9px;
  padding:9px 16px;font-family:inherit;font-size:.8rem;font-weight:700;color:#fff;cursor:pointer;
  transition:transform .1s,box-shadow .2s;box-shadow:0 2px 8px rgba(32,185,185,.3)}
.pron-home-card .novice-card-btn:hover{transform:translateY(-1px)}

/* Drill card */
.pron-card{background:var(--surf2);border:1px solid var(--border);border-radius:16px;
  padding:18px 16px;text-align:center}
.pron-word-row{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.pron-word{font-family:'Space Grotesk',sans-serif;font-size:1.6rem;font-weight:700;color:var(--text)}
.pron-pos,.pron-cefr{font-size:.62rem;font-weight:700;border-radius:5px;padding:2px 7px;
  background:rgba(124,92,191,.16);color:var(--accent)}
.pron-cefr{background:rgba(32,185,185,.16);color:var(--pron-teal)}
.pron-ipa-row{margin-top:4px}
.pron-ipa{font-size:1rem;color:var(--dim);font-style:italic}
.pron-meaning{margin-top:6px;font-size:.9rem;color:var(--text2)}

/* Record zone */
.pron-rec-zone{margin:20px 0 10px;display:flex;flex-direction:column;align-items:center;gap:12px}
.pron-mic{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  width:120px;height:120px;border-radius:50%;border:none;cursor:pointer;color:#fff;
  background:linear-gradient(135deg,#20B9B9,#159a9a);box-shadow:0 6px 20px rgba(32,185,185,.4);
  font-family:inherit;font-weight:700;transition:transform .12s,box-shadow .2s}
.pron-mic:hover{transform:scale(1.04)}
.pron-mic .pron-mic-ic{font-size:2rem;line-height:1}
.pron-mic .pron-mic-tx{font-size:.78rem}
.pron-mic.recording{background:linear-gradient(135deg,#ef4444,#b91c1c);box-shadow:0 6px 20px rgba(239,68,68,.45);
  animation:pronPulse 1.2s ease-in-out infinite}
@keyframes pronPulse{0%,100%{box-shadow:0 6px 20px rgba(239,68,68,.45)}50%{box-shadow:0 6px 30px rgba(239,68,68,.7)}}
.pron-wave{width:80%;max-width:240px;height:34px;display:flex;align-items:center;justify-content:center;
  background:var(--surf);border-radius:8px;overflow:hidden}
.pron-wave-bar{width:5px;height:100%;border-radius:3px;background:var(--pron-teal);
  transform:scaleY(.06);transition:transform .08s linear}
.pron-status{font-size:.78rem;color:var(--dim);min-height:1.1em}

.pron-actions-row{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:6px}
.pron-preview-info{font-size:.7rem;color:var(--dimmer)}

/* Result */
.pron-score{font-family:'Space Grotesk',sans-serif;font-size:1.25rem;font-weight:800;margin:12px 0 8px}
.pron-score.ok{color:var(--pron-ok)} .pron-score.mid{color:var(--pron-mid)} .pron-score.bad{color:var(--pron-bad)}
.pron-ph-row{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:8px 0}
.pron-ph{font-size:.85rem;font-weight:600;border-radius:7px;padding:4px 9px;font-family:'Space Grotesk',sans-serif}
.pron-ph.ok{background:rgba(34,197,94,.15);color:var(--pron-ok)}
.pron-ph.bad{background:rgba(239,68,68,.15);color:var(--pron-bad)}
.pron-ph.mid{background:rgba(245,158,11,.15);color:var(--pron-mid)}

.pron-tip{display:flex;gap:9px;text-align:left;background:rgba(245,158,11,.10);
  border:1px solid rgba(245,158,11,.30);border-radius:11px;padding:11px 13px;margin:10px 0}
.pron-tip-ic{font-size:1.1rem;line-height:1.2;flex-shrink:0}
.pron-tip-short{font-size:.86rem;color:var(--text);line-height:1.45}
.pron-tip-more{margin-top:6px}
.pron-tip-more summary{cursor:pointer;font-size:.78rem;color:var(--pron-mid);font-weight:600}
.pron-tip-more>div{margin-top:6px;font-size:.82rem;color:var(--text2);line-height:1.5}
.pron-final-note{font-size:.78rem;color:var(--dim);margin:8px 0;line-height:1.5}

.pron-result-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.pron-sub-actions{margin-top:8px}
.pron-btn-primary,.pron-btn-ghost,.pron-btn-warn{font-family:inherit;font-size:.82rem;font-weight:700;
  border-radius:9px;padding:10px 16px;cursor:pointer;border:1px solid transparent;text-decoration:none;display:inline-block}
.pron-btn-primary{background:linear-gradient(135deg,#20B9B9,#159a9a);color:#fff;box-shadow:0 2px 8px rgba(32,185,185,.3)}
.pron-btn-primary:hover{transform:translateY(-1px)}
.pron-btn-ghost{background:var(--surf);border-color:var(--border);color:var(--dim)}
.pron-btn-ghost:hover{color:var(--text);border-color:var(--accent)}
.pron-btn-warn{background:rgba(239,68,68,.10);border-color:rgba(239,68,68,.35);color:var(--pron-bad)}

/* Consent / gate */
.pron-consent,.pron-gate{text-align:center}
.pron-consent-ic{font-size:2.2rem}
.pron-consent-title{font-family:'Space Grotesk',sans-serif;font-size:1.05rem;font-weight:700;color:var(--text);margin:8px 0}
.pron-consent-list{text-align:left;max-width:340px;margin:10px auto;padding-left:18px;font-size:.85rem;color:var(--text2);line-height:1.6}
.pron-gate-msg{font-size:.86rem;color:var(--dim);margin:8px 0 4px}

/* Dispute */
.pron-dispute-title{font-family:'Space Grotesk',sans-serif;font-size:1.05rem;font-weight:700;color:var(--text);margin-bottom:10px}
.pron-dispute-reasons{display:flex;flex-direction:column;gap:8px;text-align:left;margin-bottom:10px}
.pron-dispute-reasons label{font-size:.85rem;color:var(--text2);display:flex;gap:8px;align-items:flex-start;cursor:pointer}
.pron-dispute-note{width:100%;min-height:60px;background:var(--surf);border:1px solid var(--border);border-radius:9px;
  padding:9px;font-family:inherit;font-size:.85rem;color:var(--text);resize:vertical}

/* Mic-recovery iframe */
.pron-recovery-frame{width:100%;height:380px;border:1px solid var(--border);border-radius:11px;background:var(--surf)}

/* Interactive root-cause picker */
.pron-causes{text-align:left;margin:12px 0 4px}
.pron-causes-q{font-size:.82rem;font-weight:700;color:var(--text);margin-bottom:8px}
.pron-cause{display:block;width:100%;text-align:left;background:var(--surf);border:1px solid var(--border);
  border-radius:11px;padding:10px 12px;margin:7px 0;cursor:pointer;font-family:inherit;transition:border-color .15s,transform .1s}
.pron-cause:hover{border-color:var(--pron-teal);transform:translateY(-1px)}
.pron-cause.suggested{border-color:var(--pron-teal);background:rgba(32,185,185,.07)}
.pron-cause-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pron-cause-label{font-size:.88rem;font-weight:700;color:var(--text)}
.pron-cause-badge{font-size:.62rem;font-weight:700;color:#fff;background:var(--pron-teal);border-radius:999px;padding:2px 8px}
.pron-cause-diag{display:block;margin-top:4px;font-size:.78rem;color:var(--dim);line-height:1.45}

/* Root-cause accordion (R3 #3 — expand fixes in place, no back-navigation) */
.pron-cause-acc{display:block;background:var(--surf);border:1px solid var(--border);border-radius:11px;margin:7px 0;text-align:left}
.pron-cause-acc.suggested{border-color:var(--pron-teal);background:rgba(32,185,185,.07)}
.pron-cause-acc>summary{cursor:pointer;padding:10px 12px;list-style:none;position:relative}
.pron-cause-acc>summary::-webkit-details-marker{display:none}
.pron-cause-acc>summary::after{content:'▾';position:absolute;right:12px;top:10px;color:var(--dim);font-size:.8rem;transition:transform .15s}
.pron-cause-acc[open]>summary::after{transform:rotate(180deg)}
.pron-cause-acc>summary:hover{border-color:var(--pron-teal)}
.pron-cause-acc-body{padding:0 12px 12px;border-top:1px dashed var(--border);margin-top:2px;padding-top:10px}

/* Cause detail (fix + drill + success) */
.pron-cause-detail{text-align:left;background:rgba(32,185,185,.07);border:1px solid rgba(32,185,185,.30);
  border-radius:12px;padding:12px 13px;margin:10px 0}
.pron-cause-detail-label{font-size:.88rem;font-weight:700;color:var(--text);margin-bottom:6px}
.pron-fix{font-size:.86rem;color:var(--text2);line-height:1.5}
.pron-diagram-wrap{max-width:300px;margin:11px auto 2px;border-radius:10px;overflow:hidden;background:#fff}
.pron-drill-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.pron-drill-chip{background:var(--surf2);border:1px solid var(--border);border-radius:8px;padding:5px 10px;
  font-family:inherit;font-size:.8rem;font-weight:600;color:var(--text);cursor:pointer;transition:border-color .15s}
.pron-drill-chip:hover{border-color:var(--pron-teal);color:var(--pron-teal)}
.pron-minpairs{margin-top:9px;font-size:.78rem;color:var(--dim)}
.pron-minpairs span{white-space:nowrap;margin-right:4px}
.pron-success{margin-top:9px;font-size:.8rem;color:var(--pron-ok);line-height:1.45}
