/* Портал учителя — дизайн-система: боковая навигация, одна акцентная палитра, цвета предметов, крупные цели для доски */
/* шрифты подключает <link> в шаблонах; @import здесь грузил их второй раз и после CSS (лишний круг на телефоне) */
:root{
  --bg:#F7FAFC;--surface:#fff;--surface-2:#f8f9fc;--ink:#252D43;--ink-2:#475569;--muted:#8a94a6;--line:#e6e8ef;
  --accent:#2F6FE4;--accent-2:#4C86F0;--accent-soft:#EAF2FF;--accent-ink:#fff;
  --ok:#16a34a;--ok-soft:#ecfdf3;--warn:#d97706;--warn-soft:#fff7e6;--danger:#dc2626;--danger-soft:#fef2f2;--info:#0284c7;--info-soft:#eff6ff;
  --phys:#0d9488;--phys-soft:#e6f7f5;--inf:#2563eb;--inf-soft:#eaf1ff;
  --r:18px;--r-s:12px;--shadow:0 1px 2px rgba(15,23,42,.04),0 8px 24px -12px rgba(15,23,42,.12);
  --side:248px;--font:"Golos Text",system-ui,"Segoe UI",Roboto,sans-serif;
  --off:#94a3b8;--off-soft:#eef1f6;--nav:#0f172a;--nav-ink:#cbd5e1;--nav-on:var(--accent);--nav-on-ink:#fff;
  --cls-a:#2F6FE4;--cls-b:#1F55B5;--phys-a:#0d9488;--phys-b:#0ea5e9;--inf-a:#2563eb;--inf-b:#1F55B5
}
/* ---------- темы (переключаются в Настройке, cookie portal_theme) ---------- */
:root[data-theme="a"]{--bg:#FAF7F2;--surface-2:#F4F0E8;--line:#E8E2D8;--accent:#1E9E5A;--accent-2:#2FB56E;--accent-soft:#DDF3E6;--nav:#163D2A;--nav-ink:#CFE3D6;--cls-a:#1E9E5A;--cls-b:#157A45;--phys-a:#2F6FA8;--phys-b:#1F527F;--inf-a:#1E9E5A;--inf-b:#157A45;--warn:#C96F14;--ok:#1E9E5A}
:root[data-theme="b"]{--bg:#F3F8FF;--line:#DCE6F5;--accent:#2F80ED;--accent-2:#5A9BF5;--accent-soft:#DCEBFF;--nav:#2F80ED;--nav-ink:#E3EEFF;--nav-on:#FFC93C;--nav-on-ink:#17233A;--cls-a:#2F80ED;--cls-b:#1F62C4;--phys-a:#22B573;--phys-b:#158A55;--inf-a:#2F80ED;--inf-b:#1F62C4;--ok:#22B573}
:root[data-theme="c"]{--bg:#F6F4EE;--surface-2:#F0EDE5;--line:#E2DDD2;--accent:#0E8A8C;--accent-2:#2AA5A6;--accent-soft:#D6EEEE;--nav:#0B5E60;--nav-ink:#CFE9E9;--cls-a:#0E8A8C;--cls-b:#086466;--phys-a:#B63B72;--phys-b:#8E2B58;--inf-a:#0E8A8C;--inf-b:#086466;--warn:#C47612}
:root[data-theme="d"]{--bg:#F2F3F5;--line:#DFE2E8;--accent:#E4572E;--accent-2:#F07A55;--accent-soft:#FDE3DA;--nav:#1B1F26;--nav-ink:#C9CED8;--cls-a:#1B1F26;--cls-b:#3A4250;--phys-a:#2E7D5B;--phys-b:#215C43;--inf-a:#3A4250;--inf-b:#1B1F26;--r:12px;--r-s:9px;--ok:#2E7D5B}
@media(prefers-color-scheme:dark){/*mode*/:root:not([data-mode=light])[data-theme]{--bg:#0b1020;--surface-2:#0f1629;--line:#232c44}:root:not([data-mode=light])[data-theme="a"]{--accent-soft:#0f2e1c;--nav:#0d2419}:root:not([data-mode=light])[data-theme="b"]{--accent-soft:#0f2a4d;--nav:#143a78}:root:not([data-mode=light])[data-theme="c"]{--accent-soft:#0b2e2e;--nav:#083f41}:root:not([data-mode=light])[data-theme="d"]{--accent-soft:#3a1a10;--nav:#111418}}
:root[data-mode=dark][data-theme]{--bg:#0b1020;--surface-2:#0f1629;--line:#232c44}:root[data-mode=dark][data-theme="a"]{--accent-soft:#0f2e1c;--nav:#0d2419}:root[data-mode=dark][data-theme="b"]{--accent-soft:#0f2a4d;--nav:#143a78}:root[data-mode=dark][data-theme="c"]{--accent-soft:#0b2e2e;--nav:#083f41}:root[data-mode=dark][data-theme="d"]{--accent-soft:#3a1a10;--nav:#111418}
@media(prefers-color-scheme:dark){/*mode*/:root:not([data-mode=light]){--off:#7d879c;--off-soft:#1a2238;--bg:#0b1020;--surface:#131a2e;--surface-2:#0f1629;--ink:#e6e9f2;--ink-2:#b8c0d4;--muted:#7d879c;--line:#232c44;--accent-soft:#16264d;--ok-soft:#052e16;--warn-soft:#3b2605;--danger-soft:#3f0d0d;--info-soft:#0c2340;--phys-soft:#0b2e2b;--inf-soft:#0f2048;--shadow:0 1px 2px rgba(0,0,0,.4)}}
:root[data-mode=dark]{--off:#7d879c;--off-soft:#1a2238;--bg:#0b1020;--surface:#131a2e;--surface-2:#0f1629;--ink:#e6e9f2;--ink-2:#b8c0d4;--muted:#7d879c;--line:#232c44;--accent-soft:#16264d;--ok-soft:#052e16;--warn-soft:#3b2605;--danger-soft:#3f0d0d;--info-soft:#0c2340;--phys-soft:#0b2e2b;--inf-soft:#0f2048;--shadow:0 1px 2px rgba(0,0,0,.4)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font);min-height:100vh}
a{color:var(--accent);text-decoration:none}
h1,h2,h3{margin:0;letter-spacing:-.01em;font-weight:800}
h1{font-size:26px}h2{font-size:18px}h3{font-size:15px}
.muted{color:var(--muted)}.err{color:var(--danger);background:var(--danger-soft);padding:8px 12px;border-radius:var(--r-s)}
small{font-size:12.5px}
svg.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px}

/* ---------- каркас ---------- */
.shell{display:flex;min-height:100vh}
.side{width:var(--side);flex:none;background:var(--nav);color:var(--nav-ink);display:flex;flex-direction:column;padding:18px 14px;position:sticky;top:0;height:100vh}
.side .logo{display:flex;align-items:center;gap:10px;color:#fff;font-weight:800;font-size:17px;padding:6px 10px 18px}
.side .logo .mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--accent-2),var(--ok));display:grid;place-items:center;color:#fff;font-size:16px}
.side nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:var(--nav-ink);font-weight:600;margin:2px 0}
.side nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.side nav a.on{background:var(--nav-on);color:var(--nav-on-ink);box-shadow:0 6px 18px -6px rgba(47,111,228,.7)}
.side .spacer{flex:1}
.side .user{display:flex;align-items:center;gap:10px;padding:10px 12px;border-top:1px solid rgba(255,255,255,.08);margin-top:10px}
.side .user .ava{width:34px;height:34px;border-radius:50%;background:#334155;display:grid;place-items:center;font-weight:700;color:#fff}
.side .user b{display:block;color:#fff;font-size:14px;line-height:1.2}
.side .user small{color:#94a3b8}
.side .user a{color:#94a3b8;margin-left:auto}
.content{flex:1;min-width:0;padding:28px 40px 60px;max-width:1480px}
.page-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px}
.page-head .sub{color:var(--muted);font-weight:500}
.page-head .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.crumbs{font-size:13px;color:var(--muted);margin-bottom:8px}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--accent)}
footer{display:none}
.topbar{display:none}

/* ---------- элементы ---------- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow)}
.card+.card{margin-top:16px}
.card h2{margin-bottom:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);cursor:pointer;font:inherit;font-weight:600;min-height:42px;transition:.15s;white-space:nowrap}
.btn:hover{border-color:#c7cbd6;background:var(--surface-2);transform:translateY(-1px)}
.btn.primary{background:var(--accent);color:var(--accent-ink,#fff);border-color:var(--accent);box-shadow:0 8px 20px -8px rgba(47,111,228,.6)}
.btn.primary:hover{background:#2559c9}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}
.btn.big{font-size:16px;padding:14px 20px;min-height:52px;border-radius:14px}
.btn.small{padding:5px 10px;min-height:0;font-size:13px;border-radius:9px}
.btn.danger{color:var(--danger)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
input,select,textarea{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);width:100%;max-width:100%;transition:.15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.row input,.row select{width:auto}
label{display:block;margin:10px 0;font-weight:600;font-size:13.5px;color:var(--ink-2)}
label input,label textarea,label select{margin-top:6px;font-weight:500;color:var(--ink)}
label.chk{display:flex;gap:10px;align-items:center}label.chk input{width:18px;height:18px;margin:0}
.tag{display:inline-flex;align-items:center;font-size:11.5px;font-weight:700;letter-spacing:.02em;padding:2px 9px;border-radius:999px;background:var(--warn-soft);color:var(--warn);text-transform:uppercase}
.tag.lab{background:var(--phys-soft);color:var(--phys)}.tag.ok{background:var(--ok-soft);color:var(--ok)}.tag.info{background:var(--info-soft);color:var(--info)}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:13.5px;color:var(--ink-2)}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.subj{width:6px;border-radius:6px;background:var(--accent);align-self:stretch}
.subj.физика{background:var(--phys)}.subj.информатика{background:var(--inf)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.dot.физика{background:var(--phys)}.dot.информатика{background:var(--inf)}
.empty{padding:36px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r)}
.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:6px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
pre{white-space:pre-wrap;font:inherit;margin:0}

/* ---------- вход ---------- */
body.auth{display:grid;place-items:center;background:radial-gradient(1200px 600px at 20% -10%,var(--accent-soft),transparent),radial-gradient(900px 500px at 110% 110%,var(--ok-soft),transparent),var(--bg)}
.login{width:400px;max-width:92vw;padding:32px}
.login .mark{width:52px;height:52px;border-radius:16px;background:linear-gradient(135deg,var(--accent-2),var(--ok));display:grid;place-items:center;color:#fff;font-size:24px;margin-bottom:14px}
.login h1{font-size:24px;margin-bottom:4px}.login p.lead{color:var(--muted);margin:0 0 18px}
.login .btn{width:100%;margin-top:10px}
.login .roles{display:flex;gap:4px;padding:4px;background:var(--accent-soft);border-radius:14px;margin-bottom:22px}
.login .roles a{flex:1;text-align:center;padding:11px 8px;border-radius:11px;font-weight:700;color:var(--ink-2)}
.login .roles a.on{background:var(--surface);color:var(--accent);box-shadow:var(--shadow)}
.auth-wrap{display:flex;align-items:center;justify-content:center;gap:56px;flex-wrap:wrap;padding:24px 16px}
.auth-art{width:min(460px,90vw);height:auto;flex:none}
.login input.pin{width:100%;text-align:center;font-size:36px;font-weight:800;letter-spacing:.35em;padding:12px 0 12px .35em;border-radius:14px}
.login .picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin:4px 0 12px}
.login .picks.names{grid-template-columns:1fr}
.login .pick{font:inherit;cursor:pointer;min-height:64px;padding:10px 8px;border-radius:14px;border:1px solid var(--line);background:var(--surface-2);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:.15s}
.login .pick b{font-size:20px}.login .pick small{color:var(--muted);font-size:11.5px}
.login .picks.names .pick{align-items:flex-start;min-height:52px}.login .picks.names .pick b{font-size:16px}
.login .pick:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.login .btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink-2)}
@media(max-width:900px){.auth-art{width:min(300px,70vw)}.auth-wrap{gap:12px}}

/* ---------- Сегодня ---------- */
.hello{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.hello h1{font-size:30px;margin:2px 0}
.hello .actions{margin-left:auto;display:flex;gap:6px}
.quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:20px}
.qa{display:flex;align-items:center;gap:14px;padding:16px 18px;background:var(--surface);border:1px solid var(--line);border-radius:18px;color:var(--ink);font-weight:800;font-size:16px;box-shadow:var(--shadow);transition:.15s}
.qa:hover{transform:translateY(-2px);border-color:var(--accent)}
.qa small{display:block;color:var(--muted);font-weight:500;font-size:13px;margin-top:2px}
.qa .ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;flex:none}
.qa .ic .i{width:24px;height:24px}
.qa.b .ic{background:var(--accent-soft);color:var(--accent)}
.qa.g .ic{background:var(--ok-soft);color:var(--ok)}
.qa.o .ic{background:var(--warn-soft);color:var(--warn)}
.qa.p .ic{background:#EFEAFE;color:#5A3FD0}
@media(prefers-color-scheme:dark){/*mode*/html:not([data-mode=light]) .qa.p .ic{background:#2a2050;color:#b7a6f7}}
html[data-mode=dark] .qa.p .ic{background:#2a2050;color:#b7a6f7}
.classes{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:20px}
.cls{display:block;padding:16px 16px 14px;border-radius:16px;color:#fff;background:linear-gradient(135deg,var(--cls-a),var(--cls-b));box-shadow:0 10px 24px -12px rgba(47,111,228,.6);transition:.15s}
.cls.физика{background:linear-gradient(135deg,var(--phys-a),var(--phys-b));box-shadow:0 10px 24px -12px rgba(13,148,136,.6)}
.cls.информатика{background:linear-gradient(135deg,var(--inf-a),var(--inf-b));box-shadow:0 10px 24px -12px rgba(37,99,235,.6)}
.cls:hover{transform:translateY(-2px)}
.cls .nm{font-size:26px;font-weight:800;line-height:1}
.cls .sb{opacity:.85;font-size:13px;margin:4px 0 10px}
.cls .nx{font-weight:700;font-size:13.5px}
.cls .bar{height:5px;background:rgba(255,255,255,.3);border-radius:5px;margin:10px 0 6px;overflow:hidden}
.cls .bar span{display:block;height:100%;background:#fff;border-radius:5px}
.cls .pr{font-size:11.5px;opacity:.85}
a.upc{color:var(--ink)}a.upc:hover .t b{color:var(--accent)}
.weekstrip{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:22px}
.weekstrip a{display:block;padding:12px 12px 10px;border-radius:14px;background:var(--surface);border:1px solid var(--line);color:var(--ink);transition:.15s}
.weekstrip a:hover{border-color:#c7cbd6;transform:translateY(-1px)}
.weekstrip a.sel{background:var(--ink);color:#fff;border-color:var(--ink)}
.weekstrip a.today:not(.sel){border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.weekstrip .wd{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;opacity:.7}
.weekstrip .dn{font-size:22px;font-weight:800;line-height:1.1;margin:2px 0 6px}
.weekstrip .dots{display:flex;gap:4px;min-height:8px}
.weekstrip .hol{font-size:11px;color:var(--warn);font-weight:600}
.weekstrip a.sel .hol{color:#fcd34d}
.agenda{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}
.agenda-day h2{font-size:22px;margin-bottom:4px}
.agenda-day .sub{color:var(--muted);margin-bottom:14px}
.lesson-card{display:flex;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;margin-bottom:12px;box-shadow:var(--shadow);transition:.15s;color:var(--ink)}
.lesson-card:hover{border-color:#c7cbd6;transform:translateY(-1px)}
.lesson-card.done{opacity:.72}
.lesson-card .time{min-width:64px;font-weight:800;font-size:18px;line-height:1.1;color:var(--ink)}
.lesson-card .time small{display:block;color:var(--muted);font-weight:600;font-size:12px}
.lesson-card .body{flex:1;min-width:0}
.lesson-card .meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--muted);font-weight:600}
.lesson-card .meta b{color:var(--ink);font-size:14px}
.lesson-card .topic{font-weight:800;font-size:17px;margin:4px 0 2px;line-height:1.3}
.lesson-card .sect{color:var(--muted);font-size:13px}
.lesson-card .go{display:flex;flex-direction:column;gap:8px;justify-content:center}
.side-col .card{padding:16px}
.upc{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line)}
.upc:last-child{border:0}
.upc .d{min-width:48px;font-weight:800;font-size:14px}.upc .d small{display:block;color:var(--muted);font-weight:600}
.upc .t{flex:1;font-size:13.5px}.upc .t b{display:block}

/* ---------- урок ---------- */
.hero{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:26px 28px;box-shadow:var(--shadow);margin-bottom:18px}
.hero::before{content:'';position:absolute;left:0;top:0;bottom:0;width:8px;background:var(--accent)}
.hero.физика::before{background:var(--phys)}.hero.информатика::before{background:var(--inf)}
.hero .meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--muted);font-weight:600;font-size:13.5px;margin-bottom:8px}
.hero h1{font-size:28px;line-height:1.2;margin-bottom:6px}
.hero .sect{color:var(--ink-2);font-weight:600}
.hero .nav{position:absolute;right:20px;top:20px;display:flex;gap:6px}
.hero .cta{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin:0 0 18px}
.tile{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:14px;color:var(--ink);font-weight:700;box-shadow:var(--shadow);transition:.15s}
.tile:hover{border-color:var(--accent);transform:translateY(-1px)}
.tile .ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);flex:none}
.tile small{display:block;color:var(--muted);font-weight:500}
.tbl{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}
.tbl th,.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.tbl th{font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface-2)}
.tbl tr:last-child td{border-bottom:0}
.tbl tr.assess td{background:var(--warn-soft)}
.tbl .links a{display:inline-block;margin:2px 10px 2px 0;font-size:13.5px;font-weight:600}
.tbl.small td{padding:6px 10px}

/* ---------- библиотека ---------- */
.lib-subj{display:flex;align-items:center;gap:8px;margin:18px 0 10px;font-size:16px;color:var(--ink-2)}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:10px}
.lib-card{display:block;padding:16px;border-radius:16px;background:var(--surface);border:1px solid var(--line);color:var(--ink);box-shadow:var(--shadow);border-left:6px solid var(--accent);transition:.15s}
.lib-card.физика{border-left-color:var(--phys)}.lib-card.информатика{border-left-color:var(--inf)}
.lib-card:hover{transform:translateY(-2px);border-color:#c7cbd6}
.lib-card .nm{font-size:22px;font-weight:800;line-height:1.1;margin-bottom:6px}
.lib-card .st{font-size:13px;color:var(--ink-2);font-weight:600}
.lib-q{margin:22px 0 8px;font-size:17px}
.lib-sect{padding:4px 12px}
.lib-sect summary{font-size:14.5px}
.lib-row{display:flex;gap:12px;align-items:center;padding:8px 6px;border-top:1px solid var(--line)}
.lib-row:first-of-type{border-top:0}
.lib-row.assess{background:var(--warn-soft);border-radius:8px}
.lib-row .n{min-width:30px;text-align:right;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums}
.lib-row .t{flex:1;min-width:0}.lib-row .t b{font-weight:700}.lib-row .t small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ic-links{display:flex;gap:2px;flex:none}
.ic-links a{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;color:var(--ink-2)}
.ic-links a:hover{background:var(--accent-soft);color:var(--accent)}
@media(max-width:800px){.lib-row{flex-wrap:wrap}.lib-row .t small{white-space:normal}.ic-links{width:100%;justify-content:flex-start}}
.plans{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.plan-group{margin-bottom:10px}.plan-group h3{margin:0 0 8px;color:var(--muted);font-size:12.5px;text-transform:uppercase;letter-spacing:.06em}

/* ---------- настройка ---------- */
.setup{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.setup .card.wide{grid-column:1/-1}
.teaching{border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:10px 0;background:var(--surface-2)}
.teaching .ttl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.teaching .ttl b{font-size:15px}
.sched{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sched .wd{display:flex;gap:6px;align-items:center;margin:0;border:1px solid var(--line);border-radius:12px;padding:6px 10px;background:var(--surface);font-weight:700}
.sched .wd input[type=checkbox]{width:18px;height:18px;margin:0}.sched .wd input{width:62px;padding:6px 8px;margin:0;font-weight:500}
.sched .wd input[size="2"]{width:44px}
details{border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin:8px 0;background:var(--surface)}
details summary{cursor:pointer;font-weight:700;padding:4px 0;list-style:none;display:flex;gap:8px;align-items:center}
details summary::before{content:'›';display:inline-block;transition:.15s;color:var(--muted);font-size:18px}
details[open] summary::before{transform:rotate(90deg)}

/* ---------- журнал ---------- */
.jwrap{overflow:auto;max-height:76vh;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}
.journal{border-collapse:separate;border-spacing:0;font-size:14px;min-width:100%}
.journal th,.journal td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:2px 4px;text-align:center;white-space:nowrap}
.journal thead th{position:sticky;top:0;background:var(--surface-2);z-index:2;font-weight:700;font-size:12px;line-height:1.2;padding:8px 4px;color:var(--ink-2)}
.journal th.name,.journal td.name{position:sticky;left:0;background:var(--surface);z-index:1;text-align:left;min-width:210px;font-weight:600;padding-left:10px}
.journal thead th.name{z-index:3;background:var(--surface-2)}
.journal th.assess,.journal td.assess{background:var(--warn-soft)}
.journal td.cell{position:relative;min-width:58px;height:38px}
.journal td.cell input{width:56px;padding:6px 2px;text-align:center;border:1px solid transparent;background:transparent;border-radius:8px;font-weight:600}
.journal td.cell input:focus{border-color:var(--accent);background:var(--surface);box-shadow:none}
.journal .att{position:absolute;left:3px;top:2px;font-size:10px;line-height:1;padding:2px 5px;border-radius:5px;cursor:pointer;color:var(--muted);min-width:12px;font-weight:700}
.journal .att:empty::before{content:'·'}
.journal .att.н{background:var(--danger-soft);color:var(--danger)}.journal .att.б{background:var(--warn-soft);color:var(--warn)}.journal .att.у{background:var(--info-soft);color:var(--info)}
.journal td.saving{opacity:.6}.journal td.saved{background:var(--ok-soft)}.journal td.err{background:var(--danger-soft)}
.journal td.sum{font-variant-numeric:tabular-nums;color:var(--muted);background:var(--surface-2)}
.journal td.grade{font-weight:800;color:var(--ink)}.journal td.g5{color:var(--ok)}.journal td.g4{color:var(--info)}.journal td.g3{color:var(--warn)}.journal td.g2{color:var(--danger)}
.legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:13px;margin:10px 0 14px}

/* ---------- оценка за урок ---------- */
.marks{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 18px}
.mk{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:10px;border:1px solid transparent}
.mk .att{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--surface-2);color:var(--muted);font-weight:800;font-size:12px;cursor:pointer;flex:none;border:1px solid var(--line)}
.mk .att:empty::before{content:'·'}
.mk .att.н{background:var(--danger-soft);color:var(--danger)}.mk .att.б{background:var(--warn-soft);color:var(--warn)}.mk .att.у{background:var(--info-soft);color:var(--info)}
.mk .nm{flex:1;min-width:0;font-weight:600;line-height:1.25;overflow-wrap:anywhere}   /* ФИО не обрезаем — риск поставить балл не тому */
.mk input{width:74px;text-align:center;font-weight:700;padding:6px 4px}
.mk.saved{background:var(--ok-soft)}.mk.err{background:var(--danger-soft)}.mk.saving{opacity:.6}

/* ---------- анализ СОР ---------- */
.tbl.an th{text-align:center;vertical-align:middle}.tbl.an td.c{text-align:center;font-variant-numeric:tabular-nums}
.tbl.an .lvl-low{background:var(--danger-soft)}.tbl.an .lvl-mid{background:var(--warn-soft)}.tbl.an .lvl-high{background:var(--ok-soft)}
.an-work{padding:12px 0;border-top:1px solid var(--line)}.an-work:first-of-type{border-top:0}
.an-work .ttl{margin-bottom:2px}
.an-tasks{display:flex;gap:6px;flex-wrap:wrap;margin:4px 0}
.an-task{font-size:12.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line)}
.an-task.bad{background:var(--danger-soft);color:var(--danger)}.an-task.ok{background:var(--ok-soft);color:var(--ok)}

/* ---------- сообщения ---------- */
.thread.unread{border-color:var(--accent)}
.msgs{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.msg{max-width:80%;padding:8px 12px;border-radius:12px;background:var(--surface-2);align-self:flex-start;white-space:pre-wrap}
.msg.me{align-self:flex-end;background:var(--accent-soft)}
.msg small{display:block;margin-top:2px;font-size:11.5px}

/* ---------- ученик ---------- */
.st-hw{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:12px;background:var(--accent-soft);margin-bottom:10px;flex-wrap:wrap}
.st-hw.done{background:var(--ok-soft)}
.st-hw .due{min-width:60px;font-weight:800;line-height:1.1}.st-hw .due small{display:block;color:var(--muted);font-weight:600}
.st-hw .txt{flex:1 1 240px}.st-hw .txt b{display:block}
.st-ann{padding:10px 12px;border-left:4px solid var(--warn);background:var(--warn-soft);border-radius:8px;margin-bottom:8px}
.st-marks{display:flex;gap:6px;flex-wrap:wrap}
.st-mark{display:inline-flex;flex-direction:column;align-items:center;min-width:44px;padding:4px 6px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line);font-size:12px}
.st-mark b{font-size:15px}.st-mark.sor{background:var(--warn-soft)}.st-mark.abs{background:var(--danger-soft);color:var(--danger)}
.st-sum{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0;font-weight:700}
.st-sum .g{font-size:26px}
body.student{background:var(--bg)}
.student .top{display:flex;align-items:center;gap:12px;padding:16px 20px;background:#0f172a;color:#fff}
.student .top .ava{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--accent-2),var(--ok));display:grid;place-items:center;font-weight:800}
.student main{max-width:860px;margin:0 auto;padding:16px}
.st-lesson{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid var(--line)}
.st-lesson:last-child{border:0}
.st-lesson.future{opacity:.55}
.st-lesson .d{min-width:48px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.st-lesson .tp{flex:1 1 240px;font-weight:700}
.st-lesson .res{font-size:13px;color:var(--ok);font-weight:700;background:var(--ok-soft);padding:3px 10px;border-radius:999px}
.st-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:8px}
.st-tile{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:16px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);transition:.15s}
.st-tile:hover{border-color:var(--accent);transform:translateY(-1px)}
.st-tile.future{opacity:.55}
.st-tile.assess{background:var(--warn-soft)}
.st-tile .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.st-tile .n{width:34px;height:34px;border-radius:10px;background:var(--accent);color:var(--accent-ink,#fff);display:grid;place-items:center;font-weight:800;flex:none}
.st-tile .d{color:var(--muted);font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}
.st-tile .tp{font-weight:700;line-height:1.3;flex:1}
.st-tile .res{align-self:flex-start;font-size:13px;color:var(--ok);font-weight:700;background:var(--ok-soft);padding:3px 10px;border-radius:999px}
.st-tile .acts{display:flex;gap:6px;flex-wrap:wrap}
.student .top{background:linear-gradient(135deg,var(--cls-b),var(--cls-a))}

/* ---------- опрос на уроке — ученик ---------- */
.st-poll{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:16px;background:var(--accent);color:var(--accent-ink,#fff);font-weight:700;margin-bottom:14px;box-shadow:0 10px 24px -12px rgba(47,111,228,.7)}
.student a.st-poll{color:var(--accent-ink,#fff)}   /* .student a красит ссылки в акцент — на акцентном фоне текст пропадал */
.st-poll small{display:block;font-weight:500;opacity:.85}
.st-poll .go{margin-left:auto;background:var(--surface,#fff);color:var(--accent);padding:8px 14px;border-radius:10px;white-space:nowrap}
.lp{max-width:640px;margin:0 auto;padding:20px 16px}
.lp-wait{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 16px;text-align:center}
.lp-dot{width:16px;height:16px;border-radius:50%;background:var(--accent);animation:lp-pulse 1.4s infinite}
@keyframes lp-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.6);opacity:.4}}
.lp h1{font-size:26px;line-height:1.25;margin:4px 0 16px}
.lp-sub{font-weight:600;font-size:13px}
.lp-opts{display:flex;flex-direction:column;gap:10px}
.lp-opt{font:inherit;font-size:20px;font-weight:700;min-height:64px;padding:14px 18px;border-radius:16px;border:2px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;text-align:left;box-shadow:var(--shadow)}
.lp-opt.on{border-color:var(--accent);background:var(--accent);color:var(--accent-ink,#fff)}
.lp-status{margin-top:14px;font-weight:600;color:var(--ink-2)}

/* ---------- рефлексия по уроку — ученик (карточка в кабинете и экран на уроке) ---------- */
.student .st-refl,.student .st-refl-ok{width:min(848px,calc(100% - 32px));margin:14px auto 0}
.st-refl{display:grid;gap:10px;padding:14px 16px;border-radius:var(--r,16px);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.st-refl .hd small{display:block;color:var(--muted);font-size:13px;font-weight:600}
.st-refl .hd b{font-size:16px;line-height:1.3}
.st-refl input{width:100%}
.st-refl .lv,.lp-refl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.st-refl .lv button,.lp-refl .lp-opt{font:inherit;display:grid;justify-items:center;gap:2px;padding:10px 6px;border-radius:14px;border:2px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;text-align:center}
.st-refl .lv button:hover{border-color:var(--accent)}
.st-refl .lv .e,.lp-refl .e{font-size:30px;line-height:1.1}
.st-refl .lv b{font-size:14.5px}
.st-refl .lv small,.lp-refl small{font-size:12px;color:var(--muted);font-weight:500}
.lp-refl .lp-opt{min-height:0;font-size:16px;box-shadow:none}
.lp-refl .lp-opt.on small{color:inherit;opacity:.85}
.lp-note{display:grid;gap:8px;margin-top:14px}
.lp-note textarea{width:100%;font:inherit}
.st-refl-ok{padding:10px 14px;border-radius:12px;background:var(--ok-soft);color:var(--ok);font-weight:700}
@media(max-width:420px){.st-refl .lv small,.lp-refl small{display:none}.st-refl .lv .e{font-size:26px}}

/* ---------- адаптив ---------- */
@media(max-width:1000px){
  .shell{flex-direction:column}
  .side{display:none}
  .topbar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--nav);color:#fff;position:sticky;top:0;z-index:20}
  .topbar .mark{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--accent-2),var(--ok));display:grid;place-items:center;font-weight:800}
  .topbar b{flex:1}.topbar a{color:#cbd5e1;display:grid;place-items:center;width:40px;height:40px;margin:-8px -6px;border-radius:10px}   /* зона нажатия ≥ 40 px */
  .content{padding:18px 16px 90px}
  .bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);z-index:20;padding:6px 4px env(safe-area-inset-bottom)}
  .bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;font-weight:700;color:var(--muted);padding:6px 2px}
  .bottomnav a.on{color:var(--accent)}
  .agenda{grid-template-columns:1fr}.weekstrip{grid-template-columns:repeat(5,1fr);gap:5px}.weekstrip a{padding:8px 6px}.weekstrip .dn{font-size:18px}
  .grid2,.grid3,.setup{grid-template-columns:1fr}
  .hero{padding:20px 18px}.hero .nav{position:static;margin-top:10px}
  .lesson-card{flex-wrap:wrap}.lesson-card .go{flex-direction:row;width:100%}
  h1{font-size:22px}
  .journal th.name,.journal td.name{min-width:150px;max-width:170px;white-space:normal;font-size:13px}
  .hello h1{font-size:26px}
}
@media(min-width:1001px){.bottomnav{display:none}}
.lp-wait[hidden],.st-poll[hidden]{display:none}

/* выбор темы в Настройке */
.themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-top:8px}
.themes form{margin:0}
.theme{width:100%;font:inherit;font-weight:700;font-size:14px;text-align:left;cursor:pointer;padding:12px;border-radius:14px;border:2px solid var(--line);background:var(--surface);color:var(--ink);display:flex;flex-direction:column;gap:8px}
.theme .sws{display:flex;gap:4px}.theme .sw{width:26px;height:26px;border-radius:8px;border:1px solid rgba(0,0,0,.08)}
.theme.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.theme small{font-weight:500;color:var(--muted)}

/* панель управления (главная администратора)
   план: сводка одной полосой, состояние — индикаторами, детали — в двух колонках (главное / служебное) */
.adm{--adm-gap:16px}
.adm .page-head{align-items:flex-start}
.adm .page-head .sub{margin-top:4px;font-size:13.5px}
.adm-note{border:1px solid var(--line);border-radius:var(--r-s);padding:12px 16px;margin-bottom:var(--adm-gap)}
.adm-note.ok{border-color:var(--ok);background:var(--ok-soft)}
.adm-note code{font-size:16px;font-weight:700;user-select:all}

/* индикаторы состояния */
.health{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-bottom:var(--adm-gap)}
.h-item{display:grid;grid-template-columns:10px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;padding:10px 12px;border-radius:var(--r-s);border:1px solid var(--line);background:var(--surface);color:var(--ink);min-width:0}
.h-item i{grid-row:1/3;width:10px;height:10px;border-radius:50%;background:var(--off);box-shadow:0 0 0 3px var(--off-soft)}
.h-item span{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;line-height:1.3}
.h-item b{font-size:13.5px;font-weight:700;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.h-item.good i{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}
.h-item.bad{border-color:var(--danger);background:var(--danger-soft)}
.h-item.bad i{background:var(--danger);box-shadow:0 0 0 3px rgba(220,38,38,.18)}
.h-item.bad b{color:var(--danger)}
.h-item.off b{color:var(--ink-2)}
.h-item:hover{border-color:var(--accent)}

/* масштаб: одна полоса с разделителями */
.scale{display:grid;grid-template-columns:repeat(6,1fr);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:var(--adm-gap);overflow:hidden}
.scale a{display:block;padding:16px 18px;color:var(--ink);border-left:1px solid var(--line);min-width:0}
.scale a:first-child{border-left:0}
.scale a:hover{background:var(--surface-2)}
.scale b{display:block;font-size:30px;font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.scale span{display:block;margin-top:6px;font-size:12.5px;color:var(--muted);line-height:1.3}
.scale em{font-style:normal;color:var(--warn);font-weight:600}
@media(max-width:1100px){.scale{grid-template-columns:repeat(3,1fr)}.scale a:nth-child(4){border-left:0}.scale a:nth-child(n+4){border-top:1px solid var(--line)}}
@media(max-width:520px){.scale{grid-template-columns:repeat(2,1fr)}.scale a{border-left:1px solid var(--line);border-top:0}.scale a:nth-child(odd){border-left:0}.scale a:nth-child(n+3){border-top:1px solid var(--line)}.scale b{font-size:24px}}

/* якоря разделов */
.nav-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:var(--adm-gap)}
.nav-tabs a{padding:6px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-weight:600;font-size:13.5px;color:var(--ink)}
.nav-tabs a:hover{border-color:var(--accent);color:var(--accent)}

/* две колонки */
.adm-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--adm-gap);align-items:start}
.adm-grid>*,.adm-main>*,.adm-side>*{min-width:0}
.adm-main,.adm-side{display:grid;gap:var(--adm-gap);min-width:0}
.adm .card+.card{margin-top:0}
@media(max-width:1500px){.adm-grid{grid-template-columns:1fr}.adm-side{grid-template-columns:1fr 1fr;align-items:start}}
@media(max-width:800px){.adm-side{grid-template-columns:1fr}}

/* заголовок раздела: имя, счётчик, действие справа */
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.sec-head h2{margin:0}
.sec-head .count{font-size:12.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);font-variant-numeric:tabular-nums}
.sec-head .right{margin-left:auto}
.sec-foot{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}
.subform h3{margin-bottom:6px}
.subform label{margin:8px 0}
.subform p{margin:0 0 6px}
.keycode{font-family:ui-monospace,Consolas,monospace;font-size:20px;font-weight:700;letter-spacing:.08em;padding:8px 14px;border-radius:var(--r-s);background:var(--accent-soft);color:var(--accent);display:inline-block;user-select:all}

/* таблицы: текст слева, числа справа */
.tbl-wrap{overflow-x:auto;border-radius:var(--r-s)}
.adm-tbl{border-radius:var(--r-s)}
.tbl th.n,.tbl td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl td.n{font-weight:600}
.adm-tbl td.act{text-align:right;min-width:120px}
.adm-tbl td.act .inl,.adm-tbl td.act details{margin:2px 0 2px 4px;vertical-align:middle}
.adm-tbl td:first-child{min-width:220px}
.adm-tbl tr.off td{color:var(--muted)}
.adm-tbl tr.off td b{color:var(--ink-2)}
.adm-tbl tr.total td{font-weight:700;background:var(--surface-2)}
.adm-tbl tbody tr:hover td{background:var(--surface-2)}
.adm-tbl tr.total:hover td{background:var(--surface-2)}
.sm{font-size:12.5px;color:var(--muted);line-height:1.4}
.adm td.sm{color:var(--muted);white-space:nowrap}
.inl{display:inline}
.inl .mini{width:auto;padding:3px 6px;border-radius:8px;font-size:13px}

/* пары «название — значение» */
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:14px}
.kv dt{color:var(--muted);font-weight:500}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.kv.num{grid-template-columns:1fr auto}
.kv.num dd{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.kv .path{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;color:var(--ink-2)}
.kv .links a{margin-right:10px;font-weight:600}
.kv .muted{font-weight:400}

/* классы по школам */
.school-row{padding:10px 0;border-top:1px solid var(--line)}
.school-row:first-of-type{border-top:0;padding-top:0}
.school-name{display:flex;gap:10px;align-items:baseline;margin-bottom:8px;flex-wrap:wrap}
.school-name span{font-size:13px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;gap:6px;align-items:center;padding:4px 10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);font-size:13px;color:var(--ink)}
.chip b{font-weight:800;font-variant-numeric:tabular-nums}
a.chip:hover{border-color:var(--accent);color:var(--accent)}

/* метки состояния */
.tag.off{background:var(--off-soft);color:var(--off)}
.tag.bad{background:var(--danger-soft);color:var(--danger)}

details.inline{display:inline-block;position:relative;border:0;padding:0;margin:0;background:none}
details.inline summary::before{display:none}
details.inline summary{list-style:none;display:inline-flex}
details.inline summary::-webkit-details-marker{display:none}
.popform{position:absolute;right:0;top:100%;z-index:5;width:min(340px,80vw);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:var(--shadow);text-align:left;white-space:normal}
.popform label{display:block;margin-bottom:8px;font-size:13px}
.popform.up{top:auto;bottom:calc(100% + 4px)}
.popform{padding-top:14px}
.pop-x{position:absolute;top:6px;right:6px;width:28px;height:28px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-size:13px;line-height:1;cursor:pointer;display:grid;place-items:center}
.pop-x:hover{border-color:var(--accent);color:var(--accent)}
.popform label:first-of-type{margin-right:30px}
.nz-split{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.nz-split b{flex:1 1 100%;font-size:13px}
section.card[id]{scroll-margin-top:16px}
@media(max-width:1000px){.adm .page-head .actions{margin-left:0}}

/* кабинет ученика — «Учебник» (шаг 1) */
.st-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.st-tabs a{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-weight:700;color:var(--ink)}
.st-tabs a.on{background:var(--accent);color:var(--accent-ink,#fff);border-color:var(--accent)}
.st-tabs a .dot{width:10px;height:10px;border-radius:50%}
.st-next{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:18px;background:var(--surface);border:2px solid var(--accent);margin-bottom:16px;flex-wrap:wrap}
.st-next .n{width:44px;height:44px;border-radius:12px;background:var(--accent);color:var(--accent-ink,#fff);display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}
.st-next .tp{flex:1 1 200px;font-weight:800;font-size:17px;line-height:1.25}
.st-next .tp small{display:block;color:var(--muted);font-weight:600;font-size:13px}
.st-q{margin-bottom:12px}
.st-q summary{cursor:pointer;font-weight:800;font-size:17px;padding:10px 0;display:flex;align-items:center;gap:10px;list-style:none}
.st-q summary::-webkit-details-marker{display:none}
.st-q summary::after{content:'›';margin-left:auto;color:var(--muted);transform:rotate(90deg);transition:.15s}
.st-q:not([open]) summary::after{transform:none}
.st-q summary small{color:var(--muted);font-weight:600;font-size:13px}
.st-tile.today{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.st-tile .sec{font-size:12px;color:var(--muted);font-weight:600}
.st-search{display:flex;gap:8px;margin-bottom:14px}.st-search input{flex:1}
/* 1–2 классы: крупнее, кнопки со значками */
.student.young .st-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.student.young .st-tile{padding:18px;font-size:17px}
.student.young .st-tile .n{width:44px;height:44px;font-size:19px}
.student.young .st-tile .acts .btn{font-size:17px;padding:12px 18px}
.student.young .st-tile .sec,.student.young .st-tile .d{display:none}

/* кабинет ученика — разделы (шаг 2: «Задано») */
.st-nav{display:flex;gap:6px;padding:10px 16px 0;max-width:860px;margin:0 auto}
.st-nav a{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:12px 12px 0 0;font-weight:800;color:var(--muted);border-bottom:3px solid transparent}
.st-nav a.on{color:var(--accent);border-bottom-color:var(--accent)}
.st-nav .badge{background:var(--warn);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px}
.st-hw.late{background:var(--danger-soft)}
.st-hw.today{background:var(--warn-soft)}
.st-hw .task{white-space:pre-wrap;margin:4px 0}
.st-hw .files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.st-hw .res{font-size:13px;color:var(--ok);font-weight:700;background:var(--ok-soft);padding:3px 10px;border-radius:999px}
.student.young .st-nav a{font-size:18px}
.student.young .st-hw{font-size:17px}
.student.young .st-hw .btn{font-size:17px;padding:12px 18px}
.st-tile.next{border-style:dashed;border-color:var(--accent)}
.btn.sor{background:var(--warn);color:#fff;border-color:var(--warn)}
.btn.sor.off{opacity:.55;cursor:default}
.st-tile.assess .n{background:var(--warn)}
.st-h{margin:18px 0 8px;font-size:17px}.st-h small{font-weight:600;font-size:13px}

/* «Адал азамат» — ценность месяца */
.adal{display:flex;align-items:center;gap:14px;max-width:860px;margin:12px auto 0;padding:12px 16px;border-radius:16px;background:linear-gradient(90deg,var(--accent-soft),var(--surface));border:1px solid var(--line)}
.adal .adal-mark{width:40px;height:40px;border-radius:12px;flex:none;display:grid;place-items:center;font-weight:900;font-size:20px;color:#fff;background:linear-gradient(135deg,#1C9A8A,#2F6FE4)}
.adal small{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}
.adal b{display:block;font-size:16px;line-height:1.2}
.adal .kz{display:block;font-size:13px;color:var(--muted);font-weight:600}
.adal em{margin-left:auto;font-style:normal;color:var(--muted);font-size:13.5px;max-width:260px;text-align:right}
.adal.slim{margin:0 0 16px;max-width:none}
@media (max-width:640px){.adal em{display:none}}
.student.young .adal b{font-size:19px}
.student .top .st-out{margin-left:auto;display:inline-flex;align-items:center;gap:6px;color:#fff;font-weight:700;padding:8px 12px;border-radius:10px;background:rgba(255,255,255,.14)}
.student .top .st-out:hover{background:rgba(255,255,255,.26)}
.student .top .st-out .i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}

/* кабинет ученика — «Оценки» (шаг 3) */
.chip.on{background:var(--accent);color:var(--accent-ink,#fff);border-color:var(--accent)}
.gr-sum{display:flex;gap:18px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.gr-big{width:84px;height:84px;border-radius:22px;display:grid;place-items:center;font-size:44px;font-weight:900;background:var(--surface-2);color:var(--muted);flex:none}
.gr-big.g5,.gr-totals b.g5{background:var(--ok-soft);color:var(--ok)}
.gr-big.g4,.gr-totals b.g4{background:var(--accent-soft);color:var(--accent)}
.gr-big.g3,.gr-totals b.g3{background:var(--warn-soft);color:var(--warn)}
.gr-big.g2,.gr-totals b.g2{background:var(--danger-soft);color:var(--danger)}
.gr-main{flex:1 1 260px}
.gr-main small{display:block;color:var(--muted);font-weight:700;font-size:12.5px;text-transform:uppercase;letter-spacing:.05em}
.gr-main>b{display:block;font-size:22px;margin:2px 0 10px}
.gr-parts{display:flex;gap:8px;flex-wrap:wrap}
.gr-parts span{display:flex;flex-direction:column;padding:8px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line);font-weight:800;font-size:17px;min-width:96px}
.gr-parts i{font-style:normal;font-size:12px;color:var(--muted);font-weight:700}
.gr-parts em{font-style:normal;font-size:11.5px;color:var(--muted);font-weight:600}
.gr-parts .abs{background:var(--danger-soft);color:var(--danger)}
.gr-hint{font-size:12.5px;margin:0 0 14px}
.gr-row{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.gr-row:last-child{border:0}
.gr-row .d{min-width:56px;font-weight:800;line-height:1.1}.gr-row .d small{display:block;color:var(--muted);font-weight:600;font-size:12px}
.gr-row .tp{flex:1 1 220px;font-weight:600;font-size:14px}
.gr-row .mk{display:flex;gap:6px;flex-wrap:wrap}
.st-mark b small{font-size:11px;color:var(--muted)}
.gr-totals{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.gr-totals a{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px;border-radius:14px;border:1px solid var(--line);color:var(--ink)}
.gr-totals a.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.gr-totals small{color:var(--muted);font-weight:700}
.gr-totals b{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:24px;background:var(--surface-2)}
.gr-totals em{font-style:normal;color:var(--muted);font-size:13px}

/* кабинет ученика — открытая работа (шаг 4) */
.st-work{display:flex;align-items:center;gap:14px;max-width:860px;margin:12px auto 0;padding:14px 16px;border-radius:16px;background:var(--warn);color:#fff;box-shadow:0 10px 24px -14px rgba(0,0,0,.45);animation:st-pulse 2.4s ease-in-out infinite}
.st-work .ic{font-size:26px;flex:none}
.st-work .tx{flex:1;min-width:0}
.st-work small{display:block;font-size:12px;font-weight:700;opacity:.9;text-transform:uppercase;letter-spacing:.04em}
.st-work b{display:block;font-size:16px;line-height:1.25}
.st-work em{display:block;font-style:normal;font-size:13px;opacity:.9}
.st-work .go{background:#fff;color:var(--warn);font-weight:800;padding:10px 16px;border-radius:12px;white-space:nowrap}
@keyframes st-pulse{0%,100%{box-shadow:0 10px 24px -14px rgba(0,0,0,.45)}50%{box-shadow:0 0 0 6px var(--warn-soft)}}
@media (prefers-reduced-motion:reduce){.st-work{animation:none}}
/* опрос на уроке (шаг 5): баннер в шапке кабинета */
.student #poll-banner{max-width:860px;margin:12px auto 0}
.student #poll-banner[hidden]{display:none}
.st-poll .ic{font-size:24px}

/* кабинет ученика — «Учителю» (шаг 6) */
.st-nav .badge.new,.st-tabs .badge.new{background:var(--accent);color:var(--accent-ink,#fff);border-radius:999px;padding:1px 8px;font-size:12px}
.st-tabs a.on .badge.new{background:#fff;color:var(--accent)}
.st-nav{flex-wrap:wrap}
.chat{display:flex;flex-direction:column;gap:12px}
.chat-hd{display:flex;align-items:center;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}
.chat-hd .ava{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--accent),var(--ok))}
.chat-hd small{display:block;color:var(--muted);font-size:12.5px}
.chat .msgs{max-height:52vh;overflow-y:auto;padding:4px 2px}
.chat-empty{margin:8px 0}
.chat-form{display:flex;gap:8px;align-items:flex-end}
.chat-form textarea{flex:1;resize:vertical;min-height:48px}
.chat-note{font-size:12px;margin:0}

/* переключатель профиля ОГН / ЕМН в нагрузке */
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:0}
.seg button{border:0;background:var(--surface);padding:5px 12px;font-weight:800;cursor:pointer;color:var(--muted);display:inline-flex;gap:4px;align-items:baseline}
.seg button small{font-weight:600;font-size:11px}
.seg button+button{border-left:1px solid var(--line)}
.seg button.on{background:var(--accent);color:var(--accent-ink,#fff);cursor:default}
.seg button:not(.on):hover{color:var(--accent)}

/* журнал: вся ширина экрана и компактные ячейки — без лишней прокрутки */
body.wide .content{max-width:none}
.journal td.cell{min-width:38px;height:36px;padding:2px 1px}
.journal td.cell input{width:36px;padding:6px 0;font-size:13.5px}
.journal thead th{padding:8px 2px;font-size:11.5px}
.journal td.sum{min-width:34px;padding:2px 3px}
.journal th.name,.journal td.name{min-width:190px}
.cls .pr{margin-top:8px;font-size:12.5px;line-height:1.3;opacity:.9;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* «Задано»: отметка «я сделал» — понятный результат */
.st-hw .due small{font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.st-hw .due .late-l{color:var(--danger)}
.hw-ok{display:inline-flex;align-items:center;font-size:13px;font-weight:700;color:var(--ok);padding:4px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--ok)}
.btn.hw-mark{border-color:var(--ok);color:var(--ok)}
.btn.hw-mark:hover{background:var(--ok);color:#fff}
.hw-flash{display:flex;flex-direction:column;gap:2px;padding:12px 16px;border-radius:12px;margin-bottom:14px;border:1px solid var(--ok);background:var(--ok-soft)}
.hw-flash.undo{border-color:var(--line);background:var(--surface)}
.hw-flash span{color:var(--ink-2);font-size:14px}
.st-hw.flash{box-shadow:0 0 0 2px var(--ok);scroll-margin-top:80px}
@media (prefers-reduced-motion:no-preference){.st-hw.flash{animation:hwPulse 1.6s ease-out 1}}
@keyframes hwPulse{0%{box-shadow:0 0 0 6px var(--ok)}100%{box-shadow:0 0 0 2px var(--ok)}}

/* ===================== КАБИНЕТ УЧЕНИКА · тема «Шың» (22.10.2026) =====================
   Концепция — Antigravity (Gemini): холодный туман, каспийский бирюзовый, графит; Onest (каз. буквы), Rubik для 1–2 кл.
   Выкладка: плоская шапка; на компьютере разделы — сегменты в шапке, на телефоне — нижняя панель под большой палец.
   Действует только внутри body.student — учительская часть и её темы не меняются. */
body.student,html:not([data-theme]) body.shyn,html[data-theme=""] body.shyn{
  --bg:#F2F5F7;--surface:#FFFFFF;--surface-2:#EAF0F4;--ink:#142129;--ink-2:#3B4D58;--muted:#6B7F8C;--line:#DCE3E8;
  --accent:#0B7A75;--accent-2:#14958F;--accent-soft:#E1F2F0;--accent-ink:#fff;
  --ok:#15803D;--ok-soft:#EBF7EE;--warn:#B45309;--warn-soft:#FEF3C7;--danger:#B91C1C;--danger-soft:#FEE2E2;--info:#0B7A75;--info-soft:#E1F2F0;
  --off:#94A3AE;--off-soft:#EEF2F5;--on-solid:#fff;
  --font:"Onest",system-ui,"Segoe UI",Roboto,sans-serif;--font-young:"Rubik","Onest",system-ui,sans-serif;
  --r:16px;--r-s:10px;--shadow:0 1px 2px rgba(20,33,41,.04),0 6px 18px -10px rgba(20,33,41,.14);
  --top-h:60px;--bar-h:64px;
  font-family:var(--font);background:var(--bg);color:var(--ink);
}
@media(prefers-color-scheme:dark){/*mode*/html:not([data-mode=light]) body.student,html:not([data-mode=light]):not([data-theme]) body.shyn,html:not([data-mode=light])[data-theme=""] body.shyn{
  --bg:#0E151B;--surface:#17222B;--surface-2:#1D2C37;--ink:#E7EEF2;--ink-2:#B9C8D1;--muted:#859BA8;--line:#263846;
  --accent:#2EC4B6;--accent-2:#4FD6C9;--accent-soft:#13383B;--accent-ink:#06201E;
  --ok:#34D399;--ok-soft:#0E3326;--warn:#FBBF24;--warn-soft:#382A0F;--danger:#F87171;--danger-soft:#381515;--info:#2EC4B6;--info-soft:#13383B;
  --off:#6B7F8C;--off-soft:#1D2C37;--on-solid:#10181D;--shadow:0 6px 20px -8px rgba(0,0,0,.5);color-scheme:dark}}
html[data-mode=dark] body.student,html[data-mode=dark]:not([data-theme]) body.shyn,html[data-mode=dark][data-theme=""] body.shyn{
  --bg:#0E151B;--surface:#17222B;--surface-2:#1D2C37;--ink:#E7EEF2;--ink-2:#B9C8D1;--muted:#859BA8;--line:#263846;
  --accent:#2EC4B6;--accent-2:#4FD6C9;--accent-soft:#13383B;--accent-ink:#06201E;
  --ok:#34D399;--ok-soft:#0E3326;--warn:#FBBF24;--warn-soft:#382A0F;--danger:#F87171;--danger-soft:#381515;--info:#2EC4B6;--info-soft:#13383B;
  --off:#6B7F8C;--off-soft:#1D2C37;--on-solid:#10181D;--shadow:0 6px 20px -8px rgba(0,0,0,.5);color-scheme:dark}
body.student.young{--font:var(--font-young);--r:20px;--r-s:14px}
.student h1,.student h2,.student h3{letter-spacing:-.015em}
.student .btn{border-radius:var(--r-s)}
.student .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:none}
.student .btn.primary:hover{background:var(--accent-2)}
.student a{color:var(--accent)}
.student .card{border-radius:var(--r);box-shadow:var(--shadow)}

/* шапка */
.student .top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;height:var(--top-h);
  padding:env(safe-area-inset-top,0px) max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px));box-sizing:content-box;
  background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);
  border-bottom:1px solid var(--line);color:var(--ink)}
.student .top .ava{width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:800;background:var(--accent-soft);color:var(--accent)}
.student .top .who{min-width:0;line-height:1.2}
.student .top .who b{display:block;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.student .top .who small{display:block;color:var(--muted);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}
.student .top .st-out{margin-left:auto;display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);font-weight:700;font-size:14px;padding:8px 12px;border-radius:var(--r-s);background:transparent;border:1px solid var(--line)}
.student .top .st-out:hover{background:var(--surface-2);color:var(--ink)}
.student .top .st-out .i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}

/* разделы: сегменты в шапке (компьютер) */
.student .st-nav{display:flex;gap:4px;margin:0 auto;padding:4px;width:auto;max-width:none;border:0;border-radius:calc(var(--r-s) + 4px);background:var(--surface-2);overflow:visible}
.student .st-nav a{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:var(--r-s);font-weight:700;font-size:14.5px;color:var(--ink-2);border:0;margin:0;white-space:nowrap;position:relative}
.student .st-nav a:hover{color:var(--ink)}
.student .st-nav a.on{background:var(--surface);color:var(--accent);box-shadow:0 1px 3px rgba(20,33,41,.1)}
.student .st-nav .si{width:19px;height:19px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.student .st-nav a.on .si{stroke-width:2.2}
.student .st-nav .badge{background:var(--warn);color:var(--on-solid);border-radius:999px;padding:0 7px;font-size:11.5px;line-height:18px;min-width:18px;text-align:center;font-variant-numeric:tabular-nums}
.student .st-nav .badge.new{background:var(--accent);color:var(--accent-ink)}
.student a:focus-visible,.student button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* содержимое и баннеры — одной ширины */
.student main{max-width:880px;margin:0 auto;padding:16px max(16px,env(safe-area-inset-right,0px)) 40px max(16px,env(safe-area-inset-left,0px))}
.student .adal,.student .st-work,.student #poll-banner{width:min(848px,calc(100% - 32px));max-width:none;margin:14px auto 0}

/* баннер открытой работы — без пульсации, но заметный */
.student .st-work{background:var(--warn);color:var(--on-solid);border-radius:var(--r);animation:none;box-shadow:0 10px 24px -14px rgba(180,83,9,.6)}
.student .st-work .go{background:var(--on-solid);color:var(--warn);border-radius:var(--r-s)}

/* «Адал азамат» — тонкая строка вместо крупного баннера; знак — солярный круг */
.student .adal{gap:12px;padding:10px 14px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);box-shadow:none}
.student .adal .adal-mark{width:34px;height:34px;border-radius:50%;font-size:0;background:radial-gradient(circle,#F4C542 0 30%,transparent 31%),repeating-conic-gradient(var(--accent) 0 15deg,var(--accent-2) 15deg 30deg)}
.student .adal b{font-size:15px}

/* предметы: горизонтальная лента */
.student .st-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;gap:6px;margin:0 0 14px;padding-bottom:2px}
.student .st-tabs::-webkit-scrollbar{display:none}
.student .st-tabs a{flex:none;padding:8px 14px;border-radius:999px;font-size:14.5px;background:var(--surface);border:1px solid var(--line);color:var(--ink-2)}
.student .st-tabs a.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.student .st-tabs a.on .dot{box-shadow:0 0 0 2px var(--surface)}
.student .chip.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}

/* Учебник: следующий урок (вырезы «билета» убраны по решению владельца 22.10) */
.student .st-next{position:relative;border:0;border-radius:var(--r);background:var(--accent);color:var(--accent-ink);padding:18px 20px;gap:16px;box-shadow:0 14px 30px -18px var(--accent)}
.student .st-next .n{background:color-mix(in srgb,var(--accent-ink) 18%,transparent);color:var(--accent-ink);border-radius:12px;font-variant-numeric:tabular-nums}
.student .st-next .tp{color:var(--accent-ink)}
.student .st-next .tp small{color:inherit;opacity:.78;text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;margin-top:4px}
.student .st-next .btn{background:var(--surface);color:var(--ink);border-color:transparent}
.student .st-next .btn.primary{background:var(--ink);color:var(--surface)}
.student .st-search input{border-radius:var(--r-s)}
.student .st-tile{border-radius:var(--r);box-shadow:none}
.student .st-tile .n{border-radius:10px;background:var(--accent-soft);color:var(--accent);font-variant-numeric:tabular-nums}
.student .st-tile.assess .n{background:var(--warn-soft);color:var(--warn)}
.student .st-tile.assess{background:var(--surface);border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}
.student .st-q summary{flex-wrap:wrap;row-gap:6px}
.student .q-bar{order:3;flex-basis:100%;height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden}
.student .q-bar i{display:block;height:100%;border-radius:99px;background:var(--accent)}

/* Задано: полоса «сколько готово» и статус в плашке срока */
.hw-day{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 18px;margin-bottom:14px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}
.hw-day-t{flex:1 1 200px;min-width:0}
.hw-day-t b{display:block;font-size:18px;font-variant-numeric:tabular-nums}
.hw-day-t span{color:var(--muted);font-size:13.5px}
.hw-day-bar{display:flex;gap:4px;flex:1 1 220px;min-width:0}
.hw-day-bar i{flex:1;height:10px;border-radius:99px;background:var(--surface-2)}
.hw-day-bar i.on{background:var(--ok)}
.hw-day.all{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 40%,transparent)}
.hw-day.all .hw-day-t b{color:var(--ok)}
.student .st-hw{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;gap:14px;align-items:flex-start}
.student .st-hw .due{min-width:64px;padding:8px 10px;border-radius:var(--r-s);background:var(--accent-soft);color:var(--accent);text-align:center;font-variant-numeric:tabular-nums}
.student .st-hw .due small{color:inherit;opacity:.8}
.student .st-hw.today .due{background:var(--warn-soft);color:var(--warn)}
.student .st-hw.late .due{background:var(--danger-soft);color:var(--danger)}
.student .st-hw.late{border-color:color-mix(in srgb,var(--danger) 35%,var(--line))}
.student .st-hw.done .due{background:var(--ok-soft);color:var(--ok)}
.student .st-hw.done .txt{opacity:.75}
.student .st-hw .txt b{font-size:15.5px;line-height:1.35}
.student .st-hw .files .chip{border-radius:var(--r-s)}
.student .btn.hw-mark{background:var(--ok);border-color:var(--ok);color:var(--on-solid);font-weight:800}
.student .btn.hw-mark:hover{filter:brightness(1.08)}
.student .hw-ok{background:transparent}
.student .hw-flash{border-radius:var(--r)}
.student .st-ann{border-radius:var(--r-s);background:var(--warn-soft);border:1px solid color-mix(in srgb,var(--warn) 30%,transparent)}

/* Оценки: шкала процента с порогами 40 / 65 / 85 */
.student .gr-big{border-radius:var(--r)}
.gr-scale{position:relative;height:10px;border-radius:99px;background:var(--surface-2);margin:2px 0 22px;max-width:420px}
.gr-scale .fill{position:absolute;left:0;top:0;bottom:0;border-radius:99px;background:var(--muted)}
.gr-scale .fill.g5{background:var(--ok)}.gr-scale .fill.g4{background:var(--accent)}.gr-scale .fill.g3{background:var(--warn)}.gr-scale .fill.g2{background:var(--danger)}
.gr-scale span{position:absolute;top:12px;transform:translateX(-50%);font-size:11px;font-weight:700;color:var(--muted)}
.gr-scale span::before{content:"";position:absolute;left:50%;top:-14px;width:2px;height:10px;background:var(--surface);transform:translateX(-50%)}
.student .gr-parts span{border-radius:var(--r-s);background:var(--surface-2);border:0;font-variant-numeric:tabular-nums}
.student .st-mark{border-radius:var(--r-s);background:var(--surface-2);border:0;font-variant-numeric:tabular-nums}
.student .st-mark.sor{background:var(--warn-soft);color:var(--warn)}
.student .gr-row .d{font-variant-numeric:tabular-nums}

/* Учителю: мессенджер */
.student .chat .msgs{display:flex;flex-direction:column;gap:8px}
.student .msg{max-width:78%;padding:9px 13px;border-radius:18px 18px 18px 6px;background:var(--surface-2)}
.student .msg.me{border-radius:18px 18px 6px 18px;background:var(--accent);color:var(--accent-ink)}
.student .msg small{font-size:11px;text-align:right;opacity:.8;color:inherit}
.student .chat-hd .ava{background:var(--accent-soft);color:var(--accent)}
.student .chat-form textarea{border-radius:var(--r)}

/* телефон: нижняя панель разделов, компактная шапка */
@media(max-width:720px){
  .student .top{--top-h:56px;gap:10px;backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--surface)}
  .student .top .st-out span{display:none}
  .student .top .st-out{padding:8px;border:0}
  .student .st-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;margin:0;border-radius:0;gap:0;justify-content:space-around;
    padding:6px max(6px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));
    background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line)}
  .student .st-nav a{flex:1 1 0;flex-direction:column;gap:3px;padding:6px 2px;font-size:11.5px;min-width:0}
  .student .st-nav a.on{background:var(--accent-soft);box-shadow:none}
  .student .st-nav .si{width:22px;height:22px}
  .student .st-nav .badge{position:absolute;top:2px;left:calc(50% + 6px);padding:0 5px;font-size:10.5px;line-height:16px;min-width:16px}
  .student main{padding-bottom:calc(var(--bar-h) + 24px + env(safe-area-inset-bottom,0px))}
  .student .st-work{gap:10px;padding:12px}
  .student .st-work .ic{display:none}
  .student .st-work b{font-size:15px}
  .student .st-work small{font-size:11px}
  .student .st-work .go{padding:9px 12px}
  .student .adal em{display:none}
  .student .st-next{padding:16px}
  .student .st-hw{gap:10px}
  .student .st-hw .due{display:flex;gap:6px;align-items:baseline;justify-content:flex-start;min-width:0;padding:4px 10px}
  .student .st-hw .due small{display:inline}
  .student .st-hw .txt{flex-basis:100%}
  .gr-sum{gap:12px}
  .gr-main{flex-basis:170px}
  .gr-big{width:64px;height:64px;font-size:34px}
  .student .msg{max-width:88%}
  .student .gr-row{column-gap:12px;row-gap:6px}
  .student .gr-row .tp{flex:1 1 0;min-width:0}
  .student .gr-row .mk{flex-basis:100%;padding-left:68px}
}
.student.young .st-nav a{font-size:15.5px}
@media(max-width:720px){.student.young .st-nav a{font-size:12.5px}.student.young .st-nav .si{width:26px;height:26px}}
@media(prefers-reduced-motion:reduce){.student *{transition:none!important;animation:none!important}}

/* ===================== «Шың» для экранов учителя (шаг 3: библиотека, 22.10.2026) =====================
   Экран включает тему классом body.shyn (block bodyclass) и шрифт Onest (block head_extra).
   Токены общие с кабинетом ученика; здесь — боковое меню, цвета предметов и библиотека. */
body.student,html:not([data-theme]) body.shyn,html[data-theme=""] body.shyn{--phys:#B4436C;--phys-soft:#F8E6EE;--inf:#2563EB;--inf-soft:#E3ECFD;
  --phys-a:#B4436C;--phys-b:#8E2F53;--inf-a:#2563EB;--inf-b:#1D4ED8;--cls-a:#0B7A75;--cls-b:#08605C}
@media(prefers-color-scheme:dark){/*mode*/html:not([data-mode=light]) body.student,html:not([data-mode=light]):not([data-theme]) body.shyn,html:not([data-mode=light])[data-theme=""] body.shyn{--phys:#F472B6;--phys-soft:#3A1626;--inf:#60A5FA;--inf-soft:#14244A}}
html[data-mode=dark] body.student,html[data-mode=dark]:not([data-theme]) body.shyn,html[data-mode=dark][data-theme=""] body.shyn{--phys:#F472B6;--phys-soft:#3A1626;--inf:#60A5FA;--inf-soft:#14244A}
html:not([data-theme]) body.shyn,html[data-theme=""] body.shyn{--nav:#142129;--nav-ink:#AFC0CA;--nav-on:var(--accent);--nav-on-ink:#fff;--side:240px}
@media(prefers-color-scheme:dark){/*mode*/html:not([data-mode=light]):not([data-theme]) body.shyn,html:not([data-mode=light])[data-theme=""] body.shyn{--nav:#0A1015;--nav-on-ink:#06201E}}
html[data-mode=dark]:not([data-theme]) body.shyn,html[data-mode=dark][data-theme=""] body.shyn{--nav:#0A1015;--nav-on-ink:#06201E}
.shyn h1,.shyn h2,.shyn h3{letter-spacing:-.015em}
.shyn .side{border-right:1px solid color-mix(in srgb,var(--nav-ink) 12%,transparent)}
.shyn .side .logo .mark{background:var(--accent);color:var(--nav-on-ink)}
.shyn .side nav a{border-radius:var(--r-s)}
.shyn .side nav a:hover{background:rgba(255,255,255,.06)}
.shyn .side nav a.on{box-shadow:none}
.shyn .side .user .ava{background:color-mix(in srgb,var(--accent) 30%,var(--nav));color:#fff}
.shyn .bottomnav a.on{color:var(--accent)}
.shyn .btn{border-radius:var(--r-s)}
.shyn .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:none}
.shyn .btn.primary:hover{background:var(--accent-2)}
.shyn .card,.shyn .hero{border-radius:var(--r);box-shadow:var(--shadow)}
.shyn .chip.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.shyn a:focus-visible,.shyn button:focus-visible,.shyn summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* шапка страницы и поиск */
.shyn .page-head .sub{font-variant-numeric:tabular-nums}
.shyn .page-head .actions input{border-radius:var(--r-s);background:var(--surface)}

/* библиотека: предметы и карточки планов */
.shyn .lib-subj{gap:10px;margin:22px 0 12px;font-size:18px;color:var(--ink)}
.shyn .lib-subj .dot{width:12px;height:12px}
.shyn .lib-subj small{font-size:13px;font-weight:600;color:var(--muted)}
.shyn .lib-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}
.shyn .lib-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:16px 16px 14px;border:1px solid var(--line);border-left-width:1px;border-radius:var(--r);box-shadow:none;transition:border-color .15s,transform .15s}
.shyn .lib-card::before{content:"";width:28px;height:4px;border-radius:99px;background:var(--accent);margin-bottom:6px}
.shyn .lib-card.физика::before{background:var(--phys)}.shyn .lib-card.информатика::before{background:var(--inf)}
.shyn .lib-card:hover{border-color:var(--accent);transform:translateY(-2px)}
.shyn .lib-card .nm{font-size:21px;margin:0}
.shyn .lib-card .st{font-size:13.5px;color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums}
.shyn .lib-card .st b{color:var(--ink);font-weight:800}
.lc-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.lc-tags span{font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);font-variant-numeric:tabular-nums}

/* страница плана */
.shyn .crumbs{font-weight:600}
.shyn .hero::before{display:none}
.shyn .hero{border-top:4px solid var(--accent)}
.shyn .hero.физика{border-top-color:var(--phys)}.shyn .hero.информатика{border-top-color:var(--inf)}
.shyn .hero .btn{background:var(--surface-2);border-color:transparent}
.shyn .hero .btn:hover{background:var(--accent-soft);color:var(--accent)}
.ic-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--muted);font-weight:600}
.ic-legend span{display:inline-flex;align-items:center;gap:6px}
.ic-legend .i{width:16px;height:16px;color:var(--ink-2)}
.shyn .lib-q{display:flex;align-items:baseline;gap:10px;margin:26px 0 10px;font-size:19px;scroll-margin-top:16px}
.shyn .lib-q small{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.shyn .lib-sect{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:6px 14px;margin:0 0 10px}
.shyn .lib-sect summary{font-size:15px;padding:8px 0}
.shyn .lib-row{padding:10px 6px;border-radius:var(--r-s);border-top-color:var(--line)}
.shyn .lib-row:hover{background:var(--surface-2)}
.shyn .lib-row.assess{background:var(--warn-soft);border-top-color:transparent}
.shyn .lib-row .n{min-width:34px;height:28px;display:grid;place-items:center;text-align:center;border-radius:8px;background:var(--surface-2);color:var(--ink-2);font-size:13px}
.shyn .lib-row.assess .n{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}
.shyn .lib-row .t small{margin-top:2px}
.shyn .ic-links{gap:4px}
.shyn .ic-links a{width:34px;height:34px;border-radius:var(--r-s);border:1px solid var(--line);background:var(--surface);color:var(--ink-2)}
.shyn .ic-links a:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.shyn .tag.lab{background:var(--phys-soft);color:var(--phys)}
@media(max-width:800px){.shyn .ic-links{padding-left:46px}.shyn .page-head .actions{width:100%;margin-left:0}.shyn .page-head .actions input{flex:1;width:auto!important;min-width:0}}
@media(max-width:560px){.shyn .lib-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.shyn .lib-card{padding:14px 12px 12px}.shyn .lib-card .nm{font-size:18px}.shyn .page-head .sub{font-size:13px}}

/* ===================== «Шың» на всех экранах учителя (шаги 4–6, 22.10.2026) =====================
   Тема по умолчанию: body.shyn в base.html. Прежние темы (blue, a–d) выбираются в Настройке и перекрывают токены. */
.shyn .btn:hover{border-color:color-mix(in srgb,var(--ink) 22%,var(--line))}
.shyn .btn.primary:hover{border-color:var(--accent-2)}
.shyn .hero .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.shyn .hero .btn.sor{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 40%,transparent);color:var(--warn)}
.shyn .side .user small,.shyn .side .user a{color:color-mix(in srgb,var(--nav-ink) 75%,transparent)}
.shyn .topbar{background:var(--nav)}
.shyn .topbar .mark{background:var(--accent);color:var(--nav-on-ink)}

/* Сегодня: приветствие, карточки классов, неделя, уроки */
.shyn .hello h1{font-size:30px;letter-spacing:-.02em}
.shyn .qa{border-radius:var(--r);box-shadow:none}
.shyn .qa.p .ic{background:var(--phys-soft);color:var(--phys)}
.shyn .cls{position:relative;display:flex;flex-direction:column;gap:2px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:none;padding:16px 16px 14px}
.shyn .cls::before{content:"";width:28px;height:4px;border-radius:99px;background:var(--accent);margin-bottom:8px}
.shyn .cls.физика,.shyn .cls.информатика{background:var(--surface);box-shadow:none}
.shyn .cls.физика::before{background:var(--phys)}.shyn .cls.информатика::before{background:var(--inf)}
.shyn .cls:hover{border-color:var(--accent);transform:translateY(-2px)}
.shyn .cls .nm{font-size:26px;letter-spacing:-.02em}
.shyn .cls .sb{opacity:1;color:var(--muted);font-weight:600;margin:2px 0 8px}
.shyn .cls .nx{color:var(--ink-2);font-variant-numeric:tabular-nums}
.shyn .cls .nx+*,.shyn .cls>div:last-child{color:var(--ink)}
.shyn .cls .bar{background:var(--surface-2)}
.shyn .cls .bar span{background:var(--accent)}
.shyn .cls.физика .bar span{background:var(--phys)}.shyn .cls.информатика .bar span{background:var(--inf)}
.shyn .cls .pr{opacity:1;color:var(--muted)}
.shyn .weekstrip a{border-radius:var(--r)}
.shyn .weekstrip a:hover{border-color:var(--accent)}
.shyn .weekstrip a.sel{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.shyn .weekstrip .dn{font-variant-numeric:tabular-nums}
.shyn .lesson-card{border-radius:var(--r);box-shadow:none}
.shyn .lesson-card:hover{border-color:var(--accent)}
.shyn .lesson-card .time{font-variant-numeric:tabular-nums}
.shyn .upc .d{font-variant-numeric:tabular-nums}

/* Урок и журнал */
.shyn .tbl{border-radius:var(--r-s)}
.shyn .tbl th{background:var(--surface-2)}
.shyn .tag{border-radius:999px}

/* «Адал азамат» в шапке страниц учителя — тот же солярный знак */
.shyn .adal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.shyn .adal .adal-mark{border-radius:50%;font-size:0;background:radial-gradient(circle,#F4C542 0 30%,transparent 31%),repeating-conic-gradient(var(--accent) 0 15deg,var(--accent-2) 15deg 30deg)}

/* вход */
.shyn.auth{background:var(--bg)}
.shyn.auth .btn.primary{box-shadow:none}
.setup>*{min-width:0}
.setup .tbl-scroll,.setup table{max-width:100%}
.setup details summary{flex-wrap:wrap;row-gap:6px}

/* админ: назначение нагрузки */
.nz-groups{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.nz-chip{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-weight:700;font-size:13.5px;color:var(--ink-2);cursor:pointer;white-space:nowrap;user-select:none}
.nz-chip input{position:absolute;opacity:0;width:0;height:0}
.nz-chip:hover{border-color:var(--accent)}
.nz-chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.nz-chip.have{background:var(--surface-2);border-style:dashed;color:var(--muted,#888);cursor:default}
.nz-chip.have span::after{content:" ✓"}
.nz-list{margin-top:12px}
.nz-tbl{width:auto;min-width:min(100%,520px)}
.nz-cnt{display:inline-block;min-width:28px;text-align:center;padding:2px 8px;border-radius:8px;border:1px solid var(--line);font-weight:700;text-decoration:none;color:inherit}
.nz-cnt:hover{border-color:var(--accent)}
.nz-chip.other{opacity:.45}
.nz-chip.other.on{opacity:1}
/* всплывающие формы внутри таблиц админки раскрываются в строке — tbl-wrap их не обрезает */
.adm-tbl details.inline[open]{display:block}
.adm-tbl .popform{position:static;width:auto;max-width:340px;margin:8px 0 4px auto;box-shadow:none}
/* Настройка: выбор темы — компактные кнопки в строку */
.themes{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.theme{width:auto;flex-direction:row;align-items:center;gap:8px;padding:6px 12px 6px 8px;border-width:1px;border-radius:999px;font-size:13.5px}
.theme .sws{gap:2px}.theme .sw{width:14px;height:14px;border-radius:50%}
.theme.on{box-shadow:0 0 0 2px var(--accent-soft)}

/* Настройка: одна карточка на класс — нагрузка, свёрнутое расписание, ученики (22.10) */
.setup form.row.start{flex-wrap:wrap;border:1px dashed var(--accent);border-radius:14px;padding:14px;background:var(--surface-2)}
.setup .start-h{flex:1 0 100%;display:grid;gap:2px;margin-bottom:4px}
.setup .start-h b{font-size:16px}
.cls-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr));gap:14px;margin-top:14px;align-items:start}
.cls-card{border:1px solid var(--line);border-radius:16px;padding:14px 16px;background:var(--surface);min-width:0}
.cc-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.cc-head b{font-size:19px}
.cls-card .teaching{margin:8px 0;padding:10px 12px}
.cls-card .teaching .ttl{margin-bottom:4px}
.t-name{font-weight:700;min-width:0}
details.days{border:0;background:none;padding:0;margin:4px 0 0}
details.days>summary{font-weight:500;flex-wrap:wrap;row-gap:6px}
.d-sum{display:inline-flex;gap:6px;flex-wrap:wrap}
.d-chip{border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700;background:var(--surface)}
.d-edit{margin-left:auto;color:var(--accent);font-weight:700;font-size:13px}
details.days[open] .d-edit{display:none}
details.days .sched{margin-top:8px}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.cc-students{margin-top:10px;display:grid;gap:6px;justify-items:start}
.cc-students>details{width:100%;margin:0;box-sizing:border-box}
.pin-list{margin:0;padding:0;list-style:none;counter-reset:pn}
.pin-list li{display:flex;align-items:center;gap:8px;padding:2px 0;border-bottom:1px solid var(--line);counter-increment:pn}
.pin-list li:last-child{border-bottom:0}
.pin-list li::before{content:counter(pn) ".";min-width:22px;color:var(--muted);font-size:13px;text-align:right}
.pin-list .pn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pin-list form{margin:0;flex:none}
.pin-list input{width:76px;padding:2px 6px;margin:0;border:1px solid transparent;border-radius:8px;background:none;font-weight:800;font-size:16px;letter-spacing:.12em;text-align:right;cursor:pointer;color:inherit}
.pin-list input:hover,.pin-list input:focus{border-color:var(--line);background:var(--surface-2);cursor:text}
details.edit-list{margin-top:8px}
@media (max-width:720px){.cls-card{padding:12px}.cls-card .teaching{padding:8px 10px}.sched .wd{padding:5px 8px}.cc-head b{font-size:17px}}
.setup .cc-students details summary{flex-wrap:nowrap}
.setup details:not([open])>summary::before{transform:none}

/* Настройка: дни недели — чипы; время и № только у выбранных дней (22.10) */
.setup .sched .wd{padding:0;gap:0;border-radius:999px;overflow:hidden;cursor:pointer;background:var(--surface)}
.setup .sched .wd input[type=checkbox]{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.setup .sched .wd .d{display:inline-block;min-width:44px;padding:7px 12px;text-align:center;font-weight:800;text-transform:capitalize;color:var(--muted);user-select:none}
.setup .sched .wd:hover .d{color:var(--accent)}
.setup .sched .wd:has(input[type=checkbox]:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.setup .sched .wd:has(input[type=checkbox]:checked){border-color:var(--accent);padding-right:4px}
.setup .sched .wd:has(input[type=checkbox]:checked) .d{background:var(--accent);color:var(--accent-ink,#fff);margin-right:4px}
.setup .sched .wd input:not([type=checkbox]){border-radius:999px;padding:5px 8px;margin:3px 2px;text-align:center}
.setup .sched .wd:not(:has(input[type=checkbox]:checked)) input:not([type=checkbox]){display:none}
.setup .sched .btn{margin-left:auto}
@media (max-width:720px){.setup .sched .wd .d{min-width:40px;padding:7px 10px}}

/* Личные данные — компактные строки */
.me-rows{display:grid;gap:4px}
.me-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0;padding:8px 0;border-bottom:1px solid var(--line)}
.me-row:last-child{border-bottom:0}
.me-k{flex:0 0 64px;color:var(--muted);font-size:13px;font-weight:700}
.me-v{font-weight:700}
.me-row>input{flex:1 1 220px;min-width:0;margin:0}
.me-pwd{flex:1 1 100%;border:0;background:none;padding:0;margin:0}
.me-pwd>summary{color:var(--accent);font-weight:700;font-size:14px}
.me-pwd .row{margin-top:8px}
@media (min-width:721px){.me-pwd{flex:1 1 auto}.me-pwd:not([open]){flex:0 0 auto;margin-left:auto}}

/* Журнал — список журналов: карточки с сигналами + сводка справа (22.10, концепция Antigravity) */
.jr-attn-n{color:var(--warn)}
.jr-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start;max-width:1680px}
.jr-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.jr-tabs{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:var(--surface);border:1px solid var(--line);flex-wrap:wrap}
.jr-tabs button{border:0;background:none;border-radius:999px;padding:6px 14px;font:inherit;font-weight:700;font-size:14px;color:var(--muted);cursor:pointer}
.jr-tabs button small{font-weight:600;opacity:.7;margin-left:2px}
.jr-tabs button.on{background:var(--nav,#142129);color:#fff}
.jr-tabs button:not(.on):hover{color:var(--accent)}
.jr-only{display:inline-flex;align-items:center;gap:8px;margin:0 0 0 auto;font-size:14px;font-weight:600;cursor:pointer}
.jr-only input{width:18px;height:18px;margin:0;accent-color:var(--accent)}
.jr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px}
.jr-card{--subj:var(--accent);display:flex;flex-direction:column;gap:10px;position:relative;padding:16px 16px 14px 20px;border-radius:16px;background:var(--surface);border:1px solid var(--line);color:var(--ink);text-decoration:none;transition:box-shadow .15s,transform .15s,border-color .15s;min-width:0;overflow:hidden}
.jr-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--subj)}
.jr-card.физика{--subj:var(--phys)}.jr-card.информатика{--subj:var(--inf)}
.jr-card:hover{box-shadow:0 10px 26px -14px rgba(20,33,41,.35);transform:translateY(-1px);text-decoration:none}
.jr-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.jr-card.attn{border-color:color-mix(in srgb,var(--warn) 40%,var(--line))}
.jr-card[hidden]{display:none}
.jc-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.jc-cls{font-size:22px;font-weight:800;line-height:1}
.jc-subj{font-weight:700;color:var(--subj);font-size:14px}
.jc-tag{font-size:11px;font-weight:800;padding:1px 7px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.jc-n{margin-left:auto;color:var(--muted);font-size:13px}
.jc-sig{display:flex;flex-wrap:wrap;gap:6px;min-height:24px;align-items:center}
.jc-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--warn-soft);color:var(--warn)}
.jc-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.jc-chip.bad{background:var(--danger-soft);color:var(--danger)}
.js-row .jc-chip{padding:1px 8px}.js-row .jc-chip::before{display:none}
.jc-ok{font-size:13px;font-weight:700;color:var(--ok)}
.jc-next{display:grid;gap:2px;min-width:0}
.jc-when{font-size:12.5px;font-weight:700;color:var(--muted);text-transform:capitalize}
.jc-topic{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jc-prog{display:grid;gap:6px}
.jc-bar{height:6px;border-radius:6px;background:var(--surface-2);overflow:hidden}
.jc-bar i{display:block;height:100%;background:var(--accent);border-radius:6px}
.jc-prow{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.jc-work{font-weight:800;color:var(--ink)}
.jc-foot{display:flex;gap:16px;padding-top:10px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.jc-foot b{color:var(--ink);font-size:14px;margin-left:2px}
.jc-foot b.g5{color:var(--ok)}.jc-foot b.g4{color:var(--accent)}.jc-foot b.g3{color:var(--warn)}.jc-foot b.g2{color:var(--danger)}
.jr-side{position:sticky;top:16px;display:grid;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.jr-side section{padding:14px 16px}
.jr-side section+section{border-top:1px solid var(--line)}
.jr-side h2{font-size:15px;margin:0 0 8px;display:flex;align-items:baseline;gap:6px}
.jr-side h2 small{font-weight:500;font-size:12px}
.js-row{display:flex;align-items:center;gap:10px;padding:7px 8px;margin:0 -8px;border-radius:10px;color:var(--ink);text-decoration:none;font-size:13.5px;min-width:0}
.js-row:hover{background:var(--surface-2);text-decoration:none}
.js-k{flex:0 0 48px;color:var(--muted);font-weight:700;font-size:12.5px}
.js-v{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.js-ok{color:var(--ok);font-weight:800}
@media (max-width:1440px){.jr-layout{grid-template-columns:1fr}.jr-side{position:static;order:-1;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.jr-side section+section{border-top:0;border-left:1px solid var(--line)}}
@media (max-width:720px){.jr-side{grid-template-columns:1fr}.jr-side section+section{border-left:0;border-top:1px solid var(--line)}.jr-only{margin-left:0}.jc-cls{font-size:20px}}
.jr-side{grid-template-columns:minmax(0,1fr)}
@media (max-width:1440px){.jr-side{grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}.jr-side section{min-width:0}}
@media (max-width:720px){.jr-side{order:0;grid-template-columns:minmax(0,1fr)}.jr-side section.empty{display:none}}
.js-k.none{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:var(--line);margin:0 4px}

/* Домашнее задание: статусы, страница задания, сдача, проверка учителем (22.10, концепция Antigravity) */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
a.st-hw.hw2{color:var(--ink);text-decoration:none;transition:border-color .15s,box-shadow .15s}
a.st-hw.hw2:hover{border-color:var(--accent);box-shadow:0 8px 22px -16px rgba(20,33,41,.4);text-decoration:none}
.student .st-hw.hw2.ok .due{background:var(--ok-soft);color:var(--ok)}
.student .st-hw.hw2.back{border-color:color-mix(in srgb,var(--warn) 45%,var(--line))}
.student .st-hw.hw2.ok .txt{opacity:.8}
.hw-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 2px;align-items:center}
.hw-st,.hw-fmt,.hw-due{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:700;padding:2px 10px;border-radius:999px;line-height:1.6}
.hw-st.new{background:var(--surface-2);color:var(--muted)}
.hw-st.today{background:var(--warn-soft);color:var(--warn)}
.hw-st.late{background:var(--danger-soft);color:var(--danger)}
.hw-st.wait{background:var(--warn-soft);color:var(--warn)}
.hw-st.back{background:var(--warn);color:#fff}
.hw-st.ok{background:var(--accent);color:var(--on-solid,#fff)}
.hw-st.ok::before{content:"✓"}
.hw-fmt{border:1px solid var(--line);color:var(--ink-2,var(--ink));font-weight:600}
.hw-due{background:var(--accent-soft);color:var(--accent)}.hw-due.late{background:var(--danger-soft);color:var(--danger)}
.hw-back{margin:6px 0 0;padding:6px 10px;border-left:3px solid var(--warn);background:var(--warn-soft);border-radius:0 8px 8px 0;font-size:13.5px}
.hw-items{margin:6px 0 0;padding-left:18px;font-size:14px;color:var(--ink-2,var(--ink))}
.hw-items li{margin:2px 0}.hw-items li.more{list-style:none;margin-left:-18px;color:var(--muted);font-size:13px}
.st-hw .hw-go{align-self:center;white-space:nowrap}
@media (max-width:720px){.st-hw .hw-go{align-self:stretch;justify-content:center;flex:1 0 100%}}

.hwp{max-width:820px}
.hwp-back{display:inline-flex;margin:4px 0 12px;font-weight:700;color:var(--accent);text-decoration:none}
.hwp-head{margin-bottom:14px}
.hwp-meta{font-weight:700;color:var(--muted);font-size:14px;display:flex;align-items:center;gap:6px}
.hwp-head h1{font-size:clamp(21px,3.6vw,27px);line-height:1.2;margin:6px 0 8px}
.hwp-note{padding:12px 16px;border-radius:var(--r,16px);margin-bottom:14px;border-left:4px solid var(--accent);background:var(--accent-soft)}
.hwp-note.back{border-left-color:var(--warn);background:var(--warn-soft)}
.hwp-note p{margin:4px 0 0;white-space:pre-wrap}
.hwp .card{margin-bottom:14px}
.hwp-items{list-style:none;counter-reset:it;padding:0;margin:0;display:grid;gap:6px}
.hwp-items li{counter-increment:it}
.hwp-items label{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-s,12px);cursor:pointer;margin:0;font-weight:500;line-height:1.45;background:var(--surface)}
.hwp-items label::before{content:counter(it);flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:13px}
.hwp-items input{order:3;margin:4px 0 0 auto;width:20px;height:20px;flex:none;accent-color:var(--accent)}
.hwp-items li.on label{background:var(--surface-2);color:var(--muted)}
.hwp-items li.on label span{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--muted) 60%,transparent)}
.hwp-items li.on label::before{content:"✓";background:var(--accent);color:var(--on-solid,#fff)}
.hwp-prog{height:8px;border-radius:8px;background:var(--surface-2);overflow:hidden;margin:4px 0 10px}
.hwp-prog i{display:block;height:100%;background:var(--accent);border-radius:8px}
.hwp-prep{list-style:none;padding:0;margin:0;display:grid;gap:4px}
.hwp-prep li{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}
.hwp-prep li:last-child{border-bottom:0}
.hwp-prep .n{flex:none;width:28px;color:var(--muted);font-weight:800;font-size:13px}
.hwp-prep .tp{flex:1;min-width:0}
.hwp-prep li.ok .tp{color:var(--muted)}
.hwp-prep a:not(.btn){text-decoration:none}
.hwp-mat{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:10px}
.hwp-mat .mat{display:grid;grid-template-columns:auto 1fr;gap:0 10px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-s,12px);color:var(--ink);text-decoration:none;background:var(--surface)}
.hwp-mat .mat:hover{border-color:var(--accent)}
.hwp-mat .ic{grid-row:span 2;font-size:22px}
.hwp-mat small{color:var(--muted);font-size:12.5px}
.hwp-mat .mat.ok small{color:var(--ok);font-weight:700}
.hwp-auto{padding:12px 14px;border-radius:var(--r-s,12px);background:var(--surface-2);margin:0 0 10px}
.hwp-auto.ok{background:var(--ok-soft);color:var(--ok);font-weight:700}
.hwp-answer textarea{width:100%;min-height:120px;resize:vertical}
.hwp-up{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}
.hwp-up label.btn{margin:0;cursor:pointer}
.hwp-up label.btn.ghost{border:1px solid var(--line)}
.hwp-files,.hwp-prev{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin:8px 0}
.hwp-prev:empty{display:none}
.hwp-file{position:relative;display:grid;gap:4px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);text-decoration:none;font-size:12px;min-width:0}
.hwp-file a{display:grid;gap:4px;color:inherit;text-decoration:none}
.hwp-file img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;background:var(--surface-2)}
.hwp-file .doc{display:grid;place-items:center;aspect-ratio:4/3;font-size:30px;background:var(--surface-2);border-radius:8px}
.hwp-file span:not(.doc){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hwp-file form{position:absolute;top:2px;right:2px;margin:0}
.hwp-file .x{position:absolute;top:2px;right:2px;width:26px;height:26px;border-radius:50%;border:0;background:rgba(20,33,41,.75);color:#fff;cursor:pointer;font-size:12px;line-height:1}
.hwp-file form .x{position:static}
.hwp-file.new{border-style:dashed;border-color:var(--accent)}
.hwp-text{white-space:pre-wrap;padding:10px 12px;border-radius:12px;background:var(--surface-2);margin:6px 0;font-size:14.5px}
.hwp-send{margin-top:6px}
.hwp-send:disabled{opacity:.5;cursor:not-allowed}
.student.young .hwp-items label{font-size:17px;padding:12px 14px}
@media (max-width:720px){.hwp-send{width:100%;justify-content:center;min-height:48px}.hwp-up label.btn{flex:1 1 100%;justify-content:center;min-height:46px}}

/* учитель: проверка ДЗ на странице урока */
.hwc{scroll-margin-top:16px}
.hwc-msg{padding:8px 12px;border-radius:10px;background:var(--surface-2);margin:0 0 10px;font-size:14px}
.hwc-msg.ok{background:var(--ok-soft);color:var(--ok);font-weight:700}.hwc-msg.warn{background:var(--warn-soft);color:var(--warn)}
.hwc-list{display:grid;gap:8px}
.hwc-row{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface)}
.hwc-row.wait{border-color:color-mix(in srgb,var(--warn) 50%,var(--line));background:color-mix(in srgb,var(--warn-soft) 40%,var(--surface))}
.hwc-h{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.hwc-body{margin-top:8px}
.hwc-act{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 0;align-items:center}
.hwc-act input[name=score]{width:96px;margin:0}
.hwc-act input[name=comment]{flex:1 1 220px;margin:0}

/* Прогон кабинета ученика (22.10): неактивная СОР, пустые оценки, чат на телефоне, «Адал азамат» на телефоне */
.sor-off{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px}
.sor-off .btn.off{opacity:.5;cursor:not-allowed;filter:grayscale(.6)}
.sor-off small{font-size:11.5px;color:var(--muted);line-height:1.2;padding-left:4px}
.gr-empty{display:flex;gap:14px;align-items:flex-start}
.gr-empty-ic{font-size:30px;line-height:1}
.gr-empty b{font-size:16px}.gr-empty p{margin:4px 0 0;color:var(--muted);font-size:14px}
.login input.pin.bad{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}
.login .err{margin:8px 0 0}
@media (max-width:720px){
  .chat-form{flex-direction:column;align-items:stretch}
  .chat-form textarea{width:100%;min-height:96px}
  .chat-form .btn{width:100%;justify-content:center;min-height:46px}
  .student .adal{padding:8px 12px;gap:10px;margin-top:8px}
  .student .adal .adal-mark{width:28px;height:28px;font-size:15px;border-radius:9px}
  .student .adal small,.student .adal .kz{display:none}
  .student .adal b{font-size:14px}
  .student .adal b::before{content:"Адал азамат · ";font-weight:600;color:var(--muted)}
}
.st-next .sor-off small{color:rgba(255,255,255,.85)}

/* «Сегодня» (этап 1, T1): расписание дня — первым, классы — компактным списком справа */
.lesson-card{position:relative}
.lesson-card.now{border:2px solid var(--accent);box-shadow:0 10px 26px -16px var(--accent);padding:22px 17px 15px}
.lesson-card .now-tag{position:absolute;top:-1px;left:16px;transform:translateY(-50%);background:var(--accent);color:var(--accent-ink,#fff);font-size:11.5px;font-weight:800;letter-spacing:.02em;padding:2px 10px;border-radius:99px}
.mycls{margin-bottom:14px}
.mycls summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px}
.mycls summary::-webkit-details-marker{display:none}
.mycls summary h2{margin:0}
.mycls[open] summary{margin-bottom:6px}
.myc{display:grid;grid-template-columns:10px 44px minmax(0,1fr);grid-template-areas:"d n s" ". . x";column-gap:8px;align-items:center;padding:8px 6px;margin:0 -6px;border-radius:10px;color:var(--ink);border-bottom:1px solid var(--line)}
.myc:last-child{border-bottom:0}
.myc:hover{background:var(--surface-2)}
.myc .dot{grid-area:d;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.myc .dot.физика{background:var(--phys)}.myc .dot.информатика{background:var(--inf)}
.myc b{grid-area:n;font-size:15px}
.myc .sb{grid-area:s;color:var(--muted);font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.myc .nx{grid-area:x;font-size:12.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.myc .nx .tag{font-style:normal;font-size:10.5px;padding:1px 6px}
@media(max-width:1000px){.mycls{margin-bottom:12px}.lesson-card.now .go .btn{width:100%;justify-content:center}}
@media(max-width:720px){.lesson-card.now{flex-wrap:wrap}.lesson-card.now .go{flex-basis:100%}}

/* Журнал (этап 1, T11): посещаемость крупными кнопками под ячейкой */
.attpop{position:fixed;z-index:50;display:flex;gap:4px;padding:5px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px -12px rgba(20,33,41,.35)}
.attpop[hidden]{display:none}
.attpop button{min-height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.attpop button:hover{border-color:var(--accent)}
.attpop button.on{border-color:transparent;background:var(--accent);color:var(--accent-ink,#fff)}
.attpop button.н.on{background:var(--danger);color:#fff}.attpop button.б.on{background:var(--warn);color:var(--on-solid,#fff)}.attpop button.у.on{background:var(--info);color:var(--accent-ink,#fff)}
.journal td.cell:focus-within{outline:2px solid var(--accent);outline-offset:-2px}
@media(max-width:720px){.attpop button{min-height:40px;padding:0 9px}}

/* Урок (этап 1, T3): «Урок проведён» вверху и всплывающее подтверждение */
.cta .done-form{display:flex;align-items:center;gap:8px;margin-left:auto}
.cta .done-btn{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}
.cta .done-btn:hover{background:var(--ok);color:var(--on-solid,#fff)}
.cta .done-on{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:var(--r-s,10px);background:var(--ok-soft);color:var(--ok);font-weight:800}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;max-width:min(560px,calc(100vw - 32px));padding:12px 18px;border-radius:12px;background:var(--ink);color:var(--surface);font-weight:700;box-shadow:0 14px 36px -12px rgba(0,0,0,.45);transition:opacity .4s,transform .4s}
.toast.out{opacity:0;transform:translate(-50%,10px);pointer-events:none}
@media(max-width:1000px){.toast{bottom:84px}.cta .done-form{margin-left:0;width:100%}.cta .done-btn{width:100%;justify-content:center}}
.lesson-cols{align-items:start}.lesson-cols>.col{display:grid;gap:16px;align-content:start;min-width:0}.lesson-cols>.col>.card{margin:0}

/* Вход ученика (этап 1, S1): 4 ячейки ПИН поверх одного настоящего поля */
.pin-cells{position:relative;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:4px 0 14px}
.pin-cells span{display:grid;place-items:center;aspect-ratio:1/1;max-height:72px;border:2px solid var(--line);border-radius:14px;background:var(--surface);font-size:32px;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;transition:border-color .15s,box-shadow .15s}
.pin-cells span:not(:empty){border-color:var(--ink-2,#5b6b75)}
.pin-cells span.cur{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.pin-cells.bad span{border-color:var(--danger)}
.pin-cells input.pin{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;cursor:pointer;padding:0;border:0}
.pin-help{margin-top:12px;text-align:center}
.pin-help summary{display:inline-block;cursor:pointer;color:var(--accent);font-weight:700;font-size:14px;list-style:none}
.pin-help summary::before{display:none}
.pin-help summary::-webkit-details-marker{display:none}
.pin-help p{margin:8px 0 0;color:var(--muted);font-size:14px;text-align:left}

/* этап 1 — доработки по разбору Antigravity */
.cta .done-on .undo{margin-left:8px;padding:0;border:0;background:none;color:var(--muted);font:inherit;font-size:13px;font-weight:600;text-decoration:underline;cursor:pointer}
.cta .done-on .undo:hover{color:var(--danger)}
.attpop button{min-width:40px}
.journal .att{font-size:11px}
.pin-help summary{border:0!important;background:none!important;box-shadow:none!important;padding:6px 4px;min-height:0}
.login #go:disabled{opacity:.45;cursor:default}
@media(max-width:720px){
  .attpop{left:12px!important;right:12px;top:auto!important;bottom:76px;justify-content:space-between}
  .attpop button{flex:1;min-height:46px;font-size:16px}
  .side-col .card:not(.all) .upc.more{display:none}
}
@media(min-width:721px){.todo-more{display:none}}
.side-col .card.all .todo-more{display:none}
.todo-more{margin-top:8px;width:100%;justify-content:center}

/* Этап 2, T4: урок на телефоне */
.tile{position:relative}
.tile .ext{margin-left:auto;color:var(--muted);font-weight:700}
details.goals summary{list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}
details.goals summary::-webkit-details-marker{display:none}
details.goals summary h2{margin:0}
details.goals .goals-peek{flex-basis:100%;font-size:13px}
details.goals[open] .goals-peek{display:none}
details.goals[open] summary{margin-bottom:8px}
@media(max-width:720px){
  .lesson-hero .cta{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px}
  .lesson-hero .cta>.btn.big:first-child,.lesson-hero .cta .done-form{grid-column:1/-1}
  .lesson-hero .cta .btn.big{justify-content:center;min-height:46px;padding:8px 6px;font-size:14px}
  .lesson-hero .cta>.btn.big:first-child{font-size:16px}
  .tiles{grid-template-columns:1fr;gap:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
  .tile{border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;padding:10px 14px;min-height:48px}
  .tile:last-child{border-bottom:0}
  .tile .ic{width:32px;height:32px}
  .hw-opts{flex-direction:column;align-items:flex-start;gap:10px}
  .hw-opts .chk{min-height:32px}
}

/* Этап 2, T5: вкладки проверки ДЗ */
.hwc-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}
.hwc-tabs button{min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink-2);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.hwc-tabs button b{margin-left:4px;color:var(--muted);font-variant-numeric:tabular-nums}
.hwc-tabs button.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.hwc-tabs button.on b{color:inherit;opacity:.75}
.hwc-tabs .hwc-new{margin-left:auto;background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.hwc-list[data-g="wait"] .hwc-row:not([data-g="wait"]),.hwc-list[data-g="ok"] .hwc-row:not([data-g="ok"]),.hwc-list[data-g="rest"] .hwc-row:not([data-g="rest"]){display:none}
.hwc-list .hwc-empty{display:none;margin:0}.hwc-list.none .hwc-empty{display:block}

/* Этап 2, T14: сообщения учителя — чат */
.chat{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:16px;height:calc(100vh - 150px);min-height:460px}
.chat-list,.chat-pane{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);min-height:0}
.chat-list{display:flex;flex-direction:column;overflow:auto}
.chat-tools{position:sticky;top:0;z-index:1;background:var(--surface);padding:12px;border-bottom:1px solid var(--line);display:grid;gap:8px}
.chat-tools input{margin:0}
.chat-flt{display:flex;gap:6px}
.chat-flt button{flex:1;min-height:34px;border:1px solid var(--line);border-radius:99px;background:var(--surface);color:var(--ink-2);font:inherit;font-size:13px;font-weight:700;cursor:pointer}
.chat-flt button b{color:var(--muted);margin-left:3px}
.chat-flt button.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.chat-flt button.on b{color:inherit;opacity:.75}
.chat-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-bottom:1px solid var(--line);color:var(--ink)}
.chat-item[hidden]{display:none}
.chat-item:hover{background:var(--surface-2)}
.chat-item.on{background:var(--accent-soft)}
.chat-item .ava,.chat-head .ava{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:800}
.ci-main{flex:1;min-width:0;display:flex;flex-direction:column}
.ci-main b{font-size:14.5px}
.ci-main small{color:var(--muted);font-size:12.5px;font-weight:600}
.ci-last{font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.chat-item.wait .ci-last{color:var(--ink);font-weight:600}
.ci-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;color:var(--muted);font-size:12px}
.ci-side .badge{font-style:normal;background:var(--accent);color:var(--accent-ink,#fff);border-radius:99px;padding:0 7px;font-size:12px;font-weight:800}
.ci-side .dot-wait{width:9px;height:9px;border-radius:50%;background:var(--warn)}
.chat-none{padding:12px;margin:0}
.chat-pane{display:flex;flex-direction:column;overflow:hidden}
.chat-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.chat-head b{display:block}
.chat-head small{color:var(--muted);font-weight:600}
.chat-back{display:none}
.chat-msgs{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;gap:8px;background:var(--bg)}
.chat-day{align-self:center;font-size:12px;color:var(--muted);font-weight:700;padding:2px 10px;border-radius:99px;background:var(--surface)}
.bubble{max-width:75%;align-self:flex-start;padding:9px 12px;border-radius:14px 14px 14px 4px;background:var(--surface);border:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere}
.bubble.me{align-self:flex-end;border-radius:14px 14px 4px 14px;background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.bubble small{display:block;margin-top:3px;font-size:11.5px;opacity:.7;text-align:right}
.chat-form{display:flex;gap:8px;align-items:flex-end;padding:12px;border-top:1px solid var(--line)}
.chat-form textarea{flex:1;margin:0;resize:none;min-height:44px;max-height:200px}
@media(max-width:720px){
  .chat{display:block;height:auto;min-height:0}
  .chat.open .chat-list,.chat:not(.open) .chat-pane{display:none}
  .chat-pane{height:calc(100dvh - 210px);min-height:380px}
  .chat-back{display:inline-flex}
  .bubble{max-width:85%}
}

/* Этап 2, S2/S3/S7: кабинет ученика */
.st-q summary::before{display:none}                              /* один шеврон справа, без второго слева */
.student .st-next .btn.primary{background:var(--surface);color:var(--accent);font-weight:800;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent-ink) 55%,transparent)}
.student .who{display:flex;flex-direction:column;min-width:0}
.student .who small{opacity:.75}
@media(max-width:720px){
  .st-poll{padding:9px 12px;gap:10px;margin-bottom:10px;border-radius:12px}
  .st-poll .ic{font-size:20px}
  .st-poll small{display:none}
  .st-poll .go{padding:7px 12px}
  .st-work{padding:9px 12px;gap:10px;border-radius:12px;margin-top:8px}
  .st-work .ic{font-size:20px}
  .st-work small,.st-work em{display:none}
  .st-work b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
@media(max-width:720px){.wide-only{display:none}.lesson-hero .cta .btn.big{min-width:0;white-space:nowrap}}

/* Этап 2 — доработки по разбору Antigravity */
details.ai-box summary{list-style:none;cursor:pointer}
details.ai-box summary::-webkit-details-marker{display:none}
details.ai-box summary h2{margin:0;display:inline}
details.ai-box[open] summary{margin-bottom:8px}
.st-poll.done{background:var(--accent-soft);color:var(--accent)}
.student a.st-poll.done{color:var(--accent)}
.st-poll.done .go{background:var(--surface);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.lp-opt{position:relative;padding-left:52px;box-shadow:none;border-width:1.5px}
.lp-opt::before{content:"";position:absolute;left:18px;top:50%;width:18px;height:18px;margin-top:-9px;border-radius:50%;border:2px solid var(--line)}
.lp-opt.on::before{border-color:var(--accent-ink,#fff);background:radial-gradient(circle,var(--accent-ink,#fff) 40%,transparent 45%)}
.lp-status.ok{display:inline-block;padding:8px 14px;border-radius:10px;background:var(--ok-soft);color:var(--ok)}
.student .st-back{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;font-size:20px;font-weight:800;color:var(--ink);flex:none}
.student .st-back:hover{background:var(--surface-2)}
@media(max-width:720px){
  .student .st-next .acts .btn,.student .st-tile .acts .btn{min-height:40px;padding:8px 12px}
  .student .st-next .acts{gap:8px}
}
@media(max-width:720px){.st-poll.done small{display:block;opacity:1}}

/* Этап 3, T2: «Отметить проведённые» с кнопками */
.upc.todo{align-items:center}
.upc.todo .d,.upc.todo .t{color:var(--ink)}
.upc.todo .t{flex:1;min-width:0}
.upc.todo .ok-btn{flex:none;width:36px;height:36px;padding:0;justify-content:center;color:var(--ok);border-color:var(--ok);font-weight:800}
.upc.todo .ok-btn:hover{background:var(--ok);color:var(--on-solid,#fff)}
.todo-all{margin-top:10px;width:100%;justify-content:center}

/* Этап 3, T10: список журналов — спокойные сигналы, темы в 2 строки, шеврон, крупный фильтр */
.jc-chip{background:var(--surface-2);color:var(--ink-2)}
.jc-chip::before{background:var(--warn)}
.jc-chip.bad{background:var(--danger-soft);color:var(--danger)}
.jc-chip.bad::before{background:currentColor}
.jc-topic{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.jc-head{padding-right:18px}
.jr-card::after{content:"›";position:absolute;right:14px;top:12px;font-size:22px;font-weight:700;color:var(--muted);transition:transform .15s}
.jr-card:hover::after{transform:translateX(3px);color:var(--accent)}
.jr-only{min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:99px;background:var(--surface)}
.jr-only:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}

/* Этап 3, T12: библиотека */
.lib-row .t small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.shyn .lib-card::after{content:"›";position:absolute;right:12px;top:10px;font-size:20px;font-weight:700;color:var(--muted);transition:transform .15s}
.shyn .lib-card:hover::after{transform:translateX(3px);color:var(--accent)}
.lc-tags:empty{display:none}

/* Этап 3, T13: настройка */
.pin-list input.ok{border-color:var(--ok);background:var(--ok-soft)}
.pin-list input.bad{border-color:var(--danger);background:var(--danger-soft)}
@media(max-width:720px){.me-row>input{flex-basis:100%}}

/* Этап 3, T16: админ-панель */
.btn.icon-x{width:32px;height:32px;padding:0;justify-content:center;color:var(--muted);font-weight:800}
.btn.icon-x:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}
.hwp-prep .n{width:40px;text-align:center;line-height:1.05}
.hwp-prep .n small{display:block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.st-mark small{color:var(--ink-2)}
.gr-scale span{white-space:nowrap}
.student .chat-form textarea{resize:none;max-height:200px}

/* Этап 3 — доработки по разбору Antigravity */
.hwp-text{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent)}
@media(max-width:560px){.gr-scale{margin-bottom:34px}.gr-scale span{display:flex;flex-direction:column;align-items:center;line-height:1.15}.gr-scale span b{font-size:12px}}

/* Чистый старт: блок «Быстрый старт», пустые состояния, журнал без голых «/18» */
.quickstart{margin-bottom:16px;border:1px solid var(--accent)}
.quickstart ol{margin:6px 0 10px;padding-left:20px;display:grid;gap:10px}
.quickstart li form{margin-top:8px}
.st-past-empty{margin-top:14px}
.journal td.cell input:not(:focus)::placeholder{color:transparent}
/* ---------- 23.10 визуал: плитки урока, кнопки и плашки ученика (замечания Codex/Antigravity) ---------- */
html{overflow-x:clip}
.side{left:0;z-index:25}
.tiles{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.tile{min-width:0}
.tile>span:nth-child(2){flex:1;min-width:0;overflow-wrap:break-word;hyphens:auto}
.tile .ext{position:absolute;top:8px;right:10px;font-size:13px;line-height:1}
.tile:has(.ext){padding-right:26px}
.st-search input{min-width:0;flex:1 1 0}.st-search>.btn{flex:none}
@media (max-width:720px){
  .student .st-next .acts,.student .st-tile .acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;width:100%;flex-basis:100%;align-items:start}
  .student .acts>.btn,.student .acts .sor-off .btn{width:100%;min-height:44px}
  .student .acts .btn{justify-content:center;white-space:normal;text-align:center;max-width:100%}
  .student .acts>.btn:last-child:nth-child(odd),.student .acts>.sor-off:last-child:nth-child(odd){grid-column:1/-1}
  .student .acts .sor-off{align-items:stretch}.student .acts .sor-off .btn{justify-content:center}
  .student .st-work b{white-space:normal;overflow:hidden;text-overflow:clip;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .student .st-work .go{flex:none}
  .student .st-tabs{-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent);padding-right:24px}
}

/* Библиотека: шапка плана */
.plan-hero .per-chips{margin-left:auto;gap:4px}
.plan-hero .per-chips .chip{white-space:nowrap}
@media(max-width:720px){
  .plan-hero{padding:16px!important}
  .plan-hero .cta{gap:8px}
  .plan-hero .cta>.btn{flex:1 1 auto;min-width:0;white-space:normal;text-align:left;line-height:1.2}
  .plan-hero .cta>.btn .i{flex:none}
  .plan-hero .per-chips{margin-left:0;flex-basis:100%;flex-wrap:wrap}
  .plan-hero .per-chips .chip{flex:1 1 auto;justify-content:center}
}
/* телефон: длинные подписи кнопок переносятся, а не обрезаются; таблица нагрузки — с прокруткой */
.nz-list{max-width:100%;overflow-x:auto}
@media(max-width:720px){.btn{white-space:normal;min-width:0;max-width:100%;text-align:center}}
@media(pointer:coarse){a.chip,button.chip{min-height:36px}}
/* телефон: выпадающий список не шире экрана; таблица в карточке — с прокруткой вбок, а не вся страница */
.row select{max-width:100%;min-width:0}
@media(max-width:720px){.card>table.tbl,.card>form>table.tbl{display:block;overflow-x:auto;max-width:100%}}
@media(max-width:720px){.nz-tbl{min-width:0;width:100%}.content{overflow-x:clip}}
/* телефон боком (высота ~340 px): шапка уезжает при прокрутке, нижнее меню — в одну строку */
@media(max-width:1000px) and (max-height:500px){.topbar{position:static}.bottomnav{padding-top:2px}.bottomnav a{flex-direction:row;justify-content:center;gap:6px;padding:4px 2px;font-size:12px;min-height:36px}}
/* сенсорный экран: подсказки про клавиши не нужны */
@media(pointer:coarse){.kbd-only{display:none}}
dd.links{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
/* ПИН-коды учеников: явное поле, кубик (случайный), печать карточки, статус; поиск вверху «Настройки» */
.pin-ed{display:flex;align-items:center;gap:6px;margin:0;flex:none}
.pin-list .pin-ed input,.pin-res .pin-ed input{width:84px;padding:6px 6px;border:1px solid var(--line);background:var(--surface);text-align:center;letter-spacing:.14em;font-weight:800;font-size:16px;cursor:text;border-radius:10px}
.pin-ed .btn.icon{width:36px;height:36px;min-height:36px;padding:0;flex:none}
.pin-ed .btn.icon .i{width:18px;height:18px}
.pin-st{font-size:12.5px;font-weight:700;color:var(--ok);white-space:nowrap}.pin-st:empty{display:none}
.pin-list .pn{flex:1 1 150px;white-space:normal;overflow:visible}
.pin-list .pin-ed{margin-left:auto}
.pin-st.bad{color:var(--danger)}
.pin-list li{flex-wrap:wrap;padding:4px 0}
.pin-all{margin:10px 0 4px;display:grid;gap:6px;justify-items:start}.pin-all label.chk{font-size:13px;color:var(--muted);font-weight:500;gap:8px}
.pin-note{margin:6px 0 8px;padding:8px 12px;border-radius:10px;background:var(--ok-soft);color:var(--ink);font-size:13.5px}
.pin-find{padding-top:14px;padding-bottom:14px}
.pf-in{display:flex;align-items:center;gap:8px;margin:0;border:1px solid var(--line);border-radius:12px;padding:0 12px;background:var(--surface)}
.pf-in input{border:0;background:none;padding:12px 0;margin:0;min-width:0;flex:1}
.pf-in input:focus{outline:none}
.pf-in:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.pf-in .i{color:var(--muted);flex:none}
.pin-res .pr-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--line)}
.pin-res .pr-row:last-child{border-bottom:0}
.pin-res .pr-nm{flex:1;min-width:200px}
@media(max-width:720px){
  .pin-list .pn{flex:1 1 calc(100% - 40px);white-space:normal}
  .pin-list .pin-ed{flex-basis:100%;padding-left:30px}
  .pin-res .pr-nm{flex-basis:100%;min-width:0}
  .pin-ed .btn.icon{width:40px;height:40px}
}
/* кнопка светлая/тёмная тема (static/mode.js): видна иконка того, на что переключит */
.mode-btn{display:inline-grid;place-items:center;width:40px;height:40px;flex:none;padding:0;border:0;border-radius:10px;background:none;color:inherit;cursor:pointer;opacity:.85}
.mode-btn:hover{opacity:1;background:rgba(127,127,127,.15)}
.mode-btn .mode-sun,html.is-dark .mode-btn .mode-moon{display:none}
html.is-dark .mode-btn .mode-sun{display:block}
.side .user .mode-btn{margin-left:auto;width:34px;height:34px}
.side .user .mode-btn+a{margin-left:0}
.topbar .mode-btn{color:#cbd5e1;margin:-8px -6px}
.student .top .mode-btn{margin-left:auto}
.student .top .mode-btn+.st-out{margin-left:4px}
html[data-mode=dark]{color-scheme:dark}
html[data-mode=light]{color-scheme:light}
/* журнал: под ячейкой ФО — вторая строка с баллами 1…10 (static/journal.js) */
.attpop{flex-direction:column;align-items:stretch}
.attpop .ap-att,.attpop .ap-pts{display:flex;gap:4px}
.attpop .ap-pts{display:none;padding-top:5px;border-top:1px solid var(--line)}
.attpop.fo .ap-pts{display:flex}
.attpop .ap-pts button{min-width:32px;padding:0 6px;font-variant-numeric:tabular-nums}
.attpop .ap-pts button.clr{color:var(--muted);font-weight:600}
.attpop .ap-pts button.clr:hover{border-color:var(--danger);color:var(--danger)}
@media(max-width:720px){
  .attpop .ap-pts{display:none;flex-wrap:wrap}
  .attpop.fo .ap-pts{display:grid;grid-template-columns:repeat(6,1fr)}
  .attpop .ap-pts button{min-height:44px;font-size:16px}
}
/* «Сегодня» на 1001–1279 px: колонка расписания узкая — кнопки урока под тему, тема во всю ширину карточки */
@media(min-width:1001px) and (max-width:1279px){
  .lesson-card{flex-wrap:wrap}.lesson-card .go{flex-direction:row;width:100%;justify-content:flex-end}
}
/* ПИН из 6 цифр: ячейки не шире карточки на телефоне */
.pin-cells span{min-width:0}
@media(max-width:420px){.pin-cells{gap:6px}.pin-cells span{font-size:26px;border-radius:11px}}
@media(max-width:420px){.auth-wrap .login{max-width:calc(100vw - 32px)}}   /* 92vw + поля обёртки были шире экрана */

/* математика, алгебра, геометрия */
:root{--math:#d97706;--math-soft:#fff4e0;--math-a:#f59e0b;--math-b:#d97706;--alg:#7c3aed;--alg-soft:#f1eaff;--alg-a:#8b5cf6;--alg-b:#6d28d9;--geo:#db2777;--geo-soft:#fde8f1;--geo-a:#ec4899;--geo-b:#be185d}
@media(prefers-color-scheme:dark){/*mode*/:root:not([data-mode=light]){--math:#fbbf24;--math-soft:#3a2a08;--alg:#a78bfa;--alg-soft:#25174a;--geo:#f472b6;--geo-soft:#3a1626}}
:root[data-mode=dark]{--math:#fbbf24;--math-soft:#3a2a08;--alg:#a78bfa;--alg-soft:#25174a;--geo:#f472b6;--geo-soft:#3a1626}
.subj.математика,.dot.математика,.myc .dot.математика{background:var(--math)}.subj.алгебра,.dot.алгебра,.myc .dot.алгебра{background:var(--alg)}.subj.геометрия,.dot.геометрия,.myc .dot.геометрия{background:var(--geo)}
.cls.математика{background:linear-gradient(135deg,var(--math-a),var(--math-b));box-shadow:0 10px 24px -12px rgba(217,119,6,.6)}
.cls.алгебра{background:linear-gradient(135deg,var(--alg-a),var(--alg-b));box-shadow:0 10px 24px -12px rgba(124,58,237,.6)}
.cls.геометрия{background:linear-gradient(135deg,var(--geo-a),var(--geo-b));box-shadow:0 10px 24px -12px rgba(219,39,119,.6)}
.hero.математика::before{background:var(--math)}.hero.алгебра::before{background:var(--alg)}.hero.геометрия::before{background:var(--geo)}
.lib-card.математика{border-left-color:var(--math)}.lib-card.алгебра{border-left-color:var(--alg)}.lib-card.геометрия{border-left-color:var(--geo)}
.shyn .lib-card.математика::before{background:var(--math)}.shyn .lib-card.алгебра::before{background:var(--alg)}.shyn .lib-card.геометрия::before{background:var(--geo)}
.shyn .hero.математика{border-top-color:var(--math)}.shyn .hero.алгебра{border-top-color:var(--alg)}.shyn .hero.геометрия{border-top-color:var(--geo)}
.shyn .cls.математика,.shyn .cls.алгебра,.shyn .cls.геометрия{background:var(--surface);box-shadow:none}
.shyn .cls.математика::before,.shyn .cls.математика .bar span{background:var(--math)}.shyn .cls.алгебра::before,.shyn .cls.алгебра .bar span{background:var(--alg)}.shyn .cls.геометрия::before,.shyn .cls.геометрия .bar span{background:var(--geo)}
.jr-card.математика{--subj:var(--math)}.jr-card.алгебра{--subj:var(--alg)}.jr-card.геометрия{--subj:var(--geo)}

/* библиотека учителя: свои планы сверху, другие классы своих предметов свёрнуто; без нагрузки — пояснение (26.10) */
.lib-mine{font-size:18px;margin:4px 0 6px}
.lib-other{margin-top:22px;border-top:1px solid var(--line);padding-top:12px}
.lib-other>summary{cursor:pointer;font-weight:700;font-size:16px;color:var(--ink-2);padding:6px 0}
.lib-other>summary small{font-weight:600;color:var(--muted);margin-left:6px}
.lib-empty{max-width:640px}.lib-empty h2{margin-top:0}
.adm-note.warn{border-color:var(--warn);background:var(--warn-soft)}
.nz-none{margin:6px 0}
.adm [hidden]{display:none!important}   /* чипы классов чужой школы и формы классов: hidden не должен перебиваться display */
.adm #nz-go:disabled{opacity:.45;cursor:not-allowed}
.pin-ro{display:inline-flex;align-items:center;gap:8px}.pin-ro code{font-size:15px;font-weight:700;letter-spacing:.08em}
.cur-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:6px 18px;margin:6px 0}
.cur-row{display:grid;grid-template-columns:72px 52px minmax(0,1fr);align-items:center;gap:8px;margin:0}
.cur-row select{width:100%;min-width:0}
/* мастер нагрузки в панели администратора: учитель → предмет → класс → литера → подгруппы (26.10) */
.wz{display:grid;gap:4px;margin:8px 0 14px;max-width:860px}
.wz-step{display:grid;grid-template-columns:30px minmax(0,1fr);gap:12px;padding:10px 0;border-top:1px dashed var(--line);animation:wz-in .15s ease-out}
.wz-step:first-child{border-top:0}
@keyframes wz-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.wz-step{animation:none}}
.wz-n{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:800;font-size:14px}
.wz-body{display:grid;gap:8px;min-width:0}
.wz-body>b{font-size:14px}
.wz-body select{max-width:420px}
.wz-pills{display:flex;flex-wrap:wrap;gap:8px}
.wz-pill{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-weight:600;cursor:pointer}
.wz-pill small{color:var(--muted);font-weight:500}
.wz-pill:hover{border-color:var(--accent)}
.wz-pills.sq .wz-pill{min-width:48px;justify-content:center}
.wz-pill.have{border:2px solid var(--accent);background:var(--accent-soft)}
.wz-pill.new{border-style:dashed}
.wz-pill.done::after{content:'✓';color:var(--ok);font-weight:800}
.wz-pill.other{color:var(--muted);border-style:dashed}
.wz-pill.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.wz-pill.on small{color:inherit;opacity:.85}
.wz-pill.chk input{margin:0;accent-color:var(--accent)}
.wz-pill.chk small{font-size:12px}
.wz-pill.chk:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.wz-pill.chk:has(input:disabled){opacity:.6;cursor:default}
.wz-seg{display:inline-flex;border:1px solid var(--line);border-radius:12px;overflow:hidden;width:max-content;max-width:100%}
.wz-seg label{display:flex;align-items:center;gap:6px;padding:8px 14px;cursor:pointer;font-weight:600;white-space:nowrap}
.wz-seg label+label{border-left:1px solid var(--line)}
.wz-seg input{accent-color:var(--accent);margin:0}
.wz-seg label:has(input:checked){background:var(--accent-soft);color:var(--accent)}
.wz-hint{margin:0}.wz-hint:empty{display:none}
.wz-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:space-between;padding:12px 14px;margin-top:6px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
.wz-sum{min-width:0;overflow-wrap:anywhere}
#wz-go:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:720px){.wz-bar{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));z-index:5;box-shadow:0 -4px 16px rgba(0,0,0,.08);background:var(--surface)}.wz-step{grid-template-columns:24px minmax(0,1fr);gap:8px}.wz-n{width:24px;height:24px;font-size:12px}#wz-subj{display:grid;grid-template-columns:1fr 1fr}.wz-bar .btn{width:100%}}
/* сетка «параллель × литеры» мастера нагрузки (26.10) */
.wz-grid{display:grid;gap:6px}
.wz-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;border-top:1px solid var(--line)}
.wz-row:first-child{border-top:0}
.wz-par{min-width:44px;justify-content:center;background:var(--surface-2);font-weight:800}
.wz-chips{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.wz-chips .wz-pill{min-width:52px;justify-content:center;flex-direction:column;gap:0;line-height:1.15}
.wz-pill small.busy{font-size:10.5px;font-weight:500;color:var(--muted);white-space:nowrap}
.wz-pill.on small.busy{color:inherit;opacity:.85}
.wz-pill.add{color:var(--accent)}
.wz-pill.done{background:var(--accent-soft);border:1px solid var(--accent);cursor:default}
.wz-pill.done:hover{border-color:var(--accent)}
.wz-pill.mini{min-height:0;min-width:0;padding:1px 8px;font-size:12px;display:inline-flex;vertical-align:middle}
.wz-opts{display:grid;gap:6px;margin:0 0 6px 54px}
.wz-opt{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 10px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}
.wz-opt>b{min-width:36px}
.wz-mini{display:inline-flex;flex-wrap:wrap;gap:4px}
.wz-mini .wz-pill{min-height:32px;padding:3px 10px;font-size:13px}
.wz-opt .wz-pill.x{margin-left:auto;min-height:32px;padding:3px 10px;color:var(--muted)}
.wz-warn{color:var(--warn);font-weight:600}
.wz-legend{line-height:1.9}
@media(max-width:520px){.wz-row{gap:6px}.wz-par{min-width:38px}.wz-chips .wz-pill{min-width:46px;padding:6px 10px}.wz-opts{margin-left:0}}
.wz-pill.need{border-color:var(--warn);background:var(--warn-soft)}
/* «Настройка»: администратор выбирает школу (26.10) */
.sch-pills{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}
.sch-pills a{flex:none;padding:7px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-weight:600;font-size:14px;white-space:nowrap}
.sch-pills a small{color:var(--muted);font-weight:500;margin-left:4px}
.sch-pills a.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.sch-pills a.on small{color:inherit;opacity:.8}
.sch-banner{margin:0 0 12px;padding:12px 16px;border-radius:12px;border:1px solid var(--accent);background:var(--accent-soft);font-size:14px;line-height:1.45}
.sch-saved{margin-bottom:12px}
.cc-head .tag.info{margin-left:6px}

/* чат ученика — колонка (сетка .chat ниже/выше — для страницы сообщений учителя) */
.student .chat{display:flex;flex-direction:column;height:auto;min-height:0}
/* «Выйти» — кнопка в форме (POST, защита от CSRF); выглядит как прежняя ссылка */
.logout-f{display:contents}
.logout-f button{background:none;border:0;padding:0;font:inherit;cursor:pointer;color:inherit}
.side .user .logout-f button{color:#94a3b8;margin-left:auto}
.shyn .side .user .logout-f button{color:color-mix(in srgb,var(--nav-ink) 75%,transparent)}
@media(max-width:1000px){.topbar .logout-f button{color:#cbd5e1;display:grid;place-items:center;width:40px;height:40px;margin:-8px -6px;border-radius:10px}}

/* химия */
:root{--chem:#7c3aed;--chem-soft:#f3edff;--chem-a:#7c3aed;--chem-b:#a855f7}
.subj.химия{background:var(--chem)}
.dot.химия{background:var(--chem)}
.cls.химия{background:linear-gradient(135deg,var(--chem-a),var(--chem-b));box-shadow:0 10px 24px -12px rgba(124,58,237,.6)}
.hero.химия::before{background:var(--chem)}
.lib-card.химия{border-left-color:var(--chem)}
.shyn .lib-card.химия::before{background:var(--chem)}
.shyn .hero.химия{border-top-color:var(--chem)}
.shyn .cls.химия{background:var(--surface);box-shadow:none}
.shyn .cls.химия::before{background:var(--chem)}
.shyn .cls.химия .bar span{background:var(--chem)}
.jr-card.химия{--subj:var(--chem)}
.myc .dot.химия{background:var(--chem)}
.pin-ed .pin-cp.copied{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}

/* Настройка: много классов — панель поиска/параллелей, заголовки параллелей, вид «кратко» */
.cc-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}
.cc-q{flex:0 1 240px;min-width:180px}
.cc-chips,.cc-view{display:flex;gap:6px;flex-wrap:wrap}
.cc-chips button,.cc-view button{padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font:inherit;font-weight:700;font-size:13.5px;color:var(--ink);cursor:pointer}
.cc-chips button small{opacity:.6;font-weight:600}
.cc-chips button.on,.cc-view button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff)}
.cc-chips button.warn{border-color:var(--warn)}
.cc-view{margin-left:auto}
.cc-grade{grid-column:1/-1;margin:10px 0 -4px;font-size:15px;color:var(--muted)}
.cc-open{display:none}
.cls-cards.compact .cc-grade{display:none!important}   /* кратко — плотной сеткой; параллель — кнопками сверху */
.cls-cards.compact{grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:10px}
.cls-cards.compact .cls-card:not(.open){padding:10px 12px}
.cls-cards.compact .cls-card:not(.open) .cc-students,.cls-cards.compact .cls-card:not(.open) .seg,.cls-cards.compact .cls-card:not(.open) .ttl form,.cls-cards.compact .cls-card:not(.open) details.days .d-edit,.cls-cards.compact .cls-card:not(.open) details.days>summary .muted{display:none}
.cls-cards.compact .cls-card:not(.open)>p.muted{display:none}
.cls-cards.compact .cls-card:not(.open) .teaching{margin:6px 0 0;padding:6px 10px}
.cls-cards.compact .cls-card:not(.open) details.days>summary{pointer-events:none}
.cls-cards.compact .cls-card:not(.open) details.days>summary::before{display:none}
.cls-cards.compact .cls-card:not(.open) details.days[open]>form{display:none}
.cls-cards.compact .cc-open{display:inline-grid;place-items:center;order:9;margin-left:auto;width:30px;height:30px;border-radius:999px;border:1px solid var(--line);background:var(--surface);cursor:pointer}
.cls-cards.compact .cc-open::before{content:'+';font-weight:800;font-size:16px;color:var(--ink-2)}
.cls-cards.compact .cls-card.open .cc-open::before{content:'\2013'}
.cls-cards.compact .cls-card.open{grid-column:1/-1}
.cls-cards.compact .cls-card[data-warn]:not(.open){border-color:var(--warn)}
/* кратко: у класса одна строка на предмет — название, дни и только то, что требует внимания */
.t-short{display:none}
.cls-cards.compact{grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr))}
.cls-cards.compact .cls-card:not(.open) .cc-head{flex-wrap:nowrap;align-items:center;margin-bottom:0}
.cls-cards.compact .cls-card:not(.open) .cc-head b{font-size:17px}
.cls-cards.compact .cls-card:not(.open) .cc-head .cc-meta{order:1;flex:1 1 0;font-size:12.5px}
.cls-cards.compact .cc-head .cc-open{width:26px;height:26px;flex:none}
.cls-cards.compact .cls-card:not(.open) .teaching{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:6px 0 0;padding:6px 0 0;background:none;border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none}
.cls-cards.compact .cls-card:not(.open) .teaching .ttl{flex:1 1 auto;min-width:0;margin:0;gap:6px;flex-wrap:nowrap}
.cls-cards.compact .cls-card:not(.open) .t-name{display:none}
.cls-cards.compact .cls-card:not(.open) .t-short{display:block;min-width:0;font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cls-cards.compact .cls-card:not(.open) details.days{margin:0}
.cls-cards.compact .cls-card:not(.open) details.days>summary{padding:0;gap:4px;row-gap:4px}
.cls-cards.compact .cls-card:not(.open) details.days .tag.ok{display:none}
.cls-cards.compact .cls-card:not(.open) .d-chip{padding:1px 8px;font-size:12px}
@media (max-width:720px){.cc-view{margin-left:0}.cc-q{flex:1 1 100%}}
/* карточка класса: название не переносится, «учеников · кл. рук.» — строкой ниже */
.cc-head{flex-wrap:wrap;row-gap:2px}
.cc-head b{white-space:nowrap}
.cc-head .cc-meta{order:3;flex:1 1 100%;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.cc-head .cc-open,.cls-cards.compact .cc-head .cc-open{order:2}

/* рефлексия учеников — сводка на странице урока */
.refl-sum{margin:0 0 12px;padding:10px 12px;border-radius:12px;background:var(--surface-2)}
.refl-bar{display:flex;gap:3px;margin-top:8px;border-radius:10px;overflow:hidden;font-weight:800;font-size:13.5px}
.refl-bar span{min-width:44px;padding:5px 8px;white-space:nowrap;font-variant-numeric:tabular-nums}
.refl-bar .l3{background:var(--ok-soft);color:var(--ok)}
.refl-bar .l2{background:var(--warn-soft);color:var(--warn)}
.refl-bar .l1{background:var(--danger-soft);color:var(--danger)}
.refl-notes{margin:8px 0 0;padding:0;list-style:none;display:grid;gap:4px;font-size:13.5px;line-height:1.45}
/* экран рефлексии на уроке: смайлики вместо кружков-радио обычного опроса */
.lp-refl .lp-opt{padding:12px 6px;border-width:2px}
.lp-refl .lp-opt::before{content:none}
.lp-refl .lp-opt.on{border-color:var(--accent);background:var(--accent);color:var(--accent-ink,#fff)}

/* НВТП */
:root{--nvtp:#4d7c0f;--nvtp-soft:#eef6e2;--nvtp-a:#4d7c0f;--nvtp-b:#65a30d}
.subj.нвтп{background:var(--nvtp)}
.dot.нвтп{background:var(--nvtp)}
.cls.нвтп{background:linear-gradient(135deg,var(--nvtp-a),var(--nvtp-b));box-shadow:0 10px 24px -12px rgba(77,124,15,.6)}
.hero.нвтп::before{background:var(--nvtp)}
.lib-card.нвтп{border-left-color:var(--nvtp)}
.shyn .lib-card.нвтп::before{background:var(--nvtp)}
.shyn .hero.нвтп{border-top-color:var(--nvtp)}
.shyn .cls.нвтп{background:var(--surface);box-shadow:none}
.shyn .cls.нвтп::before{background:var(--nvtp)}
.shyn .cls.нвтп .bar span{background:var(--nvtp)}
.jr-card.нвтп{--subj:var(--nvtp)}
.myc .dot.нвтп{background:var(--nvtp)}

/* ссылка «Предложить» внизу страницы урока (suggest.py) */
.sg-hint{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:18px 0 0;color:var(--muted);font-size:14px}
.sg-hint .i{width:18px;height:18px;color:var(--warn)}
.sg-hint a{font-weight:700}
.topbar .tb-idea{position:relative}
.topbar .tb-idea i{position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--warn)}

/* Русский язык и Русская литература */
:root{--rus:#b91c1c;--rus-soft:#fdeaea;--rus-a:#dc2626;--rus-b:#991b1b;--lit:#0f766e;--lit-soft:#e3f5f2;--lit-a:#14b8a6;--lit-b:#0f766e}
.subj.русский,.dot.русский,.myc .dot.русский{background:var(--rus)}
.cls.русский{background:linear-gradient(135deg,var(--rus-a),var(--rus-b));box-shadow:0 10px 24px -12px rgba(185,28,28,.6)}
.hero.русский::before{background:var(--rus)}
.lib-card.русский{border-left-color:var(--rus)}
.shyn .lib-card.русский::before{background:var(--rus)}
.shyn .hero.русский{border-top-color:var(--rus)}
.shyn .cls.русский{background:var(--surface);box-shadow:none}
.shyn .cls.русский::before{background:var(--rus)}
.shyn .cls.русский .bar span{background:var(--rus)}
.subj.литература,.dot.литература,.myc .dot.литература{background:var(--lit)}
.cls.литература{background:linear-gradient(135deg,var(--lit-a),var(--lit-b));box-shadow:0 10px 24px -12px rgba(15,118,110,.6)}
.hero.литература::before{background:var(--lit)}
.lib-card.литература{border-left-color:var(--lit)}
.shyn .lib-card.литература::before{background:var(--lit)}
.shyn .hero.литература{border-top-color:var(--lit)}
.shyn .cls.литература{background:var(--surface);box-shadow:none}
.shyn .cls.литература::before{background:var(--lit)}
.shyn .cls.литература .bar span{background:var(--lit)}
.jr-card.русский{--subj:var(--rus)}
.jr-card.литература{--subj:var(--lit)}
