:root{--bg-deep:#0f0b14;--bg-surface:#1a1520;--bg-card:#231e2a;--gold-bright:#e8c56d;--gold-mid:#c9a44a;--gold-dim:#8a7236;--rose:#e8a0b4;--rose-soft:#f2c4d4;--rose-dim:#9e6070;--champagne:#f5e6c8;--ivory:#faf6ef;--cream:#f0e8d8;--text-primary:#faf6ef;--text-secondary:#faf6ef99;--text-muted:#faf6ef4d;--font-display:"Playfair Display", "Cormorant Garamond", serif;--font-body:"Zen Kaku Gothic New", sans-serif;--font-accent:"Cormorant Garamond", serif;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-2xl:64px;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-out-back:cubic-bezier(.34, 1.56, .64, 1);--ease-in-out-sine:cubic-bezier(.37, 0, .63, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg-deep);width:100%;height:100%;color:var(--text-primary);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;overflow:hidden}#app{width:100%;height:100%;position:relative;overflow:hidden}.bg-layer{z-index:0;pointer-events:none;position:fixed;inset:0}.bg-gradient{background:radial-gradient(ellipse 80% 60% at 50% 0%, #e8c56d0f 0%, transparent 60%), radial-gradient(ellipse 60% 50% at 80% 100%, #e8a0b40d 0%, transparent 50%), var(--bg-deep);position:absolute;inset:0}.bg-grain{opacity:.4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");width:200%;height:200%;animation:8s steps(10,end) infinite grain;position:absolute;inset:-50%}@keyframes grain{0%,to{transform:translate(0)}10%{transform:translate(-5%,-10%)}30%{transform:translate(3%,-15%)}50%{transform:translate(12%,9%)}70%{transform:translate(9%,4%)}90%{transform:translate(-1%,7%)}}.screen{z-index:1;transition:opacity .6s var(--ease-out-expo), transform .6s var(--ease-out-expo);flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.screen.hidden{opacity:0;pointer-events:none;transform:scale(.95)}.start-screen{gap:var(--space-lg);text-align:center;padding:var(--space-xl)}.start-ornament{letter-spacing:.4em;color:var(--gold-dim);text-transform:uppercase;font-size:14px;font-family:var(--font-accent);animation:fadeInUp 1s var(--ease-out-expo) .2s both}.start-title{font-family:var(--font-display);color:var(--champagne);animation:fadeInUp 1s var(--ease-out-expo) .4s both;font-size:clamp(28px,7vw,48px);font-weight:700;line-height:1.2}.start-title .accent{color:var(--rose-soft);margin-top:var(--space-xs);font-size:.55em;font-style:italic;font-weight:400;font-family:var(--font-accent);display:block}.start-subtitle{color:var(--text-primary);text-shadow:0 2px 4px #0006;max-width:300px;animation:fadeInUp 1s var(--ease-out-expo) .6s both;font-size:15px;line-height:1.8}.start-btn{justify-content:center;align-items:center;gap:var(--space-sm);border:1px solid var(--gold-mid);color:var(--gold-bright);font-family:var(--font-body);letter-spacing:.1em;cursor:pointer;animation:fadeInUp 1s var(--ease-out-expo) .8s both, pulse-glow 3s var(--ease-in-out-sine) infinite 1.8s;transition:transform .2s var(--ease-out-back), border-color .3s;background:linear-gradient(135deg,#e8c56d1a 0%,#e8a0b40d 100%);border-radius:60px;padding:16px 48px;font-size:16px;font-weight:700;display:inline-flex;position:relative;overflow:hidden}.start-btn:before{content:"";opacity:0;background:linear-gradient(135deg,#e8c56d26 0%,#e8a0b41a 100%);transition:opacity .3s;position:absolute;inset:0}.start-btn:active{transform:scale(.96)}.start-btn:active:before{opacity:1}@keyframes pulse-glow{0%,to{box-shadow:0 0 #e8c56d00}50%{box-shadow:0 0 30px 4px #e8c56d26}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.play-screen{cursor:pointer}.play-hud{padding:var(--space-lg) var(--space-lg) 0;z-index:10;pointer-events:none;position:absolute;top:0;left:0;right:0}.timer-bar-track{background:#faf6ef14;border-radius:2px;width:100%;height:4px;overflow:hidden}.timer-bar-fill{background:linear-gradient(90deg, var(--gold-bright), var(--rose));transform-origin:0;border-radius:2px;height:100%;transition:transform .1s linear}.timer-text{margin-top:var(--space-sm);color:var(--text-secondary);font-size:13px;font-family:var(--font-accent);letter-spacing:.05em;justify-content:space-between;align-items:center;display:flex}.play-score-bg{pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.play-score-number{font-family:var(--font-display);color:#e8c56d0f;transition:transform 80ms var(--ease-out-back);font-size:clamp(100px,30vw,200px);font-weight:900;line-height:1}.play-score-number.bump{transform:scale(1.08)}.play-tap-area{z-index:5;position:absolute;inset:0}.effects-layer{pointer-events:none;z-index:8;position:absolute;inset:0;overflow:hidden}.tap-text{font-family:var(--font-body);pointer-events:none;will-change:transform, opacity;animation:floatUp 1.2s var(--ease-out-expo) forwards;text-shadow:0 2px 8px #0000004d;z-index:10;font-weight:900;position:absolute}@keyframes floatUp{0%{opacity:1;transform:translate(-50%, -50%) scale(.5) rotate(var(--rot))}15%{opacity:1;transform:translate(-50%, -50%) scale(1.1) rotate(var(--rot))}to{opacity:0;transform:translate(-50%, calc(-50% - 120px)) scale(.8) rotate(var(--rot))}}.particle{pointer-events:none;will-change:transform, opacity;animation:particleBurst 1s var(--ease-out-expo) forwards;z-index:9;position:absolute}@keyframes particleBurst{0%{opacity:1;transform:translate(-50%,-50%)translate(0)scale(1)}to{opacity:0;transform:translate(-50%, -50%) translate(var(--dx), var(--dy)) scale(.3)}}.screen-pulse{animation:screenPulse .15s var(--ease-out-expo)}@keyframes screenPulse{0%{transform:scale(1)}50%{transform:scale(1.008)}to{transform:scale(1)}}.result-screen{background:var(--bg-deep);padding:var(--space-xl)}.result-card{aspect-ratio:9/16;width:100%;max-width:380px;max-height:78vh;padding:var(--space-2xl) var(--space-lg);justify-content:center;align-items:center;gap:var(--space-lg);background:linear-gradient(165deg,#1e1828 0%,#15101c 50%,#1a1225 100%);border:1px solid #e8c56d26;border-radius:24px;flex-direction:column;display:flex;position:relative;overflow:hidden;box-shadow:0 0 80px -20px #e8c56d1a,0 0 120px -40px #e8a0b414,inset 0 1px #ffffff0d}.result-card:before{content:"";pointer-events:none;background:radial-gradient(50% 30% at 50% 10%,#e8c56d14 0%,#0000 70%),radial-gradient(40% 30% at 50% 90%,#e8a0b40f 0%,#0000 70%);position:absolute;inset:0}.result-ornament-top{letter-spacing:.5em;color:var(--gold-dim);text-transform:uppercase;font-size:12px;font-family:var(--font-accent);animation:fadeInUp .8s var(--ease-out-expo) .3s both}.result-label{color:var(--text-secondary);font-size:13px;font-family:var(--font-accent);letter-spacing:.15em;text-transform:uppercase;animation:fadeInUp .8s var(--ease-out-expo) .5s both}.result-score-block{text-align:center;animation:fadeInUp .8s var(--ease-out-expo) .7s both}.result-score-number{font-family:var(--font-display);background:linear-gradient(160deg, var(--gold-bright) 20%, var(--rose-soft) 80%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(56px,18vw,96px);font-weight:900;line-height:1}.result-score-unit{font-family:var(--font-accent);color:var(--champagne);margin-top:var(--space-xs);letter-spacing:.05em;font-size:clamp(18px,4.5vw,26px);font-style:italic;display:block}.result-rank{text-align:center;animation:fadeInUp .8s var(--ease-out-expo) .9s both}.result-rank-title{font-family:var(--font-display);color:var(--champagne);margin-bottom:var(--space-xs);font-size:clamp(20px,5vw,30px);font-weight:700}.result-rank-subtitle{color:var(--text-secondary);max-width:260px;font-size:13px;line-height:1.6}.result-divider{background:linear-gradient(90deg, transparent, var(--gold-dim), transparent);width:40px;height:1px;animation:fadeInUp .8s var(--ease-out-expo) 1.1s both}.result-message{font-family:var(--font-accent);color:var(--rose-soft);text-align:center;animation:fadeInUp .8s var(--ease-out-expo) 1.3s both;font-size:clamp(14px,3.5vw,18px);font-style:italic;line-height:1.6}.result-hashtag{color:var(--text-muted);letter-spacing:.1em;font-size:11px;font-family:var(--font-accent);animation:fadeInUp .8s var(--ease-out-expo) 1.5s both}.result-footer{bottom:var(--space-lg);left:var(--space-lg);right:var(--space-lg);animation:fadeInUp .8s var(--ease-out-expo) 1.7s both;justify-content:space-between;align-items:center;display:flex;position:absolute}.result-date{color:var(--text-muted);font-size:11px;font-family:var(--font-accent);letter-spacing:.1em}.share-btn{width:40px;height:40px;color:var(--gold-mid);cursor:pointer;transition:transform .2s var(--ease-out-back), background .3s;background:#e8c56d0d;border:1px solid #e8c56d33;border-radius:50%;justify-content:center;align-items:center;display:flex}.share-btn:active{background:#e8c56d26;transform:scale(.92)}.share-btn svg{width:18px;height:18px}.retry-btn{color:var(--gold-mid);cursor:pointer;font-size:14px;font-family:var(--font-body);letter-spacing:.05em;animation:fadeInUp .8s var(--ease-out-expo) 1.9s both;transition:transform .2s var(--ease-out-back), background .3s, border-color .3s;background:#e8c56d0f;border:1px solid #e8c56d33;border-radius:60px;padding:12px 32px;font-weight:700}.retry-btn:active{border-color:var(--gold-bright);background:#e8c56d1f;transform:scale(.96)}.back-btn{color:var(--text-secondary);cursor:pointer;font-size:13px;font-family:var(--font-accent);letter-spacing:.1em;animation:fadeInUp .8s var(--ease-out-expo) 2.1s both;background:0 0;border:none;padding:8px 24px;transition:color .3s}.back-btn:active{color:var(--text-primary)}.result-actions{align-items:center;gap:var(--space-md);margin-top:var(--space-md);flex-direction:column;display:flex}.countdown-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:40;background:#0f0b1480;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.countdown-text{font-family:var(--font-display);color:var(--rose-soft);text-shadow:0 4px 20px #0000004d;font-size:clamp(80px,20vw,120px);font-weight:900}.countdown-text.pop{animation:countdownPop .5s var(--ease-out-back) forwards}@keyframes countdownPop{0%{opacity:0;transform:scale(.5)}40%{opacity:1;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.result-confetti{pointer-events:none;z-index:20;position:absolute;inset:0;overflow:hidden}.confetti-piece{opacity:0;will-change:transform, opacity;width:8px;height:8px;animation:confettiFall var(--dur) var(--ease-out-expo) var(--delay) forwards;position:absolute}@keyframes confettiFall{0%{opacity:1;transform:translate(var(--sx), -20px) rotate(0deg) scale(1)}to{opacity:0;transform:translate(var(--ex), calc(100vh + 20px)) rotate(var(--spin)) scale(.5)}}.timeup-overlay{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f0b14b3;justify-content:center;align-items:center;animation:.3s ease-out fadeIn;display:flex;position:fixed;inset:0}.timeup-text{font-family:var(--font-display);background:linear-gradient(160deg, var(--gold-bright) 30%, var(--rose-soft) 100%);-webkit-text-fill-color:transparent;animation:timeupPop .6s var(--ease-out-back);-webkit-background-clip:text;background-clip:text;font-size:clamp(40px,12vw,72px);font-weight:900}@keyframes timeupPop{0%{opacity:0;transform:scale(.5)}60%{opacity:1;transform:scale(1.1)}to{transform:scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
