:root{--bg: #f5f7fa;--card: #ffffff;--text: #1f2933;--muted: #616e7c;--border: #cbd2d9;--primary: #2563eb;--danger: #c62828;--success: #2e7d32}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Noto Sans TC,Microsoft JhengHei,sans-serif;background:var(--bg);color:var(--text)}.card{width:100%;max-width:480px;padding:32px;background:var(--card);border:1px solid var(--border);border-radius:8px}.card-wide{max-width:960px}h1{margin:0 0 24px;font-size:1.5rem}.field{margin-bottom:20px}label{display:block;margin-bottom:6px;font-weight:600}input[type=text],input[type=password]{width:100%;padding:8px 10px;font:inherit;border:1px solid var(--border);border-radius:4px}input[aria-invalid=true]{border-color:var(--danger)}.hint{margin:6px 0 0;font-size:.85rem;color:var(--muted)}.error{margin:6px 0 0;font-size:.85rem;color:var(--danger)}button{width:100%;padding:10px;font:inherit;font-weight:600;color:#fff;background:var(--primary);border:0;border-radius:4px;cursor:pointer}button.secondary{width:auto;padding:6px 14px;color:var(--primary);background:transparent;border:1px solid var(--border)}button:disabled{opacity:.6;cursor:progress}progress{width:100%;margin-top:12px}.alert{margin:16px 0 0;padding:10px 12px;border-radius:4px}.alert-error{color:var(--danger);background:#fdecea}.alert-success{color:var(--success);background:#edf7ee}
