:root{color-scheme:dark;--ink: #e8e6e1;--ink-dim: rgba(232, 230, 225, .55);--ink-faint: rgba(232, 230, 225, .32);--accent: #ff9a3c;--ease-out: cubic-bezier(.22, 1, .36, 1)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-snap-type:y mandatory}body{background:#000;color:var(--ink);font-family:PingFang SC,Microsoft YaHei,Source Han Sans SC,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.scene-canvas{position:fixed;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity 1.2s var(--ease-out)}body[data-render-state=ready] .scene-canvas{opacity:1}.scene-vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse 120% 90% at 50% 45%,transparent 55%,rgba(0,0,0,.55) 100%),linear-gradient(to bottom,rgba(0,0,0,.35),transparent 22%,transparent 78%,rgba(0,0,0,.45))}.scene-plunge{position:fixed;inset:0;z-index:4;pointer-events:none;background:radial-gradient(ellipse 80% 66% at 50% 46%,transparent 16%,rgba(0,0,0,.96) 100%);opacity:0}.loading-screen{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#000;transition:opacity .8s var(--ease-out),visibility .8s}body[data-render-state=ready] .loading-screen,body[data-render-state=error] .loading-screen{opacity:0;visibility:hidden}.loader-ring{width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,154,60,.18);border-top-color:var(--accent);animation:loader-spin 1.1s linear infinite}@keyframes loader-spin{to{transform:rotate(360deg)}}.loader-text{font-size:12px;letter-spacing:.35em;color:var(--ink-dim)}.site-header{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;align-items:flex-start;justify-content:space-between;padding:28px 36px;pointer-events:none}.brand{pointer-events:auto;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:var(--ink)}.brand b{font-size:13px;font-weight:600;letter-spacing:.28em}.brand small{font-size:10px;letter-spacing:.3em;color:var(--ink-faint)}.render-status{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.22em;color:var(--ink-dim)}.render-status i{width:6px;height:6px;border-radius:50%;background:#6fe38b;box-shadow:0 0 8px #6fe38bcc;animation:status-pulse 2.4s ease-in-out infinite}@keyframes status-pulse{50%{opacity:.35}}.story{position:relative;z-index:5;pointer-events:none}.story-panel{min-height:100svh;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:120px 36px 96px;max-width:660px}.panel-body{opacity:.16;transform:translateY(46px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}.story-panel[data-active] .panel-body{opacity:1;transform:none}.eyebrow{font-size:11px;letter-spacing:.42em;color:var(--accent);margin-bottom:14px;text-shadow:0 0 10px rgba(0,0,0,.9)}.story-panel h1{font-size:clamp(56px,9vw,108px);font-weight:700;line-height:1;letter-spacing:.08em;text-shadow:0 0 60px rgba(255,154,60,.25)}.hero-title-en{font-size:clamp(40px,6.5vw,78px)!important;letter-spacing:.05em!important;line-height:1.08!important}.story-panel h2{font-size:clamp(34px,5vw,56px);font-weight:700;line-height:1.15;letter-spacing:.06em;text-shadow:0 0 50px rgba(255,154,60,.2)}.hero-subtitle,.panel-copy{margin-top:18px;font-size:14px;line-height:1.9;color:var(--ink-dim);letter-spacing:.06em;text-shadow:0 0 12px rgba(0,0,0,.9),0 1px 3px rgba(0,0,0,.8)}.scroll-cue{margin-top:42px;display:flex;align-items:center;gap:12px;font-size:10px;letter-spacing:.32em;color:var(--ink-faint)}.scroll-cue i{width:1px;height:40px;background:linear-gradient(to bottom,var(--accent),transparent);animation:cue-drop 1.8s var(--ease-out) infinite}@keyframes cue-drop{0%{transform:scaleY(0);transform-origin:top}55%{transform:scaleY(1);transform-origin:top}56%{transform-origin:bottom}to{transform:scaleY(0);transform-origin:bottom}}.site-list{list-style:none;margin-top:28px;width:100%}.site-list-item{display:grid;grid-template-columns:40px 1fr;column-gap:14px;row-gap:4px;padding:15px 0;border-top:1px solid rgba(232,230,225,.14)}.site-list-item:last-child{border-bottom:1px solid rgba(232,230,225,.14)}.site-list-index{font-size:11px;letter-spacing:.18em;color:var(--accent);padding-top:3px;font-variant-numeric:tabular-nums}.site-list-name{font-size:15px;font-weight:600;letter-spacing:.08em;text-shadow:0 0 10px rgba(0,0,0,.85)}.site-list-name small{margin-left:10px;font-size:10px;font-weight:400;letter-spacing:.28em;color:var(--ink-faint)}.site-list-desc{grid-column:2;font-size:12.5px;line-height:1.8;color:var(--ink-dim);letter-spacing:.04em;text-shadow:0 0 10px rgba(0,0,0,.85)}.blog-link{pointer-events:auto;display:inline-flex;align-items:center;gap:12px;margin-top:34px;padding:15px 28px;border:1px solid rgba(255,154,60,.45);border-radius:999px;color:var(--accent);font-size:12px;letter-spacing:.2em;text-decoration:none;background:#00000059;backdrop-filter:blur(4px);transition:background .4s var(--ease-out),box-shadow .4s var(--ease-out),transform .4s var(--ease-out)}.blog-link svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.blog-link:hover,.blog-link:focus-visible{background:#ff9a3c24;box-shadow:0 0 26px #ff9a3c47;transform:translateY(-2px)}.panel-footer{margin-top:64px;display:flex;gap:28px;font-size:10px;letter-spacing:.3em;color:var(--ink-faint)}.site-header{opacity:0;transform:translateY(14px);transition:opacity 1s var(--ease-out) .35s,transform 1s var(--ease-out) .35s}body[data-render-state=ready] .site-header{opacity:1;transform:none}.noscript-message{position:fixed;inset:auto 0 50%;z-index:30;text-align:center;font-size:14px;color:var(--ink-dim)}body[data-render-state=error]:after{content:"当前浏览器不支持 WebGL，无法渲染黑洞场景。";position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;font-size:14px;letter-spacing:.12em;color:var(--ink-dim)}@media(max-width:640px){.site-header,.story-panel{padding-left:20px;padding-right:20px}.render-status{display:none}.panel-footer{flex-direction:column;gap:8px}}@media(prefers-reduced-motion:reduce){html{scroll-snap-type:y proximity}.render-status i,.loader-ring,.scroll-cue i{animation:none}.story-panel{opacity:1}.story-panel .panel-body{opacity:1;transform:none;transition:none}}
