/**
 * SaaSpartout Marketplace CSS - basato sul mockup approvato.
 * Tutti i selettori usano prefix .sp- per evitare conflitti con il tema.
 *
 * THEME MODE:
 * Il plugin eredita il tema (dark/light) dall'attributo data-theme su <html>,
 * gestito dal toggle del tema SaaSpartout. Default dark se nessun attributo.
 */

/* Default = dark (quando html non ha data-theme) */
.saaspartout-app {
    --sp-bg: #0A0A0F;
    --sp-bg-2: #14141A;
    --sp-bg-3: #1F1F28;
    --sp-bg-card: rgba(255, 255, 255, 0.025);
    --sp-bg-card-hover: rgba(255, 255, 255, 0.05);
    --sp-text: #FFFFFF;
    --sp-text-2: #A0A0B0;
    --sp-text-3: #6B6B7B;
    --sp-accent: #F97316;
    --sp-accent-2: #FB923C;
    --sp-accent-light: rgba(249, 115, 22, 0.12);
    --sp-accent-glow: rgba(249, 115, 22, 0.25);
    --sp-border: rgba(255, 255, 255, 0.08);
    --sp-border-2: rgba(255, 255, 255, 0.14);
    --sp-success: #10B981;
    --sp-warning: #F59E0B;
}

/* Dark esplicito su <html data-theme="dark"> */
html[data-theme="dark"] .saaspartout-app {
    --sp-bg: #0A0A0F;
    --sp-bg-2: #14141A;
    --sp-bg-3: #1F1F28;
    --sp-bg-card: rgba(255, 255, 255, 0.025);
    --sp-bg-card-hover: rgba(255, 255, 255, 0.05);
    --sp-text: #FFFFFF;
    --sp-text-2: #A0A0B0;
    --sp-text-3: #6B6B7B;
    --sp-accent: #F97316;
    --sp-accent-2: #FB923C;
    --sp-accent-light: rgba(249, 115, 22, 0.12);
    --sp-accent-glow: rgba(249, 115, 22, 0.25);
    --sp-border: rgba(255, 255, 255, 0.08);
    --sp-border-2: rgba(255, 255, 255, 0.14);
    --sp-success: #10B981;
    --sp-warning: #F59E0B;
}

/* Light: <html data-theme="light"> */
html[data-theme="light"] .saaspartout-app {
    --sp-bg: #FAFAF7;
    --sp-bg-2: #F3F3EC;
    --sp-bg-3: #E8E8DF;
    --sp-bg-card: rgba(0, 0, 0, 0.02);
    --sp-bg-card-hover: rgba(0, 0, 0, 0.04);
    --sp-text: #1A1A1F;
    --sp-text-2: #5B5B66;
    --sp-text-3: #9999A3;
    --sp-accent: #F97316;
    --sp-accent-2: #EA580C;
    --sp-accent-light: rgba(249, 115, 22, 0.08);
    --sp-accent-glow: rgba(249, 115, 22, 0.15);
    --sp-border: rgba(0, 0, 0, 0.08);
    --sp-border-2: rgba(0, 0, 0, 0.14);
    --sp-success: #059669;
    --sp-warning: #D97706;
}

.saaspartout-app, .saaspartout-app * { box-sizing: border-box; }

.saaspartout-app {
    font-family: 'Outfit', -apple-system, sans-serif;
    background: var(--sp-bg);
    color: var(--sp-text);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

.saaspartout-app a { color: inherit; text-decoration: none; }

.sp-sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

.sp-container {
    max-width: 1480px;
    margin: 0 auto;
    padding: 0 32px;
}

/* ============ HERO ============ */
.sp-hero { padding: 60px 0 40px; position: relative; }

.sp-hero-inner {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 80px;
    align-items: center;
}

.sp-breadcrumbs {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.8rem;
    color: var(--sp-text-3);
    margin-bottom: 20px;
}
.sp-breadcrumbs .sep { margin: 0 4px; }
.sp-breadcrumbs .current { color: var(--sp-accent); }
.sp-breadcrumbs a:hover { color: var(--sp-accent); }

.sp-hero-title {
    font-family: 'Instrument Serif', serif;
    font-size: clamp(2.4rem, 6.5vw, 5.5rem);
    font-weight: 400;
    line-height: 0.95;
    letter-spacing: -0.03em;
    margin-bottom: 12px;
}
.sp-hero-title em {
    font-style: italic;
    color: var(--sp-accent);
}

.sp-hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    padding: 5px 12px;
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75rem;
    color: var(--sp-text-2);
    margin-left: 16px;
    vertical-align: middle;
}
.sp-hero-badge::before {
    content: '';
    width: 6px; height: 6px;
    background: var(--sp-accent);
    border-radius: 50%;
    box-shadow: 0 0 8px var(--sp-accent);
    animation: sp-pulse 2s infinite;
}
@keyframes sp-pulse { 0%,100% { opacity: 1 } 50% { opacity: 0.4 } }

.sp-hero-right p {
    color: var(--sp-text-2);
    font-size: 1.05rem;
    line-height: 1.6;
    margin-bottom: 24px;
}
.sp-hero-right strong { color: var(--sp-text); }

.sp-hero-cta { display: flex; gap: 12px; }

.sp-btn-card {
    flex: 1;
    padding: 18px 22px;
    border-radius: 12px;
    border: 1px solid var(--sp-border);
    background: var(--sp-bg-card);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    transition: all 0.2s;
    text-align: left;
    color: inherit;
    cursor: pointer;
}
.sp-btn-card:hover {
    border-color: var(--sp-border-2);
    background: var(--sp-bg-card-hover);
    transform: translateY(-2px);
}
.sp-btn-card-primary {
    background: var(--sp-accent);
    border-color: var(--sp-accent);
    color: white !important;
}
.sp-btn-card-primary:hover {
    background: var(--sp-accent-2);
    border-color: var(--sp-accent-2);
    box-shadow: 0 8px 24px var(--sp-accent-glow);
}
.sp-btn-card-label {
    font-size: 0.7rem;
    font-family: 'JetBrains Mono', monospace;
    opacity: 0.7;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.sp-btn-card-title { font-weight: 600; font-size: 0.95rem; }

.sp-hero-cta-hint {
    margin-top: 14px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.78rem;
    color: var(--sp-text-3);
}
.sp-hero-cta-hint::before { content: '↗ '; color: var(--sp-accent); }

/* ============ SEARCH ============ */
.sp-search-section { padding: 0 0 32px; }

.sp-search-box {
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 12px;
    padding: 6px 16px;
}
.sp-search-box:focus-within {
    border-color: var(--sp-accent);
    box-shadow: 0 0 0 4px var(--sp-accent-light);
}

.sp-search-input {
    width: 100%;
    background: none;
    border: none;
    color: var(--sp-text);
    font-size: 1rem;
    font-family: inherit;
    outline: none;
    padding: 12px 0;
}
.sp-search-input::placeholder { color: var(--sp-text-3); }

/* ============ PROMOS ============ */
.sp-featured-promos { padding: 20px 0 50px; }

.sp-section-eyebrow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
    gap: 16px;
}
.sp-section-label {
    display: flex; align-items: center; gap: 12px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.78rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}
.sp-section-label::before {
    content: ''; width: 24px; height: 1px; background: var(--sp-text-3);
}
.sp-view-all-link {
    display: inline-flex; align-items: center; gap: 14px;
    color: var(--sp-text-2);
    font-size: 0.85rem;
    transition: color 0.2s;
}
.sp-view-all-link:hover { color: var(--sp-accent); }
.sp-view-all-link .arrow {
    width: 32px; height: 32px;
    border-radius: 50%;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    display: flex; align-items: center; justify-content: center;
}

.sp-promo-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

.sp-promo-card {
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 16px;
    padding: 22px;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.sp-promo-card:hover {
    border-color: var(--sp-border-2);
    transform: translateY(-3px);
    background: var(--sp-bg-card-hover);
}

.sp-promo-header { display: flex; align-items: center; gap: 12px; }

.sp-promo-discount {
    font-family: 'Instrument Serif', serif;
    font-size: 3rem;
    line-height: 1;
    color: var(--sp-accent);
    font-style: italic;
}

.sp-promo-desc {
    color: var(--sp-text-2);
    font-size: 0.85rem;
    line-height: 1.5;
    min-height: 2.6em;
}

.sp-promo-actions {
    display: flex;
    gap: 8px;
    margin-top: auto;
    padding-top: 12px;
    border-top: 1px dashed var(--sp-border);
}

/* ============ TABS ============ */
.sp-tabs-wrapper { position: relative; margin-bottom: 24px; }

.sp-tabs-bar {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.sp-tab {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 16px;
    border-radius: 999px;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    font-weight: 500;
    font-size: 0.88rem;
    color: var(--sp-text);
    cursor: pointer;
    transition: all 0.2s;
}
.sp-tab:hover { border-color: var(--sp-border-2); }
.sp-tab-active {
    background: var(--sp-bg-3);
    border-color: var(--sp-accent);
    color: var(--sp-accent);
}
.sp-tab-active::before { content: '◆'; font-size: 0.7rem; }
.sp-tab-count {
    background: var(--sp-bg-3);
    color: var(--sp-accent);
    padding: 1px 7px;
    border-radius: 6px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    font-weight: 600;
}

/* ============ MAIN LAYOUT ============ */
.sp-main-layout {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 40px;
    align-items: flex-start;
    padding-bottom: 80px;
}

/* ============ SIDEBAR ============ */
.sp-sidebar { position: sticky; top: 20px; }

.sp-filter-group { margin-bottom: 28px; }

.sp-filter-group-title {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--sp-border);
}

.sp-category-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; }

.sp-category-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.15s;
    font-size: 0.9rem;
    color: var(--sp-text-2);
}
.sp-category-item:hover { background: var(--sp-bg-card); color: var(--sp-text); }
.sp-category-item-active { background: var(--sp-accent-light); color: var(--sp-accent); }
.sp-category-item-left { display: flex; align-items: center; gap: 10px; }
.sp-category-count { font-family: 'JetBrains Mono', monospace; font-size: 0.75rem; color: var(--sp-text-3); }
.sp-category-item-active .sp-category-count { color: var(--sp-accent); }

.sp-budget-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 6px;
}
.sp-budget-btn {
    padding: 9px 12px;
    border-radius: 8px;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    font-size: 0.82rem;
    color: var(--sp-text-2);
    transition: all 0.15s;
    font-family: 'JetBrains Mono', monospace;
    cursor: pointer;
}
.sp-budget-btn:hover { border-color: var(--sp-border-2); color: var(--sp-text); }
.sp-budget-btn-active {
    background: var(--sp-bg-2);
    border-color: var(--sp-accent);
    color: var(--sp-accent);
}

.sp-checkbox-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 0;
    cursor: pointer;
    font-size: 0.88rem;
    color: var(--sp-text-2);
}
.sp-checkbox-item input[type="checkbox"] { display: none; }
.sp-checkbox {
    width: 16px; height: 16px;
    border: 1.5px solid var(--sp-border-2);
    border-radius: 4px;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.15s;
    flex-shrink: 0;
}
.sp-checkbox-item input:checked + .sp-checkbox {
    background: var(--sp-accent);
    border-color: var(--sp-accent);
}
.sp-checkbox-item input:checked + .sp-checkbox::after {
    content: '✓'; color: white; font-size: 0.7rem; font-weight: bold;
}

.sp-rating-row { display: flex; gap: 4px; flex-wrap: wrap; }
.sp-rating-btn {
    padding: 5px 12px;
    border-radius: 6px;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    font-size: 0.78rem;
    color: var(--sp-text-2);
    font-family: 'JetBrains Mono', monospace;
    cursor: pointer;
}
.sp-rating-btn-active {
    background: var(--sp-bg-2);
    border-color: var(--sp-accent);
    color: var(--sp-accent);
}

/* ============ TOOLS HEADER ============ */
.sp-tools-area { min-width: 0; }

.sp-tools-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 20px;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 12px;
    margin-bottom: 20px;
}
.sp-tools-count { font-size: 0.9rem; color: var(--sp-text-2); }
.sp-tools-count strong {
    font-family: 'JetBrains Mono', monospace;
    color: var(--sp-accent);
    font-weight: 600;
    margin-right: 4px;
}
.sp-tools-actions { display: flex; align-items: center; gap: 12px; }
.sp-sort-label {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.sp-sort-select {
    background: var(--sp-bg-3);
    border: 1px solid var(--sp-border);
    color: var(--sp-text);
    padding: 6px 12px;
    border-radius: 7px;
    font-family: inherit;
    font-size: 0.85rem;
    cursor: pointer;
}

/* ============ TOOL CARD ============ */
.sp-tools-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
}

.sp-tool-card {
    position: relative;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 14px;
    padding: 20px;
    transition: all 0.25s ease;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.sp-tool-card:hover {
    border-color: var(--sp-accent);
    background: var(--sp-bg-card-hover);
    transform: translateY(-2px);
    box-shadow: 0 8px 24px var(--sp-accent-glow);
}
.sp-tool-card:hover .sp-tool-card-info h3 { color: var(--sp-accent); }

.sp-tool-card-header {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.sp-tool-logo {
    width: 42px;
    height: 42px;
    border-radius: 9px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 1.05rem;
    color: white;
    flex-shrink: 0;
    object-fit: contain;
}

.sp-tool-card-info { flex: 1; min-width: 0; }
.sp-tool-card-info h3 {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 2px 0;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: color 0.2s;
}
.sp-tool-category {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.sp-partner-badge { color: var(--sp-accent); font-size: 0.75rem; }

.sp-tool-rating-inline {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--sp-warning);
    font-size: 0.85rem;
    font-weight: 500;
    flex-shrink: 0;
    padding-top: 4px;
}

.sp-tool-desc {
    color: var(--sp-text-2);
    font-size: 0.88rem;
    line-height: 1.55;
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    flex: 1;
}

.sp-tool-pricing-row {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
}
.sp-tool-pricing { color: var(--sp-success); font-weight: 500; }
.sp-tool-pricing-divider { color: var(--sp-text-3); }
.sp-tool-pricing-from { color: var(--sp-text-2); }

.sp-tool-card-actions {
    display: flex;
    gap: 8px;
    padding-top: 14px;
    border-top: 1px dashed var(--sp-border);
    margin-top: auto;
}

.sp-tool-btn {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 9px 14px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 0.85rem;
    transition: all 0.2s;
    cursor: pointer;
    border: 1px solid transparent;
    white-space: nowrap;
}
.sp-tool-btn-secondary {
    background: var(--sp-bg-3);
    color: var(--sp-text);
    border-color: var(--sp-border);
}
.sp-tool-btn-secondary:hover {
    border-color: var(--sp-border-2);
    background: var(--sp-bg-card-hover);
}
.sp-tool-btn-primary {
    background: var(--sp-accent);
    color: white;
}
.sp-tool-btn-primary:hover {
    background: var(--sp-accent-2);
    box-shadow: 0 4px 12px var(--sp-accent-glow);
    transform: translateY(-1px);
}
.sp-tool-btn-lg { padding: 14px 22px; font-size: 0.95rem; }

.sp-promo-flag {
    position: absolute;
    top: 14px;
    right: 14px;
    background: var(--sp-accent);
    color: white;
    padding: 3px 10px;
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    font-weight: 600;
    z-index: 2;
}
.sp-promo-flag::before { content: '◆ '; font-size: 0.6rem; }

.sp-no-results {
    grid-column: 1 / -1;
    padding: 40px;
    text-align: center;
    color: var(--sp-text-3);
    background: var(--sp-bg-card);
    border-radius: 12px;
}

/* ============ FAB AI MATCHER (mobile) ============ */
.sp-fab-ai {
    display: none;
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 90;
    background: var(--sp-accent);
    color: white;
    border-radius: 999px;
    padding: 14px 18px;
    box-shadow: 0 8px 24px var(--sp-accent-glow), 0 4px 12px rgba(0,0,0,0.3);
    align-items: center;
    gap: 8px;
    font-weight: 600;
    font-size: 0.9rem;
}

/* ============ SINGLE TOOL PAGE ============ */
.sp-single-container { max-width: 1100px; padding: 40px 32px; }

.sp-single-header {
    display: grid;
    grid-template-columns: 80px 1fr auto;
    gap: 20px;
    padding: 24px 0;
    align-items: center;
    border-bottom: 1px solid var(--sp-border);
}
.sp-single-logo img,
.sp-single-logo .sp-tool-logo-initials {
    width: 80px; height: 80px;
    border-radius: 16px;
    font-size: 2rem;
    display: flex; align-items: center; justify-content: center;
    color: white; font-weight: 600;
}
.sp-single-titles h1 {
    font-family: 'Outfit', sans-serif;
    font-size: 2rem;
    margin: 0 0 6px 0;
    display: flex; align-items: center; gap: 8px;
}
.sp-single-meta { display: flex; gap: 16px; flex-wrap: wrap; font-size: 0.9rem; }

.sp-promo-box {
    background: var(--sp-accent-light);
    border: 1px solid var(--sp-accent);
    border-radius: 12px;
    padding: 20px;
    margin: 24px 0;
}
.sp-promo-box .sp-promo-flag { position: static; }
.sp-promo-box p { margin: 8px 0 0 0; }
.sp-promo-expiry { font-size: 0.85rem; color: var(--sp-text-3); }

.sp-single-body {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 40px;
    padding: 32px 0;
}
.sp-single-section { margin-bottom: 32px; }
.sp-single-section h2 {
    font-family: 'Instrument Serif', serif;
    font-size: 1.8rem;
    margin-bottom: 16px;
}
.sp-prose { color: var(--sp-text-2); line-height: 1.7; }
.sp-prose h3 { margin-top: 24px; color: var(--sp-text); }
.sp-prose ul, .sp-prose ol { padding-left: 20px; }

.sp-info-card {
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 16px;
}
.sp-info-card h3 { margin: 0 0 12px 0; font-size: 1rem; }
.sp-info-card dl { margin: 0; }
.sp-info-card dt {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    margin-top: 12px;
}
.sp-info-card dd { margin: 4px 0 0 0; color: var(--sp-text); }

.sp-single-sidebar .sp-partner-card { border-color: var(--sp-accent); background: var(--sp-accent-light); }

.sp-related-section { margin: 48px 0; }

/* ============ RESPONSIVE ============ */
@media (max-width: 1200px) {
    .sp-container { padding: 0 24px; }
    .sp-promo-grid { grid-template-columns: repeat(2, 1fr); }
    .sp-tools-grid { grid-template-columns: repeat(2, 1fr); }
    .sp-hero-inner { grid-template-columns: 1fr; gap: 40px; }
}

@media (max-width: 900px) {
    .sp-main-layout { grid-template-columns: 1fr; gap: 24px; }
    .sp-sidebar { position: static; }
    .sp-single-body { grid-template-columns: 1fr; }
}

@media (max-width: 768px) {
    .sp-container { padding: 0 16px; }
    .sp-hero { padding: 32px 0 24px; }
    .sp-hero-title { font-size: 2.4rem; }
    .sp-hero-cta { flex-direction: column; }
    .sp-promo-grid, .sp-tools-grid { grid-template-columns: 1fr; gap: 12px; }
    .sp-tabs-bar { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
    .sp-tabs-bar::-webkit-scrollbar { display: none; }
    .sp-tools-header { flex-direction: column; align-items: flex-start; gap: 12px; }
    .sp-tools-actions { width: 100%; }
    .sp-fab-ai { display: inline-flex; }
    .sp-single-container { padding: 20px 16px; }
    .sp-single-header { grid-template-columns: 60px 1fr; }
    .sp-single-cta { grid-column: 1 / -1; }
}

@media (hover: none) and (pointer: coarse) {
    .sp-tool-card:hover, .sp-promo-card:hover { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        transition-duration: 0.01ms !important;
    }
}

/* ============ SIDEBAR HEADER + RESET FILTERS ============ */
.sp-sidebar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-bottom: 14px;
    margin-bottom: 16px;
    border-bottom: 1px solid var(--sp-border);
}
.sp-sidebar-title {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    color: var(--sp-text);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 600;
}
.sp-reset-filters-btn {
    background: none;
    border: 1px solid var(--sp-border);
    border-radius: 6px;
    padding: 4px 10px;
    font-size: 0.75rem;
    font-family: 'JetBrains Mono', monospace;
    color: var(--sp-text-2);
    cursor: pointer;
    transition: all 0.15s;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.sp-reset-filters-btn:hover {
    border-color: var(--sp-accent);
    color: var(--sp-accent);
}



/* ============ PARTNER PAGE: banner + related articles ============ */
.sp-partner-banner {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 16px;
    background: var(--sp-accent-light);
    border: 1px solid var(--sp-accent);
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.8rem;
    color: var(--sp-accent);
    margin: 16px 0 24px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
.sp-partner-banner-icon { font-size: 1rem; }
.sp-partner-banner-tier {
    padding: 2px 8px;
    background: var(--sp-accent);
    color: #fff;
    border-radius: 999px;
    font-size: 0.7rem;
}

.sp-related-articles-section { margin-top: 32px; }
.sp-related-articles-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.sp-related-articles-list li {
    padding: 0;
    margin: 0;
}
.sp-related-articles-list a {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--sp-border);
    border-radius: 10px;
    background: var(--sp-bg-card);
    transition: all 0.2s;
    color: var(--sp-text);
    text-decoration: none;
}
.sp-related-articles-list a:hover {
    border-color: var(--sp-accent);
    background: var(--sp-bg-card-hover);
    transform: translateX(3px);
}
.sp-related-arrow {
    color: var(--sp-accent);
    font-weight: 700;
    flex-shrink: 0;
}
.sp-related-articles-list a:hover .sp-related-title {
    color: var(--sp-accent);
}

/* ============ PAGINATION (numerica) ============ */
.sp-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin: 32px 0 16px;
    flex-wrap: wrap;
}
.sp-pag-btn,
.sp-pag-num {
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 8px;
    padding: 9px 14px;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--sp-text);
    cursor: pointer;
    font-family: inherit;
    transition: all 0.15s;
    min-width: 40px;
}
.sp-pag-btn:hover:not(:disabled),
.sp-pag-num:hover:not(.sp-pag-num-active) {
    border-color: var(--sp-accent);
    color: var(--sp-accent);
}
.sp-pag-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.sp-pag-num-active {
    background: var(--sp-accent);
    border-color: var(--sp-accent);
    color: #fff;
    font-weight: 600;
}
.sp-pag-numbers {
    display: flex;
    gap: 4px;
    align-items: center;
}
.sp-pag-ellipsis {
    color: var(--sp-text-3);
    padding: 0 6px;
    user-select: none;
}

/* ============ BOTTONI: freccia animata + block + pulse ============ */
.sp-tool-btn {
    text-decoration: none;
}
.sp-tool-btn .sp-btn-arrow {
    display: inline-block;
    margin-left: 6px;
    transition: transform 0.2s;
}
.sp-tool-btn:hover .sp-btn-arrow {
    transform: translateX(3px);
}
.sp-tool-btn-block {
    display: flex !important;
    width: 100% !important;
    justify-content: center;
    margin-top: 12px;
}

/* Pulse animation per il CTA principale "Get the deal" / "Visit website" */
@keyframes sp-cta-pulse {
    0%, 100% { box-shadow: 0 4px 12px var(--sp-accent-glow); }
    50% { box-shadow: 0 6px 20px var(--sp-accent-glow), 0 0 0 4px rgba(249, 115, 22, 0.15); }
}
.sp-tool-btn-pulse {
    animation: sp-cta-pulse 2.5s ease-in-out infinite;
}
.sp-tool-btn-pulse:hover {
    animation: none;
}
@media (prefers-reduced-motion: reduce) {
    .sp-tool-btn-pulse { animation: none; }
}

/* ============ RELATED TOOLS SECTION (migliorata) ============ */
.sp-related-section {
    margin: 56px 0 32px;
    padding-top: 32px;
    border-top: 1px solid var(--sp-border);
}
.sp-related-section .sp-section-eyebrow {
    margin-bottom: 20px;
}
.sp-related-section .sp-tools-grid {
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 16px;
}

/* =================================================================== */
/* ============ PARTNERS LAYOUT 2-COL (v2 redesign) ================== */
/* =================================================================== */

/* Layout principale: sidebar + main */
.sp-partners-layout {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 32px;
    align-items: start;
}
@media (max-width: 980px) {
    .sp-partners-layout {
        grid-template-columns: 1fr;
        gap: 24px;
    }
}

/* Sidebar */
.sp-partners-sidebar {
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 16px;
    padding: 20px;
    position: sticky;
    top: 100px;
}
@media (max-width: 980px) {
    .sp-partners-sidebar {
        position: static;
    }
}
.sp-partners-sidebar .sp-sidebar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-bottom: 14px;
    margin-bottom: 16px;
    border-bottom: 1px solid var(--sp-border);
}
.sp-partners-sidebar .sp-sidebar-block {
    margin-bottom: 22px;
}
.sp-partners-sidebar .sp-sidebar-block:last-child {
    margin-bottom: 0;
}
.sp-sidebar-label {
    display: block;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 10px;
    font-weight: 600;
}
.sp-partners-sidebar .sp-partners-search {
    width: 100%;
    padding: 9px 12px;
    background: var(--sp-bg-2);
    border: 1px solid var(--sp-border-2);
    border-radius: 8px;
    color: var(--sp-text);
    font-family: inherit;
    font-size: 0.9rem;
    outline: none;
}
.sp-partners-sidebar .sp-partners-search:focus {
    border-color: var(--sp-accent);
}
.sp-partners-sidebar .sp-partners-sort {
    width: 100%;
    padding: 9px 12px;
    background: var(--sp-bg-2);
    border: 1px solid var(--sp-border-2);
    border-radius: 8px;
    color: var(--sp-text);
    font-family: inherit;
    font-size: 0.9rem;
    cursor: pointer;
    outline: none;
}
.sp-partners-sidebar .sp-checkbox-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    border-radius: 8px;
    cursor: pointer;
    color: var(--sp-text-2);
    font-size: 0.9rem;
    transition: background 0.15s;
}
.sp-partners-sidebar .sp-checkbox-item:hover {
    background: var(--sp-bg-card-hover);
    color: var(--sp-text);
}
.sp-partners-sidebar .sp-checkbox-item input[type="checkbox"] {
    accent-color: var(--sp-accent);
    cursor: pointer;
}

/* Category list (riusa lo stile del marketplace) */
.sp-partners-sidebar .sp-category-list {
    list-style: none;
    padding: 0;
    margin: 0;
    max-height: 400px;
    overflow-y: auto;
}
.sp-partners-sidebar .sp-category-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 10px;
    border-radius: 8px;
    font-size: 0.88rem;
    color: var(--sp-text-2);
    cursor: pointer;
    transition: all 0.15s;
    margin-bottom: 2px;
}
.sp-partners-sidebar .sp-category-item:hover {
    background: var(--sp-bg-card-hover);
    color: var(--sp-text);
}
.sp-partners-sidebar .sp-category-item-active {
    background: var(--sp-accent-light);
    color: var(--sp-accent);
    font-weight: 600;
}
.sp-partners-sidebar .sp-category-count {
    font-size: 0.72rem;
    color: var(--sp-text-3);
    background: var(--sp-bg);
    padding: 2px 8px;
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
}
.sp-partners-sidebar .sp-category-item-active .sp-category-count {
    background: var(--sp-accent);
    color: #fff;
}

/* Grid: 3 colonne sopra 1280px, 2 colonne medium, 1 mobile */
.sp-partners-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
    margin-bottom: 32px;
}
@media (max-width: 1280px) {
    .sp-partners-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
    .sp-partners-grid { grid-template-columns: minmax(0, 1fr); gap: 16px; }
}


/* =============================================================== */
/* ============ PARTNER CARD (variante B, definitiva) ============ */
/* =============================================================== */

.sp-partner-card {
    position: relative;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 16px;
    padding: 24px 20px;
    text-align: center;
    transition: all 0.25s ease;
    /* Layout interno a grid con righe fisse → bottone sempre allo stesso posto */
    display: grid;
    grid-template-rows:
        80px       /* logo */
        auto       /* name */
        20px       /* category */
        4.5em      /* tagline (3 righe esatte) */
        24px       /* meta */
        auto       /* deal box (auto se presente) */
        1fr        /* spacer */
        46px       /* CTA */
        20px;      /* details link */
    row-gap: 10px;
    /* Anti-overflow: necessario per grid items dentro grid container */
    min-width: 0;
    overflow: hidden;
}

.sp-partner-card:hover {
    border-color: var(--sp-accent);
    background: var(--sp-bg-card-hover);
    transform: translateY(-3px);
    box-shadow: 0 12px 32px rgba(249, 115, 22, 0.15);
}

.sp-partner-card-featured {
    border-color: var(--sp-accent);
    background: linear-gradient(180deg, var(--sp-accent-light) 0%, var(--sp-bg-card) 60%);
}

/* Light theme card */
html[data-theme="light"] .sp-partner-card {
    background: rgba(0, 0, 0, 0.02);
}
html[data-theme="light"] .sp-partner-card:hover {
    background: rgba(0, 0, 0, 0.04);
}

/* ----- LOGO ----- */
.sp-partner-card-logo-link {
    grid-row: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}
.sp-partner-card-logo {
    width: 80px;
    height: 80px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--sp-border);
    border-radius: 14px;
    padding: 10px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s;
}
.sp-partner-card:hover .sp-partner-card-logo {
    transform: scale(1.05);
}
.sp-partner-card-logo img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
html[data-theme="light"] .sp-partner-card-logo {
    background: #ffffff;
    border-color: rgba(0,0,0,0.08);
}

/* ----- NAME ----- */
.sp-partner-card-name {
    grid-row: 2;
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--sp-text);
    /* Tronca se il nome è troppo lungo per la card */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding: 0 4px;
}
.sp-partner-card-name a {
    color: inherit;
    text-decoration: none;
}
.sp-partner-card-name a:hover {
    color: var(--sp-accent);
}

/* ----- CATEGORY ----- */
.sp-partner-card-category {
    grid-row: 3;
    margin: 0;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding: 0 4px;
}

/* ----- TAGLINE (3 righe troncate) ----- */
.sp-partner-card-tagline {
    grid-row: 4;
    margin: 0;
    font-size: 0.88rem;
    line-height: 1.5;
    color: var(--sp-text-2);
    /* clamp 3 righe */
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    text-overflow: ellipsis;
    word-break: break-word;
    padding: 0 4px;
}

/* ----- META (rating + pricing) ----- */
.sp-partner-card-meta {
    grid-row: 5;
    margin: 0;
    display: flex;
    gap: 10px;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem;
    color: var(--sp-text-3);
    min-width: 0;
}
.sp-partner-card-rating {
    color: var(--sp-warning, #fbbf24);
    font-weight: 600;
    flex-shrink: 0;
}
.sp-partner-card-pricing {
    font-family: 'JetBrains Mono', monospace;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    max-width: 100%;
}

/* ----- DEAL BOX ----- */
.sp-partner-card-deal-box {
    grid-row: 6;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    background: var(--sp-accent-light);
    border: 1px solid var(--sp-accent);
    border-radius: 8px;
    color: var(--sp-accent);
    font-size: 0.8rem;
    text-align: left;
    line-height: 1.3;
}
.sp-partner-card-deal-icon {
    flex-shrink: 0;
    font-size: 0.95rem;
}
.sp-partner-card-deal-text {
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

/* ----- CTA BOTTONE (altezza fissa, larghezza container) ----- */
.sp-partner-card .sp-tool-btn-block {
    grid-row: 8;
    margin: 0;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    height: 46px;
    padding: 0 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-size: 0.92rem;
    overflow: hidden;
}

/* ----- DETAILS LINK ----- */
.sp-partner-card-details-link {
    grid-row: 9;
    margin: 0;
    align-self: center;
    font-size: 0.82rem;
    color: var(--sp-text-3);
    text-decoration: none;
    transition: color 0.15s;
}
.sp-partner-card-details-link:hover {
    color: var(--sp-accent);
}

/* ----- BADGES ----- */
.sp-partner-card-badge {
    position: absolute;
    top: 12px;
    padding: 3px 9px;
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    z-index: 2;
}
.sp-partner-card-badge-featured {
    left: 12px;
    background: linear-gradient(135deg, #f97316, #fbbf24);
    color: #fff;
}
.sp-partner-card-badge-deal {
    right: 12px;
    background: var(--sp-accent);
    color: #fff;
}

/* ----- NO RESULTS ----- */
#saaspartout-partners .sp-no-results {
    grid-column: 1 / -1;
    text-align: center;
    padding: 60px 20px;
    color: var(--sp-text-3);
    font-size: 1.05rem;
}

/* =================================================================== */
/* ================== AI ASSISTANT (/ai-assistant/) ================== */
/* =================================================================== */

#saaspartout-ai-assistant {
    padding: 40px 0 80px;
    min-height: 60vh;
}
.sp-ai-container {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 24px;
}

/* ----- HERO ----- */
.sp-ai-hero {
    text-align: center;
    padding: 24px 0 40px;
}
.sp-ai-eyebrow {
    display: inline-block;
    padding: 6px 14px;
    background: var(--sp-accent-light);
    border: 1px solid var(--sp-accent);
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.75rem;
    color: var(--sp-accent);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-bottom: 20px;
}
.sp-ai-title {
    font-family: 'Instrument Serif', serif;
    font-size: clamp(2rem, 4.5vw, 3.2rem);
    font-weight: 400;
    line-height: 1.1;
    color: var(--sp-text);
    margin: 0 0 16px;
}
.sp-ai-subtitle {
    font-size: 1.02rem;
    line-height: 1.6;
    color: var(--sp-text-2);
    margin: 0 auto;
    max-width: 680px;
}

/* ----- CHAT CONTAINER ----- */
.sp-ai-chat {
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 18px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}
html[data-theme="light"] .sp-ai-chat {
    background: rgba(0,0,0,0.02);
    box-shadow: 0 8px 28px rgba(0,0,0,0.08);
}

/* Header chat */
.sp-ai-chat-header {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 22px;
    background: linear-gradient(135deg, var(--sp-accent-light) 0%, transparent 100%);
    border-bottom: 1px solid var(--sp-border);
}
.sp-ai-chat-avatar {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    background: linear-gradient(135deg, #f97316, #fbbf24);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    flex-shrink: 0;
}
.sp-ai-chat-avatar-dot {
    width: 16px;
    height: 16px;
    background: #fff;
    clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
}
.sp-ai-chat-headline h2 {
    font-size: 1.05rem;
    margin: 0;
    color: var(--sp-text);
    font-weight: 700;
}
.sp-ai-chat-status {
    display: flex;
    align-items: center;
    gap: 6px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    color: var(--sp-text-3);
    margin-top: 2px;
}
.sp-ai-status-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 0 0 rgba(34,197,94,0.6);
    animation: spAiPulse 2s infinite;
}
@keyframes spAiPulse {
    0%   { box-shadow: 0 0 0 0 rgba(34,197,94,0.6); }
    70%  { box-shadow: 0 0 0 6px rgba(34,197,94,0); }
    100% { box-shadow: 0 0 0 0 rgba(34,197,94,0); }
}

/* Messages area */
.sp-ai-messages {
    padding: 24px 22px;
    flex: 1;
    min-height: 360px;
    max-height: 560px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 18px;
    scroll-behavior: smooth;
}
.sp-ai-messages::-webkit-scrollbar { width: 6px; }
.sp-ai-messages::-webkit-scrollbar-thumb { background: var(--sp-border-2); border-radius: 3px; }

/* Single message */
.sp-ai-message {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    max-width: 100%;
}
.sp-ai-message-user {
    flex-direction: row-reverse;
}
.sp-ai-message-avatar {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 10px;
    background: var(--sp-accent);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95rem;
    font-weight: 700;
}
.sp-ai-message-user .sp-ai-message-avatar {
    background: var(--sp-bg-2);
    color: var(--sp-text);
    border: 1px solid var(--sp-border-2);
}
.sp-ai-message-body {
    max-width: calc(100% - 50px);
    min-width: 0;
}
.sp-ai-message-content {
    background: var(--sp-bg-2);
    border: 1px solid var(--sp-border-2);
    border-radius: 14px 14px 14px 4px;
    padding: 12px 16px;
    color: var(--sp-text);
    font-size: 0.95rem;
    line-height: 1.55;
    word-wrap: break-word;
}
.sp-ai-message-user .sp-ai-message-content {
    background: var(--sp-accent);
    color: #fff;
    border-color: var(--sp-accent);
    border-radius: 14px 14px 4px 14px;
}
.sp-ai-message-content p { margin: 0; }
.sp-ai-message-content p + p { margin-top: 8px; }
.sp-ai-message-content a {
    color: var(--sp-accent);
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 600;
}
.sp-ai-message-user .sp-ai-message-content a {
    color: #fff;
    text-decoration: underline;
}

/* Quick replies */
.sp-ai-quick-replies {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 10px;
}
.sp-ai-quick-reply {
    padding: 8px 14px;
    background: transparent;
    border: 1px solid var(--sp-border-2);
    border-radius: 999px;
    color: var(--sp-text-2);
    font-family: inherit;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.15s;
    line-height: 1.2;
}
.sp-ai-quick-reply:hover:not(:disabled) {
    border-color: var(--sp-accent);
    background: var(--sp-accent-light);
    color: var(--sp-accent);
    transform: translateY(-1px);
}
.sp-ai-quick-reply:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Tool-recommendation buttons (versione speciale per i link partner) */
.sp-ai-tool-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 9px 16px;
    background: var(--sp-accent);
    border: 1px solid var(--sp-accent);
    border-radius: 999px;
    color: #fff !important;
    font-family: inherit;
    font-size: 0.86rem;
    font-weight: 600;
    cursor: pointer;
    text-decoration: none !important;
    transition: all 0.15s;
}
.sp-ai-tool-btn:hover {
    background: #ea580c;
    border-color: #ea580c;
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(249,115,22,0.35);
}
.sp-ai-tool-btn .sp-ai-tool-btn-arrow { font-size: 0.9rem; }

/* Typing indicator */
.sp-ai-typing {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}
.sp-ai-typing[hidden] { display: none !important; }
.sp-ai-typing-dots {
    background: var(--sp-bg-2);
    border: 1px solid var(--sp-border-2);
    border-radius: 14px 14px 14px 4px;
    padding: 12px 18px;
    display: flex;
    gap: 5px;
}
.sp-ai-typing-dots span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--sp-text-3);
    animation: spAiTyping 1.4s infinite;
}
.sp-ai-typing-dots span:nth-child(2) { animation-delay: 0.15s; }
.sp-ai-typing-dots span:nth-child(3) { animation-delay: 0.3s; }
@keyframes spAiTyping {
    0%, 60%, 100% { opacity: 0.3; transform: translateY(0); }
    30%           { opacity: 1;   transform: translateY(-3px); }
}

/* Input bar */
.sp-ai-input-bar {
    display: flex;
    gap: 10px;
    padding: 14px 18px;
    background: var(--sp-bg-2);
    border-top: 1px solid var(--sp-border);
}
.sp-ai-input {
    flex: 1;
    padding: 12px 16px;
    background: var(--sp-bg);
    border: 1px solid var(--sp-border);
    border-radius: 10px;
    color: var(--sp-text);
    font-family: inherit;
    font-size: 0.95rem;
    outline: none;
    transition: border-color 0.15s;
    min-width: 0;
}
.sp-ai-input:focus {
    border-color: var(--sp-accent);
}
.sp-ai-send-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 18px;
    height: 44px;
    background: var(--sp-accent);
    border: none;
    border-radius: 10px;
    color: #fff;
    font-family: inherit;
    font-size: 0.92rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    flex-shrink: 0;
}
.sp-ai-send-btn:hover:not(:disabled) {
    background: #ea580c;
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(249,115,22,0.35);
}
.sp-ai-send-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.sp-ai-send-btn .sp-ai-send-arrow {
    transition: transform 0.15s;
}
.sp-ai-send-btn:hover:not(:disabled) .sp-ai-send-arrow {
    transform: translateX(3px);
}

/* Footnote sotto chat */
.sp-ai-footnote {
    padding: 10px 22px;
    text-align: center;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    color: var(--sp-text-3);
    background: var(--sp-bg);
    border-top: 1px solid var(--sp-border);
}

/* ----- INFO BOX SOTTO CHAT ----- */
.sp-ai-info-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    margin-top: 28px;
}
@media (max-width: 640px) {
    .sp-ai-info-grid { grid-template-columns: 1fr; }
}
.sp-ai-info-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 20px 22px;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 14px;
    text-decoration: none;
    color: var(--sp-text);
    transition: all 0.2s;
}
.sp-ai-info-card:hover {
    border-color: var(--sp-accent);
    background: var(--sp-bg-card-hover);
    transform: translateY(-2px);
}
.sp-ai-info-eyebrow {
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.7rem;
    color: var(--sp-text-3);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.sp-ai-info-card strong {
    font-size: 1.15rem;
    color: var(--sp-text);
}
.sp-ai-info-text {
    font-size: 0.88rem;
    color: var(--sp-text-2);
    line-height: 1.45;
}

/* ----- MOBILE responsive ----- */
@media (max-width: 640px) {
    .sp-ai-messages { padding: 16px 14px; min-height: 320px; max-height: 60vh; }
    .sp-ai-input-bar { padding: 12px 14px; }
    .sp-ai-send-label { display: none; }
    .sp-ai-send-btn { padding: 0 14px; }
    .sp-ai-chat-header { padding: 14px 16px; }
}

/* =================================================================== */
/* ================== AI ASSISTANT CTA BLOCK ========================= */
/* =================================================================== */

.sp-ai-cta-block {
    margin: 56px 0 32px;
    padding: 0;
    border-radius: 22px;
    overflow: hidden;
    background:
        radial-gradient(circle at 0% 0%, rgba(249, 115, 22, 0.18) 0%, transparent 50%),
        radial-gradient(circle at 100% 100%, rgba(251, 191, 36, 0.12) 0%, transparent 55%),
        linear-gradient(135deg, var(--sp-bg-card) 0%, var(--sp-bg-2) 100%);
    border: 1px solid var(--sp-accent);
    box-shadow: 0 18px 48px rgba(249, 115, 22, 0.18);
    position: relative;
}
.sp-ai-cta-inner {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 40px;
    padding: 44px 48px;
    align-items: center;
}
@media (max-width: 880px) {
    .sp-ai-cta-inner { grid-template-columns: 1fr; padding: 32px 24px; gap: 28px; }
}

.sp-ai-cta-left {
    min-width: 0;
}

.sp-ai-cta-eyebrow {
    display: inline-block;
    padding: 5px 13px;
    background: rgba(249, 115, 22, 0.15);
    border: 1px solid var(--sp-accent);
    border-radius: 999px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.72rem;
    color: var(--sp-accent);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-bottom: 18px;
}

.sp-ai-cta-title {
    font-family: 'Instrument Serif', serif;
    font-size: clamp(1.9rem, 4vw, 3rem);
    font-weight: 400;
    line-height: 1.05;
    color: var(--sp-text);
    margin: 0 0 16px;
}
.sp-ai-cta-title em {
    font-style: italic;
    color: var(--sp-accent);
}

.sp-ai-cta-text {
    font-size: 1.02rem;
    line-height: 1.6;
    color: var(--sp-text-2);
    margin: 0 0 24px;
    max-width: 540px;
}

.sp-ai-cta-actions {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
}
.sp-ai-cta-actions .sp-tool-btn-lg {
    padding: 16px 28px;
    font-size: 1.05rem;
    font-weight: 700;
}
.sp-ai-cta-meta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 0.78rem;
    color: var(--sp-text-3);
}
.sp-ai-cta-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.5);
    animation: spAiCtaDot 2s infinite;
}
@keyframes spAiCtaDot {
    0%, 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0.5); }
    50%      { box-shadow: 0 0 0 8px rgba(34, 197, 94, 0); }
}

/* Right side: chat bubbles decorativi */
.sp-ai-cta-right {
    position: relative;
    min-height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
}
@media (max-width: 880px) {
    .sp-ai-cta-right { display: none; }
}

.sp-ai-cta-bubble {
    position: absolute;
    background: var(--sp-bg-card);
    border: 1px solid var(--sp-border);
    border-radius: 16px 16px 16px 4px;
    padding: 11px 16px;
    font-size: 0.86rem;
    color: var(--sp-text);
    white-space: nowrap;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.15);
    animation: spAiCtaBubble 4s ease-in-out infinite;
}
html[data-theme="light"] .sp-ai-cta-bubble {
    background: #ffffff;
}
.sp-ai-cta-bubble-1 {
    top: 10%;
    left: 5%;
    animation-delay: 0s;
}
.sp-ai-cta-bubble-2 {
    top: 42%;
    right: 8%;
    border-radius: 16px 16px 4px 16px;
    background: var(--sp-accent);
    color: #fff;
    border-color: var(--sp-accent);
    animation-delay: 1s;
}
.sp-ai-cta-bubble-3 {
    bottom: 12%;
    left: 12%;
    animation-delay: 2s;
}
@keyframes spAiCtaBubble {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-6px); }
}

.sp-ai-cta-icon {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: linear-gradient(135deg, #f97316, #fbbf24);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 1.8rem;
    font-weight: 700;
    box-shadow: 0 10px 30px rgba(249, 115, 22, 0.5);
    z-index: 2;
}

/* AI Assistant: stili per markdown renderizzato nei messaggi */
.sp-ai-message-content strong {
    font-weight: 700;
    color: inherit;
}
.sp-ai-message-content em {
    font-style: italic;
}
.sp-ai-message-content code {
    font-family: 'JetBrains Mono', Menlo, Consolas, monospace;
    font-size: 0.88em;
    background: rgba(249, 115, 22, 0.12);
    color: var(--sp-accent);
    padding: 1px 6px;
    border-radius: 4px;
}
.sp-ai-message-user .sp-ai-message-content code {
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
}
.sp-ai-md-list {
    margin: 8px 0 0 0;
    padding-left: 20px;
}
.sp-ai-md-list li {
    margin: 4px 0;
    line-height: 1.55;
}
.sp-ai-md-list li strong {
    color: var(--sp-accent);
}
.sp-ai-message-user .sp-ai-md-list li strong {
    color: #fff;
}
