/* Black glass, royal-purple circuitry and red surveillance light. */
:root{--signal:#d31c35;--ice:#8728ef;--panel:#070509;--edge:#3e1b58;--bone:#ddd8e3;--nerve:#ae0e2b;--void:#020103;--text:#e1dce7;--muted:#a296b1;--violet:#8a26f5}
body{background:radial-gradient(ellipse at 50% 0,#190527,transparent 42%),radial-gradient(ellipse at 0 70%,#21040a,transparent 55%),#010102}
.console{border-color:#0f0b13;outline-color:#3c1b52;box-shadow:0 0 0 4px #000,0 0 0 5px #2d0e42,0 30px 100px #000,inset 0 0 45px #000}
.console:before{border-color:#66259955;box-shadow:inset 0 1px #6b299233,inset 0 -2px #ae173322}
header{min-height:325px;padding:35px 29px;background:radial-gradient(ellipse at 50% 50%,#1d0634 0,#07020e 38%,#030205 68%);border-bottom-color:#580923;isolation:isolate}
.terminal-panorama{display:none}header:before{background:repeating-linear-gradient(90deg,transparent 0 69px,#43177124 70px,transparent 71px 140px);opacity:.5}
header:after{height:3px;background:linear-gradient(90deg,#4d0514,#b9162e 18%,#3b0873 38%,#7f15ef 50%,#3b0873 62%,#b9162e 82%,#4d0514);box-shadow:0 0 15px #790b5f44;border:0}
.header-copy{width:29%;z-index:2;pointer-events:none}h1{font-weight:400;font-size:clamp(24px,2.05vw,35px);letter-spacing:2.8px;color:#dedbe4}
header .eyebrow{color:#d43249;letter-spacing:2.8px}.subtitle{color:#a398af}
.status{max-width:27%;z-index:2;border:1px solid #541773;border-left:3px solid #b31b35;background:linear-gradient(120deg,#14081e,#030205);box-shadow:inset 0 0 0 4px #040206,0 8px 25px #000;color:#e1d6ec;border-radius:3px;padding:17px;font-size:9px}
.status span{color:#91799f;line-height:1.8}.status span#vladObservation{color:#ce334e;margin-block:9px;font-size:10px;max-width:230px;letter-spacing:.7px}.status i{background:#f0253b;box-shadow:0 0 9px #ce0c2c}
.status:after{background:linear-gradient(90deg,#d0203c,#6305a0 45%,#8422f0 80%,#29053f)}
.vlad-terminal{position:absolute;left:50%;top:0;transform:translateX(-50%);width:650px;height:323px;z-index:1;isolation:isolate;perspective:900px}
.vlad-grid{position:absolute;inset:24px 3px 30px;background:linear-gradient(90deg,#030105 0,transparent 20% 80%,#030105),repeating-linear-gradient(90deg,transparent 0 29px,#51148133 30px,transparent 31px 60px),repeating-linear-gradient(0deg,transparent 0 19px,#43126226 20px,transparent 21px 40px),radial-gradient(ellipse,#31065733,transparent 70%);transform:perspective(650px) rotateX(12deg);pointer-events:none}
.vlad-hud{position:absolute;inset:0;width:100%;height:310px;pointer-events:none;z-index:2}
.hud-frame{stroke:#492057;stroke-width:1}.hud-trace{stroke:#870a29;stroke-width:1.2}.hud-orbit{stroke:#4e1391;stroke-width:1;stroke-dasharray:2 8}.hud-ring{stroke:#791edd;stroke-width:1;opacity:.55}.hud-ticks{stroke:#c11b3d;stroke-width:2}.hud-node{fill:#e0203d}
.vlad-avatar{position:absolute;left:50%;top:4px;transform:translateX(-50%);width:210px;height:271px;pointer-events:none;z-index:3}
.vlad-face{position:relative;width:100%;height:100%;transform-origin:50% 58%;will-change:transform}
#vladCanvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.vlad-fallback{position:absolute;inset:0;background:url('assets/vlad.png') 49.5% 38.4%/172.42% 133.33% no-repeat;filter:brightness(.8) saturate(1.2);mix-blend-mode:screen}
.avatar-ready .vlad-fallback{visibility:hidden}
.vlad-data{position:absolute;top:112px;width:143px;font:8px/1.9 Consolas,monospace;letter-spacing:1px;color:#702ea9;z-index:2;pointer-events:none}
.vlad-data-left{left:16px}.vlad-data-right{right:16px;text-align:right}.vlad-data span,.vlad-data small{display:block;font-size:7px}.vlad-data b{font-size:12px;color:#9a3bf2;letter-spacing:2px;font-weight:400}.vlad-data i{display:block;margin:9px 0;height:14px;background:repeating-linear-gradient(90deg,#9d173544 0 2px,transparent 2px 5px,#781ccb66 5px 6px,transparent 6px 11px);opacity:.8}
.vlad-identity{position:absolute;bottom:5px;left:50%;transform:translateX(-50%);text-align:center;white-space:nowrap;z-index:4}.vlad-identity strong{display:block;font:500 18px/1.4 Bahnschrift,'Segoe UI',sans-serif;letter-spacing:7px;padding-left:7px;color:#a349fa;text-shadow:0 0 15px #6b00da}.vlad-identity span{font:6px Consolas,monospace;letter-spacing:1.5px;color:#826497}
#vladMotion{position:absolute;right:20px;bottom:26px;z-index:5;padding:5px 7px;font:8px Consolas,monospace;color:#9b7dab;border:1px solid #412055;background:#050207;border-radius:0;min-height:26px}
#vladMotion:hover,#vladMotion:focus-visible{color:#fff;border-color:#a234ff;background:#220333}
.motion-paused .vlad-face{will-change:auto}
.signal-interference .vlad-data-right b{color:#db2348}
.signal-interference .hud-trace{stroke:#c71b3b}
.signal-interference .vlad-data i{opacity:.4}
.house-registry{background:linear-gradient(#140a1c,#040207);border-color:#3b164f;box-shadow:inset 0 1px #611c7c22}
.house-registry>span{color:#8e729f}.house-registry button{border-color:#411b5266;background:#09040d;color:#d8cce3;border-radius:2px}.house-registry button:hover,.house-registry button:focus-visible{background:#26063c;border-color:#781aca}
.toolbar{background:linear-gradient(#100918,#030205);border-bottom-color:#351045}.toolbar button,.directory-heading button{border-radius:2px;border-color:#4e1a68;background:linear-gradient(135deg,#1d092b,#060309);color:#c5b7d3;box-shadow:inset 0 1px #7d25951a,inset 0 -3px #000}
.toolbar button[aria-pressed=true],.directory-heading button[aria-pressed=true]{color:#f2eaf9;border-color:#9224e8;background:linear-gradient(120deg,#39045e,#160221);box-shadow:inset 3px 0 #950aff,inset 0 1px #b74aff22,0 0 10px #7100ce22}
.toolbar button[aria-pressed=true]:after{background:#aa2dff;opacity:.9}.toolbar button:hover,#filters button:hover{border-color:#a627ff;background:#27043f}
.zoom{border-color:#3f1552}.zoom output{color:#b362ff;text-shadow:0 0 8px #7301e8}
.navigation{background:linear-gradient(90deg,#0f0618,#030206 70%,#16040b);border-block-color:#3a154b}.search span,.region-select{color:#9c7daf}.search input,select{border-radius:1px;border-color:#4d1b62;border-bottom-color:#722199;background:#030104;color:#dfd8e7;box-shadow:inset 0 3px 9px #000}
.search input:focus,select:focus{border-color:#9d32f0;box-shadow:0 0 0 2px #7a0dc51a}.scale-note{color:#9054b3}
#network-controls{background:linear-gradient(105deg,#18061188,transparent 70%),repeating-linear-gradient(115deg,#64189408 0 1px,transparent 1px 13px),#060209;border-bottom:3px double #421458}
#filters button{border-radius:1px;border-color:#411953;border-left-color:var(--key);background:#100619;box-shadow:inset 0 1px #79298e22,inset 0 -3px #0009;color:#cbbfd7}
#filters button[aria-pressed=true]{background:linear-gradient(#20092e,#09030e);border-top-color:#682280;border-bottom-color:#4e1565;border-left-color:var(--key);color:#e8dff0}
#filters button[aria-pressed=false]{border-color:#27102d;border-left-color:var(--key);background:#030204;opacity:.55}
.legend{color:#a596b3}.line{border-color:#8b28e5}.caution{color:#ab3148}
.workspace{background:repeating-linear-gradient(90deg,#030105 0 4px,#35104044 5px,#030105 7px)}
.map-section{border-color:#60227a;box-shadow:0 0 0 3px #000,0 0 0 5px #2b0b4088,0 0 0 7px #020104,0 8px 30px #000;border-radius:6px 0 6px 0}
.map-section:before{border-radius:4px 0 4px 0;box-shadow:inset 0 0 0 1px #9a32df22;background:linear-gradient(#d01b38,#d01b38) left top/27px 2px no-repeat,linear-gradient(#d01b38,#d01b38) left top/2px 27px no-repeat,linear-gradient(#9722f2,#9722f2) right top/27px 2px no-repeat,linear-gradient(#9722f2,#9722f2) right top/2px 27px no-repeat,linear-gradient(#9722f2,#9722f2) left bottom/27px 2px no-repeat,linear-gradient(#9722f2,#9722f2) left bottom/2px 27px no-repeat,linear-gradient(#d01b38,#d01b38) right bottom/27px 2px no-repeat,linear-gradient(#d01b38,#d01b38) right bottom/2px 27px no-repeat}
#viewport{background:#020104}#viewport:after{box-shadow:inset 0 0 28px #0009,inset 0 0 0 1px #70149833}
.map-tag{background:linear-gradient(110deg,#26082cf5,#050109f5);border-color:#712791;border-left-color:#d21a38;border-radius:0;color:#d4bfdf}.map-tag span{color:#a743f0}
.compass{border-color:#7b22a6;color:#bc70f1;background:#08010ee8;box-shadow:0 0 0 3px #0008,inset 0 0 9px #760aac22}
.map-foot{background:linear-gradient(#160921,#040106);border-color:#4f1865;color:#9d7fb2}.map-hint{border-left-color:#bb1739;color:#bcaacb;background:#08020fe8;border-radius:0}
.map-feature text,.map-feature .capital-label,.map-feature .minor-label,.map-feature.classified-marker .capital-label,.map-feature.classified-marker .minor-label{fill:#e0d6e7;stroke:#050008}
.map-feature .implant-shell{fill:#08020ff5;stroke:#692198}.map-feature .implant-ribs{stroke:#862bd1;opacity:.85}.map-feature .implant-nerve{stroke:#cf1338}.map-feature .implant-light{fill:#f02a44;stroke:#260411}.map-feature .sigil-frame{fill:#030105;stroke:#7625a1}
.map-feature .icon{fill:#0d0318;stroke:#a94eff}.map-feature .house-sigil{filter:brightness(1.7)}
.map-feature.active .implant-shell,.map-feature:focus-visible .implant-shell,.map-feature:hover .implant-shell{stroke:#bc49ff;fill:#200332;filter:drop-shadow(0 0 3px #7600de)}
.map-feature.active .implant-nerve,.map-feature:focus-visible .implant-nerve{stroke:#ff244b}.map-feature.active .sigil-frame{stroke:#b03cff;filter:drop-shadow(0 0 3px #8400f0)}
.route-sheath{opacity:.3}.route-contacts{opacity:.9}.route-item.active .route-visible,.route-item:focus-visible .route-visible{filter:drop-shadow(0 0 3px #8a10ff)}
#route-layer .route-item:hover .route-visible,#route-layer .route-item:focus .route-visible,#route-layer .route-item.active .route-visible{stroke:var(--route-color)!important;stroke-width:2.2;filter:drop-shadow(0 0 3px var(--route-color));opacity:1!important}
.legend .line[data-route-key]{border-color:var(--route-color);border-top-width:3px}.legend .line:not([data-route-key]){border-color:#99919f}
.city-limit-area{fill:#591491;stroke:#9f2feb;fill-opacity:.14}.active>.city-limit-area{stroke:#e12043;fill:#650923;fill-opacity:.19}
.region-label,.unrevealed{fill:#a590b4}.grid-line{stroke:#5e1879}.grid-text{fill:#a16bbf}
#record{border-color:#602279;background:radial-gradient(ellipse at 100% 0,#35041855,transparent 65%),linear-gradient(#10071a,#040207);box-shadow:inset 0 0 0 3px #0007,0 8px 22px #000;border-radius:0 9px 0 9px;scrollbar-color:#5b1689 #060209}
.record-top{background:linear-gradient(110deg,#35071c,#1f0531 65%,#0b0212);border-color:#731d60;color:#cfb5df}.record-top button{border-color:#5f2369;background:#08010c;color:#cbb7d9;border-radius:1px}.record-top button:hover{background:#720d29}
#recordImage{border-color:#511764}.record-body{background:none}#recordStatus{color:#c33050}#recordName{color:#ede6f1}.role{color:#c0aacd}#recordDesc,dd{color:#cbc0d2}dt{color:#a862d1}
#overviewCaption{color:#a368c8;background:#10051b;border-color:#39104b}#recordSymbol{background:radial-gradient(ellipse,#300644,#06010c 70%);color:#952dee;border-color:#53156f;box-shadow:inset 0 0 40px #0008}
#recordSymbol>svg{filter:drop-shadow(0 0 9px #760add55)}#recordSymbol>svg path{stroke:#a337f4;fill:#13051f}
.house-badge{border-color:#5e1c8155;background:linear-gradient(90deg,#5c0b921f,#61091912,transparent);border-radius:0}.house-badge span{color:#cfb8df}
#viewCityLimits{background:linear-gradient(120deg,#2e063f,#10021d);border-color:#6b2384;border-left-color:#bb1c3d;border-radius:1px;color:#ddc7ef}#viewCityLimits span{color:#a35ece}#viewCityLimits:hover{background:#3c065c;border-color:#aa27ff}
#bookExcerpts{border-color:#461158}#bookExcerpts h4,#bookExcerpts h3{color:#c8aed9}#bookExcerpts blockquote{border-left-color:#971438}#bookExcerpts blockquote p{color:#d6cddc}#recordLink{background:#25053e;border-color:#7625a0}
.directory{border-color:#49145d;border-radius:6px 0 6px 0;background:radial-gradient(ellipse at 100% 0,#3c081928,transparent 70%),#07030c}.directory-heading h3{color:#d4c1e1}.directory-heading span{color:#986aaa}
#placeDirectory button{border-radius:4px 0 4px 0;background:linear-gradient(125deg,#1d082c,#07020e 65%,#15040c);border-color:#51226399;border-left-color:#7428a0;box-shadow:inset 0 1px #7025831f,inset 0 -3px #0008}
#placeDirectory button:after{border-color:#9b1f54}#placeDirectory b{color:#ddd1e6}#placeDirectory small{color:#a78cb9}
#placeDirectory button:hover{background:linear-gradient(125deg,#320747,#13021f);border-color:#9331c5}#placeDirectory button[aria-pressed=true]{background:linear-gradient(125deg,#3d065e,#130219);border-color:#ac29ff;border-left-color:#dc1c43;box-shadow:inset 3px 0 #ba1337,0 0 13px #7300c52b}
.directory-emblem:before{background:linear-gradient(140deg,#7e24bb99,#08020f 30%,#430724cc 70%,#7220af99)}.directory-emblem svg>path{stroke:#a047ef}
#depth-panel{background:linear-gradient(110deg,#190625,#07020b);border-color:#5e1a7e}.depth-level{border-color:#662482}.depth-level b{color:#c8a4df}
#searchResults{border-color:#721997;background:#0c0315}#searchResults button{background:#12051e;border-bottom-color:#431252}#searchResults button:hover,#searchResults button:focus{background:#340553}#searchResults small{color:#a584bb}
footer{background:linear-gradient(#08030d,#160410);color:#8b739e}footer>span{color:#b22743}summary{color:#a565c5}
.terminal-bottom{border-color:#491256;background:#0d0315;color:#85599f;border-radius:0}.terminal-bottom b{color:#a749e1}.terminal-bottom .circuit{background:linear-gradient(90deg,#530a25,#dc1737 25%,#260441 26%,#6922ab 70%,#970aff);border-color:#6b157d66;box-shadow:0 0 10px #6d00a844}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,#viewport:focus-visible{outline:2px solid #b43fff;outline-offset:3px}
@media(min-width:761px) and (max-width:1150px){header{min-height:320px;padding-inline:20px}.vlad-terminal{width:560px}.vlad-data{display:none}.vlad-hud{opacity:.65}.header-copy{width:27%}h1{font-size:23px;letter-spacing:1px}.status{max-width:25%;padding:12px;font-size:8px}.status span#vladObservation{font-size:8px}#vladMotion{right:47px;bottom:23px}}
@media(max-width:760px){header{min-height:422px;padding:0}.vlad-terminal{width:400px;height:315px;top:0;left:50%;transform:translateX(-50%)}.vlad-hud{width:650px;left:50%;transform:translateX(-50%);opacity:.6}.vlad-grid{inset:20px 15px 30px}.vlad-avatar{top:2px;width:207px;height:267px}.vlad-data{display:none}.vlad-identity{bottom:9px}.vlad-identity strong{font-size:17px}.vlad-identity span{font-size:6px;letter-spacing:1px}#vladMotion{right:25px;bottom:36px;font-size:7px;padding:5px;min-height:28px}.header-copy{position:absolute;left:12px;right:12px;bottom:18px;width:auto;text-align:center;align-self:auto}.header-copy h1{font-size:22px;letter-spacing:2px}.header-copy .eyebrow{font-size:7px;letter-spacing:2px;margin-bottom:7px}.header-copy .subtitle{font-size:6px;letter-spacing:1px;margin-top:6px}.house-registry button{border-radius:1px}.record-open #record{border-color:#7f269f;box-shadow:0 -12px 55px #000e,0 0 0 3px #130318;border-radius:1px 9px 1px 9px}.toolbar button{border-radius:1px}#filters button{border-radius:1px}.map-section{border-radius:4px 0 4px 0}.directory{border-radius:4px 0 4px 0}}
@media(prefers-reduced-motion:reduce){.vlad-face{will-change:auto}*{animation:none!important;transition:none!important}}

@media(max-width:760px){.vlad-avatar{top:3px;width:199px;height:257px}}

/* One continuous digital backplane, independent of the portrait's fixed size. */
header:before{inset:0;z-index:0;opacity:1;transform:none;background:url('assets/vlad-header-network.svg') center/100% 100% no-repeat,repeating-linear-gradient(90deg,transparent 0 29px,#51148129 30px,transparent 31px 60px),repeating-linear-gradient(0deg,transparent 0 19px,#43126220 20px,transparent 21px 40px),radial-gradient(ellipse at 50% 50%,#31065728,transparent 80%);pointer-events:none}
.vlad-grid{display:none}
.vlad-hud .hud-frame,.vlad-hud .hud-trace,.vlad-hud .hud-node{display:none}
.header-copy{text-shadow:0 2px 5px #000,0 0 12px #030105}
@media(max-width:760px){header:before{background-size:auto 100%,auto,auto,auto;background-position:center;opacity:.8}}
