/* ============================================================
   ПОЛИГОН YMLS
   Чертёжная бумага + ультрамарин (структура) + жжёная охра (сигнал).
   ============================================================ */

:root {
  color-scheme: light;
  --ground:#ECEFF3; --panel:#FFFFFF; --panel-2:#F5F7FA; --panel-3:#EDF1F5;
  --ink:#101720; --ink-2:#46525F; --ink-3:#68757F;
  --rule:#CFD8E1; --rule-2:#E3E9EF;
  --accent:#1F4FD8; --accent-ink:#16389A; --accent-soft:#E4EBFC;
  --signal:#A94E07; --signal-ink:#7E3A05; --signal-soft:#FAEDDD;
  --ok:#0A7355; --ok-soft:#DFF1EA; --bad:#A2211B; --bad-soft:#FAE6E4;
  --shadow:0 1px 0 rgba(16,23,32,.04), 0 2px 10px -6px rgba(16,23,32,.2);
  --grid:rgba(31,79,216,.055);
  --f-disp:'Bitter','Iowan Old Style',Georgia,serif;
  --f-body:'IBM Plex Sans','Segoe UI',system-ui,sans-serif;
  --f-mono:'IBM Plex Mono',ui-monospace,Consolas,monospace;
  --rail-w:238px; --bar-h:58px; --measure:70ch;
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) {
  color-scheme: dark;
  --ground:#0B1017; --panel:#121A23; --panel-2:#17202B; --panel-3:#1C2632;
  --ink:#DFE6EE; --ink-2:#9DAAB9; --ink-3:#7B8998;
  --rule:#26313E; --rule-2:#1B2530;
  --accent:#7FA2FF; --accent-ink:#A8C0FF; --accent-soft:#172441;
  --signal:#EA9B45; --signal-ink:#F4BC7E; --signal-soft:#2C2013;
  --ok:#49C69C; --ok-soft:#0E2A21; --bad:#F07C70; --bad-soft:#2C1715;
  --shadow:0 1px 0 rgba(0,0,0,.3), 0 2px 12px -6px rgba(0,0,0,.7);
  --grid:rgba(127,162,255,.055);
} }
:root[data-theme="dark"] {
  color-scheme: dark;
  --ground:#0B1017; --panel:#121A23; --panel-2:#17202B; --panel-3:#1C2632;
  --ink:#DFE6EE; --ink-2:#9DAAB9; --ink-3:#7B8998;
  --rule:#26313E; --rule-2:#1B2530;
  --accent:#7FA2FF; --accent-ink:#A8C0FF; --accent-soft:#172441;
  --signal:#EA9B45; --signal-ink:#F4BC7E; --signal-soft:#2C2013;
  --ok:#49C69C; --ok-soft:#0E2A21; --bad:#F07C70; --bad-soft:#2C1715;
  --shadow:0 1px 0 rgba(0,0,0,.3), 0 2px 12px -6px rgba(0,0,0,.7);
  --grid:rgba(127,162,255,.055);
}

*{box-sizing:border-box}
/* scroll-behavior НЕ ставим глобально: пока он smooth, браузер игнорирует
   behavior:'auto' в scrollTo, и программная прокрутка молча перестаёт работать,
   если анимация не может доиграть. Плавность включаем точечно из JS. */
main [id]{scroll-margin-top:var(--anchor-pad,118px)}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

body{
  margin:0; background:var(--ground); color:var(--ink);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:28px 28px,28px 28px;
  font-family:var(--f-body); font-size:16.5px; line-height:1.65; -webkit-font-smoothing:antialiased;
}
a{color:var(--accent);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent)}
a:hover{border-bottom-color:var(--accent)}
:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:1px}
h1,h2,h3,h4{font-family:var(--f-disp);font-weight:600;text-wrap:balance;margin:0;letter-spacing:-.012em}

/* ---------- планка ---------- */
.tbar{position:sticky;top:0;z-index:60;height:var(--bar-h);display:flex;align-items:center;gap:16px;padding:0 18px;
  background:color-mix(in srgb,var(--panel) 92%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
.brand{display:flex;align-items:baseline;gap:10px;flex-shrink:0;border:none}
.brand b{font-family:var(--f-disp);font-size:1.06rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.brand span{font-family:var(--f-mono);font-size:.66rem;color:var(--ink-3);letter-spacing:.1em;text-transform:uppercase}
.nav{display:flex;gap:2px;margin-left:auto;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{font:500 .8rem/1 var(--f-body);color:var(--ink-2);border:1px solid transparent;border-radius:2px;padding:8px 11px;white-space:nowrap}
.nav a:hover{color:var(--ink);background:var(--panel-2)}
.nav a[aria-current="page"]{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 25%,transparent)}
.countdown{display:flex;align-items:center;gap:9px;flex-shrink:0;padding:5px 11px;border-radius:2px;
  border:1px solid color-mix(in srgb,var(--signal) 34%,transparent);background:var(--signal-soft)}
.cd-lab{font:500 .62rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--signal-ink)}
.cd-val{font:600 .95rem/1 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--signal)}
.iconbtn{flex-shrink:0;width:34px;height:32px;display:grid;place-items:center;background:none;
  border:1px solid var(--rule);border-radius:2px;cursor:pointer;color:var(--ink-2);font-size:.95rem}
.iconbtn:hover{color:var(--ink);border-color:var(--ink-3)}
.lang-switch{display:flex;align-items:center;gap:0;flex-shrink:0;border:1px solid var(--rule);border-radius:2px;overflow:hidden}
.lang-switch button{font:600 .64rem/1 var(--f-mono);letter-spacing:.06em;padding:8px 7px;border:0;border-right:1px solid var(--rule);
  background:var(--panel-2);color:var(--ink-3);cursor:pointer}
.lang-switch button:last-child{border-right:0}
.lang-switch button:hover{color:var(--ink);background:var(--panel)}
.lang-switch button[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent)}

/* ---------- каркас ---------- */
.wrap{display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr);align-items:start}
.rail{position:sticky;top:var(--bar-h);align-self:start;height:calc(100dvh - var(--bar-h));overflow-y:auto;
  overscroll-behavior:contain;border-right:1px solid var(--rule);padding:14px 0 40px;
  background:color-mix(in srgb,var(--panel) 55%,transparent)}
.rail-head{padding:4px 16px 12px}
.rh-t{font:500 .62rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.rh-s{font-family:var(--f-disp);font-size:.95rem;font-weight:600;margin-top:3px}
.track{position:relative;padding-left:16px}
.track::before{content:"";position:absolute;left:30px;top:6px;bottom:6px;width:1px;background:var(--rule)}
.tick{position:relative;display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:center;width:100%;
  text-align:left;padding:7px 14px 7px 0;border:none;background:none;color:var(--ink-2);font-family:var(--f-body)}
.tick:hover{background:var(--panel-2)}
.tk-n{font:500 .72rem/1 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink-3);text-align:right;position:relative;z-index:1}
.tk-b{position:absolute;left:26px;width:9px;height:9px;background:var(--ground);border:1px solid var(--rule);border-radius:50%;z-index:2}
.tk-t{font-size:.81rem;line-height:1.32;padding-left:6px;display:block}
.tk-d{font:400 .66rem/1 var(--f-mono);color:var(--ink-3);letter-spacing:.04em;margin-top:2px;display:block;padding-left:6px}
.tick[data-state="done"] .tk-b{background:var(--ok);border-color:var(--ok)}
.tick[data-state="done"] .tk-t{color:var(--ink-3)}
.tick[data-state="today"]{background:var(--signal-soft)}
.tick[data-state="today"] .tk-b{background:var(--signal);border-color:var(--signal);box-shadow:0 0 0 3px color-mix(in srgb,var(--signal) 22%,transparent)}
.tick[data-state="today"] .tk-t{color:var(--ink);font-weight:600}
.tick[data-state="today"] .tk-n{color:var(--signal);font-weight:600}
.tick[aria-current="true"]{box-shadow:inset 3px 0 0 var(--accent)}
.tick[aria-current="true"] .tk-t{color:var(--ink);font-weight:600}
.seg{font:500 .6rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);padding:16px 0 7px 44px}
.main{padding:30px 32px 140px;min-width:0}
.col{max-width:var(--measure);margin:0 auto}
.col.wide{max-width:98ch}

/* ---------- листы ---------- */
.sheet{position:relative;background:var(--panel);border:1px solid var(--rule);border-radius:2px;
  padding:26px 26px 24px;margin:34px 0;box-shadow:var(--shadow)}
.sheet>.tag{position:absolute;top:-1px;left:20px;transform:translateY(-50%);background:var(--panel);padding:0 9px;
  font:500 .62rem/1 var(--f-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--ink-3)}
.sheet.accent{border-color:color-mix(in srgb,var(--accent) 40%,var(--rule))}
.sheet.accent>.tag{color:var(--accent)}
.sheet.signal{border-color:color-mix(in srgb,var(--signal) 45%,var(--rule));background:color-mix(in srgb,var(--signal-soft) 45%,var(--panel))}
.sheet.signal>.tag{color:var(--signal-ink);background:color-mix(in srgb,var(--signal-soft) 45%,var(--panel))}
.sheet>:first-child:not(.tag){margin-top:0}
.sheet>:last-child{margin-bottom:0}

/* ---------- шапка дня ---------- */
.dayhead{margin:8px 0 26px}
.dh-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.dh-num{font:600 .66rem/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);
  background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 26%,transparent);padding:5px 9px;border-radius:2px}
.dh-date{font:400 .74rem/1 var(--f-mono);color:var(--ink-3);letter-spacing:.05em}
.dayhead h1{font-size:clamp(1.7rem,3.6vw,2.35rem);line-height:1.12;font-weight:700}
.dh-sub{color:var(--ink-2);font-size:1.02rem;margin-top:.5em}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{font:500 .68rem/1 var(--f-mono);letter-spacing:.05em;padding:4px 8px;border-radius:2px;
  border:1px solid var(--rule-2);background:var(--panel-2);color:var(--ink-2);white-space:nowrap}
.chip.t-prob{border-color:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent);background:var(--accent-soft)}
.chip.t-alg{border-color:color-mix(in srgb,var(--ok) 34%,transparent);color:var(--ok);background:var(--ok-soft)}
.chip.t-cal,.chip.t-lin{border-color:color-mix(in srgb,var(--signal) 34%,transparent);color:var(--signal-ink);background:var(--signal-soft)}

/* ---------- текст урока ---------- */
.lesson{font-size:1.03rem}
.lesson p{margin:1em 0}
.lesson h2{font-size:1.5rem;margin:2.2em 0 .5em;padding-top:.6em;border-top:1px solid var(--rule-2)}
.lesson h2:first-child{border-top:none;padding-top:0;margin-top:0}
.lesson h3{font-size:1.16rem;margin:1.8em 0 .45em}
.lesson h4{font-size:1rem;font-family:var(--f-body);font-weight:600;margin:1.4em 0 .35em;color:var(--ink-2)}
.lesson>:first-child{margin-top:0}
.lesson>:last-child{margin-bottom:0}

.lst{margin:.85em 0;padding-left:0;list-style:none}
.lst li{position:relative;padding-left:1.5em;margin:.45em 0}
.lst li::before{content:"—";position:absolute;left:0;color:var(--ink-3)}
.lst.num{counter-reset:n}
.lst.num li::before{counter-increment:n;content:counter(n)".";font:500 .82rem/1.75 var(--f-mono);color:var(--accent)}

.note{border:1px solid var(--rule);border-left:3px solid var(--ink-3);background:var(--panel-2);
  padding:14px 17px;margin:20px 0;border-radius:0 2px 2px 0;font-size:.96rem}
.note-t{display:block;font:600 .68rem/1 var(--f-mono);letter-spacing:.13em;text-transform:uppercase;margin-bottom:9px;color:var(--ink-3)}
/* формула и код внутри заголовка выноски живут по своим правилам: верхний
   регистр превратил бы x в X, а разрядка и рамка разорвали бы строку */
.note-t .mathi,.note-t .mathd,.note-t .katex,.note-t code.inl{text-transform:none;letter-spacing:0}
.note-t .mathi,.note-t .mathd{font-size:1.18em;line-height:1}
.note-t code.inl{background:none;border:none;padding:0;font-size:1.05em}
.note>:last-child{margin-bottom:0}
.note p:first-of-type{margin-top:0}
.note.warn{border-left-color:var(--signal);background:var(--signal-soft)}
.note.warn .note-t{color:var(--signal-ink)}
.note.key{border-left-color:var(--accent);background:var(--accent-soft)}
.note.key .note-t{color:var(--accent-ink)}
.note.good{border-left-color:var(--ok);background:var(--ok-soft)}
.note.good .note-t{color:var(--ok)}
.note.idea{border-left-color:var(--accent);background:var(--panel-2)}
.note.idea .note-t{color:var(--accent)}
.note.exam{border-left-color:var(--signal);background:var(--panel-2)}
.note.exam .note-t{color:var(--signal-ink)}
.note.step{border-left-color:var(--rule);background:var(--panel)}

pre.code{font:400 .84rem/1.6 var(--f-mono);background:var(--panel-3);border:1px solid var(--rule-2);
  border-left:3px solid var(--accent);padding:14px 16px;overflow-x:auto;margin:16px 0;border-radius:0 2px 2px 0;white-space:pre;tab-size:4}
code.inl{font:400 .87em/1 var(--f-mono);background:var(--panel-3);border:1px solid var(--rule-2);padding:.1em .35em;border-radius:2px}
.tw{overflow-x:auto;margin:20px 0;border:1px solid var(--rule);border-radius:2px}
table{border-collapse:collapse;width:100%;font-size:.9rem}
th,td{padding:10px 13px;text-align:left;border-bottom:1px solid var(--rule-2);vertical-align:top}
th{font:500 .68rem/1.3 var(--f-mono);letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);background:var(--panel-2);white-space:nowrap}
tbody tr:last-child td{border-bottom:none}
td.num{font-variant-numeric:tabular-nums}
.hr{height:1px;background:var(--rule);border:none;margin:34px 0}

/* ---------- математика ---------- */
.katex{font-size:1.05em}
.katex-display{margin:1.1em 0;overflow-x:auto;overflow-y:hidden;padding:4px 0}
.katex-display>.katex{white-space:nowrap}
.mathd{display:block;margin:1.1em 0}
.mathi .katex{font-size:1.03em}

/* ---------- расписание ---------- */
.slots{display:grid;gap:1px;background:var(--rule-2);border:1px solid var(--rule);border-radius:2px;overflow:hidden;margin:22px 0}
.slot{display:grid;grid-template-columns:82px 1fr auto;gap:14px;align-items:start;background:var(--panel);padding:13px 16px}
.s-t{font:500 .74rem/1.5 var(--f-mono);font-variant-numeric:tabular-nums;color:var(--signal);white-space:nowrap}
.s-n{font-weight:600;font-size:.93rem}
.s-d{font-size:.86rem;color:var(--ink-2);margin-top:2px}
.tickbox{appearance:none;width:19px;height:19px;flex-shrink:0;border:1.4px solid var(--rule);border-radius:2px;
  background:var(--panel-2);cursor:pointer;display:grid;place-items:center;margin:0}
.tickbox:checked{background:var(--ok);border-color:var(--ok)}
.tickbox:checked::after{content:"✓";color:#fff;font-size:.76rem;font-weight:700;line-height:1}
:root[data-theme="dark"] .tickbox:checked::after{color:#06130E}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .tickbox:checked::after{color:#06130E}}
@media (pointer:coarse){.tickbox{width:26px;height:26px}.tickbox:checked::after{font-size:1rem}}

/* ---------- мост ---------- */
.bridge{border-left:3px solid var(--accent);background:var(--accent-soft);padding:16px 19px;margin:24px 0;border-radius:0 2px 2px 0}
.b-l{font:500 .62rem/1 var(--f-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:8px}
.bridge p{margin:.5em 0;font-size:.95rem}
.bridge>:last-child{margin-bottom:0}

/* ---------- ступени задач ---------- */
.tier{margin:44px 0 0}
.tier-h{display:flex;align-items:baseline;gap:14px;margin-bottom:6px}
.tier-h h2{font-size:1.3rem;font-weight:700}
.tier-h .sh-r{flex:1;height:1px;background:var(--rule)}
.tier-n{font:400 .88rem/1.5 var(--f-body);color:var(--ink-3);margin:0 0 16px}
.tier-badge{font:600 .6rem/1 var(--f-mono);letter-spacing:.13em;text-transform:uppercase;padding:4px 7px;border-radius:2px}
.tb-warm{color:var(--ok);background:var(--ok-soft);border:1px solid color-mix(in srgb,var(--ok) 30%,transparent)}
.tb-base{color:var(--accent);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent)}
.tb-ymls{color:var(--signal-ink);background:var(--signal-soft);border:1px solid color-mix(in srgb,var(--signal) 34%,transparent)}
.tb-shad{color:var(--bad);background:var(--bad-soft);border:1px solid color-mix(in srgb,var(--bad) 30%,transparent)}

/* ---------- подшапка: разделы дня ---------- */
.daynav{
  position:sticky;top:var(--bar-h);z-index:45;display:flex;gap:2px;
  padding:7px 14px;margin:-30px -32px 26px;overflow-x:auto;scrollbar-width:none;
  background:color-mix(in srgb,var(--panel) 94%,transparent);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--rule)
}
.daynav::-webkit-scrollbar{display:none}
.daynav a{
  font:500 .76rem/1 var(--f-body);color:var(--ink-3);white-space:nowrap;
  padding:7px 10px;border-radius:2px;border:1px solid transparent;border-bottom:none
}
.daynav a:hover{color:var(--ink);background:var(--panel-2)}
.daynav a[aria-current]{color:var(--accent);background:var(--accent-soft);
  border-color:color-mix(in srgb,var(--accent) 24%,transparent)}
.daynav-feet{margin-top:48px;justify-content:space-between;gap:12px}
.daynav-feet .btn{max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- задача ---------- */
.prob{border:1px solid var(--rule);border-radius:2px;background:var(--panel);margin:16px 0;overflow:hidden}
.prob-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 15px;background:var(--panel-2);border-bottom:1px solid var(--rule-2)}
details.prob>summary.prob-h{cursor:pointer;list-style:none}
details.prob>summary.prob-h::-webkit-details-marker{display:none}
details.prob[open]>summary.prob-h .prob-fold::after{content:"свернуть"}
.prob.done{border-color:color-mix(in srgb,var(--ok) 35%,var(--rule))}
.prob.done>.prob-h{background:var(--ok-soft)}
.prob-ok{color:var(--ok);font-weight:700;font-size:.95rem;line-height:1}
.prob-fold{font:500 .68rem/1 var(--f-mono);letter-spacing:.06em;color:var(--ok);
  border:1px solid color-mix(in srgb,var(--ok) 28%,transparent);border-radius:2px;padding:4px 7px}
.prob-fold::after{content:"развернуть"}
.prob-id{font:600 .7rem/1 var(--f-mono);letter-spacing:.06em;color:var(--ink-3)}
.prob-src{font:400 .68rem/1 var(--f-mono);color:var(--ink-3)}
.grow{flex:1}
.diff{display:inline-flex;gap:2px;align-items:center}
.diff i{width:12px;height:4px;background:var(--rule);border-radius:1px;display:block}
.diff[data-d="1"] i:nth-child(1),.diff[data-d="2"] i:nth-child(-n+2),.diff[data-d="3"] i{background:var(--signal)}
.prob-b{padding:17px}
.prob-st{font-size:.99rem}
.prob-st>:first-child{margin-top:0}
.prob-st>:last-child{margin-bottom:0}
.bi-block{display:grid;gap:13px}
.bi-copy{position:relative;padding-left:34px;min-width:0}
.bi-copy.bi-en{display:none}
:root[data-lang="en"] .bi-copy[lang="ru"]{display:none}
:root[data-lang="en"] .bi-copy.bi-en{display:block}
.lang-inline{display:inline}
.lang-inline[lang="en"]{display:none}
:root[data-lang="en"] .lang-inline[lang="ru"]{display:none}
:root[data-lang="en"] .lang-inline[lang="en"]{display:inline}
.chip.lang-inline{display:inline-flex}
.bi-copy+.bi-copy{padding-top:13px;border-top:1px dashed var(--rule)}
.lang-badge{position:absolute;left:0;top:.42em;font:600 .58rem/1 var(--f-mono);letter-spacing:.08em;
  color:var(--ink-3);background:var(--panel-2);border:1px solid var(--rule-2);border-radius:2px;padding:3px 5px}
.bi-copy+.bi-copy .lang-badge{top:calc(13px + .42em)}
.bi-en{color:var(--ink);font-size:1.01em}
.bi-copy>:first-child:not(.lang-badge){margin-top:0}
.bi-copy>:last-child{margin-bottom:0}
.disc-b .bi-copy{padding-left:34px}
@media (max-width:520px){.bi-copy,.disc-b .bi-copy{padding-left:30px}}

.answer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0 4px}
.answer label{font:500 .68rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.answer input{font:500 1rem/1 var(--f-mono);font-variant-numeric:tabular-nums;width:13ch;padding:9px 11px;
  color:var(--ink);background:var(--panel-2);border:1.4px solid var(--rule);border-radius:2px}
.answer input[data-v="ok"]{border-color:var(--ok);background:var(--ok-soft);color:var(--ok)}
.answer input[data-v="bad"]{border-color:var(--bad);background:var(--bad-soft);color:var(--bad)}
.verdict{font:500 .85rem/1.4 var(--f-body)}
.verdict[data-v="ok"]{color:var(--ok)}
.verdict[data-v="bad"]{color:var(--bad)}

.btn{font:500 .84rem/1 var(--f-body);padding:9px 14px;cursor:pointer;background:var(--panel-2);color:var(--ink);
  border:1px solid var(--rule);border-radius:2px}
.btn:hover{border-color:var(--ink-3)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.sig{background:var(--signal);border-color:var(--signal);color:#fff}
:root[data-theme="dark"] .btn.pri{color:#071021}:root[data-theme="dark"] .btn.sig{color:#1B1005}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn.pri{color:#071021}
  :root:not([data-theme="light"]) .btn.sig{color:#1B1005}}
.btn.pri:hover,.btn.sig:hover{filter:brightness(1.08)}
.btn.ghost{background:none}
.btn.sm{font-size:.76rem;padding:6px 10px}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}

details.disc{border-top:1px solid var(--rule-2);margin-top:15px;padding-top:13px}
details.disc>summary{cursor:pointer;list-style:none;font:500 .78rem/1 var(--f-mono);letter-spacing:.07em;
  text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:7px}
details.disc>summary::-webkit-details-marker{display:none}
details.disc>summary::before{content:"▸";font-size:.8em;transition:transform .15s}
details.disc[open]>summary::before{transform:rotate(90deg)}
details.disc .disc-b{padding-top:13px;font-size:.96rem;color:var(--ink-2)}
details.disc .disc-b>:first-child{margin-top:0}
details.disc.hint>summary{color:var(--signal-ink)}

.calib{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:13px;padding-top:13px;border-top:1px dashed var(--rule)}
.c-l{font:500 .68rem/1 var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.c-b{display:flex;gap:3px}
.c-b button{width:30px;height:26px;font:500 .78rem/1 var(--f-mono);background:var(--panel-2);
  border:1px solid var(--rule);border-radius:2px;color:var(--ink-2);cursor:pointer}
.c-b button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
:root[data-theme="dark"] .c-b button[aria-pressed="true"]{color:#071021}

/* ---------- сводная таблица плана ---------- */
table.plan td{vertical-align:middle}
table.plan tr.grp td{font:500 .62rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);background:var(--panel-2);padding:12px 13px 8px}
table.plan tr[data-state="today"]{background:var(--signal-soft)}
table.plan tr[data-state="future"] td:first-child,
table.plan tr[data-state="future"] .small{color:var(--ink-3)}
table.plan tbody tr:not(.grp):hover{background:var(--panel-2)}

/* ---------- статистика ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(124px,1fr));gap:1px;background:var(--rule-2);
  border:1px solid var(--rule);border-radius:2px;overflow:hidden;margin:22px 0}
.stat{background:var(--panel);padding:14px 15px}
.st-v{font:600 1.5rem/1.1 var(--f-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.st-l{font:500 .62rem/1.3 var(--f-mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-top:5px}
.stat.ok .st-v{color:var(--ok)}.stat.sig .st-v{color:var(--signal)}.stat.acc .st-v{color:var(--accent)}
.bar{height:5px;background:var(--rule-2);border-radius:2px;overflow:hidden}
.bar>i{display:block;height:100%;background:var(--accent);border-radius:2px;transition:width .3s}

/* ---------- карточки SRS ---------- */
.flash{border:1px solid var(--rule);border-radius:2px;background:var(--panel);box-shadow:var(--shadow)}
.flash-h{display:flex;align-items:center;gap:10px;padding:10px 15px;border-bottom:1px solid var(--rule-2);background:var(--panel-2)}
.flash-f{padding:38px 28px;min-height:150px;display:grid;place-items:center;text-align:center;font-size:1.14rem}
.flash-bk{padding:24px 28px 28px;border-top:1px dashed var(--rule);background:var(--panel-2);font-size:1rem}
.grade{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:20px}
.grade button{padding:11px 6px;border-radius:2px;border:1px solid var(--rule);background:var(--panel);
  cursor:pointer;font:500 .8rem/1.25 var(--f-body);color:var(--ink)}
.grade button small{display:block;font:400 .64rem/1.3 var(--f-mono);color:var(--ink-3);margin-top:3px}
.grade button:hover{border-color:var(--ink-3)}
.grade button.g0:hover{border-color:var(--bad);color:var(--bad)}
.grade button.g3:hover{border-color:var(--ok);color:var(--ok)}

/* ---------- мок ---------- */
.mockbar{position:sticky;top:var(--bar-h);z-index:40;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  background:var(--panel);border:1px solid var(--rule);border-radius:2px;padding:12px 16px;margin-bottom:20px;box-shadow:var(--shadow)}
.bigtime{font:600 1.85rem/1 var(--f-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.bigtime[data-low="1"]{color:var(--signal)}.bigtime[data-low="2"]{color:var(--bad)}
.mb-l{font:500 .62rem/1 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.slotgrid{display:flex;gap:4px;flex-wrap:wrap}
.slotgrid b{width:27px;height:27px;display:grid;place-items:center;font:500 .76rem/1 var(--f-mono);
  border:1px solid var(--rule);border-radius:2px;background:var(--panel-2);color:var(--ink-3)}
.slotgrid b[data-f="1"]{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

/* ---------- журнал и формы ---------- */
.jrow{display:grid;grid-template-columns:96px 1fr;gap:14px;padding:14px 0;border-bottom:1px solid var(--rule-2)}
.j-d{font:400 .72rem/1.6 var(--f-mono);color:var(--ink-3)}
.j-tag{font:500 .64rem/1 var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--bad);
  background:var(--bad-soft);border:1px solid color-mix(in srgb,var(--bad) 25%,transparent);padding:3px 6px;border-radius:2px;display:inline-block;margin-bottom:6px}
.fld{display:grid;gap:6px;margin:13px 0}
.fld label{font:500 .66rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.fld input,.fld select,.fld textarea{font:400 .93rem/1.5 var(--f-body);color:var(--ink);background:var(--panel-2);
  border:1px solid var(--rule);border-radius:2px;padding:9px 11px;width:100%;font-family:var(--f-body)}
.fld textarea{min-height:80px;resize:vertical}

.sec-h{display:flex;align-items:baseline;gap:14px;margin:46px 0 4px}
.sec-h h2{font-size:1.42rem;font-weight:700}
.sec-h .sh-r{flex:1;height:1px;background:var(--rule)}
.eyebrow{font:500 .62rem/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin-bottom:10px}
.muted{color:var(--ink-3)}
.small{font-size:.87rem}
.mono{font-family:var(--f-mono)}
.center{text-align:center}
.spacer{flex:1}
.mapgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:12px;margin:22px 0}
.node{border:1px solid var(--rule);border-radius:2px;background:var(--panel);padding:14px 15px}
.node h4{font-size:.96rem;margin-bottom:6px}
.n-d{font:400 .66rem/1 var(--f-mono);color:var(--ink-3);letter-spacing:.05em;margin-bottom:8px}
.n-l{font-size:.85rem;color:var(--ink-2)}
.reflist{display:grid;gap:10px;margin:16px 0}
.ref{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:12px 14px;
  border:1px solid var(--rule-2);border-radius:2px;background:var(--panel-2)}
.ref .rk{font:600 .58rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;padding:5px 7px;border-radius:2px;white-space:nowrap;
  color:var(--ink-3);background:var(--panel);border:1px solid var(--rule-2)}
.ref .rk[data-k="видео"]{color:var(--bad);background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 22%,transparent)}
.ref .rk[data-k="интерактив"]{color:var(--ok);background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 26%,transparent)}
.ref .rk[data-k="текст"]{color:var(--accent);background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 24%,transparent)}
.ref .rn{font-size:.86rem;color:var(--ink-2);margin-top:3px}
.ref .rl{font:400 .64rem/1 var(--f-mono);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase}

/* ---------- адаптив ---------- */
@media (max-width:1000px){
  .wrap{grid-template-columns:1fr}
  .rail{position:static;height:auto;border-right:none;border-bottom:1px solid var(--rule);padding:12px 0;overflow-x:auto;overflow-y:hidden}
  .rail-head{display:none}
  .track{display:flex;padding-left:12px}
  .track::before{left:12px;right:12px;top:50%;bottom:auto;width:auto;height:1px}
  .seg{display:none}
  .tick{grid-template-columns:1fr;width:auto;min-width:124px;padding:8px 11px;gap:3px}
  .tk-b{display:none}
  .tk-t,.tk-d{padding-left:0}.tk-t{font-size:.77rem}
  .main{padding:22px 16px 110px}
  .daynav{margin:-22px -16px 20px;padding:6px 10px}
  .daynav-feet .btn{max-width:100%}
  .tbar{gap:10px;padding:0 12px}
  .brand span{display:none}
  .slot{grid-template-columns:1fr auto}
  .s-t{grid-column:1/-1}
}
@media (max-width:560px){
  body{font-size:15.5px}
  .sheet{padding:20px 16px 18px}
  .countdown{padding:4px 8px;gap:6px}.cd-lab{display:none}
  .grade{grid-template-columns:repeat(2,1fr)}
  .dayhead h1{font-size:1.55rem}
  .jrow{grid-template-columns:1fr}
  .daynav a{font-size:.72rem;padding:7px 8px}
  .daynav-feet{flex-direction:column;align-items:stretch}
}
@media print{
  .tbar,.rail,.btnrow,.calib,.answer{display:none!important}
  body{background:#fff}
  .sheet,.prob{break-inside:avoid;box-shadow:none}
  details.disc>.disc-b{display:block!important}
}

/* ---------- куда идём: финальные задачи дня ---------- */
.finals{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:10px;margin:16px 0}
.final{display:grid;gap:7px;align-content:start;padding:13px 15px;border:1px solid var(--rule);
  border-left:3px solid var(--signal);border-radius:0 2px 2px 0;background:var(--panel);color:var(--ink);
  box-shadow:var(--shadow)}
.final:hover{border-color:var(--rule);border-left-color:var(--signal);background:var(--panel-2)}
.final.miss{border-left-color:var(--bad);background:var(--bad-soft)}
.f-h{display:flex;align-items:center;gap:8px}
.f-id{font:600 .7rem/1 var(--f-mono);letter-spacing:.06em;color:var(--ink-3)}
.f-s{font-size:.95rem;line-height:1.45;color:var(--ink)}
.f-go{font:500 .66rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--signal-ink)}
.final.miss .f-go{color:var(--bad)}

/* ---------- Python под задачей ---------- */
details.disc.code>summary{color:var(--accent-ink)}
.pyide [hidden]{display:none!important}
.pyide .pi-io-txt{margin:8px 0 2px;font-size:.92rem;color:var(--ink)}
.pi-l{display:block;font:500 .66rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);margin:14px 0 6px}
.pyide .pi-code,.pyide .pi-in,.pyide .pi-out,.pyide .pi-pre{width:100%;margin:0;padding:10px 12px;
  font:400 .86rem/1.55 var(--f-mono);color:var(--ink);background:var(--panel-2);border:1px solid var(--rule);
  border-radius:2px;tab-size:4}
.pyide .pi-code{min-height:15em;resize:vertical;white-space:pre;overflow:auto}
.pyide .pi-in{min-height:7em;max-height:18em;resize:vertical;white-space:pre;overflow:auto}
.pyide .pi-out{min-height:7em;max-height:24em;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
.pyide .pi-pre{max-height:12em;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
.pyide .pi-code:focus,.pyide .pi-in:focus{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:-1px}
.pi-out [data-k="err"]{color:var(--bad)}
.pi-out [data-k="sys"]{color:var(--ink-3)}
.pi-io{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
@media (max-width:720px){.pi-io{grid-template-columns:minmax(0,1fr)}}
.pi-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}
.pi-status{font-size:.74rem;line-height:1.4;color:var(--ink-3)}
.pi-status[data-s="ok"]{color:var(--ok)}
.pi-status[data-s="bad"]{color:var(--bad)}
.pi-status[data-s="run"],.pi-status[data-s="load"]{color:var(--signal-ink)}
.pi-rep{margin-top:12px;padding-top:12px;border-top:1px dashed var(--rule)}
.pi-chips{display:flex;flex-wrap:wrap;gap:4px}
.pi-chips i{font:600 .68rem/1 var(--f-mono);font-style:normal;min-width:24px;height:22px;padding:0 4px;
  display:grid;place-items:center;border-radius:2px;border:1px solid var(--rule);color:var(--ink-3)}
.pi-chips i[data-s="ok"]{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,var(--rule))}
.pi-chips i[data-s="wa"],.pi-chips i[data-s="re"],.pi-chips i[data-s="tl"]{background:var(--bad-soft);color:var(--bad);
  border-color:color-mix(in srgb,var(--bad) 40%,var(--rule))}
.pi-f{margin:10px 0 0;color:var(--ink)}

/* ---------- лестница микронавыков ---------- */
.ladder{list-style:none;margin:16px 0;padding:0;position:relative}
.ladder::before{content:"";position:absolute;left:15px;top:14px;bottom:14px;width:1px;background:var(--rule)}
.rung{display:grid;grid-template-columns:31px minmax(0,1fr) 42px;gap:14px;align-items:center;
  padding:12px 14px 12px 0;border-bottom:1px solid var(--rule-2)}
.rung:last-child{border-bottom:none}
.rg-n{position:relative;z-index:1;width:31px;height:31px;display:grid;place-items:center;
  font:600 .8rem/1 var(--f-mono);color:var(--accent);background:var(--accent-soft);
  border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);border-radius:2px}
.rg-b{display:grid;gap:4px;min-width:0}
.rg-t{font-family:var(--f-disp);font-size:1.02rem;font-weight:600;line-height:1.25}
.rg-d{font-size:.9rem;line-height:1.5;color:var(--ink-2)}
.rg-p{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px}
.rg-st{height:34px;display:flex;align-items:flex-end;justify-content:flex-end}
.rg-st i{display:block;width:100%;min-height:5px;background:var(--accent-soft);
  border:1px solid color-mix(in srgb,var(--accent) 26%,transparent);border-radius:1px}
.rung:last-child .rg-st i{background:var(--signal-soft);border-color:color-mix(in srgb,var(--signal) 34%,transparent)}
.pill{font:500 .66rem/1 var(--f-mono);letter-spacing:.05em;padding:4px 7px;border-radius:2px;
  border:1px solid var(--rule);background:var(--panel-2);color:var(--ink-2);white-space:nowrap}
a.pill:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.pill.miss{color:var(--bad);background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 28%,transparent)}

/* ---------- триггеры распознавания ---------- */
.trig table{font-size:.94rem}
.trig th:first-child,.trig td:first-child{width:42%}
.trig td{vertical-align:middle}
.tg-s{color:var(--ink);font-weight:500}
.tg-d{color:var(--ink-2)}
.trig tbody tr:hover{background:var(--panel-2)}

/* ---------- эталонная задача ---------- */
.sheet.model{border-left:3px solid var(--accent)}
.mo-t{font-size:1.18rem;margin-bottom:12px}

/* ---------- ступень и объём у задачи ---------- */
.step-badge{font:500 .6rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;
  padding:4px 7px;border-radius:2px;color:var(--ink-3);background:var(--panel-3);border:1px solid var(--rule-2)}
.req-badge{font:600 .6rem/1 var(--f-mono);letter-spacing:.11em;text-transform:uppercase;padding:4px 7px;border-radius:2px}
.rq-must{color:var(--signal-ink);background:var(--signal-soft);border:1px solid color-mix(in srgb,var(--signal) 38%,transparent)}
.rq-min{color:var(--ink-2);background:var(--panel-2);border:1px dashed var(--rule)}
.vols{margin-bottom:10px}

@media (max-width:560px){
  .finals{grid-template-columns:1fr}
  .rung{grid-template-columns:27px minmax(0,1fr);gap:11px}
  .rg-st{display:none}
  .ladder::before{left:13px}
  .rg-n{width:27px;height:27px;font-size:.74rem}
}

/* ============================================================
   ML-школа (классы с префиксом sc-). Остальное — классы Полигона.
   ============================================================ */
.sc-prob .prob-fold::after{content:"развернуть"}
.sc-prob[open] .prob-fold::after{content:"свернуть"}
:root[data-lang="en"] .sc-prob .prob-fold::after{content:"expand"}
:root[data-lang="en"] .sc-prob[open] .prob-fold::after{content:"collapse"}
a.chip.sc-skill{border-bottom:1px solid var(--rule-2);color:var(--accent);background:var(--accent-soft);
  border-color:color-mix(in srgb,var(--accent) 26%,transparent)}
a.chip.sc-skill:hover{border-color:var(--accent)}
.sc-fmt{margin:2px 0 0}
.sc-self{margin-top:13px;padding-top:13px;border-top:1px dashed var(--rule)}
.sc-self p{margin:0}
.sc-self .btn[aria-pressed="true"]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}
.sc-of{font-size:.6em;color:var(--ink-3)}
.sheet.sc-why{border-left:3px solid var(--ok)}
.sheet.sc-why>.tag{color:var(--ok)}
.sc-empty p{margin:0}
.pill.sc-done{color:var(--ok);background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 34%,transparent)}

/* лента лекций */
.sc-timeline{list-style:none;margin:16px 0;padding:0;display:grid;gap:12px}
.sc-lec{display:grid;grid-template-columns:132px minmax(0,1fr);gap:16px;padding:16px 18px;
  background:var(--panel);border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:0 2px 2px 0;box-shadow:var(--shadow)}
.sc-lec-d{font:500 .74rem/1.5 var(--f-mono);color:var(--ink-3);padding-top:2px}
.sc-lec-k{font:600 .62rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.sc-lec h3{font-size:1.12rem;margin-bottom:8px}
.sc-lec-m{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sc-lec .btnrow{margin-top:10px}
.sc-hwchip{display:inline-flex;gap:5px;align-items:center;font-size:.8rem}

/* очередь догонялки */
.sc-queue{list-style:none;margin:16px 0;padding:0;display:grid;gap:10px}
.sc-q{display:grid;grid-template-columns:31px minmax(0,1fr);gap:14px;padding:13px 15px;background:var(--panel);
  border:1px solid var(--rule);border-radius:2px}
.sc-q-h{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:4px}
.sc-q .btnrow{margin-top:8px}

/* статусы ДЗ */
.chip.sc-hw-st[data-st="todo"],.chip.sc-hw-st[data-st="in-progress"]{color:var(--signal-ink);background:var(--signal-soft);
  border-color:color-mix(in srgb,var(--signal) 30%,transparent)}
.chip.sc-hw-st[data-st="submitted"],.chip.sc-hw-st[data-st="graded"]{color:var(--ok);background:var(--ok-soft);
  border-color:color-mix(in srgb,var(--ok) 30%,transparent)}
.chip.sc-overdue{color:var(--bad);background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 34%,transparent);font-weight:600}
table.sc-hw tr.sc-od td:first-child{box-shadow:inset 3px 0 0 var(--bad)}
.sheet.sc-hwbox{border-left:3px solid var(--signal)}

/* уровень навыка 0–5 */
.sc-lv{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.sc-lv-bar{display:inline-flex;gap:2px}
.sc-lv-bar i{width:9px;height:9px;border:1px solid var(--rule);background:var(--panel-2);border-radius:1px}
.sc-lv[data-lv="1"] .sc-lv-bar i:nth-child(-n+1),.sc-lv[data-lv="2"] .sc-lv-bar i:nth-child(-n+2){background:var(--signal);border-color:var(--signal)}
.sc-lv[data-lv="3"] .sc-lv-bar i:nth-child(-n+3),.sc-lv[data-lv="4"] .sc-lv-bar i:nth-child(-n+4),
.sc-lv[data-lv="5"] .sc-lv-bar i{background:var(--ok);border-color:var(--ok)}
.sc-lv[data-lv="?"] .sc-lv-bar i{border-style:dashed}
.sc-lv-n{font:600 .74rem/1 var(--f-mono);color:var(--ink-2)}
.sc-lv-t{font-size:.8rem;color:var(--ink-2)}
.sc-legend{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
table.sc-ladder td{vertical-align:middle}
table.sc-ladder tr:target{background:var(--signal-soft)}
table.sc-ladder .pill{margin-right:3px}
table.sc-sum td.sc-c0{color:var(--ink-3)}
table.sc-emph td:first-child{width:90px;white-space:nowrap;color:var(--signal-ink)}

@media (max-width:560px){
  .sc-lec{grid-template-columns:1fr;gap:6px}
  .sc-q{grid-template-columns:1fr}
  .sc-q .rg-n{display:none}
}
