@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--bg-color:#0f172a;--bg-color-alt:#1e293b;--text-main:#f8fafc;--text-muted:#94a3b8;--accent:#3b82f6;--accent-hover:#2563eb;--danger:#ef4444;--danger-hover:#dc2626;--success:#10b981;--warning:#f59e0b;--border:#ffffff1a;--glass-bg:#1e293bb3;--glass-border:#ffffff0d;--input-bg:#0003;--bg-panel:#1e293b;--avatar-color-1:#3b82f6;--avatar-color-2:#8b5cf6;--avatar-color-3:#ec4899;--avatar-color-4:#f59e0b;--avatar-color-5:#10b981;--avatar-color-6:#06b6d4;--font-scale:1;font-family:Inter,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5;font-size:calc(16px * var(--font-scale));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text-main);background-color:var(--bg-color);background-image:radial-gradient(circle at 100% 0,#1e1b4b,#0000 40%),radial-gradient(circle at 0 100%,#0f172a,#0000 40%);background-size:cover;background-attachment:fixed}:root[data-theme=light]{--bg-color:#f1f5f9;--bg-color-alt:#e2e8f0;--text-main:#1e293b;--text-muted:#64748b;--border:#0000001a;--glass-bg:#ffffffd9;--glass-border:#0000000f;--input-bg:#0000000a;--bg-panel:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-image:radial-gradient(circle at 100% 0,#dbeafe,#0000 40%),radial-gradient(circle at 0 100%,#f1f5f9,#0000 40%)}:root[data-theme=light] .glass-panel{border-color:#00000014;box-shadow:0 1px 2px #0000000f}:root[data-theme=light] button:hover{background-color:#0000000a}:root[data-theme=light] button.primary:hover{background-color:var(--accent-hover)}:root[data-theme=light] [style*="rgba(0,0,0,0.2)"],:root[data-theme=light] [style*="rgba(0, 0, 0, 0.2)"]{background:#00000009!important}:root[data-theme=light] [style*="rgba(255,255,255,0.04)"],:root[data-theme=light] [style*="rgba(255, 255, 255, 0.04)"]{background:#00000006!important}:root[data-theme=light] [style*="rgba(255,255,255,0.08)"],:root[data-theme=light] [style*="rgba(255, 255, 255, 0.08)"]{background:#0000000a!important}:root[data-font-size=small]{--font-scale:.85}:root[data-font-size=medium]{--font-scale:1}:root[data-font-size=large]{--font-scale:1.15}html,body{max-width:100vw;overflow-x:hidden}body{min-height:100dvh;padding-bottom:env(safe-area-inset-bottom);place-items:center;margin:0;display:flex}#root{width:100%;max-width:600px;padding:1rem;padding-top:calc(1rem + env(safe-area-inset-top,0px));padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px));box-sizing:border-box;margin:0 auto;overflow-x:hidden}*{box-sizing:border-box}@media (hover:none) and (pointer:coarse){input[type=text],input[type=number],input[type=password],input[type=email],input[type=tel],input[type=search],textarea,select{font-size:16px!important}}:root.theme-transition,:root.theme-transition *,:root.theme-transition :before,:root.theme-transition :after{transition:background-color .35s,color .35s,border-color .35s,box-shadow .35s,background .35s!important}::selection{color:inherit;background:#3b82f64d}.skip-to-content{z-index:99999;background:var(--accent);color:#fff;border-radius:0 0 12px 12px;padding:12px 24px;font-size:.9rem;font-weight:600;text-decoration:none;transition:top .2s;position:absolute;top:-100px;left:50%;transform:translate(-50%)}.skip-to-content:focus{outline:none;top:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 4px #3b82f626}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.slide-in,.fade-in,.scale-in,.page-enter{opacity:1!important;animation:none!important;transform:none!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}h1,h2,h3,h4{margin:0;font-weight:600}button,a,input,select,textarea,label{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{border:1px solid var(--border);background-color:var(--bg-color-alt);color:var(--text-main);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-width:44px;min-height:48px;padding:.6em 1.2em;font-family:inherit;font-size:1rem;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex}button:hover{background-color:#ffffff1a;transform:translateY(-1px)}button:active{transition:transform .1s;transform:scale(.97)translateY(1px)}button.primary{background-color:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background-color:var(--accent-hover);box-shadow:0 4px 16px #3b82f659}button.primary:active{background-color:#1d4ed8;transform:scale(.96);box-shadow:0 2px 8px #3b82f633}button.danger{background-color:var(--danger);border-color:var(--danger)}button.danger:hover{background-color:var(--danger-hover);box-shadow:0 4px 12px #ef44444d}button:disabled{opacity:.5;cursor:not-allowed;transform:scale(.98)}button:disabled:active{transform:scale(.98)}button.loading{pointer-events:none;opacity:.7}input[type=text],input[type=number],input[type=password]{background:var(--input-bg);border:1px solid var(--border);color:var(--text-main);-webkit-appearance:none;border-radius:12px;outline:none;width:100%;min-height:48px;padding:12px 16px;font-family:inherit;font-size:1rem;transition:border-color .2s,box-shadow .2s,background .2s}textarea{background:var(--input-bg);border:1px solid var(--border);color:var(--text-main);-webkit-appearance:none;border-radius:12px;outline:none;width:100%;padding:12px 16px;font-family:inherit;font-size:1rem;transition:border-color .2s,box-shadow .2s,background .2s}textarea:focus,input:focus{border-color:var(--accent);background:#3b82f608;box-shadow:0 0 0 3px #3b82f626}input::placeholder{color:var(--text-muted);opacity:.5;transition:opacity .2s}input:focus::placeholder{opacity:.3}input:disabled,textarea:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.3)}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}kbd{border:1px solid var(--border);box-shadow:0 1px 0 var(--border);background:#ffffff0f;border-radius:5px;padding:2px 8px;font-family:SF Mono,SFMono-Regular,Consolas,monospace;font-size:.75rem}:root[data-theme=light] kbd{background:#0000000a;box-shadow:0 1px #0000001a}.glass-panel{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:20px;padding:24px;box-shadow:0 8px 32px #0000004d}.fade-in[style*=background]{transition:background .2s,transform .15s,box-shadow .2s}.fade-in[style*=background]:active{transform:scale(.98)}.scroll-fade-container{position:relative}.scroll-fade-container:after{content:"";background:linear-gradient(to bottom, transparent, var(--bg-color));pointer-events:none;z-index:1;height:48px;position:absolute;bottom:0;left:0;right:0}*{scrollbar-width:thin;scrollbar-color:var(--border) transparent}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff3}:root[data-theme=light] ::-webkit-scrollbar-thumb:hover{background:#0003}.slide-in{animation:.3s cubic-bezier(.16,1,.3,1) forwards slideIn}.auth-slide-up{animation:.4s cubic-bezier(.16,1,.3,1) forwards authSlideUp}.fade-in{animation:.2s forwards fadeIn}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes authSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes readyBounce{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes avatarReadyRing{0%,to{box-shadow:0 0 0 2.5px var(--success)}50%{box-shadow:0 0 0 4px #10b98133}}@keyframes timerHeartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.03)}28%{transform:scale(1)}42%{transform:scale(1.03)}70%{transform:scale(1)}}@keyframes readyPop{0%{opacity:.65;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@keyframes successPop{0%{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes badgePulse{0%,to{box-shadow:0 0 0 2px var(--bg-color), 0 2px 10px #ef44448c;transform:scale(1)}50%{box-shadow:0 0 0 2px var(--bg-color), 0 0 14px #ef4444cc;transform:scale(1.18)}}@keyframes slideOutRight{0%{opacity:1;max-height:200px;transform:translate(0)}to{opacity:0;max-height:0;margin:0;padding:0;transform:translate(60px)}}@keyframes slideCardIn{0%{opacity:0;transform:translate(38px)}to{opacity:1;transform:translate(0)}}.slide-card-in{animation:.28s cubic-bezier(.16,1,.3,1) forwards slideCardIn}@keyframes barPopup{0%{opacity:0;transform:translate(-50%)scale(.7)}to{opacity:1;transform:translate(-50%)scale(1)}}.bar-popup-label{background:var(--accent);color:#fff;white-space:nowrap;pointer-events:none;z-index:2;border-radius:8px;padding:2px 6px;font-size:.65rem;font-weight:700;animation:.2s cubic-bezier(.16,1,.3,1) forwards barPopup;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}@keyframes barGrow{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.chart-bar{transform-origin:bottom;animation:.5s cubic-bezier(.16,1,.3,1) forwards barGrow}.chart-bar-col{transition:transform .1s;position:relative}.chart-bar-col:active{transform:scale(.94)}.chart-bar-col--today:before{content:"";border:1.5px solid var(--accent);opacity:.45;pointer-events:none;border-radius:6px;position:absolute;inset:-4px 0}.chart-bar-label{opacity:0;transition:opacity .15s}.chart-bar-label--max{opacity:1}.chart-bar-crown{filter:drop-shadow(0 0 3px #f59e0b99);animation:.4s both crownPop}@keyframes crownPop{0%{opacity:0;transform:scale(0)translateY(4px)}70%{opacity:1;transform:scale(1.2)translateY(-1px)}to{opacity:.9;transform:scale(1)translateY(0)}}.chart-bar-col:hover .chart-bar-label{opacity:1}.chart-bar-col[data-tip]:hover:after{content:attr(data-tip);background:var(--bg-panel,#1e293b);border:1px solid var(--accent);white-space:nowrap;color:var(--text-main);z-index:20;pointer-events:none;border-radius:6px;padding:3px 8px;font-size:.65rem;animation:.15s tooltipFadeIn;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)}.heatmap-cell{position:relative}.heatmap-cell[data-tip]:hover:after{content:attr(data-tip);background:var(--bg-panel,#1e293b);border:1px solid var(--accent);white-space:nowrap;color:var(--text-main);z-index:30;pointer-events:none;border-radius:6px;padding:3px 8px;font-size:.65rem;animation:.15s tooltipFadeIn;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%)}.accent-swatch-btn{position:relative}.accent-swatch-btn[data-tip]:hover:after{content:attr(data-tip);background:var(--bg-panel,#1e293b);border:1px solid var(--accent);white-space:nowrap;color:var(--text-main);z-index:30;pointer-events:none;border-radius:6px;padding:3px 8px;font-size:.65rem;animation:.15s tooltipFadeIn;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.bottom-nav{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--glass-border);padding:8px 0;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px));z-index:100;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-pill{top:6px;bottom:calc(6px + env(safe-area-inset-bottom,0px));pointer-events:none;padding:0 6px;transition:left .32s cubic-bezier(.16,1,.3,1);position:absolute}.bottom-nav-pill-inner{background:linear-gradient(135deg,#3b82f638,#8b5cf629);border:1px solid #3b82f647;border-radius:14px;width:100%;height:100%;box-shadow:0 2px 10px #3b82f626,inset 0 1px #ffffff14}:root[data-theme=light] .bottom-nav-pill-inner{background:linear-gradient(135deg,#3b82f624,#8b5cf61a);border-color:#3b82f638}.bottom-nav-item{min-width:0;color:var(--text-muted);opacity:.75;z-index:1;background:0 0;border:none;border-radius:14px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-height:56px;padding:6px 8px;font-size:.7rem;transition:color .2s,transform .15s;display:flex;position:relative}.bottom-nav-item span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:100%;transition:color .2s,opacity .2s;overflow:hidden}.bottom-nav-item:active{transform:scale(.94)}.bottom-nav-item.active{color:var(--accent);opacity:1;font-weight:600}.bottom-nav-item.active svg{filter:drop-shadow(0 0 6px #3b82f659);animation:.25s cubic-bezier(.4,0,.2,1) forwards tabActivate}.bottom-nav-item:not(.active) svg{transition:transform .2s}@keyframes tabActivate{0%{transform:scale(1)}55%{transform:scale(1.18)}to{transform:scale(1.08)}}.bottom-nav-icon-wrap{justify-content:center;align-items:center;line-height:0;display:inline-flex;position:relative}.bottom-nav-badge{color:#fff;min-width:18px;height:18px;box-shadow:0 0 0 2px var(--bg-color), 0 2px 10px #ef44448c;pointer-events:none;letter-spacing:0;background:#ef4444;border-radius:9999px;justify-content:center;align-items:center;padding:0 5px;font-size:.65rem;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:-6px;right:-10px}:root[data-theme=light] .bottom-nav-badge{box-shadow:0 0 0 2px var(--bg-color), 0 2px 8px #ef444466}.bottom-nav-badge.pulse{animation:2s ease-in-out infinite badgePulse}.bottom-nav-tooltip{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);color:var(--text-main);white-space:nowrap;pointer-events:none;z-index:200;border-radius:8px;padding:4px 10px;font-size:.75rem;font-weight:600;animation:.15s tooltipFadeIn;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0003}@keyframes tooltipFadeIn{0%{opacity:0;transform:translate(-50%)translateY(4px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.bottom-nav-key-badge{color:var(--accent);background:var(--glass-bg);border:1px solid var(--accent);white-space:nowrap;pointer-events:none;opacity:0;border-radius:4px;padding:0 4px;font-size:.6rem;font-weight:700;line-height:1.4;transition:opacity .15s;position:absolute;bottom:2px;left:50%;transform:translate(-50%)}.bottom-nav-item:focus-visible .bottom-nav-key-badge{opacity:1}@media (hover:hover) and (pointer:fine){.bottom-nav-item:hover:not(.active){color:var(--text-main);opacity:.85;transform:scale(1.06)}}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:8px;width:calc(100% - 32px);max-width:400px;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%)}.toast{-webkit-backdrop-filter:blur(16px);pointer-events:auto;border-radius:14px;align-items:center;gap:10px;padding:12px 16px;font-size:.9rem;font-weight:500;animation:.3s cubic-bezier(.16,1,.3,1) forwards toastIn;display:flex;box-shadow:0 8px 32px #0006,0 2px 8px #0003}.toast-success{color:var(--success);background:#10b98133;border:1px solid #10b98159}.toast-error{color:var(--danger);background:#ef444433;border:1px solid #ef444459}.toast-info{color:var(--accent);background:#3b82f633;border:1px solid #3b82f659}.toast span{flex:1}.toast-close{opacity:.6;background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:2px;display:flex}.toast-close:hover{opacity:1;transform:none}@keyframes toastIn{0%{opacity:0;transform:translateY(-16px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toastProgress{0%{transform-origin:0;transform:scaleX(1)}to{transform-origin:0;transform:scaleX(0)}}@keyframes toastIconBounce{0%{transform:scale(1)}35%{transform:scale(1.4)rotate(-8deg)}65%{transform:scale(.88)rotate(4deg)}to{transform:scale(1)rotate(0)}}.toast>svg:first-child{flex-shrink:0;animation:.4s cubic-bezier(.36,.07,.19,.97) forwards toastIconBounce}@keyframes circleFinishedFlash{0%,to{opacity:1}50%{opacity:.25}}.segment-control{border:1px solid var(--border);background:#ffffff0a;border-radius:12px;gap:2px;padding:3px;display:flex;overflow:hidden}.segment-control button{color:var(--text-muted);background:0 0;border:none;border-radius:9px;flex:1;min-height:36px;padding:8px 12px;font-weight:400;transition:background .18s,color .18s,transform .18s,box-shadow .18s}.segment-control button[data-selected=true]{color:var(--accent);box-shadow:0 0 8px #3b82f659, inset 0 -2px 0 var(--accent);background:#3b82f62e;font-weight:600;transform:scale(1.05)}[data-theme=light] .segment-control button[data-selected=true]{background:#3b82f624}.member-avatar{color:#fff;cursor:default;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.8rem;font-weight:600;transition:transform .2s,box-shadow .2s;display:flex}.member-avatar:hover{transform:scale(1.1);box-shadow:0 0 10px #3b82f680}.member-row{border-radius:10px;align-items:center;gap:10px;padding:8px 12px;transition:background .2s,transform .15s;display:flex}.member-row:active{transform:scale(.98)}.member-row.ready{background:#10b98114}.member-row.ready .member-avatar{animation:1.5s infinite readyBounce}.avatar-ring-ready{box-shadow:0 0 0 2.5px var(--success);animation:1.8s ease-in-out infinite avatarReadyRing}.avatar-ring-waiting{box-shadow:0 0 0 2px #9696aa4d}.timer-ring-wrapper{justify-content:center;align-items:center;margin:.5rem auto;display:flex;position:relative}.timer-ring-warning{filter:drop-shadow(0 0 10px #f59e0b59);transition:filter .6s}.timer-ring-danger{filter:drop-shadow(0 0 12px #ef444473);transition:filter .3s}.timer-ring-text{flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute}.empty-state{color:var(--text-muted);text-align:center;flex-direction:column;align-items:center;gap:12px;padding:3rem 1rem;display:flex}.empty-state svg{opacity:.2;width:48px;height:48px;animation:4s ease-in-out infinite float}.empty-state p:first-of-type{color:var(--text-main);opacity:.7;font-weight:500}.password-wrapper{width:100%;position:relative}.password-toggle{color:var(--text-muted);background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:6px;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.password-toggle:hover{color:var(--text-main);transform:translateY(-50%)}.has-bottom-nav{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 2rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));-webkit-overflow-scrolling:touch;overflow-y:auto}.modal-panel{height:calc(100dvh - 2rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));max-height:720px;overflow:hidden}@media (width<=480px){.modal-panel{height:calc(100dvh - 1rem - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}}.sticky-top{z-index:2;background:var(--glass-bg);-webkit-backdrop-filter:blur(12px);margin:-4px 0 4px;padding-bottom:8px;position:sticky;top:0}.page-enter{animation:.25s cubic-bezier(.16,1,.3,1) forwards pageEnter}@keyframes pageEnter{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:translate(0)}}.skeleton{background:linear-gradient(90deg,#ffffff08 0%,#ffffff0f 20%,#ffffff1f 50%,#ffffff0f 80%,#ffffff08 100%) 0 0/300% 100%;border-radius:8px;animation:2s ease-in-out infinite shimmer}:root[data-theme=light] .skeleton{background:linear-gradient(90deg,#0000000a 0%,#00000012 20%,#0000001f 50%,#00000012 80%,#0000000a 100%) 0 0/300% 100%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.scale-in{transition:transform .15s,box-shadow .2s;animation:.2s cubic-bezier(.16,1,.3,1) forwards scaleIn}.scale-in:active{transform:scale(.98)}.group-card{border-left:3px solid var(--card-border-color,var(--accent));background:#ffffff0a;transition:background .2s,border-color .2s,transform .18s,box-shadow .18s;position:relative;overflow:hidden}.group-card:before{content:"";pointer-events:none;border-radius:inherit;background:linear-gradient(120deg,#0000 30%,#3b82f612 50%,#0000 70%) 200%/250% 100%;transition:background-position .6s;position:absolute;inset:0}@media (hover:hover) and (pointer:fine){.group-card:hover:before{background-position:-50%}}:root[data-theme=light] .group-card{background:#00000008}@media (hover:hover) and (pointer:fine){.group-card:hover{border-left-color:var(--accent);background:#ffffff12;transform:translateY(-2px);box-shadow:0 6px 20px #3b82f61f}:root[data-theme=light] .group-card:hover{border-left-color:var(--accent);background:#0000000f;box-shadow:0 6px 20px #3b82f614}}.group-card:active{transform:translateY(0)scale(.99)}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes celebrate{0%,to{transform:scale(1)}25%{transform:scale(1.1)}50%{transform:scale(.95)}75%{transform:scale(1.05)}}.celebrate{animation:.5s celebrate}.ripple{position:relative;overflow:hidden}.ripple:after{content:"";opacity:0;background:#ffffff26;border-radius:50%;width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ripple:active:after{opacity:1;width:200%;padding-top:200%;transition:width .3s,padding-top .3s,opacity}.ripple:not(:active):after{transition:opacity .4s}:root[data-theme=light] .ripple:after{background:#00000014}@keyframes themeFlash{0%{opacity:.22}to{opacity:0}}.theme-flash-overlay{background:var(--accent);pointer-events:none;z-index:9999;animation:.55s ease-out forwards themeFlash;position:fixed;inset:0}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-100vh)rotate(0)translate(0)scale(1)}25%{opacity:1;transform:translateY(25vh)rotate(180deg)translate(20px)scale(.9)}50%{opacity:.8;transform:translateY(50vh)rotate(360deg)translate(-15px)scale(1.1)}75%{opacity:.4;transform:translateY(75vh)rotate(540deg)translate(10px)scale(.8)}to{opacity:0;transform:translateY(100vh)rotate(720deg)translate(-5px)scale(.6)}}@keyframes confetti-fall-alt{0%{opacity:1;transform:translateY(-100vh)rotate(0)translate(0)scale(.8)}30%{opacity:1;transform:translateY(30vh)rotate(-200deg)translate(-25px)scale(1)}60%{opacity:.6;transform:translateY(60vh)rotate(-400deg)translate(20px)scale(.9)}to{opacity:0;transform:translateY(100vh)rotate(-720deg)translate(-10px)scale(.5)}}@keyframes confetti-fall-wide{0%{opacity:1;transform:translateY(-100vh)rotate(0)translate(0)scale(1)}20%{opacity:1;transform:translateY(20vh)rotate(90deg)translate(40px)scale(1.1)}45%{opacity:.9;transform:translateY(45vh)rotate(270deg)translate(-35px)scale(.9)}70%{opacity:.5;transform:translateY(70vh)rotate(450deg)translate(30px)scale(.8)}to{opacity:0;transform:translateY(100vh)rotate(600deg)translate(-20px)scale(.5)}}@keyframes confetti-fall-slow{0%{opacity:1;transform:translateY(-100vh)rotate(0)translate(0)scale(.9)}35%{opacity:1;transform:translateY(35vh)rotate(150deg)translate(-30px)scale(1.1)}65%{opacity:.7;transform:translateY(65vh)rotate(330deg)translate(25px)scale(.95)}to{opacity:0;transform:translateY(100vh)rotate(540deg)translate(-15px)scale(.6)}}.confetti-container{pointer-events:none;z-index:9999;width:100%;height:100%;position:fixed;top:0;left:0;overflow:hidden}.confetti-piece{border-radius:2px;width:10px;height:10px;animation:3s ease-in forwards confetti-fall;position:absolute;top:-10px}.confetti-piece:nth-child(odd){border-radius:50%;animation-name:confetti-fall-alt}.confetti-piece:nth-child(3n){clip-path:polygon(50% 0%,0% 100%,100% 100%);border-radius:0;animation-name:confetti-fall-wide}.confetti-piece:nth-child(4n){border-radius:2px;width:16px;height:5px;animation-name:confetti-fall-slow}.confetti-piece:first-child{background:#ef4444;animation-duration:2.5s;animation-delay:0s;left:4%}.confetti-piece:nth-child(2){background:#3b82f6;width:8px;height:13px;animation-duration:2.8s;animation-delay:.1s;left:13%}.confetti-piece:nth-child(3){background:#facc15;animation-duration:3s;animation-delay:.2s;left:22%}.confetti-piece:nth-child(4){background:#10b981;animation-duration:2.6s;animation-delay:50ms;left:31%}.confetti-piece:nth-child(5){background:#ec4899;animation-duration:2.9s;animation-delay:.3s;left:40%}.confetti-piece:nth-child(6){background:#f59e0b;width:6px;height:15px;animation-duration:2.7s;animation-delay:.15s;left:49%}.confetti-piece:nth-child(7){background:#8b5cf6;animation-duration:3.1s;animation-delay:.25s;left:58%}.confetti-piece:nth-child(8){background:#06b6d4;animation-duration:2.4s;animation-delay:.1s;left:67%}.confetti-piece:nth-child(9){background:#ef4444;animation-duration:2.8s;animation-delay:.35s;left:76%}.confetti-piece:nth-child(10){background:#3b82f6;width:8px;height:12px;animation-duration:3.2s;animation-delay:.2s;left:85%}.confetti-piece:nth-child(11){background:#facc15;width:8px;height:12px;animation-duration:2.6s;animation-delay:.4s;left:9%}.confetti-piece:nth-child(12){background:#10b981;animation-duration:3s;animation-delay:.15s;left:27%}.confetti-piece:nth-child(13){background:#ec4899;animation-duration:2.5s;animation-delay:.3s;left:46%}.confetti-piece:nth-child(14){background:#8b5cf6;animation-duration:2.9s;animation-delay:50ms;left:63%}.confetti-piece:nth-child(15){background:#f59e0b;animation-duration:3.1s;animation-delay:.45s;left:82%}.confetti-piece:nth-child(16){background:#06b6d4;width:12px;height:7px;animation-duration:2.7s;animation-delay:80ms;left:18%}.confetti-piece:nth-child(17){background:#ef4444;animation-duration:3.3s;animation-delay:.55s;left:37%}.confetti-piece:nth-child(18){background:#facc15;width:7px;height:13px;animation-duration:2.6s;animation-delay:.18s;left:54%}.confetti-piece:nth-child(19){background:#ec4899;animation-duration:2.9s;animation-delay:.38s;left:72%}.confetti-piece:nth-child(20){background:#8b5cf6;animation-duration:3s;animation-delay:.12s;left:91%}html,body{overscroll-behavior:none}.has-bottom-nav{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}body.modal-open{width:100%;height:100%;position:fixed;overflow:hidden}.tap-highlight{-webkit-tap-highlight-color:transparent;transition:background .15s,transform .1s}.tap-highlight:active{background:#3b82f60f;transform:scale(.98)}:root[data-theme=light] .tap-highlight:active{background:#3b82f614}@keyframes timerFinishedPop{0%{transform:scale(1)}40%{transform:scale(1.22)}70%{transform:scale(.96)}to{transform:scale(1)}}.timer-finished-pop{animation:.5s cubic-bezier(.34,1.56,.64,1) forwards timerFinishedPop}@keyframes barRipple{0%{opacity:.6;transform:scale(0)}to{opacity:0;transform:scale(3)}}.bar-ripple{pointer-events:none;background:#ffffff59;border-radius:50%;animation:.5s ease-out forwards barRipple;position:absolute;inset:0}@keyframes spinnerPulse{0%{opacity:.4;transform:scale(1)}to{opacity:0;transform:scale(1.4)}}@keyframes spinnerIconPop{0%{opacity:.6}60%{opacity:.85}80%{opacity:.85;transform:translate(-50%,-50%)scale(1.2)}to{opacity:.6;transform:translate(-50%,-50%)scale(1)}}@keyframes authBtnRipple{0%{opacity:.45;transform:translate(-50%,-50%)scale(0)}to{opacity:0;transform:translate(-50%,-50%)scale(4)}}.auth-btn-ripple{pointer-events:none;background:#ffffff4d;border-radius:50%;width:80px;height:80px;animation:.55s ease-out forwards authBtnRipple;position:absolute;transform:translate(-50%,-50%)scale(0)}:root[data-theme=light] .auth-btn-ripple{background:#0000001a}.accent-swatch-btn{transition:transform .18s,box-shadow .18s}.accent-swatch-btn:hover{transform:scale(1.12)}.accent-swatch-scroll{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding:2px 4px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#0000 0%,#000 10% 90%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0%,#000 10% 90%,#0000 100%)}.accent-swatch-scroll::-webkit-scrollbar{display:none}@media (hover:none) and (pointer:coarse){kbd,.desktop-only-kbd{display:none!important}}@media (width<=480px){.glass-panel{border-radius:18px;padding:18px}.timer-ring-wrapper{margin:.25rem auto}.bottom-nav-item{gap:2px;padding:6px 4px;font-size:.7rem}.empty-state{padding:2rem .5rem}.auth-panel{margin-top:6vh!important}.member-row{padding:6px 10px}.stats-grid{gap:8px!important}}@media (width<=380px){#root{padding:.5rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom,0px))}.glass-panel{border-radius:16px;padding:14px}.bottom-nav-item{gap:1px;padding:6px 2px;font-size:.62rem}.bottom-nav-item svg{width:18px;height:18px}.lobby-header{flex-wrap:wrap}.lobby-header-actions{justify-content:flex-end;width:100%;margin-top:4px}.toast-container{max-width:calc(100% - 16px)}.auth-panel{margin-top:4vh!important}}.has-bottom-nav{overscroll-behavior-y:contain}@media (height<=600px){.auth-panel{margin-top:3vh!important}.empty-state{padding:1.5rem .5rem}}@media (width>=768px){#root{max-width:720px;padding:1.5rem}.glass-panel{border-radius:24px;padding:28px}.bottom-nav{border-radius:20px 20px 0 0;max-width:480px;left:50%;transform:translate(-50%);box-shadow:0 -4px 24px #00000026}button{transition:all .2s cubic-bezier(.4,0,.2,1),box-shadow .2s}button:hover{box-shadow:0 2px 12px #00000026}.member-row:hover{background:#3b82f60a}.toast-container{max-width:420px}}@media (width>=1024px){#root{max-width:860px;padding:2rem}.glass-panel{padding:32px}.bottom-nav{border:1px solid var(--glass-border);max-width:420px;box-shadow:0 8px 32px #0003, 0 0 0 1px var(--glass-border);border-radius:20px;bottom:16px}.bottom-nav-item{border-radius:12px;padding:8px 20px;font-size:.75rem}.bottom-nav-item:hover:not(.active){color:var(--text-main);opacity:1}.has-bottom-nav{padding-bottom:100px}.stats-grid{gap:12px;grid-template-columns:repeat(3,1fr)!important}.groups-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.member-row{padding:10px 16px}.toast-container{max-width:460px}}.settings-section{background:#0003;border-radius:14px;flex-direction:column;gap:10px;padding:14px;display:flex}.settings-section--danger{border:1px solid #ef444426}.settings-section-title{color:var(--text-muted);align-items:center;gap:8px;margin:0;font-size:.9rem;display:flex}:root[data-accent=purple]{--accent:#8b5cf6;--accent-hover:#7c3aed}:root[data-accent=green]{--accent:#10b981;--accent-hover:#059669}:root[data-accent=pink]{--accent:#ec4899;--accent-hover:#db2777}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:6px;transition:color .15s,background .15s;display:inline-flex}.modal-close:hover{color:var(--text-main);background:#ffffff0f}:root[data-theme=light] .modal-close:hover{background:#0000000f}:root[data-theme=light] .toast{box-shadow:0 4px 16px #0000001a,0 1px 4px #0000000f}:root[data-theme=light] .toast-success{background:#10b9812e;border-color:#10b98199}:root[data-theme=light] .toast-error{background:#ef444424;border-color:#ef444499}:root[data-theme=light] .toast-info{background:#3b82f624;border-color:#3b82f699}@media (width>=1280px){#root{max-width:960px}.bottom-nav{max-width:460px}}.ios-install-banner{bottom:calc(72px + env(safe-area-inset-bottom,0px));z-index:9000;background:var(--glass-bg);-webkit-backdrop-filter:blur(16px)saturate(1.5);border:1px solid var(--glass-border);border-radius:16px;align-items:center;gap:10px;padding:12px 14px;display:flex;position:fixed;left:12px;right:12px;box-shadow:0 4px 24px #00000040}.ios-install-banner__icon{flex-shrink:0;font-size:1.5rem}.ios-install-banner__text{color:var(--text-main);flex:1;font-size:.8rem;line-height:1.4}.ios-install-banner__action{background:linear-gradient(135deg, var(--accent), #8b5cf6);color:#fff;cursor:pointer;border:none;border-radius:999px;flex-shrink:0;min-height:auto;padding:6px 14px;font-size:.8rem;font-weight:700;transition:transform .15s,box-shadow .15s;box-shadow:0 2px 8px #3b82f659}.ios-install-banner__action:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f673}.ios-install-banner__action:active{transform:translateY(0)}.ios-install-banner__close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;min-width:auto;min-height:auto;padding:4px;font-size:1rem;line-height:1;transition:color .15s,background .15s}.ios-install-banner__close:hover{color:var(--text-main);background:#ffffff0f}:root[data-theme=light] .ios-install-banner__close:hover{background:#0000000f}@media (hover:hover) and (pointer:fine){.scale-in:hover{transform:translateY(-1px);box-shadow:0 4px 16px #0000001f}.fade-in[style*=background]:hover{filter:brightness(1.05)}.member-row:hover{cursor:default;background:#3b82f60f}}.flashcard-face{backface-visibility:hidden;box-sizing:border-box;border-radius:20px;justify-content:center;align-items:center;padding:2rem;display:flex;position:absolute;inset:0;overflow:hidden}.flashcard-face-back{transform:rotateY(180deg)}.record-action-btns{align-items:center;gap:2px;display:flex}@media (hover:none){.record-action-btns{opacity:.6}}@media (hover:hover) and (pointer:fine){.record-action-btns{opacity:0;transition:opacity .18s}.record-row:hover .record-action-btns{opacity:1}.record-delete-btn{transition:background .2s,transform .22s,opacity .18s;transform:translate(6px)}.record-row:hover .record-delete-btn{transform:translate(0)}}mark.memo-highlight{color:inherit;background:#6366f147;border-radius:2px;padding:0 1px}[data-theme=light] mark.memo-highlight{background:#6366f133}@keyframes searchPulseRing{0%{box-shadow:0 0 0 0 var(--accent);opacity:.7}to{opacity:0;box-shadow:0 0 0 8px #0000}}.search-pulse-active{animation:.5s ease-out searchPulseRing}.group-create-btn{position:relative;overflow:hidden}.group-create-btn:after{content:"";background:linear-gradient(110deg,#0000 30%,#ffffff1a 50%,#0000 70%);transition:none;position:absolute;inset:0;transform:translate(-100%)}@media (hover:hover){.group-create-btn:hover:after{transition:transform .55s;transform:translate(100%)}.word-list-row:hover{transform:translate(4px);transition:transform .18s!important}}.record-deleting{pointer-events:none;animation:.38s forwards slideOutRight;overflow:hidden}@keyframes recordEnter{0%{opacity:.6;transform:translateY(-6px)scale(.97);box-shadow:0 0 0 2px #10b98166}40%{box-shadow:0 0 0 2px #10b98140}to{box-shadow:none;opacity:1;transform:none}}.record-new{animation:.5s cubic-bezier(.22,1,.36,1) forwards recordEnter}.week-header{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);opacity:.75;align-items:center;gap:5px;padding:10px 4px 3px;font-size:.7rem;font-weight:700;display:flex}@keyframes wordNew{0%{background:#3b82f614;box-shadow:0 0 0 3px #3b82f68c}60%{background:#3b82f608;box-shadow:0 0 0 3px #3b82f633}to{box-shadow:none;background:0 0}}.word-new-glow{border-radius:12px;animation:1.5s forwards wordNew}@keyframes validateCheck{0%{transform:scale(1)}40%{transform:scale(1.1)}70%{transform:scale(.95)}to{transform:scale(1)}}@keyframes wordMastered{0%{box-shadow:0 0 0 3px #10b98180}60%{box-shadow:0 0 0 3px #10b98133}to{box-shadow:none}}.word-mastered-glow{border-radius:12px;animation:.6s forwards wordMastered}@keyframes badgePulseGreen{0%{transform:scale(1);box-shadow:0 0 #10b9818c}40%{transform:scale(1.04);box-shadow:0 0 0 6px #10b98133}to{transform:scale(1);box-shadow:0 0 #10b98100}}.badge-pulse-green{animation:.55s forwards badgePulseGreen}@keyframes allReadyPulse{0%{transform:scale(1);box-shadow:0 0 #10b98180}30%{transform:scale(1.03);box-shadow:0 0 0 10px #10b9812e}60%{transform:scale(1.01);box-shadow:0 0 0 16px #10b98100}to{transform:scale(1);box-shadow:0 0 #10b98100}}.all-ready-pulse{animation:.7s forwards allReadyPulse}@keyframes iconSpinOnce{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.15)}to{transform:rotate(360deg)scale(1)}}.icon-spin-once{animation:.4s cubic-bezier(.36,.07,.19,.97) iconSpinOnce;display:inline-flex}@keyframes navIconBounce{0%{transform:scale(1)}35%{transform:scale(1.25)}65%{transform:scale(.88)}to{transform:scale(1)}}.nav-icon-bounce{animation:.35s cubic-bezier(.36,.07,.19,.97) navIconBounce,.2s navIconPop}@keyframes navIconPop{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes errorSettle{0%{transform:scale(1)}40%{transform:scale(1.08)}70%{transform:scale(.96)}to{transform:scale(1)}}@keyframes iconPulse{0%,to{opacity:.15}50%{opacity:.3}}@media (hover:hover){.scale-in:hover .stat-icon-bg{animation:1.5s ease-in-out infinite iconPulse}}input:invalid{box-shadow:0 0 0 2px #ef444440}input:focus:invalid{border-color:var(--danger);box-shadow:0 0 0 3px #ef44444d}.details-chevron{transition:transform .22s;display:inline-block}details[open] .details-chevron{transform:rotate(180deg)}@keyframes arrowUp{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes arrowDown{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.settings-theme-btn{transition:transform .18s,box-shadow .18s}.settings-theme-btn:hover{transform:scale(1.05);box-shadow:0 4px 14px #3b82f638}:root[data-theme=light] .settings-theme-btn:hover{box-shadow:0 4px 14px #3b82f62e}.theme-preview-card{cursor:pointer;transition:transform .18s,box-shadow .18s,outline .2s}.theme-preview-card:hover{transform:scale(1.03);box-shadow:0 4px 16px #00000040}.chart-bar-col:hover .chart-bar{filter:brightness(1.35)}.settings-font-btn{transition:transform .18s,box-shadow .18s}.settings-font-btn[data-selected=false]{box-shadow:inset 0 -2px #0000}.settings-font-btn[data-selected=true]{box-shadow:inset 0 -2px 0 var(--accent)}.settings-font-btn:hover{transform:scale(1.05);box-shadow:0 4px 14px #3b82f638}:root[data-theme=light] .settings-font-btn:hover{box-shadow:0 4px 14px #3b82f62e}.group-join-btn{transition:transform .15s,box-shadow .15s}.group-join-btn:not(:disabled):active{transform:scale(.95);box-shadow:0 1px 4px #00000040}@keyframes pauseIconBlink{0%,to{opacity:1}50%{opacity:.6}}.pause-resume-btn--paused{animation:2s ease-in-out infinite pauseIconBlink}.page-input{transition:border-color .2s,box-shadow .2s}.page-input:focus{outline:none;box-shadow:0 0 0 2px #3b82f640;border-color:var(--accent)!important}:root[data-theme=light] .page-input:focus{box-shadow:0 0 0 2px #3b82f62e}.chart-bar{transition:filter .15s,transform .15s}.chart-bar-col:hover .chart-bar{transform:translateY(-2px)}@keyframes sectionUnderlineGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.settings-section-title{padding-bottom:4px;position:relative}.settings-section-title:after{content:"";background:linear-gradient(90deg, var(--accent), transparent);transform-origin:0;opacity:.45;width:100%;height:1px;animation:.45s forwards sectionUnderlineGrow;position:absolute;bottom:0;left:0;transform:scaleX(0)}.qr-save-btn:not(:disabled):hover{transform:scale(1.04);box-shadow:0 0 14px #3b82f673}.qr-save-btn{transition:transform .18s,box-shadow .18s}.settings-section-title:hover .settings-icon-badge,summary.settings-section-title:hover .settings-icon-badge{transform:rotate(15deg)scale(1.1)}.settings-icon-badge{transition:transform .22s}.lobby-tab-bar{border-bottom:1px solid var(--border-color);gap:0;display:flex}.lobby-tab-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:0;flex:1;justify-content:center;align-items:center;gap:6px;min-height:auto;padding:8px 12px;font-size:.85rem;font-weight:500;transition:color .2s;display:flex;position:relative}.lobby-tab-btn:after{content:"";background:var(--accent);border-radius:2px 2px 0 0;width:0;height:2px;transition:width .28s cubic-bezier(.4,0,.2,1);position:absolute;bottom:-1px;left:50%;transform:translate(-50%)}.lobby-tab-btn[data-active=true]{color:var(--accent)}.lobby-tab-btn[data-active=true]:after{width:80%}.group-card-chevron{transition:transform .2s,opacity .2s}.group-card:hover .group-card-chevron{opacity:.7;transform:translate(3px)}@keyframes soundFlash{0%{background:#3b82f659}to{background:0 0}}.sound-flash-active{animation:.32s ease-out forwards soundFlash}@keyframes startBtnIdlePulse{0%,to{box-shadow:0 0 #3b82f600}50%{box-shadow:0 0 0 7px #3b82f638}}.start-btn-idle-pulse{animation:2s ease-in-out infinite startBtnIdlePulse}.heatmap-day-cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}@keyframes emptyBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.empty-state-bounce-icon{animation:2s ease-in-out infinite emptyBounce}@keyframes correctPop{0%{transform:scale(1)}50%{transform:scale(1.1);box-shadow:0 0 12px #10b98180}to{transform:scale(1)}}@keyframes incorrectShake{0%{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}to{transform:translate(0)}}@keyframes spinReverse{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}
