:root{--color-primary: #1a73e8;--color-primary-hover: #1557b0;--color-primary-light: #e8f0fe;--color-primary-dark: #174ea6;--color-bg-primary: #ffffff;--color-bg-secondary: #f8f9fa;--color-bg-tertiary: #f1f3f4;--color-bg-hover: #f8f9fa;--color-card-1: #ffffff;--color-card-2: #ffffff;--color-card-3: #ffffff;--color-card-border: #e0e0e0;--color-card-hover: #f8f9fa;--color-status-blue: #e8f0fe;--color-status-blue-border: #4285f4;--color-status-green: #e6f4ea;--color-status-green-border: #34a853;--color-status-orange: #fef7e0;--color-status-orange-border: #fbbc04;--color-status-red: #fce8e6;--color-status-red-border: #ea4335;--color-white: #ffffff;--color-black: #202124;--color-gray-50: #f8f9fa;--color-gray-100: #f1f3f4;--color-gray-200: #e8eaed;--color-gray-300: #dadce0;--color-gray-400: #bdc1c6;--color-gray-500: #9aa0a6;--color-gray-600: #80868b;--color-gray-700: #5f6368;--color-gray-800: #3c4043;--color-gray-900: #202124;--color-success: #1e8e3e;--color-error: #d93025;--color-warning: #f9ab00;--color-info: #1967d2;--text-primary: #202124;--text-secondary: #5f6368;--text-tertiary: #80868b;--text-disabled: #bdc1c6;--text-on-primary: #ffffff;--text-link: #1a73e8;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 2.5rem;--space-3xl: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 20px;--radius-full: 24px;--radius-round: 50%;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .2s cubic-bezier(.4, 0, .2, 1);--transition-slow: .3s cubic-bezier(.4, 0, .2, 1);--shadow-sm: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 1px 3px 1px rgba(60, 64, 67, .15);--shadow-md: 0 1px 3px 0 rgba(60, 64, 67, .3), 0 4px 8px 3px rgba(60, 64, 67, .15);--shadow-lg: 0 2px 6px 2px rgba(60, 64, 67, .15), 0 8px 24px 4px rgba(60, 64, 67, .15);--shadow-xl: 0 4px 16px 4px rgba(60, 64, 67, .15), 0 12px 48px 16px rgba(60, 64, 67, .15);--font-primary: "Google Sans", "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-base: 1.5;--line-height-relaxed: 1.625;--z-base: 1;--z-dropdown: 100;--z-sticky: 500;--z-nav: 1000;--z-modal: 2000;--z-toast: 3000;--breakpoint-mobile: 640px;--breakpoint-tablet: 768px;--breakpoint-desktop: 1024px;--touch-target-min: 44px;--button-height-sm: 44px;--button-height-md: 48px;--button-height-lg: 56px;--space-mobile-xs: .5rem;--space-mobile-sm: .75rem;--space-mobile-md: 1rem;--space-mobile-lg: 1.25rem;--font-size-mobile-xs: .875rem;--font-size-mobile-sm: 1rem;--font-size-mobile-base: 1.125rem;--font-size-mobile-lg: 1.25rem}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font-primary);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased}#root{min-height:100vh}button{cursor:pointer;border:none;background:none;font:inherit}img{max-width:100%;display:block}ul,ol{list-style:none}a{text-decoration:none;color:inherit}:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-link{position:absolute;top:-40px;left:0;background:var(--color-bg-dark);color:var(--color-white);padding:.75rem 1.5rem;text-decoration:none;font-weight:600;z-index:10000;border-radius:0 0 4px}.skip-link:focus{top:0}::selection{background:var(--color-accent);color:var(--color-bg-dark)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.theme-light{--color-primary: #1a73e8;--color-primary-hover: #1557b0;--color-primary-dark: #174ea6;--color-primary-light: #e8f0fe;--color-secondary: #4A90E2;--color-secondary-dark: #3A7BC8;--color-secondary-light: #7FB3F0;--color-success: #1e8e3e;--color-error: #d93025;--color-warning: #f9ab00;--color-info: #1967d2;--color-white: #ffffff;--color-black: #202124;--color-gray-50: #f8f9fa;--color-gray-100: #f1f3f4;--color-gray-200: #e8eaed;--color-gray-300: #dadce0;--color-gray-400: #bdc1c6;--color-gray-500: #9aa0a6;--color-gray-600: #80868b;--color-gray-700: #5f6368;--color-gray-800: #3c4043;--color-gray-900: #202124;--color-bg-primary: #ffffff;--color-bg-secondary: #f8f9fa;--color-bg-tertiary: #f1f3f4;--color-bg-hover: #f8f9fa;--color-card-1: #ffffff;--color-card-2: #ffffff;--color-card-3: #ffffff;--color-card-border: #e0e0e0;--color-card-hover: #f8f9fa;--text-primary: #202124;--text-secondary: #5f6368;--text-tertiary: #80868b;--text-disabled: #bdc1c6;--text-on-primary: #ffffff;--text-link: #1a73e8;--shadow-sm: 0 1px 2px 0 rgba(60, 64, 67, .3), 0 1px 3px 1px rgba(60, 64, 67, .15);--shadow-md: 0 1px 3px 0 rgba(60, 64, 67, .3), 0 4px 8px 3px rgba(60, 64, 67, .15);--shadow-lg: 0 2px 6px 2px rgba(60, 64, 67, .15), 0 8px 24px 4px rgba(60, 64, 67, .15);--shadow-xl: 0 4px 16px 4px rgba(60, 64, 67, .15), 0 12px 48px 16px rgba(60, 64, 67, .15)}.theme-dark{--color-primary: #8ab4f8;--color-primary-hover: #aecbfa;--color-primary-dark: #669df6;--color-primary-light: #1f3a5f;--color-secondary: #5BA3F5;--color-secondary-dark: #4A90E2;--color-secondary-light: #7FB3F0;--color-success: #81c995;--color-error: #f28b82;--color-warning: #fdd663;--color-info: #8ab4f8;--color-white: #1f2937;--color-black: #f9fafb;--color-gray-50: #1f2937;--color-gray-100: #374151;--color-gray-200: #4b5563;--color-gray-300: #6b7280;--color-gray-400: #9ca3af;--color-gray-500: #d1d5db;--color-gray-600: #e5e7eb;--color-gray-700: #f3f4f6;--color-gray-800: #f9fafb;--color-gray-900: #ffffff;--color-bg-primary: #111827;--color-bg-secondary: #1f2937;--color-bg-tertiary: #374151;--color-bg-hover: #374151;--color-card-1: #1f2937;--color-card-2: #1f2937;--color-card-3: #1f2937;--color-card-border: #4b5563;--color-card-hover: #374151;--text-primary: #f9fafb;--text-secondary: #d1d5db;--text-tertiary: #9ca3af;--text-disabled: #6b7280;--text-on-primary: #111827;--text-link: #8ab4f8;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .4);--shadow-md: 0 1px 3px 0 rgba(0, 0, 0, .5), 0 4px 8px 3px rgba(0, 0, 0, .3);--shadow-lg: 0 2px 6px 2px rgba(0, 0, 0, .4), 0 8px 24px 4px rgba(0, 0, 0, .3);--shadow-xl: 0 4px 16px 4px rgba(0, 0, 0, .5), 0 12px 48px 16px rgba(0, 0, 0, .3)}.theme-high-contrast{--color-primary: #0000CC;--color-primary-hover: #0000AA;--color-primary-dark: #000088;--color-primary-light: #e8e8ff;--color-secondary: #0066FF;--color-secondary-dark: #0052CC;--color-secondary-light: #3385FF;--color-success: #006600;--color-error: #CC0000;--color-warning: #CC6600;--color-info: #0066CC;--color-white: #FFFFFF;--color-black: #000000;--color-gray-50: #FFFFFF;--color-gray-100: #F0F0F0;--color-gray-200: #D0D0D0;--color-gray-300: #B0B0B0;--color-gray-400: #808080;--color-gray-500: #606060;--color-gray-600: #404040;--color-gray-700: #303030;--color-gray-800: #181818;--color-gray-900: #000000;--color-bg-primary: #FFFFFF;--color-bg-secondary: #F0F0F0;--color-bg-tertiary: #E0E0E0;--color-bg-hover: #E0E0E0;--color-card-1: #ffffff;--color-card-2: #ffffff;--color-card-3: #ffffff;--color-card-border: #000000;--color-card-hover: #f0f0f0;--text-primary: #000000;--text-secondary: #303030;--text-tertiary: #606060;--text-disabled: #808080;--text-on-primary: #FFFFFF;--text-link: #0000CC;--shadow-sm: 0 2px 4px 0 rgba(0, 0, 0, .4);--shadow-md: 0 4px 8px 0 rgba(0, 0, 0, .5);--shadow-lg: 0 8px 16px 0 rgba(0, 0, 0, .6);--shadow-xl: 0 12px 24px 0 rgba(0, 0, 0, .7)}.theme-colorblind-deuteranopia{--color-primary: #0088FF;--color-primary-dark: #0066CC;--color-primary-light: #33AAFF;--color-secondary: #FF8800;--color-secondary-dark: #CC6600;--color-secondary-light: #FFAA33;--color-success: #0088FF;--color-success-dark: #0066CC;--color-success-light: #33AAFF;--color-danger: #FF4444;--color-danger-dark: #CC3333;--color-danger-light: #FF7777;--color-warning: #FFBB00;--color-info: #00CCFF;--color-gray-50: #F9FAFB;--color-gray-100: #F3F4F6;--color-gray-200: #E5E7EB;--color-gray-300: #D1D5DB;--color-gray-400: #9CA3AF;--color-gray-500: #6B7280;--color-gray-600: #4B5563;--color-gray-700: #374151;--color-gray-800: #1F2937;--color-gray-900: #111827;--color-white: #FFFFFF;--color-black: #000000;--color-bg-primary: #FFFFFF;--color-bg-secondary: #F9FAFB;--color-bg-tertiary: #F3F4F6;--color-bg-hover: #F3F4F6;--color-bg-active: #E5E7EB;--color-bg-overlay: rgba(0, 0, 0, .5);--color-card-1: #ffffff;--color-card-2: #ffffff;--color-card-3: #ffffff;--color-card-border: #e0e0e0;--color-card-hover: #f8f9fa;--text-primary: #111827;--text-secondary: #6B7280;--text-tertiary: #9CA3AF;--text-disabled: #bdc1c6;--text-on-primary: #ffffff;--text-link: #0088FF;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04)}.theme-colorblind-protanopia{--color-primary: #0077FF;--color-primary-dark: #0055CC;--color-primary-light: #3399FF;--color-secondary: #FFCC00;--color-secondary-dark: #CCAA00;--color-secondary-light: #FFDD33;--color-success: #00AAFF;--color-success-dark: #0088CC;--color-success-light: #33BBFF;--color-danger: #8844FF;--color-danger-dark: #6633CC;--color-danger-light: #AA77FF;--color-warning: #FFD700;--color-info: #0099FF;--color-gray-50: #F9FAFB;--color-gray-100: #F3F4F6;--color-gray-200: #E5E7EB;--color-gray-300: #D1D5DB;--color-gray-400: #9CA3AF;--color-gray-500: #6B7280;--color-gray-600: #4B5563;--color-gray-700: #374151;--color-gray-800: #1F2937;--color-gray-900: #111827;--color-white: #FFFFFF;--color-black: #000000;--color-bg-primary: #FFFFFF;--color-bg-secondary: #F9FAFB;--color-bg-tertiary: #F3F4F6;--color-bg-hover: #F3F4F6;--color-bg-active: #E5E7EB;--color-bg-overlay: rgba(0, 0, 0, .5);--color-card-1: #ffffff;--color-card-2: #ffffff;--color-card-3: #ffffff;--color-card-border: #e0e0e0;--color-card-hover: #f8f9fa;--text-primary: #111827;--text-secondary: #6B7280;--text-tertiary: #9CA3AF;--text-disabled: #bdc1c6;--text-on-primary: #ffffff;--text-link: #0077FF;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04)}.theme-kids-mode{--color-primary: #FF1493;--color-primary-dark: #FF0080;--color-primary-light: #FF69B4;--color-secondary: #00D4FF;--color-secondary-dark: #00B8E6;--color-secondary-light: #33E0FF;--color-success: #00FF88;--color-success-dark: #00CC66;--color-success-light: #33FFAA;--color-danger: #FF3366;--color-danger-dark: #FF0044;--color-danger-light: #FF6699;--color-warning: #FFD700;--color-info: #8A2BE2;--color-gray-50: #FFF5F7;--color-gray-100: #FFE8EE;--color-gray-200: #FFD6E0;--color-gray-300: #FFC4D3;--color-gray-400: #E8B4C8;--color-gray-500: #C48CA0;--color-gray-600: #A06678;--color-gray-700: #7C4050;--color-gray-800: #581A28;--color-gray-900: #340010;--color-white: #FFFFFF;--color-black: #340010;--color-bg-primary: #FFFFFF;--color-bg-secondary: #FFF5F7;--color-bg-tertiary: #FFE8EE;--color-bg-hover: #FFE8EE;--color-bg-active: #FFD6E0;--color-bg-overlay: rgba(255, 20, 147, .3);--color-card-1: #ffffff;--color-card-2: #ffffff;--color-card-3: #ffffff;--color-card-border: #FFD6E0;--color-card-hover: #FFF5F7;--text-primary: #340010;--text-secondary: #7C4050;--text-tertiary: #A06678;--text-disabled: #C48CA0;--text-on-primary: #FFFFFF;--text-link: #FF1493;--color-border-light: #FFE8EE;--shadow-sm: 0 1px 3px 0 rgba(255, 20, 147, .15);--shadow-md: 0 4px 8px -1px rgba(255, 20, 147, .2), 0 2px 4px -1px rgba(255, 20, 147, .15);--shadow-lg: 0 10px 20px -3px rgba(255, 20, 147, .25), 0 4px 8px -2px rgba(255, 20, 147, .2);--shadow-xl: 0 20px 30px -5px rgba(255, 20, 147, .3), 0 10px 15px -5px rgba(255, 20, 147, .25);--shadow-2xl: 0 25px 50px -12px rgba(255, 20, 147, .4)}.no-transition,.no-transition *{transition:none!important}@media (prefers-reduced-motion: reduce){*{transition-duration:.01ms!important}}.theme-high-contrast *{border-width:2px}.theme-high-contrast button,.theme-high-contrast .button{font-weight:700;border:2px solid var(--color-black)}.theme-kids-mode{font-family:Comic Sans MS,Segoe UI,cursive,sans-serif}.theme-kids-mode button,.theme-kids-mode .button{border-radius:var(--radius-2xl);font-weight:600}.theme-kids-mode .card,.theme-kids-mode .Card{border-radius:var(--radius-2xl)}.alert-dialog-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .2s ease-out}.alert-dialog{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;padding:32px;max-width:400px;width:90%;text-align:center;animation:slideUp .3s ease-out}.alert-dialog-icon{font-size:3rem;margin-bottom:16px}.alert-dialog-title{margin:0 0 12px;font-size:1.5rem;font-weight:700;color:#1a1a2e}.alert-dialog-message{margin:0 0 24px;font-size:1rem;line-height:1.6;color:#4a5568}.alert-dialog-btn{padding:12px 32px;border-radius:12px;font-size:1rem;font-weight:600;border:none;cursor:pointer;transition:all .2s;min-width:120px;min-height:44px;background:#3b82f6;color:#fff}.alert-dialog-btn:hover{background:#2563eb;transform:translateY(-1px)}.alert-dialog-btn:focus{outline:3px solid #3b82f6;outline-offset:2px}.alert-dialog-btn.error{background:#ef4444}.alert-dialog-btn.error:hover{background:#dc2626}.alert-dialog-btn.warning{background:#f59e0b}.alert-dialog-btn.warning:hover{background:#d97706}.alert-dialog-btn.success{background:#10b981}.alert-dialog-btn.success:hover{background:#059669}@media (max-width: 640px){.alert-dialog{padding:24px;max-width:95%}.alert-dialog-title{font-size:1.25rem}.alert-dialog-btn{width:100%}}.confirm-dialog-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:fadeIn .2s ease-out}.confirm-dialog{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;padding:32px;max-width:480px;width:90%;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.confirm-dialog-title{margin:0 0 16px;font-size:1.5rem;font-weight:700;color:#1a1a2e}.confirm-dialog-message{margin:0 0 24px;font-size:1rem;line-height:1.6;color:#4a5568}.confirm-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.confirm-dialog-btn{padding:12px 24px;border-radius:12px;font-size:1rem;font-weight:600;border:none;cursor:pointer;transition:all .2s;min-width:100px;min-height:44px}.confirm-dialog-cancel{background:#e2e8f0;color:#4a5568}.confirm-dialog-cancel:hover{background:#cbd5e0}.confirm-dialog-cancel:focus{outline:3px solid #3b82f6;outline-offset:2px}.confirm-dialog-confirm{background:#3b82f6;color:#fff}.confirm-dialog-confirm:hover{background:#2563eb}.confirm-dialog-confirm:focus{outline:3px solid #3b82f6;outline-offset:2px}.confirm-dialog-confirm.danger{background:#ef4444}.confirm-dialog-confirm.danger:hover{background:#dc2626}.confirm-dialog-confirm.warning{background:#f59e0b}.confirm-dialog-confirm.warning:hover{background:#d97706}@media (max-width: 640px){.confirm-dialog{padding:24px;max-width:95%}.confirm-dialog-title{font-size:1.25rem}.confirm-dialog-actions{flex-direction:column-reverse}.confirm-dialog-btn{width:100%}}.connection-status{position:fixed;top:16px;right:16px;z-index:1050;background:#fffffff2;backdrop-filter:blur(10px);border-radius:20px;padding:8px 16px;box-shadow:0 2px 8px #0000001a;transition:all .3s ease}.connection-status.offline{background:#ff5757f2;color:#fff}.connection-indicator{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}.status-dot{width:10px;height:10px;border-radius:50%;display:inline-block;position:relative;animation:pulse 2s ease-in-out infinite}.status-dot.online{background:#00d084;box-shadow:0 0 8px #00d08480}.status-dot.offline{background:#ff5757;box-shadow:0 0 8px #ff575780;animation:pulse-offline 1s ease-in-out infinite}.status-text{color:inherit;font-weight:600;letter-spacing:.3px}.device-count{color:#667eea;font-weight:600;padding:2px 8px;background:#667eea1a;border-radius:10px;font-size:13px;cursor:help;transition:background .2s ease}.device-count:hover{background:#667eea33}.local-mode{color:#f59e0b;font-size:12px;font-weight:600;cursor:help}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes pulse-offline{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.95)}}@media (max-width: 640px){.connection-status{top:12px;right:12px;padding:6px 12px;font-size:13px}.connection-indicator{gap:6px}.status-dot{width:8px;height:8px}.device-count{font-size:12px;padding:2px 6px}.local-mode{font-size:11px}}@media (prefers-color-scheme: dark){.connection-status{background:#1e1e1ef2;color:#e0e0e0}.connection-status.offline{background:#ff5757f2;color:#fff}}.error-boundary{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;background:linear-gradient(135deg,#667eea,#764ba2)}.error-container{max-width:600px;width:100%;background:#fff;border-radius:20px;padding:3rem 2rem;box-shadow:0 20px 60px #0000004d;text-align:center;animation:slideUp .5s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.error-icon{font-size:5rem;margin-bottom:1.5rem;animation:bounce .6s ease}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.error-title{font-size:2rem;font-weight:700;color:#1a1a2e;margin-bottom:1rem}.error-message{font-size:1.125rem;color:#666;margin-bottom:2rem;line-height:1.6}.error-details{text-align:left;margin:2rem 0;padding:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.error-details summary{cursor:pointer;font-weight:600;color:#667eea;padding:.5rem;user-select:none}.error-details summary:hover{color:#764ba2}.error-info{margin-top:1rem;padding:1rem;background:#fff;border-radius:4px}.error-name{font-weight:600;color:#dc3545;margin-bottom:1rem;word-break:break-word}.error-stack{font-family:Courier New,monospace;font-size:.875rem;color:#495057;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word;background:#f8f9fa;padding:1rem;border-radius:4px;border:1px solid #dee2e6}.error-actions{display:flex;gap:1rem;justify-content:center;margin-bottom:2rem;flex-wrap:wrap}.error-btn{padding:.875rem 2rem;font-size:1rem;font-weight:600;border:none;border-radius:50px;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:.5rem;min-width:160px;justify-content:center}.error-btn.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 15px #667eea66}.error-btn.primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea80}.error-btn.primary:active{transform:translateY(0)}.error-btn.secondary{background:#fff;color:#667eea;border:2px solid #667eea}.error-btn.secondary:hover{background:#667eea;color:#fff;transform:translateY(-2px)}.error-btn.secondary:active{transform:translateY(0)}.error-help{font-size:.875rem;color:#999;margin-top:1rem}@media (max-width: 600px){.error-container{padding:2rem 1.5rem}.error-title{font-size:1.5rem}.error-message{font-size:1rem}.error-icon{font-size:4rem}.error-actions{flex-direction:column}.error-btn{width:100%}.error-stack{font-size:.75rem}}@media (prefers-reduced-motion: reduce){.error-container,.error-icon{animation:none}}.modal-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:1rem;animation:fadeIn .2s ease-out}.feedback-modal{background:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:520px;width:100%;animation:slideUp var(--transition-base) ease-out;overflow:hidden}.feedback-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-xl);border-bottom:1px solid var(--color-gray-200)}.feedback-header h2{display:flex;align-items:center;gap:var(--space-sm);margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-gray-900)}.feedback-close-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-gray-500);cursor:pointer;transition:all var(--transition-fast)}.feedback-close-btn:hover:not(:disabled){background:var(--color-gray-100);color:var(--color-gray-700)}.feedback-close-btn:disabled{opacity:.5;cursor:not-allowed}.feedback-form{padding:var(--space-xl)}.feedback-field{margin-bottom:var(--space-lg)}.feedback-field label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-700);margin-bottom:var(--space-xs)}.feedback-optional{font-weight:var(--font-weight-normal);color:var(--color-gray-500);margin-left:var(--space-xs)}.feedback-required{color:var(--color-error);margin-left:2px}.feedback-categories{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}.feedback-category-btn{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:2px solid var(--color-gray-200);border-radius:var(--radius-md);background:var(--color-white);color:var(--color-gray-700);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast)}.feedback-category-btn:hover{border-color:var(--category-color, var(--color-primary));background:color-mix(in srgb,var(--category-color, var(--color-primary)) 5%,white)}.feedback-category-btn.active{border-color:var(--category-color, var(--color-primary));background:color-mix(in srgb,var(--category-color, var(--color-primary)) 10%,white);color:var(--category-color, var(--color-primary))}.feedback-category-btn.active svg{color:var(--category-color, var(--color-primary))}.feedback-field input,.feedback-field textarea{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-base);font-family:inherit;border:2px solid var(--color-gray-200);border-radius:var(--radius-md);background:var(--color-white);color:var(--color-gray-900);transition:all var(--transition-fast)}.feedback-field input:focus,.feedback-field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #667eea26}.feedback-field input:disabled,.feedback-field textarea:disabled{background:var(--color-gray-50);cursor:not-allowed}.feedback-field textarea{resize:vertical;min-height:120px}.feedback-char-count{text-align:right;font-size:var(--font-size-xs);color:var(--color-gray-500);margin-top:var(--space-xs)}.feedback-error{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-error) 10%,white);color:var(--color-error);font-size:var(--font-size-sm);margin-bottom:var(--space-lg)}.feedback-footer{display:flex;gap:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-gray-200)}.feedback-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.feedback-btn:disabled{opacity:.6;cursor:not-allowed}.feedback-btn-cancel{background:var(--color-gray-100);color:var(--color-gray-700);border:2px solid var(--color-gray-200)}.feedback-btn-cancel:hover:not(:disabled){background:var(--color-gray-200)}.feedback-btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 15px #667eea66}.feedback-btn-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea80}.feedback-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.feedback-success{padding:var(--space-xxl);text-align:center}.feedback-success-content{animation:successPop .4s ease-out}@keyframes successPop{0%{opacity:0;transform:scale(.8)}50%{transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.feedback-success-icon{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#10b981,#059669);color:#fff;margin-bottom:var(--space-lg)}.feedback-success h2{margin:0 0 var(--space-sm);font-size:var(--font-size-xl);color:var(--color-gray-900)}.feedback-success p{margin:0;color:var(--color-gray-600)}.feedback-fab-wrapper{position:fixed;bottom:var(--space-lg, 1.5rem);right:var(--space-lg, 1.5rem);z-index:var(--z-fixed, 1000)}.feedback-fab{display:flex;align-items:center;gap:var(--space-xs, .5rem);padding:var(--space-sm, .75rem) var(--space-md, 1rem);background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:50px;box-shadow:0 4px 20px #667eea66;font-size:var(--font-size-sm, .875rem);font-weight:var(--font-weight-medium, 500);cursor:pointer;transition:all var(--transition-fast, .15s)}.feedback-tooltip{position:absolute;bottom:100%;right:0;margin-bottom:var(--space-sm, .5rem);background:var(--color-white, #fff);border:1px solid var(--color-gray-200, #e5e7eb);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg, 0 10px 25px rgba(0, 0, 0, .1));padding:var(--space-sm, .75rem) var(--space-md, 1rem);min-width:180px;animation:feedbackTooltipIn .3s ease-out}.feedback-tooltip p{margin:0;font-size:var(--font-size-sm, .875rem);color:var(--text-primary, #1f2937);line-height:1.4;padding-right:var(--space-md, 1rem)}.feedback-tooltip:after{content:"";position:absolute;bottom:-7px;right:24px;width:12px;height:12px;background:var(--color-white, #fff);border-right:1px solid var(--color-gray-200, #e5e7eb);border-bottom:1px solid var(--color-gray-200, #e5e7eb);transform:rotate(45deg)}.feedback-tooltip-close{position:absolute;top:4px;right:4px;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:50%;background:transparent;color:var(--text-tertiary, #9ca3af);cursor:pointer}.feedback-tooltip-close:hover{background:var(--color-gray-100, #f3f4f6);color:var(--text-primary, #1f2937)}@keyframes feedbackTooltipIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.feedback-fab:hover{transform:translateY(-2px);box-shadow:0 6px 25px #667eea80}.feedback-fab.feedback-fab-pulse{animation:feedback-pulse 1.5s infinite}@keyframes feedback-pulse{0%,to{box-shadow:0 4px 20px #667eea66}50%{box-shadow:0 4px 20px #667eea66,0 0 0 10px #667eea00}}.feedback-fab-icon{display:flex;align-items:center;justify-content:center}@media (max-width: 640px){.modal-overlay{padding:var(--space-sm);align-items:flex-start;padding-top:10vh}.feedback-modal{max-width:100%;max-height:80vh;margin:0}.feedback-header{padding:var(--space-md)}.feedback-header h2{font-size:var(--font-size-base)}.feedback-form{padding:var(--space-md)}.feedback-categories{grid-template-columns:1fr}.feedback-category-btn{min-height:48px}.feedback-field input,.feedback-field textarea{font-size:16px}.feedback-footer{flex-direction:column;padding-top:var(--space-sm)}.feedback-btn{width:100%;min-height:48px}.feedback-fab-wrapper{bottom:calc(80px + env(safe-area-inset-bottom,0));right:var(--space-md)}.feedback-fab{width:56px;height:56px;padding:0;border-radius:50%;justify-content:center}.feedback-fab-icon{width:24px;height:24px}.feedback-fab-icon svg{width:24px;height:24px}.feedback-fab-text{display:none}}@media (min-width: 641px) and (max-width: 768px){.feedback-modal{max-width:90%}}@media (prefers-reduced-motion: reduce){.feedback-modal,.feedback-success-content,.feedback-spinner{animation:none}.feedback-btn:hover:not(:disabled){transform:none}}.firebase-status-banner{position:fixed;top:0;left:0;right:0;padding:12px 20px;display:flex;align-items:center;gap:12px;font-size:14px;z-index:9999;box-shadow:0 2px 8px #0000001a;animation:slideDown .3s ease-out}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.firebase-status-error{background-color:#fee2e2;border-bottom:2px solid #dc2626;color:#991b1b}.firebase-status-warning{background-color:#fef3c7;border-bottom:2px solid #f59e0b;color:#92400e}.firebase-status-info{background-color:#dbeafe;border-bottom:2px solid #3b82f6;color:#1e40af}.status-icon{font-size:20px;flex-shrink:0}.status-spinner{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status-content{display:flex;flex-direction:column;gap:2px;flex:1}.status-content strong{font-weight:600}.status-message{font-size:13px;opacity:.9}@media (max-width: 640px){.firebase-status-banner{padding:10px 16px;font-size:13px}.status-icon{font-size:18px}.status-message{font-size:12px}}.impersonation-banner{position:fixed;top:0;left:0;right:0;z-index:9999;padding:var(--space-sm) var(--space-md);color:#fff;font-size:var(--font-size-sm);box-shadow:0 2px 8px #00000026}.impersonation-banner.live{background:linear-gradient(135deg,#3b82f6,#1d4ed8)}.impersonation-banner.sandbox{background:linear-gradient(135deg,#f59e0b,#d97706)}.impersonation-banner-content{max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.impersonation-banner-info{display:flex;align-items:center;gap:var(--space-sm)}.impersonation-banner-icon{flex-shrink:0;opacity:.9}.impersonation-banner-text{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.impersonation-mode-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.impersonation-mode-badge.live,.impersonation-mode-badge.sandbox{background:#ffffff40;color:#fff}.impersonation-banner-return{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:inherit;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.impersonation-banner-return:hover:not(:disabled){background:#ffffff4d;border-color:#ffffff80}.impersonation-banner-return:disabled{opacity:.7;cursor:not-allowed}body.has-impersonation-banner{padding-top:48px}@media (max-width: 640px){.impersonation-banner{padding:var(--space-xs) var(--space-sm)}.impersonation-banner-content{gap:var(--space-xs)}.impersonation-banner-text{font-size:var(--font-size-xs)}.impersonation-banner-return{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs)}.impersonation-mode-badge{font-size:10px;padding:1px 6px}}.install-prompt-overlay{position:fixed;inset:0;background:#00000080;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem;animation:fadeIn .3s ease-out}.install-prompt{position:relative;background:#fff;border-radius:1rem;box-shadow:0 20px 60px #0000004d;max-width:28rem;width:100%;animation:scaleIn .3s ease-out}.close-btn{position:absolute;top:1rem;right:1rem;width:2rem;height:2rem;border:none;background:#0000000d;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#666;font-size:1.25rem;transition:all .2s ease;z-index:1}.close-btn:hover{background:#0000001a;transform:rotate(90deg)}.install-content{padding:2rem}.install-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.install-icon-wrapper{width:56px;height:56px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:14px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.install-header h2{margin:0;font-size:1.5rem;font-weight:700;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.install-body{margin-bottom:2rem}.install-description{font-size:1rem;color:#555;margin:0 0 1.5rem;line-height:1.6}.install-benefits{list-style:none;padding:0;margin:0;display:grid;gap:.875rem}.install-benefits li{display:flex;align-items:center;gap:.75rem;padding:.75rem;background:linear-gradient(135deg,#667eea0d,#764ba20d);border-radius:.5rem;font-size:.9375rem;color:#333;transition:all .2s ease}.install-benefits li:hover{background:linear-gradient(135deg,#667eea1a,#764ba21a);transform:translate(.25rem)}.benefit-icon{font-size:1.25rem;flex-shrink:0}.ios-instructions{background:linear-gradient(135deg,#667eea14,#764ba214);border-radius:.75rem;padding:1rem}.ios-steps-title{margin:0 0 .75rem;font-weight:600;color:#333;font-size:.95rem}.ios-steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75rem}.ios-steps li{display:flex;align-items:center;gap:.75rem;font-size:.9375rem;color:#444}.ios-steps .step-icon{width:28px;height:28px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.875rem;flex-shrink:0}.ios-steps .share-icon{display:inline-flex;align-items:center;justify-content:center;background:#007aff;color:#fff;width:24px;height:24px;border-radius:4px;font-size:.875rem;vertical-align:middle}.ios-steps strong{color:#333}.install-actions{display:flex;flex-direction:column;gap:.75rem}.install-btn{width:100%;padding:.875rem 1.5rem;border:none;border-radius:.5rem;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;text-align:center}.install-btn.primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 12px #667eea4d}.install-btn.primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.install-btn.primary:active{transform:translateY(0)}.install-btn.secondary{background:#f0f0f0;color:#333}.install-btn.secondary:hover{background:#e0e0e0}.install-btn.text{background:transparent;color:#999;padding:.5rem;font-size:.875rem;font-weight:500}.install-btn.text:hover{color:#666;background:#00000005}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@media (max-width: 640px){.install-prompt-overlay{align-items:flex-end;padding:0}.install-prompt{border-radius:1rem 1rem 0 0;max-width:100%;animation:slideUp .3s ease-out}.install-content{padding:1.5rem}.install-header h2{font-size:1.375rem}.install-icon{font-size:2.5rem}.install-benefits li{font-size:.875rem;padding:.625rem}.benefit-icon{font-size:1.125rem}.install-btn{padding:.75rem 1.25rem;font-size:.9375rem}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.install-prompt-overlay,.install-prompt,.install-benefits li,.install-btn,.close-btn{animation:none;transition:none}.install-benefits li:hover,.install-btn:hover,.close-btn:hover{transform:none}}@media (prefers-contrast: high){.install-prompt,.install-btn.primary{border:2px solid #000}.install-btn.secondary{border:2px solid #333}.close-btn{border:2px solid #666}}@media (prefers-color-scheme: dark){.install-prompt{background:#1a1a1a;color:#fff}.install-header h2{-webkit-text-fill-color:unset;background:linear-gradient(135deg,#8b9cf9,#9b7bc4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.install-description{color:#ccc}.install-benefits li{background:linear-gradient(135deg,#8b9cf91a,#9b7bc41a);color:#e0e0e0}.install-benefits li:hover{background:linear-gradient(135deg,#8b9cf926,#9b7bc426)}.install-btn.secondary{background:#2a2a2a;color:#e0e0e0}.install-btn.secondary:hover{background:#333}.install-btn.text{color:#999}.install-btn.text:hover{color:#ccc;background:#ffffff0d}.close-btn{background:#ffffff0d;color:#ccc}.close-btn:hover{background:#ffffff1a}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:fadeIn .2s ease-out}.invite-modal{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:550px;width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:2rem 2rem 1rem;border-bottom:1px solid #e2e8f0;display:flex;align-items:center;justify-content:space-between}.modal-header h2{margin:0;font-size:1.75rem;color:#1a1a2e}.close-btn{background:transparent;border:none;font-size:1.5rem;color:#64748b;cursor:pointer;padding:.25rem;line-height:1;transition:all .2s;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px}.close-btn:hover:not(:disabled){background:#f1f5f9;color:#1a1a2e}.close-btn:disabled{opacity:.5;cursor:not-allowed}.invite-form{padding:2rem;display:flex;flex-direction:column;gap:1.5rem}.form-intro{color:#64748b;margin:0;line-height:1.6}.form-group input,.form-group select{padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:1rem;transition:all .2s;font-family:inherit}.form-group input:focus,.form-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input:disabled,.form-group select:disabled{opacity:.6;cursor:not-allowed}.field-hint{font-size:.875rem;color:#64748b;margin:0;line-height:1.4}.form-actions{display:flex;gap:1rem;margin-top:.5rem}.cancel-btn,.submit-btn{flex:1;padding:.875rem 1.5rem;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;border:none}.cancel-btn{background:#f1f5f9;color:#475569}.cancel-btn:hover:not(:disabled){background:#e2e8f0}.submit-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea4d}.cancel-btn:disabled,.submit-btn:disabled{opacity:.6;cursor:not-allowed}.invite-success{padding:2rem}.success-intro{text-align:center;font-size:1.1rem;color:#1a1a2e;margin:0 0 2rem}.invite-details{background:#f8fafc;border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;display:flex;flex-direction:column;gap:1rem}.detail-item{display:flex;justify-content:space-between;align-items:center}.detail-item label{font-weight:600;color:#64748b;font-size:.9rem}.detail-item span{color:#1a1a2e;font-weight:500;text-align:right}.invite-url-box{background:#f8fafc;border:2px solid #e2e8f0;border-radius:12px;padding:1.5rem;margin-bottom:1.5rem}.invite-url-box label{display:block;font-weight:600;color:#64748b;font-size:.9rem;margin-bottom:.75rem}.url-display{display:flex;gap:.75rem;align-items:center}.url-display code{flex:1;padding:.75rem;background:#fff;border:1px solid #e2e8f0;border-radius:8px;font-size:.85rem;color:#667eea;word-break:break-all;font-family:Monaco,Courier New,monospace}.copy-btn{background:#667eea;border:none;color:#fff;padding:.75rem;border-radius:8px;font-size:1.25rem;cursor:pointer;transition:all .2s;flex-shrink:0;width:45px;height:45px;display:flex;align-items:center;justify-content:center}.copy-btn:hover{background:#5568d3;transform:translateY(-2px);box-shadow:0 4px 12px #667eea4d}.copy-btn:active{transform:translateY(0)}.invite-actions{display:flex;gap:1rem;margin-bottom:1.5rem}.copy-all-btn,.done-btn{flex:1;padding:1rem;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;border:none}.copy-all-btn{background:#f1f5f9;color:#475569;border:2px solid #e2e8f0}.copy-all-btn:hover{background:#e2e8f0;border-color:#cbd5e1}.done-btn{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.done-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #10b9814d}.done-btn:active{transform:translateY(0)}.invite-warning{background:#fef3c7;border:2px solid #fbbf24;border-radius:10px;padding:1rem;color:#92400e;font-size:.9rem;margin:0;line-height:1.5}.invite-warning strong{color:#78350f}.admin-warning{display:flex;align-items:flex-start;gap:.75rem;background:#fef3c7;border:2px solid #fbbf24;border-radius:10px;padding:1rem;color:#92400e;font-size:.9rem;line-height:1.5}.admin-warning svg{flex-shrink:0;color:#d97706;margin-top:2px}@media (max-width: 640px){.modal-overlay{padding:0}.invite-modal{max-height:100vh;border-radius:0}.modal-header{padding:1.5rem 1.5rem 1rem}.modal-header h2{font-size:1.5rem}.invite-form,.invite-success{padding:1.5rem}.form-actions,.invite-actions{flex-direction:column}.url-display{flex-direction:column;align-items:stretch}.url-display code{font-size:.75rem}.copy-btn{width:100%}}.language-switcher{position:relative;display:inline-block}.language-switcher-btn{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--color-bg-primary, #fff);border:2px solid var(--color-gray-200, #e5e7eb);border-radius:12px;cursor:pointer;font-size:14px;color:var(--text-primary, #1f2937);transition:border-color .2s ease,background .2s ease;box-shadow:0 2px 8px #00000014;font-family:inherit}.language-switcher-btn:hover{background:var(--color-bg-hover, #f9fafb);border-color:var(--color-primary, #6366f1)}.language-switcher-btn:focus{outline:none;border-color:var(--color-primary, #6366f1);box-shadow:0 0 0 3px var(--color-primary-light, rgba(99, 102, 241, .2))}.language-switcher-btn.compact{padding:10px;border-radius:50%;width:44px;height:44px;justify-content:center}.language-flag{display:block;border-radius:3px;box-shadow:0 1px 3px #00000026;object-fit:cover}.language-name{font-weight:600;letter-spacing:.01em}.chevron{transition:transform .2s ease;opacity:.5;margin-left:2px}.chevron.open{transform:rotate(180deg)}.language-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;background:var(--color-bg-primary, #fff);border:2px solid var(--color-gray-200, #e5e7eb);border-radius:12px;box-shadow:0 10px 40px #0000001f,0 4px 12px #00000014;padding:6px;margin:0;list-style:none;z-index:1000;animation:dropdownSlideIn .2s ease}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.language-option{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;background:none;border:none;border-radius:8px;cursor:pointer;font-size:14px;color:var(--text-primary, #1f2937);text-align:left;transition:all .15s ease;font-family:inherit}.language-option:hover{background:var(--color-gray-100, #f3f4f6)}.language-option.active{background:var(--color-primary-light, rgba(99, 102, 241, .1));color:var(--color-primary, #6366f1)}.language-option .language-flag{border-radius:2px}.language-option .language-name{flex:1;font-weight:500}.check-icon{color:var(--color-primary, #6366f1)}.login-top-controls .language-switcher-btn,.login-language-switcher .language-switcher-btn,.register-language-switcher .language-switcher-btn{background:var(--color-bg-primary);border:1px solid var(--color-gray-300);box-shadow:none;padding:8px 12px;border-radius:var(--radius-md)}.login-top-controls .language-switcher-btn:hover,.login-language-switcher .language-switcher-btn:hover,.register-language-switcher .language-switcher-btn:hover{background:var(--color-primary-light);border-color:var(--color-primary);box-shadow:none;transform:none}.theme-dark .language-switcher-btn{background:var(--color-bg-primary);border-color:var(--color-gray-300);color:var(--text-primary);box-shadow:0 2px 8px #0000004d}.theme-dark .language-switcher-btn:hover{background:var(--color-bg-hover);border-color:var(--color-primary)}.theme-dark .language-dropdown{background:var(--color-bg-primary);border-color:var(--color-gray-300);box-shadow:0 10px 40px #0006}.theme-dark .language-option{color:var(--text-primary)}.theme-dark .language-option:hover{background:var(--color-bg-hover)}.theme-dark .language-option.active{background:var(--color-primary-light)}@media (prefers-reduced-motion: reduce){.language-switcher-btn,.language-option,.chevron{transition:none}.language-dropdown{animation:none}}.modal-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-md);animation:fadeIn var(--transition-fast)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-container{background:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:500px;width:100%;animation:slideUp var(--transition-base) ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{padding:var(--space-xl) var(--space-xl) var(--space-md);text-align:center}.modal-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-gray-900);margin:0}.modal-body{padding:0 var(--space-xl) var(--space-xl)}.modal-message{font-size:var(--font-size-base);line-height:var(--line-height-relaxed);color:var(--color-gray-700);margin:0;text-align:center}.modal-footer{display:flex;gap:var(--space-md);padding:0 var(--space-xl) var(--space-xl)}.modal-btn{flex:1;padding:.875rem var(--space-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.modal-btn:hover{transform:translateY(-2px)}.modal-btn:active{transform:translateY(0)}.modal-btn-cancel{background:var(--color-gray-100);color:var(--color-gray-700);border:2px solid var(--color-gray-200)}.modal-btn-cancel:hover{background:var(--color-gray-200);border-color:var(--color-gray-300)}.modal-btn-confirm{background:var(--color-gradient-primary);color:var(--color-white);box-shadow:var(--shadow-primary)}.modal-btn-confirm:hover{box-shadow:0 6px 20px #667eea80}.modal-btn-danger{background:linear-gradient(135deg,var(--color-error),#dc2626);box-shadow:0 4px 15px #ef444466}.modal-btn-danger:hover{box-shadow:0 6px 20px #ef444480}.modal-btn-alert{background:linear-gradient(135deg,var(--color-warning),#ea580c);box-shadow:0 4px 15px #f59e0b66}.modal-btn-alert:hover{box-shadow:0 6px 20px #f59e0b80}.modal-container.modal-danger .modal-title{color:var(--color-error)}.modal-container.modal-alert .modal-title{color:var(--color-warning)}@media (max-width: 640px){.modal-overlay{padding:var(--space-mobile-sm)}.modal-container{max-width:calc(100% - var(--space-mobile-md) * 2);margin:var(--space-mobile-md)}.modal-header{padding:var(--space-mobile-lg) var(--space-mobile-lg) var(--space-mobile-sm)}.modal-title{font-size:var(--font-size-mobile-base)}.modal-body{padding:0 var(--space-mobile-lg) var(--space-mobile-lg)}.modal-message{font-size:var(--font-size-mobile-sm)}.modal-footer{flex-direction:column;padding:0 var(--space-mobile-lg) var(--space-mobile-lg);gap:var(--space-mobile-sm)}.modal-btn{width:100%;min-height:var(--touch-target-min);font-size:var(--font-size-mobile-sm)}.close-btn{min-width:var(--touch-target-min);min-height:var(--touch-target-min)}}@media (min-width: 641px) and (max-width: 768px){.modal-container{max-width:90%}.modal-btn,.close-btn{min-height:var(--button-height-md)}}@media (min-width: 769px){.modal-btn,.close-btn{min-height:var(--button-height-md)}}@media (prefers-reduced-motion: reduce){.modal-overlay,.modal-container{animation:none}}.sync-status{position:fixed;bottom:20px;left:20px;display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:var(--radius-full, 50px);font-size:var(--font-size-sm, .85rem);font-weight:var(--font-weight-medium, 600);box-shadow:var(--shadow-md, 0 4px 15px rgba(0, 0, 0, .15));z-index:var(--z-toast, 3000);cursor:pointer;transition:all var(--transition-base, .3s ease);animation:slideIn .3s ease}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.sync-status:hover{transform:scale(1.05);box-shadow:var(--shadow-lg, 0 8px 30px rgba(0, 0, 0, .15))}.sync-status.connected{background:linear-gradient(135deg,#10b981,#059669);color:#fff}.sync-status.disconnected{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.sync-status.syncing{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.sync-icon{font-size:1.2rem;display:flex;align-items:center}.sync-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@media (max-width: 768px){.sync-status{bottom:calc(90px + env(safe-area-inset-bottom,0));left:16px;padding:8px;font-size:.75rem;width:36px;height:36px;max-width:none;justify-content:center;border-radius:50%}.sync-status span:not(.sync-icon):not(.sync-spinner){display:none}.sync-icon{font-size:1rem;margin:0}.sync-spinner{width:14px;height:14px}}.theme-switcher{position:relative;z-index:1100}.theme-switcher-button{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-primary);color:var(--color-text-primary);border:2px solid var(--color-border);border-radius:var(--radius-lg);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-base);box-shadow:var(--shadow-sm)}.theme-switcher-button:hover{background:var(--color-bg-hover);border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.theme-switcher-button:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.theme-icon{font-size:1.25rem;line-height:1}.theme-label{white-space:nowrap}.dropdown-arrow{font-size:.75rem;transition:transform var(--transition-base)}.theme-switcher-button[aria-expanded=true] .dropdown-arrow{transform:rotate(180deg)}.theme-switcher-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;min-width:320px;max-width:400px;background:var(--color-bg-primary);border:2px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--spacing-md);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.theme-switcher-overlay{position:fixed;inset:0;z-index:1099}.theme-section{margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.theme-section:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.theme-section-title{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.theme-mode-options{display:flex;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.theme-mode-option{flex:1;display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm);background:var(--color-bg-secondary);color:var(--color-text-primary);border:2px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:all var(--transition-base)}.theme-mode-option:hover{background:var(--color-bg-hover);border-color:var(--color-primary)}.theme-mode-option.active{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary);font-weight:600}.mode-radio{font-size:.75rem}.mode-label{font-size:.75rem;white-space:nowrap}.theme-mode-description{font-size:.75rem;color:var(--color-text-secondary);font-style:italic}.theme-options{display:flex;flex-direction:column;gap:var(--spacing-sm)}.theme-option{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);color:var(--color-text-primary);border:2px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);text-align:left;position:relative}.theme-option:hover,.theme-option.preview{background:var(--color-bg-hover);border-color:var(--color-primary);transform:translate(4px)}.theme-option.active{border-color:var(--color-primary);background:var(--color-primary-light);box-shadow:var(--shadow-md)}.theme-option-icon{font-size:1.5rem;line-height:1;flex-shrink:0}.theme-option-content{flex:1;display:flex;flex-direction:column;gap:2px}.theme-option-label{font-size:.875rem;font-weight:600}.theme-option-description{font-size:.75rem;color:var(--color-text-secondary)}.theme-option-checkmark{font-size:1.25rem;color:var(--color-primary);font-weight:700}.theme-preview-colors{display:flex;gap:4px;margin-left:auto}.preview-dot{width:12px;height:12px;border-radius:50%;border:1px solid var(--color-border)}.theme-light .preview-primary{background-color:#ff69b4}.theme-light .preview-secondary{background-color:#4a90e2}.theme-light .preview-success{background-color:#10b981}.theme-dark .preview-primary{background-color:#ff85c0}.theme-dark .preview-secondary{background-color:#5ba3f5}.theme-dark .preview-success{background-color:#34d399}.theme-high-contrast .preview-primary{background-color:#ff0080}.theme-high-contrast .preview-secondary{background-color:#06f}.theme-high-contrast .preview-success{background-color:#0c0}.theme-colorblind-deuteranopia .preview-primary{background-color:#08f}.theme-colorblind-deuteranopia .preview-secondary{background-color:#f80}.theme-colorblind-deuteranopia .preview-success{background-color:#08f}.theme-colorblind-protanopia .preview-primary{background-color:#07f}.theme-colorblind-protanopia .preview-secondary{background-color:#fc0}.theme-colorblind-protanopia .preview-success{background-color:#0af}.theme-kids-mode .preview-primary{background-color:#ff1493}.theme-kids-mode .preview-secondary{background-color:#00d4ff}.theme-kids-mode .preview-success{background-color:#0f8}.theme-accessibility-note{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--radius-md);font-size:.75rem;color:var(--color-text-secondary);margin-top:var(--spacing-md)}@media (max-width: 768px){.theme-switcher-dropdown{position:fixed;top:50%;left:50%;right:auto;transform:translate(-50%,-50%);width:90%;max-width:400px;max-height:80vh;overflow-y:auto}@keyframes slideDown{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.theme-mode-options{flex-direction:column}.theme-mode-option{justify-content:center}}[data-preview-theme] .theme-switcher-button,[data-preview-theme] .theme-switcher-dropdown{pointer-events:none}.login-view{height:100vh;height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary);padding:var(--space-md);position:relative;overflow:auto;box-sizing:border-box}.login-top-controls{position:absolute;top:var(--space-md);right:var(--space-md);z-index:10;display:flex;align-items:center;gap:var(--space-sm)}.theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--color-gray-300);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--text-secondary);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),color var(--transition-fast)}.theme-toggle-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.theme-toggle-btn svg{flex-shrink:0}.login-top-controls .language-switcher-btn{height:36px;min-width:36px}.login-container{background:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--space-xl);max-width:420px;width:100%;border:1px solid var(--color-card-border)}.login-header{text-align:center;margin-bottom:var(--space-lg)}.login-logo{width:208px;height:104px;object-fit:contain;margin:0 auto var(--space-sm);display:block}.login-header h1{margin:0 0 var(--space-sm) 0;color:var(--text-primary);font-size:var(--font-size-3xl);font-weight:var(--font-weight-medium)}.login-subtitle{margin:0;color:var(--text-secondary);font-size:var(--font-size-base);font-weight:var(--font-weight-normal)}.login-form{display:flex;flex-direction:column;gap:var(--space-md)}.login-error{padding:var(--space-sm);background:var(--color-status-red);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--space-xs)}.error-icon{font-size:1rem}.form-group{display:flex;flex-direction:column;gap:var(--space-xs)}.form-group label{font-weight:var(--font-weight-semibold);color:var(--text-primary);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px}.theme-dark .form-group label{color:var(--color-gray-400)}.form-group input{padding:var(--space-sm);border:2px solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);font-family:inherit;color:var(--text-primary);background:var(--color-bg-primary)}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.form-group input:disabled{background:var(--color-gray-100);cursor:not-allowed;opacity:.6}.input-hint{margin:0;font-size:var(--font-size-xs);color:var(--text-secondary);font-style:italic}.login-type-toggle{display:flex;gap:var(--space-xs);margin-bottom:var(--space-xs)}.login-type-btn{flex:1;padding:var(--space-sm);border:2px solid var(--color-gray-300);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast),color var(--transition-fast);font-family:inherit;display:flex;align-items:center;justify-content:center;gap:var(--space-xs)}.login-type-btn svg{flex-shrink:0}.login-type-btn:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.login-type-btn.active{border-color:var(--color-primary);background:var(--color-primary-light);color:var(--color-primary)}.login-type-btn:disabled{opacity:.6;cursor:not-allowed}.pin-input{text-align:center;font-size:var(--font-size-xl)!important;letter-spacing:.5em;font-weight:var(--font-weight-bold)}.login-btn{padding:var(--space-sm);background:var(--color-primary);color:var(--text-on-primary);border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-fast),box-shadow var(--transition-fast);margin-top:var(--space-xs);box-shadow:var(--shadow-sm);font-family:inherit}.login-btn:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:var(--shadow-md)}.login-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.login-footer{margin-top:var(--space-lg);text-align:center;padding-top:var(--space-md);border-top:1px solid var(--color-gray-200)}.login-footer p{margin:0 0 var(--space-xs) 0;color:var(--text-secondary);font-size:var(--font-size-sm)}.register-link{background:none;border:none;color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;text-decoration:underline;transition:color var(--transition-fast);font-family:inherit}.register-link:hover{color:var(--color-primary-hover)}@media (max-width: 768px){.login-view{padding:var(--space-sm)}.login-container{padding:var(--space-lg)}.login-header{margin-bottom:var(--space-md)}.login-logo{width:182px;height:91px}.login-footer{margin-top:var(--space-md);padding-top:var(--space-sm)}}@media (max-width: 480px),(max-height: 600px){.login-view{padding:var(--space-xs);align-items:flex-start;padding-top:var(--space-lg)}.login-top-controls{top:var(--space-xs);right:var(--space-xs);gap:var(--space-xs)}.theme-toggle-btn{width:32px;height:32px}.theme-toggle-btn svg{width:16px;height:16px}.login-top-controls .language-switcher-btn{height:32px;min-width:32px;padding:6px 10px}.login-container{padding:var(--space-md);max-height:calc(100dvh - var(--space-xl));overflow-y:auto}.login-header{margin-bottom:var(--space-sm)}.login-logo{width:130px;height:65px;margin-bottom:var(--space-xs)}.login-form{gap:var(--space-sm)}.login-footer{margin-top:var(--space-sm);padding-top:var(--space-xs)}}@media (max-height: 500px){.login-view{padding:var(--space-xs);padding-top:var(--space-sm)}.login-container{padding:var(--space-sm)}.login-header{margin-bottom:var(--space-xs)}.login-logo{width:104px;height:52px;margin-bottom:0}.login-subtitle{font-size:var(--font-size-xs)}.login-form{gap:var(--space-xs)}.login-footer{margin-top:var(--space-xs);padding-top:var(--space-xs)}}@media (prefers-reduced-motion: reduce){.login-btn{transition:none}}.dev-login-btn{position:absolute;bottom:var(--space-sm);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:#1a1a2e;color:#00d4ff;border:1px dashed #00d4ff;border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-family:monospace;cursor:pointer;opacity:.7;transition:opacity var(--transition-fast),background var(--transition-fast)}.dev-login-btn:hover:not(:disabled){opacity:1;background:#0f3460}.dev-login-btn:disabled{opacity:.4;cursor:not-allowed}.dev-login-btn svg{flex-shrink:0}.school-dropdown-container{position:relative}.school-input-wrapper{position:relative;display:flex;align-items:center}.school-input-wrapper input{padding-right:40px;width:100%}.school-input-wrapper input.has-selection{color:var(--text-primary);font-weight:var(--font-weight-medium)}.dropdown-toggle{position:absolute;right:0;top:0;bottom:0;width:40px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast)}.dropdown-toggle:hover:not(:disabled){color:var(--color-primary)}.dropdown-toggle:disabled{opacity:.5;cursor:not-allowed}.dropdown-toggle svg{transition:transform var(--transition-fast)}.dropdown-toggle svg.rotated{transform:rotate(180deg)}.school-dropdown-list{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:200px;overflow-y:auto;background:var(--color-bg-primary);border:2px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:100;list-style:none;margin:0;padding:0}.school-dropdown-item{padding:var(--space-sm) var(--space-md);cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);transition:background var(--transition-fast)}.school-dropdown-item:hover,.school-dropdown-item.highlighted{background:var(--color-primary-light)}.school-dropdown-item.selected{background:var(--color-primary);color:#fff}.school-dropdown-item.selected .school-id{color:#fffc}.school-name{font-weight:var(--font-weight-medium);color:var(--text-primary)}.school-dropdown-item.selected .school-name{color:#fff}.school-id{font-size:var(--font-size-xs);color:var(--text-tertiary)}.school-dropdown-empty{padding:var(--space-md);text-align:center;color:var(--text-secondary);font-style:italic}.theme-dark .school-dropdown-list{background:var(--color-gray-800, #1e293b);border-color:var(--color-primary)}.theme-dark .school-dropdown-item:hover,.theme-dark .school-dropdown-item.highlighted{background:var(--color-gray-700, #334155)}.theme-dark .school-name{color:var(--color-gray-100, #f1f5f9)}.theme-dark .school-id{color:var(--color-gray-400, #94a3b8)}.forgot-password-link{display:block;background:none;border:none;color:var(--color-primary);font-size:var(--font-size-sm);cursor:pointer;padding:0;margin-top:calc(-1 * var(--space-xs));text-align:right;width:100%}.forgot-password-link:hover{text-decoration:underline}.reset-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0 0 var(--space-xs) 0}.reset-description{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0 0 var(--space-md) 0;line-height:1.5}.reset-code-input{text-align:center;font-size:var(--font-size-xl);letter-spacing:.5em;font-weight:var(--font-weight-bold)}.reset-resend-link{display:block;background:none;border:none;color:var(--text-secondary);font-size:var(--font-size-sm);cursor:pointer;padding:0;margin-top:var(--space-sm);text-align:center;width:100%}.reset-resend-link:hover:not(:disabled){color:var(--color-primary);text-decoration:underline}.reset-resend-link:disabled{opacity:.5;cursor:not-allowed}.reset-success{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);text-align:center;padding:var(--space-md) 0}.reset-success p{font-size:var(--font-size-md);color:var(--text-primary);margin:0}.reset-success .login-btn{width:100%}.register-view{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary);padding:var(--space-sm) var(--space-md);position:relative;box-sizing:border-box}.register-top-controls{position:fixed;top:var(--space-md);right:var(--space-md);z-index:10;display:flex;align-items:center;gap:var(--space-sm)}.register-top-controls .theme-toggle-btn{width:36px;height:36px;border-radius:var(--radius-md);border:1px solid var(--color-gray-300);background:var(--color-bg-primary);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast)}.register-top-controls .theme-toggle-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.register-container{background:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--space-lg);max-width:480px;width:100%;border:1px solid var(--color-card-border)}.register-header{text-align:center;margin-bottom:var(--space-xs)}.register-logo{width:140px;height:70px;object-fit:contain;margin:0 auto 4px;display:block}.register-subtitle{margin:0;color:var(--text-secondary);font-size:var(--font-size-base);font-weight:var(--font-weight-medium)}.step-indicator{display:flex;align-items:center;justify-content:center;gap:0;margin-bottom:var(--space-sm)}.step-dot{width:28px;height:28px;border-radius:50%;border:2px solid var(--color-gray-300);display:flex;align-items:center;justify-content:center;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--text-tertiary);background:var(--color-bg-primary);transition:all var(--transition-fast)}.step-dot.active{border-color:var(--color-primary);background:var(--color-primary);color:var(--text-on-primary)}.step-line{width:36px;height:2px;background:var(--color-gray-300);transition:background var(--transition-fast)}.step-line.active{background:var(--color-primary)}.register-form{display:flex;flex-direction:column;gap:var(--space-sm)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.register-error{padding:var(--space-sm);background:var(--color-status-red);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-error);font-weight:var(--font-weight-medium);display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);margin-bottom:var(--space-xs)}.register-error .error-icon{flex-shrink:0}.register-info{padding:6px var(--space-sm);background:var(--color-primary-light);border:1px solid var(--color-primary);border-radius:var(--radius-md);color:var(--color-primary);font-weight:var(--font-weight-medium)}.register-info p{margin:0;font-size:var(--font-size-sm);display:flex;align-items:center;gap:var(--space-xs)}.register-info .info-icon{flex-shrink:0}.dropdown-list{position:absolute;top:100%;left:0;right:0;background:var(--color-bg-primary);border:1px solid var(--color-card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);max-height:200px;overflow-y:auto;z-index:20;margin-top:2px}.form-group{position:relative}.dropdown-item{display:flex;justify-content:space-between;align-items:center;width:100%;padding:var(--space-sm) var(--space-md);border:none;background:none;cursor:pointer;text-align:left;font-family:inherit;font-size:var(--font-size-sm);color:var(--text-primary);transition:background var(--transition-fast)}.dropdown-item:hover,.dropdown-item.highlighted{background:var(--color-bg-hover)}.dropdown-item.selected{background:var(--color-primary-light);color:var(--color-primary)}.dropdown-item-name{font-weight:var(--font-weight-medium)}.dropdown-item-region{font-size:var(--font-size-xs);color:var(--text-tertiary)}.dropdown-empty{padding:var(--space-md);text-align:center;color:var(--text-tertiary);font-size:var(--font-size-sm)}.input-with-indicator{position:relative}.input-with-indicator input{padding-right:40px}.id-indicator{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:16px;font-weight:700}.id-indicator.checking{color:var(--text-tertiary)}.id-indicator.available{color:var(--color-status-green, #22c55e)}.id-indicator.taken{color:var(--color-error, #ef4444)}.optional-label{font-weight:var(--font-weight-normal);color:var(--text-tertiary);font-size:var(--font-size-xs);margin-left:var(--space-xs)}.verification-section{display:flex;flex-direction:column;gap:var(--space-xs)}.send-code-btn{padding:6px;background:var(--color-bg-hover);color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);font-family:inherit}.send-code-btn:hover:not(:disabled){background:var(--color-primary-light)}.send-code-btn:disabled{opacity:.5;cursor:not-allowed}.code-sent-msg{margin:0;font-size:var(--font-size-sm);color:var(--color-primary);text-align:center}.code-input-row{display:flex;gap:var(--space-sm);align-items:stretch}.code-input{flex:1;text-align:center;letter-spacing:.5em;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);padding:6px;border:1px solid var(--color-gray-300);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--text-primary);font-family:inherit}.code-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light)}.verify-code-btn{padding:var(--space-sm) var(--space-md);background:var(--color-primary);color:var(--text-on-primary);border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;font-family:inherit;white-space:nowrap}.verify-code-btn:disabled{opacity:.5;cursor:not-allowed}.resend-btn{background:none;border:none;color:var(--text-tertiary);font-size:var(--font-size-xs);cursor:pointer;text-decoration:underline;font-family:inherit;text-align:center}.resend-btn:hover{color:var(--color-primary)}.verified-badge{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:6px;background:#22c55e1a;border:1px solid rgba(34,197,94,.3);border-radius:var(--radius-md);color:#22c55e;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.form-actions{display:flex;gap:var(--space-sm)}.back-btn{flex:0 0 auto;padding:8px var(--space-md);background:var(--color-bg-hover);color:var(--text-secondary);border:1px solid var(--color-gray-300);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;display:flex;align-items:center;gap:var(--space-xs);font-family:inherit;transition:all var(--transition-fast)}.back-btn:hover:not(:disabled){background:var(--color-bg-secondary);border-color:var(--text-secondary)}.register-btn{flex:1;padding:8px;background:var(--color-primary);color:var(--text-on-primary);border:none;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background var(--transition-fast),box-shadow var(--transition-fast);box-shadow:var(--shadow-sm);font-family:inherit;display:flex;align-items:center;justify-content:center;gap:var(--space-xs)}.register-btn svg{flex-shrink:0}.register-btn:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:var(--shadow-md)}.register-btn:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}.register-footer{margin-top:var(--space-sm);text-align:center;padding-top:var(--space-sm);border-top:1px solid var(--color-gray-200)}.register-footer p{margin:0 0 var(--space-xs) 0;color:var(--text-secondary);font-size:var(--font-size-sm)}.login-link{background:none;border:none;color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;text-decoration:underline;transition:color var(--transition-fast);font-family:inherit}.login-link:hover{color:var(--color-primary-hover)}.input-hint{margin:var(--space-xs) 0 0;font-size:var(--font-size-xs);color:var(--text-tertiary);font-style:italic}@media (max-width: 768px){.register-view{padding:var(--space-xs)}.register-container{padding:var(--space-md)}.register-logo{width:120px;height:60px}}@media (max-width: 480px),(max-height: 700px){.register-view{padding:var(--space-xs);align-items:flex-start;padding-top:var(--space-md)}.register-top-controls{top:var(--space-xs);right:var(--space-xs)}.register-container{padding:var(--space-sm) var(--space-md)}.register-header{margin-bottom:4px}.register-logo{width:100px;height:50px;margin-bottom:2px}.register-subtitle{font-size:var(--font-size-sm)}.register-form{gap:var(--space-xs)}.form-row{grid-template-columns:1fr;gap:var(--space-xs)}.step-indicator{margin-bottom:var(--space-xs)}.step-dot{width:24px;height:24px;font-size:var(--font-size-xs)}.step-line{width:24px}.register-footer{margin-top:var(--space-xs);padding-top:var(--space-xs)}}@media (max-height: 550px){.register-view{padding:var(--space-xs);padding-top:var(--space-xs)}.register-container{padding:var(--space-xs) var(--space-sm)}.register-logo{width:80px;height:40px;margin-bottom:0}.register-subtitle{font-size:var(--font-size-xs)}.register-form{gap:4px}.register-footer{margin-top:4px;padding-top:4px}}.theme-dark .register-view .form-group label{color:var(--color-gray-400)}.theme-dark .register-view .form-group input{background:var(--color-bg-primary);color:var(--text-primary)}.theme-dark .code-input{background:var(--color-bg-secondary);color:var(--text-primary);border-color:var(--color-gray-600)}@media (prefers-reduced-motion: reduce){.register-btn,.step-dot,.step-line{transition:none}}.invite-register-view{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:2rem;position:relative;z-index:1}.invite-container{background:#fff;border-radius:20px;box-shadow:0 20px 60px #0000004d;padding:3rem;max-width:500px;width:100%;animation:slideIn .3s ease-out;position:relative;z-index:2;pointer-events:auto}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.invite-header{text-align:center;margin-bottom:2rem}.invite-logo{max-width:180px;height:auto;margin:0 auto 1rem;display:block}.invite-header h1{font-size:2rem;color:#1a1a2e;margin-bottom:.5rem}.invite-header.error h1{color:#ef4444}.invite-subtitle{color:#64748b;font-size:1rem;margin:0}.invite-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:600;color:#334155;font-size:.95rem}.form-group input{padding:.875rem 1rem;border:2px solid #e2e8f0;border-radius:10px;font-size:1rem;transition:all .2s;font-family:inherit}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input.readonly-field{background-color:#f8fafc;color:#64748b;cursor:not-allowed;border-color:#f1f5f9}.form-divider{display:flex;align-items:center;text-align:center;margin:.5rem 0}.form-divider:before,.form-divider:after{content:"";flex:1;border-bottom:1px solid #e2e8f0}.form-divider span{padding:0 1rem;color:#64748b;font-size:.9rem;font-weight:600}.submit-btn{padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:10px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .2s;margin-top:.5rem}.submit-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 25px #667eea4d}.submit-btn:active:not(:disabled){transform:translateY(0)}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.invite-footer{text-align:center;margin-top:2rem;padding-top:2rem;border-top:1px solid #e2e8f0}.invite-footer p{color:#64748b;margin-bottom:.75rem;font-size:.95rem}.login-link-btn{background:transparent;border:2px solid #667eea;color:#667eea;padding:.75rem 2rem;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.login-link-btn:hover:not(:disabled){background:#667eea;color:#fff;transform:translateY(-2px)}.login-link-btn:disabled{opacity:.5;cursor:not-allowed}.invite-error{text-align:center;padding:2rem 0}.invite-error p{color:#ef4444;font-size:1.1rem;margin-bottom:2rem;font-weight:500}.loading-spinner{width:50px;height:50px;border:4px solid #e2e8f0;border-top-color:#667eea;border-radius:50%;animation:spin .8s linear infinite;margin:2rem auto}@media (max-width: 640px){.invite-register-view{padding:1rem}.invite-container{padding:2rem 1.5rem}.invite-logo{max-width:140px}.invite-header h1{font-size:1.75rem}.form-group input{padding:.75rem;font-size:.95rem}.submit-btn{padding:.875rem;font-size:1rem}}.pending-approval-view{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f093fb,#f5576c);padding:2rem}.pending-container{background:#fff;border-radius:24px;box-shadow:0 20px 60px #0000004d;padding:3rem;max-width:600px;width:100%;text-align:center;animation:fadeIn .5s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.pending-icon{font-size:5rem;margin-bottom:1rem;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.pending-container h1{font-size:2rem;color:#1a1a2e;margin-bottom:1.5rem}.pending-message{text-align:left;background:#f8fafc;border-radius:16px;padding:1.5rem;margin-bottom:2rem}.pending-message p{margin:0 0 1rem;line-height:1.6;color:#334155;font-size:1rem}.pending-message p:last-child{margin-bottom:0}.pending-instruction{background:#fff3cd;border-left:4px solid #fbbf24;padding:1rem;border-radius:8px;margin-top:1rem!important}.pending-info-box{background:#f1f5f9;border-radius:16px;padding:1.5rem;margin-bottom:2rem;text-align:left}.pending-info-box h3{margin:0 0 1rem;font-size:1.1rem;color:#1a1a2e}.info-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid #e2e8f0}.info-item:last-child{border-bottom:none}.info-label{font-weight:600;color:#64748b;font-size:.95rem}.info-value{color:#1a1a2e;font-weight:500}.status-badge{padding:.5rem 1rem;border-radius:20px;font-size:.875rem;font-weight:600}.status-badge.pending{background:#fef3c7;color:#92400e}.logout-btn{width:100%;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:12px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .2s;margin-bottom:1.5rem}.logout-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #667eea4d}.logout-btn:active{transform:translateY(0)}.pending-footer{font-size:.875rem;color:#64748b;margin:0;line-height:1.5}@media (max-width: 640px){.pending-approval-view{padding:1rem}.pending-container{padding:2rem 1.5rem}.pending-container h1{font-size:1.5rem}.pending-icon{font-size:4rem}.info-item{flex-direction:column;align-items:flex-start;gap:.5rem}}.onboarding-checklist{position:fixed;bottom:var(--space-xl);right:var(--space-xl);background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-lg);max-width:360px;width:calc(100% - 2 * var(--space-xl));z-index:var(--z-sticky);animation:slideInUp .3s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.onboarding-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-xs)}.onboarding-title{display:flex;align-items:center;gap:var(--space-sm);color:var(--color-primary)}.onboarding-title h3{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.onboarding-actions{display:flex;gap:var(--space-xs)}.onboarding-btn-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast)}.onboarding-btn-icon:hover{background:var(--color-gray-100);color:var(--text-primary)}.onboarding-subtitle{margin:0 0 var(--space-md) 0;font-size:var(--font-size-sm);color:var(--text-secondary)}.onboarding-steps{list-style:none;padding:0;margin:0 0 var(--space-md) 0}.onboarding-step{margin-bottom:var(--space-xs)}.onboarding-step-btn{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-gray-200);border-radius:var(--radius-md);background:var(--color-white);cursor:pointer;transition:all var(--transition-fast);text-align:left}.onboarding-step-btn:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-light)}.onboarding-step-btn:disabled{cursor:default}.onboarding-step.completed .onboarding-step-btn{background:var(--color-status-green);border-color:var(--color-success)}.onboarding-step-check{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--text-tertiary)}.onboarding-step.completed .onboarding-step-check{color:var(--color-success)}.onboarding-step-label{flex:1;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary)}.onboarding-step.completed .onboarding-step-label{text-decoration:line-through;color:var(--text-secondary)}.onboarding-optional{display:block;font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--text-tertiary)}.onboarding-step-desc{display:block;font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--text-tertiary);line-height:1.3;margin-top:2px}.onboarding-step-arrow{color:var(--text-tertiary)}.onboarding-complete{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-status-green);border-radius:var(--radius-md);margin-bottom:var(--space-md);color:var(--color-success);font-weight:var(--font-weight-medium)}.onboarding-feedback-thanks{margin:0 0 var(--space-md) 0;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.4}.onboarding-dismiss-btn{width:100%;padding:var(--space-sm);border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-tertiary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.onboarding-dismiss-btn:hover{background:var(--color-gray-100);color:var(--text-secondary)}.onboarding-minimized{position:fixed;bottom:var(--space-xl);right:var(--space-xl);display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-gray-200);border-radius:var(--radius-full);background:var(--color-white);box-shadow:var(--shadow-md);cursor:pointer;transition:all var(--transition-fast);color:var(--color-primary);font-weight:var(--font-weight-medium);font-size:var(--font-size-sm);z-index:var(--z-sticky)}.onboarding-minimized:hover{box-shadow:var(--shadow-lg);border-color:var(--color-primary);transform:scale(1.05)}@media (max-width: 768px){.onboarding-checklist{bottom:calc(80px + env(safe-area-inset-bottom,0));right:var(--space-md);left:var(--space-md);width:auto;max-width:none}.onboarding-minimized{bottom:calc(80px + env(safe-area-inset-bottom,0));right:var(--space-md)}}.dashboard{min-height:100%;background:var(--color-bg-secondary);padding:var(--space-lg) 0;box-sizing:border-box}.dashboard-header{margin:0 auto var(--space-lg);padding:0 var(--space-md);display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.dashboard-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0;text-align:center;letter-spacing:-.02em}.current-time{font-size:var(--font-size-base);color:var(--text-secondary);font-weight:var(--font-weight-medium);padding:var(--space-xs) var(--space-md);background:var(--color-white);border-radius:var(--radius-full);border:1px solid var(--color-gray-200)}.cards-grid{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-lg);width:100%;justify-items:center}.group-card{background:var(--color-white);border:1px solid var(--color-card-border);border-radius:var(--radius-xl);padding:var(--space-md);display:flex;flex-direction:column;align-items:center;text-align:center;transition:all var(--transition-base);position:relative;overflow:hidden;width:100%;box-shadow:var(--shadow-sm)}.group-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary),var(--color-secondary, var(--color-primary-light)));transition:background var(--transition-base)}.group-card.blue:before{background:linear-gradient(90deg,#3b82f6,#60a5fa)}.group-card.green:before{background:linear-gradient(90deg,#22c55e,#4ade80)}.group-card.pink:before{background:linear-gradient(90deg,#f472b6,#f9a8d4)}.group-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.card-header{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);margin-bottom:var(--space-sm);width:100%}.group-emoji{font-size:2rem;display:inline-block;line-height:1}.group-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0;line-height:var(--line-height-tight);letter-spacing:-.01em}.teacher-badges{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-xs);width:100%}.teacher-badge{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:var(--color-gray-50);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.teacher-badge .teacher-icon{opacity:.6;flex-shrink:0}.teacher-badge .teacher-name{font-weight:var(--font-weight-medium);color:var(--text-primary)}.teacher-badge .teacher-phone{color:var(--text-secondary);font-size:var(--font-size-xs);padding-left:var(--space-sm);border-left:1px solid var(--color-gray-200);display:flex;align-items:center;gap:4px}.location-display{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--space-md);background:var(--color-gray-50);border-radius:var(--radius-lg);margin:var(--space-sm) 0;width:100%;flex:1;overflow-y:auto;overflow-x:hidden}.location-emoji{font-size:2rem;margin-bottom:var(--space-xs);line-height:1}.location-text{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--text-primary);text-align:center;line-height:var(--line-height-tight)}.locations-list{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-sm);width:100%}.location-display .location-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--space-sm);background:var(--color-white);border-radius:var(--radius-md);min-width:80px;max-width:120px;box-shadow:var(--shadow-sm);border:1px solid var(--color-gray-100)}.location-display .location-item .location-emoji{font-size:1.75rem;margin-bottom:2px}.location-display .location-item .location-text{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--text-primary);word-break:break-word;text-align:center}.location-teachers-compact{display:block;font-size:10px;color:var(--text-secondary);margin-top:2px;line-height:1.3;text-align:center}.teacher-inline{font-weight:var(--font-weight-medium)}.teacher-phone-inline{color:var(--text-tertiary);margin-left:2px;font-weight:var(--font-weight-normal);font-size:9px}.teacher-overflow{color:var(--text-tertiary);font-weight:var(--font-weight-normal)}.no-location-text{font-size:var(--font-size-base);color:var(--text-tertiary);font-style:italic}.card-footer{margin-top:auto;padding-top:var(--space-sm);border-top:1px solid var(--color-gray-100);display:flex;justify-content:center;align-items:center;width:100%}.update-time{font-size:var(--font-size-sm);color:var(--text-tertiary);display:flex;align-items:center;gap:var(--space-xs)}.update-time .time-icon{opacity:.5;flex-shrink:0}.group-card.location-changed{animation:cardHighlight .6s ease-out}@keyframes cardHighlight{0%{box-shadow:var(--shadow-sm)}50%{box-shadow:var(--shadow-lg);transform:translateY(-4px)}to{box-shadow:var(--shadow-sm);transform:translateY(0)}}.group-card.location-changed .location-display{animation:backgroundFlash .6s ease-out}@keyframes backgroundFlash{0%,to{background:var(--color-gray-50)}50%{background:var(--color-primary-light)}}.dashboard-footer{max-width:1400px;margin:var(--space-md) auto var(--space-sm)}.rainbow-bar{height:3px;border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--color-status-blue-border),var(--color-status-green-border),var(--color-status-orange-border));opacity:.3}@media (max-width: 640px){.dashboard{padding:var(--space-md);padding-top:var(--space-md);padding-bottom:calc(var(--space-md) + 56px + env(safe-area-inset-bottom,0));min-height:100%}.dashboard-header{flex-direction:column;align-items:center;gap:var(--space-sm);padding-top:0;margin-bottom:var(--space-lg)}.dashboard-title{font-size:var(--font-size-xl)}.current-time{font-size:var(--font-size-sm);padding:var(--space-xs) var(--space-md)}.last-updated{font-size:var(--font-size-mobile-xs)}.cards-grid{grid-template-columns:1fr;gap:var(--space-md);margin-top:0}.group-card{padding:var(--space-md);border-radius:var(--radius-xl);max-width:100%}.card-header{gap:var(--space-sm);margin-bottom:var(--space-sm)}.group-emoji{font-size:2rem}.group-name{font-size:var(--font-size-lg)}.teacher-badge{padding:var(--space-xs) var(--space-sm)}.teacher-name{font-size:var(--font-size-sm)}.location-display{min-height:110px;padding:var(--space-md);margin:var(--space-sm) 0}.location-emoji{font-size:2.25rem;margin-bottom:var(--space-sm)}.location-text{font-size:var(--font-size-base)}.locations-list{gap:var(--space-md)}.location-display .location-item{min-width:100px;padding:var(--space-sm)}.location-display .location-item .location-emoji{font-size:2rem}.location-display .location-item .location-text{font-size:var(--font-size-sm)}.location-teachers-compact{font-size:10px}.card-footer{padding-top:var(--space-sm)}.update-time{font-size:var(--font-size-xs)}.dashboard-footer{margin-top:var(--space-xl);margin-bottom:var(--space-md)}}@media (min-width: 641px) and (max-width: 768px){.dashboard{padding:var(--space-lg)}.dashboard-title{font-size:var(--font-size-2xl)}.cards-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-lg)}.group-card{max-width:100%}.location-display{min-height:120px}}@media (min-width: 769px) and (max-width: 1024px){.dashboard{padding:var(--space-xl) var(--space-lg)}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg)}.group-card{max-width:360px}}@media (min-width: 1025px){.dashboard{padding:var(--space-xl) var(--space-lg)}.cards-grid{grid-template-columns:repeat(3,1fr);gap:var(--space-xl)}.group-card{max-width:380px}.group-emoji{font-size:2.75rem}.location-emoji{font-size:3.25rem}}@media (prefers-contrast: high){.group-card{border-width:2px}.location-display{background:var(--color-gray-100)}}@media (prefers-reduced-motion: reduce){.group-card,.group-card.location-changed,.location-display{animation:none;transition:none}.group-card:hover{transform:none}.carousel-track{transition:none}}.theme-dark .dashboard{background:#111827}.theme-dark .dashboard-title{color:#f9fafb}.theme-dark .current-time{background:#374151;border-color:#4b5563;color:#e5e7eb}.theme-dark .group-card{background:#1e293b;border-color:#334155;box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003}.theme-dark .group-card:hover{background:#243548;box-shadow:0 10px 15px -3px #0006,0 4px 6px -2px #0000004d}.theme-dark .group-name{color:#f1f5f9}.theme-dark .location-display{background:#0f172a;border:1px solid #334155}.theme-dark .location-text{color:#e2e8f0}.theme-dark .location-display .location-item{background:#1e293b;border:1px solid #334155}.theme-dark .location-teachers-compact{color:#e2e8f0}.theme-dark .teacher-phone-inline,.theme-dark .no-location-text{color:#64748b}.theme-dark .teacher-badge{background:#0f172a;border:1px solid #334155}.theme-dark .teacher-badge .teacher-name{color:#e2e8f0}.theme-dark .teacher-badge .teacher-phone{color:#94a3b8;border-left-color:#475569}.theme-dark .card-footer{border-top-color:#334155}.theme-dark .update-time{color:#94a3b8}.theme-dark .rainbow-bar{opacity:.5}.theme-dark .group-card.location-changed .location-display{animation:backgroundFlashDark .6s ease-out}@keyframes backgroundFlashDark{0%,to{background:#0f172a}50%{background:#1e3a5f}}.empty-dashboard{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-3xl) var(--space-lg);text-align:center;min-height:400px}.empty-dashboard .empty-logo{width:120px;height:auto;margin-bottom:var(--space-xl);opacity:.6}.empty-dashboard .empty-text{font-size:var(--font-size-lg);color:var(--text-tertiary);margin:0;font-weight:var(--font-weight-normal)}.carousel-wrapper{position:relative;max-width:1200px;margin:0 auto;padding:0 56px;box-sizing:border-box}.carousel-viewport{overflow:hidden;border-radius:var(--radius-lg)}.carousel-track{display:flex;align-items:stretch;transition:transform .25s ease-out;will-change:transform}.carousel-track.no-transition{transition:none}.carousel-card{flex-shrink:0;padding:0 var(--space-sm);box-sizing:border-box;display:flex}.carousel-card .group-card{width:100%;display:flex;flex-direction:column;flex:1}.carousel-arrow{position:absolute;top:calc(50% - 20px);transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:1px solid var(--color-gray-200);background:var(--color-white);box-shadow:var(--shadow-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);transition:all var(--transition-fast);z-index:10}.carousel-arrow-left{left:0}.carousel-arrow-right{right:0}.carousel-arrow:hover{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-white);box-shadow:var(--shadow-lg)}.carousel-arrow:active{transform:translateY(-50%) scale(.95)}.carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:var(--space-lg)}.carousel-dot{width:10px;height:10px;border-radius:50%;border:none;background:var(--color-gray-300);cursor:pointer;padding:0;transition:all .3s ease}.carousel-dot:hover{background:var(--color-gray-400);transform:scale(1.2)}.carousel-dot.active{background:var(--color-primary);transform:scale(1.2)}.theme-dark .carousel-arrow{background:#1e293b;border-color:#475569;color:#94a3b8}.theme-dark .carousel-arrow:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.theme-dark .carousel-dot{background:#475569}.theme-dark .carousel-dot:hover{background:#64748b}.theme-dark .carousel-dot.active{background:var(--color-primary)}@media (max-width: 1024px){.carousel-wrapper{padding:0 50px}}@media (max-width: 640px){.carousel-wrapper{padding:0 44px}.carousel-arrow{width:36px;height:36px}.carousel-dots{margin-top:var(--space-md)}.carousel-dot{width:8px;height:8px}.location-display .location-item{min-width:70px;max-width:100px;padding:var(--space-xs)}.location-display .location-item .location-emoji{font-size:1.5rem}.location-display .location-item .location-text{font-size:10px}}.app{height:100vh;height:100dvh;display:flex;flex-direction:column;background:var(--color-bg-secondary);overflow:hidden}.app.has-impersonation-banner .app-nav{top:44px}.app.has-impersonation-banner .app-main{margin-top:108px}.app-nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-nav);display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs) var(--space-xl);background:var(--color-white);border-bottom:1px solid var(--color-gray-200);box-shadow:var(--shadow-sm);min-height:52px}:root:fullscreen .app-nav,:root:fullscreen .feedback-fab-wrapper,:root:-webkit-full-screen .app-nav,:root:-webkit-full-screen .feedback-fab-wrapper,:root:-moz-full-screen .app-nav,:root:-moz-full-screen .feedback-fab-wrapper{display:none!important}.app-nav.staff-preview-active{z-index:calc(var(--z-modal) + 100)}.app-nav.staff-preview-active .nav-right{filter:blur(3px);opacity:.3;pointer-events:none}.app-nav.staff-preview-active .nav-logo-btn,.app-nav.staff-preview-active .nav-divider{filter:blur(3px);opacity:.3}.nav-left,.nav-right{display:flex;gap:var(--space-sm);align-items:center}.nav-btn{display:flex;align-items:center;gap:var(--space-xs);min-height:var(--button-height-md);padding:var(--space-sm) var(--space-md);border:none;border-radius:var(--radius-md);background:transparent;cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-secondary);transition:all var(--transition-fast)}.nav-btn:hover{background:var(--color-bg-hover);color:var(--text-primary)}.nav-btn.active{background:var(--color-primary-light);color:var(--color-primary)}.nav-btn.flash-guide{animation:nav-flash 1.5s ease-in-out 3}@keyframes nav-flash{0%,to{box-shadow:0 0 0 0 var(--color-primary);transform:scale(1)}50%{box-shadow:0 0 0 8px var(--color-primary-light),0 0 20px var(--color-primary);transform:scale(1.05)}}.nav-btn.nav-blur-effect{filter:blur(3px);opacity:.3;pointer-events:none;transition:filter .3s ease,opacity .3s ease}.nav-btn.nav-staff-accessible{filter:blur(0)!important;opacity:1!important;z-index:1000;position:relative;animation:pulse-glow 1.5s ease-in-out infinite!important;background:var(--color-primary-light)!important}@keyframes pulse-glow{0%,to{box-shadow:0 0 #10b981;transform:scale(1)}50%{box-shadow:0 0 0 10px #10b9814d,0 0 30px #10b981;transform:scale(1.05)}}.staff-preview-message{position:fixed;top:68px;left:var(--space-xl);z-index:calc(var(--z-modal) + 50);max-width:500px;animation:slide-down .3s ease-out}@keyframes slide-down{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.staff-preview-content{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);background:#10b981;border:2px solid #059669;border-radius:var(--radius-lg);box-shadow:0 10px 40px #10b98166;color:#fff}.staff-preview-content svg{flex-shrink:0;margin-top:2px;color:#fff}.staff-preview-content strong{display:block;margin-bottom:var(--space-xs);font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:#fff}.staff-preview-content p{margin:0;font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);color:#fff}.nav-icon{flex-shrink:0;opacity:.8}.nav-btn:hover .nav-icon,.nav-btn.active .nav-icon{opacity:1}.nav-text{font-weight:var(--font-weight-medium)}.nav-logo-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-xs);border:none;border-radius:var(--radius-md);background:transparent;cursor:pointer;transition:all var(--transition-fast)}.nav-logo-btn:hover{background:var(--color-bg-hover)}.nav-logo{height:34px;width:auto;object-fit:contain}.nav-divider{width:1px;height:24px;background:var(--color-gray-200);margin:0 var(--space-xs)}.user-info{display:flex;align-items:center;gap:var(--space-sm);padding:0 var(--space-sm)}.user-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--text-primary)}.user-role-badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:var(--font-weight-medium);padding:2px 6px;border-radius:var(--radius-full);text-transform:capitalize}.user-role-badge.admin{background:var(--color-status-orange);color:#b45309}.user-role-badge.teacher{background:var(--color-status-blue);color:#1d4ed8}.dev-btn{padding:var(--space-sm);color:var(--text-secondary)}.dev-btn:hover{color:#8b5cf6}.dev-btn.active{color:#8b5cf6;background:#8b5cf61a}.settings-btn{padding:var(--space-xs) var(--space-sm);color:var(--text-secondary);height:var(--button-height-md)}.settings-btn:hover{color:var(--text-primary)}.settings-btn.active{color:var(--color-primary)}.nav-controls{display:flex;align-items:center;gap:var(--space-xs);padding:0 var(--space-xs);border-left:1px solid var(--color-gray-200);border-right:1px solid var(--color-gray-200);margin:0 var(--space-xs)}.nav-control-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.nav-control-btn:hover{background:var(--color-bg-hover);color:var(--text-primary)}.nav-control-btn svg{flex-shrink:0}.theme-toggle-btn:hover{color:var(--color-warning)}.nav-language-switcher .language-switcher-btn{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:transparent;border:none}.nav-language-switcher .language-switcher-btn:hover{background:var(--color-bg-hover)}.nav-language-switcher .language-flag{width:22px;height:16px;border-radius:2px;object-fit:cover}.logout-btn{display:flex;align-items:center;justify-content:center;align-self:center;gap:5px;height:30px;padding:0 var(--space-sm);border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-sm);background:#ef444414;color:#dc2626;cursor:pointer;font-size:12px;font-weight:var(--font-weight-medium);transition:all var(--transition-fast);margin:0}.logout-btn:hover{background:#dc2626;border-color:#dc2626;color:#fff}.logout-btn:active{background:#b91c1c;border-color:#b91c1c}.logout-text{font-weight:var(--font-weight-medium)}.app-main{flex:1;padding-top:52px;overflow-y:auto;overflow-x:hidden}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:var(--space-lg)}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:var(--radius-round);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--text-secondary)}.unauthorized-message{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;text-align:center;padding:var(--space-3xl)}.unauthorized-message h2{margin:0 0 var(--space-md) 0;color:var(--text-primary);font-size:var(--font-size-3xl);font-weight:var(--font-weight-medium)}.unauthorized-message p{margin:0;color:var(--text-secondary);font-size:var(--font-size-lg);line-height:var(--line-height-relaxed)}.role-info{margin-top:var(--space-sm);font-size:var(--font-size-sm);font-style:italic;color:var(--text-tertiary)}@media (max-width: 640px){.app{padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}.app-nav{position:fixed;inset:auto 0 0;flex-direction:row;justify-content:space-around;padding:var(--space-xs) var(--space-xs);padding-bottom:calc(var(--space-xs) + env(safe-area-inset-bottom,0));border-bottom:none;border-top:1px solid var(--color-gray-200);box-shadow:0 -2px 10px #0000001a;gap:0;min-height:auto}.nav-left{flex:1;justify-content:space-around;gap:0}.nav-right{display:contents}.nav-btn{flex-direction:column;min-width:44px;min-height:44px;padding:4px;justify-content:center;gap:1px;border-radius:var(--radius-md)}.nav-btn.active{background:var(--color-primary-light)}.nav-text{display:block;font-size:9px;font-weight:var(--font-weight-medium);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56px}.nav-icon{width:20px;height:20px}.user-info,.nav-logo-btn,.nav-divider{display:none}.nav-controls{display:flex;gap:2px;padding:0;margin:0;border:none}.nav-control-btn{width:40px;height:40px;flex-direction:column}.nav-control-btn svg{width:18px;height:18px}.nav-language-switcher .language-switcher-btn{width:40px;height:40px}.settings-btn{flex-direction:column;min-width:44px;min-height:44px;padding:4px;gap:1px}.logout-btn{flex-direction:column;min-width:44px;min-height:44px;padding:4px;gap:1px;border:none;background:transparent;color:#dc2626}.logout-btn:hover,.logout-btn:active{background:#ef44441a;color:#dc2626}.logout-text{display:block;font-size:9px;font-weight:var(--font-weight-medium);line-height:1}.app-main{padding-top:0;padding-bottom:0}.unauthorized-message{padding:var(--space-mobile-lg);min-height:calc(100vh - 72px - env(safe-area-inset-bottom,0))}.unauthorized-message h2{font-size:var(--font-size-mobile-lg)}.unauthorized-message p{font-size:var(--font-size-mobile-sm)}.feedback-fab-wrapper{bottom:calc(80px + env(safe-area-inset-bottom,0))}.staff-preview-message{top:auto;bottom:calc(72px + env(safe-area-inset-bottom,0));width:calc(100% - var(--space-md) * 2)}.staff-preview-content{padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}.staff-preview-content strong{font-size:var(--font-size-sm)}.staff-preview-content p{font-size:var(--font-size-xs)}}@media (min-width: 641px) and (max-width: 768px){.app-nav{flex-direction:row;flex-wrap:nowrap;gap:var(--space-sm);padding:var(--space-sm) var(--space-md)}.nav-left{flex:1;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:var(--space-xs)}.nav-left::-webkit-scrollbar{display:none}.nav-right{flex-shrink:0;gap:var(--space-xs)}.nav-btn{min-height:var(--button-height-md);padding:var(--space-xs) var(--space-sm);white-space:nowrap;flex-shrink:0}.nav-text{font-size:var(--font-size-xs)}.user-info{display:none}.nav-logo{height:26px}.nav-divider{height:20px;margin:0 var(--space-xs)}.nav-controls{gap:2px;padding:0 var(--space-xs);margin:0 var(--space-xs)}.nav-control-btn,.nav-language-switcher .language-switcher-btn{width:32px;height:32px}.logout-btn{min-height:var(--button-height-md);padding:var(--space-xs) var(--space-sm)}.logout-text{display:none}.app-main{padding-top:60px}}@media (min-width: 769px){.nav-btn,.logout-btn{min-height:var(--button-height-md)}}@media (prefers-reduced-motion: reduce){.nav-btn,.logout-btn,.loading-spinner{animation:none;transition:none}.nav-btn.nav-staff-accessible,.staff-preview-message{animation:none}}
