*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff;--bg-surface:#f5f5f7;--bg-card:#fff;--primary:#0071e3;--primary-hover:#0077ed;--primary-light:#0071e314;--secondary:#7c3aed;--success:#34c759;--warning:#ff9500;--danger:#ff3b30;--text:#1d1d1f;--text-secondary:#86868b;--text-tertiary:#aeaeb2;--border:#d2d2d7;--border-light:#e8e8ed;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 30px #0000001a;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--transition:.2s ease}html{scroll-behavior:smooth}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}h1,h2,h3,h4,h5,h6{color:var(--text);font-weight:700;line-height:1.2}h1{font-size:clamp(2rem,5vw,3.5rem)}h2{font-size:clamp(1.5rem,3.5vw,2.5rem)}h3{font-size:clamp(1.2rem,2.5vw,1.5rem)}p{color:var(--text-secondary);line-height:1.7}a{color:var(--primary);transition:color var(--transition);text-decoration:none}a:hover{color:var(--primary-hover)}.btn{cursor:pointer;transition:all var(--transition);border:none;border-radius:980px;justify-content:center;align-items:center;gap:8px;padding:12px 28px;font-size:1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-outline{color:var(--primary);border:1.5px solid var(--primary);background:0 0}.btn-outline:hover{background:var(--primary-light)}.btn-lg{padding:16px 36px;font-size:1.1rem}.btn-sm{padding:8px 20px;font-size:.875rem}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.card{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-light);transition:all var(--transition);padding:32px}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.form-group{flex-direction:column;gap:6px;margin-bottom:20px;display:flex}.form-label{color:var(--text);font-size:.875rem;font-weight:600}.form-input{border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:1rem;font-family:var(--font);background:var(--bg);color:var(--text);transition:all var(--transition);outline:none;padding:12px 16px}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.form-input::placeholder{color:var(--text-tertiary)}.form-input.error{border-color:var(--danger);box-shadow:0 0 0 3px #ff3b3014}.form-error{color:var(--danger);margin-top:2px;font-size:.8rem}.form-hint{color:var(--text-tertiary);margin-top:2px;font-size:.8rem}.auth-container{background:var(--bg-surface);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--bg-card);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:440px;padding:48px}.auth-logo{justify-content:center;align-items:center;gap:10px;margin-bottom:32px;text-decoration:none;display:flex}.auth-logo svg{width:32px;height:32px}.auth-logo span{color:var(--text);font-size:1.5rem;font-weight:700}.auth-title{text-align:center;margin-bottom:8px;font-size:1.5rem}.auth-subtitle{text-align:center;color:var(--text-secondary);margin-bottom:32px;font-size:.95rem}.auth-divider{color:var(--text-tertiary);align-items:center;gap:16px;margin:24px 0;font-size:.85rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border-light);flex:1;height:1px}.auth-footer{text-align:center;color:var(--text-secondary);margin-top:24px;font-size:.9rem}.auth-footer a{font-weight:600}.alert{border-radius:var(--radius-sm);align-items:center;gap:10px;margin-bottom:20px;padding:14px 18px;font-size:.9rem;display:flex}.alert-success{color:#1a7a35;background:#34c7591a;border:1px solid #34c75933}.alert-error{color:#cc2d26;background:#ff3b301a;border:1px solid #ff3b3033}.alert-info{background:var(--primary-light);color:#005bb5;border:1px solid #0071e333}.spinner{border:2.5px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}.spinner-dark{border-color:#0000001a;border-top-color:var(--primary)}@keyframes spin{to{transform:rotate(360deg)}}.container{max-width:1200px;margin:0 auto;padding:0 24px}@media (max-width:768px){.auth-card{padding:32px 24px}}
