*{margin:0;padding:0;box-sizing:border-box}*:focus-visible{outline:3px solid var(--accent);outline-offset:2px;box-shadow:var(--shadow-pop)}:root{--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--radius-xl: 24px;--radius-full: 9999px;--border-width: 2px;--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--transition-bounce: .3s cubic-bezier(.34, 1.56, .64, 1);--transition-fast: .15s cubic-bezier(.34, 1.56, .64, 1);--transition-base: .2s cubic-bezier(.34, 1.56, .64, 1);--transition-slow: .3s cubic-bezier(.34, 1.56, .64, 1)}:root[data-theme=light]{--bg: #fffdf5;--fg: #1e293b;--muted: #f1f5f9;--muted-fg: #64748b;--accent: #8b5cf6;--accent-fg: #ffffff;--secondary: #f472b6;--tertiary: #fbbf24;--quaternary: #34d399;--border: #e2e8f0;--card: #ffffff;--ring: #8b5cf6;--body-bg: #fffdf5;--surface-bg: #fffdf5;--surface-secondary: #ffffff;--surface-tertiary: #f1f5f9;--text-primary: #1e293b;--text-secondary: #64748b;--text-tertiary: #94a3b8;--text-inverse: #ffffff;--primary: #8b5cf6;--primary-hover: #7c3aed;--primary-light: #ede9fe;--primary-dark: #6d28d9;--accent-hover: #7c3aed;--accent-light: #ede9fe;--border-color: #e2e8f0;--border-hover: #8b5cf6;--divider: #e2e8f0;--success: #34d399;--success-bg: #d1fae5;--success-text: #065f46;--success-border: #34d399;--warning: #fbbf24;--warning-bg: #fef3c7;--warning-text: #92400e;--warning-border: #fbbf24;--error: #f472b6;--error-bg: #fce7f3;--error-text: #9d174d;--error-border: #f472b6;--info: #8b5cf6;--info-bg: #ede9fe;--info-text: #5b21b6;--info-border: #8b5cf6;--card-bg: #ffffff;--hover-bg: #f1f5f9;--active-bg: #ede9fe;--disabled-bg: #f1f5f9;--disabled-text: #94a3b8;--button-default-bg: #ffffff;--button-default-hover: #f1f5f9;--button-default-active: #e2e8f0;--button-default-border: #e2e8f0;--button-default-text: #1e293b;--button-primary-bg: #8b5cf6;--button-primary-hover: #7c3aed;--button-primary-active: #6d28d9;--button-primary-text: #ffffff;--button-danger-bg: #f472b6;--button-danger-hover: #ec4899;--button-danger-active: #db2777;--button-danger-text: #ffffff;--shadow-sm: 2px 2px 0px 0px #e2e8f0;--shadow-md: 4px 4px 0px 0px #e2e8f0;--shadow-lg: 6px 6px 0px 0px #e2e8f0;--shadow-xl: 8px 8px 0px 0px #e2e8f0;--shadow-2xl: 10px 10px 0px 0px #e2e8f0;--shadow-pop: 4px 4px 0px 0px #1e293b;--shadow-pop-hover: 6px 6px 0px 0px #1e293b;--shadow-pop-active: 2px 2px 0px 0px #1e293b;--shadow-card: 8px 8px 0px 0px #e2e8f0;--shadow-colored: 0 0 0 4px rgba(139, 92, 246, .2)}:root[data-theme=dark]{--bg: #1a1625;--fg: #f1f5f9;--muted: #2d2640;--muted-fg: #94a3b8;--accent: #a78bfa;--accent-fg: #1a1625;--secondary: #f472b6;--tertiary: #fbbf24;--quaternary: #34d399;--border: #3d3555;--card: #231e30;--ring: #a78bfa;--body-bg: #1a1625;--surface-bg: #1a1625;--surface-secondary: #231e30;--surface-tertiary: #2d2640;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-tertiary: #64748b;--text-inverse: #1a1625;--primary: #a78bfa;--primary-hover: #c4b5fd;--primary-light: #2d2640;--primary-dark: #8b5cf6;--accent-hover: #c4b5fd;--accent-light: #2d2640;--border-color: #3d3555;--border-hover: #a78bfa;--divider: #3d3555;--success: #34d399;--success-bg: #0a5e48;--success-text: #d1fae5;--success-border: #34d399;--warning: #fbbf24;--warning-bg: #451a03;--warning-text: #fde68a;--warning-border: #fbbf24;--error: #f472b6;--error-bg: #500724;--error-text: #fbcfe8;--error-border: #f472b6;--info: #a78bfa;--info-bg: #2d2640;--info-text: #c4b5fd;--info-border: #a78bfa;--card-bg: #231e30;--hover-bg: #2d2640;--active-bg: #3d3555;--disabled-bg: #2d2640;--disabled-text: #64748b;--button-default-bg: #231e30;--button-default-hover: #2d2640;--button-default-active: #3d3555;--button-default-border: #3d3555;--button-default-text: #f1f5f9;--button-primary-bg: #a78bfa;--button-primary-hover: #c4b5fd;--button-primary-active: #8b5cf6;--button-primary-text: #1a1625;--button-danger-bg: #f472b6;--button-danger-hover: #ec4899;--button-danger-active: #db2777;--button-danger-text: #ffffff;--shadow-sm: 2px 2px 0px 0px #3d3555;--shadow-md: 4px 4px 0px 0px #3d3555;--shadow-lg: 6px 6px 0px 0px #3d3555;--shadow-xl: 8px 8px 0px 0px #3d3555;--shadow-2xl: 10px 10px 0px 0px #3d3555;--shadow-pop: 4px 4px 0px 0px #a78bfa;--shadow-pop-hover: 6px 6px 0px 0px #a78bfa;--shadow-pop-active: 2px 2px 0px 0px #a78bfa;--shadow-card: 8px 8px 0px 0px #3d3555;--shadow-colored: 0 0 0 4px rgba(167, 139, 250, .2)}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle}body{font-family:Plus Jakarta Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--body-bg);color:var(--text-primary);transition:background-color var(--transition-slow),color var(--transition-slow);overflow-x:hidden;max-width:100vw}h1,h2,h3,h4,h5,h6{font-family:Outfit,system-ui,sans-serif;font-weight:700}h1{font-weight:800}h2,h3{font-weight:700}code{font-family:JetBrains Mono,Fira Code,source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh;overflow-x:hidden;max-width:100vw}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.card{background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:2px solid var(--border-color)}.btn-primary{background:var(--button-primary-bg);color:var(--button-primary-text);border:2px solid var(--fg);border-radius:var(--radius-full);transition:all var(--transition-bounce);font-weight:700;box-shadow:var(--shadow-pop)}.btn-primary:hover:not(:disabled){background:var(--button-primary-hover);box-shadow:var(--shadow-pop-hover);transform:translateY(-2px)}.btn-primary:active:not(:disabled){background:var(--button-primary-active);box-shadow:var(--shadow-pop-active);transform:translateY(0)}.btn-secondary{background:transparent;color:var(--fg);border:2px solid var(--fg);border-radius:var(--radius-full);transition:all var(--transition-bounce);font-weight:700;box-shadow:var(--shadow-pop)}.btn-secondary:hover:not(:disabled){background:var(--tertiary);border-color:var(--fg);box-shadow:var(--shadow-pop-hover);transform:translateY(-2px)}.btn-secondary:active:not(:disabled){background:var(--tertiary);box-shadow:var(--shadow-pop-active);transform:translateY(0)}input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:20px;height:20px;border:2px solid var(--border-color);border-radius:5px;background-color:transparent;cursor:pointer;position:relative;transition:all var(--transition-base);flex-shrink:0}input[type=checkbox]:hover{border-color:var(--accent);background-color:var(--accent-light)}input[type=checkbox]:focus{outline:none;box-shadow:var(--shadow-colored)}input[type=checkbox]:checked{background-color:var(--accent);border-color:var(--accent);animation:checkboxBounce .3s var(--ease-bounce)}input[type=checkbox]:checked:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(45deg) scale(0);width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;animation:checkmarkSlide .3s var(--ease-bounce) forwards;animation-delay:.1s}input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed;background-color:var(--disabled-bg);border-color:var(--border-color)}input[type=checkbox]:disabled:hover{border-color:var(--border-color);background-color:var(--disabled-bg)}@keyframes checkboxBounce{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes checkmarkSlide{0%{transform:translate(-50%,-50%) rotate(45deg) scale(0)}50%{transform:translate(-50%,-50%) rotate(45deg) scale(1.2)}to{transform:translate(-50%,-50%) rotate(45deg) scale(1)}}input[type=radio]{appearance:none;-webkit-appearance:none;-moz-appearance:none;width:20px;height:20px;border:2px solid var(--border-color);border-radius:50%;background-color:transparent;cursor:pointer;position:relative;transition:all var(--transition-base);flex-shrink:0}input[type=radio]:hover{border-color:var(--accent);background-color:var(--accent-light)}input[type=radio]:focus{outline:none;box-shadow:var(--shadow-colored)}input[type=radio]:checked{background-color:var(--accent);border-color:var(--accent);animation:radioBounce .3s var(--ease-bounce)}input[type=radio]:checked:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:8px;height:8px;border-radius:50%;background-color:#fff;animation:radioDotSlide .3s var(--ease-bounce) forwards;animation-delay:.1s}input[type=radio]:disabled{opacity:.5;cursor:not-allowed;background-color:var(--disabled-bg);border-color:var(--border-color)}input[type=radio]:disabled:hover{border-color:var(--border-color);background-color:var(--disabled-bg)}@keyframes radioBounce{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes radioDotSlide{0%{transform:translate(-50%,-50%) scale(0)}50%{transform:translate(-50%,-50%) scale(1.3)}to{transform:translate(-50%,-50%) scale(1)}}.bg-dots{background-image:radial-gradient(circle,var(--border-color) 1px,transparent 1px);background-size:24px 24px}.squiggle-divider{height:8px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10'%3E%3Cpath d='M0 5 Q 12.5 0, 25 5 T 50 5 T 75 5 T 100 5' fill='none' stroke='%23E2E8F0' stroke-width='2'/%3E%3C/svg%3E");background-size:100px 10px;background-repeat:repeat-x}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.app-logo{display:inline-block;vertical-align:middle;-webkit-user-select:none;user-select:none;object-fit:contain}.app-logo-xs{max-height:20px}.app-logo-sm{max-height:32px}.app-logo-md{max-height:48px}.app-logo-lg{max-height:64px}.app-logo-xl{max-height:96px}.top-bar{position:fixed;top:0;left:0;right:0;height:60px;background:var(--bg);border-bottom:2px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;padding:0 20px;z-index:1000;box-shadow:0 2px 0 0 var(--border-color)}.top-bar-left{display:flex;align-items:center}.logo-button{display:flex;align-items:center;gap:12px;background:transparent;border:none;padding:0;cursor:pointer;transition:opacity .2s}.logo-button:hover{opacity:.8}.app-title{font-size:1.5rem;font-weight:800;margin:0;color:var(--accent);font-family:Outfit,system-ui,sans-serif;-webkit-user-select:none;user-select:none}.game-info-topbar{display:flex;align-items:center;gap:16px;margin-left:24px;padding-left:24px;border-left:2px solid var(--border-color)}.game-info-item-topbar{display:flex;flex-direction:column;gap:2px}.game-info-label-topbar{font-size:.75rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.game-info-value-topbar{font-size:.95rem;color:var(--accent);font-weight:700;font-family:Courier New,monospace}.game-info-value-topbar.clickable-game-id{cursor:pointer;transition:all var(--transition-bounce);padding:2px 8px;border-radius:var(--radius-sm);background:var(--muted);border:2px solid var(--border-color)}.game-info-value-topbar.clickable-game-id:hover{color:var(--accent);transform:scale(1.05);background:var(--accent-light);box-shadow:var(--shadow-pop)}.top-bar-right{display:flex;align-items:center;gap:12px;color:var(--text-primary)}.theme-selector{display:flex;gap:4px;background:var(--card-bg);padding:4px;border-radius:var(--radius-full);border:2px solid var(--border-color)}.theme-btn{background:transparent;border:none;padding:6px 12px;border-radius:var(--radius-full);font-size:1.2rem;cursor:pointer;transition:all var(--transition-bounce);opacity:.6;color:var(--text-primary)}.theme-btn:hover{opacity:1;background:var(--hover-bg)}.theme-btn.active{opacity:1;background:var(--accent);color:#fff;box-shadow:var(--shadow-pop)}.icon-btn{background:var(--card-bg);border:2px solid var(--accent);padding:8px;border-radius:50%;font-size:1.2rem;cursor:pointer;transition:all var(--transition-bounce);color:var(--accent);box-shadow:var(--shadow-pop);display:flex;align-items:center;justify-content:center}.icon-btn:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:var(--shadow-pop-hover)}.user-menu-container{position:relative}.user-avatar-wrapper{position:relative;display:inline-flex;align-items:center;gap:8px}.user-avatar{width:40px;height:40px;border-radius:var(--radius-full);border:3px solid var(--accent);cursor:pointer;background:var(--card-bg);overflow:hidden;transition:all var(--transition-bounce);padding:0}.user-avatar:hover{transform:scale(1.1);box-shadow:var(--shadow-pop)}.user-avatar img{width:100%;height:100%;object-fit:cover}.avatar-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:700;background:var(--accent);color:#fff}.wins-badge{display:flex;align-items:center;gap:4px;background:var(--tertiary);color:var(--fg);padding:4px 10px;border-radius:var(--radius-full);font-size:.85rem;font-weight:700;box-shadow:var(--shadow-pop);white-space:nowrap;border:2px solid var(--fg);transition:all var(--transition-bounce)}.wins-badge:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop-hover)}.user-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:200px;background:var(--card-bg);border:2px solid var(--border-color);border-radius:var(--radius-lg);padding:15px 0;box-shadow:var(--shadow-card);overflow:hidden;animation:dropdownSlideIn .3s var(--ease-bounce);display:flex;flex-direction:column;gap:10px}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-10px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.user-info{padding:0 10px}.user-name{font-weight:700;color:var(--text-primary)}.user-dropdown hr{margin:0;border:none;border-top:2px solid var(--border-color)}.dropdown-item{width:100%;padding:4px 7px;margin:0 10px;width:calc(100% - 20px);background:transparent;border:none;text-align:left;cursor:pointer;font-size:.95rem;color:var(--text-secondary);font-weight:600;transition:all var(--transition-bounce);display:flex;align-items:center;gap:10px;border-radius:var(--radius-sm)}.dropdown-item svg{width:19px;height:19px;transition:all .3s ease-out}.dropdown-item:hover{background-color:var(--accent);color:#fff;transform:translate(2px)}.dropdown-item:active{transform:scale(.98)}.logout-btn{color:var(--secondary)}.logout-btn svg{stroke:var(--secondary)}.logout-btn:hover{background-color:var(--secondary);color:#fff}.overlay{position:fixed;inset:0;background:#00000080;z-index:999;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.preferences-panel{position:fixed;top:60px;right:20px;width:360px;max-height:calc(100vh - 100px);background:var(--card-bg);border:2px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);z-index:1001;overflow:hidden;animation:slideIn .3s var(--ease-bounce)}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.preferences-header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:2px solid var(--border-color);background:var(--muted)}.preferences-header h2{margin:0;font-size:1.25rem;color:var(--text-primary);font-family:Outfit,system-ui,sans-serif}.close-btn{background:transparent;border:none;font-size:1.5rem;cursor:pointer;color:var(--text-tertiary);padding:4px 8px;border-radius:var(--radius-sm);transition:all var(--transition-bounce);line-height:1}.close-btn:hover{background:var(--hover-bg);color:var(--text-primary)}.preferences-content{padding:20px;max-height:calc(100vh - 200px);overflow-y:auto}.preference-group{margin-bottom:16px}.preference-group:last-child{margin-bottom:0}.preference-group h3{margin:0 0 12px;font-size:1rem;font-weight:700;color:var(--text-primary);font-family:Outfit,system-ui,sans-serif}.preference-item{margin-bottom:4px}.preference-item:last-child{margin-bottom:0}.preference-item label{display:flex;align-items:center;cursor:pointer;padding:4px;border-radius:var(--radius-md);transition:background var(--transition-base)}.preference-item label:hover{background:var(--hover-bg)}.preference-item input[type=checkbox],.preference-item input[type=radio]{margin-right:10px;cursor:pointer;width:18px;height:18px}.preference-item span{color:var(--text-primary);font-size:.95rem}.preference-item select{margin-left:auto;padding:4px 8px;border:2px solid var(--border-color);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text-primary);font-size:.9rem;cursor:pointer;outline:none}.preference-item select:focus{border-color:var(--accent)}@media(max-width:768px){.top-bar{padding:0 12px;height:56px}.top-bar-left{flex:1;min-width:0;overflow:hidden}.top-bar-right{gap:8px;flex-shrink:0}.logo-button{gap:8px;min-width:0}.app-title{font-size:1.1rem}.theme-selector{display:none}.icon-btn{padding:6px;font-size:1.1rem}.user-avatar{width:36px;height:36px}.wins-badge{font-size:.75rem;padding:3px 8px}.preferences-panel{right:0;left:0;width:auto;margin:0 12px;top:56px}.game-info-topbar{display:none}}@media(max-width:480px){.top-bar{padding:0 8px;height:52px}.top-bar-left{gap:0}.top-bar-right,.logo-button{gap:6px}.topbar-logo{width:28px;height:28px}.app-title{font-size:1rem}.icon-btn{padding:5px;font-size:1rem}.user-avatar{width:32px;height:32px}.user-avatar-wrapper{gap:6px;position:relative}.wins-badge{position:static;font-size:.65rem;padding:2px 5px;min-width:20px;text-align:center;gap:2px}.game-info-topbar{margin-left:8px;padding-left:8px;gap:6px}.game-info-label-topbar{font-size:.6rem}.game-info-value-topbar{font-size:.8rem}.game-info-value-topbar.clickable-game-id{padding:1px 3px}.preferences-panel{margin:0 8px;top:52px;max-height:calc(100vh - 80px)}.user-dropdown{min-width:200px}}@media(max-width:360px){.top-bar{padding:0 6px}.app-title{display:none}.logo-button{gap:0}.game-info-topbar{margin-left:6px;padding-left:6px;gap:4px}.game-info-item-topbar:last-child{display:none}.icon-btn{padding:5px}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);background-image:radial-gradient(circle,var(--border-color) 1px,transparent 1px);background-size:24px 24px;padding:20px}.login-card{background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:2px solid var(--border-color);max-width:500px;width:100%;overflow:hidden}.login-header{background:var(--accent);color:#fff;padding:40px 30px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:15px}.login-header h1{margin:0;font-size:3rem;font-weight:800;font-family:Outfit,system-ui,sans-serif}.login-subtitle{margin:0;font-size:1.1rem;opacity:.95}.login-content{padding:40px 30px}.login-description{text-align:center;color:var(--text-secondary);margin:0 0 30px;font-size:1rem;line-height:1.6}.google-signin-button{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 24px;background:var(--card-bg);border:2px solid var(--border-color);border-radius:var(--radius-full);font-size:1rem;font-weight:700;color:var(--text-primary);cursor:pointer;transition:all var(--transition-bounce);box-shadow:var(--shadow-pop)}.google-signin-button:hover:not(:disabled){background:var(--tertiary);border-color:var(--fg);box-shadow:var(--shadow-pop-hover);transform:translateY(-2px)}.google-signin-button:active:not(:disabled){box-shadow:var(--shadow-pop-active);transform:translateY(0)}.google-signin-button:disabled{opacity:.6;cursor:not-allowed}.google-logo{width:20px;height:20px}.loading-spinner{font-size:1.2rem;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.guest-button{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 24px;background:var(--accent);border:2px solid var(--fg);border-radius:var(--radius-full);font-size:1rem;font-weight:700;color:#fff;cursor:pointer;transition:all var(--transition-bounce);box-shadow:var(--shadow-pop);margin-bottom:20px}.guest-button:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-2px);box-shadow:var(--shadow-pop-hover)}.guest-button:active:not(:disabled){box-shadow:var(--shadow-pop-active);transform:translateY(0)}.guest-button:disabled{opacity:.6;cursor:not-allowed}.divider{display:flex;align-items:center;text-align:center;margin:20px 0;color:var(--text-tertiary);font-size:.9rem}.divider:before,.divider:after{content:"";flex:1;border-bottom:2px solid var(--border-color)}.divider span{padding:0 15px}.email-form{display:flex;flex-direction:column;gap:12px;margin-top:20px}.email-form input{width:100%;padding:12px 16px;border:2px solid var(--border-color);border-radius:var(--radius-md);font-size:1rem;background:var(--card-bg);color:var(--text-primary);transition:all var(--transition-bounce)}.email-form input:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-pop)}.email-form input:disabled{background:var(--disabled-bg);cursor:not-allowed}.email-button{width:100%;padding:14px 24px;background:var(--accent);border:2px solid var(--fg);border-radius:var(--radius-full);font-size:1rem;font-weight:700;color:#fff;cursor:pointer;transition:all var(--transition-bounce);margin-top:8px;box-shadow:var(--shadow-pop)}.email-button:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-2px);box-shadow:var(--shadow-pop-hover)}.email-button:active:not(:disabled){box-shadow:var(--shadow-pop-active);transform:translateY(0)}.email-button:disabled{opacity:.6;cursor:not-allowed}.auth-links{display:flex;justify-content:space-between;margin-top:12px;gap:10px}.link-button{background:none;border:none;color:var(--accent);font-size:.9rem;cursor:pointer;padding:4px 8px;text-decoration:underline;transition:color var(--transition-base);font-weight:600}.link-button:hover{color:var(--primary-hover)}.error-message{margin-top:20px;padding:12px 16px;background:var(--error-bg);border:2px solid var(--error-border);border-radius:var(--radius-md);color:var(--error-text);display:flex;align-items:center;gap:10px;font-size:.95rem;box-shadow:var(--shadow-md)}.error-icon{font-size:1.2rem}.success-message{margin-top:20px;padding:12px 16px;background:var(--success-bg);border:2px solid var(--success-border);border-radius:var(--radius-md);color:var(--success-text);display:flex;align-items:center;gap:10px;font-size:.95rem;box-shadow:var(--shadow-md)}.success-icon{font-size:1.2rem}.login-features{margin-top:40px;padding-top:30px;border-top:2px solid var(--border-color)}.login-features h3{margin:0 0 20px;color:var(--text-primary);font-size:1.1rem;text-align:center;font-family:Outfit,system-ui,sans-serif}.login-features ul{list-style:none;padding:0;margin:0}.login-features li{display:flex;align-items:center;gap:12px;padding:10px 0;color:var(--text-secondary);font-size:.95rem;line-height:1.5}.feature-icon{font-size:1.5rem;flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--accent-light);border-radius:50%;border:2px solid var(--border-color)}.login-footer{background:var(--muted);padding:20px 30px;text-align:center;border-top:2px solid var(--border-color)}.privacy-note{margin:0;color:var(--text-tertiary);font-size:.85rem;line-height:1.5}@media(max-width:600px){.login-header h1{font-size:2.5rem}.login-content{padding:30px 20px}.login-features{margin-top:30px;padding-top:20px}}.app-footer{padding:1rem;padding-bottom:70px;text-align:center;background-color:var(--bg, #FFFDF5);border-top:2px solid var(--border-color, #E2E8F0);margin-top:auto}.app-footer p{margin:0;font-size:.875rem;color:var(--text-secondary, #64748B)}.footer-link{color:var(--accent, #8B5CF6);text-decoration:none;font-weight:600;transition:color .2s ease}.footer-link:hover{color:var(--primary-hover, #7C3AED);text-decoration:underline}.offline-banner{position:sticky;top:0;z-index:999;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;font-weight:700;font-size:.95rem;text-align:center;animation:offlineBannerSlideDown .3s ease-out}.offline-banner--warning{background:var(--warning-bg);color:var(--warning-text);border-bottom:2px solid var(--warning-border)}.offline-banner--success{background:var(--success-bg);color:var(--success-text);border-bottom:2px solid var(--success-border)}.offline-banner__icon{font-size:1.25rem}.offline-banner__text{line-height:1.3}@keyframes offlineBannerSlideDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@media(max-width:480px){.offline-banner{font-size:.85rem;padding:8px 12px}}*{box-sizing:border-box}body{margin:0;font-family:Plus Jakarta Sans,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--body-bg);color:var(--text-primary);transition:background-color var(--transition-slow),color var(--transition-slow)}.app-content{padding-top:68px;min-height:100vh;display:flex;flex-direction:column}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 68px);background:var(--accent, #8B5CF6);color:var(--accent-fg, #FFFFFF)}.spinner{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-top-color:var(--accent-fg, #FFFFFF);border-radius:var(--radius-full);animation:spinBounce 1s var(--ease-bounce) infinite;margin-bottom:20px}@keyframes spinBounce{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.1)}to{transform:rotate(360deg) scale(1)}}.app-loading p{font-size:1.25rem;font-family:Outfit,system-ui,sans-serif;font-weight:700;margin:0}.app-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 68px);background:var(--bg, #FFFDF5);padding:20px;text-align:center;border-top:4px solid var(--secondary, #F472B6)}.app-error h2{color:var(--error-text);margin:0 0 16px;font-size:2rem;font-family:Outfit,system-ui,sans-serif;font-weight:800}.app-error p{color:var(--text-secondary);margin:0 0 24px;font-size:1.1rem;max-width:600px}.app-error button{background:var(--button-danger-bg);color:var(--button-danger-text);border:2px solid var(--fg, #1E293B);padding:12px 24px;border-radius:var(--radius-full);font-size:1rem;font-weight:700;cursor:pointer;transition:all var(--transition-bounce);box-shadow:var(--shadow-pop)}.app-error button:hover{background:var(--button-danger-hover);box-shadow:var(--shadow-pop-hover);transform:translateY(-2px)}.app-error button:active{background:var(--button-danger-active);box-shadow:var(--shadow-pop-active);transform:translateY(0)}
