
:root{--acid:#97d835;--ink:#060807;--paper:#ededdf;--rail:54px;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body.resonance{margin:0;background:#050706;color:var(--paper);font:16px/1.65 "Microsoft YaHei",sans-serif}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}img{max-width:100%}[hidden]{display:none!important}a:focus-visible,button:focus-visible{outline:3px solid var(--acid);outline-offset:5px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.skip-link{position:fixed;top:-100px;left:20px;z-index:50;background:var(--acid);color:black;padding:8px}.skip-link:focus{top:8px}.resonance-header{height:92px;display:flex;align-items:center;gap:30px;padding:12px 34px 12px 18px;margin-right:var(--rail);background:#020303;position:relative;z-index:5}.resonance-header img{width:84px;height:65px;object-fit:contain}.header-rule{height:53px;border-left:3px solid white}.resonance-header nav{display:flex;gap:18px;font-size:20px;letter-spacing:.18em}.manage-link{margin-left:auto;color:#a6ae9f;font-size:12px;letter-spacing:.08em}.special-board{margin-right:var(--rail)}.special-hero{height:calc(100svh - 92px);min-height:540px;position:relative;overflow:hidden;background:#000}.hero-scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.87}.hero-grid{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 69px,#9fcf8825 70px),repeating-linear-gradient(90deg,transparent 0 89px,#9fcf8820 90px);animation:grid-drift 18s linear infinite;mask-image:linear-gradient(90deg,#0008,transparent)}.hero-wordmark{position:absolute;bottom:3%;left:0;width:40%;filter:drop-shadow(0 0 18px #0008)}.special-scroll-cue{position:absolute;bottom:18px;left:47%;font:10px monospace;letter-spacing:.18em;color:#d4e0c5}.special-scroll-cue span{display:block;text-align:center;font-size:22px}.special-map{position:absolute;right:9%;bottom:15%;width:clamp(110px,11vw,205px);aspect-ratio:1;border:2px solid #7c887f;background:#080c09;overflow:hidden}.map-terrain,.map-grid{position:absolute;inset:-20%}.map-terrain{background:url('resonance/terrain.webp') center/cover;filter:invert(1);opacity:.8;animation:terrain-drift 12s ease-in-out infinite alternate}.map-grid{background:repeating-linear-gradient(0deg,transparent 0 22px,#a8caa838 23px),repeating-linear-gradient(90deg,transparent 0 22px,#a8caa838 23px);animation:grid-drift 8s linear infinite}.map-crosshair{position:absolute;width:100%;height:100%;animation:crosshair-scan 7s ease-in-out infinite alternate}.map-crosshair:before,.map-crosshair:after{content:"";position:absolute;background:#ca3739;box-shadow:0 0 6px #ff333355}.map-crosshair:before{height:1px;left:8%;right:8%;top:50%}.map-crosshair:after{width:1px;top:8%;bottom:8%;left:50%}.map-coordinate{position:absolute;bottom:1px;left:3px;font:7px monospace;color:#abbca4}.special-nav{position:fixed;right:0;top:0;height:100dvh;width:var(--rail);z-index:20;background:var(--acid);color:#26352c;transition:width .4s ease;box-shadow:-1px 0 #546637}.special-nav.is-open{width:min(340px,85vw)}.special-nav-toggle{position:absolute;top:0;left:0;width:var(--rail);height:76px;z-index:2;border:0;background:var(--acid);display:grid;place-items:center}.nav-triangle{display:block;width:0;height:0;border-top:22px solid transparent;border-bottom:22px solid transparent;border-right:32px solid #2c3833;transition:transform .3s}.is-open .nav-triangle{transform:rotate(180deg)}.special-nav-body{height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#344d27 transparent;scroll-behavior:smooth}.nav-brand{height:100dvh;min-height:580px;padding:90px 32px 30px;display:flex;flex-direction:column;gap:28px}.nav-brand>img{width:100%;max-height:35vh;object-fit:contain}.nav-topography{margin-top:auto;width:100%;height:28vh;background:url('resonance/terrain.webp') center/cover;mix-blend-mode:multiply;opacity:.65;animation:terrain-drift 12s ease-in-out infinite alternate}.nav-scroll{font-size:12px;text-align:center;font-weight:bold}.nav-links{min-height:100dvh;padding:90px 30px 50px;display:flex;flex-direction:column;justify-content:space-around;gap:36px}.nav-links a{font-size:clamp(22px,2.4vw,36px);font-weight:900;line-height:1.1;letter-spacing:-.045em}.nav-links small{display:block;margin:10px 0 0 38px;font-size:12px;font-weight:400;letter-spacing:.2em}.nav-links a:hover{color:#000;transform:translateX(6px)}.special-section{position:relative;min-height:65vh;padding:90px clamp(32px,8vw,150px);border-top:1px solid #293126;scroll-margin-top:0}.section-number{font:11px/1.4 monospace;letter-spacing:.2em;color:#96ae8d}.special-section h2{font-size:clamp(30px,4vw,62px);line-height:1.1;font-weight:500;margin:24px 0 55px}.special-section h2>span{display:block;font-size:12px;letter-spacing:.3em;margin-top:14px;color:#a3b198}.intro-layout{display:grid;grid-template-columns:1fr 145px;gap:60px}.markdown-body{overflow-wrap:anywhere;max-width:900px;line-height:1.95}.markdown-body a{text-decoration:underline;text-underline-offset:4px;color:var(--acid)}.markdown-body img{height:auto}.markdown-body pre,.markdown-body table{max-width:100%;overflow:auto}.markdown-body pre{white-space:pre-wrap}.intro-tags{font-family:monospace;color:#a7ad9f}.intro-tags>span{font-size:24px}.section-cross{position:absolute;right:3%;bottom:25px;font:80px/1 sans-serif}.special-downloads{overflow:hidden;background:linear-gradient(0deg,#050706,transparent),repeating-linear-gradient(90deg,transparent 0 43px,#90bb7022 44px),repeating-linear-gradient(0deg,transparent 0 43px,#90bb7022 44px);animation:grid-drift 24s linear infinite}.special-downloads h2 mark{background:var(--acid);padding:0 6px;color:#050706;font:clamp(35px,6vw,85px)/1 serif;letter-spacing:.05em}.special-downloads h2>span{color:white;font-size:clamp(22px,3vw,42px);letter-spacing:0;line-height:.95;margin-left:4px}.download-copy{margin:40px 0}.resource-list{display:grid;gap:16px}.resource-list a{display:flex;justify-content:space-between;gap:20px;padding:18px;border:1px solid #52624a;background:#0c160eee}.resource-list a:hover{border-color:var(--acid)}.resource-list small{color:var(--acid)}.measurement{position:absolute;height:35px;bottom:0;left:4%;right:4%;border-bottom:1px solid #7b8b6e;background:repeating-linear-gradient(90deg,#9aa98f 0 1px,transparent 1px 9px);mask-image:linear-gradient(0deg,black,transparent)}.special-wiki{padding-left:clamp(30px,8vw,145px);background:radial-gradient(ellipse at 10% 50%,#1e2c18,transparent 65%)}.wiki-grid{display:grid;grid-template-rows:repeat(2,auto);grid-auto-flow:column;grid-auto-columns:clamp(180px,22vw,290px);gap:38px 30px;overflow-x:auto;padding:22px 16px 30px;scroll-snap-type:x proximity;scrollbar-color:var(--acid) #192115}.wiki-card{position:relative;scroll-snap-align:start;min-width:0;aspect-ratio:2/3;border:1px solid #68735e;background:#151b13;transition:transform .25s,border-color .25s,box-shadow .25s;display:block}.wiki-card>img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.72);transition:filter .25s}.wiki-card:hover,.wiki-card:focus-visible{z-index:2;transform:scale(1.045);border-color:var(--acid);box-shadow:0 0 0 2px var(--acid),0 12px 40px #000a}.wiki-card:hover>img,.wiki-card:focus-visible>img{filter:saturate(1.15)}.wiki-placeholder{height:100%;display:grid;place-items:center;font-size:60px;color:var(--acid)}.wiki-card-label{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#020704ed 38%);padding:24px 14px 12px}.wiki-card-label small{font:9px monospace;letter-spacing:.2em}.wiki-card-label strong{display:block;font-size:24px;line-height:1.4}.wiki-card-label>span{font-size:10px;color:var(--acid)}.special-footer{margin-right:var(--rail);padding:40px 8%;border-top:1px solid #293126;color:#829575;font:10px monospace;display:flex;justify-content:space-between;gap:20px}.character-page{padding:45px 7vw 80px;background:radial-gradient(ellipse at 10% 50%,#203520,transparent 60%);min-height:calc(100vh - 92px)}.character-back{display:inline-block;margin:10px 0 35px;color:var(--acid)}.character-layout{display:grid;grid-template-columns:minmax(260px,.8fr) 1fr;gap:8vw;align-items:start}.character-art{border-bottom:5px solid var(--acid);max-width:480px}.character-art img{width:100%;display:block}.character-copy h1{font-size:clamp(50px,6vw,90px);margin:5px 0 30px;line-height:1}.character-subtitle{font:24px monospace;letter-spacing:.15em;color:var(--acid)}.character-copy hr{border:0;border-top:1px solid #354b30;margin:35px 0}.empty-state{min-width:260px;color:#a7b89b}
@keyframes grid-drift{to{background-position:90px 70px}}@keyframes terrain-drift{from{transform:translate(-3%,2%) scale(1.07)}to{transform:translate(5%,-4%) scale(1.18)}}@keyframes crosshair-scan{from{transform:translate(-18%,12%)}to{transform:translate(18%,-15%)}}@media(max-width:700px){:root{--rail:36px}.resonance-header{height:68px;padding:8px 10px;gap:12px}.resonance-header img{width:46px;height:44px}.resonance-header nav{font-size:12px;gap:8px;letter-spacing:.05em}.header-rule{height:34px;border-width:2px}.manage-link{font-size:10px}.special-hero{height:68svh;min-height:370px}.hero-scene{object-fit:cover}.hero-wordmark{width:70%;bottom:12%}.special-map{width:100px;right:5%;bottom:35%}.special-scroll-cue{left:28%;font-size:8px}.special-section{padding:65px 24px}.intro-layout{grid-template-columns:1fr;gap:25px}.intro-tags p{font-size:12px}.special-section h2{margin-bottom:30px}.wiki-grid{grid-auto-columns:min(58vw,250px);gap:25px 20px;padding:16px 10px 28px}.nav-triangle{border-top-width:14px;border-bottom-width:14px;border-right-width:23px}.character-layout{grid-template-columns:1fr}.character-art{max-width:320px}.resource-list a{flex-direction:column}.special-footer{font-size:9px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.resonance *, .resonance *:before{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* One viewport per chapter; hidden chapters remain readable without JS. */
body.resonance-paged{--header-height:92px;height:100dvh;overflow:hidden}
.resonance-paged .resonance-header{height:var(--header-height)}
.resonance-paged main.special-board{height:calc(100dvh - var(--header-height));position:relative}
.resonance-paged main.special-board>section{height:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--acid) #192115;scroll-behavior:auto}
.resonance-paged main.special-board>.special-hero{overflow:hidden}
.resonance-paged .special-section{padding-top:32px;padding-bottom:76px}
.resonance-paged .special-section h2{font-size:clamp(28px,3vw,46px);margin:14px 0 25px}
.resonance-paged .special-footer{display:none}
.resonance-paged .wiki-grid{grid-auto-columns:clamp(100px,calc((100dvh - 390px)/3),250px);gap:16px 24px;padding-top:12px;padding-bottom:16px}
.resonance-paged .wiki-card-label{padding:18px 10px 7px}
.resonance-paged .wiki-card-label strong{font-size:20px}
/* Reference-style bottom navigation: label, fine rule, dots and counter. */
.page-controls{position:fixed;left:32px;right:calc(var(--rail) + 32px);bottom:0;height:62px;z-index:10;display:flex;align-items:center;gap:24px;color:#fff;background:linear-gradient(transparent,#030504e8 40%);border:0;padding:12px 0 0}
.page-controls:before,.page-controls:after{content:"";position:absolute;top:1px;height:12px;width:1px;background:#eeeeeb}
.page-controls:before{left:0}.page-controls:after{right:0}
.page-controls-label{font:800 14px/1 Arial,sans-serif;white-space:nowrap}
.page-controls-rule{height:1px;flex:1;min-width:12px;background:#ffffff60;position:relative}
.page-controls-rule:before,.page-controls-rule:after{content:"";position:absolute;top:-.5px;width:10px;height:2px;background:white}
.page-controls-rule:before{left:0}.page-controls-rule:after{right:0}
.page-dots{display:flex;align-items:center;gap:4px}
.page-dot{display:grid;place-items:center;width:30px;height:36px;padding:0;border:0;border-radius:50%;background:transparent;color:white}
.page-dot:before{content:"";width:8px;height:8px;border:2px solid #777;border-radius:50%;transition:background .2s,border-color .2s}
.page-dot[aria-current]:before{background:#fff;border-color:#fff}
.page-dot:hover:before,.page-dot:focus-visible:before{border-color:#fff}
.page-counter{font:700 21px/1 Consolas,monospace;letter-spacing:.16em;white-space:nowrap;min-width:95px;text-align:right}
.resonance-paged .special-scroll-cue{bottom:76px}
@media(max-width:700px){.page-controls{left:14px;right:calc(var(--rail) + 14px);gap:8px;height:58px}.page-controls-label{font-size:10px}.page-dots{gap:0}.page-dot{width:23px;height:34px}.page-dot:before{width:6px;height:6px}.page-counter{font-size:14px;letter-spacing:.04em;min-width:58px}.page-controls-rule{min-width:4px}}
@media(max-width:380px){.page-controls-rule{display:none}.page-controls{justify-content:space-between;gap:4px}.page-dot{width:21px}}
@media(max-width:700px){body.resonance-paged{--header-height:68px}.resonance-paged .special-section{padding-top:24px}.resonance-paged .wiki-grid{grid-auto-columns:clamp(100px,calc((100dvh - 390px)/3),220px)}.resonance-paged .special-downloads h2 mark{font-size:clamp(24px,8vw,42px)}}

/* The resource ruler undulates; its baseline stays anchored. */
.measurement.measurement-wave{height:44px;display:flex;align-items:flex-end;justify-content:space-between;overflow:hidden;background:none;mask-image:none;pointer-events:none}
.measurement-tick{display:block;flex:0 0 1px;height:28px;background:#b7c6aa;transform-origin:center bottom;animation:ruler-wave 3.2s ease-in-out var(--wave-delay) infinite;opacity:.85}
.measurement-tick:nth-child(5n + 1){height:36px;background:#e0e8d8}
@keyframes ruler-wave{0%,100%{transform:scaleY(.25);opacity:.45}50%{transform:scaleY(1);opacity:1}}
.resonance-paged .special-downloads .measurement{bottom:62px}
.resonance-paged .special-downloads{padding-bottom:125px}
@media(prefers-reduced-motion:reduce){.measurement-tick{animation:none;transform:scaleY(.6)}}

/* Grid travels northeast and fades into the upper-right darkness. */
.special-downloads{background:#050706;animation:none;isolation:isolate}
.resource-grid-motion{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;mask-image:linear-gradient(35deg,#000 0%,#000b 35%,transparent 85%)}
.resource-grid-motion:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 43px,#90bb7050 43px 44px),repeating-linear-gradient(0deg,transparent 0 43px,#90bb7050 43px 44px);animation:resource-grid-northeast 3s linear infinite}
@keyframes resource-grid-northeast{from{background-position:0 0}to{background-position:44px -44px}}
@media(prefers-reduced-motion:reduce){.resource-grid-motion:before{animation:none}}

/* Navigation branding and menu are two discrete steps of the same journey. */
.resonance-guided .nav-brand{height:100%;min-height:0;padding-top:90px;gap:20px}
.resonance-guided .nav-links{height:100%;min-height:0;justify-content:space-evenly;padding:80px 30px 30px;gap:22px}
.resonance-guided .nav-links a{padding:12px 8px;border-left:3px solid transparent;font-size:clamp(22px,2.4vw,32px)}
.resonance-guided .nav-links a[aria-current]{border-left-color:#111e13;background:#17271620;color:#fff;transform:translateX(5px)}
.resonance-guided .special-nav-body{scroll-behavior:auto}
@media(min-width:901px){.resonance-guided.navigation-open .special-board,.resonance-guided.navigation-open .resonance-header{margin-right:340px}.resonance-guided.navigation-open .page-controls{right:360px}}
@media(max-height:580px){.resonance-guided .nav-links{gap:8px;padding-top:70px}.resonance-guided .nav-links a{font-size:21px;padding:6px}.resonance-guided .nav-links small{margin-top:5px}.resonance-guided .nav-brand{padding-top:80px;gap:12px}}

/* Low-contrast binary backdrop remains decorative and cannot capture input. */
.introduction{isolation:isolate;background:#050706}
.binary-field{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;user-select:none;opacity:.18;mask-image:linear-gradient(90deg,#0008,transparent 48%,#000b)}
.binary-row{position:absolute;left:0;width:100%;height:24px;overflow:hidden;color:#8db975;font:13px/24px Consolas,monospace;letter-spacing:4px;white-space:nowrap}
.binary-row>span{display:inline-block;min-width:200%;animation:binary-flow var(--binary-time) linear var(--binary-delay) infinite}
.binary-right>span{animation-direction:reverse}
.binary-flicker>span{animation:none;opacity:.8}
@keyframes binary-flow{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.introduction[hidden] .binary-row>span{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.binary-row>span{animation:none!important}}

/* Vertical editorial edge from the supplied layout. */
.intro-side-label{position:absolute;left:20px;top:35px;bottom:90px;width:48px;display:flex;flex-direction:column;align-items:center;gap:10px;color:#fff;border-left:1px solid #ffffff35;padding-left:7px;pointer-events:none}
.intro-side-block{display:block;width:40px;height:40px;flex:0 0 40px;background:#fff}
.intro-side-text{writing-mode:vertical-rl;text-orientation:mixed;display:flex;flex-direction:column;gap:5px;font:700 15px/1.35 Consolas,"Microsoft YaHei",monospace;letter-spacing:1.5px;white-space:nowrap;max-height:100%;overflow:hidden}
.intro-side-text span{display:block}
.resonance-paged .introduction{padding-left:max(100px,8vw)}
@media(max-width:700px){.intro-side-label{left:9px;top:26px;width:32px;gap:7px;padding-left:4px}.intro-side-block{width:27px;height:27px;flex-basis:27px}.intro-side-text{font-size:11px;letter-spacing:1px}.resonance-paged .introduction{padding-left:60px}}

.wiki-management{position:absolute;top:32px;right:clamp(24px,5vw,80px);display:flex;gap:12px;font-size:12px}
.wiki-management a{padding:8px 14px;border:1px solid #708862;color:var(--acid);background:#071007}
.wiki-management a:hover{border-color:var(--acid);background:#1d2d15}
@media(max-width:700px){.wiki-management{position:static;margin:0 0 12px;flex-wrap:wrap;gap:8px}.wiki-management a{padding:6px 10px}}

/* Uploaded Basic previews crossfade over the fallback artwork. */
.hero-gallery{position:absolute;inset:0;overflow:hidden}
.hero-slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.2s ease-in-out;pointer-events:none}
.hero-slide.is-current{opacity:1}
.hero-bubbles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.hero-bubbles span{position:absolute;left:var(--bubble-x);bottom:-12px;width:var(--bubble-size);height:var(--bubble-size);border:1px solid #d7f4be90;border-radius:50%;background:#b4e68630;box-shadow:0 0 8px #b8e18a30;opacity:0;animation:hero-bubble-rise var(--bubble-duration) linear var(--bubble-delay) infinite}
@keyframes hero-bubble-rise{0%{transform:translate(0,0);opacity:0}12%{opacity:.65}65%{opacity:.3}100%{transform:translate(var(--bubble-drift),-75vh);opacity:0}}
.special-hero[hidden] .hero-bubbles span{animation-play-state:paused}
.hero-manage{position:absolute;top:20px;right:22px;z-index:3;font-size:12px;padding:8px 12px;background:#061006c9;border:1px solid #849977;color:#d7edc5}
.hero-gallery-controls{position:absolute;right:22px;bottom:78px;z-index:3;display:flex;gap:6px}
.hero-gallery-controls button{color:#dcebcf;background:#071006c9;border:1px solid #758369;padding:5px 12px;font-size:12px;min-height:32px}
.has-custom-preview .hero-fallback,
.has-custom-preview .hero-wordmark{display:none!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important}
.has-custom-preview .special-map{right:9%!important;bottom:18%!important;left:auto!important;top:auto!important;width:clamp(90px,10vw,160px)!important;height:auto!important}
/* Each grid layer resets only while transparent; staggered layers bridge loops. */
.resource-grid-motion:before,.resource-grid-motion:after{content:"";position:absolute;inset:-88px;background:repeating-linear-gradient(90deg,transparent 0 43px,#90bb7050 43px 44px),repeating-linear-gradient(0deg,transparent 0 43px,#90bb7050 43px 44px);animation:resource-grid-dissolve 6s linear var(--grid-phase-a,0s) infinite}
.resource-grid-motion:after{animation-delay:var(--grid-phase-b,-3s)}
@keyframes resource-grid-dissolve{0%{transform:translate(0,0);opacity:0}25%{opacity:.65}75%{opacity:.65}100%{transform:translate(88px,-88px);opacity:0}}
@media(prefers-reduced-motion:reduce){.hero-bubbles{display:none}.hero-slide{transition:none}.resource-grid-motion:before{animation:none;opacity:.65}.resource-grid-motion:after{display:none}}
