:root{--bg:#06070b;--ink:#e9e5db;--muted:#8b93a3;--aria:#7fe0a6;--vesper:#6fa8ff;--ace:#c2b0ff;--kw:#f2b65a;--rule:rgba(255,255,255,.12);--zh-font:"Zen Maru Gothic"}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:#05060a}body{background:transparent;color:var(--ink);font-family:"Fraunces",var(--zh-font),Georgia,sans-serif;font-optical-sizing:auto;line-height:1.7;-webkit-font-smoothing:antialiased;min-height:100vh}body.no-copy{-webkit-user-select:none;-ms-user-select:none;user-select:none}body:before{content:"";position:fixed;inset:0;z-index:-2;background:url(/images/cover.png) center top / cover no-repeat;filter:blur(48px) brightness(.42) saturate(1.06);transform:scale(1.18)}body:after{content:"";position:fixed;inset:0;z-index:-1;background:linear-gradient(180deg,#06070bbd,#06070be6),radial-gradient(1100px 760px at 72% -12%,rgba(40,60,90,.18),transparent)}.book{max-width:760px;margin:0 auto;padding:14vh 24px 30vh}.chapnav{display:flex;gap:1.1rem;justify-content:center;flex-wrap:wrap;align-items:baseline;margin:0 0 11vh;padding-bottom:1.1rem;border-bottom:1px solid var(--rule);font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.74rem;letter-spacing:.08em}.chapnav a{color:var(--muted);text-decoration:none;transition:color .2s}.chapnav a:hover{color:var(--ink)}.chapnav a.on{color:var(--aria)}.chapnav--foot{margin:13vh 0 0;padding:1.2rem 0 0;border-bottom:none;border-top:1px solid var(--rule)}.brandmark{display:block;width:38px;margin:0 auto 5vh;opacity:.85;transition:opacity .2s,transform .2s}.brandmark:hover{opacity:1;transform:scale(1.06)}.brandmark img{width:100%;height:auto;display:block;filter:drop-shadow(0 0 14px rgba(255,236,190,.35))}.masthead{margin-bottom:16vh;text-align:center}.eyebrow{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.72rem;letter-spacing:.32em;text-transform:uppercase;color:var(--muted)}.title{font-size:clamp(2.6rem,9vw,5rem);font-weight:600;letter-spacing:.01em;margin:.35em 0 0;line-height:1.05}.title .sub{display:block;font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.78rem;letter-spacing:.3em;color:var(--muted);margin-top:1.6em;text-transform:uppercase}.beat{font-size:clamp(1.15rem,2.4vw,1.5rem);margin:0 0 2.2rem;font-weight:380}.beat.big{font-size:clamp(1.6rem,4vw,2.4rem);font-weight:500;line-height:1.3}.center{text-align:center}.dim{color:var(--muted)}.kw{color:var(--kw);font-weight:600;text-shadow:0 0 18px rgba(242,182,90,.35)}.c-aria{color:var(--aria);font-style:italic}.c-vesper{color:var(--vesper);font-style:italic}.c-ace{color:var(--ace);font-style:italic}.vnbox{--c:var(--muted);margin:2rem 0 2.2rem;padding:.8rem 1.1rem .85rem;border-radius:8px;background:color-mix(in srgb,var(--c) 7%,rgba(14,17,23,.5))}.vn-aria{--c:var(--aria)}.vn-vesper{--c:var(--vesper)}.vn-ace{--c:var(--ace)}.vn-unknown{--c:var(--muted)}.vnbox__name{display:block;font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.66rem;letter-spacing:.18em;line-height:1;color:var(--c);margin-bottom:.42rem}.vnbox__line{margin:0;font-size:clamp(1.08rem,2.2vw,1.36rem);font-weight:400;line-height:1.6;color:var(--ink)}.vnbox.has-face{display:flex;gap:.85rem;align-items:center}.vnbox__body{flex:1 1 auto;min-width:0}.vnbox__face{flex:0 0 auto;width:60px;height:60px;position:relative;overflow:hidden;border-radius:9px;border:1px solid color-mix(in srgb,var(--c) 26%,transparent);background:#0a0d13}.vnbox__face img{width:100%;height:100%;object-fit:cover;display:block}.vnbox__face-ph{position:absolute;inset:0;display:none;place-items:center;text-align:center;padding:.2rem;font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.5rem;letter-spacing:.06em;text-transform:uppercase;color:var(--c);opacity:.65}.vnbox__face.pending img{display:none}.vnbox__face.pending .vnbox__face-ph{display:grid}.vnbox__face.pending{background:color-mix(in srgb,var(--c) 11%,#0a0d13)}.vnbox__face--sil{display:grid;place-items:center;background:radial-gradient(circle at 50% 32%,#20242e,#0a0d12 78%)}.vnbox__face--sil svg{width:58%;height:58%;fill:color-mix(in srgb,var(--muted) 58%,#0a0d13);opacity:.85}.aside{margin:3.6rem auto;max-width:34ch;text-align:center}.aside__star{display:block;font-size:.82rem;letter-spacing:.4em;color:var(--kw);opacity:.72;text-shadow:0 0 16px rgba(242,182,90,.5);margin-bottom:1.15rem}.aside__text{position:relative;margin:0;padding:1.35rem 0;font-style:italic;font-size:clamp(1.06rem,2.2vw,1.34rem);line-height:1.9;letter-spacing:.02em;color:color-mix(in srgb,var(--ink) 82%,var(--muted))}.aside__text:before,.aside__text:after{content:"";position:absolute;left:50%;transform:translate(-50%);width:130px;height:1px;background:linear-gradient(90deg,transparent,var(--rule),transparent)}.aside__text:before{top:0}.aside__text:after{bottom:0}.alert{font-family:"IBM Plex Mono",var(--zh-font),monospace;color:#ff5b5b;letter-spacing:.28em;font-weight:600;text-transform:uppercase;font-size:.92em;text-shadow:0 0 18px rgba(255,91,91,.45);position:relative;display:inline-block}.glitch{animation:glitch-jit 2.4s steps(2) infinite;background-image:repeating-linear-gradient(0deg,rgba(255,60,60,.18) 0 1px,transparent 1px 3px)}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;left:0;top:0;width:100%;overflow:hidden;pointer-events:none}.glitch:before{color:#ff2d2d;text-shadow:-2px 0 #00e5ff;animation:glitch-noise-1 1.6s steps(12) infinite alternate-reverse}.glitch:after{color:#ff5b5b;text-shadow:2px 0 #ff008c;animation:glitch-noise-2 1.15s steps(10) infinite alternate-reverse}@keyframes glitch-jit{0%{transform:translate(0)}25%{transform:translate(-1px,1px)}50%{transform:translate(1px,-1px)}75%{transform:translate(-1px)}to{transform:translate(1px)}}@keyframes glitch-noise-1{0%{clip-path:inset(0 0 86% 0);transform:translate(-3px)}20%{clip-path:inset(42% 0 38% 0);transform:translate(5px)}40%{clip-path:inset(70% 0 8% 0);transform:translate(-6px)}60%{clip-path:inset(12% 0 62% 0);transform:translate(4px)}80%{clip-path:inset(54% 0 22% 0);transform:translate(-3px)}to{clip-path:inset(30% 0 50% 0);transform:translate(6px)}}@keyframes glitch-noise-2{0%{clip-path:inset(64% 0 14% 0);transform:translate(5px)}25%{clip-path:inset(18% 0 66% 0);transform:translate(-6px)}50%{clip-path:inset(80% 0 4% 0);transform:translate(4px)}75%{clip-path:inset(34% 0 44% 0);transform:translate(-5px)}to{clip-path:inset(6% 0 80% 0);transform:translate(7px)}}.rule{height:1px;background:linear-gradient(90deg,transparent,var(--rule),transparent);margin:8vh 0}.toc{display:flex;flex-direction:column;gap:.4rem;max-width:520px;margin:0 auto}.toc-item{display:flex;gap:1rem;align-items:baseline;text-decoration:none;color:var(--ink);border:1px solid var(--rule);border-radius:12px;padding:1rem 1.2rem;transition:border-color .2s,transform .2s}.toc-item:hover{border-color:var(--aria);transform:translate(4px)}.toc-item .n{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.8rem;color:var(--muted)}.book--wide{max-width:1080px}.contents{display:grid;grid-template-columns:1fr minmax(280px,440px);gap:clamp(2rem,5vw,4.5rem);align-items:center;margin-top:2vh}.contents-text .eyebrow{display:block;letter-spacing:.3em;margin-bottom:1.4rem}.contents-title{font-size:clamp(2rem,5vw,3.2rem);margin:0 0 1.8rem;font-weight:600;line-height:1.05}.contents-poster{width:100%;display:block;border-radius:14px;border:1px solid var(--rule);box-shadow:0 30px 90px -30px #000}@media(max-width:760px){.contents{grid-template-columns:1fr;gap:2rem}.contents-poster{order:-1;max-width:340px;margin:0 auto}}figure.scene{margin:9vh -4vw;position:relative}figure.scene img{width:100%;display:block;border-radius:14px;border:1px solid var(--rule);box-shadow:0 30px 80px -30px #000}figure.scene .ph{display:none}figure.scene.pending img{display:none}figure.scene.pending .ph{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:.55rem;aspect-ratio:16/9;border:1px dashed var(--rule);border-radius:14px;background:linear-gradient(180deg,#0e1320,#0a0e16);color:var(--muted);text-align:center;padding:2rem}.ph .tag{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.68rem;letter-spacing:.25em;text-transform:uppercase}.ph .ttl{font-size:1.35rem;color:var(--ink);font-weight:500}.ph .spec{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.7rem;color:var(--muted)}figure.scene figcaption{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.7rem;letter-spacing:.12em;color:var(--muted);margin-top:1rem;text-align:center}.char{display:grid;grid-template-columns:minmax(0,300px) 1fr;gap:clamp(1.5rem,4vw,3.2rem);align-items:center;margin:14vh 0}.char img{width:100%;display:block;border-radius:14px;border:1px solid var(--rule);box-shadow:0 30px 80px -30px #000}.char--rev img{order:2}.char-name{font-size:clamp(1.6rem,4vw,2.4rem);font-weight:600;line-height:1.1;margin:0 0 .35rem}.char-meta{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-bottom:1.3rem}.char-body p{margin:0 0 1rem}.char-kit{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.78rem;letter-spacing:.04em;color:var(--muted)}@media(max-width:680px){.char{grid-template-columns:1fr;gap:1.6rem}.char img,.char--rev img{order:0;max-width:300px;margin:0 auto}}.colophon{margin-top:20vh;text-align:center;font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.7rem;letter-spacing:.2em;color:var(--muted);text-transform:uppercase}.legend{position:fixed;right:16px;bottom:16px;display:flex;gap:.85rem;font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.62rem;letter-spacing:.1em;background:#080a0eb3;border:1px solid var(--rule);border-radius:999px;padding:.5rem .95rem;backdrop-filter:blur(8px)}.legend span{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted)}.legend i{width:.6rem;height:.6rem;border-radius:50%;display:inline-block}.langswitch{position:fixed;top:16px;right:16px;display:flex;align-items:center;gap:.5rem;font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.7rem;letter-spacing:.12em;background:#080a0eb3;border:1px solid var(--rule);border-radius:999px;padding:.45rem .8rem;backdrop-filter:blur(8px);z-index:10}.langswitch a{color:var(--muted);text-decoration:none;transition:color .2s}.langswitch a:hover{color:var(--ink)}.langswitch a.on{color:var(--ink);font-weight:600}.langswitch .sep{color:var(--rule)}.fontswitch{position:fixed;top:16px;right:16px;display:flex;align-items:center;gap:.15rem;background:#080a0eb3;border:1px solid var(--rule);border-radius:999px;padding:.3rem .35rem;backdrop-filter:blur(8px);z-index:11}.fontswitch button{appearance:none;background:transparent;border:0;cursor:pointer;color:var(--muted);font-size:.86rem;line-height:1;padding:.35rem .6rem;border-radius:999px;transition:color .2s,background .2s}.fontswitch button:hover{color:var(--ink)}.fontswitch button[data-font=noto]{font-family:Noto Sans SC,sans-serif}.fontswitch button[data-font=zen]{font-family:Zen Maru Gothic,sans-serif}.fontswitch button[data-font=ma]{font-family:Ma Shan Zheng,cursive}:root[data-zh-font=noto] .fontswitch button[data-font=noto],:root[data-zh-font=zen] .fontswitch button[data-font=zen],:root[data-zh-font=ma] .fontswitch button[data-font=ma]{color:var(--ink);background:#ffffff1a}@media(max-width:640px){.fontswitch{top:12px;right:12px}}.cover{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.2rem;padding:5vh 16px 7vh;text-align:center}.cover-art{width:auto;height:auto;max-width:min(560px,92vw);max-height:80svh;border-radius:16px;border:1px solid var(--rule);box-shadow:0 40px 120px -40px #000,0 0 90px -30px #5a82d273}.cover-enter{display:flex;flex-direction:column;align-items:center;gap:1.15rem;max-width:36ch}.cover-tagline{margin:0;font-size:clamp(1rem,2.3vw,1.2rem);line-height:1.6;color:var(--ink);opacity:.92}.enter-row{display:flex;gap:.7rem;flex-wrap:wrap;justify-content:center}.enter-row a{font-family:"IBM Plex Mono",var(--zh-font),monospace;font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);text-decoration:none;border:1px solid var(--rule);border-radius:999px;padding:.7rem 1.25rem;transition:border-color .2s,background .2s,transform .2s}.enter-row a:hover{border-color:var(--aria);background:#7fe0a614;transform:translateY(-2px)}.cover-banner{display:block;width:100%;max-width:380px;margin:0 auto 2.4rem;border-radius:14px;border:1px solid var(--rule);box-shadow:0 30px 80px -30px #000}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
