:root{
  --line:#06c755;--line-dark:#05a849;--bg:#eef3f1;--panel:#fff;--text:#1f2937;--muted:#6b7280;
  --soft:#e8f9ef;--border:#dbe5df;--shadow:0 10px 30px rgba(20,50,35,.10)
}
*{box-sizing:border-box} html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif}
button,input{font:inherit}button{cursor:pointer}
.app{max-width:1180px;margin:auto;min-height:100vh}
.topbar{position:sticky;top:0;z-index:50;background:var(--line);color:#fff;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 14px rgba(0,0,0,.08)}
.brand{display:flex;align-items:center;gap:9px}.logo{width:36px;height:36px;border-radius:11px;background:#fff;color:var(--line);display:grid;place-items:center;font-weight:900}
.brand h1{font-size:17px;margin:0}.brand small{opacity:.9;font-size:11px}.top-actions{display:flex;gap:7px;flex-wrap:wrap}
.top-btn{border:none;background:rgba(255,255,255,.17);color:#fff;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:700}
.hero{padding:14px 14px 8px}.hero-card{background:#fff;border:1px solid var(--border);border-radius:20px;padding:18px;box-shadow:var(--shadow)}
.hero-card .eyebrow{color:var(--line-dark);font-size:11px;font-weight:800}.hero-card h2{font-size:clamp(24px,4.5vw,42px);line-height:1.08;margin:7px 0}
.hero-card p{color:var(--muted);line-height:1.6;margin:0;font-size:14px}
.main-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:8px 14px;background:rgba(238,243,241,.94);position:sticky;top:56px;z-index:45;backdrop-filter:blur(10px);border-bottom:1px solid rgba(219,229,223,.8)}
.main-tab{border:1px solid var(--border);background:#fff;border-radius:15px;padding:11px 10px;font-weight:800;font-size:13px;color:#42504a}
.main-tab.active{background:#111827;color:#fff;border-color:#111827}
.section{padding:12px 14px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:9px}
.section-head h3{margin:0;font-size:18px}.section-head p{margin:3px 0 0;color:var(--muted);font-size:11px}
.search{display:flex;gap:7px;align-items:center;background:#fff;border:1px solid var(--border);border-radius:13px;padding:8px 10px;min-width:240px}
.search input{border:none;outline:none;width:100%;background:transparent;font-size:13px}
.scene-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.scene-btn{border:1px solid var(--border);background:#fff;border-radius:16px;padding:13px 8px;min-height:92px;text-align:center;transition:.18s}
.scene-btn:hover{transform:translateY(-2px);border-color:#93e9b6;background:var(--soft);box-shadow:var(--shadow)}
.scene-btn .emoji{font-size:24px;display:block;margin-bottom:4px}.scene-btn strong{display:block;font-size:12px}.scene-btn small{font-size:9px;color:var(--muted)}
.scene-btn .count{display:inline-block;margin-top:5px;background:#f2f6f4;border-radius:999px;padding:2px 6px;font-size:9px;color:#4f5f56}
.quick-training{padding:0 14px 12px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.quick-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:14px;box-shadow:var(--shadow)}
.quick-card b{display:block;font-size:13px;margin-bottom:5px}.quick-card p{font-size:10px;color:var(--muted);line-height:1.5;margin:0 0 9px}
.quick-card button{border:none;background:#111827;color:#fff;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:800}
.workspace{padding:0 14px 28px}.panel{background:#fff;border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);overflow:hidden}
.hidden{display:none!important}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:100;display:none;align-items:flex-end;justify-content:center;backdrop-filter:blur(4px)}
.modal.show{display:flex}.modal-sheet{width:min(1180px,100%);height:min(93vh,980px);background:#f5f8f6;border-radius:24px 24px 0 0;overflow:hidden;box-shadow:0 -10px 40px rgba(0,0,0,.2);display:flex;flex-direction:column}
.modal-head{background:#fff;border-bottom:1px solid var(--border);padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.modal-title{display:flex;align-items:center;gap:10px}.modal-icon{width:40px;height:40px;border-radius:14px;background:var(--soft);display:grid;place-items:center;font-size:22px}
.modal-title strong{display:block;font-size:15px}.modal-title small{color:var(--muted);font-size:10px}.close-btn{border:none;background:#eef2f0;border-radius:50%;width:36px;height:36px;font-size:18px}
.modal-tools{padding:9px 12px;background:#fff;border-bottom:1px solid var(--border);display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.tool-btn{border:1px solid var(--border);background:#fff;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:750}
.tool-btn.active{background:#111827;color:#fff;border-color:#111827}.modal-search{flex:1;min-width:180px;display:flex;align-items:center;gap:6px;border:1px solid var(--border);background:#fff;border-radius:999px;padding:7px 10px}
.modal-search input{border:none;outline:none;width:100%;background:transparent;font-size:11px}
.card-grid{padding:12px;overflow:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.phrase-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:12px;box-shadow:0 2px 10px rgba(0,0,0,.04)}
.es{font-size:18px;font-weight:850;line-height:1.25}.pron{font-size:9px;color:var(--line-dark);font-weight:800;margin-top:3px}
.ja{margin-top:6px;font-size:12px}.en{margin-top:3px;color:var(--muted);font-size:10px}
.actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.btn{border:1px solid #cfe0d6;background:#fff;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:750}
.btn.primary{background:var(--line);border-color:var(--line);color:#fff}.btn.fav.active{background:#fff7d6;border-color:#f1d76a}
.detail{display:none;margin-top:8px;padding-top:7px;border-top:1px dashed #c7d8ce;font-size:10px;line-height:1.55}.detail.show{display:block}
.pattern{background:#f8fbf9;border:1px solid #dceae2;border-radius:10px;padding:7px;margin-bottom:5px}
.empty{grid-column:1/-1;padding:30px;text-align:center;color:var(--muted)}

/* Training */
.training-wrap{padding:14px;background:#f6faf7}
.training-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px}
.training-card{background:#fff;border:1px solid var(--border);border-radius:20px;padding:18px;box-shadow:var(--shadow);max-width:760px;margin:auto}
.training-card .stage{font-size:10px;color:var(--line-dark);font-weight:800}
.training-card .prompt{font-size:14px;color:var(--muted);margin:8px 0}
.training-card .answer{font-size:28px;font-weight:900;line-height:1.2;margin:8px 0}
.training-card .hint{font-size:11px;color:var(--muted);margin-top:6px}
.training-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.training-actions button{border:none;border-radius:999px;padding:9px 12px;font-size:11px;font-weight:800}
.training-actions .primary{background:var(--line);color:#fff}.training-actions .dark{background:#111827;color:#fff}.training-actions .light{background:#eef2f0}
.dialogue{display:grid;gap:8px;max-width:760px;margin:12px auto 0}
.turn{display:flex}.turn.me{justify-content:flex-end}.turn .bubble{max-width:78%;background:#fff;border:1px solid var(--border);border-radius:16px 16px 16px 5px;padding:10px 12px;font-size:12px}
.turn.me .bubble{background:#dcf8c6;border-radius:16px 16px 5px 16px}

/* Textbook */
.textbook{padding:14px;display:grid;grid-template-columns:240px 1fr;gap:12px;background:#f7faf8}
.book-nav{background:#fff;border:1px solid var(--border);border-radius:16px;padding:10px;height:max-content;position:sticky;top:68px}
.book-nav button{width:100%;border:none;background:transparent;text-align:left;border-radius:10px;padding:8px 9px;font-size:11px;color:#435148}
.book-nav button.active{background:var(--soft);color:var(--line-dark);font-weight:800}
.book-content{display:grid;gap:10px}.lesson{background:#fff;border:1px solid var(--border);border-radius:16px;padding:15px}
.lesson h4{margin:0 0 6px;font-size:17px}.lesson .lead{font-size:12px;color:var(--muted);line-height:1.6;margin:0 0 10px}
.rulebox{border-left:4px solid var(--line);background:#f3fbf6;padding:10px 12px;border-radius:10px;margin:8px 0}
.rulebox b{font-size:12px}.rulebox p{margin:4px 0 0;font-size:11px;line-height:1.6;color:#4b5563}
.examples{display:grid;gap:6px;margin-top:9px}.example{border:1px solid var(--border);border-radius:11px;padding:9px;background:#fff}.example .esx{font-weight:800;font-size:13px}.example .engx,.example .jax{font-size:10px;color:var(--muted)}

.grammar-table-wrap{overflow-x:auto;margin-top:10px}
.grammar-table{width:100%;border-collapse:separate;border-spacing:0;font-size:11px;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.grammar-table th{background:#f1f7f3;color:#435148;font-size:10px;padding:8px;text-align:left;white-space:nowrap}
.grammar-table td{padding:8px;border-top:1px solid var(--border);vertical-align:top}
.grammar-table tr:first-child td{border-top:none}
.grammar-table td strong{font-size:12px}
.grammar-note{margin-top:8px;background:#fff8dc;border:1px solid #f2e3a5;border-radius:10px;padding:8px 10px;font-size:10px;line-height:1.6;color:#66551b}
.person-chip{display:inline-block;background:var(--soft);color:var(--line-dark);font-weight:800;border-radius:999px;padding:2px 6px;font-size:9px}
.gender-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.gender-card{border:1px solid var(--border);border-radius:12px;padding:10px;background:#fff}
.gender-card h5{margin:0 0 6px;font-size:12px}
.gender-card p{margin:3px 0;font-size:10px;line-height:1.55;color:#4b5563}
@media(max-width:620px){.gender-grid{grid-template-columns:1fr}.grammar-table{font-size:10px}}

.compare-table{width:100%;border-collapse:collapse;margin-top:9px;font-size:10px}.compare-table th,.compare-table td{border-bottom:1px solid var(--border);padding:7px 6px;text-align:left;vertical-align:top}.compare-table th{background:#f7faf8}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#111827;color:#fff;border-radius:999px;padding:9px 13px;font-size:11px;opacity:0;pointer-events:none;transition:.2s;z-index:200}.toast.show{opacity:1}


/* usability polish */
.study-strip{padding:4px 14px 12px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.study-action{background:#fff;border:1px solid var(--border);border-radius:15px;padding:11px;text-align:left;box-shadow:0 3px 12px rgba(20,50,35,.05)}
.study-action b{display:block;font-size:12px;margin-bottom:3px}
.study-action span{font-size:9px;color:var(--muted)}
.study-action:hover{border-color:#91e6b3;background:#fbfffc}
.progress-track{height:7px;background:#e5ece8;border-radius:999px;overflow:hidden;margin:10px 0 4px}
.progress-fill{height:100%;background:var(--line);border-radius:999px}
.training-result{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.training-result button{border:none;border-radius:999px;padding:8px 11px;font-size:10px;font-weight:800}
.training-result .again{background:#fff1f2;color:#be123c}
.training-result .known{background:#e8f9ef;color:#08783a}
.small-stat{font-size:9px;color:var(--muted)}
.dictionary-summary{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}
.summary-pill{background:#fff;border:1px solid var(--border);border-radius:999px;padding:5px 8px;font-size:9px;color:#536158}
.dict-filter-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:8px 0 10px}
.dict-filter-row select{border:1px solid var(--border);background:#fff;border-radius:999px;padding:7px 10px;font-size:10px;outline:none}
.dict-filter-row button{border:1px solid var(--border);background:#fff;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:750}
.dict-filter-row button.active{background:#111827;color:#fff;border-color:#111827}
.word-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}
.word-badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 6px;font-size:8px;font-weight:800;background:#f2f6f4;color:#536158}
.word-badge.level{background:#eaf4ff;color:#315b83}
.word-badge.freq{background:#fff8dc;color:#8a6410}
.word-meta{font-size:9px;color:#536158;margin-top:6px;line-height:1.55}
.word-detail{display:none;margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);font-size:9px;line-height:1.6;color:#4b5563}
.word-detail.show{display:block}
.conj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:5px}
.conj-cell{background:#f7faf8;border-radius:7px;padding:5px;font-size:8px}
.dict-empty{grid-column:1/-1;padding:30px;text-align:center;color:var(--muted)}
@media(max-width:900px){.study-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){
  .main-tabs{top:56px;display:flex;overflow-x:auto;gap:6px;padding:7px 9px}
  .main-tab{min-width:max-content;padding:8px 10px}
  .study-strip{grid-template-columns:repeat(2,1fr);padding-left:9px;padding-right:9px}
}




.audio-status{
  margin-top:10px;display:inline-flex;align-items:center;gap:7px;position:relative;z-index:1;
  padding:6px 8px;border-radius:10px;background:#f7faf8;border:1px solid #e2ebe5;
  font-size:9px;color:#65746b
}
.audio-status.ready{background:#effbf3;color:#19703d;border-color:#cfead8}
.audio-status.warn{background:#fff8e8;color:#8a6513;border-color:#f0dfaf}
.audio-status.error{background:#fff0f0;color:#a43c3c;border-color:#f1cccc}
.audio-dot{width:7px;height:7px;border-radius:50%;background:#9aa8a0;flex:0 0 auto}
.audio-status.ready .audio-dot{background:var(--line)}
.audio-status.warn .audio-dot{background:#e6a700}
.audio-status.error .audio-dot{background:#df5454}
.audio-status button{
  border:none;background:#fff;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:800;color:inherit
}
@media(max-width:620px){
  .audio-test-btn{display:none!important}
  .audio-status{display:flex;width:100%;justify-content:flex-start;font-size:8px}
  .audio-status button{margin-left:auto;min-height:26px;padding:4px 8px}
}


.audio-status{
  margin-top:10px;display:inline-flex;align-items:center;gap:7px;position:relative;z-index:1;
  padding:6px 8px;border-radius:10px;background:#f7faf8;border:1px solid #e2ebe5;
  font-size:9px;color:#65746b
}
.audio-status.ready{background:#effbf3;color:#19703d;border-color:#cfead8}
.audio-status.warn{background:#fff8e8;color:#8a6513;border-color:#f0dfaf}
.audio-status.error{background:#fff0f0;color:#a43c3c;border-color:#f1cccc}
.audio-dot{width:7px;height:7px;border-radius:50%;background:#9aa8a0;flex:0 0 auto}
.audio-status.ready .audio-dot{background:var(--line)}
.audio-status.warn .audio-dot{background:#e6a700}
.audio-status.error .audio-dot{background:#df5454}
.audio-status button{
  border:none;background:#fff;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:800;color:inherit
}
@media(max-width:620px){
  .audio-test-btn{display:none!important}
  .audio-status{display:flex;width:100%;justify-content:flex-start;font-size:8px}
  .audio-status button{min-height:26px;padding:4px 8px}
  .audio-status button:first-of-type{margin-left:auto}
}

/* Dotanba Spanish visual refresh */
:root{
  --line:#06c755;
  --line-dark:#059447;
  --bg:#f3f7f4;
  --text:#15221b;
  --muted:#66736c;
  --border:#dce7e0;
  --soft:#e9f9ef;
}
body{background:linear-gradient(180deg,#f7faf8 0,#eef4f0 100%)}
.app{padding-bottom:20px}
.topbar{
  min-height:58px;padding:9px 14px;background:rgba(6,199,85,.97);
  backdrop-filter:blur(12px)
}
.logo{
  width:38px;height:38px;border-radius:13px;font-size:14px;letter-spacing:-.04em;
  box-shadow:inset 0 0 0 1px rgba(6,199,85,.08)
}
.brand h1{font-size:17px;letter-spacing:-.025em}
.brand small{font-size:10px}
.hero{padding-top:16px}
.hero-card{
  position:relative;overflow:hidden;padding:26px 24px 22px;border:none;
  background:
    radial-gradient(circle at 100% 0,rgba(6,199,85,.12),transparent 36%),
    linear-gradient(145deg,#fff 0,#fbfffc 100%);
}
.hero-card:after{
  content:"ES";position:absolute;right:-10px;bottom:-42px;font-size:140px;font-weight:950;
  letter-spacing:-.08em;color:rgba(6,199,85,.055);pointer-events:none
}
.hero-card .eyebrow{letter-spacing:.12em;font-size:10px}
.hero-card h2{
  font-size:clamp(34px,6vw,62px);letter-spacing:-.06em;line-height:.98;margin:10px 0 15px;
  position:relative;z-index:1
}
.hero-card p{max-width:690px;font-size:14px;line-height:1.8;position:relative;z-index:1}
.hero-card p strong{color:#17271e}
.hero-cta-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px;position:relative;z-index:1}
.hero-cta-row button{border:none;border-radius:13px;min-height:44px;padding:10px 15px;font-size:12px;font-weight:900}
.hero-primary{background:var(--line);color:#fff;box-shadow:0 7px 18px rgba(6,199,85,.22)}
.hero-secondary{background:#edf2ef;color:#26362d}
.hero-proof{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px;position:relative;z-index:1}
.hero-proof span{background:#f3f7f4;border:1px solid #e2eae5;border-radius:999px;padding:5px 8px;font-size:9px;color:#526158;font-weight:700}

.main-tab{transition:.15s;min-height:42px}
.main-tab:hover{border-color:#adcdb9}
.main-tab.active{background:#14231a}
.section-head h3{font-size:21px;letter-spacing:-.03em}
.section-head p{font-size:11px;line-height:1.5}

.scene-grid{grid-template-columns:repeat(5,1fr);gap:9px}
.scene-btn{
  min-height:102px;border-radius:18px;padding:14px 8px;background:rgba(255,255,255,.92);
  box-shadow:0 3px 10px rgba(20,50,35,.035)
}
.scene-btn .emoji{font-size:27px;margin-bottom:6px}
.scene-btn strong{font-size:12px}
.scene-btn .count{background:#edf5f0;color:#617168;margin-top:7px}
.scene-btn:hover{background:#f8fffa}

.quick-card{padding:16px;border-radius:18px;box-shadow:0 4px 14px rgba(20,50,35,.045)}
.quick-card b{font-size:13px}
.quick-card p{font-size:10px;line-height:1.65;min-height:32px}
.quick-card button{background:#16241b;min-height:34px;padding:7px 11px}

.study-strip{gap:9px}
.study-action{border-radius:17px;padding:13px;min-height:64px;transition:.15s}
.study-action b{font-size:12px}
.study-action:hover{transform:translateY(-1px)}

.modal-sheet{background:#f6f9f7}
.modal-head{padding:13px 14px}
.modal-title strong{font-size:16px}
.card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;padding:13px}
.phrase-card{border-radius:18px;padding:14px}
.phrase-card .es{font-size:20px}
.phrase-card .ja{font-size:13px;font-weight:700}
.phrase-card .en{font-size:10px}
.phrase-card .actions .btn{min-height:30px;padding:6px 9px}
.modal-search{min-height:38px}

.training-card{border-radius:22px;padding:20px}
.training-card .prompt{font-size:12px}
.training-actions button{min-height:40px}
.dialogue .bubble{font-size:13px;line-height:1.55}

.mobile-bottom-nav{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:90;
  height:66px;padding:6px max(7px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));
  background:rgba(255,255,255,.96);border-top:1px solid #dde7e1;backdrop-filter:blur(14px);
  box-shadow:0 -5px 20px rgba(20,50,35,.08)
}
.mobile-bottom-nav button{
  flex:1;border:none;background:transparent;border-radius:12px;color:#718078;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:3px
}
.mobile-bottom-nav button span{font-size:18px;line-height:1}
.mobile-bottom-nav button b{font-size:9px;font-weight:800}
.mobile-bottom-nav button.active{color:var(--line-dark);background:#eefaf2}

@media(max-width:900px){
  .scene-grid{grid-template-columns:repeat(4,1fr)}
  .card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:620px){
  body{padding-bottom:72px}
  .app{padding-bottom:12px}
  .topbar{padding:8px 10px;min-height:54px}
  .brand h1{font-size:15px}
  .brand small{display:none}
  .top-actions{gap:4px}
  .top-actions .top-btn{padding:7px 8px;font-size:10px}
  .top-actions .top-btn:nth-child(1){display:none}

  .hero{padding:10px 9px 6px}
  .hero-card{padding:21px 17px 18px;border-radius:18px}
  .hero-card:after{font-size:94px;bottom:-26px}
  .hero-card h2{font-size:38px;line-height:1;margin:9px 0 12px}
  .hero-card p{font-size:12px;line-height:1.7}
  .desktop-br{display:none}
  .hero-cta-row{display:grid;grid-template-columns:1.2fr 1fr;margin-top:15px}
  .hero-cta-row button{padding:9px 8px;font-size:11px}
  .hero-proof{gap:4px;margin-top:11px}
  .hero-proof span{font-size:8px;padding:4px 6px}

  .main-tabs{display:none}
  .mobile-bottom-nav{display:flex}

  .study-strip{
    display:flex;overflow-x:auto;padding:7px 9px 10px;gap:7px;scroll-snap-type:x proximity;
    scrollbar-width:none
  }
  .study-strip::-webkit-scrollbar{display:none}
  .study-action{min-width:145px;min-height:58px;scroll-snap-align:start;padding:11px}
  .study-action span{font-size:8px}

  .section{padding:10px 9px}
  .section-head{margin-bottom:8px}
  .section-head h3{font-size:19px}
  .search{min-height:42px;border-radius:12px}

  .scene-grid{grid-template-columns:repeat(3,1fr);gap:7px}
  .scene-btn{min-height:88px;padding:10px 5px;border-radius:15px}
  .scene-btn .emoji{font-size:23px;margin-bottom:4px}
  .scene-btn strong{font-size:10px;line-height:1.25}
  .scene-btn small{display:none}
  .scene-btn .count{font-size:8px;margin-top:5px}

  .quick-training{display:flex;overflow-x:auto;gap:7px;padding:0 9px 9px;scrollbar-width:none}
  .quick-training::-webkit-scrollbar{display:none}
  .quick-card{min-width:215px;padding:13px}
  .quick-card p{min-height:0}

  .workspace{padding:0 9px 18px}
  .panel{border-radius:17px}

  .modal{align-items:stretch}
  .modal-sheet{height:100dvh;max-height:none;border-radius:0}
  .modal-head{padding-top:max(10px,env(safe-area-inset-top))}
  .modal-tools{
    position:sticky;top:0;z-index:5;padding:8px;background:rgba(255,255,255,.97);
    backdrop-filter:blur(10px)
  }
  .modal-search{order:-1;flex-basis:100%;min-height:42px}
  .tool-btn{min-height:34px;padding:6px 9px}
  .card-grid{grid-template-columns:1fr;gap:8px;padding:9px;padding-bottom:28px}
  .phrase-card{padding:13px;border-radius:16px}
  .phrase-card .es{font-size:21px}
  .phrase-card .pron{font-size:10px}
  .phrase-card .ja{font-size:13px;margin-top:7px}
  .phrase-card .actions{display:grid;grid-template-columns:1.3fr 1fr .55fr .55fr}
  .phrase-card .actions .btn{border-radius:10px;min-height:34px}

  .training-wrap{padding:10px}
  .training-head{align-items:flex-start;flex-direction:column}
  .training-card{padding:16px;border-radius:18px}
  .training-card .answer{font-size:24px}
  .training-actions{display:grid;grid-template-columns:1fr 1fr}
  .training-actions .dark{grid-column:1/-1}
  .turn .bubble{max-width:90%}

  .dictionary-wrap{padding:10px}
  .dictionary-toolbar{gap:6px}
  .dictionary-search{min-height:42px;min-width:100%}
  .dict-cats{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px;scrollbar-width:none}
  .dict-cats::-webkit-scrollbar{display:none}
  .dict-cats button{white-space:nowrap;min-height:32px}
  .dict-filter-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}
  .dict-filter-row select,.dict-filter-row button{width:100%;min-height:36px;border-radius:10px}
  .dictionary-summary{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .summary-pill{white-space:nowrap}

  .textbook{padding:9px}
  .book-nav{margin-bottom:3px}
  .lesson{padding:13px;border-radius:14px}
  .lesson h4{font-size:16px}
}

/* Dictionary card readability v2 */
.dictionary-controls{
  position:sticky;top:116px;z-index:20;background:#f7faf8;
  padding:2px 0 10px;margin-bottom:2px;border-bottom:1px solid rgba(219,229,223,.9)
}
.dict-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.word-card{
  background:#fff;border:1px solid #d9e5de;border-radius:18px;padding:15px;
  box-shadow:0 4px 14px rgba(20,50,35,.055);transition:.15s
}
.word-card:hover{border-color:#a6dfba;box-shadow:0 7px 20px rgba(20,50,35,.08)}
.word-head{align-items:flex-start}
.word-es{font-size:21px;letter-spacing:-.01em}
.word-ja{font-size:14px;font-weight:800;margin-top:5px;line-height:1.4}
.word-en{font-size:11px;margin-top:3px}
.word-pos{font-size:9px;padding:4px 7px}
.word-badges{margin-top:8px}
.word-badge{font-size:8px;padding:3px 7px}
.word-meta{font-size:10px;margin-top:8px;padding:7px 9px;background:#f7faf8;border-radius:9px}
.dict-example{
  margin-top:11px;padding:10px 11px;background:#f5faf7;border:1px solid #e0ebe4;border-radius:12px
}
.dict-example-label{font-size:8px;font-weight:900;color:var(--line-dark);letter-spacing:.07em;margin-bottom:5px}
.dict-example-es{font-size:12px;font-weight:800;line-height:1.5}
.dict-example-ja{font-size:11px;line-height:1.55;color:#4b5563;margin-top:3px}
.word-actions{margin-top:9px;display:grid;grid-template-columns:1fr 1fr;gap:6px}
.word-actions button{
  min-height:32px;border-radius:10px;padding:6px 8px;font-size:9px;background:#fff
}
.word-actions button.primary-word{background:var(--line);border-color:var(--line);color:#fff}
.word-actions button.detail-word{grid-column:1/-1;background:#f7faf8;color:#34433a}
.word-detail{
  display:none;margin-top:10px;padding:0;border-top:none;font-size:10px;line-height:1.6;color:#4b5563
}
.word-detail.show{display:block}
.word-detail-section{background:#fbfdfc;border:1px solid #e0e9e4;border-radius:11px;padding:10px;margin-top:7px}
.word-detail-title{font-size:9px;font-weight:900;color:#26372e;margin-bottom:6px}
.word-kv{display:grid;grid-template-columns:72px 1fr;gap:4px 8px;font-size:9px}
.word-kv b{color:#65746b;font-weight:700}
.conj-grid{grid-template-columns:repeat(2,1fr);gap:5px}
.conj-cell{padding:7px;background:#f2f7f4;border:1px solid #e1ebe5}
.conj-cell b{font-size:9px;color:#405047}
.conj-form{font-size:11px;font-weight:900;margin-top:2px;color:#111827}
@media(max-width:900px){.dict-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){
  .dictionary-controls{position:static;border-bottom:none}
  .dict-grid{grid-template-columns:1fr}
  .word-card{padding:14px}
  .word-es{font-size:22px}
}

/* Dictionary */
.dictionary-wrap{padding:14px;background:#f7faf8}
.dictionary-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.dictionary-search{flex:1;min-width:220px;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--border);border-radius:999px;padding:8px 11px}
.dictionary-search input{border:none;outline:none;width:100%;background:transparent;font-size:12px}
.dict-cats{display:flex;gap:6px;flex-wrap:wrap}
.dict-cats button{border:1px solid var(--border);background:#fff;border-radius:999px;padding:6px 9px;font-size:10px;font-weight:750}
.dict-cats button.active{background:#111827;color:#fff;border-color:#111827}
.dict-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.word-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:11px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.word-head{display:flex;justify-content:space-between;gap:8px;align-items:start}
.word-es{font-size:17px;font-weight:900;line-height:1.2}
.word-pos{font-size:9px;color:var(--line-dark);font-weight:800;background:var(--soft);border-radius:999px;padding:3px 6px;white-space:nowrap}
.word-ja{font-size:12px;margin-top:5px}
.word-en{font-size:10px;color:var(--muted);margin-top:2px}
.word-example{font-size:10px;line-height:1.55;color:#4b5563;margin-top:8px;padding-top:7px;border-top:1px dashed var(--border)}
.word-actions{display:flex;gap:5px;margin-top:7px}
.word-actions button{border:1px solid var(--border);background:#fff;border-radius:999px;padding:5px 8px;font-size:9px;font-weight:750}

@media(max-width:900px){.scene-grid{grid-template-columns:repeat(4,1fr)}.dict-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-training{grid-template-columns:1fr}.textbook{grid-template-columns:1fr}.book-nav{position:static;display:flex;gap:5px;overflow:auto}.book-nav button{width:auto;white-space:nowrap}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.hero,.section,.main-tabs,.workspace,.quick-training{padding-left:9px;padding-right:9px}.dict-grid{grid-template-columns:1fr}.scene-grid{grid-template-columns:repeat(3,1fr)}.section-head{flex-direction:column;align-items:stretch}.search{min-width:0;width:100%}.main-tab{font-size:10px;padding:9px 4px}.card-grid{grid-template-columns:1fr}.brand small{display:none}.modal-sheet{height:95vh}.modal-tools{gap:5px}.training-card .answer{font-size:24px}}

.card-kind{font-size:10px;font-weight:700;color:var(--muted);margin-bottom:6px}

.card-context{font-size:12px;line-height:1.6;color:#405047;background:#f2f7f4;padding:8px;border-radius:8px;margin:8px 0}
