.air-cardgrid{display:grid;grid-template-columns:repeat(var(--cardgrid-cols,3),1fr);gap:var(--cg-gap,20px);max-width:1240px;margin:0 auto;}
.air-cardgrid__card{display:flex;flex-direction:column;gap:14px;border-radius:24px;padding:32px 28px;text-decoration:none;color:inherit;}
/* homepage-reference icon tiles: 64px rounded squares, alternating light/dark gradients */
.air-cardgrid__icon{width:64px;height:64px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;margin-bottom:6px;}
.air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air-cardgrid__icon svg{width:26px;height:26px;fill:currentColor;}
.air-cardgrid__icon img{max-width:24px;max-height:24px;}
.air-cardgrid__num{font-size:14px;font-weight:600;letter-spacing:.06em;color:var(--air-blue-bright,#2796EE);}
.air-cardgrid__eyebrow{/* inherits .air-eyebrow */}
.air-cardgrid__title{margin:0;}
.air-cardgrid__copy p{margin:0 0 10px;font:inherit;color:inherit;}
.air-cardgrid__copy p:last-child{margin-bottom:0;}
.air-cardgrid__cta{margin-top:auto;padding-top:10px;}
/* styles */
.air-cardgrid--elevated .air-cardgrid__card{background:#fff;border:none;box-shadow:0 12px 34px rgba(21,23,86,.08);}
.air-cardgrid--plain .air-cardgrid__card{padding:0;}
.air-cardgrid--outline .air-cardgrid__card{background:transparent;border:1px solid var(--air-blue-light,#92B3FF);}
.air-cardgrid--translucent .air-cardgrid__card{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);}
/* on-dark */
.air--dark .air-cardgrid__num{color:var(--air-pear,#D6DD21);}
.air--dark .air-cardgrid--translucent .air-cardgrid__icon{background:rgba(255,255,255,.08);color:var(--air-pear,#D6DD21);}
a.air-cardgrid__card:hover{box-shadow:0 16px 40px rgba(21,23,86,.14);}
@media(max-width:960px){.air-cardgrid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:600px){.air-cardgrid{grid-template-columns:1fr;}}
/* specificity: .air-type h3 (0,1,1) beats a bare class — prefix per CLAUDE.md trap note */
/* lists in card copy: text aligns with the card's text column; markers hang in the gutter */
.air-cardgrid__copy ul,.air-cardgrid__copy ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.air-cardgrid__copy ul li,.air-cardgrid__copy ol li{position:relative;padding-left:0;margin:0;}
.air-cardgrid__copy ul li::before{content:'';position:absolute;left:-14px;top:.6em;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.55;}
/* align to the site content column */
.air-cardgrid{max-width:var(--inner-container-width,1024px);}
/* plain = live-site flat content blocks (trust-builder/VirusTotal reference,
   computed-style-matched 2026-08-28): title = air-h4 spec 30px/600/lh35
   purple-deep; copy 20px/300/lh35 grey #575755; 20px title->copy, 60px grid gaps */

.air-cardgrid--plain .air-cardgrid__card{padding:0;background:transparent;border:none;box-shadow:none;gap:20px;}
.air-cardgrid--plain .air-cardgrid__copy p{font:inherit;color:inherit;}
/* dark-section safety: plain on dark keeps white/soft text (rule already below) */

/* ===== homepage design-language refresh (2026-08-31 screenshots) ===== */
/* elevated: icon tiles carry white line icons on BOTH gradient treatments;
   title-only cards push the title to the card foot (Application Control grid) */
.air-cardgrid--elevated .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid--elevated .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air-cardgrid--elevated .air-cardgrid__card:not(:has(.air-cardgrid__copy)) .air-cardgrid__icon{margin-bottom:auto;}
.air-cardgrid--elevated .air-cardgrid__card:not(:has(.air-cardgrid__copy)) .air-cardgrid__title{margin-top:40px;}

/* linkrow: horizontal icon + label + trailing arrow, whole row clickable
   (dark reference: "Where Defined Trust Makes an Impact") */

.air-cardgrid--linkrow .air-cardgrid__card{flex-direction:row;align-items:center;gap:22px;border-radius:16px;padding:22px 26px;min-height:96px;background:#fff;border:none;box-shadow:0 12px 34px rgba(21,23,86,.08);}
.air-cardgrid--linkrow .air-cardgrid__icon,
.air-cardgrid--linkrow .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{width:56px;height:56px;border-radius:14px;margin-bottom:0;flex:none;background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid--linkrow .air-cardgrid__icon svg{width:24px;height:24px;}
.air-cardgrid--linkrow .air-cardgrid__card::after{content:"\2192";margin-left:auto;font-size:24px;font-weight:300;color:var(--air-navy,#151858);flex:none;transition:transform .18s ease;}
.air-cardgrid--linkrow a.air-cardgrid__card:hover{box-shadow:0 16px 40px rgba(21,23,86,.14);}
.air-cardgrid--linkrow a.air-cardgrid__card:hover::after{transform:translateX(4px);}
/* linkrow on dark: translucent rows, white label + arrow */
.air--dark .air-cardgrid--linkrow .air-cardgrid__card{background:rgba(255,255,255,.07);border:none;box-shadow:none;}
.air--dark .air-cardgrid--linkrow .air-cardgrid__card::after{color:#fff;}
.air--dark .air-cardgrid--linkrow a.air-cardgrid__card:hover{background:rgba(255,255,255,.12);}
@media(max-width:960px){.air-cardgrid--linkrow{grid-template-columns:1fr;}}
/* plain on dark: match the main.air-type specificity that the light title carries */
/* elevated on DARK sections: translucent card ground (matches linkrow-dark),
   white type, uniform periwinkle tiles (homepage dark treatment) */
.air--dark .air-cardgrid--elevated .air-cardgrid__card{background:rgba(255,255,255,.07);border:none;box-shadow:none;}
.air--dark .air-cardgrid--elevated .air-cardgrid__icon,
.air--dark .air-cardgrid--elevated .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}

/* iconrow: stacked divider-list rows (icon tile | rule | title + copy) —
   the classic icon-list treatment with the refreshed tile styling */
.air-cardgrid--iconrow{grid-template-columns:1fr;}
.air-cardgrid--iconrow .air-cardgrid__card{display:grid;grid-template-columns:64px 1px minmax(0,1fr);grid-template-rows:auto auto;column-gap:28px;row-gap:10px;align-items:start;align-content:start;padding:0;background:transparent;border:none;box-shadow:none;border-radius:0;}
.air-cardgrid--iconrow .air-cardgrid__card::before{content:'';grid-column:2;grid-row:1/span 2;width:1px;height:100%;background:rgba(21,23,86,.18);}
.air-cardgrid--iconrow .air-cardgrid__icon{grid-column:1;grid-row:1/span 2;margin:0;background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid--iconrow .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid--iconrow .air-cardgrid__title{grid-column:3;}
.air-cardgrid--iconrow .air-cardgrid__copy{grid-column:3;font-size:18px;line-height:1.7;}
/* on dark (reference panel): white title, soft copy, soft divider */
.air--dark .air-cardgrid--iconrow .air-cardgrid__card::before{background:rgba(255,255,255,.28);}
@media(max-width:960px){.air-cardgrid--iconrow{grid-template-columns:1fr;}}
/* iconrow without icons (long-form pci-style rows): collapse the tile column */
.air-cardgrid--iconrow .air-cardgrid__card:not(:has(.air-cardgrid__icon)){grid-template-columns:1px minmax(0,1fr);}
.air-cardgrid--iconrow .air-cardgrid__card:not(:has(.air-cardgrid__icon))::before{grid-column:1;}
.air-cardgrid--iconrow .air-cardgrid__card:not(:has(.air-cardgrid__icon)) .air-cardgrid__title,
.air-cardgrid--iconrow .air-cardgrid__card:not(:has(.air-cardgrid__icon)) .air-cardgrid__copy{grid-column:2;}

/* ===== composable toggles (layout x surface x divider x arrow) =====
   Emitted ONLY when an editor/partial sets a toggle != auto; preset classes
   (--elevated etc.) govern stored pages untouched. */
/* layout: horizontal rows */
.air-cardgrid--h .air-cardgrid__card{display:grid;grid-template-columns:64px minmax(0,1fr) auto;grid-template-rows:auto auto;column-gap:28px;row-gap:8px;align-items:center;align-content:center;}
.air-cardgrid--h .air-cardgrid__icon{grid-column:1;grid-row:1/span 2;margin:0;align-self:center;}
.air-cardgrid--h .air-cardgrid__title{grid-column:2;}
.air-cardgrid--h .air-cardgrid__copy{grid-column:2;}
.air-cardgrid--h .air-cardgrid__cta{grid-column:2;margin-top:0;padding-top:4px;}
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__card{grid-template-columns:64px 1px minmax(0,1fr) auto;}
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__card::before{content:'';grid-column:2;grid-row:1/span 2;width:1px;height:100%;background:rgba(21,23,86,.18);}
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__title,
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__copy,
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__cta{grid-column:3;}
.air-cardgrid--arrow .air-cardgrid__card::after{content:"\2192";grid-column:-1;grid-row:1/span 2;align-self:center;font-size:24px;font-weight:300;color:var(--air-navy,#151858);transition:transform .18s ease;}
.air-cardgrid--arrow a.air-cardgrid__card:hover::after{transform:translateX(4px);}
.air-cardgrid--h .air-cardgrid__card:not(:has(.air-cardgrid__icon)){grid-template-columns:minmax(0,1fr) auto;}
.air-cardgrid--h .air-cardgrid__card:not(:has(.air-cardgrid__icon)) .air-cardgrid__title,
.air-cardgrid--h .air-cardgrid__card:not(:has(.air-cardgrid__icon)) .air-cardgrid__copy{grid-column:1;}
/* surfaces */
.air-cardgrid--surface-elevated .air-cardgrid__card{background:#fff;border:none;box-shadow:0 12px 34px rgba(21,23,86,.08);}
.air-cardgrid--h.air-cardgrid--surface-elevated .air-cardgrid__card{border-radius:16px;padding:22px 26px;border:none;box-shadow:0 12px 34px rgba(21,23,86,.08);}
.air-cardgrid--surface-flat .air-cardgrid__card{padding:0;background:transparent;border:none;box-shadow:none;border-radius:0;}
.air-cardgrid--surface-translucent .air-cardgrid__card{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);}
.air-cardgrid--surface-outline .air-cardgrid__card{background:transparent;border:1px solid var(--air-blue-light,#92B3FF);}
/* icons: composed grids use the refreshed uniform periwinkle tile */
.air-cardgrid--h .air-cardgrid__icon,
.air-cardgrid--h .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
/* typography by composition */

/* dark */
.air--dark .air-cardgrid--surface-elevated .air-cardgrid__card{background:rgba(255,255,255,.07);border:none;box-shadow:none;}
.air--dark .air-cardgrid--divider .air-cardgrid__card::before{background:rgba(255,255,255,.28);}
.air--dark .air-cardgrid--arrow .air-cardgrid__card::after{color:#fff;}
@media(max-width:960px){}
/* contained: the grid sits inside a rounded panel (VirusTotal reference) */
.air-cardgrid--contained{background:#fff;border-radius:40px;padding:80px;box-shadow:0 12px 34px rgba(21,23,86,.08);}
.air--dark .air-cardgrid--contained{background:var(--air-gradient-panel,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));box-shadow:none;}
.air--dark .air-cardgrid--contained .air-cardgrid__card::before{background:rgba(255,255,255,.28);}
@media(max-width:768px){.air-cardgrid--contained{padding:32px;border-radius:24px;}}
/* homepage icon treatment: the glyph fades subtly into the tile (a tile-
   colored veil ramps in toward the bottom; svg glyphs only, not images) */
.air-cardgrid__icon{position:relative;overflow:hidden;}
.air-cardgrid__icon:has(svg)::after{content:'';position:absolute;inset:0;background:inherit;-webkit-mask-image:linear-gradient(to bottom,transparent 30%,rgba(0,0,0,.65) 100%);mask-image:linear-gradient(to bottom,transparent 30%,rgba(0,0,0,.65) 100%);pointer-events:none;}

/* ===== text style options (title appearance + copy size) ===== */

/* iconrow copy: homepage body scale (was 18px) */

/* translucent preset: harmonize with the current dark card ground
   (borderless rgba .07 — matches elevated-on-dark / linkrow-dark; KE cards) */
.air-cardgrid--translucent .air-cardgrid__card,
.air-cardgrid--surface-translucent .air-cardgrid__card{background:rgba(255,255,255,.07);border:none;}

/* ===== TYPOGRAPHY TOKENS =====================================================
   One consumption rule; composition classes assign VARS in precedence order:
   base -> presets -> composed layout x surface -> TEXT OPTIONS -> dark colors.
   divider/arrow are purely visual and never touch type. */
.air-cardgrid{--cg-ts:18px;--cg-tw:600;--cg-tl:1.4;--cg-tls:-.01em;--cg-tc:var(--air-navy,#151858);--cg-cs:14.5px;--cg-cl:1.6;--cg-cc:var(--air-navy-soft,#3C3F7E);}
/* presets */
.air-cardgrid--elevated{--cg-ts:20px;--cg-tl:1.35;}
.air-cardgrid--linkrow{--cg-ts:19px;--cg-tw:500;--cg-tl:1.35;}
.air-cardgrid--plain{--cg-ts:30px;--cg-tl:35px;--cg-tls:0;--cg-tc:var(--air-navy,#151858);--cg-cs:20px;--cg-cl:35px;--cg-cc:#575755;}
.air-cardgrid--iconrow{--cg-ts:26px;--cg-tl:1.3;--cg-tls:0;--cg-cs:20px;--cg-cl:35px;}
/* composed: layout x surface set type */
.air-cardgrid--h{--cg-ts:19px;--cg-tw:500;--cg-tl:1.35;}
.air-cardgrid--h.air-cardgrid--surface-flat{--cg-ts:26px;--cg-tw:600;--cg-tl:1.3;--cg-tls:0;--cg-cs:20px;--cg-cl:35px;}
.air-cardgrid--v.air-cardgrid--surface-elevated{--cg-ts:20px;--cg-tl:1.35;}
.air-cardgrid--v.air-cardgrid--surface-flat{--cg-ts:30px;--cg-tw:600;--cg-tl:35px;--cg-tls:0;--cg-tc:var(--air-navy,#151858);--cg-cs:20px;--cg-cl:35px;--cg-cc:#575755;}
/* text options (double-class = ties compositions; later = wins) */
.air-cardgrid.air-cardgrid--title-h2{--cg-ts:50px;--cg-tw:500;--cg-tl:1.15;--cg-tls:0;}
.air-cardgrid.air-cardgrid--title-h3{--cg-ts:40px;--cg-tw:500;--cg-tl:1.2;--cg-tls:0;}
.air-cardgrid.air-cardgrid--title-h4{--cg-ts:30px;--cg-tw:600;--cg-tl:35px;--cg-tls:0;}
.air-cardgrid.air-cardgrid--copy-lg{--cg-cs:20px;--cg-cl:35px;}
.air-cardgrid.air-cardgrid--copy-md{--cg-cs:18px;--cg-cl:1.7;}
.air-cardgrid.air-cardgrid--copy-sm{--cg-cs:14.5px;--cg-cl:1.6;}
/* dark: colors only, always wins on color */
.air--dark .air-cardgrid{--cg-tc:#fff;--cg-cc:#C9D3EF;}
/* consumption */
.air-type .air-cardgrid .air-cardgrid__title, main.air-type .air-cardgrid .air-cardgrid__title{font-size:var(--cg-ts);font-weight:var(--cg-tw);line-height:var(--cg-tl);letter-spacing:var(--cg-tls);color:var(--cg-tc);}
.air-cardgrid .air-cardgrid__copy{font-size:var(--cg-cs);font-weight:300;line-height:var(--cg-cl);color:var(--cg-cc);}

/* ===== GAP TOKENS (same precedence model as typography) ===== */
.air-cardgrid--plain{--cg-gap:60px;}
.air-cardgrid--iconrow{--cg-gap:44px;}
.air-cardgrid--h.air-cardgrid--surface-flat{--cg-gap:44px;}
.air-cardgrid--v.air-cardgrid--surface-flat{--cg-gap:60px;}
/* contained list rows keep the reference rhythm; contained cards stay compact */
.air-cardgrid--contained.air-cardgrid--iconrow,
.air-cardgrid--h.air-cardgrid--surface-flat.air-cardgrid--contained{--cg-gap:56px;}
/* explicit gap options — always win */
.air-cardgrid.air-cardgrid--gap-sm{--cg-gap:12px;}
.air-cardgrid.air-cardgrid--gap-md{--cg-gap:20px;}
.air-cardgrid.air-cardgrid--gap-lg{--cg-gap:44px;}
.air-cardgrid.air-cardgrid--gap-xl{--cg-gap:60px;}

/* ===== composed parity (post preset-retirement 2026-09-01): rules previously
   keyed to preset classes, ported to composed selectors ===== */
/* v+elevated: refreshed tiles w/ alternation + title-only bottom anchor */
.air-cardgrid--v.air-cardgrid--surface-elevated .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid--v.air-cardgrid--surface-elevated .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air-cardgrid--v.air-cardgrid--surface-elevated .air-cardgrid__card:not(:has(.air-cardgrid__copy)) .air-cardgrid__icon{margin-bottom:auto;}
.air-cardgrid--v.air-cardgrid--surface-elevated .air-cardgrid__card:not(:has(.air-cardgrid__copy)) .air-cardgrid__title{margin-top:40px;}
/* dark: elevated cards on dark use uniform periwinkle tiles */
.air--dark .air-cardgrid--v.air-cardgrid--surface-elevated .air-cardgrid__icon,
.air--dark .air-cardgrid--v.air-cardgrid--surface-elevated .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
/* v+translucent on dark: soft tile */
.air--dark .air-cardgrid--v.air-cardgrid--surface-translucent .air-cardgrid__icon{background:rgba(255,255,255,.08);color:var(--air-pear,#D6DD21);}
/* h+elevated rows: hover affordance */
.air-cardgrid--h.air-cardgrid--surface-elevated a.air-cardgrid__card:hover{box-shadow:0 16px 40px rgba(21,23,86,.14);}

/* ===== icon options (style.icons — Icons group) =====
   Explicit colors override every composed/preset/dark tile rule (end-of-file
   + double-class; the even-nth selector beats alternation rules). */
.air-cardgrid.air-cardgrid--icons-periwinkle.air-cardgrid--icons-periwinkle .air-cardgrid__card .air-cardgrid__icon,
.air-cardgrid.air-cardgrid--icons-periwinkle.air-cardgrid--icons-periwinkle .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid.air-cardgrid--icons-navy.air-cardgrid--icons-navy .air-cardgrid__card .air-cardgrid__icon,
.air-cardgrid.air-cardgrid--icons-navy.air-cardgrid--icons-navy .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air-cardgrid.air-cardgrid--icons-alternating.air-cardgrid--icons-alternating .air-cardgrid__card:nth-child(odd) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air-cardgrid.air-cardgrid--icons-alternating.air-cardgrid--icons-alternating .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air-cardgrid.air-cardgrid--icons-translucent.air-cardgrid--icons-translucent .air-cardgrid__card .air-cardgrid__icon,
.air-cardgrid.air-cardgrid--icons-translucent.air-cardgrid--icons-translucent .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:rgba(255,255,255,.08);color:var(--air-pear,#D6DD21);}
/* explicit icon colour choice must also win on dark grounds (beats the (0,6,0) dark elevated rule) */
.air--dark .air-cardgrid.air-cardgrid--icons-periwinkle.air-cardgrid--icons-periwinkle .air-cardgrid__card .air-cardgrid__icon,.air--dark 
.air--dark .air-cardgrid.air-cardgrid--icons-periwinkle.air-cardgrid--icons-periwinkle .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air--dark .air-cardgrid.air-cardgrid--icons-navy.air-cardgrid--icons-navy .air-cardgrid__card .air-cardgrid__icon,.air--dark 
.air--dark .air-cardgrid.air-cardgrid--icons-navy.air-cardgrid--icons-navy .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air--dark .air-cardgrid.air-cardgrid--icons-alternating.air-cardgrid--icons-alternating .air-cardgrid__card:nth-child(odd) .air-cardgrid__icon{background:var(--air-tile-light,linear-gradient(180deg,#86A8FF 0%,#4676F2 100%));color:#fff;}
.air--dark .air-cardgrid.air-cardgrid--icons-alternating.air-cardgrid--icons-alternating .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:var(--air-tile-dark,linear-gradient(186deg,#1C207E 4.74%,#151858 95.23%));color:#fff;}
.air--dark .air-cardgrid.air-cardgrid--icons-translucent.air-cardgrid--icons-translucent .air-cardgrid__card .air-cardgrid__icon,.air--dark 
.air--dark .air-cardgrid.air-cardgrid--icons-translucent.air-cardgrid--icons-translucent .air-cardgrid__card:nth-child(even) .air-cardgrid__icon{background:rgba(255,255,255,.08);color:var(--air-pear,#D6DD21);}
/* hide: template skips icon markup (the :not(:has) rules collapse the icon
   column); neutralize the leftovers the no-icon rules don't cover */
.air-cardgrid--icons-hide.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__card{grid-template-columns:minmax(0,1fr) auto;}
.air-cardgrid--icons-hide.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__card::before{content:none;}
.air-cardgrid--icons-hide.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__title,
.air-cardgrid--icons-hide.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__copy,
.air-cardgrid--icons-hide.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__cta{grid-column:1;}
.air-cardgrid--icons-hide .air-cardgrid__card:not(:has(.air-cardgrid__copy)) .air-cardgrid__title{margin-top:0;}

/* ===== DS refresh 2026-09-02: tile colours consume the child.css token
   contract (--air-tile-light / --air-tile-dark / --air-gradient-panel) with
   DS-TRUTH fallbacks; the old #93A6F5/#6577E8, #7B8BF3/#5E6EE8 and
   #23277E/#151756 tile gradients are retired. ===== */

/* ===== NUMBERED tiles (style.icons.display = numbered | legacy numbered=true)
   Sequential 01, 02… rendered INSIDE the same 64px/16px tile as the icon —
   the element carries .air-cardgrid__icon so every tile colour rule
   (alternating / periwinkle / navy / translucent / dark) applies unchanged;
   only the glyph is swapped for a bold white numeral. ===== */
.air-cardgrid__icon--num{font-size:22px;font-weight:700;line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums;}

/* ===== 2026-09-02 design-lead note: text vertically centred in horizontal
   rows. The old 2x auto rows let the 64px tile (spanning both rows) inflate
   BOTH tracks, so a title-only row parked its title in the top ~2/3 of the
   tile. Rows are now  spacer | eyebrow | title | copy | cta | spacer  with
   the spacers as equal minmax(0,1fr) tracks: when the text block is shorter
   than the tile the leftover splits evenly above and below it (block centred
   on the tile / row height); when the text is taller the spacers collapse to
   0 and the tile, divider and arrow centre on the block as before. row-gap
   moves to margins so empty rows cost nothing; the divider (::before,
   stretch) spans every row. Vertical cards untouched. ===== */
.air-cardgrid--h .air-cardgrid__card{grid-template-rows:minmax(0,1fr) auto auto auto auto minmax(0,1fr);row-gap:0;align-items:center;}
.air-cardgrid--h .air-cardgrid__icon{grid-row:1/-1;}
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__card::before{grid-row:1/-1;}
.air-cardgrid--h.air-cardgrid--arrow .air-cardgrid__card::after{grid-row:1/-1;}
.air-cardgrid--h .air-cardgrid__eyebrow{grid-row:2;grid-column:2;}
.air-cardgrid--h .air-cardgrid__title{grid-row:3;}
.air-cardgrid--h .air-cardgrid__copy{grid-row:4;margin-top:8px;}
.air-cardgrid--h .air-cardgrid__cta{grid-row:5;margin-top:8px;padding-top:4px;}
.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__eyebrow{grid-column:3;}
.air-cardgrid--h .air-cardgrid__card:not(:has(.air-cardgrid__icon)) .air-cardgrid__eyebrow,
.air-cardgrid--icons-hide.air-cardgrid--h.air-cardgrid--divider .air-cardgrid__eyebrow{grid-column:1;}
/* the arrow is a horizontal-row option only (template also gates it) */
.air-cardgrid--v.air-cardgrid--arrow .air-cardgrid__card::after{content:none;}
