:root {
  --bg: #f5f6f3;
  --panel: #fffefb;
  --panel-soft: #f8f9f7;
  --line: #e3e6e2;
  --line-strong: #d4d9d5;
  --text: #202622;
  --muted: #6f7872;
  --blue: #496f8d;
  --blue-dark: #355b78;
  --blue-soft: #e8f0f5;
  --green: #557b67;
  --green-soft: #e9f1ec;
  --beige: #f3ede3;
  --purple-soft: #efedf5;
  --danger: #a65757;
  --shadow: 0 2px 12px rgba(30, 41, 34, 0.045);
  --radius: 10px;
  font-family: "Segoe UI Variable Text", "Segoe UI Variable", Inter, "Segoe UI", Arial, sans-serif;
  color: var(--text);
  background: var(--bg);
  font-synthesis: none;
}

.homework-builder { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.builder-main { padding: 22px; }
.builder-step { margin: 7px 0 15px; padding-top: 18px; display: flex; align-items: center; gap: 12px; border-top: 1px solid var(--line); }
.builder-step:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.builder-step > span { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--blue-dark); color: white; font-size: 12px; font-weight: 800; }
.builder-step h2, .builder-step p { margin: 0; }
.builder-step h2 { font-size: 18px; }
.builder-step p { color: var(--muted); font-size: 11px; }
.task-picker { margin-top: 17px; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.task-picker-head { padding: 13px 15px; display: flex; align-items: center; justify-content: space-between; background: var(--panel-soft); }
.task-picker-head h3, .task-picker-head p { margin: 0; }
.task-picker-head p { color: var(--muted); font-size: 11px; }
.task-picker-filters { padding: 10px; display: grid; grid-template-columns: minmax(220px, 1.5fr) 150px minmax(170px, 1fr) 105px 145px; gap: 7px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.task-picker > #id_exam_tasks { max-height: 480px; margin: 0; padding: 8px; overflow-y: auto; display: grid; gap: 5px; list-style: none; }
.task-picker > #id_exam_tasks li { margin: 0; }
.task-picker > #id_exam_tasks label { padding: 9px 10px; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: start; gap: 9px; border-radius: 7px; color: #3b4640; cursor: pointer; font-size: 12px; }
.task-picker > #id_exam_tasks label:hover { background: var(--blue-soft); }
.task-picker > #id_exam_tasks input { width: 16px; height: 16px; margin: 1px 0 0; }
.account-status-box { margin-top: 18px; padding: 13px; display: flex; align-items: center; gap: 10px; border-radius: 8px; background: var(--panel-soft); }
.account-status-box > div { display: grid; }
.account-status-box small { color: var(--muted); }
.attempt-teacher-list, .teacher-note-history { display: grid; gap: 8px; }
.attempt-teacher-list article { padding: 12px; display: grid; grid-template-columns: 115px minmax(220px, 1fr) auto; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 8px; }
.attempt-teacher-list article > time { color: var(--muted); font-size: 11px; }
.attempt-teacher-list article > span { display: grid; }
.attempt-teacher-list article > span small { overflow-wrap: anywhere; }
.attempt-teacher-list article form { grid-column: 2 / -1; display: grid; grid-template-columns: 150px 1fr auto; gap: 7px; }
.access-row { padding: 11px 0; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); }
.access-row > span { display: grid; }
.teacher-note-form { margin-bottom: 15px; display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 8px; }
.teacher-note-form textarea { min-height: 70px; }
.teacher-note-history article { padding: 11px 13px; border-radius: 8px; background: var(--panel-soft); }
.teacher-note-history article p { margin: 0 0 5px; color: var(--text); }
.homework-intro, .homework-theory-admin, .homework-bank-tasks { margin-bottom: 13px; padding: 19px; }
.homework-bank-tasks > article { padding: 14px 0; display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 10px; border-bottom: 1px solid var(--line); }
.homework-bank-tasks > article:last-child { border-bottom: 0; }
.homework-bank-tasks article p { margin: 4px 0 8px; }
.teacher-attempts { display: grid; gap: 5px; }
.teacher-attempts > div { padding: 8px; display: grid; grid-template-columns: 110px minmax(150px, 1fr) auto; align-items: center; gap: 8px; border-radius: 7px; background: var(--panel-soft); }
.teacher-attempts form { grid-column: 2 / -1; display: grid; grid-template-columns: 140px 1fr auto; gap: 6px; }

@media (max-width: 900px) {
  .task-picker-filters { grid-template-columns: 1fr 1fr; }
  .task-picker-filters > :first-child { grid-column: 1 / -1; }
  .attempt-teacher-list article { grid-template-columns: 95px 1fr; }
  .attempt-teacher-list article > .status { grid-column: 2; width: max-content; }
  .attempt-teacher-list article form, .teacher-attempts form { grid-column: 1 / -1; grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .task-picker-filters { grid-template-columns: 1fr; }
  .task-picker-filters > :first-child { grid-column: auto; }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-width: 320px; background: var(--bg); color: var(--text); font-size: 13.5px; line-height: 1.5; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; }
a { color: var(--blue-dark); text-decoration: none; }
a:hover { color: var(--blue); }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 7px; font-family: "Segoe UI Variable Display", "Segoe UI Variable Text", "Segoe UI", sans-serif; font-size: clamp(24px, 1.8vw, 30px); line-height: 1.18; letter-spacing: -0.025em; font-weight: 700; }
h2 { margin-bottom: 12px; font-family: "Segoe UI Variable Display", "Segoe UI Variable Text", "Segoe UI", sans-serif; font-size: 18px; line-height: 1.3; letter-spacing: -0.015em; }
h3 { font-size: 15px; }
p { color: var(--muted); }
small { color: var(--muted); }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 218px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; padding: 22px 15px 15px; display: flex; flex-direction: column; background: #eef0ec; border-right: 1px solid var(--line); z-index: 20; }
.brand { display: flex; align-items: center; gap: 11px; color: var(--text); }
.brand:hover { color: var(--text); }
.brand-mark { width: 35px; height: 35px; border-radius: 9px; display: grid; place-items: center; background: var(--blue-dark); color: white; font-size: 17px; font-weight: 750; box-shadow: 0 3px 9px rgba(53, 91, 120, .18); }
.brand span:last-child { display: flex; flex-direction: column; line-height: 1.25; }
.brand strong { font-size: 15px; letter-spacing: -.01em; }
.brand small { font-size: 10px; letter-spacing: .035em; text-transform: uppercase; }
.main-nav { display: flex; flex-direction: column; gap: 4px; margin-top: 31px; }
.mobile-nav-more { display: none; }
.main-nav a { display: flex; align-items: center; gap: 11px; min-height: 42px; padding: 9px 11px; border-radius: 8px; color: #53605a; font-weight: 590; }
.main-nav a:hover { background: rgba(255, 255, 255, .56); color: var(--text); }
.main-nav a.active { background: var(--panel); color: var(--blue-dark); box-shadow: var(--shadow); }
.nav-icon { width: 21px; color: #718078; text-align: center; font-size: 17px; }
.sidebar-foot { margin-top: auto; min-width: 0; padding: 13px 8px 2px; border-top: 1px solid var(--line-strong); display: flex; align-items: center; gap: 8px; }
.user-dot { width: 8px; height: 8px; border-radius: 50%; background: #6f9b7f; }
.sidebar-user { min-width: 0; flex: 1; display: flex; flex-direction: column; overflow: hidden; }
.sidebar-user strong { overflow: hidden; text-overflow: ellipsis; }
.sidebar-user small { font-size: 11px; }

.main-content { min-width: 0; }
.topbar { height: 69px; padding: 13px clamp(20px, 3.2vw, 48px); display: flex; align-items: center; gap: 20px; justify-content: space-between; background: rgba(245, 246, 243, .92); border-bottom: 1px solid var(--line); backdrop-filter: blur(12px); position: sticky; top: 0; z-index: 15; }
.global-search { width: min(570px, 55vw); height: 40px; display: flex; align-items: center; gap: 9px; padding: 0 12px; background: var(--panel); border: 1px solid var(--line); border-radius: 9px; box-shadow: var(--shadow); }
.global-search input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text); }
kbd { padding: 2px 6px; border: 1px solid var(--line-strong); border-radius: 5px; color: var(--muted); background: var(--panel-soft); font-size: 10px; }
.page-wrap { max-width: 1540px; margin: 0 auto; padding: 27px clamp(20px, 3vw, 42px) 60px; }
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 25px; margin-bottom: 23px; }
.page-head > div:first-child { min-width: 0; }
.page-head p:last-child { margin-bottom: 0; }
.eyebrow { margin-bottom: 6px; color: var(--blue); font-size: 11px; font-weight: 720; letter-spacing: .08em; text-transform: uppercase; }
.back-link { display: inline-block; margin-bottom: 13px; color: var(--muted); font-size: 13px; }
.quick-actions, .topbar-actions, .preview-actions, .card-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.button { min-height: 39px; padding: 9px 15px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 1px solid transparent; border-radius: 8px; cursor: pointer; font-weight: 630; line-height: 1; white-space: nowrap; transition: .15s ease; }
.button:hover { transform: translateY(-1px); }
.button.primary { color: white; background: var(--blue-dark); border-color: var(--blue-dark); }
.button.primary:hover { color: white; background: #2d506c; }
.button.secondary { color: var(--blue-dark); background: var(--panel); border-color: var(--line-strong); }
.button.secondary:hover { background: var(--blue-soft); }
.button.ghost { color: var(--muted); background: transparent; border-color: var(--line); }
.button.danger-text { color: var(--danger); background: transparent; border-color: #ead4d4; }
.button.compact { min-height: 33px; padding: 7px 11px; font-size: 12px; }
.button.small { min-height: 31px; padding: 6px 10px; font-size: 11px; }
.button.wide { width: 100%; }
.button:disabled { opacity: .55; cursor: not-allowed; transform: none; }
.icon-button { width: 31px; height: 31px; padding: 0; display: inline-grid; place-items: center; border: 0; border-radius: 7px; background: transparent; color: var(--muted); cursor: pointer; }
.icon-button:hover { background: var(--panel); color: var(--text); }
.icon-button.danger { color: var(--danger); }
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); }
.section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; margin-bottom: 14px; }
.section-head h2, .section-head p { margin-bottom: 0; }
.section-head a { font-size: 12px; }
.top-gap { margin-top: 28px; }
.muted { color: var(--muted); }
.span-2 { grid-column: span 2; }
.full-width { grid-column: 1 / -1; }

.toast-stack { position: fixed; top: 79px; right: 22px; z-index: 100; display: grid; gap: 8px; }
.toast { max-width: 380px; padding: 12px 16px; border: 1px solid var(--line); border-left: 4px solid var(--blue); border-radius: 8px; background: var(--panel); box-shadow: 0 10px 35px rgba(34, 45, 38, .14); animation: toast-in .2s ease-out; }
.toast.success { border-left-color: var(--green); }
.toast.error { border-left-color: var(--danger); }
.toast.warning { border-left-color: #b2874f; }
.toast-out { animation: toast-out .25s ease forwards; }
@keyframes toast-in { from { opacity: 0; transform: translateY(-7px); } }
@keyframes toast-out { to { opacity: 0; transform: translateX(20px); } }

.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(300px, .9fr); gap: 16px; }
.dashboard-grid > .panel { padding: 20px; }
.dashboard-head { margin-bottom: 25px; }
.timeline-list { display: grid; }
.timeline-item { display: grid; grid-template-columns: 48px 18px 1fr; min-height: 58px; color: var(--text); }
.timeline-item time { font-weight: 700; color: var(--blue-dark); }
.timeline-line { position: relative; width: 1px; height: 100%; background: var(--line); }
.timeline-line::before { content: ""; position: absolute; top: 5px; left: -4px; width: 7px; height: 7px; border: 1px solid var(--blue); border-radius: 50%; background: var(--panel); }
.timeline-item span:last-child { display: flex; flex-direction: column; }
.simple-list { display: grid; }
.simple-list > a { min-height: 52px; padding: 10px 3px; display: flex; justify-content: space-between; gap: 12px; color: var(--text); border-bottom: 1px solid var(--line); }
.simple-list > a:last-child { border-bottom: 0; }
.simple-list span:first-child { display: flex; flex-direction: column; }
.material-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 11px; }
.material-card { min-width: 0; padding: 12px; display: flex; gap: 11px; color: var(--text); border: 1px solid var(--line); border-radius: 9px; background: var(--panel-soft); }
.material-card > span:last-child { min-width: 0; display: flex; flex-direction: column; }
.material-card strong, .material-card small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.material-card em { margin-top: 7px; color: var(--blue); font-size: 10px; font-style: normal; text-transform: uppercase; }
.file-tile { flex: 0 0 38px; height: 44px; display: grid; place-items: center; border-radius: 8px; background: var(--blue-soft); color: var(--blue-dark); font-weight: 750; }
.file-tile.theory { background: var(--green-soft); color: var(--green); }
.file-tile.task { background: var(--beige); color: #765f45; }
.chip-list { display: flex; flex-wrap: wrap; gap: 8px; }
.chip-list a, .chip-list > span { padding: 6px 10px; border-radius: 7px; background: var(--blue-soft); color: var(--blue-dark); font-size: 12px; }

.bank-layout { display: grid; grid-template-columns: 250px minmax(480px, 1fr); gap: 12px; align-items: stretch; }
.bank-layout.has-preview { grid-template-columns: 235px minmax(420px, 1fr) minmax(330px, .72fr); }
.tree-panel { min-height: 650px; padding: 14px 10px; overflow: auto; }
.tree-title { padding: 2px 7px 10px; display: flex; justify-content: space-between; }
.tree-title a { width: 25px; height: 25px; display: grid; place-items: center; border-radius: 6px; background: var(--blue-soft); }
.tree-all, .tree-subject, .topic-node a:first-child { display: block; padding: 7px 8px; border-radius: 6px; color: #4e5953; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.tree-all.active, .tree-subject.active, .topic-node a.active { background: var(--blue-soft); color: var(--blue-dark); }
.tree-subject { margin-top: 6px; font-weight: 700; color: var(--text); }
.subject-heading { display: grid; grid-template-columns: minmax(0, 1fr) 28px; align-items: center; }
.subject-heading .topic-edit { opacity: 0; }
.subject-heading:hover .topic-edit, .subject-heading:focus-within .topic-edit { opacity: 1; }
.danger-zone { margin-top: 14px; display: flex; justify-content: flex-end; }
.topic-node { padding-left: calc(10px + var(--depth) * 13px); display: grid; grid-template-columns: minmax(0, 1fr) 24px; align-items: center; }
.topic-node a:first-child { font-size: 12px; }
.topic-edit { opacity: 0; text-align: center; color: var(--muted); }
.topic-node:hover .topic-edit { opacity: 1; }
.tree-links { margin-top: 17px; padding-top: 12px; border-top: 1px solid var(--line); display: grid; }
.tree-links a { padding: 7px 8px; font-size: 12px; }
.bank-center { min-height: 650px; overflow: hidden; }
.filterbar { padding: 13px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--line); }
.search-control { min-width: 180px; height: 37px; flex: 1; padding: 0 10px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.search-control input { width: 100%; border: 0; outline: 0; background: transparent; }
.material-tag-filters { padding: 9px 13px; display: flex; align-items: center; flex-wrap: wrap; gap: 6px; border-bottom: 1px solid var(--line); }
.material-tag-filters > span { margin-right: 2px; color: var(--muted); font-size: 11px; }
.material-tag-filters .tag-filter-item { margin: 0; display: inline-flex; align-items: center; }
.topic-coverage-card { margin: 13px; padding: 18px; border: 1px solid #d8dce8; border-left: 4px solid #776f93; border-radius: 10px; background: linear-gradient(135deg, #fff, #f7f5fb); }
.topic-coverage-card.status-complete { border-left-color: var(--green); background: linear-gradient(135deg, #fff, var(--green-soft)); }
.topic-coverage-card.status-almost { border-left-color: #b2874f; background: linear-gradient(135deg, #fff, var(--beige)); }
.topic-coverage-card.status-major_gap { border-left-color: var(--danger); }
.topic-coverage-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.topic-coverage-head h2, .topic-coverage-head p { margin-bottom: 0; }
.coverage-score { min-width: 100px; display: grid; justify-items: end; color: var(--muted); font-size: 11px; text-align: right; }
.coverage-score strong { color: var(--text); font-size: 25px; line-height: 1; }
.topic-summary { margin: 12px 0; color: #47514b; }
.topic-coverage-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.topic-coverage-grid > div { padding: 11px 12px; border: 1px solid rgba(212, 217, 213, .82); border-radius: 8px; background: rgba(255, 255, 255, .72); }
.topic-coverage-grid h3 { margin: 0 0 5px; font-size: 12px; }
.topic-coverage-grid p { margin: 0; color: var(--muted); font-size: 11px; white-space: pre-line; }
.topic-coverage-grid .coverage-missing { border-color: #ead4d4; background: #fff8f8; }
.official-basis { margin: 11px 0 0; color: var(--muted); font-size: 10px; }
.tag-filter-item form { margin-left: -7px; position: relative; }
.tag-filter-item form button { width: 19px; height: 19px; display: grid; place-items: center; padding: 0; border: 1px solid #dac8c8; border-radius: 50%; background: #fff; color: #9a6666; font-size: 13px; line-height: 1; cursor: pointer; }
.tag-filter-item form button:hover { border-color: var(--danger); color: var(--danger); }
.tag-chip, .material-tags a { display: inline-flex; align-items: center; gap: 4px; padding: 4px 8px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel-soft); color: var(--muted); font-size: 10px; }
.tag-chip:hover, .tag-chip.selected { border-color: #87a6bb; background: var(--blue-soft); color: var(--blue-dark); }
.tag-chip small { min-width: 17px; padding: 1px 4px; border-radius: 9px; background: rgba(255,255,255,.72); text-align: center; }
.list-meta { padding: 9px 14px; display: flex; justify-content: space-between; background: var(--panel-soft); color: var(--muted); font-size: 11px; }
.material-list-controls { display: flex; align-items: center; gap: 14px; }
.material-list-controls label { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.material-table { display: grid; }
.material-row-wrap { min-width: 0; display: grid; grid-template-columns: 38px minmax(0, 1fr); align-items: stretch; border-bottom: 1px solid var(--line); }
.material-row-wrap:hover, .material-row-wrap.selected, .material-row-wrap.is-checked { background: #f2f6f7; }
.material-selector { display: grid; place-items: center; cursor: pointer; }
.material-selector input { position: absolute; opacity: 0; pointer-events: none; }
.material-selector span { width: 18px; height: 18px; display: grid; place-items: center; border: 1px solid var(--line-strong); border-radius: 5px; background: #fff; }
.material-selector input:checked + span { border-color: var(--blue); background: var(--blue); }
.material-selector input:checked + span::after { content: "✓"; color: #fff; font-size: 12px; font-weight: 800; }
.material-selector input:focus-visible + span { box-shadow: 0 0 0 3px rgba(73, 111, 141, .18); }
.material-row { min-width: 0; min-height: 63px; padding: 9px 13px 9px 0; display: grid; grid-template-columns: 37px minmax(150px, 1fr) 105px 20px 68px; align-items: center; gap: 9px; color: var(--text); }
.file-icon { width: 32px; height: 36px; display: grid; place-items: center; border: 1px solid #d8e2e8; border-radius: 6px; background: var(--blue-soft); color: var(--blue-dark); font-size: 9px; font-weight: 800; }
.file-icon.large { width: 50px; height: 57px; font-size: 11px; }
.material-main { min-width: 0; display: flex; flex-direction: column; }
.material-main strong, .material-main small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.material-row-tags { margin-top: 4px; display: flex; gap: 4px; overflow: hidden; }
.material-row-tags i { padding: 1px 5px; border-radius: 9px; background: var(--blue-soft); color: var(--blue-dark); font-size: 9px; font-style: normal; white-space: nowrap; }
.material-tags { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 5px; }
.material-tags a:hover { border-color: #87a6bb; color: var(--blue-dark); }
.type-label { color: var(--muted); font-size: 11px; }
.star { color: #b0884f; }
.material-row time { color: var(--muted); font-size: 10px; text-align: right; }
.preview-panel { min-width: 0; height: 650px; padding: 16px; display: flex; flex-direction: column; overflow: auto; }
.preview-head { display: flex; justify-content: space-between; gap: 15px; }
.preview-head h2 { margin: 2px 0 0; }
.preview-head > a { font-size: 23px; color: var(--muted); }
.path-line { color: var(--muted); font-size: 12px; }
.mini-preview { width: 100%; min-height: 360px; flex: 1; border: 1px solid var(--line); border-radius: 7px; background: white; }
.image-preview { width: 100%; max-height: 380px; object-fit: contain; border-radius: 7px; background: var(--panel-soft); }
.text-preview { max-height: 390px; padding: 15px; overflow: auto; white-space: normal; border-radius: 7px; background: var(--panel-soft); }
.preview-actions { margin-top: auto; padding-top: 14px; }
.material-bulk-bar { position: sticky; top: 0; z-index: 8; padding: 10px 13px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-block: 1px solid #b9cbd5; background: #edf5f8; box-shadow: 0 5px 14px rgba(45, 65, 55, .08); }
.material-bulk-bar > strong { white-space: nowrap; }
.material-bulk-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.bulk-dialog { width: min(620px, calc(100% - 28px)); max-height: calc(100vh - 28px); padding: 0; overflow: auto; border: 0; border-radius: 12px; background: transparent; box-shadow: 0 24px 80px rgba(30, 39, 34, .24); }
.bulk-dialog::backdrop { background: rgba(25, 34, 29, .48); backdrop-filter: blur(2px); }
.bulk-dialog-card { padding: 22px; background: var(--panel); }
.bulk-dialog-fields { display: grid; gap: 14px; }
.bulk-dialog-fields label { display: grid; gap: 6px; font-weight: 630; }
.bulk-dialog-fields small { color: var(--muted); font-weight: 400; }

.detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 15px; }
.content-panel { min-height: 650px; padding: 18px; }
.facts-panel { padding: 19px; align-self: start; }
.detail-card { max-width: 760px; padding: 22px; }
.document-preview { width: 100%; height: min(74vh, 850px); border: 1px solid var(--line); border-radius: 8px; background: white; }
.document-image { display: block; max-width: 100%; max-height: 76vh; margin: auto; object-fit: contain; }
.prose { max-width: 850px; font-size: 15px; line-height: 1.7; }
.file-card { padding: 12px; display: flex; align-items: center; gap: 11px; color: var(--text); border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.file-card.big { min-height: 150px; justify-content: center; }
.file-card > span:nth-child(2), .file-card > div { display: flex; flex-direction: column; }
.facts-panel dl, .detail-list { display: grid; grid-template-columns: 105px minmax(0, 1fr); gap: 9px 13px; }
dt { color: var(--muted); font-size: 12px; }
dd { margin: 0; overflow-wrap: anywhere; }
.teacher-note { margin: 18px 0; padding: 13px; border-left: 3px solid #c6b795; border-radius: 0 7px 7px 0; background: var(--beige); }
.teacher-note p { margin: 4px 0 0; color: #5b554b; }

.narrow-head { max-width: 980px; }
.form-panel { max-width: 980px; padding: 24px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 17px 18px; }
.field { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.field.is-hidden { display: none; }
.field label, .stack-form label { color: #434c47; font-weight: 630; }
.required { color: var(--danger); }
.control, .stack-form input:not([type=hidden]):not([type=checkbox]), .stack-form select, .stack-form textarea { width: 100%; min-height: 40px; padding: 9px 11px; border: 1px solid var(--line-strong); border-radius: 8px; outline: none; background: #fff; color: var(--text); }
textarea.control { resize: vertical; }
.control:focus, .stack-form input:focus, .stack-form textarea:focus, .stack-form select:focus { border-color: #87a6bb; box-shadow: 0 0 0 3px rgba(73, 111, 141, .1); }
select[multiple] { min-height: 135px; }
.select-filter { min-height: 34px; margin-bottom: 1px; background: var(--panel-soft); }
.select-count { display: block; color: var(--muted); }
.field-checkbox { flex-direction: row; align-items: center; padding-top: 22px; }
.field-checkbox label { order: 2; }
.field-checkbox input { width: 18px; height: 18px; }
.help { font-size: 11px; }
.duration-presets { display: flex; flex-wrap: wrap; gap: 5px; }
.duration-presets button { padding: 4px 8px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel-soft); color: var(--muted); font-size: 10px; cursor: pointer; }
.duration-presets button:hover { border-color: var(--blue); color: var(--blue-dark); }
.lesson-type-presets { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }
.lesson-type-presets button { min-height: 42px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); color: var(--muted); cursor: pointer; text-align: left; }
.lesson-type-presets button:hover, .lesson-type-presets button.active { border-color: #87a6bb; background: var(--blue-soft); color: var(--blue-dark); }
.field[data-field-name="lesson_type"] { grid-column: 1 / -1; }
.field[data-field-name="lesson_type"] > select { max-width: 360px; }
.field[data-field-name="is_free"] { padding: 13px; border: 1px solid var(--line); border-radius: 9px; background: var(--panel-soft); transition: .15s ease; }
.field[data-field-name="is_free"].is-checked { border-color: #87b299; background: var(--green-soft); }
.lesson-schedule-card { margin-bottom: 14px; }
.field-error, .errorlist { color: var(--danger); font-size: 12px; list-style: none; padding: 0; margin: 0; }
.form-alert { padding: 11px 13px; margin-bottom: 16px; color: #7d3f3f; border: 1px solid #ead0d0; border-radius: 8px; background: #fbf0f0; }
.is-hidden { display: none !important; }
.form-actions { margin-top: 24px; padding-top: 17px; display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); }
.stack-form { display: grid; gap: 14px; }
.stack-form label { display: grid; gap: 6px; }

.drop-zone { min-height: 220px; padding: 28px; display: flex !important; align-items: center; justify-content: center; flex-direction: column; gap: 7px; border: 1.5px dashed #aebbc2; border-radius: 10px; background: #f7fafb; cursor: pointer; text-align: center; transition: .15s ease; }
.drop-zone:hover, .drop-zone.dragging { border-color: var(--blue); background: var(--blue-soft); }
.drop-zone input { max-width: 330px; margin-top: 12px; }
.drop-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; background: var(--blue-soft); color: var(--blue-dark); font-size: 22px; }
.selected-files { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.selected-files span { padding: 10px; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 7px; }
.import-review { padding: 19px; }
.responsive-table { max-width: 100%; overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th { padding: 10px; color: var(--muted); background: var(--panel-soft); font-size: 11px; font-weight: 700; text-align: left; text-transform: uppercase; letter-spacing: .04em; }
td { padding: 11px 10px; border-bottom: 1px solid var(--line); vertical-align: middle; }
td small { display: block; }
.table-actions { display: flex; align-items: center; gap: 5px; }
.table-actions form { display: inline; }
.table-actions button { border: 0; background: transparent; color: var(--danger); cursor: pointer; }

.card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.entity-card { min-height: 190px; padding: 19px; display: flex; flex-direction: column; color: var(--text); }
.entity-card:hover { border-color: #bdccd4; color: var(--text); transform: translateY(-1px); }
.entity-card h2 { margin: 8px 0; }
.entity-card footer { margin-top: auto; padding-top: 15px; display: flex; justify-content: space-between; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; }
.entity-icon { width: 37px; height: 37px; display: grid; place-items: center; border-radius: 8px; background: var(--green-soft); color: var(--green); font-weight: 800; }
.progress-row { margin-top: auto; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 10px; }
.progress { height: 6px; overflow: hidden; border-radius: 10px; background: var(--line); }
.progress span { display: block; height: 100%; border-radius: inherit; background: var(--green); }
.large-progress { height: 9px; }
.split-layout { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr); gap: 15px; }
.split-layout > .panel { padding: 19px; }
.ordered-items { margin: 0; padding: 0; list-style: none; }
.ordered-items li { min-height: 58px; display: grid; grid-template-columns: 31px minmax(0, 1fr) auto; align-items: center; gap: 10px; border-bottom: 1px solid var(--line); }
.order-number { width: 25px; height: 25px; display: grid; place-items: center; border-radius: 6px; background: var(--panel-soft); color: var(--muted); font-size: 11px; }
.ordered-items li > div:nth-child(2) { display: flex; flex-direction: column; }
.row-actions, .row-actions form { display: flex; }
.candidate-list { display: grid; max-height: 540px; overflow: auto; }
.candidate-list form { padding: 10px 2px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--line); }
.candidate-list form span { min-width: 0; display: flex; flex-direction: column; }
.path-summary { margin-bottom: 14px; padding: 17px 20px; display: grid; grid-template-columns: 150px minmax(200px, 1fr) 55px; align-items: center; gap: 20px; }
.path-summary > div:first-child { display: flex; flex-direction: column; }
.path-summary > div:first-child span { font-size: 20px; font-weight: 750; }
.template-summary { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.template-summary > div { display: grid; gap: 3px; }
.template-summary > div span { font-size: 18px; font-weight: 750; }
.path-description { min-height: auto; margin-bottom: 14px; }
.path-table-head { padding: 17px 20px 0; }
.path-template-stats { margin: auto 0 15px; display: flex; gap: 22px; }
.path-template-stats span { display: grid; }
.path-template-stats strong { font-size: 20px; }
.path-template-stats small { color: var(--muted); }
.metric-pill { padding: 7px 11px; border-radius: 20px; background: var(--blue-soft); color: var(--blue-dark); font-weight: 650; }
.assign-panel { margin-top: 14px; padding: 17px 20px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.assign-panel h2, .assign-panel p { margin-bottom: 3px; }
.assign-panel form, .inline-form { display: flex; align-items: center; gap: 8px; }
.inline-check { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.path-assignment-list { margin-top: 14px; padding: 18px 20px; }
.assignment-rows { display: grid; }
.assignment-rows > a { padding: 11px 0; display: grid; grid-template-columns: minmax(190px, 1fr) minmax(130px, .7fr) 45px 18px; align-items: center; gap: 12px; color: var(--text); border-top: 1px solid var(--line); }
.assignment-rows > a > span:first-child { display: grid; }
.assignment-rows small { color: var(--muted); }
.status { display: inline-flex; width: fit-content; padding: 3px 7px; border-radius: 12px; background: var(--panel-soft); color: var(--muted); font-size: 10px; font-weight: 700; white-space: nowrap; }
.status.done, .status.completed, .status.reviewed, .status.active { background: var(--green-soft); color: var(--green); }
.status.in_progress, .status.planned, .status.submitted, .status.assigned { background: var(--blue-soft); color: var(--blue-dark); }
.status.deferred, .status.paused { background: var(--beige); color: #7a6448; }
.status.skipped { background: var(--beige); color: #7a6448; }
.status.paid { background: var(--green-soft); color: var(--green); }
.status.pending { background: var(--beige); color: #7a6448; }
.status.no_charge { background: var(--panel-soft); color: var(--muted); }
.status.cancelled { background: #f7eaea; color: var(--danger); }

.telegram-page-nav { margin-top: -7px; margin-bottom: 20px; }
.telegram-metrics { margin-bottom: 14px; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.telegram-metric { min-height: 98px; padding: 17px; display: grid; align-content: center; gap: 4px; }
.telegram-metric small { font-size: 11px; }
.telegram-metric strong { font-size: 27px; line-height: 1; letter-spacing: -.035em; }
.telegram-metric.accent { background: var(--blue-dark); border-color: var(--blue-dark); }
.telegram-metric.accent small, .telegram-metric.accent strong { color: white; }
.telegram-health-grid { margin-bottom: 14px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.telegram-health-card, .telegram-section, .telegram-profile-card { padding: 19px; }
.telegram-section { margin-bottom: 14px; }
.telegram-status-line { min-height: 60px; padding: 12px; display: flex; align-items: center; gap: 11px; border-radius: 8px; background: var(--panel-soft); }
.telegram-status-line .connection-dot { flex: 0 0 auto; }
.telegram-status-line div { display: grid; }
.compact-facts { margin: 12px 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.compact-facts > div { padding: 9px 11px; display: grid; border: 1px solid var(--line); border-radius: 7px; }
.compact-facts dt { color: var(--muted); font-size: 10px; text-transform: uppercase; }
.compact-facts dd { margin: 2px 0 0; font-weight: 650; }
.setup-checklist { margin: 0; padding: 0; display: grid; gap: 8px; list-style: none; }
.setup-checklist li { padding: 9px; display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 8px; }
.setup-checklist li > span { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; background: var(--panel-soft); color: var(--muted); font-size: 11px; font-weight: 750; }
.setup-checklist li > div { display: grid; }
.setup-checklist li.done > span { background: var(--green-soft); color: var(--green); }
.setup-checklist + .card-actions { margin-top: 12px; }
.table-subtitle { margin-top: 2px; }
.telegram-copy-row { margin-top: 5px; display: flex; align-items: center; gap: 7px; font-size: 11px; }
.copy-button { padding: 2px 6px; border: 1px solid var(--line); border-radius: 5px; background: var(--panel-soft); color: var(--muted); cursor: pointer; font-size: 10px; }
.telegram-profile-card { margin-bottom: 14px; }

.student-list { display: grid; }
.student-row { min-height: 72px; padding: 10px 14px; display: grid; grid-template-columns: 42px minmax(190px, 1.2fr) minmax(180px, 1fr) 120px 90px 20px; align-items: center; gap: 13px; color: var(--text); border-bottom: 1px solid var(--line); }
.student-row:hover { background: var(--panel-soft); }
.student-row > span { min-width: 0; display: flex; flex-direction: column; }
.student-row strong, .student-row small { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.avatar { width: 38px; height: 38px; display: grid !important; place-items: center; border-radius: 50%; background: var(--purple-soft); color: #655f7a; font-weight: 750; }
.student-hero { margin-bottom: 14px; padding: 18px 20px; display: grid; grid-template-columns: 60px minmax(230px, 1fr) auto auto; align-items: center; gap: 17px; }
.large-avatar { width: 54px; height: 54px; font-size: 19px; }
.student-identity h1 { margin-bottom: 3px; }
.student-identity .back-link { margin-bottom: 5px; }
.student-identity p { margin: 0; }
.student-metrics { display: flex; gap: 11px; }
.student-metrics > div { min-width: 75px; padding: 8px 11px; display: flex; flex-direction: column; border-left: 1px solid var(--line); }
.student-metrics strong { font-size: 18px; }
.tab-nav { margin-bottom: 14px; padding: 0 8px; display: flex; gap: 3px; overflow-x: auto; border-bottom: 1px solid var(--line-strong); }
.tab-nav a { padding: 10px 11px; color: var(--muted); white-space: nowrap; }
.tab-nav a:hover { color: var(--blue-dark); border-bottom: 2px solid var(--blue); }
.tab-nav a.active { color: var(--blue-dark); border-bottom: 2px solid var(--blue-dark); font-weight: 700; }
.profile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.profile-grid > .panel { min-width: 0; padding: 19px; scroll-margin-top: 90px; }
.record-list { display: grid; }
.record-list > a { min-height: 61px; padding: 8px 2px; display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 12px; color: var(--text); border-bottom: 1px solid var(--line); }
.record-list time { display: flex; flex-direction: column; text-align: center; }
.record-list time strong { font-size: 18px; color: var(--blue-dark); }
.record-list > a > span:nth-child(2) { min-width: 0; display: flex; flex-direction: column; }
.payment-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.payment-summary > div { padding: 13px; display: grid; gap: 4px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.payment-summary small { color: var(--muted); }
.payment-summary strong { font-size: 19px; }
.payment-summary .payment-due { border-color: #dcc7a6; background: var(--beige); }
.payment-summary .payment-due strong { color: #765d3c; }
.payment-list { margin-top: 14px; display: grid; }
.payment-list article { min-height: 62px; padding: 9px 2px; display: grid; grid-template-columns: minmax(0, 1fr) auto 145px; align-items: center; gap: 10px; border-bottom: 1px solid var(--line); }
.payment-list article > a { min-width: 0; display: grid; grid-template-columns: 85px minmax(0, 1fr); align-items: center; gap: 12px; color: var(--text); }
.payment-list article > a > span { min-width: 0; display: grid; }
.payment-list article small { color: var(--muted); }
.payment-list form .button { width: 100%; }
.chart-wrap { width: 100%; max-width: 100%; min-width: 0; min-height: 220px; overflow-x: auto; }
.chart-wrap svg { width: 100%; min-width: 560px; height: 220px; }
.axis { stroke: var(--line-strong); stroke-width: 1; }
.chart-line { fill: none; stroke: var(--blue); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.chart-wrap circle { fill: var(--panel); stroke: var(--blue); stroke-width: 3; }
.result-chips { max-width: 100%; min-width: 0; display: flex; gap: 8px; overflow-x: auto; }
.result-chips span, .result-chips a { min-width: 130px; padding: 9px; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: 7px; color: inherit; }
.result-chips a:hover { border-color: #a9bcc7; background: var(--blue-soft); }
.exam-chart-head { margin-top: 12px; display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.exam-chart-head h3 { margin: 0; }
.exam-chart-head small { color: var(--muted); }
.exam-table-wrap { max-width: 100%; overflow-x: auto; border: 1px solid var(--line); border-radius: 9px; }
.exam-table { width: 100%; min-width: 1120px; border-collapse: collapse; }
.exam-table th { padding: 10px 11px; background: var(--panel-soft); color: var(--muted); font-size: 11px; font-weight: 700; text-align: left; white-space: nowrap; }
.exam-table td { padding: 11px; vertical-align: middle; border-top: 1px solid var(--line); }
.exam-table td:nth-child(2) small, .exam-table td:nth-child(3) small, .exam-table td:nth-child(4) small { display: block; margin-top: 2px; }
.file-link { display: grid; gap: 2px; }
.exam-table td small, .file-link small { color: var(--muted); font-size: 10px; }
.exam-table .empty { min-width: 0; }
.exam-delta { display: inline-flex; padding: 3px 7px; border-radius: 12px; background: var(--panel-soft); color: var(--muted); font-size: 11px; font-weight: 700; white-space: nowrap; }
.exam-delta.positive { background: var(--green-soft); color: var(--green); }
.exam-delta.negative { background: #fbefef; color: var(--danger); }
.exam-comment { display: block; max-width: 220px; color: var(--muted); }
.file-link { color: var(--blue-dark); }
.variant-link { max-width: 230px; display: grid; gap: 2px; color: var(--text); }
.variant-link:hover strong { color: var(--blue-dark); }
.result-modal { width: min(740px, calc(100% - 28px)); max-height: calc(100vh - 28px); padding: 0; overflow: auto; border: 0; border-radius: 12px; background: transparent; box-shadow: 0 24px 80px rgba(30, 39, 34, .24); }
.result-modal::backdrop { background: rgba(25, 34, 29, .48); backdrop-filter: blur(2px); }
.result-modal-card { padding: 22px; background: var(--panel); }
.modal-close { width: 34px; height: 34px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: var(--panel-soft); color: var(--muted); font-size: 22px; cursor: pointer; }
.result-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.result-form-grid .span-2 { grid-column: 1 / -1; }
.result-modal-actions { margin-top: 18px; }
.result-modal-delete { margin-top: 10px; padding-top: 12px; border-top: 1px solid var(--line); text-align: right; }
.exam-attachments { min-width: 150px; display: grid; gap: 7px; }
.exam-attachments .file-link { padding-bottom: 6px; border-bottom: 1px solid var(--line); }
.exam-attachments .file-link:last-child { padding-bottom: 0; border-bottom: 0; }
.current-result-files { margin-top: 9px; padding: 10px; display: grid; gap: 7px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.current-result-files > small { color: var(--muted); }
.current-result-file-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px; padding-top: 7px; border-top: 1px solid var(--line); }
.current-result-file-row a { min-width: 0; overflow: hidden; color: var(--blue-dark); text-overflow: ellipsis; white-space: nowrap; }
.current-result-file-row span { color: var(--danger); font-size: 11px; }
.file-strip { max-width: 100%; min-width: 0; display: flex; gap: 9px; overflow-x: auto; }
.file-strip > a { min-width: 230px; padding: 10px; display: flex; gap: 9px; color: var(--text); border: 1px solid var(--line); border-radius: 8px; }
.file-strip > a > span:last-child { display: flex; flex-direction: column; }

.lesson-detail-grid .content-panel { min-height: auto; }
.lesson-section { padding: 12px 0; border-bottom: 1px solid var(--line); }
.lesson-section h3 { margin-bottom: 5px; color: var(--muted); }
.lesson-section p { margin-bottom: 0; color: var(--text); }
.lesson-sections-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.lesson-block { min-height: 120px; padding: 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.lesson-block.theory { border-top: 3px solid var(--blue); }
.lesson-block.practice { border-top: 3px solid var(--green); }
.lesson-payment-amount { margin: 6px 0 12px; padding: 13px; display: grid; gap: 3px; border-radius: 8px; background: var(--green-soft); }
.lesson-payment-amount strong { font-size: 24px; }
.lesson-payment-amount small { color: var(--muted); }
.payment-action { margin-bottom: 6px; }
.lesson-student-chips { margin-top: 10px; }
.participant-payment-list { display: grid; gap: 10px; }
.participant-payment-list article { padding-bottom: 11px; border-bottom: 1px solid var(--line); }
.participant-payment-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.participant-payment-list .lesson-payment-amount { margin: 8px 0; }
.participant-path { display: block; margin-bottom: 8px; color: var(--blue-dark); font-size: 11px; }
.participant-actions { display: flex; gap: 6px; }
.participant-actions form { flex: 1; }
.participant-actions .button { width: 100%; }
.student-path-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.student-path-card { padding: 15px; border: 1px solid var(--line); border-radius: 9px; background: var(--panel-soft); }
.student-path-card.primary { border-color: #9db6a7; background: var(--green-soft); }
.student-path-card h3 { margin-bottom: 4px; }
.student-path-card footer { margin-top: 13px; display: flex; justify-content: space-between; color: var(--muted); font-size: 11px; }
.result-head { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
.student-path-summary { margin-bottom: 14px; padding: 18px 20px; display: grid; grid-template-columns: 120px minmax(220px, 1fr) 150px 150px; align-items: center; gap: 18px; }
.student-path-summary > div:not(.progress) { display: grid; gap: 2px; }
.student-path-summary strong { font-size: 20px; }
.student-path-summary small { color: var(--muted); }
.path-progress-list { display: grid; gap: 12px; }
.path-progress-item { padding: 18px; display: grid; grid-template-columns: 34px minmax(0, 1fr) 180px; gap: 16px; border-left: 4px solid var(--line-strong); }
.path-progress-item.in_progress { border-left-color: var(--blue); }
.path-progress-item.done { border-left-color: var(--green); }
.path-progress-item.skipped { border-left-color: #b2874f; opacity: .8; }
.path-block-list, .student-path-blocks { display: grid; gap: 16px; }
.path-block { padding: 0; overflow: hidden; }
.path-block-head { padding: 19px; display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: start; gap: 14px; background: var(--panel-soft); border-bottom: 1px solid var(--line); }
.path-block-head h2, .student-progress-block-head h2 { margin-bottom: 4px; }
.path-block-head p, .student-progress-block-head p { margin-bottom: 5px; color: var(--muted); }
.path-block-number { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 10px; background: var(--blue-dark); color: #fff; font-size: 16px; font-weight: 750; }
.path-block-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.path-block-items { display: grid; }
.path-template-item { padding: 15px 18px; display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: start; gap: 13px; border-bottom: 1px solid var(--line); border-left: 4px solid var(--blue); }
.path-template-item:last-child { border-bottom: 0; }
.path-template-item.type-test { border-left-color: #b2874f; }
.path-template-item.type-practice_variant { border-left-color: #776f93; }
.path-template-item.type-extra_lesson { border-left-color: var(--green); }
.path-template-item.type-checkpoint { border-left-color: var(--danger); }
.path-item-order { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; background: var(--panel-soft); color: var(--muted); font-size: 11px; font-weight: 750; }
.path-template-title { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
.path-template-title h3 { margin: 0; }
.path-template-title > small { color: var(--muted); }
.path-item-type { padding: 3px 7px; border-radius: 10px; background: var(--blue-soft); color: var(--blue-dark); font-size: 10px; font-weight: 750; text-transform: uppercase; letter-spacing: .03em; }
.path-template-main > p { margin: 7px 0; color: var(--muted); }
.path-item-plan { margin-top: 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--panel-soft); overflow: hidden; }
.path-item-plan summary { padding: 10px 12px; cursor: pointer; color: var(--blue-dark); font-size: 12px; font-weight: 750; }
.path-item-plan[open] summary { border-bottom: 1px solid var(--line); }
.path-item-plan section { padding: 12px; background: var(--panel); border-bottom: 1px solid var(--line); }
.path-item-plan section:last-child { border-bottom: 0; }
.path-item-plan h4 { margin: 0 0 7px; font-size: 13px; }
.path-item-plan section div { color: var(--muted); font-size: 12px; line-height: 1.55; }
.path-template-details { margin-top: 9px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.path-template-details span { padding: 8px; display: grid; gap: 2px; border-radius: 7px; background: var(--panel-soft); color: var(--muted); font-size: 11px; }
.path-template-details strong { color: var(--text); }
.student-progress-block { padding: 0; overflow: hidden; }
.student-progress-block-head { padding: 18px 20px; display: grid; grid-template-columns: minmax(0, 1fr) 180px; gap: 18px; align-items: center; background: var(--panel-soft); border-bottom: 1px solid var(--line); }
.block-progress-value { display: grid; gap: 6px; text-align: right; }
.block-progress-value strong { font-size: 22px; }
.path-progress-list.nested { gap: 0; }
.path-progress-list.nested .path-progress-item { border-radius: 0; border-top: 0; border-right: 0; border-bottom: 1px solid var(--line); }
.path-progress-list.nested .path-progress-item:last-child { border-bottom: 0; }
.path-progress-item.type-test { border-left-color: #b2874f; }
.path-progress-item.type-practice_variant { border-left-color: #776f93; }
.path-progress-item.type-extra_lesson { border-left-color: var(--green); }
.path-progress-item.type-checkpoint { border-left-color: var(--danger); }
.trajectory-note { display: flex; gap: 8px; color: var(--muted); }
.trajectory-note strong { color: var(--text); }
.trajectory-activity-log { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }
.trajectory-activity-entry { display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 7px; overflow: hidden; background: var(--panel-soft); }
.trajectory-activity-log a { padding: 6px 8px; display: grid; gap: 1px; color: var(--text); font-size: 10px; }
.trajectory-activity-log a span { color: var(--muted); }
.trajectory-activity-entry form { display: flex; border-left: 1px solid var(--line); }
.trajectory-close-button { width: 28px; border: 0; background: transparent; color: var(--green); cursor: pointer; font-weight: 800; }
.trajectory-close-button:hover { background: var(--panel); }
.trajectory-slot { display: grid; gap: 1px; color: var(--text); }
.trajectory-slot small { color: var(--blue); }
.trajectory-assign-form { margin: 12px 0 18px; padding: 14px; display: grid; grid-template-columns: minmax(240px, 1fr) auto auto; gap: 12px; align-items: end; border: 1px solid var(--line); border-radius: 10px; background: var(--panel-soft); }
.trajectory-assign-form label:first-child { display: grid; gap: 6px; color: var(--muted); font-size: 12px; }
.student-path-card-actions { margin-top: 12px; padding-top: 10px; display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); }
.path-progress-number { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: var(--panel-soft); color: var(--muted); font-weight: 750; }
.path-progress-main .section-head { margin-bottom: 9px; }
.path-progress-meta { margin-top: 12px; display: grid; grid-template-columns: 100px 120px minmax(0, 1fr); gap: 12px; }
.path-progress-meta span, .linked-learning span { display: grid; gap: 2px; }
.path-progress-meta small, .linked-learning small { color: var(--muted); font-size: 10px; }
.linked-learning { margin-top: 12px; display: flex; gap: 22px; }
.path-progress-actions { display: flex; flex-direction: column; align-items: stretch; gap: 7px; }
.large-records > a { min-height: 70px; padding: 10px 14px; grid-template-columns: 55px minmax(0, 1fr) auto 20px; }
.linked-material { margin-bottom: 17px; padding: 12px; display: grid; grid-template-columns: 35px 1fr auto; gap: 11px; align-items: center; color: var(--text); border: 1px solid var(--line); border-radius: 8px; background: var(--blue-soft); }
.linked-material > span:nth-child(2) { display: flex; flex-direction: column; }
.submission-list { display: grid; gap: 15px; }
.submission-list article { padding-bottom: 15px; border-bottom: 1px solid var(--line); }

.calendar-panel { padding: 16px; overflow: hidden; }
.calendar-toolbar { margin-bottom: 13px; display: flex; justify-content: space-between; align-items: center; }
.calendar-syncbar { margin: -8px 0 14px; padding: 9px 12px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel); color: var(--muted); font-size: 12px; }
.calendar-syncbar strong { color: var(--text); }
.calendar-syncbar form { margin-left: auto; }
.segmented { padding: 3px; display: flex; border-radius: 8px; background: var(--panel-soft); }
.segmented a { padding: 6px 12px; border-radius: 6px; color: var(--muted); font-size: 12px; }
.segmented a.active { background: var(--panel); color: var(--text); box-shadow: var(--shadow); }
.calendar-nav { display: flex; align-items: center; gap: 5px; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(115px, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); overflow-x: auto; }
.calendar-grid.day { grid-template-columns: minmax(280px, 1fr); }
.calendar-grid.day .calendar-day { min-height: 560px; }
.calendar-day { min-width: 115px; min-height: 430px; padding: 9px; display: flex; flex-direction: column; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--panel); }
.calendar-grid.month .calendar-day { min-height: 150px; }
.calendar-day.outside { background: var(--panel-soft); opacity: .65; }
.calendar-day header { display: flex; justify-content: space-between; align-items: center; color: var(--muted); }
.calendar-day header span { font-size: 10px; text-transform: uppercase; }
.calendar-day header a { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 50%; color: var(--text); font-weight: 700; }
.calendar-day.today header a { background: var(--blue-dark); color: white; }
.day-events { display: grid; gap: 6px; margin-top: 8px; }
.calendar-event { padding: 7px; display: flex; flex-direction: column; border-left: 3px solid var(--blue); border-radius: 4px 6px 6px 4px; background: var(--blue-soft); color: var(--text); font-size: 11px; }
.calendar-event.deadline { border-left-color: #b2874f; background: var(--beige); }
.calendar-event.local { border-left-color: var(--green); background: var(--green-soft); }
.calendar-event.google { border-left-color: #776f93; background: var(--purple-soft); }
.calendar-event.group { border-left-color: var(--green); background: var(--green-soft); }
.calendar-event.trial, .calendar-event.mock_exam { border-left-color: #b2874f; background: var(--beige); }
.calendar-event.consultation { border-left-color: #776f93; background: var(--purple-soft); }
.calendar-event.cancelled { opacity: .55; text-decoration: line-through; }
.calendar-change-label { color: #9a592b; font-weight: 750; }
.occurrence-scope-note { margin-bottom: 20px; }
.calendar-event time, .calendar-event small { font-size: 9px; }
.day-adds { margin-top: auto; padding-top: 12px; display: flex; justify-content: center; gap: 10px; opacity: 0; }
.day-adds a { color: #7c8781; font-size: 10px; }
.calendar-day:hover .day-adds, .calendar-day:focus-within .day-adds { opacity: 1; }
.calendar-legend { padding: 13px 2px 0; display: flex; flex-wrap: wrap; gap: 15px; color: var(--muted); font-size: 11px; }
.calendar-legend span { display: inline-flex; align-items: center; gap: 5px; }
.legend-dot { width: 8px; height: 8px; display: inline-block; border-radius: 50%; background: var(--blue); }
.legend-dot.local { background: var(--green); }
.legend-dot.group { background: var(--green); }
.legend-dot.trial { background: #b2874f; }
.legend-dot.google { background: #776f93; }
.legend-dot.deadline { background: #b2874f; }

.integration-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.integration-card { min-height: 270px; padding: 21px; }
.integration-card.google-card { grid-column: 1 / -1; }
.integration-title { display: flex; align-items: center; gap: 12px; }
.integration-title h2, .integration-title p { margin-bottom: 2px; }
.integration-logo { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 9px; background: var(--panel-soft); color: var(--muted); font-weight: 800; }
.integration-logo.google { background: var(--beige); color: #726043; }
.integration-logo.telegram { background: var(--blue-soft); color: var(--blue-dark); }
.connection-dot { width: 7px; height: 7px; display: inline-block; border-radius: 50%; background: #a8afab; }
.connection-dot.connected { background: #5d9871; }
.integration-state { margin: 17px 0; padding: 11px; border-radius: 7px; background: var(--panel-soft); color: var(--muted); font-size: 12px; }
.integration-card dl { display: grid; grid-template-columns: 150px 1fr; gap: 7px 12px; }
.sync-summary { margin: 16px 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.sync-summary span { padding: 11px 12px; display: grid; gap: 3px; border-radius: 8px; background: var(--panel-soft); }
.sync-summary small { color: var(--muted); }
.integration-error { margin: 12px 0; padding: 11px 12px; display: grid; gap: 2px; border: 1px solid #ead0d0; border-radius: 8px; background: #fbf0f0; color: #7d3f3f; font-size: 12px; }
.google-settings-form { margin-top: 17px; padding-top: 17px; border-top: 1px solid var(--line); }
.settings-toggle { display: flex; align-items: flex-start; gap: 10px; }
.settings-toggle input { width: 18px; height: 18px; margin-top: 2px; }
.settings-toggle label { display: grid; gap: 2px; }
.settings-toggle small { color: var(--muted); }
.settings-grid { margin-top: 15px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.settings-grid label { display: grid; align-content: start; gap: 6px; color: #434c47; font-weight: 630; }
.settings-grid label small { color: var(--muted); font-weight: 400; }
.settings-grid input, .settings-grid select { width: 100%; min-height: 40px; padding: 9px 11px; border: 1px solid var(--line-strong); border-radius: 8px; outline: none; background: #fff; color: var(--text); }
.settings-grid input:focus, .settings-grid select:focus { border-color: #87a6bb; box-shadow: 0 0 0 3px rgba(73, 111, 141, .1); }
.compact-actions { margin-top: 16px; padding-top: 14px; }
.muted-card { opacity: .78; }

.empty { min-height: 190px; padding: 28px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.compact-empty { min-height: 90px; padding: 16px; }
.empty p { max-width: 460px; }

.login-body { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: #eef0ec; }
.login-card { width: min(430px, 100%); padding: 31px; display: grid; gap: 28px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); box-shadow: 0 18px 55px rgba(32, 42, 36, .09); }
.login-brand { padding-bottom: 21px; border-bottom: 1px solid var(--line); }
.login-card h1 { font-size: 29px; }
.login-note { margin: 0; padding-top: 15px; border-top: 1px solid var(--line); font-size: 11px; text-align: center; }

.task-bank-nav { margin-top: -7px; margin-bottom: 20px; }
.task-bank-metrics { margin-bottom: 14px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.task-bank-metrics > * { min-height: 92px; padding: 16px; display: grid; align-content: center; gap: 3px; color: var(--text); }
.task-bank-metrics small { font-size: 11px; }
.task-bank-metrics strong { font-size: 25px; line-height: 1; }
.task-bank-metrics a { position: relative; background: var(--blue-soft); border-color: #cddde7; }
.task-bank-metrics a span { position: absolute; right: 14px; bottom: 11px; color: var(--blue-dark); font-size: 11px; }
.task-filterbar { padding: 12px; display: grid; grid-template-columns: minmax(220px, 1.5fr) minmax(190px, .8fr) 120px minmax(180px, 1fr) 150px auto auto; align-items: center; gap: 8px; }
.task-filterbar .button { min-width: 0; }
.task-bank-toolbar { padding: 10px 2px; display: flex; align-items: center; justify-content: space-between; color: var(--muted); font-size: 12px; }
.task-bank-list { display: grid; gap: 9px; }
.task-bank-card { min-width: 0; padding: 15px 17px; display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 15px; transition: .15s ease; }
.task-bank-card:hover { border-color: #bdccd4; box-shadow: 0 7px 24px rgba(30, 41, 34, .07); }
.task-number-badge { width: 47px; height: 47px; display: grid; place-items: center; border-radius: 9px; background: var(--blue-soft); color: var(--blue-dark); font-size: 14px; font-weight: 780; }
.task-bank-card-body { min-width: 0; }
.task-card-meta { display: flex; gap: 7px; flex-wrap: wrap; }
.task-card-meta span { padding: 2px 6px; border-radius: 10px; background: var(--panel-soft); color: var(--muted); font-size: 10px; }
.task-bank-card h2 { margin: 6px 0 5px; font-size: 16px; }
.task-statement-preview { max-height: 7.2em; margin-bottom: 10px; overflow: hidden; color: #3e4742; line-height: 1.6; white-space: pre-line; }
.task-bank-card footer { padding-top: 9px; display: flex; justify-content: space-between; gap: 12px; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.pagination { margin-top: 14px; display: flex; align-items: center; justify-content: space-between; }
.pagination > div { display: flex; gap: 7px; }
.task-editor-form { max-width: 980px; margin: 0 auto; }
.task-editor-form.wide-editor { max-width: 1500px; }
.task-editor-workspace { display: grid; grid-template-columns: minmax(540px, 1fr) minmax(400px, .82fr); align-items: start; gap: 15px; }
.task-editor-controls { min-width: 0; }
.task-editor-main { padding: 20px; }
.task-editor-main textarea[name="statement"] { min-height: 230px; font-family: "Segoe UI Variable Text", "Segoe UI", sans-serif; font-size: 15px; line-height: 1.65; }
.task-editor-optional { margin-top: 12px; }
.task-editor-optional > summary { padding: 15px 18px; display: flex; justify-content: space-between; align-items: center; cursor: pointer; list-style: none; }
.task-editor-optional > summary::-webkit-details-marker { display: none; }
.task-editor-optional > summary span:first-child { display: grid; }
.task-editor-optional > summary span:last-child { color: var(--blue-dark); font-size: 11px; }
.task-editor-optional[open] > summary { border-bottom: 1px solid var(--line); }
.task-editor-optional .form-grid { padding: 18px; }
.task-editor-actions { max-width: 980px; }
.wide-editor .task-editor-actions { max-width: none; }
.field-label-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.math-toolbar { margin-bottom: -1px; padding: 7px; display: flex; gap: 5px; flex-wrap: wrap; border: 1px solid var(--line-strong); border-radius: 8px 8px 0 0; background: var(--panel-soft); }
.math-toolbar button { min-height: 29px; padding: 4px 9px; border: 1px solid var(--line); border-radius: 6px; background: white; color: var(--blue-dark); cursor: pointer; font-size: 11px; font-weight: 650; }
.math-toolbar button:hover { border-color: #9fb4c1; background: var(--blue-soft); }
.task-statement-field textarea { border-radius: 0 0 8px 8px; }
.task-image-drop { position: relative; min-height: 104px; padding: 15px; display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 12px; border: 1.5px dashed #aebbc2; border-radius: 9px; background: #f8fafb; transition: .15s ease; }
.task-image-drop.dragging { border-color: var(--blue); background: var(--blue-soft); }
.task-image-drop-icon { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 50%; background: var(--blue-soft); color: var(--blue-dark); font-size: 20px; }
.task-image-drop > div:nth-child(2) { display: grid; }
.task-image-drop input[type="file"] { grid-column: 2; width: 100%; }
.task-image-drop .clearable-file-input { grid-column: 2; }
.task-image-filename { grid-column: 2; color: var(--muted); font-size: 11px; }
.task-live-preview { position: sticky; top: 85px; min-width: 0; }
.task-preview-label { margin: 0 0 7px 4px; display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 11px; font-weight: 680; text-transform: uppercase; letter-spacing: .04em; }
.task-preview-paper { max-height: calc(100vh - 150px); overflow-y: auto; }
.task-preview-title { padding: 18px 28px 0; color: var(--muted); font-size: 12px; font-weight: 680; }
.task-preview-paper .exam-statement { min-height: 220px; padding-top: 18px; white-space: pre-wrap; }
.task-preview-image-wrap { margin-top: -8px !important; }
.task-preview-help { margin: 8px 4px 0; font-size: 11px; }
.math-content { overflow-wrap: anywhere; }
.task-detail-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(280px, .55fr); align-items: start; gap: 14px; }
.exam-paper { overflow: hidden; }
.exam-paper > header { min-height: 70px; padding: 13px 19px; display: grid; grid-template-columns: 45px minmax(0, 1fr) auto; align-items: center; gap: 11px; background: var(--panel-soft); border-bottom: 1px solid var(--line); }
.exam-paper > header > div { display: grid; }
.exam-paper-number { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; background: var(--blue-dark); color: white; font-size: 17px; font-weight: 780; }
.difficulty-badge { padding: 5px 8px; border-radius: 14px; background: var(--beige); color: #765d3c; font-size: 11px; font-weight: 700; }
.exam-statement { padding: clamp(22px, 3.5vw, 42px); color: #171c19; font-family: "Segoe UI Variable Text", "Segoe UI", sans-serif; font-size: clamp(16px, 1.25vw, 18px); line-height: 1.7; }
.exam-paper figure { margin: 0 auto 30px; padding: 0 30px; text-align: center; }
.exam-paper figure img { max-width: min(100%, 760px); max-height: 540px; object-fit: contain; }
.exam-answer { margin: 0 28px 20px; padding: 14px 17px; display: grid; gap: 3px; border-left: 3px solid var(--green); border-radius: 5px; background: var(--green-soft); }
.exam-answer strong { font-family: "Segoe UI Variable Text", "Segoe UI", sans-serif; font-size: 16px; }
.exam-solution { margin: 0 28px 28px; border: 1px solid var(--line); border-radius: 8px; }
.exam-solution summary { padding: 12px 15px; cursor: pointer; color: var(--blue-dark); font-weight: 680; }
.exam-solution > div { padding: 15px; border-top: 1px solid var(--line); font-family: "Segoe UI Variable Text", "Segoe UI", sans-serif; font-size: 15px; line-height: 1.65; }
.task-facts { padding: 19px; }
.task-facts dl { margin: 0; display: grid; grid-template-columns: 95px minmax(0, 1fr); gap: 9px; }
.task-facts dt { color: var(--muted); font-size: 11px; }
.task-facts dd { margin: 0; overflow-wrap: anywhere; font-weight: 620; }
.task-source, .task-variant-links { margin-top: 17px; padding-top: 14px; display: grid; gap: 5px; border-top: 1px solid var(--line); }
.task-import-layout { display: grid; grid-template-columns: minmax(300px, .7fr) minmax(460px, 1.3fr); align-items: start; gap: 14px; }
.task-import-card, .task-template-guide { padding: 20px; }
.task-import-card .stack-form { margin-top: 20px; }
.task-import-card .stack-form .button { width: fit-content; }
.import-safety-note { margin-top: 20px; padding: 13px; border-radius: 8px; background: var(--green-soft); }
.import-safety-note p { margin: 4px 0 0; }
.template-field-list { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
.template-field-list > div { padding: 9px 0; display: grid; grid-template-columns: minmax(125px, .65fr) minmax(0, 1fr); gap: 9px; border-bottom: 1px solid var(--line); }
.template-field-list code { color: var(--blue-dark); font-size: 11px; font-weight: 700; }
.template-field-list span { color: var(--muted); font-size: 12px; }
.template-tip { margin: 17px 0 0; padding: 11px; border-radius: 7px; background: var(--panel-soft); }
.variant-builder > .panel { min-width: 0; }
.variant-candidate-filter { margin-bottom: 10px; display: grid; grid-template-columns: minmax(0, 1fr) 115px auto; gap: 6px; }
.exam-variant-grid .entity-card { min-height: 215px; }
.import-or { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 10px; text-transform: uppercase; }
.import-or::before, .import-or::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.code-input { min-height: 260px; font-family: "Cascadia Code", Consolas, monospace; font-size: 12px; line-height: 1.55; }
.json-mini-example { margin-top: 12px; border: 1px solid var(--line); border-radius: 7px; }
.json-mini-example summary { padding: 10px 12px; cursor: pointer; color: var(--blue-dark); font-size: 12px; font-weight: 650; }
.json-mini-example pre { margin: 0; padding: 12px; overflow-x: auto; border-top: 1px solid var(--line); background: var(--panel-soft); font-size: 11px; }
.homework-template-filter { margin-bottom:14px; padding:12px; display:flex; gap:8px; }
.homework-template-filter input { flex:1; }
.homework-template-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.homework-template-grid > .empty { grid-column:1 / -1; }
.homework-template-card { min-height:245px; padding:19px; display:flex; flex-direction:column; }
.homework-template-card-head { display:grid; grid-template-columns:42px minmax(0,1fr); align-items:center; gap:11px; }
.homework-template-card-head > span,.homework-template-bigmark { width:42px; height:42px; display:grid; place-items:center; border-radius:10px; background:var(--blue-dark); color:#fff; font-size:11px; font-weight:800; }
.homework-template-card-head small { color:var(--muted); font-size:10px; text-transform:uppercase; }
.homework-template-card h2 { margin:2px 0 0; font-size:18px; }
.homework-template-card h2 a { color:var(--ink); text-decoration:none; }
.homework-template-card > p { margin:16px 0; color:var(--muted); font-size:12px; line-height:1.5; }
.homework-template-stats { margin-top:auto; padding:10px 0; display:flex; flex-wrap:wrap; gap:7px; border-top:1px solid var(--line); color:var(--muted); font-size:10px; }
.homework-template-stats span { padding:5px 7px; border-radius:6px; background:var(--panel-soft); }
.homework-template-stats strong { color:var(--ink); }
.homework-template-card footer { padding-top:10px; display:flex; justify-content:space-between; gap:7px; }
.homework-template-editor { display:grid; grid-template-columns:minmax(0,1fr) 300px; align-items:start; gap:14px; }
.homework-template-editor > .panel:first-child { padding:22px; }
.homework-template-aside { position:sticky; top:86px; padding:22px; }
.homework-template-aside h2 { margin:14px 0 7px; }
.homework-template-aside p,.homework-template-aside li { color:var(--muted); font-size:12px; line-height:1.5; }
.homework-template-aside ul { padding-left:17px; }
.homework-template-detail-grid { margin-bottom:14px; display:grid; grid-template-columns:minmax(0,1fr) 300px; align-items:start; gap:14px; }
.homework-template-detail-grid > .panel { padding:20px; }
.homework-template-task-list { display:grid; gap:7px; }
.homework-template-task-list > a { padding:11px; display:grid; grid-template-columns:28px minmax(0,1fr) 18px; align-items:start; gap:9px; border:1px solid var(--line); border-radius:9px; color:var(--ink); text-decoration:none; }
.homework-template-task-list > a:hover { border-color:#a9c2d1; background:#f8fbfc; }
.homework-template-task-list b { width:27px; height:27px; display:grid; place-items:center; border-radius:7px; background:var(--blue-soft); color:var(--blue-dark); font-size:10px; }
.homework-template-task-list span { display:grid; gap:2px; }
.homework-template-task-list small,.homework-template-task-list em { color:var(--muted); font-size:10px; font-style:normal; }
.homework-template-task-list i { color:var(--blue-dark); font-style:normal; }
.template-theory-list { margin-top:16px; padding-top:14px; display:flex; flex-wrap:wrap; gap:7px; border-top:1px solid var(--line); }
.template-theory-list h3 { width:100%; margin:0 0 3px; font-size:13px; }
.template-theory-list a { padding:6px 8px; border-radius:7px; background:var(--green-soft); color:#476857; font-size:10px; text-decoration:none; }
.homework-template-settings { position:sticky; top:86px; }
.homework-template-settings form { margin-top:16px; }
.homework-template-import { margin-bottom:18px; padding:12px; display:grid; grid-template-columns:minmax(160px,1fr) minmax(220px,1.3fr) auto; align-items:center; gap:9px; border:1px solid #cbdde7; border-radius:9px; background:#f2f7fa; }
.homework-template-import > div { display:grid; }
.homework-template-import small { color:var(--muted); font-size:10px; }
.teacher-analytics-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:9px; }
.teacher-analytics-grid > div { padding:13px; display:grid; gap:4px; border:1px solid var(--line); border-radius:9px; background:var(--panel-soft); }
.teacher-analytics-grid small { color:var(--muted); font-size:10px; }
.teacher-analytics-grid strong { color:var(--blue-dark); font-size:23px; }
.analytics-columns { margin-top:14px; display:grid; grid-template-columns:1fr 1.4fr; gap:14px; }
.analytics-mini-list { display:grid; gap:6px; }
.analytics-mini-list > div { padding:8px 10px; display:grid; grid-template-columns:1fr auto; gap:8px; border-bottom:1px solid var(--line); font-size:11px; }
.analytics-mini-list small { grid-column:1/-1; color:var(--muted); }
.uploaded-work-list { display:grid; gap:9px; }
.uploaded-work-list article { padding:13px; display:grid; grid-template-columns:minmax(180px,1fr) minmax(260px,1.3fr); gap:12px; border:1px solid var(--line); border-radius:9px; }
.uploaded-work-meta { display:grid; align-content:start; gap:4px; }
.uploaded-work-meta small,.uploaded-work-meta p { margin:0; color:var(--muted); font-size:10px; }
.uploaded-work-files { display:flex; flex-wrap:wrap; gap:5px; }
.uploaded-work-files a { padding:5px 7px; border-radius:6px; background:var(--blue-soft); color:var(--blue-dark); font-size:9px; text-decoration:none; }
.uploaded-work-review { display:grid; grid-template-columns:140px minmax(0,1fr) auto; align-items:end; gap:7px; }
.uploaded-work-review textarea { min-height:58px; }

@media (max-width: 1380px) {
  .bank-layout.has-preview { grid-template-columns: 220px minmax(400px, 1fr); }
  .bank-layout.has-preview .preview-panel { grid-column: 1 / -1; height: auto; }
  .bank-layout.has-preview .mini-preview { min-height: 500px; }
  .material-cards { grid-template-columns: repeat(2, 1fr); }
  .student-row { grid-template-columns: 42px minmax(180px, 1fr) minmax(160px, .8fr) 100px 80px 20px; }
  .task-filterbar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .task-filterbar .task-search { grid-column: span 2; }
}

@media (max-width: 900px) {
  .app-shell { display: block; }
  .sidebar { position: sticky; width: 100%; height: auto; padding: 9px 12px; flex-direction: row; align-items: center; border-right: 0; border-bottom: 1px solid var(--line); overflow-x: auto; }
  .sidebar .brand span:last-child, .sidebar-foot { display: none; }
  .brand-mark { width: 32px; height: 32px; }
  .main-nav { margin: 0 0 0 8px; flex: 1; flex-direction: row; gap: 1px; }
  .main-nav a { min-height: 36px; padding: 7px 9px; white-space: nowrap; font-size: 12px; }
  .nav-icon { display: none; }
  .topbar { top: 51px; height: 58px; padding: 9px 16px; }
  .global-search { width: 100%; }
  .topbar-actions { display: none; }
  .page-wrap { padding: 22px 16px 45px; }
  .bank-layout, .bank-layout.has-preview { grid-template-columns: 1fr; }
  .tree-panel { min-height: auto; max-height: 300px; }
  .topic-edit, .subject-heading .topic-edit { opacity: 1; }
  .bank-center { min-height: 500px; }
  .preview-panel { height: auto; }
  .detail-grid, .split-layout { grid-template-columns: 1fr; }
  .facts-panel { grid-row: auto; }
  .dashboard-grid { grid-template-columns: 1fr; }
  .span-2 { grid-column: auto; }
  .card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .student-row { grid-template-columns: 42px 1fr auto; }
  .student-row > span:nth-child(3), .student-row > span:nth-child(4), .student-row > span:nth-child(6) { display: none; }
  .student-hero { grid-template-columns: 55px 1fr auto; }
  .student-hero .quick-actions { grid-column: 1 / -1; }
  .profile-grid { grid-template-columns: 1fr; }
  .student-hero .span-2, .profile-grid .span-2 { grid-column: auto; }
  .integration-grid { grid-template-columns: 1fr; }
  .task-bank-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .task-detail-layout, .task-import-layout { grid-template-columns: 1fr; }
  .homework-template-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .homework-template-editor, .homework-template-detail-grid { grid-template-columns: 1fr; }
  .homework-template-aside, .homework-template-settings { position: static; }
  .teacher-analytics-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .analytics-columns { grid-template-columns: 1fr; }
  .task-editor-workspace { grid-template-columns: 1fr; }
  .task-live-preview { position: static; }
  .task-preview-paper { max-height: none; }
  .template-field-list { grid-template-columns: 1fr; }
  .telegram-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .telegram-health-grid { grid-template-columns: 1fr; }
  .calendar-grid { grid-template-columns: repeat(7, minmax(140px, 1fr)); }
  .trajectory-assign-form { grid-template-columns: 1fr; align-items: stretch; }
}

@media (max-width: 620px) {
  h1 { font-size: 23px; }
  .sidebar { position: fixed; z-index: 50; top: auto; right: 8px; bottom: 8px; left: 8px; width: auto; min-height: 64px; padding: 5px; border: 1px solid rgba(212, 217, 213, .95); border-radius: 15px; background: rgba(255, 254, 251, .96); box-shadow: 0 12px 36px rgba(30, 41, 34, .16); overflow: visible; backdrop-filter: blur(16px); }
  .sidebar .brand { display: none; }
  .main-nav { min-width: 0; margin: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2px; overflow: visible; }
  .main-nav::-webkit-scrollbar { display: none; }
  .main-nav > a { min-width: 0; min-height: 52px; justify-content: center; flex-direction: column; gap: 2px; padding: 5px 3px; font-size: 9px; line-height: 1.1; }
  .main-nav .nav-icon { width: 24px; display: block; font-size: 17px; line-height: 1; }
  .main-nav > .mobile-secondary { display: none; }
  .mobile-nav-more { min-width: 0; display: block; position: relative; }
  .mobile-nav-more summary { min-height: 52px; padding: 5px 3px; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 2px; border-radius: 9px; color: #53605a; font-size: 9px; font-weight: 590; line-height: 1.1; cursor: pointer; list-style: none; }
  .mobile-nav-more summary::-webkit-details-marker { display: none; }
  .mobile-nav-more.active summary, .mobile-nav-more[open] summary { background: var(--blue-soft); color: var(--blue-dark); }
  .mobile-nav-popover { width: min(230px, calc(100vw - 24px)); padding: 7px; display: grid; gap: 3px; position: absolute; right: 0; bottom: 61px; border: 1px solid var(--line-strong); border-radius: 12px; background: rgba(255, 254, 251, .98); box-shadow: 0 16px 44px rgba(30, 41, 34, .19); backdrop-filter: blur(16px); }
  .mobile-nav-popover a { min-height: 42px; padding: 8px 10px; display: flex; align-items: center; justify-content: flex-start; flex-direction: row; gap: 9px; border-radius: 8px; color: #53605a; font-size: 12px; }
  .mobile-nav-popover a.active { background: var(--blue-soft); color: var(--blue-dark); }
  .mobile-nav-popover .nav-icon { width: 22px; font-size: 16px; }
  .topbar { top: 0; height: 56px; padding: 8px 12px; }
  .page-wrap { padding: 20px 12px calc(96px + env(safe-area-inset-bottom)); }
  .page-head { align-items: flex-start; flex-direction: column; }
  .page-head .quick-actions { width: 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-head .quick-actions .button, .page-head .quick-actions form { width: 100%; min-width: 0; }
  .page-head .quick-actions form .button { width: 100%; }
  .global-search kbd { display: none; }
  .material-cards, .card-grid { grid-template-columns: 1fr; }
  .topic-coverage-card { margin: 9px; padding: 14px; }
  .topic-coverage-head { flex-direction: column; gap: 10px; }
  .coverage-score { justify-items: start; text-align: left; }
  .topic-coverage-grid { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  .lesson-type-presets { grid-template-columns: 1fr; }
  .field.span-2 { grid-column: auto; }
  .form-panel { padding: 16px; }
  .material-row { grid-template-columns: 35px minmax(0, 1fr) 20px; }
  .material-row .type-label, .material-row time { display: none; }
  .material-bulk-bar { align-items: flex-start; flex-direction: column; }
  .material-bulk-actions { width: 100%; justify-content: flex-start; }
  .selected-files { grid-template-columns: 1fr; }
  .filterbar { flex-wrap: wrap; }
  .filterbar .search-control { flex-basis: 100%; }
  .filterbar > .button { width: 100%; }
  .path-summary { grid-template-columns: 1fr 45px; }
  .path-summary > div:first-child { grid-column: 1 / -1; }
  .template-summary { grid-template-columns: repeat(2, 1fr); }
  .template-summary > div:first-child { grid-column: auto; }
  .assign-panel { align-items: stretch; flex-direction: column; }
  .assign-panel form { align-items: stretch; flex-direction: column; }
  .student-hero { grid-template-columns: 48px 1fr; padding: 15px; }
  .student-metrics { grid-column: 1 / -1; }
  .student-hero .quick-actions { flex-wrap: nowrap; }
  .student-hero .quick-actions .button { flex: 1; }
  .detail-list, .facts-panel dl { grid-template-columns: 90px 1fr; }
  .student-path-cards, .lesson-sections-grid { grid-template-columns: 1fr; }
  .student-path-card-actions { justify-content: stretch; flex-direction: column; }
  .student-path-card-actions .button { width: 100%; }
  .path-block-head { grid-template-columns: 36px minmax(0, 1fr); }
  .path-block-actions { grid-column: 2; justify-content: flex-start; }
  .path-template-item { grid-template-columns: 28px minmax(0, 1fr); }
  .path-template-item > .table-actions { grid-column: 2; }
  .path-template-details { grid-template-columns: 1fr; }
  .student-progress-block-head { grid-template-columns: 1fr; }
  .block-progress-value { text-align: left; }
  .trajectory-note { flex-direction: column; }
  .payment-summary { grid-template-columns: repeat(2, 1fr); }
  .payment-list article { grid-template-columns: 1fr auto; }
  .payment-list article form { grid-column: 1 / -1; }
  .result-form-grid { grid-template-columns: 1fr; }
  .result-form-grid .span-2 { grid-column: auto; }
  .student-path-summary { grid-template-columns: 1fr; }
  .path-progress-item { grid-template-columns: 30px minmax(0, 1fr); }
  .path-progress-actions { grid-column: 2; }
  .path-progress-meta { grid-template-columns: 1fr 1fr; }
  .path-progress-meta span:last-child { grid-column: 1 / -1; }
  .assignment-rows > a { grid-template-columns: 1fr 45px 18px; }
  .assignment-rows > a .progress { display: none; }
  .calendar-panel { padding: 9px; }
  .calendar-toolbar { align-items: flex-start; gap: 10px; }
  .calendar-grid { grid-template-columns: repeat(7, minmax(125px, 1fr)); }
  .calendar-grid.day { grid-template-columns: minmax(260px, 1fr); }
  .calendar-syncbar { align-items: flex-start; flex-wrap: wrap; }
  .calendar-syncbar form { margin-left: 15px; }
  .settings-grid, .sync-summary { grid-template-columns: 1fr; }
  .telegram-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .telegram-metric.accent { grid-column: 1 / -1; }
  .compact-facts { grid-template-columns: 1fr; }
  .task-filterbar { grid-template-columns: 1fr; }
  .task-filterbar .task-search { grid-column: auto; }
  .task-bank-metrics { grid-template-columns: 1fr 1fr; }
  .task-bank-card { grid-template-columns: 42px minmax(0, 1fr); padding: 12px; gap: 10px; }
  .task-number-badge { width: 40px; height: 40px; }
  .exam-statement { padding: 22px 18px; }
  .exam-paper figure, .exam-answer, .exam-solution { margin-left: 18px; margin-right: 18px; padding-left: 0; padding-right: 0; }
  .variant-candidate-filter { grid-template-columns: 1fr; }
  .homework-template-grid, .teacher-analytics-grid { grid-template-columns: 1fr; }
  .homework-template-import, .uploaded-work-list article, .uploaded-work-review { grid-template-columns: 1fr; }
  .day-adds { opacity: 1; }
  .toast-stack { left: 12px; right: 12px; }
  .toast { max-width: none; }
}

/* Consistent focus, calmer surfaces and safe wrapping across the workspace. */
:where(.page-head, .section-head, .material-row, .student-row, .entity-card, .panel) > * { min-width: 0; }
:where(h1, h2, h3, p, strong, small, td, th, label, a) { overflow-wrap: anywhere; }
:where(a, button, input, select, textarea):focus-visible { outline: 3px solid rgba(73, 111, 141, .24); outline-offset: 2px; }
.panel { border-radius: 12px; box-shadow: 0 5px 22px rgba(30, 41, 34, .045); }
.main-nav a, .button, .control, .stack-form input:not([type=hidden]):not([type=checkbox]), .stack-form select, .stack-form textarea { border-radius: 9px; }
.material-row-wrap, .student-row, .simple-list > a { transition: background-color .15s ease, border-color .15s ease; }
.material-row-wrap:hover, .student-row:hover, .simple-list > a:hover { background: rgba(232, 240, 245, .42); }

@media (min-width: 901px) and (max-width: 1180px) {
  .app-shell { grid-template-columns: 196px minmax(0, 1fr); }
  .sidebar { padding-inline: 12px; }
  .main-nav a { padding-inline: 9px; }
  .page-wrap { padding-inline: 24px; }
}

@media (min-width: 621px) and (max-width: 900px) {
  .sidebar { scrollbar-width: none; }
  .sidebar::-webkit-scrollbar { display: none; }
  .main-nav a { min-height: 38px; }
  .page-head { margin-bottom: 19px; }
}

@media (max-width: 420px) {
  .page-head .quick-actions { grid-template-columns: 1fr; }
  .topbar { padding-inline: 10px; }
  .page-wrap { padding-inline: 10px; }
  .bulk-dialog-card, .result-modal-card { padding: 16px; }
  .button { white-space: normal; text-align: center; }
  .login-body { padding: 12px; }
  .login-card { padding: 22px; gap: 22px; border-radius: 14px; }
  .login-card h1 { font-size: 25px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
