/* Русский ЯЗЫК УЧИТЕЛЬ */

/* Токены светлая тема */
:root{
  --bg-primary:#f2f4f2;
  --bg-secondary:#ffffff;
  --bg-card:#ffffff;
  --text-primary:#20261f;
  --text-secondary:#5c6a5e;
  --border-color:#dde4dc;
  --accent:rgb(18,120,7);
  --accent-hover:rgb(14,96,6);
  --accent-light:rgba(18,120,7,.08);
  --on-accent:#ffffff;
  --icon-bg:rgba(18,120,7,.1);
  --type-bg:#e9f2ea;
  --type-text:#127807;
  --accent-wash:rgba(18,120,7,.25);
  --accent-wash-soft:rgba(18,120,7,.10);
  --type-test-bg:#eef0ee;
  --type-test-text:#4c554d;
  --btn-bg:#ffffff;
  --btn-border:#cbd4cc;
  --btn-hover:#f0f4ef;
  --danger:#b3261e;
  --danger-bg:#fbeceb;
  --danger-hover:#97201a;

  /* Старые переменные алиасы */
  --ink:var(--text-primary);
  --paper:var(--bg-secondary);
  --gray-1:#f2f4f2;
  --gray-2:#dfe4df;
  --gray-3:#9aa59c;
  --gray-4:var(--text-secondary);
  --line:var(--border-color);
  --ok:var(--accent);
  --bad:var(--danger);
  --radius:6px;
  --t:.3s cubic-bezier(.4,0,.2,1);

  --font-main:'Segoe UI',system-ui,-apple-system,'Helvetica Neue',Roboto,Arial,sans-serif;
}

/* Токены тёмная тема */
[data-theme="dark"]{
  --bg-primary:#12161c;
  --bg-secondary:#1b242e;
  --bg-card:#1b242e;
  --text-primary:#edf2ef;
  --text-secondary:#b8c5bd;
  --border-color:#35404c;
  --accent:#3da52c;
  --accent-hover:#48b835;
  --accent-light:rgba(61,165,44,.14);
  --on-accent:#0c1a08;
  --icon-bg:rgba(61,165,44,.16);
  --type-bg:rgba(61,165,44,.16);
  --type-text:#74dd5f;
  --accent-wash:rgba(61,165,44,.25);
  --accent-wash-soft:rgba(61,165,44,.10);
  --type-test-bg:#26303a;
  --type-test-text:#ccd7d0;
  --btn-bg:#1b242e;
  --btn-border:#4a5868;
  --btn-hover:#24303b;
  --danger:#f08a76;
  --danger-bg:#3d1714;
  --danger-hover:#ff957f;

  --ink:var(--text-primary);
  --paper:var(--bg-secondary);
  --gray-1:#232d37;
  --gray-2:#2e3a46;
  --gray-3:#8b9a90;
  --gray-4:var(--text-secondary);
  --line:var(--border-color);
  --ok:var(--accent);
  --bad:var(--danger);
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:var(--font-main);
  background:var(--bg-primary);
  color:var(--text-primary);
  line-height:1.5;
  min-height:100dvh;
  display:flex;flex-direction:column;
  padding:env(safe-area-inset-top) env(safe-area-inset-right)
          env(safe-area-inset-bottom) env(safe-area-inset-left);
  transition:background-color .3s, color .3s;
}

/* Шапка */
.header{
  background:var(--bg-secondary);
  border-bottom:1px solid var(--border-color);
}
.header-top{
  max-width:1100px;margin:0 auto;
  padding:28px 24px 16px;
  display:flex;align-items:center;gap:16px;
}
.logo{
  width:48px;height:48px;flex:0 0 48px;
  border-radius:12px;
  background:var(--accent);color:var(--on-accent);
  display:grid;place-items:center;
  font-weight:800;font-size:1.15rem;
  letter-spacing:.03em;
  font-family:var(--font-main);
  box-shadow:0 4px 12px var(--accent-wash);
}
.header-text{flex:1;min-width:0}
.header-title{
  font-size:1.12rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;
}
.header-subtitle{
  font-size:.8rem;color:var(--text-secondary);
  margin-top:2px;
}

/* Навигация */
.nav{
  max-width:1100px;margin:0 auto;
  display:flex;gap:4px;padding:2px 24px 0;
  overflow-x:auto;
  scrollbar-width:none;
}
.nav::-webkit-scrollbar{display:none}
.nav-item{
  flex:0 0 auto;
  padding:12px 16px;
  font-size:.8rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.06em;
  color:var(--text-secondary);
  text-decoration:none;white-space:nowrap;
  border-bottom:2px solid transparent;
  transition:color .2s, background-color .2s;
}
.nav-item:hover{color:var(--accent);background:var(--accent-light)}
.nav-item.active{color:var(--accent);border-bottom-color:var(--accent)}

/* Контент */
.container{
  flex:1;
  max-width:1100px;width:100%;margin:0 auto;
  padding:32px 24px 80px;
}

.section{
  background:var(--bg-card);
  border:1px solid var(--border-color);
  border-radius:14px;
  padding:24px;
  margin-bottom:20px;
}
.section-header{
  display:flex;align-items:center;gap:12px;
  margin-bottom:20px;
}
.section-icon{
  width:38px;height:38px;flex:0 0 38px;
  border-radius:10px;
  background:var(--icon-bg);color:var(--accent);
  display:grid;place-items:center;
  font-size:1.1rem;
}
.section-title{
  font-size:1rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;
}
.section-header .count{
  font-size:.8rem;color:var(--text-secondary);
  text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;
  margin-left:auto;
}

/* Карточка задания */
.task-card{
  border:1px solid var(--border-color);
  border-radius:12px;
  background:var(--bg-secondary);
  padding:20px;
  margin-bottom:14px;
  transition:border-color .2s, box-shadow .2s;
}
.task-card:hover{
  border-color:var(--accent);
  box-shadow:0 4px 16px rgba(0,0,0,.06);
}
[data-theme="dark"] .task-card:hover{
  box-shadow:0 4px 16px rgba(0,0,0,.4);
}
.task-header{
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:12px;flex-wrap:wrap;
}
.task-title{font-size:1.02rem;font-weight:700}
.task-tags{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.task-type{
  font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  padding:4px 10px;border-radius:999px;white-space:nowrap;
  background:var(--type-bg);color:var(--type-text);
}
.task-type.test{background:var(--type-test-bg);color:var(--type-test-text)}
.task-state{
  font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  padding:4px 10px;border-radius:999px;white-space:nowrap;
}
.task-state.active{background:var(--accent-light);color:var(--accent)}
.task-state.soon{background:#fff3d6;color:#92610a}
.task-state.closed{background:var(--danger-bg);color:var(--danger)}
.task-state.hidden{background:var(--gray-1);color:var(--gray-3)}
.task-state.neutral{background:var(--gray-1);color:var(--gray-3)}
[data-theme="dark"] .task-state.soon{background:#3a2e12;color:#f0c05a}

/* Карточка ученика */
/* Попытки одного задания */
.task-group{
  border:1px solid var(--gray-2);border-radius:12px;
  background:var(--card-bg);margin-bottom:12px;overflow:hidden;
}
.task-group-head{
  display:flex;justify-content:space-between;align-items:center;
  gap:12px;flex-wrap:wrap;padding:14px 16px 6px;
}
.task-group-head .task-title{font-weight:700;font-size:.98rem}
.task-group>.result-meta{
  display:block;padding:0 16px 12px;
  font-size:.8rem;color:var(--text-secondary);
}
.attempts-list{padding:0 12px 12px}
.attempt-item{
  margin-bottom:8px;
  background:var(--gray-1);
  border-color:var(--gray-1);
}
.attempt-item:last-child{margin-bottom:0}

.result-item{border:1px solid var(--gray-2);border-radius:12px;margin-bottom:10px;background:var(--card-bg)}
.result-item summary{
  display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  padding:14px 16px;cursor:pointer;list-style:none;
}
.result-item summary::-webkit-details-marker{display:none}
.result-item .result-meta{font-size:.8rem;color:var(--text-secondary);white-space:nowrap}
.result-item .answers-body{padding:0 16px 16px;border-top:1px solid var(--gray-1)}
.ans-table td,.ans-table th{
  padding:8px 10px;border:1px solid var(--gray-2);font-size:.82rem;vertical-align:top;
}
.ans-table th{background:var(--gray-1);font-weight:700}
.fio-link{color:var(--accent);text-decoration:none;font-weight:700}
.fio-link:hover{text-decoration:underline}
.fio-link:visited{color:var(--accent)}
.btn-sm{display:inline-block;padding:6px 12px;font-size:.78rem;border-radius:8px}
.btn-answers{background:var(--gray-1);color:var(--text)}
.btn-answers:hover{background:var(--accent-light);color:var(--accent)}
.task-meta{font-size:.78rem;color:var(--text-secondary);margin-top:10px}
.task-description{font-size:.88rem;color:var(--text-secondary);margin-top:10px;line-height:1.55}
.task-desc{font-size:.85rem;color:var(--text-secondary);margin:0 0 10px}
.task-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}

.create-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:16px;
  border:2px dashed var(--btn-border);border-radius:12px;
  background:transparent;color:var(--accent);
  font-family:inherit;font-size:.9rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.08em;
  cursor:pointer;transition:border-color .2s, background-color .2s;
}
.create-btn:hover{background:var(--accent-light);border-color:var(--accent)}

/* Кнопки */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 20px;
  border:1px solid var(--btn-border);border-radius:8px;
  background:var(--btn-bg);color:var(--text-primary);
  font-family:inherit;font-size:.8rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;
  cursor:pointer;transition:background-color .2s, border-color .2s, color .2s;
  text-decoration:none;text-align:center;
}
.btn:hover{background:var(--btn-hover);border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}
.btn.danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}
.btn.danger:hover{background:var(--danger-hover);border-color:var(--danger-hover);color:var(--on-accent)}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.toolbar .btn{width:auto;padding:10px 16px;font-size:.8rem}

/* Формы */
.form-row{margin-bottom:18px}
.form-row label{
  display:block;font-size:.78rem;
  text-transform:uppercase;letter-spacing:.05em;
  color:var(--text-secondary);margin-bottom:8px;font-weight:600;
}
.form-row label input[type="checkbox"]{vertical-align:middle}
.form-row input[type="checkbox"],
.form-row input[type="radio"]{width:auto;flex:0 0 auto;accent-color:var(--accent);margin-right:4px}
.form-row input,
.form-row select,
.form-row textarea{
  width:100%;padding:12px 14px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:inherit;font-size:.95rem;
  outline:none;transition:border-color .15s;
}
.form-row input:focus,
.form-row select:focus,
.form-row textarea:focus{border-color:var(--accent)}
.form-row textarea{min-height:80px;resize:vertical}
.form-row small{display:block;color:var(--text-secondary);font-size:.75rem;margin-top:6px}

/* Переключатель Тест Опрос */
.kind-toggle{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}
.kind-tile{
  display:block;border:1.5px solid var(--border-color);border-radius:10px;
  padding:10px 12px;cursor:pointer;font-size:.95rem;
  color:var(--text-primary);background:var(--bg-secondary);
  transition:border-color .2s, background-color .2s;
}
.kind-tile small{display:block;color:var(--text-secondary);font-size:.75rem;margin-top:2px}
.kind-tile:has(input:checked){
  border-color:var(--accent);background:var(--accent-light);
}
.kind-tile input{display:none}

/* Блок вопроса конструктор */
.q-block{
  border:1px solid var(--border-color);border-radius:12px;
  padding:18px;margin-bottom:14px;
  background:var(--gray-1);
}
.q-block h4{
  font-size:.9rem;margin-bottom:12px;
  display:flex;justify-content:space-between;align-items:center;
  text-transform:uppercase;letter-spacing:.04em;
  line-height:1.4;
}
.q-block .remove{
  border:none;background:none;color:var(--danger);
  cursor:pointer;font-size:.78rem;text-transform:uppercase;
}
.opts-label{font-weight:600}
.opts{margin-top:4px}
.opt-row{display:flex;gap:10px;margin-bottom:10px;align-items:center}
.opt-row input[type="text"]{flex:1}
.opt-row input[type="radio"]{width:20px;height:20px;accent-color:var(--accent);flex:0 0 20px;cursor:pointer}
.opt-row .del{
  border:1px solid var(--border-color);background:var(--bg-secondary);
  width:34px;height:34px;cursor:pointer;font-size:1rem;border-radius:6px;
  color:var(--text-primary);transition:border-color .2s, color .2s;
}
.opt-row .del:hover{border-color:var(--danger);color:var(--danger)}
.add-opt{width:auto}

/* Аудитория */
.audience-box{
  border:1px dashed var(--border-color);border-radius:10px;
  padding:12px;margin-top:8px;
  background:var(--bg-secondary);display:none;
}
.audience-box.show{display:block}
.audience-box label{display:block;margin-bottom:6px;font-size:.85rem}
.audience-box input[type="checkbox"]{margin-right:6px}

/* Чекбоксы плитки классы */
.check-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill, minmax(90px, 1fr));
  gap:8px;
  margin-top:4px;
}
.check-tile{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:10px 12px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);
  cursor:pointer;transition:border-color .2s, background-color .2s, color .2s;
  user-select:none;font-size:.9rem;font-weight:700;
}
.check-tile:hover{border-color:var(--accent)}
.check-tile:has(input:checked){
  border-color:var(--accent);background:var(--accent);color:var(--on-accent);
}

/* Чекбоксы строки */
.check-row{
  display:flex;align-items:center;gap:10px;
  padding:9px 12px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);
  cursor:pointer;transition:border-color .2s, background-color .2s;
  margin-bottom:8px;user-select:none;font-size:.9rem;
}
.check-row:hover{border-color:var(--accent)}
.check-row input[type="checkbox"]{margin:0}
/* Внутри form row */
.form-row label.check-row{
  display:flex;align-items:center;gap:10px;
  margin-bottom:8px;font-weight:400;text-transform:none;letter-spacing:normal;
  color:var(--text-primary);font-size:.9rem;
}
/* Ссылки статьи базы */
.start-kb-title{
  margin:0 0 8px;font-size:.8rem;text-transform:uppercase;
  letter-spacing:.05em;color:var(--gray-4);
}
.start-kb-link{
  display:block;width:100%;text-align:left;
  padding:8px 12px;margin-bottom:6px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);color:var(--accent);
  text-decoration:none;font-size:.9rem;font-weight:600;
  font-family:inherit;cursor:pointer;transition:var(--t);
}
.start-kb-link:hover{border-color:var(--accent);background:var(--bg-hover)}

/* Выбранные статьи базы */
.kb-chip{
  display:inline-flex;align-items:center;gap:6px;
  margin:0 8px 8px 0;padding:6px 8px 6px 12px;
  border:1.5px solid var(--accent);border-radius:999px;
  background:var(--bg-secondary);font-size:.85rem;
}
.kb-chip a{color:var(--accent);text-decoration:none;font-weight:600}
.kb-chip a:hover{text-decoration:underline}
.kb-chip button{
  border:none;background:transparent;cursor:pointer;
  color:var(--text-secondary);font-size:1.1rem;line-height:1;
  padding:0 2px;
}
.kb-chip button:hover{color:var(--danger)}
.check-row span{flex:1;line-height:1.3}
.check-row:has(input[type="checkbox"]:checked){
  border-color:var(--accent);background:var(--accent-light);
}

/* Карточка ЗАГОЛОВОК простая */
.card{
  border:1px solid var(--border-color);border-radius:12px;
  background:var(--bg-card);
  padding:24px;margin-bottom:18px;
}
.q-head{
  display:flex;align-items:center;gap:12px;
  margin-bottom:18px;padding-bottom:14px;
  border-bottom:1px dashed var(--border-color);
}
.q-num{
  flex:0 0 34px;height:34px;
  display:grid;place-items:center;
  border:1.5px solid var(--border-color);border-radius:8px;
  font-weight:700;font-size:.9rem;color:var(--accent);
}
.q-text{font-size:1rem;font-weight:700;line-height:1.4}

/* Результат ПОДСКАЗКА */
.result{
  text-align:center;font-weight:700;
  padding:12px;border:1px solid var(--border-color);border-radius:8px;
  margin-top:16px;opacity:0;transform:translateY(6px);
  transition:var(--t);font-size:.9rem;
}
.result.show{opacity:1;transform:translateY(0)}
.result.ok{color:var(--ok);border-color:var(--ok);background:var(--accent-light)}
.result.bad{color:var(--bad);border-color:var(--bad);background:var(--danger-bg)}
.hint{color:var(--text-secondary);font-size:.78rem;text-align:center;margin-top:12px;font-style:italic}

/* Тост */
.toast{
  position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(20px);
  padding:14px 22px;background:var(--text-primary);color:var(--bg-secondary);
  /* Меньше скругление сообщение */
  border-radius:6px;font-size:.9rem;opacity:0;pointer-events:none;
  transition:var(--t);z-index:100;box-shadow:0 8px 24px rgba(0,0,0,.16);
  max-width:min(560px,92vw);text-align:center;line-height:1.45;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{background:var(--ok);color:var(--on-accent)}
.toast.bad{background:var(--bad);color:var(--on-accent)}

/* Своё окно подтверждения */
.modal-overlay{
  position:fixed;inset:0;z-index:100;
  display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(0,0,0,.55);
  animation:modalFade .12s ease-out;
}
.modal-box{
  width:100%;max-width:440px;
  background:var(--bg-secondary);
  border:1px solid var(--border-color);border-radius:14px;
  box-shadow:0 18px 50px rgba(0,0,0,.45);
  padding:20px 22px;
  animation:modalPop .14s ease-out;
}
.modal-title{
  margin:0 0 10px;font-size:1.05rem;font-weight:700;
  text-transform:none;letter-spacing:0;
}
.modal-text{
  font-size:.9rem;line-height:1.55;color:var(--text-secondary);
  max-height:50vh;overflow:auto;
}
.modal-actions{
  display:flex;gap:10px;justify-content:flex-end;
  margin-top:18px;
}
.modal-actions .btn{width:auto;flex:0 0 auto;padding:9px 18px}
@keyframes modalFade{from{opacity:0}to{opacity:1}}
@keyframes modalPop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .modal-overlay,.modal-box{animation:none}
}

/* Список УЧЕНИКОВ */
.class-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.class-tab{
  padding:8px 14px;border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);cursor:pointer;
  font-family:inherit;font-size:.85rem;transition:var(--t);
}
.class-tab:hover{border-color:var(--accent);color:var(--accent)}
.class-tab.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.student-row{
  display:grid;grid-template-columns:1fr auto;
  gap:10px;align-items:center;
  padding:14px 4px;border-bottom:1px solid var(--border-color);
}
.student-row:last-child{border-bottom:none}
.student-row .fio{font-size:.95rem;font-weight:600}
.student-row .login{font-size:.75rem;color:var(--text-secondary);font-family:ui-monospace,Consolas,monospace}
/* Кнопки строки ученика */
.student-row button{
  border:1px solid var(--btn-border);background:var(--bg-secondary);
  cursor:pointer;font-family:inherit;
}
.student-row button:hover{border-color:var(--danger);color:var(--danger)}
.student-row .btn:hover{border-color:var(--accent);color:var(--accent)}
.student-row .btn.danger:hover{border-color:var(--danger);color:var(--danger)}
.student-row .row-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:0}
@media (max-width:720px){
  .student-row{grid-template-columns:1fr}
  .student-row .row-btns .btn{flex:1 1 45%}
}
.more-row{
  padding:14px 4px;text-align:center;border-bottom:1px solid var(--border-color);
}
.more-row .btn{width:100%;max-width:240px;justify-content:center}

/* Qr ОВЕРЛЕЙ */
.qr-overlay{
  position:fixed;inset:0;z-index:50;
  background:rgba(0,0,0,.55);
  display:flex;align-items:center;justify-content:center;
  padding:16px;
}
.qr-box{
  background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:14px;
  padding:28px;max-width:360px;width:100%;
  text-align:center;
}
.qr-box h4{margin:0 0 4px}
.qr-hint{color:var(--text-secondary);font-size:.82rem;margin:12px 0}

/* Результаты ТАБЛИЦА */
.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}
.results-table{width:100%;border-collapse:collapse;font-size:.88rem}
.results-table th,
.results-table td{
  border:1px solid var(--border-color);
  padding:10px 12px;text-align:left;
}
.results-table th{
  background:var(--gray-1);font-weight:700;
  font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;
}
.results-table tr:hover{background:var(--gray-1)}
.pct{font-weight:700}
.pct.ok{color:var(--ok)}
.pct.bad{color:var(--bad)}

/* Работа прервана учеником */
.results-table tr.forced td{background:rgba(224,49,49,.06)}
.results-table tr.forced:hover td{background:rgba(224,49,49,.1)}
/* Красный рядом количеством */
.exit-mark{
  display:inline-grid;place-items:center;
  width:15px;height:15px;margin-left:5px;
  border-radius:50%;
  background:var(--danger);color:#fff;
  font-size:.68rem;font-weight:800;line-height:1;
  vertical-align:middle;cursor:help;
  font-family:var(--font-main);
}
.exit-summary{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  margin-top:10px;padding-top:10px;
  border-top:1px solid var(--border-color);
  font-size:.85rem;font-weight:400;
}
.exit-chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 8px;border-radius:999px;
  background:var(--danger-bg);color:var(--danger);
  border:1px solid var(--danger);
  font-size:.75rem;
}

/* Сводка опроса */
.poll-stats{
  background:var(--gray-1);border-radius:10px;padding:10px 14px;
  margin-bottom:16px;font-size:.9rem;
}
.poll-q{margin-bottom:20px;padding-bottom:16px;border-bottom:1px dashed var(--border-color)}
.poll-q:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}
.poll-q h4{margin:0 0 10px;font-size:.95rem}
.poll-opt{margin-bottom:8px}
.poll-opt .poll-opt-label{font-size:.85rem;margin-bottom:2px}
.poll-opt.correct .poll-opt-label{color:var(--ok);font-weight:600}
.poll-right{color:var(--ok);font-weight:800}
.poll-correct{margin:4px 0 8px;font-size:.8rem;color:var(--text-secondary)}
.poll-bar{height:10px;background:var(--gray-1);border-radius:6px;overflow:hidden;max-width:480px}
.poll-bar i{display:block;height:100%;background:var(--accent);opacity:.75}
.poll-open{margin:2px 0;font-size:.85rem}
.poll-open b{font-weight:600}

/* База ЗНАНИЙ */
.kb-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.kb-toolbar .btn{width:auto;padding:10px 16px;font-size:.8rem}
.kb-search{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
.kb-search input{
  flex:1;min-width:200px;
  padding:10px 12px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:inherit;font-size:.95rem;outline:none;transition:border-color .15s;
}
.kb-search input:focus{border-color:var(--accent)}
.kb-search .f-select{
  padding:10px 12px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:inherit;font-size:.9rem;outline:none;cursor:pointer;
  transition:border-color .15s;
}
.kb-search .f-select:focus{border-color:var(--accent)}
.kb-search .count{
  font-size:.8rem;color:var(--text-secondary);
  text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;
}
.kb-card{
  border:1px solid var(--border-color);border-radius:12px;
  padding:16px;margin-bottom:12px;
  background:var(--gray-1);
  display:flex;justify-content:space-between;
  gap:12px;align-items:flex-start;
}
.kb-card .meta{font-size:.75rem;color:var(--gray-4);margin-top:6px}
.kb-card .title{font-weight:700;font-size:.95rem}
.kb-card .cat{
  display:inline-block;padding:2px 8px;border:1px solid var(--gray-3);
  border-radius:6px;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;
  margin-right:6px;
}
/* Кнопки карточки статьи */
.kb-card .actions{
  display:flex;gap:10px;flex-wrap:wrap;
  flex:0 0 auto;margin-top:0;
}
.kb-card .actions button:not(.btn){
  border:1px solid var(--border-color);background:var(--bg-secondary);
  cursor:pointer;font-family:inherit;
}
.kb-card .actions button:hover{border-color:var(--accent);color:var(--accent)}
.kb-card .actions .del:hover,
.kb-card .actions .danger:hover{border-color:var(--danger);color:var(--danger)}
@media (max-width:720px){
  .kb-card{flex-direction:column;align-items:stretch}
  .kb-card .actions .btn{width:100%}
}
.kb-snippet{font-size:.82rem;color:var(--text-secondary);margin-top:6px;line-height:1.5}
.kb-snippet mark{font-weight:700}

/* Markdown */
.md-toolbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.md-toolbar button{
  border:1px solid var(--border-color);background:var(--bg-secondary);
  border-radius:6px;padding:6px 10px;cursor:pointer;font-size:.78rem;
  font-family:"Courier New",monospace;transition:var(--t);
}
.md-toolbar button:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.md-view{line-height:1.7;font-size:.98rem;color:var(--text-primary)}
.md-view h1,.md-view h2,.md-view h3,.md-view h4,.md-view h5,.md-view h6{
  margin:16px 0 8px;font-weight:700;letter-spacing:.02em;
}
.md-view h1{font-size:1.4rem}
.md-view h2{font-size:1.2rem}
.md-view h3{font-size:1.05rem}
.md-view h4,.md-view h5,.md-view h6{font-size:.95rem}
.md-view p{margin:10px 0}
.md-view ul,.md-view ol{margin:10px 0 10px 24px}
.md-view li{margin:4px 0}
.md-view pre{
  background:var(--gray-1);border-left:3px solid var(--accent);
  padding:12px 14px;overflow-x:auto;margin:12px 0;font-size:.88rem;
  border-radius:6px;
}
.md-view pre code{background:transparent;padding:0;border-radius:0}
.md-view a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.md-view a:hover{opacity:.7}
.md-view strong{font-weight:700}
.md-view em{font-style:italic}

.md-preview{
  border:1px dashed var(--border-color);border-radius:8px;
  padding:14px;margin-top:8px;
  background:var(--gray-1);min-height:80px;
}
.md-preview-label{
  font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--text-secondary);margin-bottom:6px;font-weight:600;
}

mark{background:#ffe98a;color:var(--text-primary);padding:1px 3px;border-radius:2px}
[data-theme="dark"] mark{background:#5a4a00;color:#fff3a3}

/* Свой КАЛЕНДАРЬ ВЫДВИЖНОЙ */
.dt-picker{position:relative}
.dt-type{
  width:100%;padding:9px 12px;margin-bottom:6px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:inherit;font-size:.95rem;
}
.dt-type.bad{border-color:var(--danger)}
.dt-field{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  width:100%;padding:10px 12px;
  border:1.5px solid var(--border-color);border-radius:8px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:inherit;font-size:.95rem;
  text-align:left;cursor:pointer;transition:var(--t);
}
.dt-field:hover{background:var(--gray-1)}
.dt-picker.open .dt-field{border-width:2px;border-color:var(--accent);background:var(--gray-1)}
.dt-field [data-dt-value].empty{color:var(--text-secondary);font-style:italic}
.dt-caret{font-size:.7rem;color:var(--text-secondary);line-height:1}

.dt-panel{
  display:none;
  position:absolute;z-index:60;
  top:calc(100% + 6px);left:0;
  width:300px;max-width:calc(100vw - 28px);
  border:1.5px solid var(--border-color);border-radius:10px;
  background:var(--bg-secondary);
  box-shadow:0 10px 30px rgba(0,0,0,.18);
  padding:12px;
}
.dt-picker.open .dt-panel{display:block}

.dt-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.dt-cal-title{flex:1;text-align:center;font-weight:700;font-size:.9rem;text-transform:capitalize}
.dt-nav{
  width:32px;height:32px;flex:0 0 32px;
  border:1.5px solid var(--border-color);border-radius:6px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-size:1.1rem;line-height:1;cursor:pointer;
  transition:var(--t);display:grid;place-items:center;
  font-family:var(--font-main);
}
.dt-nav:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}

.dt-week{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}
.dt-week span{text-align:center;font-size:.68rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;padding:4px 0}

.dt-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dt-day{
  aspect-ratio:1/1;
  border:1.5px solid transparent;background:transparent;
  color:var(--text-primary);font-family:inherit;font-size:.85rem;
  cursor:pointer;transition:var(--t);border-radius:6px;
  display:grid;place-items:center;
}
.dt-day:hover{background:var(--accent-light);border-color:var(--accent)}
.dt-day.other{cursor:default}
.dt-day.today{border-color:var(--gray-3)}
.dt-day.sel{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700}
.dt-day.sel:hover{background:var(--accent-hover)}

.dt-cal-foot{display:flex;gap:8px;margin:10px 0;padding-top:10px;border-top:1px dashed var(--border-color)}
.dt-quick{
  flex:1;padding:7px 10px;
  border:1.5px solid var(--border-color);border-radius:6px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:inherit;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;
  cursor:pointer;transition:var(--t);
}
.dt-quick:hover{border-color:var(--accent);background:var(--accent-light)}

.dt-time{display:flex;align-items:center;gap:6px;padding-top:10px;border-top:1px dashed var(--border-color)}
.dt-time-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-right:auto}
.dt-time-sep{font-weight:700}
/* Пикер дата data */
.dt-picker.dateonly .dt-time > :not([data-done]){display:none}
.dt-picker.dateonly .dt-time{justify-content:flex-end}
.dt-picker.dateonly .dt-done{width:100%}

.dt-select{position:relative}
.dt-dd-btn{
  display:flex;align-items:center;gap:6px;
  min-width:56px;padding:7px 10px;
  border:1.5px solid var(--border-color);border-radius:6px;
  background:var(--bg-secondary);color:var(--text-primary);
  font-family:"Courier New",monospace;font-size:.9rem;font-weight:700;
  cursor:pointer;transition:var(--t);
}
.dt-dd-btn:hover{background:var(--gray-1)}
.dt-select.open .dt-dd-btn{border-width:2px;border-color:var(--accent)}
.dt-dd-list{
  position:absolute;z-index:70;
  top:calc(100% + 4px);left:0;
  width:100%;min-width:56px;
  max-height:0;overflow:hidden;
  border:0 solid var(--border-color);border-radius:6px;
  background:var(--bg-secondary);
  transition:max-height .25s cubic-bezier(.4,0,.2,1), border-width .15s;
}
.dt-select.open .dt-dd-list{
  max-height:180px;overflow-y:auto;
  border-width:1.5px;
}
.dt-dd-item{
  display:block;width:100%;padding:7px 12px;
  border:none;background:var(--bg-secondary);color:var(--text-primary);
  font-family:"Courier New",monospace;font-size:.85rem;
  text-align:center;cursor:pointer;transition:var(--t);
}
.dt-dd-item:hover{background:var(--accent-light);color:var(--accent)}
.dt-dd-item.sel{background:var(--accent);color:var(--on-accent);font-weight:700}

.dt-done{
  margin-left:6px;padding:7px 14px;
  border:1.5px solid var(--accent);border-radius:6px;
  background:var(--accent);color:var(--on-accent);
  font-family:inherit;font-size:.75rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:var(--t);
}
.dt-done:hover{background:var(--accent-hover);border-color:var(--accent-hover)}

/* Подвал ПЕРЕКЛЮЧАТЕЛЬ ТЕМЫ */
.site-footer{
  border-top:1px solid var(--border-color);
  background:var(--bg-secondary);
  padding:20px 24px;
  margin-top:auto;
}
.site-footer-inner{
  max-width:1100px;margin:0 auto;
  display:flex;align-items:center;justify-content:center;
  gap:10px;flex-wrap:wrap;
}
.footer-brand{font-weight:800;color:var(--accent)}
.footer-link{color:var(--text-secondary);text-decoration:none;transition:color .2s}
.footer-link:hover{color:var(--accent)}
.footer-dot{color:var(--text-secondary)}
.footer-copy{color:var(--text-secondary);font-size:.8rem}
.footer-host{color:var(--text-secondary);font-size:.8rem}

.theme-toggle{
  display:flex;align-items:center;justify-content:center;
  gap:10px;margin-top:14px;cursor:pointer;
  width:max-content;margin-left:auto;margin-right:auto;
}
.theme-label{
  font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--text-secondary);
}
.theme-input{display:none}
.theme-switch{
  width:44px;height:24px;flex:0 0 44px;
  border-radius:999px;
  background:var(--border-color);
  position:relative;
  transition:background .2s;
}
.theme-switch i{
  position:absolute;top:3px;left:3px;
  width:18px;height:18px;border-radius:50%;
  background:#fff;
  transition:transform .2s;
  box-shadow:0 1px 3px rgba(0,0,0,.25);
}
.theme-input:checked + .theme-switch{background:var(--accent)}
.theme-input:checked + .theme-switch i{transform:translateX(20px)}

/* Кабинет УЧЕНИКА опции */
.options{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.opt{
  display:block;width:100%;text-align:left;
  padding:14px 16px;font:inherit;line-height:1.45;
  border:1.5px solid var(--border-color);border-radius:10px;
  background:var(--btn-bg);color:var(--text-primary);
  cursor:pointer;transition:border-color .2s,background .2s,color .2s;
}
.opt:hover{border-color:var(--accent);background:var(--accent-light)}
.opt.picked{border-color:var(--accent);background:var(--accent-light);color:var(--accent);font-weight:600}
.opt:disabled{opacity:.55;cursor:default}
.opt:disabled:hover{background:var(--btn-bg);border-color:var(--border-color);color:var(--text-primary)}
.opt input[type="checkbox"]{width:auto;margin-right:8px}

.bar{
  height:6px;border-radius:999px;overflow:hidden;
  background:var(--border-color);margin:4px 0 16px;
}
.bar i{
  display:block;height:100%;width:0;
  background:var(--accent);border-radius:999px;
  transition:width .35s ease;
}

.timer-wrap{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;margin-bottom:14px;
  border:1px solid var(--border-color);border-radius:10px;
  background:var(--accent-light);
}
.timer-label{font-size:.85rem;color:var(--text-secondary);white-space:nowrap}
.timer-bar{
  flex:1;height:7px;border-radius:999px;overflow:hidden;
  background:var(--border-color);
}
.timer-bar i{display:block;height:100%;width:100%;background:var(--accent);transition:width .3s linear}
.timer-num{
  font-family:var(--font-mono,'Consolas',monospace);
  font-weight:700;font-size:.95rem;color:var(--accent);
  white-space:nowrap;
}

.start-meta{display:grid;gap:10px;margin-top:4px}
.start-meta .item{
  display:flex;justify-content:space-between;gap:12px;
  padding:12px 14px;
  background:var(--bg-primary);border:1px solid var(--border-color);
  border-radius:8px;font-size:.9rem;
}
.item b{color:var(--accent)}

/* Адаптив */
@media (max-width:720px){
  .header-top{padding:18px 16px 14px}
  .nav{display: flex;
    flex-wrap: wrap;
    gap: 0;
    margin: 0;
    padding: 2 px;}
  .container{padding:20px 14px 48px}
  .section{padding:18px}
  .filter-row{grid-template-columns:1fr}
  .kind-toggle{grid-template-columns:1fr}
  .results-table{font-size:.8rem}
  .results-table th,.results-table td{padding:6px}
  .check-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}
  .dt-panel{width:100%;left:0;padding:10px}
  .dt-day{font-size:.8rem}
}

@media (hover:none){
  .btn:hover{background:var(--btn-bg);color:var(--text-primary);border-color:var(--btn-border)}
  .btn.primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}
}
/* Печать ПРЕДПРОСМОБР ЛИСТ */
.print-overlay{
  position:fixed;inset:0;z-index:60;
  background:rgba(0,0,0,.6);
  display:none;align-items:center;justify-content:center;
  padding:16px;
}
.print-box{
  background:var(--bg-secondary);
  border:1px solid var(--border-color);border-radius:14px;
  display:flex;flex-direction:column;
  width:100%;max-width:900px;max-height:92vh;overflow:hidden;
}
.print-box-head{
  display:flex;align-items:center;gap:12px;
  padding:14px 18px;border-bottom:1px solid var(--border-color);
}
.print-box-head h4{
  margin:0;flex:1;min-width:0;font-size:1rem;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.print-x{
  border:none;background:none;cursor:pointer;
  color:var(--text-secondary);font-size:1.5rem;line-height:1;
  padding:0 4px;border-radius:6px;transition:var(--t);
}
.print-x:hover{color:var(--danger);background:var(--danger-bg)}
.print-hint{
  font-size:.82rem;color:var(--text-secondary);
  margin:0 0 10px;line-height:1.4;
}
.print-opts{
  display:flex;flex-wrap:wrap;gap:18px;
  padding:12px 18px;border-bottom:1px solid var(--border-color);
}
.print-opts:empty{display:none}
.print-opts label{
  display:inline-flex;align-items:center;gap:8px;
  margin:0;cursor:pointer;
  font-size:.85rem;font-weight:400;text-transform:none;
  letter-spacing:0;color:var(--text-primary);
}
.print-opts input[type="checkbox"]{
  width:auto;flex:0 0 auto;margin:0;accent-color:var(--accent);
}
.print-stage{
  flex:1;min-height:120px;
  overflow:auto;background:#7d857e;padding:18px;
}
.print-actions{
  display:flex;gap:10px;
  padding:14px 18px;border-top:1px solid var(--border-color);
}
.print-actions .btn{width:auto;flex:1;justify-content:center}

/* Кнопка экран справа */
.print-fs{
  display:grid;place-items:center;flex:0 0 auto;
  width:34px;height:34px;padding:0;
  border:1px solid var(--border-color);border-radius:8px;
  background:none;color:var(--text-secondary);
  cursor:pointer;line-height:1;transition:var(--t);
}
.print-fs:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.print-fs .fs-icon::before{content:"\2922"}   /* Развернуть */
.print-fs.active .fs-icon::before{content:"\2921"} /* Свернуть */

/* Полноэкранный режим предпросмотра */
.print-box:fullscreen,
.print-box:-webkit-full-screen{
  width:100vw;height:100vh;max-width:none;max-height:none;
  border:none;border-radius:0;background:var(--bg-secondary);
}
.print-box:fullscreen .print-stage,
.print-box:-webkit-full-screen .print-stage{
  padding:24px;background:#7d857e;
}

/* Бумага экран лист */
.paper-fs{
  position:fixed;inset:0;z-index:70;
  background:#7d857e;display:none;
  place-items:start center;overflow:auto;
  padding:20px;
}
.paper-fs.show{display:grid}
/* Настоящий полноэкранный режим */
.paper-fs:fullscreen,
.paper-fs:-webkit-full-screen{
  position:static;width:100%;height:100%;
  padding:20px;background:#7d857e;
  overflow:auto;
}
.paper-fs-stage{
  display:grid;place-items:center;min-width:100%;min-height:100%;
}
.paper-fs .print-sheet{
  transform-origin:top center;
  box-shadow:0 6px 30px rgba(0,0,0,.5);
}
.paper-fs-exit{
  position:fixed;top:14px;right:16px;z-index:2;
  width:38px;height:38px;display:grid;place-items:center;
  border:none;border-radius:50%;cursor:pointer;
  background:rgba(0,0,0,.55);color:#fff;font-size:1.4rem;line-height:1;
  opacity:.35;transition:opacity var(--t),background var(--t);
}
.paper-fs-exit:hover{opacity:1;background:rgba(0,0,0,.8)}
@media print{
  .paper-fs{display:none !important}
}

/* Уведомление новом задании */
.notice{
  margin:0 0 14px;padding:11px 14px;
  border:1px solid var(--accent);border-left-width:4px;
  border-radius:8px;background:var(--accent-light);
  color:var(--text-primary);font-size:.9rem;line-height:1.45;
}
.notice a{
  color:var(--accent);font-weight:600;margin-left:4px;
  text-decoration:underline;cursor:pointer;
}
.btn-notify{
  padding:6px 12px;border:1px solid var(--border-color);
  border-radius:8px;background:none;color:var(--text-secondary);
  font-size:.8rem;cursor:pointer;transition:var(--t);
}
.btn-notify:hover{border-color:var(--accent);color:var(--accent)}

/* Экран итога ответы */
.result-nums{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.result-num{
  flex:1 1 140px;
  padding:16px 18px;border-radius:12px;
  border:1px solid var(--border-color);background:var(--bg-secondary);
  display:flex;flex-direction:column;gap:4px;
}
.result-num b{font-size:2rem;line-height:1;font-weight:700}
.result-num span{font-size:.8rem;color:var(--text-secondary)}
.result-num.ok{border-left:4px solid var(--ok)}
.result-num.ok b{color:var(--ok)}
.result-num.bad{border-left:4px solid var(--danger)}
.result-num.bad b{color:var(--danger)}
.result-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.result-sub{
  margin:22px 0 14px;padding-bottom:8px;
  border-bottom:1px solid var(--border-color);
  font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--text-secondary);
}
.ans-item{
  padding:14px 0;
  border-bottom:1px solid var(--border-color);
}
.ans-item:last-child{border-bottom:none}
.ans-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}
.ans-num{
  flex:0 0 auto;width:24px;height:24px;
  display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:var(--bg-secondary);
  border:1px solid var(--border-color);
  font-size:.75rem;font-weight:700;color:var(--text-secondary);
}
.ans-q{flex:1;font-size:.95rem;line-height:1.45;color:var(--text-primary)}
.ans-opts{display:flex;flex-direction:column;gap:6px;padding-left:34px}
.ans-opt{
  font-size:.88rem;color:var(--text-secondary);
  padding:6px 10px;border-radius:8px;
  border:1px solid transparent;background:var(--bg-secondary);
}
.ans-opt.ok{border-color:var(--ok);color:var(--ok);font-weight:600}
.ans-opt.bad{border-color:var(--danger);color:var(--danger)}
.ans-mark{
  display:inline-block;margin-left:6px;
  font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;opacity:.85;
}
.btn.key-answers{margin-top:10px}

/* Кнопки КОТОРЫЕ РАБОТАЮТ */
@media (pointer:coarse),(max-width:720px){
  .pc-only{display:none !important}
}

/* Красивый ЭКРАН ЗАГРУЗКИ */
.app-loader{
  position:fixed;inset:0;z-index:10000;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg-primary);
  opacity:0;transition:opacity .22s ease;
}
.app-loader.show{opacity:1}
.app-loader-box{
  display:flex;flex-direction:column;align-items:center;gap:16px;
}
.app-loader-logo{
  width:64px;height:64px;border-radius:18px;
  background:var(--accent);color:var(--on-accent);
  display:grid;place-items:center;
  font-weight:800;font-size:1.5rem;letter-spacing:.03em;
  font-family:var(--font-main);
  box-shadow:0 10px 26px var(--accent-wash);
}
.app-loader-ring{
  width:54px;height:54px;border-radius:50%;
  display:grid;place-items:center;
  background:conic-gradient(from 0deg,
    transparent 0deg, var(--accent) 300deg, transparent 360deg);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 0);
  mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 0);
  animation:spin .9s linear infinite;
}
.app-loader-ring i{
  display:block;width:8px;height:8px;border-radius:50%;
  background:var(--accent);opacity:.35;
  animation:loaderPulse 1.2s ease-in-out infinite;
}
.app-loader-text{
  font-size:.92rem;color:var(--text-secondary);letter-spacing:.02em;
}
@keyframes loaderPulse{
  0%,100%{opacity:.25;transform:scale(.8)}
  50%{opacity:.7;transform:scale(1.15)}
}
/* Пока грузим страницу */
body.is-loading{overflow:hidden}
@media (prefers-reduced-motion:reduce){
  .app-loader-ring{animation-duration:2.4s}
  .app-loader-ring i{animation:none;opacity:.5}
}

/* Спиннер загрузки */
/* Приближение двумя пальцами */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{touch-action:manipulation}
.loading{
  display:flex;align-items:center;gap:12px;
  padding:22px 4px;color:var(--text-secondary);
  font-size:.95rem;
}
.spinner{
  flex:0 0 auto;
  width:22px;height:22px;
  border:3px solid var(--border-color);
  border-top-color:var(--accent);
  border-radius:50%;
  animation:spin .8s linear infinite;
}
.loading-text{line-height:1.4}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
  .spinner{animation-duration:2.4s}
}

/* Карточка задания телефоне */
.exhausted-note{display:none}
@media (max-width:720px){
  .q-block .task-meta,
  .hide-mobile,
  .q-block .task-meta,
  .q-block .task-desc,
  .q-block .task-status{display:none!important}
  .q-block .exhausted-note{
    display:block;margin:0 0 10px;
    font-size:.85rem;font-weight:600;color:var(--danger);
  }
}

@media (max-width:560px){
  .result-nums{gap:10px}
  .result-num{padding:14px;flex:1 1 100%}
  .result-num b{font-size:1.6rem}
  .ans-opts{padding-left:0}
}

/* Окно подсказка уведомления */
/* Во время прохождения */
body.in-quiz > .header,
body.in-quiz > .site-footer{display:none}

/* Панель во время */
/* Нажатия Пройти сайт */
body.in-quiz > .container{max-width:1280px}

/* Принудительное ожидание заданием */
.wait-overlay{
  position:fixed;inset:0;z-index:9000;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg-primary);
  padding:24px;
}
.wait-box{
  display:flex;flex-direction:column;align-items:center;
  gap:12px;text-align:center;
}
.wait-box .spinner{width:42px;height:42px;border-width:4px}
.wait-title{font-size:1.05rem;font-weight:700}
.wait-sub{font-size:.9rem;color:var(--text-secondary)}

/* Панель во время */
.quiz-bar{
  display:flex;align-items:center;gap:14px;
  padding:12px 16px;margin-bottom:20px;
  background:var(--bg-card);
  border:1px solid var(--border-color);
  border-radius:14px;
  box-shadow:0 1px 3px rgba(0,0,0,.05);
}
.quiz-bar-logo{
  flex:0 0 auto;
  width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;
  border-radius:11px;background:var(--accent);color:var(--on-accent);
  font-weight:700;font-size:.95rem;letter-spacing:.02em;
}
.quiz-bar-title{
  flex:1 1 auto;min-width:0;
  font-size:.95rem;font-weight:600;color:var(--text-primary);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.btn-quiz-exit{
  flex:0 0 auto;
  padding:9px 18px;
  border:1.5px solid var(--border-color);border-radius:9px;
  background:var(--bg-secondary);color:var(--text-secondary);
  font-family:inherit;font-size:.8rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;
  cursor:pointer;transition:border-color .2s,color .2s,background-color .2s;
}
.btn-quiz-exit:hover{border-color:var(--danger);color:var(--danger)}
@media (max-width:560px){
  .quiz-bar{padding:10px 12px;margin-bottom:16px;gap:10px}
  .quiz-bar-logo{width:36px;height:36px;border-radius:10px;font-size:.85rem}
  .btn-quiz-exit{padding:8px 14px;font-size:.75rem}
}

.modal-overlay{
  position:fixed;inset:0;z-index:9000;
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:rgba(15,20,15,.55);
  -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
}
.modal{
  position:relative;
  width:100%;max-width:480px;max-height:86vh;
  margin:auto;                       /* Центрируем обеим осям */
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  background:var(--bg-card);
  border:1px solid var(--border-color);
  border-radius:14px;
  padding:24px 22px 22px;
  box-shadow:0 18px 48px rgba(0,0,0,.28);
}
.modal-title{
  margin:0 40px 14px 0;
  font-size:1.1rem;font-weight:700;color:var(--text-primary);
}
.modal-close{
  position:absolute;top:10px;right:12px;
  width:32px;height:32px;padding:0;
  border:none;border-radius:8px;background:none;
  color:var(--text-secondary);font-size:26px;line-height:1;
  cursor:pointer;transition:var(--t);
}
.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}
.modal-body{font-size:.9rem;line-height:1.6;color:var(--text-primary)}
.modal-body p{margin:0 0 12px}
.modal-body ol,.modal-body ul{margin:0 0 12px;padding-left:22px}
.modal-body li{margin-bottom:7px}
.modal-body .steps-title{font-weight:700;margin-bottom:6px}
.modal-body .why{
  padding:10px 12px;border-radius:8px;
  background:var(--accent-light);
  border-left:3px solid var(--accent);
  margin-bottom:14px;
}
.modal-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
/* Пока открыто окно */
body.modal-open{overflow:hidden}
/* Окно ответов шире */
.modal-wide{max-width:680px}
.modal-wide #answersModalScore{margin-bottom:14px}
.modal-wide .ans-item{break-inside:avoid}

/* Окно выдачи попыток */
.att-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.att-row label{flex:0 0 150px;font-weight:600;font-size:.88rem;color:var(--text-primary)}
.att-row select,.att-row input{
  flex:1 1 auto;min-width:0;
  padding:9px 11px;
  border:1px solid var(--border-color);border-radius:8px;
  background:var(--bg-card);color:var(--text-primary);
  font-size:.9rem;
}
.att-row input{max-width:110px}
/* Даты окне доступа */
#Accessendat accessHideAt max
.att-sub{font-weight:700;font-size:.88rem;margin:6px 0 8px;color:var(--text-primary)}
.att-actions{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.btn.sm{padding:6px 12px;font-size:.78rem}
.att-students{
  max-height:230px;overflow-y:auto;
  border:1px solid var(--border-color);border-radius:8px;padding:6px;
}
.att-students .check-row{margin:0;padding:7px 8px}
@media (max-width:560px){
  .att-row{flex-direction:column;align-items:stretch;gap:6px}
  .att-row label{flex:none}
}
/* Время вышло окно */
.modal-locked{cursor:default}
.modal-locked .modal-box,
.modal-overlay.modal-locked .modal{
  opacity:.96;
}
.modal-overlay.modal-locked{background:rgba(15,20,15,.72)}
@media (max-width:560px){
  .modal-overlay{padding:12px;align-items:flex-start}
  .modal{max-width:100%;max-height:92vh;padding:20px 16px 18px;margin-top:8px}
}

/* Лист A4 цвета */
.print-sheet{
  position:relative;
  width:210mm;min-height:297mm;
  margin:0 auto;padding:14mm;
  background:#fff;color:#111;
  font-family:var(--font-main);
  font-size:11.5pt;line-height:1.5;
  box-shadow:0 4px 22px rgba(0,0,0,.35);
  overflow:hidden;
}
.print-sheet + .print-sheet{margin-top:18px;break-before:page}

/* Логотип РЯ слева */
.sheet-title{
  display:flex;align-items:flex-start;gap:4.5mm;
  margin-bottom:8px;
}
.sheet-title-text{flex:1;min-width:0}
.sheet-logo{
  flex:0 0 13.5mm;
  width:13.5mm;height:13.5mm;
  border-radius:3mm;
  background:#2e7d4f;color:#fff;
  display:grid;place-items:center;
  font-family:var(--font-main);font-weight:800;
  font-size:11.5pt;letter-spacing:.03em;line-height:1;
}

.sheet-brand{
  font-size:8.5pt;letter-spacing:.08em;text-transform:uppercase;
  color:#666;margin-bottom:4px;
}
.print-sheet h1{
  margin:0 0 4px;font-size:17pt;line-height:1.25;font-weight:700;
}
.sheet-desc{margin-bottom:6px;font-size:10pt;color:#333}
/* Адрес сайта внизу */
.sheet-foot{
  display:none;
  margin-top:14px;padding-top:6px;
  border-top:1px solid #ccc;
  font-size:8.5pt;color:#666;
  text-align:right;letter-spacing:.04em;
}
.sheet-facts{font-size:9.5pt;color:#555;margin-bottom:10px}
.sheet-person{
  display:flex;flex-wrap:wrap;gap:6px 22px;
  padding:8px 0 10px;margin-bottom:14px;
  border-top:1px solid #111;border-bottom:1px solid #111;
  font-size:10pt;
}
.sheet-person span{display:inline-flex;align-items:baseline;gap:6px}
.sheet-person .grow{flex:1;min-width:220px}
.sheet-person .fill{
  display:inline-block;width:80px;
  border-bottom:1px solid #888;height:1em;
}
.sheet-person .fill.sm{width:110px}
.sheet-person .fill.lg{flex:1;width:auto}

.print-sheet .q{margin-bottom:14px;break-inside:avoid}
.print-sheet .q-title{font-size:11.5pt;margin-bottom:6px}
.print-sheet .q-title b{margin-right:4px}
/* Названия вопросов строчку */
.print-sheet .q-inline{
  display:inline;
  font-size:11.5pt;
  line-height:1.9;
  margin-right:.35em;
}
.print-sheet .q-inline::after{content:";";color:#555}
.print-sheet .q-inline:last-of-type::after{content:""}
.print-sheet .q-options{list-style:none;margin:0;padding:0}
.print-sheet .q-opt{
  display:flex;align-items:baseline;gap:9px;
  padding:2px 0 2px 4px;
}
.print-sheet .q-mark{flex:0 0 auto;width:1em;font-size:11pt;line-height:1.4}
.print-sheet .q-opt.right .q-txt{font-weight:700}
.print-sheet .q-opt.right .q-mark{color:#0a6b04}
.print-sheet .q-open .q-line{
  height:1.8em;border-bottom:1px dotted #999;
}
.sheet-empty{color:#666;font-style:italic}
.sheet-key{
  margin-top:20px;padding-top:10px;
  border-top:2px solid #111;break-inside:avoid;
}
/* Ссылки статьи базы */
.print-sheet .sheet-key h3{
  margin:0 0 6px;font-size:10.5pt;
  text-transform:uppercase;letter-spacing:.05em;
}
.print-sheet .sheet-key ol{
  margin:0;padding-left:22px;
  font-size:10.5pt;columns:2;column-gap:20px;
}
.print-sheet .sheet-key li{margin:2px 0;break-inside:avoid}

/* Текст статьи листе */
.print-sheet .sheet-body{font-size:11.5pt;color:#111;line-height:1.6}
.print-sheet .sheet-body h1{font-size:14pt;margin:16px 0 6px}
.print-sheet .sheet-body h2{font-size:12.5pt;margin:14px 0 6px}
.print-sheet .sheet-body h3{font-size:11.5pt;margin:12px 0 4px}
.print-sheet .sheet-body h4,
.print-sheet .sheet-body h5,
.print-sheet .sheet-body h6{font-size:11pt;margin:10px 0 4px}
.print-sheet .sheet-body p{margin:8px 0}
.print-sheet .sheet-body ul,
.print-sheet .sheet-body ol{margin:8px 0 8px 22px}
.print-sheet .sheet-body li{margin:3px 0}
.print-sheet .sheet-body a{color:#111;text-decoration:underline}
.print-sheet .sheet-body code{
  background:#eee;border-radius:3px;padding:1px 4px;
  font-family:"Courier New",monospace;font-size:10.5pt;
}
.print-sheet .sheet-body pre{
  background:#f2f2f2;border-left:3px solid #999;border-radius:4px;
  padding:10px 12px;margin:10px 0;
  font-size:10.5pt;white-space:pre-wrap;
}

/* Печать ПРАВИЛА ВЫВОДА */
@media print{
  @page{margin:14mm 12mm}
  html,body{
    height:auto;min-height:0;background:#fff !important;color:#000 !important;
  }
  body{
    display:block;padding:0 !important;overflow:visible !important;
  }
  body > *:not(#printOverlay){display:none !important}

  /* Окно предпросмотра контейнер */
  .print-overlay{
    position:static;display:block !important;
    background:none;padding:0;
  }
  .print-box{
    display:block;width:auto;max-width:none;max-height:none;
    overflow:visible;background:#fff;border:none;border-radius:0;
  }
  .print-box-head,
  .print-opts,
  .print-actions{display:none !important}
  .print-stage{
    display:block;min-height:0;overflow:visible !important;
    background:#fff;padding:0;
  }

  .print-sheet{
    width:auto;min-height:0;margin:0;padding:0;
    box-shadow:none;overflow:visible;
  }
  /* Логотип бумаге тот */
  .sheet-logo{
    background:#fff;color:#000;
    border:1.5pt solid #000;
    border-radius:3mm;
  }
  /* Адрес внизу листа */
  .sheet-foot{
    display:block !important;
    break-inside:avoid;
  }
  .print-sheet + .print-sheet{margin-top:0}
  h1,h2,h3{break-after:avoid}
  a{color:#000 !important}
}

/* Узкий экран лист */
@media (max-width:720px){
  .print-stage{padding:10px}
  .print-actions{flex-direction:column}
}

/* Полный ЭКРАН статья */
.fs-btn {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 5;
    width: 36px;
    height: 36px;
    display: grid;
    place-items: center;
    border: 1px solid var(--border-color);
    background: var(--bg-secondary);
    color: var(--text-primary);
    border-radius: 8px;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    transition: var(--t);
}
.fs-btn:hover {
    background: var(--accent);
    color: var(--on-accent);
    border-color: var(--accent);
}
.fs-btn .fs-icon::before { content: "\2922"; }
.fs-btn.active .fs-icon::before { content: "\2921"; }

.fs-wrap { position: relative; }

.fs-wrap:fullscreen {
    background: var(--bg-primary);
    padding: 32px 20px 60px;
    overflow-y: auto;
    width: 100vw;
    height: 100vh;
}
.fs-wrap:-webkit-full-screen {
    background: var(--bg-primary);
    padding: 32px 20px 60px;
    overflow-y: auto;
    width: 100vw;
    height: 100vh;
}
.fs-wrap:fullscreen .section { max-width: 820px; margin: 0 auto; }
.fs-wrap:fullscreen .fs-btn { position: fixed; top: 20px; right: 20px; }

.kind-tile .tile-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}

.kind-tile .tile-title {
  font-weight: 600;
  font-size: 16px;
  color: #212529;
}

.kind-tile .tile-badge {
  font-weight: bold;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #ff4d4f; /* Красный цвет для "СКОРО" */
  background-color: #fff1f0; /* Легкий фон вокруг надписи */
  padding: 2px 8px;
  border-radius: 6px;
}

.kind-tile .tile-desc {
  display: block;
  color: #6c757d;
  font-size: 13px;
  line-height: 1.4;
}

.link {
  color: var(--accent);
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 4px;
  font-weight: 600;
  transition: text-decoration-color .2s, color .2s;
}
.link:hover {
  color: var(--accent-hover);
  text-decoration-color: currentColor;
}

.quote-box{
  margin:16px 0 0;
  padding:2px 0 2px 14px;
  border-left:3px solid var(--accent);
  cursor:pointer;
  user-select:none;
  transition:border-color .2s ease, opacity .2s ease;
}
.quote-box:hover{ border-color:#0d5c05; }

.quote-text{
  font-size:.9rem;
  line-height:1.45;
  font-style:italic;
  color:inherit;
  opacity:.85;
  transition:opacity .25s ease, transform .25s ease;
}
.quote-author{
  margin-top:6px;
  font-size:.75rem;
  font-weight:600;
  letter-spacing:.03em;
  text-transform:uppercase;
  color:var(--accent);
  opacity:.9;
  transition:opacity .25s ease;
}
.quote-box.fading .quote-text,
.quote-box.fading .quote-author{
  opacity:0;
  transform:translateY(3px);
}

[data-theme="dark"] .quote-box{ border-left-color:#5fce4f; }
[data-theme="dark"] .quote-author{ color:#5fce4f; }

.result{
  min-height:20px;      /* место под одну строку уведомления */
  margin:8px 0 10px;    /* аккуратный зазор сверху и снизу */
}
/* ============================================================
   КАРТОЧКА УЧЕНИКА · сводка и баллы
   ============================================================ */
.student-head{
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--gray-1);
}
.student-name{font-size:1.25rem;font-weight:800;line-height:1.25}
.student-sub{font-size:.85rem;color:var(--text-secondary);margin-top:4px}
.student-summary{text-align:right}
.summary-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}
.summary-value{font-size:1.5rem;font-weight:800;line-height:1.25}
.summary-value small{font-size:.82rem;font-weight:600;color:var(--text-secondary)}

.student-facts{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:12px;margin-top:16px;
}
.fact{
  border:1px solid var(--border-color);border-radius:10px;
  padding:12px 14px;background:var(--bg-secondary);
}
.fact-label{
  font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;
  color:var(--text-secondary);margin-bottom:6px;
}
.fact-value{font-size:1rem;line-height:1.35}
.fact-note{font-size:.78rem;color:var(--text-secondary);margin-top:4px}
.fact-muted{color:var(--text-secondary);font-style:italic;font-weight:400}
.avg-percent{font-size:1.35rem;font-weight:800;display:inline-block;padding:2px 9px;border-radius:8px}
.grade-chip{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.8rem;font-weight:700;vertical-align:middle}

.score-overview{
  display:flex;gap:14px;flex-wrap:wrap;padding:10px 14px;margin-bottom:12px;
  border:1px solid var(--border-color);border-radius:10px;background:var(--bg-secondary);
  font-size:.86rem;color:var(--text-secondary);
}
.score-overview b{color:var(--text)}
.score-overview small{font-weight:600}

.score-badge{
  display:inline-flex;align-items:center;gap:6px;padding:5px 12px;
  border-radius:999px;font-size:.8rem;font-weight:800;white-space:nowrap;
  border:1px solid transparent;
}
.score-pill{
  display:inline-block;padding:2px 8px;border-radius:999px;
  font-size:.78rem;font-weight:700;margin-right:6px;border:1px solid transparent;
}
.task-summary-line{line-height:1.5}

.tone-great{background:var(--accent-light);color:var(--accent);border-color:var(--accent-wash)}
.tone-good{background:#e8f2ff;color:#1d6fb8;border-color:#c7ddf5}
.tone-ok{background:#fff3d6;color:#92610a;border-color:#f0deb0}
.tone-low{background:var(--danger-bg);color:var(--danger);border-color:rgba(179,38,30,.25)}
[data-theme="dark"] .tone-good{background:#15283a;color:#7db8ea;border-color:#24445f}
[data-theme="dark"] .tone-ok{background:#3a2e12;color:#f0c05a;border-color:#55431c}

.attempt-item .result-meta{white-space:normal}
@media (max-width:560px){
  .student-summary{text-align:left}
  .summary-value{font-size:1.25rem}
  .fact-value{font-size:.95rem}
}

.student-live{margin-bottom:8px}
.live-badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 10px;border-radius:999px;
  font-size:.76rem;font-weight:700;border:1px solid transparent;
}
.live-online{background:var(--accent-light);color:var(--accent);border-color:var(--accent-wash)}
.live-passing{background:#fff3d6;color:#92610a;border-color:#f0deb0}
.live-offline{background:var(--gray-1);color:var(--gray-3);border-color:var(--gray-2)}
[data-theme="dark"] .live-passing{background:#3a2e12;color:#f0c05a;border-color:#55431c}

/* Что нового */
.changelog{display:flex;flex-direction:column;gap:16px}
.release{
  border:1px solid var(--border-color);border-radius:14px;
  background:var(--bg-secondary);padding:20px;
}
.release.latest{border-color:var(--accent);box-shadow:0 4px 18px var(--accent-wash-soft)}
.release-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.release-version{
  font-family:ui-monospace,Consolas,monospace;font-size:1.05rem;font-weight:800;
  color:var(--accent);letter-spacing:.02em;
}
.release-date{font-size:.78rem;color:var(--text-secondary)}
.release-badge{
  margin-left:auto;font-size:.66rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;background:var(--accent);color:var(--on-accent);
  border-radius:999px;padding:4px 10px;
}
.release h3{font-size:1rem;margin:0 0 12px;color:var(--text-primary)}
.release-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:10px}
.release-list li{font-size:.9rem;line-height:1.5;color:var(--text-secondary)}
.release-list li b{color:var(--text-primary);font-weight:600}
.release-note{
  margin-top:16px;padding-top:14px;border-top:1px dashed var(--border-color);
  font-size:.8rem;color:var(--text-secondary);
}
@media (max-width:520px){
  .release{padding:16px}
  .release-badge{margin-left:0}
}

#resultCard .result-box {
  width: 100%;
  max-width: 480px;
  max-height: 90vh;
  overflow-y: auto;
  background: #fff;
  border-radius: 12px;
  padding: 16px;
  box-shadow: 0 10px 40px rgba(0,0,0,.3);
}