  :root{
    --ink:#16324F;
    --ink-deep:#0E2337;
    --paper:#EDF1F5;
    --panel:#FFFFFF;
    --line:#D6DEE6;
    --meta:#5B7186;
    --link:#1D5FA8;
    --ok:#1E7A55;    --ok-bg:#E6F2EC;
    --warn:#A9731C;  --warn-bg:#FBF3E3;
    --err:#A63D40;   --err-bg:#F9ECEC;
    --mono:"Cascadia Code","Cascadia Mono",Consolas,"JetBrains Mono",monospace;
    --sans:"Segoe UI",system-ui,-apple-system,sans-serif;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html,body{height:100%}
  body{
    font-family:var(--sans);color:var(--ink);background:var(--paper);
    display:flex;flex-direction:column;font-size:14px;line-height:1.45;
  }
  button{font:inherit;cursor:pointer}
  a{color:var(--link)}

  /* ── Шапка ── */
  header{
    background:var(--ink-deep);color:#fff;
    display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:9px 20px;
  }
  .wordmark{font-family:Georgia,'Times New Roman',serif;font-size:16px;letter-spacing:.3px}
  .wordmark b{font-weight:700}
  .env{
    font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
    border:1px solid rgba(255,255,255,.35);border-radius:3px;padding:2px 8px;color:#BFD3E4;
  }
  .head-right{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .head-right label{font-size:11px;color:#9FB4C6;font-family:var(--mono);letter-spacing:.06em}
  select{
    font:inherit;font-size:12.5px;color:var(--ink);border:1px solid var(--line);
    border-radius:5px;padding:4px 7px;background:#fff;
  }
  select:focus-visible,button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--link);outline-offset:1px}

  /* ── Воронка ── */
  .funnel{display:flex;align-items:stretch;gap:8px;padding:10px 20px 0;flex-wrap:wrap}
  .fcell{
    display:flex;flex-direction:column;gap:1px;min-width:172px;text-align:left;
    background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:7px 12px 6px;
  }
  .fcell:hover{border-color:var(--ink)}
  .fcell .fl{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--meta)}
  .fcell .fv{font-family:var(--mono);font-size:19px;font-weight:600;line-height:1.2;display:flex;align-items:baseline;gap:8px}
  .fcell .fv .sub{font-size:12px;font-weight:400;color:var(--meta)}
  .fcell.err{border-color:var(--err);background:var(--err-bg)}
  .fcell.err .fv{color:var(--err)}
  .fcell.warn{border-color:#E4CFA0}
  .farrow{align-self:center;color:var(--meta);font-family:var(--mono);font-size:15px}
  .fnote{align-self:center;margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--meta)}
  .fchip{
    font-family:var(--mono);font-size:10px;font-weight:400;border-radius:3px;padding:1px 5px;
    color:var(--warn);background:var(--warn-bg);border:1px solid #E4CFA0;white-space:nowrap;
  }

  /* ── Табы ── */
  .tabs{display:flex;gap:2px;padding:10px 20px 0;border-bottom:1px solid var(--line)}
  .tab{
    border:1px solid transparent;border-bottom:none;background:none;
    padding:8px 16px 9px;font-size:13px;font-weight:600;color:var(--meta);
    border-radius:6px 6px 0 0;margin-bottom:-1px;
  }
  .tab[aria-selected="true"]{
    color:var(--ink);background:var(--panel);border-color:var(--line);
    border-bottom:1px solid var(--panel);
  }
  .tab .cnt{font-family:var(--mono);font-size:11px;color:var(--meta);font-weight:400}

  /* ── Панели ── */
  main{flex:1;min-height:0;display:flex;flex-direction:column}
  .panel{flex:1;min-height:0;overflow-y:auto;padding:14px 20px 20px;display:none}
  .panel.on{display:block}

  .stagehead{
    display:flex;gap:18px;flex-wrap:wrap;align-items:baseline;
    background:var(--panel);border:1px solid var(--line);border-radius:6px;
    padding:9px 14px;margin-bottom:12px;font-size:12.5px;
  }
  .stagehead .kv{display:flex;gap:6px;align-items:baseline}
  .stagehead .k{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--meta)}
  .stagehead .v{font-family:var(--mono);font-size:12.5px}
  .stagehead .note{margin-left:auto;font-size:11.5px;color:var(--meta);font-style:italic}

  .tblwrap{background:var(--panel);border:1px solid var(--line);border-radius:6px;overflow:auto}
  table.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
  .tbl th{
    position:sticky;top:0;background:#F7FAFC;z-index:1;text-align:left;
    font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
    color:var(--meta);font-weight:600;padding:6px 10px;border-bottom:1px solid var(--line);
  }
  .tbl td{padding:4px 10px;border-bottom:1px solid #EAF0F4;vertical-align:top}
  .tbl tr:last-child td{border-bottom:none}
  .tbl tbody tr:hover td{background:#F7FAFC}
  .tbl .mono{font-family:var(--mono);font-size:11.5px}
  .tbl .num{font-family:var(--mono);font-size:11.5px;text-align:right;white-space:nowrap}
  .tbl th.num{text-align:right}
  .tbl .dt{font-family:var(--mono);font-size:11px;color:#33475C;white-space:nowrap}
  .tbl .path{color:#33475C;word-break:break-all}
  .tbl a.ext{font-size:11.5px;white-space:nowrap;text-decoration:none}
  .tbl a.ext:hover{text-decoration:underline}

  .badge{
    display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;
    border-radius:3px;padding:1px 6px;white-space:nowrap;vertical-align:1px;margin-left:6px;
  }
  .badge.warn{color:var(--warn);background:var(--warn-bg);border:1px solid #E4CFA0}
  .badge.err{color:var(--err);background:var(--err-bg);border:1px solid #E5BFC0}
  .badge.ok{color:var(--ok);background:var(--ok-bg);border:1px solid #BAD9CB}

  /* блок параметров индекса */
  .params{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
  .param{
    background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 12px;
  }
  .param .k{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--meta)}
  .param .v{font-family:var(--mono);font-size:14px;font-weight:600}

  /* раскрытая строка с чанками */
  tr.exprow>td{background:#F3F7FA;padding:10px 14px 12px;border-bottom:1px solid var(--line)}
  .chunk{
    background:var(--panel);border:1px solid var(--line);border-radius:5px;
    margin-bottom:8px;overflow:hidden;
  }
  .chunk:last-child{margin-bottom:0}
  .chunk .ch-head{
    display:flex;gap:10px;align-items:baseline;padding:5px 10px;background:#F7FAFC;
    border-bottom:1px solid #EAF0F4;font-family:var(--mono);font-size:11px;
  }
  .chunk .ch-ord{color:var(--meta)}
  .chunk .ch-hp{color:var(--ink);font-weight:600}
  .chunk .ch-body{
    font-family:var(--mono);font-size:11.5px;line-height:1.55;color:#33475C;
    padding:8px 10px;white-space:pre-wrap;word-break:break-word;
  }
  .chunk .more{
    border:none;background:none;color:var(--link);font-family:var(--mono);font-size:11px;
    padding:0 10px 8px;text-decoration:underline;
  }
  .rowbtn{cursor:pointer}
  .caret{display:inline-block;width:14px;font-family:var(--mono);color:var(--meta)}

  /* ── Playground ── */
  .play-controls{
    background:var(--panel);border:1px solid var(--line);border-radius:6px;
    padding:12px 14px;margin-bottom:12px;
  }
  .qrow{display:flex;gap:8px;align-items:flex-start}
  #q{
    flex:1;font:inherit;font-size:13.5px;border:1px solid var(--line);border-radius:6px;
    padding:8px 11px;background:#fff;color:var(--ink);min-height:40px;resize:vertical;
  }
  .tkrow{display:flex;flex-direction:column;gap:2px}
  .tkrow label{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--meta)}
  #topk{width:64px;font-family:var(--mono);font-size:13px;border:1px solid var(--line);border-radius:6px;padding:8px}
  .btn{
    border:1px solid var(--line);background:#fff;color:var(--ink);
    border-radius:6px;padding:8px 15px;font-size:13px;font-weight:600;white-space:nowrap;
  }
  .btn:hover{border-color:var(--ink)}
  .btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}
  .btn.primary:hover{background:var(--ink-deep)}
  .btn.sm{padding:3px 10px;font-size:12px;font-weight:400}
  .btn:disabled{opacity:.45;cursor:default}
  .chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px;align-items:center}
  .chips .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--meta)}
  .chip{
    font-size:12px;border:1px solid var(--line);border-radius:13px;background:#F7FAFC;
    padding:3px 11px;color:var(--ink);
  }
  .chip:hover{border-color:var(--ink)}

  .rescard{
    background:var(--panel);border:1px solid var(--line);border-radius:6px;
    margin-bottom:12px;overflow:hidden;
  }
  .res-head{
    display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;
    padding:8px 14px;border-bottom:1px solid var(--line);background:#F7FAFC;
  }
  .res-head .rq{font-weight:600;font-size:13px}
  .res-head .rmeta{font-family:var(--mono);font-size:10.5px;color:var(--meta);margin-left:auto;white-space:nowrap}
  .hit{display:flex;gap:12px;padding:8px 14px;border-bottom:1px solid #EAF0F4;align-items:flex-start}
  .hit:last-of-type{border-bottom:none}
  .hit .score{font-family:var(--mono);font-size:13px;font-weight:600;min-width:58px;text-align:right;padding-top:1px}
  .hit .hbody{flex:1;min-width:0}
  .hit .hp{font-family:var(--mono);font-size:11.5px;font-weight:600;margin-bottom:1px}
  .hit .src{font-size:11.5px;margin-bottom:3px}
  .hit .snip{
    font-family:var(--mono);font-size:11px;line-height:1.5;color:#33475C;
    white-space:pre-wrap;word-break:break-word;background:#F9FBFC;border:1px solid #EAF0F4;
    border-radius:4px;padding:5px 8px;
  }
  .legbadge{
    font-family:var(--mono);font-size:9.5px;border-radius:3px;padding:1px 6px;
    white-space:nowrap;border:1px solid var(--line);color:var(--meta);background:#F7FAFC;
    margin-left:6px;vertical-align:1px;
  }
  .legbadge.miss{color:#B3441E;background:var(--warn-bg);border-color:#E4CFA0}

  details.legs{border-top:1px solid var(--line);background:#FBFCFD}
  details.legs>summary{
    cursor:pointer;padding:7px 14px;font-family:var(--mono);font-size:11px;color:var(--meta);
    letter-spacing:.06em;list-style:none;
  }
  details.legs>summary::before{content:"▸ ";font-size:10px}
  details.legs[open]>summary::before{content:"▾ "}
  .legcols{display:flex;gap:14px;padding:0 14px 12px;flex-wrap:wrap}
  .legcol{flex:1;min-width:280px}
  .legcol h4{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--meta);margin-bottom:5px}
  .legitem{
    display:flex;gap:8px;font-family:var(--mono);font-size:11px;padding:2.5px 8px;
    border-radius:3px;color:var(--meta);
  }
  .legitem .r{min-width:26px;text-align:right}
  .legitem.intop{background:var(--ok-bg);color:var(--ink)}
  .legitem.intop .r{color:var(--ok);font-weight:700}
  .legempty{font-family:var(--mono);font-size:11px;color:var(--warn);background:var(--warn-bg);border:1px dashed #E4CFA0;border-radius:4px;padding:7px 10px}

  .emptyres{
    padding:16px 14px;display:flex;gap:12px;align-items:flex-start;
    border-left:4px solid var(--warn);background:var(--warn-bg);
  }
  .emptyres .t{font-weight:700;margin-bottom:3px}
  .emptyres .x{font-size:12.5px;color:#6E5A2E}

  /* ── Загрузка / ошибки / пустые состояния ── */
  .loadbox{background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:14px}
  .loadnote{font-family:var(--mono);font-size:11px;color:var(--meta);margin-bottom:12px}
  .loadnote::after{content:"…";animation:dots 1.2s steps(4,end) infinite}
  @keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}
  .skel{height:13px;border-radius:3px;background:linear-gradient(90deg,#E4EAF0 25%,#F0F4F8 45%,#E4EAF0 65%);
    background-size:200% 100%;animation:sh 1.3s linear infinite;margin-bottom:9px}
  @keyframes sh{from{background-position:200% 0}to{background-position:-200% 0}}
  @media (prefers-reduced-motion:reduce){.skel{animation:none}.loadnote::after{animation:none;content:"…"}}

  .errbox{
    background:var(--err-bg);border:1px solid #E5BFC0;border-left:4px solid var(--err);
    border-radius:6px;padding:14px 16px;
  }
  .errbox .code{font-family:var(--mono);font-weight:700;color:var(--err);margin-bottom:4px}
  .errbox .body{font-family:var(--mono);font-size:11.5px;color:#7A3A3C;white-space:pre-wrap}
  .errbox .hint{font-size:12.5px;color:var(--meta);margin-top:9px}

  .warnbox{
    background:var(--warn-bg);border:1px solid #E4CFA0;border-left:4px solid var(--warn);
    border-radius:6px;padding:14px 16px;
  }
  .warnbox .t{font-weight:700;color:#6E5A2E;margin-bottom:4px}
  .warnbox .x{font-size:12.5px;color:#6E5A2E}
  .warnbox code{font-family:var(--mono);font-size:11.5px;background:#fff;border:1px solid #E4CFA0;border-radius:3px;padding:1px 5px}

  footer{
    font-family:var(--mono);font-size:10.5px;color:var(--meta);letter-spacing:.05em;
    padding:6px 20px;border-top:1px solid var(--line);background:var(--panel);
    display:flex;gap:14px;flex-wrap:wrap;
  }

  /* ── Как это работает ── */
  .pipe-diagram{
    display:flex;align-items:center;gap:6px;flex-wrap:wrap;
    background:var(--panel);border:1px solid var(--line);border-radius:6px;
    padding:12px 14px;margin-bottom:16px;
  }
  .pipe-step{
    border:1px solid var(--line);background:#F7FAFC;color:var(--ink);
    border-radius:14px;padding:5px 12px;font-size:12px;font-weight:600;white-space:nowrap;
  }
  .pipe-step:hover{border-color:var(--ink);background:var(--panel)}
  .pipe-arrow{color:var(--meta);font-family:var(--mono);font-size:13px}

  .howto-section{
    background:var(--panel);border:1px solid var(--line);border-radius:6px;
    padding:14px 16px;margin-bottom:12px;scroll-margin-top:14px;
  }
  .howto-section h3{font-size:14px;margin-bottom:7px;color:var(--ink)}
  .howto-section p{font-size:13px;line-height:1.6;color:#33475C}
  .howto-section code{
    font-family:var(--mono);font-size:12px;background:#F7FAFC;
    border:1px solid var(--line);border-radius:3px;padding:0 4px;
  }
