.delete-word,.dictionary-rows button{background:#fff0ef!important;color:#a53f3c!important;border:1px solid #eaa7a2!important;border-radius:8px;padding:7px 9px;font-size:11px;font-weight:800;white-space:nowrap}.delete-word:hover,.dictionary-rows button:hover{background:#e47b75!important;color:#fff!important;border-color:#e47b75!important}body.dark .delete-word,body.dark .dictionary-rows button{background:#4a262b!important;color:#ffd4d1!important;border-color:#9c5559!important}body.dark .delete-word:hover,body.dark .dictionary-rows button:hover{background:#c85b59!important;color:#fff!important;border-color:#d97673!important}
.learning-stage .pill{padding:9px 13px;font-size:12px;letter-spacing:.1px;font-weight:800}.recall-options button:active,.recall-options button:focus-visible{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)!important;outline:2px solid #91afff;outline-offset:2px}body.dark .recall-options button:hover{background:#263b60!important;color:#fff!important;border-color:#6f95ff!important}body.dark .recall-options button:active,body.dark .recall-options button:focus-visible{background:#4268c9!important;color:#fff!important;border-color:#91afff!important}
.practice-coach{position:fixed;inset:0;z-index:40;display:none;place-items:center;padding:20px;background:#14253e66;backdrop-filter:blur(5px)}.practice-coach.open{display:grid}.coach-modal{width:min(100%,520px);background:#fffefa;border-radius:23px;padding:25px;box-shadow:0 24px 70px #14253e55}.coach-modal textarea{width:100%;height:105px;margin:15px 0 10px;padding:12px;border:1px solid var(--line);border-radius:12px;resize:vertical;font:13px Manrope}.coach-answer{display:none;margin:14px 0;padding:13px;background:#f0effe;border-radius:12px;line-height:1.55;color:#403c6e}.coach-answer.show{display:block}
.matching-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}.matching-grid section{display:grid;gap:8px}.matching-grid button{background:var(--card);border:1px solid var(--line);color:var(--ink);padding:12px;border-radius:11px;text-align:left;font-weight:800}.matching-grid button.selected{outline:2px solid var(--blue);background:#edf2ff}.matching-grid button.matched{background:#e7f7ed;color:#286b50;border-color:#78cda0}.matching-grid button.wrong{background:#fff0ef;border-color:#e47b75}.matching-status{min-height:20px;margin-top:13px;font-size:12px;font-weight:800;color:var(--muted)}body.dark .matching-grid button{background:#202c40;border-color:var(--line);color:var(--ink)}body.dark .matching-grid button.selected{background:#263b60}body.dark .matching-grid button.matched{background:#1d4a3a;color:#bcf0d2}@media(max-width:600px){.matching-grid{grid-template-columns:1fr}}
.word-sets-intro{color:var(--muted);font-size:13px;margin:4px 0 20px}.word-sets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.word-set-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:var(--shadow);text-align:center}.word-set-icon{font-size:32px;margin-bottom:8px}.word-set-card h3{margin:0 0 6px;font-size:15px}.word-set-progress{color:var(--muted);font-size:12px;margin-bottom:14px}.word-set-card button{width:100%}.word-set-card button:disabled{opacity:.5;cursor:default}
/* AI-коуч: список бесед, ответы с форматированием, вложения (coach-chat.js) */
.chat-list-toggle{display:none;background:var(--card);border:1px solid var(--line);color:var(--ink)}
.chat-history{overflow:auto}.chat-history .chat-new{width:100%;margin-bottom:17px;text-align:center}
.chat-item{display:flex;align-items:center;gap:4px;border-radius:8px}.chat-item.active{background:#e9efff}body.dark .chat-item.active{background:#263b60}
.chat-history .chat-item button:first-of-type{background:none;color:inherit}.chat-history .chat-open{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-empty-list{font-size:12px;color:var(--muted)}
.chat-main{min-height:0}
/* Один переносимый вид беседы (coach-chat.js mountChat): сообщения, полоса урока и поле ввода переезжают между «Беседами», главной и окном 💬. */
.chat-view{display:flex;flex-direction:column;flex:1;min-height:0}.messages{flex:1;min-height:0;align-content:start}
.message{overflow-wrap:anywhere}.message.bot .coach-text b{display:inline;margin:0}.coach-text p{margin:0 0 8px}.coach-text p:last-child{margin-bottom:0}.coach-text ul{margin:4px 0 8px;padding-left:18px}
.message.typing{color:var(--muted);font-style:italic}.message.chat-error{background:#fdecea;color:#9b2c24}body.dark .message.chat-error{background:#4a2422;color:#ffd5d1}
.coach-card{margin-top:10px;padding:12px;border-radius:12px;background:var(--card);border:1px solid var(--line);color:var(--ink);display:grid;gap:8px}
.message.bot .coach-card b{display:block;margin:0}.coach-card .btn{justify-self:start;font-size:12px;padding:9px 14px}
.proposal-words{list-style:none;margin:0;padding:0;display:grid;gap:6px}.proposal-words label{display:flex;gap:8px;align-items:flex-start;cursor:pointer}.proposal-words input{margin-top:3px}
.proposal-words b{display:inline!important}.proposal-words small{display:block;color:var(--muted);font-size:11px}
.coach-card-actions{display:flex;gap:8px;flex-wrap:wrap}.coach-card-actions .btn:not(.btn-primary){background:none;border:1px solid var(--line);color:var(--ink)}
.coach-card-status{font-size:12px;color:var(--muted)}
.coach-notice{margin-top:8px;font-size:11px;color:var(--muted)}.coach-notice.undone{text-decoration:line-through}
.link-button{background:none;padding:0;color:var(--blue);text-decoration:underline;font-size:inherit}
.exercise-prompt{font-size:11px;color:var(--muted)}.exercise-task{font-size:15px;font-weight:700}
.exercise-options{display:flex;flex-wrap:wrap;gap:6px}.exercise-options .btn{background:none;border:1px solid var(--line);color:var(--ink)}
.exercise-input{display:flex;gap:6px;flex-wrap:wrap}.exercise-input input{flex:1;min-width:140px;border:1px solid var(--line);border-radius:9px;padding:9px;background:var(--paper);color:var(--ink)}
.exercise-feedback.exact,.exercise-feedback.typo{color:var(--green);font-weight:700}.exercise-feedback.wrong{color:var(--red);font-weight:700}
.chat-input textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:#fafbf7;color:var(--ink);font:inherit;outline-color:var(--blue)}body.dark .chat-input textarea{background:var(--paper)}
.chat-input textarea:disabled,.send:disabled{opacity:.6}
@media(max-width:800px){.chat-list-toggle{display:inline-flex}.chat-layout.list-open .chat-history{display:block;position:absolute;inset:0;z-index:5;border-right:0}.chat-layout{position:relative}.chat-main{display:flex}.message{max-width:92%}}
/* Память коуча и расход AI (coach-memory.js), пометка «трудное» (memory.js) */
.coach-memory,.ai-usage{margin-top:18px}.coach-memory-note{color:var(--muted);font-size:13px}
.fact-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.fact-item{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px}
.fact-item span{flex:1;min-width:160px}.fact-input{flex:1;min-width:160px;border:1px solid var(--line);border-radius:9px;padding:9px;background:var(--paper);color:var(--ink)}
.link-button.danger{color:var(--red)}
.usage-total{font-size:15px}.ai-usage h3{font-size:13px;margin:16px 0 8px}
.usage-table-wrap{overflow-x:auto}.usage-table{border-collapse:collapse;font-size:12px;min-width:480px;width:100%}.usage-table th,.usage-table td{padding:7px 8px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.usage-table th:first-child,.usage-table td:first-child{text-align:left}
.memory-trouble{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:8px 0}.memory-trouble small{color:var(--muted);font-size:11px}
.trouble-badge{background:#fdecea;color:#9b2c24;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:800}body.dark .trouble-badge{background:#4a2422;color:#ffd5d1}
/* Правки по скриншоту владельца (27.10.2026) */
/* «Дальше» в мини-упражнении: была белой на белом в тёмной теме */
#chatView .coach-card .coach-next{background:var(--blue);color:#fff;border:0}body.dark #chatView .coach-card .coach-next{background:#3d63d6;color:#fff}
/* Список бесед: зазор между пунктами, подсвечена только активная беседа.
   Старое правило `.chat-history button:first-of-type` (тёмная тема — с !important) красило каждую беседу. */
#chatList{display:grid;gap:8px}
.chat-history .chat-item{border:1px solid transparent;transition:background .15s}
.chat-history .chat-item .chat-open,body.dark .chat-history .chat-item .chat-open{background:none!important;color:inherit!important}
.chat-history .chat-item:not(.active):hover{background:#eef0ea}body.dark .chat-history .chat-item:not(.active):hover{background:#26344d}
.chat-history .chat-item.active{background:#e9efff;border-color:var(--blue)}body.dark .chat-history .chat-item.active{background:#2c4a86;border-color:#6f95ff}
.chat-history .chat-item.active .chat-open{font-weight:800}
/* Высота экрана: чат целиком помещается в окно, у поля ввода виден нижний край */
#chat .chat-layout{height:calc(100vh - 210px);min-height:420px}
#chat .chat-main{padding-bottom:20px}
#chatView .chat-input{align-items:flex-end;margin-top:12px}
#chatView .chat-input textarea{min-height:48px;max-height:160px;height:48px;line-height:1.45;padding:12px 14px}
#chatView .chat-input .send{flex:none;width:48px;height:48px;border-radius:12px;display:grid;place-items:center}
@media(max-width:800px){#chat .chat-layout{height:calc(100dvh - 215px);min-height:360px}}
/* Полосы прокрутки в цвет темы: тонкие, без белой дорожки */
*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}
/* Список бесед не должен ездить вбок: пункт был шире панели (width:100% у всех кнопок .chat-history) */
#chat .chat-history{overflow-x:hidden}
.chat-history .chat-item .chat-open{width:auto;text-align:left}
/* Поле ввода без полосы на одной строке; полоса появляется только у max-height (coach-chat.js fitInput) */
#chatView .chat-input textarea{height:auto;overflow-y:hidden}
/* Сворачиваемое меню (sidebar.js): узкая колонка с иконками, основное окно расширяется */
.brand{position:relative}
.side-toggle{margin-left:auto;width:30px;height:30px;border-radius:9px;background:none;color:var(--muted);display:grid;place-items:center;border:1px solid transparent}
.side-toggle:hover{background:#e9efff;color:var(--blue)}body.dark .side-toggle:hover{background:#24375d;color:#91afff}
.side-toggle svg{width:18px;height:18px;transition:transform .2s}
.side,.main{transition:width .2s,margin-left .2s,padding .2s}
@media(min-width:801px){
body.side-collapsed .side{width:76px;padding-inline:12px}
body.side-collapsed .main{margin-left:76px;max-width:none}
body.side-collapsed .brand{font-size:0;flex-direction:column;gap:12px;padding:0 0 26px;align-items:center}
body.side-collapsed .side-toggle{margin-left:0}
body.side-collapsed .side-toggle svg{transform:rotate(180deg)}
body.side-collapsed .nav button{font-size:0;justify-content:center;padding:11px 0;gap:0}
body.side-collapsed .nav button svg{width:20px;height:20px}
body.side-collapsed .language{justify-content:center;padding:10px 0}
body.side-collapsed .language>*:not(:first-child){display:none}
body.side-collapsed .profile{justify-content:center;padding:7px 0}
body.side-collapsed .profile>*:not(.avatar){display:none}
}
/* «Умная карточка» (+ Слово): видимая граница и тень, чтобы не сливалась с фоном */
.quick-add-overlay{backdrop-filter:blur(3px)}
.quick-add-card{border:1px solid var(--line);box-shadow:0 24px 60px rgba(20,37,62,.25)}
body.dark .quick-add-overlay{background:#060b14b3!important}
body.dark .quick-add-card{background:#1d2940!important;border-color:#3d5170;box-shadow:0 24px 70px rgba(0,0,0,.55)}
/* Варианты перевода в «+ Слово» — переключатели с множественным выбором (translation-picker.js) */
.translation-chip{padding:6px 10px;border-radius:16px;background:#e9efff;color:var(--blue);font-size:11px;font-weight:700;border:1px solid transparent}
.translation-chip.is-selected{background:var(--blue);color:#fff}
.translation-chip.is-selected::before{content:'✓ '}
body.dark .translation-chip{background:#24375d;color:#c7d6ff}body.dark .translation-chip.is-selected{background:#3d63d6;color:#fff;border-color:#6f95ff}
.translation-hint{width:100%;color:var(--muted);font-size:11px}
/* Беседы: «⋯», закреплённые, архив, переименование и контекстное меню (coach-chat.js) */
.chat-history .chat-more{width:28px;flex:none;padding:4px 0;text-align:center;color:var(--muted);font-weight:800;opacity:0;transition:opacity .15s}
.chat-item:hover .chat-more,.chat-item.active .chat-more,.chat-more:focus-visible{opacity:1}
@media(hover:none){.chat-history .chat-more{opacity:1}}
.chat-item.pinned .chat-open::before{content:'📌';font-size:11px;margin-right:6px}
.chat-history .chat-archive-toggle{margin-top:14px;padding:8px 10px;font-size:12px;font-weight:800;color:var(--muted);background:none!important;display:flex;gap:6px;align-items:center}
.chat-archive-toggle::before{content:'▸';transition:transform .15s}.chat-archive-toggle.open::before{transform:rotate(90deg)}
.chat-archive{display:grid;gap:8px;margin-top:6px;opacity:.75}
.chat-rename{width:100%;padding:8px 10px;border:1px solid var(--blue);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit;font-size:12px}
.chat-menu{position:fixed;z-index:60;min-width:200px;padding:6px;border-radius:12px;background:var(--card);border:1px solid var(--line);box-shadow:0 16px 40px rgba(20,37,62,.22);display:grid;gap:2px}
body.dark .chat-menu{background:#1d2940;border-color:#3d5170;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.chat-menu-item{text-align:left;padding:9px 12px;border-radius:8px;background:none;color:var(--ink);font-size:13px;font-weight:600}
.chat-menu-item:hover,.chat-menu-item:focus-visible{background:#e9efff;outline:none}body.dark .chat-menu-item:hover,body.dark .chat-menu-item:focus-visible{background:#2c4a86}
.chat-menu-item.danger{color:var(--red)}
/* Главная и «Прогресс» на настоящих данных (dashboard.js renderRealStats) */
.ring{background:conic-gradient(var(--lime) 0 var(--ring-progress,0%),#edf0e7 var(--ring-progress,0%))}
body.dark .ring{background:conic-gradient(var(--lime) 0 var(--ring-progress,0%),var(--line) var(--ring-progress,0%))}
.progress-soon{color:var(--muted);font-size:13px;line-height:1.6;max-width:640px}
.context-tags-empty{color:var(--muted);background:none!important;padding-left:0!important}

/* Экран «Коуч» (coach-home.js) */
.coach-hero:after{content:none}
.coach-hero h2{font-size:24px;max-width:520px;margin:8px 0 20px}
.coach-hero .btn:disabled{opacity:.7;cursor:default}
.coach-row{display:flex;gap:8px;flex-wrap:wrap}
.coach-ghost{background:none;border:1px solid var(--line);color:var(--ink)}
.coach-hero .coach-ghost{border-color:#ffffff66;color:white}
.coach-error{color:var(--red);font-size:13px;line-height:1.5;margin:10px 0 0}
.coach-hero .coach-error{color:#ffd5d1}
.coach-conflict{margin-top:14px;position:relative}
.coach-conflict p{margin:0 0 10px;font-weight:700;color:inherit}
.topics-section,.coach-resume{grid-column:1/-1;margin-top:7px}
.topics-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.topics-section .text-link,.coach-resume .text-link{color:var(--blue);font-size:13px}
.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-bottom:14px}
.topic-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:8px;align-content:start}
.topic-card.archived{opacity:.75}
.topic-head{display:flex;gap:6px;align-items:flex-start}
.topic-open{flex:1;min-width:0;text-align:left;background:none;color:var(--ink);font-size:16px;font-weight:800;padding:2px 0;overflow-wrap:anywhere}
.topic-open:hover{color:var(--blue)}
.topic-rename{flex:1;min-width:0;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink)}
.topic-more{background:none;color:var(--muted);font-size:20px;line-height:1;padding:4px 8px;border-radius:8px}
.topic-more:hover,.topic-more:focus-visible{background:var(--paper);color:var(--ink)}
.topic-meta{color:var(--muted);font-size:13px}
.topic-bar{height:6px;border-radius:6px;background:#edf0e7;overflow:hidden}
.topic-bar span{display:block;height:100%;background:var(--green);border-radius:inherit}
body.dark .topic-bar{background:var(--line)}
.topic-lesson{justify-self:start;font-size:13px;padding:9px 14px}
.topic-lesson:disabled{opacity:.6;cursor:default}
.topic-confirm{margin:0;font-weight:700;line-height:1.5}
.topic-danger{background:var(--red);color:#14253e}
.topic-card-new{border-style:dashed}
.topic-card-new.big{padding:24px}
.topic-form{display:grid;gap:10px}
.topic-form label{display:grid;gap:6px;font-size:13px;font-weight:700}
.topic-form input{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);min-width:0}
.topic-new{justify-self:start}
.topic-suggest{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:8px 12px;border-radius:999px;background:var(--paper);border:1px solid var(--line);color:var(--ink);font-size:13px;font-weight:700}
.chip:hover,.chip:focus-visible{border-color:var(--blue);color:var(--blue)}
.coach-resume{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin-top:6px}
.coach-resume[hidden]{display:none}
.resume-text{min-width:0;flex:1}
.resume-open{display:block;width:100%;text-align:left;background:none;color:var(--ink);padding:4px 0 0}
.resume-open b{display:block}
.resume-open span{display:block;color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.coach-hero .btn:focus-visible,.topic-card button:focus-visible,.resume-open:focus-visible,.chip:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(max-width:800px){
  .coach-hero h2{font-size:21px}
  .topics-section,.coach-resume{margin-top:22px}
  .coach-resume{margin-top:15px}
  .topic-grid{grid-template-columns:1fr}
  .coach-hero .btn{width:100%}
  .coach-conflict .btn{flex:1}
}

.lesson-bar{padding:10px 14px;margin-bottom:10px;border-radius:12px;background:#e9efff;border:1px solid var(--blue);color:var(--ink)}body.dark .lesson-bar{background:#263b60;border-color:#6f95ff}
.lesson-bar-row{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap}.lesson-bar-title{font-size:13px;font-weight:800}
.lesson-bar-actions{display:flex;gap:8px;flex-wrap:wrap}.lesson-bar-actions .btn{font-size:12px;padding:8px 12px}.lesson-bar-actions .btn:not(.btn-primary){background:none;border:1px solid var(--line);color:var(--ink)}
.lesson-bar .coach-error{margin:8px 0 0}.lesson-bar-note{margin:6px 0 0;font-size:12px;color:var(--muted)}
.chat-open .topic-icon{width:13px;height:13px;vertical-align:-2px;margin-right:4px;opacity:.7}
.chat-menu-item{white-space:normal;max-width:260px}
/* Правки по скриншоту владельца (27.10.2026, урок): колонка сетки без шаблона растягивалась по длинному названию беседы
   (nowrap), и активный пункт и «Архив» уходили за правый край панели */
#chatList,.chat-archive{grid-template-columns:minmax(0,1fr)}
/* Пример под словом в карточке «Добавить слова» был 11px — мелко */
.main .proposal-words small{font-size:14px;line-height:1.5;margin-top:2px}
/* Правки по скриншоту владельца (27.10.2026, главная): у «Урок по теме» и «+ Новая тема» не было своего фона —
   браузер подставлял светло-серый, а в тёмной теме текст тоже светлый и пропадал */
.topic-lesson{background:#e9efff;color:var(--blue);border:1px solid transparent;display:inline-flex;align-items:center;gap:6px}
.topic-lesson:not(:disabled):hover{background:var(--blue);color:#fff}
body.dark .topic-lesson{background:#263b60;color:#dbe7ff;border-color:#3d5a8f}
body.dark .topic-lesson:not(:disabled):hover{background:#3d63d6;color:#fff;border-color:#3d63d6}
.topic-new{background:var(--blue);color:#fff}
.topic-new:hover{filter:brightness(1.08);transform:translateY(-1px)}
body.dark .topic-new{background:#3d63d6;color:#fff}
/* Кнопка .btn без своего фона брала браузерный светло-серый (в тёмной теме — светлый текст на светлом).
   :where() даёт нулевую специфичность: любое правило с фоном (btn-primary и др.) по-прежнему побеждает */
:where(.btn){background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
/* Главная: блок коуча был растянут по высоте соседней карточки — теперь по своему содержимому */
#home .dashboard{align-items:start}
#home .coach-hero{min-height:0}
/* Голос в беседе (coach-chat.js, voice.js): микрофон и язык диктовки у поля ввода, 🔊 у ответа, автоозвучка в шапке */
#chat .topbar{gap:12px}
.chat-head-actions{display:flex;gap:8px;align-items:center}
.voice-auto{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--muted);font-size:13px;font-weight:700}
.voice-auto[hidden],#chatView .mic[hidden],#chatView .dictation-lang[hidden]{display:none}
.voice-auto svg{width:16px;height:16px}
.voice-auto:hover{color:var(--ink);border-color:var(--blue)}
.voice-auto.on{background:#e9efff;color:var(--blue);border-color:var(--blue)}
body.dark .voice-auto{background:#202c40}body.dark .voice-auto.on{background:#263b60;color:#dbe7ff;border-color:#6f95ff}
#chatView .chat-input .mic{flex:none;width:48px;height:48px;border-radius:12px;display:grid;place-items:center;padding:0;background:var(--card);border:1px solid var(--line);color:var(--ink)}
#chatView .chat-input .mic svg{width:20px;height:20px}
#chatView .chat-input .mic:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}
#chatView .chat-input .mic:disabled{opacity:.45;cursor:default}
#chatView .chat-input .mic.recording{background:var(--red);border-color:var(--red);color:#fff;animation:mic-pulse 1.4s ease-out infinite}
body.dark #chatView .chat-input .mic{background:#202c40}body.dark #chatView .chat-input .mic.recording{background:#d9534f;border-color:#d9534f}
#chatView .chat-input .dictation-lang{flex:none;align-self:center;min-width:38px;height:30px;padding:0 8px;border-radius:8px;background:none;border:1px solid var(--line);color:var(--muted);font:700 12px 'DM Mono',monospace}
#chatView .chat-input .dictation-lang:hover{color:var(--ink);border-color:var(--blue)}
@keyframes mic-pulse{0%{box-shadow:0 0 0 0 rgba(228,123,117,.55)}100%{box-shadow:0 0 0 12px rgba(228,123,117,0)}}
@media(prefers-reduced-motion:reduce){#chatView .chat-input .mic.recording{animation:none}}
.message.bot{position:relative}
.message.bot:has(.msg-speak) .coach-text{padding-right:30px}
.msg-speak{position:absolute;top:8px;right:8px;width:28px;height:28px;padding:0;border-radius:8px;display:grid;place-items:center;background:none;color:var(--muted);opacity:.6;transition:opacity .15s,background .15s}
.msg-speak svg{width:16px;height:16px}
.message.bot:hover .msg-speak,.msg-speak:focus-visible,.msg-speak.speaking{opacity:1}
.msg-speak:hover{background:#00000010;color:var(--ink)}body.dark .msg-speak:hover{background:#ffffff14}
.msg-speak.speaking{color:var(--blue);background:#e9efff}body.dark .msg-speak.speaking{color:#dbe7ff;background:#263b60}
@media(hover:none){.msg-speak{opacity:1}}
@media(max-width:800px){.voice-auto span{display:none}.voice-auto{padding:9px}#chatView .chat-input .dictation-lang{min-width:34px;padding:0 5px}}
/* Напоминания (pwa.js): окно за колокольчиком на главной */
.reminders-overlay{position:fixed;inset:0;z-index:46;display:grid;place-items:center;padding:20px;background:#14253e99;backdrop-filter:blur(3px)}
body.dark .reminders-overlay{background:#060b14b3}
.reminders-card{width:min(100%,440px);background:var(--card);color:var(--ink);padding:23px;border-radius:20px;border:1px solid var(--line);box-shadow:0 24px 60px rgba(20,37,62,.25);display:grid;gap:12px}
body.dark .reminders-card{background:#1d2940;border-color:#3d5170;box-shadow:0 24px 70px rgba(0,0,0,.55)}
.reminders-card h2{margin:0;font:700 26px 'Playfair Display',serif}
.reminders-card .eyebrow{margin-bottom:-6px}
.reminders-hint{margin:0;color:var(--muted);font-size:14px;line-height:1.5}
.reminders-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-top:1px solid var(--line);cursor:pointer}
.reminders-row b{display:block;font-size:15px}.reminders-row small{display:block;color:var(--muted);font-size:12.5px}
.reminders-row input[type=time]{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:600 15px Manrope,sans-serif}
.reminders-switch{appearance:none;flex:none;width:46px;height:28px;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background .2s}
.reminders-switch::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s}
.reminders-switch:checked{background:var(--green)}.reminders-switch:checked::after{transform:translateX(18px)}
.reminders-switch:disabled{opacity:.5;cursor:default}
.reminders-switch:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.reminders-device{margin:0;font-size:14px;color:var(--muted)}.reminders-device.ok{color:var(--green);font-weight:700}
.reminders-block{margin:0;padding:12px 14px;border-radius:12px;background:#fff6e6;color:#8a5212;font-size:14px;line-height:1.5}
body.dark .reminders-block{background:#3d311b;color:#ffd08c}
.reminders-message{margin:0;font-size:14px;color:var(--green);font-weight:700}.reminders-message.error{color:var(--red)}
.reminders-card .btn{justify-self:start}
/* Колокольчик нужен и на телефоне: там остальные .icon-btn в шапке скрыты */
@media(max-width:800px){.top-actions .reminder-btn{display:grid}}
/* Приложение на экране «Домой» (iOS, black-translucent): контент не под «чёлкой», меню над полоской «Домой» */
.mobile-nav{padding-bottom:calc(7px + env(safe-area-inset-bottom));height:calc(66px + env(safe-area-inset-bottom))}
@media(max-width:800px){.main{padding-top:calc(22px + env(safe-area-inset-top));padding-bottom:calc(86px + env(safe-area-inset-bottom))}}
/* Отзывы (feedback.js) и плашка «Вышло обновление» (pwa.js) */
.feedback-page{max-width:820px}
.feedback-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px 22px;margin-bottom:16px;display:grid;gap:12px}
.feedback-card .section-title{margin:0}
.feedback-hint{margin:0;color:var(--muted);font-size:14px;line-height:1.5}
.feedback-form{display:grid;gap:10px}
.feedback-form textarea{min-height:110px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font:15px/1.5 Manrope,sans-serif;resize:vertical}
.feedback-form .btn{justify-self:start}
.feedback-message{margin:0;font-size:14px;font-weight:700;color:var(--green)}.feedback-message.error{color:var(--red)}
.feedback-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.feedback-item{border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:grid;gap:6px;justify-items:start}
.feedback-text{margin:0;font-size:15px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;justify-self:stretch}
.feedback-meta{color:var(--muted);font-size:12.5px}.feedback-meta.small{font-size:11px;opacity:.8;overflow-wrap:anywhere}
.feedback-note{margin:2px 0 0;padding:8px 10px;border-radius:10px;background:#e9efff;color:var(--ink);font-size:14px;justify-self:stretch}
body.dark .feedback-note{background:#263b60}
.feedback-status{font-size:11.5px;font-weight:800;padding:3px 8px;border-radius:999px;background:var(--paper);border:1px solid var(--line);color:var(--muted)}
/* Цвет статуса: новое — оранжевый, в работе — синий, исправлено — зелёный, отклонено — красный.
   Тот же цвет у кнопок владельца, которые ставят этот статус. */
.feedback-status.new{color:#9a5a10;background:#fff3e2;border-color:var(--orange)}body.dark .feedback-status.new{color:#ffd9a3;background:#4a3417}
.feedback-status.in_progress{color:var(--blue);background:#e9efff;border-color:var(--blue)}body.dark .feedback-status.in_progress{color:#dbe7ff;background:#263b60}
.feedback-status.done{color:#1f6b45;background:#e5f6ec;border-color:var(--green)}body.dark .feedback-status.done{color:#bcf0d2;background:#1d4a3a}
.feedback-status.declined{color:#a8322b;background:#fdecea;border-color:var(--red)}body.dark .feedback-status.declined{color:#ffc9c5;background:#4d2224}
.feedback-actions .btn.new{color:#9a5a10;border:1px solid var(--orange)}.feedback-actions .btn.in_progress{color:var(--blue);border:1px solid var(--blue)}.feedback-actions .btn.done{color:#1f6b45;border:1px solid var(--green)}.feedback-actions .btn.declined{color:#a8322b;border:1px solid var(--red)}
body.dark .feedback-actions .btn.new{color:#ffd9a3}body.dark .feedback-actions .btn.done{color:#bcf0d2}body.dark .feedback-actions .btn.declined{color:#ffc9c5}
.feedback-filters{display:flex;gap:6px;flex-wrap:wrap}
.feedback-filters .chip.active{border-color:var(--blue);color:var(--blue);background:#e9efff}body.dark .feedback-filters .chip.active{background:#263b60;color:#dbe7ff}
.feedback-admin{display:grid;gap:8px;justify-self:stretch;margin-top:4px}
.feedback-note-input{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:14px Manrope,sans-serif}
.feedback-actions{display:flex;gap:6px;flex-wrap:wrap}.feedback-actions .btn{font-size:13px;padding:7px 11px}
.update-banner{position:fixed;left:50%;top:calc(14px + env(safe-area-inset-top));transform:translateX(-50%);z-index:70;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 16px;border-radius:14px;background:var(--card);color:var(--ink);border:1px solid var(--blue);box-shadow:0 16px 40px rgba(20,37,62,.25);font-weight:700;animation:recall-in .25s ease-out;max-width:calc(100% - 32px)}
.update-banner .btn{padding:8px 14px}
body.dark .update-banner{background:#1d2940;box-shadow:0 18px 50px rgba(0,0,0,.55)}
@media(max-width:800px){.top-actions .feedback-btn{display:grid}}
.feedback-chips{display:flex;gap:6px;flex-wrap:wrap}
.feedback-agent{font-size:11.5px;font-weight:800;padding:3px 8px;border-radius:999px;background:#eeeaff;color:var(--purple)}body.dark .feedback-agent{background:#29254a;color:#d6ceff}

/* Семья: доска, карточка участника, выбор «Кто занимается?». Токены — из today.css, тёмная тема через них же. */
.fam-av{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:16px;color:#fff;background:#3d6fd9}
.fam-c1{background:#c2487a}.fam-c2{background:#2a8a5c}.fam-c3{background:#b86a12}.fam-c4{background:#7a55c9}
.fam-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.fam-row{width:100%;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;background:var(--surface);color:var(--text);text-align:left;box-shadow:0 1px 2px rgba(22,24,29,.06)}
button.fam-row-open{border:0;cursor:pointer}
button.fam-row-open:hover{background:var(--surface-2)}
.fam-meta{flex:1;min-width:0;display:flex;flex-direction:column}
.fam-meta b{font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fam-meta small{font-size:13px;color:var(--text-muted)}
.fam-ok{font-size:13px;font-weight:600;color:var(--ok);white-space:nowrap}
.fam-no{font-size:13px;color:var(--text-muted);white-space:nowrap}
.fam-note{margin:12px 0 0;font-size:13px;color:var(--text-muted)}
.fam-actions{margin-top:20px}
.fam-error{margin:8px 0 0;font-size:14px;color:var(--risk-text)}
.fam-card{max-height:calc(100vh - 32px);overflow:auto}
.fam-card-head{display:flex;align-items:center;gap:12px;padding-right:44px}
.fam-block{display:flex;flex-direction:column;gap:4px;font-size:15px}
.fam-label{font-size:12px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--text-muted)}
.fam-bar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.fam-bar i{display:block;height:100%;border-radius:3px;background:var(--accent)}
.fam-sub{font-size:13px;color:var(--text-muted)}
.fam-chips{display:flex;flex-wrap:wrap;gap:6px}
.fam-chip{padding:5px 11px;border-radius:14px;background:var(--accent-soft);color:var(--text);font-size:14px}
.fam-field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600}
.fam-field input{height:44px;padding:0 12px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);color:var(--text);font-size:15px;font-weight:400}
.fam-inline{display:flex;align-items:flex-end;gap:8px;margin-top:12px}.fam-inline .fam-field{flex:1}.fam-inline button{height:44px}
#familyNew .fam-field{margin-top:12px}#familyNew .fam-label{margin-top:16px}.fam-actions{display:flex;gap:8px;flex-wrap:wrap}
.fam-field select{height:44px;padding:0 12px;border:1px solid var(--rule);border-radius:12px;background:var(--surface);color:var(--text);font-size:15px}
.fam-check{display:flex;align-items:center;gap:8px;font-size:15px;margin-top:6px}.ui-modal-card .fam-check input{width:20px;height:20px;min-height:0;padding:0;flex:none;margin:0}
.who-card{display:flex;flex-direction:column;gap:12px}
.who-list{display:flex;flex-direction:column;gap:10px}
.who-member{display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 14px;border-radius:16px;background:var(--surface-2);color:var(--text);text-align:left;font-size:17px;font-weight:600}
.who-member:hover:not(:disabled){outline:2px solid var(--accent)}
.who-name{flex:1}
.who-tag{padding:3px 10px;border-radius:12px;background:var(--accent-soft);color:var(--text);font-size:12px;font-weight:600}
.family-link{margin-top:16px;border:0}
/* 💬 и окно Лингарика (coach-sheet.js) */
.coach-fab{position:fixed;right:16px;bottom:calc(66px + env(safe-area-inset-bottom) + 12px);z-index:44;width:52px;height:52px;border-radius:50%;background:var(--blue);color:#fff;font-size:24px;line-height:1;display:grid;place-items:center;box-shadow:0 8px 24px rgba(20,37,62,.28)}
.coach-fab[hidden],.coach-sheet[hidden]{display:none!important}
.coach-fab.is-open{visibility:hidden}
.coach-fab:focus-visible,.coach-sheet button:focus-visible{outline:3px solid var(--lime);outline-offset:2px}
body:has(.auth-gate) .coach-fab{display:none}
.coach-sheet{position:fixed;left:0;right:0;bottom:0;height:90dvh;z-index:45;display:flex;flex-direction:column;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:20px 20px 0 0;box-shadow:0 -12px 40px rgba(20,37,62,.25);padding-bottom:env(safe-area-inset-bottom)}
.coach-sheet-grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:8px auto 0;flex:none}
.coach-sheet-head{display:flex;align-items:center;gap:10px;padding:8px 14px 10px;flex:none}
.coach-sheet-head b{font-size:16px;margin-right:auto}
.coach-sheet-open{background:none;color:var(--blue);font-weight:700;font-size:13px;padding:8px 6px;min-height:44px}
.coach-sheet-close{background:none;color:var(--ink);font-size:18px;width:44px;height:44px;border-radius:50%}
.coach-sheet-note{margin:0 14px 8px;padding:10px 12px;border-radius:10px;background:#f0effe;color:#3f3b68;font-size:13px}
.coach-sheet-host{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 14px 14px}
.coach-sheet-host .chat-view{flex:1;min-height:0}
.coach-sheet-host .messages{display:flex;flex-direction:column;gap:10px;overflow:auto}
.coach-sheet-host .message{max-width:92%}
.coach-sheet-host .message.user{align-self:flex-end}
body.dark .coach-sheet-note{background:#29254a;color:#e5e0ff}
@media(min-width:801px){.coach-fab{bottom:24px;right:24px}}
@media(min-width:900px){.coach-sheet{left:auto;right:24px;bottom:24px;width:400px;height:min(600px,calc(100dvh - 48px));border-radius:20px}.coach-sheet-grab{display:none}}
/* на телефоне 💬 стоит над нижней панелью: добавляем низ странице, чтобы последние кнопки (оценка слова и др.) можно было прокрутить выше кнопки */
@media(max-width:800px){body:has(.coach-fab:not([hidden])) .main{padding-bottom:calc(66px + env(safe-area-inset-bottom) + 12px + 52px + 24px)}}
