:root{--bg:#07070f;--bg-deep:#030308;--gold:#b8956b;--gold-dim:#b8956b26;--gold-faint:#b8956b0f;--cream:#f2ece4;--cream-dim:#f2ece480;--text:#f2ece4;--text-dim:#6b5d4f;--font:"Noto Sans SC", system-ui, sans-serif;--font-display:"Noto Serif SC", serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);width:100%;height:100%;font-family:var(--font);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:none;overflow:hidden}#viewer-root{z-index:0;position:fixed;top:0;bottom:0;left:0;right:0}#viewer-canvas{width:100%;height:100%;display:block}#loading-overlay{z-index:100;background:var(--bg);justify-content:center;align-items:center;transition:opacity 2.8s cubic-bezier(.16,1,.3,1),filter 2.2s cubic-bezier(.16,1,.3,1),transform 2.4s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#loading-overlay.revealing{opacity:0;filter:blur(12px)brightness(1.4);pointer-events:none;transform:scale(1.01)}#loading-overlay.removed{display:none}.loader-container{flex-direction:column;align-items:center;gap:0;display:flex}.loader-title{font-family:var(--font-display);color:var(--cream);letter-spacing:.12em;opacity:0;font-size:clamp(3.2rem,10vw,5.5rem);font-weight:600;line-height:1;animation:1.2s cubic-bezier(.22,1,.36,1) .2s forwards fadeInUp;transform:translateY(8px)}.loader-names{font-family:var(--font);color:var(--gold);letter-spacing:.4em;opacity:0;margin-top:1.4rem;font-size:clamp(.75rem,2.5vw,.9rem);font-weight:300;animation:1s cubic-bezier(.22,1,.36,1) .6s forwards fadeInUp;transform:translateY(6px)}.loader-progress-wrap{opacity:0;width:clamp(120px,30vw,200px);margin-top:3rem;animation:.8s cubic-bezier(.22,1,.36,1) 1s forwards fadeIn}.loader-progress-track{background:var(--gold-dim);border-radius:1px;width:100%;height:1px;overflow:hidden}.loader-progress-fill{background:var(--gold);border-radius:1px;width:0%;height:100%;transition:width .5s cubic-bezier(.22,1,.36,1)}.loader-status{letter-spacing:.25em;color:var(--text-dim);opacity:0;margin-top:1.2rem;font-size:.65rem;font-weight:300;animation:.8s cubic-bezier(.22,1,.36,1) 1s forwards fadeIn}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{to{opacity:1}}#interaction-hints{z-index:50;transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1);position:fixed;bottom:2rem;left:50%;transform:translate(-50%)}#interaction-hints.hints-hidden{opacity:0;pointer-events:none;transform:translate(-50%)translateY(12px)}#interaction-hints.hints-visible{opacity:1;transform:translate(-50%)translateY(0)}#interaction-hints.hints-fading{opacity:0;pointer-events:none;transform:translate(-50%)translateY(-6px)}.hint-pill{-webkit-backdrop-filter:blur(16px)saturate(120%);border:1px solid var(--gold-faint);letter-spacing:.14em;color:var(--text-dim);white-space:nowrap;background:#ffffff06;border-radius:100px;align-items:center;gap:.6rem;padding:.55rem 1.3rem;font-size:.58rem;display:none}.hint-pill .hint-key{color:var(--gold);font-weight:500}.hint-divider{background:#b8956b33;width:1px;height:10px;display:inline-block}.hint-pill[data-device=desktop]{display:flex}.hint-pill[data-device=touch]{display:none}@media (pointer:coarse){.hint-pill[data-device=desktop]{display:none}.hint-pill[data-device=touch]{display:flex}}#gesture-hint{z-index:55;pointer-events:none;color:var(--gold);opacity:0;filter:drop-shadow(0 0 20px #b8956b99);transition:opacity .6s;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}#gesture-hint.gesture-hidden{opacity:0}#gesture-hint.gesture-visible{opacity:1}#gesture-hint.gesture-fading{opacity:0;transition:opacity 1.2s}.gesture-hand{transform-origin:24px 34px;animation:2.4s ease-in-out infinite gestureSwipe}.gesture-arrow{animation:2.4s ease-in-out infinite gestureArrow}@keyframes gestureSwipe{0%,to{opacity:.7;transform:translate(0)rotate(0)}15%{opacity:1}50%{opacity:1;transform:translate(8px)rotate(-8deg)}85%{opacity:1}}@keyframes gestureArrow{0%,to{opacity:.5;transform:translate(0)}50%{opacity:.9;transform:translate(6px)}}#overlay-effects{z-index:45;pointer-events:none;display:block;position:fixed;top:0;bottom:0;left:0;right:0}.scanlines{display:none}.noise-layer{opacity:.022;width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0}
