@font-face{font-family:"Cormorant";src:url(assets/fonts/cormorant.woff2) format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"Cormorant";src:url(assets/fonts/cormorant-italic.woff2) format("woff2");font-weight:300 700;font-style:italic;font-display:swap}
@font-face{font-family:"Unicase";src:url(assets/fonts/unicase.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Plex";src:url(assets/fonts/plexmono.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Plex";src:url(assets/fonts/plexmono-light.woff2) format("woff2");font-weight:300;font-display:swap}
:root{--ink:#0e0c0a;--ink2:#15120f;--ink3:#1d1915;--bone:#efe6d2;--bone2:#cfc4ac;--dim:#8d8371;--gold:#c9a45c;--gold2:#e6c886;--verd:#7fa58a;--verd2:#4f7a61;--cinn:#c4553a;--ash:#8e86b5;--line:rgba(201,164,92,.22);--serif:"Cormorant",Georgia,serif;--uni:"Unicase",serif;--mono:"Plex",ui-monospace,monospace}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--ink);color:var(--bone);font-family:var(--serif);font-size:19px;line-height:1.5}
::selection{background:var(--gold);color:var(--ink)}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
code{font-family:var(--mono);font-size:.78em;color:var(--gold2);background:rgba(201,164,92,.08);padding:1px 5px;border-radius:4px}
.grain{position:fixed;inset:-50%;pointer-events:none;z-index:90;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.vignette{position:fixed;inset:0;pointer-events:none;z-index:89;background:radial-gradient(ellipse at 60% 40%,transparent 55%,rgba(0,0,0,.5) 100%)}
.shell{display:grid;grid-template-columns:288px minmax(0,1fr);min-height:100vh}
.sidebar{position:sticky;top:0;height:100vh;overflow:auto;background:var(--ink2);border-right:1px solid var(--line);padding:22px 16px;display:flex;flex-direction:column;gap:6px;scrollbar-width:thin;scrollbar-color:var(--ink3) transparent}
.sb-head{display:flex;gap:12px;align-items:center;padding:0 6px 14px}
.brand-mark{width:40px;height:40px;border:1px solid var(--gold);border-radius:50%;display:grid;place-items:center;font-family:var(--uni);color:var(--gold2);font-size:20px;box-shadow:0 0 24px rgba(201,164,92,.18)}
.brand-name{font-family:var(--uni);letter-spacing:.12em;color:var(--gold2);font-size:17px}
.brand-sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase}
.sb-action{border:1px solid var(--line);border-radius:30px;padding:9px 14px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--gold2);text-align:left;transition:.25s}
.sb-action:hover{background:rgba(201,164,92,.1);border-color:var(--gold)}
.sb-section{font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);padding:16px 8px 6px}
.sb-nav button,.sb-list button{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;padding:7px 10px;border-radius:8px;color:var(--bone2);font-size:17px;transition:.2s;gap:8px}
.sb-list button{font-size:15px;padding:5px 10px}
.sb-nav button:hover,.sb-list button:hover{background:rgba(239,230,210,.05);color:var(--bone)}
.sb-nav button.on,.sb-list button.on{background:rgba(201,164,92,.12);color:var(--gold2)}
.badge{font-family:var(--mono);font-size:10.5px;color:var(--dim);border:1px solid var(--line);border-radius:20px;padding:1px 7px}
.dot{width:7px;height:7px;border-radius:50%;flex:none}
.sb-foot{margin-top:auto;padding:18px 8px 4px;border-top:1px solid var(--line)}
.sb-foot p{font-size:14px;color:var(--dim);margin-top:8px;line-height:1.35}
.main{padding:44px 56px 90px;max-width:1240px;animation:fade .5s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.eyebrow b{color:var(--bone2);font-weight:400}
h1{font-weight:300;font-size:64px;line-height:1;margin:14px 0 18px;letter-spacing:-.01em}
h1 em{font-style:italic;color:var(--gold2)}
h3{font-family:var(--uni);font-weight:400;font-size:20px;letter-spacing:.05em;color:var(--gold2);margin-bottom:10px}
.lead{font-size:23px;line-height:1.42;color:var(--bone2);max-width:860px}
.tag{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;padding:3px 9px;border:1px solid var(--line);border-radius:20px;color:var(--bone2);white-space:nowrap;margin:2px 4px 2px 0}
.tag.yes,.tag.obs,.tag.active{border-color:rgba(127,165,138,.6);color:var(--verd)}
.tag.src,.tag.new{border-color:rgba(201,164,92,.6);color:var(--gold2)}
.tag.no,.tag.crit{border-color:rgba(196,85,58,.65);color:#e07a5f}
.tag.hyp,.tag.merged{border-color:rgba(142,134,181,.65);color:var(--ash)}
.tag.frozen,.tag.undef{border-color:rgba(141,131,113,.5);color:var(--dim)}
.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:30px 0}
.stats div{background:var(--ink2);padding:16px 18px}
.stats b{display:block;font-weight:300;font-size:42px;color:var(--gold2);line-height:1}
.stats span{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.card{background:linear-gradient(180deg,var(--ink2),rgba(21,18,15,.6));border:1px solid var(--line);border-radius:16px;padding:22px 24px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.mt{margin-top:22px}
.graph{position:relative;background:radial-gradient(ellipse at 50% 0%,rgba(201,164,92,.06),transparent 60%),var(--ink2);border:1px solid var(--line);border-radius:18px;padding:12px 8px;overflow:hidden}
.graph svg{width:100%;height:auto;display:block}
.graph .colh{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;fill:var(--gold)}
.node rect{fill:var(--ink3);stroke:rgba(201,164,92,.3);transition:.2s}
.node text{font-family:var(--serif);font-size:13.5px;fill:var(--bone2);pointer-events:none}
.node{cursor:pointer}.node:hover rect,.node.hl rect{stroke:var(--gold2);fill:#262019}
.node.hl text{fill:var(--bone)}
.node.dim{opacity:.22}
.edge{fill:none;stroke:rgba(201,164,92,.16);stroke-width:1;transition:.2s}
.edge.hl{stroke:var(--gold2);stroke-width:1.6;opacity:1}.edge.dim{opacity:.05}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:14px 4px 0;font-size:15px;color:var(--dim);align-items:center}
.tip{position:fixed;pointer-events:none;z-index:100;max-width:340px;background:#1f1a15;border:1px solid var(--gold);border-radius:10px;padding:10px 12px;font-size:15px;line-height:1.35;opacity:0;transition:opacity .15s;color:var(--bone)}
.tip b{color:var(--gold2);font-weight:500}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px;margin-top:26px}
.acard{text-align:left;transition:.25s;display:flex;flex-direction:column;gap:8px}
.acard:hover{border-color:var(--gold);transform:translateY(-2px)}
.acard .t{font-size:22px;line-height:1.15;color:var(--bone)}
.acard .w{font-size:16px;color:var(--dim);line-height:1.35;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.kv{display:grid;grid-template-columns:140px 1fr;gap:8px 18px;font-size:17px}
.kv dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);padding-top:5px}
.kv dd{color:var(--bone2)}
ul.clean{list-style:none}ul.clean li{padding:7px 0;border-bottom:1px dashed rgba(201,164,92,.14);font-size:17px;color:var(--bone2)}
ul.clean li:last-child{border:0}
.sev{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;margin-right:8px}
.sev.критично{color:#e07a5f}.sev.высоко{color:var(--gold2)}.sev.находка{color:var(--dim)}
.fn{font-family:var(--mono);font-size:13px;color:var(--gold2)}
.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:30px;padding:4px 12px;margin:3px 6px 3px 0;font-size:15px;color:var(--bone2);transition:.2s}
button.chip:hover{border-color:var(--gold);color:var(--gold2)}
.search{width:100%;background:var(--ink2);border:1px solid var(--line);border-radius:40px;padding:18px 26px;font:inherit;font-size:26px;color:var(--bone);outline:none;transition:.25s}
.search:focus{border-color:var(--gold);box-shadow:0 0 0 4px rgba(201,164,92,.1)}
.search::placeholder{color:var(--dim);font-style:italic}
.res{display:grid;grid-template-columns:200px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid rgba(201,164,92,.12)}
.res .p{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--gold)}
.res .n{font-size:19px}.res .d{font-size:16px;color:var(--dim)}
mark{background:rgba(201,164,92,.28);color:var(--bone);border-radius:3px;padding:0 2px}
.dup{border-color:rgba(142,134,181,.5);background:linear-gradient(180deg,rgba(142,134,181,.08),transparent)}
.pbs{display:flex;flex-wrap:wrap;gap:6px;margin-top:22px}
.pbs button{border:1px solid var(--line);border-radius:30px;padding:6px 14px;font-size:15px;color:var(--bone2);transition:.2s}
.pbs button:hover{border-color:var(--gold)}.pbs button.on{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.route{display:flex;align-items:stretch;gap:0;margin-top:26px;overflow-x:auto;padding-bottom:10px}
.stage{min-width:190px;flex:1;position:relative;padding-right:34px}
.stage:not(:last-child)::after{content:"→";position:absolute;right:8px;top:44px;color:var(--gold);font-size:26px}
.stage .num{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:var(--gold)}
.agent{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:8px;background:var(--ink2)}
.agent.gate{border-color:rgba(196,85,58,.6)}
.agent .id{font-family:var(--mono);font-size:11px;color:var(--gold)}.agent .nm{font-size:18px;line-height:1.15}
.agent .tl{font-size:14px;color:var(--dim);line-height:1.25}
.agent .tools{margin-top:6px}
.hue-gray{--h:#8d8371}.hue-blue{--h:#7b9bc4}.hue-purple{--h:#8e86b5}.hue-orange{--h:#d08b4c}.hue-green{--h:#7fa58a}.hue-teal{--h:#6aa5a0}.hue-pink{--h:#c47f97}.hue-brown{--h:#a8865f}.hue-indigo{--h:#7076b8}.hue-red{--h:#c4553a}
.rule{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.4;margin:40px 0}
.md table{border-collapse:collapse;width:100%;font-size:15px;margin:10px 0}
.md td,.md th{border-bottom:1px solid rgba(201,164,92,.14);padding:6px 8px;text-align:left;vertical-align:top;color:var(--bone2)}
.md th{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.md h4{font-family:var(--uni);font-weight:400;color:var(--gold2);margin:18px 0 6px;font-size:17px}
.md p,.md li{font-size:16.5px;color:var(--bone2);margin:4px 0}.md ul{padding-left:20px}
.md strong{color:var(--bone)}
details summary{cursor:pointer;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.crew{border-left:3px solid var(--h)}
.warn{border-color:rgba(196,85,58,.4);background:linear-gradient(180deg,rgba(196,85,58,.07),transparent)}

/* ===== LIGHT THEME · in the style of mahakala.world (default). Dark: app-dark.css ===== */
:root{--ink:#f7f6f2;--ink2:#fbfaf7;--ink3:#f2efe7;--bone:#2d302a;--bone2:#45483f;--dim:#686b62;--gold:#776241;--gold2:#6b577d;--goldl:#dfc79c;--lav:#edeaf2;--plum:#353136;--verd:#3f6b4f;--cinn:#a2432b;--ash:#6b577d;--line:#d9dbd2;--serif:Georgia,"Times New Roman",serif;--uni:Georgia,"Times New Roman",serif;--mono:Arial,Helvetica,sans-serif}
body{background:var(--ink);color:var(--bone);font-size:17px;line-height:1.6}
body::before{content:"";position:fixed;right:-220px;top:-160px;width:760px;height:760px;border-radius:50%;border:1px solid #e4ceaa;box-shadow:0 0 0 90px rgba(237,234,242,.35),0 0 0 91px #e1d5e7;pointer-events:none;z-index:0;opacity:.7}
.shell{position:relative;z-index:1}
.grain,.vignette{display:none}
::selection{background:var(--goldl);color:var(--bone)}
code{color:#5c4a2f;background:#f2efe7;border:1px solid var(--line)}
.sidebar{background:rgba(247,246,242,.92);backdrop-filter:blur(6px);border-right:1px solid var(--line)}
.brand-mark{border-color:#c9b6d2;color:var(--plum);font-family:var(--serif);box-shadow:0 0 0 5px var(--lav),0 0 28px rgba(223,199,156,.45);background:radial-gradient(circle,#fff 30%,#f4ecdd)}
.brand-name{color:var(--bone);font-family:var(--mono);font-size:13px;letter-spacing:.32em}
.brand-sub,.sb-section,.eyebrow,.badge,.tag,.stats span,.kv dt,.sev,.res .p,.stage .num,.agent .id,details summary,.md th,.graph .colh{font-family:var(--mono);letter-spacing:.18em}
.sb-section{color:var(--dim);font-size:10px}
.sb-action{background:var(--plum);color:#f7f6f2;border-color:var(--plum);text-align:center;letter-spacing:.06em;font-size:13px}
.sb-action:hover{background:#2d302a;border-color:#2d302a;color:#fff}
.sb-nav button,.sb-list button{color:var(--bone2);font-size:16px}
.sb-list button{font-size:14.5px}
.sb-nav button:hover,.sb-list button:hover{background:var(--lav);color:var(--bone)}
.sb-nav button.on,.sb-list button.on{background:#fff;color:var(--bone);box-shadow:inset 2px 0 0 var(--gold),0 1px 0 var(--line)}
.badge{color:var(--dim);border-color:var(--line);background:#fff}
.main{padding:56px 64px 100px}
.eyebrow{color:var(--dim);font-size:11px;letter-spacing:.24em}
.eyebrow b{color:var(--bone)}
h1{font-family:var(--serif);font-weight:400;font-size:76px;letter-spacing:-.035em;line-height:.98;color:var(--bone)}
h1 em{color:#776782;font-weight:400}
h3{font-family:var(--serif);color:var(--bone);font-size:22px;letter-spacing:0}
.lead{color:var(--bone2);font-size:20px}
.tag{color:var(--bone2);border-color:var(--line);background:#fff;font-size:10px}
.tag.yes,.tag.obs,.tag.active{border-color:#9fbfa9;color:var(--verd);background:#f1f6f2}
.tag.src,.tag.new{border-color:#dfc79c;color:#6b5434;background:#faf4e9}
.tag.no,.tag.crit{border-color:#e0ad9f;color:var(--cinn);background:#fbf0ec}
.tag.hyp,.tag.merged{border-color:#c9b6d2;color:var(--ash);background:var(--lav)}
.tag.frozen,.tag.undef{border-color:var(--line);color:var(--dim);background:#f2efe7}
.stats{background:var(--line);border-radius:0;border-left:0;border-right:0}
.stats div{background:var(--ink)}
.stats b{font-family:var(--serif);font-weight:400;font-size:52px;letter-spacing:-.04em;color:var(--bone)}
.card{background:#fff;border-color:var(--line);border-radius:18px;box-shadow:0 1px 0 rgba(45,48,42,.03),0 14px 40px -28px rgba(53,49,54,.25)}
.graph{background:radial-gradient(ellipse at 50% 0%,rgba(237,234,242,.9),transparent 60%),#fff;border-color:var(--line)}
.graph .colh{fill:var(--dim)}
.node rect{fill:#f7f6f2;stroke:#cfc4d4}
.node text{fill:var(--bone);font-family:var(--serif);font-size:13px}
.node:hover rect,.node.hl rect{stroke:var(--plum);fill:#fff;stroke-width:1.4}
.node.hl text{fill:#000}
.node.dim{opacity:.2}
.edge{stroke:rgba(152,124,80,.28)}
.edge.hl{stroke:#6b577d;stroke-width:1.8}.edge.dim{opacity:.06}
.legend{color:var(--dim)}
.tip{background:#fff;border-color:var(--line);color:var(--bone);box-shadow:0 18px 40px -18px rgba(53,49,54,.35)}
.tip b{color:var(--plum)}
.acard:hover{border-color:#c9b6d2;box-shadow:0 20px 50px -26px rgba(107,87,125,.45)}
.acard .t{font-family:var(--serif);color:var(--bone);font-size:21px}
.kv dt{color:var(--dim)}
.kv dd{color:var(--bone2)}
ul.clean li{border-bottom:1px solid #ecebe5;color:var(--bone2)}
.sev.критично{color:var(--cinn)}.sev.высоко{color:#6b5434}.sev.находка{color:var(--dim)}
.fn{color:#5c4a2f}
.chip{background:#fff;color:var(--bone2)}
button.chip:hover{border-color:var(--plum);color:var(--bone)}
.search{background:#fff;color:var(--bone);font-family:var(--serif);border-color:var(--line);box-shadow:0 14px 40px -30px rgba(53,49,54,.4)}
.search:focus{border-color:#c9b6d2;box-shadow:0 0 0 5px var(--lav)}
.res{border-bottom-color:var(--line)}
mark{background:#f3e6cc;color:var(--bone)}
.dup{border-color:#c9b6d2;background:linear-gradient(180deg,var(--lav),#fff)}
.pbs button{background:#fff;color:var(--bone2)}
.pbs button:hover{border-color:var(--plum)}.pbs button.on{background:var(--plum);color:#f7f6f2;border-color:var(--plum)}
.stage:not(:last-child)::after{color:#987c50;content:"↗"}
.agent{background:#fff}
.agent.gate{border-color:#e0ad9f;background:#fdf6f3}
.agent .id{color:#6b5434}
.hue-gray{--h:#87808c}.hue-blue{--h:#5f7fa8}.hue-purple{--h:#7c6088}.hue-orange{--h:#b87436}.hue-green{--h:#5d8a6b}.hue-teal{--h:#4f8a85}.hue-pink{--h:#a85f79}.hue-brown{--h:#987c50}.hue-indigo{--h:#5b609e}.hue-red{--h:#a2432b}
.rule{background:linear-gradient(90deg,transparent,#dfc79c,transparent);opacity:1}
.md td,.md th{border-bottom-color:var(--line);color:var(--bone2)}
.md th,details summary{color:var(--dim)}
.md h4{font-family:var(--serif);color:var(--bone)}
.md p,.md li{color:var(--bone2)}.md strong{color:#000}
.warn{border-color:#e0ad9f;background:linear-gradient(180deg,#fbf0ec,#fff)}
.theme-tg{margin-top:10px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line);padding:4px 0}
.theme-tg:hover{color:var(--bone)}
/* iteration 2: thin halo rings like the Mahakala hero */
body::before{right:-180px;top:-200px;width:640px;height:640px;border:1px solid #e4ceaa;box-shadow:none;opacity:.9;background:radial-gradient(circle,rgba(255,250,240,.9) 0,rgba(237,234,242,.55) 28%,transparent 62%)}
body::after{content:"";position:fixed;right:-60px;top:-80px;width:400px;height:400px;border-radius:50%;border:1px solid #dcd4e9;pointer-events:none;z-index:0}
.main>.eyebrow:first-child{display:block;padding-bottom:14px;border-bottom:1px solid var(--line)}
.sb-head{border-bottom:1px solid var(--line);margin-bottom:8px}
