/* Онтологизатор v2 — визуальный язык по концепт-файлу «АТЛАС ГИБКОСТИ» */
:root{
  --c-law:#b794f6; --c-tech:#3fd3c2; --c-metric:#f2b64c; --c-comm:#6aa9f5;
  --c-dark:#f0688d; --c-core:#4fd79a; --c-neutral:#cbb8f0; --c-meta:#e8c4ff;
  --r-sm:8px; --r-md:14px; --r-lg:22px; --fs:15px; --dw:38%;
  --tr:.32s cubic-bezier(.22,.75,.2,1);
}
html[data-theme="dawn"]{
  --bg1:#0d0820; --bg2:#1d1040; --bg3:#37195c; --txt:#efe7ff; --txt2:#c3b4e4; --txt3:#9184b5;
  --panel:rgba(28,17,58,.86); --panel2:rgba(18,11,40,.92); --card:rgba(46,29,88,.5);
  --line:rgba(163,133,224,.26); --line2:rgba(163,133,224,.5); --sel:#ffd98a;
  --hd:linear-gradient(100deg,#2b1657,#4b1f6e 38%,#7b2a63 70%,#b8562f);
  --mapbg:radial-gradient(1200px 700px at 22% 8%,rgba(80,190,205,.16),transparent 62%),
          radial-gradient(1000px 800px at 82% 88%,rgba(190,90,160,.16),transparent 60%),
          linear-gradient(160deg,#0d0820,#1d1040 45%,#2a1348 72%,#0a0718);
  --shadow:0 18px 50px rgba(0,0,0,.55);
}
html[data-theme="paper"]{
  --bg1:#fbf7ee; --bg2:#f3ecdd; --txt:#241f31; --txt2:#4d4460; --txt3:#7b7192;
  --panel:rgba(255,253,247,.94); --panel2:rgba(250,246,238,.97); --card:rgba(255,255,255,.8);
  --line:rgba(90,70,40,.2); --line2:rgba(90,70,40,.42); --sel:#8a5a00;
  --c-law:#6b3fc4; --c-tech:#0e8a86; --c-metric:#b0700d; --c-comm:#1c5fbf; --c-dark:#b02448; --c-core:#0d7f52;
  --hd:linear-gradient(100deg,#3b2a63,#6b3f7a 40%,#a4593f 75%,#c98a2e);
  --mapbg:linear-gradient(160deg,#fdfaf3,#f5eee0 50%,#efe5d2);
  --shadow:0 14px 38px rgba(80,60,30,.18);
}
html[data-theme="day"]{
  --bg1:#eef7fb; --bg2:#dff0f7; --txt:#12242e; --txt2:#33566a; --txt3:#5f8296;
  --panel:rgba(250,254,255,.94); --panel2:rgba(238,249,253,.97); --card:rgba(255,255,255,.82);
  --line:rgba(20,90,120,.2); --line2:rgba(20,90,120,.42); --sel:#0b5f7a;
  --c-law:#6d28d9; --c-tech:#0f766e; --c-metric:#b45309; --c-comm:#1d4ed8; --c-dark:#be123c; --c-core:#047857;
  --hd:linear-gradient(100deg,#0b4f6c,#12788f 38%,#17a2a2 68%,#5fc9a4);
  --mapbg:linear-gradient(165deg,#f2fbfd,#dff0f7 45%,#cbe6f1 78%);
  --shadow:0 14px 40px rgba(20,70,90,.18);
}
html[data-theme="contrast"]{
  --bg1:#000; --bg2:#0a0a0a; --txt:#fff; --txt2:#e8e8e8; --txt3:#c0c0c0;
  --panel:rgba(0,0,0,.96); --panel2:#050505; --card:#111;
  --line:rgba(255,255,255,.35); --line2:rgba(255,255,255,.7); --sel:#ffe066;
  --c-law:#d0b3ff; --c-tech:#5ffbe8; --c-metric:#ffd166; --c-comm:#8cc4ff; --c-dark:#ff8fab; --c-core:#7dffb8;
  --hd:linear-gradient(100deg,#222,#444); --mapbg:#000; --shadow:none;
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg1);color:var(--txt);font-size:var(--fs);overflow:hidden}
button{font-family:inherit;cursor:pointer;background:var(--card);color:var(--txt);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 11px;font-size:12.5px;transition:var(--tr)}
button:hover{border-color:var(--line2);background:var(--panel2)}
button.on{background:var(--hd);color:#fff;border-color:transparent;font-weight:600}
button:disabled{opacity:.45;cursor:wait}
textarea,input,select{font-family:inherit;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:var(--r-sm);padding:9px 11px;font-size:13.5px;outline:none}
textarea:focus,input:focus{border-color:var(--line2)}
textarea{width:100%;resize:vertical;min-height:150px;line-height:1.5}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:6px}
#app{display:flex;flex-direction:column;height:100vh}
/* ── HEADER ─────────────────────────────── */
#hdr{display:flex;align-items:center;gap:12px;padding:9px 16px;background:var(--panel);
  border-bottom:1px solid var(--line);backdrop-filter:blur(10px);flex-wrap:wrap;z-index:20}
.brand{display:flex;align-items:center;gap:11px;cursor:pointer}
.mk{width:34px;height:34px;border-radius:10px;background:var(--hd);position:relative;flex:0 0 auto}
.mk::after{content:"◈";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:17px;color:#fff}
.brand b{font-size:15px;letter-spacing:.2px}
.brand small{display:block;color:var(--txt3);font-size:10.4px;letter-spacing:.5px}
.sp{flex:1 1 auto}
.hstat{display:flex;gap:13px;font-size:11.6px;color:var(--txt3);flex-wrap:wrap}
.hstat b{color:var(--txt2)}
#phenchip{display:none;align-items:center;gap:8px;font-size:12.4px;border:1px solid var(--line2);
  border-radius:20px;padding:3px 12px;cursor:pointer;background:var(--card)}
#phenchip .dotc{width:11px;height:11px;border-radius:50%}
/* ── ENTRY ──────────────────────────────── */
#entry{flex:1 1 auto;overflow:auto;background:var(--mapbg)}
.ewrap{max-width:1180px;margin:0 auto;padding:26px 22px 60px}
.ehead{margin:20px 0 24px}
.ehead h1{margin:0 0 8px;font-size:clamp(26px,4.2vw,44px);line-height:1.15;
  background:var(--hd);-webkit-background-clip:text;background-clip:text;color:transparent}
.ehead p{color:var(--txt2);max-width:820px;font-size:14.6px;line-height:1.6;margin:0}
.panels{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:820px){.panels{grid-template-columns:1fr}}
.pcard{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:16px 16px 14px;box-shadow:var(--shadow)}
.pcard .cap{font-size:10.8px;letter-spacing:.15em;text-transform:uppercase;color:var(--txt3);margin-bottom:9px;
  border-left:3px solid var(--c-tech);padding-left:8px;display:flex;justify-content:space-between;align-items:center}
.pcard.task .cap{border-left-color:var(--c-metric)}
.cap .mini{display:flex;gap:5px}
.cap .mini button{font-size:10.5px;padding:3px 8px}
.ebtns{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
#goBtn{font-size:16px;padding:12px 26px;border-radius:var(--r-md);background:var(--hd);color:#fff;
  border:none;font-weight:700;letter-spacing:.03em}
#goBtn:hover{filter:brightness(1.15)}
.egist{font-size:12px;color:var(--txt3)}
.flaskgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:9px;margin-top:20px}
.fcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px;
  cursor:pointer;transition:var(--tr);font-size:12.2px}
.fcard:hover{border-color:var(--c-tech);transform:translateY(-2px)}
.fcard b{display:block;font-size:13px;margin-bottom:2px}
.fcard .era{color:var(--txt3);font-size:10.4px}
.fcard .sh{color:var(--txt2);font-size:11.4px;margin-top:4px;line-height:1.35}
.fcard .bl{color:var(--c-dark);font-size:10.6px;margin-top:4px}
.sect{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--txt3);margin:26px 0 10px;
  border-bottom:1px solid var(--line);padding-bottom:5px}
/* ── WORKSPACE ──────────────────────────── */
#ws{flex:1 1 auto;display:none;min-height:0}
#ws.on{display:flex}
#side{flex:0 0 190px;display:flex;flex-direction:column;min-height:0;background:var(--panel);
  border-right:1px solid var(--line);overflow:auto}
#side .navgrp{padding:12px 10px 4px;font-size:9.8px;letter-spacing:.16em;text-transform:uppercase;color:var(--txt3)}
.navb{display:flex;align-items:center;gap:9px;padding:8px 12px;margin:1px 6px;border-radius:var(--r-sm);
  cursor:pointer;font-size:12.8px;color:var(--txt2);border:1px solid transparent}
.navb:hover{background:var(--card)}
.navb.sel{background:var(--hd);color:#fff;font-weight:600}
.navb .ic{width:16px;text-align:center}
#stage{flex:1 1 auto;position:relative;min-width:0;background:var(--mapbg);overflow:hidden}
#cv{width:100%;height:100%;display:block}
#tools{position:absolute;top:10px;left:10px;display:flex;flex-wrap:wrap;gap:5px;max-width:calc(100% - 20px);z-index:5}
#tools button,#tools select{font-size:11.2px;padding:5px 9px;background:var(--panel);backdrop-filter:blur(6px)}
#tip{position:absolute;pointer-events:none;background:var(--panel2);border:1px solid var(--line2);
  border-radius:var(--r-sm);padding:6px 9px;font-size:11.6px;max-width:300px;z-index:40;display:none;box-shadow:var(--shadow)}
#legend{position:absolute;bottom:12px;left:10px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r-md);padding:9px 11px;font-size:10.8px;z-index:5;max-width:300px;backdrop-filter:blur(6px)}
#legend .lg{display:flex;align-items:center;gap:7px;margin:2.5px 0}
#legend .sw{width:11px;height:11px;border-radius:3px}
#doc{position:absolute;bottom:0;left:0;right:0;background:var(--panel);border-top:1px solid var(--line);
  padding:7px 12px;font-size:11.4px;display:flex;gap:14px;align-items:center;flex-wrap:wrap;z-index:6;backdrop-filter:blur(8px)}
#doc label{color:var(--txt3)}
.chipf{font-size:10.8px;padding:3px 9px;border-radius:20px;border:1px solid var(--line);background:var(--card);
  cursor:pointer;color:var(--txt2)}
.chipf.on{border-color:var(--c-core);color:var(--txt);background:var(--panel2)}
/* ── DRAWER (инспектор-шторка) ──────────── */
#drawer{flex:0 0 var(--dw);min-width:0;display:flex;flex-direction:column;background:var(--panel);
  border-left:1px solid var(--line);transition:var(--tr)}
body.drawer-hidden #drawer{flex-basis:0;overflow:hidden;border-left-width:0}
#dhd{padding:11px 14px 8px;border-bottom:1px solid var(--line)}
#dtop{display:flex;gap:9px;align-items:flex-start;flex-wrap:wrap}
#dtype{font-size:10px;letter-spacing:.13em;text-transform:uppercase;border:1px solid;border-radius:20px;
  padding:2px 9px;font-weight:700;white-space:nowrap}
#dtitle{font-size:17px;font-weight:700;line-height:1.25}
#dbtns{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto}
#dbtns button{font-size:10.8px;padding:4px 8px}
#tabs{display:flex;gap:3px;flex-wrap:wrap;margin-top:8px;border-bottom:1px solid var(--line);padding-bottom:7px}
#tabs button{font-size:11.6px;padding:5px 10px;border-radius:var(--r-sm) var(--r-sm) 0 0}
#dbody{flex:1 1 auto;overflow:auto;padding:13px 15px 50px;font-size:13.2px;line-height:1.6}
#bRestore{position:fixed;top:50%;right:0;transform:translateY(-50%) translateX(105%);padding:12px 8px;
  writing-mode:vertical-rl;background:var(--hd);color:#fff;border:1px solid var(--line);
  border-radius:var(--r-md) 0 0 var(--r-md);cursor:pointer;font-size:12px;z-index:60;transition:transform .2s;display:none}
#bRestore.on{display:block;transform:translateY(-50%) translateX(0)}
/* ── контент вида/шторки ────────────────── */
.sec{margin-bottom:16px}
.cap2{font-size:10.4px;letter-spacing:.14em;text-transform:uppercase;color:var(--txt3);margin-bottom:7px;
  border-left:3px solid var(--c-tech);padding-left:8px}
.cap2.warn{border-left-color:var(--c-dark)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 13px;font-size:12.5px;margin:5px 0}
.kv dt{color:var(--txt3)}.kv dd{margin:0}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0}
.chip{font-size:11.4px;padding:4px 10px;border-radius:20px;border:1px solid var(--line);background:var(--card);
  color:var(--txt2);cursor:pointer;display:inline-flex;align-items:center;gap:5px}
.chip:hover{border-color:var(--c-tech)}
.tbl{width:100%;border-collapse:collapse;font-size:12.2px}
.tbl th{font-size:10.2px;letter-spacing:.1em;text-transform:uppercase;color:var(--txt3);text-align:left;
  padding:5px 8px;border-bottom:1px solid var(--line2)}
.tbl td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr:hover td{background:var(--card)}
.bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden;min-width:60px}
.bar i{display:block;height:100%;background:var(--hd)}
.tex{font-family:ui-monospace,"SF Mono",Menlo,Consolas,serif }
.frac{display:inline-flex;flex-direction:column;vertical-align:middle;text-align:center;margin:0 2px}
.frac>span:first-child{border-bottom:1px solid currentColor;padding:0 3px;font-size:.92em}
.frac>span:last-child{padding:0 3px;font-size:.92em}
.sqrt{border-top:1px solid currentColor;padding:0 2px}
sup,sub{font-size:.72em}
.bignum{font-size:1.25em;vertical-align:-.18em}
.pill{display:inline-block;font-size:10.4px;border-radius:11px;padding:1px 8px;border:1px solid var(--line2);
  color:var(--txt2);margin-left:5px}
.pill.ok{color:var(--c-core);border-color:var(--c-core)}
.pill.warn{color:var(--c-dark);border-color:var(--c-dark)}
.pill.info{color:var(--c-comm);border-color:var(--c-comm)}
.pill.law{color:var(--c-law);border-color:var(--c-law)}
.pill.metric{color:var(--c-metric);border-color:var(--c-metric)}
.jrn{font-size:11.6px;color:var(--txt2);border-left:2px solid var(--c-tech);padding:2px 8px;margin:3px 0}
.jrn.fail{border-left-color:var(--c-dark)}
.blcard{border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);padding:12px 14px;margin-bottom:12px}
.blcard h4{margin:0 0 5px;font-size:14px}
.qcard{border:1px solid var(--line);border-radius:var(--r-md);background:var(--card);padding:13px 15px;margin-bottom:11px}
.qcard input{width:100%;margin-top:8px}
.qcard .ans{margin-top:7px;font-size:12.4px;display:none}
.qcard .ans.show{display:block}
.ok-m{color:var(--c-core);font-weight:700}.bad-m{color:var(--c-dark);font-weight:700}
.atab{display:grid;gap:5px;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));margin-top:8px}
.anode{border:1px solid var(--line2);border-radius:var(--r-sm);padding:7px 4px;font-size:10.4px;text-align:center;
  cursor:pointer;background:var(--card);line-height:1.2;overflow:hidden}
.anode b{display:block;font-size:12.5px}
.anode.on1{background:var(--hd);color:#fff;border-color:transparent}
.anode.ctrl{box-shadow:0 0 0 2px var(--c-metric)}
.anode.pulse{outline:2px solid var(--c-core)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:1000px){.grid2{grid-template-columns:1fr}}
/* ── модалки / тосты ────────────────────── */
.modal{position:fixed;inset:0;background:rgba(8,4,20,.6);backdrop-filter:blur(4px);z-index:90;display:none;
  align-items:center;justify-content:center;padding:22px}
.modal.on{display:flex}
.mbox{background:var(--panel);border:1px solid var(--line2);border-radius:var(--r-lg);max-width:980px;
  width:min(980px,96vw);max-height:88vh;overflow:auto;padding:20px 24px;box-shadow:var(--shadow)}
.mbox h3{margin:0 0 6px}
#toast{position:fixed;bottom:54px;left:50%;transform:translateX(-50%) translateY(18px);background:var(--panel2);
  border:1px solid var(--line2);border-radius:var(--r-md);padding:9px 16px;font-size:12.6px;z-index:120;
  opacity:0;transition:.25s;pointer-events:none;box-shadow:var(--shadow);max-width:80vw}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
#boot{position:fixed;inset:0;background:rgba(8,4,20,.5);z-index:130;display:none;align-items:center;justify-content:center;backdrop-filter:blur(6px)}
#boot.on{display:flex}
.bspin{width:54px;height:54px;border-radius:50%;border:3px solid var(--line2);border-top-color:var(--c-core);
  animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#boot .bwrap{display:flex;flex-direction:column;align-items:center;gap:14px}
#boot .btxt{font-size:12.5px;color:var(--txt);letter-spacing:.06em}
a{color:var(--c-tech)}
.small{font-size:11.4px;color:var(--txt3)}
.hint{font-size:12px;color:var(--txt3)}
code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92em;background:var(--card);
  border-radius:4px;padding:1px 5px}
.muted-row{opacity:.22}
