
:root{
  --ink:#16222e; --ink-2:#3d5063; --ink-3:#6b7d8f;
  --line:#d3dce4; --line-2:#e8edf1; --bg:#eaeff3;
  --deep:#123047; --deep-2:#1b4967; --deep-3:#2d6489;
  --gold:#f4ecd6; --gold-line:#ddcda2; --gold-ink:#7a5f18;
  --good:#1d7a4d; --mid:#2c5169; --warn:#956512; --bad:#a8322a;
  --shadow:0 1px 2px rgba(18,48,71,.06), 0 6px 18px rgba(18,48,71,.07);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font:17px/1.55 "Segoe UI",Roboto,-apple-system,"Helvetica Neue",Arial,sans-serif;
  background-image:radial-gradient(circle at 12% -10%,#f3f7fa 0,transparent 55%)}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;font-weight:600}
h1{font-size:25px;margin:0 0 4px;letter-spacing:-.2px}
h2{font-size:19px;margin:26px 0 12px}
a{color:var(--deep-3)} a:hover{color:var(--deep)}

/* Переходы между серверными страницами без резкого белого мигания в Chromium-браузерах. */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.12s}

header.top{background:linear-gradient(180deg,#164064 0,#123047 100%);color:#fff;padding:0 20px;
  box-shadow:0 2px 10px rgba(18,48,71,.25);position:relative;z-index:10}
.top-in{max-width:1560px;margin:0 auto;display:flex;align-items:center;gap:20px;
  flex-wrap:wrap;padding:12px 0}
.brand{font-family:Georgia,serif;font-size:19px;line-height:1.25;color:#fff;text-decoration:none;
  border-radius:5px;padding:3px 8px;margin-left:-8px;transition:background .12s}
a.brand:hover{background:rgba(255,255,255,.12);color:#fff}
.brand small{display:block;font-family:inherit;font-size:13px;opacity:.72}
nav.main{display:flex;gap:3px;flex-wrap:wrap;margin-left:auto;align-items:center}
nav.main a{color:#d7e6f2;text-decoration:none;padding:8px 13px;border-radius:4px;font-size:15px;
  transition:background .12s,color .12s}
nav.main a:hover{background:rgba(255,255,255,.13);color:#fff}
nav.main a.on{background:#fff;color:var(--deep);font-weight:600;box-shadow:0 2px 6px rgba(0,0,0,.15)}
nav.main a.size{border:1px solid rgba(255,255,255,.4);font-size:14px}
nav.main a.exit{color:#f3c9c4}
main{max-width:1560px;margin:0 auto;padding:22px 20px 60px}

.panel{background:#fff;border:1px solid var(--line);border-radius:6px;padding:18px 20px;
  margin-bottom:18px;box-shadow:var(--shadow)}
.panel-head{font-family:Georgia,serif;font-size:17px;margin:0 0 14px;color:var(--deep);
  padding-bottom:10px;border-bottom:1px solid var(--line-2)}
.toolbar{display:flex;gap:18px;align-items:flex-end;flex-wrap:wrap}
.toolbar form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.grow{flex:1;min-width:210px}
.spacer{flex:1}
label.f{display:block;font-size:14px;color:var(--ink-2);margin-bottom:5px;font-weight:600}
input[type=text],input[type=date],input[type=password],select,textarea{font:inherit;padding:8px 11px;
  border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--ink);
  transition:border-color .12s,box-shadow .12s}
input:hover,select:hover,textarea:hover{border-color:#b9c7d3}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--deep-3);
  box-shadow:0 0 0 3px rgba(45,100,137,.16)}
select{appearance:none;-webkit-appearance:none;padding-right:38px;background-color:#fff;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%233d5063' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;cursor:pointer}
select[multiple]{background-image:none;padding-right:11px}
select::-ms-expand{display:none}
input[type=checkbox]{accent-color:#123047;width:19px;height:19px}
input[type=radio]{accent-color:#123047;width:19px;height:19px}
input[type=number]{padding:8px 11px}
input[type=date]{padding-right:12px;min-width:170px;font-variant-numeric:tabular-nums}
input[type=date]::-webkit-calendar-picker-indicator{opacity:.65;cursor:pointer;
  padding:4px;border-radius:4px}
input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1;background:#eef4f9}
input[type=file]{padding:9px;background:#fbfcfd;border:1px dashed var(--line);border-radius:5px;
  font-size:15px;width:100%}
input[type=file]::file-selector-button{font:inherit;border:1px solid var(--line);background:#fff;
  border-radius:4px;padding:7px 13px;margin-right:11px;cursor:pointer;color:var(--deep)}
textarea{width:100%;resize:vertical;line-height:1.5}
button,.btn{font:inherit;font-weight:600;padding:9px 17px;border:1px solid var(--deep);
  background:var(--deep);color:#fff;border-radius:4px;cursor:pointer;text-decoration:none;
  display:inline-block;transition:background .12s;line-height:1.35}
button:hover,.btn:hover{background:var(--deep-3);border-color:var(--deep-3);color:#fff}
button:focus-visible,.btn:focus-visible,a:focus-visible{outline:3px solid #7fb2d6;outline-offset:2px}
button.ghost,.btn.ghost{background:#fff;color:var(--deep);border-color:var(--line)}
button.ghost:hover,.btn.ghost:hover{background:#eef4f9;color:var(--deep);border-color:#b9c7d3}
button.danger{background:#fff;color:var(--bad);border-color:#e2c2bf}
button.danger:hover{background:#fbeceb;color:var(--bad);border-color:var(--bad)}
.big-cta{font-size:18px;padding:13px 24px}

table{border-collapse:collapse;width:100%;background:#fff}
th,td{border:1px solid var(--line);padding:9px 11px;text-align:left;vertical-align:middle}
th{background:#f1f5f8;font-weight:600;font-size:15px;color:var(--ink-2)}
tbody tr:nth-child(even) td{background:#fcfdfe}
.picker-panel{overflow:visible;position:relative;z-index:1}
.picker-toolbar{align-items:flex-end}
.picker-toolbar form{min-width:0}
.picker-field{min-width:190px}
@media (max-width:760px){
  .picker-panel{margin-top:8px;padding:14px 12px;border-radius:12px}
  .picker-toolbar{display:block}
  .picker-toolbar form{display:block}
  .picker-field{width:100%;margin-bottom:12px}
  .picker-field:last-child{margin-bottom:0}
  .picker-toolbar .spacer,.picker-toolbar>.btn,.picker-toolbar>button{display:block;width:100%;margin-top:8px}
  .picker-toolbar form+.spacer{display:none}
  .picker-panel{z-index:1}
  body.nav-open .picker-panel{z-index:0}
}
.data-table{border-radius:6px;box-shadow:var(--shadow);border:1px solid var(--line);
  overflow:visible}
.data-table table{overflow:visible}
.data-table>table{border-radius:6px}
.data-table table tr:first-child th:first-child{border-top-left-radius:6px}
.data-table table tr:first-child th:last-child{border-top-right-radius:6px}
.data-table table{border:0}
.num{width:44px;color:var(--ink-3);font-size:15px}

.msg{padding:13px 17px;border-radius:5px;border:1px solid #bcdcc9;border-left:5px solid var(--good);
  background:#eef8f2;margin-bottom:16px;font-weight:600;color:#17603c}
.msg.warn{border-color:#e6c3bf;border-left-color:var(--bad);background:#fdefee;color:#8a2c24}
.hint{color:var(--ink-3);font-size:15px}
.tip{background:linear-gradient(180deg,#fffaee 0,#fff7e4 100%);border:1px solid var(--gold-line);
  border-left:6px solid #d9b64f;border-radius:5px;padding:15px 19px;margin:0 0 20px;
  line-height:1.6;color:#5e4c1e}
.hub{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:18px}
.hub-card{display:block;background:#fff;border:1px solid var(--line);border-radius:7px;
  padding:20px 22px;text-decoration:none;box-shadow:var(--shadow);transition:border-color .12s,
  transform .12s,box-shadow .12s}
.hub-card:hover{border-color:var(--deep-3);transform:translateY(-2px);
  box-shadow:0 4px 16px rgba(18,48,71,.13)}
.hub-name{display:block;font-family:Georgia,serif;font-size:19px;color:var(--deep);
  margin-bottom:7px;font-weight:600}
.hub-note{display:block;color:var(--ink-2);font-size:15px;line-height:1.5}
.hub-stat{display:inline-block;margin-top:12px;font-size:13px;color:var(--ink-3);
  background:#f2f6f9;border-radius:12px;padding:3px 11px}
details.fold>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:9px}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary:after{content:'▾';margin-left:auto;color:var(--ink-3);font-size:15px;
  transition:transform .15s}
details.fold[open]>summary:after{transform:rotate(180deg)}
details.fold:not([open])>summary{margin-bottom:0;border-bottom:0;padding-bottom:0}
details.tip.fold>summary b{font-size:17px;color:#4a3a12}
details.tip.fold[open]>summary{margin-bottom:7px}
.tip>b:first-child{display:block;font-size:18px;margin-bottom:7px;color:#4a3a12}
.tip ol{margin:10px 0 0;padding-left:24px}
.tip li{margin-bottom:7px}
.tip a{color:#8a6a1a;font-weight:700}
.empty{padding:34px 24px;text-align:center;background:#fff;border:2px dashed var(--line);
  border-radius:6px;color:var(--ink-2)}

.grid-wrap{overflow:auto;border:1px solid var(--line);border-radius:6px;background:#fff;
  max-height:74vh;box-shadow:var(--shadow);width:fit-content;max-width:100%}
.nshort{display:none}
table.grid{border-collapse:separate;border-spacing:0;width:auto;min-width:0}
table.grid th,table.grid td{border:0;border-right:1px solid var(--line-2);
  border-bottom:1px solid var(--line-2);padding:0;text-align:center;background:#fff}
table.grid thead th{position:sticky;top:0;z-index:3;background:#eef3f7;padding:7px 4px;
  font-size:14px;line-height:1.3;font-weight:600;border-bottom:2px solid var(--line);
  transition:background .12s}
table.grid thead th.hl{background:#dbe8f2}
table.grid th.name,table.grid td.name{position:sticky;left:0;z-index:2;text-align:left;
  padding:6px 12px;min-width:210px;max-width:340px;border-right:2px solid var(--line);
  white-space:nowrap;font-size:16px}
table.grid thead th.name{z-index:4;background:#eef3f7}
table.grid tbody tr:nth-child(even) td{background:#fbfcfe}
table.grid tbody tr:hover td{background:#f2f7fb}
table.grid tbody tr:hover td.name{background:#e8f1f8}
table.grid td.cell{width:52px;min-width:52px}
table.grid td.cell input{width:52px;height:38px;border:0;text-align:center;font-size:18px;
  background:transparent;color:var(--mid);font-weight:700;padding:0;cursor:pointer}
table.grid td.cell input:hover{background:#eaf2f8}
table.grid td.cell input:focus{outline:0;background:#fff6d8;box-shadow:inset 0 0 0 2px var(--deep-3)}
/* когда таблица помещается по ширине, внутренний скролл не нужен:
   длинный список учеников растягивает страницу, а не накладывается на легенду */
.grid-wrap.fits{overflow:visible;max-height:none;touch-action:auto;width:max-content;max-width:100%}
table.grid td.cell.active{background:#fff3cd!important;box-shadow:inset 0 0 0 3px var(--deep-3)}
table.grid tr.active td{background:#eef4f9}
table.grid tr.active td.name{background:#dfeaf3;font-weight:700}
@media (max-width:760px){
  body.pal-open{padding-bottom:330px}
  body.pal-open .toast{bottom:336px}
}
table.grid td.cell input.multi{font-size:14px;letter-spacing:-.5px}
table.grid td.cell input.m5{color:var(--good)}
table.grid td.cell input.m4{color:var(--mid)}
table.grid td.cell input.m3{color:var(--warn)}
table.grid td.cell input.low{color:var(--bad)}
table.grid td.cell input.absent{color:var(--bad);font-style:italic}
td.avg,th.avg{background:var(--gold);border-left:2px solid var(--gold-line);font-weight:700;
  min-width:74px;font-variant-numeric:tabular-nums;color:var(--gold-ink);font-size:16px}
td.abs,th.abs{background:#f6f8fa;border-left:1px solid var(--line);min-width:62px;
  color:var(--ink-3);font-size:15px}
th.avg,th.abs{position:sticky;top:0;z-index:3}
.col-head .d{font-size:15px;color:var(--ink);font-weight:700}
.col-head .w{color:var(--ink-3);font-weight:400;font-size:12px}
.col-head .t{display:block;max-width:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:10px;color:var(--ink-3);font-weight:400}
.legend{font-size:15px;color:var(--ink-2);margin-top:12px;line-height:1.7}
.legend b{color:var(--ink)}
.chip{display:inline-block;padding:1px 8px;border:1px solid var(--line);border-radius:11px;
  background:#f4f8fb;font-size:14px;font-weight:700;margin-right:3px}

.pal{position:fixed;z-index:60;background:#fff;border:1px solid var(--line);width:262px;
  box-shadow:0 14px 40px rgba(18,48,71,.28);border-radius:8px;overflow:hidden}
.pal[hidden]{display:none}
.pal-head{display:flex;align-items:center;gap:8px;background:var(--deep);color:#fff;
  padding:9px 12px;font-size:14px}
.pal-head span#pal-title{flex:1;overflow:hidden;line-height:1.25}
.pal-head #pal-title b{display:block;font-size:16px;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.pal-head #pal-title span{display:block;font-size:13px;opacity:.8}
.pal-head button{background:transparent;border:0;color:#fff;font-size:15px;padding:3px 7px;
  width:auto;min-height:auto;border-radius:4px;font-weight:400}
.pal-head button:hover{background:rgba(255,255,255,.18)}
.pal-now{padding:8px 12px;background:#f6f9fb;border-bottom:1px solid var(--line-2);
  font-size:14px;color:var(--ink-2);min-height:38px;display:flex;align-items:center;gap:6px}
.pal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:10px}
.pal-grid button{background:#fff;color:var(--deep);border:1px solid var(--line);font-size:20px;
  font-weight:700;height:52px;padding:0;border-radius:5px}
.pal-grid button:hover{background:#eaf2f8;border-color:var(--deep-3);color:var(--deep)}
.pal-grid button.lett{color:var(--bad);border-color:#e8cdca}
.pal-grid button.lett:hover{background:#fbeceb;color:var(--bad)}
.pal-grid button.erase{color:var(--ink-3);font-size:13px;font-weight:400}
.pal-grid button small{display:block;font-size:10px;font-weight:400;line-height:1.1;margin-top:2px;
  color:var(--ink-3)}
.pal-all{padding:11px 13px;border-top:1px solid var(--line-2);background:#fbfcfd;
  border-radius:0 0 8px 8px}
.pal-all>span{display:block;font-size:13px;color:var(--ink-3);margin-bottom:7px}
.pal-all>div{display:flex;gap:7px}
.pal-all button{flex:1;height:40px;font-size:17px;font-weight:700;border:1px solid var(--line);
  background:#fff;border-radius:6px;cursor:pointer;color:var(--deep)}
.pal-all button:hover{background:#eef4f9;border-color:var(--deep-3)}
.pal-all small{display:block;margin-top:7px;font-size:12px;color:var(--ink-3);line-height:1.35}
.pal-foot{display:flex;gap:7px;padding:0 10px 11px}
.pal-foot button{flex:1;height:42px;font-size:14px;background:#fff;color:var(--ink-2);
  border:1px solid var(--line);font-weight:600}
.pal-foot button:hover{background:#eef4f9;color:var(--deep)}
.pal-foot button.on{background:var(--gold);color:var(--gold-ink);border-color:var(--gold-line)}

.pickers{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:18px}
.pick-title{font-size:13px;color:var(--ink-3);font-weight:700;margin-bottom:7px}
.pick{display:flex;align-items:center;gap:9px;padding:7px 10px;border:1px solid var(--line-2);
  border-radius:6px;margin-bottom:6px;cursor:pointer;font-size:15px;background:#fff}
.pick:hover{border-color:var(--deep-3);background:#f4f8fb}
.pick input{width:18px;height:18px;min-height:auto}
.pick:has(input:checked){border-color:var(--deep);background:#eef4f9;font-weight:600}
.assign-box{border:1px solid var(--line-2);border-radius:7px;padding:10px 13px;background:#fbfcfd;
  margin-top:10px}
.assign-sum{font-weight:600;color:var(--deep);font-size:15px}
.kinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}
.kind-card{display:block;width:100%;text-align:left;background:#fff;border:1.5px solid var(--line);
  border-radius:8px;padding:15px 16px;cursor:pointer;color:var(--ink);transition:all .12s}
.kind-card:hover{border-color:var(--deep-3);background:#f4f8fb;color:var(--ink);
  transform:translateY(-2px)}
.kind-name{display:block;font-weight:700;font-size:16px;color:var(--deep);margin-bottom:6px}
.kind-ex{display:block;font-size:13px;color:var(--ink-3);white-space:pre-line;line-height:1.4;
  font-family:"Consolas","Menlo",monospace}
.m{display:inline-block;min-width:27px;text-align:center;padding:2px 6px;margin:2px 3px 2px 0;
  border-radius:5px;font-weight:700;font-size:16px}
.m5{background:#e4f3ea;color:#17603c}
.m4{background:#e7eff6;color:#1f4d6b}
.m3{background:#fdf2dc;color:#8a5c10}
.m2{background:#fbe6e4;color:#992d24}
.mn{background:#f0f3f6;color:#6b7d8f;font-style:italic}
.avg-box{display:inline-block;padding:2px 10px;border-radius:12px;font-weight:700;font-size:16px}
.avg-good{background:#e4f3ea;color:#17603c}
.avg-ok{background:#e7eff6;color:#1f4d6b}
.avg-low{background:#fdf2dc;color:#8a5c10}
.avg-bad{background:#fbe6e4;color:#992d24}
.bar{height:6px;background:#e8edf1;border-radius:4px;margin-top:6px;overflow:hidden;max-width:120px}
.bar div{height:100%;background:var(--deep-3)}
.modal-back{position:fixed;inset:0;background:rgba(16,30,42,.55);display:flex;
  align-items:center;justify-content:center;padding:20px;z-index:300;opacity:0;
  transition:opacity .16s;backdrop-filter:blur(2px)}
.modal-back.show{opacity:1}
.modal{background:#fff;border-radius:12px;max-width:470px;width:100%;padding:26px 26px 20px;
  box-shadow:0 24px 60px rgba(16,30,42,.4);transform:translateY(12px) scale(.98);
  transition:transform .16s}
.modal-back.show .modal{transform:none}
.modal-text{font-size:17px;line-height:1.55;margin-bottom:22px;white-space:pre-line}
.modal-btns{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.modal-btns button{min-width:140px}
@media (max-width:520px){
  .modal{padding:22px 20px 18px;border-radius:14px}
  .modal-text{font-size:16px}
  .modal-btns{flex-direction:column-reverse}
  .modal-btns button{width:100%;min-width:0}
}
.sheet{background:#fff;border:1px solid var(--line);border-radius:6px;padding:26px 30px;
  max-width:820px;box-shadow:var(--shadow)}
.sheet-head{border-bottom:2px solid var(--deep);padding-bottom:12px;margin-bottom:18px}
.sheet-school{font-family:Georgia,serif;font-size:15px;color:var(--ink-2)}
.sheet-title{font-family:Georgia,serif;font-size:21px;margin:4px 0}
.sheet-meta{color:var(--ink-3);font-size:14px}
.sheet-fields{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px;font-size:15px}
.sheet-fields i{display:inline-block;border-bottom:1px solid #97a6b4;min-width:230px;height:19px}
.sheet-q{margin-bottom:20px;page-break-inside:avoid}
.sheet-qtext{font-size:16px;line-height:1.5}
.sheet-opts{margin:8px 0 0 22px;display:flex;flex-direction:column;gap:4px;font-size:15px}
.sheet-opt.right{color:#17603c;font-weight:700}
.sheet-line{margin:10px 0 0 22px;font-size:15px}
.sheet-line i{display:inline-block;border-bottom:1px solid #97a6b4;min-width:340px;height:19px;
  font-style:normal;color:#17603c;font-weight:700}
.sheet-pairs{margin:8px 0 0 22px}
.sheet-pair{display:flex;gap:12px;align-items:baseline;margin-bottom:7px;font-size:15px}
.sheet-pair span{min-width:190px}
.sheet-pair i{flex:1;border-bottom:1px solid #97a6b4;min-height:19px;font-style:normal;
  color:#17603c;font-weight:700}
.sheet-bank{margin:8px 0 0 22px;font-size:14px;color:var(--ink-2);background:#f4f8fb;
  border:1px dashed var(--line);border-radius:5px;padding:8px 11px}
.sheet-foot{margin-top:22px;padding-top:12px;border-top:1px solid var(--line-2);
  font-size:13px;color:var(--ink-3)}
@media print{.sheet{border:0;box-shadow:none;padding:0;max-width:none}}
.checkwrap{position:relative;display:inline-block;max-width:100%}
.checkimg{max-width:100%;height:auto;display:block;border-radius:6px;border:1px solid var(--line)}
.errbox{position:absolute;border:3px solid #d63b2f;border-radius:4px;background:rgba(214,59,47,.12);
  cursor:help;box-shadow:0 0 0 1px rgba(255,255,255,.7) inset}
.errbox b{position:absolute;top:-13px;left:-11px;background:#d63b2f;color:#fff;border-radius:50%;
  width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:12px;
  box-shadow:0 1px 4px rgba(0,0,0,.3)}
.wrong{color:#a8322a;text-decoration:line-through;text-decoration-color:#d63b2f}
.skip{position:absolute;left:-9999px;top:0;background:#fff;color:var(--deep);padding:12px 18px;
  z-index:500;border-radius:0 0 6px 0;font-weight:600}
.skip:focus{left:0}
.loadbar{position:fixed;top:0;left:0;height:3px;width:0;background:#7fb6dd;z-index:600;opacity:0;
  transition:width .3s ease}
.loadbar.run{width:85%;opacity:1;transition:width 8s cubic-bezier(.05,.7,.1,1)}
.spin{display:inline-block;width:15px;height:15px;margin-right:9px;vertical-align:-2px;
  border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;
  animation:spin1 .7s linear infinite}
.ghost .spin,.btn.ghost .spin{border-color:rgba(18,48,71,.25);border-top-color:var(--deep)}
@keyframes spin1{to{transform:rotate(360deg)}}
.field-err{color:#a8322a;font-size:14px;margin-top:5px}
input.bad,select.bad,textarea.bad{border-color:#c9564b;background:#fdf6f5}
input.bad:focus,select.bad:focus,textarea.bad:focus{box-shadow:0 0 0 3px rgba(168,50,42,.16)}
.mslot:focus-visible,.mcard:focus-visible{outline:3px solid var(--deep-3);outline-offset:2px}
a:focus-visible,button:focus-visible,.btn:focus-visible{outline:3px solid var(--deep-3);
  outline-offset:2px}
.burger{display:none}
@media (max-width:760px){.burger{display:flex}}
.totop{position:fixed;right:18px;bottom:18px;width:50px;height:50px;border-radius:50%;
  background:#fff;color:var(--deep);border:1px solid var(--line);font-size:22px;line-height:1;
  box-shadow:0 6px 20px rgba(18,48,71,.22);cursor:pointer;z-index:70;padding:0;opacity:0;
  pointer-events:none;transition:opacity .18s,transform .18s;transform:translateY(8px)}
.totop.show{opacity:1;pointer-events:auto;transform:none}
.totop:hover{background:#eef4f9;color:var(--deep)}
@media print{.totop,.loadbar,.skip{display:none}}
.hw-row{display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.hw-row:last-child{border-bottom:0;padding-bottom:0}
.hw-when{flex:0 0 74px;font-weight:700;font-size:17px;color:var(--deep)}
.hw-when span{display:block;font-weight:400;font-size:13px;color:var(--ink-3)}
.hw-body{flex:1;line-height:1.55}
.hw-my{margin-top:6px;padding:8px 11px;background:#fff8e6;border-left:4px solid #d9b64f;border-radius:4px}
@media (max-width:760px){.hw-when{flex:0 0 62px;font-size:16px}}
.toast{position:fixed;right:20px;bottom:20px;z-index:80;background:#123047;color:#fff;
  padding:11px 20px;border-radius:24px;box-shadow:0 8px 26px rgba(18,48,71,.35);font-size:15px;
  font-weight:600;opacity:0;transform:translateY(12px);transition:opacity .2s,transform .2s;
  pointer-events:none}
.toast.show{opacity:1;transform:translateY(0)}
.toast.err{background:var(--bad)}
.saved{color:var(--good);font-size:14px;font-weight:600;opacity:0;transition:opacity .25s;
  white-space:nowrap}
.saved.show{opacity:1}
.dirty{border-color:#e0b840!important;box-shadow:0 0 0 3px rgba(224,184,64,.18)!important}
td.acts{white-space:normal;display:flex;flex-wrap:wrap;gap:7px;align-items:center}
td.acts>*{margin:0}
td.acts .btn,td.acts button{padding:7px 13px;font-size:14px}
.num-stepper{display:inline-grid;grid-template-columns:38px 72px 38px;align-items:stretch;border:1px solid #d3dce4;border-radius:7px;overflow:hidden;background:#fff}
.num-stepper button{border:0;border-radius:0;background:#f3f7f9!important;color:#123047!important;min-height:40px;padding:0;font-size:20px;line-height:1;box-shadow:none!important}
.num-stepper button:hover{background:#e7eff6!important}
.num-stepper input[type=number]{width:72px!important;min-width:0!important;border:0!important;border-left:1px solid #d3dce4!important;border-right:1px solid #d3dce4!important;border-radius:0!important;text-align:center;padding:7px 4px!important;box-shadow:none!important;-moz-appearance:textfield}
.num-stepper input[type=number]::-webkit-outer-spin-button,.num-stepper input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.nice-sel{position:relative;display:inline-block}
.nice-sel.open{z-index:460}
.panel:has(.nice-sel.open),.toolbar:has(.nice-sel.open),details:has(.nice-sel.open){
  position:relative;z-index:470}
.data-table:has(.nice-sel.open){position:relative;z-index:470}
.nice-hidden{position:absolute!important;opacity:0;pointer-events:none;width:1px;height:1px}
.nice-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;
  background:#ffffff!important;border:1px solid #d3dce4;border-radius:5px;padding:9px 13px;
  font:inherit;font-size:15px;color:#16222e!important;cursor:pointer;min-width:150px;
  text-align:left;min-height:auto;box-shadow:none!important}
.nice-btn:after{content:'▾';color:var(--ink-3);font-size:13px}
.nice-btn:hover{border-color:#2d6489;background:#f7fafc!important}
.nice-sel.open .nice-btn{border-color:var(--deep);box-shadow:0 0 0 3px rgba(45,100,137,.16)}
.nice-list{display:none;position:absolute;left:0;top:calc(100% + 4px);z-index:9000;background:#fff;
  border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 34px rgba(18,48,71,.24);
  padding:5px;max-height:280px;overflow:auto;min-width:100%;overscroll-behavior:contain;
  scrollbar-gutter:stable;touch-action:pan-y}
.nice-list.up{top:auto;bottom:calc(100% + 4px)}
.nice-list.portal-open{display:block!important;position:fixed;z-index:10050}
.nice-sel.open .nice-list{display:block}
.nice-list .nice-item{display:block!important;width:100%;text-align:left;border:0;
  background:#ffffff!important;color:#16222e!important;padding:11px 13px;border-radius:6px;
  font:inherit;font-size:15px;cursor:pointer;min-height:auto;white-space:normal;line-height:1.35;
  box-shadow:none!important;text-shadow:none}
.nice-list .nice-item:hover,.nice-list .nice-item:focus-visible{background:#e7eff6!important;
  color:#123047!important}
.nice-list .nice-item.on,.nice-list .nice-item.on:hover{background:#123047!important;
  color:#ffffff!important;font-weight:600}
.date-field{position:relative;display:inline-block}
.date-btn{display:inline-flex;align-items:center;gap:9px;background:#ffffff!important;
  border:1px solid #d3dce4;border-radius:5px;padding:9px 13px;font:inherit;font-size:15px;
  color:#16222e!important;cursor:pointer;min-width:170px;text-align:left;min-height:auto;
  box-shadow:none!important}
.date-btn:hover{border-color:#2d6489;background:#f7fafc!important}
.date-btn b{font-size:15px;line-height:1}
.cal{position:fixed;z-index:500;background:#fff;border:1px solid var(--line);border-radius:10px;
  box-shadow:0 16px 44px rgba(18,48,71,.26);padding:12px;width:268px;display:none}
.cal.show{display:block}
.cal-head{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.cal-title{flex:1;text-align:center;font-weight:700;color:var(--deep);font-size:15px}
.cal .cal-head button{width:36px;height:36px;padding:0;border:1px solid #d3dce4;
  background:#ffffff!important;color:#123047!important;border-radius:6px;font-size:19px;
  cursor:pointer;min-height:auto;box-shadow:none!important}
.cal .cal-head button:hover{background:#e7eff6!important;color:#123047!important}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-dow{text-align:center;font-size:12px;color:var(--ink-3);padding:3px 0}
.cal .cal-day{height:36px;border:0;background:#ffffff!important;color:#16222e!important;
  border-radius:6px;cursor:pointer;font-size:15px;padding:0;min-height:auto;box-shadow:none!important}
.cal .cal-day:hover{background:#e7eff6!important;color:#123047!important}
.cal .cal-day.is-weekend{color:#a8322a!important}
.cal .cal-day.is-today{outline:2px solid #d9b64f;font-weight:700}
.cal .cal-day.is-set,.cal .cal-day.is-set:hover{background:#123047!important;
  color:#ffffff!important;font-weight:700}
.cal .cal-foot{display:flex;gap:7px;margin-top:10px}
.cal .cal-foot button{flex:1;height:38px;border:1px solid #d3dce4;background:#ffffff!important;
  color:#123047!important;border-radius:6px;cursor:pointer;font-size:14px;min-height:auto;
  box-shadow:none!important}
.cal .cal-foot button:hover{background:#e7eff6!important;color:#123047!important}
.chip-now{display:inline-block;margin-left:8px;background:#1d7a4d;color:#fff;border-radius:11px;
  padding:1px 10px;font-size:12px;font-weight:700;vertical-align:2px}
.chip-soon{display:inline-block;margin-left:8px;background:#e7eff6;color:#1f4d6b;border-radius:11px;
  padding:1px 10px;font-size:12px;vertical-align:2px}
tr.row-now td{background:#f3faf6!important;box-shadow:inset 0 2px 0 #1d7a4d}
.more{position:relative;display:inline-block}
tr:has(.more[open]){position:relative;z-index:60}
td.acts:has(.more[open]){position:relative;z-index:60}
.more[open]{z-index:120}
td.acts{position:relative;z-index:1}
tr:has(details.more[open]) td{position:relative;z-index:110}
.more>summary{list-style:none;cursor:pointer;border:1px solid var(--line);background:#fff;
  color:var(--deep);border-radius:4px;padding:7px 14px;font-size:14px;font-weight:600}
.more>summary::-webkit-details-marker{display:none}
.more>summary:after{content:' ▾'}
.more>summary:hover{background:#eef4f9;border-color:#b9c7d3}
.more[open]>summary{background:var(--deep);color:#fff;border-color:var(--deep)}
.more-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:400;background:#fff;
  border:1px solid var(--line);border-radius:7px;box-shadow:0 10px 30px rgba(18,48,71,.22);
  min-width:215px;padding:6px;display:flex;flex-direction:column;gap:2px}
.more-menu a,.more-menu button{display:block;width:100%;text-align:left;background:none;
  border:0;padding:9px 12px;border-radius:5px;font-size:15px;color:var(--ink);
  text-decoration:none;font-weight:400;cursor:pointer;min-height:auto}
.more-menu a,.more-menu button{background:#ffffff!important;color:#16222e!important;
  box-shadow:none!important;text-shadow:none}
.more-menu a:hover,.more-menu button:hover,.more-menu a:focus-visible,
.more-menu button:focus-visible{background:#e7eff6!important;color:#123047!important}
.more-menu form{margin:0}
.ai-key-menu{width:320px;max-width:calc(100vw - 24px);box-sizing:border-box;right:0!important;left:auto!important;overflow-wrap:anywhere}
.attempts-more{display:inline-block;margin-top:7px}
.attempts-more>summary{cursor:pointer;color:var(--deep);font-size:13px}
.attempt-list{display:flex;flex-direction:column;gap:5px;margin-top:6px;min-width:220px}
.attempt-list a{font-size:13px;color:var(--deep);text-decoration:none}
.attempt-list a:hover{text-decoration:underline}
.model-choice{width:auto;padding:6px 12px;font-size:14px}
.model-choice.free{border-top:3px solid #1d7a4d;color:#17603c;font-weight:700}
.current-period-panel{border-top:1px solid var(--line)}
/* ПК: у учителя основные разделы всегда одной строкой. Редкие действия — в «Ещё».
   Это убирает случайные переносы кнопок на 1366/1440/1600px и при масштабировании браузера. */
.teacher-nav-compact{display:none}
.nav-full-list{display:contents}
@media (min-width:1101px){
  body.role-teacher .top-in{display:flex;flex-wrap:nowrap;align-items:center;gap:14px;padding:10px 0}
  body.role-teacher .brand{flex:0 1 285px;min-width:190px;margin-bottom:0}
  body.role-teacher nav.main{display:block;flex:1 1 auto;min-width:0;margin-left:0}
  body.role-teacher .teacher-nav-compact{display:flex;align-items:center;justify-content:flex-end;gap:3px;flex-wrap:nowrap;min-width:0}
  body.role-teacher .nav-full-list{display:none}
  body.role-teacher .teacher-nav-compact>a{padding:7px 9px;font-size:13px;white-space:nowrap;flex:0 0 auto}
  body.role-teacher .nav-more-desktop{width:auto;flex:0 0 auto;margin-left:2px}
  body.role-teacher .nav-more-desktop>summary{padding:7px 11px;border-color:rgba(255,255,255,.30);background:rgba(255,255,255,.08);color:#d7e6f2;font-size:13px;white-space:nowrap}
  body.role-teacher .nav-more-desktop>summary:hover{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.45)}
  body.role-teacher .nav-more-desktop[open]>summary,
  body.role-teacher .nav-more-desktop.nav-more-on>summary{background:#fff;color:var(--deep);border-color:#fff;font-weight:700}
  body.role-teacher .nav-more-menu{right:0;top:calc(100% + 7px);min-width:260px;max-width:min(360px,calc(100vw - 24px));padding:7px;z-index:12050}
  body.role-teacher .nav-more-menu a{padding:10px 12px!important;font-size:14px!important;border-radius:6px!important;white-space:normal!important;margin:0!important}
  body.role-teacher .nav-more-menu a.exit{color:#a8322a!important;border-top:1px solid var(--line-2);margin-top:5px!important;padding-top:11px!important}
  /* Выпадающее меню «Ещё» должно быть выше любых карточек/липких блоков страницы.
     Само меню находится внутри header.top, поэтому одного большого z-index у .more-menu
     недостаточно: поднимаем весь stacking context шапки только пока меню открыто. */
  body.pc-nav-more-open header.top{position:relative;z-index:13000!important}
  body.pc-nav-more-open .nav-more-desktop{position:relative;z-index:13010!important}
  body.pc-nav-more-open .nav-more-menu{z-index:13020!important}
}
/* На очень узком ПК не уменьшаем текст до нечитаемого: слегка уплотняем только интервалы. */
@media (min-width:1101px) and (max-width:1280px){
  body.role-teacher .brand{flex-basis:230px;font-size:17px}
  body.role-teacher .brand small{font-size:12px}
  body.role-teacher .teacher-nav-compact>a{padding:7px 7px;font-size:12.5px}
}
/* Планшет и узкий ноутбук: вместо сжатой полосы разделов используем меню-кнопку. */
@media (min-width:761px) and (max-width:1100px){
  body.role-teacher .teacher-nav-compact{display:none!important}
  body.role-teacher .nav-full-list{display:contents!important}
  header.top{padding:0 16px}
  .top-in{position:relative;padding:9px 0;gap:8px;min-height:48px}
  .brand{font-size:17px;max-width:calc(100% - 68px)}
  .brand small{font-size:12px}
  .burger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:46px;height:42px;
    background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);border-radius:8px;
    padding:0 11px;position:absolute;right:0;top:7px;z-index:10061}
  .burger span{display:block;height:2px;background:#fff;border-radius:2px;transition:.18s}
  body.nav-open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  body.nav-open .burger span:nth-child(2){opacity:0}
  body.nav-open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  nav.main{position:fixed;left:0;right:0;top:0;bottom:0;background:#0f2a3f;z-index:10060;
    margin:0!important;display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:72px 18px 24px;
    overflow-y:auto;transform:translateY(-100%);transition:transform .2s ease;visibility:hidden}
  body.nav-open{overflow:hidden}
  body.nav-open nav.main{transform:none;visibility:visible}
  nav.main:before{content:'Разделы';display:block;color:#9db6cb;font-size:13px;
    letter-spacing:.06em;text-transform:uppercase;margin:0 0 5px 2px}
  nav.main a{white-space:normal!important;padding:11px 14px!important;font-size:15px!important;border-radius:8px;
    background:rgba(255,255,255,.06);margin:0;text-align:left}
  nav.main a.on{background:#fff;color:var(--deep);font-weight:700}
  nav.main a.size,nav.main a.exit{margin-top:3px;border:1px solid rgba(255,255,255,.22)}
}
@media (max-width:760px){
  tr.row-now td{background:#fff!important;box-shadow:none!important}
  tr.row-now td:first-child{border-top:3px solid #1d7a4d!important}
  .nice-backdrop{position:fixed;inset:0;background:rgba(16,30,42,.40);z-index:8980}
.nice-list.portal-open{background:#fff!important;opacity:1!important;pointer-events:auto!important}
  .nice-btn{width:100%;min-height:46px;font-size:16px}
  .nice-sel{display:block;width:100%}
  .nice-list{position:fixed;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));top:auto;
    border-radius:14px;max-height:min(70dvh,calc(100dvh - 28px));
    padding:10px 10px calc(16px + env(safe-area-inset-bottom));
    box-shadow:0 -10px 34px rgba(18,48,71,.32);min-width:0;z-index:10050}
  .nice-list.up{top:auto;bottom:max(8px,env(safe-area-inset-bottom))}
  .nice-list .nice-item{padding:14px 14px;font-size:17px}
    .cal{left:10px!important;right:10px!important;width:auto;max-width:340px;margin:0 auto}
  .more{width:100%}
  .more>summary{text-align:center}
  .more-menu{position:static;box-shadow:none;border:0;padding:4px 0;min-width:0}
  .more-menu a,.more-menu button{border:1px solid var(--line-2);margin-bottom:5px}
  .ai-key-menu{width:100%;max-width:none;right:auto!important;left:auto!important}
}

body.big{font-size:21px}
body.big button,body.big .btn{font-size:20px;padding:11px 20px}
body.big input,body.big select,body.big textarea{font-size:20px;padding:10px 12px}
body.big th,body.big td{font-size:19px}
body.big h1{font-size:29px}
body.big table.grid td.cell,body.big table.grid td.cell input{width:60px;min-width:60px}
body.big table.grid td.cell input{height:50px;font-size:23px}
body.big table.grid td.cell input.multi{font-size:17px}
body.big .pal{width:320px}
body.big .pal-grid button{height:60px;font-size:25px}
body.big .hint,body.big .legend,body.big .tip{font-size:19px}

@media (max-width:760px){
  body.role-teacher .teacher-nav-compact{display:none!important}
  body.role-teacher .nav-full-list{display:contents!important}
  main{padding:12px 10px 40px}
  header.top{padding:0 12px}
  .top-in{padding:8px 0;gap:6px}
  .brand{font-size:15px;line-height:1.2;width:100%;padding:2px 6px;margin-left:-6px}
  .brand small{font-size:12px;opacity:.75}
  nav.main{margin-left:0;width:100%;flex-wrap:nowrap;overflow-x:auto;padding-bottom:5px;
    gap:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  nav.main::-webkit-scrollbar{display:none}
  .burger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:46px;height:42px;
    background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);border-radius:8px;
    padding:0 11px;position:absolute;right:12px;top:9px;z-index:30}
  .burger span{display:block;height:2px;background:#fff;border-radius:2px;transition:.18s}
  body.nav-open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  body.nav-open .burger span:nth-child(2){opacity:0}
  body.nav-open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .brand{width:auto;max-width:calc(100% - 62px)}

  nav.main{position:fixed;left:0;right:0;top:0;bottom:0;background:#0f2a3f;z-index:25;
    display:flex;flex-direction:column;gap:0;padding:76px 14px 24px;overflow-y:auto;
    transform:translateY(-100%);transition:transform .22s ease;visibility:hidden}
  body.nav-open{overflow:hidden}
  body.nav-open nav.main{transform:none;visibility:visible}
  nav.main a{white-space:normal;padding:15px 16px;font-size:17px;border-radius:9px;
    background:rgba(255,255,255,.06);margin-bottom:8px;text-align:left}
  nav.main a.on{background:#fff;color:var(--deep);font-weight:700}
  nav.main a.size,nav.main a.exit{margin-top:6px;background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.25)}
  nav.main:before{content:'Разделы';display:block;color:#9db6cb;font-size:13px;
    letter-spacing:.06em;text-transform:uppercase;margin-bottom:10px}
  nav.main{scroll-behavior:smooth}
  nav.main a{white-space:nowrap;padding:8px 14px;font-size:14px;border-radius:18px;
    background:rgba(255,255,255,.08);scroll-snap-align:center;transition:background .12s}
  nav.main a.on{background:#fff;color:var(--deep);font-weight:700;
    box-shadow:0 2px 10px rgba(0,0,0,.22)}
  nav.main a:active{background:rgba(255,255,255,.22)}
  nav.main a.size{font-size:13px;border-color:rgba(255,255,255,.3)}

  h1{font-size:20px;line-height:1.25} h2{font-size:17px;margin:20px 0 10px}
  .panel{padding:14px 14px 16px;border-radius:8px;margin-bottom:13px}
  .panel-head{font-size:16px;padding-bottom:8px;margin-bottom:11px}

  /* подсказки: короче и мельче, чтобы не занимали пол-экрана */
  .tip{padding:12px 14px;font-size:15px;line-height:1.45;border-left-width:5px;margin-bottom:14px}
  details.fold>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:9px}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary:after{content:'▾';margin-left:auto;color:var(--ink-3);font-size:15px;
  transition:transform .15s}
details.fold[open]>summary:after{transform:rotate(180deg)}
details.fold:not([open])>summary{margin-bottom:0;border-bottom:0;padding-bottom:0}
details.tip.fold>summary b{font-size:17px;color:#4a3a12}
details.tip.fold[open]>summary{margin-bottom:7px}
.tip>b:first-child{font-size:16px;margin-bottom:5px}
  .tip ol,.tip ul{padding-left:20px}
  .hint{font-size:14px}

  /* панели с кнопками: в ряд по две, а не столбиком во всю ширину */
  .toolbar{flex-direction:column;align-items:stretch;gap:12px}
  .toolbar form{flex-direction:column;align-items:stretch;gap:12px;width:100%}
  .toolbar>label,.toolbar>div,.toolbar form>div{width:100%}
  .toolbar .spacer{display:none}
  .toolbar>a.btn,.toolbar>button,.toolbar form>button{width:auto;flex:1 1 44%;min-width:130px}
  .toolbar{flex-flow:row wrap}
  .toolbar>div:not(.spacer){flex:1 1 100%}
  input[type=text],input[type=date],input[type=password],select,textarea{
    width:100%;font-size:16px;min-height:46px}
  button,.btn{min-height:46px;text-align:center;padding:11px 14px}
  .big-cta{width:100%;font-size:17px}

  /* журнал */
  /* на телефоне таблица не прокручивается внутри себя — она просто продолжается вниз */
  /* жесты не перехватываются: вбок листается таблица, вниз — вся страница */
  .grid-wrap{max-height:none;overflow-x:auto;border-radius:8px;width:fit-content;max-width:100%}
  .nfull{display:none}
  .nshort{display:inline}
  table.grid th.name,table.grid td.name{width:132px;min-width:132px;max-width:132px;
    white-space:normal;line-height:1.25;font-size:13px;padding:6px 7px}
  table.grid td.cell,table.grid td.cell input{width:46px;min-width:46px}
  table.grid td.cell input{height:44px;font-size:17px}
  table.grid thead th{font-size:12px;padding:5px 2px}
  .col-head .t{display:none}
  td.avg,th.avg{min-width:58px;font-size:14px}
  td.abs,th.abs{min-width:46px;font-size:13px}
  .legend{font-size:14px;line-height:1.55}

  .pal{left:0;right:0;bottom:0;top:auto!important;width:auto;border-radius:16px 16px 0 0;
    border-bottom:0;box-shadow:0 -8px 30px rgba(18,48,71,.34)}
  .pal-grid{gap:7px;padding:10px}
  .pal-grid button{height:52px;font-size:21px}
  .pal-foot button{height:46px}
  .pal-now{padding:7px 12px;min-height:34px;font-size:13px}
  .pal-head{padding:8px 12px}
  .toast{left:12px;right:12px;bottom:14px;text-align:center}
  .totop{display:none}   /* у телефонных браузеров есть своя кнопка «наверх» */

  /* таблицы карточками */
  .data-table{border:0;box-shadow:none;background:transparent}
  table.stack thead{display:none}
  table.stack,table.stack tbody,table.stack tr,table.stack td{display:block;width:100%}
  table.stack tr{border:1px solid var(--line);border-radius:8px;margin-bottom:12px;
    padding:8px 13px 12px;background:#fff;box-shadow:var(--shadow)}
  table.stack td,table.stack tr:nth-child(even) td{background:#fff}
  table.stack td{border:0;border-bottom:1px solid var(--line-2);padding:8px 0}
  table.stack td:last-child{border-bottom:0}
  table.stack td:before{content:attr(data-label);display:block;font-size:13px;color:var(--ink-3);
    margin-bottom:4px;font-weight:600}
  table.stack td.acts{display:flex;gap:8px;flex-wrap:wrap;padding-top:11px}
  table.stack td.acts:before{display:none}
  table.stack td.acts>*{margin:0;flex:1 1 42%;min-width:120px}
  table.stack td.num{color:var(--ink);font-weight:700}

  .hub{grid-template-columns:1fr;gap:11px}
  .hub-card{padding:15px 16px}
  .hub-name{font-size:17px}
  .hub-note{font-size:14px}
  .match{gap:14px}
  .mpool{flex:1 1 100%}
  .mleft{min-width:84px;font-size:16px}
  .mcard{font-size:16px;padding:12px 14px}
  .mslot{min-height:50px}
  .opt{font-size:16px;padding:12px 13px}
  .qcard input[type=text],.qcard textarea{font-size:15px}
}

@media (max-width:420px){
  .brand{font-size:14px}
  h1{font-size:18px}
  table.grid th.name,table.grid td.name{width:118px;min-width:118px;max-width:118px;font-size:12px}
  .tip{font-size:14px}
}


/* Android/mobile navigation overlay hardening.
   header.top itself is a stacking context (z-index:10), so a fixed nav inside it
   could still sit below page cards with z-index:20. Raise the whole header only
   while the mobile menu is open. */
@media (max-width:760px){
  body.nav-open{overflow:hidden!important;overscroll-behavior:none;height:100dvh}
  body.nav-open header.top{position:relative;z-index:20000!important}
  body.nav-open nav.main{
    position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;
    box-sizing:border-box!important;z-index:20010!important;
    padding-top:calc(76px + env(safe-area-inset-top))!important;
    padding-bottom:calc(24px + env(safe-area-inset-bottom))!important;
    overflow-y:auto!important;overflow-x:hidden!important;
    overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch!important;
    touch-action:pan-y!important
  }
  body.nav-open .burger{position:fixed!important;z-index:20020!important;
    top:calc(9px + env(safe-area-inset-top))!important;right:12px!important}
  body.nav-open main,body.nav-open .totop{pointer-events:none!important}
}

@media print{
  header.top,nav.main,.no-print,.toolbar,.tip,.pal,.toast,.panel.no-print{display:none!important}
  body{background:#fff;font-size:12px}
  main{max-width:none;padding:0}
  .panel,.data-table,.grid-wrap{border:0;box-shadow:none;padding:0;max-height:none;overflow:visible}
  th,td{font-size:11px;padding:3px 5px;border:1px solid #999}
  table.grid td.cell input{font-size:12px;height:auto;color:#000!important}
  h1{font-size:16px}
  .print-only{display:block!important}
}
.print-only{display:none}

.chip a{color:var(--ink-3);text-decoration:none;margin-left:5px;font-weight:700}
.chip a:hover{color:var(--bad)}
code{background:#f1f5f8;border:1px solid var(--line-2);border-radius:3px;padding:1px 6px;
  font-size:.92em;font-family:"Consolas","Menlo",monospace}
.brand small{white-space:normal}
table.grid td.cell{padding:4px 2px}


/* Проверка работ: мобильный-first интерфейс */
.check-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px}
.check-step{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;box-shadow:var(--shadow);display:flex;gap:10px;align-items:flex-start}
.check-step .num{flex:0 0 30px;height:30px;border-radius:50%;background:var(--deep);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.check-step b{display:block;margin-bottom:2px}.check-step span{font-size:13px;color:var(--ink-3)}
.check-upload{border:2px dashed #b9cbd8;border-radius:14px;padding:18px;background:linear-gradient(180deg,#fbfdff,#f4f8fb);text-align:center;transition:.18s}
.check-upload.ready{border-style:solid;border-color:#8fb6cc;background:#f4fbff}
.check-upload input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.check-upload .upload-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:50px;padding:12px 18px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:700;cursor:pointer}
.check-preview{display:none;margin:14px auto 0;max-width:420px;position:relative}.check-preview.show{display:block;animation:uiIn .22s ease-out both}
.check-preview img{max-width:100%;max-height:52vh;border-radius:10px;border:1px solid var(--line);box-shadow:var(--shadow);object-fit:contain;background:#fff}
.check-preview .remove{position:absolute;right:8px;top:8px;border:0;border-radius:50%;width:38px;height:38px;background:rgba(22,34,46,.86);color:#fff;font-size:20px;cursor:pointer}
.check-file-name{margin:9px 0 0;font-size:14px;color:var(--ink-2);word-break:break-word}
.check-main-card{overflow:visible;position:relative;z-index:20}.check-section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.check-section-title h2,.check-section-title .panel-head{margin:0;border:0;padding:0}
.check-mobile-hint{display:none}
.check-result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.check-result-meta{display:flex;gap:8px;flex-wrap:wrap}.check-badge{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;background:#eef4f8;color:var(--deep);font-size:13px;font-weight:700}
.check-badge.good{background:#e9f7ef;color:#1d7a4d}.check-badge.bad{background:#fff0ee;color:#a8322a}
.check-result-actions{display:flex;gap:8px;flex-wrap:wrap}.danger-outline{border-color:#d9a19d;color:#a8322a!important;background:#fff}
.check-error-list{display:grid;grid-template-columns:1fr;gap:10px}.check-error{border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px}.check-error-top{display:flex;gap:9px;align-items:center;margin-bottom:7px}.check-error-num{width:28px;height:28px;border-radius:50%;background:#d63b2f;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px}.check-error-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.check-error-box{padding:9px 10px;border-radius:8px;background:#f6f9fb}.check-error-box label{display:block;color:var(--ink-3);font-size:12px;margin-bottom:3px}.check-error-why{font-size:13px;color:var(--ink-2);margin-top:7px}
@media(max-width:760px){
  main{padding:16px 12px 42px}
  .page-hero{margin:0 0 12px}
  .page-hero h1{font-size:23px;line-height:1.18}
  .check-steps{grid-template-columns:1fr;gap:8px}.check-step{padding:11px 12px}.check-step .num{flex-basis:28px;height:28px}
  .check-mobile-hint{display:block;font-size:13px;color:var(--ink-3);margin-top:7px}
  .check-main-card,.check-upload{padding:14px 12px}
  .check-upload{padding:16px 12px}.check-upload .upload-btn{width:100%;font-size:16px;min-height:54px}
  .check-preview{max-width:none}.check-preview img{width:100%;max-height:48vh}
  .check-result-head{display:block}.check-result-head h1{font-size:23px;line-height:1.2}.check-result-actions{margin-top:10px;display:grid;grid-template-columns:1fr 1fr}.check-result-actions>*{min-width:0}
  .check-result-meta{gap:6px}.check-badge{padding:6px 9px;font-size:12px}
  .check-error-grid{grid-template-columns:1fr}.check-error{padding:11px}.check-error-top{align-items:flex-start}.checkwrap{width:100%;overflow:auto;-webkit-overflow-scrolling:touch}.checkimg{width:100%;height:auto}
  .errbox{border-width:2px}.errbox b{width:21px;height:21px;font-size:11px;top:-11px;left:-10px}
  .check-go{width:100%;min-height:52px;font-size:17px;position:sticky;bottom:max(10px, env(safe-area-inset-bottom));z-index:20;box-shadow:0 10px 24px rgba(18,48,71,.2)}
  .check-section-title{align-items:flex-start}.check-section-title .hint{font-size:11px;text-align:right}
  .toolbar>div{min-width:0}
  .check-main-card select,.check-main-card input,.check-main-card textarea{width:100%!important;max-width:100%}
}
@media(min-width:761px){
  .check-step:nth-child(2){animation-delay:.05s}.check-step:nth-child(3){animation-delay:.1s}
}
@media(prefers-reduced-motion:reduce){.panel,.check-preview.show{animation:none}.check-upload,.check-preview{transition:none}button,.btn{transition:none}}
@media(prefers-reduced-motion:reduce){.check-preview.show{animation:none}.check-upload,.check-preview{transition:none}}

.page-hero{margin:3px 0 17px}.eyebrow{display:inline-block;font-size:11px;letter-spacing:.13em;font-weight:800;color:var(--deep-3);margin-bottom:4px}.hero-sub{margin:0;color:var(--ink-3);font-size:15px}
.anti-cheat-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px}.anti-cheat-summary>div{background:linear-gradient(145deg,#fff,#f5f9fb);border:1px solid var(--line);border-radius:10px;padding:11px 13px;box-shadow:var(--shadow)}.ac-label{display:block;color:var(--ink-3);font-size:12px;margin-bottom:3px}.anti-cheat-summary strong{font-size:18px;color:var(--deep)}
.risk-pill{display:inline-flex;align-items:center;padding:3px 9px;border-radius:99px;font-weight:800;font-size:12px}.risk-ok{background:#e9f7ef;color:#1d7a4d}.risk-warn{background:#fff1df;color:#8a5a12}.risk-high{background:#fde7e7;color:#a52a2a}.risk-detail{display:block;margin-top:5px;line-height:1.35}
.mini-form{margin:0}.mini-form select{width:100%}.advanced-grid{display:grid;grid-template-columns:1fr;gap:12px}
.panel{animation:none}@keyframes uiIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
button,.btn{transition:transform .18s cubic-bezier(.22,.8,.2,1),box-shadow .25s ease,background .25s ease}button:hover,.btn:hover{transform:translateY(-1px)}
@media(max-width:760px){.page-hero{margin-bottom:12px}.hero-sub{font-size:14px}.anti-cheat-summary{grid-template-columns:1fr 1fr}.anti-cheat-summary>div:last-child{grid-column:1/-1}.check-go{position:sticky;bottom:10px;z-index:20;box-shadow:0 10px 24px rgba(18,48,71,.2)}}
@media(prefers-reduced-motion:reduce){.panel{animation:none}button,.btn{transition:none}}

@media screen and (max-width:1100px){
  header.top .top-in{position:relative;display:flex;flex-wrap:nowrap;align-items:center;min-height:60px;padding:10px 0;gap:12px}
  header.top .brand{flex:1 1 0%;min-width:0;width:auto;max-width:calc(100% - 58px);margin:0;padding:0;overflow-wrap:anywhere}
  header.top .burger{position:static;flex:0 0 46px;width:46px;height:44px;min-height:44px;margin:0;align-self:center}
  body.nav-open header.top{z-index:20000!important}
}
.report-controls{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:0 0 20px}
.report-controls label{display:flex;flex-direction:column;gap:5px;min-width:150px;flex:1 1 150px;max-width:280px}
.report-controls .nice-sel{width:100%;max-width:100%}.report-controls .btn{margin:0;min-height:44px}
.report-controls .report-actions{display:flex;flex-wrap:wrap;gap:10px}
@media(max-width:600px){.report-controls label{max-width:none;min-width:0;flex-basis:100%}.report-controls .report-actions{width:100%}.report-controls .btn{flex:1;text-align:center}}

form[method=get] button[hidden]{display:none!important}
.issued-table th:last-child{text-align:left!important}
.journal-filter-panel{margin-bottom:18px}.journal-filter-panel form{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:0}
.journal-filter-panel label{display:flex;flex-direction:column;gap:7px;min-width:0;flex:1 1 240px;margin:0}
.journal-filter-panel input[type=text],.journal-filter-panel .nice-sel,.journal-filter-panel .nice-btn{width:100%;max-width:100%;min-height:44px;box-sizing:border-box}
.journal-filter-panel .filter-search{flex:2 1 320px}.journal-filter-panel .nice-btn{display:flex;align-items:center}
.work-status-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}.work-status-tabs a{display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border:1px solid var(--line);border-radius:5px;background:white;color:var(--deep);text-decoration:none;font-size:14px}
.work-status-tabs a[aria-current=page]{background:var(--deep);border-color:var(--deep);color:white}.work-status-tabs .count{font-size:12px;opacity:.85}
.issued-table th,.issued-table td{vertical-align:middle}.issued-table .issue-name{font-weight:700;font-size:15px;line-height:1.4}.issued-table .issue-meta{font-size:12px;color:var(--ink-3);margin-top:5px}
.issued-table .issue-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.issued-table .issue-actions .btn,.issued-table .more>summary{font-size:13px;min-height:38px;padding:8px 12px;box-sizing:border-box;text-align:center}
.issued-table .more-menu{min-width:215px}.issued-table .more-menu form{margin:0}.issued-table .more-menu button{display:block;width:100%;text-align:left;border:0;border-radius:0;background:transparent;box-shadow:none;color:var(--deep);padding:12px 16px;font-size:14px}.issued-table .more-menu button.danger{color:#ae3030}.issued-table .more-menu button:hover{background:#f1f5f8}
.issued-table-wrap{overflow:visible}.issue-pages{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin:18px 0;font-size:13px;color:var(--ink-3)}
.report-controls{background:white;padding:20px;border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);align-items:flex-end}.report-controls label{max-width:none}.report-controls .report-actions{align-self:flex-end}.report-controls .btn{font-size:14px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:760px){.journal-filter-panel form{gap:12px}.journal-filter-panel label{flex-basis:100%}.issued-table .issue-actions{justify-content:flex-start}.issued-table td.acts:before{display:none}.issued-table td.acts{padding-top:12px}.issued-table .more-menu{right:0}.issued-table tr{overflow:visible!important}.work-status-tabs{gap:6px}.work-status-tabs a{flex:1;justify-content:center;padding:9px 8px;font-size:13px}.report-controls{padding:14px}}

:root{--surface:#fff;--surface-soft:#f1f5f8}
.results-heading,.completion-summary{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.results-heading h1{margin:10px 0}.results-heading>div:first-child{min-width:0;flex:1}.work-actions{display:flex;gap:8px;flex-wrap:wrap}
.result-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);background:var(--surface);border-radius:6px;margin:16px 0;overflow:hidden}.result-summary>div{padding:16px;border-right:1px solid var(--line)}.result-summary>div:last-child{border-right:0}.result-summary b{display:block;font-size:24px;color:var(--deep)}.result-summary span{font-size:13px;color:var(--ink-3)}
.completion-section{padding:20px}.completion-summary p{margin:5px 0}.completion-settings{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.completion-settings>summary,.penalty-settings>summary,.results-help>summary{cursor:pointer;font-weight:600;padding:8px 0}.completion-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;margin-top:12px}.completion-layout select{width:100%}.completion-checks label,.check-line{display:flex;align-items:flex-start;gap:10px;margin:12px 0;line-height:1.5}.completion-section input[type=checkbox]{width:20px;height:20px;flex:0 0 20px;margin:1px 0;accent-color:var(--deep)}.penalty-settings{margin:8px 0 16px}.exemption-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 16px}.completion-action{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:14px;border-top:1px solid var(--line);padding-top:14px}.completion-action label{margin:0}#resultTable th,#resultTable td{font-size:14px;vertical-align:middle}#resultTable .issue-meta{max-width:290px;font-size:12px;margin-top:5px}#resultTable .risk-detail{font-size:12px}.results-help{margin-top:16px}.staff-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.staff-row{padding:12px 0;border-bottom:1px solid var(--line-2)}.staff-row:last-child{border-bottom:0}.staff-row p{margin:6px 0}summary:focus-visible,a:focus-visible,button:focus-visible{outline:3px solid var(--deep-3);outline-offset:3px}
@media(max-width:760px){.completion-layout,.staff-layout{grid-template-columns:minmax(0,1fr);gap:12px}.result-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.result-summary>div:nth-child(2){border-right:0}.result-summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.completion-section{padding:14px}.completion-action>*{width:100%}#resultTable tr{margin:0 0 12px}#resultTable td{padding:10px 14px}#resultTable td:empty{display:none}.results-heading .work-actions{width:100%}.results-heading .work-actions>*{flex:1;text-align:center}.result-filter-panel .toolbar{align-items:stretch}.result-filter-panel input,.result-filter-panel .nice-sel{width:100%}.exemption-list{grid-template-columns:minmax(0,1fr)}}
@media print{.result-summary{break-inside:avoid}.results-help{display:none!important}#resultTable th,#resultTable td{font-size:10px}.result-summary b{font-size:18px}}

.nice-hidden{min-width:0!important;max-width:1px!important;width:1px!important}
@media(max-width:760px){#resultTable tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));background:var(--surface)}#resultTable td{min-width:0;width:auto}#resultTable td.num{display:none}#resultTable td[data-label="Ученик"],#resultTable td[data-label="Индикатор честности"],#resultTable td.acts{grid-column:1/-1}#resultTable td:before{font-size:12px}}
@media screen and (prefers-color-scheme:dark){
 :root{color-scheme:dark;--ink:#e2ebf2;--ink-2:#cad8e3;--ink-3:#a6bbc8;--bg:#131f2a;--line:#415766;--line-2:#304656;--surface:#1e2d39;--surface-soft:#253b4b;--deep-3:#8fc3e5;--gold:#413c27;--gold-line:#766c45;--gold-ink:#f0dc9a}
 body{background:var(--bg)}h1,h2,h3,.panel-head,.hub-name,.result-summary b,.student-space h1{color:var(--ink)}a{color:#a2cee9}a:hover{color:#c9e7fa}
 .panel,.data-table,.grid-wrap,.hub-card,.work-card,.report-controls,.result-summary,.work-status-tabs a,.report-sheet,.report-card,.report-main,.report-subject{background:var(--surface);color:var(--ink);border-color:var(--line)}
 input,select,textarea,.nice-btn,.nice-menu,.nice-opt,.more>summary,.more-menu,.more-menu a,.more-menu button,.cal,.cal .cal-day,.cal .cal-head button,.cal .cal-foot button{background:var(--surface)!important;color:var(--ink)!important;border-color:var(--line)!important}
 .nice-opt:hover,.nice-opt.active,.more-menu a:hover,.more-menu button:hover,.cal .cal-day:hover,.cal .cal-head button:hover{background:var(--surface-soft)!important;color:var(--ink)!important}
 button,.btn,.work-status-tabs a[aria-current=page]{background:#245a79;color:#fff;border-color:#4c85a6}button:hover,.btn:hover{background:#306c8d;color:#fff}button.ghost,.btn.ghost{background:var(--surface);color:#b9def4;border-color:var(--line)}
 th,table.grid th,table.grid td.name,table.grid td.avg,table.grid td.final,.report-metric,.tip,.work-badge,.student-space .grade-stats span{background:var(--surface-soft)!important;color:var(--ink)!important}
 table.grid td,table.grid td.cell,table.grid td.cell input{background:var(--surface)!important;color:var(--ink)!important}.result-summary b{color:var(--ink)}
 table.stack tr,table.stack td,table.stack tbody tr:nth-child(even) td,tbody tr:nth-child(even) td{background:var(--surface)!important;color:var(--ink)!important}
 .task-folder,.task-folder>summary,.task-topic-head,.task-compact{background:var(--surface)!important;color:var(--ink)!important}.task-folder>summary,.task-topic-head{background:var(--surface-soft)!important}.folder-title,.task-name{color:var(--ink)!important}.folder-grade,.variant-chip.plain{background:var(--surface-soft)!important;color:var(--ink-2)!important;border-color:var(--line)!important}.variant-chip{background:#234b3b!important;color:#b9e7ce!important;border-color:#3a6653!important}
 #journal-notice{color:var(--ink-3)!important}
 header.top,nav.main{color:#fff}header.top a{color:#d3e6f2}.more-menu button.danger{color:#ffb8ac!important}.risk-ok{background:#234b3b;color:#b9e7ce}.risk-warn{background:#574526;color:#ffe2a2}.risk-high{background:#572d2d;color:#ffb8ac}.cal .cal-day.is-set{background:#245a79!important;color:white!important}
}


@media screen {

  .grid-wrap{--grid-average-width:84px;--grid-absence-width:62px;isolation:isolate}

  .grid-wrap table.grid th.avg,.grid-wrap table.grid td.avg{

    position:sticky;right:0;z-index:2;box-sizing:border-box;

    width:var(--grid-average-width);min-width:var(--grid-average-width);max-width:var(--grid-average-width);

    padding-left:4px;padding-right:4px;white-space:nowrap;background:var(--gold);

    border-left:1px solid var(--gold-line);color:var(--gold-ink)

  }

  .grid-wrap table.grid th.abs,.grid-wrap table.grid td.abs{

    position:sticky;right:var(--grid-average-width);z-index:2;box-sizing:border-box;

    width:var(--grid-absence-width);min-width:var(--grid-absence-width);max-width:var(--grid-absence-width);

    padding-left:4px;padding-right:4px;white-space:nowrap;background:#f6f8fa;

    border-left:1px solid var(--line);box-shadow:-3px 0 5px rgba(18,48,71,.08)

  }

  .grid-wrap table.grid thead th.avg,.grid-wrap table.grid thead th.abs{top:0;z-index:5}

  .grid-wrap.fits table.grid td.avg,.grid-wrap.fits table.grid td.abs{position:static}

  body.big .grid-wrap{--grid-average-width:100px;--grid-absence-width:72px}

}

@media screen and (max-width:760px){

  .grid-wrap{--grid-average-width:64px;--grid-absence-width:48px}

  .grid-wrap table.grid th.name,.grid-wrap table.grid td.name{

    width:clamp(100px,30vw,132px);min-width:clamp(100px,30vw,132px);max-width:clamp(100px,30vw,132px);

    overflow:hidden;text-overflow:ellipsis

  }

  body.big .grid-wrap{--grid-average-width:84px;--grid-absence-width:58px}

  body.big .grid-wrap table.grid th.avg,body.big .grid-wrap table.grid th.abs{font-size:16px}

}

@media print{

  .grid-wrap table.grid th,.grid-wrap table.grid td.name,

  .grid-wrap table.grid td.avg,.grid-wrap table.grid td.abs{position:static;box-shadow:none}

}


.grid-mobile-stats{display:none}
@media screen and (max-width:760px){
  .grid-wrap table.grid.has-mobile-summary th.abs,
  .grid-wrap table.grid.has-mobile-summary th.avg,
  .grid-wrap table.grid.has-mobile-summary td.abs,
  .grid-wrap table.grid.has-mobile-summary td.avg{display:none}
  .grid-wrap table.grid.has-mobile-summary th.name,
  .grid-wrap table.grid.has-mobile-summary td.name{
    width:clamp(108px,32vw,140px);min-width:clamp(108px,32vw,140px);max-width:clamp(108px,32vw,140px);
    padding-left:8px;padding-right:8px
  }
  .has-mobile-summary .grid-mobile-stats{
    display:flex;align-items:center;gap:5px;flex-wrap:wrap;
    font:500 11px/1.35 "Segoe UI",Roboto,Arial,sans-serif;
    color:var(--ink-2);padding-top:4px;white-space:nowrap
  }
  .grid-mobile-stats>span{display:inline-flex;gap:3px;align-items:baseline}
  .grid-mobile-stats b{font-weight:700;color:var(--ink)}
  .grid-mobile-stats>span+span{border-left:1px solid var(--line);padding-left:5px}
  body.big .has-mobile-summary .grid-mobile-stats{font-size:13px;gap:4px}
}
@media print{.grid-mobile-stats{display:none!important}}

.task-topic-head h2{font:700 19px/1.35 "Segoe UI",Roboto,Arial,sans-serif;margin:0;color:var(--ink)}
.catalog-unit-title{font-size:14px;line-height:1.45;color:var(--ink-2);margin-top:4px}
.catalog-work-heading{font:600 12px/1.4 "Segoe UI",Roboto,Arial,sans-serif;color:var(--ink-3);margin:0;padding:12px 11px 4px;letter-spacing:.04em;text-transform:uppercase}
.catalog-work-block+.catalog-work-block{border-top:1px solid var(--line)}
.catalog-work-block .task-compact:last-child{border-bottom:0}.catalog-stage{font-size:13px;color:var(--ink-2);margin-top:4px}
.catalog-work-topic{font-size:14px;line-height:1.45;color:var(--ink-2);margin-top:5px;overflow-wrap:anywhere}
.task-main{min-width:0}.task-topic-head>div{min-width:0}.task-topic-head>span{flex:none}
a.variant-chip{display:inline-flex;align-items:center;text-decoration:none}a.variant-chip:hover{text-decoration:underline}a.variant-chip:focus-visible{outline:2px solid var(--deep-3);outline-offset:2px}
@media(max-width:760px){.task-topic-head{align-items:flex-start}.task-topic-head h2{font-size:17px}.catalog-unit-title{font-size:13px}.task-topic-head>span{font-size:11px}.task-name{overflow-wrap:anywhere}}

.result-assigned-variant{margin-top:5px;margin-bottom:3px}
.task-issued{margin-top:8px;display:grid;gap:5px}.task-issued-item{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.task-issued-link{display:inline-flex;padding:3px 8px;border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--deep-3);font-size:12px;font-weight:700;text-decoration:none}
.task-issued-link:hover{text-decoration:underline}.task-issued-link:focus-visible{outline:2px solid var(--deep-3);outline-offset:2px}
.task-issued-state,.task-issued-history{font-size:12px;color:var(--ink-3)}.task-issued-history summary{cursor:pointer}.task-issued-history .task-issued-item{margin-top:5px}

.transfer-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.transfer-heading h2{font:600 20px/1.3 "Segoe UI",Roboto,Arial,sans-serif;margin:0;color:var(--ink)}
.transfer-heading .transfer-ready{font-size:13px}.transfer-primary-row{display:flex;align-items:stretch;gap:10px}
.transfer-primary-row>select,.transfer-primary-row>.nice-sel{min-width:0;flex:1;width:auto}.transfer-primary-row>button{flex:none}
.transfer-primary-row .nice-btn{width:100%;min-height:44px}
.simple-transfer select{max-width:100%}.simple-transfer button:disabled{opacity:.5;cursor:default}
.simple-transfer .transfer-main-hint{margin:9px 0 0;font-size:13px}.simple-transfer .transfer-deadline{margin:4px 0 0;font-size:12px}
.transfer-options{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}
.transfer-options>summary{cursor:pointer;font-weight:600;padding:4px 0}.transfer-options>summary span{color:var(--ink-3);font-size:12px;font-weight:400;margin-left:6px}
.transfer-options .check-line{margin:18px 0}.transfer-options small{display:block;font-size:12px;color:var(--ink-3);margin-top:3px}
.transfer-attendance{border-left:2px solid var(--line);padding-left:13px;margin-left:8px}.transfer-attendance[hidden]{display:none!important}
.transfer-exemptions>summary{cursor:pointer;font-size:13px}.transfer-save{margin-top:4px}.transfer-footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:12px}
.transfer-footer a{font-size:13px}
@media(max-width:760px){.transfer-primary-row{flex-direction:column}.transfer-primary-row>select,.transfer-primary-row>.nice-sel{width:100%;flex:none}.transfer-primary-row>button{width:100%}.transfer-options>summary span{display:block;margin-left:16px;margin-top:3px}.transfer-heading{margin-bottom:14px}}

.work-moved{display:inline-block;margin-top:5px;padding:2px 9px;border-radius:12px;font-size:12.5px;font-weight:600}
.work-moved.ok{background:#e4f3e9;color:#1d6b3f}.work-moved.part{background:#fff2d9;color:#795218}.work-moved.wait{background:#eef2f6;color:#4b6070}
.transfer-done{margin:0 0 14px;padding:10px 13px;border-radius:9px;background:#e4f3e9;color:#1d6b3f;font-weight:600}
.transfer-done.partial{background:#eef4f9;color:var(--deep);font-weight:500}
.simple-transfer select#destinationLesson{width:100%}
.transfer-twos{margin:16px 0 6px}.transfer-twos small{display:block;font-size:12px;color:var(--ink-3);margin-top:3px;font-weight:400}
.transfer-twos input:disabled+span{opacity:.6}
.transfer-go{margin-top:12px;min-height:46px;padding:0 22px;font-size:16px}
.transfer-warn{margin:10px 0 0;padding:8px 12px;border-radius:8px;background:#fff2d9;color:#795218;font-size:13px}
.modal-text{white-space:pre-line}

table.grid td.cell.from-work{position:relative;background:#f6f2ff}
table.grid td.cell.from-work::after{content:"";position:absolute;top:0;left:0;border-style:solid;border-width:11px 11px 0 0;border-color:#7048e8 transparent transparent transparent;pointer-events:none}
.col-works{display:inline-block;margin-top:3px;padding:0 6px;border-radius:8px;background:#efe9ff;color:#4527a0;font-size:10.5px;font-weight:600;white-space:nowrap}
.legend-work{color:#7048e8;font-size:13px}
@media print{table.grid td.cell.from-work::after{display:none}}

.issue-actions form{margin:0}.issue-actions .archive-btn{min-height:34px;padding:0 12px;font-size:13px}
.transfer-archive{margin-top:12px}.transfer-archive button{font-size:13px}
/* даты в шапке журнала не прыгают: место под отметку «из работ» есть у каждой колонки */
table.grid thead th.col-head{vertical-align:top;padding-bottom:20px}
table.grid thead th.col-head .col-works{position:absolute;left:50%;bottom:3px;transform:translateX(-50%);margin:0;font-size:10px;line-height:14px;padding:0 5px}

/* Shared controls, including the HTML default text input. */
input:not([type]),input[type=search],input[type=email],input[type=url],input[type=tel],input[type=number],input[type=time],input[type=datetime-local]{font:inherit;line-height:1.4;color:var(--ink,#233844);padding:8px 11px;border:1px solid var(--line,#d4dfe7);border-radius:4px;background:#fff;box-sizing:border-box;max-width:100%;min-height:40px}
input:disabled,select:disabled,textarea:disabled,.date-btn:disabled,.nice-btn:disabled{background:#f2f5f7;color:#7b8c99;cursor:not-allowed;opacity:.75}
input[type=checkbox],input[type=radio]{appearance:none;-webkit-appearance:none;display:inline-block;flex:none;width:19px;height:19px;min-width:19px;min-height:19px;padding:0;border:1px solid #879ba9;background:#fff;vertical-align:middle;cursor:pointer;border-radius:4px}
input[type=radio]{border-radius:50%}input[type=checkbox]:checked{border-color:#123047;background:#123047 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='m4 10 4 4 8-9' fill='none' stroke='white' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/17px no-repeat}
input[type=radio]:checked{border:5px solid #123047}input[type=checkbox]:indeterminate{background:#123047 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 10h10' stroke='white' stroke-width='2.3' stroke-linecap='round'/%3E%3C/svg%3E") center/17px no-repeat}
input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed;opacity:.5}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid #52748d;outline-offset:3px}
.nice-btn[aria-invalid=true],.date-btn[aria-invalid=true]{border-color:#a8322a;box-shadow:0 0 0 2px #a8322a15}
.journal-field-error{color:#a8322a;font-size:13px;line-height:1.45;margin:6px 0 3px;max-width:100%;overflow-wrap:anywhere}
.journal-calendar{position:fixed;z-index:12000;width:330px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto;background:#fff;color:var(--ink,#233844);padding:14px;border:1px solid var(--line,#d4dfe7);border-radius:8px;box-shadow:0 12px 42px #12304735;font:14px/1.4 "Segoe UI",Arial,sans-serif}
.journal-calendar[hidden]{display:none}.journal-calendar h2{font:600 17px Georgia,serif;margin:0 0 12px;color:var(--deep,#123047)}
.journal-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.journal-cal-head strong{font-size:15px}.journal-cal-head button{padding:4px 10px;min-height:34px;background:#f5f8fa;color:var(--deep,#123047);border-color:var(--line,#d4dfe7)}
.journal-cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.journal-cal-grid .dow{text-align:center;color:#7b8c99;font-size:12px;padding:4px 0}.journal-cal-grid button{font-weight:400;padding:6px 0;min-width:0;min-height:33px;color:var(--ink,#233844);background:#fff;border:1px solid transparent;border-radius:4px}.journal-cal-grid button:hover{background:#eef4f8}.journal-cal-grid .selected{background:var(--deep,#123047);color:#fff}.journal-cal-grid .today{border-color:#a0b6c5}.journal-cal-grid button:disabled{opacity:.35;cursor:not-allowed;background:#f8fafb}
.journal-time{display:flex;align-items:end;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid var(--line,#d4dfe7)}.journal-time label{flex:1;min-width:0;font-size:13px;color:#526a7b}.journal-time input{width:100%;display:block;text-align:center;font-size:20px;padding:8px;margin-top:5px;font-variant-numeric:tabular-nums}.journal-time .sep{font-size:22px;padding-bottom:10px}.journal-cal-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.journal-cal-actions button{font-size:13px;padding:8px 10px;min-height:36px}.journal-cal-actions .ghost{background:#fff;color:var(--deep,#123047);border-color:var(--line,#d4dfe7)}
.date-btn svg{width:17px;height:17px;flex:none;color:#52748d}.date-btn{max-width:100%;gap:9px}.date-btn span{white-space:normal;overflow-wrap:anywhere}
.task-title-fields{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(180px,1.2fr) minmax(160px,.9fr);gap:18px;align-items:start}.task-title-fields input{width:100%}.task-title-fields small{display:block;margin-top:6px;line-height:1.45}.task-title-fields>div{min-width:0}
.checkline{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.checkline>b{flex:none}.checkline>.hint{min-width:0;flex:1 1 220px}
@media(max-width:760px){input:not([type]),input[type=search],input[type=email],input[type=url],input[type=tel],input[type=number],input[type=time],input[type=datetime-local]{font-size:16px;min-height:46px;width:100%}.task-title-fields{grid-template-columns:minmax(0,1fr);gap:12px}.journal-calendar button{min-height:36px}.num-stepper input[type=number]{width:64px;min-width:0}.journal-time input{font-size:20px}}
@media(prefers-reduced-motion:reduce){.journal-calendar{scroll-behavior:auto}}

/* Academic pages use the journal palette, compact lists and ordinary form fields. */
.academic{max-width:1120px;margin:0 auto;color:var(--ink);font-family:Arial,sans-serif;line-height:1.5}
.academic h1,.academic h2,.academic h3{font-family:Arial,sans-serif;font-weight:650;letter-spacing:0}
.academic h1{font-size:26px;margin:8px 0}.academic h2{font-size:18px;margin:0 0 14px}
.academic .subline{color:var(--ink-3);font-size:14px;margin:0 0 20px}
.academic .panel{background:#fff;border:1px solid var(--line);box-shadow:none;border-radius:7px;padding:20px;margin:16px 0}
.academic .academic-head{display:flex;justify-content:space-between;gap:16px;align-items:center;flex-wrap:wrap;margin-bottom:20px}
.academic .academic-head h1{margin:8px 0}.academic .academic-head .subline{margin:0}
.academic .academic-tools{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:16px 0}
.academic label{display:block;font-size:13px;font-weight:600;margin:0 0 14px}
.academic input:not([type=hidden]),.academic textarea,.academic select{display:block;width:100%;margin-top:6px;font:400 15px Arial,sans-serif;border:1px solid #c3cfd8;border-radius:5px;min-height:42px;padding:10px;background:#fff;box-sizing:border-box}
.academic textarea{min-height:80px;resize:vertical}.academic input[readonly]{background:#f2f5f7}
.academic button,.academic .btn{font:600 14px Arial,sans-serif;min-height:42px;border-radius:5px;box-shadow:none}
.academic .academic-tools>label{margin:0;flex:1 1 210px}.academic .academic-tools>button{margin:0}
.academic details>summary{cursor:pointer;font-weight:600;font-size:14px;padding:4px 0}.academic details[open]>summary{margin-bottom:16px}
.academic .quiet{color:var(--ink-3);font-size:13px}.academic .warning{padding:12px 14px;background:#fff8e7;border-left:3px solid #b88925;border-radius:3px;font-size:14px}
.academic .academic-table{width:100%;border-collapse:collapse;font-size:14px}.academic .academic-table th{text-align:left;font-weight:600;color:var(--ink-3);background:#f5f8fa;font-size:12px;padding:12px}.academic .academic-table td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.academic .academic-table tr:last-child td{border-bottom:0}.academic .academic-table td:first-child{min-width:35px}.academic .academic-table small{display:block;color:var(--ink-3)}
.academic .academic-table details{margin:8px 0 0}.academic .academic-table details>summary{font-weight:400;color:var(--deep)}
.academic .academic-mark{display:grid;grid-template-columns:minmax(130px,1fr) 100px auto;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding:12px 0;margin:0}
.academic .academic-mark b{font-size:14px;font-weight:400}.academic .academic-mark label{margin:0}.academic .academic-mark [role=status]{grid-column:1/-1;font-size:13px}.academic .academic-mark [role=status]:empty{display:none}
.academic .academic-mark:last-child{border-bottom:0}.academic .sch-tag{font-weight:600;white-space:nowrap}
@media(max-width:600px){.academic h1{font-size:23px}.academic .panel{padding:16px}.academic .academic-table th,.academic .academic-table td{padding:12px 8px}.academic .academic-tools>button{width:100%}.academic .academic-mark{grid-template-columns:minmax(0,1fr) 78px}.academic .academic-mark>button{grid-column:2}.academic .academic-head{gap:8px}}

.page-back{display:inline-block;margin:0 0 10px;color:var(--deep-3);text-decoration:none;font-size:14px}.page-back:hover{text-decoration:underline}

/* Keep the journal's typography and palette, reduce repeated navigation. */
.sch-workspace{display:grid;grid-template-columns:205px minmax(0,1fr);gap:26px;align-items:start;margin-top:22px}
.sch-sidebar{position:sticky;top:18px;background:#ffffffa6;border:1px solid var(--line);border-radius:7px;padding:14px 9px}
.sch-workspace .sch-tabs{display:flex;flex-direction:column;flex-wrap:nowrap;border:0;padding:0;gap:3px}
.sch-workspace .sch-tabs a{padding:10px 12px;font-size:14px;line-height:1.3}
.sch-workspace .sch-tabs a:not(.active):hover{background:#eaf0f5}
.sch-nav-caption{display:block;padding:6px 12px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3)}
.sch-tabs .sch-nav-caption{margin-top:14px;border-top:1px solid var(--line);padding-top:16px}
.sch-content{min-width:0}.sch-content>.card:first-child{margin-top:0!important}
.sch-tag{display:inline-block;padding:4px 8px;border-radius:4px;background:#edf3f7;color:var(--deep);font-size:12px}
#school-native input[type=file]{width:100%;border-style:dashed;max-width:100%!important;font-size:13px}
#school-native .nice-sel{display:block;max-width:100%;margin-top:5px}
#school-native .nice-btn{width:100%;min-width:100px;max-width:100%;font-size:14px;min-height:42px}
#school-native .nice-btn>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#school-native pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#edf3f7;padding:16px;border-radius:5px}
#school-native input[type=password]{max-width:360px}
@media(min-width:1250px){.sch-workspace{grid-template-columns:220px minmax(0,1fr);gap:30px}}
@media(max-width:950px){.sch-workspace{display:block}.sch-sidebar{position:static;margin-bottom:18px;padding:8px}.sch-sidebar>.sch-nav-caption,.sch-tabs .sch-nav-caption{display:none}.sch-workspace .sch-tabs{flex-direction:row;overflow:auto;white-space:nowrap;padding:3px}.sch-workspace .sch-tabs a{flex-shrink:0}.sch-content .card{overflow-wrap:anywhere}.sch-content .sch-inline>.sch-grow{min-width:150px}}
@media print{.sch-sidebar{display:none}.sch-workspace{display:block}}

/* Fields own their width; long labels wrap above, never through, controls. */
#school-native .sch-inline{gap:16px;align-items:flex-end}
#school-native .sch-inline>label:not(.sch-check){display:flex;flex-direction:column;flex:1 1 210px;min-width:0;max-width:100%;margin:0;line-height:1.4;white-space:normal}
#school-native .sch-inline>.sch-grow{flex:3 1 320px;min-width:0}
#school-native .sch-inline>.sch-number{flex:0 1 135px;min-width:115px}
#school-native .sch-inline>.btn{flex:0 0 auto;min-height:44px;margin:0}
#school-native .sch-inline input:not([type=checkbox]),#school-native .sch-inline select{max-width:100%;width:100%}
#school-native label>.nice-sel{min-width:0;width:100%;margin:6px 0 0}
#school-native .nice-hidden{min-height:1px!important;height:1px!important;min-width:1px!important;padding:0!important;margin:0!important;border:0!important}
#school-native .nice-btn{min-height:44px;box-sizing:border-box}
#school-native .nice-btn[aria-invalid=true]{border-color:#b53028;outline:2px solid #f9d4ce}
.nice-btn:disabled{opacity:.55;cursor:not-allowed}
#school-native input:focus-visible,#school-native textarea:focus-visible{outline:2px solid var(--deep);outline-offset:2px}
#school-native .sch-load{grid-template-columns:minmax(150px,1.1fr) 112px minmax(150px,1fr) minmax(130px,.8fr) auto;gap:16px;padding:18px 0}
#school-native .sch-load label{min-width:0;margin:0;line-height:1.4}
#school-native .sch-load .btn{margin:0;min-height:44px}
#school-native .sch-subject{display:block;margin:5px 0;font-size:14px;color:var(--ink-2)}
#school-native .sch-section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
#school-native .sch-section-heading p{margin:0 0 10px}
#school-native .sch-empty{max-width:680px;padding:16px 0 8px}
#school-native .sch-empty h3{font-size:18px;line-height:1.4}
#school-native .sch-related{display:flex;align-items:center;flex-wrap:wrap;gap:12px 20px;margin:20px 0 0}
#school-native .sch-preparation{border:1px solid var(--line);border-radius:6px;padding:15px 20px;background:#f8fafc;margin:0 0 20px}
#school-native .sch-preparation>summary{font-weight:600;color:var(--deep);cursor:pointer;line-height:1.5}
#school-native .sch-preparation>summary>span{font-size:13px;font-weight:400;color:var(--ink-3);margin-left:12px}
#school-native .sch-preparation ol{display:flex;flex-wrap:wrap;gap:12px 24px;padding:10px 0 0;margin:0;list-style:none}
#school-native .sch-preparation li{display:flex;align-items:center;gap:8px;font-size:13px;margin:0}
#school-native .sch-preparation li>span{border:1px solid var(--line);padding:2px 7px;border-radius:4px;color:var(--ink-3);font-size:12px}
#school-native .sch-preparation li.done>span{background:#edf4ef;color:#26603f}
#school-native .sch-preparation p{font-size:13px;margin:12px 0 0}
#school-native .sch-error{color:#a83229}
@media(min-width:1101px){
 body.role-admin .top-in{display:flex;flex-wrap:nowrap;align-items:center;gap:20px;padding:14px 0}
 body.role-admin .brand{flex:0 1 310px;min-width:200px;margin:0;font-size:20px}
 body.role-admin .brand small{font-size:12px;line-height:1.45}
 body.role-admin nav.main{display:block;flex:1 1 auto;min-width:0;margin:0}
 body.role-admin .teacher-nav-compact{display:flex;align-items:center;justify-content:flex-end;gap:4px;flex-wrap:nowrap}
 body.role-admin .nav-full-list{display:none}
 body.role-admin .teacher-nav-compact>a{font-size:13px;padding:9px 10px;white-space:nowrap}
 body.role-admin .nav-more-desktop{margin-left:4px;flex:none}
 body.role-admin .nav-more-desktop>summary{padding:9px 12px;color:#d7e6f2;border:1px solid #ffffff50;background:#ffffff0a}
 body.role-admin .nav-more-menu{right:0;min-width:240px;z-index:12050}
 body.role-admin .nav-more-menu a{padding:10px 12px!important;margin:0!important}
 body.role-admin .nav-more-on>summary{background:white;color:var(--deep)}
}
@media(max-width:1200px){#school-native .sch-load{grid-template-columns:112px minmax(140px,1fr) minmax(130px,1fr) auto}#school-native .sch-load>div{grid-column:1/-1}}
@media(max-width:700px){
 #school-native .sch-inline>label:not(.sch-check),#school-native .sch-inline>.sch-number{flex:1 1 100%;width:100%;min-width:0}
 #school-native .sch-inline>.btn{width:100%;flex-basis:100%;margin:4px 0 0}
 #school-native .sch-load{grid-template-columns:100px minmax(0,1fr)}
 #school-native .sch-load>label:nth-of-type(3){grid-column:1/-1}
 #school-native .sch-load>.btn{grid-column:1/-1;width:100%}
 #school-native .sch-preparation{padding:14px}
 #school-native .sch-preparation ol{display:grid;gap:10px}
 #school-native .sch-section-heading{flex-wrap:wrap}
}

/* Checkbox choices keep their caption beside the control at every width. */
#school-native .sch-inline>label.sch-check{flex:0 0 auto;flex-direction:row;align-items:center;width:auto;min-width:0;max-width:100%;margin:0;padding:8px 10px;gap:8px;line-height:1.4}
#school-native .sch-check input[type=checkbox]{width:18px!important;height:18px;min-height:18px;margin:0;flex:0 0 18px}
#school-native .sch-options{align-items:center;justify-content:flex-start;gap:6px 12px;margin:0 0 14px}
#school-native .sch-options>label.sch-check{border:1px solid var(--line);border-radius:5px;background:#f8fafc;cursor:pointer;min-height:40px}
#school-native .sch-options>label.sch-check:has(input:checked){background:#edf5f8;border-color:#819fac}
#school-native .sch-options>label.sch-check:focus-within{outline:2px solid var(--deep);outline-offset:2px}

/* Workflows keep controls and save state close to the edited row. */
.people-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}.people-tabs a{padding:10px 14px;border:1px solid var(--line);border-radius:5px;color:var(--deep);background:#fff;text-decoration:none}.people-tabs a[aria-current=page]{background:var(--deep);border-color:var(--deep);color:#fff}
.live-status{display:inline-block;font-size:12px;color:#557065;line-height:1.4;max-width:320px}.live-status[data-error=true]{color:#a52e27}.live-ready [data-live-save]{display:none!important}#main[aria-busy=true]{opacity:.7;cursor:progress}.load-save-state{display:flex;flex-direction:column;gap:8px}.load-bulk-tools{padding:12px 16px;background:#f6f9fb;border:1px solid var(--line);border-radius:6px;margin:12px 0 18px}.load-plan-panel details{margin-bottom:0!important}.draft-tools>form{margin:12px 0}#school-native .sch-room-label{min-width:115px}#school-native .sch-room-label select{max-width:180px}.load-plan-panel .sch-check{white-space:normal}.sch-load>div:first-child>.sch-check{padding:0;margin:0 0 5px}
@media(max-width:700px){.people-tabs{gap:6px}.people-tabs a{flex:1 1 45%;text-align:center;font-size:13px}.load-bulk-tools{padding:12px}.live-status{max-width:100%}}

.live-ready [data-live-retry][hidden]{display:none!important}

.load-bulk-tools form[hidden]{display:none!important}#school-native .draft-tools h2{font-size:19px;margin-bottom:6px}#school-native .draft-tools>p{margin:4px 0 12px}.draft-actions{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.draft-actions>form{margin:0}.load-plan-panel details{margin-top:10px!important}.load-bulk-tools>label{margin:0!important}

/* ===== Единый стиль новых разделов: те же цвета, шрифты и карточки, что у журнала ===== */
.academic,#school-native,#day-dashboard{font-family:inherit;line-height:1.55}
.academic h1,.academic h2,.academic h3,#school-native h1,#school-native h2,#school-native h3{font-family:Georgia,"Times New Roman",serif;font-weight:600;letter-spacing:-.1px}
.academic{max-width:none}
.academic .panel{border-radius:6px;box-shadow:var(--shadow);padding:18px 20px}
.academic input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=file]),.academic textarea,.academic select{font:inherit;font-size:16px}
.academic button,.academic .btn{font:inherit;font-weight:600;font-size:15px}
.academic h1{font-size:25px}.academic h2{font-size:19px}

/* Заголовок страницы: название, строка сведений, действия справа */
.page-head{margin:2px 0 18px}
.page-head .back{display:inline-block;font-size:14px;color:var(--ink-3);text-decoration:none;margin-bottom:6px}
.page-head .back:hover{color:var(--deep)}
.page-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px 20px;flex-wrap:wrap}
.page-head h1{margin:0 0 4px}
.page-head .meta{margin:0;color:var(--ink-3);font-size:15px}
h2.panel-head .count{display:inline-block;min-width:24px;padding:0 7px;border-radius:12px;background:var(--deep);color:#fff;font:700 13px/22px inherit;text-align:center;margin-left:6px;vertical-align:2px;font-family:"Segoe UI",Roboto,Arial,sans-serif}
h3.sub{font-size:15px;font-family:inherit;font-weight:700;color:var(--ink-2);margin:16px 0 8px}

/* Статусы уроков — одни и те же цвета везде */
.status{display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap;background:#eef3f7;color:var(--ink-2);border:1px solid transparent}
.status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.75}
.status.st-done{background:#e9f5ee;color:var(--good)}
.status.st-now{background:var(--good);color:#fff}
.status.st-now::before{animation:pulse 1.6s ease-in-out infinite;opacity:1}
.status.st-soon{background:#e7eff6;color:var(--deep-2)}
.status.st-missing{background:#fdf1e3;color:var(--warn)}
.status.st-cancelled{background:#f6e9e8;color:var(--bad)}
@keyframes pulse{50%{transform:scale(1.5);opacity:.4}}

/* Мой день */
.day-switch{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.day-switch .btn{min-width:44px;text-align:center;padding:8px 12px}
.day-pick{margin:0}.day-pick input{min-height:42px;padding:6px 10px;border:1px solid var(--line);border-radius:4px;font:inherit;font-size:15px;background:#fff}
.day-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
.day-main{display:grid;gap:10px}
.lesson-tile{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:16px;align-items:center;background:#fff;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:6px;padding:14px 16px;box-shadow:var(--shadow);transition:border-color .2s,box-shadow .2s,transform .2s}
.lesson-tile:hover{box-shadow:0 2px 4px rgba(18,48,71,.08),0 10px 24px rgba(18,48,71,.10)}
.lesson-tile.st-now{border-left-color:var(--good);background:linear-gradient(90deg,#f3faf6,#fff 40%)}
.lesson-tile.st-done{border-left-color:#9cc9b0}
.lesson-tile.st-missing{border-left-color:#e0a54a}
.lesson-tile.st-soon{border-left-color:var(--deep-3)}
.lesson-tile.st-cancelled{opacity:.72;border-left-color:var(--bad)}
.lesson-tile.st-cancelled .lt-title a{text-decoration:line-through}
.lt-time{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}
.lt-time b{font-family:Georgia,serif;font-size:26px;color:var(--deep)}
.lt-time span{font-size:13px;color:var(--ink-3);margin-top:3px;font-variant-numeric:tabular-nums;white-space:nowrap}
.lt-title{display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap}
.lt-title a{font-weight:700;font-size:17px;color:var(--ink);text-decoration:none}
.lt-title a:hover{color:var(--deep-3);text-decoration:underline}
.lt-room{font-size:14px;color:var(--ink-3)}
.lt-topic{margin:5px 0 6px;color:var(--ink-2);font-size:15px;overflow-wrap:anywhere}
.lt-hint{color:var(--deep-3)}.lt-empty{color:var(--warn)}
.lt-facts{display:flex;flex-wrap:wrap;gap:6px 14px;list-style:none;margin:0;padding:0;font-size:13px;color:var(--ink-3)}
.lt-facts li::before{content:"○ ";color:#b6c3ce}.lt-facts li.ok::before{content:"● ";color:var(--good)}.lt-facts li.no::before{content:"○ ";color:#d6a24c}
.lt-actions{display:flex;flex-direction:column;gap:6px}
.lt-actions .btn{text-align:center;padding:8px 16px;font-size:14px}
.day-side .panel{margin-bottom:14px}
.link-list{list-style:none;margin:0 0 6px;padding:0}
.link-list li{border-bottom:1px solid var(--line-2)}.link-list li:last-child{border-bottom:0}
.link-list a,.link-list.plain li{display:flex;flex-direction:column;padding:8px 0;text-decoration:none;color:var(--ink);font-size:15px}
.link-list.plain li{flex-direction:row;gap:10px}
.link-list a span,.link-list.plain li span{font-size:13px;color:var(--ink-3)}
.link-list.plain li span{min-width:24px;font-weight:700;color:var(--warn)}
.link-list a:hover{color:var(--deep-3)}
.attention{border-top:3px solid #e0a54a}
.calm{border-top:3px solid #9cc9b0}
.empty-state{text-align:left}
.mini-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}
.mini-stats>div{background:#f4f7fa;border-radius:6px;padding:10px 8px;text-align:center}
.mini-stats b{display:block;font-family:Georgia,serif;font-size:22px;color:var(--deep);line-height:1.1}
.mini-stats span{font-size:12px;color:var(--ink-3)}

/* Карточка урока */
.lesson-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;font-size:15px}
.lesson-nav>a:not(.btn){text-decoration:none;color:var(--deep-3);padding:6px 0}
.lesson-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:20px;align-items:start}
.lesson-layout .panel{margin-bottom:14px}
.lesson-layout label.f{margin-top:14px}
.lesson-layout input[name=topic],.lesson-layout textarea{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:5px;font:inherit;font-size:16px;background:#fff;transition:border-color .15s,box-shadow .15s}
.lesson-layout input[name=topic]:focus,.lesson-layout textarea:focus{border-color:var(--deep-3);box-shadow:0 0 0 3px rgba(45,100,137,.15);outline:0}
.topic-row{display:flex;gap:8px;align-items:stretch}
.topic-row input{flex:1;min-width:0}
.ktp-pick{position:relative}
.ktp-pick>summary{list-style:none;height:100%;display:flex;align-items:center;white-space:nowrap}
.ktp-pick>summary::-webkit-details-marker{display:none}
.ktp-list{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:min(520px,86vw);max-height:360px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 12px 32px rgba(18,48,71,.18);padding:6px;animation:uiIn .16s ease-out}
.ktp-list button{display:flex;gap:8px;width:100%;text-align:left;background:#fff;color:var(--ink);border:0;border-radius:4px;padding:9px 10px;font-weight:400;line-height:1.35}
.ktp-list button:hover,.ktp-list button:focus-visible{background:#eef4f9;transform:none}
.ktp-list button small{margin-left:auto;color:var(--ink-3);white-space:nowrap;padding-left:8px}
.ktp-list button.full{color:var(--ink-3)}
.ktp-suggest{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#f1f7fb;border:1px solid #cfe0eb;border-radius:6px;padding:11px 14px;margin-bottom:4px}
.ktp-suggest small{display:block;color:var(--ink-3);font-size:13px}
.ktp-suggest b{display:block;margin:1px 0;color:var(--deep)}
.ktp-linked{margin:0 0 4px;font-size:14px;color:var(--good)}
.form-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.autosave{font-size:14px;color:var(--ink-3);display:inline-flex;align-items:center;gap:7px;min-height:24px}
.autosave::before{content:"";width:8px;height:8px;border-radius:50%;background:#b6c3ce;transition:background .2s}
.autosave[data-kind=dirty]::before{background:#d6a24c}
.autosave[data-kind=busy]::before{background:var(--deep-3);animation:pulse 1s infinite}
.autosave[data-kind=ok]{color:var(--good)}.autosave[data-kind=ok]::before{background:var(--good)}
.autosave[data-kind=error]{color:var(--bad)}.autosave[data-kind=error]::before{background:var(--bad)}
.lesson-topic{font-size:18px;margin:0 0 6px}
.lesson-mark{font-family:Georgia,serif;font-size:34px;margin:0;color:var(--deep)}
.btn.wide{display:block;text-align:center}
.file-row{margin:6px 0;overflow-wrap:anywhere}
.file-form{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.file-form input[type=file]{max-width:100%;font-size:14px}

/* Журнал: колонка урока, открытого из «Моего дня» или карточки урока */
table.grid th.focus-col,table.grid td.focus-col{background:#fff6dc!important;box-shadow:inset 1px 0 0 #e7c45e,inset -1px 0 0 #e7c45e}
table.grid th.focus-col{animation:focusIn 1.4s ease-out 2}
@keyframes focusIn{50%{background:#ffe9a8}}

/* Вкладки разделов на узком экране: прокрутка с подсказкой, активная видна */
@media(max-width:950px){
 .sch-workspace .sch-tabs{scroll-snap-type:x proximity;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent);scrollbar-width:none}
 .sch-workspace .sch-tabs::-webkit-scrollbar{display:none}
 .sch-workspace .sch-tabs a{scroll-snap-align:start}
}

@media(max-width:1000px){.day-layout,.lesson-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){
 .lesson-tile{grid-template-columns:52px minmax(0,1fr);gap:10px 12px;padding:12px}
 .lt-time b{font-size:22px}
 .lt-actions{grid-column:1/-1;flex-direction:row}.lt-actions .btn{flex:1}
 .topic-row{flex-direction:column}.ktp-pick>summary{justify-content:center}
 .ktp-list{position:static;width:100%;margin-top:6px}
 .day-switch{width:100%}.day-pick{flex:1}.day-pick input{width:100%}
 .page-head h1{font-size:23px}
 .form-foot>button{width:100%}
}
@media(prefers-reduced-motion:reduce){.status.st-now::before,.autosave::before,table.grid th.focus-col,.ktp-list{animation:none}.lesson-tile{transition:none}}
@media print{.day-switch,.lt-actions,.lesson-nav,.back{display:none}}

/* Шапка колонки журнала: вся шапка — ссылка на карточку урока */
table.grid th.col-head .col-link{display:block;color:inherit;text-decoration:none;border-radius:4px;padding:2px 0;position:relative}
table.grid th.col-head .col-link:hover{background:#e7eff6}
table.grid th.col-head .col-link.st-conducted .d::after{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--good);margin-left:4px;vertical-align:3px}
table.grid th.col-head .col-link.st-cancelled{color:var(--bad);text-decoration:line-through}
table.grid th.col-head .col-state{display:block;font-size:10px;color:var(--bad);text-decoration:none}
details.fold>summary .hint{font-family:"Segoe UI",Roboto,Arial,sans-serif;font-size:13px;font-weight:400}

/* Расписание: одна колонка, если разделов нет; на телефоне строки — карточки */
.sch-workspace.single{display:block}
@media(max-width:700px){
 .sch-day .sch-scroll{overflow:visible}
 .sch-day table,.sch-day tbody{display:block;width:100%;border:0;box-shadow:none}
 .sch-day thead{display:none}
 .sch-day tbody tr{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:2px 10px;padding:11px 2px;border-bottom:1px solid var(--line-2)}
 .sch-day tbody tr:last-child{border-bottom:0}
 .sch-day tbody td{display:block;border:0!important;padding:0!important;background:none!important;min-width:0}
 .sch-day tbody td:nth-child(1){grid-column:1;grid-row:1/span 3;font-weight:700;color:var(--deep);font-size:14px;line-height:1.35}
 .sch-day tbody td:nth-child(2){grid-column:2;grid-row:1;font-weight:700}
 .sch-day tbody td:nth-child(3){grid-column:2;grid-row:2}
 .sch-day tbody td:nth-child(4){grid-column:2;grid-row:3;font-size:13px;color:var(--ink-3)}
 .sch-day tbody td:nth-child(5){grid-column:3;grid-row:1/span 2;text-align:right;font-weight:700;font-size:15px}
 .sch-day tbody td:nth-child(6){grid-column:1/-1;grid-row:4;margin-top:8px}
}

/* Темы и ДЗ: построчное редактирование */
.topic-list{display:grid;gap:8px}
.topic-item{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:14px;align-items:start;background:#fff;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:6px;padding:12px 14px;box-shadow:var(--shadow)}
.topic-item.is-today{border-left-color:var(--good)}
.topic-item.no-topic{border-left-color:#e0a54a}
.topic-item.is-future{background:#fbfcfd}
.ti-date{display:flex;flex-direction:column;gap:2px;line-height:1.3}
.ti-date b{font-size:16px}.ti-date span{font-size:13px;color:var(--ink-3)}
.ti-date .chip-now{margin:4px 0 0;align-self:flex-start}
.ti-fields{display:grid;gap:6px;min-width:0}
.ti-fields input,.ti-fields textarea{width:100%;border:1px solid transparent;border-radius:4px;padding:7px 9px;font:inherit;font-size:15px;background:#f6f8fa;resize:none;transition:border-color .15s,background .15s}
.ti-fields input{font-weight:600}
.ti-fields input:hover,.ti-fields textarea:hover{border-color:var(--line)}
.ti-fields input:focus,.ti-fields textarea:focus{background:#fff;border-color:var(--deep-3);outline:0;box-shadow:0 0 0 3px rgba(45,100,137,.13)}
.no-topic .ti-topic::placeholder{color:#b07a22}
.ti-text{margin:0}
.ti-files{margin:0;display:flex;gap:10px;flex-wrap:wrap;font-size:14px}
.ti-actions{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:96px}
.ti-actions .btn,.ti-actions button{padding:6px 12px;font-size:14px;text-align:center}
.ti-state{font-size:12px;color:var(--ink-3);text-align:center;min-height:16px}
.ti-state[data-kind=ok]{color:var(--good)}.ti-state[data-kind=error]{color:var(--bad)}.ti-state[data-kind=dirty]{color:var(--warn)}
@media(max-width:700px){.topic-item{grid-template-columns:minmax(0,1fr);gap:8px}.ti-date{flex-direction:row;align-items:baseline;gap:8px;flex-wrap:wrap}.ti-actions{flex-direction:row}.ti-actions .btn{flex:1}}
.ti-date .chip-now{color:#fff}

/* КТП: фильтры, таблица с выполнением */
.year-pick{margin:0;min-width:180px}.year-pick select{width:100%}
.filter-chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.filter-chips a{display:inline-flex;gap:8px;align-items:center;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink-2);text-decoration:none;font-size:14px;transition:background .15s,border-color .15s}
.filter-chips a b{font-size:13px;color:var(--ink-3)}
.filter-chips a:hover{border-color:#b9c7d3;background:#f4f8fb}
.filter-chips a.on{background:var(--deep);border-color:var(--deep);color:#fff}.filter-chips a.on b{color:#cfe0eb}
.filter-chips a.k-review:not(.on) b{color:var(--deep-3)}.filter-chips a.k-missing:not(.on) b,.filter-chips a.k-behind:not(.on) b{color:var(--warn)}
.ktp-table-panel{padding:0;overflow:hidden}
.ktp-table{width:100%;border-collapse:collapse;font-size:15px}
.ktp-table th{text-align:left;font-size:13px;font-weight:600;color:var(--ink-3);background:#f5f8fa;padding:11px 14px;border-bottom:1px solid var(--line)}
.ktp-table td{padding:13px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.ktp-table tr:last-child td{border-bottom:0}
.ktp-table td small{display:block;color:var(--ink-3);font-size:13px;margin-top:3px}
.ktp-table td.act{text-align:right;white-space:nowrap}.ktp-table td.act form{margin:0}
.ktp-table td.act .btn,.ktp-table td.act button{padding:7px 14px;font-size:14px}
.ktp-table tr.k-review{background:#f7fafd}
.warn-text{color:var(--warn)}
.progress-line{position:relative;height:8px;border-radius:4px;background:#e7edf2;max-width:200px;overflow:visible}
.progress-line span{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:var(--good);transition:width .4s ease}
.progress-line i{position:absolute;top:-3px;width:2px;height:14px;background:var(--deep);border-radius:1px}
@media(max-width:760px){
 .ktp-table thead{display:none}.ktp-table,.ktp-table tbody,.ktp-table tr,.ktp-table td{display:block;width:100%}
 .ktp-table tr{padding:12px 14px;border-bottom:1px solid var(--line-2)}.ktp-table td{border:0;padding:4px 0}
 .ktp-table td[data-label]:not(:first-child)::before{content:attr(data-label);display:block;font-size:12px;color:var(--ink-3)}
 .ktp-table td.act{text-align:left;margin-top:6px}.ktp-table td.act .btn,.ktp-table td.act button{width:100%}
}
.ktp-table-panel .ktp-table{margin:0;border:0;box-shadow:none;border-radius:0}
.ktp-table-panel .ktp-table th,.ktp-table-panel .ktp-table td{border-left:0;border-right:0}

/* Обзор: готовность учебного года */
.readiness{max-width:1100px}
.readiness.ready{border-top:3px solid #9cc9b0}
.ready-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.ready-steps li{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line-2);border-radius:6px;background:#fbfcfd}
.ready-steps .mark{flex:0 0 26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;background:#eef3f7;color:var(--ink-3)}
.ready-steps li.done .mark{background:var(--good);color:#fff}
.ready-steps a{font-weight:600;text-decoration:none;color:var(--ink)}.ready-steps a:hover{color:var(--deep-3)}
.ready-steps small{display:block;color:var(--ink-3);font-size:13px}
.board-frame{position:relative;width:100%;overflow:hidden;border-radius:8px;background:#0f1720;border:1px solid var(--line);margin-top:12px}
.board-frame iframe{position:absolute;left:0;top:0;width:1920px;height:1080px;border:0;transform-origin:0 0;pointer-events:none}
.link-list.plain li a{display:inline;padding:0;color:var(--ink)}
.link-list.plain li{align-items:baseline}

/* Журнал на ПК: таблица занимает почти весь экран по высоте; полоса прокрутки
   не наезжает на «Ср. балл» (место под неё резервируется). */
@media(min-width:1000px){
 /* Журнал на ПК конечный: видны все ученики, своей вертикальной прокрутки нет.
    Шапка с датами «прилипает» к верху окна (см. unify.py), горизонтальная прокрутка — у таблицы. */
 .grid-wrap,.grid-wrap:not(.fits){max-height:none!important;overflow-y:hidden;overflow-x:auto}
 .grid-float{position:fixed;top:0;z-index:40;overflow:hidden;background:#fff;box-shadow:0 6px 14px rgba(18,48,71,.14);border:1px solid var(--line);border-top:0;border-radius:0 0 6px 6px;pointer-events:none;opacity:0;transform:translateY(-6px);transition:opacity .15s,transform .15s}
 .grid-float.on{opacity:1;transform:none;pointer-events:auto}
 .grid-float table.grid{margin:0}
}
@media(max-width:999px){.grid-float{display:none!important}}
.board-frame{aspect-ratio:16/9;height:auto}
.mode-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:6px 0 16px}
.mode-card{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:6px;background:#fbfcfd;cursor:pointer;transition:border-color .15s,background .15s}
.mode-card:hover{border-color:#b9c7d3}
.mode-card:has(input:checked){border-color:var(--deep);background:#eef4f9;box-shadow:inset 0 0 0 1px var(--deep)}
.mode-card input{margin-top:4px;flex:0 0 auto}
.mode-card b{display:block}.mode-card small{display:block;color:var(--ink-3);font-size:13px;line-height:1.4;margin-top:2px}
.scope-links{display:grid;gap:14px}.scope-links h3{font-size:15px;margin:0 0 8px;font-family:inherit}
.scope-links div{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.scope-links div h3{flex-basis:100%}
.scope-links .btn{padding:6px 14px;font-size:14px}
.mode-card input[type=radio]{width:18px!important;height:18px;min-height:18px!important;padding:0;margin:3px 0 0;flex:0 0 18px;accent-color:var(--deep)}
body.role-student .sch-day th:nth-child(2),body.role-student .sch-day td:nth-child(2),body.role-parent .sch-day th:nth-child(2),body.role-parent .sch-day td:nth-child(2){display:none}
.mode-card input[type=radio]{appearance:auto!important;-webkit-appearance:radio!important;border:0!important;background:none!important;box-shadow:none!important}
.ktp-upload-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;align-items:start}
.ktp-sample{background:#f6f9fb;border:1px solid var(--line-2);border-radius:6px;padding:10px 12px}
.ktp-sample small{display:block;color:var(--ink-3);margin-bottom:6px}
.ktp-sample table{width:100%;border-collapse:collapse;font-size:14px;background:#fff;box-shadow:none;margin:0}
.ktp-sample th{background:var(--deep);color:#fff;font-weight:600;padding:5px 8px;text-align:left}
.ktp-sample td{padding:5px 8px;border-bottom:1px solid var(--line-2)}
.ktp-sample td:first-child,.ktp-sample td:last-child,.ktp-sample th:first-child,.ktp-sample th:last-child{text-align:center;width:44px}
@media(max-width:800px){.ktp-upload-grid{grid-template-columns:minmax(0,1fr)}}

/* Приложение для Android — в общем стиле журнала */
.guest-login{margin-left:auto;color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.4);border-radius:5px;padding:7px 13px;font-size:14px;white-space:nowrap}.guest-login:hover{background:rgba(255,255,255,.12)}
.app-banner{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--deep);border-radius:6px;padding:12px 14px;margin:0 0 16px}
.app-banner[hidden]{display:none}.app-banner b{display:block;color:var(--ink)}.app-banner span{display:block;color:var(--ink-3);font-size:14px}
.app-banner .ab-ic{width:38px;height:38px;flex:none;border-radius:6px;background:var(--deep);color:#fff;display:flex;align-items:center;justify-content:center}
.app-banner .btn{margin-left:auto;white-space:nowrap}.app-banner .ab-x{background:transparent;border:0;color:var(--ink-3);font-size:16px;padding:4px 8px;min-height:0}
.app-page h1{margin-bottom:2px}.app-h2{margin:26px 0 12px}
.app-hero{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center}
.app-lead{font-size:17px;line-height:1.55;margin:0 0 16px;max-width:640px}
.app-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.app-dl{display:inline-flex;align-items:center;gap:9px;font-size:16px;padding:11px 20px}.app-dl.off{background:#8494a6;border-color:#8494a6;cursor:default}
.app-checks{list-style:none;padding:0;margin:14px 0 0}.app-checks li{position:relative;padding:5px 0 5px 24px}
.app-checks li:before{content:"";position:absolute;left:3px;top:11px;width:9px;height:5px;border-left:2px solid var(--deep-3);border-bottom:2px solid var(--deep-3);transform:rotate(-45deg)}
.app-qr{display:flex;flex-direction:column;align-items:center;gap:8px;width:170px;text-align:center;font-size:13px;color:var(--ink-3)}
.app-qr svg{width:130px;height:130px;padding:6px;border:1px solid var(--line);border-radius:6px;background:#fff}.app-qr b{display:block;color:var(--ink)}
.app-tabs{margin-bottom:12px}
.app-role{display:grid;grid-template-columns:1fr 250px;gap:28px;align-items:center}.app-role[hidden]{display:none}
.app-role h3{font-size:21px;margin:0 0 8px}.app-role p{margin:0;line-height:1.55;color:var(--ink-2)}
.app-phone{width:236px;height:420px;border-radius:30px;background:#1b2430;padding:9px;justify-self:center;box-shadow:0 10px 30px rgba(18,48,71,.18)}
.app-screen{height:100%;border-radius:22px;background:var(--bg,#f1f4f7);overflow:hidden;font-size:11px}
.app-screen-bar{background:var(--deep);color:#fff;padding:22px 12px 10px}.app-screen-bar b{display:block;font-family:Georgia,serif;font-size:15px;font-weight:600}.app-screen-bar span{opacity:.75;font-size:10px}
.app-row{display:flex;align-items:center;gap:8px;background:#fff;margin:7px 8px 0;padding:8px 9px;border-radius:5px;border:1px solid var(--line);border-left:3px solid var(--line)}
.app-row.ok{border-left-color:#3c9a6a}.app-row.warn{border-left-color:#d9a338}
.app-row i{font-style:normal;font-weight:700;color:var(--deep);min-width:10px}.app-row b{display:block;font-size:11px}.app-row small{color:var(--ink-3);font-size:9.5px}
.app-row span{margin-left:auto;font-size:9px;font-weight:700;padding:2px 6px;border-radius:9px;background:#eef3f7;color:var(--deep)}
.app-row.ok span{background:#e4f3e9;color:#286643}.app-row.warn span{background:#fff2d9;color:#795218}
.app-feats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}
.app-feat{display:flex;gap:12px;margin:0}.app-feat p{margin:3px 0 0;color:var(--ink-2);font-size:14px;line-height:1.45}
.app-ico{width:40px;height:40px;flex:none;border-radius:6px;background:#eef4f9;color:var(--deep);display:flex;align-items:center;justify-content:center}
.app-faq details{border-top:1px solid var(--line-2);padding:11px 0}.app-faq summary{cursor:pointer;font-weight:600}.app-faq p{margin:8px 0 0;color:var(--ink-2)}
@media(max-width:760px){.app-hero,.app-role{grid-template-columns:1fr}.app-qr,.app-phone{display:none}.app-feats{grid-template-columns:1fr}
 .app-banner{flex-wrap:wrap}.app-banner .btn{margin-left:52px}}
