
:root{
  --bg:#ffffff; --fg:#1a1d21; --muted:#6b7280; --line:#e5e7eb; --card:#fafbfc;
  --side:#f6f7f9; --accent:#2563eb; --accent-bg:#eff4ff; --code-bg:#f4f6f8;
  --t-kw:#a21caf; --t-type:#0369a1; --t-fn:#b45309; --t-str:#15803d; --t-const:#be123c;
  --t-pch:#7c3aed; --t-num:#0891b2; --t-com:#94a3b8; --t-recv:#0d9488;
  --dot-high:#16a34a; --dot-mid:#eab308; --dot-low:#f97316;
  --cg:#c2620a; --cg-bg:#fbeeda; --cn:#15803d; --cn-bg:#e6f6ec; --cm:#2563eb; --cm-bg:#e8f0ff;
  --cg-t:rgba(194,98,10,.07); --cn-t:rgba(21,128,61,.06); --cm-t:rgba(37,99,235,.055);
  --t-ev:#15803d;   /* род «событие/хендлер» — своего токена в подсветке нет, вводим */
}
html[data-theme=dark]{
  --bg:#0f1216; --fg:#dfe3e8; --muted:#8b93a1; --line:#242a31; --card:#161a20;
  --side:#12151a; --accent:#60a5fa; --accent-bg:#17233b; --code-bg:#0c0f13;
  --t-kw:#e879f9; --t-type:#38bdf8; --t-fn:#fbbf24; --t-str:#4ade80; --t-const:#fb7185;
  --t-pch:#c4b5fd; --t-num:#22d3ee; --t-com:#64748b; --t-recv:#2dd4bf;
  --dot-high:#22c55e; --dot-mid:#facc15; --dot-low:#fb923c;
  --cg:#fbbf24; --cg-bg:#3a2c10; --cn:#4ade80; --cn-bg:#14311f; --cm:#60a5fa; --cm-bg:#17233b;
  --cg-t:rgba(251,191,36,.10); --cn-t:rgba(74,222,128,.09); --cm-t:rgba(96,165,250,.10);
  --t-ev:#4ade80;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.6 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--fg)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
header{position:sticky;top:0;z-index:10;display:flex;gap:12px;align-items:center;
  padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--line)}
header h1{font-size:16px;margin:0;white-space:nowrap}
header .sp{flex:1}
.qbox{position:relative;flex:1;max-width:460px}
#q{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:8px;
  background:var(--card);color:var(--fg);font-size:14px}
#dd{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:30;max-height:62vh;overflow:auto;
  background:var(--card);border:1px solid var(--line);border-radius:8px;
  box-shadow:0 10px 28px rgba(0,0,0,.18);display:none}
.ddi{display:flex;align-items:baseline;gap:9px;padding:6px 10px;cursor:pointer;border-bottom:1px solid var(--line)}
.ddi:hover,.ddi.sel{background:var(--accent-bg)}
.ddt{font-size:10px;text-transform:uppercase;font-weight:700;padding:1px 6px;border-radius:4px;flex:none}
.ddt-functions{background:var(--code-bg);color:var(--t-fn)}
.ddt-handlers{background:var(--code-bg);color:var(--t-ev)}
.ddt-objects{background:var(--code-bg);color:var(--t-type)}
.ddt-enums{background:var(--code-bg);color:var(--t-const)}
.ddn{font:13px/1.4 Consolas,monospace;color:var(--fg);flex:none}
.ddd{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ddempty{padding:12px;color:var(--muted);text-align:center}
.btn{padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);
  color:var(--fg);cursor:pointer;font-size:13px;white-space:nowrap}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.tabs{position:sticky;top:52px;z-index:9;display:flex;gap:4px;padding:6px 16px;
  background:var(--bg);border-bottom:1px solid var(--line)}
.tab{padding:6px 14px;border:1px solid transparent;border-radius:8px 8px 0 0;background:none;
  color:var(--muted);cursor:pointer;font-size:14px;font-weight:600}
.tab b{font-weight:400;font-size:11px;opacity:.7}
.tab:hover{color:var(--fg);background:var(--side)}
.tab.active{color:var(--accent);background:var(--side);border-color:var(--line);border-bottom-color:var(--side)}
.xleg{margin-left:auto;display:flex;gap:9px;align-items:center;font-size:12px;flex-wrap:wrap;font-weight:600}
.xleg-t{color:var(--muted);font-size:11px;font-weight:400}
.xleg .lf{color:var(--t-fn)}.xleg .lo{color:var(--t-type)}
.xleg .le{color:var(--t-ev)}.xleg .len{color:var(--t-const)}
@media(max-width:900px){.xleg{display:none}}
.layer{display:none}
.layer.active{display:block}
.layout{display:grid;grid-template-columns:300px 1fr;align-items:start}
nav{position:sticky;top:93px;height:calc(100vh - 93px);overflow:auto;padding:12px;
  background:var(--side);border-right:1px solid var(--line);font-size:13px}
nav ul.flat{list-style:none;margin:0;padding:0}
.inscripts{margin:2px 0 12px}
.il-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);
  font-weight:700;margin-bottom:5px}
.il-grp{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 6px;margin:3px 0}
.il-lbl{font-size:11px;color:var(--muted);font-weight:600;min-width:104px;flex:none;
  text-align:right;padding-right:2px}
.il-var{font:12px/1.6 Consolas,monospace;background:var(--code-bg);color:var(--t-recv);
  border:1px solid var(--line);border-radius:5px;padding:1px 7px;white-space:nowrap}
.il-note{font-size:11px;color:var(--muted)}
.il-plain{font-size:13px;color:var(--muted)}
@media(max-width:820px){.il-lbl{min-width:0;text-align:left;width:100%}}
.badge.cls-EV{background:var(--code-bg);color:var(--t-ev)}
.badge.cls-OBJ{background:var(--code-bg);color:var(--t-type)}
table.enum{border-collapse:collapse;width:100%;font-size:13px;margin-top:4px}
table.enum th{text-align:left;color:var(--muted);font-weight:600;font-size:11px;
  text-transform:uppercase;padding:4px 8px;border-bottom:1px solid var(--line)}
table.enum td{padding:4px 8px;border-bottom:1px solid var(--line);vertical-align:top}
table.enum td.t-const{font:12.5px/1.4 Consolas,monospace;white-space:nowrap}
table.enum td.num{text-align:right;color:var(--t-num);font-family:Consolas,monospace}
table.enum tr:target{background:var(--accent-bg)}
table.members{border-collapse:collapse;width:100%;font-size:13px;margin-top:4px}
table.members td{padding:4px 10px 4px 0;border-bottom:1px solid var(--line);vertical-align:top}
table.members td.mname{font:12.5px/1.5 Consolas,monospace;white-space:nowrap;padding-right:16px}
table.members tr.mh td{font-weight:600;color:var(--muted);border-bottom:2px solid var(--line);
  padding-top:12px;font-size:12px;text-transform:uppercase;letter-spacing:.03em}
a.xreft{text-decoration:none;border-bottom:1px dotted transparent}
a.xreft:hover{border-bottom-color:currentColor}
/* единая семантическая палитра: цвет по РОДУ символа = как в подсветке синтаксиса */
a.xr-functions{color:var(--t-fn)}a.xr-objects{color:var(--t-type)}
a.xr-handlers{color:var(--t-ev)}a.xr-enums{color:var(--t-const)}
a.xr-slots{color:var(--t-recv)}
nav .cnt{color:var(--muted);padding:4px 6px 10px}
details.grp{margin-bottom:4px}
details.grp>summary{cursor:pointer;padding:5px 6px;font-weight:600;border-radius:6px;
  list-style:none;color:var(--fg)}
details.grp>summary::-webkit-details-marker{display:none}
details.grp>summary:hover{background:var(--accent-bg)}
details.grp.cur>summary{background:var(--accent-bg);color:var(--accent)}
.gc{color:var(--muted);font-weight:400;font-size:11px}
.super{margin:14px 4px 3px;padding:5px 6px 3px;font:700 10px/1.3 -apple-system,Segoe UI,sans-serif;
  letter-spacing:.09em;text-transform:uppercase;color:var(--accent);border-top:1px solid var(--line)}
nav .super:first-of-type{border-top:none;margin-top:0}
nav ul{list-style:none;margin:2px 0 8px;padding:0}
nav li a{display:flex;align-items:center;gap:7px;padding:3px 8px 3px 10px;border-radius:6px;
  color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  border-left:3px solid transparent}
nav li[data-cls=GLOBAL]>a{background:var(--cg-t);border-left-color:var(--cg)}
nav li[data-cls=NPC]>a{background:var(--cn-t);border-left-color:var(--cn)}
nav li[data-cls=MAKER]>a{background:var(--cm-t);border-left-color:var(--cm)}
nav li a:hover{background:var(--accent-bg);text-decoration:none}
.dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--muted)}
.dot-high{background:var(--dot-high)}.dot-mid{background:var(--dot-mid)}.dot-low{background:var(--dot-low)}
.ctag{flex:none;width:16px;height:16px;line-height:16px;text-align:center;border-radius:4px;
  font:700 10px/16px Consolas,monospace}
.ctag-GLOBAL{background:var(--cg-bg);color:var(--cg)}
.ctag-NPC{background:var(--cn-bg);color:var(--cn)}
.ctag-MAKER{background:var(--cm-bg);color:var(--cm)}
.legend{display:flex;gap:12px;align-items:center;padding:2px 6px 10px;color:var(--muted);font-size:11px}
.legend span.ctag{margin-right:4px}
main{padding:0 28px 40px;max-width:1000px}
.group-block{display:none}
.group-block.active{display:block}
.sec-head{position:sticky;top:93px;z-index:5;display:flex;align-items:baseline;gap:12px;
  background:var(--bg);padding:16px 0 10px;border-bottom:2px solid var(--line);margin-bottom:6px}
.sec-head h2{margin:0;font-size:19px}
.sec-n{color:var(--muted);font-size:13px}
.card{padding:14px 16px 18px;margin:0 0 12px;border:1px solid var(--line);
  border-left:3px solid var(--muted);border-radius:8px;background:var(--card);scroll-margin-top:150px}
.card[data-cls=GLOBAL]{border-left-color:var(--cg);background:var(--cg-t)}
.card[data-cls=NPC]{border-left-color:var(--cn);background:var(--cn-t)}
.card[data-cls=MAKER]{border-left-color:var(--cm);background:var(--cm-t)}
.card-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 4px;font-size:20px}
.card-title .anchor{color:var(--fg)}
.badges{display:flex;gap:6px}
.badge{font-size:11px;padding:2px 8px;border-radius:20px;font-weight:600;border:1px solid var(--line)}
.badge.cls{border-color:transparent}
.badge.cls-GLOBAL{background:var(--cg-bg);color:var(--cg)}
.badge.cls-NPC{background:var(--cn-bg);color:var(--cn)}
.badge.cls-MAKER{background:var(--cm-bg);color:var(--cm)}
.badge.conf{color:var(--muted)}
.desc{color:var(--muted);font-size:15px;margin-bottom:10px}
.prose p{margin:8px 0}
.footnote{margin-top:12px;padding:10px 12px;background:var(--code-bg);border-radius:8px;
  font-size:13px;color:var(--muted)}
main h4{margin:16px 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
pre.code{margin:0;padding:12px 14px;background:var(--code-bg);border:1px solid var(--line);
  border-radius:8px;overflow-x:auto}
pre.code code{font:13px/1.55 "SF Mono",Consolas,"Roboto Mono",monospace;white-space:pre}
code.ic{font:12.5px/1.4 Consolas,monospace;background:var(--code-bg);padding:1px 5px;border-radius:5px}
code.ic.const{color:var(--t-const)}code.ic.pch{color:var(--t-pch)}
.xref{font:12.5px/1.4 Consolas,monospace;background:var(--code-bg);border:1px solid var(--line);padding:1px 5px;border-radius:5px}
.t-kw{color:var(--t-kw);font-weight:600}.t-type{color:var(--t-type)}.t-fn{color:var(--t-fn)}
.t-str{color:var(--t-str)}.t-const{color:var(--t-const)}.t-pch{color:var(--t-pch)}
.t-num{color:var(--t-num)}.t-com{color:var(--t-com);font-style:italic}.t-recv{color:var(--t-recv)}
.hidden{display:none!important}
#empty{padding:40px;color:var(--muted);text-align:center;display:none}
@media(max-width:820px){.layout{grid-template-columns:1fr}nav{display:none}}
