:root{--bg-primary: #f0f4ff;--brand-primary: #1a3a6b;--brand-accent: #ff6b00;--brand-green: #138808;--text-primary: #1a1a2e;--text-secondary: #555577;--border: #dde3f5;--font-heading: "Sora", sans-serif;--font-body: "Noto Sans", sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#1a3a6b;opacity:.3;border-radius:99px}.btn-primary{background:var(--brand-primary);color:#fff;border:none;border-radius:8px;padding:.6rem 1.4rem;font-family:var(--font-heading);font-weight:600;font-size:.95rem;cursor:pointer;transition:background .2s,transform .1s;width:100%}.btn-primary:hover{background:#0f2549;transform:translateY(-1px)}.btn-primary:disabled{opacity:.65;cursor:not-allowed;transform:none}.form-input{width:100%;padding:.75rem 1rem;border:1.5px solid var(--border);border-radius:8px;font-family:var(--font-body);font-size:.95rem;color:var(--text-primary);background:#fff;outline:none;transition:border-color .2s}.form-input:focus{border-color:var(--brand-primary)}.error-msg{color:#c0392b;font-size:.85rem;background:#fdecea;padding:.45rem .75rem;border-radius:8px;border-left:3px solid #c0392b}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a3a6b,#0f2549 60%,#138808)}.auth-card{background:#fff;border-radius:16px;padding:2.5rem;width:100%;max-width:420px;box-shadow:0 8px 40px #0003}.auth-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.3rem}.form-group label{font-size:.85rem;font-weight:500;color:var(--text-secondary)}.auth-link{text-align:center;margin-top:1.2rem;font-size:.88rem;color:var(--text-secondary)}.auth-link a{color:var(--brand-primary);font-weight:600;text-decoration:none}.auth-link a:hover{text-decoration:underline}@keyframes fadeInUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes dotPulse{0%,80%,to{transform:scale(.7);opacity:.4}40%{transform:scale(1);opacity:1}}@keyframes micPulse{0%{box-shadow:0 0 #c0392b80}70%{box-shadow:0 0 0 8px #c0392b00}to{box-shadow:0 0 #c0392b00}}
