:root{
  --bg:#0a0f16;--panel:#101722;--panel2:#151f2d;--line:#263242;--line2:#334256;
  --text:#edf1f6;--muted:#8f9bab;--gold:#d6b66f;--green:#72d6a0;--blue:#76a9ff;
  --orange:#e7a865;--violet:#b8a2ff;--red:#ef8b8b;
  --serif:'Spectral',Georgia,'Times New Roman',serif;
  --sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
}
*{box-sizing:border-box}
html,body,#app{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font:14px/1.55 var(--sans);overflow:hidden}
.hidden{display:none !important}
a{color:inherit;text-decoration:none}
.muted{color:var(--muted)}

/* ── шапка ── */
header{height:108px;display:flex;justify-content:space-between;align-items:flex-start;
  padding:18px 24px 14px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,#111925,#0b1017)}
.brand{font:10px/1.4 var(--mono);letter-spacing:.18em;color:var(--gold)}
h1{font:600 30px/1.05 var(--serif);margin:6px 0 4px}
.subtitle{color:var(--muted);max-width:760px;font-size:13px}
.modes{display:flex;gap:6px;padding-top:4px}
.mode{border:1px solid var(--line);background:var(--panel2);color:var(--muted);
  border-radius:7px;padding:8px 14px;font:10px var(--mono);letter-spacing:.1em;cursor:pointer}
.mode:hover{color:var(--text);border-color:var(--line2)}
.mode.on{color:#0a0f16;background:var(--gold);border-color:var(--gold)}
.mode-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}

.view{height:calc(100% - 108px)}

/* ── фильтры ── */
#filters{padding:8px 18px;border-bottom:1px solid var(--line);background:#0e151f}
.filter-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:3px 0}
.filter-label{font:9px var(--mono);letter-spacing:.12em;color:#657386;margin-right:3px}
.filter-note{font:9px var(--mono);color:#4f5d70;margin-right:6px}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);
  padding:4px 9px;border-radius:999px;color:var(--muted);font:10px var(--mono);cursor:pointer;user-select:none}
.chip:hover,.chip.on,.chip.focus{color:var(--text);border-color:var(--line2);background:#121c29}
.chip.family-chip.focus{border-color:var(--gold);box-shadow:0 0 0 1px rgba(214,182,111,.12)}
.chip.off{opacity:.22}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;vertical-align:middle}

/* ── три колонки ── */
.shell{display:grid;grid-template-columns:280px minmax(0,1fr) 400px;height:calc(100% - 78px)}
.shell-lib{grid-template-columns:340px minmax(0,1fr) 330px;height:100%}
.left{background:var(--panel);border-right:1px solid var(--line);padding:14px;overflow:auto}
.section-title{font:9px var(--mono);letter-spacing:.14em;color:#657386;margin:18px 0 8px}
.help{color:var(--muted);font-size:12px;line-height:1.6}
.btn-row{display:flex;gap:6px}
.btn-row button{flex:1;border:1px solid var(--line);background:var(--panel2);color:var(--muted);
  border-radius:7px;padding:8px;font:10px var(--mono);cursor:pointer}
.btn-row button:hover{color:var(--text);border-color:var(--gold)}

/* ── поиск ── */
.search-wrap{position:relative}
#search,#tocSearch{width:100%;background:#0b121b;border:1px solid var(--line);border-radius:8px;
  color:var(--text);padding:10px 11px;outline:none;font:13px var(--sans)}
#search:focus,#tocSearch:focus{border-color:#50627a}
#searchList{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);background:#0e1722;
  border:1px solid var(--line);border-radius:8px;display:none;max-height:280px;overflow:auto;
  box-shadow:0 12px 28px rgba(0,0,0,.35)}
.search-opt{padding:8px 10px;cursor:pointer;border-bottom:1px solid #1d2836}
.search-opt:last-child{border-bottom:0}
.search-opt:hover{background:#172131}
.search-opt small{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── маршруты ── */
.path{display:block;width:100%;text-align:left;background:var(--panel2);border:1px solid var(--line);
  border-radius:8px;padding:9px 11px;margin-bottom:6px;color:var(--text);cursor:pointer}
.path:hover{border-color:var(--line2)}
.path.on{border-color:var(--gold);background:#1a2331}
.path b{display:block;font-size:13px;font-weight:500}
.path span{color:var(--muted);font:10px var(--mono)}

/* ── сцена графа ── */
#stage{position:relative;overflow:hidden;background:radial-gradient(1200px 700px at 50% 40%,#0d1520,#080c12)}
#graph{width:100%;height:100%;display:block}
.link{stroke:#3a4a5f;stroke-opacity:.55}
.link.formal{stroke-dasharray:4 3}
.link.inhibit{stroke:#a05a5a;stroke-dasharray:2 3}
.link.feedback{stroke:#5a8fa0;stroke-dasharray:6 3}
.link.dim{stroke-opacity:.07}
.node circle.centrality-halo{fill:none;stroke-width:2;pointer-events:none}
.node circle.main{stroke:#0a0f16;stroke-width:2}
.node.active circle.main{stroke:var(--gold);stroke-width:3}
.node.dim{opacity:.12}
.node text{fill:#c8d2df;pointer-events:none;paint-order:stroke;stroke:#0a0f16;stroke-width:3px}
#tooltip{position:absolute;pointer-events:none;opacity:0;transition:opacity .12s;background:#0e1722;
  border:1px solid var(--line2);border-radius:8px;padding:8px 10px;max-width:260px;
  box-shadow:0 10px 26px rgba(0,0,0,.45)}
.tt-title{font-weight:600}
.tt-small{color:var(--muted);font:10px var(--mono);margin-top:3px}
#graphHint{position:absolute;left:14px;bottom:12px;color:#556274;font:10px var(--mono)}

/* ── правая панель ── */
.detail{background:var(--panel);border-left:1px solid var(--line);padding:18px;overflow:auto}
.kicker{font:9px var(--mono);letter-spacing:.14em;color:var(--gold)}
.detail h2{font:600 24px/1.15 var(--serif);margin:7px 0 9px}
.detail h3{font:9px var(--mono);letter-spacing:.14em;color:#657386;margin:18px 0 7px;
  display:flex;align-items:center;gap:7px}
.count{background:#1b2634;border-radius:999px;padding:1px 7px;color:var(--muted)}
.badge{display:inline-block;font:9px var(--mono);letter-spacing:.08em;padding:3px 8px;border-radius:999px;
  border:1px solid var(--line2);color:var(--muted)}
.badge.established{border-color:var(--green);color:var(--green)}
.badge.supported_hypothesis{border-color:var(--blue);color:var(--blue)}
.badge.model_construct{border-color:var(--orange);color:var(--orange)}
.badge.interpretation{border-color:var(--violet);color:var(--violet)}
.badge.philosophical_position{border-color:var(--gold);color:var(--gold)}
.badge.open_question{border-color:var(--red);color:var(--red)}
.badge-line{font:10px var(--mono);color:var(--muted);margin-bottom:4px}
.lead{font:400 15px/1.62 var(--serif)}
.box{background:var(--panel2);border:1px solid var(--line);border-radius:9px;padding:11px 12px;font-size:13px;line-height:1.6}
.box.example{border-left:2px solid var(--gold)}
.evolution div{padding:4px 0;border-bottom:1px dashed #22303f;color:var(--muted)}
.evolution div:last-child{border-bottom:0;color:var(--text)}
.rel-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed #22303f}
.rel-row:last-child{border-bottom:0}
.rel-row a,.box>a.rel-row{color:var(--blue)}
.rel-row:hover{background:#16202d}
.rel-type{color:var(--muted);font:10px var(--mono);text-align:right}
.source{color:var(--muted);font-size:12px;padding:3px 0}
.sec{color:var(--muted);font-size:12px;padding:3px 0;border-bottom:1px dashed #22303f}
.sec:last-child{border-bottom:0}
.side-note{color:#55627a;font-size:11px;margin-top:12px;line-height:1.5}

/* ── список «где читать» ── */
.reads{padding:4px 6px}
.read-row{display:grid;grid-template-columns:52px 1fr;gap:2px 8px;padding:8px 6px;border-radius:7px;
  border-bottom:1px dashed #22303f}
.read-row:last-child{border-bottom:0}
.read-row:hover{background:#16202d}
.read-row .bk{grid-row:span 2;font:10px var(--mono);color:var(--gold);padding-top:2px}
.read-row .ttl{font-size:12.5px;line-height:1.4}
.read-row .meta{font:10px var(--mono);color:var(--muted)}

/* ── оглавление ── */
.book{margin-bottom:6px}
.book-head{width:100%;display:grid;grid-template-columns:34px 1fr;gap:2px 8px;text-align:left;
  background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:9px 11px;color:var(--text);cursor:pointer}
.book-head:hover{border-color:var(--line2)}
.book-head.open{border-color:var(--gold)}
.book-head .rn{grid-row:span 2;font:12px var(--mono);color:var(--gold)}
.book-head .bt{font-size:13px;line-height:1.35}
.book-head .bmeta{font:10px var(--mono);color:var(--muted)}
.chapters{padding:4px 0 8px 12px;border-left:1px solid var(--line);margin:4px 0 0 16px}
.ch{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:6px;color:#c3cddb;font-size:12.5px}
.ch:hover{background:#16202d;color:var(--text)}
.ch.on{background:#1a2331;color:var(--gold)}
.ch-m{font:10px var(--mono);color:var(--muted);flex:none}

/* ── читалка ── */
#readerPane{overflow:auto;padding:0}
.reader-empty{max-width:620px;margin:70px auto;padding:0 28px}
.reader-empty h2{font:600 26px var(--serif);margin-bottom:12px}
.reader-empty p{color:#c3cddb;line-height:1.7}
#reader{max-width:760px;margin:0 auto;padding:34px 30px 90px}
.read-head{border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:22px}
.read-head h2{font:600 30px/1.2 var(--serif);margin:8px 0 8px}
.read-meta{font:10px var(--mono);color:var(--muted)}
.read-body{font:400 16px/1.78 var(--serif);color:#e4eaf2}
.read-body p{margin:0 0 17px}
.read-body h4{font:600 13px/1.4 var(--sans);letter-spacing:.02em;color:var(--gold);margin:28px 0 10px}
.read-body li{margin:0 0 9px 20px}
.read-body b{color:#fff}
.tbl-wrap{overflow:auto;margin:16px 0}
.read-body table{border-collapse:collapse;width:100%;font:13px/1.5 var(--sans)}
.read-body th,.read-body td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}
.read-body th{background:var(--panel2);color:var(--muted);font-weight:500}
.read-nav{display:flex;justify-content:space-between;gap:12px;margin-top:38px;padding-top:16px;border-top:1px solid var(--line)}
.read-nav a{color:var(--blue);font-size:12.5px}
.read-nav a.right{text-align:right}

/* ── адаптив ── */
@media (max-width:1180px){
  .shell{grid-template-columns:240px minmax(0,1fr) 330px}
  .shell-lib{grid-template-columns:290px minmax(0,1fr) 0}
  .shell-lib .detail{display:none}
}
@media (max-width:820px){
  body{overflow:auto}
  html,body,#app{height:auto}
  header{height:auto;flex-direction:column;gap:12px}
  h1{font-size:24px}
  .view{height:auto}
  .shell,.shell-lib{display:block;height:auto}
  .left{border-right:0;border-bottom:1px solid var(--line);max-height:none}
  #stage{height:62vh}
  .detail{border-left:0;border-top:1px solid var(--line);max-height:none}
  .shell-lib .detail{display:block}
  #reader{padding:24px 18px 60px}
  .read-body{font-size:17px}
}

/* v0.7: disciplines + historical timeline */
.timeline-row{display:flex;align-items:center;gap:9px;padding:4px 0;color:var(--muted);font:10px var(--mono);flex-wrap:wrap}
#timeline{width:min(520px,48vw);accent-color:var(--gold);cursor:pointer}
#timelineValue{min-width:74px;color:var(--text);font-weight:500}
.history-toggle{display:flex;align-items:center;gap:5px;margin-left:6px;cursor:pointer}
.discipline-chip.ia{border-color:#6f6447;color:#e8d59d}.discipline-chip.ia.focus{background:#2b261a;color:#fff2c9}
.history-node text{font-style:italic;fill:#aeb9c7}.history-node polygon{stroke:#ccd3dd;stroke-width:1.2;fill:#303c4c}.history-node.dim{opacity:.04}
.history-link{stroke:#77879a;stroke-width:1;stroke-opacity:.28;stroke-dasharray:3 5}
.history-link.dim{opacity:.02}
.history-card{border-left:3px solid #7f8da0}
.hyear{font:10px var(--mono);color:var(--gold)}
#graphHint{max-width:680px}

/* v0.8 interaction semantics */
.discipline-chip.on{opacity:1;background:#182334;color:var(--text);border-color:#43536b}
.discipline-chip.off{opacity:.22;background:transparent;color:var(--muted);border-color:var(--line)}
.discipline-chip.off:hover{opacity:.55}
.node.hidden-by-filter,.link.hidden-by-filter,.history-node.hidden-by-filter,.history-link.hidden-by-filter{opacity:.015!important;pointer-events:none}
.node.context-dim{opacity:.12}
.link.context-dim{opacity:.035}
.link.context-active{stroke-opacity:.95!important;stroke-width:2.8px!important}
.node.active circle.main{stroke:#fff1bd!important;stroke-width:4px!important;filter:drop-shadow(0 0 7px rgba(255,237,178,.28))}
.history-node{opacity:1;transition:opacity .16s ease}
.history-link{transition:opacity .16s ease}
.history-node polygon{fill:#34455c;stroke:#d6dde7;stroke-width:1.3}
.history-node text{fill:#d7dee8}

/* v0.9 */
.discipline-chip.on{opacity:1!important;background:#182334!important;color:#eef3f8!important;border-color:#536783!important}
.discipline-chip.off{opacity:.18!important;background:transparent!important;color:#667386!important;border-color:#263344!important;text-decoration:line-through}
.discipline-chip.off:hover{opacity:.45!important}
.timeline-row #timeline{width:min(560px,50vw)}

/* FULL GRAPH 1.1 */
.edge-inventory{stroke-opacity:.22}
.edge-skeleton{stroke:#d7c48f!important;stroke-opacity:.5}
.edge-editorial{stroke:#c59aad!important;stroke-dasharray:5 4;stroke-opacity:.48}
.warning{margin-top:8px;padding:7px;border:1px solid #5d4b2f;color:#d8bd87;font-size:10px}
.graph-stat{font:10px var(--mono);color:var(--muted)}

/* v1.2 corpus-claim overlay */
.edge-corpus_claim{
  stroke:#8aa4c8;
  stroke-opacity:.0;
  stroke-dasharray:2.5 3.5;
  transition:stroke-opacity .15s ease, stroke-width .15s ease;
}
.edge-corpus_claim.context-active{
  stroke-opacity:.68!important;
}

/* v1.3 typed semantic claim edges */
.edge-typed_claim{
  stroke:#a9c6ee;
  stroke-opacity:0;
  stroke-dasharray:5 3;
}
.edge-typed_claim.context-active{
  stroke-opacity:.88!important;
}
.discipline-chip.ia{font-weight:700}

/* v1.4 workspace modes + fulltext search */
.workspace-mode-tabs{display:flex;gap:8px;margin:0 0 10px}
.mode-tab{
  background:#101926;border:1px solid #334155;color:#aebbc9;
  padding:8px 12px;border-radius:999px;cursor:pointer;font-size:12px;letter-spacing:.04em
}
.mode-tab.active{background:#1b2a3d;color:#fff;border-color:#6c8eb8}
.search-pane{height:100%;overflow:auto;padding:18px 18px 60px;background:#0b1119;color:#dfe8f2}
.search-pane.hidden,.hidden{display:none!important}
.search-head h2{margin:.15rem 0 .35rem;font-size:28px}
.search-head p{margin:0;color:#9cafc3;max-width:800px}
.search-controls{display:grid;grid-template-columns:minmax(300px,1fr) auto auto auto;gap:10px;margin:22px 0 10px}
.search-controls input,.search-controls select{
  background:#0e1722;border:1px solid #2b3a4b;color:#edf4fb;padding:11px 12px;border-radius:8px
}
.search-controls button,.open-reader,.result-concept{
  background:#172436;border:1px solid #3a526c;color:#dfeeff;border-radius:7px;padding:8px 10px;cursor:pointer
}
.search-meta{color:#8fa2b8;margin:8px 0 14px;font-size:13px}
.search-results{display:flex;flex-direction:column;gap:10px}
.search-result{background:#0f1823;border:1px solid #263647;border-radius:10px;padding:14px 16px}
.search-result-top{display:flex;justify-content:space-between;gap:15px;color:#aebfd1;font-size:13px}
.search-score{color:#7393b6}
.search-snippet{margin:10px 0 12px;line-height:1.55;color:#e3eaf0}
.search-snippet mark{background:rgba(230,188,96,.23);color:#f6d17a;padding:0 2px;border-radius:3px}
.search-result-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.found-concepts{display:flex;gap:6px;align-items:center;flex-wrap:wrap;color:#7f93a8;font-size:12px}
.result-concept{padding:5px 8px;font-size:11px}
.reader-hit{outline:2px solid rgba(230,188,96,.65);background:rgba(230,188,96,.08)!important}
@media (max-width:900px){
 .search-controls{grid-template-columns:1fr 1fr}
 .search-controls input{grid-column:1/-1}
}

/* ── переход из поиска в текст (v1.5) ── */
.search-result{cursor:pointer}
.search-result:hover{border-color:var(--line2,#334256)}
.read-body mark, .search-snippet mark{
  background:rgba(214,182,111,.22);color:#ffe9b8;border-radius:3px;padding:0 2px}
.reader-hit{
  outline:2px solid rgba(214,182,111,.65);
  background:rgba(214,182,111,.10)!important;
  border-radius:6px;
  scroll-margin-top:120px;
  transition:background .5s,outline-color .5s}

/* одиночные claim-связи: одно подтверждающее предложение (v1.6) */
.link.tier-single{stroke-dasharray:3 4;stroke-opacity:.28}


/* v1.7 — real subtractive discipline layers + mobile graph-first UI */
.mobile-fold>summary{
  list-style:none;cursor:pointer;user-select:none;
}
.mobile-fold>summary::-webkit-details-marker{display:none}
.mobile-fold>summary{display:none}
.filters-inner{display:block}
.filter-count{font:9px var(--mono);color:var(--gold);margin-right:8px}

@media (max-width:820px){
  /* Header becomes a compact title bar instead of half a screen. */
  header{padding:10px 14px 9px;gap:7px}
  .brand{font-size:8px;letter-spacing:.12em}
  h1{font-size:21px;margin:2px 0}
  .subtitle{display:none}
  .modes{width:100%;padding:0}
  .mode{flex:1;padding:8px 10px}

  /* Filters are one collapsed menu above the graph. */
  #filters{display:block;padding:0;border-bottom:1px solid var(--line)}
  .mobile-fold>summary{
    display:flex;align-items:center;justify-content:space-between;
    min-height:42px;padding:10px 14px;
    color:#dce5ef;background:#0e151f;
    font:10px var(--mono);letter-spacing:.11em
  }
  .mobile-fold>summary:after{content:"＋";color:var(--gold);font-size:15px}
  .mobile-fold[open]>summary:after{content:"−"}
  .fold-state{font:9px var(--mono);letter-spacing:0;color:#657386;font-weight:400}
  .filters-inner{padding:7px 10px 10px}
  .filter-row{gap:5px}
  .chip{font-size:9px;padding:4px 7px}
  .timeline-row{display:grid;grid-template-columns:auto 1fr auto;gap:6px}
  .timeline-row .filter-label{grid-column:1/-1}
  #timeline{width:100%;min-width:0}

  /* Critical change: GRAPH FIRST. The old left column no longer pushes it down. */
  .shell{display:flex!important;flex-direction:column;height:auto}
  #stage{order:1;height:68vh;min-height:480px;border-bottom:1px solid var(--line)}
  .left{order:2;padding:0;border:0;border-bottom:1px solid var(--line);background:var(--panel)}
  .detail{order:3;max-height:none;border-left:0;border-top:1px solid var(--line)}

  /* Search/routes/help become a collapsed secondary menu below graph. */
  .side-fold{display:block}
  .side-fold>summary{background:var(--panel)}
  .side-fold-inner{padding:12px 14px 16px}
  .section-title{margin:14px 0 7px}
  #paths{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  #paths>*{margin:0!important}

  #graphHint{font-size:9px;max-width:75%;opacity:.72}
}

@media (max-width:520px){
  #stage{height:66vh;min-height:430px}
  #paths{grid-template-columns:1fr}
  .detail{padding-left:14px;padding-right:14px}
}


/* v1.8 — compact mobile hierarchy */
.title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}
.title-row h1{margin:0}
.title-row .modes{margin-left:auto}

.book-timeline{
  padding:8px 14px 10px;
  border-bottom:1px solid var(--line);
  background:#0d141d;
}
.mobile-concept-search{
  padding:10px 14px;
  border-bottom:1px solid var(--line);
  background:#0b1119;
}
.mobile-concept-search input{
  width:100%;
  box-sizing:border-box;
  background:#0e1722;
  border:1px solid #2b3a4b;
  color:#edf4fb;
  padding:10px 12px;
  border-radius:8px;
}
.mobile-concept-search #searchList{
  position:relative;
  z-index:30;
}

/* No help block in v1.8 */
.help{display:none!important}

@media (max-width:820px){
  header{padding:9px 12px 8px}
  .brand{font-size:8px;letter-spacing:.10em}
  .title-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:8px;
    align-items:center;
  }
  .title-row h1{
    font-size:19px;
    line-height:1.05;
    margin:0;
  }
  .title-row .modes{
    width:auto;
    min-width:0;
    display:flex;
    gap:5px;
    padding:0;
  }
  .title-row .mode{
    flex:0 0 auto;
    padding:7px 9px;
    font-size:9px;
  }

  /* Disciplines only: collapsed dropdown */
  #filters{padding:0}
  #filters>summary{
    min-height:38px;
    padding:8px 12px;
  }
  .filters-inner{padding:6px 9px 9px}
  .filter-row{gap:4px}
  .chip{font-size:8px;padding:4px 6px}

  /* Book slider always visible, compact */
  .book-timeline{padding:7px 12px 9px}
  .book-timeline .timeline-row{
    display:grid;
    grid-template-columns:auto 1fr auto;
    gap:6px;
    align-items:center;
  }
  .book-timeline .filter-label{
    grid-column:1/-1;
    margin-bottom:1px;
  }

  /* Search directly before graph */
  .mobile-concept-search{padding:8px 12px}

  /* Graph first in the main shell */
  #stage{order:1;height:66vh;min-height:430px}
  .left{order:2}
  .detail{order:3}

  /* Routes remain after graph */
  .left{
    padding:12px 14px 18px;
  }
  .left .section-title:first-child{margin-top:0}
  #paths{display:grid;grid-template-columns:1fr;gap:7px}
}

@media (min-width:821px){
  .mobile-concept-search{
    max-width:none;
  }
}


/* v1.9 — repaired header/search and robust mobile order */
header{
  display:block;
}
.title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}
.title-row h1{margin:2px 0 0}
.title-row .modes{
  display:flex;
  gap:7px;
  flex:0 0 auto;
}
.concept-search{
  position:relative;
  padding:10px 16px;
  background:#0b1119;
  border-bottom:1px solid var(--line);
}
.concept-search input{
  width:100%;
  box-sizing:border-box;
  background:#0e1722;
  border:1px solid #2b3a4b;
  color:#edf4fb;
  padding:10px 12px;
  border-radius:8px;
}
.concept-search #searchList{
  position:absolute;
  left:16px;right:16px;top:50px;
  z-index:100;
}

@media (max-width:820px){
  header{padding:9px 12px 8px}
  .brand{font-size:8px;letter-spacing:.1em;margin-bottom:4px}
  .title-row{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:7px;
  }
  .title-row h1{
    font-size:18px;
    line-height:1.05;
    white-space:normal;
  }
  .title-row .modes{gap:4px}
  .title-row .mode{
    padding:6px 8px;
    min-width:auto;
    font-size:9px;
  }
  .concept-search{padding:8px 12px}
  .concept-search #searchList{left:12px;right:12px;top:46px}
  #stage{height:66vh;min-height:430px}
}


/* v1.10 — requested mobile order:
   search -> graph -> selected-node detail -> learning routes */
@media (max-width:820px){
  .shell{
    display:flex!important;
    flex-direction:column;
  }
  #stage{order:1}
  .detail{order:2}
  .left{order:3}

  /* Detail should read as the immediate continuation of the graph. */
  .detail{
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
  }

  /* Routes are explicitly secondary and live at the end. */
  .left{
    border-top:0;
    padding-top:16px;
  }
}


/* v1.11 — header restored left + true discipline filtering */
header .brand{
  text-align:left;
}
.title-row{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.title-row h1{
  margin:2px 0 0;
  text-align:left;
  flex:1 1 auto;
}
.page-version{
  font-family:var(--mono);
  font-size:.34em;
  font-weight:400;
  color:var(--gold);
  white-space:nowrap;
  vertical-align:middle;
}

/* Filters now remove SVG objects instead of merely making them ghostly. */
.node.hidden-by-filter,
.link.hidden-by-filter,
.history-node.hidden-by-filter,
.history-link.hidden-by-filter{
  display:none!important;
}

@media (max-width:820px){
  .brand{
    font-size:8px;
    letter-spacing:.06em;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .title-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:6px;
  }
  .title-row h1{
    margin:0;
    text-align:left;
    font-size:18px;
    line-height:1.05;
    min-width:0;
  }
  .page-version{font-size:.48em}
  .title-row .modes{
    margin-left:auto;
    flex:0 0 auto;
  }
}

/* внешняя опора (v1.12) */
.support-note{background:#152232;border-left:2px solid #6fb5ff;border-radius:0 7px 7px 0;
  padding:8px 11px;margin:8px 0 4px;font-size:12px;color:#9fb4cc;line-height:1.5}
.node.zone-support circle.main{stroke-dasharray:3 2}

/* пошаговые маршруты (восстановлено после отката) */
.path i{display:block;font-style:normal;font-size:11.5px;line-height:1.45;color:#93a2b5;margin:3px 0 4px}
.node.off-route{opacity:.16}
.node.on-route circle.main{stroke:#d6b66f;stroke-width:2.4}
#routePanel{position:absolute;left:14px;bottom:14px;width:min(356px,calc(100% - 28px));
  background:rgba(13,19,27,.96);border:1px solid #31435a;border-radius:12px;padding:13px 14px;
  box-shadow:0 16px 38px rgba(0,0,0,.55);z-index:7}
.rp-top{display:flex;align-items:baseline;gap:9px;margin-bottom:8px}
.rp-name{flex:1;font-weight:600;font-size:13px;color:#d6b66f;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-count{font-size:12px;color:#8f9bab}
.rp-close{background:none;border:0;color:#8f9bab;cursor:pointer;font-size:15px;line-height:1;padding:0 3px}
.rp-close:hover{color:#fff}
.rp-bar{display:flex;gap:3px;margin-bottom:10px}
.rp-bar i{flex:1;height:3px;border-radius:2px;background:#26313f}
.rp-bar i.done{background:#d6b66f}
.rp-head{font-size:12.5px;color:#a9b6c6}
.rp-node{font:600 20px/1.2 Georgia,serif;margin:2px 0 7px;color:#eef3f9}
.rp-why{font-size:13.5px;line-height:1.6;color:#dbe3ec}
.rp-reads{margin-top:10px;display:flex;flex-direction:column;gap:5px}
.rp-reads a{font-size:12px;line-height:1.4;color:#7fb0f0}
.rp-nav{display:flex;gap:7px;margin-top:12px}
.rp-nav button{flex:1;background:#182231;border:1px solid #263242;border-radius:8px;
  padding:8px;font-size:12.5px;color:#cfd8e3;cursor:pointer}
.rp-nav button:hover:not(:disabled){border-color:#d6b66f;color:#fff}
.rp-nav button:disabled{opacity:.28;cursor:default}
.ea-build-badge{margin-top:18px;padding:6px 2px;font-size:11px;color:#5b6878}

/* v3.0 semantic graph */
.edge-semantic_reviewed{stroke:#d6b66f!important;stroke-opacity:.58;stroke-width:1.9px}
.edge-semantic_candidate{stroke:#718197!important;stroke-opacity:.16;stroke-dasharray:2 4}
.edge-semantic_candidate.context-active{stroke-opacity:.7!important;stroke-dasharray:2 3}

/* 4.4 — stable workspaces, readable controls, explicit corpus search. */
#app{display:flex;flex-direction:column;min-height:0}
#app>header{height:auto;flex:0 0 auto;min-height:100px}
#app>.section-guide{margin:0;padding:8px 24px;color:#a7b6c9;font-size:14px;border-bottom:1px solid var(--line);flex:0 0 auto}
#app>.view{height:auto;flex:1 1 auto;min-height:0}
#view-graph{display:flex;flex-direction:column}
#view-graph>.shell{flex:1 1 auto;min-height:0;height:auto}
.mode{font-size:14px;letter-spacing:0;min-height:44px}.modes{flex-wrap:wrap}
#view-search{overflow:auto;padding:24px}
#searchPane{max-width:1100px;margin:auto}
.corpus-search-controls{display:flex;align-items:end;flex-wrap:wrap;gap:12px}
.corpus-search-controls label{display:flex;flex-direction:column;gap:5px;font-size:14px}
.corpus-search-controls label:first-child{flex:1;min-width:230px}
.corpus-search-controls input,.corpus-search-controls select,.corpus-search-controls button{background:var(--panel);color:var(--text);border:1px solid var(--line2);border-radius:8px;padding:10px;font:16px var(--sans);min-height:44px}
#searchCount{font-size:14px;color:#a7b6c9;margin:16px 0}
.search-result{margin:14px 0}.search-snippet{font-size:16px;line-height:1.6}
.search-opt{width:100%;text-align:left;background:var(--panel);color:var(--text);border:0;border-bottom:1px solid var(--line);font:14px var(--sans)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.chip{background:var(--panel);font-size:12px;min-height:32px}.chip.off{opacity:.55}
.section-title{font-size:12px;color:#9eafc3}.filter-label{font-size:12px;color:#9eafc3}
.path span,.path i{font-size:14px}.brand{font-size:12px;letter-spacing:.04em}
@media(max-width:1100px) and (min-width:821px){.shell{grid-template-columns:210px minmax(0,1fr) 300px}.shell-lib{grid-template-columns:240px minmax(0,1fr) 230px}}
@media(max-width:820px){#app{min-height:100dvh;height:auto}#app>.view{min-height:500px}#app>header{min-height:0}.title-row{flex-wrap:wrap}.title-row .modes{flex-wrap:wrap;width:100%}#app>.section-guide{padding:10px 14px}#view-search{padding:14px}.corpus-search-controls label:first-child{min-width:0;width:100%;flex-basis:100%}}

.digest-document{overflow-wrap:anywhere}.digest-document h1{font-size:1.55rem;line-height:1.4;margin:2em 0 1em;padding-top:1em;border-top:1px solid #a0a0a055}.digest-document h2{font-size:1.15rem;line-height:1.5;margin:1.7em 0 .7em}.digest-document table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:.9em;margin:20px 0}.digest-document th,.digest-document td{padding:9px 12px;vertical-align:top;border-bottom:1px solid #a0a0a055;min-width:110px}.digest-document td p{margin:.3em 0}.digest-document math{max-width:100%;overflow-x:auto}.digest-document details{padding:14px;border:1px solid #a0a0a055}.digest-document summary{cursor:pointer}.digest-document li{margin:.4em 0}
