*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;touch-action:none;background:#030712;width:100%;height:100dvh;overflow:hidden}canvas{display:block}body{color:#eaf6ff;font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}#app{width:100%;height:100%;position:relative}#scene-root{position:fixed;inset:0}#scene-root.scene-root-active{z-index:1}.scene-atmosphere-vignette{z-index:2;pointer-events:none;background:radial-gradient(#0a193000 52%,#0a193059 100%);position:absolute;inset:0}#landing{z-index:2;padding:max(6vh, calc(env(safe-area-inset-top) + 2vh)) max(6vw, calc(env(safe-area-inset-right) + 2vw)) max(6vh, calc(env(safe-area-inset-bottom) + 2vh)) max(6vw, calc(env(safe-area-inset-left) + 2vw));background:radial-gradient(at 50% 20%,#3bbcff1f,#0000 60%),#030712;grid-template-rows:auto 1fr auto;transition:opacity .6s;display:grid;position:absolute;inset:0}#landing.landing-hidden{opacity:0;pointer-events:none}.landing-title{text-align:center;grid-row:1}.landing-title h1{letter-spacing:.35em;text-transform:uppercase;text-shadow:0 0 24px #7be7ff8c,0 0 60px #3f8cff40;font-size:clamp(2.2rem,5vw,4rem);font-weight:300}.landing-subtitle{letter-spacing:.6em;color:#7fe7ffcc;margin-top:.6rem;font-size:.95rem}.landing-bottom-left{flex-direction:column;grid-row:3;place-self:end start;gap:1.4rem;max-width:22rem;display:flex}.landing-artist{line-height:1.7}.artist-tagline{letter-spacing:.15em;color:#9fd4f5aa;font-size:.8rem}.artist-name{letter-spacing:.1em;font-size:1.1rem}.artist-series{color:#9fd4f5aa;font-size:.8rem}.glass-btn{-webkit-backdrop-filter:blur(14px);color:#eaf6ff;cursor:pointer;background:#1e3c5a40;border:1px solid #7fe7ff59;border-radius:999px;flex-direction:column;align-self:flex-start;gap:.15rem;padding:.9rem 2rem;transition:box-shadow .3s,transform .3s,background .3s;display:flex;box-shadow:0 0 24px #3bbcff40,inset 0 0 20px #7fe7ff14}.glass-btn:hover{background:#3bbcff38;transform:translateY(-2px);box-shadow:0 0 36px #3bbcff66,inset 0 0 24px #7fe7ff26}.glass-btn:disabled{opacity:.5;cursor:default;transform:none}.glass-btn-en{letter-spacing:.08em;font-size:1rem}.glass-btn-zh{color:#9fd4f5cc;letter-spacing:.1em;font-size:.75rem}.glass-icon-btn{top:max(6vh, calc(env(safe-area-inset-top) + 1rem));right:max(6vw, calc(env(safe-area-inset-right) + 1rem));z-index:3;-webkit-backdrop-filter:blur(14px);color:#eaf6ff;cursor:pointer;background:#1e3c5a40;border:1px solid #7fe7ff59;border-radius:50%;justify-content:center;align-items:center;width:2.8rem;height:2.8rem;transition:box-shadow .3s,background .3s;display:flex;position:absolute;box-shadow:0 0 20px #3bbcff33}.glass-icon-btn:hover{background:#3bbcff38;box-shadow:0 0 30px #3bbcff59}.share-status{white-space:nowrap;color:#7fe7ffdd;font-size:.75rem;position:absolute;top:calc(100% + .6rem);right:0}.contact-widget{top:max(6vh, calc(env(safe-area-inset-top) + 1rem));left:max(6vw, calc(env(safe-area-inset-left) + 1rem));z-index:3;flex-direction:column;align-items:flex-start;display:flex;position:absolute}.contact-toggle-btn{-webkit-backdrop-filter:blur(14px);color:#eaf6ff;letter-spacing:.08em;cursor:pointer;white-space:nowrap;background:#1e3c5a40;border:1px solid #7fe7ff52;border-radius:999px;padding:.6rem 1.3rem;font-size:.85rem;transition:box-shadow .3s,background .3s;box-shadow:0 0 18px #3bbcff2e}.contact-toggle-btn:hover{background:#3bbcff33;box-shadow:0 0 26px #3bbcff4d}.contact-panel{opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(16px);background:#14263666;border:1px solid #96d2f038;border-radius:1rem;width:min(19rem,84vw);max-height:0;margin-top:.7rem;transition:max-height .35s,opacity .3s;overflow:hidden;box-shadow:0 0 20px #5aaadc1f,inset 0 0 18px #96d2f00a}.contact-panel.contact-panel-open{opacity:1;pointer-events:auto;max-height:26rem}.contact-panel>*{padding:0 1.2rem}.contact-panel>:first-child{padding-top:1.1rem}.contact-panel>:last-child{padding-bottom:1.1rem}.contact-thanks{letter-spacing:.04em;color:#eaf6ff;margin-bottom:.35rem;font-size:.95rem}.contact-subtext{color:#9fd4f5aa;margin-bottom:.9rem;font-size:.78rem;line-height:1.5}.contact-section{margin-bottom:.85rem}.contact-label{color:#9fd4f5cc;letter-spacing:.06em;margin-bottom:.35rem;font-size:.78rem}.contact-email,.contact-value{color:#dff1ffdd;word-break:break-word;font-size:.8rem;line-height:1.6}.contact-artist{color:#9fd4f5aa;letter-spacing:.06em;margin-top:.2rem;font-size:.8rem}.visitor-card{-webkit-backdrop-filter:blur(16px);background:#0f1e2d59;border:1px solid #7fe7ff4d;border-radius:1rem;grid-row:2;place-self:start end;width:min(20rem,80vw);padding:1.6rem 1.8rem;box-shadow:0 0 30px #3bbcff26,inset 0 0 30px #7fe7ff0d}.visitor-card h2{letter-spacing:.12em;color:#eaf6ff;border-bottom:1px solid #7fe7ff33;margin-bottom:1rem;padding-bottom:.8rem;font-size:.85rem;font-weight:400}.visitor-row{justify-content:space-between;align-items:baseline;gap:1rem;padding:.35rem 0;font-size:.8rem;display:flex}.visitor-row dt{color:#9fd4f5aa}.visitor-row dd{color:#eaf6ff;letter-spacing:.03em;text-align:right}.planet-name-value{justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.rename-icon-btn{color:#9fd4f5cc;cursor:pointer;background:#1e3c5a40;border:1px solid #7fe7ff4d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.4rem;height:1.4rem;transition:box-shadow .25s,color .25s,background .25s;display:flex}.rename-icon-btn:hover{color:#eaf6ff;background:#3bbcff38;box-shadow:0 0 12px #3bbcff4d}.rename-icon-btn svg{width:.8rem;height:.8rem}#scene-loading-veil{z-index:4;pointer-events:none;opacity:0;-webkit-backdrop-filter:blur()brightness()saturate();background:radial-gradient(at 50% 45%,#07111f26,#03071299 78%);transition:opacity .7s,-webkit-backdrop-filter .7s,backdrop-filter .7s;position:fixed;inset:0}#scene-loading-veil.veil-active{opacity:1;-webkit-backdrop-filter:blur(16px)brightness(.82)saturate(1.15)}.veil-caption{text-align:center;letter-spacing:.12em;color:#9fd4f5cc;opacity:0;font-size:.78rem;line-height:1.8;transition:opacity .6s;position:absolute;bottom:14vh;left:0;right:0}#scene-loading-veil.veil-finalizing .veil-caption{opacity:1}.naming-overlay{z-index:6;opacity:0;background:#03071280;justify-content:center;align-items:center;padding:5vh 5vw;transition:opacity .3s;display:flex;position:fixed;inset:0}.naming-overlay[hidden]{display:none}.naming-overlay.naming-overlay-visible{opacity:1}.naming-modal{text-align:center;-webkit-backdrop-filter:blur(20px);background:#14283c66;border:1px solid #beeeff8c;border-radius:1.2rem;width:min(24rem,90vw);padding:2rem 2rem 1.8rem;transition:transform .35s;transform:translateY(10px)scale(.98);box-shadow:0 0 30px #96e1ff59,0 0 70px #5ab4ff33,inset 0 0 24px #d2f5ff14}.naming-overlay-visible .naming-modal{transform:translateY(0)scale(1)}.naming-title-zh{letter-spacing:.1em;margin-bottom:.4rem;font-size:1.1rem;font-weight:400}.naming-title-en{letter-spacing:.12em;color:#9fd4f5aa;margin-bottom:1.4rem;font-size:.75rem}.naming-input{color:#eaf6ff;letter-spacing:.03em;background:#06101c80;border:1px solid #7fe7ff59;border-radius:.7rem;outline:none;width:100%;margin-bottom:1.4rem;padding:.8rem 1rem;font-size:.95rem;transition:border-color .25s,box-shadow .25s}.naming-input::placeholder{color:#6f93accc;font-size:.75rem}.naming-input:focus{border-color:#7fe7ffb3;box-shadow:0 0 18px #3bbcff4d}.naming-confirm-btn{align-self:center;align-items:center;width:100%}.share-success-hud{z-index:8;pointer-events:none;opacity:0;justify-content:center;align-items:center;padding:5vh 5vw;transition:opacity .5s;display:flex;position:fixed;inset:0}.share-success-hud.share-success-hud-visible{opacity:1}.share-success-hud-card{text-align:center;-webkit-backdrop-filter:blur(20px);background:#14283c61;border:1px solid #beeeff80;border-radius:1.2rem;padding:1.8rem 2.4rem;box-shadow:0 0 30px #96e1ff4d,0 0 70px #5ab4ff2e,inset 0 0 24px #d2f5ff14}.share-success-hud-zh{letter-spacing:.08em;font-size:1.05rem;font-weight:400;line-height:1.6}.share-success-hud-en{letter-spacing:.04em;color:#9fd4f5aa;font-size:.75rem;line-height:1.5}.share-success-hud-en:first-of-type{margin-top:.6rem}.scene-return-btn{top:max(6vh, calc(env(safe-area-inset-top) + 1rem));right:max(6vw, calc(env(safe-area-inset-right) + 1rem));z-index:5;-webkit-backdrop-filter:blur(18px);color:#f3fbff;cursor:pointer;background:#2d5a8266;border:1px solid #beeeffb3;border-radius:999px;align-items:center;gap:.55rem;padding:.75rem 1.4rem;transition:box-shadow .25s,transform .25s,background .25s;animation:2.6s ease-in-out infinite scene-return-pulse;display:flex;position:absolute;box-shadow:0 0 20px #96e1ff8c,0 0 46px #5ab4ff59,inset 0 0 18px #d2f5ff26}.scene-return-btn:hover{background:#5ab4ff73;transform:translateY(-2px);box-shadow:0 0 30px #aaebffe6,0 0 64px #6ec8ff8c,inset 0 0 22px #e1f8ff40}.scene-return-btn:active{transform:translateY(0)}.scene-hud-topleft{top:max(6vh, calc(env(safe-area-inset-top) + 1rem));left:max(6vw, calc(env(safe-area-inset-left) + 1rem));z-index:5;flex-direction:column;align-items:flex-start;gap:.5rem;max-width:60vw;display:flex;position:absolute}.scene-planet-label{-webkit-backdrop-filter:blur(14px);color:#eaf6ff;letter-spacing:.08em;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background:#1e3c5a40;border:1px solid #7fe7ff59;border-radius:999px;max-width:100%;padding:.6rem 1.2rem;font-size:.85rem;overflow:hidden;box-shadow:0 0 20px #3bbcff33}.quality-ui{max-width:100%;position:relative}.quality-ui-toggle{-webkit-backdrop-filter:blur(14px);color:#eaf6ff;letter-spacing:.06em;white-space:nowrap;cursor:pointer;background:#1e3c5a40;border:1px solid #7fe7ff59;border-radius:999px;align-items:center;gap:.5rem;padding:.55rem 1.1rem;font-size:.8rem;transition:background .2s,box-shadow .2s;display:flex;box-shadow:0 0 20px #3bbcff33}.quality-ui-toggle:hover{background:#2d5a8259;box-shadow:0 0 26px #5ab4ff4d}.quality-ui-chevron{color:#bfe9ff;transition:transform .2s;display:flex}.quality-ui-expanded .quality-ui-chevron{transform:rotate(180deg)}.quality-ui-menu{-webkit-backdrop-filter:blur(18px);background:#162c428c;border:1px solid #7fe7ff4d;border-radius:14px;flex-direction:column;min-width:100%;padding:.35rem;display:none;position:absolute;top:calc(100% + .45rem);left:0;box-shadow:0 8px 28px #000a1459,0 0 20px #3bbcff26}.quality-ui-expanded .quality-ui-menu{display:flex}.quality-ui-option{color:#eaf6ff8c;letter-spacing:.05em;text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:9px;justify-content:space-between;align-items:center;gap:1.5rem;padding:.5rem .75rem;font-size:.8rem;transition:background .15s,color .15s;display:flex}.quality-ui-option:hover{color:#eaf6ffd9;background:#5ab4ff24}.quality-ui-option-selected{color:#f3fbff;text-shadow:0 0 10px #96e1ff8c}.quality-ui-option-check{opacity:0;color:#9fe3ff;font-size:.78rem}.quality-ui-option-selected .quality-ui-option-check{opacity:1}.scene-return-icon{flex-shrink:0;width:1rem;height:1rem}.scene-return-zh{letter-spacing:.05em;font-size:.92rem}.scene-return-en{color:#dcf5ffdd;letter-spacing:.08em;font-size:.72rem}@keyframes scene-return-pulse{0%,to{box-shadow:0 0 20px #96e1ff80,0 0 46px #5ab4ff4d,inset 0 0 18px #d2f5ff1f}50%{box-shadow:0 0 30px #aaebffbf,0 0 60px #6ec8ff7a,inset 0 0 22px #d2f5ff38}}@media (width<=720px){#landing{padding:max(5vh, calc(env(safe-area-inset-top) + 2vh)) max(5vw, calc(env(safe-area-inset-right) + 2vw)) max(5vh, calc(env(safe-area-inset-bottom) + 2vh)) max(5vw, calc(env(safe-area-inset-left) + 2vw));grid-template-rows:auto auto auto 1fr auto}.contact-widget{grid-row:2;justify-self:start;margin-top:.6rem;position:static}.contact-panel{width:min(26rem,90vw)}.visitor-card{grid-row:3;justify-self:stretch;width:100%}.landing-bottom-left{grid-row:5}.scene-hud-topleft{max-width:50vw}.scene-planet-label{max-width:100%;padding:.5rem .9rem;font-size:.75rem}.quality-ui-toggle{min-height:2.6rem;padding:.6rem 1rem;font-size:.75rem}.quality-ui-option{min-height:2.6rem;padding:.65rem .75rem}}@media (height<=500px) and (orientation:landscape) and (hover:none){#landing{padding:max(3vh, calc(env(safe-area-inset-top) + .6rem)) max(4vw, calc(env(safe-area-inset-right) + .8rem)) max(3vh, calc(env(safe-area-inset-bottom) + .6rem)) max(4vw, calc(env(safe-area-inset-left) + .8rem));grid-template-rows:auto 1fr;grid-template-columns:1fr auto;column-gap:4vw}.landing-title{text-align:left;grid-area:1/1/auto/-1}.landing-title h1{letter-spacing:.22em;font-size:clamp(1.3rem,4.5vh,2rem)}.landing-subtitle{letter-spacing:.4em;margin-top:.3rem;font-size:.7rem}.contact-widget{top:calc(max(3vh, calc(env(safe-area-inset-top) + .6rem)) + 3.2rem);left:max(4vw, calc(env(safe-area-inset-left) + .8rem))}.contact-toggle-btn{padding:.4rem 1rem;font-size:.72rem}.contact-panel{width:min(15rem,60vw)}.contact-panel.contact-panel-open{max-height:min(20rem,68vh);overflow-y:auto}.landing-bottom-left{grid-area:2/1;place-self:end start;gap:.6rem;max-width:16rem}.glass-btn{padding:.55rem 1.3rem}.artist-tagline,.artist-series{font-size:.65rem}.artist-name{font-size:.85rem}.visitor-card{grid-area:2/2;place-self:center end;width:min(15rem,40vw);max-height:calc(100% - 4rem);padding:.9rem 1.1rem;overflow-y:auto}.visitor-card h2{margin-bottom:.6rem;padding-bottom:.5rem;font-size:.75rem}.visitor-row{padding:.2rem 0;font-size:.72rem}}.onboarding-hud{z-index:5;padding:0 max(5vw, calc(env(safe-area-inset-right) + 1.2rem)) max(12vh, calc(env(safe-area-inset-bottom) + 3rem)) max(5vw, calc(env(safe-area-inset-left) + 1.2rem));pointer-events:none;opacity:0;justify-content:space-between;align-items:flex-end;transition:opacity .5s;display:flex;position:absolute;inset:0}.onboarding-hud.onboarding-hud-visible{opacity:1}.onboarding-hud-hint{text-align:center;color:#eaf6ff;-webkit-backdrop-filter:blur(14px);background:#142d4433;border:1px solid #beeeff3d;border-radius:1rem;max-width:12.5rem;padding:.9rem 1.1rem 1rem;box-shadow:0 0 20px #78c8ff26,inset 0 0 14px #c8f0ff0d}.onboarding-hud-icon{color:#bfefff;filter:drop-shadow(0 0 6px #96e1ffb3);justify-content:center;align-items:center;margin-bottom:.5rem;display:flex}.onboarding-hud-title-zh{letter-spacing:.06em;font-size:.82rem;font-weight:400}.onboarding-hud-title-en{letter-spacing:.06em;color:#9fd4f5aa;margin-bottom:.5rem;font-size:.68rem}.onboarding-hud-body-zh{color:#eaf6ffbf;font-size:.7rem;line-height:1.55}.onboarding-hud-body-en{color:#9fd4f599;margin-top:.3rem;font-size:.64rem;line-height:1.5}.onboarding-hud-finger{transform-origin:32px 20px;animation:2.2s ease-in-out infinite onboarding-tap}.onboarding-hud-ripple{transform-origin:32px 41px;opacity:0;animation:2.2s ease-out infinite onboarding-ripple}@keyframes onboarding-tap{0%,18%,to{transform:translateY(0)}28%{transform:translateY(6px)scaleY(.9)}40%{transform:translateY(0)}}@keyframes onboarding-ripple{0%,18%{opacity:0;r:3}28%{opacity:.85;r:4}62%{opacity:0;r:17}to{opacity:0;r:17}}.onboarding-hud-finger-dot{animation:3.6s ease-in-out infinite onboarding-drag-move}@keyframes onboarding-drag-move{0%,8%{transform:translate(0)}17%{transform:translateY(-9px)}25%,33%{transform:translate(0)}42%{transform:translate(9px)}50%,58%{transform:translate(0)}67%{transform:translateY(9px)}75%,83%{transform:translate(0)}92%{transform:translate(-9px)}to{transform:translate(0)}}.onboarding-hud-arrows path{opacity:.4;animation:3.6s ease-in-out infinite onboarding-arrow-pulse}.onboarding-hud-arrows path:first-child{animation-delay:0s}.onboarding-hud-arrows path:nth-child(2){animation-delay:.9s}.onboarding-hud-arrows path:nth-child(3){animation-delay:1.8s}.onboarding-hud-arrows path:nth-child(4){animation-delay:2.7s}@keyframes onboarding-arrow-pulse{0%,8%,to{opacity:.4}17%{opacity:1}28%{opacity:.4}}@media (width<=720px){.onboarding-hud{padding-bottom:max(9vh, calc(env(safe-area-inset-bottom) + 1.6rem))}.onboarding-hud-hint{max-width:9.5rem;padding:.7rem .8rem .8rem}.onboarding-hud-icon svg{width:34px;height:34px}.onboarding-hud-body-zh,.onboarding-hud-body-en{display:none}}@media (height<=500px) and (orientation:landscape) and (hover:none){.onboarding-hud{padding-bottom:1rem}.onboarding-hud-hint{max-width:8rem;padding:.5rem .6rem .6rem}.onboarding-hud-icon{margin-bottom:.3rem}.onboarding-hud-icon svg{width:28px;height:28px}.onboarding-hud-body-zh,.onboarding-hud-body-en{display:none}}
