:root{--brand: #882C86;--brand-700: #6E2370;--brand-50: #F4E9F3;--ink-900: #2B2B2D;--ink: #4E4E50;--ink-500: #767678;--bg: #FFFFFF;--surface: #FAFAFA;--surface-2: #F4F4F5;--border: #E5E5E6;--danger: #C2334B;--danger-50: #FBEAED;--success: #2E7D5B;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--s7: 48px;--r-sm: 6px;--r: 8px;--r-lg: 12px;--shadow: 0 1px 2px rgba(43,43,45,.06), 0 1px 3px rgba(43,43,45,.1);--shadow-lg: 0 10px 30px rgba(43,43,45,.14);--ring: 0 0 0 3px rgba(136,44,134,.3);--font: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--z-modal: 50}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:16px;line-height:1.55;color:var(--ink);background:var(--surface);-webkit-font-smoothing:antialiased}h1,h2,h3{color:var(--ink-900);line-height:1.25;margin:0 0 var(--s3)}h1{font-size:1.6rem;font-weight:700}h2{font-size:1.25rem;font-weight:600}a{color:var(--brand)}.wordmark{display:inline-flex;align-items:center;gap:var(--s2);font-weight:800;letter-spacing:.02em}.wordmark .deco{background:var(--brand);color:#fff;padding:2px 8px;border-radius:var(--r-sm)}.wordmark .inparis{color:var(--ink)}.container{max-width:1040px;margin:0 auto;padding:var(--s5) var(--s4)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:var(--s3) var(--s5);background:var(--bg);border-bottom:1px solid var(--border)}.center-screen{min-height:100%;display:grid;place-items:center;padding:var(--s5)}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:var(--s5)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);font:inherit;font-weight:600;line-height:1;cursor:pointer;padding:11px 16px;min-height:44px;border-radius:var(--r);border:1px solid transparent;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--brand-700)}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--danger);color:#fff}.field{display:flex;flex-direction:column;gap:var(--s2);margin-bottom:var(--s4)}.field label{font-size:.85rem;font-weight:600;color:var(--ink-900)}.input,select.input,textarea.input{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;min-height:44px;width:100%;transition:border-color .18s ease,box-shadow .18s ease}.input:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}.input::placeholder{color:var(--ink-500)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--brand-50);color:var(--brand-700)}.table{width:100%;border-collapse:collapse;background:var(--bg)}.table th,.table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border);font-size:.92rem}.table th{color:var(--ink-500);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}.table tbody tr{transition:background-color .15s ease}.table tbody tr:hover{background:var(--brand-50)}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-lg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background:#2b2b2d73;display:grid;place-items:center;padding:var(--s4)}.modal{background:var(--bg);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);max-width:720px;width:100%;max-height:85vh;overflow:auto;padding:var(--s5)}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--s4)}.swatch{width:28px;height:28px;border-radius:var(--r-sm);border:1px solid var(--border)}.muted{color:var(--ink-500)}.error-text{color:var(--danger);font-size:.9rem}.spinner{width:20px;height:20px;border:2px solid var(--brand-50);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
