:root{--bg: #0a0a0e;--surface: #131318;--surface-2: #1c1c24;--border: #2a2a35;--text: #f0f0f5;--text-secondary: #8888a0;--accent: #52b788;--accent-hover: #40916c;--accent-dim: rgba(82, 183, 136, .12);--error: #e55353;--radius: 12px;--radius-sm: 8px}*{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;min-height:100dvh;-webkit-font-smoothing:antialiased}#root{min-height:100dvh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}input,textarea,select{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:inherit;font-size:1rem;outline:none;padding:.875rem 1rem;transition:border-color .2s;width:100%}input:focus,textarea:focus,select:focus{border-color:var(--accent)}input::placeholder,textarea::placeholder{color:var(--text-secondary)}button{cursor:pointer;font-family:inherit;font-weight:600;transition:all .15s}.btn-primary{background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;font-size:1rem;padding:.875rem 1.5rem;width:100%}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{background:var(--border);color:var(--text-secondary);cursor:not-allowed}.btn-ghost{background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.875rem;padding:.625rem 1rem}.btn-ghost:hover{border-color:var(--text-secondary);color:var(--text)}.page{max-width:480px;margin:0 auto;padding:1.5rem 1.25rem 3rem;min-height:100dvh}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.label{color:var(--text-secondary);font-size:.8125rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;margin-bottom:.5rem;display:block}.error-msg{color:var(--error);font-size:.875rem;margin-top:.5rem}.stack{display:flex;flex-direction:column;gap:1rem}.stack-sm{display:flex;flex-direction:column;gap:.5rem}.fade-in{animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.loading-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;gap:1.5rem;text-align:center;padding:2rem}.loading-page p{color:var(--text-secondary);font-size:1.1rem}
