.loader{border:2px solid var(--color-border);border-top-color:var(--color-text-muted);border-radius:50%;width:24px;height:24px;margin:40vh auto;animation:.5s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.btn{border-radius:var(--radius-lg);cursor:pointer;white-space:nowrap;appearance:none;width:auto;transition:background var(--transition-slow), border-color var(--transition-slow), color var(--transition-slow), box-shadow var(--transition-slow), opacity var(--transition-slow), transform var(--transition-slow);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn--sm{border-radius:var(--radius-md);min-height:32px;padding:6px 12px;font-size:13px}.btn--md{min-height:44px;padding:11px 18px}.btn--lg{min-height:52px;padding:14px 24px;font-size:15px}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn:hover{text-decoration:none}.btn:focus-visible{box-shadow:var(--shadow-focus);outline:none}.btn:active:not(:disabled){transform:translateY(1px)}.btn--block{width:100%}.btn--primary{background:var(--color-accent);color:var(--color-bg);border-color:var(--border-raised);box-shadow:inset 0 1px 0 var(--surface-overlay), 0 10px 24px var(--surface-overlay)}.btn--primary:hover:not(:disabled){box-shadow:inset 0 1px 0 #ffffff1f, 0 12px 28px var(--surface-overlay);background:#f3f3f3;border-color:#ffffff38;transform:translateY(-1px)}.btn--secondary{background:var(--surface-raised);color:var(--color-text);box-shadow:inset 0 1px 0 var(--surface-raised);border-color:#ffffff1a}.btn--secondary:hover:not(:disabled){background:var(--surface-overlay);border-color:#ffffff2e;transform:translateY(-1px)}.btn--danger{background:var(--color-danger-bg);color:var(--color-danger);border-color:var(--color-danger-border);box-shadow:inset 0 1px 0 var(--surface-subtle)}.btn--danger:hover:not(:disabled){background:var(--color-danger-bg-hover);border-color:var(--color-danger-border-hover);color:var(--color-danger-hover);transform:translateY(-1px)}.btn--ghost{color:var(--color-text-muted);width:auto;min-height:auto;box-shadow:none;background:0 0;border:none;border-radius:0;padding:0;font-weight:500}.btn--ghost:hover:not(:disabled){color:var(--color-accent);transform:none}.input-wrapper{flex-direction:column;gap:6px;display:flex}.input-label{color:var(--color-text-muted);font-size:13px;font-weight:500}.input-hint{color:var(--color-text-muted);opacity:.7;font-size:12px}.input-field{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition-base), box-shadow var(--transition-base);cursor:text;align-items:center;gap:8px;display:flex}.input-field:hover:not(.input-field--disabled){border-color:var(--border-hover)}.input-field:focus-within:not(.input-field--disabled){border-color:var(--border-focus);box-shadow:var(--shadow-focus-input)}.input-field--error{border-color:var(--color-error-border)!important}.input-field--error:focus-within{box-shadow:var(--shadow-focus-error)!important}.input-field--disabled{opacity:.45;cursor:not-allowed}.input-field--sm{border-radius:var(--radius-xs);min-height:32px;padding:0 8px}.input-field--md{min-height:40px;padding:0 12px}.input-field--lg{min-height:48px;padding:0 14px}.input{color:var(--color-text);cursor:text;background:0 0;border:none;outline:none;flex:1;min-width:0;padding:0;font-family:inherit;font-size:14px;line-height:1.5}.input-field--sm .input{font-size:13px}.input-field--lg .input{font-size:15px}.input::placeholder{color:var(--color-text-muted);opacity:.5}.input:disabled{cursor:not-allowed}.input-icon{color:var(--color-text-muted);flex-shrink:0;align-items:center;line-height:1;display:flex}.input-error{color:var(--color-error);font-size:12px}.input-footer{justify-content:space-between;align-items:center;gap:8px;display:flex}.input-count{color:var(--color-text-muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px}
