/* Chapter IX Memorial — midnight archive */
:root{--bg:#040812;--ink:#e6efff;--dim:#8392ad;--blue:#77bfff;--blue2:#b6ddff;--cyan:#8be8ff;--gold:#e8c993;--line:rgba(142,190,241,.17);--panel:#080f1d;--mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--serif:"Songti SC","STSong","Noto Serif SC",serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;--ease:cubic-bezier(.2,.8,.2,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:92px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.7 var(--sans);overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}img{max-width:100%;display:block}::selection{background:#367bb866}.mono{font-family:var(--mono);letter-spacing:.06em}.serif{font-family:var(--serif)}
::-webkit-scrollbar{width:9px}::-webkit-scrollbar-track{background:#03060c}::-webkit-scrollbar-thumb{border:2px solid #03060c;border-radius:8px;background:#263d5d}
#stars,.aurora,#grain{position:fixed;inset:0;pointer-events:none}#stars{z-index:0}.aurora{z-index:0;overflow:hidden}.aurora i{position:absolute;width:58vw;height:58vw;border-radius:50%;filter:blur(100px);opacity:.1;background:#1c65ae}.aurora i:nth-child(1){left:-20vw;top:-25vw}.aurora i:nth-child(2){right:-20vw;bottom:-28vw;background:#2769a3}.aurora i:nth-child(3){left:45vw;top:38vh;width:38vw;height:38vw;background:#3164a0}#grain{z-index:60;opacity:.035;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
#scrollbar-progress{position:fixed;z-index:120;left:0;top:0;width:0;height:2px;background:linear-gradient(90deg,#538cc8,#b3d9ff);box-shadow:0 0 12px #76baff88}#cursor-glow{position:fixed;z-index:1;width:440px;height:440px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#72b8ff0b,transparent 68%);transform:translate(-50%,-50%);opacity:0}
/* terminal */
#boot{position:fixed;z-index:200;inset:0;display:grid;place-items:center;background:#020712;color:#83bdff;font:13px/1.9 var(--mono);overflow:hidden;transition:opacity .8s,visibility .8s}body[data-boot=done] #boot{opacity:0;visibility:hidden}.scanlines{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,#5aa5ff08 4px,#5aa5ff08 5px);pointer-events:none}.crt{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 45%,#0008 100%);pointer-events:none}.boot-frame{position:relative;width:min(760px,88vw);padding:26px 30px 22px;border:1px solid #3b79b255;background:linear-gradient(145deg,#06142aee,#030914f2);box-shadow:0 0 70px #1d6db51b,inset 0 0 36px #3181c20a;animation:crt-in .8s var(--ease) both}.boot-titlebar{display:flex;align-items:center;gap:11px;border-bottom:1px solid #3975aa44;padding-bottom:12px;margin-bottom:19px;color:#b8dcff;font-size:11px;letter-spacing:.18em}.bt-dot{width:7px;height:7px;border-radius:50%;background:#69b6ff;box-shadow:0 0 12px #64b5ff}.bt-name{flex:1}.bt-clock{color:#618dbb}#boot-log{min-height:228px;margin:0;white-space:pre-wrap;color:#7da9d5;font-size:12px;line-height:1.95}.term-line{display:block;min-height:1.95em}.term-line .term-ok{color:#d6ebff}.term-line .term-user{color:#a9d5ff}.term-line .term-muted{color:#557aa3}.boot-promptline{color:#d9ecff;border-top:1px solid #3975aa33;padding-top:12px;min-height:42px;font-size:12px}.bp-user{color:#83bdff}.bp-sep,.bp-dollar{color:#456f9c}.bp-path{color:#b5d8ff}.cursor{color:#b7deff;animation:blink .9s steps(2,end) infinite}.boot-skip{text-align:right;margin-top:12px;color:#4a719b;font-size:9px;letter-spacing:.2em;animation:blink 1.6s steps(2,end) infinite}@keyframes blink{50%{opacity:.15}}@keyframes crt-in{from{opacity:0;transform:scaleY(.025) scaleX(.97);filter:brightness(2)}to{opacity:1;transform:none;filter:none}}
/* nav */
#nav{position:fixed;z-index:100;inset:0 0 auto;display:flex;align-items:center;gap:22px;padding:13px 28px;border-bottom:1px solid transparent;background:#04081270;backdrop-filter:blur(16px);transition:.35s}#nav.scrolled{background:#040812e8;border-color:var(--line)}.nav-brand{display:flex;align-items:center;gap:10px;white-space:nowrap}.brand-mark{font-size:22px;color:var(--blue2)}.brand-text{font:14px/1.25 var(--serif);letter-spacing:.16em}.brand-text em{display:block;color:var(--dim);font:9px/1.5 var(--mono);letter-spacing:.2em}.nav-links{display:flex;gap:2px;margin-left:auto}.nav-links a{padding:8px 11px;color:var(--dim);font-size:11px;letter-spacing:.12em;border-radius:99px;transition:.25s}.nav-links a:hover,.nav-links a.active{color:var(--blue2);background:#77bfff12}.nav-zip{padding:8px 14px;border:1px solid #6795c466;border-radius:99px;color:var(--blue2);font-size:10px;white-space:nowrap}.nav-zip:hover{border-color:#8ecaff;box-shadow:0 0 18px #78bfff24}
/* common */
main{position:relative;z-index:2}.sec{width:min(1320px,94vw);margin:8vh auto;padding:clamp(50px,7vw,100px) clamp(24px,5vw,74px);position:relative;isolation:isolate;background:linear-gradient(160deg,#091221f7,#060b15f9 72%);border:1px solid var(--line);border-radius:26px;box-shadow:0 32px 100px #0008,inset 0 1px #c0ddff09;transform-origin:50% 0;will-change:transform,filter,opacity}.sec::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(ellipse at 50% 0,#18355820,transparent 52%)}.sec-head{margin:0 0 48px}.sec-kicker{font-size:10px;letter-spacing:.34em;color:#7fb8ea;margin:0 0 13px}.sec-title{margin:0;font-weight:500;font-size:clamp(38px,5vw,62px);letter-spacing:.14em;line-height:1.2;color:#e8f2ff;text-shadow:0 0 36px #83bfff18}.sec-title::after{content:"";display:block;width:74px;height:1px;margin-top:19px;background:linear-gradient(90deg,#8bc7ff,#8bc7ff00)}.sec-desc{margin:18px 0 0;color:#99a9c1;font-size:14px;line-height:2}.sec-tools{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}.reveal{opacity:0;transform:translateY(25px);filter:blur(3px);transition:opacity .8s var(--ease),transform .8s var(--ease),filter .8s var(--ease)}.reveal.in{opacity:1;transform:none;filter:none}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #81b7e755;border-radius:999px;padding:12px 23px;background:#10213a88;font-size:13px;letter-spacing:.09em;overflow:hidden;transition:color .25s,border-color .25s,background .25s,box-shadow .25s}.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 25%,#fff2 50%,transparent 75%);transform:translateX(-130%);transition:transform .7s}.btn:hover::after{transform:translateX(130%)}.btn:hover{border-color:#a2d3ff;background:#163459;box-shadow:0 0 22px #6db5ff22}.btn.primary{color:#e9f5ff;background:#21518355;border-color:#8ecaff88}.btn.small{padding:9px 16px;font-size:11px}.btn span{position:relative;z-index:1}.magnetic{will-change:transform}
/* hero */
#hero{min-height:100svh;position:relative;z-index:2;display:grid;place-items:center;text-align:center;padding:118px 5vw 90px;overflow:hidden}.hero-bg{position:absolute;inset:-4%;background:url("../img/story/CHAPTER_MainStory9.jpg_1024x540.png") center/cover;opacity:.2;filter:blur(5px) saturate(.8);mask-image:radial-gradient(ellipse 72% 66%,#000 20%,transparent 82%)}.hero-inner{position:relative;z-index:2}.hero-kicker{font-size:11px;color:#9bc8f2;letter-spacing:.34em;margin:0 0 22px}.hero-title{display:flex;justify-content:center;gap:.02em;margin:0;color:#edf6ff;font:600 clamp(88px,17vw,214px)/1.08 var(--serif);letter-spacing:.08em;text-shadow:0 0 55px #87c5ff38;perspective:900px}.shard-char{display:inline-block;position:relative;opacity:0;transform:translate3d(var(--sx),var(--sy),var(--sz)) rotate(var(--sr)) scale(.74);filter:blur(8px);clip-path:polygon(0 0,100% 0,100% 100%,0 100%);transition:opacity .7s,transform 1.15s cubic-bezier(.14,.8,.2,1),filter 1s;transition-delay:var(--delay)}body[data-boot=done] .shard-char{opacity:1;transform:none;filter:none}.shard-char::after{content:"";position:absolute;inset:0;background:linear-gradient(125deg,transparent 35%,#d7eeff 50%,transparent 65%);opacity:0;transform:translateX(-130%)}body[data-boot=done] .shard-char::after{animation:shard-flash .9s var(--delay) both}@keyframes shard-flash{30%{opacity:.85}100%{opacity:0;transform:translateX(130%)}}.hero-sub{font-size:clamp(17px,2vw,23px);letter-spacing:.27em;color:#c5d6eb;margin:19px 0 0}.hero-stats{display:flex;justify-content:center;gap:clamp(20px,5vw,68px);flex-wrap:wrap;margin-top:48px}.stat b{display:block;font:500 clamp(28px,4vw,40px)/1.2 var(--mono);color:#b7dcff;text-shadow:0 0 24px #74b8f83b}.stat span{font-size:10px;letter-spacing:.22em;color:var(--dim)}.hero-cta{display:flex;justify-content:center;gap:13px;flex-wrap:wrap;margin-top:40px}.scroll-cue{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:9px;font-size:9px;color:#7185a3;letter-spacing:.3em}.scroll-cue span{width:1px;height:38px;background:linear-gradient(#89c4fa,transparent);animation:cue 1.8s ease-in-out infinite}@keyframes cue{50%{transform:scaleY(.45);transform-origin:top;opacity:.45}}
/* decryption story: pinned evidence and scroll-led assembly */
#decrypt .sec-head{margin-bottom:8px}.decrypt-story{position:relative;height:780vh;margin:0 calc(clamp(24px,5vw,74px)*-0.32);padding:0 0 5vh}.decrypt-progress{position:absolute;z-index:4;left:0;top:0;bottom:0;width:1px;background:#7294b322}.decrypt-progress i{display:block;width:1px;height:100%;background:linear-gradient(#b4ddff,#5e91c5);box-shadow:0 0 10px #83c5ff;transform:scaleY(0);transform-origin:top}.decrypt-beat{position:sticky;top:11vh;height:78vh;min-height:500px;padding:4vh 4vw 4vh 55px;display:grid;grid-template-columns:minmax(210px,.5fr) minmax(0,1.5fr);grid-template-rows:auto 1fr;column-gap:5vw;align-items:center;overflow:hidden;border-bottom:1px solid #7897b21b;background:linear-gradient(145deg,#0a1422f4,#060b14fa);box-shadow:0 24px 70px #0008;border-radius:14px;transform:translateY(calc((1 - var(--reveal,0))*30px)) scale(calc(.97 + var(--reveal,0)*.03));opacity:calc(.4 + var(--reveal,0)*.6);will-change:transform,opacity}.decrypt-beat:nth-of-type(2){top:12vh}.decrypt-beat:nth-of-type(3){top:13vh}.decrypt-beat:nth-of-type(4){top:14vh}.decrypt-beat:nth-of-type(5){top:15vh}.decrypt-beat:nth-of-type(6){top:16vh}.decrypt-beat:nth-of-type(7){top:17vh}.decrypt-beat:nth-of-type(8){top:18vh}.decrypt-beat:last-child{border-bottom:0}
.decrypt-story{position:relative;margin:0 calc(clamp(24px,5vw,74px)*-0.32);padding:0 0 5vh}.decrypt-progress{position:absolute;z-index:4;left:0;top:0;bottom:0;width:1px;background:#7294b322}.decrypt-progress i{display:block;width:1px;height:100%;background:linear-gradient(#b4ddff,#5e91c5);box-shadow:0 0 10px #83c5ff;transform:scaleY(0);transform-origin:top}.decrypt-beat{position:relative;min-height:105vh;padding:13vh 5vw 12vh 55px;display:grid;grid-template-columns:minmax(210px,.5fr) minmax(0,1.5fr);grid-template-rows:auto 1fr;column-gap:5vw;align-items:center;overflow:hidden;border-bottom:1px solid #7897b21b}.decrypt-beat:last-child{border-bottom:0}.decrypt-beat::before{content:"";position:absolute;inset:8% -2% 8% 5%;border:1px solid #80afd21a;border-radius:18px;background:radial-gradient(ellipse at 68% 48%,#23476c22,transparent 66%);opacity:var(--reveal,0);transform:scale(calc(.95 + var(--reveal,0)*.05));pointer-events:none}.beat-index{position:absolute;left:0;top:15vh;color:#82a9cd35;font-size:14px;letter-spacing:.2em}.beat-copy{position:relative;z-index:1;grid-column:1;grid-row:1;align-self:end;opacity:calc(.35 + var(--reveal,0)*.65);transform:translateY(calc((1 - var(--reveal,0))*24px));transition:opacity .2s}.beat-label{margin:0 0 9px;color:#89b8e1;font-size:9px;letter-spacing:.2em}.beat-copy h3{margin:0;font:clamp(20px,3vw,31px)/1.4 var(--serif);letter-spacing:.08em;color:#dceafa}.evidence-frame,.fourier-compare{position:relative;z-index:1;grid-column:2;grid-row:1 / span 2;margin:0;width:100%;max-height:76vh;overflow:hidden;border:1px solid #8eb2d332;border-radius:12px;background:#050a12;box-shadow:0 32px 80px #0008;opacity:calc(.35 + var(--reveal,0)*.65);transform:translateY(calc((1 - var(--reveal,0))*52px)) scale(calc(.97 + var(--reveal,0)*.03));transition:opacity .16s linear;will-change:transform}.evidence-frame img{width:100%;max-height:72vh;object-fit:contain;transform:translateY(var(--drift,0));transition:transform .2s}.evidence-frame figcaption{padding:10px 13px;color:#849bb5;font:9px var(--mono);letter-spacing:.08em;background:#050b14}.evidence-frame.wide{grid-column:2;max-height:68vh}.evidence-frame.wide img{max-height:62vh}.fourier-compare{aspect-ratio:16/9;display:grid;place-items:center}.fourier-compare img{position:absolute;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:contain;transition:opacity .4s,filter .4s,transform .4s}.fourier-source{opacity:calc(1 - var(--reveal,0));filter:blur(calc(var(--reveal,0)*8px));transform:scale(calc(1 + var(--reveal,0)*.035))}.fourier-result{opacity:var(--reveal,0);filter:contrast(calc(.8 + var(--reveal,0)*.2));transform:scale(calc(1.05 - var(--reveal,0)*.05))}.fourier-scan{position:absolute;z-index:2;left:0;right:0;top:calc(var(--reveal,0)*100%);height:1px;background:#b4e0ff;box-shadow:0 0 14px 3px #6ebcffaa;opacity:calc(.2 + var(--reveal,0)*.8)}.fourier-compare figcaption{position:absolute;z-index:3;bottom:14px;left:50%;transform:translateX(-50%);padding:8px 12px;background:#030811bb;border:1px solid #8cbbdf55;border-radius:5px;color:#cee5fc;font-size:10px;letter-spacing:.15em;opacity:calc(.2 + var(--reveal,0)*.8);white-space:nowrap}.assembled-phrase{position:relative;z-index:1;grid-column:2;grid-row:1 / span 2;display:flex;gap:.2em;align-items:center;justify-content:center;flex-wrap:wrap;color:#e4f2ff;font-size:clamp(20px,4vw,44px);letter-spacing:.07em;opacity:calc(.22 + var(--reveal,0)*.78);transform:translateY(calc((1 - var(--reveal,0))*40px));filter:blur(calc((1 - var(--reveal,0))*7px));text-shadow:0 0 calc(var(--reveal,0)*30px) #8fcaff66}.assembled-phrase span{display:inline-block;clip-path:inset(0 calc((1 - var(--reveal,0))*100%) 0 0);transition:clip-path .15s}.assembled-phrase i{font-style:normal}.morse-line{grid-column:2;grid-row:2;align-self:end;position:relative;z-index:2;margin-top:18px;padding:13px;border-top:1px solid #759abd35;color:#95acc6;font-size:clamp(8px,1.1vw,12px);line-height:2;opacity:calc(var(--reveal,0));overflow-wrap:anywhere}.morse-line b{display:block;margin-top:10px;color:#e0efff;font-weight:400;letter-spacing:.2em;font-size:clamp(13px,2vw,19px)}.beat-fence .final-phrase{grid-row:2;text-align:center;color:#d5eaff;font-size:clamp(18px,3vw,32px);letter-spacing:.08em;overflow-wrap:anywhere}.decrypt-beat.is-active .beat-index{color:#b5d6f2}.decrypt-beat.is-active .beat-copy h3{text-shadow:0 0 24px #8dcaff2b}
/* fixed decryption stage */
#decrypt.decrypt-section{width:100%;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
#decrypt.decrypt-section::before{display:none}
#decrypt .decrypt-story{height:770vh;margin:0;padding:0;position:relative}
.decrypt-stage{position:sticky;top:0;height:100svh;min-height:620px;overflow:hidden;background:radial-gradient(ellipse at 68% 52%,#13284470,transparent 46%),linear-gradient(120deg,#050a13,#07111f 58%,#030711);isolation:isolate}
.decrypt-stage::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.22;background:linear-gradient(90deg,#829eb40a 1px,transparent 1px),linear-gradient(#829eb40a 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(90deg,transparent,#000 34%,#000 84%,transparent)}
.decrypt-heading{position:absolute;z-index:6;left:clamp(24px,6vw,90px);top:clamp(60px,11vh,116px);width:min(300px,26vw);margin:0;pointer-events:none}.decrypt-heading .sec-kicker{font-size:8px;letter-spacing:.22em}.decrypt-heading .sec-title{font-size:clamp(28px,3.1vw,46px);letter-spacing:.1em}.decrypt-heading .sec-title::after{width:38px;margin-top:12px}.decrypt-heading .sec-desc{font-size:10px;line-height:1.6;margin-top:10px}
.decrypt-progress{position:absolute;z-index:8;left:clamp(24px,6vw,90px);top:50%;width:1px;height:27vh;background:#91b2d226;transform:translateY(-50%)}.decrypt-progress i{display:block;width:1px;height:100%;background:linear-gradient(#d8edff,#76baff);box-shadow:0 0 10px #83c5ff;transform:scaleY(0);transform-origin:top}
.decrypt-beat,.decrypt-beat:nth-of-type(n){position:absolute;inset:0;top:0;height:100%;min-height:0;padding:clamp(80px,12vh,132px) clamp(28px,8vw,120px) 62px clamp(80px,23vw,350px);display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;align-items:center;overflow:hidden;border:0;border-radius:0;background:transparent;box-shadow:none;opacity:0;visibility:hidden;transform:translate3d(0,22px,0) scale(.985);transition:opacity .45s,transform .7s var(--ease),visibility .45s;will-change:opacity,transform;pointer-events:none}
.decrypt-beat.is-active{opacity:1;visibility:visible;transform:none;pointer-events:auto}.decrypt-beat::before{display:none}.beat-index{position:absolute;left:clamp(24px,6vw,90px);top:auto;bottom:44px;font-size:10px;letter-spacing:.16em;color:#a6c7e779}.beat-copy{position:absolute;z-index:3;left:0;top:clamp(25px,7vh,78px);grid-column:auto;grid-row:auto;opacity:1;transform:none}.beat-label{font-size:8px;letter-spacing:.18em;margin-bottom:6px}.beat-copy h3{font-size:clamp(17px,2vw,25px);letter-spacing:.04em}.evidence-frame,.fourier-compare,.evidence-frame.wide{position:absolute;inset:0 0 0 0;grid-column:auto;grid-row:auto;width:100%;height:100%;max-height:none;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden;opacity:1;transform:none;transition:none;display:grid;place-items:center}.evidence-frame img,.evidence-frame.wide img{width:auto;height:auto;max-width:min(100%,1100px);max-height:calc(100svh - 155px);object-fit:contain;transform:none;filter:drop-shadow(0 28px 80px #0009)}.evidence-frame figcaption{position:absolute;left:0;bottom:0;width:100%;padding:8px 12px;color:#a3b6ca;font:8px var(--mono);letter-spacing:.08em;background:linear-gradient(transparent,#040912d9);text-align:right}.fourier-compare{aspect-ratio:auto}.fourier-compare img{position:absolute;inset:auto;width:auto;height:auto;max-width:min(100%,1140px);max-height:calc(100svh - 155px);object-fit:contain;transition:opacity .55s,filter .8s,transform 1s;filter:drop-shadow(0 28px 80px #0009)}.fourier-source{opacity:calc(1 - var(--reveal,0));filter:blur(calc(var(--reveal,0)*9px)) brightness(calc(.75 + var(--reveal,0)*.25));transform:scale(calc(1 + var(--reveal,0)*.025))}.fourier-result{opacity:var(--reveal,0);filter:drop-shadow(0 28px 80px #0009) contrast(1.08);transform:scale(calc(1.035 - var(--reveal,0)*.035))}.fourier-scan{position:absolute;z-index:2;left:0;right:0;top:calc(16% + var(--reveal,0)*68%);height:1px;background:#b4e0ff;box-shadow:0 0 18px 4px #6ebcff99;opacity:var(--reveal,0)}.fourier-compare figcaption{position:absolute;z-index:3;right:0;bottom:4px;left:auto;transform:none;padding:0;background:none;border:0;color:#d9edff;font:clamp(10px,1.4vw,16px) var(--mono);letter-spacing:.18em;opacity:var(--reveal,0);white-space:nowrap}
.assembled-phrase{position:absolute;inset:0;grid-column:auto;grid-row:auto;display:flex;gap:.28em;align-items:center;justify-content:center;flex-wrap:wrap;color:#e4f2ff;font-size:clamp(24px,4vw,56px);letter-spacing:.07em;opacity:var(--reveal,0);transform:translateY(calc((1 - var(--reveal,0))*28px));filter:blur(calc((1 - var(--reveal,0))*6px));text-shadow:0 0 36px #8fcaff52}.assembled-phrase span{display:inline-block;clip-path:inset(0 calc((1 - var(--reveal,0))*100%) 0 0)}.assembled-phrase i{font-style:normal}.morse-line{position:absolute;z-index:3;left:0;right:0;bottom:10px;margin:0;padding:10px;border-top:1px solid #759abd35;color:#95acc6;font-size:clamp(7px,.9vw,11px);line-height:2;opacity:var(--reveal,0);overflow-wrap:anywhere}.morse-line b{display:block;color:#e0efff;font-weight:400;letter-spacing:.2em;font-size:clamp(12px,1.6vw,18px)}.beat-fence .final-phrase{position:absolute;inset:auto 0 12%;display:block;text-align:center;color:#d5eaff;font-size:clamp(17px,2.8vw,34px);letter-spacing:.08em;overflow-wrap:anywhere}.decrypt-stage-footer{position:absolute;z-index:9;right:clamp(24px,6vw,90px);bottom:28px;left:clamp(80px,23vw,350px);display:flex;justify-content:space-between;color:#829bb8;font-size:8px;letter-spacing:.18em}.decrypt-stage-footer span:last-child{opacity:.5}
@media(max-width:850px){#decrypt .decrypt-story{height:700vh}.decrypt-stage{min-height:520px}.decrypt-heading{left:24px;top:78px;width:calc(100% - 48px)}.decrypt-heading .sec-title{font-size:30px}.decrypt-heading .sec-desc{display:none}.decrypt-progress{left:24px;top:auto;bottom:48px;width:28vw;height:1px;transform:none}.decrypt-progress i{height:1px;width:100%;transform:scaleX(0);transform-origin:left}.decrypt-beat,.decrypt-beat:nth-of-type(n){padding:130px 20px 78px;grid-template-columns:1fr;grid-template-rows:1fr}.beat-copy{top:130px;left:20px}.beat-index{left:24px;bottom:60px}.evidence-frame img,.evidence-frame.wide img,.fourier-compare img{max-width:100%;max-height:calc(100svh - 230px)}.assembled-phrase{font-size:clamp(20px,6vw,37px)}.morse-line{bottom:65px}.decrypt-stage-footer{left:calc(28vw + 38px);right:20px;bottom:27px;font-size:7px}.decrypt-beat .beat-copy h3{font-size:18px}}
@media(prefers-reduced-motion:reduce){.decrypt-beat,.fourier-compare img{transition:none!important}}
/* decryption */
.decrypt-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:20px}.panel{position:relative;overflow:hidden;padding:clamp(22px,3vw,38px);border:1px solid #72a9dc36;border-radius:18px;background:linear-gradient(145deg,#0b192b,#070d18 72%);box-shadow:inset 0 1px #c5e2ff0b,0 20px 55px #0003}.panel::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,#b7dcff05,transparent 40%)}.panel-tag{color:#8fc5f4;font-size:9px;letter-spacing:.25em}.cipher-alpha{margin:16px 0 18px;color:#728aa7;font-size:10px}.cipher-tiles{display:flex;flex-wrap:wrap;gap:5px;min-height:90px;margin:12px 0 23px;align-content:flex-start}.cipher-tile{display:grid;place-items:center;width:28px;height:34px;border:1px solid #6ba1d744;border-radius:4px;color:#bfdcff;background:#10213a;font-size:13px;transition:transform .55s var(--ease),background .35s,border-color .35s,color .35s;transform-style:preserve-3d}.cipher-tile.is-plain{color:#e4f3ff;background:#204a73;border-color:#94caff;box-shadow:0 0 13px #6bb8ff3b}.cipher-card.is-solving .cipher-tile{animation:tile-jitter .42s both;animation-delay:var(--d)}@keyframes tile-jitter{30%{transform:translate(var(--jx),var(--jy)) rotate(var(--jr));opacity:.25}100%{transform:none;opacity:1}}.cipher-result{max-height:0;opacity:0;overflow:hidden;transition:max-height .8s var(--ease),opacity .7s,padding .7s}.cipher-card.solved .cipher-result{max-height:180px;opacity:1;padding-top:8px}.cipher-plain{color:#d7edff;font-size:clamp(12px,1.5vw,15px);letter-spacing:.09em;overflow-wrap:anywhere}.cipher-mean{margin:12px 0 4px;color:#e1eaf5;font-family:var(--serif);font-size:17px}.cipher-src{margin:0;color:#6f87a3;font-size:9px}.soli-label{margin:26px 0 9px;color:#849bb7;font-size:10px}.soli-url{min-height:50px;color:#d4eaff;font-size:clamp(10px,1.25vw,13px);overflow-wrap:anywhere}.soli-host{color:#6889ad}.soli-key{color:#c8e4ff}.soli-screen{min-height:194px;margin-top:23px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;border:1px solid #528bc94a;border-radius:10px;background:radial-gradient(ellipse at center,#18365a7a,#06101f);box-shadow:inset 0 0 50px #256cb226;position:relative;overflow:hidden}.soli-screen::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,#83bfff08 4px)}.soli-title{z-index:1;color:#c7e5ff;font-size:23px;letter-spacing:.24em;text-shadow:0 0 22px #73baff88}.soli-timer{z-index:1;color:#83bfff;font-size:12px;letter-spacing:.14em}.soli-note{z-index:1;color:#627d9e;font-size:9px;text-align:center}.compare-wrap{margin:56px 0 70px}.compare-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:13px}.cmp-tag{color:#8fc5f4;font-size:9px;letter-spacing:.25em}.cmp-hint{margin:0;color:#8a9bb2;font-size:10px;letter-spacing:.12em}.compare{position:relative;overflow:hidden;aspect-ratio:16/7;border:1px solid #8ab8df55;border-radius:15px;background:#07101d;touch-action:none;user-select:none;cursor:ew-resize;box-shadow:0 24px 60px #0006}.cmp-clear,.cmp-blur{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.cmp-clear{filter:saturate(.92) contrast(1.03)}.cmp-blur{clip-path:inset(0 0 0 var(--pos));filter:blur(12px) brightness(.48) saturate(.35);transform:scale(1.035);width:100%;height:100%;left:0;right:0}.cmp-shards{position:absolute;inset:0 82% 0 0;pointer-events:none;opacity:.75;transition:opacity .4s}.compare:hover .cmp-shards{opacity:.2}.cmp-shards i{position:absolute;inset:0;background:#a4c7ed14;clip-path:polygon(0 0,68% 0,30% 45%,0 32%);border-right:1px solid #d3eaff33}.cmp-shards i:nth-child(2){clip-path:polygon(68% 0,100% 12%,46% 53%,30% 45%)}.cmp-shards i:nth-child(3){clip-path:polygon(0 32%,30% 45%,47% 100%,0 100%)}.cmp-shards i:nth-child(4){clip-path:polygon(30% 45%,46% 53%,100% 100%,47% 100%)}.cmp-shards i:nth-child(5){clip-path:polygon(46% 53%,100% 12%,100% 51%)}.cmp-shards i:nth-child(6){clip-path:polygon(100% 51%,100% 100%,46% 53%)}.cmp-handle{position:absolute;top:0;bottom:0;left:var(--pos);width:1px;background:#e1f2ff;box-shadow:0 0 16px #9bd0ff;transform:translateX(-50%);pointer-events:none}.cmp-handle i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;border:1px solid #d6ecff;border-radius:50%;background:#071421dd;color:#d9efff;font-size:12px;font-style:normal;box-shadow:0 0 28px #74b8ff66}.cmp-side{position:absolute;bottom:14px;color:#d7e9ffb8;font-size:9px;letter-spacing:.19em;text-shadow:0 1px 5px #000}.cmp-side.left{left:16px}.cmp-side.right{right:16px}.timeline{position:relative;max-width:790px;margin:0 auto;padding:7px 0 5px 46px}.tl-line{position:absolute;left:12px;top:10px;bottom:12px;width:1px;background:#24394e}.tl-line i{display:block;width:1px;height:0;background:linear-gradient(#9dd4ff,#5b9bd5);box-shadow:0 0 9px #7bbaff;transform-origin:top}.tl-item{position:relative;padding:0 0 34px}.tl-item:last-child{padding-bottom:0}.tl-item>i{position:absolute;left:-39px;top:7px;width:9px;height:9px;border:1px solid #7bb5ea;border-radius:50%;background:#091422;box-shadow:0 0 12px #5b9bd377}.tl-item.end>i{background:#badfff;box-shadow:0 0 18px #91caff}.tl-item b{font-size:10px;color:#9bc9f0;letter-spacing:.22em}.tl-item p{margin:7px 0 0;color:#a4b3c8;font-size:13px;line-height:1.9}.tl-item em{font-style:normal;color:#d9ebff}
/* galleries / archive */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(400px,100%),1fr));gap:25px}.art-card{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:#080f1c;transition:transform .45s var(--ease),border-color .3s,box-shadow .4s;transform:perspective(1000px) rotateX(var(--rx,0)) rotateY(var(--ry,0))}.art-card:hover{border-color:#83b8e677;box-shadow:0 25px 65px #0008,0 0 34px #75bbff0c}.art-thumb{position:relative;aspect-ratio:16/8.44;overflow:hidden;cursor:zoom-in}.art-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}.art-card:hover .art-thumb img{transform:scale(1.045)}.art-thumb::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,#fff2 50%,transparent 65%);transform:translateX(-130%);transition:transform .9s}.art-card:hover .art-thumb::after{transform:translateX(130%)}.art-play{position:absolute;right:15px;bottom:15px;width:48px;height:48px;border:1px solid #9acfff88;border-radius:50%;color:#c1e1ff;background:#06101dcc;opacity:0;transform:translateY(8px);transition:.3s;cursor:pointer}.art-card:hover .art-play,.art-play.playing{opacity:1;transform:none}.art-info{padding:18px 20px 20px}.art-no{font:10px var(--mono);color:#84b9e9;letter-spacing:.2em}.art-info h3{margin:5px 0;font:19px var(--serif)}.art-info p{margin:0;color:#8a9bb2;font-size:11px;line-height:1.8}.art-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.act{padding:6px 10px;border:1px solid #6783a340;border-radius:7px;background:#0b1625;color:#8fa5bf;font:9px var(--mono);transition:.25s}.act:hover{color:#c9e5ff;border-color:#86b7e288}.act.gold:hover{color:#e6d2a8;border-color:#c8ae7866}.tabs{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:30px}.tab,.chip{padding:9px 16px;border:1px solid var(--line);border-radius:99px;background:transparent;color:#8697b1;font-size:11px;letter-spacing:.12em;cursor:pointer;transition:.25s}.tab.active{background:#2a4e72;color:#e0f0ff;border-color:#7aa7d2}.tab-pane{display:none}.tab-pane.active{display:block;animation:pane-in .5s var(--ease)}@keyframes pane-in{from{opacity:0;transform:translateY(12px)}}.story-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));gap:19px}.story-card{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:#080f1c;transition:.35s}.story-card:hover{transform:translateY(-4px);border-color:#709dc866;box-shadow:0 20px 45px #0006}.story-card figure{margin:0;overflow:hidden;cursor:zoom-in}.story-card figure img{width:100%;transition:transform .7s}.story-card:hover figure img{transform:scale(1.035)}.story-meta{display:flex;align-items:center;gap:9px;padding:11px 13px}.story-meta b{flex:1;font:13px var(--serif)}.res{font:9px var(--mono);color:#71839d}.kind{padding:3px 7px;border:1px solid #6482a044;border-radius:5px;color:#8aa9c8;font:8px var(--mono)}.kind.cover{color:#d7c294}.kind.secret{color:#c8a6db}.pane-foot{display:flex;justify-content:center;margin-top:28px}.archive-tools{display:grid;gap:14px;margin-bottom:20px}#archive-search{width:min(540px,100%);padding:12px 15px;border:1px solid #6283a34d;border-radius:10px;outline:0;background:#07101c;color:var(--ink);font-size:12px}#archive-search:focus{border-color:#81b5e5;box-shadow:0 0 0 3px #74b9ff14}.chip-row{display:flex;gap:7px;flex-wrap:wrap}.chip{padding:6px 12px;font-size:10px}.chip.active{background:#bdcfdf;color:#08111d;border-color:#bdcfdf}.archive-count{margin:0;color:#71839b;font-size:10px}.archive-list{border-top:1px solid var(--line)}.arch-row{display:grid;grid-template-columns:55px minmax(0,1fr) auto auto;gap:14px;align-items:center;padding:13px 10px;border-bottom:1px solid #7897b21d;cursor:pointer;transition:.2s}.arch-row:hover{background:#8bc4f50a;padding-left:16px}.arch-idx{font:10px var(--mono);color:#506986}.arch-name{font:14px var(--serif)}.arch-name small{display:block;margin-top:3px;color:#778aa3;font:9px var(--mono)}.arch-date{font:9px var(--mono);color:#90a1b7}.badge{padding:4px 7px;border:1px solid #657c9440;border-radius:5px;color:#8da1b8;font:8px var(--mono)}.badge.main{color:#8ecaff}.badge.bold{color:#e1c68e}.badge.key{color:#d3b3e9}.archive-more-wrap{text-align:center;margin-top:24px}
/* music */
.batch-panel{position:relative;padding:25px;border:1px solid #6e9dc448;border-radius:17px;margin-bottom:37px;background:linear-gradient(130deg,#1530505c,#0a1422 70%);overflow:hidden}.batch-panel::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:linear-gradient(#a4d5ff,#4c8cc8)}.batch-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:19px}.batch-head h3{margin:0;font:23px var(--serif)}.batch-head p{margin:0;color:#7288a4;font-size:9px;letter-spacing:.2em}.batch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(215px,100%),1fr));gap:11px}.batch-card{display:flex;flex-direction:column;gap:5px;padding:15px 17px;border:1px solid #647f9c36;border-radius:11px;background:#060e19aa;transition:.28s}.batch-card:hover{transform:translateY(-3px);border-color:#80b5e177}.batch-card b{font-size:13px}.batch-card i{color:#8495ab;font:9px var(--mono)}.batch-go{margin-top:6px;color:#9dccf5;font-size:9px}.track-list{list-style:none;padding:0;margin:0;border-top:1px solid var(--line)}.track{position:relative;display:grid;grid-template-columns:42px 58px minmax(0,1fr) 45px auto;gap:13px;align-items:center;padding:12px 10px;border-bottom:1px solid #6b8baa20;transition:background .2s}.track:hover,.track.playing{background:#80bdf50a}.track.playing::before{content:"";position:absolute;inset:0 auto 0 0;width:2px;background:#9bcfff;box-shadow:0 0 12px #87c6ff}.t-idx{color:#687f9c;font:10px var(--mono);text-align:center}.track.playing .t-idx{color:#c3e3ff}.t-cover{width:54px;height:29px;overflow:hidden;border-radius:5px;cursor:pointer}.t-cover img{width:100%;height:100%;object-fit:cover}.t-main{min-width:0}.t-title{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:14px var(--serif)}.t-sub{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7589a2;font:9px var(--mono)}.t-dur{color:#8394aa;font:9px var(--mono)}.t-acts{display:flex;gap:6px}.t-btn{padding:6px 9px;border:1px solid #637c963b;border-radius:6px;background:#08111d;color:#91a5bd;font:9px var(--mono);cursor:pointer}.t-btn:hover,.t-btn.play{color:#b9ddff;border-color:#83b8e455}
/* SFX */
.sfx-group{margin-bottom:35px}.sfx-group-title{display:flex;align-items:baseline;gap:12px;margin-bottom:13px}.sfx-group-title h3{margin:0;font:17px var(--serif);letter-spacing:.12em}.sfx-group-title span{color:#778ba5;font:9px var(--mono)}.sfx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(230px,100%),1fr));gap:10px}.sfx-chip{position:relative;display:flex;align-items:center;gap:10px;overflow:hidden;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#08111d;transition:.25s}.sfx-chip:hover,.sfx-chip.playing{border-color:#83b8e566;transform:translateY(-2px)}.sfx-btn{width:34px;height:34px;flex:none;border:1px solid #76a6d35c;border-radius:50%;background:#0d1e32;color:#add6fb;font-size:10px;cursor:pointer}.sfx-info{min-width:0;flex:1}.sfx-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.sfx-meta{display:block;margin-top:2px;color:#72849d;font:8px var(--mono)}.sfx-dl{display:grid;place-items:center;width:28px;height:28px;border-radius:6px;color:#8599b1}.sfx-dl:hover{color:#d6eaff;background:#729dc222}.sfx-wave{position:absolute;left:0;bottom:0;height:2px;width:0;background:linear-gradient(90deg,#6297cf,#c5e5ff)}
/* credits */
.thanks-wall{position:relative;max-width:850px;margin:0 auto 55px;padding:48px 25px;text-align:center;border:1px solid #7396b54c;border-radius:18px;background:linear-gradient(145deg,#101c2d,#080f1a);box-shadow:0 26px 70px #0005}.thanks-wall::before,.thanks-wall::after{content:"";position:absolute;width:20px;height:20px;border-color:#a9c9e577;border-style:solid}.thanks-wall::before{top:11px;left:11px;border-width:1px 0 0 1px}.thanks-wall::after{bottom:11px;right:11px;border-width:0 1px 1px 0}.thanks-lead{font-size:clamp(21px,3vw,28px);letter-spacing:.1em}.thanks-hl{color:#c8e5ff;text-shadow:0 0 18px #86c5ff55;font-weight:600}.role-chips{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:23px 0}.role-chips span{padding:7px 12px;border:1px solid #8297ae38;border-radius:99px;color:#9caec3;font-size:9px}.thanks-note{color:#91a0b5;font-size:12px}.thanks-note b{color:#d8e7f5;font:15px var(--serif)}.marquee{overflow:hidden;margin:50px 0;padding:14px 0;border-block:1px solid var(--line);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}.marquee-track{display:inline-flex;gap:24px;align-items:center;white-space:nowrap;padding-right:24px;color:#7187a2;font-size:10px;letter-spacing:.18em;animation:marquee 30s linear infinite}.marquee-track i{color:#a9c7e2;font-style:normal}@keyframes marquee{to{transform:translateX(-50%)}}.reading-list h3{text-align:center;margin:0 0 20px;font:21px var(--serif);letter-spacing:.12em}.reading-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:10px;max-width:990px;margin:auto}.reading-grid a{display:flex;flex-direction:column;gap:5px;padding:15px 17px;border:1px solid var(--line);border-radius:10px;background:#08111d;transition:.25s}.reading-grid a:hover{transform:translateY(-3px);border-color:#7ea8d366}.reading-grid a b{font:13px var(--serif)}.reading-grid a span{color:#7488a0;font-size:9px}
/* footer */
#footer{position:relative;z-index:2;padding:70px 20px 130px;text-align:center;border-top:1px solid var(--line);background:#040812cc}.footer-line{color:#7693b2;font-size:9px;letter-spacing:.25em}.footer-note{color:#718099;font-size:10px;line-height:1.9}.footer-sign{margin-top:22px;color:#b3cde7;font-size:10px;letter-spacing:.3em}
/* modal */
.modal{position:fixed;z-index:150;inset:0;display:flex;align-items:center;justify-content:center;background:#02050bdc;backdrop-filter:blur(13px);opacity:0;visibility:hidden;transition:.35s}.modal.open{opacity:1;visibility:visible}.modal-close{position:absolute;right:22px;top:20px;z-index:5;padding:9px 14px;border:1px solid var(--line);border-radius:99px;background:#08111d;color:#9babc0;font:9px var(--mono);cursor:pointer}.modal-close:hover{color:#e1f0ff;border-color:#8ab7e0}.lb-stage{max-width:88vw;max-height:85vh;margin:0;transform:scale(.96);transition:.35s}.modal.open .lb-stage{transform:none}#lb-img{max-width:88vw;max-height:74vh;object-fit:contain;border:1px solid var(--line);border-radius:9px;box-shadow:0 40px 100px #000b}.lb-meta{display:flex;align-items:center;gap:14px;padding-top:13px}.lb-meta b{font:16px var(--serif)}.lb-meta span{flex:1;color:#8596ad;font-size:9px}.lb-nav{position:absolute;top:50%;transform:translateY(-50%);border:0;background:none;color:#8ca2bb;font-size:48px;cursor:pointer}.lb-nav:hover{color:#d2e9ff}.lb-nav.prev{left:15px}.lb-nav.next{right:15px}.reader-card{position:relative;width:min(740px,92vw);max-height:84vh;overflow:auto;padding:42px;border:1px solid #6e9bc455;border-radius:15px;background:linear-gradient(160deg,#0d1929,#060b13);box-shadow:0 40px 120px #000a;transform:translateY(18px);transition:.35s}.modal.open .reader-card{transform:none}.reader-head{border-bottom:1px dashed var(--line);padding-bottom:17px;margin-bottom:21px}.reader-file{color:#8fbbe4;font-size:9px}.reader-head h3{font:24px var(--serif)}.reader-meta{color:#7589a1;font-size:9px}.reader-body{white-space:pre-wrap;word-break:break-word;color:#c1cee0;font:15px/2 var(--serif)}.reader-foot{margin-top:25px;padding-top:13px;border-top:1px dashed var(--line);text-align:center;color:#637792;font-size:8px}
/* player */
#player{position:fixed;z-index:110;left:0;right:0;bottom:0;transform:translateY(110%);transition:transform .45s var(--ease)}#player.on{transform:none}#viz{position:absolute;left:0;right:0;top:-26px;width:100%;height:26px;pointer-events:none;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.player-inner{display:flex;align-items:center;gap:13px;padding:12px 18px;background:#050a13ed;backdrop-filter:blur(18px);border-top:1px solid #749cc04a}.p-cover{width:46px;height:46px;object-fit:cover;border:1px solid var(--line);border-radius:7px}.p-info{width:185px;min-width:0}.p-info b,.p-info span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.p-info b{font:13px var(--serif)}.p-info span{color:#8094ae;font-size:8px}.p-seek{position:relative;flex:1;min-width:65px;height:22px;display:flex;align-items:center;cursor:pointer}.p-seek::before{content:"";position:absolute;left:0;right:0;height:3px;border-radius:3px;background:#61768e55}.p-seek-buf,#p-seek-fill{position:absolute;left:0;height:3px;border-radius:3px}.p-seek-buf{background:#c5daf044;width:0}#p-seek-fill{z-index:1;width:0;background:linear-gradient(90deg,#a8c7e5,#f0dfbb);box-shadow:0 0 10px #b5d5f04d;transition:width .12s linear}#p-seek-fill::after{content:"";position:absolute;right:-5px;top:50%;width:9px;height:9px;transform:translateY(-50%) scale(.6);border-radius:50%;background:#dfedfa;box-shadow:0 0 8px #c3e1ff;opacity:0;transition:.2s}.p-seek:hover #p-seek-fill::after{opacity:1;transform:translateY(-50%) scale(1)}.p-time{white-space:nowrap;color:#8495aa;font-size:8px}.p-time b{font-weight:400}.p-btns{display:flex;gap:5px}.pbtn{height:34px;min-width:34px;padding:0 8px;display:grid;place-items:center;border:1px solid #6d829a42;border-radius:50%;background:#0a1421;color:#adc1d8;font:10px var(--mono);cursor:pointer;transition:.2s}.pbtn:hover{color:#e4f3ff;border-color:#9dc8ec}.pbtn.big{width:40px;height:40px;border-color:#85b5df77;color:#d1e9ff}.pbtn#p-dl{min-width:0;border-radius:8px;font-size:8px}#p-close{border-radius:8px}
@media(max-width:850px){.nav-links{display:none}.nav-zip{margin-left:auto}.decrypt-grid{grid-template-columns:1fr}.decrypt-story{height:720vh;margin:0 -5px}.decrypt-beat,.decrypt-beat:nth-of-type(n){top:12vh;height:78vh;min-height:460px;padding:4vh 15px 4vh 42px;grid-template-columns:1fr;grid-template-rows:auto auto 1fr;row-gap:17px}.beat-index{top:4vh}.beat-copy{grid-column:1;grid-row:1}.evidence-frame,.fourier-compare,.evidence-frame.wide{grid-column:1;grid-row:2 / span 2;align-self:center;max-height:60vh}.evidence-frame img,.evidence-frame.wide img{max-height:55vh}.assembled-phrase{grid-column:1;grid-row:2 / span 2;align-self:center}.morse-line{grid-column:1;grid-row:3;align-self:end}.beat-fence .final-phrase{grid-row:3}.sec{margin:5vh auto}.track{grid-template-columns:32px minmax(0,1fr) auto}.t-cover,.t-dur{display:none}.p-info{width:130px}.p-time{display:none}}
@media(max-width:580px){.decrypt-story{height:700vh}.decrypt-beat,.decrypt-beat:nth-of-type(n){height:76vh;min-height:420px;top:13vh;padding-left:37px}.fourier-compare{aspect-ratio:4/3}.decrypt-beat .beat-copy h3{font-size:20px}#nav{padding:11px 15px}.brand-text{font-size:12px}.sec{width:96vw;padding:48px 20px;margin:4vh auto;border-radius:18px}.sec-head{margin-bottom:32px}.hero-title{font-size:clamp(74px,20vw,130px)}.hero-stats{gap:18px 28px;margin-top:34px}.stat b{font-size:26px}.stat span{font-size:8px}.hero-cta{margin-top:30px}.compare{aspect-ratio:4/3}.compare-head{align-items:flex-start;flex-direction:column;gap:6px}.arch-row{grid-template-columns:38px minmax(0,1fr) auto;gap:8px}.arch-date{display:none}.badge{font-size:7px}.track{gap:8px;padding:10px 4px}.t-acts{gap:4px}.t-btn{padding:6px;font-size:8px}.player-inner{gap:8px;padding:9px}.p-cover{width:38px;height:38px}.p-info{width:94px}.p-info b{font-size:11px}.p-btns{gap:3px}.pbtn{min-width:29px;height:29px;padding:0 5px;font-size:8px}.pbtn.big{width:35px;height:35px}#p-dl{display:none}.reader-card{padding:34px 23px}.lb-nav.prev{left:1px}.lb-nav.next{right:1px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none;filter:none}}
/* fixed decrypt-stage overrides legacy chapter-panel rules */
#decrypt .decrypt-story{height:920vh;margin:0;padding:0;position:relative}
.decode-console,.fft-field,.fragment-board,.text-equation,.nihilist-grid,.fence-board{position:absolute;inset:16% 8% 12%;display:flex;flex-direction:column;justify-content:center;gap:18px;color:#a7c9e6;font:clamp(10px,1.15vw,15px) var(--mono);letter-spacing:.05em}.decode-console{max-width:760px;margin:auto;inset:20% 12% 15%;justify-content:flex-start;padding-top:8vh}.console-line{opacity:calc(.25 + var(--reveal,0)*.75);transform:translateX(calc((1 - var(--reveal,0))*28px));transition:.4s}.console-line i{color:#d6edff;font-style:normal}.console-line b{color:#dcefff;font-weight:400}.console-line.muted{color:#607d9e}.console-line.bars{height:9px;margin:12px 0;border-block:1px solid #6c9cca44;background:repeating-linear-gradient(90deg,#8ecbff 0 5px,transparent 5px 11px);opacity:calc(var(--reveal,0)*.8);transform:scaleX(var(--reveal,0));transform-origin:left}.fft-field{inset:14% 7% 10%;overflow:hidden;background:radial-gradient(circle at 50% 50%,#4a83bb1f,transparent 38%)}.fft-meta{display:flex;justify-content:space-between;color:#708cab;font-size:9px;opacity:.8}.fft-grid{position:absolute;inset:22% 0 12%;background:linear-gradient(#82b8dd20 1px,transparent 1px),linear-gradient(90deg,#82b8dd20 1px,transparent 1px);background-size:clamp(18px,3vw,38px) clamp(18px,3vw,38px);mask-image:radial-gradient(ellipse,#000 10%,transparent 73%);transform:scale(calc(.75 + var(--reveal,0)*.25));opacity:calc(.3 + var(--reveal,0)*.7)}.fft-rings{position:absolute;inset:20% 18% 15%;display:grid;place-items:center;opacity:calc(var(--reveal,0)*.8)}.fft-rings i{position:absolute;width:clamp(70px,13vw,210px);aspect-ratio:1;border:1px solid #9ccfff55;border-radius:50%;box-shadow:0 0 30px #77baff18}.fft-rings i:nth-child(2){width:55%;border-style:dashed}.fft-rings i:nth-child(3){width:35%}.fft-rings i:nth-child(4){width:12%;background:#d6eeff;box-shadow:0 0 30px #9fd5ff}.fft-readout{position:absolute;inset:auto 0 4%;display:flex;flex-direction:column;align-items:center;gap:10px}.fft-noise{color:#7398b9;opacity:calc(1 - var(--reveal,0));letter-spacing:.2em}.fft-readout strong{font-size:clamp(19px,3vw,44px);letter-spacing:.16em;color:#e5f4ff;opacity:var(--reveal,0);filter:blur(calc((1 - var(--reveal,0))*5px));text-shadow:0 0 28px #9bd2ff66}.fft-readout small{font-size:9px;color:#7690ad;opacity:var(--reveal,0)}.fragment-board{inset:18% 10% 14%;gap:20px}.board-head,.board-foot{display:flex;justify-content:space-between;color:#7a9cbb;font-size:9px}.fragment-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;max-width:900px;margin:auto;width:100%}.fragment-grid i{padding:12px 8px;border:1px solid #79a9d433;background:#09192a;color:#c2dcf2;font-style:normal;text-align:center;opacity:calc(.15 + var(--reveal,0)*.85);transform:translateY(calc((1 - var(--reveal,0))*18px));transition-delay:calc(var(--n)*35ms)}.fragment-grid i:nth-child(4n+1),.fragment-grid i:nth-child(4n+2){color:#d2b875}.text-equation{align-items:center;text-align:center;line-height:2}.text-equation span{color:#abc5db;opacity:calc(.25 + var(--reveal,0)*.75)}.text-equation i{color:#d9edff;letter-spacing:.35em;opacity:var(--reveal)}.text-equation b{font-weight:400;color:#819ebb;font-size:clamp(9px,1vw,13px);opacity:var(--reveal)}.text-equation strong{font-size:clamp(22px,3vw,42px);font-weight:400;color:#e4f3ff;letter-spacing:.15em;opacity:var(--reveal);text-shadow:0 0 30px #9ed4ff55}.nihilist-grid{align-items:center;text-align:center;gap:28px;color:#9bb5cf}.square-5x5{padding:20px;border:1px solid #80a9cc35;line-height:2.5;letter-spacing:.2em;color:#c8dced}.nihilist-calc{line-height:2.1}.nihilist-calc strong{color:#ecf6ff;font-weight:400;font-size:clamp(17px,2.6vw,34px);letter-spacing:.15em}.fence-board{align-items:center;gap:26px;text-align:center}.zigzag{font-size:clamp(22px,5vw,76px);letter-spacing:.2em;color:#9bcfff;opacity:var(--reveal);text-shadow:0 0 24px #81c6ff44}.fence-board .final-phrase{position:static;opacity:var(--reveal);font-size:clamp(17px,2.8vw,34px);color:#dff2ff}
#decrypt .decrypt-stage{position:sticky;top:0;height:100svh;min-height:0;isolation:isolate}
#decrypt .decrypt-heading{left:clamp(24px,6vw,90px);top:clamp(34px,6vh,64px);width:auto;max-width:calc(100% - 48px);pointer-events:none}
#decrypt .decrypt-heading .sec-kicker{margin:0 0 5px;font-size:9px}
#decrypt .decrypt-heading .sec-title{font-size:clamp(27px,3vw,40px);line-height:1.18}
#decrypt .decrypt-heading .sec-desc{margin:5px 0 0;font-size:11px}
#decrypt .decrypt-beat,#decrypt .decrypt-beat:nth-of-type(n){position:absolute;inset:0;top:0;height:100%;min-height:0;padding:clamp(112px,17vh,170px) clamp(36px,9vw,140px) 82px clamp(36px,9vw,140px);display:block;border:0;border-radius:0;background:transparent;box-shadow:none}
#decrypt .decrypt-beat .beat-copy{left:50%;top:clamp(112px,17vh,170px);width:min(760px,82vw);transform:translateX(-50%);text-align:center}
#decrypt .decrypt-beat .beat-copy .beat-label{font-size:10px}
#decrypt .decrypt-beat .beat-copy h3{font-size:clamp(25px,3.4vw,43px);letter-spacing:.02em}
#decrypt .decrypt-beat .beat-index{left:clamp(24px,6vw,90px);bottom:35px}
#decrypt .decrypt-beat .evidence-frame{inset:50% auto auto 50%;width:min(84vw,1100px);height:48svh;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;overflow:visible}
#decrypt .decrypt-beat .evidence-frame img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;transform:translateY(-20px)}
#decrypt .decrypt-beat .evidence-frame figcaption{bottom:-27px;left:0;right:0;text-align:center;background:none;color:#b3c8dc;font-size:10px}
#decrypt .decrypt-beat .fragment-board,#decrypt .decrypt-beat .text-equation,#decrypt .decrypt-beat .nihilist-grid,#decrypt .decrypt-beat .fence-board{inset:50% auto auto 50%;width:min(84vw,1050px);max-height:60vh;transform:translate(-50%,-43%);align-items:center;text-align:center}
#decrypt .decrypt-beat .assembled-phrase{inset:50% 8% auto;transform:translateY(-45%);font-size:clamp(36px,6vw,78px)}
#decrypt .decrypt-stage-footer{left:clamp(36px,9vw,140px);right:clamp(36px,9vw,140px);bottom:28px}
#decrypt .decrypt-progress{left:clamp(24px,6vw,90px);top:50%;height:25vh;transform:translateY(-50%)}
#decrypt .decrypt-beat:nth-of-type(n){top:0}
#decrypt .decrypt-beat.is-active{opacity:1;visibility:visible;transform:none}
@media(max-width:850px){#decrypt .decrypt-story{height:920vh}#decrypt .decrypt-heading{left:22px;top:24px;width:calc(100% - 44px)}#decrypt .decrypt-heading .sec-desc{display:block}#decrypt .decrypt-beat,#decrypt .decrypt-beat:nth-of-type(n){top:0;height:100%;min-height:0;padding:145px 20px 84px;grid-template-columns:1fr;grid-template-rows:1fr}#decrypt .decrypt-beat .beat-copy{top:132px;width:calc(100% - 32px)}#decrypt .decrypt-beat .beat-copy h3{font-size:clamp(24px,5vw,34px)}#decrypt .decrypt-beat .evidence-frame{width:92vw;height:42svh;transform:translate(-50%,-50%)}#decrypt .decrypt-beat .fragment-board,#decrypt .decrypt-beat .text-equation,#decrypt .decrypt-beat .nihilist-grid,#decrypt .decrypt-beat .fence-board{width:92vw;max-height:50vh;transform:translate(-50%,-38%)}#decrypt .decrypt-beat .assembled-phrase{font-size:clamp(29px,8vw,48px)}#decrypt .decrypt-stage-footer{left:56px;right:20px;bottom:25px}#decrypt .decrypt-beat .beat-index{left:22px;bottom:24px}}
@media(max-width:580px){#decrypt .decrypt-story{height:920vh}#decrypt .decrypt-heading{top:20px}#decrypt .decrypt-heading .sec-kicker{font-size:7px}#decrypt .decrypt-heading .sec-title{font-size:25px}#decrypt .decrypt-heading .sec-desc{font-size:9px}#decrypt .decrypt-beat,#decrypt .decrypt-beat:nth-of-type(n){height:100%;min-height:0;top:0;padding:134px 14px 78px}#decrypt .decrypt-beat .beat-copy{top:128px}#decrypt .decrypt-beat .beat-copy .beat-label{font-size:8px}#decrypt .decrypt-beat .beat-copy h3{font-size:25px}#decrypt .decrypt-beat .evidence-frame{width:92vw;height:40svh;transform:translate(-50%,-50%)}#decrypt .decrypt-beat .evidence-frame img{max-height:100%;max-width:100%}#decrypt .decrypt-beat .evidence-frame figcaption{bottom:-23px;font-size:8px}#decrypt .decrypt-beat .fragment-board,#decrypt .decrypt-beat .text-equation,#decrypt .decrypt-beat .nihilist-grid,#decrypt .decrypt-beat .fence-board{width:96vw;max-height:48vh;transform:translate(-50%,-35%);gap:12px}#decrypt .decrypt-beat .fragment-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#decrypt .decrypt-beat .fragment-grid i{font-size:7px}#decrypt .decrypt-beat .assembled-phrase{font-size:clamp(27px,8vw,38px)}#decrypt .decrypt-stage-footer{left:48px;right:12px;bottom:20px;font-size:6px}#decrypt .decrypt-beat .beat-index{left:16px;bottom:18px;font-size:8px}}
/* archive interaction */
.music-archive{margin:0 0 32px;padding:14px 0;border-block:1px solid #8cb4d526}.archive-slot-head{display:flex;align-items:baseline;gap:12px;margin-bottom:12px;color:#829ab4}.archive-slot-head span:first-child{font-size:8px;letter-spacing:.18em}.archive-slot-head b{font:17px var(--serif);color:#d5e6f7}.archive-slot-head span:last-child{margin-left:auto;font:9px var(--mono)}.archive-slot{min-height:58px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;border:1px dashed #7194b443;background:#07111d66;transition:background .25s,border-color .25s,box-shadow .25s}.archive-slot.drop-ready{border-color:#a8d5fa;background:#102944;box-shadow:inset 0 0 28px #72baff1b}.archive-empty{color:#71869e;font-size:9px}.archive-item{padding:8px 10px;border:1px solid #83b5df44;background:#0e2033;color:#c3ddf3;font-size:9px;cursor:pointer;transition:.25s}.archive-item:hover,.archive-item:focus-visible{outline:none;border-color:#b9e0ff;background:#173754}.track{cursor:grab;touch-action:pan-y}.track.dragging{opacity:.35;transform:scale(.985)}.track.stored{animation:track-store .65s var(--ease)}@keyframes track-store{50%{opacity:.1;transform:translateX(35px) scale(.97)}}.t-btn.store{min-width:32px;padding-inline:8px;font-size:14px}.fragment-grid i{display:flex;justify-content:center;gap:.015em;padding:10px 3px;white-space:nowrap}.fragment-cell,.fragment-tail{display:inline-block;opacity:calc(.25 + var(--reveal,0)*.75);transform:translateY(calc((1 - var(--reveal,0))*4px));transition:opacity .35s,transform .45s}.fragment-tail{color:#e5d08d;text-shadow:0 0 10px #e4c67766}.square-5x5{display:grid;grid-template-columns:repeat(5,42px);gap:4px;justify-content:center;border:0;padding:0}.square-5x5 span{padding:8px;border:1px solid #80a9cc35;background:#091725;color:#c8dced}.square-5x5 span:nth-child(5n){border-color:#c8ab6c99;color:#ead69d}.operation-step{display:inline-block;margin:4px 7px;color:#94acc5}.nihilist-calc{max-width:720px}.evidence-frame{position:absolute;inset:15% 6% 12%;display:grid;place-items:center;margin:0;overflow:hidden}.evidence-frame img{width:auto;height:auto;max-width:100%;max-height:calc(100svh - 180px);object-fit:contain;filter:drop-shadow(0 25px 65px #0009)}.evidence-frame figcaption{position:absolute;right:0;bottom:0;padding:10px;color:#d0e4f8;font:10px var(--mono);background:linear-gradient(90deg,transparent,#030914cc)}.beat-fourier .fft-original{inset:13% 4% 10%;transition:transform .8s var(--ease),opacity .8s}.beat-fourier .fft-original img{max-width:100%;max-height:calc(100svh - 160px)}.beat-fourier.to-fragments .fft-original{transform:translateY(-18%) scale(.72);opacity:.16}.beat-fragments .fragment-board{transition:opacity .65s,transform .8s var(--ease)}.beat-fragments:not(.is-active) .fragment-board{opacity:calc(var(--reveal,0)*.9);transform:translateY(calc((1 - var(--reveal,0))*24px))}@media(max-width:850px){.archive-slot{min-height:68px}.fragment-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.fragment-grid i{font-size:8px}.decode-console,.fft-field,.fragment-board,.text-equation,.nihilist-grid,.fence-board{inset:23% 7% 17%}.evidence-frame{inset:22% 4% 14%}.evidence-frame img{max-height:calc(100svh - 250px)}.square-5x5{grid-template-columns:repeat(5,34px)}}

/* ══════════════ DRAMATIC LAYER · scroll-driven, zero fabricated content ══════════════ */

/* — giant ghost beat number — */
#decrypt .decrypt-beat::before{content:attr(data-num);display:block;position:absolute;z-index:0;right:-1.5vw;top:50%;font:900 clamp(220px,34vw,560px)/1 var(--mono);letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1px #7fb2e42e;opacity:calc(var(--reveal,0)*.55);transform:translateY(-50%) translateX(calc((1 - var(--reveal,0))*6vw)) scale(calc(1.14 - var(--reveal,0)*.14));pointer-events:none}

/* — beat-change stage flash — */
.stage-flash{position:absolute;inset:0;z-index:8;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 50% 62%,#bfe3ff1f,transparent 62%)}
.stage-flash.go{animation:stage-flash .7s var(--ease)}
@keyframes stage-flash{0%{opacity:0}18%{opacity:1}100%{opacity:0}}

/* — entrance glitch on scene title — */
#decrypt .decrypt-beat.is-active .beat-copy h3{animation:h3-glitch .55s steps(2,jump-none) both}
@keyframes h3-glitch{0%{text-shadow:-6px 0 #ff2d55,6px 0 #00e5ff;transform:translateX(-4px)}30%{text-shadow:4px 0 #ff2d55,-4px 0 #00e5ff;transform:translateX(3px)}60%{text-shadow:-2px 0 #ff2d55,2px 0 #00e5ff}100%{text-shadow:none;transform:none}}
#decrypt .decrypt-beat.is-active .beat-copy .beat-label{animation:label-in .5s var(--ease) both}
@keyframes label-in{0%{opacity:0;letter-spacing:.5em}100%{opacity:1;letter-spacing:.18em}}

/* — FFT · scanline + noise dissolve + shockwave — */
#decrypt .fft-original .fx-scan{position:absolute;left:6%;right:6%;top:calc(6% + var(--reveal,0)*88%);height:2px;background:linear-gradient(90deg,transparent,#cfeaff,#9fd8ff,#cfeaff,transparent);box-shadow:0 0 24px 5px #7cc4ff88;opacity:calc(1 - max(var(--reveal,0) - .82,0)*5.5);pointer-events:none}
#decrypt .fft-original .fx-noise{position:absolute;inset:0;pointer-events:none;opacity:calc((1 - var(--reveal,0))*.55);background-image:repeating-linear-gradient(0deg,#ffffff09 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,#ffffff07 0 1px,transparent 1px 4px);animation:fx-noise .28s steps(3) infinite}
@keyframes fx-noise{0%{background-position:0 0,0 0}33%{background-position:13px 7px,-9px 11px}66%{background-position:-7px 15px,17px -5px}100%{background-position:5px -11px,-13px 3px}}
#decrypt .fft-original .fx-ring{position:absolute;left:50%;top:50%;width:20px;height:20px;border:1px solid #bfe3ff;border-radius:50%;transform:translate(-50%,-50%);opacity:0;pointer-events:none}
#decrypt .beat-fourier.impact .fx-ring{animation:fx-ring .9s var(--ease) both}
@keyframes fx-ring{0%{width:20px;height:20px;opacity:.95;box-shadow:0 0 30px #9fd4ff}100%{width:130%;height:280%;opacity:0;border-width:2px}}
#decrypt .beat-fourier.is-active .fft-original img{animation:fft-breathe 3.2s ease-in-out infinite}
@keyframes fft-breathe{0%,100%{transform:translateY(-20px) scale(1)}50%{transform:translateY(-20px) scale(1.014)}}
#decrypt .beat-fourier.impact .fft-original figcaption{animation:caption-pop .6s var(--ease) both}
@keyframes caption-pop{0%{transform:scale(1);text-shadow:none}35%{transform:scale(1.08);text-shadow:0 0 26px #9fd4ffcc}100%{transform:scale(1);text-shadow:none}}

/* — fragments · fly-in assembly + tail ignition + sort beam — */
#decrypt .fragment-grid i{transform:translate(var(--fx,0),calc((1 - var(--reveal,0))*46px)) rotate(calc((1 - var(--reveal,0))*var(--fr,0deg)))}
#decrypt .fragment-grid i:nth-child(3n){--fx:-46px;--fr:-6deg}
#decrypt .fragment-grid i:nth-child(3n+1){--fx:38px;--fr:5deg}
#decrypt .fragment-grid i:nth-child(3n+2){--fx:-14px;--fr:-2deg}
#decrypt .fragment-board{position:relative}
#decrypt .fragment-board::after{content:"";position:absolute;top:2%;bottom:2%;left:calc(4% + var(--reveal,0)*92%);width:1px;background:linear-gradient(#fff0,#bfe0ff,#fff0);box-shadow:0 0 18px 2px #8ec9ff66;opacity:calc(1 - var(--reveal,0));pointer-events:none}
#decrypt .fragment-tail{transition-delay:calc(var(--n,0)*60ms)}

/* — clockwise · orbit ring + word rotation-in — */
#decrypt .beat-read::after{content:"";position:absolute;left:50%;top:56%;width:min(64vh,78vw);aspect-ratio:1;transform:translate(-50%,-50%) rotate(calc(var(--reveal,0)*160deg - 40deg));border:1px solid #9cd0ff2c;border-radius:50%;border-top-color:#bfe3ffb0;border-right-color:#bfe3ff70;opacity:calc(var(--reveal,0)*.9);pointer-events:none}
#decrypt .assembled-phrase span{transform:rotate(calc((1 - var(--reveal,0))*8deg)) translateY(calc((1 - var(--reveal,0))*16px))}

/* — zero-width · detect sweep + code flicker + morse typing + slam — */
#decrypt .equation-copy{background:linear-gradient(100deg,transparent 40%,#bfe3ff26 50%,transparent 60%) no-repeat;background-size:250% 100%;background-position:calc(130% - var(--reveal,0)*260%) 0}
#decrypt .zero-run i{border:1px dashed #7398b9;padding:3px 9px;color:#cfe6ff;opacity:calc(.2 + var(--reveal,0)*.8)}
#decrypt .beat-zero-width.is-active .zero-run i{animation:code-flicker 1.7s steps(2,jump-none) infinite}
@keyframes code-flicker{0%,100%{opacity:calc(.35 + var(--reveal,0)*.65)}50%{opacity:1;box-shadow:0 0 12px #8ec9ff55}}
#decrypt .morse-result{clip-path:inset(0 calc((1 - min(var(--reveal,0)*1.6,1))*96%) 0 0)}
#decrypt .text-equation strong{letter-spacing:calc(.55em - min(var(--reveal,0)*1.2,1)*.4em);filter:blur(calc((1 - min(var(--reveal,0)*1.5,1))*8px)) drop-shadow(0 0 calc(var(--reveal,0)*26px) #9fd4ff88)}
#decrypt .beat-zero-width.impact .text-equation strong{animation:slam .5s var(--ease) both}
@keyframes slam{0%{transform:scale(1.18)}40%{transform:scale(.97)}100%{transform:scale(1)}}

/* — nihilist · step cascade + key march + square pulse + result scale-in — */
#decrypt .operation-step{opacity:calc(.12 + var(--reveal,0)*.88);transform:translateY(calc((1 - var(--reveal,0))*8px));transition-delay:calc(var(--n,0)*70ms)}
#decrypt .key-row{background:linear-gradient(100deg,transparent 30%,#bfe3ff1f 50%,transparent 70%) no-repeat;background-size:220% 100%;animation:key-march 2.2s linear infinite}
@keyframes key-march{0%{background-position:130% 0}100%{background-position:-90% 0}}
#decrypt .beat-nihilist.impact .square-5x5{animation:square-pulse .6s var(--ease)}
@keyframes square-pulse{40%{transform:scale(1.03);box-shadow:0 0 40px #9fd4ff33}}
#decrypt .nihilist-calc strong{display:inline-block;margin-top:10px;letter-spacing:.22em;color:#eaf6ff;opacity:calc((var(--reveal,0) - .55)*2.2);transform:scale(calc(1.25 - min(var(--reveal,0),1)*.25));text-shadow:0 0 30px #9fd4ff66}

/* — fence · self-drawing zigzag + reading head + final slam + shake — */
#decrypt .fence-rails{position:relative}
#decrypt .zigzag{clip-path:inset(0 calc((1 - min(var(--reveal,0)*1.4,1))*100%) 0 0)}
#decrypt .fx-head{position:absolute;left:2%;top:30%;width:9px;height:9px;border-radius:50%;background:#dff2ff;box-shadow:0 0 14px 4px #8ec9ffcc;opacity:calc(var(--reveal,0)*.9);animation:head-zigzag 2.8s var(--ease) infinite}
@keyframes head-zigzag{0%{left:2%;top:30%}25%{left:34%;top:70%}50%{left:66%;top:30%}75%{left:92%;top:70%}100%{left:2%;top:30%}}
#decrypt .fence-board .final-phrase{opacity:calc((var(--reveal,0) - .5)*2);transform:scale(calc(1.3 - min(var(--reveal,0),1)*.3));text-shadow:0 0 calc(var(--reveal,0)*34px) #9fd4ff77}
#decrypt .beat-fence.impact{animation:stage-shake .5s var(--ease)}
@keyframes stage-shake{20%{transform:translate(-6px,3px)}40%{transform:translate(5px,-3px)}60%{transform:translate(-3px,2px)}80%{transform:translate(2px,-1px)}}

/* — progress + index feedback — */
#decrypt .decrypt-progress i{animation:prog-pulse 2s ease-in-out infinite}
@keyframes prog-pulse{50%{box-shadow:0 0 18px 3px #83c5ffcc}}
#decrypt-stage-index.tick{display:inline-block;animation:idx-tick .45s var(--ease)}
@keyframes idx-tick{0%{opacity:0;transform:translateY(7px)}100%{opacity:1;transform:none}}

@media(max-width:850px){#decrypt .decrypt-beat::before{font-size:clamp(160px,58vw,300px);right:-4vw;opacity:calc(var(--reveal,0)*.4)}#decrypt .fft-original .fx-scan{left:2%;right:2%}}

/* ══════════════ 浏览器内打包 · button 适配与进度状态 ══════════════ */
button.batch-card{font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%}
button.nav-zip{font:inherit;cursor:pointer;background:none}
button.btn{font:inherit;cursor:pointer}
[data-pack]{-webkit-tap-highlight-color:transparent}
[data-pack].packing{opacity:.72;pointer-events:none}
[data-pack].packing .batch-go,[data-pack].packing span{animation:pack-pulse 1s ease-in-out infinite}
[data-pack].pack-error{border-color:#d98383aa!important}
@keyframes pack-pulse{50%{opacity:.45}}
