@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap");:root{color-scheme:dark;--bg-dark:#050505;--bg-card:rgba(0,0,0,.55);--bg-card-hover:rgba(0,0,0,.65);--primary:#e85012;--primary-glow:rgba(232,80,18,.5);--secondary:#fbaa28;--secondary-glow:rgba(251,170,40,.5);--accent:#ec4899;--text-main:#fff;--text-muted:#c8c8c8;--border:hsla(0,0%,100%,.1);--container-width:1200px;--header-height:80px;--transition:all 0.3s ease;--footer-bg:rgba(0,0,0,.5);--footer-border:hsla(0,0%,100%,.1)}[data-theme=light]{color-scheme:light;--bg-dark:#f8fafc;--bg-card:hsla(0,0%,100%,.95);--bg-card-hover:#fff;--text-main:#1e293b;--text-muted:#374151;--border:rgba(0,0,0,.1);--footer-bg:rgba(0,0,0,.05);--footer-border:rgba(0,0,0,.1)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-main);font-family:Inter,sans-serif;line-height:1.6;min-height:100vh;min-height:100dvh;overflow-x:hidden;position:relative;-webkit-text-size-adjust:100%}.bg-glow{background:linear-gradient(180deg,transparent,rgba(0,0,0,.6)),url(https://mnlpbjkkugugtkkrrnpm.supabase.co/storage/v1/object/public/Ignito/assets/hero.png);background-position:top;background-repeat:no-repeat;background-size:cover;height:100vh;height:100dvh;left:0;overflow:hidden;pointer-events:none;position:fixed;top:0;width:100vw;z-index:-1}.hero-bg-img{display:none}@media (max-width:768px){.home-page .bg-glow{background:none}.home-page .bg-glow:after{background:linear-gradient(180deg,transparent,rgba(0,0,0,.6));content:"";inset:0;pointer-events:none;position:absolute;z-index:1}.hero-bg-img{display:block;height:100%;left:0;position:absolute;top:0;user-select:none;-webkit-user-select:none;width:auto;z-index:0;-webkit-touch-callout:none}}.hero-home,.hero-home h1,.hero-home h3,.hero-home p{color:#fff!important}@media (max-width:768px){.hero-home h1{font-size:1.8rem!important;line-height:1.25}.hero-home p{font-size:.9rem!important;margin-bottom:1.2rem!important}.hero-home{padding-bottom:5dvh!important;padding-top:40dvh!important}}.hero-home .text-gradient{background:linear-gradient(135deg,var(--primary),var(--secondary));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.hero-home .btn-outline{border-color:hsla(0,0%,100%,.5)!important;color:#fff!important}.hero-home .btn-outline:hover{background:hsla(0,0%,100%,.1);border-color:#fff!important}.home-page .section-header h2,.home-page .section-title,.home-page h2.section-title{color:#fff!important}.home-page .section-desc{color:hsla(0,0%,100%,.7)!important}.home-page .site-footer,.home-page .site-footer a,.home-page .site-footer h3,.home-page .site-footer h4,.home-page .site-footer li,.home-page .site-footer p{color:#fff!important}.home-page .site-footer a:hover{color:var(--primary)!important}.home-page .site-footer{background:rgba(0,0,0,.8)!important;border-top:1px solid hsla(0,0%,100%,.1)!important}.home-page .navbar:not(.scrolled) .nav-link,.home-page .navbar:not(.scrolled) .nav-logo{color:#fff!important}.home-page .navbar:not(.scrolled) .mobile-nav-toggle:not(.active) span{background-color:#fff!important}[data-theme=light] .mobile-nav-toggle.active span{background-color:var(--text-main)!important}[data-theme=light] .home-page .navbar .nav-links .nav-link,[data-theme=light] .nav-links .nav-link{color:var(--text-main)!important}h1,h2,h3,h4,h5,h6{color:var(--text-main);font-weight:700;line-height:1.2}h1{font-size:2.8rem;letter-spacing:-.02em}h2{font-size:2.5rem;letter-spacing:-.01em}h3{font-size:1.75rem}a{color:inherit;text-decoration:none;transition:var(--transition)}.container{margin:0 auto;max-width:var(--container-width);padding:0 2rem}section{padding:6rem 0}.glass-panel{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.glass-card,.glass-panel{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:var(--bg-card);border:1px solid var(--border);border-radius:1rem}.glass-card{display:flex;flex-direction:column;overflow:hidden;padding:2rem;position:relative;transition:var(--transition);word-wrap:break-word;overflow-wrap:break-word}@supports (-webkit-touch-callout:none){.glass-card{overflow:visible}}.glass-card:hover{background:var(--bg-card-hover);border-color:rgba(243,108,33,.3);box-shadow:0 10px 40px -10px rgba(0,0,0,.5);transform:translateY(-5px)}[data-theme=light] .glass-card{background:hsla(0,0%,100%,.96);border-color:rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.1)}.btn{align-items:center;border:none;border-radius:9999px;cursor:pointer;display:inline-flex;font-size:1rem;font-weight:600;justify-content:center;outline:none;padding:.75rem 1.5rem;transition:var(--transition)}.btn-primary{background:linear-gradient(135deg,var(--primary),var(--secondary));box-shadow:0 4px 15px rgba(243,108,33,.3);color:#fff}.btn-primary:hover{box-shadow:0 8px 25px rgba(243,108,33,.5);transform:scale(1.02)}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text-main)}.btn-outline:hover{background:rgba(243,108,33,.05);border-color:var(--primary);color:var(--primary)}.btn-sm{font-size:.875rem;padding:.5rem 1rem}.input-group{margin-bottom:1.5rem;position:relative}.input-field{background:hsla(0,0%,100%,.05);border:1px solid var(--border);border-radius:.75rem;color:var(--text-main);color-scheme:dark;font-size:1rem;padding:1rem;transition:var(--transition);width:100%}[data-theme=light] .input-field{color-scheme:light}select option{background-color:#1a1a1a;color:#fff}[data-theme=light] select option{background-color:#fff;color:#1e293b}.input-field:focus{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-glow);outline:none}.input-label{background:transparent;color:var(--text-muted);left:1rem;pointer-events:none;position:absolute;top:1rem;transition:var(--transition)}.input-field:focus+.input-label,.input-field:not(:placeholder-shown)+.input-label,.input-group.has-value .input-label{color:var(--primary);left:0;opacity:1;transform:translateY(-2.2rem) scale(.85)}.date-input-container{position:relative;width:100%}.date-icon{background:transparent;border:none;color:var(--text-muted);cursor:pointer;font-size:1.1rem;position:absolute;right:1.25rem;top:50%;transform:translateY(-50%);transition:var(--transition);z-index:5}.date-icon:hover{color:var(--primary)}.native-picker-overlay{background:transparent!important;border:none!important;cursor:pointer!important;height:2.5rem!important;opacity:0!important;padding:0!important;position:absolute!important;right:.75rem!important;top:50%!important;transform:translateY(-50%)!important;width:2.5rem!important;z-index:20!important}.native-picker-overlay::-webkit-calendar-picker-indicator{cursor:pointer;height:100%;left:0;margin:0;padding:0;position:absolute;top:0;width:100%}.input-field::-webkit-calendar-picker-indicator{cursor:pointer;height:100%;opacity:0;position:absolute;right:0;width:3rem}.navbar{align-items:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid transparent;display:flex;height:var(--header-height);justify-content:space-between;left:0;padding:0 2rem;position:fixed;right:0;top:0;transition:var(--transition);z-index:100}.navbar.scrolled{background:var(--bg-dark);background:color-mix(in srgb,var(--bg-dark),transparent 10%);border-bottom-color:var(--border);box-shadow:0 4px 6px -1px rgba(0,0,0,.1)}.nav-logo img{height:90px!important;width:auto}.nav-logo{background:linear-gradient(to right,#fff,var(--text-muted));background-clip:text;-webkit-background-clip:text;font-size:1.5rem;font-weight:800;-webkit-text-fill-color:transparent;letter-spacing:-.05em;margin-right:2rem}.nav-links{align-items:center;display:flex;gap:1.2rem}.nav-link{color:var(--text-muted);font-size:.95rem;font-weight:500;position:relative}.nav-link.active,.nav-link:hover{color:var(--text-main)}.nav-link:after{background:var(--primary);bottom:-4px;content:"";height:2px;left:0;position:absolute;transition:var(--transition);width:0}.nav-link.active:after,.nav-link:hover:after{width:100%}.text-gradient{background:linear-gradient(135deg,var(--primary),var(--secondary));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.flex-center{align-items:center;display:flex;justify-content:center}.grid-cols-2{display:grid;gap:2rem;grid-template-columns:repeat(2,1fr)}.grid-cols-3{display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid-cols-4{display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.section-header{margin-bottom:4rem;text-align:center}.section-title{font-size:2.5rem;margin-bottom:1rem}.section-desc{color:var(--text-muted);margin:0 auto;max-width:600px}.role-badge{background:hsla(0,0%,100%,.1);border-radius:1rem;color:var(--primary);display:inline-block;font-size:.8rem;margin-bottom:.5rem;padding:.25rem .75rem}.membership-card{padding:3rem 2rem;position:relative;text-align:center}.membership-card.featured{background:linear-gradient(180deg,var(--bg-card-hover),var(--bg-card));border-color:var(--primary)}.price{color:var(--text-main);font-size:3.5rem;font-weight:800;margin:1.5rem 0}.price span{color:var(--text-muted);font-size:1rem;font-weight:400}.features-list{list-style:none;margin:2rem 0;text-align:left}.features-list li{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.05);color:var(--text-muted);display:flex;gap:.75rem;padding:.75rem 0}.features-list li:last-child{border-bottom:none}.check-icon{color:var(--primary)}.wall-post{height:100%}.wall-header{align-items:center;display:flex;gap:1rem;margin-bottom:1rem}.wall-avatar{background:#333;border-radius:50%;height:40px;width:40px}.wall-meta h4{font-size:1rem;margin-bottom:.2rem}.wall-meta span{color:var(--text-muted);font-size:.8rem}.wall-content{color:var(--text-muted);font-size:.95rem;margin-bottom:1rem}.wall-image{background:#222;height:200px;object-fit:cover;width:100%}.wall-image,.wall-video-wrapper{border-radius:.5rem;margin-bottom:1rem}.wall-video-wrapper{overflow:hidden;position:relative}.wall-video-wrapper .wall-image{display:block;margin-bottom:0}.video-play-overlay{align-items:center;background:rgba(0,0,0,.25);cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;transition:background .2s;width:100%}.video-play-overlay:hover{background:rgba(0,0,0,.4)}.play-btn-circle{align-items:center;background:hsla(0,0%,100%,.92);border-radius:50%;color:#111;display:flex;font-size:1.3rem;height:56px;justify-content:center;transition:transform .2s;width:56px}.video-play-overlay:hover .play-btn-circle{transform:scale(1.12)}.wall-video-wrapper.playing .video-play-overlay{display:none}.translate-btn{align-items:center;background:rgba(0,0,0,.65);border:none;border-radius:20px;color:#fff;cursor:pointer;display:none;font-size:.82rem;gap:5px;padding:5px 13px;position:absolute;right:10px;top:10px;transition:background .2s;z-index:10}.translate-btn:hover{background:rgba(0,0,0,.9)}.wall-video-wrapper.playing .translate-btn{display:flex}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.animate-float{animation:float 6s ease-in-out infinite;will-change:transform}@media (max-width:768px){.navbar{padding:0 1.5rem}.nav-links{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:var(--bg-dark);border-left:1px solid var(--border);box-shadow:-10px 0 30px rgba(0,0,0,.5);display:flex;flex-direction:column;gap:2rem;height:100vh;height:100dvh;justify-content:center;max-width:300px;padding:2rem;position:fixed;right:-100%;top:0;transition:all .4s cubic-bezier(.16,1,.3,1);width:80%;z-index:100}.nav-links.active{right:0}.nav-link{font-size:1.25rem}.mobile-nav-toggle{background:transparent;border:none;cursor:pointer;display:block;padding:.5rem;z-index:101}.mobile-nav-toggle span{background-color:var(--text-main);border-radius:2px;display:block;height:2px;margin:5px 0;transition:.3s;width:25px}.mobile-nav-toggle.active span:first-child{transform:rotate(-45deg) translate(-5px,6px)}.mobile-nav-toggle.active span:nth-child(2){opacity:0}.mobile-nav-toggle.active span:nth-child(3){transform:rotate(45deg) translate(-5px,-6px)}h1{font-size:2.5rem}.grid-cols-2,.grid-cols-3,.grid-cols-4{grid-template-columns:1fr}.container{padding:0 1rem}.glass-card{padding:1.25rem}.event-card p{display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;line-height:1.4;max-height:4.2em;overflow:hidden;text-overflow:ellipsis}.table-container{overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch;border-radius:.5rem;margin-bottom:1rem}table{min-width:600px}}@media (min-width:769px){.mobile-nav-toggle{display:none!important}}.early-bird-badge{align-items:center;background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(22,163,74,.1));border:1px solid rgba(34,197,94,.3);border-radius:2rem;color:#22c55e;display:inline-flex;font-size:.7rem;font-weight:700;gap:.5rem;letter-spacing:.05em;margin-bottom:.75rem;padding:.25rem .75rem;text-transform:uppercase}.price-container{align-items:baseline;display:flex;gap:.75rem;margin-top:.5rem}.price-original{color:var(--text-muted);font-size:.95rem;font-weight:500;text-decoration:line-through}.price-discounted{color:var(--primary);font-size:1.5rem;font-weight:800}.savings-tag{color:#22c55e;font-size:.75rem;font-weight:600;margin-top:.25rem}.countdown-timer{align-items:center;backdrop-filter:blur(4px);background:hsla(0,0%,100%,.03);border:1px solid hsla(0,0%,100%,.08);border-radius:.75rem;color:var(--text-main);display:flex;font-size:.8rem;font-weight:600;gap:.6rem;margin-top:1rem;padding:.6rem .8rem;transition:var(--transition)}.countdown-timer i{color:var(--primary);font-size:1rem}.countdown-timer.ending-soon{background:rgba(239,68,68,.05);border-color:rgba(239,68,68,.4)}.countdown-timer.ending-soon i{animation:pulse 1.5s infinite;color:#ef4444}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.theme-toggle-fab{align-items:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:var(--bg-card);border:2px solid var(--border);border-radius:50%;bottom:2rem;box-shadow:0 4px 15px rgba(0,0,0,.3);color:var(--text-main);cursor:pointer;display:flex;font-size:1.5rem;height:3.5rem;justify-content:center;position:fixed;right:2rem;transition:var(--transition);width:3.5rem;z-index:1000}[data-theme=light] .theme-toggle-fab{background:#fff;border:3px solid rgba(0,0,0,.3);box-shadow:0 4px 20px rgba(0,0,0,.3),0 2px 10px rgba(0,0,0,.2)}.theme-toggle-fab:hover{background:var(--bg-card-hover);box-shadow:0 8px 25px rgba(0,0,0,.4);color:var(--primary);transform:translateY(-3px) scale(1.05)}[data-theme=light] .theme-toggle-fab:hover{border-color:var(--primary);box-shadow:0 8px 30px rgba(0,0,0,.25)}.event-popup{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:var(--bg-card);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:1rem;bottom:2rem;box-shadow:0 8px 32px rgba(0,0,0,.3);cursor:pointer;display:flex;flex-direction:column;gap:.5rem;left:2rem;opacity:0;padding:1.5rem;position:fixed;transform:translateY(100px);transition:all .5s cubic-bezier(.16,1,.3,1);visibility:hidden;width:320px;z-index:1000}.site-footer{background:var(--footer-bg);border-top:1px solid var(--footer-border);margin-top:0;padding:4rem 0;transition:var(--transition)}.event-popup.show{opacity:1;transform:translateY(0);visibility:visible}.event-popup:hover{border-color:var(--primary);box-shadow:0 12px 40px rgba(249,115,22,.2);transform:translateY(-4px)}.event-popup-header{align-items:flex-start;display:flex;justify-content:space-between}.event-popup-title{color:var(--primary);font-size:.85rem;font-weight:700;letter-spacing:.05em;margin-bottom:.25rem;text-transform:uppercase}.event-popup-name{color:var(--text-main);font-size:1.1rem;font-weight:700;line-height:1.3;margin-bottom:.5rem}.event-popup-hurry{color:var(--primary);font-size:.85rem;font-weight:700;margin-bottom:.5rem}.event-popup-timer{background:rgba(0,0,0,.2);border-radius:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(4,1fr);margin-top:.5rem;padding:.75rem;text-align:center}.timer-box{align-items:center;display:flex;flex-direction:column}.timer-value{color:var(--text-main);font-size:1.1rem;font-variant-numeric:tabular-nums;font-weight:700}.timer-label{color:var(--text-muted);font-size:.65rem;text-transform:uppercase}.event-popup-close{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--text-muted);cursor:pointer;display:flex;height:24px;justify-content:center;position:absolute;right:.75rem;top:.75rem;transition:var(--transition);width:24px}.event-popup-close:hover{background:hsla(0,0%,100%,.1);color:#ef4444}@media (max-width:768px){.event-popup{bottom:1rem;left:1rem;max-width:none;right:1rem;width:auto}}.install-modal{align-items:center;animation:fadeIn .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:rgba(0,0,0,.85);display:none;height:100%;justify-content:center;left:0;padding:1rem;position:fixed;top:0;width:100%;z-index:99999}.install-content{animation:slideUp .4s cubic-bezier(.16,1,.3,1);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:var(--bg-card);border:2px solid var(--border);border-radius:1.5rem;box-shadow:0 20px 60px rgba(0,0,0,.5);max-width:420px;padding:2.5rem;position:relative;text-align:center;width:100%}.install-header{margin-bottom:1.5rem}.install-icon{animation:float 3s ease-in-out infinite;border-radius:1.25rem;box-shadow:0 8px 24px rgba(243,108,33,.3);height:80px;margin:0 auto 1rem;width:80px}.install-content h2{color:var(--text-main);font-size:1.75rem;margin-bottom:.75rem}.install-content p{color:var(--text-muted);font-size:.95rem;line-height:1.6;margin-bottom:2rem}.install-content .btn{font-size:1rem;gap:.5rem;margin-bottom:.75rem;padding:1rem 1.5rem;width:100%}.install-content .btn i{font-size:1.1rem}.install-content .btn-outline{background:transparent;border:1px solid var(--border)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(60px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:480px){.install-content{border-radius:1.25rem;padding:2rem 1.5rem}.install-icon{height:70px;width:70px}.install-content h2{font-size:1.5rem}.install-content p{font-size:.9rem}}.update-notification{animation:slideInRight .5s cubic-bezier(.16,1,.3,1);bottom:2rem;display:none;position:fixed;right:2rem;z-index:99998}.update-content{align-items:center;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:linear-gradient(135deg,var(--primary),var(--secondary));border:1px solid hsla(0,0%,100%,.2);border-radius:1rem;box-shadow:0 8px 32px rgba(243,108,33,.4);color:#fff;display:flex;gap:1rem;max-width:400px;padding:1.25rem 1.5rem}.update-icon{animation:bounce 2s infinite;color:#fff;font-size:2rem}.update-text{flex:1}.update-text h4{color:#fff;font-size:1rem;font-weight:700;margin:0 0 .25rem}.update-text p{color:hsla(0,0%,100%,.9);font-size:.85rem;margin:0}.update-notification .btn{background:#fff;border:none;color:var(--primary);font-weight:600;padding:.6rem 1.2rem;white-space:nowrap}.update-notification .btn:hover{background:hsla(0,0%,100%,.9);transform:scale(1.05)}@keyframes slideInRight{0%{opacity:0;transform:translateX(400px)}to{opacity:1;transform:translateX(0)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@media (max-width:768px){.update-notification{bottom:1rem;left:1rem;right:1rem}.update-content{flex-wrap:wrap;padding:1rem}.update-notification .btn{margin-top:.5rem;width:100%}.theme-toggle-fab{bottom:1.25rem;left:1.25rem;right:auto}.hero-home .flex-center{align-items:center;flex-direction:column;gap:1rem}.hero-home .flex-center .btn{max-width:280px;width:100%}}.nav-notification-wrapper{margin:0 .5rem}.nav-notification-wrapper,.notification-bell{align-items:center;display:flex;position:relative}.notification-bell{background:none;border:none;border-radius:50%;color:var(--text-muted);cursor:pointer;font-size:1.2rem;justify-content:center;padding:.5rem;transition:var(--transition)}.notification-bell:hover{background:hsla(0,0%,100%,.05);color:var(--primary)}.notification-badge{align-items:center;background:#ef4444;border:2px solid var(--bg-dark);border-radius:8px;color:#fff;display:flex;font-size:.65rem;font-weight:700;height:16px;justify-content:center;min-width:16px;padding:0 4px;position:absolute;right:2px;top:2px}.notification-dropdown{animation:slideDown .2s ease-out;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:var(--bg-card);border:1px solid var(--border);border-radius:1rem;box-shadow:0 10px 25px -5px rgba(0,0,0,.5);display:none;flex-direction:column;margin-top:1rem;overflow:hidden;position:absolute;right:0;top:100%;width:320px;z-index:1000}.notification-dropdown.show{display:flex}.notification-header{align-items:center;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:1rem 1.25rem}.notification-header h4{font-size:.95rem;margin:0}.notification-list{max-height:400px;overflow-y:auto}.notification-item{border-bottom:1px solid var(--border);cursor:pointer;display:flex;gap:.75rem;padding:1rem 1.25rem;transition:var(--transition)}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:hsla(0,0%,100%,.03)}.notification-item.unread{background:rgba(243,108,33,.03)}.notification-icon{align-items:center;background:hsla(0,0%,100%,.05);border-radius:50%;display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.notification-info{flex:1}.notification-title{color:var(--text-main);font-size:.85rem;font-weight:600;margin-bottom:.2rem}.notification-message{color:var(--text-muted);font-size:.8rem;line-height:1.4}.notification-time{color:var(--text-muted);display:block;font-size:.7rem;margin-top:.4rem}.notification-empty{color:var(--text-muted);font-size:.9rem;padding:3rem 1.5rem;text-align:center}.mark-all-btn{background:none;border:none;color:var(--primary);cursor:pointer;font-size:.75rem;padding:0}.mark-all-btn:hover{text-decoration:underline}@media (max-width:768px){.notification-dropdown{left:.5rem;margin-top:.5rem;position:fixed;right:.5rem;top:var(--header-height);width:calc(100% - 1rem)}}.spinner{animation:spin .8s linear infinite;border:3px solid hsla(0,0%,100%,.3);border-radius:50%;border-top-color:#fff;display:none;height:20px;margin-right:10px;width:20px}@keyframes spin{to{transform:rotate(1turn)}}.btn.loading{align-items:center;cursor:not-allowed;display:inline-flex;justify-content:center;opacity:.8;pointer-events:none}.btn-spinner,.btn.loading .spinner{display:inline-block}.btn-spinner{animation:btn-spin .6s linear infinite;border:2px solid hsla(0,0%,100%,.3);border-radius:50%;border-top-color:#fff;height:1.2rem;margin-right:.5rem;width:1.2rem}@keyframes btn-spin{to{transform:rotate(1turn)}}@keyframes skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,hsla(0,0%,100%,.04) 25%,hsla(0,0%,100%,.09) 50%,hsla(0,0%,100%,.04) 75%);background-size:200% 100%;border-radius:6px}.skeleton,[data-theme=light] .skeleton{animation:skeleton-shimmer 1.5s infinite}[data-theme=light] .skeleton{background:linear-gradient(90deg,rgba(0,0,0,.06) 25%,rgba(0,0,0,.12) 50%,rgba(0,0,0,.06) 75%);background-size:200% 100%}.home-lb-card{display:flex;flex-direction:column;gap:0;padding:1.5rem}.home-lb-sport-header{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.08);display:flex;gap:.75rem;margin-bottom:1.25rem;padding-bottom:1rem}.home-lb-sport-icon{color:var(--primary);font-size:1.75rem}.home-lb-sport-label{background:linear-gradient(135deg,#f36c21,#f5a623);-webkit-background-clip:text;font-size:1.2rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;-webkit-text-fill-color:transparent;background-clip:text}.home-lb-athletes{display:flex;flex-direction:column}.home-lb-empty,.home-lb-loading{color:var(--text-muted);padding:1rem 0;text-align:center}.home-lb-empty{font-size:.9rem}.home-lb-top1{align-items:center;display:flex;flex-direction:column;gap:.4rem;padding:.5rem 0 1.25rem}.home-lb-top1-pic-wrap{margin-bottom:.15rem;position:relative}.home-lb-top1-avatar{border:3px solid var(--primary);border-radius:50%;box-shadow:0 0 20px rgba(243,108,33,.35);height:90px;object-fit:cover;width:90px}.home-lb-top1-fallback{align-items:center;background:rgba(243,108,33,.15);border:3px solid rgba(243,108,33,.4);border-radius:50%;color:var(--primary);display:flex;font-size:2rem;height:90px;justify-content:center;width:90px}.home-lb-top1-medal{font-size:1.5rem;line-height:1}.home-lb-top1-name{font-size:1.05rem;font-weight:700;text-align:center}.home-lb-top1-km{color:var(--primary);font-size:1rem;font-weight:700}.home-lb-expand-btn{align-items:center;background:rgba(243,108,33,.08);border:1px solid rgba(243,108,33,.2);border-radius:.5rem;color:var(--primary);cursor:pointer;display:flex;font-size:.82rem;font-weight:600;gap:.4rem;justify-content:center;margin-top:.25rem;padding:.5rem;transition:background .2s;width:100%}.home-lb-expand-btn:hover{background:rgba(243,108,33,.15)}.home-lb-expand-btn i{transition:transform .3s}.home-lb-expand-btn.open i{transform:rotate(180deg)}.home-lb-rest{display:flex;flex-direction:column;gap:.35rem;max-height:0;overflow:hidden;transition:max-height .4s ease,padding-top .3s ease}.home-lb-rest.open{max-height:700px;padding-top:.65rem}.home-lb-rest-row{align-items:center;border-radius:.5rem;display:flex;gap:.55rem;padding:.35rem .45rem;transition:background .2s}.home-lb-rest-row:hover{background:hsla(0,0%,100%,.04)}.home-lb-rest-rank{color:var(--text-muted);flex-shrink:0;font-size:.78rem;font-weight:700;text-align:center;width:1.3rem}.home-lb-rest-avatar{border:1.5px solid rgba(243,108,33,.3);border-radius:50%;flex-shrink:0;height:36px;object-fit:cover;width:36px}.home-lb-rest-fallback{align-items:center;background:rgba(243,108,33,.1);border:1.5px solid rgba(243,108,33,.25);border-radius:50%;color:var(--primary);display:flex;flex-shrink:0;font-size:.85rem;height:36px;justify-content:center;width:36px}.home-lb-rest-info{display:flex;flex-direction:column;min-width:0}.home-lb-rest-name{font-size:.85rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-lb-rest-km{color:var(--primary);font-size:.78rem;font-weight:600}.home-lb-podium{align-items:flex-end;display:flex;gap:.5rem;justify-content:center;padding:.5rem 0 1.5rem}.home-lb-podium-slot{align-items:center;display:flex;flex:1;flex-direction:column;gap:.2rem;max-width:130px;min-width:0}.home-lb-podium-slot.rank-1{transform:translateY(-30px)}.rank-3{transform:translateY(12px)}.home-lb-pod-avatar{border:2.5px solid var(--primary);border-radius:50%;height:78px;object-fit:cover;width:78px}.home-lb-pod-avatar.lg{border:3px solid var(--primary);box-shadow:0 0 18px rgba(243,108,33,.35);height:100px;width:100px}.home-lb-pod-fallback{align-items:center;background:rgba(243,108,33,.12);border:2.5px solid rgba(243,108,33,.4);border-radius:50%;color:var(--primary);display:flex;font-size:1.8rem;height:78px;justify-content:center;width:78px}.home-lb-pod-fallback.lg{font-size:2.5rem;height:100px;width:100px}.home-lb-pod-medal{background-image:url(https://mnlpbjkkugugtkkrrnpm.supabase.co/storage/v1/object/public/design-assets/medals.svg);background-repeat:no-repeat;background-size:300% auto;display:block;height:34px;width:30px}.home-lb-pod-medal.gold{background-position:0;height:44px;width:38px}.home-lb-pod-medal.silver{background-position:50%}.home-lb-pod-medal.bronze{background-position:100%}.home-lb-pod-name{font-size:.82rem;font-weight:700;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:100%}.home-lb-pod-km{color:var(--primary);font-size:.78rem;font-weight:700}.goog-te-banner-frame,.skiptranslate>iframe,body>.goog-tooltip,body>.goog-tooltip:hover,body>div[class^=VIpgJd-]{display:none!important;visibility:hidden!important}body{top:0!important}.goog-text-highlight{background:none!important;box-shadow:none!important}#google_translate_element{display:none!important}.lang-switch{flex-shrink:0;position:relative}.lang-trigger{align-items:center;appearance:none;background:hsla(0,0%,100%,.05);border:1px solid var(--border);border-radius:9999px;color:var(--text-main);cursor:pointer;display:inline-flex;font-family:Inter,sans-serif;font-size:.85rem;font-weight:600;gap:.4rem;line-height:1;padding:.5rem .85rem;transition:var(--transition)}[data-theme=light] .lang-trigger{background:rgba(0,0,0,.04)}.lang-trigger:hover{border-color:var(--primary);color:var(--primary)}.lang-trigger .globe{color:var(--primary);font-size:.9rem}.lang-trigger .chev{color:var(--text-muted);font-size:.6rem;transition:transform .2s}.lang-trigger.is-open .chev{transform:rotate(180deg)}.lang-menu{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:var(--bg-card);border:1px solid var(--border);border-radius:.85rem;box-shadow:0 10px 25px -5px rgba(0,0,0,.5);display:flex;flex-direction:column;gap:.1rem;min-width:150px;overflow:hidden;padding:.35rem;position:absolute;right:0;top:calc(100% + .6rem);z-index:200}.lang-menu-item{border-radius:.55rem;color:var(--text-main);cursor:pointer;font-size:.88rem;font-weight:600;padding:.55rem .7rem;transition:var(--transition)}.lang-menu-item:hover{background:hsla(0,0%,100%,.06)}.lang-menu-item.is-active{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.lang-menu-item .native[lang=ta]{font-family:Noto Sans Tamil,Latha,Inter,sans-serif}.lang-menu-item .native[lang=hi]{font-family:Noto Sans Devanagari,Nirmala UI,Inter,sans-serif}.navbar>.lang-switch{margin-right:.5rem}@media (max-width:768px){.lang-trigger{font-size:.78rem;padding:.4rem .6rem}.lang-menu{left:0;right:auto}}

/* ── Shared admin header ──────────────────────────────────────────────────
   One logo size for every page. The site grew two incompatible header
   dialects: 14 pages use .nav-logo (whose `height:90px!important` overrode
   their inline 55px AND overflowed the 80px navbar), while the four newest
   pages use .logo inside .nav-container -- neither of which was defined in
   any stylesheet, so their logo fell back to the raw height="34" attribute
   and rendered tiny. Both dialects are matched here, and the pages no
   longer specify a size themselves, so this is the only place it lives. */
.nav-logo img { height: 48px !important; width: auto; }

.nav-logo { display: inline-flex; align-items: center; margin-right: 2rem; }

/* There is deliberately no .nav-container rule. Four pages used to wrap the
   navbar's children in one, but js/script.js and js/translate.js both append
   to .navbar itself (the mobile menu button, the language switcher) -- with a
   wrapper in the way those landed as siblings of it and were pushed off the
   header. Those pages now use the same flat structure as every other page:
   .nav-logo and .nav-links as direct children of .navbar. Keep it that way. */

/* Back to Dashboard, injected by js/admin-chrome.js. */
.admin-back-row { display: flex; margin-bottom: 1.25rem; }
.admin-back-row .btn { gap: .45rem; font-family: inherit; }

/* Light-theme backstop. Only four admin pages were ever styled for light
   mode, but script.js adds the theme toggle to every page -- so a panel
   that hardcodes a dark background keeps it while the text around it turns
   near-black. Forcing the token here means a page that forgets a light rule
   degrades to readable rather than invisible. */
[data-theme=light] .admin-container table,
[data-theme=light] .admin-container .panel,
[data-theme=light] .admin-container input,
[data-theme=light] .admin-container select,
[data-theme=light] .admin-container textarea { color: var(--text-main); }

/* ── Page titles ──────────────────────────────────────────────────────────
   Every admin page's main heading. Titles had drifted from 1.4rem to 3rem
   with only some carrying the brand gradient, because each page hardcoded a
   font-size inline and overrode the h1 rule. Use <h1 class="page-title"> and
   set no size on it -- this is the only place the size and colour live.
   The gradient repeats .text-gradient rather than requiring both classes, so
   one class on the heading is all a new page needs. */
.page-title {
    font-size: 2.8rem;
    font-weight: 800;
    letter-spacing: -.02em;
    line-height: 1.2;
    margin: 0 0 .5rem;
    background: linear-gradient(135deg, var(--primary), var(--secondary));
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    /* inline-block keeps the gradient box tight to the text; a full-width
       block would clip the last glyph's descender in some browsers. */
    display: inline-block;
}

/* Matches the h1 step-down already in the mobile block above. */
@media (max-width: 768px) {
    .page-title { font-size: 2rem; }
}

/* The one-line description that usually sits under a page title. */
.page-subtitle {
    margin: 0;
    color: var(--text-muted);
    font-size: .9rem;
}

/* ─────────────────────────────────────────────────────────────────────────────
   Avatars

   Generalised from the homepage leaderboard's .home-lb-pod-avatar /
   .home-lb-rest-avatar pair, which had the pattern right and proved it: a
   circular photo, an orange border, object-fit:cover, and an icon fallback
   swapped in by an onerror handler when the image 404s.

   Those classes stay exactly as they are -- the leaderboard is laid out around
   their specific sizes. What is new is one .avatar / .avatar-fallback pair with
   size modifiers, so profile.html, dashboard.html and the navbar do not each
   invent their own.

   Both halves are always rendered, with the fallback hidden. That is what makes
   the onerror swap possible: a photo whose URL has rotted (a Strava CDN link
   from a disconnected account, a deleted upload) shows the user icon instead of
   a broken-image glyph, with no round trip.
   ────────────────────────────────────────────────────────────────────────── */
.avatar,
.avatar-fallback {
    border-radius: 50%;
    flex-shrink: 0;
    width: 48px;
    height: 48px;
}
.avatar {
    object-fit: cover;
    border: 2px solid var(--primary);
    background: var(--bg-card);
}
.avatar-fallback {
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(243, 108, 33, .12);
    border: 2px solid rgba(243, 108, 33, .4);
    color: var(--primary);
    font-size: 1.1rem;
}

.avatar.sm, .avatar-fallback.sm { width: 32px; height: 32px; border-width: 1.5px; }
.avatar-fallback.sm { font-size: .8rem; }

.avatar.md, .avatar-fallback.md { width: 56px; height: 56px; }
.avatar-fallback.md { font-size: 1.3rem; }

.avatar.lg, .avatar-fallback.lg { width: 120px; height: 120px; border-width: 3px; }
.avatar-fallback.lg { font-size: 2.6rem; }

/* The tap-to-change gesture on profile.html. Only the wrapper is interactive,
   so the hint sits over the photo without intercepting nothing. */
.avatar-edit { position: relative; display: inline-block; cursor: pointer; }
.avatar-edit .avatar-edit-hint {
    position: absolute;
    inset: auto 0 0 0;
    background: rgba(0, 0, 0, .6);
    color: #fff;
    font-size: .62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    text-align: center;
    padding: .2rem 0;
    border-radius: 0 0 60px 60px;
    pointer-events: none;
}

/* The dashboard greeting row: avatar beside the name, wrapping to its own line
   on a narrow screen rather than squeezing the heading. */
.dashboard-header {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}
.dashboard-greeting { min-width: 0; flex: 1 1 240px; }
.dashboard-avatar { display: inline-block; line-height: 0; flex-shrink: 0; }
