*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #667eea;--primary-dark: #5a67d8;--danger: #e53e3e;--success: #38a169;--text: #2d3748;--text-light: #718096;--border: #e2e8f0;--bg: #f7fafc;--card-bg: #ffffff;--radius: 10px;--shadow: 0 4px 24px rgba(0,0,0,.08)}body{font-family:Inter,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}.auth-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:24px}.auth-card{background:var(--card-bg);border-radius:16px;box-shadow:var(--shadow);padding:40px 36px;width:100%;max-width:420px}.auth-logo{text-align:center;margin-bottom:28px}.auth-logo h1{font-size:1.8rem;font-weight:700;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.auth-logo p{color:var(--text-light);font-size:.9rem;margin-top:4px}.form-group{margin-bottom:18px}.form-group label{display:block;font-size:.875rem;font-weight:500;margin-bottom:6px;color:var(--text)}.form-group input{width:100%;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:.95rem;font-family:inherit;transition:border-color .2s;outline:none}.form-group input:focus{border-color:var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:11px 20px;border:none;border-radius:var(--radius);font-size:.95rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .2s,opacity .2s;width:100%}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-primary:hover:not(:disabled){opacity:.9}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--primary);width:auto;padding:0;font-weight:500;font-size:.875rem}.btn-ghost:hover{text-decoration:underline}.alert{padding:10px 14px;border-radius:var(--radius);font-size:.875rem;margin-bottom:16px}.alert-error{background:#fff5f5;color:var(--danger);border:1px solid #fed7d7}.alert-success{background:#f0fff4;color:var(--success);border:1px solid #c6f6d5}.auth-footer{text-align:center;margin-top:20px;font-size:.875rem;color:var(--text-light)}.auth-footer a,.auth-link{color:var(--primary);text-decoration:none;font-weight:500;background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.auth-footer a:hover,.auth-link:hover{text-decoration:underline}.forgot-link{display:block;text-align:right;font-size:.8rem;color:var(--text-light);margin-top:-10px;margin-bottom:18px}.forgot-link a{color:var(--primary);text-decoration:none}.navbar{background:var(--card-bg);border-bottom:1px solid var(--border);padding:0 32px;height:64px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:0 1px 8px #0000000d}.navbar-brand{font-size:1.25rem;font-weight:700;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.navbar-user{display:flex;align-items:center;gap:16px;font-size:.9rem;color:var(--text-light)}.btn-logout{padding:7px 16px;background:transparent;border:1.5px solid var(--border);border-radius:8px;font-size:.85rem;font-weight:500;cursor:pointer;color:var(--text);font-family:inherit;transition:border-color .2s,color .2s;width:auto}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.page-content{max-width:960px;margin:48px auto;padding:0 24px}.welcome-card{background:var(--card-bg);border-radius:16px;padding:40px;box-shadow:var(--shadow);text-align:center}.welcome-card h2{font-size:2rem;font-weight:700;margin-bottom:12px}.welcome-card p{color:var(--text-light);font-size:1.05rem}.user-meta{margin-top:24px;display:inline-flex;gap:24px;background:var(--bg);border-radius:10px;padding:16px 28px;font-size:.875rem;color:var(--text-light)}.user-meta strong{color:var(--text)}.spinner-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
