        /* ---------- Custom Confirm Modal ---------- */
        .confirm-backdrop {
            align-items: center;
            background: rgb(0 0 0 / 0.35);
            display: flex;
            inset: 0;
            justify-content: center;
            opacity: 0;
            pointer-events: none;
            position: fixed;
            transition: opacity 200ms ease;
            z-index: 100;
        }
        .confirm-backdrop.is-open {
            opacity: 1;
            pointer-events: auto;
        }
        .confirm-dialog {
            background: var(--surface);
            border: 1px solid var(--border);
            border-radius: var(--r-lg);
            box-shadow: var(--shadow-3);
            max-width: 420px;
            padding: 24px;
            transform: scale(0.96) translateY(8px);
            transition: transform 200ms cubic-bezier(0.16, 1, 0.3, 1);
            width: calc(100% - 32px);
        }
        .confirm-backdrop.is-open .confirm-dialog {
            transform: scale(1) translateY(0);
        }
        .confirm-title {
            font-size: 17px;
            font-weight: 650;
            letter-spacing: -0.02em;
            margin-bottom: 8px;
        }
        .confirm-body {
            color: var(--muted);
            font-size: 14px;
            line-height: 1.5;
            margin-bottom: 20px;
        }
        .confirm-actions {
            align-items: center;
            display: flex;
            gap: 10px;
            justify-content: flex-end;
        }
        .confirm-btn {
            background: var(--surface-muted);
            border: 1px solid var(--border);
            border-radius: var(--r-sm);
            color: var(--text);
            cursor: pointer;
            font: inherit;
            font-size: 13px;
            font-weight: 600;
            height: 36px;
            padding: 0 14px;
            transition: background-color 120ms ease, border-color 120ms ease;
        }
        .confirm-btn:hover {
            background: var(--surface);
            border-color: var(--border-strong);
        }
        .confirm-btn:focus-visible {
            border-color: var(--focus);
            box-shadow: 0 0 0 3px color-mix(in oklch, var(--focus) 16%, transparent);
            outline: none;
        }
        .confirm-btn:active {
            filter: brightness(0.96);
            transform: translateY(0.5px);
        }
        .confirm-btn:disabled {
            cursor: not-allowed;
            opacity: 0.6;
        }
        .confirm-btn-primary {
            background: var(--action);
            border-color: var(--action);
            color: var(--action-fg);
        }
        .confirm-btn-primary:hover {
            background: var(--action-hover);
            border-color: var(--action-hover);
        }
        .confirm-btn-danger {
            background: var(--danger-bg);
            border-color: var(--danger-border);
            color: var(--danger);
        }
        .confirm-btn-danger:hover {
            background: var(--danger-bg-hover);
            border-color: var(--danger-border-hover);
        }

        /* ------------------------------------------------------------------
           Global feedback: bottom-right toasts + button success states
           ------------------------------------------------------------------ */
        .ui-toast-host {
            position: fixed;
            right: 20px;
            bottom: 20px;
            z-index: 9999;
            display: flex;
            flex-direction: column;
            gap: 10px;
            align-items: flex-end;
            pointer-events: none;
        }
        .ui-toast {
            pointer-events: auto;
            display: flex;
            align-items: center;
            gap: 12px;
            min-width: 280px;
            max-width: 420px;
            padding: 12px 14px;
            background: var(--surface);
            border: 1px solid var(--border-strong);
            border-radius: var(--r-md);
            box-shadow: var(--shadow-2);
            font-size: 14px;
            font-weight: 500;
            color: var(--text);
            opacity: 0;
            transform: translateY(12px) scale(0.98);
            transition: opacity 250ms ease, transform 250ms ease;
        }
        .ui-toast.is-visible {
            opacity: 1;
            transform: translateY(0) scale(1);
        }
        .ui-toast.is-hiding {
            opacity: 0;
            transform: translateY(8px) scale(0.98);
        }
        .ui-toast-success { border-color: var(--success-border); }
        .ui-toast-success .ui-toast-body svg { color: var(--success); }
        .ui-toast-error { border-color: var(--danger-border); }
        .ui-toast-error .ui-toast-body svg { color: var(--danger); }
        .ui-toast-body {
            display: flex;
            align-items: center;
            gap: 10px;
            flex: 1 1 auto;
        }
        .ui-toast-message {
            line-height: 1.35;
        }
        .ui-toast-undo {
            flex-shrink: 0;
            background: transparent;
            border: 1px solid var(--border);
            border-radius: var(--r-sm);
            color: var(--active);
            cursor: pointer;
            font-size: 13px;
            font-weight: 600;
            padding: 5px 10px;
            transition: background-color 120ms ease, border-color 120ms ease;
        }
        .ui-toast-undo:hover {
            background: var(--active-soft);
            border-color: var(--border-strong);
        }
        .ui-toast-close {
            flex-shrink: 0;
            background: transparent;
            border: none;
            color: var(--muted);
            cursor: pointer;
            font-size: 20px;
            line-height: 1;
            padding: 0 0 0 4px;
            transition: color 120ms ease;
        }
        .ui-toast-close:hover { color: var(--text); }

        @media (max-width: 860px) {
            .ui-toast-host {
                align-items: stretch;
                left: 12px;
                right: 12px;
                bottom: calc(env(safe-area-inset-bottom) + 84px);
            }
            .ui-toast {
                min-width: 0;
                max-width: 100%;
                width: 100%;
            }
        }

        .ui-spinner {
            animation: ui-spin 800ms linear infinite;
        }
        @keyframes ui-spin {
            to { transform: rotate(360deg); }
        }

        /* Button states */
        .seasons-btn.is-loading,
        .btn.is-loading,
        button.is-loading {
            opacity: 0.85;
            cursor: wait;
        }
        .seasons-btn.is-success,
        .btn.is-success,
        button.is-success {
            background: var(--success) !important;
            border-color: var(--success) !important;
            color: var(--action-fg) !important;
        }
        .seasons-btn.is-error,
        .btn.is-error,
        button.is-error {
            background: var(--danger) !important;
            border-color: var(--danger) !important;
            color: var(--action-fg) !important;
        }
        .seasons-btn.is-loading svg,
        .seasons-btn.is-success svg,
        .btn.is-loading svg,
        .btn.is-success svg {
            vertical-align: -3px;
            margin-right: 4px;
        }
