/**
 * AIRI Dashboard layout — card grid for the unified [airi_dashboard] shortcode.
 *
 * Responsive at 3 breakpoints:
 *   - desktop   (>1024px): 2-col 55/45 card interior, radar max 460px
 *   - tablet    (768–1024px): 2-col tightened, radar max 400px
 *   - mobile    (<768px): single-column stack, radar max 360px
 *   - small     (<480px): tighter type + padding
 *
 * Design tokens: uses --airi-* custom properties from aiready-landing.css with
 * literal fallbacks so the layout works even if the landing CSS is not loaded.
 *
 * Companion file: airi-dashboard-radar.css (radar canvas + pillar table core
 * styling). This file owns the PAGE layout (cards, grid, strip, responsive).
 *
 * @package Airi\Dashboard
 * @since   5.2.1
 */

/* ==========================================================================
   Layout tokens (breakpoint-varying via CSS custom properties)
   ========================================================================== */
.airi-dashboard-wrap {
    --airi-dash-card-pad: 32px;
    --airi-dash-card-gap: 24px;
    --airi-dash-col-gap: 32px;
    --airi-dash-page-pad: 32px;
    --airi-dash-radar-max: 460px;
    --airi-dash-radius: 12px;
    --airi-dash-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 4px 16px rgba(0, 0, 0, 0.04);

    max-width: 1120px;
    margin: 0 auto;
    /* L/R gutter (--airi-dash-page-pad) so the main + sidebar panels don't sit
       flush against the container edge. Was `0` (no side padding). */
    padding: var(--airi-dash-card-gap) var(--airi-dash-page-pad) 48px;
    color: var(--airi-dark, #1A1A1A);
    font-family: var(--airi-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
}

/* ==========================================================================
   Card — shared shell for strip, assessment cards, empty-state, footer
   ========================================================================== */
.airi-dashboard-wrap .airi-card {
    background: var(--airi-white, #FFFFFF);
    border-radius: var(--airi-dash-radius);
    padding: var(--airi-dash-card-pad);
    margin-bottom: var(--airi-dash-card-gap);
    box-shadow: var(--airi-dash-shadow);
    border: 1px solid var(--airi-gray-200, #E5E7EB);
}

.airi-dashboard-wrap .airi-card-title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--airi-dark, #1A1A1A);
    margin: 0 0 12px;
}

.airi-dashboard-wrap .airi-card-lead {
    font-size: 1rem;
    color: var(--airi-gray-600, #4B5563);
    line-height: 1.6;
    margin: 0 0 20px;
}

/* ==========================================================================
   Insight strip — top card with CTA + gap summary
   ========================================================================== */
.airi-dashboard-wrap .airi-strip {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--airi-dash-col-gap);
    align-items: center;
}

/* task-20260426-009: when the strip carries only one child (e.g. CTA is empty
   because user has both assessments — only the gap narrative renders), span
   both columns so the text doesn't get squeezed into ~50% width with the
   other half blank. */
.airi-dashboard-wrap .airi-strip > :only-child {
    grid-column: 1 / -1;
}

.airi-dashboard-wrap .airi-strip-cta p {
    margin-top: 0;
}

.airi-dashboard-wrap .airi-gap-narrative,
.airi-dashboard-wrap .airi-gap-reco {
    margin: 0 0 8px;
    line-height: 1.55;
}

.airi-dashboard-wrap .airi-gap-narrative strong,
.airi-dashboard-wrap .airi-gap-reco strong {
    color: var(--airi-dark, #1A1A1A);
}

/* Suppress inline background set by legacy renderDashboardCta()'s wrapper div
   when it's inside our card — prevents double-card appearance. */
.airi-dashboard-wrap .airi-strip-cta .airi-dashboard-cta {
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
}

/* ==========================================================================
   Assessment card — heading row + 2-col body (radar + insights)
   ========================================================================== */
.airi-dashboard-wrap .airi-card-pairi {
    border-top: 3px solid #C00000; /* pAIRI red accent (matches radar palette) */
}

.airi-dashboard-wrap .airi-card-oairi {
    border-top: 3px solid var(--airi-gray-700, #374151); /* oAIRI grey accent */
}

.airi-dashboard-wrap .airi-card-head {
    padding-bottom: 20px;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--airi-gray-200, #E5E7EB);
}

.airi-dashboard-wrap .airi-card-head h2 {
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0 0 8px;
}

.airi-dashboard-wrap .airi-card-head p {
    margin: 0;
    color: var(--airi-gray-600, #4B5563);
}

.airi-dashboard-wrap .airi-card-body {
    display: grid;
    grid-template-columns: 55fr 45fr;
    gap: var(--airi-dash-col-gap);
    align-items: start;
}

/* pAIRI/oAIRI card: radar full-width on top, then pillar-table | recommended-path
   in a 2-col row below. The side-by-side radar|table was too cramped once the
   dashboard gained the right sidebar (narrow main column). */
.airi-dashboard-wrap .airi-card-body--stacked {
    display: block;
}
.airi-dashboard-wrap .airi-card-body--stacked .airi-card-col-radar {
    margin-bottom: var(--airi-dash-col-gap);
}
.airi-dashboard-wrap .airi-card-detail {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--airi-dash-col-gap);
    align-items: start;
}

/* Personalised next step (LLM advice) on its OWN full-width row beneath the
   pillar-table | recommended-path grid. It was previously confined to the
   right column, so its long narrative left a tall empty gap on the left below
   the pillar table. Full width here closes that gap. task-20260604-002. */
.airi-dashboard-wrap .airi-card-body--stacked .airi-card-nextstep {
    margin-top: var(--airi-dash-col-gap);
}
.airi-dashboard-wrap .airi-card-body--stacked .airi-card-nextstep .airi-llm-reco {
    margin-top: 0;
}
/* Standalone "Start <pillar> →" CTA sits below the personalised LLM block
   (the static prose box is dropped when LLM advice is present). Override the
   button paragraph's inline margin:0 so it isn't flush against the grey box. */
.airi-dashboard-wrap .airi-card-nextstep .airi-reco-cta {
    margin-top: 18px !important;
}
/* "Your next steps" pending placeholder — muted/italic while the LLM advice
   generates async, so it reads as a status, not a final recommendation. */
.airi-dashboard-wrap .airi-llm-reco--pending .airi-llm-reco-body {
    color: var(--airi-gray-500, #6B7280);
    font-style: italic;
}

/* ==========================================================================
   oAIRI staleness notice (task-20260502-004 D5b / ADR-026)
   Three escalation tiers based on months since last oAIRI submission.
   ========================================================================== */
.airi-dashboard-wrap .airi-staleness {
    margin: 0 0 20px;
    padding: 10px 14px;
    border-radius: 6px;
    font-size: 0.95rem;
    line-height: 1.5;
}

.airi-dashboard-wrap .airi-staleness a {
    font-weight: 600;
}

.airi-dashboard-wrap .airi-staleness-fresh {
    color: var(--airi-gray-600, #4B5563);
    background: var(--airi-gray-50, #F9FAFB);
    border: 1px solid var(--airi-gray-200, #E5E7EB);
}

.airi-dashboard-wrap .airi-staleness-amber {
    color: #78350F;
    background: #FEF3C7;
    border: 1px solid #F59E0B;
}

.airi-dashboard-wrap .airi-staleness-red {
    color: #FFFFFF;
    background: #C00000;
    border: 1px solid #8B0000;
}

.airi-dashboard-wrap .airi-staleness-red a {
    color: #FFFFFF;
    text-decoration: underline;
}

.airi-dashboard-wrap .airi-card-col-radar {
    display: flex;
    justify-content: center;
    align-items: center;
}

.airi-dashboard-wrap .airi-card-col-radar .airi-radar-wrap {
    width: 100%;
    max-width: var(--airi-dash-radar-max);
}

.airi-dashboard-wrap .airi-subhead {
    font-size: 0.9rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--airi-gray-500, #6B7280);
    margin: 0 0 12px;
}

.airi-dashboard-wrap .airi-card-col-insights > :last-child {
    margin-bottom: 0;
}

.airi-dashboard-wrap .airi-card-col-insights .airi-pillar-table {
    margin-bottom: 28px;
}

/* Neutralise the existing renderRecommendation H3's "Your Recommended Path"
   inline style — let our card stylesheet own the look. Also covers the
   full-width fallback slot (.airi-card-nextstep) where the static
   recommendation renders when no LLM advice is cached. task-20260604-002. */
.airi-dashboard-wrap .airi-card-col-insights h3,
.airi-dashboard-wrap .airi-card-nextstep h3 {
    font-size: 0.9rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: 0.04em !important;
    color: var(--airi-gray-500, #6B7280) !important;
    margin: 0 0 12px !important;
}

/* ==========================================================================
   Empty-state & login-prompt cards
   ========================================================================== */
.airi-dashboard-wrap .airi-card-empty,
.airi-dashboard-wrap .airi-card-prompt {
    text-align: center;
    padding: 56px 32px;
    border-top: 3px solid var(--airi-primary, #C00000);
}

/* ==========================================================================
   Buttons — brand-primary red pill
   ========================================================================== */
.airi-dashboard-wrap .airi-btn {
    display: inline-block;
    padding: 12px 28px;
    font-weight: 600;
    font-size: 1rem;
    border-radius: 8px;
    text-decoration: none;
    transition: background-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
    cursor: pointer;
    border: none;
}

.airi-dashboard-wrap .airi-btn-primary {
    background: var(--airi-primary, #C00000);
    color: var(--airi-white, #FFFFFF);
}

.airi-dashboard-wrap .airi-btn-primary:hover,
.airi-dashboard-wrap .airi-btn-primary:focus {
    background: var(--airi-primary-hover, #A00000);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(192, 0, 0, 0.25);
    color: var(--airi-white, #FFFFFF);
}

/* ==========================================================================
   Tablet (769–1024px) — tighten gutters, reduce radar cap
   ========================================================================== */
@media (max-width: 1024px) {
    .airi-dashboard-wrap {
        --airi-dash-card-pad: 28px;
        --airi-dash-col-gap: 24px;
        --airi-dash-radar-max: 400px;
        max-width: 100%;
        padding-left: 16px;
        padding-right: 16px;
    }

    .airi-dashboard-wrap .airi-card-title,
    .airi-dashboard-wrap .airi-card-head h2 {
        font-size: 1.375rem;
    }
}

/* ==========================================================================
   Mobile (≤768px) — stack 2-col to single-column; full-width buttons
   ========================================================================== */
@media (max-width: 768px) {
    .airi-dashboard-wrap {
        --airi-dash-card-pad: 20px;
        --airi-dash-card-gap: 16px;
        --airi-dash-col-gap: 20px;
        --airi-dash-page-pad: 16px;
        --airi-dash-radar-max: 360px;
        padding-bottom: 32px;
    }

    .airi-dashboard-wrap .airi-strip,
    .airi-dashboard-wrap .airi-card-body,
    .airi-dashboard-wrap .airi-card-detail {
        grid-template-columns: 1fr;
    }

    .airi-dashboard-wrap .airi-card-col-radar {
        order: 1;
    }

    .airi-dashboard-wrap .airi-card-col-insights {
        order: 2;
    }

    .airi-dashboard-wrap .airi-card-title,
    .airi-dashboard-wrap .airi-card-head h2 {
        font-size: 1.25rem;
    }

    .airi-dashboard-wrap .airi-card-empty,
    .airi-dashboard-wrap .airi-card-prompt {
        padding: 36px 20px;
    }

    /* Pillar table: allow horizontal scroll on very narrow viewports instead
       of wrapping labels awkwardly. */
    .airi-dashboard-wrap .airi-pillar-table {
        font-size: 0.9rem;
    }
}

/* ==========================================================================
   Small mobile (≤480px) — tighter type + padding
   ========================================================================== */
@media (max-width: 480px) {
    .airi-dashboard-wrap {
        --airi-dash-card-pad: 16px;
        --airi-dash-page-pad: 12px;
        --airi-dash-radar-max: 100%;
    }

    .airi-dashboard-wrap .airi-card-title,
    .airi-dashboard-wrap .airi-card-head h2 {
        font-size: 1.125rem;
        line-height: 1.3;
    }

    .airi-dashboard-wrap .airi-card-lead {
        font-size: 0.95rem;
    }

    .airi-dashboard-wrap .airi-btn {
        padding: 12px 20px;
        font-size: 0.95rem;
    }

    .airi-dashboard-wrap .airi-pillar-table th,
    .airi-dashboard-wrap .airi-pillar-table td {
        padding: 10px 12px;
    }
}

/* ==========================================================================
   Reduced-motion preference — respect prefers-reduced-motion
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
    .airi-dashboard-wrap .airi-btn {
        transition: none;
    }
    .airi-dashboard-wrap .airi-btn-primary:hover {
        transform: none;
    }
}

/* ==========================================================================
   Company Analysis Card — task-20260517-002
   ========================================================================== */
/* Top accent (not a left rail) so this top-level card matches the AIRE /
   pAIRI / oAIRI cards. The left rail is reserved for inner callout boxes
   (Your next steps / recommended path). task-20260605-005.
   - analysis/pending: grey (#374151) — it belongs to the oAIRI "organisation"
     section it follows, so it groups with the grey oAIRI card.
   - stub (couldn't analyse): red — an attention/error state. */
.airi-dashboard-wrap .airi-card-company-analysis,
.airi-dashboard-wrap .airi-card-company-pending {
    border-top: 3px solid var(--airi-gray-700, #374151);
}
.airi-dashboard-wrap .airi-card-company-stub {
    border-top: 3px solid #C00000;
}

.airi-dashboard-wrap .airi-company-meta {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 4px 16px;
    margin: 16px 0;
    font-size: 14px;
}
.airi-dashboard-wrap .airi-company-meta dt {
    font-weight: 600;
    color: #444;
}
.airi-dashboard-wrap .airi-company-meta dd {
    margin: 0;
    color: #222;
}

.airi-dashboard-wrap .airi-company-section-title {
    font-size: 15px;
    font-weight: 600;
    margin: 20px 0 8px;
    color: #222;
}

.airi-dashboard-wrap .airi-company-signals {
    list-style: disc;
    padding-left: 20px;
    margin: 0 0 16px;
}
.airi-dashboard-wrap .airi-company-signals li {
    margin-bottom: 6px;
    font-size: 14px;
    line-height: 1.5;
    color: #333;
}

.airi-dashboard-wrap .airi-company-summary {
    font-size: 14px;
    line-height: 1.55;
    color: #333;
    margin: 0 0 16px;
}
.airi-dashboard-wrap .airi-company-summary-more {
    display: inline;
    margin-left: 4px;
}
.airi-dashboard-wrap .airi-company-summary-more summary {
    display: inline;
    cursor: pointer;
    color: #C00000;
    font-weight: 500;
    list-style: none;
}
.airi-dashboard-wrap .airi-company-summary-more summary::-webkit-details-marker {
    display: none;
}
.airi-dashboard-wrap .airi-company-summary-more[open] summary {
    display: none;
}

.airi-dashboard-wrap .airi-company-actions {
    margin: 16px 0 0;
    text-align: right;
}
.airi-dashboard-wrap .airi-company-refresh {
    color: #C00000;
    font-size: 13px;
    text-decoration: none;
    border-bottom: 1px solid currentColor;
}
.airi-dashboard-wrap .airi-company-refresh:hover {
    color: #8a0000;
}
/* Stub-state CTA uses the solid-red primary button variant — keep its label
   WHITE and drop the inline-link underline/size so it doesn't render red-on-red
   (the .airi-company-refresh inline-link styling above is for the post-success
   card, where the link sits on a white background). */
.airi-dashboard-wrap .airi-company-refresh.airi-btn-primary,
.airi-dashboard-wrap .airi-company-refresh.airi-btn-primary:hover,
.airi-dashboard-wrap .airi-company-refresh.airi-btn-primary:focus {
    color: var(--airi-white, #FFFFFF);
    font-size: 1rem;
    border-bottom: none;
}

.airi-dashboard-wrap .airi-card-company-pending {
    background: #fdfaf0;
}
.airi-dashboard-wrap .airi-card-company-stub {
    background: #fff5f5;
}

/* ==========================================================================
   task-20260604-001: AI-opportunity sections — industry AI (goal 4),
   competitor AI (goal 5), recommended use cases (goal 6).
   ========================================================================== */
.airi-dashboard-wrap .airi-company-industry-ai {
    margin: 8px 0 0;
}
.airi-dashboard-wrap .airi-company-trends {
    margin: 8px 0 0;
    padding-left: 18px;
}
.airi-dashboard-wrap .airi-company-trends li {
    margin: 2px 0;
}
.airi-dashboard-wrap .airi-company-maturity {
    margin: 8px 0 0;
    font-size: 13px;
    color: #666666;
}
.airi-dashboard-wrap .airi-company-maturity span {
    color: #C00000;
    font-weight: 600;
}
.airi-dashboard-wrap .airi-company-competitors {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
}
.airi-dashboard-wrap .airi-company-comp {
    padding: 10px 12px;
    margin: 8px 0 0;
    background: #F2F2F2;
    border-radius: 6px;
}
.airi-dashboard-wrap .airi-company-comp-name {
    display: block;
    font-weight: 600;
}
.airi-dashboard-wrap .airi-company-comp ul {
    margin: 6px 0 0;
    padding-left: 18px;
}
.airi-dashboard-wrap .airi-company-comp-none {
    margin: 6px 0 0;
    font-size: 13px;
    color: #888888;
}
.airi-dashboard-wrap .airi-company-recos {
    margin: 8px 0 0;
    padding-left: 20px;
}
.airi-dashboard-wrap .airi-company-reco {
    margin: 10px 0;
    padding-left: 6px;
}
.airi-dashboard-wrap .airi-company-reco-cat {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #C00000;
    margin-right: 8px;
}
.airi-dashboard-wrap .airi-company-reco--quick_win .airi-company-reco-cat {
    color: #1A7F37;
}
.airi-dashboard-wrap .airi-company-reco--transformational .airi-company-reco-cat {
    color: #8250DF;
}
.airi-dashboard-wrap .airi-company-reco-title {
    font-weight: 600;
}
.airi-dashboard-wrap .airi-company-reco-why {
    margin: 4px 0 0;
    font-size: 14px;
}
.airi-dashboard-wrap .airi-company-reco-step {
    margin: 4px 0 0;
    font-size: 13px;
    color: #444444;
}

/* ==========================================================================
   Main + sidebar page layout — task-20260602-001
   Main column = "do the work" (AIRE hero → pAIRI → oAIRI).
   Aside       = "your stuff" (oAIRI nudge / courses / certificates / badges).
   ========================================================================== */
.airi-dashboard-wrap.airi-md--sidebar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: var(--airi-dash-col-gap);
    align-items: start;
}

/* This (0,2,0) compound rule beats the legacy `.airi-md { padding:24px 16px }`
   (0,1,0) in airi-mega-dashboard.css. It used to set padding-left/right:0 to flush
   the grid against the page title — but that removed the desired L/R gutter between
   the dashboard container and its main + sidebar panels (v5.11.18). It now applies
   --airi-dash-page-pad on both sides so the gutter is consistent at every breakpoint
   (the base rule + the ≤1024 / ≤480 token overrides handle the smaller screens). */
@media (min-width: 1025px) {
    .airi-dashboard-wrap.airi-md--sidebar {
        max-width: none;
        padding-left: var(--airi-dash-page-pad);
        padding-right: var(--airi-dash-page-pad);
    }
}

/* min-width:0 stops long words / wide native LLMS tables from blowing the
   grid tracks past their declared widths. */
.airi-md__main,
.airi-md__aside {
    min-width: 0;
}

/* The last card in each column shouldn't add trailing space. */
.airi-dashboard-wrap .airi-md__main > :last-child,
.airi-dashboard-wrap .airi-md__aside > :last-child {
    margin-bottom: 0;
}

/* Sidebar cards: tighter than main-column cards. */
.airi-dashboard-wrap .airi-md__aside .airi-card {
    padding: 22px 24px;
}
.airi-dashboard-wrap .airi-md__aside .airi-card-title {
    font-size: 1.125rem;
    margin-bottom: 12px;
}
.airi-dashboard-wrap .airi-md__aside .airi-card-lead {
    font-size: 0.95rem;
    margin-bottom: 16px;
}

/* oAIRI cross-sell nudge — plain sidebar card (top accent removed per design). */

/* Native LLMS loops (courses / certificates / achievements) render as multi-
   column grids by default — force single-column inside the narrow sidebar. */
.airi-dashboard-wrap .airi-md__aside .llms-loop-list,
.airi-dashboard-wrap .airi-md__aside .llms-achievement-loop,
.airi-dashboard-wrap .airi-md__aside .llms-certificate-loop {
    display: block;
    margin: 0;
}
.airi-dashboard-wrap .airi-md__aside .llms-loop-item,
.airi-dashboard-wrap .airi-md__aside .llms-achievement-list .llms-achievement,
.airi-dashboard-wrap .airi-md__aside .llms-certificate-list .llms-certificate {
    width: 100%;
    max-width: 100%;
    float: none;
    margin: 0 0 12px;
}

/* My Courses: the [airi_dashboard] shortcode embeds the native LLMS dashboard
   section (.llms-sd-section.llms-my-courses) inside its own .airi-card. That
   section is itself carded by the plugin's lifterlms-layout.css
   (`.llms-sd-section { border + border-radius:12px + padding:24px } !important`,
   meant for the standalone My-Account page), producing a card-in-a-card in the
   sidebar. Flatten the SECTION wrapper (no card around the whole list) but give
   each course TILE its own border — with more than one course the tiles were
   white-on-white inside the white sidebar card and ran together (task-20260617).
   !important + higher specificity (0,3,0+) beats both lifterlms-layout.css and
   the Customizer "Course catalog cards" rule. */
.airi-dashboard-wrap .airi-md__aside .llms-sd-section {
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
    border-radius: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
}
/* Each course tile = a distinct bordered card. The featured image full-bleeds to
   the rounded corners (overflow clips it); the title + footer carry the inner
   padding so the text clears the border. */
.airi-dashboard-wrap .airi-md__aside .llms-loop-item {
    border: 1px solid var(--airi-border, #E5E5E5) !important;
    border-radius: var(--airi-border-radius, 12px) !important;
    background: #fff !important;
    box-shadow: none !important;
    overflow: hidden;
}
.airi-dashboard-wrap .airi-md__aside .llms-loop-item .llms-loop-item-content {
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
    border-radius: 0 !important;
    padding: 0 !important;
}
.airi-dashboard-wrap .airi-md__aside .llms-loop-item .llms-loop-title {
    padding: 14px 16px 0 !important;
}
.airi-dashboard-wrap .airi-md__aside .llms-loop-item .llms-loop-item-footer {
    padding: 8px 16px 14px !important;
}

/* ==========================================================================
   AIRE progress hero — "Continue AIRE" CTA
   ========================================================================== */
.airi-dashboard-wrap .airi-continue-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 16px;
    margin: 0 0 20px;
}
.airi-dashboard-wrap .airi-continue-cta__next {
    color: var(--airi-gray-600, #4B5563);
    font-size: 0.95rem;
    line-height: 1.4;
}

/* pAIRI recommendation "Start <pillar>" CTA — sits below the grey advisory box. */
.airi-dashboard-wrap .airi-reco-cta {
    margin: 0;
}

/* ==========================================================================
   Sidebar responsive — collapse main+aside to a single column ≤1024px so the
   main column keeps enough width for the inside-card radar | table split.
   ========================================================================== */
@media (max-width: 1024px) {
    .airi-dashboard-wrap.airi-md--sidebar {
        grid-template-columns: 1fr;
    }
    .airi-dashboard-wrap .airi-md__aside .airi-card {
        padding: var(--airi-dash-card-pad);
    }
}
