:root{--accent:#68ff87;--muted:#a7c5ad;--text:#edfff0;--panel:#07110a;--line:#1b4c2a;color-scheme:dark;}
html,body{background-color:#030805;color:#edfff0}
body{isolation:isolate;background-image:radial-gradient(ellipse at 50% 0%,rgba(10,45,20,.5),transparent 55rem)}
body>canvas.matrix-rain{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none;opacity:.25;mix-blend-mode:screen}
body>:not(.matrix-rain):not(script){position:relative;z-index:1}
body>.numogram-float{position:fixed;z-index:20}
:focus-visible{outline-color:#68ff87!important}
/* Home */
.header h1,.title-accent{color:#edfff0}
.numogram-link{border-color:#42dc68;background:rgba(25,145,55,.19);color:#83ff9b;box-shadow:0 0 0 1px rgba(65,255,105,.16),0 8px 24px rgba(0,0,0,.4)}
.numogram-link:hover,.numogram-link:focus-visible{background:rgba(25,175,61,.3);color:#effff1}
.demons-link{border-color:#78ff91;background:rgba(16,78,30,.34);color:#b6ffc3;box-shadow:0 0 0 1px rgba(98,255,130,.15),0 8px 24px rgba(0,0,0,.4)}
.demons-link:hover,.demons-link:focus-visible{border-color:#baffc5;background:rgba(27,120,48,.44);color:#fff}
.cipher-note,.input-hint,.site-credit{color:#a7c5ad}
.input-shell{border-color:#319c4c}
/* Interactive Numogram */
.topbar{background:rgba(3,10,5,.96);border-color:#1b4c2a}
.brand,.brand-mark{color:#87ff9b}
.workspace-name,.local-badge{color:#b0cdb5}
.local-badge i{background:#68ff87;box-shadow:0 0 10px #68ff87}
.workspace{background:#030805}
.scene-panel{background:radial-gradient(ellipse at 48% 43%,rgba(10,44,18,.62),rgba(3,10,5,.72) 65%,rgba(2,6,3,.84))}
.scene-panel:before{background-image:radial-gradient(rgba(90,255,125,.13) .6px,transparent .7px);opacity:.45}
.region-rail{color:#d2f5d8}
.region-rail:after{background:linear-gradient(to bottom,transparent 2%,#68ff87 18%,#35c75b 52%,#68ff87 84%,transparent)}
.region-warp,.region-torque,.region-plex{color:#8dffa1}
.region-rail-block span,.scene-heading p{color:#b2cdb7}
#viewport{background:transparent}
.node-label{color:#edfff0;text-shadow:0 0 8px #07190b,0 0 16px #4dff71}
.node-label.selected{color:#afffbd;outline-color:rgba(104,255,135,.7)}
.gate-label{color:#b5ffbe;text-shadow:0 0 8px #40ff6c}
.scene-tools{background:rgba(2,12,5,.94);border-color:#286b39;box-shadow:0 8px 35px #0009,0 0 18px #20a44322}
.scene-tools button{color:#adffba}
.scene-tools button:hover{background:#10351a}
.scene-bottom{color:#a4c2aa}
.legend-dot{background:#68ff87;box-shadow:0 0 8px #68ff87}
.legend-line{background:#86ffa0}.legend-gate{border-color:#9dffad}
.view-status,.eyebrow{color:#9ae9a7}
.sidebar{background:rgba(5,14,7,.97);border-color:#1b4c2a}
.tabs{border-color:#1b4c2a}.tabs button{color:#a3bda8}.tabs button.active{color:#dffff0;border-color:#68ff87}
button{border-color:#285a34}button:hover{background:#102817;border-color:#4cae61}
button[aria-pressed=true]{background:#15321b;border-color:#68ff87;color:#dffff0}
.zone-index button{background:#08170c;color:#c7ffd0}
.zone-large,h1 span{color:#88ff9b}
.pair-equation,.legend-dossier,.layer-controls,.formula-note{border-color:#1b4c2a;background:#09180d}
.pair-equation{color:#c6ffd0}.connection-list button span,.text-button{color:#a6ffb4}
.legend-dossier:hover{border-color:#68ff87;background:#102417}
.legend-dossier-number{color:#83ff98}.legend-dossier-copy strong{color:#edfff0}.legend-dossier-copy em,.legend-dossier-copy small{color:#b8d8bf}
.layer-controls input{accent-color:#68ff87}
.warpplex-link{border-color:#28713b;background:linear-gradient(110deg,#0b2812,#08120b);color:#c7ffd0}
.warpplex-link:hover{border-color:#68ff87;background:#10321a}.warpplex-link span{color:#68ff87}
.demon-names-link{border-color:#3e9d51;background:linear-gradient(110deg,#0d2b15,#08120b);color:#c9ffd2}
.demon-names-link:hover{border-color:#8dffa1;background:#12361d}.demon-names-link span{color:#8dffa1}
.zone-lore,.lore-grid,.syzygy-card,.door-card{border-color:#205332;background:#09170d}
.zone-lore p,.lore-region,.door-card em,.syzygy-card em{color:#bfdbc4}
.lore-grid strong,.syzygy-card strong,.door-card strong{color:#eaffed}
.lore-grid span,.lore-sequence span,.syzygy-card>span,.door-card>span{color:#91d89e}
.sidebar-footer{color:#81a989;border-color:#1b4c2a}
/* Demon explorer */
body:has(.roster){background-image:radial-gradient(ellipse at 35% 0%,rgba(11,47,20,.65),transparent 56rem)}
body:has(.roster) .card{background:linear-gradient(145deg,rgba(8,23,12,.96),rgba(3,10,5,.97));border-color:#1e5830;box-shadow:0 18px 50px #0008,0 0 20px #26a84612}
body:has(.roster) .cardhead,body:has(.roster) .tools{background:rgba(7,18,9,.97);border-color:#205332}
body:has(.roster) .count{border-color:#367b45;background:#09190d;color:#8cff9f}
body:has(.roster) .eyebrow,body:has(.roster) .kicker{color:#91ffa2}
body:has(.roster) .top h1{color:#f0fff2;text-shadow:0 0 22px #38d75b22}
body:has(.roster) .top p{color:#c4dec9}
body:has(.roster) .row{color:#ebffef}
body:has(.roster) .row:hover{background:#0d2613}
body:has(.roster) .row[aria-pressed=true]{background:#12331b;border-color:#68ff87;box-shadow:inset 3px 0 #68ff87}
body:has(.roster) .mesh,body:has(.roster) .meta{color:#a8c9af}
body:has(.roster) .address{border-color:#327345;background:#08180c;color:#adffba}
body:has(.roster) .search{background:#030805;border-color:#347345;color:#edfff0}
body:has(.roster) .search:focus{border-color:#68ff87;box-shadow:0 0 0 2px #68ff8738}
body:has(.roster) .clear{background:#0c2111;border-color:#347345;color:#dffff0}
body:has(.roster) .detail{background:#08170c;border-color:#205332}
body:has(.roster) .detail p,body:has(.roster) .map-note{color:#b8d6be}
body:has(.roster) .large-address{color:#8dffa1}
body:has(.roster) .tag{background:#68ff87;color:#021006}
body:has(.roster) .source-note{border-color:#205332;background:#07130a;color:#bdd8c2}
body:has(.roster) .source-note strong{color:#eaffed}
body:has(.roster) .footer{color:#a3c5aa}
body:has(.roster) a{color:#9dffad}
body:has(.roster) .base-route{stroke:#b1c8b5}
body:has(.roster) .gate-chip{fill:#9cffaa}
body:has(.roster) .zone{fill:#c7ffd0;stroke:#68ff87;filter:drop-shadow(0 0 7px #54ff7044)}
body:has(.roster) .zone-num{fill:#031008}
body:has(.roster) .region-label,body:has(.roster) .zone-name{fill:#d0f5d6}
body:has(.roster) .span-line{stroke:#afff62;filter:drop-shadow(0 0 4px #68ff87)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
/* Futuristic typography: self-hosted open fonts. */

@font-face{font-family:Unbounded;src:url('./fonts/Unbounded.ttf') format('truetype');font-weight:200 900;font-style:normal;font-display:swap}
@font-face{font-family:'Pixelify Sans';src:url('./fonts/PixelifySans.ttf') format('truetype');font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:Orbitron;src:url('./fonts/Orbitron.ttf') format('truetype');font-weight:400 900;font-style:normal;font-display:swap}

body:has(.roster){font-family:Unbounded,sans-serif;font-weight:400;--mono:Unbounded,sans-serif;line-height:1.65}
body:has(.roster) .top h1,body:has(.roster) .cardhead h2{font-family:'Pixelify Sans',sans-serif;font-weight:500;letter-spacing:.015em}
body:has(.roster) .top h1{font-size:clamp(2.4rem,4.8vw,4rem);line-height:1.08}
body:has(.roster) .cardhead h2{font-size:1.55rem;line-height:1.15}
body:has(.roster) .demon,body:has(.roster) .detail h3{font-family:Orbitron,sans-serif;font-weight:500;letter-spacing:.025em}
body:has(.roster) .large-address,body:has(.roster) .address{font-family:Orbitron,sans-serif}
body:has(.roster) .zone-num{font-family:Orbitron,sans-serif;font-weight:600}
body:has(.roster) .gate-text,body:has(.roster) .region-label{font-family:Orbitron,sans-serif}
body:has(.roster) .zone-name{font-family:Unbounded,sans-serif;font-size:9px}
body:has(.roster) .top p,body:has(.roster) .map-note,body:has(.roster) .source-note{line-height:1.8}
body:has(.roster) .meta{line-height:1.6;margin-top:4px}

@font-face{font-family:'Zen Dots';src:url('./fonts/ZenDots.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}

/* Zen Dots introduction */
body:has(.roster) .top .eyebrow,body:has(.roster) .top h1,body:has(.roster) .top p{font-family:'Zen Dots',sans-serif;font-weight:400}
body:has(.roster) .top h1{font-size:clamp(2rem,3.8vw,3.4rem);line-height:1.24;letter-spacing:0;margin:13px 0 20px}
body:has(.roster) .top p{font-size:clamp(.8rem,1.1vw,.95rem);line-height:1.9;max-width:950px;margin:0 0 13px}
body:has(.roster) .top p:last-child{margin-bottom:0}
body:has(.roster) .top .eyebrow{font-size:.7rem;letter-spacing:.1em}
body:has(.roster) .top{align-items:center}
