:root{--bg: #eef1f4;--surface: #ffffff;--surface2: #f5f7f9;--border: #dde3e9;--text: #1a2733;--muted: #5b6b7b;--header-bg: #2b3a4a;--header-text: #eef3f7;--accent: #9c5a2d;--accent-contrast: #ffffff;--accent-bg: #9c5a2d1f;--ok: #2e7d32;--ok-bg: #e8f3e9;--warn: #b26a00;--warn-bg: #faf0df;--err: #c62828;--err-bg: #fbeaea;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 4px 16px rgba(0, 0, 0, .06);--radius: 12px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:IBM Plex Sans,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}code,.mono{font-family:IBM Plex Mono,ui-monospace,monospace}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}input,select,button{font-family:inherit;font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{min-height:44px;padding:0 22px;border:none;border-radius:9px;background:var(--accent);color:var(--accent-contrast);font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s ease}.btn:hover:not(:disabled){filter:brightness(1.06)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.input{width:100%;min-height:44px;padding:0 14px;border:1px solid var(--border);border-radius:9px;background:var(--surface2);color:var(--text)}.input:focus{outline:2px solid var(--accent);outline-offset:-1px}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:500;background:var(--surface);border:1px solid var(--border)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok{background:var(--ok)}.dot-err{background:var(--muted)}.dot-warn{background:var(--warn)}.muted{color:var(--muted)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes riseIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .4s ease both}.rise-in{animation:riseIn .45s ease both}.spinner{width:18px;height:18px;border:2px solid var(--accent-bg);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
