:root{--bg: #0a0612;--paper: #f3eed8;--paper-dim: #c9c2a4;--magenta: #ff2d8a;--cyan: #00e0ff;--amber: #ffbe0b;--serif-cn: "Noto Serif SC", "Songti SC", "STSong", serif;--mono: "DM Mono", "Departure Mono", ui-monospace, "SF Mono", Menlo, monospace;--button-cn: "Heiti SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--img-cover: image-set(url(/images/cover-360w.webp) 1x, url(/images/cover-720w.webp) 2x, url(/images/cover.webp) 3x);--img-logo: image-set(url(/images/logo-360w.webp) 1x, url(/images/logo-720w.webp) 2x, url(/images/logo.webp) 3x);--img-ch1: image-set(url(/images/chapters/ch1-arrival-360w.webp) 1x, url(/images/chapters/ch1-arrival-720w.webp) 2x, url(/images/chapters/ch1-arrival.webp) 3x);--img-ch2: image-set(url(/images/chapters/ch2-observation-360w.webp) 1x, url(/images/chapters/ch2-observation-720w.webp) 2x, url(/images/chapters/ch2-observation.webp) 3x);--img-ch3: image-set(url(/images/chapters/ch3-speech-360w.webp) 1x, url(/images/chapters/ch3-speech-720w.webp) 2x, url(/images/chapters/ch3-speech.webp) 3x);--img-ch4: image-set(url(/images/chapters/ch4-fire-360w.webp) 1x, url(/images/chapters/ch4-fire-720w.webp) 2x, url(/images/chapters/ch4-fire.webp) 3x);--img-ch5: image-set(url(/images/chapters/ch5-bazaar-360w.webp) 1x, url(/images/chapters/ch5-bazaar-720w.webp) 2x, url(/images/chapters/ch5-bazaar.webp) 3x);--img-ch6: image-set(url(/images/chapters/ch6-goldvalley-360w.webp) 1x, url(/images/chapters/ch6-goldvalley-720w.webp) 2x, url(/images/chapters/ch6-goldvalley.webp) 3x);--img-ch7: image-set(url(/images/chapters/ch7-inventory-360w.webp) 1x, url(/images/chapters/ch7-inventory-720w.webp) 2x, url(/images/chapters/ch7-inventory.webp) 3x);--img-ch8: image-set(url(/images/chapters/ch8-circle-360w.webp) 1x, url(/images/chapters/ch8-circle-720w.webp) 2x, url(/images/chapters/ch8-circle.webp) 3x)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:#000;color:var(--paper);font-family:var(--serif-cn);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100svh;min-height:100dvh;overflow-x:hidden}#root{display:flex;flex-direction:column}@media (min-width: 600px){body{background:#1a1410;background-image:radial-gradient(ellipse at center,#2a1f18,#0a0807);padding:24px}#root{align-items:center}}@media (min-width: 1024px){body{padding:0}body:before{content:"声浪大陆 · SONIC CONTINENT";position:fixed;top:32px;left:40px;font-family:var(--mono);font-size:11px;letter-spacing:.4em;color:#f3eed873;text-transform:uppercase;z-index:1;pointer-events:none}body:after{content:"ISSUE №01 · MMXXVI";position:fixed;top:32px;right:40px;font-family:var(--mono);font-size:11px;letter-spacing:.4em;color:var(--amber);text-transform:uppercase;z-index:1;pointer-events:none}#root{min-height:100dvh;justify-content:center;padding:56px 24px}#root:before{content:"A NEW WORLD AWAITS";position:fixed;bottom:32px;left:40px;font-family:var(--mono);font-size:10px;letter-spacing:.5em;color:#f3eed859;text-transform:uppercase;z-index:1;pointer-events:none;white-space:nowrap}#root:after{content:"踏上虚构大陆 · 揭晓属于你的真名";position:fixed;bottom:32px;right:40px;font-family:var(--mono);font-size:10px;letter-spacing:.5em;color:var(--amber);text-transform:uppercase;z-index:1;pointer-events:none;white-space:nowrap}}.frame{position:relative;width:100%;max-width:420px;min-height:100svh;min-height:100dvh;margin:0 auto;background:var(--bg);overflow:hidden;isolation:isolate;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}@media (min-width: 600px){.frame{width:360px;height:640px;min-height:auto;max-width:360px;flex-shrink:0;padding-top:0;padding-bottom:0;box-shadow:0 24px 60px #000000b3,0 0 0 1px #f3eed80d}}@media (min-width: 1024px){.frame{width:400px;height:711px;max-width:400px;border-radius:4px;box-shadow:0 32px 80px #000000d9,0 0 0 1px #f3eed814,0 0 60px #ff2d8a14}}@media (min-width: 1440px){.frame{width:420px;height:747px;max-width:420px}body:before,body:after{font-size:12px}}@media (orientation: landscape) and (max-height: 500px){body:before{content:"请竖屏使用 · Best in portrait";position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#0a0612f5;color:var(--paper);font-family:var(--mono);font-size:14px;letter-spacing:.3em;text-transform:uppercase;text-align:center;padding:20px}}.frame .bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-size:cover;background-position:center}.frame .scrim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:linear-gradient(to bottom,#0a0612a6,#0a061233 22%,#0a061200 45%,#0a061200 55%,#0a06124d 75%,#0a0612d9)}.frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:50;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.5 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");background-size:200px 200px;opacity:.18;mix-blend-mode:overlay}.frame>*{position:relative;z-index:10}.masthead{display:flex;justify-content:space-between;align-items:center;padding:14px 18px 10px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--paper);text-transform:uppercase;border-bottom:1px solid rgba(243,238,216,.22);text-shadow:0 1px 2px rgba(0,0,0,.6)}.masthead .left{display:flex;gap:10px;align-items:baseline}.masthead .num{color:var(--amber);font-weight:500}.masthead .right{letter-spacing:.3em}.title-block{padding:22px 24px 8px;text-align:center}.eyebrow{font-family:var(--mono);font-size:clamp(8px,2.5vw,10px);letter-spacing:.5em;color:var(--cyan);margin-bottom:14px;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.6)}.title-stack{position:relative;display:inline-block;font-family:var(--serif-cn);font-weight:900;font-size:clamp(48px,13vw,60px);line-height:.95;letter-spacing:.04em}.title-stack .layer{display:block}.title-stack .layer-base{color:#f3eed8b3;position:relative;z-index:3;text-shadow:0 1px 3px rgba(0,0,0,.55),0 0 10px rgba(0,0,0,.35)}.title-stack .layer-cyan,.title-stack .layer-magenta{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;mix-blend-mode:screen;opacity:.85}.title-stack .layer-cyan{color:var(--cyan);transform:translate(-1.5px,-.5px);z-index:2}.title-stack .layer-magenta{color:var(--magenta);transform:translate(1.5px,.5px);z-index:1}.title-en{font-family:var(--mono);font-size:clamp(10px,2.8vw,12px);letter-spacing:.55em;color:var(--paper);margin-top:14px;text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.6)}.title-en:before,.title-en:after{content:"——";margin:0 10px;color:var(--magenta);letter-spacing:0}.spacer{flex:1;min-height:20px}.bottom-block{padding:0 24px 4px}.meta{display:flex;justify-content:center;gap:16px;padding:8px 0 4px;font-family:var(--mono);font-size:clamp(9px,2.6vw,11px);letter-spacing:.25em;color:var(--paper);text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.6)}.meta span{position:relative}.meta span+span:before{content:"·";position:absolute;left:-10px;color:var(--amber)}.tagline{text-align:center;padding:8px 0 14px;font-family:var(--serif-cn);font-size:clamp(12px,3.5vw,14px);letter-spacing:.3em;color:var(--paper);text-shadow:0 1px 3px rgba(0,0,0,.7)}.cta-wrap{display:flex;justify-content:center;padding:4px 24px 18px}.stamp{position:relative;display:inline-flex;align-items:center;justify-content:center;border:0;color:var(--paper);font-family:var(--button-cn);font-size:clamp(10px,2.8vw,12px);font-weight:800;letter-spacing:.4em;padding:clamp(10px,3vw,14px) clamp(28px,8vw,40px);min-width:160px;min-height:44px;text-transform:uppercase;cursor:pointer;border-radius:999px;overflow:hidden;isolation:isolate;background-color:#1a0a2e;background-image:linear-gradient(135deg,#ff2d8a38,#00e0ff2e);box-shadow:inset 0 1px #00e0ff80,inset 0 -1px #ff2d8a99,0 0 0 1px #00e0ff47,0 6px 22px #ff2d8a52,0 0 14px #00e0ff38;text-shadow:0 1px 2px rgba(0,0,0,.7),0 0 10px rgba(255,255,255,.25);transition:transform .12s cubic-bezier(.85,0,.15,1),box-shadow .12s ease,filter .12s ease}.stamp:hover{filter:brightness(1.06);box-shadow:inset 0 1px #00e0ffb3,inset 0 -1px #ff2d8acc,0 0 0 1px #00e0ff73,0 10px 32px #ff2d8a73,0 0 22px #00e0ff59}.stamp:active{transform:translateY(2px);box-shadow:inset 0 1px #00e0ff66,inset 0 -1px #ff2d8a80,0 0 0 1px #00e0ff40,0 3px 10px #ff2d8a4d}.stamp:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.5)}.colophon{border-top:1px solid rgba(243,238,216,.22);padding:10px 18px 14px;display:flex;justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:clamp(8px,2.4vw,10px);letter-spacing:.3em;color:var(--paper);text-transform:uppercase;text-shadow:0 1px 2px rgba(0,0,0,.7)}.colophon .center{color:var(--amber)}.reveal{opacity:0;animation:reveal .6s cubic-bezier(.85,0,.15,1) forwards}.reveal-1{animation-delay:.1s}.reveal-2{animation-delay:.3s}.reveal-3{animation-delay:.55s}.reveal-4{animation-delay:.8s}@keyframes reveal{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chapter-eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.5em;color:var(--amber);margin-bottom:12px}.chapter-title-cn{font-size:clamp(38px,11vw,52px);font-weight:900;letter-spacing:.06em}.reveal-eyebrow{font-family:var(--mono);font-size:9px;letter-spacing:.6em;color:var(--magenta);margin-bottom:8px}.bloodline-code{font-family:var(--mono);font-size:11px;letter-spacing:.5em;color:var(--cyan);margin-top:14px;text-shadow:0 1px 2px rgba(0,0,0,.6)}.rarity-tag{display:inline-block;padding:8px 16px;margin-top:8px;background:#ff2d8a2e;border:1px solid var(--magenta);border-radius:6px;font-family:var(--mono);font-size:11px;letter-spacing:.4em;color:var(--paper);filter:drop-shadow(0 3px 12px rgba(255,45,138,.3))}.text-center{text-align:center}.text-mono{font-family:var(--mono)}button{font-family:inherit;font-size:inherit}.consent-row{display:flex;align-items:flex-start;gap:8px;font-family:var(--mono);font-size:11px;line-height:1.5;color:var(--paper-dim);cursor:pointer}.consent-row input[type=checkbox]{margin-top:2px;accent-color:var(--amber);flex-shrink:0}.consent-row a{color:var(--cyan);text-decoration:none}.consent-row a:hover{text-decoration:underline}.legal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 12px;padding:16px 12px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--paper-dim);opacity:.75}.legal-footer a{color:var(--paper-dim);text-decoration:none}.legal-footer a:hover{color:var(--cyan)}.legal-scroll{width:100%;max-width:760px;margin:0 auto;padding:32px 20px 64px;overflow-y:auto;height:100%}.legal-back{background:transparent;border:1px solid rgba(243,238,216,.25);border-radius:4px;color:var(--paper-dim);font-family:var(--mono);font-size:12px;padding:6px 14px;margin-bottom:24px;cursor:pointer}.legal-back:hover{color:var(--cyan);border-color:var(--cyan)}.legal-doc{color:var(--paper);font-family:var(--mono);font-size:13px;line-height:1.8}.legal-h1{font-size:22px;color:var(--amber);margin:0 0 20px}.legal-h2{font-size:16px;color:var(--cyan);margin:28px 0 12px}.legal-h3{font-size:14px;color:var(--paper);margin:18px 0 8px}.legal-p{margin:10px 0;color:var(--paper-dim)}.legal-doc strong{color:var(--paper)}.legal-list{margin:8px 0;padding-left:20px;color:var(--paper-dim)}.legal-list li{margin:4px 0}.legal-hr{border:none;border-top:1px solid rgba(243,238,216,.15);margin:24px 0}.legal-muted{color:var(--paper-dim);opacity:.7;font-size:11px;margin:4px 0}.legal-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:12px}.legal-table th,.legal-table td{border:1px solid rgba(243,238,216,.18);padding:8px 10px;text-align:left;vertical-align:top;color:var(--paper-dim)}.legal-table th{color:var(--amber);background:#00000040}.ai-disclosure{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--paper-dim);opacity:.6;text-align:center;padding:8px 12px}.letter-container .ai-disclosure{margin-top:12px;border-top:1px dashed rgba(243,238,216,.18);padding-top:14px}.ai-disclosure-card{margin-top:6px}.progress-bar{padding:14px 24px 6px}.pb-meta{display:flex;justify-content:center;gap:12px;font-family:var(--mono);font-size:10px;letter-spacing:.3em;color:var(--paper-dim);margin-bottom:8px;text-transform:uppercase}.pb-dot{color:var(--amber)}.pb-chapter-row{display:flex;gap:4px;margin-bottom:8px}.pb-chunk{position:relative;flex:1 1 0;height:22px;padding:0;border:1px solid rgba(243,238,216,.18);border-radius:3px;background:#f3eed80a;font-family:var(--mono);font-size:11px;color:var(--paper-dim);cursor:pointer;overflow:hidden;letter-spacing:.05em;transition:border-color .15s ease,background .15s ease}.pb-chunk-fill{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--cyan),var(--magenta));opacity:.45;transition:width .3s ease}.pb-chunk-num{position:relative;z-index:1}.pb-chunk.focused{background:#ffbe0b24}.pb-chunk.current{border-color:var(--amber);color:var(--amber)}.pb-question-row{display:flex;gap:4px;justify-content:center}.pb-qcell{flex:0 0 30px;height:30px;padding:0;border:1px solid rgba(243,238,216,.18);border-radius:3px;background:#f3eed80f;font-family:var(--mono);font-size:11px;color:var(--paper-dim);cursor:not-allowed;transition:transform .15s ease,box-shadow .2s ease,background .2s ease,opacity .2s ease}.pb-qcell.answered{background:linear-gradient(180deg,#00e0ff8c,#ff2d8a8c);border-color:transparent;color:var(--paper);cursor:pointer;opacity:.88}.pb-qcell.answered:hover,.pb-qcell.answered:active{opacity:1;transform:translateY(-1px);box-shadow:0 0 6px #ff2d8a8c}.pb-qcell.current{background:var(--amber);border-color:var(--amber);color:#000;cursor:default;box-shadow:0 0 8px #ffbe0bb3}.qpage{width:100%;max-width:420px;margin:0 auto;min-width:0;box-sizing:border-box;padding:8px 20px 24px;display:flex;flex-direction:column;gap:16px;min-height:100dvh}@media (min-width: 600px){.qpage{max-width:360px}}@media (min-width: 1024px){.qpage{max-width:400px}}@media (min-width: 1440px){.qpage{max-width:420px}}.qpage *{min-width:0}.qpage p,.qpage .qscene-line,.qpage .qscene-quote,.qpage .qprompt,.qpage .qchoice-title,.qpage .qchoice-desc{overflow-wrap:anywhere;word-break:break-word}.qscene{position:relative;padding:14px 0 10px}.qscene-rule{width:28px;height:1px;background:var(--amber);margin-bottom:14px}.qscene-line{font-family:var(--serif-cn);font-size:14px;line-height:1.7;color:var(--paper);margin-bottom:6px}.qscene-quote{font-family:var(--serif-cn);font-style:italic;font-size:14px;line-height:1.7;color:var(--paper-dim);border-left:2px solid var(--magenta);padding-left:10px;margin:8px 0}.qchoices{display:grid;grid-template-columns:1fr;gap:10px;margin-top:8px}.qchoice{display:flex;align-items:flex-start;gap:12px;text-align:left;padding:12px 14px;background:#f3eed80a;border:1px solid rgba(243,238,216,.15);border-radius:8px;color:var(--paper);cursor:pointer;transition:all .15s ease}.qchoice:hover{background:#f3eed814;border-color:#00e0ff66}.qchoice.picked{background:#ff2d8a1f;border-color:var(--magenta);box-shadow:0 0 0 1px var(--magenta),0 6px 18px #ff2d8a40}.qchoice-icon{width:48px;height:48px;flex-shrink:0;border-radius:6px;background:#0006;box-shadow:0 2px 6px #00000080,0 0 0 1px #f3eed814;object-fit:cover}.qchoice-icon-emoji{display:flex;align-items:center;justify-content:center;font-size:26px;line-height:1}.qprompt{font-family:var(--serif-cn);font-weight:700;font-size:clamp(13px,3.6vw,15px);color:var(--paper);margin:4px 0;line-height:1.5}.qchoice.picked .qchoice-icon{box-shadow:0 2px 8px #ff2d8a73,0 0 0 1px #ff2d8a80,0 0 14px #00e0ff40}.qchoice-body{flex:1}.qchoice-title{font-family:var(--serif-cn);font-weight:700;font-size:13px;line-height:1.4;color:var(--paper)}.qchoice-desc{font-size:11px;color:var(--paper-dim);margin-top:4px;line-height:1.5}.subject-prop{background:#f3eed80a;border:1px solid rgba(243,238,216,.15);border-radius:8px;padding:14px;margin-top:8px}.subject-prop-label{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.3em;color:var(--amber);text-transform:uppercase;margin-bottom:8px}.subject-prop-icon{width:32px;height:32px;border-radius:4px;background:#0006;box-shadow:0 1px 3px #00000080,0 0 0 1px #f3eed814;object-fit:cover;flex-shrink:0}.subject-prop-icon-emoji{display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.subject-prompt{font-family:var(--serif-cn);font-size:13px;color:var(--paper);margin-bottom:8px;line-height:1.5}.subject-input{width:100%;background:#0000004d;border:1px solid rgba(243,238,216,.2);border-radius:4px;color:var(--paper);font-family:var(--serif-cn);font-size:13px;padding:10px;resize:vertical;scrollbar-width:thin;scrollbar-color:rgba(243,238,216,.28) transparent}.subject-input::-webkit-scrollbar{width:6px;height:6px}.subject-input::-webkit-scrollbar-track{background:transparent}.subject-input::-webkit-scrollbar-thumb{background:#f3eed847;border-radius:3px}.subject-input::-webkit-scrollbar-thumb:hover{background:#f3eed873}.subject-input:focus{outline:none;border-color:var(--cyan);scrollbar-color:var(--cyan) transparent}.subject-input:focus::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--cyan),var(--magenta))}.subject-meta{display:flex;justify-content:space-between;margin-top:8px;font-family:var(--mono);font-size:10px;color:var(--paper-dim)}.subject-skip{cursor:pointer;color:var(--paper-dim);text-decoration:underline;letter-spacing:.2em}.subject-skip:hover{color:var(--magenta)}.qconfirm{margin-top:auto;padding:14px;background:#f3eed814;border:1px solid rgba(243,238,216,.2);border-radius:8px;color:var(--paper-dim);font-family:var(--button-cn);font-weight:800;font-size:13px;letter-spacing:.3em;cursor:not-allowed;transition:all .15s ease}.qconfirm.ready{background:linear-gradient(135deg,#ff2d8a4d,#00e0ff40);border-color:var(--magenta);color:var(--paper);cursor:pointer;box-shadow:0 6px 20px #ff2d8a40}.qconfirm.submitting{opacity:.6}.narrator{padding:24px 20px 20px;display:flex;flex-direction:column;gap:12px;min-height:100dvh}.nar-tag-top,.nar-tag-bottom{font-family:var(--mono);font-size:11px;letter-spacing:.3em;color:var(--magenta);text-align:center}.nar-tag-bottom{opacity:0;transition:opacity .5s ease}.nar-tag-bottom.in{opacity:1}.nar-body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:16px}.nar-line{font-family:var(--serif-cn);font-size:15px;line-height:1.8;color:var(--paper);opacity:0;transform:translateY(8px);transition:all .6s ease}.nar-line.in{opacity:1;transform:translateY(0)}.nar-line strong{color:var(--cyan);font-weight:700}.nar-cta{margin-top:16px;padding:12px;background:#00e0ff1a;border:1px solid var(--cyan);border-radius:8px;color:var(--cyan);font-family:var(--button-cn);font-weight:800;font-size:13px;letter-spacing:.3em;cursor:pointer}.chapter-cover{position:relative;min-height:100dvh;background:var(--cc-bg, #c9c2a4);color:var(--cc-ink, #2c2620);padding:32px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;opacity:0;transition:opacity .6s ease}.chapter-cover.in{opacity:1}.cc-noise{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.4 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");opacity:.15;mix-blend-mode:multiply}.cc-ornament{font-family:var(--mono);letter-spacing:.3em;color:var(--cc-ink);opacity:.5;margin:16px 0}.cc-num{font-family:var(--mono);font-size:13px;letter-spacing:.5em;margin-bottom:24px}.cc-emoji{font-size:56px;margin:16px 0}.cc-name{font-family:var(--serif-cn);font-weight:900;font-size:56px;letter-spacing:.08em;margin-bottom:16px}.cc-lead{margin:24px 0;max-width:320px}.cc-lead p{font-family:var(--serif-cn);font-size:14px;line-height:1.8;margin-bottom:8px;opacity:0;animation:cc-lead-in .8s ease forwards}@keyframes cc-lead-in{to{opacity:1}}.cc-btn{margin-top:auto;padding:12px 32px;background:var(--cc-ink);color:var(--cc-bg);border:0;border-radius:999px;font-family:var(--button-cn);font-weight:800;font-size:12px;letter-spacing:.4em;cursor:pointer}.letter-scroll{position:relative;overflow-y:auto;height:100dvh;background:var(--bg);color:var(--paper);scrollbar-width:thin;scrollbar-color:rgba(255,45,138,.8) transparent}.letter-scroll::-webkit-scrollbar{width:6px}.letter-scroll::-webkit-scrollbar-track{background:transparent}.letter-scroll::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#00e0ffcc,#ff2d8acc);border-radius:3px}.letter-scroll::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--cyan),var(--magenta));box-shadow:0 0 6px #ff2d8a8c}.letter-container{max-width:600px;margin:0 auto;padding:32px 20px 80px}.report-section{margin-bottom:40px;padding-bottom:24px;border-bottom:1px dashed rgba(243,238,216,.15)}.rs-header{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}.rs-num{font-family:var(--mono);font-size:11px;letter-spacing:.3em;color:var(--amber);text-transform:uppercase}.rs-title{font-family:var(--serif-cn);font-weight:700;font-size:18px;color:var(--paper)}.rs-frame{font-family:var(--serif-cn);font-style:italic;font-size:13px;color:var(--paper-dim);margin-bottom:16px;line-height:1.6}.rs-body{font-family:var(--serif-cn);font-size:14px;line-height:1.8}.rs-body p{margin-bottom:12px}.rs-body strong{color:var(--cyan);font-weight:700}.sticky-name{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:10px;padding:12px 20px;background:#0a0612eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(243,238,216,.15);opacity:0;transform:translateY(-12px);transition:all .3s ease}.sticky-name.vis{opacity:1;transform:translateY(0)}.sn-rarity-dot{width:8px;height:8px;border-radius:50%;background:var(--paper-dim)}.sn-rarity-dot[data-rarity=SSR]{background:linear-gradient(135deg,var(--cyan),var(--magenta));box-shadow:0 0 10px var(--magenta)}.sn-rarity-dot[data-rarity=SR]{background:var(--amber);box-shadow:0 0 8px var(--amber)}.sn-rarity-dot[data-rarity=R]{background:var(--paper-dim)}.sn-fantasy{font-family:var(--serif-cn);font-weight:700;font-size:14px}.sn-code{font-family:var(--mono);font-size:10px;color:var(--paper-dim);letter-spacing:.2em}.action-bar{position:fixed;bottom:0;left:0;right:0;display:flex;gap:8px;padding:12px 20px;background:#0a0612f2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid rgba(243,238,216,.15);z-index:200}.ab-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:#f3eed80a;border:1px solid rgba(243,238,216,.15);border-radius:6px;color:var(--paper);font-family:var(--button-cn);font-size:10px;letter-spacing:.2em;cursor:pointer}.ab-btn.ab-primary{background:linear-gradient(135deg,#ff2d8a4d,#00e0ff40);border-color:var(--magenta)}.ab-btn span:first-child{font-size:16px}.m1-card{display:flex;flex-direction:column;gap:12px;align-items:center}.m1-inner{position:relative;overflow:hidden;padding:20px;background:#f3eed80f;border:1px solid rgba(243,238,216,.2);border-radius:8px;text-align:center}.m1-portrait{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;filter:brightness(.4) contrast(1.1) saturate(.85);opacity:.55;z-index:0}.m1-inner>*:not(.m1-portrait){position:relative;z-index:1}.m1-fantasy{font-family:var(--serif-cn);font-weight:900;font-size:28px;margin-bottom:8px}.m1-code{font-family:var(--mono);font-size:11px;letter-spacing:.4em;color:var(--cyan);margin-bottom:16px}.m1-divider{height:1px;background:#f3eed833;margin:12px 0}.m1-row{display:flex;gap:12px;justify-content:center;font-size:13px;margin:4px 0}.m1-k{color:var(--paper-dim)}.m1-v{color:var(--paper);font-weight:600}.m1-quote-bar{font-family:var(--serif-cn);font-style:italic;font-size:13px;color:var(--paper-dim);text-align:center;padding:8px 16px;border-left:2px solid var(--magenta)}.module-pending{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--paper-dim);padding:16px;background:#f3eed80a;border:1px dashed rgba(243,238,216,.15);border-radius:6px;text-align:center}.closing{text-align:center;padding:32px 16px;font-family:var(--serif-cn);font-size:14px;line-height:2;color:var(--paper-dim)}.closing-line{margin-bottom:8px}.closing-emph{font-weight:700;color:var(--paper);margin-top:12px}.reveal-portrait{filter:brightness(.15) contrast(1.05);transform:scale(1.08);transition:filter 2s ease,transform 4s ease}.reveal-portrait.stage-1{filter:brightness(.45) contrast(1.05);transform:scale(1.04)}.reveal-portrait.stage-2,.reveal-portrait.stage-3{filter:brightness(.85) contrast(1.05);transform:scale(1)}.rarity-tag-R{background:#f3eed81a;border-color:#f3eed866;color:var(--paper)}.rarity-tag-SR{background:#ffbe0b2e;border-color:var(--amber);color:var(--amber);filter:drop-shadow(0 3px 12px rgba(255,190,11,.35))}.rarity-tag-SSR{background:linear-gradient(135deg,#ff2d8a40,#00e0ff33,#ffbe0b2e);background-size:200% 200%;animation:ssr-tag-flow 4s linear infinite;border-color:var(--magenta);color:var(--paper);filter:drop-shadow(0 3px 14px rgba(255,45,138,.45));text-shadow:0 1px 3px rgba(0,0,0,.6)}@keyframes ssr-tag-flow{to{background-position:200% 0}}.reveal-prelude{text-align:center;margin-bottom:16px}.rune{font-size:28px;margin-bottom:6px}.reveal-label{font-family:var(--mono);font-size:10px;letter-spacing:.4em;color:var(--cyan);text-transform:uppercase}.realname-card{text-align:center;padding:20px 16px;background:#f3eed80a;border:1px solid rgba(243,238,216,.18);border-radius:6px}.rn-fantasyName{font-family:var(--serif-cn);font-weight:900;font-size:32px;margin-bottom:8px}.typewriter{position:relative}.caret{display:inline-block;margin-left:2px;color:var(--cyan);animation:caret-blink .7s steps(1) infinite}@keyframes caret-blink{50%{opacity:0}}.rn-code{font-family:var(--mono);font-size:11px;letter-spacing:.5em;color:var(--cyan);margin:8px 0 12px}.rn-rarityRow{margin:8px 0 16px}.rn-rarity{display:inline-block;padding:4px 12px;border-radius:4px;font-family:var(--mono);font-size:10px;letter-spacing:.3em;background:#ff2d8a2e;border:1px solid var(--magenta)}.rn-divider{height:1px;background:#f3eed833;margin:12px 0}.rn-lineRow{display:flex;gap:10px;justify-content:center;font-size:13px;margin:4px 0}.rn-key{color:var(--paper-dim)}.rn-val{color:var(--paper);font-weight:600}.rn-quote{font-family:var(--serif-cn);font-style:italic;font-size:13px;color:var(--paper-dim);margin-top:16px;line-height:1.6}.elder-voice{margin-top:20px;padding:16px;border-top:1px dashed rgba(243,238,216,.2)}.elder-line{font-family:var(--serif-cn);font-style:italic;font-size:13px;color:var(--paper-dim);text-align:center;margin:4px 0}.elder-emph{color:var(--cyan);font-style:normal;font-weight:700;margin-top:8px}.cta-primary{display:block;width:100%;margin-top:24px;padding:14px;background:linear-gradient(135deg,#ff2d8a66,#00e0ff4d);border:1px solid var(--magenta);border-radius:8px;color:var(--paper);font-family:var(--button-cn);font-weight:800;font-size:13px;letter-spacing:.3em;cursor:pointer}.cta-fade{opacity:0;animation:cta-fade-in .8s ease forwards;animation-delay:.4s}@keyframes cta-fade-in{to{opacity:1}}.rarity-wrap{position:relative;padding:2px;border-radius:8px}.rarity-wrap.rarity-r{background:linear-gradient(135deg,silver,#888)}.rarity-wrap.rarity-sr{background:linear-gradient(135deg,var(--amber),#d4a017);box-shadow:0 0 16px #ffbe0b59}.rarity-wrap.rarity-ssr{background:linear-gradient(135deg,var(--magenta),var(--cyan),var(--amber),var(--magenta));background-size:300% 300%;animation:ssr-flow 8s linear infinite;box-shadow:0 0 24px #ff2d8a80,0 0 36px #00e0ff59}@keyframes ssr-flow{to{background-position:300% 0}}.rarity-inner{background:var(--bg);border-radius:6px}
