*{margin:0;padding:0;box-sizing:border-box}html,body{overflow:hidden;background:#040408;font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;touch-action:none}#app{position:fixed;top:0;right:0;bottom:0;left:0;animation:fadeIn 2s ease-out}#app canvas{display:block}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}#notice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#040408d9;display:flex;align-items:center;justify-content:center;animation:fadeIn .5s ease-out}#notice-overlay.hidden{display:none}#notice-box{background:#0c0c18f2;border:1px solid rgba(85,136,255,.3);border-radius:14px;padding:36px 44px;text-align:center;max-width:420px;box-shadow:0 0 40px #5588ff1a}#notice-box p{color:#ccccd8;font-size:16px;font-weight:300;line-height:1.6;letter-spacing:.5px;margin-bottom:24px}#notice-dismiss{background:#5588ff26;border:1px solid rgba(85,136,255,.4);color:#fff;font-size:14px;font-weight:500;letter-spacing:2px;padding:10px 32px;border-radius:8px;cursor:pointer;transition:all .3s}#notice-dismiss:hover{background:#5588ff4d;border-color:#58f;box-shadow:0 0 16px #5588ff40}#ui{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}#progress{position:fixed;right:28px;top:50%;transform:translateY(-50%);width:2px;height:180px;background:#ffffff14;border-radius:2px}#progress-fill{position:absolute;top:0;left:0;width:100%;height:0%;background:linear-gradient(to bottom,#58f,#4da);border-radius:2px;transition:height .15s ease-out}#section-label{position:fixed;bottom:36px;left:50%;transform:translate(-50%);color:#ffffff59;font-size:12px;font-weight:300;letter-spacing:4px;text-transform:uppercase;transition:opacity .4s}#scroll-hint{position:fixed;bottom:32px;left:50%;transform:translate(-50%);color:#ffffff59;font-size:11px;font-weight:300;letter-spacing:4px;text-align:center;line-height:1.6;animation:pulse 2.5s ease-in-out infinite;transition:opacity 1s}#scroll-arrow{font-size:16px;display:inline-block;animation:bobDown 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.2}50%{opacity:.5}}@keyframes bobDown{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}
