/* Космос·Право — консоль v3 (15.09.2026; правки #65 21.09.2026). Заметки дизайна:
   палитра — тёплые чернила (фиолетовый подтон) и бумага; два температурных акцента со смыслом: золото = дословные совпадения, ИЗ,
   действия; фосфор (мятно-голубой) = семантические совпадения (эмбеддер), онтология; коралл = якорная база (практика); лиловый = выходы шагов;
   кармин = конфликт / нет / не подтверждено; мох = принято / подтверждено.
   Типографика (#65): Old Standard TT только для поля запроса, заголовков актов, текста запроса и текста заключения; всё остальное — Golos Text
   в двух начертаниях (400/600) и четырёх размерах (15 заголовок модуля, 13.5 текст, 12 второстепенное, 11 кикер); JetBrains Mono — числа и идентификаторы.
   Каждый шаг — дашборд из модулей одной сетки; каждый модуль раскрывается в модальное окно (описание · содержание · телеметрия · код). */
:root{
  --ink-0:#100f14;--ink-1:#17161d;--ink-2:#201f28;--ink-3:#2a2833;
  --rule:#2b2934;--rule-2:#3a3747;
  --paper:#ece6da;--paper-2:#aaa39a;--paper-3:#716c78;
  --gold:#d9ad4f;--gold-2:#f3cf7a;--gold-dim:rgba(217,173,79,.16);
  --phos:#79dcd0;--phos-2:#aef2ea;--phos-dim:rgba(121,220,208,.14);
  --coral:#e39a6b;--lilac:#a99ee6;--crimson:#cf5a4e;--crimson-2:#f0a59c;--moss:#8fbf7a;--moss-2:#bfe3b0;--sys:#5b5766;
  --disp:"Old Standard TT",Georgia,"Times New Roman",serif;
  --sans:"Golos Text",-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --fs-title:15px;--fs-body:13.5px;--fs-small:12px;--fs-kicker:11px;--fs-big:17px;
  --rail:296px;--spine:84px;--gap:14px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{background:var(--ink-0)}
body{margin:0;background:var(--ink-0);color:var(--paper);font:var(--fs-body)/1.5 var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh}
a{color:inherit}
::selection{background:var(--gold-dim);color:var(--gold-2)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
button:focus-visible,[tabindex]:focus-visible,.hero-field:focus-visible{outline:1.5px solid var(--gold);outline-offset:3px}
b,strong{font-weight:600}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.faint{color:var(--paper-3)}
.sec{color:var(--paper-2)}
.small{font-size:var(--fs-small)}
.k{font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-3)}
.k.gold{color:var(--gold)}
.big{font-size:var(--fs-big);font-weight:600;line-height:1.3;color:var(--paper)}
.big.crim{color:var(--crimson-2)}.big.moss{color:var(--moss-2)}.big.gold{color:var(--gold-2)}.big.phos{color:var(--phos-2)}
mark{background:none;color:var(--gold-2);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:3px;text-decoration-thickness:1px}
mark.cat{color:var(--phos-2);text-decoration-color:var(--phos)}
p{margin:0 0 .7em}p:last-child{margin-bottom:0}

/* ---------- верхняя строка ---------- */
#top{position:sticky;top:0;z-index:20;height:46px;display:flex;align-items:center;gap:14px;padding:0 22px;background:rgba(16,15,20,.86);backdrop-filter:blur(10px);border-bottom:1px solid var(--rule)}
#top .brand{font-family:var(--disp);font-size:15px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);white-space:nowrap}
#top .brand i{font-style:normal;color:var(--paper-3);margin:0 6px}
.chip{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border:1px solid var(--rule-2);border-radius:3px;font-size:var(--fs-kicker);letter-spacing:.03em;color:var(--paper-2);white-space:nowrap;vertical-align:middle}
.chip b{color:var(--paper);font-weight:600}
.chip.gold{border-color:rgba(217,173,79,.45);color:var(--gold-2)}
.chip.phos{border-color:rgba(121,220,208,.45);color:var(--phos-2)}
.chip.crim{border-color:rgba(207,90,78,.5);color:var(--crimson-2)}
.chip.moss{border-color:rgba(143,191,122,.5);color:var(--moss-2)}
.chip.lilac{border-color:rgba(169,158,230,.5);color:#cbc3f3}
.chip.coral{border-color:rgba(227,154,107,.5);color:#f2c3a3}
#ticks{display:flex;gap:4px;margin-left:auto;align-items:center}
#ticks span{width:16px;height:16px;border:1px solid var(--rule-2);border-radius:2px;font:10px/14px var(--mono);text-align:center;color:var(--paper-3);transition:all .35s}
#ticks span.on{border-color:var(--gold);color:var(--gold-2);background:var(--gold-dim)}
#ticks span.next{border-color:var(--gold);border-style:dashed}
#clock{font-family:var(--mono);font-size:var(--fs-small);color:var(--paper-3);margin-left:10px}

/* ---------- герой: одно поле ---------- */
#hero{position:relative;padding:min(14vh,150px) clamp(20px,6vw,110px) 28px;transition:padding .6s cubic-bezier(.2,.7,.2,1)}
#hero .row{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:34px;align-items:end;max-width:1360px}
.hero-field{min-height:118px;width:100%;font-family:var(--disp);font-size:clamp(24px,3.1vw,38px);line-height:1.28;color:var(--paper);border:0;border-bottom:1px solid var(--rule-2);padding:10px 0 18px;outline:none;white-space:pre-wrap;word-break:break-word;transition:font-size .5s cubic-bezier(.2,.7,.2,1),min-height .5s,padding .5s;caret-color:var(--gold-2);position:relative}
.hero-field:empty::before{content:attr(data-placeholder);color:var(--paper-3);pointer-events:none}
.hero-field:focus{border-bottom-color:var(--gold)}
#hero.launched{padding-top:26px;padding-bottom:10px}
#hero.launched .hero-field{font-size:clamp(17px,1.5vw,21px);min-height:0;padding:4px 0 10px;color:var(--paper-2);border-bottom-color:var(--rule)}
#hero.launched .row{grid-template-columns:minmax(0,1fr) 64px;gap:22px}
#armed{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--fs-kicker);color:var(--paper-3);letter-spacing:.06em;text-transform:uppercase;margin-top:12px;min-height:22px}
#armed b{color:var(--gold-2);font-weight:600;text-transform:none;font-family:var(--mono);letter-spacing:0}
#armed .btn{text-transform:none;letter-spacing:.02em}
.btn{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 11px;border:1px solid var(--rule-2);border-radius:3px;font-size:var(--fs-small);color:var(--paper-2);white-space:nowrap}
.btn:hover{color:var(--paper);border-color:var(--paper-3)}
.btn.gold{border-color:rgba(217,173,79,.55);color:var(--gold-2)}
.btn.gold:hover{background:var(--gold-dim)}
.btn:disabled{opacity:.4;cursor:default}
#hero .under{margin-top:14px;max-width:1360px}
#hero.launched .under{display:none}
.strip-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px 18px;align-items:baseline;padding:10px 0;border-top:1px solid var(--rule)}
.strip-row .k{padding-top:4px}
.strip-row .k small{display:block;font-weight:400;letter-spacing:.02em;text-transform:none;color:var(--paper-3);margin-top:2px}
.strip-row .runs{display:flex;gap:4px 18px;flex-wrap:wrap}
.strip-row .runs button{color:var(--paper-2);padding:3px 0;border-bottom:1px solid transparent;font-size:var(--fs-body);text-align:left;max-width:100%}
.strip-row .runs button:hover{border-bottom-color:var(--gold);color:var(--paper)}
.strip-row .runs button .m{font:var(--fs-kicker) var(--mono);color:var(--paper-3);margin-left:8px;white-space:nowrap}
.strip-row .runs button.sel{color:var(--gold-2);border-bottom-color:var(--gold)}
.strip-row .runs .more{color:var(--paper-3);border:1px solid var(--rule-2);border-radius:3px;padding:2px 8px;font-size:var(--fs-small)}

/* мозг — рисуется по мере ввода */
#brain{width:150px;height:130px;opacity:0;transform:translateY(8px);transition:opacity .5s,transform .5s,width .5s,height .5s;cursor:pointer;position:relative;align-self:center}
#brain.armed{opacity:1;transform:none}
#brain svg{width:100%;height:100%;overflow:visible}
#brain path{fill:none;stroke:var(--gold);stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:var(--len);stroke-dashoffset:var(--len);opacity:.95}
#brain.armed path{animation:draw 1.1s cubic-bezier(.4,0,.2,1) forwards;animation-delay:calc(var(--i)*.09s)}
#brain circle{fill:var(--gold-2);opacity:0;transition:opacity .4s}
#brain.armed circle{animation:spark .6s ease-out forwards;animation-delay:calc(.55s + var(--j)*.05s)}
#brain .halo{position:absolute;inset:-18px;border-radius:50%;background:radial-gradient(closest-side,rgba(217,173,79,.16),transparent 70%);opacity:0;transition:opacity .5s;pointer-events:none}
#brain:hover .halo,#brain.thinking .halo{opacity:1}
#brain.thinking path{animation:pulse-line 1.6s ease-in-out infinite;animation-delay:calc(var(--i)*.12s)}
#brain.thinking circle{animation:blink 1.4s ease-in-out infinite;animation-delay:calc(var(--j)*.11s)}
#brain .lbl{position:absolute;left:50%;bottom:-24px;transform:translateX(-50%);font:var(--fs-kicker) var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--paper-3);white-space:nowrap;opacity:0;transition:opacity .4s}
#brain.armed .lbl{opacity:1}
#hero.launched #brain{width:64px;height:56px}
#hero.launched #brain .lbl{display:none}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes spark{0%{opacity:0;r:.6}60%{opacity:1;r:2.6}100%{opacity:.85;r:1.7}}
@keyframes pulse-line{0%,100%{opacity:.35}50%{opacity:1}}
@keyframes blink{0%,100%{opacity:.25}50%{opacity:1}}

/* ---------- полотно исследования ---------- */
#canvas{position:relative;padding:0 var(--rail) 140px 0;min-height:40px}
#rail{position:absolute;top:0;right:0;width:var(--rail);height:100%;pointer-events:none;overflow:visible}
#rail .lane{stroke-width:1.2;fill:none;opacity:.55;transition:opacity .2s,stroke-width .2s}
#rail .lane.ext{stroke-dasharray:2 4;opacity:.4}
#rail .tap{stroke-width:1;opacity:.7}
#rail .bead{stroke:var(--ink-0);stroke-width:1.5}
#rail .port{fill:var(--ink-0);stroke-width:1.2}
#rail .blabel{font:var(--fs-kicker) var(--sans);fill:var(--paper-2);letter-spacing:.02em;paint-order:stroke;stroke:var(--ink-0);stroke-width:3px}
#rail .blabel.ext{fill:var(--paper-3)}
#rail .flabel{font:9.5px var(--mono);fill:var(--paper-3);paint-order:stroke;stroke:var(--ink-0);stroke-width:3px}
#rail .grow{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:draw .7s ease-out forwards}
#rail .stub{stroke-dasharray:1 5;opacity:.35}
#rail g.hit{pointer-events:all;cursor:pointer}
#rail g.hit:hover .lane{opacity:1;stroke-width:2.2}
#rail g.hit:hover .blabel{fill:var(--paper)}
#rail g.hit .hitbox{fill:transparent;stroke:none}

.act{display:grid;grid-template-columns:var(--spine) minmax(0,1fr);border-top:1px solid var(--rule);animation:unfold .55s cubic-bezier(.2,.7,.2,1) both}
@keyframes unfold{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.spine{padding:26px 0 0 22px;display:flex;flex-direction:column;align-items:flex-start}
.spine .num{font-family:var(--disp);font-size:24px;color:var(--gold);letter-spacing:.02em;line-height:1.05;white-space:nowrap;text-align:center;min-width:26px}
.spine .num small{font-size:10px;color:var(--paper-3);letter-spacing:.12em;display:block;margin-top:6px;text-transform:uppercase;font-family:var(--sans)}
.spine .line{flex:1;width:1px;margin:12px 0 14px 12px;background:linear-gradient(var(--rule-2),transparent)}
.body{padding:22px 26px 26px 0;min-width:0}
.act-hd{display:flex;align-items:baseline;gap:18px;margin:0 0 16px;flex-wrap:wrap}
.act-hd h2{margin:0;font-family:var(--disp);font-weight:400;font-size:26px;line-height:1.15;color:var(--paper);letter-spacing:.005em}
.act-hd .meta{font:var(--fs-kicker) var(--mono);color:var(--paper-3);display:flex;gap:14px;flex-wrap:wrap}

/* блок шага: заголовок + ряды модулей */
.blk{margin-top:18px;animation:colin .55s cubic-bezier(.2,.7,.2,1) both}
.blk:first-child{margin-top:0}
@keyframes colin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.blk-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;padding:0 0 8px;border-bottom:1px solid var(--rule);margin-bottom:var(--gap);cursor:pointer}
.blk-hd:hover .open{border-color:var(--gold);color:var(--gold-2)}
.blk-hd .t{font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.blk-hd .meta{font:var(--fs-kicker) var(--mono);color:var(--paper-3)}
.blk-hd .st{margin-left:auto;font-size:var(--fs-kicker);color:var(--paper-3);text-align:right;display:flex;gap:10px;align-items:center}
.blk-hd .st .bad{color:var(--crimson-2)}
.open{width:22px;height:22px;border:1px solid var(--rule-2);border-radius:3px;color:var(--paper-3);font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center;flex:none;transition:border-color .2s,color .2s}
.open:hover{border-color:var(--gold);color:var(--gold-2)}
.dash{display:grid;gap:var(--gap);align-items:stretch}
.dash + .dash{margin-top:var(--gap)}
.dash.g1{grid-template-columns:minmax(0,1fr)}.dash.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.dash.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.dash.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.dash.g21{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.dash.g12{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.span2{grid-column:span 2}.full{grid-column:1/-1}

/* модуль */
.mod{background:var(--ink-1);border:1px solid var(--rule);border-radius:4px;padding:12px 16px 16px;display:flex;flex-direction:column;min-width:0;min-height:0}
.mod.acc-gold{border-left:2px solid var(--gold)}.mod.acc-phos{border-left:2px solid var(--phos)}.mod.acc-coral{border-left:2px solid var(--coral)}.mod.acc-lilac{border-left:2px solid var(--lilac)}.mod.acc-crim{border-left:2px solid var(--crimson)}
.mod.winner{border-color:rgba(217,173,79,.5);box-shadow:0 0 0 1px rgba(217,173,79,.1)}
.mod-hd{display:flex;align-items:baseline;gap:6px 10px;flex-wrap:wrap;padding-bottom:8px;margin-bottom:10px;border-bottom:1px solid var(--rule);cursor:pointer}
.mod-hd:hover .open{border-color:var(--gold);color:var(--gold-2)}
.mod-hd h3{margin:0;font:600 var(--fs-title)/1.3 var(--sans);color:var(--paper);min-width:0}
.mod-hd h3 .pill{margin-left:8px;vertical-align:2px}
.mod-hd .meta{margin-left:auto;font:var(--fs-kicker) var(--mono);color:var(--paper-3);white-space:nowrap;flex:none}
.mod-hd .open{align-self:center}
.mod-bd{flex:1;min-width:0;font-size:var(--fs-body);color:var(--paper-2)}
.mod-bd > .k{margin-top:10px;margin-bottom:3px}
.mod-bd > .k:first-child{margin-top:0}
.mod-bd .text{color:var(--paper)}
.q-text{font-family:var(--disp);font-size:20px;line-height:1.42;color:var(--paper)}
.meta-line{font:var(--fs-kicker) var(--mono);color:var(--paper-3);margin-top:10px;display:flex;gap:12px;flex-wrap:wrap}
.crumb{display:inline-flex;flex-wrap:wrap;gap:2px 0;font-size:var(--fs-small);color:var(--paper-2);line-height:1.5}
.crumb i{font-style:normal;color:var(--paper-3);margin:0 5px}
.crumb .last{color:var(--paper);font-weight:600}
.crumb.gold .last{color:var(--gold-2)}.crumb.phos .last{color:var(--phos-2)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:-1px;background:var(--paper-3)}
.dot.gold{background:var(--gold-2);box-shadow:0 0 8px rgba(243,207,122,.7)}.dot.phos{background:var(--phos-2);box-shadow:0 0 8px rgba(174,242,234,.6)}
.dot.crim{background:var(--crimson)}.dot.coral{background:var(--coral)}.dot.lilac{background:var(--lilac)}.dot.moss{background:var(--moss)}
.pill{display:inline-block;padding:1px 7px;border-radius:2px;font:600 10.5px/16px var(--mono);letter-spacing:.03em;color:var(--ink-0);background:var(--paper-3);vertical-align:1px;margin-right:6px}
.pill.gold{background:var(--gold)}.pill.phos{background:var(--phos)}.pill.crim{background:var(--crimson);color:#fff}.pill.moss{background:var(--moss)}
.pill.lilac{background:var(--lilac)}.pill.coral{background:var(--coral)}.pill.gray{background:var(--ink-3);color:var(--paper-2)}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
ul.plain{list-style:none;margin:0;padding:0}
ul.plain li{padding:5px 0;border-bottom:1px solid var(--rule);font-size:var(--fs-body);color:var(--paper-2)}
ul.plain li:last-child{border-bottom:0}
ul.plain li b{color:var(--paper)}
ul.plain li .d{display:block;font-size:var(--fs-small);color:var(--paper-3);margin-top:1px}
.kv{margin:3px 0;color:var(--paper-2);font-size:var(--fs-body)}
.kv b{color:var(--paper)}
.kv .k{margin-right:8px}
.bar{height:5px;background:var(--ink-3);border-radius:2px;overflow:hidden;position:relative}
.bar i{display:block;height:100%;background:var(--gold);border-radius:2px;transform-origin:left;animation:barin .8s cubic-bezier(.2,.7,.2,1) both}
.bar i.phos{background:var(--phos)}.bar i.lilac{background:var(--lilac)}.bar i.moss{background:var(--moss)}.bar i.crim{background:var(--crimson)}.bar i.coral{background:var(--coral)}
@keyframes barin{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.rel-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 44px;gap:8px;align-items:center;padding:3px 0;font-size:var(--fs-small);color:var(--paper-2)}
.rel-row .n{font-family:var(--mono);color:var(--paper-3);text-align:right}
details{margin-top:8px}
details summary{cursor:pointer;font:600 var(--fs-kicker)/1.4 var(--sans);color:var(--paper-3);letter-spacing:.08em;text-transform:uppercase;list-style:none;display:flex;align-items:center;gap:6px}
details summary::before{content:"›";display:inline-block;transition:transform .2s;color:var(--gold)}
details[open] summary::before{transform:rotate(90deg)}
details > div{margin-top:8px;font-size:var(--fs-small);color:var(--paper-2)}
.tbl{width:100%;border-collapse:collapse;font-size:var(--fs-small)}
.tbl th{font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-3);text-align:left;padding:4px 8px 6px 0;border-bottom:1px solid var(--rule-2)}
.tbl td{padding:6px 8px 6px 0;border-bottom:1px solid var(--rule);vertical-align:top;color:var(--paper-2)}
.tbl td.n{font-family:var(--mono);white-space:nowrap;color:var(--paper)}

/* нарратор: один блок на шаг, абзацы */
.gloss{margin-top:var(--gap);padding:12px 16px 12px 18px;border-left:2px solid var(--gold);background:linear-gradient(90deg,rgba(217,173,79,.06),transparent 60%);font-size:var(--fs-body);line-height:1.55;color:var(--paper-2);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px}
.gloss .who{font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gold);grid-column:1}
.gloss .open{grid-column:2;grid-row:1}
.gloss .txt{grid-column:1/3}
.gloss p{margin:0 0 .6em}.gloss p:last-child{margin:0}
.gloss .g{font:var(--fs-kicker) var(--mono);color:var(--paper-3);margin-left:8px}
.gloss .g.bad{color:var(--crimson-2)}

/* ИЗ: полюса */
.poles{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch;margin:8px 0}
.pole{background:var(--ink-2);border:1px solid var(--rule);border-radius:3px;padding:10px 12px}
.pole .id{font:600 var(--fs-kicker) var(--mono);color:var(--gold-2);letter-spacing:.06em}
.pole .name{font-size:var(--fs-big);font-weight:600;color:var(--paper);margin:2px 0 6px}
.pole .stmt{font-size:var(--fs-small);color:var(--paper-2)}
.pole.rec{border-style:dashed;opacity:.85}
.poles .vs{align-self:center;color:var(--crimson-2);font-size:var(--fs-small);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.conflict{margin-top:8px;padding:8px 10px;border-left:2px solid var(--crimson);color:var(--paper-2);font-size:var(--fs-body)}

/* сверка: строки меток */
.lrow{padding:9px 0;border-bottom:1px solid var(--rule);transition:background .2s}
.lrow:last-child{border-bottom:0}
.lrow:hover,.lrow.hl{background:rgba(255,255,255,.03)}
.lrow .lab{font-size:var(--fs-big);font-weight:600;color:var(--paper);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.lrow .def{font-size:var(--fs-small);color:var(--paper-3);line-height:1.45;margin-top:2px}
.lrow .rel{font-size:var(--fs-small);color:var(--paper-2);margin-top:4px}
.lrow .rel .n{font-family:var(--mono);color:var(--paper-3);margin-left:6px}
.cats{display:flex;gap:14px;font-size:var(--fs-small);color:var(--paper-2);margin-bottom:8px;flex-wrap:wrap}
.cats b{color:var(--paper)}

/* дерево онтологии */
.tree{position:relative;aspect-ratio:1;width:100%;max-width:640px;margin:0 auto}
.tree svg{width:100%;height:100%;overflow:visible;display:block}
.tree .ring{fill:none;stroke:var(--rule-2);stroke-width:.6}
.tree .wedge{opacity:.045}
.tree .kd{fill:none;stroke-width:6;opacity:.6;stroke-linecap:butt}
.tree .link{stroke:#544f62;stroke-width:.5;opacity:.42}
.tree .link.l1{opacity:.6;stroke-width:.7}.tree .link.l3{opacity:.22;stroke-width:.4}
.tree .nd{fill:#7a7489}
.tree .nd.r1{fill:#a29cb0}.tree .nd.r2{fill:#807a8f}.tree .nd.r3{fill:#635e70}
.tree .klabel{font-family:var(--sans);font-size:11.5px;fill:var(--paper-2);letter-spacing:.04em}
.tree .lit-glow{fill:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;opacity:.22;filter:blur(3px)}
.tree .lit-glow.gold{stroke:var(--gold)}.tree .lit-glow.phos{stroke:var(--phos)}.tree .lit-glow.crim{stroke:var(--crimson)}
.tree .lit-path{fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
.tree .lit-path.gold{stroke:var(--gold-2)}.tree .lit-path.phos{stroke:var(--phos-2)}.tree .lit-path.dim{opacity:.4;stroke-dasharray:2 3}.tree .lit-path.crim{stroke:var(--crimson);opacity:.7}
.tree .lit-dot.gold{fill:var(--gold-2)}.tree .lit-dot.phos{fill:var(--phos-2)}.tree .lit-dot.crim{fill:var(--crimson)}
.tree .glow{opacity:.55;filter:blur(4px)}.tree .glow.gold{fill:var(--gold)}.tree .glow.phos{fill:var(--phos)}.tree .glow.crim{fill:var(--crimson)}
.tree .llabel{font-family:var(--sans);font-size:11px;fill:var(--paper);paint-order:stroke;stroke:var(--ink-0);stroke-width:3px}
.tree .llabel.gold{fill:var(--gold-2)}.tree .llabel.phos{fill:var(--phos-2)}.tree .llabel.crim{fill:var(--crimson-2)}
.tree .leader{stroke-width:.7;opacity:.6;fill:none}.tree .leader.gold{stroke:var(--gold)}.tree .leader.phos{stroke:var(--phos)}.tree .leader.crim{stroke:var(--crimson)}
.tree .excl{fill:none;stroke:var(--crimson);stroke-width:.9;stroke-dasharray:3 3;opacity:.6}
.tree .center{fill:var(--gold);opacity:.9}
.tree .clabel{font-family:var(--sans);font-size:10px;fill:var(--paper-3);letter-spacing:.14em;text-transform:uppercase}
.tree.grow .ring{transform-origin:50% 50%;animation:ringin 1s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--r)*.12s)}
.tree.grow .nd,.tree.grow .link{animation:fadein .8s ease-out both;animation-delay:calc(.35s + var(--r)*.18s)}
.tree.grow .kd,.tree.grow .klabel,.tree.grow .wedge{animation:fadein .9s ease-out both;animation-delay:.3s}
.tree.grow .lit-path,.tree.grow .lit-glow{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:draw .8s ease-out both;animation-delay:calc(1.1s + var(--i)*.22s)}
.tree.grow .lit-dot,.tree.grow .glow,.tree.grow .llabel,.tree.grow .leader{animation:fadein .5s ease-out both;animation-delay:calc(1.7s + var(--i)*.22s)}
.tree.grow .excl{animation:fadein .8s ease-out both;animation-delay:2.4s}
@keyframes ringin{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes fadein{from{opacity:0}to{}}
.tree .lit-node{cursor:pointer}
.tree .lit-node.hl .lit-dot{r:4.2}
.tree .lit-node.hl .llabel{font-weight:600}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:var(--fs-small);color:var(--paper-2);margin-top:8px}
.legend .dot{margin-right:5px}
.tip{position:fixed;z-index:60;pointer-events:none;max-width:380px;background:var(--ink-2);border:1px solid var(--rule-2);color:var(--paper);padding:7px 10px;font-size:var(--fs-small);border-radius:3px;display:none;box-shadow:0 10px 30px -10px rgba(0,0,0,.6)}
.tip .k{margin-bottom:2px}

/* якоря: окрестность на оси косинуса (SVG, подписи разведены выносками) */
.strip svg{width:100%;height:auto;display:block;overflow:visible}
.strip .axis{stroke:var(--rule-2);stroke-width:1}
.strip .tick{font:10px var(--mono);fill:var(--paper-3)}
.strip .ev{fill:var(--ink-3);stroke:var(--rule-2);stroke-width:1;cursor:default}
.strip .ev.chosen{fill:var(--coral);stroke:var(--coral)}
.strip .ev.polar{fill:var(--ink-1);stroke:var(--coral);stroke-width:2}
.strip .ldr{stroke:var(--paper-3);stroke-width:.8;opacity:.55;fill:none}
.strip .ldr.on{stroke:var(--coral);opacity:.9}
.strip .lbl{font:11px var(--sans);fill:var(--paper-2)}
.strip .lbl.on{fill:var(--paper);font-weight:600}
.strip .lbl .s{fill:var(--paper-3);font-family:var(--mono);font-size:10px}
.anchor .aid{font:600 var(--fs-kicker) var(--mono);color:var(--coral);letter-spacing:.06em;margin-right:8px}
.norm{font-family:var(--mono);font-size:var(--fs-kicker);color:var(--paper-2);background:var(--ink-2);padding:2px 6px;border-radius:2px;display:inline-block;margin-top:6px}
.cf .l{margin-top:8px}
.cf .l:first-child{margin-top:0}
.cf .v{color:var(--crimson-2)}.cf .h{color:var(--moss-2)}.cf .w{color:var(--paper-3)}
.cf div{padding:2px 0}

/* шкалы различения — таблица положений словами */
.scales{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap)}
.scale{background:var(--ink-2);border:1px solid var(--rule);border-radius:3px;padding:10px 12px}
.scale .poles2{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:var(--fs-body);font-weight:600;color:var(--paper)}
.scale .poles2 span:last-child{text-align:right}
.scale .line{height:1px;background:linear-gradient(90deg,var(--gold),var(--phos));margin:6px 0 8px;opacity:.55}
.scale .spos{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px;font-size:var(--fs-small);color:var(--paper-2);padding:5px 0;border-bottom:1px solid var(--rule)}
.scale .spos:last-child{border-bottom:0}
.scale .spos.ev{color:var(--paper)}
.scale .spos .who{font-family:var(--mono);font-size:var(--fs-kicker);color:var(--paper-2);white-space:nowrap}
.scale .spos .qual{font-family:var(--sans);font-size:var(--fs-kicker);color:var(--paper-3);white-space:normal;margin-top:2px}

/* брекетинг */
.brack{font-size:14px;line-height:1.6;color:var(--paper)}

/* гипотезы */
.hyp{background:var(--ink-2);border:1px solid var(--rule);border-left:2px solid var(--lilac);border-radius:3px;padding:10px 12px;margin-bottom:10px}
.hyp:last-child{margin-bottom:0}
.hyp .hid{font:600 var(--fs-kicker) var(--mono);color:var(--lilac);letter-spacing:.06em;margin-right:8px}
.hyp .stmt{font-size:var(--fs-body);line-height:1.45;color:var(--paper);margin:6px 0 8px}
.hyp .tp{font-size:var(--fs-small);color:var(--paper-3);margin-top:6px}
.stamp{display:inline-block;padding:2px 9px;border:1.5px solid;border-radius:2px;font:600 var(--fs-kicker)/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;transform:rotate(-3deg);margin-left:8px}
.stamp.acc{color:var(--moss-2);border-color:var(--moss)}.stamp.rej{color:var(--crimson-2);border-color:var(--crimson)}

/* рассуждатели */
.reasoner .ans{font-size:var(--fs-body);line-height:1.5;color:var(--paper);margin:4px 0 8px}
.syl{margin:6px 0;padding:8px 10px;background:var(--ink-2);border-radius:2px;font-size:var(--fs-small)}
.syl .k{display:block;margin-top:4px}
.syl .k:first-child{margin-top:0}

/* арбитр */
.scores{width:100%;border-collapse:collapse;font-size:var(--fs-small)}
.scores th{font:600 10px var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-3);text-align:left;padding:4px 6px 6px 0;border-bottom:1px solid var(--rule-2)}
.scores td{padding:6px 6px 6px 0;border-bottom:1px solid var(--rule);vertical-align:middle;color:var(--paper-2)}
.scores td .bar{width:100%;min-width:56px}
.scores td.n{font-family:var(--mono);color:var(--paper);text-align:right;white-space:nowrap}
.scores tr.win td{color:var(--paper)}
.scores tr.win td:first-child,.scores tr.win td:nth-child(2){color:var(--gold-2)}
.outcome .mode{font-size:22px;font-weight:600;line-height:1.15;color:var(--gold-2);margin:2px 0 8px}
.outcome .addr{font-size:var(--fs-big);font-weight:600;color:var(--paper);margin:8px 0 4px}
.votes{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.votes span{font:var(--fs-kicker) var(--mono);color:var(--paper-2);padding:2px 7px;border:1px solid var(--rule-2);border-radius:2px}

/* план и заключение */
ol.plan{margin:0;padding-left:24px;font-size:var(--fs-body);color:var(--paper)}
ol.plan li{margin:0 0 10px;padding-left:4px}
ol.plan li::marker{color:var(--gold);font-family:var(--mono);font-size:var(--fs-small)}
ol.plan .g{display:block;font-size:var(--fs-small);color:var(--paper-3);margin-top:3px}
.article{font-family:var(--disp);font-size:17.5px;line-height:1.65;color:var(--paper);max-width:72ch}
.article p{margin:0 0 1em}
.article p:first-child::first-letter{font-size:2.6em;line-height:.8;float:left;margin:6px 8px 0 0;color:var(--gold-2)}
.article h2,.article h3,.article h4{font-family:var(--sans);font-weight:600;font-size:var(--fs-title);margin:1.2em 0 .5em;color:var(--gold-2)}

/* проверка */
.vt{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;font-size:var(--fs-body);align-items:baseline}
.vt .pill{margin:0}
.vbars{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px 10px;align-items:center;font-size:var(--fs-small);color:var(--paper-2);margin:4px 0 10px}
.vbars .n{font-family:var(--mono);color:var(--paper)}

/* управление шагами */
#ctl{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:25;display:none;align-items:center;gap:10px;padding:8px 10px 8px 16px;background:rgba(23,22,29,.94);border:1px solid var(--rule-2);border-radius:4px;backdrop-filter:blur(10px);box-shadow:0 20px 50px -20px rgba(0,0,0,.8);max-width:min(96vw,980px)}
#ctl.on{display:flex}
#ctl .next{font-family:var(--disp);font-size:18px;color:var(--ink-0);background:var(--gold);padding:7px 18px 8px;border-radius:3px;letter-spacing:.02em;transition:background .2s,transform .2s;white-space:nowrap}
#ctl .next:hover{background:var(--gold-2);transform:translateY(-1px)}
#ctl .next:disabled{opacity:.4;transform:none}
#ctl .side{color:var(--paper-2);font-size:var(--fs-small);letter-spacing:.04em;padding:6px 10px;border:1px solid var(--rule-2);border-radius:3px;white-space:nowrap}
#ctl .side:hover{color:var(--paper);border-color:var(--paper-3)}
#ctl .side:disabled{opacity:.4}
#ctl .side.gold{border-color:rgba(217,173,79,.55);color:var(--gold-2)}
#ctl .what{font-size:var(--fs-small);color:var(--paper-3);max-width:420px}
#ctl .what b{color:var(--paper)}
#ctl .kbd{font:10.5px var(--mono);border:1px solid var(--rule-2);border-radius:3px;padding:0 5px;color:var(--paper-3);margin-left:4px}
#finale{display:none;padding:34px 26px 60px var(--spine);color:var(--paper-2);font-size:var(--fs-body);border-top:1px solid var(--rule)}
#finale.on{display:block}
#finale .row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
#finale .btn{height:32px;padding:0 16px;font-size:var(--fs-body)}

/* ---------- модальное окно модуля ---------- */
#modal{position:fixed;inset:0;z-index:50;background:rgba(8,7,11,.72);backdrop-filter:blur(6px);display:none}
#modal.on{display:block}
.mdl{position:absolute;inset:4vh 5vw;background:var(--ink-1);border:1px solid var(--rule-2);border-radius:6px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 40px 90px -30px rgba(0,0,0,.9);animation:mdlin .25s cubic-bezier(.2,.7,.2,1) both}
@keyframes mdlin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.mdl-hd{display:flex;align-items:center;gap:12px;padding:14px 18px 10px;border-bottom:1px solid var(--rule)}
.mdl-hd .k{flex:none}
.mdl-hd h2{margin:0;font:600 var(--fs-big)/1.3 var(--sans);color:var(--paper);min-width:0}
.mdl-hd .close{margin-left:auto;width:28px;height:28px;border:1px solid var(--rule-2);border-radius:3px;color:var(--paper-2);font-size:16px;line-height:1;flex:none}
.mdl-hd .close:hover{border-color:var(--gold);color:var(--gold-2)}
.mdl-tabs{display:flex;gap:2px;padding:0 18px;border-bottom:1px solid var(--rule);background:var(--ink-1)}
.mdl-tabs button{padding:10px 12px;font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--paper-3);border-bottom:2px solid transparent;margin-bottom:-1px}
.mdl-tabs button.on{color:var(--gold-2);border-bottom-color:var(--gold)}
.mdl-tabs button:hover{color:var(--paper)}
.mdl-bd{flex:1;overflow:auto;padding:18px;min-height:0}
.mdl-bd .pane{display:none}.mdl-bd .pane.on{display:block}
.desc{max-width:90ch;font-size:var(--fs-body);color:var(--paper-2)}
.desc h4{margin:14px 0 6px;font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.desc h4:first-child{margin-top:0}
.desc p{color:var(--paper)}
.desc .io{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;font-size:var(--fs-small)}
.desc code,.desc .code{font-family:var(--mono);font-size:var(--fs-kicker);color:var(--phos-2);background:var(--ink-2);padding:1px 5px;border-radius:2px}
pre.json,pre.code,pre.txt{margin:0;font:var(--fs-kicker)/1.5 var(--mono);color:var(--paper-2);background:var(--ink-0);border:1px solid var(--rule);border-radius:3px;padding:12px 14px;white-space:pre-wrap;word-break:break-word;max-height:70vh;overflow:auto}
pre.txt{font-family:var(--sans);font-size:var(--fs-small);color:var(--paper)}
.call{border:1px solid var(--rule);border-radius:4px;margin-bottom:12px;background:var(--ink-2)}
.call-hd{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--rule)}
.call-hd b{font-family:var(--mono);font-size:var(--fs-small);color:var(--gold-2)}
.call-hd span{font:var(--fs-kicker) var(--mono);color:var(--paper-3)}
.call details{margin:0;border-top:1px solid var(--rule)}
.call details summary{padding:8px 14px}
.call details > div{margin:0;padding:0 14px 12px}
.src{margin-bottom:14px}
.src .k{margin-bottom:6px}
.none{color:var(--paper-3);font-size:var(--fs-body);padding:6px 0}
.cons{width:100%;border-collapse:collapse;font-size:var(--fs-small);margin-top:8px}
.cons th{font:600 var(--fs-kicker)/1.4 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--paper-3);text-align:left;padding:4px 8px 6px 0;border-bottom:1px solid var(--rule-2)}
.cons td{padding:5px 8px 5px 0;border-bottom:1px solid var(--rule);color:var(--paper-2);vertical-align:top}
.cons td.n{font-family:var(--mono);color:var(--paper);white-space:nowrap}

@media (max-width:1180px){:root{--rail:200px}.dash.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.dash.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.scales{grid-template-columns:1fr}}
@media (max-width:820px){:root{--rail:0px;--spine:52px}#rail{display:none}.dash.g2,.dash.g3,.dash.g4,.dash.g21,.dash.g12{grid-template-columns:1fr}.span2{grid-column:auto}#hero .row{grid-template-columns:1fr 90px}#hero{padding-left:20px;padding-right:20px}.body{padding-right:16px}.act-hd h2{font-size:22px}.mdl{inset:2vh 2vw}.strip-row{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001s!important;animation-delay:0s!important;transition-duration:.001s!important}}
