/* ==========================================================================
   AIIncu Discovery Design System
   --------------------------------------------------------------------------
   One stylesheet for the whole public site. Replaces the per-page :root blocks
   and the eight ad-hoc prefixes (os- is- mp- prod- te- aos- pk- cu-) that each
   redefined the same hero, card and CTA.

   Two rules keep this from decaying back into that:

   1. Never hardcode a brand colour. Use a token.
   2. Never use left/right. Use logical properties (inline-start / inline-end).
      RTL then works from the dir attribute alone - no Arabic override file, no
      per-page [dir="rtl"] patches.
   ========================================================================== */

:root {
    /* Brand. Sampled from the values already in use across the old pages:
       #712f9a (76 uses), #451b66 (24), #b258ea (32). */
    --ai-primary: #712f9a;
    --ai-primary-deep: #451b66;
    --ai-primary-light: #b258ea;
    --ai-primary-contrast: #ffffff;

    /* Tints, for chips and soft backgrounds. */
    --ai-primary-050: rgba(113, 47, 154, 0.06);
    --ai-primary-100: rgba(113, 47, 154, 0.12);
    --ai-primary-200: rgba(113, 47, 154, 0.24);

    /* Neutrals */
    --ai-fg: #1c1b22;
    --ai-fg-muted: #5f5c6b;
    --ai-fg-subtle: #8b8798;
    --ai-surface: #ffffff;
    --ai-surface-alt: #f7f5fa;
    --ai-border: #e6e2ed;

    /* Status */
    --ai-success: #17845a;
    --ai-warning: #b26a00;
    --ai-danger: #c0392b;

    /* Per-card accent. Components read this; callers override it inline so one
       card class covers every colourway. */
    --ai-accent: var(--ai-primary);

    /* Scale */
    --ai-radius-sm: 8px;
    --ai-radius: 14px;
    --ai-radius-lg: 22px;
    --ai-gap: 1.5rem;
    --ai-section-y: clamp(3rem, 6vw, 5.5rem);

    --ai-shadow-sm: 0 1px 2px rgba(28, 27, 34, 0.06);
    --ai-shadow: 0 6px 24px rgba(28, 27, 34, 0.08);
    --ai-shadow-lg: 0 18px 48px rgba(69, 27, 102, 0.18);

    --ai-transition: 180ms ease;
}

/* ==========================================================================
   Section scaffolding
   ========================================================================== */

.ai-section {
    padding-block: var(--ai-section-y);
}

.ai-section--alt {
    background: var(--ai-surface-alt);
}

.ai-heading {
    margin-block-end: 2.5rem;
}

.ai-heading--center {
    text-align: center;
    margin-inline: auto;
    max-width: 46rem;
}

.ai-heading__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.9rem;
    border-radius: 999px;
    background: var(--ai-primary-100);
    color: var(--ai-primary-deep);
    font-size: 0.8125rem;
    font-weight: 600;
    margin-block-end: 0.85rem;
}

.ai-heading__title {
    font-size: clamp(1.6rem, 3vw, 2.35rem);
    font-weight: 700;
    color: var(--ai-fg);
    margin: 0;
    line-height: 1.25;
}

.ai-heading__subtitle {
    margin-block-start: 0.75rem;
    margin-block-end: 0;
    color: var(--ai-fg-muted);
    font-size: 1.0625rem;
    line-height: 1.7;
}

/* ==========================================================================
   Hero
   ========================================================================== */

.ai-hero {
    position: relative;
    overflow: hidden;
    padding-block: clamp(3.5rem, 8vw, 6.5rem);
    background: linear-gradient(135deg, var(--ai-primary-deep), var(--ai-primary));
    color: var(--ai-primary-contrast);
    isolation: isolate;
}

.ai-hero__shapes {
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
}

.ai-hero__shape {
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
    opacity: 0.5;
}

.ai-hero__shape:nth-child(1) {
    inline-size: 22rem;
    block-size: 22rem;
    background: var(--ai-primary-light);
    inset-block-start: -6rem;
    inset-inline-end: -4rem;
}

.ai-hero__shape:nth-child(2) {
    inline-size: 16rem;
    block-size: 16rem;
    background: var(--ai-primary);
    inset-block-end: -5rem;
    inset-inline-start: -3rem;
}

.ai-hero__badge {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 1rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.16);
    border: 1px solid rgba(255, 255, 255, 0.28);
    font-size: 0.85rem;
    font-weight: 600;
    margin-block-end: 1.15rem;
}

.ai-hero__title {
    font-size: clamp(1.9rem, 4.5vw, 3.15rem);
    font-weight: 800;
    line-height: 1.15;
    margin: 0;
}

.ai-hero__desc {
    margin-block-start: 1rem;
    margin-block-end: 0;
    max-width: 44rem;
    font-size: 1.075rem;
    line-height: 1.75;
    color: rgba(255, 255, 255, 0.9);
}

.ai-hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-block-start: 1.85rem;
}

.ai-hero--center {
    text-align: center;
}

.ai-hero--center .ai-hero__desc {
    margin-inline: auto;
}

.ai-hero--center .ai-hero__actions {
    justify-content: center;
}

/* Compact variant for listing index pages, where the grid is the point. */
.ai-hero--compact {
    padding-block: clamp(2.25rem, 5vw, 3.25rem);
}

/* ==========================================================================
   Buttons
   ========================================================================== */

.ai-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.7rem 1.5rem;
    border-radius: 999px;
    border: 1px solid transparent;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: var(--ai-transition);
    transition-property: transform, background-color, color, border-color, box-shadow;
}

.ai-btn:hover {
    transform: translateY(-1px);
    text-decoration: none;
}

.ai-btn--primary {
    background: var(--ai-primary);
    color: var(--ai-primary-contrast);
}

.ai-btn--primary:hover {
    background: var(--ai-primary-deep);
    color: var(--ai-primary-contrast);
}

.ai-btn--ghost {
    background: transparent;
    border-color: currentColor;
    color: inherit;
}

.ai-btn--ghost:hover {
    background: rgba(255, 255, 255, 0.14);
    color: inherit;
}

.ai-btn--on-light.ai-btn--ghost {
    color: var(--ai-primary);
}

.ai-btn--on-light.ai-btn--ghost:hover {
    background: var(--ai-primary-100);
}

/* Directional icons flip with the writing direction rather than being swapped
   in the markup, which is what the old pages did with an inline ternary. */
[dir="rtl"] .ai-btn .bi-arrow-right::before {
    content: "\f12f";
}

/* ==========================================================================
   Card
   ========================================================================== */

.ai-card {
    position: relative;
    display: flex;
    flex-direction: column;
    block-size: 100%;
    background: var(--ai-surface);
    border: 1px solid var(--ai-border);
    border-radius: var(--ai-radius);
    padding: 1.6rem;
    text-decoration: none;
    color: inherit;
    overflow: hidden;
    transition: var(--ai-transition);
    transition-property: transform, box-shadow, border-color;
}

/* Accent rail. border-inline-start, so it sits on the correct edge in Arabic. */
.ai-card::before {
    content: "";
    position: absolute;
    inset-block: 0;
    inset-inline-start: 0;
    inline-size: 4px;
    background: var(--ai-accent);
    opacity: 0;
    transition: opacity var(--ai-transition);
}

.ai-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--ai-shadow);
    border-color: var(--ai-accent);
    text-decoration: none;
    color: inherit;
}

.ai-card:hover::before {
    opacity: 1;
}

.ai-card--featured {
    border-color: var(--ai-accent);
    box-shadow: var(--ai-shadow-sm);
}

.ai-card__media {
    display: block;
    inline-size: 100%;
    block-size: 170px;
    object-fit: cover;
    border-radius: var(--ai-radius-sm);
    margin-block-end: 1.15rem;
    background: var(--ai-surface-alt);
}

.ai-card__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    inline-size: 3rem;
    block-size: 3rem;
    border-radius: var(--ai-radius-sm);
    background: color-mix(in srgb, var(--ai-accent) 14%, transparent);
    color: var(--ai-accent);
    font-size: 1.4rem;
    margin-block-end: 1.05rem;
}

.ai-card__type {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--ai-accent);
    margin-block-end: 0.4rem;
}

.ai-card__title {
    font-size: 1.075rem;
    font-weight: 700;
    color: var(--ai-fg);
    margin: 0 0 0.5rem;
    line-height: 1.4;
}

.ai-card__summary {
    color: var(--ai-fg-muted);
    font-size: 0.9375rem;
    line-height: 1.65;
    margin: 0;
}

.ai-card__footer {
    margin-block-start: auto;
    padding-block-start: 1.1rem;
}

.ai-card__link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--ai-accent);
    font-weight: 600;
    font-size: 0.9375rem;
}

/* ==========================================================================
   Term chips
   ========================================================================== */

.ai-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-block-start: 0.9rem;
}

.ai-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.22rem 0.65rem;
    border-radius: 999px;
    background: var(--ai-primary-050);
    border: 1px solid var(--ai-primary-100);
    color: var(--ai-primary-deep);
    font-size: 0.7875rem;
    font-weight: 600;
    text-decoration: none;
    transition: background-color var(--ai-transition);
}

a.ai-chip:hover {
    background: var(--ai-primary-100);
    color: var(--ai-primary-deep);
    text-decoration: none;
}

.ai-chip--muted {
    background: var(--ai-surface-alt);
    border-color: var(--ai-border);
    color: var(--ai-fg-muted);
}

/* ==========================================================================
   Listing: facet sidebar + grid
   ========================================================================== */

.ai-listing {
    display: grid;
    gap: var(--ai-gap);
    grid-template-columns: 1fr;
}

@media (min-width: 992px) {
    .ai-listing--with-facets {
        grid-template-columns: 17rem 1fr;
    }
}

.ai-facets {
    background: var(--ai-surface);
    border: 1px solid var(--ai-border);
    border-radius: var(--ai-radius);
    padding: 1.25rem;
    align-self: start;
}

@media (min-width: 992px) {
    .ai-facets {
        position: sticky;
        inset-block-start: 1.5rem;
        max-block-size: calc(100vh - 3rem);
        overflow-y: auto;
    }
}

.ai-facets__group + .ai-facets__group {
    margin-block-start: 1.4rem;
    padding-block-start: 1.4rem;
    border-block-start: 1px solid var(--ai-border);
}

.ai-facets__legend {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--ai-fg-subtle);
    margin-block-end: 0.75rem;
}

.ai-facets__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.4rem 0.6rem;
    border-radius: var(--ai-radius-sm);
    color: var(--ai-fg-muted);
    text-decoration: none;
    font-size: 0.9rem;
    transition: background-color var(--ai-transition);
}

.ai-facets__item:hover {
    background: var(--ai-surface-alt);
    color: var(--ai-fg);
    text-decoration: none;
}

.ai-facets__item.is-active {
    background: var(--ai-primary-100);
    color: var(--ai-primary-deep);
    font-weight: 600;
}

.ai-facets__count {
    font-size: 0.775rem;
    color: var(--ai-fg-subtle);
}

.ai-grid {
    display: grid;
    gap: var(--ai-gap);
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr));
}

.ai-listing__toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-block-end: 1.25rem;
}

.ai-listing__count {
    color: var(--ai-fg-muted);
    font-size: 0.9375rem;
    margin: 0;
}

/* ==========================================================================
   Cross-path rail
   ========================================================================== */

.ai-rail + .ai-rail {
    margin-block-start: 2.5rem;
}

.ai-rail__head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    margin-block-end: 1.1rem;
}

.ai-rail__title {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--ai-fg);
    margin: 0;
}

.ai-rail__axis {
    font-size: 0.85rem;
    color: var(--ai-fg-subtle);
}

/* ==========================================================================
   Empty state
   ========================================================================== */

.ai-empty {
    text-align: center;
    padding: 3.5rem 1.5rem;
    border: 1px dashed var(--ai-border);
    border-radius: var(--ai-radius);
    color: var(--ai-fg-muted);
    background: var(--ai-surface-alt);
}

.ai-empty__icon {
    font-size: 2.25rem;
    color: var(--ai-fg-subtle);
    margin-block-end: 0.65rem;
}

.ai-empty__title {
    font-weight: 700;
    color: var(--ai-fg);
    margin: 0 0 0.35rem;
}

.ai-empty p {
    margin: 0;
}

/* ==========================================================================
   CTA band
   ========================================================================== */

.ai-cta {
    background: linear-gradient(135deg, var(--ai-primary-deep), var(--ai-primary));
    color: var(--ai-primary-contrast);
    border-radius: var(--ai-radius-lg);
    padding: clamp(2rem, 4vw, 3rem);
    box-shadow: var(--ai-shadow-lg);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
}

.ai-cta__title {
    font-size: clamp(1.3rem, 2.5vw, 1.85rem);
    font-weight: 700;
    margin: 0 0 0.4rem;
}

.ai-cta__text {
    margin: 0;
    color: rgba(255, 255, 255, 0.9);
    max-width: 42rem;
}

.ai-cta__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

/* ==========================================================================
   Navigation dropdown

   The legacy .sub-menu pins itself with `right: 0`, which lands on the wrong
   side once the document flips to RTL. This one uses logical properties, so it
   opens under its trigger in both directions.
   ========================================================================== */

/*
 * Scoped under .menubar deliberately.
 *
 * The legacy theme styles the nav with unscoped descendant selectors -
 * `.menubar ul li { display: inline-block }` and `.menubar ul li a { padding }` -
 * which cascade into any nested list. Left alone they lay the dropdown out
 * horizontally and right-align it.
 *
 * `.menubar ul li a` is specificity (0,1,3); `.ai-nav-menu a` is only (0,1,1),
 * so the legacy rules win. Adding .menubar here makes these (0,2,x), and class
 * count decides before element count.
 */
.menubar .ai-nav-group {
    position: relative;
}

/*
 * display and flex-wrap carry !important only because custom.css declares
 *
 *     @media (min-width: 1200px) { .menubar ul { display: flex !important;
 *                                                flex-wrap: nowrap !important } }
 *
 * That selector was written for the top-level nav but matches any nested list,
 * so the dropdown panel became a horizontal row that refused to wrap and ran
 * off the side of the screen. !important beats specificity, so it can only be
 * answered in kind. Everything else here wins on specificity alone.
 */
.menubar .ai-nav-menu {
    display: block !important;
    flex-wrap: wrap !important;
    position: absolute;
    inset-block-start: 100%;
    inset-inline-start: 0;
    min-inline-size: 15rem;
    padding: 0.5rem 0;
    margin: 0;
    list-style: none;
    text-align: start;
    background: var(--ai-surface);
    border: 1px solid var(--ai-border);
    border-radius: var(--ai-radius-sm);
    box-shadow: var(--ai-shadow);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-0.35rem);
    transition: opacity var(--ai-transition), transform var(--ai-transition), visibility var(--ai-transition);
    z-index: 30;
}

/*
 * Hover bridge.
 *
 * The trigger's own padding leaves a few pixels between it and the panel. The
 * pointer crosses dead space on the way down, the group stops being hovered and
 * the menu closes before it can be reached. This invisible strip keeps the
 * group hovered across the gap.
 */
.menubar .ai-nav-menu::before {
    content: "";
    position: absolute;
    inset-block-end: 100%;
    inset-inline: 0;
    block-size: 0.75rem;
}

/* Stack, rather than inheriting the horizontal inline-block from the top nav. */
.menubar .ai-nav-menu li {
    display: block;
    inline-size: 100%;
}

.menubar .ai-nav-group:hover .ai-nav-menu,
.menubar .ai-nav-group:focus-within .ai-nav-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/*
 * Same reason: the 1200px block also sets
 *     .menubar ul li a { font-size: 14.5px !important; padding: 5px 5.5px !important }
 * which would squash these rows back to top-nav proportions.
 */
.menubar .ai-nav-menu li a {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.55rem 1rem !important;
    font-size: 0.9375rem !important;
    color: var(--ai-fg);
    text-decoration: none;
    white-space: nowrap;
    font-weight: 500;
    inline-size: 100%;
    transition: background-color var(--ai-transition), color var(--ai-transition);
}

.menubar .ai-nav-menu li a:hover,
.menubar .ai-nav-menu li a:focus-visible {
    background: var(--ai-primary-050);
    color: var(--ai-primary-deep);
}

.menubar .ai-nav-menu li a.is-active {
    background: var(--ai-primary-100);
    color: var(--ai-primary-deep);
    font-weight: 600;
}

/* The top-level trigger keeps its underline indicator off. */
.menubar .ai-nav-menu li a.is-active::after {
    content: none;
}

.menubar .ai-nav-menu li a i {
    color: var(--ai-primary);
    inline-size: 1.1rem;
    text-align: center;
    flex-shrink: 0;
}

/*
 * The trigger sits above the panel so the bridge never covers it, and gets an
 * explicit pointer - an anchor with no href does not get one by default.
 */
.menubar .ai-nav-group > a {
    position: relative;
    z-index: 31;
    cursor: pointer;
    user-select: none;
}

.menubar .ai-nav-group:hover > a,
.menubar .ai-nav-group:focus-within > a {
    color: var(--ai-primary);
}

.menubar .ai-nav-group:hover .ai-nav-caret,
.menubar .ai-nav-group:focus-within .ai-nav-caret {
    transform: rotate(180deg);
}

.ai-nav-caret {
    transition: transform var(--ai-transition);
}

/* The caret points down, not sideways, so it needs no RTL handling. */
.ai-nav-caret {
    font-size: 0.7rem;
    margin-inline-start: 0.3rem;
}

/* Mobile: section headings inside the offcanvas list. */
.ai-nav-heading {
    padding: 0.75rem 0 0.35rem;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--ai-fg-subtle);
}

/* ==========================================================================
   Accessibility
   ========================================================================== */

.ai-card:focus-visible,
.ai-btn:focus-visible,
.ai-chip:focus-visible,
.ai-facets__item:focus-visible {
    outline: 2px solid var(--ai-primary);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .ai-card,
    .ai-btn,
    .ai-chip,
    .ai-facets__item {
        transition: none;
    }

    .ai-card:hover,
    .ai-btn:hover {
        transform: none;
    }
}
