.milestone-celebration{position:fixed;inset:0;z-index:1000;opacity:0;visibility:hidden;transition:all .5s ease;pointer-events:none}.milestone-celebration.visible{opacity:1;visibility:visible;pointer-events:all}.celebration-overlay{position:absolute;inset:0;background:#000000b3;backdrop-filter:blur(5px)}.celebration-modal{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.8);background:linear-gradient(135deg,#667eea,#764ba2);border-radius:24px;padding:40px;text-align:center;color:#fff;box-shadow:0 20px 60px #0000004d;min-width:320px;max-width:500px;transition:all .5s cubic-bezier(.34,1.56,.64,1);overflow:hidden;position:relative}.milestone-celebration.visible .celebration-modal{transform:translate(-50%,-50%) scale(1)}.celebration-modal.medium{background:linear-gradient(135deg,#f093fb,#f5576c)}.celebration-modal.large{background:linear-gradient(135deg,#ffecd2,#fcb69f);color:#2c3e50;animation:celebrationPulse 2s ease-in-out infinite}@keyframes celebrationPulse{0%,to{box-shadow:0 20px 60px #0000004d}50%{box-shadow:0 25px 80px #fcb69f99}}.close-button{position:absolute;top:16px;right:16px;background:#fff3;border:none;border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:inherit;font-size:18px;cursor:pointer;transition:all .3s ease}.close-button:hover{background:#ffffff4d;transform:scale(1.1)}.celebration-content{position:relative;z-index:2}.celebration-icon{font-size:4rem;margin-bottom:20px;animation:iconBounce 2s ease-in-out infinite}@keyframes iconBounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.celebration-title{font-size:2rem;font-weight:700;margin:0 0 24px;text-shadow:0 2px 4px rgba(0,0,0,.1)}.milestone-details{margin-bottom:20px}.milestone-number{font-size:3rem;font-weight:800;line-height:1;margin-bottom:8px;text-shadow:0 2px 8px rgba(0,0,0,.2);animation:numberGlow 2s ease-in-out infinite}@keyframes numberGlow{0%,to{text-shadow:0 2px 8px rgba(0,0,0,.2)}50%{text-shadow:0 4px 16px rgba(255,255,255,.3)}}.milestone-type{font-size:1.125rem;font-weight:600;opacity:.9;text-transform:uppercase;letter-spacing:1px}.celebration-message{font-size:1.125rem;margin:20px 0;line-height:1.5;opacity:.95}.current-value{font-size:.875rem;opacity:.8;font-weight:500}.particles{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:24px}.particle{position:absolute;width:6px;height:6px;background:#fffc;border-radius:50%;animation:particleFloat var(--duration, 3s) var(--delay, 0s) infinite ease-in-out}.particle-0{background:gold}.particle-1{background:#ff6b6b}.particle-2{background:#4ecdc4}.particle-3{background:#45b7d1}@keyframes particleFloat{0%{transform:translateY(100vh) translate(var(--x, 0)) rotate(0);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(-100px) translate(var(--x, 0)) rotate(360deg);opacity:0}}.confetti{position:absolute;top:-50px;left:0;right:0;height:100px;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;width:10px;height:10px;animation:confettiFall 3s var(--delay, 0s) ease-in infinite}.confetti-0{background:#ff6b6b}.confetti-1{background:#4ecdc4}.confetti-2{background:#45b7d1}.confetti-3{background:#ffd93d}.confetti-4{background:#6bcf7f}.confetti-5{background:#ff8a65}@keyframes confettiFall{0%{transform:translateY(-100px) translate(var(--x, 0)) rotate(0);opacity:1}to{transform:translateY(calc(100vh + 100px)) translate(var(--x, 0)) rotate(720deg);opacity:0}}@media (max-width: 768px){.celebration-modal{margin:20px;padding:32px 24px;min-width:auto;max-width:calc(100vw - 40px)}.celebration-icon{font-size:3rem}.celebration-title{font-size:1.5rem}.milestone-number{font-size:2.5rem}.milestone-type,.celebration-message{font-size:1rem}}@media (max-width: 480px){.celebration-modal{padding:24px 20px}.celebration-icon{font-size:2.5rem}.celebration-title{font-size:1.25rem}.milestone-number{font-size:2rem}}.fallback-fountain{position:relative;width:100%;height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);overflow:hidden}.fallback-fountain-canvas{width:100%;height:100%;display:block}.fallback-fountain-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#fff;pointer-events:none;z-index:10}.fountain-title{font-size:2.5rem;font-weight:700;margin-bottom:1rem;text-shadow:2px 2px 4px rgba(0,0,0,.5)}.fountain-subtitle{font-size:1.2rem;opacity:.9;text-shadow:1px 1px 2px rgba(0,0,0,.5)}@media (max-width: 768px){.fountain-title{font-size:2rem}.fountain-subtitle{font-size:1rem}}@media (max-width: 480px){.fountain-title{font-size:1.5rem}.fountain-subtitle{font-size:.9rem}}.real-time-features-demo{min-height:100vh;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.demo-header{text-align:center;color:#fff;margin-bottom:40px}.demo-header h1{font-size:2.5rem;font-weight:700;margin:0 0 16px;text-shadow:0 2px 4px rgba(0,0,0,.1)}.demo-header p{font-size:1.125rem;opacity:.9;margin:0 0 32px}.connection-controls{display:flex;flex-direction:column;align-items:center;gap:16px;max-width:600px;margin:0 auto}.status-indicator{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:20px;font-weight:500;transition:all .3s ease}.status-indicator.connected{background:#22c55e33;color:#dcfce7}.status-indicator.connecting{background:#fbbf2433;color:#fef3c7}.status-indicator.disconnected{background:#ef444433;color:#fecaca}.status-dot{width:8px;height:8px;border-radius:50%;animation:pulse 2s infinite}.status-indicator.connected .status-dot{background:#22c55e}.status-indicator.connecting .status-dot{background:#fbbf24}.status-indicator.disconnected .status-dot{background:#ef4444}.control-buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.connect-btn,.disconnect-btn,.demo-btn{padding:12px 24px;border:none;border-radius:12px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.875rem}.connect-btn{background:#ffffffe6;color:#667eea}.connect-btn:hover:not(:disabled){background:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.connect-btn:disabled{opacity:.7;cursor:not-allowed}.disconnect-btn{background:#ef4444e6;color:#fff}.disconnect-btn:hover{background:#dc2626;transform:translateY(-2px)}.demo-btn{background:#fbbf24e6;color:#92400e}.demo-btn:hover{background:#fbbf24;transform:translateY(-2px)}.demo-content{display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:1200px;margin:0 auto 40px}.statistics-section,.feed-section{height:600px}.demo-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;max-width:1000px;margin:0 auto}.info-card{background:#fffffff2;backdrop-filter:blur(10px);border-radius:16px;padding:24px;text-align:center;box-shadow:0 8px 32px #0000001a;border:1px solid rgba(255,255,255,.2);transition:all .3s ease}.info-card:hover{transform:translateY(-4px);box-shadow:0 12px 40px #00000026}.info-card h3{margin:0 0 12px;color:#2c3e50;font-size:1.125rem;font-weight:600}.info-card p{margin:0;color:#64748b;font-size:.875rem;line-height:1.5}@media (max-width: 1024px){.demo-content{grid-template-columns:1fr;gap:20px}.statistics-section,.feed-section{height:500px}}@media (max-width: 768px){.real-time-features-demo{padding:16px}.demo-header h1{font-size:2rem}.demo-header p{font-size:1rem}.connection-controls{gap:12px}.control-buttons{gap:8px}.connect-btn,.disconnect-btn,.demo-btn{padding:10px 20px;font-size:.8125rem}.demo-content{gap:16px;margin-bottom:32px}.statistics-section,.feed-section{height:400px}.demo-info{gap:16px}.info-card{padding:20px}}@media (max-width: 480px){.demo-header h1{font-size:1.75rem}.connection-controls{width:100%}.control-buttons{width:100%;justify-content:stretch}.connect-btn,.disconnect-btn,.demo-btn{flex:1;min-width:0}.demo-info{grid-template-columns:1fr}}.splash-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;z-index:20000;opacity:1;transition:opacity .5s ease-out;overflow:hidden}.splash-screen.fade-out{opacity:0}.splash-content{text-align:center;color:#fff;z-index:2;position:relative;max-width:400px;padding:20px}.splash-logo{margin-bottom:32px;display:flex;justify-content:center}.fountain-icon{position:relative;width:120px;height:120px;animation:float 3s ease-in-out infinite}.fountain-base{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:80px;height:40px;background:linear-gradient(145deg,#ffffff20,#ffffff10);border-radius:40px 40px 20px 20px;border:2px solid rgba(255,255,255,.3)}.water-stream{position:absolute;bottom:35px;left:50%;transform:translate(-50%);width:4px;height:60px;background:linear-gradient(to top,transparent,rgba(255,255,255,.6));border-radius:2px;animation:waterFlow 2s ease-in-out infinite}.water-drops{position:absolute;top:0;left:50%;transform:translate(-50%);width:40px;height:40px}.drop{position:absolute;width:6px;height:6px;background:#fffc;border-radius:50%;animation:dropFall 2s ease-in-out infinite}.drop-1{left:10px;animation-delay:0s}.drop-2{left:17px;animation-delay:.3s}.drop-3{left:24px;animation-delay:.6s}.splash-title{font-size:28px;font-weight:700;margin:0 0 12px;text-shadow:0 2px 4px rgba(0,0,0,.3);animation:titleGlow 2s ease-in-out infinite alternate}.splash-subtitle{font-size:16px;margin:0 0 40px;opacity:.9;font-weight:300}.loading-container{margin-top:40px}.progress-bar{width:100%;height:4px;background:#fff3;border-radius:2px;overflow:hidden;margin-bottom:16px}.progress-fill{height:100%;background:linear-gradient(90deg,#fff,#f0f8ff);border-radius:2px;transition:width .3s ease;box-shadow:0 0 10px #ffffff80}.loading-text{font-size:14px;margin:0;opacity:.8;font-weight:300;animation:textPulse 1.5s ease-in-out infinite}.splash-background{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;z-index:1}.bg-particle{position:absolute;background:#ffffff1a;border-radius:50%;animation:particleFloat 8s ease-in-out infinite}.bg-particle-1{width:20px;height:20px;top:20%;left:10%;animation-delay:0s}.bg-particle-2{width:15px;height:15px;top:60%;right:15%;animation-delay:2s}.bg-particle-3{width:25px;height:25px;top:80%;left:20%;animation-delay:4s}.bg-particle-4{width:12px;height:12px;top:30%;right:25%;animation-delay:1s}.bg-particle-5{width:18px;height:18px;top:70%;right:40%;animation-delay:3s}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes waterFlow{0%,to{opacity:.6;transform:translate(-50%) scaleY(1)}50%{opacity:.9;transform:translate(-50%) scaleY(1.2)}}@keyframes dropFall{0%{opacity:0;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(80px)}}@keyframes titleGlow{0%{text-shadow:0 2px 4px rgba(0,0,0,.3)}to{text-shadow:0 2px 4px rgba(0,0,0,.3),0 0 20px rgba(255,255,255,.3)}}@keyframes textPulse{0%,to{opacity:.8}50%{opacity:1}}@keyframes particleFloat{0%,to{transform:translateY(0) rotate(0);opacity:.1}25%{transform:translateY(-20px) rotate(90deg);opacity:.3}50%{transform:translateY(-10px) rotate(180deg);opacity:.2}75%{transform:translateY(-30px) rotate(270deg);opacity:.4}}@media (max-width: 480px){.splash-content{padding:16px;max-width:320px}.fountain-icon{width:100px;height:100px}.fountain-base{width:60px;height:30px}.water-stream{height:50px;bottom:25px}.splash-title{font-size:24px}.splash-subtitle{font-size:14px;margin-bottom:32px}}@media (max-height: 500px) and (orientation: landscape){.splash-content{max-width:600px;display:flex;align-items:center;text-align:left;gap:40px}.splash-logo{margin-bottom:0;flex-shrink:0}.fountain-icon{width:80px;height:80px}.splash-title{font-size:22px;margin-bottom:8px}.splash-subtitle{font-size:14px;margin-bottom:20px}.loading-container{margin-top:20px}}@media (-webkit-min-device-pixel-ratio: 2),(min-resolution: 192dpi){.progress-fill{box-shadow:0 0 10px #ffffff80,0 0 20px #ffffff4d}}.pwa-install-prompt{position:fixed;bottom:20px;left:20px;right:20px;z-index:10000;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;box-shadow:0 8px 32px #0000004d;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);animation:slideUp .3s ease-out;max-width:400px;margin:0 auto}.pwa-install-prompt.ios-guidance{background:linear-gradient(135deg,#4facfe,#00f2fe)}.pwa-install-content{padding:24px;text-align:center;color:#fff}.pwa-install-icon{font-size:48px;margin-bottom:16px;display:block}.pwa-install-content h3{margin:0 0 12px;font-size:20px;font-weight:600}.pwa-install-content p{margin:0 0 20px;font-size:14px;opacity:.9;line-height:1.4}.pwa-features{display:flex;justify-content:space-around;margin-bottom:24px;gap:16px}.pwa-feature{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:12px;opacity:.9}.feature-icon{font-size:20px}.pwa-install-actions{display:flex;gap:12px;flex-direction:column}.pwa-install-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:8px}.pwa-install-btn:hover{background:#ffffff4d;transform:translateY(-1px)}.pwa-install-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.pwa-dismiss-btn{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;padding:10px 20px;border-radius:8px;font-size:14px;cursor:pointer;transition:all .2s ease}.pwa-dismiss-btn:hover{background:#ffffff1a}.loading-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin 1s linear infinite}.ios-instructions{margin:20px 0;display:flex;flex-direction:column;gap:16px}.ios-step{display:flex;align-items:center;justify-content:space-between;background:#ffffff1a;padding:12px 16px;border-radius:8px;font-size:14px}.step-number{background:#fff3;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.share-icon,.add-icon{font-size:20px}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 480px){.pwa-install-prompt{left:16px;right:16px;bottom:16px}.pwa-install-content{padding:20px}.pwa-features{gap:12px}.pwa-feature{font-size:11px}.feature-icon{font-size:18px}}@media (max-height: 500px) and (orientation: landscape){.pwa-install-prompt{bottom:10px;left:50%;right:auto;transform:translate(-50%);max-width:350px}.pwa-install-content{padding:16px}.pwa-install-icon{font-size:32px;margin-bottom:8px}.pwa-features{margin-bottom:16px}}.pwa-update-notification{position:fixed;top:20px;right:20px;z-index:10000;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 8px 32px #0000004d;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);animation:slideIn .3s ease-out;max-width:350px;min-width:300px}.pwa-update-content{padding:20px;display:flex;align-items:flex-start;gap:16px;color:#fff}.pwa-update-icon{font-size:24px;flex-shrink:0;margin-top:2px}.pwa-update-text{flex:1;min-width:0}.pwa-update-text h4{margin:0 0 8px;font-size:16px;font-weight:600}.pwa-update-text p{margin:0;font-size:14px;opacity:.9;line-height:1.4}.pwa-update-actions{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.pwa-update-btn{background:#fff3;border:1px solid rgba(255,255,255,.3);color:#fff;padding:8px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:6px;white-space:nowrap}.pwa-update-btn:hover{background:#ffffff4d;transform:translateY(-1px)}.pwa-update-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.pwa-dismiss-btn{background:transparent;border:none;color:#fff;padding:4px;border-radius:4px;font-size:16px;cursor:pointer;transition:all .2s ease;opacity:.7;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.pwa-dismiss-btn:hover{background:#ffffff1a;opacity:1}.loading-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin 1s linear infinite}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 480px){.pwa-update-notification{top:16px;right:16px;left:16px;max-width:none;min-width:0}.pwa-update-content{padding:16px;gap:12px}.pwa-update-actions{flex-direction:row;align-items:center}}@media (max-height: 500px) and (orientation: landscape){.pwa-update-notification{top:10px;right:10px;max-width:280px}.pwa-update-content{padding:12px;gap:10px}.pwa-update-text h4{font-size:14px}.pwa-update-text p{font-size:12px}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;background:linear-gradient(135deg,#667eea,#764ba2);overflow:hidden;height:100vh;width:100vw}#root{height:100vh;width:100vw}.app{height:100vh;width:100vw;position:relative}.fountain-scene{height:100vh;width:100vw;position:relative;cursor:grab}.fountain-scene:active{cursor:grabbing}.fountain-scene canvas{display:block;outline:none}@media (max-width: 768px){.fountain-scene{touch-action:manipulation}}.fountain-scene *{-webkit-transform:translateZ(0);transform:translateZ(0)}
