html,body{touch-action:manipulation;background:#000;margin:0;padding:0;overflow:hidden}#scene{touch-action:none;width:100vw;height:100vh;display:block}@font-face{font-family:"Press Start 2P";src:url(/flappy-3d/assets/press-start-2p-_wFEWmAB.woff2)format("woff2");font-display:swap;font-weight:400;font-style:normal}h1,h2{font-family:"Press Start 2P",ui-monospace,monospace}:root{--btn-top:#4a5b8c;--btn-bottom:#2c3a64;--focus-inner:#ffd166;--focus-outer:#000000b3}body.palette-colorblind{--btn-top:#6da3c4;--btn-bottom:#336b8a;--focus-inner:#ffd166}#ui-root{pointer-events:none;color:#1a1a2e;z-index:10;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;position:fixed;inset:0}#ui-root .screen{opacity:0;visibility:hidden;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;transition:opacity .12s cubic-bezier(.16,1,.3,1),visibility 0s linear .12s;display:flex;position:absolute;inset:0}#ui-root .screen.active{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .12s cubic-bezier(.16,1,.3,1),visibility linear}#ui-root button{pointer-events:auto;background:linear-gradient(180deg, var(--btn-top) 0%, var(--btn-bottom) 100%);color:#fff;min-width:44px;min-height:44px;font:inherit;cursor:pointer;border:none;border-radius:12px;padding:12px 20px;font-weight:600;transition:transform .1s ease-out,box-shadow .1s ease-out;box-shadow:inset 0 1px #ffffff26,0 2px 4px #00000059}@media (hover:hover){#ui-root button:hover{transform:translateY(-1px);box-shadow:inset 0 1px #ffffff26,0 4px 10px #0006}}#ui-root button:active{transform:translateY(0);box-shadow:inset 0 2px 5px #00000059,0 1px 2px #0003}#ui-root button:focus-visible,#ui-root [role=switch]:focus-visible{box-shadow:0 0 0 2px var(--focus-inner), 0 0 0 4px var(--focus-outer), inset 0 1px 0 #ffffff26, 0 2px 4px #00000059;outline:none}.toggle{border-radius:12px;align-items:center;gap:12px;padding:12px 16px;display:flex}.toggle-track{background:#cbd5e1;border-radius:12px;width:44px;height:24px;transition:background .2s;position:relative}.toggle.on .toggle-track{background:#22c55e}.toggle-thumb{background:#fff;border-radius:9px;width:18px;height:18px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle.on .toggle-thumb{left:23px}.leaderboard{width:100%;max-width:300px;margin:8px 0;padding:0;list-style:none}.leaderboard-item{background:#ffffff1f;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:4px;padding:8px 16px;display:flex}.leaderboard-item .rank{color:#fff9;font-weight:700}.leaderboard-item .score{font-size:1.1rem;font-weight:800}.leaderboard-empty{opacity:.6;font-style:italic}.new-best-badge{color:#451a03;background:linear-gradient(135deg,#fbbf24,#f59e0b);border-radius:999px;padding:8px 20px;font-weight:700;animation:1.5s ease-in-out infinite goldFlash;display:inline-block;box-shadow:0 0 24px #fbbf2499}@keyframes goldFlash{0%,to{transform:scale(1);box-shadow:0 0 16px #fbbf2480}50%{transform:scale(1.05);box-shadow:0 0 32px #fbbf24e6}}.hud-score{transform-origin:50%;transition:transform .1s}.hud-score.score-pop{animation:.28s ease-out scorePop}@keyframes scorePop{0%{transform:scale(1)}30%{color:#f9c74f;transform:scale(1.4)}to{color:#fff;transform:scale(1)}}.hud-screen{pointer-events:none;opacity:0;visibility:hidden;transition:opacity .12s cubic-bezier(.16,1,.3,1),visibility 0s linear .12s;position:absolute;inset:0}.hud-screen.active{opacity:1;visibility:visible;pointer-events:none;transition:opacity .12s cubic-bezier(.16,1,.3,1),visibility linear}.hud-score{color:#fff;text-shadow:0 2px 8px #00000080,0 0 20px #0000004d;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(40px,8vw,96px);font-weight:900;line-height:1;position:absolute;top:20px;left:50%;transform:translate(-50%)}.hud-hearts{pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 1px 4px #00000080;gap:4px;font-size:1.4rem;display:flex;position:absolute;top:18px;left:16px}.hud-heart{transition:opacity .2s;display:inline-block}.hud-heart.empty{opacity:.32}.hud-heart.fx-gain{animation:.6s cubic-bezier(.16,1,.3,1) both heart-gain}.hud-heart.fx-lose{animation:.6s cubic-bezier(.4,0,.6,1) both heart-lose}@keyframes heart-gain{0%{opacity:0;filter:drop-shadow(0 0 12px #6f9);transform:scale(.2)rotate(-15deg)}40%{opacity:1;filter:drop-shadow(0 0 20px #6f9);transform:scale(1.4)rotate(8deg)}70%{filter:drop-shadow(0 0 8px #6f9);transform:scale(.95)}to{filter:none;transform:scale(1)}}@keyframes heart-lose{0%{opacity:1;filter:drop-shadow(0 0 8px #ff5252);transform:scale(1)}30%{opacity:1;filter:drop-shadow(0 0 16px #ff5252);transform:scale(1.5)rotate(15deg)}to{opacity:.32;filter:none;transform:scale(.4)translateY(20px)}}@media (prefers-reduced-motion:reduce){.hud-heart{transition:none;animation:none}}.hud-pause-btn{pointer-events:auto;justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-size:1.4rem;display:flex;position:absolute;top:16px;right:16px}.title-screen{color:#fff;background:linear-gradient(#0a1e3c4d 0%,#0a1e3c00 25% 60%,#0a1e3c8c 100%);justify-content:flex-start;gap:24px;padding-top:12vh;padding-bottom:12vh}.title-screen:after{content:"";pointer-events:none;background:linear-gradient(#28502800,#2850288c);height:6vh;position:absolute;inset:auto 0 0}.title-heading{letter-spacing:-2px;text-shadow:0 2px 12px #0006;margin:0;font-size:clamp(2.5rem,10vw,5rem);font-weight:900}.title-bird-zone{pointer-events:none;flex:auto;min-height:24vh}.title-cta{opacity:.85;pointer-events:none;text-shadow:0 1px 4px #0006;font-size:1.1rem}.title-cta.pulse{animation:1.6s ease-in-out infinite ctaPulse}@keyframes ctaPulse{0%,to{opacity:.6}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.title-cta.pulse{opacity:.85;animation:none}}.title-settings-btn{pointer-events:auto;justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-size:1.4rem;display:flex;position:absolute;top:16px;right:16px}.pause-screen{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;background:#0e1428d1;gap:16px}.pause-heading{margin:0 0 8px;font-size:2.5rem;font-weight:800}.gameover-screen{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;background:#0a0a14d1;gap:12px}.gameover-heading{text-shadow:0 2px 8px #0009;margin:0;font-size:3rem;font-weight:900}.gameover-score{text-shadow:0 2px 12px #00000080;font-size:clamp(3rem,12vw,6rem);font-weight:900;line-height:1}.gameover-pb{opacity:.8;font-size:1rem}.gameover-cta{opacity:.85;pointer-events:none;margin-top:8px;font-size:1.1rem;animation:2s ease-in-out infinite ctaPulse}dialog.settings-modal{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:#fff;background:#0f1932eb;border:none;border-radius:16px;width:90vw;max-width:360px;padding:24px;box-shadow:0 8px 40px #00000080}dialog.settings-modal::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006}.settings-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.settings-title{margin:0;font-size:1.4rem;font-weight:800}.settings-close-btn{justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-size:1.2rem;display:flex}.settings-rows{flex-direction:column;gap:14px;display:flex}.settings-rows .toggle{background:#ffffff0f;justify-content:space-between;width:100%;min-height:40px;padding:8px 14px}.settings-rows .toggle-label{color:#fff;font-size:.92rem;font-weight:600}.settings-section{flex-direction:column;gap:4px;display:flex}.settings-section-title{letter-spacing:.08em;text-transform:uppercase;color:#ffffff8c;padding:0 4px 2px;font-size:.7rem;font-weight:700}.settings-note{color:#ffffff8c;margin:-.25rem 0 .5rem;padding:0;font-size:.72rem}.settings-note.settings-error{color:#ff8a8a;font-weight:600}.settings-row{background:#ffffff0f;border-radius:12px;flex-direction:column;gap:8px;padding:10px 14px;display:flex}.settings-row-label{color:#fff;font-size:.95rem;font-weight:600}.settings-picker{flex-wrap:wrap;gap:6px;display:flex}.settings-picker .mode-btn{flex:1;min-width:0}.settings-picker-shapes .mode-btn{flex:calc(33% - 6px);padding:8px 4px;font-size:1.1rem}.settings-picker-shapes .mode-btn.locked{opacity:.32;filter:grayscale(.8);cursor:not-allowed;background:#ffffff14}.settings-picker-shapes .mode-btn.locked:hover{opacity:.42;background:#ffffff1f}.unlock-toast{color:#ffd166;z-index:50;opacity:0;pointer-events:none;background:#141e32eb;border:1px solid #ffd1668c;border-radius:14px;padding:12px 20px;font-family:"Press Start 2P",system-ui,sans-serif;font-size:.85rem;transition:opacity .22s cubic-bezier(.16,1,.3,1),transform .22s cubic-bezier(.16,1,.3,1);position:fixed;top:12vh;left:50%;transform:translate(-50%,-20px);box-shadow:0 8px 32px #00000080}.unlock-toast.active{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){.unlock-toast{transition:none}}.settings-imagerow .settings-imageactions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.settings-fileinput{color:#ffffffd9;flex:1;min-width:0;font-size:.85rem}.settings-fileinput::file-selector-button{background:linear-gradient(180deg, var(--btn-top) 0%, var(--btn-bottom) 100%);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-right:10px;padding:8px 14px;font-weight:600}.settings-clearimage{min-width:0;min-height:0;padding:8px 14px}.settings-volumerow{flex-direction:row;align-items:center;gap:12px}.settings-volumerow .settings-row-label{flex:none;min-width:6.5rem;font-size:.85rem}.settings-volume-slider{min-width:0;accent-color:var(--btn-top,#5b76d4);flex:1;height:4px}.settings-volume-value{text-align:right;font-variant-numeric:tabular-nums;color:#ffffffd9;flex:none;min-width:2.6rem;font-size:.8rem}.btn-row{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.install-cta{color:#ffd166;cursor:pointer;pointer-events:auto;background:#ffd16626;border:1px solid #ffd166;border-radius:8px;min-width:44px;min-height:44px;padding:10px 20px;font-size:.95rem}.score-popup{pointer-events:none;color:#ffd166;text-shadow:0 1px 4px #0009;opacity:0;-webkit-user-select:none;user-select:none;will-change:transform, opacity;font-size:1.5rem;font-weight:900;position:absolute}.score-popup.animating{animation:.7s ease-out forwards scorePopup}@keyframes scorePopup{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-70px)}}@media (prefers-reduced-motion:reduce){.score-popup.animating{animation:none}}.mode-picker{pointer-events:auto;background:#00000040;border-radius:14px;gap:4px;width:100%;max-width:320px;padding:4px;display:flex}#ui-root .mode-btn{min-width:44px;min-height:44px;font:inherit;color:#ffffffa6;cursor:pointer;box-shadow:none;background:0 0;border:none;border-radius:10px;flex:1;padding:10px 8px;font-size:.78rem;font-weight:600;transition:background .15s ease-out,color .15s ease-out,box-shadow .15s ease-out}#ui-root .mode-btn.active{background:linear-gradient(180deg, var(--btn-top) 0%, var(--btn-bottom) 100%);color:#fff;box-shadow:inset 0 1px #ffffff26,0 2px 6px #0006}@media (hover:hover){#ui-root .mode-btn:not(.active):hover{color:#ffffffe6;box-shadow:none;background:#ffffff1a;transform:none}}#ui-root .mode-btn:active{transform:none;box-shadow:inset 0 2px 5px #00000059}#ui-root .mode-btn:focus-visible{box-shadow:0 0 0 2px var(--focus-inner), 0 0 0 4px var(--focus-outer), inset 0 1px 0 #ffffff26;outline:none}.hud-timer{color:#fff;text-shadow:0 2px 8px #00000080;pointer-events:none;-webkit-user-select:none;user-select:none;text-align:right;min-width:3ch;font-size:1.6rem;font-weight:900;line-height:1;position:absolute;top:68px;right:16px}.hud-timer.timer-urgent{color:#ef4444}@media (prefers-reduced-motion:no-preference){.hud-timer.timer-urgent{animation:.5s ease-in-out infinite timerPulse}}@keyframes timerPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.daily-stats{opacity:.85;color:#fff;pointer-events:none;margin-bottom:8px;font-size:.9rem}.milestone-flash{pointer-events:none;opacity:0;z-index:5;background:#ffd16666;transition:opacity 50ms ease-in;position:fixed;inset:0}.milestone-flash.active{opacity:1;transition:opacity 50ms ease-in}
