.btn-icon{width:var(--touch-target-size);height:var(--touch-target-size);border:2px solid var(--color-neutral-strong);border-radius:var(--radius-sm);background:var(--color-bg-alt);color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast);flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}.btn-icon:disabled{opacity:.4;cursor:not-allowed}@media (hover:hover){.btn-icon--primary:hover:not(:disabled){background:var(--color-primary-light);color:var(--color-primary-text);border-color:var(--color-primary)}}.btn-icon--primary:active:not(:disabled){background:var(--color-primary-light);color:var(--color-primary-text);border-color:var(--color-primary);filter:brightness(.95)}.btn-icon--primary.btn-icon--active{color:var(--color-primary-text);background:var(--color-primary-light);border-color:var(--color-primary)}@media (hover:hover){.btn-icon--danger:hover:not(:disabled){background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger)}}.btn-icon--danger:active:not(:disabled){background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger);filter:brightness(.95)}.btn-create{width:var(--touch-target-size);height:var(--touch-target-size);border:1px solid var(--color-primary);border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;transition:background var(--duration-fast), border-color var(--duration-fast), filter var(--duration-fast);flex-shrink:0;justify-content:center;align-items:center;padding:0;line-height:1;display:inline-flex}@media (hover:hover){.btn-create:hover:not(:disabled){filter:brightness(.92)}}.btn-create:disabled{opacity:.4;cursor:not-allowed}.btn-select-trigger{justify-content:space-between;align-items:center;gap:var(--spacing-8);padding:var(--spacing-8) var(--spacing-12);width:260px;min-width:var(--touch-target-size);height:var(--input-height);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;text-align:start;transition:border-color var(--duration-fast);display:flex}@media (hover:hover){.btn-select-trigger:hover:not(:disabled){border-color:var(--color-primary)}}.btn-select-trigger:disabled{opacity:.5;cursor:not-allowed}.btn-combo-caret{min-width:var(--touch-target-size);padding:0 var(--spacing-8);border:0;border-inline-start:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast);background:0 0;justify-content:center;align-self:stretch;align-items:center;display:inline-flex}@media (hover:hover){.btn-combo-caret:hover:not(:disabled){color:var(--color-primary)}}.btn-combo-caret:disabled{opacity:.5;cursor:not-allowed}.btn-combo-body{align-items:center;gap:var(--spacing-8);min-width:0;min-height:var(--btn-min-height);padding:var(--spacing-8) var(--spacing-12);color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;text-align:start;background:0 0;border:0;flex:1;display:inline-flex}@media (hover:hover){.btn-combo-body:hover:not(:disabled){color:var(--color-primary)}}.btn-menu-option{align-items:center;gap:var(--spacing-8);width:100%;padding:var(--spacing-8) var(--spacing-12);min-height:var(--touch-target-size);color:var(--color-text);font-size:var(--font-size-sm);text-align:start;cursor:pointer;white-space:nowrap;transition:background var(--duration-instant);background:0 0;border:none;display:flex}@media (hover:hover){.btn-menu-option:hover:not(:disabled){background:var(--color-bg-alt)}}.btn-menu-option:disabled{opacity:.5;cursor:not-allowed}.btn-rating{cursor:pointer;padding:var(--spacing-4);color:var(--color-border);transition:color var(--duration-fast);border-radius:var(--radius-sm);background:0 0;border:none}@media (pointer:coarse){.btn-rating{min-width:var(--touch-target-size);min-height:var(--touch-target-size);justify-content:center;align-items:center;display:inline-flex}}.btn-rating.rating-star.filled{color:var(--color-rating-star-graphic)}@media (hover:hover){.btn-rating.rating-star:hover:not(:disabled){color:var(--color-rating-star-graphic)}}.btn-rating.rating-heart.filled{color:var(--color-danger)}@media (hover:hover){.btn-rating.rating-heart:hover:not(:disabled){color:var(--color-danger)}}.btn-circle{width:var(--touch-target-size);height:var(--touch-target-size);border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--font-size-2xs);cursor:pointer;color:var(--color-text-muted);transition:all var(--duration-instant);border-radius:50%;justify-content:center;align-items:center;padding:0;font-weight:600;display:flex}@media (hover:hover){.btn-circle:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}}.btn-circle.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}@media (hover:hover){.btn-circle.active:hover:not(:disabled){background:var(--color-primary);border-color:var(--color-primary);color:#fff;filter:brightness(.92);outline:2px solid var(--color-on-saturated-muted);outline-offset:-3px}}.btn-circle:disabled{opacity:.5;cursor:not-allowed}.btn-icon-ghost{min-width:var(--touch-target-size);min-height:var(--touch-target-size);color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}@media (hover:hover){.btn-icon-ghost:hover:not(:disabled){color:var(--color-primary)}}.btn-icon-ghost:disabled{opacity:.4;cursor:not-allowed}.btn-column-header{align-items:center;gap:var(--spacing-4);width:100%;color:inherit;font:inherit;text-align:inherit;cursor:pointer;white-space:nowrap;transition:color var(--duration-fast);background:0 0;border:none;padding:0;display:inline-flex}@media (hover:hover){.btn-column-header:hover:not(:disabled){color:var(--color-text)}}.btn-column-header:disabled{cursor:not-allowed}@media (pointer:coarse){.btn-select-trigger,.btn-column-header,.btn-row-select{min-height:var(--touch-target-size)}.btn-column-header{min-width:var(--touch-target-size)}.btn-combo-caret{min-width:var(--touch-target-size);min-height:var(--touch-target-size)}}.btn{justify-content:center;align-items:center;gap:var(--spacing-4);padding:var(--spacing-8) var(--spacing-16);border-radius:var(--radius-sm);font-size:var(--font-size-btn);cursor:pointer;transition:background-color var(--duration-fast) var(--easing-standard), color var(--duration-fast) var(--easing-standard), border-color var(--duration-fast) var(--easing-standard), transform var(--duration-fast) var(--easing-standard), filter var(--duration-fast) var(--easing-standard);white-space:nowrap;min-width:110px;min-height:var(--btn-min-height);border:none;font-weight:500;display:inline-flex}.btn-primary{background:var(--color-primary);color:#fff}@media (hover:hover){.btn-primary:hover:not(:disabled):not([aria-disabled=true]){filter:brightness(.9);box-shadow:var(--shadow-btn-primary);transform:translateY(-1px)}}.btn-secondary{background:var(--color-bg);color:var(--color-text-muted);border:1px solid var(--color-border)}@media (hover:hover){.btn-secondary:hover:not(:disabled){background:var(--color-bg-alt)}}.btn-danger{background:var(--color-danger-fill);color:#fff}@media (hover:hover){.btn-danger:hover:not(:disabled){background:var(--color-danger-fill-hover);box-shadow:var(--shadow-btn-danger);transform:translateY(-1px)}}.btn-link{color:var(--color-brand);font-weight:var(--font-weight-semibold);min-width:0;min-height:0;font-size:inherit;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}html[data-theme=dark] .btn-link{color:var(--color-primary-text)}@media (hover:hover){.btn-link:hover:not(:disabled){filter:brightness(.85);box-shadow:none;background:0 0;transform:none}}@media (pointer:coarse){.btn-link{position:relative}.btn-link:before{content:"";inset-inline:min(0px, calc((100% - var(--touch-target-size)) / 2));inset-block:calc((100% - var(--touch-target-size)) / 2);position:absolute}}.btn-sm{padding:var(--spacing-4) var(--spacing-12);font-size:var(--font-size-xs);min-width:unset}@media (pointer:coarse){.btn-sm{position:relative}.btn-sm:before{content:"";inset-inline:0;height:var(--touch-target-size);position:absolute;top:50%;transform:translateY(-50%)}}.btn-lg{padding:var(--spacing-16) var(--spacing-32);font-size:var(--font-size-lg)}.btn:disabled,.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled,.btn-link:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none}.btn-square{width:var(--touch-target-size);height:var(--touch-target-size);border:1px solid var(--color-primary);border-radius:var(--radius);background:var(--color-primary);color:#fff;cursor:pointer;transition:background-color var(--duration-fast) var(--easing-decelerate), border-color var(--duration-fast) var(--easing-decelerate);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}@media (hover:hover){.btn-square:hover:not(:disabled){background:var(--color-brand);border-color:var(--color-brand)}}.btn-square:disabled{opacity:.5;cursor:not-allowed}.btn-counter{justify-content:space-between;align-items:center;gap:var(--spacing-4);min-width:calc(var(--touch-target-size) + var(--spacing-8));max-width:var(--counter-button-max);height:var(--touch-target-size);padding:0 var(--spacing-4);border:2px solid var(--color-neutral-strong);border-radius:var(--radius-sm);background:var(--color-bg-alt);color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast), border-color var(--duration-fast);flex:1 1 0;line-height:1;display:inline-flex}.btn-counter:disabled{opacity:.4;cursor:not-allowed}.btn-counter__icon{flex-shrink:0;display:inline-flex}.btn-counter__count{min-width:2ch;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);font-variant-numeric:tabular-nums;text-align:end;color:var(--color-text)}.btn-counter__count--zero{color:var(--color-text-muted)}.btn-counter.btn-counter--lit{color:var(--color-warning-graphic);border-color:var(--color-warning-graphic);background:var(--color-warning-bg);animation:btn-counter-pulse var(--duration-pulse) var(--easing-standard) infinite}.btn-counter.btn-counter--active{animation:btn-counter-pulse var(--duration-pulse) var(--easing-standard) infinite}@keyframes btn-counter-pulse{0%,to{box-shadow:0 0}50%{box-shadow:0 0 0 var(--spacing-4) transparent}}@media (prefers-reduced-motion:reduce){.btn-counter.btn-counter--lit,.btn-counter.btn-counter--active{animation:none}}.btn,.btn-icon,.btn-square,.btn-select-trigger,.btn-combo-caret,.btn-combo-body,.btn-menu-option,.btn-rating,.btn-circle,.btn-icon-ghost,.btn-column-header,.btn-counter,.btn-bare{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.btn-row-select{width:100%;height:100%;color:inherit;font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:flex}.btn-row-select:disabled{cursor:not-allowed}.btn-stat-tile{color:inherit;font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;padding:0;display:flex}.btn-stat-tile:disabled{cursor:not-allowed}:where(.btn-bare){color:inherit;font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}:where(.btn-bare):disabled{cursor:not-allowed}@media (pointer:coarse){:where(.btn-bare){position:relative}:where(.btn-bare):before{content:"";inset-inline:min(0px, calc((100% - var(--touch-target-size)) / 2));inset-block:min(0px, calc((100% - var(--touch-target-size)) / 2));position:absolute}}.touch-tooltip{background:var(--overlay-tooltip-bg);color:#fff;padding:var(--spacing-4) var(--spacing-8);border-radius:var(--radius-xs);font-size:var(--font-size-xs);white-space:nowrap;pointer-events:none;z-index:var(--z-tooltip);box-shadow:var(--shadow-card-hover);font-weight:400;position:fixed;transform:translate(-50%)translateY(calc(-100% - 8px))}.form-field{gap:var(--spacing-8);flex-direction:column;display:flex}.form-field__label{font-size:var(--font-size-2xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.form-field__required{color:var(--color-danger)}.form-field__message{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--spacing-4)}.form-field__action{margin-bottom:var(--spacing-4);align-self:flex-start}.form-field__message--error{color:var(--color-danger)}.modal-dialog .form-field+.form-field,.modal-dialog__title+.form-field,.modal-context-subtitle+.form-field{margin-top:var(--spacing-16)}.form-field__group{display:block}.text-input{height:var(--input-height);padding:0 var(--spacing-12);font-size:var(--font-size-input);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-sizing:border-box;transition:border-color var(--duration-fast) var(--easing-standard), box-shadow var(--duration-fast) var(--easing-standard);font-family:inherit}.text-input:focus{border-color:var(--color-primary)}.text-input::placeholder{color:var(--color-text-placeholder)}.text-input[aria-invalid=true]{border-color:var(--color-danger)}.text-input[aria-invalid=true]:focus-visible{outline-color:var(--color-danger)}
