.ov{position:fixed;inset:0;background:rgba(2,4,9,.72);backdrop-filter:blur(4px);z-index:100;display:none;align-items:flex-start;justify-content:center;padding:5vh 14px;overflow-y:auto}
.ov.on{display:flex}
.modal{width:100%;max-width:760px;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r-l);padding:22px;color:var(--text)}
.modal h2{font-family:var(--display);font-size:22px;margin:0}
.eng{border:1px solid var(--border);border-radius:var(--r-m);padding:12px 14px;margin-top:10px;background:var(--surface)}
.eng.off{opacity:.55}
.eng-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.eng-h strong{font-family:var(--display);font-size:15.5px}
.eng-status{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-family:var(--mono);font-size:10.5px;font-weight:600;line-height:1.3;white-space:nowrap}
.eng-status.ok{background:rgba(34,229,138,.12);color:var(--ok);border:1px solid rgba(34,229,138,.3)}
.eng-status.warn{background:rgba(255,180,74,.12);color:var(--warn);border:1px solid rgba(255,180,74,.3)}
.eng-status.err{background:rgba(255,107,122,.12);color:var(--err);border:1px solid rgba(255,107,122,.3)}
.tier{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;padding:2px 8px;border-radius:999px;border:1px solid var(--border2);color:var(--muted)}
.tier.free{color:var(--green);border-color:rgba(34,229,138,.35)}
.tier.freekey{color:var(--cyan);border-color:rgba(19,200,245,.35)}
.tier.paid{color:var(--cta);border-color:rgba(255,180,74,.35)}
.eng-b{display:grid;grid-template-columns:1.4fr 1fr auto auto;gap:8px;margin-top:10px}
.eng-b input{width:100%}
@media(max-width:640px){.eng-b{grid-template-columns:1fr 1fr}}
.dot{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}
.dot.ok{background:var(--ok);box-shadow:0 0 8px rgba(34,229,138,.6)}
.note{font-size:13px;color:var(--muted);border-inline-start:2px solid var(--cyan);padding:6px 12px;margin:14px 0 4px;background:rgba(19,200,245,.05);border-radius:0 8px 8px 0}

input[type=search]{-webkit-appearance:none;appearance:none}
input::placeholder{color:var(--muted);opacity:1}
input[type=search]::-webkit-search-cancel-button{filter:invert(1)}
.mark-wrap{position:relative}
.mark-back{position:absolute;inset:0;padding:16px;font-size:17px;line-height:1.7;white-space:pre-wrap;word-wrap:break-word;overflow:hidden;color:transparent;pointer-events:none;scrollbar-gutter:stable}
.mark-wrap textarea{position:relative;scrollbar-gutter:stable}
.mark-back mark{background:transparent;color:transparent;text-decoration:underline dotted var(--accent);text-decoration-thickness:1.5px;text-underline-offset:5px}
.idiom-box{margin-top:10px;display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;font-size:14px;line-height:1.6}
.idiom-box dt{color:var(--muted)}
.idiom-box dd{margin:0}
.dict-result{margin-top:14px}
.dict-pos{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:14px 0 4px}
.dict-entry{padding:6px 0;border-bottom:1px solid var(--border)}
.dict-meanings{font-size:16px;line-height:1.6}
.dict-ex{font-size:13px;color:var(--muted);margin-top:2px}
.dict-forms,.dict-via,.dict-extra{font-size:12px;color:var(--muted);margin-top:2px}
.dict-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dict-head .w{font-size:20px;font-weight:700}
.dict-idiom{font-size:11px;border:1px solid var(--border2);border-radius:6px;padding:0 6px;color:var(--muted)}
.dict-ai{margin-top:12px;padding:10px;border:1px dashed var(--border2);border-radius:10px;font-size:14px;line-height:1.6;white-space:pre-wrap}
.word-card{position:fixed;z-index:180;width:min(360px,calc(100vw - 24px));max-height:60vh;overflow:auto;background:var(--popup, var(--surface2));border:1px solid var(--border2);border-radius:12px;padding:12px 14px;box-shadow:0 14px 36px rgba(0,0,0,.3);font-size:14px;color:var(--text)}
.word-card[hidden]{display:none}
.credits-box{position:fixed;z-index:210;inset-inline-end:18px;bottom:60px;width:min(480px,calc(100vw - 36px));background:var(--popup, var(--surface2));border:1px solid var(--border2);border-radius:12px;padding:14px 16px;font-size:13px;line-height:1.6;box-shadow:0 14px 36px rgba(0,0,0,.3);color:var(--text)}
.credits-box[hidden]{display:none}
.bug-report-modal{z-index:220;width:min(620px,calc(100vw - 36px))}
.my-word{display:flex;gap:10px;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--border)}
.speak-notice{position:fixed;bottom:18px;inset-inline-start:18px;z-index:190;display:flex;align-items:center;gap:10px;max-width:min(520px,calc(100vw - 36px));background:var(--surface2);border:1px solid var(--border2);border-inline-start:3px solid var(--warn);border-radius:10px;padding:8px 12px;font-size:13px;box-shadow:0 12px 30px rgba(0,0,0,.3);color:var(--text)}
.speak-notice[hidden]{display:none}
.speak-notice .btn{min-height:26px;padding:2px 10px;font-size:12px}
.voice-used{font-size:12px;color:var(--muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.compact-voice-picker-wrap{position:relative;display:inline-flex;align-items:center}
.compact-voice-btn, .v-mic-stt-btn{display:inline-flex;align-items:center;gap:4px;min-height:28px;padding:2px 8px;font-size:12px;border-radius:6px;border:1px solid var(--border);background:var(--surface2);cursor:pointer;color:var(--text);transition:border-color .15s,background .15s}
.compact-voice-btn:hover, .v-mic-stt-btn:hover{background:var(--surface);border-color:var(--accent)}
.compact-voice-popup{position:absolute;top:calc(100% + 4px);inset-inline-end:0;z-index:210;min-width:320px;max-width:390px;max-height:380px;overflow-y:auto;background:var(--surface);border:1px solid var(--border2);border-radius:8px;box-shadow:0 12px 30px rgba(0,0,0,.45);padding:10px}
.compact-voice-popup.popup-up{top:auto;bottom:calc(100% + 6px)}
.compact-voice-popup[hidden]{display:none!important}
.compact-voice-cur{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.toasts{position:fixed;bottom:18px;inset-inline-end:18px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(460px,calc(100vw - 36px));pointer-events:none}
.toast{background:var(--popup, var(--surface2));color:var(--text);border:1px solid var(--border);border-inline-start:3px solid var(--accent);border-radius:10px;padding:10px 14px;font-size:13.5px;box-shadow:var(--shadow-md, 0 12px 30px rgba(0,0,0,.5));pointer-events:none}
.toast.err{border-inline-start-color:var(--danger, var(--err))} .toast.warn{border-inline-start-color:var(--warning, var(--warn))} .toast.ok{border-inline-start-color:var(--success, var(--ok))}
.toast.has-action{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;line-height:1.4}
.toast.has-action button{pointer-events:auto;flex-shrink:0}
footer{border-top:1px solid var(--border);padding:22px 0;color:var(--faint);font-size:13px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
 .tier.local,.tier.offline{color:var(--accent);border-color:var(--accent-line)}
#offBtn.on{color:var(--success);background:var(--success-bg)}
.btn.work{opacity:.6;pointer-events:none}
.modal h3{font-family:var(--display);font-size:17px;margin:26px 0 4px;padding-top:18px;border-top:1px solid var(--border)}
.setg{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:12px}
.setg label{display:grid;gap:5px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.setg select,.setg input{width:100%;font-family:var(--body);font-size:14px;letter-spacing:0;text-transform:none;color:var(--text)}
.dlrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border)}
.dlrow strong{font-size:14.5px}
.fg-box{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 8px;padding:8px 12px;border:1px solid var(--accent-line);border-radius:var(--r-s);background:var(--surface2)}
.fg-box .lbl{color:var(--accent)}
.fg-box .fg-t{flex:1;min-width:160px;font-size:16px;unicode-bidi:plaintext}
.mdl-grp{margin:18px 0 4px;font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--muted)}
.mdl-sub{margin:10px 0 0;font-size:12.5px;color:var(--faint)}
.mdl{padding:10px 0;border-bottom:1px solid var(--border)}
.mdl-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mdl-h strong{font-size:14.5px}
.mdl-m{margin-top:4px;font-size:12.5px;color:var(--muted)}
.mdl-g{margin-top:2px;font-size:13px}
.mdl-a{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.mdl .badge{font-size:11px;padding:1px 8px;border-radius:999px;border:1px solid var(--border2);color:var(--muted)}
.mdl .badge.rec{color:var(--accent);border-color:var(--accent-line)}
.mdl .badge.warn{color:var(--warn);border-color:var(--warn)}
.mdl .prog{margin-top:8px}
.mdl.inuse{background:rgba(19,200,245,.04)}
.test-results-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.test-results-table th,.test-results-table td{padding:6px 10px;border-bottom:1px solid var(--border);text-align:start}
.test-results-table th{color:var(--muted);font-weight:600;font-size:12px}
.test-results-wrap{overflow-x:auto;max-height:300px}
.off-fallback-notice{padding:8px 12px;background:rgba(255,180,74,.1);border:1px solid rgba(255,180,74,.3);border-radius:var(--r-s);color:var(--warn);font-size:13px;margin:8px 0}
.engine-picker{display:flex;flex-direction:column;gap:5px;margin:8px 0;max-width:100%}
.engine-picker-main-row{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.engine-picker-label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.engine-picker-select{min-width:210px;max-width:100%;font-family:var(--body);font-size:13.5px;color:var(--text);background:var(--surface2,var(--panel));border:1px solid var(--border);border-radius:var(--r-s);padding:5px 8px}
.engine-picker-select option:disabled{color:var(--muted)}
.engine-picker-test-btn{color:var(--text);font-size:12.5px;padding:5px 12px;height:32px;white-space:nowrap}
.engine-picker-sub-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);flex-wrap:nowrap;min-width:0;max-width:100%;overflow:hidden}
.engine-picker-using{color:var(--text);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}
.engine-picker-using-val{color:var(--text);font-weight:600;white-space:nowrap}
.engine-picker-sep{white-space:nowrap;flex-shrink:0}
.engine-picker-keys-link{color:var(--accent);text-decoration:underline;font-size:12px;cursor:pointer;white-space:nowrap;flex-shrink:0}
.engine-picker-keys-link:hover{text-decoration:underline;opacity:.85}
.engine-picker-status{font-size:12px;color:var(--muted);padding:2px 0;min-height:18px;word-break:break-word}
.engine-picker-status.ok{color:var(--text)}
.engine-picker-status.err{color:var(--warn)}
.engine-picker-model-label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.engine-picker-model-select{min-width:170px;max-width:100%;font-family:var(--body);font-size:13.5px;color:var(--text);background:var(--surface2,var(--panel));border:1px solid var(--border);border-radius:var(--r-s);padding:5px 8px}
.engine-picker-model-select option:disabled{color:var(--muted)}
.engine-picker-hub-link{color:var(--accent);text-decoration:underline;font-size:12px;cursor:pointer;align-self:center;margin-bottom:6px}
.engine-picker-hub-link:hover{text-decoration:underline;opacity:.85}
@media(max-width:480px){
  .engine-picker-select{min-width:0;width:100%}
  .engine-picker-model-select{min-width:0;width:100%}
  .engine-picker-main-row{width:100%}
  .engine-picker-label{flex:1 1 auto;min-width:0}
  .engine-picker-sub-row{max-width:100%;flex-wrap:nowrap;overflow:hidden}
  .engine-picker-using{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto}
}

/* Phone-specific model hiding (ITEM 2) */
html.is-phone #setTabBtnTrModels,
html.is-phone #secTrModels,
html.is-phone .off-models-pickers label:has(#offTrModelSel),
html.is-phone #hubFilterRow button[data-cat="translate"],
html.is-phone #hubFilterRow button[data-cat="speak"],
html.is-phone #hubFilterRow button[data-cat="ocr"],
html.is-phone .eng[data-id="nllb"] {
  display: none !important;
}