.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:600;letter-spacing:0.01em;border-radius:var(--r-sm);border:1px solid transparent;transition:all .18s ease;white-space:nowrap}.btn:disabled{opacity:0.5;cursor:not-allowed}.btn-primary{background:var(--magenta-500);color:#fff;box-shadow:0 4px 12px -4px rgba(228,0,111,0.4)}.btn-primary:hover:not(:disabled){background:var(--magenta-600);transform:translateY(-1px);box-shadow:0 6px 16px -4px rgba(228,0,111,0.5)}.btn-primary:active{transform:translateY(0)}.btn-ghost{background:transparent;border-color:var(--border-strong);color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-3)}.btn-dark{background:var(--ink);color:var(--bg)}.btn-dark:hover:not(:disabled){background:var(--ink-2)}.btn-text{padding:8px 4px;font-size:13px;font-weight:500;color:var(--ink-3);border-radius:0;border-bottom:1px solid currentColor}.btn-text:hover{color:var(--magenta-500)}.btn-lg{padding:14px 24px;font-size:15px}.btn-sm{padding:8px 14px;font-size:13px}.btn-icon{padding:10px;min-width:40px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:12px;font-weight:500;color:var(--ink-2);letter-spacing:0.02em}.field-label .req{color:var(--magenta-500);margin-left:2px}.input,.select{width:100%;padding:11px 14px;font-size:14px;color:var(--ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);transition:all .15s;font-family:inherit}.input:focus,.select:focus{outline:none;border-color:var(--magenta-500);box-shadow:0 0 0 3px rgba(228,0,111,0.12)}.input::placeholder{color:var(--ink-4)}.input-error{border-color:var(--danger)}.field-error{font-size:12px;color:var(--danger);margin-top:2px}.field-hint{font-size:12px;color:var(--ink-4)}.input-group{position:relative;display:flex;align-items:stretch}.input-group .input{border-radius:var(--r-sm) 0 0 var(--r-sm)}.input-group .btn{border-radius:0 var(--r-sm) var(--r-sm) 0;border-left:none}.input-prefix{display:inline-flex;align-items:center;padding:0 12px;background:var(--bg-alt);border:1px solid var(--border-strong);border-right:none;border-radius:var(--r-sm) 0 0 var(--r-sm);color:var(--ink-3);font-weight:500;font-size:13px}.input-prefix+.input{border-radius:0 var(--r-sm) var(--r-sm) 0}.chips{display:inline-flex;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--r-sm);padding:3px;gap:2px}.chip{padding:8px 14px;font-size:13px;font-weight:500;color:var(--ink-3);border-radius:6px;transition:all .15s;white-space:nowrap}.chip:hover{color:var(--ink)}.chip.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.chip.active.magenta{background:var(--magenta-500);color:#fff}.toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer}.toggle-track{width:38px;height:22px;background:var(--ink-5);border-radius:999px;position:relative;transition:background .2s}.toggle-track::after{content:'';position:absolute;width:16px;height:16px;background:#fff;border-radius:50%;top:3px;left:3px;box-shadow:var(--shadow-sm);transition:transform .2s}.toggle.on .toggle-track{background:var(--magenta-500)}.toggle.on .toggle-track::after{transform:translateX(16px)}.toggle-label{font-size:14px;color:var(--ink-2);font-weight:500}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-family:var(--f-mono);font-size:10px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;border-radius:var(--r-pill);background:var(--bg-alt);color:var(--ink-3)}.badge-magenta{background:var(--magenta-50);color:var(--magenta-600)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-ochre{background:var(--ochre-soft);color:#8B7025}.badge-sage{background:var(--sage-soft);color:var(--sage)}.badge-coral{background:var(--coral-soft);color:#B04C1F}.hr{height:1px;background:var(--border);margin:24px 0}.hr-dashed{border:none;border-top:1px dashed var(--border-strong);margin:24px 0}.empty{text-align:center;padding:40px 20px;color:var(--ink-3)}.empty .display{font-size:30px;color:var(--ink);margin-bottom:8px}.placeholder-img{background:repeating-linear-gradient(135deg, var(--bg-alt) 0 10px, var(--surface-2) 10px 20px);border:1px solid var(--border);border-radius:var(--r-md);position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.placeholder-img .label{font-family:var(--f-mono);font-size:11px;color:var(--ink-3);padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xs);letter-spacing:0.08em;text-transform:uppercase}.alert{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:var(--r-md);font-size:13px;line-height:1.5}.alert-info{background:var(--ochre-soft);color:#6B5319;border:1px solid #E8D5A1}.alert-magenta{background:var(--magenta-50);color:var(--magenta-ink);border:1px solid var(--magenta-100)}.alert strong{font-weight:600}.modal-scrim{position:fixed;inset:0;background:rgba(26,22,19,0.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:fadeIn .18s ease}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-xl);width:100%;max-width:620px;max-height:92vh;overflow-y:auto;animation:modalIn .22s ease}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:22px 28px 0}.modal-title{font-family:var(--f-display);font-size:34px;line-height:1.05}.modal-title em{font-style:italic;color:var(--magenta-500)}.modal-body{padding:20px 28px}.modal-footer{padding:18px 28px 24px;display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--border);margin-top:8px;background:var(--surface-2);border-radius:0 0 var(--r-lg) var(--r-lg)}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes modalIn{from{opacity:0;transform:translateY(8px) scale(0.98)}to{opacity:1;transform:translateY(0) scale(1)}}.icon-btn{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-sm);color:var(--ink-3);transition:all .15s}.icon-btn:hover{background:var(--bg-alt);color:var(--ink)}
