:root{--bg: #f9fafb;--surface: #ffffff;--accent: #2563eb;--accent-soft: #eff6ff;--accent-pressed: #1d4ed8;--text: #111827;--dim: #6b7280;--faint: #9ca3af;--line: #e5e7eb;--fill: #f3f4f6;--danger: #dc2626;--danger-soft: #fef2f2;--success: #16a34a;--success-soft: #f0fdf4;--warn: #d97706;--warn-soft: #fffbeb;--r-sm: 10px;--r-md: 14px;--r-lg: 24px;--f-caption: 13px;--f-body: 15px;--f-title: 17px;--f-screen: 22px;--screen-pad: 16px;--shadow: 0 6px 24px rgba(17, 24, 39, .08)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,sans-serif;background:var(--bg);color:var(--text);font-size:var(--f-body);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;border:0;cursor:pointer;background:none;padding:0}input,select{font:inherit}.container{max-width:1180px;margin:0 auto;padding:0 var(--screen-pad)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:var(--r-md);background:var(--accent);color:#fff;font-weight:700;font-size:var(--f-body);transition:background .15s}.btn:hover{background:var(--accent-pressed)}.btn-secondary{background:var(--accent-soft);color:var(--accent)}.btn-secondary:hover{background:#dbeafe}.btn-ghost{background:var(--fill);color:var(--text)}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;background:var(--fill);color:var(--dim);font-size:var(--f-caption);font-weight:600;white-space:nowrap;transition:background .15s,color .15s}.chip:hover{background:var(--line)}.chip.active{background:var(--accent);color:#fff}.card{background:var(--surface);border-radius:var(--r-md);border:1px solid var(--line)}.input{height:44px;padding:0 14px;border-radius:var(--r-sm);border:1.5px solid var(--line);background:var(--surface);font-size:var(--f-body);color:var(--text);width:100%;outline:none;transition:border-color .15s}.input:focus{border-color:var(--accent)}@keyframes shimmer{0%{opacity:.55}50%{opacity:1}to{opacity:.55}}.skeleton{background:var(--fill);border-radius:var(--r-sm);animation:shimmer 1.2s infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--fill);border-top-color:var(--accent);animation:spin .8s linear infinite;margin:40px auto}
