.modal-backdrop{background:var(--color-modal-backdrop);z-index:calc(var(--z-modal) + 1);padding:var(--space-4);animation:modal-fade-in var(--duration-modal-enter) var(--ease-modal) both;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-backdrop--closing{animation:modal-fade-out var(--duration-modal-exit) var(--ease-modal) both}.modal{background:var(--color-surface);border:var(--border-width-default) solid var(--color-border);border-color:var(--color-border);border-radius:var(--panel-radius);transform-origin:50%;width:100%;max-height:90vh;animation:modal-enter var(--duration-modal-enter) var(--ease-modal) both;flex-direction:column;display:flex}.modal--closing{pointer-events:none;animation:modal-exit var(--duration-modal-exit) var(--ease-modal) both}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}@keyframes modal-enter{0%{opacity:0;transform:translateY(var(--space-2)) scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes modal-exit{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(var(--space-1)) scale(.985)}}.modal--sm{max-width:400px}.modal--md{max-width:560px}.modal--lg{max-width:800px}.modal--xl{max-width:1120px}.modal__header{padding:var(--space-5) var(--space-6);border-bottom:var(--border-width-default) solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal__title{font-size:var(--font-size-dialog-title);line-height:var(--line-height-dialog-title);font-weight:var(--fw-semibold);color:var(--color-text)}.modal__close{width:var(--control-height);height:var(--control-height);border:var(--border-width-default) solid transparent;border-radius:var(--radius-sm);color:var(--color-text-muted);appearance:none;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);background:0 0;flex:none;justify-content:center;align-items:center;padding:0;display:flex}@media (hover:hover){.modal__close:not(:disabled):hover{background:var(--color-bg-subtle);border-color:var(--color-border);color:var(--color-text)}}.modal__close:not(:disabled):active{background:var(--color-bg-subtle);color:var(--color-text)}.modal__close:disabled{cursor:not-allowed;opacity:.55}.modal__body{padding:var(--space-6);flex:1;overflow-y:auto}.modal__body--stacked{gap:var(--space-4);flex-direction:column;flex:1;display:flex}.modal__form{display:contents}.modal__footer{padding:var(--space-4) var(--space-6);border-top:var(--border-width-default) solid var(--color-border);justify-content:flex-end;gap:var(--space-3);display:flex}@media (width<=640px){.modal-backdrop{padding:var(--space-2);align-items:flex-end}.modal{border-radius:var(--panel-radius);max-height:calc(100dvh - 1rem)}.modal--sm,.modal--md,.modal--lg,.modal--xl{max-width:none}.modal__header,.modal__body{padding:var(--space-4)}.modal__footer{padding:var(--space-3-5) var(--space-4) var(--space-4);flex-direction:column-reverse;align-items:stretch}}@media (prefers-reduced-motion:reduce){.modal-backdrop,.modal{animation-duration:var(--duration-modal-reduced)}.modal{animation-name:modal-fade-in}.modal--closing{animation-name:modal-fade-out}}@media (width>=641px){:is(.modal--lg .modal__body--stacked:has(>.field),.modal--xl .modal__body--stacked:has(>.field)){grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;display:grid}.modal--lg .modal__body--stacked>:not(.field),.modal--xl .modal__body--stacked>:not(.field){grid-column:1/-1}.modal__body--stacked>.field:has(textarea){grid-column:1/-1}}.modal__body--stacked>.field{min-width:0}.modal__footer{flex-wrap:wrap}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:var(--control-height);padding:0 var(--space-4);border:var(--border-width-default) solid transparent;border-radius:var(--radius-lg);font-family:inherit;font-size:var(--control-font-size);font-weight:var(--control-font-weight);line-height:var(--table-line-height);cursor:pointer;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), opacity var(--transition-fast);white-space:nowrap;flex-shrink:0;display:inline-flex}.btn:focus-visible{outline:var(--border-width-strong) solid var(--color-focus-ring);outline-offset:var(--space-0-5)}.btn>svg{width:var(--icon-size-control);height:var(--icon-size-control);flex-shrink:0}.btn:disabled{opacity:.5;cursor:not-allowed}.btn[aria-busy=true]{cursor:wait}.btn--sm{padding-inline:var(--space-3)}.btn--lg{height:var(--control-height-lg);padding-inline:var(--space-5)}.btn--icon{width:var(--control-height);padding:0}.btn--primary{background:var(--color-action);color:var(--color-action-fg)}.btn--primary:not(:disabled):hover{background:var(--color-action-hover)}.btn--primary:not(:disabled):active{background:var(--color-action-active)}.btn--primary>svg{color:inherit;stroke:currentColor}.btn--secondary{background:var(--color-surface);color:var(--color-text-muted);border-color:var(--color-control-border)}.btn--secondary:not(:disabled):hover{background:var(--color-bg-subtle);color:var(--color-text);border-color:var(--color-border-strong)}.btn--secondary:not(:disabled):active{background:var(--color-border);color:var(--color-text)}.btn--ghost{color:var(--color-text-muted);background:0 0}.btn--ghost:not(:disabled):hover{background:var(--color-bg-subtle);color:var(--color-text)}.btn--ghost:not(:disabled):active{background:var(--color-border);color:var(--color-text)}.btn--danger{background:var(--color-error-solid);color:var(--color-strong-fg)}.btn--danger:not(:disabled):hover{background:color-mix(in srgb, var(--color-error-solid) 88%, var(--brand-primary-dark))}.btn--danger:not(:disabled):active{background:color-mix(in srgb, var(--color-error-solid) 76%, var(--brand-primary-dark))}.btn--warning{background:var(--color-warning-solid);color:var(--color-strong-fg)}.btn--warning:not(:disabled):hover{background:color-mix(in srgb, var(--color-warning-solid) 88%, var(--brand-primary-dark))}.btn--warning:not(:disabled):active{background:color-mix(in srgb, var(--color-warning-solid) 76%, var(--brand-primary-dark))}.btn--success{background:var(--color-success-solid);color:var(--color-strong-fg)}.btn--success:not(:disabled):hover{background:color-mix(in srgb, var(--color-success-solid) 88%, var(--brand-primary-dark))}.btn--success:not(:disabled):active{background:color-mix(in srgb, var(--color-success-solid) 76%, var(--brand-primary-dark))}.btn--info{background:var(--color-info-solid);color:var(--color-strong-fg)}.btn--info:not(:disabled):hover{background:color-mix(in srgb, var(--color-info-solid) 88%, var(--brand-primary-dark))}.btn--info:not(:disabled):active{background:color-mix(in srgb, var(--color-info-solid) 76%, var(--brand-primary-dark))}.btn__spinner{width:var(--icon-size-control);height:var(--icon-size-control);border:var(--border-width-strong) solid currentColor;border-radius:var(--radius-full);animation:btn-spin var(--duration-spinner) var(--ease-linear) infinite;border-top-color:#0000;flex-shrink:0}.btn__refresh-icon--spinning{animation:btn-spin var(--duration-spinner) var(--ease-linear) infinite}.btn>.lucide{width:var(--icon-size-control);height:var(--icon-size-control);flex-shrink:0}@media (prefers-reduced-motion:reduce){.btn{transition:none}.btn__spinner,.btn__refresh-icon--spinning{animation:none}}@keyframes btn-spin{to{transform:rotate(360deg)}}
