/* Axioma Interface — shared visual system for the cabinet, board and trainers.
   Feature styles retain geometry and state contracts; this layer owns surfaces,
   typography, controls and responsive application composition. */
:root {
  --paper: #f3f5f1;
  --paper-soft: #eaeee8;
  --paper-card: #fff;
  --ink: #183c30;
  --ink-soft: #62756b;
  --line: #dde5dd;
  --accent: #227354;
  --accent-hover: #195e44;
  --on-accent: #fff;
  --header-bg: #f9fbf8;
  --ui-glass: rgb(250 252 248 / .84);
  --ui-hover: #edf3ec;
  --ui-selected: #dfeee1;
  --ui-muted-surface: #f7f9f5;
  --ui-gold: #f0b429;
  --ui-ring: #378360;
  --ui-shadow: 0 2px 6px rgb(18 59 46 / .025), 0 16px 40px rgb(18 59 46 / .045);
  --ui-float: 0 20px 80px rgb(18 40 30 / .17), 0 1px 3px rgb(18 40 30 / .05);
  --shadow-soft: var(--ui-shadow);
  --shadow-tight: 0 4px 16px rgb(18 40 30 / .06);
  --radius-xl: 26px;
  --radius-lg: 22px;
  --radius-md: 14px;
  --radius-sm: 10px;
  --ui-control: 44px;
  --ui-rail: 220px;
  --ui-header: 76px;
  --ui-ease: cubic-bezier(.2,.75,.25,1);
  --desk-width: 1600px;
  color-scheme: light;
}
.workspace-search { display: none; align-items: center; justify-content: center; gap: 10px; min-height: 44px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 13px; background: var(--paper-card); color: var(--ink); font: inherit; cursor: pointer; }
.ui-signed-in .workspace-search { display: flex; }
.workspace-search kbd { font: 11px var(--font); color: var(--ink-soft); padding: 3px 5px; border: 1px solid var(--line); border-radius: 5px; }
.workspace-search-form { display: flex; align-items: center; gap: 10px; }
.workspace-search-form input { flex: 1; width: 0; }
.workspace-search-form > .btn { width: auto; flex: 0 0 auto; margin: 0; }
.workspace-filters { display: flex; flex-wrap: wrap; gap: 6px; margin: 16px 0; }
.workspace-filter { min-height: 40px; border: 1px solid var(--line); padding: 8px 12px; border-radius: 12px; background: var(--paper-card); color: var(--ink-soft); font: 500 12px var(--font); cursor: pointer; }
.workspace-filter[aria-pressed='true'] { background: var(--ui-selected); color: var(--ink); border-color: var(--accent); }
.workspace-status { color: var(--ink-soft); font-size: 13px; line-height: 1.6; }
.workspace-result-group h3 { font-size: 13px; color: var(--ink-soft); margin: 20px 0 8px; }
.workspace-result { display: flex; flex-direction: column; align-items: flex-start; gap: 7px; width: 100%; min-height: 64px; padding: 14px; margin: 6px 0; text-align: left; border: 1px solid var(--line); border-radius: 14px; background: var(--paper-card); color: var(--ink); font: inherit; cursor: pointer; overflow-wrap: anywhere; }
.workspace-result:hover { background: var(--ui-hover); }
.workspace-result span { font-size: 12px; line-height: 1.5; color: var(--ink-soft); }
.workspace-material-note { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.7; }
.workspace-attention {
  min-width: 0;
  border: 1px solid color-mix(in srgb, var(--ui-gold) 48%, var(--line));
  background: color-mix(in srgb, var(--ui-gold) 5%, var(--paper-card));
}
.workspace-attention--active {
  border-color: color-mix(in srgb, var(--ui-gold) 76%, var(--line));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-gold) 10%, transparent), var(--ui-shadow);
}
.workspace-attention-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.workspace-attention-head h2 { margin: 0; }
.workspace-refresh { border: 1px solid var(--line); border-radius: 11px; background: color-mix(in srgb, var(--accent) 10%, var(--paper-card)); color: var(--accent); padding: 10px 16px; min-height: 44px; font: 700 13px var(--font); cursor: pointer; }
.workspace-refresh:hover { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 18%, var(--paper-card)); }
.workspace-refresh:active { transform: translateY(1px); }
.workspace-task-hide { position: absolute; top: 8px; right: 8px; width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 9px; background: var(--paper-card); color: var(--ink-soft); font: 22px var(--font); cursor: pointer; }
.workspace-task-hide:hover { border-color: var(--accent); color: var(--accent); }
.workspace-task-hide:focus-visible, .workspace-refresh:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.workspace-task-kind { padding-right: 30px; min-height: 25px; }
.workspace-tasks {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, 330px);
  gap: 10px; overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain;
  scrollbar-width: thin; scroll-snap-type: x proximity; padding: 3px 3px 10px;
}
.workspace-task {
  position: relative; min-height: 178px; padding: 15px 15px 15px 18px; margin: 0;
  border: 1px solid var(--line); border-left-width: 4px; border-radius: 14px;
  background: var(--paper-card); overflow-wrap: anywhere; scroll-snap-align: start;
}
.workspace-task:first-child { margin-top: 0; }
.workspace-task--warning { border-left-color: #e3a613; background: color-mix(in srgb, #f0b429 12%, var(--paper-card)); }
.workspace-task--critical { border-left-color: #d85c52; background: color-mix(in srgb, #d85c52 11%, var(--paper-card)); }
.workspace-task--normal { border-left-color: #4d83bd; background: color-mix(in srgb, #4d83bd 7%, var(--paper-card)); }
.workspace-task--substitution { box-shadow: inset 0 0 0 1px color-mix(in srgb, #f0b429 18%, transparent); cursor: pointer; }
.workspace-task--substitution:hover { background: color-mix(in srgb, #f0b429 18%, var(--paper-card)); }
.workspace-task h3 { font-size: 15px; line-height: 1.4; margin: 6px 0; }
.workspace-task p { font-size: 13px; line-height: 1.55; margin: 0 0 6px; }
.workspace-task-kind, .workspace-task-time { display: block; font-size: 11px; color: var(--ink-soft); }
.workspace-task .btn { margin-top: 12px; min-height: 44px; font-size: 12px; }
.workspace-task-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.workspace-task-actions .btn { width: auto; }
.sub-response-note {
  width: 100%; resize: vertical; margin-top: 14px; padding: 12px 14px;
  border: 1px solid var(--line); border-radius: 12px;
  background: var(--paper); color: var(--ink); font: inherit;
}
.workspace-pagination { display: flex; justify-content: space-between; align-items: center; gap: 6px; padding-top: 14px; border-top: 1px solid var(--line); font-size: 12px; }
.workspace-pagination .btn { padding: 8px 12px; min-width: 0; }
@media (max-width: 760px) {
  .workspace-search { width: 44px; padding: 8px; }
  .workspace-search span, .workspace-search kbd { display: none; }
  .workspace-search-form { gap: 6px; }
  .workspace-search-form .btn { padding: 10px 14px; }
  .workspace-attention .workspace-tasks { grid-auto-columns: minmax(250px, 86vw); }
}
@media (max-width: 360px) {
  .site-header .header-actions > [data-theme-toggle] { display: none; }
  .site-header [data-site-link] { display: none; }
}
[data-theme='dark'] {
  --paper: #101c18;
  --paper-soft: #24352d;
  --paper-card: #1b2b23;
  --ink: #edf3e9;
  --ink-soft: #a5b7aa;
  --line: #34453b;
  --accent: #f0b429;
  --accent-hover: #f6c557;
  --on-accent: #19271e;
  --header-bg: #16251d;
  --ui-glass: rgb(25 41 32 / .9);
  --ui-hover: #293d30;
  --ui-selected: #344735;
  --ui-muted-surface: #203128;
  --ui-ring: #f0b429;
  --danger: #f3998b;
  --ui-shadow: 0 3px 8px rgb(0 0 0 / .08), 0 16px 40px rgb(0 0 0 / .10);
  --ui-float: 0 20px 80px rgb(0 0 0 / .35);
  color-scheme: dark;
}
* { box-sizing: border-box; }
html { scroll-padding-top: 96px; }
body { background: var(--paper); color: var(--ink); font-size: 15px; line-height: 1.55; letter-spacing: -.015em; }
button, input, select, textarea { font-family: var(--font); }
/* Native dropdown menus need an explicit foreground and background pair. */
select { color-scheme: inherit; }
select option, select optgroup {
  background-color: var(--paper-card);
  color: var(--ink);
}
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
button { touch-action: manipulation; }
button:disabled, [aria-disabled='true'] { cursor: not-allowed; }
h1, h2, h3, strong, b { letter-spacing: -.025em; }
h1 { font-weight: 650; line-height: 1.16; }
h2, h3 { font-weight: 650; }
:focus-visible { outline: 3px solid var(--ui-ring); outline-offset: 3px; }
[hidden] { display: none !important; }
.ui-skip { position: fixed; top: 8px; left: 16px; z-index: 1000; padding: 12px 20px; border-radius: 12px; background: var(--paper-card); color: var(--ink); transform: translateY(-180%); }
.ui-skip:focus { transform: none; }
/* Consistent action sizes. Compact status chips are not styled as buttons. */
.btn, .btn--sm, .btn--small, .desk-link, .profile-out, .sub-create,
.popover__add, .popover__cancel, .nl__next, .nl__back, .report-next, .report-back {
  min-height: var(--ui-control); border-radius: 12px; padding: 10px 17px;
  font-size: 14px; font-weight: 600; line-height: 1.35; letter-spacing: -.01em;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  transition: background-color 160ms ease, box-shadow 160ms ease, transform 160ms var(--ui-ease);
}
.btn { border: 1px solid transparent; box-shadow: 0 2px 3px rgb(0 0 0 / .025); }
.btn--ghost { background: var(--paper-card); border: 1px solid var(--line); color: var(--ink); box-shadow: none; }
.btn--ghost:hover { background: var(--ui-hover); border-color: var(--line); }
.btn:active, .desk-link:active { transform: scale(.98); }
.desk-link { background: var(--ui-hover); border: 1px solid transparent; text-decoration: none; color: var(--accent); }
.desk-link:hover { background: var(--ui-selected); text-decoration: none; }
.btn--danger, .profile-out { color: var(--danger); }
input:not([type='checkbox']):not([type='radio']):not([type='range']):not([type='color']), select, textarea,
.nl__field, .profile-field input {
  min-height: 46px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--ui-muted-surface); color: var(--ink); font-size: 15px;
  padding: 11px 13px; box-shadow: none;
}
input::placeholder, textarea::placeholder { color: var(--ink-soft); opacity: .85; }
input:focus, textarea:focus, select:focus { border-color: var(--ui-ring); outline: 3px solid color-mix(in srgb,var(--ui-ring) 18%,transparent); outline-offset: 1px; }
input[type='checkbox'], input[type='radio'] { accent-color: var(--accent); width: 20px; height: 20px; }
label { font-size: 14px; font-weight: 550; }
/* Application frame */
.site-header { height: var(--ui-header); position: sticky; top: 0; z-index: 50; background: var(--ui-glass); border-bottom: 1px solid color-mix(in srgb,var(--line) 70%,transparent); box-shadow: none; backdrop-filter: blur(24px) saturate(135%); -webkit-backdrop-filter: blur(24px) saturate(135%); }
.site-header .header-inner { max-width: none; height: 100%; padding: 0 32px; gap: 26px; }
.site-header .logo { width: 184px; flex: 0 0 auto; }
.header-label { border: 0; font-size: 13px; font-weight: 500; letter-spacing: 0; color: var(--ink-soft); padding-left: 0; text-transform: none; }
.header-actions { gap: 12px; }
.bellbtn, .avatar-button, .drawer__close, .nl__close, .modal__close { min-width: 44px; min-height: 44px; border-radius: 14px; }
.bellbtn { background: var(--paper-card); border: 1px solid var(--line); }
.avatar--head { width: 42px; height: 42px; border-radius: 14px; font-weight: 600; }
.bellbox { top: 58px; width: min(390px, calc(100vw - 24px)); border-radius: 22px; border: 1px solid var(--line); box-shadow: var(--ui-float); background: var(--paper-card); }
body.ui-signed-in .lk-main { padding: 28px 32px 40px calc(var(--ui-rail) + 56px); --lk-content: var(--desk-width); }
body.ui-signed-in .lk-main .container { width: 100%; max-width: 1600px; padding: 0; margin: 0 auto; }
body.ui-signed-in #signed-in { width: 100%; }
body.ui-signed-in .site-footer { margin-left: calc(var(--ui-rail) + 40px); padding: 16px 32px; background: transparent; color: var(--ink-soft); border-top: 1px solid var(--line); }
body.ui-signed-in .site-footer .container { max-width: none; }
.nav-row {
  position: fixed; top: calc(var(--ui-header) + 20px); bottom: 20px; left: 20px;
  width: var(--ui-rail); margin: 0; padding: 18px 12px; z-index: 45;
  display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 6px;
  border: 1px solid color-mix(in srgb,var(--line) 78%,transparent); border-radius: 24px;
  background: var(--ui-glass); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
  box-shadow: var(--ui-shadow); overflow-y: auto; scrollbar-width: thin;
}
.rail-caption { margin: 5px 12px 10px; color: var(--ink-soft); font-size: 11px; font-weight: 650; letter-spacing: .075em; text-transform: uppercase; }
.nav-row { flex-wrap: nowrap; }
@media (min-width: 761px) {
  .nav-row { overflow-y: auto; overflow-x: hidden; }
  .nav-row > * { flex-shrink: 0; }
}
.tabs.tabs--nav { position: static; inset: auto; display: flex; flex-direction: column; width: 100%; min-width: 0; max-width: none; margin: 0; padding: 0; gap: 5px; background: none; border: 0; border-radius: 0; box-shadow: none; overflow: visible; }
.tabs--nav button, .tabs--nav .tabs__link, .rail-action {
  display: flex; align-items: center; justify-content: flex-start; gap: 12px; flex: none;
  width: 100%; min-height: 48px; margin: 0; padding: 12px 14px; border: 0; border-radius: 13px;
  font: 550 14px/1.35 var(--font); letter-spacing: -.015em; text-align: left; color: var(--ink-soft); background: transparent; text-decoration: none; cursor: pointer;
}
.tabs--nav button svg, .tabs--nav .tabs__link svg, .rail-action svg { width: 21px; height: 21px; flex: none; stroke-width: 1.7; }
.tabs--nav button:hover, .tabs--nav .tabs__link:hover, .rail-action:hover { background: var(--ui-hover); color: var(--ink); }
.tabs.tabs--nav button[aria-selected='true'], .rail-action[aria-current='page'] { background: var(--ui-selected); color: var(--ink); box-shadow: none; font-weight: 650; }
.tabs__dot { position: static; margin-left: auto; width: 7px; height: 7px; }
.rail-extra { border-top: 1px solid var(--line); padding-top: 14px; margin-top: 16px; }
.nav-row__acts { display: grid; gap: 8px; margin-top: 8px; }
.nav-row__acts .sub-create { width: 100%; margin: 0; white-space: normal; min-height: 44px; font-size: 12px; padding: 10px; }
.rail-bottom { margin-top: auto; padding-top: 20px; }
.rail-note { padding: 14px; border-radius: 16px; background: var(--ui-hover); color: var(--ink-soft); font-size: 12px; line-height: 1.6; margin: 10px 0 0; }
.rail-note strong { display: block; margin-bottom: 3px; font-size: 13px; color: var(--ink); }
.rail-more { display: none; }
.rail-action--overflow { display: none; }

/* «+ Создать»: на компьютере — первая кнопка полки, заметнее разделов. */
.rail-create {
  display: flex; align-items: center; gap: 10px; width: 100%; min-height: 46px;
  margin: 0 0 14px; padding: 12px 14px; border: 0; border-radius: 14px;
  font: 700 14px/1.2 var(--font); letter-spacing: -.015em; text-align: left; cursor: pointer;
  color: var(--on-accent); background: var(--accent); box-shadow: var(--shadow-tight);
}
.rail-create:hover { background: var(--accent-hover); }
.rail-create svg { width: 20px; height: 20px; flex: none; }
.rail-create[hidden] { display: none; }

/* Лист «Что создать». На компьютере — поповер у полки, на телефоне — снизу. */
.create-sheet {
  position: fixed; z-index: 60; width: 330px;
  padding: 14px; border: 1px solid var(--line); border-radius: 22px;
  background: var(--paper-card); box-shadow: var(--ui-float);
}
.create-sheet[hidden] { display: none; }
.create-sheet__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 2px 4px 12px; }
.create-sheet__head strong { font-size: 15px; letter-spacing: -.02em; }
/* Крестик — квадрат фиксированного размера, значок ровно в центре: иначе
   он съезжал к левому верхнему углу подложки. */
.create-sheet__close { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; flex: none; padding: 0; border: 0; border-radius: 12px; background: transparent; color: var(--ink-soft); cursor: pointer; line-height: 0; }
.create-sheet__close svg { display: block; width: 20px; height: 20px; }
.create-sheet__close:hover { background: var(--ui-hover); color: var(--ink); }
.create-sheet__grid { display: grid; gap: 8px; }
.create-tile {
  display: flex; align-items: center; gap: 13px; width: 100%; min-height: 62px;
  padding: 12px 14px; border: 1px solid transparent; border-radius: 16px;
  font: inherit; text-align: left; color: var(--ink); cursor: pointer;
  background: var(--tile-bg); border-color: var(--tile-line);
}
.create-tile:hover:not(:disabled) { border-color: var(--tile-ink); }
.create-tile:disabled { cursor: default; opacity: .6; }
.create-tile__art { display: flex; flex: none; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 12px; background: var(--tile-ink); color: var(--paper-card); }
.create-tile__copy { display: grid; gap: 2px; min-width: 0; }
.create-tile__copy strong { font-size: 14px; font-weight: 650; letter-spacing: -.015em; }
.create-tile__copy small { font-size: 12px; color: var(--ink-soft); line-height: 1.4; }
/* Пастель — светлые оттенки палитры Axioma; в тёмной теме приглушённые. */
.create-tile[data-tone='sea'] { --tile-ink: #4f86c0; }
.create-tile[data-tone='matcha'] { --tile-ink: #1F7A5A; }
.create-tile[data-tone='butter'] { --tile-ink: #C08A12; }
.create-tile[data-tone='blush'] { --tile-ink: #C4577A; }
.create-tile[data-tone='steel'] { --tile-ink: #5c7c8a; }
.create-tile { --tile-bg: color-mix(in srgb, var(--tile-ink) 12%, var(--paper-card)); --tile-line: color-mix(in srgb, var(--tile-ink) 26%, transparent); }
[data-theme='dark'] .create-tile { --tile-bg: color-mix(in srgb, var(--tile-ink) 22%, var(--paper-card)); --tile-line: color-mix(in srgb, var(--tile-ink) 38%, transparent); }
[data-theme='dark'] .create-tile__art { color: var(--paper); }

/* Content and role-specific priorities */
#view-home { display: flex; flex-direction: column; gap: 20px; }
#view-home > .sub-center { order: 2; margin: 0; }
.desk { gap: 22px; padding: 0; margin: 0; align-items: start; }
.desk-col { gap: 22px; }
.desk-hello {
  padding: 28px 30px; gap: 24px; border-radius: 24px; box-shadow: var(--ui-shadow);
  background: var(--paper-card); border: 1px solid var(--line); position: relative; overflow: hidden;
}
.desk-hello::before { content: ''; position: absolute; inset: 24px auto 24px 0; width: 4px; border-radius: 0 4px 4px 0; background: var(--ui-gold); }
.desk-hello__hi { font-size: 13px; font-weight: 500; margin-bottom: 12px; color: var(--ink-soft); }
.desk-hello__title { font-size: clamp(23px, 2.3vw, 34px); font-weight: 650; line-height: 1.2; max-width: 30ch; letter-spacing: -.04em; }
.desk-hello__line { margin-top: 10px; font-size: 14px; line-height: 1.55; }
.desk-hello__actions { gap: 10px; margin-top: 20px; }
.desk-hello__go { min-height: 46px; font-size: 14px; padding: 12px 20px; animation: none; }
.desk-hello__counts { display: grid; grid-template-columns: repeat(2,minmax(100px,1fr)); gap: 8px; flex: 0 1 280px; }
.desk-count { border: 0; background: var(--ui-muted-surface); padding: 14px 16px; border-radius: 16px; min-width: 0; gap: 7px; }
.desk-count__value { font-size: 25px; line-height: 1; font-weight: 600; }
.desk-count__label { font-size: 12px; max-width: none; line-height: 1.35; }
.desk-card, .lesson, .hw, .student-card, .cls-row, .person {
  border: 1px solid var(--line); background: var(--paper-card); border-radius: 22px; box-shadow: var(--ui-shadow);
}
.desk-card { padding: 22px; min-width: 0; }
.desk-card__title { text-transform: none; letter-spacing: -.025em; font-size: 17px; font-weight: 650; line-height: 1.35; margin-bottom: 18px; color: var(--ink); }
.desk-card__links { margin-top: 16px; gap: 8px; }
.desk-card__links .desk-link { flex: 1 1 auto; }
.desk-card--numbers { padding: 0; background: transparent; border: 0; box-shadow: none; }
.desk-numbers { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 12px; align-items: stretch; }
.desk-numbers__label, .desk-numbers > .desk-hint { display: none; }
.desk-num { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 8px; border: 1px solid var(--line); border-radius: 18px; padding: 18px 20px; background: var(--paper-card); box-shadow: var(--ui-shadow); min-height: 100px; text-align: left; font-size: 12px; color: var(--ink-soft); }
.desk-num b { font-size: 30px; font-weight: 600; line-height: 1; letter-spacing: -.045em; }
.desk-num--warn { background: color-mix(in srgb,var(--ui-gold) 12%,var(--paper-card)); }
.desk-director { margin: 4px 0 -4px; }
.desk-director__title { text-transform: none; font-size: 18px; }
.desk-empty, .desk-note, .hint, .profile-note { color: var(--ink-soft); line-height: 1.6; }
.desk-tag { font-size: 11px; font-weight: 550; padding: 5px 8px; border: 0; border-radius: 7px; background: var(--ui-hover); line-height: 1.25; white-space: normal; }
.desk-student, .desk-owed__row, .desk-class, .desk-check__row, .desk-teacher, .desk-live { min-height: 60px; padding: 12px 10px; border-radius: 12px; }
.desk-students { gap: 6px; }
.desk-student:hover, .desk-class:hover, .desk-owed__row:hover { background: var(--ui-hover); transform: none; }
.desk-student__name, .desk-class__name { font-size: 14px; font-weight: 600; }
.desk-class { align-items: center; flex-wrap: wrap; gap: 10px; cursor: pointer; }
.desk-class:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 42%, transparent); outline-offset: 2px; }
.desk-class__marks { margin-left: auto; }
.desk-owed__what, .desk-check__what { font-size: 12px; }
.desk-hw { padding-top: 16px; gap: 12px; }
.desk-hw__head { min-height: 44px; align-items: center; }
.desk-hw__title { font-weight: 600; font-size: 15px; }
.hw-item { min-height: 44px; gap: 12px; padding: 9px 0; }
.hw-item__box { width: 22px; height: 22px; border-radius: 7px; flex: none; }
.feed { padding: 18px 0; gap: 10px; }
.feed__prose { font-size: 14px; line-height: 1.7; }
.feed__more { min-height: 40px; border: 0; padding: 8px 0; }
.desk-pay { padding: 14px 0; }
.desk-pay__left { font-size: 21px; font-weight: 600; }
.desk-bar { height: 7px; border-radius: 8px; }
/* Calendar and daily agenda */
.week__head { gap: 8px; margin-bottom: 14px; }
.week__head button { min-height: 40px; min-width: 40px; border-radius: 11px; }
.cal-wrap { border-radius: 14px; margin: 0; padding: 0; }
.cal { column-gap: 5px; }
.cal__head { padding: 12px 2px; border-bottom: 0; background: var(--ui-muted-surface); border-radius: 9px 9px 0 0; }
.cal__dow { font-size: 10px; letter-spacing: .025em; }
.cal__date { font-weight: 600; font-size: 14px; }
.cal__head--today { background: var(--ui-selected); }
.cal__lesson { border-radius: 9px; box-shadow: none; font-size: 12px; border-width: 0 0 0 3px; }
.cal__lesson:hover { filter: brightness(.98); }
.tl__row { padding-top: 14px; padding-bottom: 14px; }
.tl__body { min-height: 48px; }
.tl__what { font-size: 14px; font-weight: 600; }
.tl__who { font-size: 12px; line-height: 1.45; }
.tl__acts { gap: 8px; }
.tl__acts a, .tl__acts button { min-height: 36px; border-radius: 10px; }
/* Lists and detail pages */
.section-head { margin: 0 0 24px; gap: 18px; align-items: center; flex-wrap: wrap; }
.section-head h1 { font-size: clamp(26px,3vw,36px); margin: 0; letter-spacing: -.04em; }
.section-head__tools { gap: 10px; flex-wrap: wrap; }
#view-schedule, #view-homework, #panel, #view-student, #view-class { max-width: 1300px; margin: 0 auto; }
.lesson, .hw { padding: 24px; margin-bottom: 16px; }
.lesson__head, .hw__head { align-items: flex-start; gap: 16px; }
.lesson__subject, .hw__title { font-size: 19px; font-weight: 650; }
.lesson__actions, .hw__actions, .lesson__controls { gap: 10px; flex-wrap: wrap; }
.lesson__groups { border-top: 1px solid var(--line); padding-top: 16px; }
.lesson__summary, .hw__review { background: var(--ui-muted-surface); border-radius: 14px; padding: 14px; }
.lesson__unfold, .hw__unfold, .hw-mark, .hw-lines__add { min-height: 44px; border-radius: 10px; }
.people-list { gap: 12px; }
.person { padding: 20px; }
.invite-bar { padding: 20px; border-radius: 18px; border: 1px solid var(--line); background: var(--paper-card); gap: 10px; }
.student-head { padding: 22px; border-radius: 22px; border: 1px solid var(--line); background: var(--paper-card); }
.student-grid { gap: 20px; }
.student-page__back, .class-page__back { min-height: 44px; }
.cls-row { padding: 18px; box-shadow: none; }
.cls-row:hover { transform: none; background: var(--ui-hover); }
/* Dialogs: glass around, solid readable content. */
.drawer, .nl, .modal, .report-overlay { background: rgb(8 22 15 / .28); backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px); }
.drawer__box { width: min(470px,100%); border-radius: 26px 0 0 26px; border-left: 1px solid var(--line); box-shadow: var(--ui-float); background: var(--paper-card); }
.drawer__head, .drawer__foot { padding: 22px 26px; }
.drawer__body { padding: 24px 26px; gap: 24px; }
.profile-block { padding: 18px; border-radius: 16px; border: 1px solid var(--line); background: var(--ui-muted-surface); gap: 12px; }
.profile-block__title { text-transform: none; font-size: 15px; letter-spacing: -.02em; font-weight: 650; }
.profile-toggle { min-height: 48px; gap: 16px; }
.ui-theme-options { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; padding: 4px; border-radius: 13px; background: var(--paper-soft); }
.ui-theme-options button { border: 0; min-height: 42px; border-radius: 10px; font: 550 12px var(--font); background: transparent; color: var(--ink-soft); cursor: pointer; }
.ui-theme-options button[aria-pressed='true'] { color: var(--ink); background: var(--paper-card); box-shadow: var(--shadow-tight); }
.nl__box, .modal__box, .report-box { border-radius: 26px; border: 1px solid var(--line); box-shadow: var(--ui-float); background: var(--paper-card); max-height: calc(100dvh - 48px); }
.nl__head, .modal__head { padding: 22px 26px; background: var(--ui-muted-surface); border-bottom: 1px solid var(--line); }
.nl__body { padding: 24px 26px; }
.nl__foot, .modal__foot { padding: 18px 26px; border-top: 1px solid var(--line); gap: 10px; }
.nl__head h2, .modal__head { font-size: 20px; font-weight: 650; letter-spacing: -.03em; }
.nl__chips button, .report-chip, .chip { min-height: 44px; border-radius: 12px; padding: 10px 15px; }
.popover, .obj-menu, .desk-hint__text { border-radius: 16px; background: var(--paper-card); border: 1px solid var(--line); box-shadow: var(--ui-float); }
/* Sign in: quiet brand composition, with one clear task. */
#guest { display: flex; flex: 1; }
.lk-hero { background: var(--paper); color: var(--ink); min-height: calc(100dvh - 150px); width: 100%; display: grid; align-items: center; padding: 60px 0; }
.hero-bands, .hero-scrim { display: none; }
.lk-hero__inner { max-width: 1120px !important; width: calc(100% - 80px); display: grid; grid-template-columns: minmax(0,1fr) minmax(340px,420px); gap: 90px; align-items: center; }
.lk-hero__copy { position: relative; padding-top: 38px; }
.lk-hero__copy::before { content: ''; position: absolute; top: 0; left: 0; width: 84px; height: 7px; border-radius: 8px; background: linear-gradient(90deg,#c9e3b8 0 20%,#4fa37c 20% 40%,#123b2e 40% 60%,#f0b429 60% 80%,#e4d8b4 80%); }
.lk-hero__copy h1 { color: var(--ink); font-size: clamp(32px,4vw,50px); font-weight: 600; letter-spacing: -.055em; line-height: 1.12; max-width: 13ch; }
.lk-hero__copy .eyebrow { color: var(--accent); text-transform: none; letter-spacing: 0; font-size: 14px; }
.lk-hero__copy .lede { color: var(--ink-soft); font-size: 15px; line-height: 1.7; max-width: 39ch; }
.lk-facts { display: grid; gap: 15px; margin-top: 28px; }
.lk-facts li { color: var(--ink-soft); font-size: 13px; line-height: 1.5; }
.lk-facts svg { color: var(--accent); flex: none; }
.lk-panel { background: var(--paper-card); border: 1px solid var(--line); border-radius: 28px; box-shadow: var(--ui-shadow); padding: 36px; color: var(--ink); }
.lk-panel h1 { font-size: 27px; letter-spacing: -.04em; }
.lk-panel .lead { color: var(--ink-soft); font-size: 14px; line-height: 1.6; margin-bottom: 28px; }
.lk-panel form > label { margin-top: 18px; }
.lk-panel form > .btn { min-height: 48px; margin-top: 24px; }
.footlinks { flex-wrap: wrap; gap: 4px 10px; margin-top: 20px; }
.footlinks button { min-height: 40px; font-size: 12px; }
/* Large touch screens get a compact rail, not a squeezed desktop. */
@media (max-width: 1199px) and (min-width: 761px) {
  :root { --ui-rail: 90px; }
  .site-header .logo { width: auto; }
  body.ui-signed-in .lk-main { padding: 24px 24px 32px 134px; }
  .nav-row { left: 12px; padding: 12px 7px; border-radius: 22px; }
  .rail-caption, .rail-note { display: none; }
  .tabs--nav button, .tabs--nav .tabs__link, .rail-action { flex-direction: column; gap: 5px; min-height: 66px; padding: 10px 3px; font-size: 10px; text-align: center; }
  /* Узкая полка — только значки и короткие подписи; «Создать» не исключение. */
  .rail-create { flex-direction: column; gap: 4px; min-height: 60px; padding: 10px 3px; font-size: 10px; text-align: center; margin-bottom: 10px; }
  .create-sheet { width: 300px; }
  .tabs__dot { position: absolute; margin-left: 27px; margin-top: -2px; }
  .rail-extra { margin-top: 12px; padding-top: 12px; }
  .nav-row__acts .sub-create { font-size: 10px; padding: 8px 4px; }
  .desk { gap: 16px; }
  .desk-col { gap: 16px; }
  .desk-card { padding: 18px; }
  .desk-hello { padding: 24px; }
  .desk-hello__counts { flex-basis: 100%; grid-template-columns: repeat(4,minmax(0,1fr)); }
  .desk-count { padding: 12px; }
  .desk-numbers { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .desk-num { padding: 16px; min-height: 88px; }
  .desk > .desk-w8, .desk > .desk-w4, .desk > .desk-w7, .desk > .desk-w5 { grid-column: span 6 !important; }
  /* «Во всю ширину» пишем через 1 / -1, а не span 12: ниже 1000 px стол
     переходит на шесть колонок, и элемент шириной в двенадцать не помещался
     в сетку. Браузер дорисовывал шесть неявных колонок, явные схлопывались в
     ноль — и стол разъезжался: приветствие сжималось в вертикальную полоску,
     а «Ученики» и «Классы» превращались в столбики по сорок пикселей. */
  .desk-col:has(.desk-card--week) { grid-column: 1 / -1 !important; }
  .desk-col:not(:has(.desk-card--week)) { grid-column: 1 / -1 !important; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .desk-col > * { min-width: 0; }
  .lk-hero__inner { gap: 40px; width: calc(100% - 48px); }
}
@media (max-width: 760px) {
  :root { --ui-header: 64px; }
  .site-header .header-inner { padding: 0 18px; gap: 12px; }
  .site-header .logo { width: auto; }
  .header-label { display: none; }
  .header-actions { gap: 8px; }
  body.ui-signed-in .lk-main { padding: 20px 16px 110px; }
  body.ui-signed-in .site-footer { margin: 0 0 90px; padding: 12px 16px; }
  .nav-row { top: auto; bottom: max(10px,env(safe-area-inset-bottom)); left: 10px; right: 10px; width: auto; height: 72px; padding: 5px; overflow: visible; border-radius: 24px; flex-direction: row; align-items: stretch; gap: 0; box-shadow: var(--ui-float); }
  .rail-caption, .rail-bottom, .nav-row__acts { display: none; }
  /* Пять мест в ряду: Главное · Расписание · [+] · Домашка · Ещё. Остальные
     разделы живут в «Ещё» (B-11 аудита). display:contents делает вкладки
     детьми самого ряда — иначе «+» не встанет между ними. */
  .tabs.tabs--nav { display: contents; }
  .tabs--nav > button, .tabs--nav > .tabs__link { display: none; }
  .tabs--nav > button[data-view='home'],
  .tabs--nav > button[data-view='schedule'],
  .tabs--nav > button[data-view='homework'] { display: flex; }
  .tabs--nav > button[data-view='home'] { order: 1; }
  .tabs--nav > button[data-view='schedule'] { order: 2; }
  .rail-create { order: 3; }
  .tabs--nav > button[data-view='homework'] { order: 4; }
  .rail-more { order: 5; }
  .rail-action--overflow { display: flex; }
  /* На компьютере «Классы» — вкладка, и дубль в полке скрыт (classes-workspace.css).
     На телефоне вкладки в ряду нет, поэтому здесь он и есть вход в раздел. */
  .nav-row .rail-extra [data-action='classes'] { display: flex; }
  .tabs--nav button, .tabs--nav .tabs__link, .rail-more { flex: 1; min-width: 0; min-height: 58px; padding: 8px 2px; flex-direction: column; justify-content: center; gap: 4px; border-radius: 18px; font-size: 10px; line-height: 1.2; text-align: center; }
  .tabs--nav button svg, .tabs--nav .tabs__link svg { width: 22px; height: 22px; }
  .tabs__dot { position: absolute; margin: -35px 0 0 24px; }
  .rail-more { display: flex; flex: 1; border: 0; background: transparent; color: var(--ink-soft); font-family: var(--font); align-items: center; }
  /* Центральная «+» крупнее соседей и в акцентном цвете. */
  .rail-create {
    flex: 0 0 60px; width: 60px; min-height: 60px; margin: -1px 4px 0; padding: 0;
    flex-direction: column; align-items: center; justify-content: center; gap: 1px;
    border-radius: 20px; font-size: 9px; font-weight: 700; text-align: center;
  }
  .rail-create svg { width: 26px; height: 26px; }
  .rail-create span { line-height: 1; }
  .create-sheet { left: 8px !important; right: 8px; top: auto !important; bottom: 84px; width: auto; max-height: min(70dvh, 520px); overflow-y: auto; }
  .rail-more svg { width: 22px; height: 22px; }
  .rail-more[aria-expanded='true'] { background: var(--ui-selected); color: var(--ink); }
  .rail-extra { display: none; }
  .nav-row[data-more='true'] .rail-extra { display: grid; position: absolute; bottom: 85px; left: 0; right: 0; margin: 0; padding: 14px; border: 1px solid var(--line); border-radius: 22px; background: var(--paper-card); box-shadow: var(--ui-float); grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }
  .rail-action { font-size: 13px; min-height: 48px; }
  .desk { display: flex; flex-direction: column; gap: 16px; }
  .desk > * { width: 100%; order: var(--m,50); }
  .desk-col { display: contents; }
  .desk-col > * { width: 100%; order: var(--m,50); }
  .desk-hello { padding: 22px; gap: 20px; border-radius: 22px; }
  .desk-hello__text { flex-basis: 100%; }
  .desk-hello__title { font-size: 26px; }
  .desk-hello__hi { font-size: 12px; }
  .desk-hello__dash { display: none; }
  .desk-sky { display: none; }
  .desk-hello__counts { flex-basis: 100%; grid-template-columns: repeat(2,minmax(0,1fr)); width: 100%; }
  .desk-count { min-height: 78px; padding: 13px; }
  .desk-hello__actions .btn { flex: 1 1 auto; }
  .desk-card { border-radius: 20px; padding: 20px; }
  .desk-card__title { font-size: 17px; }
  .desk-numbers { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }
  .desk-num { min-height: 92px; padding: 16px; }
  .desk-num b { font-size: 28px; }
  .desk-numbers .desk-hint { display: none; }
  .section-head { align-items: flex-start; gap: 14px; margin-bottom: 20px; }
  .section-head h1 { font-size: 28px; }
  .section-head__tools { display: flex; width: 100%; }
  .section-head__tools .btn { flex: 1; }
  .lesson, .hw { padding: 20px; border-radius: 20px; }
  .drawer__box { border-radius: 24px 24px 0 0; width: 100%; height: calc(100dvh - 24px); margin-top: auto; }
  .drawer__head, .drawer__body, .drawer__foot { padding: 20px; }
  .nl__box, .modal__box { max-height: calc(100dvh - 20px); width: calc(100% - 20px); border-radius: 22px; }
  .nl__head, .nl__body, .nl__foot, .modal__head, .modal__foot { padding: 20px; }
  .lk-hero { padding: 30px 0; min-height: auto; }
  .lk-hero__inner { display: flex; flex-direction: column; width: calc(100% - 32px); gap: 26px; }
  .lk-hero__copy { padding-top: 23px; width: 100%; }
  .lk-hero__copy h1 { font-size: 30px; max-width: 20ch; margin: 12px 0; }
  .lk-hero__copy .lede, .lk-facts { display: none; }
  .lk-panel { width: 100%; padding: 26px; border-radius: 24px; }
}
/* Motion has a purpose: arrival and feedback, never perpetual decoration. */
@media (prefers-reduced-motion: no-preference) {
  .desk--fresh > *, .desk--fresh .desk-col > * { animation: ui-arrive 350ms var(--ui-ease) both; animation-delay: min(calc(var(--i,0) * 35ms),140ms); }
  .drawer__box, .nl__box, .modal__box { animation: ui-arrive 230ms var(--ui-ease) both; }
  @keyframes ui-arrive { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}
@media (prefers-reduced-transparency: reduce) {
  .site-header, .nav-row { background: var(--header-bg); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
@media (forced-colors: active) {
  .btn, .desk-card, .nav-row, .desk-count, .rail-action, .desk-num { border: 1px solid ButtonText; }
  .tabs--nav button[aria-selected='true'] { outline: 2px solid Highlight; }
}
/* Metrics are one aligned row; explanatory controls belong to their cards. */
.desk-numbers > :not(.desk-num) { display: none; }
.tabs.tabs--nav button svg { display: block; }
body[data-role='teacher'] .desk-card--ask, body[data-role='admin'] .desk-card--ask { padding: 20px; }
/* Shared feature windows: lessons, classes, library, payments and reports. */
.win, .rep { background: rgb(8 22 15 / .28); backdrop-filter: blur(7px); -webkit-backdrop-filter: blur(7px); padding: 24px; }
.win__box, .rep__box { border: 1px solid var(--line); border-radius: 26px; box-shadow: var(--ui-float); background: var(--paper-card); max-height: calc(100dvh - 48px); }
.win__box { width: min(640px,100%); }
.win__box--wide { width: min(1000px,100%); }
/* Форма в два столбца («Поставить урок»): слева календарь недели, справа поля.
   Высота задана явно — иначе столбцам нечего делить, и каждый тянул бы окно. */
.win__box--xl { width: min(1180px,100%); }
@media (min-width: 900px) { .win__box--xl { height: min(880px, calc(100dvh - 48px)); } }
.win__head, .rep__head-row { padding: 22px 26px; gap: 16px; align-items: center; }
.win__head { border-bottom: 1px solid var(--line); background: var(--ui-muted-surface); }
.win__title, .rep__title, .rep__head h2 { font-size: 21px; font-weight: 650; letter-spacing: -.035em; }
.win__body { padding: 24px 26px; }
.win__close, .rep__close { width: 44px; height: 44px; min-width: 44px; border-radius: 13px; background: var(--ui-hover); color: var(--ink-soft); font-size: 24px; }
.rep__body { padding: 24px 26px; min-height: 220px; }
.rep__crumbs { text-transform: none; letter-spacing: 0; font-weight: 500; font-size: 12px; margin-bottom: 5px; }
.rep__foot { padding: 18px 26px; background: var(--paper-card); gap: 10px; }
.rep__foot .btn { border-radius: 12px; min-height: 46px; font-size: 14px; padding: 12px 20px; }
.rep__live { padding: 16px 26px; background: var(--ui-muted-surface); font-size: 13px; line-height: 1.6; border-top: 1px solid var(--line); }
.rep-chip { min-height: 44px; padding: 11px 16px; border-radius: 12px; font-size: 14px; font-weight: 550; border: 1px solid var(--line); }
.rep-chip[aria-pressed='true'] { background: var(--ui-selected); color: var(--ink); border-color: color-mix(in srgb,var(--accent) 45%,var(--line)); }
.rep-again, .nl__student, .rep-list__row, .lib-row, .cls-student { min-height: 48px; border-radius: 12px; }
.nl__student { padding: 10px 14px; }
.lib-row { padding: 16px; gap: 12px; border: 1px solid var(--line); background: var(--ui-muted-surface); }
.lib-row__drop, .cls-student__out, .hw-material__drop { min-width: 40px; min-height: 40px; border-radius: 11px; }
.lib-filter button, .rs__chip, .nl__group button, .hw-when__one { min-height: 42px; border-radius: 12px; }
#view-home .desk-card--numbers { padding: 0; }
@media (max-width: 760px) {
  .win, .rep { padding: 10px; align-items: center; }
  .win__box, .rep__box { border-radius: 22px; max-height: calc(100dvh - 20px); height: auto; width: 100%; }
  .win__head, .win__body, .rep__head-row, .rep__body, .rep__foot, .rep__live { padding: 18px 20px; }
  .win__body .section-head { gap: 12px; }
  .rep__body { min-height: 190px; }
}
@media (prefers-reduced-motion: no-preference) {
  .win__box, .rep__box { animation: ui-arrive 230ms var(--ui-ease); }
}
@media (max-width: 760px) {
  .nav-row[data-more='true'] .nav-row__acts { display: grid; grid-column: 1 / -1; }
  .nav-row[data-more='true'] .sub-create { min-height: 44px; font-size: 13px; }
}
/* ------------------------------------------------------------------ School */
.school-page,.system-page{max-width:1480px;margin:0 auto;padding:24px 20px 70px}.school-hero,.system-hero{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:28px;padding:34px 38px;border:1px solid var(--line);border-radius:28px;background:radial-gradient(circle at 86% 12%,rgba(247,183,35,.18),transparent 34%),linear-gradient(135deg,var(--surface),color-mix(in srgb,var(--surface) 86%,#17694f));box-shadow:0 20px 60px rgba(0,0,0,.12)}.school-hero h1,.system-hero h1{max-width:760px;margin:4px 0 8px;font-size:clamp(32px,4vw,58px);line-height:.98;letter-spacing:-.045em}.school-hero p,.system-hero p{max-width:720px;margin:0;color:var(--muted);font-size:15px}.school-kicker{margin:0!important;color:var(--accent)!important;font-size:11px!important;font-weight:900;letter-spacing:.15em}.school-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.school-stat-grid article,.system-metric{display:flex;min-height:126px;flex-direction:column;padding:22px;border:1px solid var(--line);border-radius:22px;background:var(--surface)}.school-stat-grid strong,.system-metric strong{font-size:30px;letter-spacing:-.04em}.school-stat-grid span,.system-metric span{font-weight:800}.school-stat-grid small,.system-metric small{margin-top:auto;color:var(--muted)}.school-stat-alert{background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--accent) 11%,var(--surface)))!important}.school-main-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,.8fr);gap:16px}.school-panel{padding:24px;border:1px solid var(--line);border-radius:24px;background:var(--surface)}.school-panel h2{margin:3px 0 18px;font-size:24px}.school-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.school-panel-head>span{padding:7px 11px;border-radius:999px;background:var(--soft);color:var(--muted);font-size:12px}.teacher-card-grid{display:grid;gap:10px}.teacher-card{display:grid;width:100%;grid-template-columns:46px minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--surface) 92%,var(--soft));color:inherit;text-align:left;cursor:pointer;transition:transform .18s ease,border-color .18s ease,background .18s ease}.teacher-card:hover{transform:translateY(-2px);border-color:var(--accent);background:var(--soft)}.teacher-avatar{display:grid;width:46px;height:46px;place-items:center;border-radius:15px;background:#16825f;color:#fff;font-weight:900}.teacher-card-copy{display:flex;min-width:0;flex-direction:column;gap:3px}.teacher-card-copy strong{font-size:17px}.teacher-card-copy small,.teacher-card-copy em{color:var(--muted);font-size:12px;font-style:normal}.teacher-card-copy span{font-size:13px}.teacher-money{display:flex;align-items:flex-end;flex-direction:column}.teacher-money b{font-size:16px}.teacher-money small{color:var(--muted)}.teacher-money i{margin-top:5px;color:#d89a16;font-size:11px;font-style:normal}.teacher-money i.is-calm{color:#43a77e}.school-side{display:grid;align-content:start;gap:16px}.school-system-card{position:relative;overflow:hidden;display:flex;min-height:230px;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:18px;padding:24px;border:1px solid var(--line);border-radius:24px;background:#112b22;color:#eef8f3;text-align:left;cursor:pointer}.school-system-card>span{display:flex;flex-direction:column}.school-system-card small{font-size:10px;letter-spacing:.16em}.school-system-card strong{font-size:23px}.school-system-card em{color:#a9c1b7;font-size:13px;font-style:normal}.school-system-card>b{color:#f7b723;font-size:13px}.school-heart{position:absolute;inset:10px -20px auto;height:86px;opacity:.8}.school-heart svg{width:100%;height:100%}.school-heart path{fill:none;stroke:#42d997;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:360;animation:school-heartbeat 2.4s linear infinite}.school-heart--warning path{stroke:#f7b723}.school-heart--danger path{stroke:#e8665a}.school-heart--compact{position:relative;inset:auto;width:260px;flex:none}.school-finance dl{display:grid;gap:0;margin:0}.school-finance dl div,.system-events>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-top:1px solid var(--line)}.school-finance dt,.system-events span{color:var(--muted)}.school-finance dd{margin:0;font-weight:900}.teacher-dossier{width:min(980px,calc(100vw - 28px));max-height:88vh;padding:0;border:1px solid var(--line);border-radius:26px;background:var(--surface);color:var(--text);box-shadow:0 30px 100px rgba(0,0,0,.45)}.teacher-dossier::backdrop{background:rgba(4,17,13,.72);backdrop-filter:blur(8px)}.teacher-dossier header{display:flex;align-items:flex-start;justify-content:space-between;padding:26px 30px;border-bottom:1px solid var(--line)}.teacher-dossier h2{margin:4px 0}.teacher-dossier header button{width:42px;height:42px;border:0;border-radius:13px;background:var(--soft);color:inherit;font-size:26px;cursor:pointer}.dossier-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:28px 30px}.dossier-grid h3{margin:0 0 12px}.dossier-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:26px}.dossier-numbers span{display:flex;flex-direction:column;padding:14px;border-radius:15px;background:var(--soft);color:var(--muted);font-size:11px}.dossier-numbers b{color:var(--text);font-size:24px}.dossier-list{display:grid;gap:7px}.dossier-list>div{display:flex;justify-content:space-between;gap:14px;padding:10px 12px;border-radius:12px;background:var(--soft)}.dossier-list small{color:var(--muted)}.dossier-note{min-height:70px;padding:14px;border:1px dashed var(--line);border-radius:14px;white-space:pre-wrap}.dossier-loading{display:grid;min-height:230px;place-items:center;gap:16px;padding:34px}.system-hero{align-items:center}.system-hero>.btn{align-self:flex-start}.system-metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:16px 0}.system-metric{min-height:136px}.system-metric.is-warning{border-color:#b78a23;background:color-mix(in srgb,#f7b723 10%,var(--surface))}.system-metric.is-danger{border-color:#b9544c;background:color-mix(in srgb,#e8665a 10%,var(--surface))}.system-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}.system-bars{display:flex;height:210px;align-items:flex-end;gap:7px;padding:18px 4px 0}.system-bars>div{display:flex;height:100%;min-width:0;flex:1;flex-direction:column;justify-content:flex-end;gap:7px;text-align:center}.system-bars i{display:block;min-height:4px;border-radius:7px 7px 2px 2px;background:linear-gradient(#f7b723,#18815e);animation:bar-arrive .55s ease both}.system-bars span{overflow:hidden;color:var(--muted);font-size:10px}.usage-list{display:grid;gap:8px}.usage-list>div{display:grid;grid-template-columns:28px 1fr auto;align-items:center;padding:10px;border-radius:12px;background:var(--soft)}.usage-list b{color:var(--accent)}.usage-list i{font-style:normal;font-weight:800}.danger-text{color:#e8665a}@keyframes school-heartbeat{to{stroke-dashoffset:-720}}@keyframes bar-arrive{from{height:0;opacity:0}}
@media(max-width:1050px){.school-stat-grid{grid-template-columns:repeat(2,1fr)}.school-main-grid,.system-grid{grid-template-columns:1fr}.system-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.school-page,.system-page{padding:12px 8px 50px}.school-hero,.system-hero{align-items:flex-start;flex-direction:column;padding:24px 20px;border-radius:22px}.school-stat-grid{grid-template-columns:1fr 1fr}.school-stat-grid article{min-height:112px;padding:16px}.school-stat-grid strong{font-size:24px}.teacher-card{grid-template-columns:42px 1fr}.teacher-money{grid-column:2;align-items:flex-start}.dossier-grid{grid-template-columns:1fr;padding:20px}.system-metrics{grid-template-columns:repeat(2,1fr)}.school-heart--compact{width:100%}}
/* -------------------------------------------------------- Schedule planner */
#view-schedule.schedule-planner-active>:not(#schedule-planner){display:none!important}.schedule-planner{max-width:1500px;margin:0 auto;padding:22px 18px 70px}.planner-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:27px 30px;border:1px solid var(--line);border-radius:26px;background:radial-gradient(circle at 80% 10%,rgba(247,183,35,.14),transparent 30%),linear-gradient(135deg,var(--surface),color-mix(in srgb,var(--surface) 88%,#17694f))}.planner-hero p,.planner-hours header p{margin:0;color:var(--accent);font-size:10px;font-weight:900;letter-spacing:.16em}.planner-hero h1{margin:4px 0 3px;font-size:clamp(34px,4vw,54px);letter-spacing:-.05em}.planner-hero span{color:var(--muted)}.planner-main-actions,.planner-toolbar,.planner-modes,.planner-period,.planner-filters{display:flex;align-items:center;gap:8px}.planner-toolbar{justify-content:space-between;margin:14px 0;padding:10px;border:1px solid var(--line);border-radius:18px;background:var(--surface)}.planner-toolbar button,.planner-filters select{min-height:40px;padding:0 13px;border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--text);font:inherit;font-size:13px;cursor:pointer}.planner-modes{padding:4px;border-radius:14px;background:var(--soft)}.planner-modes button{border:0}.planner-modes button.is-active,.planner-archive.is-active{background:var(--accent);color:#14231d;font-weight:900}.planner-period strong{min-width:180px;text-align:center;text-transform:capitalize}.planner-filters{margin-bottom:14px}.planner-filters select{min-width:170px;background:var(--surface)}.planner-canvas{overflow:hidden;border:1px solid var(--line);border-radius:24px;background:var(--surface)}.planner-week{display:grid;min-width:1040px;grid-template-columns:62px repeat(7,minmax(132px,1fr));height:790px;overflow:auto}.planner-times{display:grid;grid-template-rows:58px repeat(14,1fr);border-right:1px solid var(--line);color:var(--muted);font-size:10px}.planner-times span{padding:5px 8px;border-top:1px solid var(--line)}.planner-day{min-width:0;border-right:1px solid var(--line)}.planner-day:last-child{border-right:0}.planner-day>header{display:flex;height:58px;align-items:center;justify-content:center;gap:6px;border-bottom:1px solid var(--line);background:var(--surface)}.planner-day>header span{color:var(--muted);font-size:11px;text-transform:uppercase}.planner-day>header b{display:grid;width:28px;height:28px;place-items:center;border-radius:9px}.planner-day.is-today>header b{background:var(--accent);color:#14231d}.planner-day__track{position:relative;height:732px;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(7.142857% - 1px),var(--line) calc(7.142857% - 1px),var(--line) 7.142857%)}.planner-hour{position:absolute;right:0;left:0;border-top:1px solid transparent}.planner-zone{position:absolute;right:3px;left:3px;overflow:hidden;border:0;border-radius:8px;background:rgba(36,148,106,.055);color:transparent;cursor:pointer}.planner-zone:hover{z-index:3;background:rgba(36,148,106,.14);color:#72bda1}.planner-zone span{position:absolute;top:5px;left:7px;font-size:9px}.planner-zone--unavailable{background:repeating-linear-gradient(135deg,rgba(145,154,150,.08) 0,rgba(145,154,150,.08) 5px,transparent 5px,transparent 10px);cursor:not-allowed}.planner-zone--unavailable:hover{color:var(--muted)}.planner-position{position:absolute;z-index:4;right:5px;left:5px;min-height:38px}.planner-lesson{display:flex;width:100%;height:100%;min-height:38px;overflow:hidden;flex-direction:column;gap:1px;padding:7px 8px;border:1px solid rgba(72,186,143,.48);border-radius:10px;background:#164737;color:#f1faf6;text-align:left;cursor:pointer;box-shadow:0 5px 12px rgba(0,0,0,.13)}.planner-lesson:hover{filter:brightness(1.12)}.planner-lesson__time{color:#f9c34a;font-size:10px;font-weight:900}.planner-lesson strong{overflow:hidden;font-size:11px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.planner-lesson small{overflow:hidden;color:#b8d0c7;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.planner-lesson--live{border-color:#f7b723;background:#275c3c;animation:planner-live 2s ease-in-out infinite}.planner-lesson--done{border-color:var(--line);background:color-mix(in srgb,var(--surface) 75%,#78857f);color:var(--muted);box-shadow:none}.planner-lesson--cancelled{border-color:rgba(220,99,88,.35);background:color-mix(in srgb,var(--surface) 82%,#8d3a34);opacity:.72;text-decoration:line-through}.planner-lesson__marks{display:flex;gap:3px;margin-top:auto}.planner-lesson__marks i{padding:2px 4px;border-radius:4px;background:rgba(255,255,255,.1);font-size:7px;font-style:normal;text-decoration:none}.planner-month{display:grid;grid-template-columns:repeat(7,1fr);padding:10px}.planner-month>b{padding:9px;color:var(--muted);font-size:11px;text-align:center}.planner-date{display:flex;min-height:138px;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--line);background:transparent;color:var(--text);text-align:left;cursor:pointer}.planner-date:hover{background:var(--soft)}.planner-date.is-outside{opacity:.35}.planner-date>span{display:grid;width:28px;height:28px;place-items:center;border-radius:9px;font-weight:900}.planner-date.is-today>span{background:var(--accent);color:#14231d}.planner-date>div{display:grid;gap:4px}.planner-date i{overflow:hidden;padding:5px 6px;border-left:3px solid #27926a;border-radius:5px;background:var(--soft);font-size:9px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.planner-date i.is-live{border-color:#f7b723}.planner-date i.is-done{border-color:#8b9993}.planner-date i.is-cancelled{border-color:#d36158}.planner-date em{color:var(--muted);font-size:9px;font-style:normal}.planner-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px}.planner-list article{display:grid;grid-template-columns:62px 1fr;gap:9px;min-height:140px}.planner-list time{display:flex;align-items:center;flex-direction:column;justify-content:center;border-radius:16px;background:var(--soft)}.planner-list time b{font-size:25px}.planner-list time span,.planner-list time small{color:var(--muted);font-size:9px;text-transform:uppercase}.planner-lesson--compact{min-height:140px;padding:15px;border-radius:16px}.planner-lesson--compact strong{font-size:15px;white-space:normal}.planner-lesson--compact small{font-size:11px;white-space:normal}.planner-empty{display:flex;min-height:260px;align-items:center;flex-direction:column;justify-content:center;gap:7px;color:var(--muted)}.planner-empty strong{color:var(--text);font-size:20px}.planner-hours{width:min(720px,calc(100vw - 24px));padding:0;border:1px solid var(--line);border-radius:25px;background:var(--surface);color:var(--text)}.planner-hours::backdrop{background:rgba(3,16,12,.72);backdrop-filter:blur(7px)}.planner-hours header,.planner-hours footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 25px;border-bottom:1px solid var(--line)}.planner-hours header h2{margin:3px 0}.planner-hours header>button{width:40px;height:40px;border:0;border-radius:12px;background:var(--soft);color:var(--text);font-size:24px}.planner-hours__rows{display:grid;gap:7px;padding:20px 25px}.planner-hours__rows label{display:grid;grid-template-columns:24px 1fr 110px 16px 110px;align-items:center;gap:9px;padding:9px 12px;border-radius:12px;background:var(--soft)}.planner-hours input[type=time]{padding:8px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text)}.planner-hours .hint{padding:0 25px}.planner-hours footer{justify-content:flex-end;border-top:1px solid var(--line);border-bottom:0}@keyframes planner-live{50%{box-shadow:0 0 0 3px rgba(247,183,35,.17)}}
@media(max-width:1050px){.planner-list{grid-template-columns:repeat(2,1fr)}.planner-toolbar{align-items:stretch;flex-wrap:wrap}.planner-period{order:3;width:100%;justify-content:center}.planner-canvas{overflow-x:auto}}
@media(max-width:680px){.schedule-planner{padding:10px 7px 50px}.planner-hero{align-items:flex-start;flex-direction:column;padding:22px 19px}.planner-main-actions{width:100%}.planner-main-actions .btn{flex:1}.planner-toolbar{gap:9px}.planner-modes{width:100%}.planner-modes button{flex:1}.planner-period strong{min-width:0;flex:1}.planner-filters{overflow-x:auto}.planner-filters select{min-width:150px}.planner-list{grid-template-columns:1fr;padding:9px}.planner-month{min-width:760px}.planner-hours__rows label{grid-template-columns:24px 1fr 94px 10px 94px}.planner-hours__rows{padding:14px}.planner-hours .hint{padding:0 14px}}

/* Читаемая недельная сетка: действия равны, короткие уроки не пытаются
   вместить служебные метки, а занятия за границей дня показаны отдельно. */
.planner-main-actions .btn{display:inline-flex;width:164px;min-width:164px;height:52px;min-height:52px;align-items:center;justify-content:center;padding:0 18px;line-height:1.1;text-align:center;white-space:nowrap}.planner-week{overflow-x:auto;overflow-y:hidden}.planner-position>.planner-lesson:not(.planner-lesson--compact){justify-content:flex-start;padding:5px 7px}.planner-position>.planner-lesson:not(.planner-lesson--compact) strong{display:-webkit-box;overflow:hidden;font-size:10px;line-height:1.12;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.planner-position>.planner-lesson:not(.planner-lesson--compact) small{font-size:8px;line-height:1.1}.planner-position>.planner-lesson:not(.planner-lesson--compact) .planner-lesson__marks{display:none}.planner-outside{display:grid;grid-template-columns:minmax(220px,.65fr) 1.35fr;gap:18px;margin-top:14px;padding:18px;border:1px solid color-mix(in srgb,#e8665a 55%,var(--line));border-radius:20px;background:color-mix(in srgb,#e8665a 7%,var(--surface))}.planner-outside>div{display:flex;flex-direction:column}.planner-outside>div>span{color:#e98277;font-size:9px;font-weight:900;letter-spacing:.13em}.planner-outside>div>strong{margin:3px 0;font-size:19px}.planner-outside>div>small{color:var(--muted);line-height:1.4}.planner-outside>section{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.planner-outside button{display:flex;min-width:0;flex-direction:column;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.planner-outside button time{color:#e98277;font-size:10px;font-weight:900}.planner-outside button strong,.planner-outside button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planner-outside button small{color:var(--muted);font-size:9px}
@media(max-width:680px){.planner-main-actions .btn{width:auto;min-width:0}.planner-outside{grid-template-columns:1fr}.planner-outside>section{grid-template-columns:1fr}}

.planner-outside button{position:relative;padding-right:86px;cursor:grab}.planner-outside button:active{cursor:grabbing}.planner-outside button em{position:absolute;right:12px;bottom:12px;color:var(--accent);font-size:9px;font-style:normal;font-weight:900}.planner-outside button.is-dragging{opacity:.35}.planner-day__track.is-drop-valid{box-shadow:inset 0 0 0 3px #3ac78d,inset 0 0 55px rgba(58,199,141,.14)}.planner-day__track.is-drop-invalid{box-shadow:inset 0 0 0 3px #d86158,inset 0 0 55px rgba(216,97,88,.13)}.planner-move-dialog,.planner-move-confirm{width:min(660px,calc(100vw - 24px));padding:0;border:1px solid var(--line);border-radius:25px;background:var(--surface);color:var(--text);box-shadow:0 28px 90px rgba(0,0,0,.44)}.planner-move-dialog::backdrop,.planner-move-confirm::backdrop{background:rgba(3,16,12,.76);backdrop-filter:blur(7px)}.planner-move-dialog header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:24px 26px;border-bottom:1px solid var(--line)}.planner-move-dialog header span,.planner-move-confirm form>span{color:var(--accent);font-size:9px;font-weight:900;letter-spacing:.15em}.planner-move-dialog h2,.planner-move-confirm h2{margin:4px 0}.planner-move-dialog header p{margin:0;color:var(--muted)}.planner-move-dialog header>button{width:40px;height:40px;border:0;border-radius:12px;background:var(--soft);color:var(--text);font-size:24px}.planner-move-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:20px 26px}.planner-move-slots button{display:flex;align-items:flex-start;flex-direction:column;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--soft);color:var(--text);text-align:left;cursor:pointer}.planner-move-slots button:hover{border-color:var(--accent)}.planner-move-slots button b{font-size:10px}.planner-move-slots button span{margin-top:4px;color:var(--accent);font-size:18px;font-weight:900}.planner-move-manual{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 26px 20px;padding:13px 15px;border:1px solid var(--line);border-radius:13px}.planner-move-manual span{font-weight:800}.planner-move-manual input{padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text)}.planner-move-dialog footer{display:flex;justify-content:flex-end;gap:8px;padding:18px 26px;border-top:1px solid var(--line)}.planner-move-confirm form{padding:27px}.planner-move-confirm p{padding:17px;border-radius:14px;background:var(--soft);line-height:1.7}.planner-move-confirm p b{color:var(--accent)}.planner-move-confirm form>div{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
@media(max-width:680px){.planner-move-slots{grid-template-columns:repeat(2,1fr);padding:16px}.planner-move-dialog header{padding:20px 16px}.planner-move-manual{align-items:stretch;flex-direction:column;margin:0 16px 16px}.planner-move-dialog footer{padding:15px 16px}}
/* ---------------------------------------------------------- Dockable rail */
.ui-visually-hidden{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}.rail-drag-handle{position:absolute;z-index:3;top:5px;left:50%;display:grid;width:58px;height:18px;place-items:center;padding:0;border:0;background:transparent;transform:translateX(-50%);cursor:grab;touch-action:none}.rail-drag-handle span{display:block;width:28px;height:4px;border-radius:999px;background:color-mix(in srgb,var(--muted) 55%,transparent);transition:width .18s ease,background .18s ease,box-shadow .18s ease}.rail-drag-handle:hover span,.rail-drag-handle:focus-visible span{width:42px;background:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 12%,transparent)}.rail-drag-handle:active{cursor:grabbing}.ui-signed-in .nav-row{view-transition-name:axioma-navigation;transition:left .24s ease,right .24s ease,top .24s ease,bottom .24s ease,width .24s ease,height .24s ease,border-radius .24s ease}.rail-is-settling #card,.rail-is-settling .site-header{transition:margin .24s ease,padding .24s ease!important}.rail-is-dragging{cursor:grabbing!important;user-select:none}.rail-is-dragging>*:not(.rail-dock-overlay):not(.rail-drag-ghost){filter:saturate(.55) brightness(.52);transition:filter .15s ease}.rail-is-dragging .nav-row:not(.rail-drag-ghost){opacity:.12}.rail-drag-ghost{position:fixed!important;z-index:10002!important;margin:0!important;pointer-events:none!important;opacity:.92!important;filter:none!important;box-shadow:0 28px 90px rgba(0,0,0,.42)!important;will-change:transform;transition:none!important}.rail-drag-ghost .rail-drag-handle span{background:var(--accent)}.rail-dock-overlay{position:fixed;z-index:10001;inset:0;pointer-events:none;background:rgba(3,14,11,.24);backdrop-filter:blur(2px)}.rail-dock-target{position:absolute;display:grid;place-items:center;border:2px dashed rgba(235,245,240,.35);border-radius:22px;color:rgba(235,245,240,.7);opacity:.72;pointer-events:auto;transition:background .15s ease,border-color .15s ease,opacity .15s ease,transform .15s ease}.rail-dock-target>span{display:flex;align-items:center;gap:9px;padding:9px 13px;border-radius:999px;background:rgba(10,33,25,.82);font-size:11px;font-weight:800;text-transform:capitalize}.rail-dock-target i{display:block;width:16px;height:16px;border:2px solid currentColor;border-radius:4px}.rail-dock-target--left{top:24px;bottom:24px;left:18px;width:min(240px,18vw)}.rail-dock-target--right{top:24px;right:18px;bottom:24px;width:min(240px,18vw)}.rail-dock-target--top{top:18px;right:calc(min(240px,18vw) + 36px);left:calc(min(240px,18vw) + 36px);height:112px}.rail-dock-target--bottom{right:calc(min(240px,18vw) + 36px);bottom:18px;left:calc(min(240px,18vw) + 36px);height:112px}.rail-dock-target--left i{border-right-width:7px}.rail-dock-target--right i{border-left-width:7px}.rail-dock-target--top i{border-bottom-width:7px}.rail-dock-target--bottom i{border-top-width:7px}.rail-dock-target.is-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,transparent);color:#fff;opacity:1;transform:scale(1.015);box-shadow:inset 0 0 55px color-mix(in srgb,var(--accent) 12%,transparent)}
body.ui-signed-in[data-rail-dock="right"] .nav-row{right:8px!important;left:auto!important}body.ui-signed-in[data-rail-dock="right"] #card{margin-right:calc(var(--ui-rail-w,220px) + 18px)!important;margin-left:0!important}body.ui-signed-in[data-rail-dock="right"] .site-header{padding-right:calc(var(--ui-rail-w,220px) + 18px)!important;padding-left:18px!important}
body.ui-signed-in[data-rail-dock="top"] .nav-row,body.ui-signed-in[data-rail-dock="bottom"] .nav-row{right:8px!important;left:8px!important;width:auto!important;max-width:none!important;height:86px!important;min-height:0!important;flex-direction:row!important;align-items:center!important;gap:8px!important;padding:18px 14px 8px!important;border-radius:0 0 22px 22px!important;overflow-x:auto!important;overflow-y:hidden!important}body.ui-signed-in[data-rail-dock="top"] .nav-row{top:0!important;bottom:auto!important}body.ui-signed-in[data-rail-dock="bottom"] .nav-row{top:auto!important;bottom:0!important;padding:8px 14px 18px!important;border-radius:22px 22px 0 0!important}body.ui-signed-in[data-rail-dock="top"] .rail-drag-handle{top:3px}body.ui-signed-in[data-rail-dock="bottom"] .rail-drag-handle{top:auto;bottom:3px}body.ui-signed-in[data-rail-dock="top"] .rail-caption,body.ui-signed-in[data-rail-dock="bottom"] .rail-caption,body.ui-signed-in[data-rail-dock="top"] .rail-bottom,body.ui-signed-in[data-rail-dock="bottom"] .rail-bottom,body.ui-signed-in[data-rail-dock="top"] .rail-more,body.ui-signed-in[data-rail-dock="bottom"] .rail-more{display:none!important}body.ui-signed-in[data-rail-dock="top"] #nav,body.ui-signed-in[data-rail-dock="bottom"] #nav,body.ui-signed-in[data-rail-dock="top"] .rail-extra,body.ui-signed-in[data-rail-dock="bottom"] .rail-extra{display:flex!important;align-items:center!important;flex-direction:row!important;gap:4px!important;width:auto!important}body.ui-signed-in[data-rail-dock="top"] #nav button,body.ui-signed-in[data-rail-dock="bottom"] #nav button,body.ui-signed-in[data-rail-dock="top"] .rail-action,body.ui-signed-in[data-rail-dock="bottom"] .rail-action{min-width:max-content!important;width:auto!important;height:48px!important;padding:0 12px!important}body.ui-signed-in[data-rail-dock="top"] #nav svg,body.ui-signed-in[data-rail-dock="bottom"] #nav svg,body.ui-signed-in[data-rail-dock="top"] .rail-action svg,body.ui-signed-in[data-rail-dock="bottom"] .rail-action svg{width:19px!important;height:19px!important}body.ui-signed-in[data-rail-dock="top"] #card,body.ui-signed-in[data-rail-dock="bottom"] #card{margin-right:0!important;margin-left:0!important}body.ui-signed-in[data-rail-dock="top"] #card{padding-top:96px!important}body.ui-signed-in[data-rail-dock="bottom"] #card{padding-bottom:98px!important}body.ui-signed-in[data-rail-dock="top"] .site-header,body.ui-signed-in[data-rail-dock="bottom"] .site-header{padding-right:18px!important;padding-left:18px!important}body.ui-signed-in[data-rail-dock="top"] .site-header{margin-top:88px!important}body.ui-signed-in[data-rail-dock="bottom"] .site-header{margin-bottom:88px!important}
@media(max-width:760px){.rail-drag-handle{display:none!important}.rail-dock-overlay,.rail-drag-ghost{display:none!important}body.ui-signed-in[data-rail-dock] .nav-row{top:auto!important;right:8px!important;bottom:8px!important;left:8px!important;width:auto!important;height:auto!important;min-height:0!important;flex-direction:row!important;padding:7px!important;border-radius:18px!important}body.ui-signed-in[data-rail-dock] #card{margin:0!important;padding-bottom:84px!important;padding-top:0!important}body.ui-signed-in[data-rail-dock] .site-header{margin:0!important;padding:0!important}}

/* Ручка горизонтальной панели всегда находится снаружи и не обрезается
   прокруткой самой навигации. Нажатие открывает запасной выбор положения. */
body.ui-signed-in[data-rail-dock="top"] .rail-drag-handle,body.ui-signed-in[data-rail-dock="bottom"] .rail-drag-handle{position:fixed;z-index:1000;top:4px;bottom:auto;left:50%;width:76px;height:24px;border:1px solid var(--line);border-radius:0 0 12px 12px;background:var(--surface);box-shadow:0 7px 20px rgba(0,0,0,.2)}body.ui-signed-in[data-rail-dock="bottom"] .rail-drag-handle{top:auto;bottom:82px;border-radius:12px 12px 0 0}body.ui-signed-in[data-rail-dock="top"] .rail-drag-handle span,body.ui-signed-in[data-rail-dock="bottom"] .rail-drag-handle span{width:40px;height:5px;background:var(--accent)}body.ui-signed-in[data-rail-dock="top"] .nav-row,body.ui-signed-in[data-rail-dock="bottom"] .nav-row{height:76px!important;padding:13px 12px 7px!important}body.ui-signed-in[data-rail-dock="bottom"] .nav-row{padding:7px 12px 13px!important}body.ui-signed-in[data-rail-dock="top"] #card{padding-top:88px!important}body.ui-signed-in[data-rail-dock="bottom"] #card{padding-bottom:116px!important}body.ui-signed-in[data-rail-dock="bottom"]{padding-bottom:90px!important}body.ui-signed-in[data-rail-dock="top"]{padding-top:78px!important}body.ui-signed-in[data-rail-dock="top"] .site-header{margin-top:0!important}body.ui-signed-in[data-rail-dock="bottom"] .site-header{margin-bottom:0!important}.rail-dock-picker{position:fixed;z-index:11000;width:280px;padding:14px;border:1px solid var(--line);border-radius:17px;background:var(--surface);color:var(--text);box-shadow:0 22px 70px rgba(0,0,0,.38);animation:rail-picker-in .16s ease both}.rail-dock-picker>strong{display:block;margin-bottom:10px;font-size:13px}.rail-dock-picker>div{display:grid;grid-template-columns:1fr 1fr;gap:6px}.rail-dock-picker button{min-height:38px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--text);font:inherit;font-size:12px;text-transform:capitalize;cursor:pointer}.rail-dock-picker button:hover,.rail-dock-picker button[aria-current="true"]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,var(--soft))}.rail-dock-picker small{display:block;margin-top:10px;color:var(--muted);font-size:9px}@keyframes rail-picker-in{from{opacity:0;transform:translateY(-5px) scale(.98)}}
/* ------------------------------------------------------- Dashboard editor */
.dashboard-customize-button{display:flex;align-items:center;gap:8px;margin:0 0 12px auto;padding:10px 13px;border:1px solid var(--line);border-radius:13px;background:var(--surface);color:var(--muted);font:inherit;font-size:12px;font-weight:800;cursor:pointer;transition:border-color .18s ease,color .18s ease,transform .18s ease}.dashboard-customize-button:hover{border-color:var(--accent);color:var(--text);transform:translateY(-1px)}.dashboard-customize-button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8}.desk>.dashboard-size-compact{grid-column:span 4!important}.desk>.dashboard-size-normal{grid-column:span 6!important}.desk>.dashboard-size-wide{grid-column:1/-1!important}.desk>.dashboard-user-hidden{display:none!important}.dashboard-editor{width:min(940px,calc(100vw - 24px));max-height:92vh;padding:0;border:1px solid var(--line);border-radius:28px;background:var(--surface);color:var(--text);box-shadow:0 35px 110px rgba(0,0,0,.46)}.dashboard-editor::backdrop{background:rgba(3,16,12,.76);backdrop-filter:blur(8px)}.dashboard-editor>form>header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:26px 30px 22px;border-bottom:1px solid var(--line);background:radial-gradient(circle at 84% 0,rgba(247,183,35,.13),transparent 37%)}.dashboard-editor header p{margin:0;color:var(--accent);font-size:10px;font-weight:900;letter-spacing:.16em}.dashboard-editor header h2{margin:4px 0 6px;font-size:28px}.dashboard-editor header span{display:block;max-width:680px;color:var(--muted);font-size:13px}.dashboard-editor header>button{display:grid;width:42px;height:42px;flex:none;place-items:center;border:0;border-radius:13px;background:var(--soft);color:var(--text);font-size:25px;cursor:pointer}.dashboard-editor-legend{display:flex;align-items:center;gap:18px;padding:14px 30px;border-bottom:1px solid var(--line);color:var(--muted);font-size:11px}.dashboard-editor-legend span{display:flex;align-items:center;gap:6px}.dashboard-editor-legend i{display:block;height:9px;border-radius:3px;background:#2d7159}.dashboard-editor-legend .is-compact{width:14px}.dashboard-editor-legend .is-normal{width:22px}.dashboard-editor-legend .is-wide{width:34px}.dashboard-editor-legend em{margin-left:auto;color:var(--accent);font-style:normal}.dashboard-map{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-flow:dense;gap:10px;min-height:360px;max-height:58vh;overflow:auto;padding:24px 30px;background:linear-gradient(rgba(117,151,137,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(117,151,137,.06) 1px,transparent 1px);background-size:30px 30px}.dashboard-map-tile{position:relative;display:flex;min-height:112px;flex-direction:column;justify-content:flex-end;padding:14px;border:1px solid var(--line);border-radius:17px;background:linear-gradient(145deg,color-mix(in srgb,var(--surface) 91%,#247d5d),var(--surface));box-shadow:0 7px 18px rgba(0,0,0,.1);cursor:grab;transition:opacity .15s ease,border-color .15s ease,transform .15s ease}.dashboard-map-tile:hover{border-color:color-mix(in srgb,var(--accent) 70%,var(--line));transform:translateY(-2px)}.dashboard-map-tile.is-dragging{opacity:.25}.dashboard-map-tile.is-hidden{border-style:dashed;opacity:.46;filter:grayscale(.65)}.dashboard-map-tile.is-locked{background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 10%,var(--surface)),var(--surface))}.dashboard-map-tile--compact{grid-column:span 4}.dashboard-map-tile--normal{grid-column:span 6}.dashboard-map-tile--wide{grid-column:1/-1}.dashboard-map-tile strong{overflow:hidden;padding-right:82px;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.dashboard-map-tile>span{margin-top:3px;color:var(--muted);font-size:10px}.dashboard-map-grip{position:absolute;top:10px;left:11px;display:grid;grid-template-columns:repeat(3,3px);gap:3px;padding:7px;border:0;background:transparent;cursor:grab}.dashboard-map-grip i{width:3px;height:3px;border-radius:50%;background:var(--muted)}.dashboard-map-actions{position:absolute;right:10px;bottom:10px;display:flex;align-items:center;gap:5px}.dashboard-map-actions button,.dashboard-map-actions i{display:grid;min-width:29px;height:29px;place-items:center;padding:0 6px;border:1px solid var(--line);border-radius:9px;background:var(--soft);color:var(--text);font-size:10px;font-style:normal;cursor:pointer}.dashboard-map-actions i{color:var(--accent);cursor:default}.dashboard-editor footer{display:grid;grid-template-columns:auto 1fr auto auto;gap:9px;padding:18px 30px;border-top:1px solid var(--line)}
@media(max-width:1050px){.desk>.dashboard-size-compact{grid-column:span 6!important}.desk>.dashboard-size-normal{grid-column:span 6!important}}
@media(max-width:680px){.dashboard-customize-button{margin-right:7px}.desk>.dashboard-size-compact,.desk>.dashboard-size-normal,.desk>.dashboard-size-wide{grid-column:1/-1!important}.dashboard-editor>form>header{padding:21px 18px}.dashboard-editor header h2{font-size:23px}.dashboard-editor-legend{gap:10px;overflow-x:auto;padding:12px 18px}.dashboard-map{grid-template-columns:repeat(6,1fr);padding:16px 18px}.dashboard-map-tile--compact{grid-column:span 3}.dashboard-map-tile--normal,.dashboard-map-tile--wide{grid-column:1/-1}.dashboard-editor footer{grid-template-columns:1fr 1fr;padding:14px 18px}.dashboard-editor footer>span{display:none}.dashboard-editor footer .btn{width:100%}}

/* Кнопка настройки не создаёт отдельную пустую строку над рабочим столом. */
#view-home{position:relative}.dashboard-customize-button{position:absolute;z-index:6;top:6px;right:18px;margin:0;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(8px)}
@media(max-width:680px){.dashboard-customize-button{position:relative;top:auto;right:auto;width:max-content;margin:0 7px 10px auto}}

/* Расписание: читаемые системные меню и одна непрерывная часовая сетка. */
.planner-filters select {
  background-color: var(--paper-card);
  color: var(--ink);
  color-scheme: light;
}
.planner-filters select option {
  background-color: #fff;
  color: #183c30;
}
[data-theme='dark'] .planner-filters select {
  background-color: var(--paper-card);
  color: var(--ink);
  color-scheme: dark;
}
[data-theme='dark'] .planner-filters select option {
  background-color: #1b2b23;
  color: #edf3e9;
}
.planner-week {
  --planner-hour-row: 52.285714px;
  position: relative;
  isolation: isolate;
  background: var(--paper-card);
}
.planner-grid-lines {
  position: absolute;
  z-index: 0;
  top: 58px;
  right: 0;
  bottom: 0;
  left: 0;
  pointer-events: none;
  background-image: linear-gradient(to bottom, var(--line) 1px, transparent 1px);
  background-size: 100% var(--planner-hour-row);
}
.planner-times,
.planner-day {
  position: relative;
  z-index: 1;
}
.planner-times span,
.planner-day > header {
  border-top: 0;
  border-bottom: 0;
}
.planner-day__track {
  background: transparent;
}

/* Пустой список занимает весь холст, а не первую колонку карточек. */
.planner-list > .planner-empty {
  grid-column: 1 / -1;
  width: 100%;
  padding: 32px;
  text-align: center;
}

/* Два действия в шапке имеют одну геометрию и стоят по центру текста. */
@media (min-width: 681px) {
  .planner-hero {
    align-items: center;
  }
}
.planner-main-actions {
  flex: 0 0 auto;
  gap: 10px;
}
.planner-main-actions .btn {
  width: 168px;
  min-width: 168px;
  height: 50px;
  min-height: 50px;
  margin: 0;
  padding: 0 18px;
  border-radius: 14px;
  font-size: 14px;
  font-weight: 650;
  line-height: 1;
  box-shadow: none;
}
.planner-main-actions .btn--ghost {
  border-color: var(--line);
  background: var(--paper-card);
  color: var(--ink);
}
.planner-main-actions .btn--primary {
  border: 1px solid var(--accent);
  background: var(--accent);
  color: var(--on-accent);
}
@media (max-width: 680px) {
  .planner-main-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
    gap: 8px;
  }
  .planner-main-actions .btn {
    width: 100%;
    min-width: 0;
    height: 48px;
    min-height: 48px;
  }
}
@media (max-width: 360px) {
  .planner-main-actions {
    grid-template-columns: 1fr;
  }
}

/* Во всех окнах расписания кнопки одного ряда стоят на общей базовой линии.
   Базовая .btn имеет отступ сверху для одиночных форм — здесь он не нужен. */
.planner-hours footer,
.planner-move-dialog footer,
.planner-move-confirm form > div,
.rs__foot {
  align-items: stretch;
}
.planner-hours footer > .btn,
.planner-move-dialog footer > .btn,
.planner-move-confirm form > div > .btn,
.rs__foot > .btn {
  display: inline-flex;
  flex: 1 1 0;
  width: auto;
  min-width: 0;
  min-height: 48px;
  margin: 0;
  padding: 11px 18px;
  align-items: center;
  justify-content: center;
  border-width: 1px;
  border-radius: 14px;
  line-height: 1.2;
}
#view-schedule .lesson__actions,
#view-schedule .lesson__controls,
#view-schedule .lesson__ask-acts {
  align-items: stretch;
}
#view-schedule .lesson__actions > .btn,
#view-schedule .lesson__controls > .btn,
#view-schedule .lesson__ask-acts > .btn {
  margin-top: 0;
}

/* Компактная карточка недели: время и название делят первую строку, поэтому
   часового блока достаточно и текст не обрезается у нижней границы сетки. */
.planner-position { min-height: 0; }
.planner-lesson__headline {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 5px;
}
.planner-position > .planner-lesson:not(.planner-lesson--compact) {
  min-height: 0;
  padding: 5px 7px;
  justify-content: flex-start;
  gap: 2px;
}
.planner-position > .planner-lesson:not(.planner-lesson--compact) .planner-lesson__headline {
  flex: 0 0 auto;
  width: 100%;
}
.planner-position > .planner-lesson:not(.planner-lesson--compact) .planner-lesson__headline strong {
  display: block;
  min-width: 0;
  overflow: hidden;
  font-size: 11px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.planner-position > .planner-lesson:not(.planner-lesson--compact) .planner-lesson__time {
  flex: 0 0 auto;
  font-size: 10px;
  line-height: 1.2;
}
.planner-position > .planner-lesson:not(.planner-lesson--compact) small {
  display: block;
  width: 100%;
  overflow: hidden;
  font-size: 9px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.planner-position > .planner-lesson--micro:not(.planner-lesson--compact) small { display: none; }
.planner-lesson--compact .planner-lesson__headline {
  align-items: flex-start;
  flex-direction: column;
  gap: 2px;
}
.planner-lesson--compact .planner-lesson__headline strong { white-space: normal; }

/* Собственный быстрый drag-preview следует за pointer-событиями каждый кадр. */
[data-move-lesson], [data-fix-time] { touch-action: none; }
body.planner-is-dragging, body.planner-is-dragging * {
  cursor: grabbing !important;
  user-select: none;
}
.planner-drag-ghost {
  position: fixed;
  z-index: 12000;
  top: 0;
  left: 0;
  display: flex;
  width: min(240px, calc(100vw - 32px));
  flex-direction: column;
  padding: 10px 12px;
  border: 1px solid color-mix(in srgb, var(--accent) 70%, var(--line));
  border-radius: 12px;
  background: color-mix(in srgb, var(--paper-card) 94%, var(--accent));
  color: var(--ink);
  pointer-events: none;
  box-shadow: 0 14px 36px rgb(0 0 0 / .28);
  will-change: transform;
  transition: none;
}
.planner-drag-ghost strong, .planner-drag-ghost span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.planner-drag-ghost strong { font-size: 12px; }
.planner-drag-ghost span { color: var(--ink-soft); font-size: 10px; }
.planner-drop-preview { will-change: top, height; transition: none; }

/* Точное время можно поправить непосредственно перед подтверждением переноса. */
.planner-move-confirm-time {
  display: grid;
  gap: 7px;
  margin-top: 14px;
  padding: 13px 15px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--ui-muted-surface);
}
.planner-move-confirm-time > span {
  color: var(--ink-soft);
  font-size: 12px;
  font-weight: 650;
}
.planner-move-confirm-time input {
  width: 100%;
  min-height: 46px;
  margin: 0;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--paper-card);
  color: var(--ink);
}
.planner-move-confirm-hint {
  display: block;
  min-height: 20px;
  margin-top: 7px;
  font-size: 11px;
}
.planner-move-confirm-hint.is-ok { color: #45b98b; }
.planner-move-confirm-hint.is-error { color: var(--danger); }
.planner-day__track.is-drop-valid,.planner-day__track.is-drop-invalid{box-shadow:none!important}.planner-drop-preview{position:absolute;z-index:9;right:5px;left:5px;display:flex;min-height:42px;overflow:hidden;flex-direction:column;justify-content:center;padding:6px 8px;border:2px solid;border-radius:10px;pointer-events:none;box-shadow:0 8px 24px rgba(0,0,0,.24)}.planner-drop-preview.is-valid{border-color:#45d79d;background:rgba(24,107,77,.9);color:#effcf7}.planner-drop-preview.is-invalid{border-color:#ee776d;background:rgba(105,38,34,.92);color:#fff4f2}.planner-drop-preview strong{font-size:11px}.planner-drop-preview span{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.planner-lesson[draggable="true"]{cursor:grab}.planner-lesson[draggable="true"]:active{cursor:grabbing}.planner-lesson.is-dragging{opacity:.3}.planner-position>.planner-lesson:not(.planner-lesson--compact) strong{font-size:12px}.planner-position>.planner-lesson:not(.planner-lesson--compact) small{font-size:10px}.planner-outside button time{font-size:12px}.planner-outside button strong{font-size:15px}.planner-outside button small{font-size:11px}.planner-outside button em{right:14px;bottom:14px;font-size:12px}.planner-outside>div>small{font-size:12px}

/* Период читается как единый переключатель; «Сегодня» — отдельное действие. */
.planner-period { gap: 10px; }
.planner-period__range {
  display: grid;
  grid-template-columns: 42px minmax(180px, auto) 42px;
  align-items: center;
  gap: 6px;
}
.planner-period__range strong { min-width: 0; text-align: center; text-transform: capitalize; }

/* Более крупный текст в месяце и списке без переполнения карточек. */
.planner-date { min-height: 148px; }
.planner-date i {
  min-height: 28px;
  padding: 7px 8px;
  font-size: 12px;
  line-height: 1.15;
}
.planner-date em { font-size: 11px; }
.planner-list article { grid-template-columns: 74px minmax(0, 1fr); min-height: 156px; }
.planner-list time b { font-size: 29px; }
.planner-list time span, .planner-list time small { font-size: 11px; }
.planner-lesson--compact { min-height: 156px; padding: 18px; }
.planner-lesson--compact .planner-lesson__time { font-size: 12px; }
.planner-lesson--compact .planner-lesson__headline strong { font-size: 17px; line-height: 1.25; }
.planner-lesson--compact small { font-size: 13px; line-height: 1.35; }
.planner-lesson--compact .planner-lesson__marks i { font-size: 9px; }

/* Постановка урока: данные сверху, понятный календарь снизу. */


@media (max-width: 680px) {
  .planner-period { width: 100%; flex-wrap: wrap; }
  .planner-period__range { width: 100%; grid-template-columns: 42px minmax(0, 1fr) 42px; }
  .planner-period > [data-today] { width: 100%; }
  .planner-date i { font-size: 11px; }
}
.system-page .system-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  align-items: center;
  gap: 22px 32px;
}
.system-page .system-hero > .btn {
  grid-column: 1 / -1;
  justify-self: start;
  width: auto;
  min-width: 0;
  padding: 10px 18px;
  white-space: nowrap;
}
.system-page .system-hero > div:not(.school-heart) {
  min-width: 0;
}
.system-page .system-hero h1 {
  font-size: clamp(30px, 3.4vw, 48px);
  line-height: 1.12;
  margin: 10px 0 12px;
}
.system-page .system-hero p:not(.school-kicker) {
  max-width: 640px;
  line-height: 1.6;
}
.system-page .system-hero > .school-heart--compact {
  width: 100%;
  justify-self: end;
}
@media (max-width: 680px) {
  .system-page .system-hero {
    grid-template-columns: minmax(0, 1fr) 90px;
    gap: 18px 14px;
  }
  .system-page .system-hero h1 {
    font-size: clamp(26px, 6vw, 36px);
  }
}
.lk-body .desk-hello__title { margin: 0; font-size: clamp(28px, 2.8vw, 42px); max-width: none; line-height: 1.16; }
.lk-body .desk-hello__hi { font-size: 15px; margin-bottom: 14px; }
.lk-body .desk-hello__counts { display: flex; flex-wrap: wrap; gap: 10px; width: auto; margin-top: 18px; }
.lk-body .desk-count { width: auto; flex: 0 1 auto; min-height: 44px; padding: 10px 14px; display: flex; align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 12px; }
.lk-body .desk-count__value { font-size: 22px; }
.lk-body .desk-count__label { font-size: 13px; }
@media (max-width: 620px) {
  .lk-body .desk-hello__title { font-size: 27px; }
  .lk-body .desk-hello__hi { font-size: 13px; }
  .lk-body .desk-hello__counts { gap: 8px; }
  .lk-body .desk-count { flex: 1 1 130px; padding: 10px; }
}
.school-page .school-hero {
  align-items: center;
}
.school-page .school-hero > div {
  flex: 1;
  min-width: 0;
}
.school-page .school-hero > .btn {
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  padding: 10px 18px;
  white-space: nowrap;
}
.school-page .school-hero h1 {
  font-size: clamp(30px, 3.4vw, 48px);
  line-height: 1.12;
  margin: 10px 0 12px;
}
.school-page .school-hero p:not(.school-kicker) {
  line-height: 1.6;
}
@media (max-width: 680px) {
  .school-page .school-hero {
    align-items: flex-start;
    gap: 20px;
  }
}
/* Reports use the cabinet's surfaces, controls and spacing. */
body.ui-signed-in #view-reports { max-width:1180px; margin:0 auto; padding:28px 24px 48px; color:var(--ink); }
#view-reports .reports-page-head { max-width:none; margin:0 0 24px; }
.reports-eyebrow { display:block; margin-bottom:8px; color:var(--ink-soft); font:600 11px var(--font); letter-spacing:.08em; text-transform:uppercase; }
#view-reports h1 { margin:0 0 8px; font-size:clamp(26px,3vw,34px); line-height:1.2; letter-spacing:-.035em; }
.reports-description { margin:0; color:var(--ink-soft); font-size:14px; line-height:1.6; }
#view-reports .reports-page-tools { display:flex; justify-content:space-between; gap:20px; padding:16px; margin:0 0 28px; border:1px solid var(--line); border-radius:18px; background:var(--paper-card); }
#view-reports .reports-page-tabs { padding:4px; gap:4px; background:var(--ui-muted-surface); border-radius:12px; }
#view-reports .reports-page-tabs button { min-height:40px; padding:10px 16px; border:0; border-radius:9px; background:transparent; color:var(--ink-soft); font:600 13px var(--font); box-shadow:none; outline:none; }
#view-reports .reports-page-tabs button[aria-pressed='true'] { background:var(--ui-selected); color:var(--ink); }
#view-reports .reports-page-tabs button:focus-visible { outline:2px solid var(--ui-ring); }
.reports-search-box { display:flex; align-items:center; gap:8px; flex:1; max-width:360px; min-width:0; min-height:44px; padding:0 12px; border:1px solid var(--line); background:var(--ui-muted-surface); border-radius:12px; }
.reports-search-icon { font-size:24px; color:var(--ink-soft); }
#view-reports .reports-search-box .rep-search { width:100%; min-width:0; border:0; padding:10px 0; background:transparent; box-shadow:none; color:var(--ink); font:400 13px var(--font); }
.reports-search-box:focus-within { outline:2px solid var(--ui-ring); outline-offset:2px; }
.reports-section-head { margin-bottom:18px; }
.reports-section-head h2 { margin:0 0 6px; font-size:18px; letter-spacing:-.02em; }
.reports-section-head p { margin:0; color:var(--ink-soft); font-size:13px; line-height:1.5; }
#view-reports .reports-card-grid { gap:16px; grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr)); }
#view-reports .reports-card { padding:20px; border-color:var(--line); border-radius:18px; color:var(--ink); background:var(--paper-card); box-shadow:var(--ui-shadow); transition:border-color .18s,box-shadow .18s; }
#view-reports .reports-card:hover { border-color:var(--accent); box-shadow:0 4px 18px color-mix(in srgb,var(--accent) 10%,transparent); }
.reports-card-top { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:20px; flex-wrap:wrap; }
#view-reports .reports-card-status { padding:5px 8px; border-radius:7px; background:var(--ui-muted-surface); color:var(--ink-soft); font:600 10px var(--font); }
#view-reports .reports-card-status--published { background:var(--ui-selected); color:var(--accent); }
#view-reports .reports-card-status--draft { background:color-mix(in srgb,var(--ui-gold) 15%,var(--paper-card)); color:var(--ink); }
.reports-card-date { color:var(--ink-soft); font-size:11px; }
#view-reports .reports-card h3 { margin:0 0 8px; font-size:19px; line-height:1.3; letter-spacing:-.025em; }
#view-reports .reports-card-name { margin:0; font-size:13px; font-weight:500; }
.reports-card-topic { margin:6px 0 0; color:var(--ink-soft); font-size:12px; line-height:1.5; }
#view-reports .reports-card-excerpt { margin:16px 0 0; -webkit-line-clamp:2; font-size:12px; color:var(--ink-soft); line-height:1.6; }
#view-reports .reports-card-action { display:block; margin-top:auto; padding:16px 0 0; border-top:1px solid var(--line); margin-top:20px; color:var(--accent); font-size:12px; }
#view-reports .rep-archive-nav { margin-top:24px; }
#view-reports .rep-archive-nav[hidden] { display:none; }
.reports-filter { display:flex; align-items:center; gap:12px; margin-bottom:20px; font-size:12px; color:var(--ink-soft); }
.reports-filter-reset { border:0; background:transparent; color:var(--accent); font:600 12px var(--font); cursor:pointer; }
.reports-detail-meta { display:flex; flex-direction:column; gap:6px; padding-bottom:20px; color:var(--ink-soft); font-size:13px; }
.reports-detail-meta strong { color:var(--ink); font-size:16px; }
.reports-detail-text { padding:20px; background:var(--ui-muted-surface); border-radius:16px; }
.reports-detail h3 { margin:0 0 12px; font-size:15px; }
.reports-detail-text .rep-archive-prose { margin:0; font-size:14px; }
.reports-detail>h3 { margin-top:24px; }
.reports-detail-points { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.reports-detail-points .rep-point { display:flex; flex-direction:column; gap:7px; padding:14px; margin:0; border:1px solid var(--line); border-radius:12px; }
.reports-detail-points span { color:var(--ink-soft); font-size:12px; }
.reports-detail-points strong { font-size:13px; }
@media(max-width:600px) { body.ui-signed-in #view-reports { padding:20px 16px 32px; } #view-reports .reports-page-tools { flex-direction:column; align-items:stretch; gap:12px; padding:12px; } #view-reports .reports-page-tabs button { flex:1; padding:10px 8px; } .reports-search-box { max-width:none; } .reports-detail-points { grid-template-columns:1fr; } }
/* Report overview follows the School and Finance page hierarchy. */
body.ui-signed-in #view-reports { max-width:1480px; }
#view-reports .reports-page-head { display:flex; align-items:center; justify-content:space-between; gap:28px; padding:34px 38px; border:1px solid var(--line); border-radius:28px; background:radial-gradient(ellipse at 90% 0,color-mix(in srgb,#f7b723 13%,transparent),transparent 55%),linear-gradient(125deg,var(--paper-card),color-mix(in srgb,var(--paper-card) 89%,#16825f)); box-shadow:var(--ui-shadow); }
#view-reports h1 { font-size:clamp(34px,4vw,50px); }
.reports-hero-copy { max-width:680px; min-width:0; flex:1; }
#view-reports .reports-page-tabs { flex-wrap:nowrap; }
#view-reports .reports-page-tabs button { width:auto; flex:0 0 auto; margin:0; }
#view-reports .reports-eyebrow { color:var(--accent); letter-spacing:.13em; margin-bottom:14px; }
#view-reports .reports-description { font-size:14px; line-height:1.7; }
#view-reports .reports-primary { width:auto; flex:0 0 auto; min-width:0; margin:0; min-height:46px; padding:12px 20px; border-color:#f7b723; background:#f7b723; color:#172b22; font-weight:750; border-radius:12px; }
.reports-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:24px; }
.reports-summary-card { display:flex; flex-direction:column; gap:12px; padding:24px; border:1px solid var(--line); border-radius:22px; background:var(--paper-card); min-width:0; }
.reports-summary-card>span { font-size:12px; font-weight:650; color:var(--ink-soft); }
.reports-summary-card>strong { font-size:34px; line-height:1.1; letter-spacing:-.04em; }
.reports-summary-card>small { font-size:11px; color:var(--ink-soft); line-height:1.5; }
.reports-summary-card--waiting { border-color:color-mix(in srgb,#f7b723 40%,var(--line)); }
#view-reports .reports-page-tools { padding:0 0 20px; border:0; border-bottom:1px solid var(--line); border-radius:0; background:transparent; box-shadow:none; margin-bottom:24px; }
#view-reports .reports-card { box-shadow:none; }
#view-reports .reports-card-action { margin-top:auto; border:0; position:relative; padding-top:32px; }
#view-reports .reports-card-action::before { content:''; position:absolute; top:16px; left:0; right:0; height:1px; background:var(--line); }
body[data-role='parent'] .reports-summary { grid-template-columns:minmax(0,1fr); max-width:380px; }
@media(max-width:1050px) { .reports-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px) { #view-reports .reports-page-head { align-items:flex-start; flex-direction:column; padding:24px 20px; gap:20px; border-radius:22px; } .reports-summary { gap:8px; } .reports-summary-card { padding:16px; border-radius:17px; gap:10px; } .reports-summary-card>strong { font-size:28px; } #view-reports .reports-page-tools { padding:0 0 16px; } }
#view-reports .reports-search-box .rep-search:focus,
#view-reports .reports-search-box .rep-search:focus-visible { outline:none; box-shadow:none; }
#view-reports .reports-page-tabs .reports-work-tab[aria-pressed='true'] { background:color-mix(in srgb,#f7b723 18%,var(--paper-card)); color:var(--ink); }
.reports-help { display:block; margin:28px 0 0; padding:6px 0; border:0; background:transparent; color:var(--ink-soft); font:500 12px var(--font); text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
.reports-help:hover { color:var(--accent); }
.rail-action #reports-dot { position:static; margin:0 0 0 auto; flex:none; }

.header-site-icon { display:none; }
@media(max-width:1100px) {
  .site-header .header-actions { align-items:center; gap:8px; flex:none; }
  .site-header .header-actions > :is(.workspace-search,[data-site-link],.bellbtn,.avatar-button) { box-sizing:border-box; width:44px; height:44px; min-width:44px; min-height:44px; max-height:44px; flex:0 0 44px; padding:0; margin:0; border-radius:13px; align-items:center; justify-content:center; line-height:1; }
  .site-header .header-actions > :is(.workspace-search,[data-site-link],.bellbtn,.avatar-button):not([hidden]) { display:flex; }
  .site-header .workspace-search span,.site-header .workspace-search kbd,.header-site-label { display:none; }
  .header-site-icon { display:block; }
  .site-header .header-actions .avatar--head { box-sizing:border-box; width:44px; height:44px; border-radius:13px; display:flex; align-items:center; justify-content:center; }
  .site-header .header-label { display:none; }
  .site-header .avatar-button:hover { transform:none; }
}
@media(max-width:360px) {
  .site-header .header-inner { padding-left:10px; padding-right:10px; gap:8px; }
  .site-header .header-actions { gap:4px; }
  .site-header .logo { width:94px; max-width:94px; min-width:0; }
  .site-header .logo [data-axioma] { max-width:100%; }
  .site-header .logo svg { max-width:100%; height:auto; }
}

/* --- технический центр: что чинить и график нагрузки --------------------- */
/* Панели в сетке тянулись до высоты самой высокой соседки, и под графиком
   нагрузки оставалась пустая половина экрана. Карточка должна быть ровно
   такой, сколько в ней содержимого. */
.system-grid{align-items:start}
.system-problems{margin:16px 0}
.system-problems h2{margin:3px 0 14px;font-size:24px}
.problem-list{display:grid;gap:12px}
.problem{display:flex;flex-direction:column;gap:8px;padding:18px 20px;border:1px solid var(--line);border-left-width:4px;border-radius:18px;background:var(--soft)}
.problem--critical{border-left-color:#e8665a;background:color-mix(in srgb,#e8665a 8%,var(--surface))}
.problem--warning{border-left-color:#f7b723;background:color-mix(in srgb,#f7b723 8%,var(--surface))}
.problem-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.problem-head h3{margin:0;font-size:19px}
.problem-flag{padding:4px 10px;border-radius:999px;background:var(--surface);color:var(--muted);font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.problem--critical .problem-flag{color:#e8665a}
.problem--warning .problem-flag{color:#d89a16}
.problem-msg{margin:0;font-weight:700}
.problem-why{margin:0;color:var(--muted);font-size:14px}
.problem-fix{display:grid;gap:6px;margin:4px 0 0;padding-left:20px;font-size:14px}
.problem-fix li{padding-left:2px}
.problem-where{color:var(--muted);font-size:12px}
.system-problems.is-calm .problem-why{margin:0}

/* ===================== РАСПИСАНИЕ ВСЕЙ ШКОЛЫ =============================
   У тех, кто распоряжается расписанием, на одной сетке стоят уроки всех
   преподавателей. Чтобы в ней можно было читать, у каждого преподавателя свой
   цвет — полоской слева на плашке урока и точкой на его чипе, — а имя
   написано на самой плашке. Цветов восемь, по кругу; оттенки подобраны так,
   чтобы различаться и на светлой, и на тёмной теме. */
:root {
  --teacher-1: #2f9e77; --teacher-2: #e0a21a; --teacher-3: #4d83bd; --teacher-4: #c2607a;
  --teacher-5: #8b6fc4; --teacher-6: #d9763a; --teacher-7: #3aa6a6; --teacher-8: #7f8f3a;
}
[data-theme='dark'] {
  --teacher-1: #4fcf9f; --teacher-2: #f4c451; --teacher-3: #79aee6; --teacher-4: #ec8fa8;
  --teacher-5: #b59cf0; --teacher-6: #f5a06a; --teacher-7: #67d3d3; --teacher-8: #b3c565;
}
.planner-teachers { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.planner-teacher { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; }
.planner-teacher__dot { width: 10px; height: 10px; border-radius: 50%; background: var(--tc); flex: none; }
.planner-lesson--owned { box-shadow: inset 4px 0 0 var(--tc), 0 5px 12px rgba(0,0,0,.13); padding-left: 11px; }
.planner-month i.is-owned { border-left: 3px solid var(--tc); padding-left: 5px; }
/* Трое и больше в один час: на узкой плашке остаются время и цвет, остальное —
   в подсказке по наведению и в самой карточке урока. */
.planner-position--narrow .planner-lesson small,
.planner-position--narrow .planner-lesson__marks { display: none; }
.planner-position--narrow .planner-lesson { padding: 5px 5px 5px 9px; }
.planner-position--narrow .planner-lesson__headline strong { display: none; }
/* Урок раньше восьми или позже десяти прижат к краю сетки — пунктир говорит,
   что настоящее его время не здесь. */
.planner-position--edge .planner-lesson { border-style: dashed; }
/* Тому, кто ставит уроки, пустое место дня — кнопка. */
.planner-day__track.is-placeable { cursor: cell; }
.planner-zone[disabled] { cursor: default; }
.planner-move-confirm-hint.is-warn,
.planner-drop-preview.is-warn span { color: var(--ui-gold); }
@media (max-width: 680px) {
  /* Чипов много, экран узкий: одна строка, которую листают вбок. */
  .planner-teachers { flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity; padding-bottom: 4px; }
  .planner-teacher { flex: none; scroll-snap-align: start; }
}

/* ===================== МЕНЕДЖЕР НА ТЕЛЕФОНЕ ==============================
   В нижнем ряду пять мест. У преподавателя это Главное, Расписание, «+»,
   Домашка и «Ещё». У менеджера домашки нет, а главные его разделы — заявки и
   картотека — уезжали за «Ещё»: в ряду оставались три кнопки из пяти. Теперь
   ряд его: Главное · Заявки · Расписание · Картотека · Ещё. «+ Создать» в
   ряд не помещается — те же действия стоят кнопками первой строкой стола. */
@media (max-width: 760px) {
  body[data-role='manager'] .tabs--nav > button[data-view='leads'],
  body[data-role='manager'] .tabs--nav > button[data-view='people'] { display: flex; }
  body[data-role='manager'] .tabs--nav > button[data-view='leads'] { order: 2; }
  body[data-role='manager'] .tabs--nav > button[data-view='schedule'] { order: 3; }
  body[data-role='manager'] .tabs--nav > button[data-view='people'] { order: 4; }
  body[data-role='manager'] .rail-create { display: none; }
  body[data-role='manager'] .rail-extra [data-action='leads'] { display: none; }
}
/* «Требует внимания»: главное слово в строке — что именно не так. */
.desk-row__meta--warn { color: var(--danger); font-weight: 600; }
