/* Sprout News — theme styles. Mobile-first editorial news layout. */

*{box-sizing:border-box}

/* =====================================================================
   P24 — initial-paint layout-shift fix (font swap).
   "Sprout Fallback" is NOT a new font: it resolves to whatever LOCAL
   system font the browser would have used anyway (Segoe UI / Roboto /
   Helvetica Neue / Arial — first match wins, nothing is downloaded). The
   only thing it adds is metric-adjustment descriptors so that LOCAL font
   is drawn at close to the same box size (ascent/descent/line-gap/overall
   scale) as the chosen webfont (Hind/Mukta/Poppins/Noto Sans Devanagari)
   that is still downloading. inc/branding-system.php's
   sprout_brand_font_stack() inserts "Sprout Fallback" into the fallback
   chain immediately before the plain system stack, so it — not an
   un-tuned system font — occupies the CSS font-display:swap gap between
   first paint and the real webfont finishing download. This is what was
   producing the "page renders larger, then visibly shrinks ~2-3s later"
   bug: with no metric adjustment, the untuned system fallback measures
   text noticeably wider/taller than the chosen webfont, so headlines/nav
   wrap differently and sections sit taller until the swap corrects it.
   Values are a standard, commonly-used approximation for a humanist/
   grotesque sans profile (the family this theme's whole font choice list
   already is) — not a per-font-file measured calibration; if a future
   pass has access to exact font metrics (e.g. via a browser font-metrics
   tool), these three numbers are the only thing that would need revising. */
@font-face{
	font-family:"Sprout Fallback";
	src:local("Segoe UI"),local("Roboto"),local("Helvetica Neue"),local("Arial");
	ascent-override:92%;
	descent-override:24%;
	line-gap-override:0%;
	size-adjust:104%;
	font-display:swap;
}

/* =====================================================================
   Global layout engine — ONE place for every container width/gutter.
   Modes (set on the .aen-shell wrapper via sprout_layout_class()):
     .aen-layout--standard  editorial reading column
     .aen-layout--wide      archives / State / City / Category / homepage
     .aen-layout--full      edge-to-edge (gutter only)
     .aen-layout--sidebar   content + rail (2-column foundation)
   Do not hard-code max-width / padding in individual templates.
   ===================================================================== */
:root{
	/* ONE site container + ONE gutter drive every page type. Header chrome,
	   homepage, every archive/category/State/City/search view and the single
	   article all resolve their width from these two tokens — no template sets
	   its own width. Three intentional content measures sit inside the one
	   container: STANDARD (Pages), ARTICLE (news posts), WIDE (all listings). */
	--sprout-container:1180px;          /* THE site container — header/nav/context/weather/home/archives/article */
	--sprout-gutter:24px;               /* THE desktop page gutter (each side) */
	--sprout-gutter-mobile:16px;        /* ≤700px page gutter */
	--sprout-gutter-full:clamp(16px,3.5vw,56px); /* FULL layout only — viewport-edge gutter */
	--sprout-w-wide:var(--sprout-container);   /* WIDE == the container: all listing/editorial views */
	--sprout-w-standard:760px;          /* STANDARD — reading column for normal Pages */
	--sprout-w-article:860px;           /* ARTICLE — reading column for single posts (std < this < wide) */
	--sprout-rail:320px;               /* THE sidebar/rail width, every place a rail appears */
	--sprout-section-gap:44px;          /* THE gap between main content and its rail / between sections */
	--sprout-home-col-gap:28px;        /* gap between the homepage top-grid columns */
	--sprout-space-block:28px;          /* .aen-layout top padding (bottom = +16) */
	--sprout-space-block-mobile:18px;
	--sprout-w-home:var(--sprout-w-wide);     /* deprecated — homepage now uses the one container width */
}

body{margin:0;background:var(--aen-paper,#f8f7f4);color:var(--aen-ink,#0F172A);font-family:var(--sprout-font-body);line-height:1.5;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
.screen-reader-text{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.aen-skip-link{position:absolute;top:-40px;left:8px;background:var(--sp-surface,#fff);padding:6px 10px;z-index:var(--sp-z-modal,100);transition:top .2s}
.aen-skip-link:focus{top:8px}

/* Outer container — every template wraps in .aen-shell */
.aen-shell{max-width:var(--sprout-container);margin-inline:auto;padding-inline:var(--sprout-gutter)}

/* Width modes — the ONLY element that controls page width is the .aen-shell
   wrapper that also carries .aen-layout. These 3 selectors (0,2,0) out-rank the
   base .aen-shell (0,1,0), so the mode always wins the cascade.
     STANDARD  → 760px  centred   (≈712px content inside the 24px gutters)
     WIDE      → 1180px centred   (≈1132px content)
     FULL      → 100% viewport, gutter only, NOT centred inside any box        */
.aen-layout{padding-block:var(--sprout-space-block) calc(var(--sprout-space-block) + 16px)}
.aen-shell.aen-layout--standard{max-width:var(--sprout-w-standard)}
.aen-shell.aen-layout--wide{max-width:var(--sprout-w-wide)}
.aen-shell.aen-layout--full{max-width:none;margin-inline:0;padding-inline:var(--sprout-gutter-full)}
/* nothing inside FULL may re-introduce a centred max-width */
.aen-layout--full > *,
.aen-layout--full .aen-page-main,
.aen-layout--full .aen-page-body{max-width:none}

/* Optional per-Page reading-width tweak (Customizer / page override).
   Re-points the standard-width token on the wrapper; the .aen-layout--standard
   rule above recomputes max-width from it, so no width value is repeated. */
.aen-shell.aen-page--cw-narrow{--sprout-w-standard:680px}
.aen-shell.aen-page--cw-comfortable{--sprout-w-standard:860px}

/* Homepage editorial area — now the SAME width as every other listing view, so
   the homepage content aligns pixel-for-pixel with the header / nav / context /
   weather above it and with archive / category / State / City / search pages.
   (Was a wider 1360px special case — that is the inconsistency this removes.) */
.aen-shell.aen-home-editorial{max-width:var(--sprout-w-wide)}

/* Single article — a deliberate centred reading column, one tier narrower than
   WIDE so news prose keeps a comfortable line length. It lives inside the SAME
   site container and uses the SAME 24px gutter as everything else; only the
   content measure is narrower, by design. Selector (0,2,0) wins over
   .aen-shell.aen-layout--standard, no !important. */
.aen-shell.aen-article{max-width:min(var(--sprout-w-article),calc(100% - 2 * var(--sprout-gutter)))}

/* ==== P1.2 — Masthead ==== */
.aen-site-header{background:var(--sp-surface,#fff);border-bottom:1px solid var(--sp-border,#e5e7eb)}
.aen-header-inner{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4,16px);padding-block:var(--sp-3,12px)}
.aen-brand{display:flex;align-items:center;gap:var(--sp-3,12px);color:var(--sp-heading);text-decoration:none;min-width:0}
.aen-brand-mark{background:var(--sp-accent);color:var(--sp-on-accent);font-family:var(--sprout-font-head);font-weight:700;font-size:26px;line-height:44px;text-align:center;width:44px;height:44px;border-radius:var(--sp-radius-sm);flex:0 0 auto;box-shadow:none}
/* Brand mark = WordPress Site Icon (Custom Logo absent). The uploaded icon is
   shown INSIDE the yellow tile: keep the brand-token fill + rounded tile shape,
   contain the image so it is never cropped/distorted, and inset it from the
   edges so it never touches the yellow border. Transparent icons simply reveal
   the yellow behind them. The img+class selector out-ranks the global img
   rules with no !important. */
img.aen-brand-mark--icon{width:44px;height:44px;object-fit:contain;object-position:center;background:var(--sp-accent);box-shadow:none;padding:5px;flex:0 0 auto;border-radius:var(--sp-radius-sm)}
.aen-brand-text{min-width:0}
.aen-brand-text strong{font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-3,1.375rem);line-height:1.05;display:block;letter-spacing:-.02em;color:var(--sp-heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aen-brand-text small{display:block;color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);font-weight:500;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aen-header-actions{display:flex;gap:var(--sp-2,8px);align-items:center}
.aen-header-date{font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted);white-space:nowrap;margin-right:var(--sp-1,4px)}
@media(max-width:1024px){.aen-header-date{display:none}}
.aen-header-search{display:flex;gap:var(--sp-2,8px);align-items:center;padding:0 14px;height:40px;border:1px solid var(--sp-border,#e5e7eb);background:var(--sp-surface,#fff);border-radius:var(--sp-radius-pill,999px);color:var(--sp-muted,#64748b);transition:border-color var(--sp-dur) var(--sp-ease)}
.aen-header-search:hover,.aen-header-search:focus-within{border-color:var(--sp-accent)}
.aen-header-search input{border:0;outline:0;background:transparent;font-family:var(--sprout-font-body);font-size:var(--sp-fs-0,.9375rem);color:var(--sp-text,#0f172a);width:168px}
.aen-icon{border:0;background:transparent;cursor:pointer;color:var(--sp-heading);display:grid;place-items:center;padding:6px}
.aen-mobile-only{display:none}

/* language pill */
.aen-lang-pill{display:inline-flex;background:var(--sp-surface-2);border:1px solid var(--sp-border,#e5e7eb);border-radius:var(--sp-radius-pill,999px);padding:3px;font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:.02em}
.aen-lang-pill .aen-lang-opt{border:0;background:transparent;font:inherit;letter-spacing:inherit;cursor:pointer;padding:6px 11px;border-radius:var(--sp-radius-pill,999px);color:var(--sp-muted,#64748b);line-height:1;transition:background var(--sp-dur) var(--sp-ease),color var(--sp-dur) var(--sp-ease)}
.aen-lang-pill .aen-lang-opt.is-active,.aen-lang-pill .aen-lang-opt[aria-pressed="true"]{background:var(--sp-heading);color:var(--sp-surface)}

/* primary nav */
.aen-nav{background:var(--sp-surface,#fff)}
.aen-nav-inner{overflow-x:auto;scrollbar-width:none}
.aen-nav-inner::-webkit-scrollbar{display:none}
.aen-menu,.aen-mobile-menu-list{display:flex;gap:0;list-style:none;padding:0;margin:0}
.aen-menu li a,.aen-mobile-menu-list li a{display:block;padding:var(--sp-3,12px) var(--sp-4,16px);color:var(--sp-text-2,#334155);text-decoration:none;font-family:var(--sprout-font-nav);font-weight:600;font-size:var(--sp-fs-0,.9375rem);white-space:nowrap;box-shadow:inset 0 -2px 0 0 transparent;transition:color var(--sp-dur) var(--sp-ease),box-shadow var(--sp-dur) var(--sp-ease)}
.aen-menu li.current a,.aen-menu li.current-menu-item > a,.aen-menu li.current_page_item > a,.aen-menu li.current-menu-parent > a,.aen-menu li a:hover{color:var(--sp-heading);box-shadow:inset 0 -2px 0 0 var(--sp-accent)}

/* =========================================================================
   HEADER NAVIGATION LAYOUTS — Phase P12.
   Classic (default) uses every rule above completely unchanged. Compact and
   Magazine are genuinely different structures, not the same bar recoloured:
     .aen-site-header--compact   one sticky row: brand + inline nav + utilities
     .aen-site-header--magazine  a slim utility strip + a large centred brand
                                  band; the nav band (.aen-sticky-cluster) is
                                  visually separate below it
   Every component class inside (.aen-menu, .aen-lang-pill, .aen-theme-toggle,
   .aen-header-search, .aen-nav-aside…) is reused byte-for-byte; only its
   containing structure/position changes per layout.
   ====================================================================== */

/* ---- Compact: one tight sticky row. Weather + edition selector stay INSIDE
   <nav class="aen-nav"> (just static instead of pinned-absolute) so the
   EXISTING .aen-nav{display:none} mobile rule hides them together with the
   menu — never duplicating the mobile copy the city rail already renders.
   No border-bottom here (unlike Classic/Broadcast) — see .aen-nav--inline
   below for why Compact ends up with zero decorative divider above its own
   .aen-city-rail separator, by design. */
.aen-site-header.aen-site-header--compact{position:sticky;top:0;z-index:51}
.aen-header-inner--compact{min-height:52px;padding-block:6px;gap:16px;flex-wrap:nowrap}
.aen-header-inner--compact .aen-brand{flex:0 0 auto}
.aen-header-inner--compact .aen-brand .aen-brand-mark{width:36px;height:36px;font-size:18px;line-height:36px}
/* .aen-nav's shared base rule (further down this file, "yellow = active
   indicator only") gives every <nav class="aen-nav"> a 3px yellow
   border-bottom as a NAV-BAND divider for Classic/Broadcast's separate dark
   band. Compact's nav is inline inside the header row instead of its own
   band, so that divider rendered as a stray partial-width yellow line
   floating mid-row (only as wide as the nav's own box, not the full header)
   — on top of .aen-site-header--compact's OWN 2px full-width border-bottom
   above. Neither is the active-item indicator (that's the separate
   box-shadow on li.current-menu-item below, untouched) — both are pure
   decorative dividers, so both are zeroed for Compact only; the existing
   .aen-city-rail border-bottom underneath remains Compact's only line. */
.aen-header-inner--compact .aen-nav--inline{border-bottom:0}
.aen-nav--inline{flex:1 1 auto;min-width:0;background:transparent;display:flex;align-items:center}
/* Root cause of the light-mode contrast bug: the "brand" section further down
   this file sets ".aen-nav{background:var(--sprout-nav-bg,#111312)}" for
   Classic's separate DARK nav band — equal specificity (one class each) with
   the "background:transparent" above, and it loads later in the file, so it
   silently won and painted Compact's inline nav dark. Text here correctly
   stayed dark-on-light (below), so light mode read as near-invisible dark
   text on that accidental dark strip; dark mode happened to look fine only
   because its own header background is already dark, masking the bug. Restore
   the transparent background with a selector this specific rule can't lose to
   (two classes vs. .aen-nav's one), instead of adding a new colour. */
.aen-header-inner--compact .aen-nav--inline{background:transparent}
.aen-nav--inline .aen-nav-inner{flex:1 1 auto;min-width:0;padding-right:0}
/* the inline menu sits on the LIGHT header row, not the dark nav band, so its
   text must be dark-on-light (the yellow hover/active underline is unchanged) */
.aen-nav--inline .aen-menu li a{color:var(--sp-text-2,#334155)}
.aen-nav--inline .aen-menu li a:hover,
.aen-nav--inline .aen-menu li.current-menu-item > a,
.aen-nav--inline .aen-menu li.current_page_item > a,
.aen-nav--inline .aen-menu li.current-menu-parent > a{color:var(--sp-link-hover,#111312)}
html[data-theme="dark"] .aen-nav--inline .aen-menu li a{color:var(--sp-text-2,#d7d9d9)}
.aen-nav--inline .aen-nav-aside{position:static;height:auto;display:flex;align-items:center;gap:10px;flex:0 0 auto;padding-left:14px;margin-left:6px;background:none;border-left:1px solid var(--sp-border,#e5e7eb)}
/* weather + edition selector on the light compact row — dark-on-light, mirroring
   the existing --mobile variants that already sit on the light city rail */
.aen-nav--inline .sprout-nav-wx,
.aen-nav--inline .sprout-edition-trigger{color:var(--sp-text-2,#334155)}
.aen-nav--inline .sprout-nav-wx-temp{color:var(--sp-heading,#111312)}
.aen-nav--inline .sprout-nav-wx:hover{color:var(--sp-heading,#111312);background:var(--sp-surface-2,#f1f1f0)}
.aen-nav--inline .sprout-edition-trigger:hover,
.aen-nav--inline .sprout-edition-trigger[aria-expanded="true"]{color:var(--sp-heading,#111312)}
html[data-theme="dark"] .aen-nav--inline .sprout-nav-wx,
html[data-theme="dark"] .aen-nav--inline .sprout-nav-wx-temp,
html[data-theme="dark"] .aen-nav--inline .sprout-edition-trigger{color:var(--sp-text,#eceded)}
/* Cascade-audit fix: the LIGHT hover rules above (lines 164-166) also set the
   weather chip's hover BACKGROUND (`--sp-surface-2`, a light grey) — nothing
   reset that half in dark mode, only `color`. `color` alone happened to still
   win on hover (its selector has one more type-selector point than the light
   rule), so dark mode showed light grey-on-light text: unreadable. Made
   explicit here — for both properties, on both the hover and the
   aria-expanded-open state — instead of relying on that specificity margin. */
html[data-theme="dark"] .aen-nav--inline .sprout-nav-wx:hover{color:var(--sp-text,#eceded);background:rgba(255,255,255,.06)}
html[data-theme="dark"] .aen-nav--inline .sprout-edition-trigger:hover,
html[data-theme="dark"] .aen-nav--inline .sprout-edition-trigger[aria-expanded="true"]{color:var(--sp-text,#eceded)}
.aen-header-actions--compact{flex:0 0 auto;gap:6px}
.aen-header-actions--compact .aen-header-search--compact{height:34px;padding:0 10px}
.aen-header-actions--compact .aen-header-search--compact input{width:90px;font-size:13px}
@media(max-width:1120px){.aen-header-actions--compact .aen-header-search--compact input{width:64px}}
/* Compact's own contextual rail: the header row above is already the sticky
   element, so the rail itself stays in normal flow (no double-sticky stack,
   no stray "stuck" shadow when the JS toggles .is-stuck). */
.aen-sticky-cluster--compact,
.aen-sticky-cluster--compact.is-stuck{position:static;box-shadow:none}

/* ---- Magazine ("Broadcast"): the old slim utility strip is a MOBILE-ONLY
   band now — Search/Lang/Theme/Weather all live in the centred brand band
   below on desktop, so the strip has nothing left to justify a separate row
   there. `display:none` at desktop (not just emptying its contents) so it
   reserves zero height — the brand row is the first thing on the page again.
   Below 701px it renders exactly as before: Lang, the mobile copy of Theme,
   Install, Push (Date/Search were already .aen-desktop-only / mobile-hidden
   respectively, so nothing new needs hiding there). */
.aen-header-utility-strip{background:var(--sp-surface-2,#f5f5f3);border-bottom:1px solid var(--sp-border,#e5e7eb);font-size:13px}
@media(min-width:701px){.aen-header-utility-strip{display:none}}
.aen-header-utility-inner{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:38px;padding-block:5px}
.aen-header-utility-inner .aen-header-date{margin-right:auto;color:var(--sp-muted)}

/* Brand row — CSS Grid (1fr auto 1fr), NOT a single-child flex
   `justify-content:center`: with two side groups now living in this same
   row (Search left, Theme+Weather right) a flex/margin approach would let
   unequal group widths (a longer Hindi weather label, Search only existing
   on one side) drag the centre logo off true centre. Grid's outer 1fr
   tracks absorb that imbalance instead, so the brand (grid-column:2) stays
   mathematically centred regardless of what either side contains, in either
   language, at any width down to where Smart Navigation Overflow already
   takes over below. The mobile hamburger stays position:absolute — grid
   placement never applies to it, exactly as before. */
/* minmax(0,1fr) — not bare 1fr — on both outer tracks: a bare `1fr` track's
   floor is its own content's min-content size, so once Search got genuinely
   wide (below) its track could out-grow the right track's smaller Theme+
   Weather content and the two "equal" 1fr tracks would stop being equal,
   pulling the centre (auto) column visibly off true centre. minmax(0,1fr)
   removes that content-driven floor so both outer tracks are ALWAYS
   mathematically equal, regardless of how different their content is. */
.aen-header-inner--magazine{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);justify-content:normal;column-gap:var(--sp-3,12px);min-height:104px;padding-block:20px}
.aen-header-inner--magazine .aen-menu-toggle{position:absolute;left:0;top:50%;transform:translateY(-50%)}
.aen-header-inner--magazine .aen-brand--lg{grid-column:2;justify-self:center}
.aen-brand--lg{flex-direction:column;align-items:center;gap:8px;text-align:center}
.aen-brand--lg .aen-brand-mark{width:56px;height:56px;font-size:26px;line-height:56px}
.aen-brand--lg .aen-brand-text{text-align:center}
.aen-brand--lg .aen-brand-text strong{font-size:26px}

/* Side utility groups framing the centred logo — hidden at mobile via the
   existing .aen-desktop-only convention (theme.css never needs a new media
   query for this: the current @media(max-width:700px) block already sets
   `.aen-desktop-only{display:none}`, so these simply plug into it). */
.aen-broadcast-side{display:flex;align-items:center;gap:10px;min-width:0}
.aen-header-inner--magazine .aen-broadcast-side--left{grid-column:1;justify-self:start;max-width:100%;min-width:0}
.aen-header-inner--magazine .aen-broadcast-side--right{grid-column:3;justify-self:end;max-width:100%;min-width:0}
/* Now the base (non-compact) search pill, not the 30px-tall compact hook the
   old utility strip used — this row is the tall 104px brand band, not a
   dense strip, and the compact size read as too small for the room around
   it. Width is set here (not by $compact_search) so it can be genuinely
   wide: clamp() gives ~220–280px on typical wide desktops and lets it
   reduce smoothly toward a 180px floor as the row's own (now guaranteed-
   equal, see .aen-header-inner--magazine above) track shrinks, rather than
   jumping between fixed breakpoint values. max-width:100% is a shrink
   safety net for the rare very-narrow-desktop case, not the normal path. */
.aen-broadcast-side--left .aen-header-search{width:clamp(180px,19vw,280px);max-width:100%}
.aen-broadcast-side--left .aen-header-search input{flex:1 1 auto;min-width:0;width:auto}
/* Weather's base colour (.sprout-nav-wx, "brand" block further down this
   file) assumes the dark .aen-nav-bg band it normally sits on — the exact
   light-mode contrast bug already fixed for Compact's inline nav (see that
   fix's doc-comment above, "Root cause of the light-mode contrast bug…").
   The brand row sits on the header's own light-in-light-mode surface, so it
   needs the identical dark-on-light override, reusing the same tokens. */
.aen-broadcast-side--right .sprout-nav-wx{color:var(--sp-text-2,#334155)}
.aen-broadcast-side--right .sprout-nav-wx-temp{color:var(--sp-heading,#111312)}
.aen-broadcast-side--right .sprout-nav-wx:hover{color:var(--sp-heading,#111312);background:var(--sp-surface-2,#f1f1f0)}
html[data-theme="dark"] .aen-broadcast-side--right .sprout-nav-wx,
html[data-theme="dark"] .aen-broadcast-side--right .sprout-nav-wx-temp{color:var(--sp-text,#eceded)}
html[data-theme="dark"] .aen-broadcast-side--right .sprout-nav-wx:hover{color:var(--sp-text,#eceded);background:rgba(255,255,255,.06)}
/* AQI's category word is the first thing to drop as the right utility group
   tightens — same idea as the News Desk/Compact rule for .aen-nav-aside —
   leaving a plain "AQI 82" instead of wrapping or overflowing the (already
   shrink-safe, max-width:100%) right track. */
@media(max-width:1280px){
	.aen-broadcast-side--right .sprout-nav-wx-aqi-cat{display:none}
}

/* ============================================================
   Logo Mark — shape + size (Header only).
   Reuses .aen-brand-mark / .aen-brand-mark--icon exactly as rendered by
   sprout_brand_logo() (inc/branding-system.php) — same favicon/site-icon or
   letter-tile source, same --sp-accent / --sprout-brand-primary colour, only
   the container's shape and proportions change. `.aen-brand-mark` is ALSO
   used by the FOOTER (.aen-footer-brand, template-parts/footer/*.php) —
   every rule below is scoped under `.aen-site-header`, so the footer mark
   (and its own --lg / --min sizing) is completely untouched regardless of
   which shape/size is selected here.

   SIZE: one shared --sprout-mark-scale multiplier (Small .84 / Medium 1,
   the unchanged default / Large 1.16), applied via calc() to each header
   variant's OWN existing base size (44px default, 36px Compact, 56px
   Broadcast, 38px/42px mobile) — so at the default "Medium" every number
   below resolves to EXACTLY the pre-existing px value (zero change for any
   site that never opens this control), and each variant keeps its own
   already-fitted proportion instead of sharing one absolute size across
   very different header geometries.
   ============================================================ */
body.sprout-mark-size--sm{--sprout-mark-scale:.84}
body.sprout-mark-size--lg{--sprout-mark-scale:1.16}

.aen-site-header .aen-brand-mark,
.aen-site-header img.aen-brand-mark--icon{
	width:calc(44px * var(--sprout-mark-scale,1));height:calc(44px * var(--sprout-mark-scale,1));
	line-height:calc(44px * var(--sprout-mark-scale,1));font-size:calc(26px * var(--sprout-mark-scale,1));
}
.aen-site-header .aen-header-inner--compact .aen-brand .aen-brand-mark{
	width:calc(36px * var(--sprout-mark-scale,1));height:calc(36px * var(--sprout-mark-scale,1));
	font-size:calc(18px * var(--sprout-mark-scale,1));line-height:calc(36px * var(--sprout-mark-scale,1));
}
.aen-site-header .aen-brand--lg .aen-brand-mark{
	width:calc(56px * var(--sprout-mark-scale,1));height:calc(56px * var(--sprout-mark-scale,1));
	font-size:calc(26px * var(--sprout-mark-scale,1));line-height:calc(56px * var(--sprout-mark-scale,1));
}

/* SHAPE (P22 identity rebuild — News Signal, Press Fold, Smart Frame,
   N Monogram, Live Mark, Editorial Edge). 5 of the 6 are genuinely
   irregular silhouettes (a concave fold, a single bevel, opposing
   chamfers, a stepped edge, a one-sided trapezoid lean) that plain
   border-radius cannot express — those 5 are `clip-path` shapes, and their
   exact polygon is emitted HERE only in the sense that
   inc/branding-system.php's sprout_brand_css() generates the actual
   clip-path rule (and, when a border is chosen, a tiny inline SVG for it —
   see that file's sprout_logo_mark_border_svg() for why a plain CSS border
   cannot follow a clip-path edge at all) from the SAME single
   source-of-truth point list (sprout_logo_mark_shape_points()) the CSS and
   the border can never drift apart. Only 'news-signal' — an asymmetric
   ROUNDED silhouette (an organic, directional beacon lean, not a circle
   and not a plain rounded rectangle) — is plain border-radius, so it alone
   is static here. */
.sprout-mark-shape--news-signal .aen-site-header .aen-brand-mark,
.sprout-mark-shape--news-signal .aen-site-header img.aen-brand-mark--icon{
	border-radius:60% 20% 55% 30% / 50% 60% 45% 55%;
}

/* ============================================================
   Mark Border — Clean (no ring) / Refined / Signature, one shared width +
   colour pair across all 6 shapes (inc/branding-system.php resolves the
   Hairline/Refined/Bold preset + the Signature "more assertive" multiplier
   into the single --sprout-mark-border-w value used here).

   'news-signal' (border-radius) uses a real CSS `border` — box-sizing:
   border-box is already this theme's global reset (see `*{box-sizing:
   border-box}` at the top of this file), so the border insets into the
   mark's existing size rather than growing the tile, and a plain border
   already follows border-radius perfectly. The other 5 (clip-path) shapes
   get their border ENTIRELY from the inline SVG background-image
   inc/branding-system.php's sprout_brand_css() emits per-shape — nothing
   more is needed here for them: a plain CSS border cannot trace a
   clip-path edge at all (see that PHP file's doc-comment for the full
   explanation of why, and why an earlier pass's "dual background-clip"
   attempt was itself silently wrong along every cut/fold/notch edge).
   ============================================================ */
.sprout-mark-border-style--refined .sprout-mark-shape--news-signal .aen-site-header .aen-brand-mark,
.sprout-mark-border-style--refined .sprout-mark-shape--news-signal .aen-site-header img.aen-brand-mark--icon,
.sprout-mark-border-style--signature .sprout-mark-shape--news-signal .aen-site-header .aen-brand-mark,
.sprout-mark-border-style--signature .sprout-mark-shape--news-signal .aen-site-header img.aen-brand-mark--icon{
	border:var(--sprout-mark-border-w,2px) solid var(--sprout-mark-border-color,var(--sp-accent));
}

@media(max-width:700px){
	.aen-site-header .aen-brand-mark{
		width:calc(38px * var(--sprout-mark-scale,1));height:calc(38px * var(--sprout-mark-scale,1));
		font-size:calc(20px * var(--sprout-mark-scale,1));line-height:calc(38px * var(--sprout-mark-scale,1));
	}
	.aen-site-header .aen-brand--lg .aen-brand-mark{
		width:calc(42px * var(--sprout-mark-scale,1));height:calc(42px * var(--sprout-mark-scale,1));
		font-size:calc(20px * var(--sprout-mark-scale,1));line-height:calc(42px * var(--sprout-mark-scale,1));
	}
}

/* ============================================================
   Navigation Hover Style — P19 clean rebuild. 3 buyer-selectable PREMIUM
   treatments for the DESKTOP nav only (.aen-menu, all three Header
   variants; the slide-out .aen-mobile-menu-list keeps its own existing
   tap-sized rows, untouched — hover has no meaning there). Internal slugs
   are UNCHANGED across every pass so far (sweep|pill|lift = the exact
   theme_mod values `sprout_nav_hover_style` already stores) — only each
   slug's VISUAL TREATMENT and Customizer label changed again here; see
   inc/branding-system.php for the 1:1 relabelling (no alias table needed).

   HARD RULE (this rebuild exists specifically to enforce it): at every
   state — normal / hover / active / active+hover / focus / active+focus —
   there is EXACTLY ONE visible decorative indicator, never two. The
   previous pass's 3 styles each layered a NEW hover mark on top of the
   existing active box-shadow indicator with no exclusion for the active
   item itself, so hovering (or focusing) the active item showed both at
   once — a double underline / pill-plus-underline look. Fixed here by
   excluding `li.current`, `li.current-menu-item`, `li.current_page_item`
   and `li.current-menu-parent` (the theme's own existing active-item
   classes, matched exactly as the pre-existing active rule above already
   does) from every style's LINE/DOT decoration — an active item shows
   ONLY its existing persistent box-shadow indicator, on hover or off,
   full stop. Typography-only feedback (Smart Lift's 1px motion) is NOT a
   competing mark and is intentionally left un-excluded — it reinforces
   the same item, it doesn't draw a second one.

   The previous pass's JS-driven shared "Sliding Indicator" element has
   been removed entirely (see assets/js/theme.js) — that element sliding
   between items while an UNRELATED active box-shadow sat still elsewhere
   in the row was itself a second, competing signal, and this rebuild's
   Soft Sweep achieves a clean single-indicator result with pure CSS, no
   JS, no shared travelling element required.

   Every style reads the SAME existing --sprout-nav-indicator / --sp-accent
   token the active-item indicator already uses, so a brand-colour change
   re-colours all three automatically — no new colour setting. `:hover` is
   gated behind (hover:hover) and (pointer:fine) so a touch tap can never
   leave a stuck hover artefact; `:focus-visible` is always active for
   keyboard users regardless of pointer type.
   ============================================================ */
.aen-menu li a{position:relative}

/* Shared exclusion list — matches the theme's own pre-existing active-item
   selector exactly (see the shared, unscoped .aen-menu li.current a, ...
   rule elsewhere in this file). Repeated verbatim in each style below
   rather than pulled into one combined selector, since each style excludes
   it on a DIFFERENT property (::after for Soft Sweep, ::before for Accent
   Dot) — there is no single rule all three could share. */

/* ---- 1. SOFT SWEEP (slug: sweep) — the default. A single, very thin
   accent line that grows from 0 to full label width on hover/focus.
   Excluded on the active item — which already carries the persistent
   active indicator — so there is only ever ONE line under any given item,
   never two. */
.sprout-nav-hover--sweep .aen-menu li a::after{
	content:"";position:absolute;left:0;right:0;bottom:2px;height:1.5px;
	background:var(--sprout-nav-indicator,var(--sp-accent));
	transform:scaleX(0);transform-origin:left;transition:transform .2s ease;
	pointer-events:none;
}
@media(hover:hover) and (pointer:fine){
	.sprout-nav-hover--sweep .aen-menu li:not(.current):not(.current-menu-item):not(.current_page_item):not(.current-menu-parent) a:hover::after{transform:scaleX(1)}
}
.sprout-nav-hover--sweep .aen-menu li:not(.current):not(.current-menu-item):not(.current_page_item):not(.current-menu-parent) a:focus-visible::after{transform:scaleX(1)}

/* ---- 2. SMART LIFT (slug: lift) — no line, no border, no box: the label
   moves up by exactly 1px. Nothing here draws a mark, so nothing needs
   excluding on the active item — the persistent active indicator and this
   motion coexist without ever looking like two indicators. */
.sprout-nav-hover--lift .aen-menu li a{transition:transform .2s ease}
@media(hover:hover) and (pointer:fine){
	.sprout-nav-hover--lift .aen-menu li a:hover{transform:translateY(-1px)}
}
.sprout-nav-hover--lift .aen-menu li a:focus-visible{transform:translateY(-1px)}

/* ---- 3. ACCENT DOT (slug: pill) — P23 rebuild. A centered 3-dot
   micro-indicator beneath the label (was a single dot anchored to the
   LEFT edge via inset-inline-start:0 — the "offset left" bug this pass
   fixes). Built from exactly 2 pseudo-elements (only `::before`/`::after`
   are available per link with no markup change) — `::before` draws BOTH
   the left dot (its own background) AND the center dot (a box-shadow
   copy of itself, offset back to true centre), `::after` draws the right
   dot — 3 visually distinct circles, 0 added DOM nodes, 0 JS.
   Centred as a GROUP via left:50% + a symmetric translateX(-50% ± gap) on
   each pseudo-element — never inset-inline-start/left:0 — so the group
   stays centred under the label regardless of Hindi/English width or
   which header variant renders it. Excluded on the active item for the
   same reason as Soft Sweep — one persistent indicator, never dots
   alongside it. transition (not @keyframes) drives both reveal AND
   retreat off the SAME rule, so leaving hover always reverses cleanly —
   no dot can get stuck mid-animation. `::after`'s extra .09s
   transition-delay staggers the right dot slightly behind the left+center
   pair on both entry and exit (~320ms + 90ms ≈ 410ms total, inside the
   350-500ms brief) without needing independently-timed keyframes per dot. */
.sprout-nav-hover--pill .aen-menu li a::before,
.sprout-nav-hover--pill .aen-menu li a::after{
	content:"";position:absolute;bottom:2px;left:50%;
	width:4px;height:4px;border-radius:50%;
	background:var(--sprout-nav-indicator,var(--sp-accent));
	opacity:0;pointer-events:none;
	transition:opacity .32s ease,transform .32s cubic-bezier(.2,.8,.2,1);
}
.sprout-nav-hover--pill .aen-menu li a::before{
	/* left dot + (via box-shadow, offset +7px back to centre) the centre dot */
	transform:translate(calc(-50% - 7px),4px) scale(.6);
	box-shadow:7px 0 0 .5px var(--sprout-nav-indicator,var(--sp-accent));
}
.sprout-nav-hover--pill .aen-menu li a::after{
	transform:translate(calc(-50% + 7px),4px) scale(.6);
	transition-delay:.09s;
}
@media(hover:hover) and (pointer:fine){
	.sprout-nav-hover--pill .aen-menu li:not(.current):not(.current-menu-item):not(.current_page_item):not(.current-menu-parent) a:hover::before{opacity:1;transform:translate(calc(-50% - 7px),0) scale(1)}
	.sprout-nav-hover--pill .aen-menu li:not(.current):not(.current-menu-item):not(.current_page_item):not(.current-menu-parent) a:hover::after{opacity:1;transform:translate(calc(-50% + 7px),0) scale(1)}
}
.sprout-nav-hover--pill .aen-menu li:not(.current):not(.current-menu-item):not(.current_page_item):not(.current-menu-parent) a:focus-visible::before{opacity:1;transform:translate(calc(-50% - 7px),0) scale(1)}
.sprout-nav-hover--pill .aen-menu li:not(.current):not(.current-menu-item):not(.current_page_item):not(.current-menu-parent) a:focus-visible::after{opacity:1;transform:translate(calc(-50% + 7px),0) scale(1)}

/* Reduced motion: keep the hover/focus END STATE (still fully readable/
   usable — Accent Dot still shows all 3 dots, just with no stagger/motion
   getting there), just remove the animated transition itself. */
@media(prefers-reduced-motion:reduce){
	.sprout-nav-hover--sweep .aen-menu li a::after,
	.sprout-nav-hover--lift .aen-menu li a,
	.sprout-nav-hover--pill .aen-menu li a::before,
	.sprout-nav-hover--pill .aen-menu li a::after{transition:none}
}

/* ============================================================
   Smart Navigation Overflow — "More" (P25). Built by the nav-overflow
   module at the end of assets/js/theme.js; shared identically by News
   Desk / Compact / Broadcast, since all three already render the same
   .aen-nav > .aen-nav-inner > ul.aen-menu markup.

   The trigger is a genuine `.aen-menu li > a` and each dropdown row is a
   genuine `.aen-menu li a` descendant, so the EXISTING base nav styling
   (colour/padding/font, line ~113), all 3 hover styles above, and the
   active-item box-shadow rule (below, in the "branding" block) all apply
   automatically with no new selectors — only what's genuinely new (the
   caret, the dropdown panel's own box) is declared here. When the
   overflowed set contains the current page, the JS adds the theme's OWN
   `current-menu-item` class to the More <li> itself — the exact class the
   active-indicator rule already matches — so More gets the SAME single
   indicator an ordinary active item gets, never a second one; the shared
   `:not(.current-menu-item)` exclusion each hover style already carries
   then also correctly suppresses that style's decoration on More while
   it's flagged active, for the same reason it already does on any other
   active item. */
.aen-menu-more{position:relative}
/* Qualified as `.aen-menu li a.aen-menu-more-trigger` (specificity 0,2,2),
   not the bare class alone (0,1,0) it used to be: the shared base rule
   `.aen-menu li a{display:block;...}` (specificity 0,1,2) otherwise wins
   regardless of source order and silently overrides `display:inline-flex`
   back to `block`, which kills the flex `gap` and left the caret rendering
   glued to the label text with no visible spacing. */
.aen-menu li a.aen-menu-more-trigger{display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.aen-menu-more-caret{display:inline-block;flex:0 0 auto;width:6px;height:6px;
	border-right:2px solid currentColor;border-bottom:2px solid currentColor;
	transform:rotate(45deg);transition:transform .15s}
.aen-menu-more-trigger[aria-expanded="true"] .aen-menu-more-caret{transform:rotate(225deg)}
@media(prefers-reduced-motion:reduce){.aen-menu-more-caret{transition:none}}

/* Dropdown panel — position:FIXED, placed by JS (nav-overflow module,
   assets/js/theme.js) directly under the trigger, exactly like
   .sprout-edition-menu below. NOT position:absolute: .aen-nav-inner
   carries an explicit `overflow-y:hidden` (it's the same single
   horizontal-scroll container Classic/Broadcast use), which silently
   clipped an absolutely-positioned panel to zero visible height the
   moment it extended past the nav row — aria-expanded/hidden still
   toggled correctly, so the click "worked" but nothing ever appeared.
   Being viewport-fixed, no ancestor overflow/clipping/stacking can hide
   it, it never pushes header height or page content, and it is hard-
   capped in size with its own scroll if a very long menu overflows
   heavily. Coloured like a normal UI surface (the SAME light/dark
   pattern .sprout-edition-menu uses) rather than assuming the parent
   nav's own background, since Compact's nav sits on the header's own
   (light-in-light-mode) background rather than the fixed dark nav bar
   Classic/Broadcast use. */
.aen-menu-more-panel{position:fixed;top:0;left:0;z-index:var(--sp-z-nav-dropdown,2000);
	margin:0;padding:6px;list-style:none;display:block;box-sizing:border-box;
	min-width:180px;width:max-content;max-width:min(320px,calc(100vw - 16px));
	max-height:min(60vh,360px);overflow-y:auto;overscroll-behavior:contain;
	background:var(--sprout-brand-surface,#fff);border:1px solid var(--sprout-brand-border,#e4e4e2);
	border-radius:var(--sp-radius-md,8px);box-shadow:var(--sp-shadow-3,0 16px 40px rgba(17,19,18,.14))}
.aen-menu-more-panel[hidden]{display:none}
.aen-menu-more-panel li{margin:0}
.aen-menu-more-panel li + li{border-top:1px solid var(--sprout-brand-border,#e4e4e2)}
.aen-menu-more-panel li a{color:var(--sprout-brand-text,#111312);white-space:nowrap}
.aen-menu-more-panel li a:hover,.aen-menu-more-panel li a:focus-visible{background:var(--sprout-brand-surface-alt,#f5f5f3);outline:none}
/* In-panel active cue — a top-level item reuses the shared box-shadow bar,
   but that bar reads oddly inside a vertical list, so the dropdown instead
   reuses the theme's own brand-accent token for a restrained text-only
   cue (the exact convention .sprout-edition-menu a[aria-checked="true"]
   already uses) — one property change, never a second bar/line. */
.aen-menu-more-panel li.current a,
.aen-menu-more-panel li.current-menu-item > a,
.aen-menu-more-panel li.current_page_item > a,
.aen-menu-more-panel li.current-menu-parent > a{color:var(--sprout-brand-primary,#FDD706);font-weight:800}
html[data-theme="dark"] .aen-menu-more-panel{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-menu-more-panel li + li{border-top-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-menu-more-panel li a{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-menu-more-panel li a:hover,
html[data-theme="dark"] .aen-menu-more-panel li a:focus-visible{background:#1a2540}

/* Contextual location rail */
.aen-city-rail{background:var(--sp-surface);border-bottom:1px solid var(--sp-border,#e5e7eb)}
.aen-city-inner{display:flex;align-items:center;gap:var(--sp-3,12px);padding:var(--sp-2,8px) var(--sprout-gutter,24px);overflow-x:auto;scrollbar-width:none}
.aen-city-inner::-webkit-scrollbar{display:none}
.aen-city-label{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);color:var(--sp-muted);text-transform:uppercase;white-space:nowrap;flex-shrink:0;text-decoration:none}
.aen-city-chips{display:flex;gap:var(--sp-2,8px);flex:1}
.aen-city-chips a{border:1px solid var(--sp-border);background:var(--sp-surface,#fff);color:var(--sp-text);padding:5px 12px;border-radius:var(--sp-radius-pill,999px);font-family:var(--sprout-font-body);font-weight:600;font-size:var(--sp-fs--1,.8125rem);text-decoration:none;white-space:nowrap;transition:border-color var(--sp-dur) var(--sp-ease),background var(--sp-dur) var(--sp-ease),color var(--sp-dur) var(--sp-ease)}
.aen-city-chips a:hover{border-color:var(--sp-accent)}
.aen-city-chips a.active{background:var(--sp-accent);color:var(--sp-on-accent);border-color:var(--sp-accent)}

/* "More Cities" — the bounded chip rails' escape hatch into the full state
   directory. Deliberately NOT another city chip: dashed border + arrow so it
   reads as an action, never mistaken for one more destination in the row.
   Selector qualified as `.aen-city-chips a.aen-city-chip-more` (not just
   `.aen-city-chip-more`) so it out-specifies the plain `.aen-city-chips a`
   base rule above regardless of stylesheet order. */
.aen-city-chips a.aen-city-chip-more{border-style:dashed;color:var(--sp-link-hover,#B90D0B)}
.aen-city-chips a.aen-city-chip-more::after{content:'\2192';margin-left:6px}
.aen-city-chips a.aen-city-chip-more:hover{border-color:var(--sp-link-hover,#B90D0B)}

/* ticker */
/* .aen-content block spacing is now provided by the layout engine (.aen-layout). */
.aen-ticker{height:42px;background:var(--sp-surface-2,#f3f3f1);border:1px solid var(--sp-border,#e5e7eb);border-top:2px solid var(--sp-heading);border-radius:var(--sp-radius-sm,4px);display:flex;align-items:stretch;overflow:hidden;margin-bottom:var(--sp-7,3rem)}
.aen-ticker-label{background:var(--aen-red,#D32F2F);color:#fff;font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;padding:0 16px;display:flex;align-items:center;gap:8px;flex-shrink:0;z-index:2}
.aen-ticker-label::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 0 currentColor;animation:aen-ticker-pulse 1.8s var(--sp-ease,ease) infinite}
@keyframes aen-ticker-pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.55)}70%{box-shadow:0 0 0 6px rgba(255,255,255,0)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}}
.aen-ticker-viewport{flex:1;overflow:hidden;position:relative;display:flex;align-items:center;min-width:0}
/* One moving track = TWO identical sequences (total width = 2 × one sequence).
   The marquee translates the track by exactly one sequence, so the second copy
   lands precisely where the first started — no jump, no gap, no pause. Going
   from -50% to 0 (an INCREASING translateX) moves the headline stream visually
   LEFT → RIGHT. Timing is linear + infinite. The duration is set per page by
   initTicker() in theme.js from the real measured sequence width, so reading
   speed stays constant no matter how many headlines load; 34s is only the
   no-JS fallback. */
/* !important: beats design-tokens.css's sitewide prefers-reduced-motion
   kill-switch (`*{animation-duration:.01ms!important;animation-iteration-
   count:1!important}`), which would otherwise still freeze this animation
   after one near-instant iteration even though the ticker-specific reduced-
   motion override below has been removed. Higher-specificity !important
   here beats that universal-selector !important there, regardless of
   source order — the intentional exception needs both fixes to actually
   keep the ticker moving under reduced motion. */
.aen-ticker-track{display:flex;flex:none;flex-wrap:nowrap;width:max-content;will-change:transform;animation:aen-ticker-marquee var(--aen-ticker-dur,34s) linear infinite!important}
.aen-ticker-seq{display:flex;flex-wrap:nowrap;align-items:center;flex:none;white-space:nowrap;font-family:var(--sprout-font-body);font-size:var(--sp-fs-0,.9375rem);font-weight:500}
.aen-ticker-item{display:inline-flex;align-items:center;text-decoration:none;color:var(--sp-text,#0f172a);padding:0 26px;border-right:1px solid var(--sp-border)}
.aen-ticker-item:hover{color:var(--sp-link-hover);text-decoration:underline}
@keyframes aen-ticker-marquee{from{transform:translateX(-50%)}to{transform:translateX(0)}}
/* Pause the continuous scroll while the reader hovers the ticker or a headline
   inside it has keyboard focus, so a headline can be read / clicked; it resumes
   on mouse-out / blur. */
.aen-ticker:hover .aen-ticker-track,
.aen-ticker:focus-within .aen-ticker-track{animation-play-state:paused}
/* Explicit exception to prefers-reduced-motion (site-wide reduced-motion
   support elsewhere — e.g. the Hero carousel, nav hover states — is
   untouched): the Breaking News ticker is treated as live status content,
   not decorative motion, so it keeps auto-scrolling under reduced motion
   too. The old @media(prefers-reduced-motion:reduce) block that froze
   .aen-ticker-track and switched the viewport to manual horizontal scroll
   has been removed outright — the base .aen-ticker-track animation rule
   above now applies unconditionally. */

/* Weather strip */
.aen-weather-strip{background:var(--sp-surface,#fff);border-bottom:1px solid var(--sp-border,#e5e7eb)}
.aen-weather-inner{display:flex;align-items:center;gap:16px;padding:10px 24px;overflow-x:auto;scrollbar-width:none}
.aen-weather-inner::-webkit-scrollbar{display:none}
.aen-weather-label{font:700 10px var(--sprout-font-head);letter-spacing:1.5px;color:#0891b2;white-space:nowrap;text-transform:uppercase;flex-shrink:0}
.aen-weather-cities{display:flex;gap:14px;flex:1}
.aen-weather-chip{display:flex;align-items:center;gap:8px;padding:5px 12px 5px 8px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:20px;white-space:nowrap;transition:all .2s}
.aen-weather-chip:hover{background:#e0f2fe;border-color:#7dd3fc}
.aen-w-icon{color:#0891b2;display:flex}
.aen-w-city{font:600 13px var(--sprout-font-body);color:var(--aen-ink)}
.aen-w-temp{display:flex;align-items:baseline;gap:4px;font:700 14px var(--sprout-font-head);color:var(--aen-red,#D32F2F)}
.aen-w-temp em{font:600 10px var(--sprout-font-head);color:var(--sp-muted,#64748b);font-style:normal}

.aen-edition-banner{display:flex;justify-content:space-between;align-items:end;padding:2px 0 18px;border-bottom:1px solid var(--sp-border,#e5e7eb);margin-bottom:22px;gap:12px}
.aen-edition-banner h1{font:700 26px/1.15 var(--sprout-font-head);margin:6px 0 0;letter-spacing:-.8px;max-width:600px}
.aen-eyebrow{font:700 10px var(--sprout-font-head);letter-spacing:1.4px;color:var(--aen-red,#D32F2F);text-transform:uppercase;display:block;margin-bottom:4px}
.aen-eyebrow-light{color:#fbbf24}

/* shared story card primitives (lead, supporting, compact) */
.aen-story-card{background:var(--sp-surface,#fff);cursor:pointer;transition:transform .25s,box-shadow .25s;border-radius:var(--sp-radius-card,10px);overflow:hidden}
.aen-story-card:hover{transform:translateY(-3px);box-shadow:none}
.aen-image-wrap{position:relative;overflow:hidden;background:#cbd5e1}
.aen-image-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.aen-story-card:hover img{transform:scale(1.04)}
.aen-story-tag{position:absolute;left:12px;bottom:10px;background:var(--aen-red,#D32F2F);color:#fff;padding:4px 10px;font-size:12px;font-weight:700;border-radius:3px}
.aen-story-copy{padding:14px 16px 16px}
.aen-story-copy h3{margin:0 0 10px;font:700 20px/1.32 var(--sprout-font-body);overflow-wrap:anywhere}
.aen-story-copy h3 a{text-decoration:none;color:inherit}
.aen-story-copy p,.aen-story-meta{color:var(--sp-muted,#64748b);margin:0;font-size:12px}

/* ============================================================
   P1.1 — Unified component system (additive).
   Token-driven card / section-heading / button / metadata / divider
   primitives. Templates adopt these in P1.3–P1.5; existing .aen-* classes
   are untouched and keep working via the token sweep above.
   ============================================================ */

/* ---- Card ---- */
.sprout-card{
	position:relative;display:flex;flex-direction:column;
	background:var(--sp-surface);
	border:1px solid var(--sp-border);
	border-radius:var(--sp-radius-sm);
	overflow:hidden;
	transition:border-color var(--sp-dur) var(--sp-ease),box-shadow var(--sp-dur) var(--sp-ease);
}
.sprout-card:hover{border-color:var(--sp-accent);box-shadow:var(--sp-shadow-2)}
.sprout-card__media{display:block;position:relative;aspect-ratio:var(--sp-ar-card);background:var(--sp-surface-2);overflow:hidden}
.sprout-card__media img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-card__body{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-4)}
.sprout-card__title{margin:0;font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2);line-height:var(--sp-lh-snug);color:var(--sp-heading);overflow-wrap:anywhere}
.sprout-card__title a{color:inherit;text-decoration:none}
.sprout-card:hover .sprout-card__title a{color:var(--sp-link-hover)}
.sprout-card__dek{margin:0;font-size:var(--sp-fs-0);line-height:var(--sp-lh-normal);color:var(--sp-muted)}

.sprout-card--lead .sprout-card__media{aspect-ratio:var(--sp-ar-hero)}
.sprout-card--lead .sprout-card__title{font-size:var(--sp-fs-5);line-height:var(--sp-lh-tight)}
.sprout-card--lead .sprout-card__body{padding:var(--sp-5) 0 0}
.sprout-card--lead{border:0;border-radius:0;background:transparent}
.sprout-card--lead:hover{box-shadow:none}

.sprout-card--compact{flex-direction:row;align-items:stretch;gap:var(--sp-3);border:0;border-radius:0;background:transparent;padding-block:var(--sp-3);border-bottom:1px solid var(--sp-border)}
.sprout-card--compact:hover{box-shadow:none}
.sprout-card--compact .sprout-card__media{flex:0 0 34%;max-width:132px;aspect-ratio:var(--sp-ar-thumb);border-radius:var(--sp-radius-sm)}
.sprout-card--compact .sprout-card__body{padding:0;justify-content:center}
.sprout-card--compact .sprout-card__title{font-size:var(--sp-fs-1)}

.sprout-card--text{border:0;border-radius:0;background:transparent;padding-block:var(--sp-3);border-bottom:1px solid var(--sp-border)}
.sprout-card--text:hover{box-shadow:none}
.sprout-card--text .sprout-card__title{font-size:var(--sp-fs-1)}

/* ---- Kicker / eyebrow ---- */
.sprout-kicker{
	display:inline-flex;align-items:center;gap:var(--sp-2);
	font-family:var(--sprout-font-head);font-weight:700;
	font-size:var(--sp-fs--1);letter-spacing:var(--sp-tracking-eyebrow);
	text-transform:uppercase;color:var(--sp-danger);text-decoration:none;
}
.sprout-kicker a{color:inherit;text-decoration:none}

/* ---- Metadata row ---- */
.sprout-meta{
	display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);
	font-size:var(--sp-fs--1);line-height:1.4;color:var(--sp-muted);
}
.sprout-meta a{color:inherit;text-decoration:none}
.sprout-meta a:hover{color:var(--sp-link-hover)}
.sprout-meta > * + *::before{content:"";display:inline-block}

/* ---- Section heading ---- */
.sprout-section-head{
	display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);
	margin:0 0 var(--sp-5);padding-bottom:var(--sp-2);
	border-bottom:2px solid var(--sp-heading);
}
.sprout-section-head__title{
	margin:0;font-family:var(--sprout-font-head);font-weight:700;
	font-size:var(--sp-fs-3);line-height:var(--sp-lh-tight);color:var(--sp-heading);
	letter-spacing:-.01em;
}
.sprout-section-head__more{
	flex:none;font-size:var(--sp-fs--1);font-weight:600;
	color:var(--sp-link-hover);text-decoration:none;white-space:nowrap;
}
.sprout-section-head__more:hover{text-decoration:underline}

/* ---- Buttons ---- */
.sprout-btn{
	display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
	min-height:44px;padding:0 var(--sp-5);
	font-family:var(--sprout-font-body);font-weight:700;font-size:var(--sp-fs-0);
	border:1px solid transparent;border-radius:var(--sp-radius-sm);
	text-decoration:none;cursor:pointer;
	transition:background var(--sp-dur) var(--sp-ease),border-color var(--sp-dur) var(--sp-ease),color var(--sp-dur) var(--sp-ease);
}
.sprout-btn--primary{background:var(--sp-accent);color:var(--sp-on-accent);border-color:var(--sp-accent)}
.sprout-btn--primary:hover{background:var(--sp-accent-hover);border-color:var(--sp-accent-hover)}
.sprout-btn--danger{background:var(--sp-danger);color:var(--sp-on-danger);border-color:var(--sp-danger)}
.sprout-btn--ghost{background:transparent;color:var(--sp-text);border-color:var(--sp-border)}
.sprout-btn--ghost:hover{border-color:var(--sp-heading)}

/* ============================================================
   Phase 3 — TOP EDITORIAL GRID (.aen-home-top)
   3 distinct columns on desktop; 2 on tablet; priority-ordered
   single column on mobile. Outer width comes from the homepage
   editorial cap (.aen-home-editorial on .aen-shell) — no container
   width is set here. Columns use fr/minmax so the proportions
   (~22% / ~44% / ~30%) hold as the editorial area grows.
   ============================================================ */
.aen-home-top{display:grid;grid-template-columns:minmax(200px,1fr) minmax(0,2fr) minmax(220px,1.35fr);gap:var(--sprout-home-col-gap,28px);align-items:start;margin-bottom:8px}
.aen-home-top--no-left{grid-template-columns:minmax(0,2fr) minmax(220px,1fr)}
.aen-home-top--no-right{grid-template-columns:minmax(200px,1fr) minmax(0,2.6fr)}
.aen-home-top--no-left.aen-home-top--no-right{grid-template-columns:minmax(0,1fr)}
/* DOM order is left, centre, right — auto-placement matches the desktop grid. */
.aen-home-col{min-width:0}
.aen-home-block{margin-bottom:26px}
.aen-home-block:last-child{margin-bottom:0}

/* center — dominant lead */
.aen-lead .aen-image-wrap{height:400px}
.aen-lead .aen-story-copy{padding:16px 18px 18px}
.aen-lead .aen-story-copy h3{font:800 30px/1.24 var(--sprout-font-body);letter-spacing:-.4px;margin:0 0 10px}
.aen-lead-excerpt{color:var(--sp-muted,var(--sp-muted,#64748b));font-size:15px;line-height:1.6;margin:0 0 10px}
.aen-lead-supporting{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px;align-items:start}

/* compact card (supporting + right column) */
.aen-compact-card{display:flex;gap:12px;background:var(--sprout-card-bg,#fff);border-radius:var(--sp-radius-card,10px);overflow:hidden;cursor:pointer;transition:transform .25s,box-shadow .25s;margin-bottom:14px}
.aen-compact-card:last-child{margin-bottom:0}
.aen-compact-card:hover{transform:translateY(-3px);box-shadow:none}
.aen-lead-supporting .aen-compact-card{flex-direction:column;gap:0;margin-bottom:0}
.aen-compact-thumb{flex:0 0 104px;aspect-ratio:3/2}
.aen-lead-supporting .aen-compact-thumb{flex:none;height:150px;aspect-ratio:auto}
.aen-compact-thumb img{width:100%;height:100%;object-fit:cover;transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-compact-card:hover .aen-compact-thumb img{transform:scale(1.04)}
.aen-compact-copy{padding:10px 12px 12px;min-width:0}
.aen-compact-copy h3{margin:2px 0 8px;font:700 15px/1.34 var(--sprout-font-body);overflow-wrap:anywhere}
.aen-compact-copy h3 a{color:inherit;text-decoration:none}

/* left — Live module */
.aen-live-card{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--sp-radius-md,8px);background:var(--sprout-brand-dark,#111312);color:#fff;text-decoration:none;margin-bottom:22px}
.aen-live-badge{display:inline-flex;align-items:center;gap:6px;background:var(--sprout-brand-alert,#B90D0B);color:#fff;font:800 10px/1 var(--sprout-font-head);letter-spacing:1.2px;padding:5px 8px;border-radius:3px}
.aen-live-card b{flex:1;font:700 14px var(--sprout-font-body);min-width:0;overflow-wrap:anywhere}
.aen-live-play{font-size:13px;opacity:.85}
.aen-live-blink{width:7px;height:7px;border-radius:50%;background:var(--sp-surface,#fff);display:inline-block;animation:aen-live-blink 1.4s ease-in-out infinite}
@keyframes aen-live-blink{0%,100%{opacity:1}50%{opacity:.25}}

/* left — Top News numbered list */
.aen-topnews-list{list-style:none;margin:0;padding:0}
.aen-topnews-list li{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--sp-border,var(--sp-border,#e5e7eb));cursor:pointer}
.aen-topnews-list li:last-child{border-bottom:0}
.aen-topnews-list b{color:var(--sprout-brand-primary,#FDD706);font:800 16px/1.2 var(--sprout-font-head);flex:0 0 auto}
.aen-topnews-list a{color:inherit;text-decoration:none;font:600 14px/1.4 var(--sprout-font-body);flex:1;min-width:0;overflow-wrap:anywhere}
.aen-topnews-list li:hover a{color:var(--sprout-brand-dark,#111312)}

/* tablet — 2 columns: centre + right side by side, left spans full width below */
@media(max-width:1024px){
	.aen-home-top,
	.aen-home-top--no-left,
	.aen-home-top--no-right{grid-template-columns:minmax(0,1.9fr) minmax(220px,1fr);gap:22px}
	.aen-home-col--center{grid-column:1;order:1}
	.aen-home-col--right{grid-column:2;order:2}
	.aen-home-col--left{grid-column:1/-1;order:3}
	.aen-home-top--no-right{grid-template-columns:minmax(0,1fr)}
	.aen-lead .aen-image-wrap{height:320px}
	.aen-lead .aen-story-copy h3{font-size:26px}
	.aen-home-col--left .aen-topnews-list{columns:2;column-gap:30px}
	.aen-home-col--left .aen-topnews-list li{break-inside:avoid}
}

/* content columns */
.aen-content-columns{display:grid;grid-template-columns:minmax(0,1fr) var(--sprout-rail);gap:var(--sprout-section-gap);margin-top:52px}
.aen-section-heading{display:flex;align-items:end;justify-content:space-between;border-bottom:2px solid var(--sp-heading);padding-bottom:10px;margin-bottom:18px}
.aen-section-heading h2{margin:0;font:700 26px var(--sprout-font-head);letter-spacing:-1px}
.aen-section-heading a{font-size:13px;color:var(--aen-red,#D32F2F);text-decoration:none}
.aen-latest-list .aen-list-story{display:grid;grid-template-columns:185px 1fr;gap:17px;align-items:center;background:var(--sp-surface,#fff);padding:0 14px 16px 0;margin-bottom:16px;border-bottom:1px solid var(--sp-border,#e5e7eb);cursor:pointer;border-radius:var(--sp-radius-sm,4px);overflow:hidden;transition:transform .25s,box-shadow .25s}
.aen-list-story:hover{transform:translateY(-3px);box-shadow:none}
.aen-list-story img{transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-list-story:hover img{transform:scale(1.04)}
.aen-list-story img{width:185px;height:112px;object-fit:cover;border-radius:var(--sp-radius-sm,4px) 0 0 var(--sp-radius-sm,4px)}
.aen-list-story h3{margin:0 0 11px;font:700 19px/1.35 var(--sprout-font-body)}
.aen-list-story h3 a{color:inherit;text-decoration:none}
.aen-list-story p{color:var(--sp-muted,#64748b);margin:0;font-size:12px}
.aen-trending{list-style:none;padding:0;margin:0}
.aen-trending li{display:flex;gap:14px;padding:14px 0;border-bottom:1px solid var(--sp-border,#e5e7eb);font-size:16px;line-height:1.35;cursor:pointer}
.aen-trending b{color:var(--aen-red,#D32F2F);font:700 23px var(--sprout-font-head)}

/* media */
.aen-video-feature,.aen-gallery-feature{position:relative;min-height:280px;overflow:hidden;cursor:pointer;background:var(--sp-ink,#0f172a);border-radius:8px}
.aen-video-feature img,.aen-gallery-feature img{width:100%;height:280px;object-fit:cover;opacity:.85}
.aen-video-feature .aen-embed iframe{width:100%;min-height:280px;display:block}
.aen-video-feature:after,.aen-gallery-feature:after{content:"";position:absolute;inset:38% 0 0;background:linear-gradient(transparent,#0f172a)}
.aen-video-feature > div,.aen-gallery-feature > div{position:absolute;z-index:1;bottom:20px;left:22px;right:22px;color:#fff}
.aen-video-feature h3,.aen-gallery-feature h3{margin:5px 0;font:700 22px/1.25 var(--sprout-font-body)}
.aen-video-feature h3 a,.aen-gallery-feature h3 a{color:#fff;text-decoration:none}
.aen-video-feature .aen-play{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);width:56px;height:56px;border-radius:50%;background:var(--aen-red,#D32F2F);display:grid;place-items:center;color:#fff;box-shadow:0 8px 24px rgba(211,47,47,.5)}
.aen-media-empty{background:var(--sp-surface,#fff);border:1px dashed var(--sp-border,#e5e7eb);padding:30px;text-align:center;color:var(--sp-muted,#64748b);border-radius:8px}

/* newsletter */
.aen-newsletter{margin:60px 0 30px;background:linear-gradient(135deg,#0f172a 0%,#7f1d1d 100%);border-radius:12px;padding:44px 40px;color:#fff;position:relative;overflow:hidden}
.aen-newsletter:before{content:"";position:absolute;top:-40px;right:-40px;width:200px;height:200px;background:radial-gradient(circle,#F57C00 0%,transparent 70%);opacity:.4}
.aen-newsletter-compact{background:var(--sp-ink,#0b1220);border-radius:8px;padding:20px;color:#fff}
.aen-newsletter-inner{display:grid;grid-template-columns:1.05fr 1fr;gap:38px;align-items:center;position:relative;z-index:1}
.aen-newsletter-compact .aen-newsletter-inner{grid-template-columns:1fr;gap:16px}
.aen-newsletter-copy h2{margin:6px 0 10px;font:700 30px/1.2 var(--sprout-font-head);letter-spacing:-.8px}
.aen-newsletter-compact h2{font-size:20px}
.aen-newsletter-copy p{margin:0;color:#e2e8f0;font-size:15px;line-height:1.55}
.aen-newsletter-form{display:grid;gap:10px}
.aen-newsletter-form input,.aen-newsletter-form select{border:0;height:46px;border-radius:6px;padding:0 14px;font:15px var(--sprout-font-body);background:var(--sp-surface,#fff);color:var(--aen-ink);outline:none}
.aen-newsletter-form button{height:48px;border:0;border-radius:6px;background:var(--aen-saffron,#F57C00);color:#fff;font:700 15px var(--sprout-font-body);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;letter-spacing:.3px;transition:background .2s}
.aen-newsletter-form button:hover{background:#e65100}
.aen-newsletter-thanks{background:rgba(255,255,255,.1);border:1px dashed rgba(255,255,255,.4);border-radius:8px;padding:22px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.aen-newsletter-thanks p{margin:0;font-weight:600}

/* placeholder / demo cards on empty city pages */
.aen-placeholder{position:relative;filter:saturate(.85);opacity:.95}
.aen-placeholder .aen-image-wrap:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.05),rgba(15,23,42,.15));pointer-events:none}
.aen-placeholder-tag{background:#0891b2!important;color:#fff!important;letter-spacing:1px;font-weight:800}
.aen-placeholder-banner{display:flex;gap:12px;align-items:flex-start;background:#fff8e1;border:1px dashed #F57C00;border-radius:8px;padding:14px 18px;margin:0 0 22px;color:#7c2d12}
.aen-placeholder-banner span{font-size:22px;color:#F57C00;line-height:1;margin-top:2px}
.aen-placeholder-banner p{margin:0;font-size:14px;line-height:1.55;font-weight:500}

/* Ad slot */
.aen-ad{margin:26px 0;text-align:center;position:relative}
.aen-ad-label{display:block;font:700 9px var(--sprout-font-head);letter-spacing:2px;color:var(--sp-muted,#94a3b8);text-transform:uppercase;margin-bottom:6px}
/* P15 Batch 1A — min-height/max-width now read the same --aen-ad-w/--aen-ad-h
   custom properties the demo placeholder already sets per slot (see
   .aen-ad-demo below), so LIVE ad code (sprout_ad_code_wrapper() in
   inc/promo.php) reserves the real ad-format footprint instead of the old
   flat 60px, preventing layout shift when it loads. Unset (any markup that
   doesn't set these vars) falls back to the previous 60px/100% behaviour —
   unchanged for callers outside this fix. */
.aen-ad-inner{display:inline-block;max-width:min(100%,var(--aen-ad-w,100%));min-height:var(--aen-ad-h,60px);padding:6px}
.aen-ad-header{margin:0}
.aen-ad-in_article,.aen-ad-inline{border-top:1px dashed var(--sp-border,#e5e7eb);border-bottom:1px dashed var(--sp-border,#e5e7eb);padding:12px 0}
.aen-ad-sidebar_top,.aen-ad-sidebar_bottom{margin:0 0 18px;background:#f8fafc;padding:12px;border-radius:6px}
.aen-ad-footer{background:var(--sp-ink,#0b1220);padding:20px 0;text-align:center;color:var(--sp-muted,#94a3b8)}

/* ============================================================
   Phase 8 — Custom Promo component. Theme owns all styling;
   the admin only supplies image / heading / text / button.
   Missing pieces collapse cleanly. Phase 1 tokens + button system.
   ============================================================ */
.aen-promo{margin:26px 0;text-align:left}
.aen-promo .aen-ad-label{text-align:left}
.aen-promo-row{display:flex;gap:18px;align-items:center;text-decoration:none;color:inherit;background:var(--sprout-card-bg,#fff);border:1px solid var(--sprout-card-border,#e4e4e2);border-radius:10px;overflow:hidden;transition:border-color .2s,transform .2s,box-shadow .2s}
a.aen-promo-row:hover{border-color:var(--sprout-brand-primary,#FDD706);transform:translateY(-2px);box-shadow:none}
.aen-promo-media{flex:0 0 44%;max-width:44%;align-self:stretch;display:flex;min-height:150px}
.aen-promo-media img,.aen-promo-media .aen-promo-img{width:100%;height:100%;object-fit:cover;display:block}
.aen-promo-body{flex:1 1 auto;min-width:0;padding:18px 20px}
.aen-promo--noimg .aen-promo-body{padding:20px 22px}
.aen-promo-heading{margin:0 0 8px;font:700 19px/1.3 var(--sprout-font-body);color:var(--sprout-card-title,#111312);overflow-wrap:anywhere}
.aen-promo-desc{margin:0 0 12px;font-size:14px;line-height:1.55;color:var(--sprout-card-meta,#5b6167)}
.aen-promo-btn{display:inline-block}
.aen-promo-body > :last-child{margin-bottom:0}
html[data-theme="dark"] .aen-promo-row{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-promo-heading{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-promo-desc{color:var(--sp-muted,#94a3b8)}
@media(max-width:600px){
	.aen-promo-row{flex-direction:column;align-items:stretch}
	.aen-promo-media{flex-basis:auto;max-width:none;min-height:0;max-height:200px}
	.aen-promo-media img,.aen-promo-media .aen-promo-img{max-height:200px}
	.aen-promo-body{padding:16px}
}

/* Retired-class safety net (Phase 8 cleanup of the Phase 7 finding):
   [aen_city_hero] and page-templates/section-page.php still emit these two
   layout classes, which Phase 3 dropped — restoring only the exact rules. */
.aen-hero-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:18px}
.aen-side-leads{display:grid;gap:18px;align-items:start}
.aen-side-leads .aen-image-wrap{height:170px}
.aen-side-leads .aen-story-copy h3{font-size:16px}
@media(max-width:700px){
	.aen-hero-grid{display:block}
	.aen-side-leads{grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
	.aen-side-leads .aen-image-wrap{height:110px}
}

/* Contact page */
.aen-fw-header{padding:26px 0 20px;border-bottom:1px solid var(--sp-border,#e5e7eb);margin-bottom:26px}
.aen-fw-header h1{font:700 38px/1.15 var(--sprout-font-head);margin:6px 0 4px;letter-spacing:-1px}
.aen-fw-header p{color:var(--sp-muted,#64748b);margin:8px 0 0;font-size:15px}
/* .aen-fw-body width comes from the layout engine (.aen-layout--full on the
   .aen-shell wrapper) — no fixed inner cap, or "Full Width" isn't full width. */
.aen-fw-body h2{font:700 26px var(--sprout-font-head);margin:24px 0 8px}
.aen-fw-body h3{font:700 20px var(--sprout-font-head);margin:22px 0 6px}
.aen-fw-body p,.aen-fw-body ul{font-size:16px;line-height:1.7}
.aen-contact-page{padding-bottom:50px}
.aen-contact-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:38px;margin-top:10px}
.aen-contact-form{display:grid;gap:14px;background:var(--sp-surface,#fff);padding:26px;border-radius:10px;border:1px solid var(--sp-border,#e5e7eb)}
.aen-contact-form label{display:grid;gap:6px;font:600 13px var(--sprout-font-body);color:var(--sp-text,#0f172a)}
.aen-contact-form input,.aen-contact-form textarea{border:1px solid var(--sp-border,#e5e7eb);border-radius:6px;padding:10px 12px;font:15px var(--sprout-font-body);background:var(--sp-surface,#fff);color:var(--sp-text,#0f172a);outline:none;transition:border-color .2s}
.aen-contact-form input:focus,.aen-contact-form textarea:focus{border-color:var(--aen-red,#D32F2F)}
.aen-btn-primary{border:0;background:var(--aen-red,#D32F2F);color:#fff;padding:12px 20px;border-radius:6px;font:700 15px var(--sprout-font-body);cursor:pointer;justify-self:start;letter-spacing:.3px;transition:background .2s;text-decoration:none;display:inline-block}
.aen-btn-primary:hover{background:#9a1e1e}
.aen-alert{padding:12px 16px;border-radius:6px;margin-bottom:14px;font-size:14px}
.aen-alert-success{background:#dcfce7;border:1px solid #86efac;color:#166534}
.aen-alert-error{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b}
.aen-contact-info{background:var(--sp-surface,#fff);padding:22px;border:1px solid var(--sp-border,#e5e7eb);border-radius:10px}
.aen-contact-info h3{font:700 16px var(--sprout-font-head);margin:0 0 8px;color:var(--aen-ink)}
.aen-contact-info h3+*{margin-top:0}
.aen-contact-info p{margin:6px 0;color:var(--sp-text-2,#334155);font-size:14px}
.aen-page-editor-content{margin:0 0 28px;font-size:16px;line-height:1.7}

/* Byline + author box */
.aen-article-topmeta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin:6px 0 22px;padding-bottom:16px;border-bottom:1px solid var(--sp-border,#e5e7eb)}
.aen-byline{display:flex;align-items:center;gap:12px}
.aen-byline-avatar{border-radius:50%;width:40px;height:40px}
.aen-byline-body{display:flex;flex-direction:column;line-height:1.3}
.aen-byline-body b{font:700 14px var(--sprout-font-body);color:var(--aen-ink)}
.aen-byline-body small{font-size:11px;color:var(--aen-red,#D32F2F);font-weight:600;letter-spacing:.2px}
.aen-byline-body em{font-size:12px;color:var(--sp-muted,#64748b);font-style:normal;margin-top:2px}
.aen-article-time{font-size:13px;color:var(--sp-muted,#64748b)}
.aen-author-box{display:grid;grid-template-columns:96px 1fr;gap:18px;background:var(--sp-surface,#fff);border:1px solid var(--sp-border,#e5e7eb);border-radius:var(--sp-radius-md,8px);padding:20px;margin:36px 0 20px}
.aen-author-avatar{border-radius:50%;width:96px;height:96px}
.aen-author-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.aen-author-head h3{margin:0;font:700 18px var(--sprout-font-head);color:var(--aen-ink)}
.aen-author-head h3 a{color:inherit;text-decoration:none}
.aen-author-role{background:var(--aen-red,#D32F2F);color:#fff;font:700 10px var(--sprout-font-head);letter-spacing:1px;padding:3px 8px;border-radius:12px;text-transform:uppercase}
.aen-author-tagline{color:var(--sp-text-2,#334155);font-style:italic;margin:6px 0}
.aen-author-bio{color:#475569;line-height:1.6;font-size:14px;margin:6px 0}
.aen-author-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:13px;color:var(--sp-muted,#64748b)}
.aen-author-meta a{color:var(--aen-red,#D32F2F);text-decoration:none;font-weight:600}

/* Rich city info panel */
.aen-city-info-card{margin-top:24px;background:var(--sp-surface,#fff);border:1px solid var(--sp-border,#e5e7eb);border-radius:8px;padding:20px}
.aen-city-info-card p{color:var(--sp-text-2,#334155);margin:6px 0 14px;font-size:14px;line-height:1.6}
.aen-city-facts-grid{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.aen-city-facts-grid li{display:grid;grid-template-columns:130px 1fr;gap:12px;padding:8px 0;border-bottom:1px dashed var(--sp-border,#e5e7eb);font-size:13px}
.aen-city-facts-grid li:last-child{border-bottom:0}
.aen-city-facts-grid li span{color:var(--sp-muted,#64748b);font-weight:600}
.aen-city-facts-grid li b{color:var(--aen-ink);font-weight:600}

/* Social share — Phase 6. Neutral, on-brand buttons (Phase 1 tokens); each
   platform's colour is only the icon + hover border, not a full background.
   The native-share button is the one primary (yellow) action, shown by JS
   only where navigator.share() exists. */
.aen-share{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:14px 0;border-top:1px solid var(--sprout-card-border,#e4e4e2);border-bottom:1px solid var(--sprout-card-border,#e4e4e2);margin:24px 0}
.aen-share-label{font:700 11px var(--sprout-font-head);letter-spacing:1.2px;color:var(--sp-muted,var(--sp-muted,#64748b));text-transform:uppercase;margin-right:2px}
/* P15 Batch 1B — same restrained, single-accent "brand family" the card
   popover uses (.aen-card-share-pop__opt): one neutral hover language for
   every option instead of a per-network brand colour, so the article row and
   the card popover read as one share product. Icons are sprout_icon() <i>
   wrappers now (currentColor svg), sized to match the button's own text
   colour — removing the old per-network svg colour overrides is what lets
   that inheritance take over. */
.aen-share-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:8px 14px;border-radius:8px;font:600 13px var(--sprout-font-body);text-decoration:none;border:1px solid var(--sprout-card-border,#e4e4e2);background:var(--sprout-card-bg,#fff);color:var(--sprout-card-title,#111312);cursor:pointer;transition:border-color .15s,transform .15s,background .15s}
.aen-share-btn svg{flex:none}
.aen-share-btn .sprout-ico{font-size:18px;line-height:0}
.aen-share-btn .sprout-ico > svg{width:1em;height:1em}
.aen-share-btn:hover{transform:translateY(-1px);border-color:var(--sprout-brand-dark,#111312)}
.aen-share-btn:focus-visible{outline:3px solid var(--sprout-brand-primary,#FDD706);outline-offset:2px}

/* Related stories */
.aen-related{margin:36px 0 24px}
.aen-related .aen-section-heading{border-bottom:2px solid var(--sp-heading);margin-bottom:16px}
.aen-related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.aen-related-card{display:block;background:var(--sp-surface,#fff);border:1px solid var(--sp-border,#e5e7eb);border-radius:var(--sp-radius-card,10px);overflow:hidden;text-decoration:none;color:inherit;transition:transform .2s,box-shadow .2s}
.aen-related-card:hover{transform:translateY(-3px);box-shadow:none}
.aen-related-card img{width:100%;height:140px;object-fit:cover;display:block;transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-related-card:hover img{transform:scale(1.03)}
.aen-related-card > div{padding:12px 14px 14px}
.aen-related-card h3{margin:2px 0 8px;font:700 15px/1.35 var(--sprout-font-body);color:var(--aen-ink)}
.aen-related-card p{color:var(--sp-muted,#64748b);font-size:12px;margin:0}

/* YouTube grid (shortcode) */
.aen-youtube-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin:16px 0}
.aen-youtube-card{position:relative;display:block;text-decoration:none;color:inherit;background:var(--sp-ink,#0f172a);border-radius:var(--sp-radius-md,8px);overflow:hidden;transition:transform .2s}
.aen-youtube-card:hover{transform:translateY(-3px)}
.aen-youtube-card img{width:100%;height:120px;object-fit:cover;opacity:.9}
.aen-youtube-card b{position:absolute;left:0;right:0;bottom:0;padding:14px 12px 10px;background:linear-gradient(transparent,#0f172a);color:#fff;font:600 13px/1.3 var(--sprout-font-body)}
.aen-play-mini{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:40px;height:40px;border-radius:50%;background:var(--aen-red,#D32F2F);color:#fff;display:grid;place-items:center;box-shadow:0 4px 12px rgba(211,47,47,.4)}

@media(max-width:700px){
        .aen-contact-grid{grid-template-columns:1fr;gap:20px}
        .aen-fw-header h1{font-size:26px}
        .aen-fw-body p,.aen-fw-body ul{font-size:15px}
        .aen-article-topmeta{flex-direction:column;align-items:flex-start;gap:8px}
        .aen-author-box{grid-template-columns:72px 1fr;gap:14px;padding:16px}
        .aen-author-avatar{width:72px;height:72px}
        .aen-author-head h3{font-size:16px}
        .aen-city-facts-grid li{grid-template-columns:110px 1fr}
        .aen-share{gap:6px}
        .aen-share-btn{min-height:44px;padding:10px 12px;font-size:12px}
        .aen-share-wa span,.aen-share-fb span,.aen-share-x span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
        .aen-share-copy{flex:1 1 auto}
        .aen-related-grid{grid-template-columns:1fr;gap:12px}
        .aen-related-card img{height:180px}
        .aen-youtube-grid{grid-template-columns:1fr}
}

/* article — width/gutter now come from the layout engine (.aen-layout--standard).
   Kept: article-specific typography only (see .aen-article h1/.aen-article-body …). */

/* Theme toggle + push bell */
.aen-theme-toggle,.aen-push-bell{border:1px solid var(--sp-border,#e5e7eb);background:var(--sp-surface,#fff);color:var(--aen-ink,#0F172A);cursor:pointer;padding:8px 10px;border-radius:22px;display:grid;place-items:center;transition:all .2s}
.aen-theme-toggle:hover,.aen-push-bell:hover{border-color:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312)}
.aen-theme-toggle .aen-icon-sun,.aen-theme-toggle .aen-icon-moon,.aen-theme-toggle .aen-icon-sys{display:none}
html[data-appearance="light"] .aen-theme-toggle .aen-icon-sun{display:block}
html[data-appearance="dark"] .aen-theme-toggle .aen-icon-moon{display:block}
html[data-appearance="system"] .aen-theme-toggle .aen-icon-sys{display:block}
html:not([data-appearance]) .aen-theme-toggle .aen-icon-sun{display:block}
html:not([data-appearance])[data-theme="dark"] .aen-theme-toggle .aen-icon-sun{display:none}
html:not([data-appearance])[data-theme="dark"] .aen-theme-toggle .aen-icon-moon{display:block}

/* Field reporter dateline */
.aen-field-line{margin:14px 0 8px;padding:10px 14px;border-radius:6px;background:#f8fafc;font-size:13px;color:var(--sp-text-2,#334155);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.aen-field-line em{font-style:normal;font-weight:600;color:var(--aen-ink,#0F172A)}
.aen-field-line a{color:var(--aen-red,#D32F2F);text-decoration:none;font-weight:600}
.aen-field-live{background:linear-gradient(90deg,#fef3c7,#fff8e1);border:1px solid #f59e0b55;color:#7c2d12}
.aen-field-live b{color:#b91c1c;letter-spacing:.3px}
.aen-live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ef4444;box-shadow:0 0 0 0 rgba(239,68,68,.7);animation:aen-pulse 1.6s infinite}
@keyframes aen-pulse{0%{box-shadow:0 0 0 0 rgba(239,68,68,.7)}70%{box-shadow:0 0 0 10px rgba(239,68,68,0)}100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}}

.aen-field-now ul{list-style:none;padding:0;margin:8px 0 0}
.aen-field-now li{padding:10px 0;border-bottom:1px dashed var(--sp-border,#e5e7eb)}
.aen-field-now li:last-child{border-bottom:0}
.aen-field-now li a{text-decoration:none;color:var(--aen-ink,#0F172A);display:block;font-size:14px;line-height:1.4}
.aen-field-now li small{color:var(--sp-muted,#64748b);font-size:11px;display:block;margin-top:3px}
.aen-widget-title{display:flex;align-items:center;gap:8px}

/* ==== DARK MODE ==== */
html[data-theme="dark"]{color-scheme:dark}
html[data-theme="dark"] body,
html[data-theme="dark"] .app{background:var(--sp-ink,#0b1220);color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-site-header,
html[data-theme="dark"] .aen-nav,
html[data-theme="dark"] .aen-weather-strip,
html[data-theme="dark"] .aen-story-card,
html[data-theme="dark"] .aen-list-story,
html[data-theme="dark"] .aen-contact-info,
html[data-theme="dark"] .aen-contact-form,
html[data-theme="dark"] .aen-city-info-card,
html[data-theme="dark"] .aen-widget,
html[data-theme="dark"] .aen-weather-detail-row,
html[data-theme="dark"] .aen-related-card,
html[data-theme="dark"] .aen-author-box,
html[data-theme="dark"] .aen-ticker,
html[data-theme="dark"] .aen-header-search,
html[data-theme="dark"] .aen-search-big,
html[data-theme="dark"] .aen-search-card,
html[data-theme="dark"] .aen-chip,
html[data-theme="dark"] .aen-city-chips a,
html[data-theme="dark"] .aen-theme-toggle,
html[data-theme="dark"] .aen-push-bell,
html[data-theme="dark"] .aen-lang-pill{background:var(--sp-surface,#111a2f);color:var(--sp-text,#e2e8f0);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-lang-pill .aen-lang-opt{color:#cbd5e1}
html[data-theme="dark"] .aen-lang-pill .aen-lang-opt.is-active,html[data-theme="dark"] .aen-lang-pill .aen-lang-opt[aria-pressed="true"]{color:#fff}
html[data-theme="dark"] .aen-city-rail{background:var(--sp-surface-2);border-bottom-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-city-chips a{background:var(--sp-surface,#111a2f);color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-city-chips a.active{background:var(--aen-saffron,#F57C00);color:var(--sp-ink,#0b1220)}
html[data-theme="dark"] .aen-city-chips a.aen-city-chip-more{color:var(--sp-link-hover,#B90D0B)}
html[data-theme="dark"] .aen-weather-chip{background:#0f2440;border-color:#164e63;color:#e0f2fe}
html[data-theme="dark"] .aen-w-city{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-w-temp{color:#fbbf24}
html[data-theme="dark"] .aen-story-copy h3 a,
html[data-theme="dark"] .aen-list-story h3 a,
html[data-theme="dark"] .aen-search-card h3,
html[data-theme="dark"] .aen-related-card h3,
html[data-theme="dark"] .aen-author-head h3 a,
html[data-theme="dark"] .aen-menu li a,
html[data-theme="dark"] .aen-fw-body,
html[data-theme="dark"] .aen-article-body{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-story-copy p,
html[data-theme="dark"] .aen-list-story p,
html[data-theme="dark"] .aen-related-card p,
html[data-theme="dark"] .aen-author-tagline,
html[data-theme="dark"] .aen-author-bio,
html[data-theme="dark"] .aen-author-meta,
html[data-theme="dark"] .aen-article-time,
html[data-theme="dark"] .aen-city-facts-grid li span,
html[data-theme="dark"] .aen-city-info-card p{color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-city-facts-grid li b{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-section-heading{border-bottom-color:var(--sp-text-2,#334155)}
html[data-theme="dark"] .aen-section-heading h2{color:var(--sp-text,#e2e8f0)}
/* Phase 3 — homepage top grid, dark */
html[data-theme="dark"] .aen-compact-card{background:var(--sp-surface,#111a2f)}
html[data-theme="dark"] .aen-compact-copy h3 a,
html[data-theme="dark"] .aen-topnews-list a{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-compact-copy .aen-story-meta{color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-topnews-list li{border-bottom-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-lead-excerpt{color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-share{border-top-color:var(--sp-border,#1e293b);border-bottom-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-share-btn{background:var(--sp-surface,#111a2f);color:var(--sp-text,#e2e8f0);border-color:var(--sp-text-2,#334155)}
html[data-theme="dark"] .aen-share-btn:hover{border-color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-field-line{background:var(--sp-surface,#111a2f);color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-post-nav a{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-post-nav-title{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-article-body blockquote{background:var(--sp-ink,#0b1220);color:#cbd5e1}
html[data-theme="dark"] .aen-field-live{background:linear-gradient(90deg,#3d2f0b,#2a1f05);border-color:#7c2d1244;color:#fbbf24}
html[data-theme="dark"] .aen-field-live b{color:#fca5a5}
html[data-theme="dark"] .aen-field-now li small,
html[data-theme="dark"] .aen-field-now li a{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-fw-header{border-bottom-color:var(--sp-text-2,#334155)}
html[data-theme="dark"] .aen-nav{border-bottom-color:var(--sprout-nav-indicator,#FDD706)}
html[data-theme="dark"] .aen-header-search input,
html[data-theme="dark"] .aen-search-big input{color:var(--sp-text,#e2e8f0);background:transparent}
html[data-theme="dark"] .aen-contact-form input,
html[data-theme="dark"] .aen-contact-form textarea{background:var(--sp-ink,#0b1220);color:var(--sp-text,#e2e8f0);border-color:var(--sp-text-2,#334155)}
html[data-theme="dark"] .aen-placeholder-banner{background:#3d2f0b;color:#fde68a;border-color:#f59e0b55}
html[data-theme="dark"] .aen-alert-success{background:#052e16;color:#86efac;border-color:#166534}
html[data-theme="dark"] .aen-alert-error{background:#450a0a;color:#fca5a5;border-color:#991b1b}
html[data-theme="dark"] .aen-page-editor-content,
html[data-theme="dark"] .aen-fw-body p,
html[data-theme="dark"] .aen-fw-body ul{color:#cbd5e1}

.aen-article h1{font:800 34px/1.28 var(--sprout-font-head);margin:4px 0 12px;letter-spacing:-.3px;overflow-wrap:anywhere}
.aen-article-meta{color:var(--sp-muted,#64748b);font-size:13px}
.aen-article-image{width:100%;max-height:450px;object-fit:cover;margin:0;border-radius:8px}
.aen-article-body{font-size:18px;line-height:1.85}
.aen-article-body p:first-child{font-size:21px;line-height:1.55;font-weight:600}
.aen-article-body p{margin:0 0 1.15em}
.aen-article-body img{margin:20px 0;border-radius:6px;height:auto}
.aen-article-body h2{font:700 26px var(--sprout-font-head);margin:32px 0 10px}
.aen-article-body h3{font:700 20px var(--sprout-font-head);margin:26px 0 8px}
.aen-article-body ul,.aen-article-body ol{margin:0 0 1.15em;padding-left:1.4em}
.aen-article-body li{margin:.35em 0}
.aen-article-body blockquote{border-left:4px solid var(--aen-red,#D32F2F);padding:8px 20px;color:var(--sp-text-2,#334155);font-style:italic;margin:24px 0;background:var(--sp-surface,#fff)}
.aen-article-body a{overflow-wrap:anywhere}
/* wide content must scroll inside itself, never widen the page */
.aen-article-body :is(table,.wp-block-table,pre,.wp-block-code,.wp-block-embed__wrapper){display:block;max-width:100%;overflow-x:auto}
.aen-article-body iframe,.aen-article-body video,.aen-article-body figure{max-width:100%}
.aen-article-body table{width:100%;border-collapse:collapse}
.aen-article-tags{margin-top:28px;color:var(--sp-muted,#64748b);font-size:13px}

/* ============================================================
   Phase 5 — single article: header, media figure, discovery footer.
   Width comes from the Phase 2 STANDARD layout (760px) on .aen-shell —
   nothing here sets a container width.
   ============================================================ */
.aen-article-breadcrumb,.aen-loc-breadcrumb{font-size:13px;line-height:1.7;color:var(--sp-muted,var(--sp-muted,#64748b));margin:0 0 16px}
.aen-article-breadcrumb a,.aen-loc-breadcrumb a{color:inherit;text-decoration:none}
.aen-article-breadcrumb a:hover,.aen-loc-breadcrumb a:hover{color:var(--sprout-brand-primary,#FDD706);text-decoration:underline}
.aen-article-breadcrumb .aen-bc-sep,.aen-loc-breadcrumb .aen-bc-sep{margin:0 6px;opacity:.5}

/* ============================================================
   Phase 7 — State / City discovery pages.
   The visual system for .sprout-location now lives in ONE consolidated
   block: "P14.1 — Premium regional network" (search that tag below).
   The former Phase-7 rules here were fully superseded by the P1.5
   .sprout-location block and by P14.1, so they were removed
   (dead: .sprout-location .aen-section-hero padding/margin/eyebrow;
   .aen-loc-hero was re-established in P14.1 with a unified breakpoint
   ladder). .aen-loc-hero / .aen-loc-hero-side / .aen-loc-identity /
   .aen-loc-discover are defined once, in P14.1.
   ============================================================ */
.aen-article-head{margin:0 0 20px}
.aen-article-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 10px;font:700 11px var(--sprout-font-head);letter-spacing:1px;text-transform:uppercase}
.aen-article-cat{color:var(--sprout-brand-alert,#B90D0B);text-decoration:none}
.aen-article-loc{color:var(--sp-muted,var(--sp-muted,#64748b));font-weight:600;letter-spacing:.4px;text-transform:none}
.aen-article-loc a{color:inherit;text-decoration:none}
.aen-article-loc a:hover{text-decoration:underline}
.aen-article-dek{font-size:18px;line-height:1.6;color:var(--sp-muted,#475569);margin:0 0 18px;font-weight:500}
.aen-article-metaline{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--sp-muted,var(--sp-muted,#64748b));text-align:right}
.aen-article-figure{margin:0 0 22px}
.aen-article-caption{font-size:13px;line-height:1.5;color:var(--sp-muted,var(--sp-muted,#64748b));margin:8px 0 0;padding-left:2px}

.aen-post-nav{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:32px 0 8px}
.aen-post-nav a{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--sprout-card-border,#e4e4e2);border-radius:10px;background:var(--sprout-card-bg,#fff);text-decoration:none;color:inherit;transition:border-color .2s,transform .2s}
.aen-post-nav a:hover{transform:translateY(-2px);box-shadow:var(--sp-shadow-1)}
.aen-post-nav-next{text-align:right}
.aen-post-nav-dir{font:700 11px var(--sprout-font-head);letter-spacing:1px;text-transform:uppercase;color:var(--sp-muted,var(--sp-muted,#64748b))}
.aen-post-nav-title{font:700 14px/1.4 var(--sprout-font-body);color:var(--sprout-card-title,#111312);overflow-wrap:anywhere}
.aen-more-block{margin-top:32px}

/* Phase 3.5 — same-post EN/HI: shown when an English reader opens a post that
   has no English body yet (the original is rendered in full below). */
.sprout-lang-fallback{margin:0 0 20px;padding:10px 14px;border-radius:8px;background:var(--sp-surface,#f5f5f3);border:1px solid var(--sp-border,#e4e4e2);color:var(--sp-muted,#5b6167);font-size:13px;line-height:1.5}
html[data-theme="dark"] .sprout-lang-fallback{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b);color:var(--sp-muted,#94a3b8)}

/* archive */
.aen-archive-header{padding:20px 0 24px;border-bottom:1px solid var(--sp-border,#e5e7eb);margin-bottom:24px}
.aen-archive-header h1{font:700 34px var(--sprout-font-head);margin:6px 0 4px;letter-spacing:-1px}
.aen-page-title{font:700 30px var(--sprout-font-head);margin:20px 0 20px}

/* search */
.aen-search-page{padding:34px 24px 60px}
.aen-search-page h1{font:700 34px/1.2 var(--sprout-font-head);margin:6px 0 22px;letter-spacing:-1px}
.aen-search-big{display:flex;gap:12px;border:2px solid var(--aen-red,#D32F2F);padding:12px 16px;border-radius:8px;background:var(--sp-surface,#fff);align-items:center}
.aen-search-big input{border:0;outline:0;font:17px var(--sprout-font-body);width:100%;background:transparent}
.aen-search-big .aen-btn-primary{border:0;background:var(--aen-red,#D32F2F);color:#fff;padding:8px 14px;border-radius:6px;cursor:pointer}
.aen-filter-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:20px 0 8px;color:var(--sp-muted,#64748b);font-size:13px}
.aen-filter-label{font-weight:600;margin-right:4px}
.aen-chip{border:1px solid var(--sp-border,#e5e7eb);background:var(--sp-surface,#fff);padding:6px 14px;border-radius:20px;font:600 13px var(--sprout-font-body);cursor:pointer;color:var(--aen-ink);text-decoration:none;transition:all .2s}
.aen-chip:hover{border-color:var(--aen-red,#D32F2F)}
.aen-chip.active{background:var(--aen-red,#D32F2F);color:#fff;border-color:var(--aen-red,#D32F2F)}
.aen-results-count{color:var(--sp-muted,#64748b);font-size:13px;margin:14px 0 18px;border-bottom:1px solid var(--sp-border,#e5e7eb);padding-bottom:14px}
.aen-search-results{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:start}
.aen-search-card{display:grid;grid-template-columns:140px 1fr;gap:14px;align-items:center;background:var(--sp-surface,#fff);border:1px solid var(--sp-border,#e5e7eb);padding:0;border-radius:var(--sp-radius-card,10px);text-decoration:none;color:inherit;overflow:hidden;transition:all .2s}
.aen-search-card:hover{transform:translateY(-2px)}
.aen-search-card img{width:140px;height:100px;object-fit:cover;transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-search-card:hover img{transform:scale(1.04)}
.aen-search-card > div{padding:10px 14px 12px 0}
.aen-search-card h3{margin:0 0 6px;font:700 15px/1.35 var(--sprout-font-body);color:var(--aen-ink)}
.aen-search-card mark{background:#fef08a;color:var(--aen-ink);padding:0 2px}
.aen-search-card p{color:var(--sp-muted,#64748b);font-size:12px;margin:0}
.aen-empty{grid-column:1/-1;padding:40px;text-align:center;color:var(--sp-muted,#64748b);background:var(--sp-surface,#fff);border:1px dashed var(--sp-border,#e5e7eb);border-radius:8px}

/* footer */
/* =========================================================================
   FOOTER — Phase P11 premium redesign.
   Three genuinely different presentations share this base + the bottom bar:
     .aen-footer--classic   multi-column editorial grid (the default)
     .aen-footer--magazine  banded: large brand → popular-categories grid
     .aen-footer--minimal   one compact row, no newsletter
   Root causes fixed here: (1) the footer's newsletter box was silently
   rendering at FULL size, not the compact variant, stretching one column far
   taller than the others on an align-items:start grid — footer.php now
   explicitly requests the compact variant; (2) tiny 12.5px bottom-bar text;
   (3) a flat, un-anchored top edge. Tokens only, no data/hook changes.
   ====================================================================== */
/* P15 Batch 1A — background/color removed here: both were already fully
   re-declared (and won, by source order) on the later `.aen-footer` rule
   further down this file (background:var(--sprout-footer-bg), color:
   var(--sprout-footer-text)) — a dead/competing pair on the same selector,
   not a live style. Layout properties are unaffected. */
.aen-footer{margin-top:48px;padding-block:0 28px;border-top:3px solid var(--sprout-brand-primary,#FDD706)}
.aen-footer .aen-brand-text strong{color:var(--sprout-footer-text,#fff)}
.aen-footer .aen-brand-text small{color:var(--sprout-brand-primary,#FDD706)}
.aen-footer-about{margin:14px 0 0;font:400 14px/1.7 var(--sprout-font-body);color:var(--sprout-footer-text,#fff);opacity:.7;max-width:44ch}
.aen-footer p{margin:12px 0}
.aen-socials{margin-top:16px;display:flex;flex-wrap:wrap;gap:8px 16px}
.aen-socials a{text-decoration:none;font:600 13px var(--sprout-font-body);padding:4px 2px}
.aen-socials a:hover{text-decoration:underline}
/* Scoped to the footer only — page-templates/contact.php also reuses
   .aen-socials on a light background and must keep inheriting its own
   page text colour, not the footer's white-on-dark treatment. */
.aen-footer .aen-socials a{color:var(--sprout-footer-text,#fff);opacity:.85}
.aen-footer .aen-socials a:hover{opacity:1}

.aen-footer-col-title{font:800 12px var(--sprout-font-head);letter-spacing:1.6px;text-transform:uppercase;color:var(--sprout-brand-primary,#FDD706);margin:0 0 14px}
.aen-footer-links{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.aen-footer-links a{color:var(--sprout-footer-text,#fff);opacity:.85;text-decoration:none;font:400 14.5px/1.35 var(--sprout-font-body);transition:opacity .15s,color .15s}
.aen-footer-links a:hover{opacity:1;color:var(--sprout-brand-primary,#FDD706)}
.aen-footer-links a:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:3px;border-radius:3px}

/* newsletter blends into its column — no boxed/floating look */
.aen-footer-newsletter .aen-newsletter-compact{background:transparent;border-radius:0;padding:0}
.aen-footer-newsletter .aen-newsletter-compact .aen-newsletter-inner{gap:14px}
.aen-footer-newsletter .aen-newsletter-compact h2{font:800 18px/1.25 var(--sprout-font-head);letter-spacing:-.3px;margin:6px 0 6px}
.aen-footer-newsletter .aen-newsletter-compact p{font-size:13.5px}

.aen-footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:32px;padding-top:18px;font-size:13.5px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px 28px}
.aen-footer-legal{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 18px}
/* Classic keeps its legal links in the bottom row — give them a touch more
   breathing room there (does NOT affect Minimal's shared bottom bar). */
.aen-footer--classic .aen-footer-bottom{margin-top:30px;padding-top:18px;gap:14px 32px}
.aen-footer--classic .aen-footer-legal{gap:10px 20px}
.aen-footer-legal a{color:var(--sprout-footer-text,#fff);opacity:.82;text-decoration:none;font-size:13.5px}
.aen-footer-legal a:hover{opacity:1;color:var(--sprout-brand-primary,#FDD706)}
.aen-footer-legal a:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:3px;border-radius:3px}
.aen-footer-menu{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 18px}
.aen-footer-menu a{color:var(--sprout-footer-text,#fff);text-decoration:none}

/* Widget content in a footer group — WordPress widgets (Nav Menu, Categories,
   Custom Links, Text…) inherit the same editorial list styling as the
   theme fallback, so a customer-filled column looks identical to an
   automatic one. */
.aen-footer-widget{margin:0}
.aen-footer-widget ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.aen-footer-widget li{margin:0}
.aen-footer-widget a{color:var(--sprout-footer-text,#fff);opacity:.85;text-decoration:none;font:400 14.5px/1.35 var(--sprout-font-body);transition:opacity .15s,color .15s}
.aen-footer-widget a:hover{opacity:1;color:var(--sprout-brand-primary,#FDD706)}
.aen-footer-widget a:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:3px;border-radius:3px}
.aen-footer-widget p{color:var(--sprout-footer-text,#d7dade);opacity:.85;font:400 14px/1.7 var(--sprout-font-body);margin:0}
.aen-footer-widget .children,.aen-footer-widget .sub-menu{margin-top:8px;padding-left:14px}

/* ---- Editorial Footer (id: classic): four groups — Brand · हमारी कवरेज ·
   श्रेणियां · ट्रेंडिंग टॉपिक्स. CSS Grid (not flex-grow-to-fill): a content-
   aware 1.4fr:1fr:1fr:1fr ratio gives the brand column a bit more room
   without forcing every column to stretch and swallow whatever width is
   left over, which is what previously read as "spread out" — three short
   nav columns were growing to fill a wide shell (flex:1 1 190px against a
   1300px container) with 44px between them. minmax(0,…) keeps a long
   unbroken string (a URL-like tag, a long Hindi label) from blowing out its
   track. Headings on one start line, columns separated by whitespace.
   Content-driven height, so it stays balanced whether a group is present or
   (no tags on a fresh site) absent. ---- */
.aen-footer--classic .aen-footer-grid{
	display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));
	align-items:start;column-gap:clamp(20px,3vw,40px);row-gap:26px;padding-top:26px;
}
.aen-footer--classic .aen-footer-col{min-width:0}
.aen-footer--classic .aen-footer-brand-col{display:flex;flex-direction:column;gap:12px;min-width:0}
.aen-footer--classic .aen-footer-brand-col p{margin:0}
/* Adaptive density hook (sprout_footer_link_list $extra_cls) — a SHORT list
   renders exactly like every other single-column .aen-footer-links (nothing
   to overflow into a 2nd column); only a list long enough to exceed the
   capped height genuinely spills into a 2nd column. No JS, no item-count
   logic in PHP — this is why it works identically for the fallback array
   AND for arbitrary widget/category content the theme never counts. */
.aen-footer-links--2col{
	display:block;column-width:150px;column-gap:22px;column-fill:auto;max-height:172px;
}
.aen-footer-links--2col li{margin:0 0 10px;break-inside:avoid}
.aen-footer-links--2col li:last-child{margin-bottom:0}

@media(max-width:1024px){
	.aen-footer--classic .aen-footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(18px,3vw,34px);row-gap:24px}
	.aen-footer--classic .aen-footer-brand-col{grid-column:1/-1}
}
@media(max-width:560px){
	.aen-footer--classic .aen-footer-grid{grid-template-columns:1fr;row-gap:22px}
	.aen-footer--classic .aen-footer-col .aen-footer-links{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px}
}
@media(max-width:360px){
	.aen-footer--classic .aen-footer-col .aen-footer-links{grid-template-columns:1fr}
}

/* ---- Network Footer (id: magazine): a masthead (brand + about + social
   left, the compact newsletter right), then four widget-editable groups. ---- */
.aen-footer-mag-brand{display:flex;align-items:flex-start;justify-content:space-between;gap:28px 48px;flex-wrap:wrap;padding:22px 0;margin-bottom:24px;border-bottom:1px solid rgba(255,255,255,.1)}
.aen-footer-mag-id{display:flex;flex-direction:column;align-items:flex-start;gap:14px;flex:1 1 380px;min-width:0;max-width:600px}
.aen-footer-mag-nl{flex:1 1 340px;max-width:440px}
.aen-footer-mag-nl .aen-newsletter-compact{background:transparent;border-radius:0;padding:0}
.aen-footer-mag-nl .aen-newsletter-compact h2{font:800 18px/1.25 var(--sprout-font-head);letter-spacing:-.3px;margin:2px 0 6px}
.aen-footer-mag-nl .aen-newsletter-compact p{font-size:13.5px}
.aen-footer-brand--lg{display:flex;align-items:center;gap:14px}
.aen-footer-brand--lg .aen-brand-mark{width:56px;height:56px;font-size:26px;line-height:56px}
.aen-footer-brand--lg .aen-brand-text strong{font-size:25px;white-space:normal}
.aen-footer-about--lg{margin:0;font-size:14.5px;line-height:1.65;opacity:.8;max-width:60ch}
.aen-footer-mag-brand .aen-socials{margin-top:0}
.aen-socials--icon{gap:10px}
.aen-socials--icon a{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:rgba(255,255,255,.08);font-size:15px;padding:0;opacity:1;transition:background .2s,color .2s}
.aen-socials--icon a:hover{background:var(--sprout-brand-primary,#FDD706);color:#111312;text-decoration:none}
/* Content-aware, not three-narrow-columns-stretched-across-the-page: each
   group gets at least 190px and the row fills edge-to-edge, but the number
   of tracks adapts to what actually fits instead of forcing every width
   down to an equal fraction of a wide shell (the "loose columns, huge
   unused gaps" complaint). Popular Categories already uses .aen-footer-chips
   (flex-wrap, below) which self-densifies via wrapping — it doesn't need a
   forced column count on top of that. */
.aen-footer-mag-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));align-items:start;column-gap:clamp(20px,3vw,40px);row-gap:24px}
.aen-footer-mag-grid .aen-footer-col{min-width:0}
.aen-footer-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start}
.aen-footer-chips a{display:inline-block;padding:6px 13px;border:1px solid rgba(255,255,255,.16);border-radius:6px;color:var(--sprout-footer-text,#fff);opacity:.85;text-decoration:none;font-size:13px;transition:opacity .15s,border-color .15s,color .15s}
.aen-footer-chips a:hover{opacity:1;border-color:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-primary,#FDD706)}
.aen-footer-chips a:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:2px}

@media(max-width:1024px){
	.aen-footer-mag-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(18px,3vw,34px);row-gap:22px}
	.aen-footer-mag-id{max-width:none}
}
@media(max-width:560px){
	.aen-footer-mag-brand{flex-direction:column;align-items:flex-start;gap:18px;padding:20px 0;margin-bottom:20px}
	.aen-footer-mag-id,.aen-footer-mag-nl{max-width:none;flex-basis:auto;width:100%}
	.aen-footer-mag-grid{grid-template-columns:1fr;row-gap:22px}
	.aen-footer-mag-grid .aen-footer-col .aen-footer-links{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px}
}
@media(max-width:360px){
	.aen-footer-mag-grid .aen-footer-col .aen-footer-links{grid-template-columns:1fr}
}

/* ---- Minimal: one compact row — brand, essential links, social — wraps
   naturally, no newsletter, no category column. ---- */
.aen-footer-min-row{display:flex;align-items:center;flex-wrap:wrap;gap:16px 28px;padding-block:22px 6px}
.aen-footer-brand--min{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;text-decoration:none}
.aen-footer-brand--min .aen-brand-mark{width:34px;height:34px;font-size:17px;line-height:34px}
.aen-footer-brand--min strong{font:800 16px var(--sprout-font-head);color:var(--sprout-footer-text,#fff)}
.aen-footer-min-links{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 20px;flex:1 1 auto}
.aen-footer-min-links a{color:var(--sprout-footer-text,#fff);opacity:.85;text-decoration:none;font-size:14.5px}
.aen-footer-min-links a:hover{opacity:1;color:var(--sprout-brand-primary,#FDD706)}
.aen-footer--minimal .aen-footer-bottom{margin-top:20px}

.aen-404{text-align:center;padding:60px 20px}
.aen-404 h1{font:700 36px var(--sprout-font-head);margin:6px 0 14px}

.aen-mobile-menu{display:none}
.aen-mobile-menu.aen-open{display:block;background:var(--sprout-nav-bg,#111312);border-bottom:2px solid var(--sprout-nav-indicator,#FDD706);box-shadow:0 8px 20px rgba(15,23,42,.18)}
.aen-mobile-menu.aen-open .aen-mobile-menu-list{flex-direction:column}
.aen-mobile-menu.aen-open .aen-mobile-menu-list li{border-bottom:1px solid rgba(255,255,255,.1)}
.aen-mobile-menu.aen-open .aen-mobile-menu-list li a{padding:14px 20px;min-height:48px;display:flex;align-items:center;font-size:var(--sp-fs-1,1.0625rem)}
.aen-mobile-menu-head{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid rgba(255,255,255,.14)}
.aen-mobile-menu-head span{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sprout-nav-text,#e8e8e6);opacity:.7}
.aen-mobile-menu-close{border:0;background:transparent;color:var(--sprout-nav-text,#e8e8e6);cursor:pointer;padding:10px;line-height:0;border-radius:var(--sp-radius-sm,4px)}
.aen-mobile-menu-close:focus-visible{outline:2px solid var(--sprout-nav-indicator,#FDD706);outline-offset:2px}

/* ===== Phase 9 — pagination / archive / 404 / empty-state consistency ===== */
/* Style WordPress' the_posts_pagination() (.pagination) the same as the manual
   .aen-pagination used by the homepage directory. */
.aen-pagination,.pagination .nav-links{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.pagination{margin:28px 0 0}
.aen-pagination .page-numbers,.pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:7px 12px;border:1px solid var(--sprout-card-border,#e4e4e2);border-radius:6px;text-decoration:none;font-weight:600;font-size:14px;color:var(--sprout-card-title,#111312);background:var(--sprout-card-bg,#fff)}
.aen-pagination .page-numbers:hover,.pagination .page-numbers:hover{border-color:var(--sprout-brand-dark,#111312)}
.aen-pagination .current,.pagination .current{background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312);border-color:var(--sprout-brand-primary,#FDD706)}
.aen-pagination .dots,.pagination .dots{border-color:transparent;background:transparent;min-width:0}
html[data-theme="dark"] .aen-pagination .page-numbers,html[data-theme="dark"] .pagination .page-numbers{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b);color:var(--sp-text,#e2e8f0)}

.aen-archive-eyebrow{font:700 11px var(--sprout-font-head);letter-spacing:1.4px;text-transform:uppercase;color:var(--sprout-brand-alert,#B90D0B);display:block;margin-bottom:4px}
.aen-empty{margin:24px 0}
.aen-empty .aen-btn-primary,.aen-empty a.aen-more{display:inline-block;margin-top:14px}
.aen-empty a.aen-more{color:var(--sprout-brand-alert,#B90D0B);font-weight:600;text-decoration:none}
.aen-empty a.aen-more:hover{text-decoration:underline}

.aen-404-search{max-width:520px;margin:18px auto 8px}
.aen-404-search form{display:flex;gap:8px}
.aen-404-search input[type="search"]{flex:1;min-width:0;padding:10px 14px;border:1px solid var(--sprout-card-border,#e4e4e2);border-radius:8px;font:15px var(--sprout-font-body);background:var(--sprout-card-bg,#fff);color:var(--sprout-card-title,#111312)}
.aen-404-recent{max-width:560px;margin:26px auto 0;text-align:left}
.aen-404-recent h2{font:700 13px var(--sprout-font-head);letter-spacing:.8px;text-transform:uppercase;color:var(--sp-muted,var(--sp-muted,#64748b));margin:0 0 8px;text-align:center}
.aen-404-recent ul{list-style:none;margin:0;padding:0}
.aen-404-recent li{border-top:1px solid var(--sprout-card-border,#e4e4e2)}
.aen-404-recent a{display:block;padding:11px 2px;text-decoration:none;color:var(--sprout-card-title,#111312);font:600 15px/1.4 var(--sprout-font-body)}
.aen-404-recent a:hover{color:var(--sprout-brand-alert,#B90D0B)}
html[data-theme="dark"] .aen-404-search input[type="search"],
html[data-theme="dark"] .aen-404-recent a{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-404-recent li{border-top-color:var(--sp-border,#1e293b)}

@media(max-width:960px){
        .aen-newsletter-inner{grid-template-columns:1fr;gap:24px}
        .aen-search-results{grid-template-columns:1fr}
}

/* mobile */
@media(max-width:700px){
        .aen-shell{padding-inline:var(--sprout-gutter-mobile)}
        /* mobile: homepage + article use the plain 16px shell gutter, no extra outer margin */
        .aen-shell.aen-home-editorial,
        .aen-shell.aen-article{max-width:none}
        .aen-layout{padding-block:var(--sprout-space-block-mobile) calc(var(--sprout-space-block-mobile) + 14px)}
        /* Phase 9 — de-clutter: topline is desktop decoration; the horizontal
           primary nav is replaced by the hamburger menu (no duplicate); the
           header search icon is dead here (bottom-nav provides search). */
        .aen-nav{display:none}
        .aen-header-search{display:none}
        .aen-header-inner{min-height:56px}
        .aen-mobile-only{display:grid}
        .aen-desktop-only{display:none}
        .aen-brand-mark{font-size:20px;width:38px;height:38px;line-height:38px;border-radius:var(--sp-radius-sm,4px)}
        .aen-brand-text strong{font-size:var(--sp-fs-2,1.1875rem)}
        .aen-brand-text small{font-size:var(--sp-fs--1,.8125rem)}
        /* Compact: shorter row still, tighter gaps */
        .aen-header-inner--compact{min-height:48px;gap:8px}
        .aen-header-actions--compact{gap:2px}
        /* Magazine: smaller brand band + utility strip wraps without overflow */
        .aen-header-inner--magazine{min-height:76px;padding-block:14px}
        .aen-brand--lg .aen-brand-mark{width:42px;height:42px;font-size:20px;line-height:42px}
        .aen-brand--lg .aen-brand-text strong{font-size:19px}
        .aen-header-utility-inner{justify-content:center;flex-wrap:wrap;gap:8px;min-height:auto}
        .aen-header-utility-inner .aen-header-date{margin-right:0;display:none}
        /* Touch-target audit: this used to shrink the HI/EN toggle BELOW its own
           desktop size (4px/11px vs the desktop 6px/11px) — the one control that
           got smaller, not just denser, on the surface where it is touched, not
           clicked. No longer shrinks past the desktop baseline. */
        /* The primary nav trigger is mobile-ONLY (.aen-icon is display:none on
           desktop via .aen-mobile-only) — its one real tap context is touch, so
           it gets a real 44px target here rather than the shared 34px .aen-icon
           default every other (mouse-reachable) header icon still uses. */
        .aen-menu-toggle{min-width:44px;min-height:44px}
        .aen-nav{border-bottom-width:2px}
        .aen-menu li a{padding:10px 13px;font-size:13px}
        .aen-city-inner{padding:8px 16px;gap:10px}
        .aen-city-label{font-size:10px}
        .aen-city-chips a{padding:5px 11px;font-size:12px}
        .aen-weather-inner{padding:8px 16px;gap:10px}
        .aen-weather-label{display:none}
        .aen-weather-chip{padding:4px 10px 4px 6px;gap:6px}
        .aen-w-city{font-size:12px}
        .aen-w-temp{font-size:12px}
        .aen-w-temp em{font-size:9px}
        .aen-ticker{height:40px;margin-bottom:14px}
        .aen-ticker-label{padding:0 11px;font-size:11px}
        .aen-ticker-seq{font-size:12px}
        .aen-edition-banner h1{font-size:18px}
        .aen-home-top{display:flex;flex-direction:column;gap:0}
        /* mobile editorial order: lead+supporting -> secondary -> topnews/trending/live */
        .aen-home-col--center{order:1}
        .aen-home-col--right{order:2}
        .aen-home-col--left{order:3}
        .aen-home-col{margin-bottom:16px}
        .aen-home-col:last-child{margin-bottom:0}
        .aen-lead .aen-image-wrap{height:224px}
        .aen-lead .aen-story-copy{padding:12px 4px 0}
        .aen-lead .aen-story-copy h3{font-size:22px;line-height:1.3}
        .aen-lead-supporting{grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
        .aen-lead-supporting .aen-compact-thumb{height:104px}
        .aen-lead-supporting .aen-compact-copy h3{font-size:13px;line-height:1.28}
        .aen-story-copy{padding:10px}
        .aen-content-columns{display:block;margin-top:32px}
        .aen-rail{margin-top:38px}
        .aen-section-heading h2{font-size:19px}
        .aen-list-story{grid-template-columns:112px 1fr;gap:11px;padding:0 8px 12px 0}
        .aen-list-story img{width:112px;height:88px;border-radius:5px 0 0 5px}
        .aen-list-story h3{font-size:14px;line-height:1.3;margin:0 0 5px}
        .aen-video-feature,.aen-gallery-feature{min-height:210px}
        .aen-video-feature img,.aen-gallery-feature img{height:210px}
        .aen-video-feature h3,.aen-gallery-feature h3{font-size:17px}
        .aen-newsletter{padding:28px 22px;margin:44px 0 20px;border-radius:10px}
        .aen-newsletter-copy h2{font-size:22px}
        .aen-search-page{padding:22px 16px 40px}
        .aen-search-page h1{font-size:24px}
        .aen-search-card{grid-template-columns:100px 1fr}
        .aen-search-card img{width:100px;height:88px}
        .aen-search-card h3{font-size:13px}
        /* mobile — tighter Classic/Magazine footer spacing. Layout structure
           for Classic/Magazine lives in their own max-width:560px / 400px
           blocks above; only spacing is nudged here. (The mobile sticky
           bottom nav that used to need 82px of footer clearance here was
           removed outright — footer.php no longer prints it — so .aen-footer
           just uses its own base padding-block now, no mobile override.) */
        .aen-footer--classic .aen-footer-grid{gap:24px 20px;padding-top:22px}
        .aen-footer-about{max-width:none}
        .aen-footer-bottom{flex-direction:column;align-items:flex-start;margin-top:22px}
        .aen-footer-brand--lg .aen-brand-mark{width:46px;height:46px;font-size:21px;line-height:46px}
        .aen-footer-brand--lg .aen-brand-text strong{font-size:21px}
        .aen-footer-about--lg{font-size:14px}
        /* Minimal: brand row first, links wrap under it, no horizontal overflow */
        .aen-footer-min-row{gap:12px 20px}
        .aen-footer-min-links{gap:8px 16px}
        .aen-article h1{font-size:25px;letter-spacing:-.2px;line-height:1.3}
        .aen-article-image{max-height:240px}
        .aen-article-figure{margin-bottom:16px}
        .aen-article-body{font-size:16px}
        .aen-article-body p:first-child{font-size:17px}
        .aen-article-dek{font-size:16px}
        .aen-article-metaline{text-align:left}
        .aen-article-kicker{font-size:10px;gap:6px 10px}
        .aen-post-nav{grid-template-columns:1fr}
        .aen-post-nav-next{text-align:left}
}

/* ==== v1.7 — Trending / Reactions / Moderation / PWA ==== */

/* Trending Now widget */
.aen-trending-now{background:var(--sp-surface,#fff);border:1px solid var(--sp-border,#e5e7eb);border-radius:8px;padding:16px 18px;margin-bottom:22px}
.aen-trending-now .aen-widget-title{font:800 15px var(--sprout-font-head);letter-spacing:.4px;margin:0 0 12px;color:var(--aen-ink);text-transform:uppercase}
.aen-trending-list{list-style:none;padding:0;margin:0;counter-reset:aen-tr}
.aen-trending-list li{display:grid;grid-template-columns:36px 1fr;gap:12px;padding:12px 0;border-bottom:1px dashed var(--sp-border,#e5e7eb);cursor:pointer;transition:background .15s;align-items:start}
.aen-trending-list li:last-child{border-bottom:0}
.aen-trending-list li:hover{background:linear-gradient(90deg,#fef2f2,transparent)}
.aen-trending-list b{color:var(--aen-red,#D32F2F);font:900 20px/1 var(--sprout-font-head);padding-top:2px}
.aen-trending-list h4{margin:0 0 4px;font:700 14px/1.35 var(--sprout-font-body);color:var(--aen-ink)}
.aen-trending-list small{color:var(--sp-muted,#64748b);font-size:11px}

html[data-theme="dark"] .aen-trending-now{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-trending-list li:hover{background:linear-gradient(90deg,#1a0d10,transparent)}
html[data-theme="dark"] .aen-trending-list h4{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-trending-list small{color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-trending-list li{border-bottom-color:var(--sp-border,#1e293b)}

/* Reader reactions */
.aen-reactions{margin:26px 0 6px;padding:20px;background:var(--sp-surface,#fff);border:1px solid var(--sp-border,#e5e7eb);border-radius:10px;text-align:center}
.aen-reactions-label{display:block;font:700 12px var(--sprout-font-head);letter-spacing:1.2px;color:var(--sp-muted,#64748b);text-transform:uppercase;margin-bottom:14px}
.aen-reactions-btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.aen-reaction{border:1px solid var(--sp-border,#e5e7eb);background:var(--sp-surface,#fff);padding:10px 16px;border-radius:32px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;font:600 13px var(--sprout-font-body);color:var(--aen-ink);transition:transform .15s,border-color .2s,background .2s,box-shadow .2s;min-width:96px;justify-content:center}
.aen-reaction:hover{transform:translateY(-2px);border-color:var(--sprout-brand-primary,#FDD706);box-shadow:0 6px 16px rgba(15,23,42,.10)}
.aen-reaction.is-active{background:linear-gradient(135deg,#fff7ed,#ffedd5);border-color:var(--aen-saffron,#F57C00);color:#7c2d12;box-shadow:0 4px 12px rgba(245,124,0,.18)}
.aen-reaction-emoji{font-size:20px;line-height:1}
.aen-reaction-count{background:#f1f5f9;color:var(--sp-text-2,#334155);padding:1px 8px;border-radius:20px;font:700 11px var(--sprout-font-head);min-width:22px}
.aen-reaction.is-active .aen-reaction-count{background:var(--aen-saffron,#F57C00);color:#fff}

html[data-theme="dark"] .aen-reactions{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-reactions-label{color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-reaction{background:var(--sp-ink,#0b1220);border-color:var(--sp-text-2,#334155);color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-reaction-count{background:var(--sp-border,#1e293b);color:#cbd5e1}
html[data-theme="dark"] .aen-reaction.is-active{background:linear-gradient(135deg,#3d2f0b,#2a1f05);border-color:var(--aen-saffron,#F57C00);color:#fde68a}

/* Editor moderation queue */
.aen-modq{margin:34px 0 16px;padding:20px 22px;background:#fefce8;border:1px solid #fde68a;border-radius:10px}
.aen-modq h3{margin:0 0 14px;font:800 14px var(--sprout-font-head);letter-spacing:.5px;color:#713f12;display:flex;align-items:center;gap:8px}
.aen-modq h3 small{color:#a16207;font-weight:600;font-size:12px}
.aen-modq ul{list-style:none;padding:0;margin:0}
.aen-modq-item{padding:14px;margin:10px 0;background:var(--sp-surface,#fff);border:1px solid #fde68a;border-radius:8px}
.aen-modq-item.is-approved{border-color:#bbf7d0;background:#f0fdf4}
.aen-modq-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;color:var(--sp-text-2,#334155);margin-bottom:6px}
.aen-modq-meta strong{color:var(--aen-ink)}
.aen-modq-status{font:700 11px var(--sprout-font-head);letter-spacing:.5px;padding:2px 8px;border-radius:12px;background:#fef3c7;color:#7c2d12}
.aen-modq-item.is-approved .aen-modq-status{background:#dcfce7;color:#166534}
.aen-modq-meta time{margin-left:auto;color:var(--sp-muted,#94a3b8);font-size:11px}
.aen-modq-item p{margin:6px 0 10px;color:var(--sp-text-2,#334155);font-size:14px;line-height:1.5}
.aen-modq-actions{display:flex;gap:6px;flex-wrap:wrap}
.aen-mod-btn{border:1px solid var(--sp-border,#e5e7eb);background:var(--sp-surface,#fff);color:var(--aen-ink);padding:6px 12px;border-radius:16px;font:600 12px var(--sprout-font-body);cursor:pointer;transition:all .15s}
.aen-mod-btn:hover{transform:translateY(-1px);border-color:var(--sprout-brand-primary,#FDD706)}
.aen-mod-approve{background:#dcfce7;border-color:#86efac;color:#166534}
.aen-mod-spam{background:#fee2e2;border-color:#fca5a5;color:#991b1b}
.aen-mod-trash{background:#f1f5f9;border-color:#cbd5e1;color:#475569}
.aen-mod-reply{background:#e0f2fe;border-color:#7dd3fc;color:#075985}
.aen-modq-reply-box{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.aen-modq-reply-box textarea{border:1px solid var(--sp-border,#e5e7eb);border-radius:6px;padding:8px 10px;font:14px var(--sprout-font-body);resize:vertical;min-height:56px}
.aen-modq-reply-box .aen-btn-primary{align-self:flex-start;padding:6px 14px;font-size:13px}

html[data-theme="dark"] .aen-modq{background:#2a1f05;border-color:#7c5c14}
html[data-theme="dark"] .aen-modq h3,html[data-theme="dark"] .aen-modq h3 small{color:#fde68a}
html[data-theme="dark"] .aen-modq-item{background:var(--sp-surface,#111a2f);border-color:#7c5c14}
html[data-theme="dark"] .aen-modq-item.is-approved{background:#0f2a17;border-color:#166534}
html[data-theme="dark"] .aen-modq-meta,html[data-theme="dark"] .aen-modq-item p{color:#cbd5e1}
html[data-theme="dark"] .aen-modq-meta strong{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-mod-btn{background:var(--sp-ink,#0b1220);color:var(--sp-text,#e2e8f0);border-color:var(--sp-text-2,#334155)}

/* PWA install button */
.aen-install-btn{border:1px solid var(--sprout-brand-primary,#FDD706);background:linear-gradient(135deg,#fff8e1,#fef3c7);color:var(--sprout-brand-dark,#111312);font:700 12px var(--sprout-font-head);letter-spacing:.4px;padding:7px 12px;border-radius:22px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:transform .15s,box-shadow .2s,border-color .2s,background .2s}
.aen-install-btn:hover{transform:translateY(-1px);border-color:var(--sprout-brand-primary-hover,#e4c205);box-shadow:0 6px 14px rgba(15,23,42,.16)}
.aen-install-btn:focus-visible{outline:3px solid var(--sprout-brand-dark,#111312);outline-offset:2px}
.aen-install-btn[hidden]{display:none!important}
html[data-theme="dark"] .aen-install-btn{background:linear-gradient(135deg,#3d2f0b,#2a1f05);color:#fde68a}

@media(max-width:700px){
        .aen-reactions{padding:14px 12px}
        .aen-reaction{min-width:auto;padding:8px 12px;font-size:12px}
        .aen-reaction-emoji{font-size:16px}
        .aen-modq{padding:14px}
        .aen-modq-actions{gap:5px}
        .aen-mod-btn{padding:5px 9px;font-size:11px}
        .aen-install-btn span{display:none}
        .aen-install-btn{padding:7px 9px}
        .aen-trending-list li{grid-template-columns:28px 1fr;gap:9px;padding:10px 0}
        .aen-trending-list b{font-size:16px}
        .aen-trending-list h4{font-size:13px}
}



/* ==== Location hero supporting text (State / City discovery pages) ====
   The .aen-section-hero box + h1 + eyebrow are fully restyled by the
   .sprout-location rules (P1.5); .aen-section-hero markup is only ever
   emitted inside a .sprout-location wrapper, so the generic hero rules
   that used to live here were dead and were removed in P1.6. The
   description + meta row still need their base typography. */
.aen-section-desc{margin:6px 0 14px;color:var(--sp-text-2,#334155);font-size:15px;line-height:1.55;max-width:720px}
.aen-section-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;font-size:13px;color:var(--sp-muted,#64748b)}
.aen-section-meta span{display:inline-flex;align-items:center;gap:6px}

html[data-theme="dark"] .aen-section-desc,html[data-theme="dark"] .aen-section-meta{color:var(--sp-muted,#94a3b8)}

@media(max-width:700px){
        .aen-section-desc{font-size:13px}
        .aen-section-meta{gap:6px;font-size:11px}
}

/* ==== v1.7.2 — Sticky header cluster + ticker fade ==== */

/* Wrap keeps <nav> + city-rail pinned to the viewport top while scrolling.
   The topline + main logo header + weather + ads scroll away naturally. */
.aen-sticky-cluster{position:sticky;top:0;z-index:var(--sp-z-sticky,50);background:var(--sp-surface,#fff);transition:box-shadow .2s ease}
.aen-sticky-cluster.is-stuck{box-shadow:var(--sp-shadow-2,0 6px 20px rgba(17,19,18,.09))}
.aen-sticky-cluster .aen-nav{border-bottom-width:2px}
.aen-sticky-cluster .aen-city-rail{border-bottom:1px solid var(--sp-border,#e5e7eb)}
html[data-theme="dark"] .aen-sticky-cluster{background:var(--sp-ink,#0b1220)}
html[data-theme="dark"] .aen-sticky-cluster.is-stuck{box-shadow:0 6px 18px rgba(0,0,0,.35)}

/* Ticker: keep the red BREAKING pill locked left; fade the scrolling text on the
   right edge so it visually disappears instead of hard-cutting into the frame.
   Also give the text a comfortable 20-24px breathing gap after the label. */
.aen-ticker{position:relative}
.aen-ticker-label{position:relative;z-index:3;box-shadow:2px 0 6px rgba(211,47,47,.18);margin-right:0}
/* Symmetric edge fades: with LEFT → RIGHT motion headlines ENTER on the left and
   EXIT on the right, so both edges get an equal fade + a comfortable gap after
   the red label. No padding on .aen-ticker-track — that would break the exact
   -50% loop maths; the breathing space lives on the viewport instead. */
.aen-ticker-viewport{position:relative;padding-left:22px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 34px,#000 calc(100% - 46px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 34px,#000 calc(100% - 46px),transparent 100%)}
.aen-ticker-viewport::after{content:"";position:absolute;top:0;right:0;bottom:0;width:48px;pointer-events:none;background:linear-gradient(90deg,transparent,#fff 85%);z-index:2}
.aen-ticker-viewport::before{content:"";position:absolute;top:0;left:0;bottom:0;width:40px;pointer-events:none;background:linear-gradient(90deg,#fff 55%,transparent);z-index:2}
html[data-theme="dark"] .aen-ticker-viewport::after{background:linear-gradient(90deg,transparent,var(--sp-surface,#111a2f) 85%)}
html[data-theme="dark"] .aen-ticker-viewport::before{background:linear-gradient(90deg,var(--sp-surface,#111a2f) 40%,transparent)}

/* Responsive polish */
@media(max-width:1024px){
        .aen-sticky-cluster .aen-menu li a{padding:12px 14px;font-size:14px}
}
@media(max-width:700px){
        .aen-sticky-cluster{box-shadow:0 3px 10px rgba(15,23,42,.08)}
        .aen-sticky-cluster .aen-menu li a{padding:10px 12px;font-size:13px}
        .aen-sticky-cluster .aen-city-inner{padding:6px 16px;gap:8px}
        .aen-sticky-cluster .aen-city-label{font-size:9px;letter-spacing:1.2px}
        .aen-sticky-cluster .aen-city-chips a{padding:4px 10px;font-size:11px}
        .aen-ticker-viewport::after{width:42px}
        .aen-ticker-viewport{padding-left:16px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 22px,#000 calc(100% - 40px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 22px,#000 calc(100% - 40px),transparent 100%)}
}


/* ==== v1.7.3 — Demo ad placeholders (banner / rectangle / skyscraper) ==== */
.aen-ad-demo{position:relative;display:flex;flex-direction:column;align-items:center;margin:22px auto}
.aen-ad-demo .aen-ad-label{color:var(--sp-muted,#94a3b8);letter-spacing:1.6px}
.aen-ad-demo .aen-ad-inner{display:block;padding:0;width:100%;max-width:var(--aen-ad-w);}
.aen-ad-demo-box{position:relative;width:100%;height:var(--aen-ad-h);max-width:var(--aen-ad-w);margin:0 auto;background:repeating-linear-gradient(45deg,#f8fafc 0 12px,#eef2f7 12px 24px);border:1.5px dashed #cbd5e1;border-radius:8px;display:grid;place-items:center;color:#475569;overflow:hidden;transition:border-color .2s,transform .2s}
.aen-ad-demo-box:hover{border-color:var(--sprout-brand-primary,#FDD706);transform:translateY(-2px)}
.aen-ad-demo-badge{position:absolute;top:8px;right:10px;background:var(--sp-ink,#0f172a);color:#fbbf24;font:700 10px var(--sprout-font-head);letter-spacing:.5px;padding:3px 8px;border-radius:12px;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.aen-ad-demo-body{text-align:center;padding:12px 16px;max-width:80%}
.aen-ad-demo-body b{display:block;font:800 18px var(--sprout-font-head);color:var(--aen-ink,#0F172A);letter-spacing:-.3px}
.aen-ad-demo-body small{display:block;color:var(--sp-muted,#64748b);font-size:12px;margin-top:4px;font-family:var(--sprout-font-body)}
.aen-ad-demo-body em{display:inline-block;margin-top:8px;font-family:'SF Mono',ui-monospace,monospace;font-size:10px;color:var(--sp-muted,#94a3b8);font-style:normal;background:#f1f5f9;padding:2px 8px;border-radius:10px}

/* Banner (970x90) */
.aen-ad-demo-banner .aen-ad-demo-box{background:repeating-linear-gradient(45deg,#eff6ff 0 14px,#dbeafe 14px 28px);border-color:#93c5fd}
.aen-ad-demo-banner .aen-ad-demo-body b{font-size:16px}
.aen-ad-demo-banner .aen-ad-demo-body{padding:6px 20px;display:flex;align-items:center;justify-content:center;gap:14px}
.aen-ad-demo-banner .aen-ad-demo-body small{margin-top:0}
.aen-ad-demo-banner .aen-ad-demo-body em{margin-top:0}

/* Rectangle (336x280) */
.aen-ad-demo-rectangle .aen-ad-demo-box{background:repeating-linear-gradient(45deg,#fef3c7 0 14px,#fde68a 14px 28px);border-color:#f59e0b}
.aen-ad-demo-rectangle .aen-ad-demo-body b{color:#7c2d12}

/* Vertical / skyscraper (300x600) */
.aen-ad-demo-vertical .aen-ad-demo-box{background:repeating-linear-gradient(45deg,#f0fdf4 0 14px,#dcfce7 14px 28px);border-color:#22c55e}
.aen-ad-demo-vertical .aen-ad-demo-body b{color:#065f46}
.aen-ad-demo-vertical .aen-ad-demo-box::before{content:"";position:absolute;left:0;right:0;top:14%;height:1px;background:#22c55e33}
.aen-ad-demo-vertical .aen-ad-demo-box::after{content:"";position:absolute;left:0;right:0;bottom:14%;height:1px;background:#22c55e33}

/* Dark mode demo variants */
html[data-theme="dark"] .aen-ad-demo-box{border-color:var(--sp-text-2,#334155);background:repeating-linear-gradient(45deg,var(--sp-ink,#0b1220) 0 12px,#0f172a 12px 24px)}
html[data-theme="dark"] .aen-ad-demo-body b{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-ad-demo-body small{color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-ad-demo-body em{background:var(--sp-surface,#111a2f);color:var(--sp-muted,#64748b)}
html[data-theme="dark"] .aen-ad-demo-banner .aen-ad-demo-box{background:repeating-linear-gradient(45deg,#0f1c33 0 14px,var(--sp-surface,#111a2f) 14px 28px);border-color:#1e40af}
html[data-theme="dark"] .aen-ad-demo-rectangle .aen-ad-demo-box{background:repeating-linear-gradient(45deg,#1a1305 0 14px,#221a08 14px 28px);border-color:#78350f}
html[data-theme="dark"] .aen-ad-demo-rectangle .aen-ad-demo-body b{color:#fde68a}
html[data-theme="dark"] .aen-ad-demo-vertical .aen-ad-demo-box{background:repeating-linear-gradient(45deg,#052e16 0 14px,#0f2a17 14px 28px);border-color:#166534}
html[data-theme="dark"] .aen-ad-demo-vertical .aen-ad-demo-body b{color:#86efac}

/* Slot-position tweaks */
.aen-ad-sidebar_top,.aen-ad-sidebar_bottom{margin:0 0 18px}
.aen-ad-sidebar_top .aen-ad-demo-box,.aen-ad-sidebar_bottom .aen-ad-demo-box{height:min(var(--aen-ad-h),480px)}
.aen-ad-header .aen-ad-demo-box{height:min(var(--aen-ad-h),90px)}

@media(max-width:1024px){
        .aen-ad-demo-banner .aen-ad-demo-box{height:70px}
}
@media(max-width:700px){
        .aen-ad-demo-box{height:auto!important;min-height:80px;padding:14px 12px}
        .aen-ad-demo-banner .aen-ad-demo-box{min-height:64px}
        .aen-ad-demo-vertical .aen-ad-demo-box{min-height:280px}
        .aen-ad-demo-rectangle .aen-ad-demo-box{min-height:180px}
        .aen-ad-demo-body b{font-size:15px}
        .aen-ad-demo-body small,.aen-ad-demo-body em{font-size:10px}
        .aen-ad-demo-banner .aen-ad-demo-body{flex-direction:column;gap:4px;padding:8px}
        .aen-ad-demo-badge{top:5px;right:6px;font-size:9px;padding:2px 6px}
}

/* ==== Phase 2A — branding foundation (Sprout News) ==== */
.aen-brand .custom-logo{max-width:100%;width:auto;height:auto;object-fit:contain}
.aen-footer-bottom .aen-copyright{display:flex;flex-direction:column;gap:2px}
.aen-powered-by{font-size:11px;color:var(--sp-muted,#94a3b8);letter-spacing:.2px}
.aen-powered-by a{color:inherit;text-decoration:none}
.aen-powered-by a:hover{text-decoration:underline}
html[data-theme="dark"] .aen-powered-by{color:var(--sp-muted,#64748b)}

/* ==== Phase 4 — dynamic homepage sections ==== */
.aen-home-section{margin-top:44px}
.aen-home-section:first-child{margin-top:0}
.aen-home-video{margin-top:44px}
.aen-content-columns.aen-wide{grid-template-columns:1fr}
.aen-content-columns.aen-wide .aen-rail{display:none}

/* ==== Semantic colour-token layer (--sp-*) ====
   STATIC fallback defaults. inc/branding-system.php (sprout_brand_css) re-emits
   every name below bound to the Customizer palette for light, and to a warm-
   neutral set for dark, in an inline block that loads AFTER this file and wins
   the cascade. These literals only take effect if that PHP is unavailable.
   Names that share a value here (…-2 / subtle / ink) are kept distinct so later
   phases can differentiate them without another sweep. */
:root{
	--sp-bg:#f5f5f3;--sp-surface:#ffffff;--sp-surface-2:#f5f5f3;
	--sp-ink:#111312;--sp-text:#111312;--sp-text-2:#111312;
	--sp-muted:#5b6167;--sp-subtle:#5b6167;
	--sp-border:#e4e4e2;--sp-border-2:#e4e4e2;--sp-heading:#111312;
	--sp-accent:#FDD706;--sp-accent-hover:#e4c205;--sp-on-accent:#111312;
	--sp-danger:#B90D0B;--sp-on-danger:#ffffff;
	--sp-link:#111312;--sp-link-hover:#B90D0B;
}
:root[data-theme="dark"]{
	--sp-bg:#0e100f;--sp-surface:#17191a;--sp-surface-2:#1f2221;
	--sp-ink:#0a0b0b;--sp-text:#eceded;--sp-text-2:#d7d9d9;
	--sp-muted:#a6a9ab;--sp-subtle:#8a8e90;
	--sp-border:#2c2f2f;--sp-border-2:#3a3d3d;--sp-heading:#f4f5f5;
	/* P15 Batch 1A — design-tokens.css's --sp-shadow-1/2/3 are baked from the
	   LIGHT ink colour (rgba(17,19,18,…)) and are never overridden, so cards/
	   popovers/overlays lose all elevation against these near-black surfaces.
	   Same blur/spread progression as light mode, black at higher opacity —
	   the conventional dark-UI adjustment, since a light-ink-tinted shadow
	   reads as nothing here. No border/geometry/spacing changes. */
	--sp-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.4);
	--sp-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.5);
	--sp-shadow-3: 0 20px 48px rgba(0, 0, 0, 0.6);
}
@media (prefers-color-scheme: dark){
	:root:not([data-theme="light"]){
		--sp-bg:#0e100f;--sp-surface:#17191a;--sp-surface-2:#1f2221;
		--sp-ink:#0a0b0b;--sp-text:#eceded;--sp-text-2:#d7d9d9;
		--sp-muted:#a6a9ab;--sp-subtle:#8a8e90;
		--sp-border:#2c2f2f;--sp-border-2:#3a3d3d;--sp-heading:#f4f5f5;
		--sp-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.4);
		--sp-shadow-2: 0 8px 24px rgba(0, 0, 0, 0.5);
		--sp-shadow-3: 0 20px 48px rgba(0, 0, 0, 0.6);
	}
}
.aen-home-section .aen-section-heading h2{color:var(--sp-heading)}
.aen-home-section .aen-section-heading{border-bottom-color:var(--sp-border)}
.aen-appear-label{position:absolute;left:-9999px}

/* ==== Phase 7 — single-post video facade (click to load) ==== */
.sprout-video{position:relative;width:100%;margin:25px 0;border-radius:8px;overflow:hidden;background:var(--sp-ink,#0b1220);aspect-ratio:16/9}
.sprout-video::before{content:"";display:block;padding-top:56.25%}
.sprout-video>*{position:absolute;inset:0;width:100%;height:100%;border:0}
.sprout-video .sprout-video-facade{padding:0;margin:0;background:var(--sp-ink,#0b1220);cursor:pointer;display:block}
.sprout-video .sprout-video-poster{width:100%;height:100%;object-fit:cover;display:block;opacity:.92;transition:opacity .2s}
.sprout-video .sprout-video-facade:hover .sprout-video-poster{opacity:1}
.sprout-video .sprout-video-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:50%;background:var(--aen-red,#D32F2F);color:#fff;display:grid;place-items:center;font-size:22px;box-shadow:0 8px 24px rgba(211,47,47,.5);pointer-events:none}
.sprout-video .sprout-video-facade:focus-visible{outline:3px solid var(--aen-saffron,#F57C00);outline-offset:-3px}
@supports (aspect-ratio:16/9){.sprout-video::before{display:none}}

/* Homepage Live TV (left column, post-live FIX 8) — click-to-load facade.
   The fixed 16/9 ratio means an offline channel never collapses the section or
   shows a broken iframe; before the click there is no third-party request. */
.aen-live-tv{margin-bottom:22px;border-radius:var(--sp-radius-md,8px);overflow:hidden;background:var(--sprout-brand-dark,#111312)}
.aen-live-tv-head{display:flex;align-items:center;gap:10px;padding:10px 12px;color:#fff}
.aen-live-tv-head b{font:700 14px var(--sprout-font-body);min-width:0;overflow-wrap:anywhere}
.aen-live-tv-body{position:relative}
.aen-live-tv .sprout-video-facade{position:relative;display:block;width:100%;min-height:170px;aspect-ratio:16/9;border:0;padding:0;margin:0;cursor:pointer;overflow:hidden;background:linear-gradient(135deg,#1f2220,#111312);color:#fff}
.aen-live-tv .sprout-video-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.aen-live-tv .sprout-video-facade:hover .sprout-video-poster{opacity:.62}
.aen-live-tv-play{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:54px;height:54px;border-radius:50%;background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312);display:grid;place-items:center;font-size:20px;pointer-events:none}
.aen-live-tv-hint{position:absolute;left:0;right:0;bottom:10px;text-align:center;font:600 12px var(--sprout-font-body);color:#e8e8e6;pointer-events:none}
.aen-live-tv .sprout-video-facade:focus-visible{outline:3px solid var(--sprout-brand-primary,#FDD706);outline-offset:-3px}
.aen-live-tv iframe{display:block;width:100%;aspect-ratio:16/9;border:0}

/* Live TV — OFFLINE / unavailable state. Occupies the exact same 16:9 footprint
   as the player, so switching between live and offline never shifts the layout.
   Status is conveyed by TEXT (badge word + message), not colour alone. */
.aen-live-badge--off{background:var(--sprout-brand-surface-alt,#f5f5f3);color:var(--sprout-brand-text-muted,#5b6167)}
.aen-live-badge--off .aen-live-dot-static{width:7px;height:7px;border-radius:50%;background:var(--sprout-brand-text-muted,#5b6167);display:inline-block;flex:0 0 auto}
.aen-live-tv-offline{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
	width:100%;min-height:170px;aspect-ratio:16/9;padding:20px;text-align:center;
	background:linear-gradient(135deg,#1f2220,#111312);color:#e8e8e6}
.aen-live-tv-offline .aen-live-off-badge{display:inline-block;margin-bottom:6px;padding:4px 9px;border-radius:var(--sp-radius-sm,4px);
	font:800 11px/1 var(--sprout-font-head);letter-spacing:1.6px;background:rgba(255,255,255,.12);color:#e8e8e6}
.aen-live-tv-offline .aen-live-off-title{font:800 15px/1.35 var(--sprout-font-body);color:#fff}
.aen-live-tv-offline .aen-live-off-sub{font:500 11.5px/1.5 var(--sprout-font-body);color:#b8b8b6;max-width:24em;margin-top:2px}
.aen-live-tv-offline .aen-live-off-icon{font-size:20px;line-height:0;color:#7a7f7c;margin-top:2px}
html[data-theme="dark"] .aen-live-badge--off{background:var(--sp-border,#1e293b);color:var(--sp-muted,#94a3b8)}
html[data-theme="dark"] .aen-live-badge--off .aen-live-dot-static{background:var(--sp-muted,#94a3b8)}

/* ==== Phase 8 — optional custom-content slots (Elementor-Free or block editor) ====
   All slots render inside .aen-shell, so this is only a spacing wrapper. */
.sprout-custom-part{margin:24px 0}
.sprout-custom-part--home_custom{margin:0 0 24px}
.sprout-custom-part>*:first-child{margin-top:0}
.sprout-custom-part>*:last-child{margin-bottom:0}
/* [sprout_location_banner] default <img> output */
.sprout-location-banner{display:block;width:100%;height:auto;max-width:100%;border-radius:10px}

/* =====================================================================
   Page content styling (inc/page-layout.php + page.php).
   Width & gutter come from the Phase-2 layout engine (.aen-layout--*),
   not from here — see the ":root" layout tokens near the top of this file.
   ===================================================================== */
.aen-page .aen-breadcrumb{font-size:13px;color:var(--sp-muted,var(--sp-muted,#64748b));line-height:1.7;margin:0 0 16px}
.aen-page .aen-breadcrumb a{color:inherit;text-decoration:none}
.aen-page .aen-breadcrumb a:hover{color:var(--sprout-brand-primary,#FDD706);text-decoration:underline}
.aen-page .aen-bc-sep{margin:0 6px;opacity:.55}
.aen-page-head{margin:0 0 22px}
.aen-page-head h1{font:700 30px/1.28 var(--sprout-font-head);letter-spacing:-.5px;margin:0;color:var(--sp-heading,#0f172a)}
.aen-page-head--center{text-align:center}
.aen-page-body{font-size:17px;line-height:1.85;color:var(--sp-text,#0f172a)}
.aen-page-body > *:first-child{margin-top:0}
.aen-page-body p{margin:0 0 1.15em}
.aen-page-body h2{font:700 22px/1.35 var(--sprout-font-head);margin:1.7em 0 .5em}
.aen-page-body h3{font:700 18px/1.4 var(--sprout-font-head);margin:1.4em 0 .4em}
.aen-page-body ul,.aen-page-body ol{margin:0 0 1.15em;padding-left:1.35em}
.aen-page-body li{margin:.3em 0}
.aen-page-body a{color:var(--aen-red,#D32F2F)}
.aen-page-body img{border-radius:8px}
.aen-page-pages{margin:1.5em 0;font-weight:600}
.aen-page-pages a{margin:0 6px}

/* Sidebar mode — content + --sprout-rail (2-column foundation); stacks < 1024px.
   Width of the whole block is the engine's .aen-layout--sidebar (= wide). */
.aen-layout--sidebar .aen-page-main{display:grid;grid-template-columns:minmax(0,1fr) var(--sprout-rail);gap:var(--sprout-section-gap,44px);align-items:start}
.aen-layout--sidebar.aen-page--sb-left .aen-page-main{grid-template-columns:var(--sprout-rail) minmax(0,1fr)}
.aen-layout--sidebar.aen-page--sb-left .aen-page-body{order:2}
.aen-layout--sidebar.aen-page--sb-left .aen-page-sidebar{order:1}
.aen-layout--sidebar .aen-page-body{max-width:none}
.aen-page-sidebar > *{margin-bottom:22px}
.aen-page-sidebar .aen-widget{background:var(--sp-surface,#fff);border:1px solid var(--sp-border,var(--sp-border,#e5e7eb));border-radius:10px;padding:16px}

/* News directory grid (All States / All Cities / All Categories) */
.aen-directory{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin:22px 0}
.aen-dir-card{display:block;padding:15px 16px;border:1px solid var(--sp-border,var(--sp-border,#e5e7eb));border-radius:var(--sp-radius-card,10px);background:var(--sp-surface,#fff);text-decoration:none;color:inherit;transition:border-color .2s,transform .2s,box-shadow .2s}
.aen-dir-card:hover{transform:translateY(-2px);box-shadow:var(--sp-shadow-1)}
.aen-dir-card b{display:block;font:700 16px var(--sprout-font-body)}
.aen-dir-card small{color:var(--sp-muted,var(--sp-muted,#64748b));font-size:12px}
.aen-dir-group{margin:24px 0}
.aen-dir-group > h2{font:700 18px var(--sprout-font-head);margin:0 0 12px;padding-bottom:6px;border-bottom:2px solid var(--aen-red,#D32F2F);display:inline-block}
.aen-dir-latest .aen-list-story{grid-template-columns:185px 1fr}
.aen-pagination{margin:26px 0 0;display:flex;flex-wrap:wrap;gap:6px}
.aen-pagination .page-numbers{padding:7px 12px;border:1px solid var(--sp-border,var(--sp-border,#e5e7eb));border-radius:6px;text-decoration:none;font-weight:600;font-size:14px}
.aen-pagination .current{background:var(--aen-red,#D32F2F);color:#fff;border-color:var(--aen-red,#D32F2F)}

/* footer link menu (architecture only — not a visual redesign) */
.aen-footer-menu{display:flex;flex-wrap:wrap;gap:6px 14px;list-style:none;padding:0;margin:0;font-size:13px}
.aen-footer-menu a{text-decoration:none;color:inherit;opacity:.85}
.aen-footer-menu a:hover{opacity:1}

@media(max-width:1200px){
	/* Premium refinement pass: this collapse used to fire at 1024px, but the
	   rail (var(--sprout-rail), a fixed 320px — wide enough to hold a real
	   300px ad unit) and the gap (var(--sprout-section-gap), 44px) don't
	   shrink with the container between roughly 1025-1200px, so the content
	   track was left as narrow as ~610-650px in exactly that laptop zone —
	   noticeably tighter than the theme's own 704px (--sp-w-read) reading
	   measure, for no editorial reason. Moving the SAME, already-correct
	   single-column collapse up to 1200px removes that pinch entirely
	   (root cause: a fixed-width rail against a shrinking container, not a
	   per-breakpoint issue) without inventing a new intermediate ratio or
	   touching the rail width itself (still 320px, ad-safe, above 1200px).
	   One coherent breakpoint: every main+rail layout collapses to a single
	   column at the same width (archives/search/section AND Pages; State/City
	   keep their own separate, wider-rail-aware ladder — see theme.css's P14.1
	   block, deliberately left alone here). */
	.aen-content-columns,
	.aen-layout--sidebar .aen-page-main,
	.aen-layout--sidebar.aen-page--sb-left .aen-page-main{grid-template-columns:1fr}
	.aen-layout--sidebar.aen-page--sb-left .aen-page-body{order:1}
	.aen-layout--sidebar.aen-page--sb-left .aen-page-sidebar{order:2}
}
@media(max-width:700px){
	.aen-page-head h1{font-size:24px;line-height:1.3}
	.aen-page-body{font-size:16px;line-height:1.8}
	.aen-directory{grid-template-columns:1fr 1fr;gap:10px}
	.aen-dir-latest .aen-list-story{grid-template-columns:112px 1fr}
}
@media(max-width:400px){
	.aen-directory{grid-template-columns:1fr}
}

/* =====================================================================
   Phase 1 — centralized branding tokens applied to key components.
   The --sprout-* tokens are emitted inline from Customizer → Branding
   (inc/branding-system.php). Fallback hexes here keep the site sane if
   the emitter is ever missing. Yellow (#FDD706) is used ONLY as a
   controlled accent — never as a page/section background.
   ===================================================================== */
body{
	background:var(--sprout-page-bg,var(--sprout-brand-surface-alt,#f5f5f3));
	color:var(--sprout-brand-text,#111312);
	font-family:var(--sprout-font-body,"Hind","Noto Sans Devanagari",Arial,sans-serif);
	font-size:var(--sprout-fs-base,16px);
	line-height:var(--sprout-lh-body,1.6);
}
h1,h2,h3,h4,.aen-page-head h1,.aen-section-hero h1{
	font-family:var(--sprout-font-head,"Poppins","Hind","Noto Sans Devanagari",sans-serif);
	line-height:var(--sprout-lh-head,1.3);
}

/* Brand mark tile — the one place the yellow is prominent (the logo) */
.aen-brand-mark{background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312);box-shadow:none}

/* Header */
.aen-site-header{background:var(--sprout-header-bg,#fff);border-bottom:1px solid var(--sprout-brand-border,#e4e4e2)}
.aen-brand,.aen-brand-text strong{color:var(--sprout-header-text,#111312)}
.aen-brand-text small{color:var(--sprout-brand-text-muted,#5b6167)}
.aen-icon{color:var(--sprout-header-icon,#111312)}
.aen-header-search{border-color:var(--sprout-brand-border,#e4e4e2);color:var(--sprout-brand-text-muted,#5b6167)}
.aen-header-search:hover{border-color:var(--sprout-brand-primary,#FDD706)}
.aen-header-search:focus-within{border-color:var(--sprout-brand-primary,#FDD706);outline:2px solid var(--sprout-brand-dark,#111312);outline-offset:2px}
.aen-header-search input{color:var(--sprout-brand-text,#111312)}
.aen-header-search input:focus,.aen-header-search input:focus-visible{outline:none}

/* Primary navigation — dark / clean editorial by default; yellow = active indicator only */
.aen-nav{background:var(--sprout-nav-bg,#111312);border-bottom:3px solid var(--sprout-nav-indicator,#FDD706)}
.aen-menu li a,.aen-mobile-menu-list li a{color:var(--sprout-nav-text,#e8e8e6)}
/* P21 fix: this rule used to ALSO paint the same inset box-shadow bar the
   active indicator below uses, on EVERY hover — completely independent of,
   and permanently conflicting with, whichever premium hover style
   (.sprout-nav-hover--sweep/lift/pill) is selected: an inactive item under
   Soft Sweep or Accent Dot got that style's own line/dot PLUS this legacy
   bar (a genuine double indicator this rule never accounted for), and
   Smart Lift — meant to be typography-only, no line at all — got a bar it
   was never supposed to have. Text colour on hover is legitimate and
   unrelated to the bug; only the box-shadow (the actual duplicate
   indicator) is removed here. */
.aen-menu li a:hover{color:var(--sprout-nav-hover,#fff)}
/* P21 fix: was an unconditional 3px inset bar, identical in weight to a
   thick border, showing on the active item at ALL times regardless of
   hover state or which hover style is selected — the "persistent yellow/
   orange line" this pass exists to correct. Softened to 2px (still a real,
   clearly-visible active signal, just no longer competing in weight with
   the deliberately restrained new hover styles) — selectors, colour token
   and "always visible while active" behaviour are otherwise unchanged. */
.aen-menu li.current a,
.aen-menu li.current-menu-item > a,
.aen-menu li.current_page_item > a,
.aen-menu li.current-menu-parent > a{color:var(--sprout-nav-active-text,#fff);box-shadow:inset 0 -2px 0 var(--sprout-nav-indicator,#FDD706)}
.aen-mobile-menu-list li.current-menu-item > a,
.aen-mobile-menu-list li.current_page_item > a{color:var(--sprout-nav-hover,#fff);box-shadow:inset 3px 0 0 var(--sprout-nav-indicator,#FDD706)}
.aen-mobile-menu{background:var(--sprout-nav-bg,#111312)}
.aen-mobile-menu-list li a{border-bottom:1px solid rgba(255,255,255,.08)}

/* Editions / location rail */
.aen-city-rail{background:var(--sprout-brand-surface,#fff);border-bottom:1px solid var(--sprout-brand-border,#e4e4e2)}
.aen-city-label{color:var(--sprout-brand-text-muted,#5b6167)}
.aen-city-chips a{border-color:var(--sprout-brand-border,#e4e4e2);background:var(--sprout-brand-surface,#fff);color:var(--sprout-brand-text,#111312)}
.aen-city-chips a:hover{border-color:var(--sprout-brand-dark,#111312)}
.aen-city-chips a.active{background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312);border-color:var(--sprout-brand-primary,#FDD706)}

/* Weather strip — no blue */
.aen-weather-strip{background:var(--sprout-brand-surface,#fff);border-bottom:1px solid var(--sprout-brand-border,#e4e4e2)}
.aen-weather-label,.aen-w-icon{color:var(--sprout-brand-text-muted,#5b6167)}
.aen-w-city{color:var(--sprout-brand-text,#111312)}
.aen-w-temp{color:var(--sprout-brand-dark,#111312)}
.aen-weather-chip{background:var(--sprout-brand-surface-alt,#f5f5f3);border-color:var(--sprout-brand-border,#e4e4e2)}

/* Breaking / alert ticker — red is reserved for this */
.aen-ticker{background:var(--sprout-brand-surface,#fff);border-color:var(--sprout-brand-border,#e4e4e2)}
.aen-ticker-label{background:var(--sprout-breaking-bg,#B90D0B);color:var(--sprout-breaking-text,#fff)}
.aen-ticker-track a{color:var(--sprout-brand-text,#111312)}

/* Section headings — yellow left-accent, dark title, understated "see all" */
.aen-section-heading{border-bottom-color:var(--sprout-brand-border,#e4e4e2)}
.aen-section-heading > div{border-left:3px solid var(--sprout-brand-primary,#FDD706);padding-left:10px}
.aen-section-heading h2{color:var(--sprout-brand-dark,#111312)}
.aen-eyebrow{color:var(--sprout-category-label,#111312)}
.aen-eyebrow-light{color:var(--sprout-brand-primary,#FDD706)}

/* Cards — neutral surfaces, brand colour only for hierarchy */
.aen-story-card,.aen-list-story{background:var(--sprout-card-bg,#fff);border-color:var(--sprout-card-border,#e4e4e2)}
.aen-list-story{border-bottom:1px solid var(--sprout-card-border,#e4e4e2)}
.aen-story-copy h3 a,.aen-list-story h3 a,.aen-lead .aen-story-copy h3 a{color:var(--sprout-card-title,#111312)}
.aen-story-card p,.aen-list-story p,.aen-story-copy p{color:var(--sprout-card-meta,#5b6167)}
.aen-story-tag,.aen-play-mini{background:var(--sprout-brand-dark,#111312);color:#fff}
/* Issue 5 — "अभी ट्रेंडिंग" uses the yellow + dark brand system, not alert red.
   Ranking numbers: dark brand text (yellow fails contrast on white for this
   size); leading dot: brand yellow; hover: neutral surface. */
.aen-trending b,.aen-trending-list b{color:var(--sprout-brand-dark,#111312)}
.aen-trending-now .aen-live-dot{background:var(--sprout-brand-primary,#FDD706);box-shadow:none;animation:none}
.aen-trending-list li:hover{background:linear-gradient(90deg,var(--sprout-brand-surface-alt,#f5f5f3),transparent)}
html[data-theme="dark"] .aen-trending b,
html[data-theme="dark"] .aen-trending-list b{color:var(--sprout-brand-primary,#FDD706)}
html[data-theme="dark"] .aen-trending-list li:hover{background:linear-gradient(90deg,rgba(255,255,255,.06),transparent)}

/* Directory cards (Phase 0.5) */
.aen-dir-card{background:var(--sprout-card-bg,#fff);border-color:var(--sprout-card-border,#e4e4e2)}
.aen-dir-card b{color:var(--sprout-card-title,#111312)}
.aen-dir-card small{color:var(--sprout-card-meta,#5b6167)}
.aen-dir-group > h2{border-bottom-color:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312)}
.aen-pagination .current{background:var(--sprout-brand-dark,#111312);border-color:var(--sprout-brand-dark,#111312)}

/* -------------------------------------------------------------------
   Primary / action buttons  ->  Brand Primary (the logo yellow).
   Normal = --sprout-brand-primary, dark readable text.
   Hover  = --sprout-brand-primary-hover (a darker shade of the SAME
            colour, derived in inc/branding-system.php when left blank).
   Focus  = dark outline ring (visible on the yellow face).
   Selectors match / out-specify every earlier hard-coded rule
   (.aen-search-big .aen-btn-primary, .aen-newsletter-form button, …)
   so no !important is needed.
   ------------------------------------------------------------------- */
.aen-btn-primary,
a.aen-btn-primary,
button.aen-btn-primary,
.aen-search-big .aen-btn-primary,
.aen-modq-reply-box .aen-btn-primary,
.aen-newsletter button,
.aen-newsletter-form button,
.aen-newsletter-form button[type="submit"]{
	background:var(--sprout-brand-primary,#FDD706);
	color:var(--sprout-brand-dark,#111312);
	border:1px solid var(--sprout-brand-primary,#FDD706);
}
.aen-btn-primary:hover,
a.aen-btn-primary:hover,
button.aen-btn-primary:hover,
.aen-search-big .aen-btn-primary:hover,
.aen-newsletter button:hover,
.aen-newsletter-form button:hover{
	background:var(--sprout-brand-primary-hover,#e4c205);
	border-color:var(--sprout-brand-primary-hover,#e4c205);
	color:var(--sprout-brand-dark,#111312);
}
.aen-btn-primary:focus-visible,
a.aen-btn-primary:focus-visible,
button.aen-btn-primary:focus-visible,
.aen-newsletter-form button:focus-visible{
	outline:3px solid var(--sprout-brand-dark,#111312);
	outline-offset:2px;
}

/* Selected states / highlight controls -> Brand Primary */
.aen-lang-pill .aen-lang-opt.is-active,
.aen-lang-pill .aen-lang-opt[aria-pressed="true"]{background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312)}
.aen-chip.active{background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312);border-color:var(--sprout-brand-primary,#FDD706)}
.aen-chip:hover{border-color:var(--sprout-brand-dark,#111312)}
/* "See all" is a text affordance, not a button — keep it understated (not alert-red) */
.aen-section-heading a{color:var(--sprout-brand-dark,#111312)}

/* Footer — white is the reading colour, brand yellow is only the accent
   (headings + hover). A buyer can still override via the Footer Link
   Customizer colour; the default is now a smoke white, not yellow. */
.aen-footer{background:var(--sprout-footer-bg,#111312);color:var(--sprout-footer-text,#fff)}
.aen-footer a{color:var(--sprout-footer-link,#e7e9ec)}
.aen-footer a:hover{color:var(--sprout-footer-link-hover,var(--sprout-brand-primary,#FDD706))}
.aen-footer p,.aen-footer .aen-brand-text small,.aen-copyright{color:var(--sprout-footer-text,#fff);opacity:.82}
.aen-footer-bottom{border-top:1px solid rgba(255,255,255,.12)}
.aen-footer-brand .aen-brand-mark{background:var(--sprout-brand-primary,#FDD706);color:var(--sprout-brand-dark,#111312)}

/* Newsletter block — decorative glow follows the brand accent */
.aen-newsletter:before{background:radial-gradient(circle,var(--sprout-brand-primary,#FDD706) 0%,transparent 70%);opacity:.28}
.aen-newsletter{background:var(--sprout-brand-dark,#111312)}

/* Legacy placeholder / demo-notice chrome (shown only on sparse city pages) */
.aen-placeholder-tag{background:var(--sprout-brand-dark,#111312)!important}
.aen-placeholder-banner{background:var(--sprout-brand-surface-alt,#f5f5f3);border-color:var(--sprout-brand-border,#e4e4e2);color:var(--sprout-brand-text,#111312)}
.aen-placeholder-banner span{color:var(--sprout-brand-alert,#B90D0B)}

/* Focus visibility */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--sprout-brand-secondary,#E13221);outline-offset:2px}

/* Independent mobile logo (default hidden; emitter shows it ≤600px) */
.aen-brand .sprout-has-mobile-logo{display:flex;align-items:center}
.aen-brand .sprout-has-mobile-logo .sprout-logo-mobile-link{display:none}

/* =====================================================================
   FIX 4 — tapping / clicking a card or button must not move it.
   The positional hover-lift (translateY) is genuine feedback for a fine
   pointer, but on a touch screen it fires on tap (sticky :hover) and the
   element visibly jumps. Here we neutralise ONLY that transform for coarse
   pointers and for readers who ask for reduced motion. On a mouse there is
   no :active transform anywhere, so a click never shifts the target. The
   box-shadow hover feedback and the fine-pointer hover-lift are both
   untouched. Image-scale hovers (added for the site-wide "no hover border"
   polish pass) get the same treatment as .aen-story-card's original one —
   neutralised here for the same sticky-:hover-on-tap reason, not removed. */
@media (hover:none),(prefers-reduced-motion:reduce){
	.aen-story-card:hover,.aen-compact-card:hover,.aen-list-story:hover,
	.aen-related-card:hover,.aen-youtube-card:hover,
	.aen-dir-card:hover,.aen-search-card:hover,.aen-reaction:hover,
	.aen-mod-btn:hover,.aen-install-btn:hover,.aen-ad-demo-box:hover,
	.aen-share-btn:hover,.aen-promo-row:hover,a.aen-promo-row:hover,
	.aen-post-nav a:hover{transform:none}
	.aen-story-card:hover img,
	.aen-compact-card:hover .aen-compact-thumb img,
	.aen-related-card:hover img,
	.aen-search-card:hover img,
	.aen-list-story:hover img{transform:none}
	:is(.sprout-home-layout--flagship, .sprout-location) a.aen-short:hover .aen-short__media img{transform:none}
}


/* =====================================================================
   UI icons (Phase 13; P13.2 = inline SVG, no icon font)
   sprout_icon() returns <i class="sprout-ico sprout-ico--NAME"><svg…></i>.
   The <i> is sized by font-size in each context (rules below still apply,
   they target the bare `i`); the SVG tracks that size at 1em and inherits
   colour via currentColor. No palette / hover / semantic-red change here.
   ===================================================================== */
.sprout-ico{
	display:inline-flex;align-items:center;justify-content:center;
	width:1em;height:1em;line-height:0;flex:0 0 auto;
	vertical-align:-0.125em;
}
.sprout-ico > svg{width:1em;height:1em;display:block;overflow:visible}
.aen-install-btn i{font-size:13px;line-height:1}
.aen-story-meta i,.aen-story-copy p i,.aen-list-story p i,.aen-search-card p i,
.aen-compact-copy .aen-story-meta i,.aen-related-card p i{font-size:.92em;margin-right:.3em;opacity:.85;vertical-align:-0.1em}
.aen-play i{font-size:17px;line-height:1}
.aen-play-mini i{font-size:13px;line-height:1}

/* =====================================================================
   Edition / location system (Phase 14 — full rebuild, regression audit)

   ARCHITECTURE (root-cause fixes)
   A. Oversized dropdown  → the OPEN panel is position:FIXED, placed by JS
      under the trigger and hard-capped (max-width / max-height + overflow).
      Being viewport-fixed, NO ancestor overflow / transform / stacking can
      clip it, expand it, or push layout. It is never in document flow.
   B. Nav empties on scroll → the primary nav keeps its ORIGINAL single
      horizontal scroll container (.aen-nav-inner). The selector is
      position:absolute ON TOP of it (out of the scroll flow) — it can no
      longer be a flex item that steals menu width, and .aen-menu is NOT a
      nested scroll container inside the sticky cluster. JS never focus-
      scrolls, and closes the panel on any real scroll.
   C. Weather independent of all of the above (see aen_render_weather_strip).
   Colours: existing --sprout-* tokens only. No !important, no red.
   ===================================================================== */
.aen-nav{position:relative}
/* restore the original single scroll row; reserve space for the pinned
   right-side cluster (context weather + edition selector) */
.aen-nav-inner{position:relative;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:270px}
.aen-nav-inner::-webkit-scrollbar{display:none}
/* menu keeps its intrinsic width so items never shrink/clip — the row scrolls
   inside .aen-nav-inner instead (professional overflow, no page overflow). */
.aen-nav-inner .aen-menu{width:max-content;min-width:100%;flex-wrap:nowrap}

/* Right-side nav cluster — pinned to the NON-scrolling .aen-nav and aligned to
   the .aen-shell right edge, so the menu scrolls UNDER it and is never squeezed
   by the weather. Holds: [ compact context weather ] [ edition selector ]. */
.aen-nav-aside{position:absolute;top:0;height:100%;z-index:3;display:flex;align-items:center;gap:2px;
	right:max(var(--sprout-gutter),calc((100% - var(--sprout-container)) / 2 + var(--sprout-gutter)));
	padding-left:24px;
	background:linear-gradient(90deg,rgba(17,19,18,0),var(--sprout-nav-bg,#111312) 22px)}
.aen-nav-aside .sprout-edition--desktop{position:static;height:auto;right:auto;padding-left:0;background:none}

/* compact context weather: [icon] [place] [temp°] on the dark nav */
.sprout-nav-wx{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;text-decoration:none;
	padding:6px 8px;border-radius:var(--sp-radius-sm,4px);line-height:1;
	color:var(--sprout-nav-text,#e8e8e6);font-family:var(--sprout-font-nav);font-weight:600;font-size:var(--sp-fs--1,.8125rem);transition:color var(--sp-dur) var(--sp-ease),background var(--sp-dur) var(--sp-ease)}
.sprout-nav-wx:hover{color:var(--sprout-nav-hover,#fff);background:rgba(255,255,255,.06)}
.sprout-nav-wx:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:-2px}
.sprout-nav-wx-ico{display:inline-flex;flex:0 0 auto}
.sprout-nav-wx-ico svg{width:16px;height:16px;display:block}
.sprout-nav-wx-temp{font-weight:800;color:var(--sprout-brand-primary,#FDD706)}
/* AQI — appended to the SAME weather link, same inherited font/colour (no
   new colour system, no badge/pill): a "·" separator gives it the ~10px
   visual gap from the temperature the brief asks for, everything else
   rides on .sprout-nav-wx's own existing gap:6px between inline-flex
   children. Desktop-only by construction (see sprout_render_nav_weather()
   in inc/template-helpers.php) — never printed for --mobile. */
.sprout-nav-wx-aqi{margin-left:4px;opacity:.9}
.sprout-nav-wx-aqi::before{content:"·";margin-right:6px;opacity:.6}
.sprout-nav-wx--mobile{display:none}

.sprout-edition{display:flex;align-items:center}
/* pinned to .aen-nav (non-scrolling) and aligned to the .aen-shell right edge */
.sprout-edition--desktop{position:absolute;top:0;height:100%;z-index:3;
	right:max(var(--sprout-gutter),calc((100% - var(--sprout-container)) / 2 + var(--sprout-gutter)));
	display:flex;align-items:center;padding-left:18px;
	background:linear-gradient(90deg,rgba(17,19,18,0),var(--sprout-nav-bg,#111312) 18px)}

.sprout-edition-trigger{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;cursor:pointer;
	font-family:var(--sprout-font-nav);font-weight:700;font-size:var(--sp-fs-0,.9375rem);line-height:1;color:var(--sprout-nav-text,#e8e8e6);padding:6px;white-space:nowrap;
	transition:color var(--sp-dur) var(--sp-ease)}
.sprout-edition-trigger:hover,.sprout-edition-trigger[aria-expanded="true"]{color:var(--sprout-nav-hover,#fff)}
.sprout-edition-trigger:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:-2px;border-radius:4px}
.sprout-edition-trigger i{font-size:13px;line-height:1}
/* CSS-drawn chevron (no icon font/glyph dependency) — a small square with its
   bottom-right corner border, rotated 45deg into a downward "⌄". Colour comes
   from currentColor so it follows the trigger's normal/hover/focus colour
   automatically; flex centring on .sprout-edition-trigger keeps it aligned. */
.sprout-edition-trigger .sprout-edition-caret{display:inline-block;flex:0 0 auto;
	width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;
	transform:rotate(45deg);transition:transform .15s}
.sprout-edition-trigger[aria-expanded="true"] .sprout-edition-caret{transform:rotate(225deg)}

/* OPEN panel — viewport-fixed, JS-placed, hard-capped. Cannot become a block. */
.sprout-edition-menu{position:fixed;top:0;left:0;z-index:var(--sp-z-nav-dropdown,2000);display:block;box-sizing:border-box;
	margin:0;padding:6px;list-style:none;
	width:max-content;min-width:172px;max-width:min(240px,calc(100vw - 20px));
	max-height:min(60vh,320px);overflow-y:auto;overscroll-behavior:contain;
	background:var(--sprout-brand-surface,#fff);border:1px solid var(--sprout-brand-border,#e4e4e2);
	border-radius:var(--sp-radius-md,8px);box-shadow:var(--sp-shadow-3,0 16px 40px rgba(17,19,18,.14))}
.sprout-edition-menu[hidden]{display:none}
.sprout-edition-menu li{margin:0;padding:0}
.sprout-edition-menu a{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:7px;text-decoration:none;
	font:600 13.5px var(--sprout-font-body);line-height:1.25;color:var(--sprout-brand-text,#111312);white-space:nowrap}
.sprout-edition-menu a:hover,.sprout-edition-menu a:focus-visible{background:var(--sprout-brand-surface-alt,#f5f5f3);outline:none}
.sprout-edition-menu a[aria-checked="true"]{font-weight:800}
.sprout-edition-tick{width:1em;flex:0 0 auto;text-align:center;color:var(--sprout-brand-primary,#FDD706)}
.sprout-edition-tick--empty{visibility:hidden}

/* contextual city bar — one compact row; only the chips scroll */
/* the row clips its own overflow (the dropdown panel is position:fixed, so it
   does not need an overflow-visible ancestor any more) — no page overflow. */
.sprout-context-bar .aen-city-inner{overflow:hidden;position:relative}
.sprout-context-bar .aen-city-label{text-decoration:none;transition:color .15s;flex:0 0 auto}
.sprout-context-bar a.aen-city-label:hover{color:var(--sprout-brand-dark,#111312)}
.sprout-context-bar .sprout-context-state.active{color:var(--sprout-brand-dark,#111312)}
.sprout-context-bar .aen-city-chips{flex:0 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.sprout-context-bar .aen-city-chips::-webkit-scrollbar{display:none}
.sprout-edition--mobile{display:none}

/* graceful empty weather state — keeps the row + heading, no fake values */
.aen-weather-empty{font:600 13px var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167)}

html[data-theme="dark"] .sprout-edition-menu{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .sprout-edition-menu a{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .sprout-edition-menu a:hover,
html[data-theme="dark"] .sprout-edition-menu a:focus-visible{background:#1a2540}

/* ---- LIVE TV heads the homepage right rail (Issue 4) ---- */
.aen-home-col--right .aen-live-block{margin-bottom:26px}
.aen-home-col--right .aen-live-block:last-child{margin-bottom:0}
.aen-home-col--right .aen-live-card{margin:0}
.aen-home-col--right .aen-live-tv{margin:0}

@media(max-width:1280px){
	/* smaller desktops: drop the place name, keep [icon][temp] so the cluster
	   stays compact and the menu keeps its scroll room */
	.aen-nav-aside .sprout-nav-wx-city{display:none}
	/* AQI's category word ("Moderate"/"मध्यम") is the first thing to go —
	   same "drop the wordier part, keep the number" idea as the place-name
	   rule just above — so News Desk/Compact settle on a plain "AQI 82". */
	.aen-nav-aside .sprout-nav-wx-aqi-cat{display:none}
	.aen-nav-inner{padding-right:200px}
}
@media(max-width:1024px){
	.aen-nav-aside{padding-left:16px}
	.aen-nav-inner{padding-right:176px}
}
@media(max-width:700px){
	/* .aen-nav (and the desktop weather + selector inside it) is display:none here;
	   the mobile copies ride on the contextual city bar instead */
	.aen-nav-inner{padding-right:0}
	.sprout-edition--mobile{display:flex;position:static;flex:0 0 auto;margin-left:6px}
	.sprout-edition--mobile .sprout-edition-trigger{color:var(--sprout-brand-text,#111312);padding:4px 2px 4px 6px;font-size:13px}
	html[data-theme="dark"] .sprout-edition--mobile .sprout-edition-trigger{color:var(--sp-text,#e2e8f0)}
	.sprout-nav-wx--mobile{display:inline-flex;flex:0 0 auto;margin-left:4px;
		color:var(--sprout-brand-text,#111312);font-size:12px;padding:4px 6px;gap:5px}
	.sprout-nav-wx--mobile .sprout-nav-wx-ico svg{width:14px;height:14px}
	.sprout-nav-wx--mobile .sprout-nav-wx-temp{color:var(--sprout-brand-dark,#111312)}
	.sprout-nav-wx--mobile:hover{background:transparent;color:var(--sprout-brand-dark,#111312)}
	html[data-theme="dark"] .sprout-nav-wx--mobile{color:var(--sp-text,#e2e8f0)}
	html[data-theme="dark"] .sprout-nav-wx--mobile .sprout-nav-wx-temp{color:var(--sp-text,#e2e8f0)}
}
@media(max-width:400px){
	/* tightest phones: icon + temp only */
	.sprout-nav-wx--mobile .sprout-nav-wx-city{display:none}
}

/* =====================================================================
   Single-post comments — professional editorial section.
   Root cause fixed: the theme had NO comments.php (comment_form() fell
   through to WordPress core's bare theme-compat default — cols="45"
   narrow textarea, native submit, run-together "logged in as" text) and
   NO comment CSS. The new comments.php + this block give it the Amar
   Ekta design; every WordPress comment behaviour (threading, moderation,
   reply.js, hooks, pagination, submission) is untouched. Brand tokens
   only, no new !important.
   ===================================================================== */
.aen-comments{margin:44px 0 8px;padding-top:34px;border-top:1px solid var(--sprout-brand-border,#e4e4e2)}
.aen-comments-title{font:800 21px/1.3 var(--sprout-font-head);letter-spacing:-.3px;margin:0 0 22px;color:var(--sprout-brand-dark,#111312)}
.aen-comments-closed{font:600 13px var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167);margin:18px 0 26px}

/* comment list */
.aen-comment-list{list-style:none;margin:0 0 40px;padding:0}
.aen-comment-list li.comment{margin:0 0 4px}
.aen-comment-list .comment-body{padding:16px 0;border-bottom:1px solid var(--sprout-brand-border,#e4e4e2)}
.aen-comment-list .children{list-style:none;margin:0 0 0 clamp(14px,4vw,40px);padding:0;border-left:2px solid var(--sprout-brand-border,#e4e4e2)}
.aen-comment-list .children .comment-body{padding-left:18px}
.aen-comment-list .comment-author{display:flex;align-items:center;gap:10px;margin:0 0 6px}
.aen-comment-list .comment-author .avatar{width:40px;height:40px;border-radius:50%;flex:0 0 auto}
.aen-comment-list .comment-author .fn{font:700 14px var(--sprout-font-body);font-style:normal;color:var(--sprout-brand-dark,#111312)}
.aen-comment-list .comment-author .fn a{color:inherit;text-decoration:none}
.aen-comment-list .comment-author .fn a:hover{text-decoration:underline}
.aen-comment-list .comment-author .says{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.aen-comment-list .comment-metadata{font:400 12px var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167);margin:0 0 8px}
.aen-comment-list .comment-metadata a{color:inherit;text-decoration:none}
.aen-comment-list .comment-metadata a:hover{color:var(--sprout-brand-dark,#111312)}
.aen-comment-list .comment-metadata .edit-link{margin-left:8px}
.aen-comment-list .comment-content{font:400 15px/1.66 var(--sprout-font-body);color:var(--sprout-brand-text,#111312)}
.aen-comment-list .comment-content > *:first-child{margin-top:0}
.aen-comment-list .comment-content > *:last-child{margin-bottom:0}
.aen-comment-list .comment-content p{margin:0 0 .8em}
.aen-comment-list .comment-awaiting-moderation{display:inline-block;font:600 12px var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167);margin:0 0 6px}
.aen-comment-list .comment.bypostauthor > .comment-body .fn::after{content:"";display:inline-block;width:6px;height:6px;margin-left:7px;border-radius:50%;background:var(--sprout-brand-primary,#FDD706);vertical-align:middle}
.aen-comment-list .reply{margin:10px 0 0}
.aen-comments .comment-reply-link{display:inline-flex;align-items:center;gap:6px;font:700 11px var(--sprout-font-head);letter-spacing:.6px;text-transform:uppercase;
	color:var(--sprout-brand-dark,#111312);text-decoration:none;background:transparent;
	border:1px solid var(--sprout-brand-border,#e4e4e2);border-radius:20px;padding:5px 13px;transition:border-color .15s,background .15s}
.aen-comments .comment-reply-link:hover{border-color:var(--sprout-brand-dark,#111312);background:var(--sprout-brand-surface-alt,#f5f5f3)}
.aen-comments .comment-reply-link:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:2px}
.aen-comment-nav{display:flex;justify-content:space-between;gap:14px;margin:0 0 26px;font:600 13px var(--sprout-font-body)}
.aen-comment-nav a{color:var(--sprout-brand-dark,#111312);text-decoration:none}
.aen-comment-nav a:hover{text-decoration:underline}
.aen-comment-nav .nav-previous{margin-right:auto}
.aen-comment-nav .nav-next{margin-left:auto}

/* respond / form */
.aen-comments .comment-respond,.aen-comments #respond{margin:0}
.aen-comments .comment-reply-title{font:800 18px/1.35 var(--sprout-font-head);letter-spacing:-.2px;color:var(--sprout-brand-dark,#111312);margin:0 0 16px}
.aen-comments .comment-reply-title small{font:400 13px var(--sprout-font-body);margin-left:12px;letter-spacing:0}
.aen-comments .comment-reply-title small a{color:var(--sprout-brand-text-muted,#5b6167)}
.aen-comments .comment-form{display:flex;flex-direction:column;gap:16px;max-width:100%}
.aen-comments .logged-in-as{order:-1;margin:0;font:400 13px/1.6 var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167);
	background:var(--sprout-brand-surface-alt,#f5f5f3);border:1px solid var(--sprout-brand-border,#e4e4e2);border-radius:8px;padding:11px 14px}
.aen-comments .logged-in-as .aen-lia-link{color:var(--sprout-brand-dark,#111312);font-weight:600;text-decoration:none}
.aen-comments .logged-in-as .aen-lia-link:hover{text-decoration:underline}
.aen-comments .logged-in-as .aen-lia-link:focus-visible{outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:2px;border-radius:3px}
.aen-comments .logged-in-as .aen-lia-sep{margin:0 6px;opacity:.5}
.aen-comments .comment-notes,.aen-comments .form-allowed-tags{margin:0;font:400 12px/1.55 var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167)}
.aen-comments .comment-form-comment,
.aen-comments .comment-form-author,
.aen-comments .comment-form-email,
.aen-comments .comment-form-url{margin:0;display:flex;flex-direction:column;gap:8px}
.aen-comments .comment-form label{font:700 13px var(--sprout-font-body);color:var(--sprout-brand-dark,#111312)}
.aen-comments .comment-form .required{color:var(--sprout-brand-dark,#111312);font-weight:800}
.aen-comments .comment-form input[type="text"],
.aen-comments .comment-form input[type="email"],
.aen-comments .comment-form input[type="url"],
.aen-comments .comment-form textarea{
	width:100%;box-sizing:border-box;display:block;
	border:1px solid var(--sprout-brand-border,#e4e4e2);border-radius:8px;
	background:var(--sprout-brand-surface,#fff);color:var(--sprout-brand-text,#111312);
	font:400 15px/1.6 var(--sprout-font-body);padding:12px 14px;transition:border-color .15s}
.aen-comments .comment-form textarea{min-height:150px;max-height:60vh;resize:vertical}
.aen-comments .comment-form input:focus,
.aen-comments .comment-form textarea:focus,
.aen-comments .comment-form input:focus-visible,
.aen-comments .comment-form textarea:focus-visible{
	outline:2px solid var(--sprout-brand-primary,#FDD706);outline-offset:1px;
	border-color:var(--sprout-brand-primary,#FDD706)}
.aen-comments .comment-form-cookies-consent{flex-direction:row;align-items:flex-start;gap:9px;font:400 13px/1.5 var(--sprout-font-body);color:var(--sprout-brand-text-muted,#5b6167)}
.aen-comments .comment-form-cookies-consent input{width:auto;margin:2px 0 0;flex:0 0 auto}
.aen-comments .form-submit{margin:4px 0 0}
.aen-comments .form-submit .submit{padding:12px 24px;border-radius:6px;font:700 15px var(--sprout-font-body);cursor:pointer}
.aen-comments .form-submit .submit[disabled],
.aen-comments .form-submit .submit.disabled{opacity:.6;cursor:progress}

/* dark mode */
html[data-theme="dark"] .aen-comments{border-top-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-comments-title,
html[data-theme="dark"] .aen-comment-list .comment-author .fn,
html[data-theme="dark"] .aen-comment-list .comment-content,
html[data-theme="dark"] .aen-comments .comment-reply-title,
html[data-theme="dark"] .aen-comments .comment-form label{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-comment-list .comment-body,
html[data-theme="dark"] .aen-comment-list .children{border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-comments .comment-form input,
html[data-theme="dark"] .aen-comments .comment-form textarea{background:var(--sp-ink,#0b1220);color:var(--sp-text,#e2e8f0);border-color:var(--sp-text-2,#334155)}
html[data-theme="dark"] .aen-comments .logged-in-as{background:var(--sp-surface,#111a2f);border-color:var(--sp-border,#1e293b)}
html[data-theme="dark"] .aen-comments .logged-in-as .aen-lia-link{color:var(--sp-text,#e2e8f0)}
html[data-theme="dark"] .aen-comments .comment-reply-link,
html[data-theme="dark"] .aen-comment-nav a{color:var(--sp-text,#e2e8f0);border-color:var(--sp-text-2,#334155)}
html[data-theme="dark"] .aen-comments .comment-reply-link:hover{background:#1a2540}

@media(max-width:700px){
	.aen-comments{margin-top:34px;padding-top:26px}
	.aen-comments-title{font-size:19px}
	.aen-comment-list .children{margin-left:12px}
	.aen-comment-list .children .comment-body{padding-left:14px}
	.aen-comments .comment-form textarea{min-height:132px}
	.aen-comment-nav{flex-wrap:wrap}
}

/* =====================================================================
   Single-POST two-column editorial layout  +  Page Layout Customizer
   front-end proof hook / measure control.
   ===================================================================== */

/* ---- Single post: main article column + reused news sidebar ----
   Scoped to .aen-single (set only in single.php). Does NOT affect
   page.php (.aen-page), page-templates/city-page.php (.aen-article),
   the archives (.aen-content-columns) or the homepage. */
.aen-shell.aen-single{max-width:var(--sprout-container)}
.aen-single-grid{
	display:grid;
	grid-template-columns:minmax(0,1fr) var(--sprout-rail);
	gap:var(--sprout-section-gap);
	align-items:start;
}
.aen-single-primary{min-width:0}          /* text column may shrink inside the grid track */
.aen-single-primary > *{min-width:0}
.aen-single-rail{min-width:0}
.aen-single-rail .aen-rail{margin-top:0}  /* rail top aligns with the article top */

/* Tablet / small desktop — one clean column, article first, sidebar below.
   Moved from 1024px to 1200px — see the matching .aen-content-columns
   collapse comment (theme.css, generic archive/pages rule) for the full
   root-cause explanation: the fixed 320px rail + 44px gap left the primary
   reading column as narrow as ~610-650px between roughly 1025-1200px,
   noticeably tighter than the article's own 704px reading measure. */
@media(max-width:1200px){
	.aen-single-grid{grid-template-columns:1fr;gap:0}
	.aen-single-rail{margin-top:44px}
}
@media(max-width:700px){
	.aen-single-rail{margin-top:32px}
}

/* ---- Page Layout Customizer: <body> proof hook + cache-proof backstop ----
   inc/page-layout.php adds  aen-plc-<layout>  and  aen-pcw-<width>  to <body>
   for singular Pages served by page.php. These rules mirror the
   .aen-shell.aen-layout--* width rules (no !important) so page width still
   resolves from the saved setting even if a cache serves a stale wrapper. */
body.aen-plc-standard .aen-shell.aen-page{max-width:var(--sprout-w-standard)}
body.aen-plc-wide     .aen-shell.aen-page{max-width:var(--sprout-w-wide)}
body.aen-plc-full     .aen-shell.aen-page{max-width:none;margin-inline:0;padding-inline:var(--sprout-gutter-full)}
body.aen-pcw-narrow      .aen-shell.aen-page{--sprout-w-standard:680px}
body.aen-pcw-comfortable .aen-shell.aen-page{--sprout-w-standard:860px}

/* ---- Content Width also takes effect in "Standard with Sidebar" ----
   There the shell width is fixed by the grid, not by --sprout-w-standard, so
   Content Width instead caps the reading measure of the page copy. */
.aen-layout--sidebar .aen-page-body{max-width:720px}
.aen-layout--sidebar.aen-page--cw-narrow .aen-page-body{max-width:620px}
.aen-layout--sidebar.aen-page--cw-comfortable .aen-page-body{max-width:820px}

/* ==== P1.3 — Flagship homepage ===============================================
   One coherent zone system over the Phase 3/4 homepage markup. Restyles the
   existing .aen-* homepage classes to the P1.1 token scale (no class swap).
   Scoped to .sprout-home (front-page.php wrapper); loads last so equal-
   specificity rules here win. Revert = delete this block.
   ========================================================================== */

/* --- Zone rhythm --- */
.sprout-home > * + *{margin-top:var(--sp-7,3rem)}
.sprout-home > .aen-ticker + *{margin-top:var(--sp-5,1.5rem)}
/* One deliberate editorial break (hairline + a single measured gap) between
   the identity strap, the stage and the lower feed — NOT margin + equal
   padding stacked, which was reading as a ~130px chasm on desktop. */
.sprout-home .sprout-home-identity + .aen-home-top,
.sprout-home .aen-home-top + .aen-content-columns{
	margin-top:var(--sp-7,3rem);padding-top:var(--sp-6,2rem);
	border-top:1px solid var(--sp-border);
}

/* --- Card link reset + shared surface --- */
.sprout-home a.aen-story-card,
.sprout-home a.aen-list-story{display:block;text-decoration:none;color:inherit}
.sprout-home a.aen-compact-card{display:flex;text-decoration:none;color:inherit}
.sprout-home .aen-compact-card,
.sprout-home .aen-list-story{
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);
	background:var(--sp-surface);box-shadow:none;
	transition:border-color var(--sp-dur) var(--sp-ease),box-shadow var(--sp-dur) var(--sp-ease);
}
.sprout-home .aen-compact-card:hover,
.sprout-home .aen-list-story:hover{transform:none;box-shadow:none}
.sprout-home .aen-story-card:hover{transform:none;box-shadow:none}
.sprout-home .aen-story-card:hover .aen-image-wrap img{transform:none}

/* --- Eyebrow / kicker (restrained) --- */
.sprout-home .aen-eyebrow,
.sprout-home-identity .sprout-kicker,
.sprout-home-identity--plain .sprout-kicker{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sp-muted);
	display:block;margin-bottom:var(--sp-1,.25rem);
}

/* --- ZONE 1: LEAD dominance --- */
.sprout-home .aen-home-top{grid-template-columns:minmax(170px,.85fr) minmax(0,2.5fr) minmax(200px,1fr);gap:var(--sp-6,2rem);align-items:start;margin-bottom:0}
.sprout-home .aen-home-top--no-left{grid-template-columns:minmax(0,2.6fr) minmax(220px,1fr)}
.sprout-home .aen-home-top--no-right{grid-template-columns:minmax(190px,1fr) minmax(0,2.8fr)}
.sprout-home .aen-home-top--no-left.aen-home-top--no-right{grid-template-columns:minmax(0,1fr)}
.sprout-home .aen-lead{border:0;border-radius:0;background:transparent;overflow:visible}
.sprout-home .aen-lead .aen-image-wrap{height:auto;aspect-ratio:var(--sp-ar-hero,16/9);border-radius:var(--sp-radius-sm,4px);overflow:hidden}
.sprout-home .aen-lead .aen-story-copy{padding:var(--sp-4,1rem) 0 0}
.sprout-home .aen-lead .aen-story-copy h3{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem));line-height:var(--sp-lh-tight,1.15);
	letter-spacing:-.02em;margin:0 0 var(--sp-2,.5rem);color:var(--sp-heading);
}
.sprout-home a.aen-lead:hover .aen-story-copy h3{color:var(--sp-link-hover)}
.sprout-home .aen-lead-excerpt{color:var(--sp-muted);font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-normal,1.55);margin:0 0 var(--sp-2,.5rem)}
.sprout-home .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}
.sprout-home .aen-story-tag{background:var(--sp-danger);color:var(--sp-on-danger);border-radius:var(--sp-radius-sm,4px);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:.02em;padding:4px 10px}
.sprout-home .aen-lead-supporting{gap:var(--sp-4,1rem);margin-top:var(--sp-5,1.5rem)}

/* --- Compact cards --- */
.sprout-home .aen-compact-card{gap:var(--sp-3,.75rem);margin-bottom:var(--sp-3,.75rem);overflow:hidden}
.sprout-home .aen-compact-thumb{flex:0 0 40%;max-width:132px;aspect-ratio:var(--sp-ar-thumb,4/3);height:auto}
.sprout-home .aen-lead-supporting .aen-compact-card{flex-direction:column;border:1px solid var(--sp-border)}
.sprout-home .aen-lead-supporting .aen-compact-thumb{flex:none;max-width:none;width:100%;aspect-ratio:var(--sp-ar-card,3/2)}
.sprout-home .aen-compact-copy{padding:var(--sp-3,.75rem)}
.sprout-home .aen-compact-copy h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-snug,1.3);margin:0 0 var(--sp-2,.5rem);color:var(--sp-heading)}
.sprout-home a.aen-compact-card:hover .aen-compact-copy h3{color:var(--sp-link-hover)}

/* --- Top News (subordinate list) --- */
.sprout-home .aen-topnews-list li{padding:0;border-bottom:1px solid var(--sp-border);cursor:auto}
.sprout-home .aen-topnews-list li:last-child{border-bottom:0}
.sprout-home .aen-topnews-list a{display:flex;gap:var(--sp-3,.75rem);align-items:baseline;padding:var(--sp-3,.75rem) 0;color:var(--sp-text);text-decoration:none}
.sprout-home .aen-topnews-list a:hover{color:var(--sp-link-hover)}
.sprout-home .aen-topnews-list b{color:var(--sp-accent);font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-0,.9375rem);flex:0 0 auto;line-height:1.35}
.sprout-home .aen-topnews-list span{font-family:var(--sprout-font-head);font-weight:600;font-size:var(--sp-fs-0,.9375rem);line-height:var(--sp-lh-snug,1.3);overflow-wrap:anywhere}

/* --- ZONE 2: local-identity band --- */
.sprout-home-identity{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3,.75rem) var(--sp-5,1.5rem);padding:var(--sp-4,1rem) 0}
.sprout-home-identity__lead{display:flex;align-items:baseline;gap:var(--sp-2,.5rem) var(--sp-3,.75rem);flex-wrap:wrap;flex:0 0 auto}
.sprout-home-identity__place{font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-3,1.375rem);letter-spacing:-.01em;color:var(--sp-heading);text-decoration:none}
a.sprout-home-identity__place:hover{color:var(--sp-link-hover)}
.sprout-home-identity__tag{font-size:var(--sp-fs-0,.9375rem);color:var(--sp-muted)}
.sprout-home-identity__cities{display:flex;gap:var(--sp-2,.5rem);flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
.sprout-home-identity__cities::-webkit-scrollbar{display:none}
.sprout-home-identity__cities a{flex:none;border:1px solid var(--sp-border);border-radius:var(--sp-radius-pill,999px);padding:5px 12px;font-family:var(--sprout-font-body);font-weight:600;font-size:var(--sp-fs--1,.8125rem);color:var(--sp-text);text-decoration:none;white-space:nowrap;transition:border-color var(--sp-dur) var(--sp-ease)}
.sprout-home-identity__cities a:hover{border-color:var(--sp-accent)}
.sprout-home-identity--plain{border:0;padding:0}
.sprout-home-identity--plain h1{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-4,clamp(1.375rem,1.15rem + 1vw,1.75rem));line-height:var(--sp-lh-tight,1.15);color:var(--sp-heading);margin:var(--sp-1,.25rem) 0 0;letter-spacing:-.01em}

/* --- ZONE 3: feed headings + list cards --- */
.sprout-home .aen-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4,1rem);border-bottom:2px solid var(--sp-heading);padding-bottom:var(--sp-2,.5rem);margin-bottom:var(--sp-4,1rem)}
.sprout-home .aen-section-heading > div{border-left:0;padding-left:0}
.sprout-home .aen-section-heading h2{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-3,1.375rem);line-height:var(--sp-lh-tight,1.15);letter-spacing:-.01em;color:var(--sp-heading);margin:0}
.sprout-home .aen-section-heading a{flex:none;font-size:var(--sp-fs--1,.8125rem);font-weight:600;color:var(--sp-link-hover);text-decoration:none;white-space:nowrap}
.sprout-home .aen-section-heading a:hover{text-decoration:underline}
/* --- Zone identity: the generic State / City / Category sections share one
   card language and spacing, but a restrained, token-only accent per kind
   (keyed off the data-testid inc/homepage.php already emits) keeps four
   consecutive sections from reading as one copy-pasted stream. City is left
   as the default heading color (the automatic, majority case); State takes
   the brand accent; Category takes the existing danger red already used for
   topic eyebrows elsewhere. No new colors, no new markup. */
.sprout-home .aen-home-section[data-testid^="home-section-state-"] .aen-section-heading{border-bottom-color:var(--sp-accent)}
.sprout-home .aen-home-section[data-testid^="home-section-category-"] .aen-section-heading{border-bottom-color:var(--sp-danger)}
/* NOTE — rail-width parity (plan item, deliberately NOT changed): the top
   newsroom band's rails resolve to ~229px inside the shared 1180px container,
   while the lower feed's rail uses the site-wide --sprout-rail token (320px).
   Narrowing the lower rail to match would risk clipping/overflowing the
   sidebar_top/sidebar_bottom ad slots this rail renders (standard ad units
   are commonly ~300px wide) — a real functional regression for a purely
   cosmetic gain, and this pass does not touch ad rendering. Left as-is;
   flagged in the completion report as a manual call for the site owner. */
.sprout-home .aen-content-columns{gap:var(--sp-7,3rem);margin-top:0}
.sprout-home .aen-home-section{margin-top:0}
.sprout-home .aen-home-section + .aen-home-section{margin-top:var(--sp-7,3rem)}
.sprout-home .aen-latest-list .aen-list-story{grid-template-columns:200px 1fr;gap:var(--sp-4,1rem);align-items:start;padding:var(--sp-3,.75rem);margin-bottom:var(--sp-3,.75rem);border-radius:var(--sp-radius-sm,4px)}
.sprout-home .aen-list-story img{width:100%;height:auto;aspect-ratio:var(--sp-ar-card,3/2);border-radius:var(--sp-radius-sm,4px);object-fit:cover}
.sprout-home .aen-list-story h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2,1.1875rem);line-height:var(--sp-lh-snug,1.3);margin:var(--sp-1,.25rem) 0 var(--sp-2,.5rem);color:var(--sp-heading)}
.sprout-home a.aen-list-story:hover h3{color:var(--sp-link-hover)}
.sprout-home .aen-list-story p{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

/* --- P13.2: the lower feed (Latest + every State / City / Category band, all 3
       homepage layouts) was a stack of rows whose .aen-list-story falls back to
       display:block, so on desktop the thumbnail blew up to a ~800px-tall
       image. It is now a balanced CARD GRID: 3-up from 1200px, 2-up on tablet,
       and only below 768px does it return to the original single-column
       rows. --- */
@media(min-width:701px){
	.sprout-home .aen-latest-list{
		display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
		gap:var(--sp-6,2rem) var(--sp-5,1.5rem);
	}
	.sprout-home .aen-latest-list .aen-list-story{
		display:block;padding:0;margin:0;border:0;border-radius:0;
		background:transparent;align-self:start;
	}
	.sprout-home .aen-latest-list .aen-list-story img{aspect-ratio:16/9;margin:0 0 var(--sp-3,.75rem)}
	.sprout-home .aen-latest-list .aen-list-story h3{font-size:var(--sp-fs-1,1.0625rem);margin:0 0 var(--sp-1,.25rem)}
}
@media(min-width:1200px){
	.sprout-home .aen-latest-list{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* --- ZONE 3: sticky rail + widget cards --- */
.sprout-home .aen-content-columns .aen-rail{position:sticky;top:var(--sp-5,1.5rem);align-self:start}
.sprout-home .aen-rail > * + *{margin-top:var(--sp-5,1.5rem)}
.sprout-home .aen-rail .aen-widget,
.sprout-home .aen-rail .aen-trending-now,
.sprout-home .aen-sidebar-widgets > *{background:var(--sp-surface);border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);padding:var(--sp-4,1rem)}
.sprout-home .aen-rail .aen-widget-title,
.sprout-home .aen-rail .aen-trending-now .aen-widget-title{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem)}

/* --- ZONE 4: WATCH surface --- */
.sprout-home .sprout-home-watch{background:var(--sp-ink);border-radius:var(--sp-radius-md,8px);padding:var(--sp-6,2rem);margin-top:var(--sp-section,3.5rem)}
.sprout-home .sprout-home-watch .aen-section-heading{border-bottom-color:rgba(255,255,255,.16)}
.sprout-home .sprout-home-watch .aen-section-heading h2{color:#fff}
.sprout-home .sprout-home-watch .aen-section-heading a{color:var(--sp-accent)}
.sprout-home .sprout-home-watch .aen-youtube-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-4,1rem)}
.sprout-home .sprout-home-watch .aen-youtube-card{border:1px solid rgba(255,255,255,.1);border-radius:var(--sp-radius-sm,4px)}
.sprout-home .sprout-home-watch .aen-youtube-card img{height:clamp(140px,13vw,180px)}

/* --- Newsletter zone (flat) --- */
.sprout-home .aen-newsletter{margin:var(--sp-section,3.5rem) 0 0;background:var(--sp-ink);border-radius:var(--sp-radius-md,8px);padding:var(--sp-7,3rem)}
.sprout-home .aen-newsletter::before{display:none}

/* =========================================================================
   P23 — Newsletter: homepage-only composition refinement.

   SCOPE: every rule here is qualified by .homepage-section--newsletter, the
   class inc/homepage.php's 'newsletter' block already adds only to THIS one
   instance (see sprout_home_render()). The generic ".aen-newsletter-inner"
   rules above (unscoped, ~line 886/891) — and their own ≤960px stack
   breakpoint — are left completely untouched, so the footer newsletter
   variant and any [newsletter] shortcode usage elsewhere are unaffected.

   MARKUP: unchanged. template-parts/newsletter.php already splits the
   section into .aen-newsletter-copy (eyebrow + heading + supporting text)
   and .aen-newsletter-form (the existing 3-field form: name, email, city +
   submit) as two sibling divs inside .aen-newsletter-inner — exactly the
   "TEXT + FORM" shape asked for. No PHP change was needed. Form action,
   method, fields, nonce, names and the success-state branch are all
   byte-for-byte unchanged; only spacing/breakpoint/typography around them.
   ====================================================================== */
.sprout-home .aen-newsletter.homepage-section--newsletter .aen-newsletter-copy h2{
	font-weight:800;
}
@media(min-width:701px){
	/* Keep the text+form pair side by side down to 701px (the breakpoint
	   convention used across the rest of this redesign), instead of the
	   generic component's own ≤960px stack — avoids stacking (and the extra
	   vertical height that implies) earlier than the other redesigned
	   sections do. */
	.sprout-home .aen-newsletter.homepage-section--newsletter .aen-newsletter-inner{
		grid-template-columns:1.1fr 1fr;gap:var(--sp-6,2rem);
	}
}
@media(max-width:700px){
	.sprout-home .aen-newsletter.homepage-section--newsletter .aen-newsletter-inner{
		grid-template-columns:1fr;gap:var(--sp-5,1.5rem);
	}
}

/* --- Dark parity --- */
html[data-theme="dark"] .sprout-home .sprout-home-watch,
html[data-theme="dark"] .sprout-home .aen-newsletter{background:#000}

/* --- Tablet --- */
@media(max-width:1024px){
	/* Root-cause fix: the universal zone gap (.sprout-home > * + *) only ever
	   had a desktop step (3rem/48px) and a mobile step (2rem/32px, at 700px
	   below) — tablet fell through to the desktop value with none of the
	   desktop's extra horizontal room to justify it. This is the gap State
	   Network and India Network actually use between their identity strap
	   and their lead zone (.sprout-brief / .sprout-stream have no bespoke
	   override for it, unlike City First's own .aen-newsroom rule below),
	   so at tablet it was reading as excess whitespace there specifically.
	   Takes the same reduced step as mobile rather than inventing a third,
	   in-between value. */
	.sprout-home > * + *{margin-top:var(--sp-6,2rem)}
	.sprout-home .aen-home-top,
	.sprout-home .aen-home-top--no-left,
	.sprout-home .aen-home-top--no-right{grid-template-columns:minmax(0,2fr) minmax(200px,1fr);gap:var(--sp-5,1.5rem)}
	.sprout-home .aen-home-top--no-left.aen-home-top--no-right{grid-template-columns:1fr}
	.sprout-home .aen-home-col--center{grid-column:1;order:1}
	.sprout-home .aen-home-col--right{grid-column:2;order:2}
	.sprout-home .aen-home-col--left{grid-column:1/-1;order:3;margin-top:var(--sp-5,1.5rem)}
	.sprout-home .aen-home-col--left .aen-topnews-list{columns:2;column-gap:var(--sp-6,2rem)}
	.sprout-home .sprout-home-watch .aen-youtube-grid{grid-template-columns:repeat(2,1fr)}
}
/* Paired with the .aen-content-columns collapse point (moved to 1200px — see
   that rule's comment): the rail must stop being position:sticky at the exact
   same width its grid becomes a single column, or it floats oddly over the
   tail of the stacked content above it in between. */
@media(max-width:1200px){
	.sprout-home .aen-content-columns .aen-rail{position:static}
}

/* --- Mobile --- */
@media(max-width:700px){
	.sprout-home > * + *{margin-top:var(--sp-6,2rem)}
	.sprout-home .sprout-home-identity + .aen-home-top,
	.sprout-home .aen-home-top + .aen-content-columns{margin-top:var(--sp-6,2rem);padding-top:var(--sp-5,1.5rem)}
	.sprout-home .aen-home-top{display:flex;flex-direction:column;gap:var(--sp-6,2rem)}
	.sprout-home .aen-home-col--center{order:1}
	.sprout-home .aen-home-col--right{order:2}
	.sprout-home .aen-home-col--left{order:3;margin-top:0}
	.sprout-home .aen-home-col--left .aen-topnews-list{columns:1}
	.sprout-home .aen-lead .aen-story-copy h3{font-size:var(--sp-fs-4,clamp(1.375rem,1.15rem + 1vw,1.75rem))}
	.sprout-home .aen-lead-supporting{grid-template-columns:1fr 1fr;gap:var(--sp-3,.75rem)}
	.sprout-home .aen-latest-list .aen-list-story{grid-template-columns:118px 1fr;gap:var(--sp-3,.75rem);padding:var(--sp-2,.5rem)}
	.sprout-home .aen-list-story img{aspect-ratio:var(--sp-ar-thumb,4/3)}
	.sprout-home .aen-list-story h3{font-size:var(--sp-fs-1,1.0625rem)}
	.sprout-home-identity{flex-direction:column;align-items:stretch}
	.sprout-home .sprout-home-watch,.sprout-home .aen-newsletter{padding:var(--sp-5,1.5rem)}
	.sprout-home .sprout-home-watch .aen-youtube-grid{grid-template-columns:1fr 1fr}
}

/* ==== P1.4 — Premium article page ===========================================
   Scoped to .sprout-article (single.php only). Restyles the existing
   .aen-article* / .aen-share* / .aen-related* / .aen-author-box* / rail classes
   to the P1.1 token scale + P1.2/P1.3 language. Loads last so equal-specificity
   rules here win. Reading elements are held to a Devanagari-comfortable measure;
   discovery blocks span the full column. Revert = delete this block.
   ========================================================================== */
.sprout-article{--sp-w-read:44rem}

/* --- Reading-measure column (discovery + prev/next stay full width) --- */
.sprout-article .aen-article-breadcrumb,
.sprout-article .aen-article-main,
.sprout-article .sprout-lang-fallback,
.sprout-article .aen-reactions,
.sprout-article .aen-comments{max-width:var(--sp-w-read);}

/* --- Section rhythm down the primary column --- */
.sprout-article .aen-single-primary > * + *{margin-top:var(--sp-6,2rem)}
.sprout-article .aen-article-main > * + *{margin-top:var(--sp-5,1.5rem)}

/* --- Reactions belong to the reading moment, not the bottom of the page.
   DOM/render order (and anything that keys off it — analytics, moderation)
   is untouched; this only repositions it visually, right after the article
   and ahead of the related/discovery footer, via flex order. Every sibling
   here sets margin-TOP only (never margin-bottom, confirmed above/below),
   so the `> * + *` DOM-order margin rules keep producing the exact same
   gaps regardless of visual order. */
.sprout-article .aen-single-primary{display:flex;flex-direction:column}
.sprout-article .aen-article-breadcrumb{order:1}
.sprout-article .aen-article-main{order:2}
.sprout-article .aen-reactions{order:3}
.sprout-article .aen-related,
.sprout-article .aen-more-block,
.sprout-article .aen-post-nav{order:4}
.sprout-article .aen-comments{order:5}
.sprout-article .aen-modq{order:6}

/* --- Breadcrumb --- */
.sprout-article .aen-article-breadcrumb{font-size:var(--sp-fs--1,.8125rem);line-height:1.6;color:var(--sp-muted);margin:0 0 var(--sp-4,1rem)}
.sprout-article .aen-article-breadcrumb a:hover{color:var(--sp-link-hover)}

/* --- Editorial header --- */
.sprout-article .aen-article-head{margin:0 0 var(--sp-5,1.5rem);padding-bottom:var(--sp-4,1rem);border-bottom:1px solid var(--sp-border)}
.sprout-article .aen-article-kicker{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);gap:var(--sp-2,.5rem) var(--sp-3,.75rem);margin:0 0 var(--sp-3,.75rem)}
.sprout-article .aen-article-cat{color:var(--sp-danger)}
.sprout-article .aen-article-loc{color:var(--sp-muted)}
.sprout-article .aen-article h1{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-6,clamp(1.875rem,1.35rem + 2.6vw,2.875rem));
	line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;
	color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem);text-wrap:balance;overflow-wrap:anywhere;
}
/* P15 Batch 1A — the rule above targets `.aen-article`, a class that is not
   present on the <article> element (`aen-article-main`) in any of the three
   article bodies, so it never matches. Editorial Focus (P3.5) and Magazine
   Story (P3.6) already carry their own correctly-targeted `.aen-article-main
   h1` override elsewhere in this file (same token values). This is the same
   fix for Standard — the DEFAULT layout, which had no such override — using
   the exact values the shared rule above already documents. Additive only;
   does not change the shared rule or Focus/Magazine's own overrides. */
.sprout-article-layout--standard .sprout-article .aen-article-main h1{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-6,clamp(1.875rem,1.35rem + 2.6vw,2.875rem));
	line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;
	color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem);text-wrap:balance;overflow-wrap:anywhere;
}
.sprout-article .aen-article-dek{
	font-family:var(--sprout-font-body);font-weight:400;
	font-size:var(--sp-fs-2,1.1875rem);line-height:var(--sp-lh-normal,1.55);
	color:var(--sp-muted);margin:0 0 var(--sp-4,1rem);
}

/* --- Byline + meta line --- */
.sprout-article .aen-article-topmeta{flex-direction:column;align-items:flex-start;gap:var(--sp-3,.75rem);margin:0;padding:0;border:0}
.sprout-article .aen-byline{gap:var(--sp-3,.75rem)}
.sprout-article .aen-byline-avatar{width:44px;height:44px}
.sprout-article .aen-byline-body b{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);color:var(--sp-heading)}
.sprout-article .aen-byline-body small{color:var(--sp-muted);font-weight:600;letter-spacing:0;text-transform:none;font-size:var(--sp-fs--1,.8125rem)}
.sprout-article .aen-byline-body em{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}
.sprout-article .aen-article-metaline{
	width:100%;text-align:left;flex-wrap:wrap;gap:var(--sp-1,.25rem) var(--sp-4,1rem);
	padding-top:var(--sp-3,.75rem);border-top:1px solid var(--sp-border);
	font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted);
}
.sprout-article .aen-article-time,.sprout-article .aen-article-updated,.sprout-article .aen-article-readtime{color:inherit;font-size:inherit}

/* --- Field reporter dateline --- */
.sprout-article .aen-field-line{background:var(--sp-surface-2);border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);color:var(--sp-text-2);font-size:var(--sp-fs--1,.8125rem);padding:var(--sp-3,.75rem) var(--sp-4,1rem)}
.sprout-article .aen-field-line em{color:var(--sp-heading)}
.sprout-article .aen-field-line a{color:var(--sp-link-hover)}

/* --- Featured media --- */
.sprout-article .aen-article-figure{margin:0}
.sprout-article .aen-article-image{width:100%;height:auto;max-height:none;border-radius:var(--sp-radius-sm,4px)}
.sprout-article .aen-article-caption{font-size:var(--sp-fs--1,.8125rem);line-height:1.5;color:var(--sp-muted);margin:var(--sp-2,.5rem) 0 0;padding:0}
.sprout-article .sprout-video{border-radius:var(--sp-radius-sm,4px)}

/* --- Bilingual notice --- */
.sprout-article .sprout-lang-fallback{border-radius:var(--sp-radius-sm,4px);font-size:var(--sp-fs--1,.8125rem)}

/* --- Reading body: Devanagari-first --- */
.sprout-article .aen-article-body{
	font-family:var(--sprout-font-body);font-size:var(--sp-fs-1,1.0625rem);
	line-height:var(--sp-lh-relaxed,1.8);color:var(--sp-text);
}
.sprout-article .aen-article-body > p:first-child{font-size:var(--sp-fs-2,1.1875rem);line-height:1.65;font-weight:400;color:var(--sp-text)}
.sprout-article .aen-article-body p{margin:0 0 1.2em}
.sprout-article .aen-article-body h2{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-4,clamp(1.375rem,1.15rem + 1vw,1.75rem));line-height:var(--sp-lh-snug,1.3);color:var(--sp-heading);margin:1.8em 0 .5em;letter-spacing:-.01em}
.sprout-article .aen-article-body h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-3,1.375rem);line-height:var(--sp-lh-snug,1.3);color:var(--sp-heading);margin:1.5em 0 .4em}
.sprout-article .aen-article-body ul,.sprout-article .aen-article-body ol{margin:0 0 1.2em;padding-left:1.3em}
.sprout-article .aen-article-body li{margin:.4em 0}
.sprout-article .aen-article-body li::marker{color:var(--sp-muted)}
.sprout-article .aen-article-body img,
.sprout-article .aen-article-body figure{margin:1.6em 0;border-radius:var(--sp-radius-sm,4px)}
.sprout-article .aen-article-body figure img{margin:0}
.sprout-article .aen-article-body figcaption{font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted);margin-top:var(--sp-2,.5rem);line-height:1.5}
.sprout-article .aen-article-body blockquote{
	border-left:3px solid var(--sp-accent);background:none;border-radius:0;
	margin:1.6em 0;padding:.2em 0 .2em 1.1em;
	font-size:var(--sp-fs-2,1.1875rem);line-height:1.6;font-style:normal;color:var(--sp-heading);
}
.sprout-article .aen-article-body blockquote p:last-child{margin-bottom:0}
.sprout-article .aen-article-body a{color:var(--sp-link-hover);text-decoration:underline;text-underline-offset:2px}
.sprout-article .aen-article-body table th,.sprout-article .aen-article-body table td{border:1px solid var(--sp-border);padding:.5em .75em;text-align:left}
.sprout-article .aen-article-body table th{background:var(--sp-surface-2);font-weight:700}

/* --- In-body / boundary ads: clear space, contained --- */
.sprout-article .aen-article-body .aen-ad,
.sprout-article > .aen-single-grid .aen-ad,
.sprout-article .aen-article-main > .aen-ad{margin-block:var(--sp-6,2rem)}

/* --- Tags --- */
.sprout-article .aen-article-tags{margin-top:var(--sp-5,1.5rem);font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted)}
.sprout-article .aen-article-tags a{color:var(--sp-text-2);text-decoration:none}
.sprout-article .aen-article-tags a:hover{color:var(--sp-link-hover)}

/* --- Share row: flat --- */
.sprout-article .aen-share{border-bottom:0;border-top:1px solid var(--sp-border);padding:var(--sp-4,1rem) 0 0;margin:var(--sp-5,1.5rem) 0 0;gap:var(--sp-2,.5rem)}
.sprout-article .aen-share-label{font-family:var(--sprout-font-head);font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);color:var(--sp-muted)}
.sprout-article .aen-share-btn{min-height:44px;border-radius:var(--sp-radius-sm,4px);border-color:var(--sp-border);background:var(--sp-surface);color:var(--sp-text);font-family:var(--sprout-font-body);font-size:var(--sp-fs--1,.8125rem)}
.sprout-article .aen-share-btn:hover{transform:none;border-color:var(--sp-heading)}

/* --- Author box --- */
.sprout-article .aen-author-box{border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);padding:var(--sp-5,1.5rem);margin:var(--sp-6,2rem) 0 0;gap:var(--sp-4,1rem)}
.sprout-article .aen-author-head h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2,1.1875rem);color:var(--sp-heading)}
.sprout-article .aen-author-role{background:var(--sp-surface-2);color:var(--sp-muted);border:1px solid var(--sp-border);font-family:var(--sprout-font-head);font-weight:700;letter-spacing:.04em}
.sprout-article .aen-author-tagline{color:var(--sp-muted);font-style:normal}
.sprout-article .aen-author-bio{color:var(--sp-text-2);font-size:var(--sp-fs-0,.9375rem);line-height:var(--sp-lh-normal,1.55)}
.sprout-article .aen-author-meta{font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted)}
.sprout-article .aen-author-meta a{color:var(--sp-link-hover)}

/* --- Discovery footer (spans the full primary column) --- */
.sprout-article .aen-related,.sprout-article .aen-more-block{margin:var(--sp-7,3rem) 0 0}
.sprout-article .aen-related .aen-section-heading,
.sprout-article .aen-more-block .aen-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4,1rem);border-bottom:2px solid var(--sp-heading);padding-bottom:var(--sp-2,.5rem);margin-bottom:var(--sp-4,1rem)}
.sprout-article .aen-related .aen-section-heading > div,
.sprout-article .aen-more-block .aen-section-heading > div{border-left:0;padding-left:0}
.sprout-article .aen-related .aen-section-heading h2,
.sprout-article .aen-more-block .aen-section-heading h2{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-3,1.375rem);line-height:var(--sp-lh-tight,1.15);letter-spacing:-.01em;color:var(--sp-heading);margin:0}
.sprout-article .aen-related .aen-section-heading a,
.sprout-article .aen-more-block .aen-section-heading a{flex:none;font-size:var(--sp-fs--1,.8125rem);font-weight:600;color:var(--sp-link-hover);text-decoration:none}
.sprout-article .aen-related-grid{gap:var(--sp-4,1rem)}
.sprout-article .aen-related-card{border:1px solid var(--sp-border);border-radius:var(--sp-radius-card,10px);box-shadow:none}
.sprout-article .aen-related-card:hover{transform:none;box-shadow:none}
.sprout-article .aen-related-card img{width:100%;height:auto;aspect-ratio:var(--sp-ar-card,3/2);object-fit:cover}
.sprout-article .aen-related-card h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-snug,1.3);color:var(--sp-heading)}
.sprout-article .aen-related-card .aen-eyebrow{color:var(--sp-muted);font-family:var(--sprout-font-head);letter-spacing:var(--sp-tracking-eyebrow,.09em)}

/* --- Prev / Next --- */
.sprout-article .aen-post-nav{margin:var(--sp-7,3rem) 0 0;gap:var(--sp-4,1rem)}
.sprout-article .aen-post-nav a{border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);padding:var(--sp-4,1rem)}
.sprout-article .aen-post-nav a:hover{transform:none;box-shadow:var(--sp-shadow-1)}
.sprout-article .aen-post-nav-dir{font-family:var(--sprout-font-head);color:var(--sp-muted);letter-spacing:var(--sp-tracking-eyebrow,.09em)}
.sprout-article .aen-post-nav-title{font-family:var(--sprout-font-head);color:var(--sp-heading)}

/* --- Reactions --- */
.sprout-article .aen-reactions{border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);padding:var(--sp-5,1.5rem);margin:var(--sp-7,3rem) 0 0}
.sprout-article .aen-reactions-label{font-family:var(--sprout-font-head);color:var(--sp-muted);letter-spacing:var(--sp-tracking-eyebrow,.09em)}

/* --- Comments --- */
.sprout-article .aen-comments{margin:var(--sp-7,3rem) 0 0;padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border)}

/* --- Sticky rail + widget cards --- */
.sprout-article .aen-single-rail .aen-rail{position:sticky;top:var(--sp-5,1.5rem);align-self:start}
.sprout-article .aen-single-rail .aen-rail > * + *{margin-top:var(--sp-5,1.5rem)}
.sprout-article .aen-single-rail .aen-widget,
.sprout-article .aen-single-rail .aen-trending-now,
.sprout-article .aen-single-rail .aen-sidebar-widgets > *{background:var(--sp-surface);border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);padding:var(--sp-4,1rem)}
.sprout-article .aen-single-rail .aen-widget-title{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem)}

/* --- Dark parity --- */
html[data-theme="dark"] .sprout-article .aen-article-body blockquote{color:var(--sp-heading)}
html[data-theme="dark"] .sprout-article .aen-author-role{background:var(--sp-surface-2);color:var(--sp-muted);border-color:var(--sp-border)}
html[data-theme="dark"] .sprout-article .aen-field-line em{color:var(--sp-text)}

/* --- Tablet: rail de-stickies (grid already single-column <=1200 — moved
   from 1024, paired with .aen-single-grid's own collapse point above) --- */
@media(max-width:1200px){
	.sprout-article .aen-single-rail .aen-rail{position:static}
	.sprout-article .aen-related-grid{grid-template-columns:repeat(3,1fr)}
}

/* --- Mobile --- */
@media(max-width:700px){
	.sprout-article .aen-article-breadcrumb,
	.sprout-article .aen-article-main,
	.sprout-article .sprout-lang-fallback,
	.sprout-article .aen-reactions,
	.sprout-article .aen-comments{max-width:none}
	.sprout-article .aen-single-primary > * + *{margin-top:var(--sp-6,2rem)}
	.sprout-article .aen-article h1{font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem))}
	/* P15 Batch 1A — mobile counterpart of the Standard h1 fix above; mirrors
	   the same mobile step already applied for Focus/Magazine. */
	.sprout-article-layout--standard .sprout-article .aen-article-main h1{font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem))}
	.sprout-article .aen-article-dek{font-size:var(--sp-fs-1,1.0625rem)}
	.sprout-article .aen-article-body{font-size:1rem;line-height:1.8}
	.sprout-article .aen-article-body > p:first-child{font-size:var(--sp-fs-1,1.0625rem)}
	.sprout-article .aen-article-figure{margin-inline:calc(var(--sprout-gutter-mobile,16px) * -1)}
	.sprout-article .aen-article-image{border-radius:0}
	.sprout-article .aen-article-caption{padding-inline:var(--sprout-gutter-mobile,16px)}
	.sprout-article .aen-article-metaline{gap:var(--sp-1,.25rem) var(--sp-3,.75rem)}
	.sprout-article .aen-related-grid{grid-template-columns:1fr}
	.sprout-article .aen-related-card img{aspect-ratio:var(--sp-ar-hero,16/9)}
	.sprout-article .aen-post-nav{grid-template-columns:1fr}
}

/* ==== P1.5 — Archive / Category / State / City visual polish ==================
   Brings the P1.1 token scale + P1.3 card/heading/rail language to the
   category archive (.sprout-archive) and the dynamic State/City pages
   (.sprout-location — already on sprout-state.php / sprout-city.php / the
   legacy city-page shim). Comma-grouped where a component is shared, so there
   is no duplicate selector system. Loads last; scoped; revert = delete block.
   ========================================================================== */

/* --- Column layout + rhythm (shared) --- */
.sprout-archive .aen-content-columns,
.sprout-location .aen-content-columns{gap:var(--sp-7,3rem);margin-top:var(--sp-6,2rem)}
.sprout-location > .aen-loc-hero,
.sprout-location > .aen-loc-cities,
.sprout-location > .aen-media-panel,
.sprout-location > .aen-home-section{margin-top:var(--sp-section,3.5rem)}
.sprout-location > .aen-loc-hero{margin-top:var(--sp-5,1.5rem)}

/* --- Card link reset (parts + templates now emit real <a>) --- */
.sprout-archive a.aen-list-story,
.sprout-location a.aen-list-story,
.sprout-archive a.aen-story-card,
.sprout-location a.aen-story-card,
.sprout-location a.aen-video-feature{display:block;text-decoration:none;color:inherit}

/* --- Shared section heading -> kicker + hairline (match P1.3/P1.4) --- */
.sprout-archive .aen-section-heading,
.sprout-location .aen-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4,1rem);border-bottom:2px solid var(--sp-heading);padding-bottom:var(--sp-2,.5rem);margin-bottom:var(--sp-4,1rem)}
.sprout-archive .aen-section-heading > div,
.sprout-location .aen-section-heading > div{border-left:0;padding-left:0}
.sprout-archive .aen-section-heading h2,
.sprout-location .aen-section-heading h2{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-3,1.375rem);line-height:var(--sp-lh-tight,1.15);letter-spacing:-.01em;color:var(--sp-heading);margin:0}
.sprout-archive .aen-section-heading a,
.sprout-location .aen-section-heading a{flex:none;font-size:var(--sp-fs--1,.8125rem);font-weight:600;color:var(--sp-link-hover);text-decoration:none;white-space:nowrap}
.sprout-archive .aen-section-heading .aen-eyebrow,
.sprout-location .aen-section-heading .aen-eyebrow{font-family:var(--sprout-font-head);font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);color:var(--sp-muted)}

/* --- Shared list cards -> token surface + aspect-ratio image --- */
.sprout-archive .aen-latest-list .aen-list-story,
.sprout-location .aen-latest-list .aen-list-story{grid-template-columns:200px 1fr;gap:var(--sp-4,1rem);align-items:start;padding:var(--sp-3,.75rem);margin-bottom:var(--sp-3,.75rem);border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);box-shadow:none;transition:border-color var(--sp-dur) var(--sp-ease),box-shadow var(--sp-dur) var(--sp-ease)}
.sprout-archive .aen-list-story:hover,
.sprout-location .aen-list-story:hover{transform:none;box-shadow:none}
.sprout-archive .aen-list-story img,
.sprout-location .aen-list-story img{width:100%;height:auto;aspect-ratio:var(--sp-ar-card,3/2);border-radius:var(--sp-radius-sm,4px);object-fit:cover}
.sprout-archive .aen-list-story h3,
.sprout-location .aen-list-story h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2,1.1875rem);line-height:var(--sp-lh-snug,1.3);margin:var(--sp-1,.25rem) 0 var(--sp-2,.5rem);color:var(--sp-heading)}
.sprout-archive a.aen-list-story:hover h3,
.sprout-location a.aen-list-story:hover h3{color:var(--sp-link-hover)}
.sprout-archive .aen-list-story p,
.sprout-location .aen-list-story p{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);line-height:1.5}
.sprout-archive .aen-list-story .aen-eyebrow,
.sprout-location .aen-list-story .aen-eyebrow{font-family:var(--sprout-font-head);letter-spacing:var(--sp-tracking-eyebrow,.09em);color:var(--sp-muted)}

/* --- Shared lead card (archive first story + location hero lead) --- */
.sprout-archive .aen-archive-lead,
.sprout-location .aen-loc-hero .aen-lead{display:block;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;margin-bottom:var(--sp-6,2rem)}
.sprout-archive .aen-archive-lead:hover,
.sprout-location .aen-loc-hero .aen-lead:hover{box-shadow:none;transform:none}
.sprout-archive .aen-archive-lead .aen-image-wrap,
.sprout-location .aen-loc-hero .aen-lead .aen-image-wrap{height:auto;aspect-ratio:var(--sp-ar-hero,16/9);border-radius:var(--sp-radius-sm,4px);overflow:hidden}
.sprout-archive .aen-archive-lead:hover .aen-image-wrap img,
.sprout-location .aen-loc-hero .aen-lead:hover .aen-image-wrap img{transform:none}
.sprout-archive .aen-archive-lead .aen-story-copy,
.sprout-location .aen-loc-hero .aen-lead .aen-story-copy{padding:var(--sp-4,1rem) 0 0}
.sprout-archive .aen-archive-lead .aen-story-copy h3,
.sprout-location .aen-loc-hero .aen-lead .aen-story-copy h3{font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem));line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;color:var(--sp-heading);margin:0 0 var(--sp-2,.5rem);text-wrap:balance;overflow-wrap:anywhere}
.sprout-archive a.aen-archive-lead:hover .aen-story-copy h3,
.sprout-location a.aen-lead:hover .aen-story-copy h3{color:var(--sp-link-hover)}
.sprout-archive .aen-archive-lead .aen-lead-excerpt,
.sprout-location .aen-loc-hero .aen-lead .aen-lead-excerpt{color:var(--sp-muted);font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-normal,1.55);margin:0 0 var(--sp-2,.5rem)}
.sprout-archive .aen-archive-lead .aen-story-meta,
.sprout-location .aen-loc-hero .aen-lead .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}
.sprout-archive .aen-archive-lead .aen-story-tag,
.sprout-location .aen-loc-hero .aen-lead .aen-story-tag{background:var(--sp-danger);color:var(--sp-on-danger);border-radius:var(--sp-radius-sm,4px);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:.02em;padding:4px 10px}

/* --- Archive header --- */
.sprout-archive .aen-archive-header{border-bottom:1px solid var(--sp-border);padding:0 0 var(--sp-4,1rem);margin-bottom:var(--sp-6,2rem)}
.sprout-archive .aen-archive-eyebrow{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sp-muted);margin-bottom:var(--sp-2,.5rem)}
.sprout-archive .aen-archive-header h1{font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem));line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;color:var(--sp-heading);margin:0;text-wrap:balance;overflow-wrap:anywhere}
.sprout-archive .aen-archive-desc{margin:var(--sp-3,.75rem) 0 0;color:var(--sp-muted);font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-normal,1.55);max-width:44rem}

/* --- Location hero — regional hub identity --- */
.sprout-location .aen-section-hero{padding:0 0 var(--sp-4,1rem);border-radius:0;border-bottom:1px solid var(--sp-border);margin:var(--sp-2,.5rem) 0 0;background:none}
.sprout-location .aen-section-hero .aen-eyebrow{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sp-muted);margin-bottom:var(--sp-2,.5rem)}
.sprout-location .aen-section-hero .aen-eyebrow a{color:var(--sp-link-hover);text-decoration:none}
.sprout-location .aen-section-hero .aen-eyebrow a:hover{text-decoration:underline}
.sprout-location .aen-section-hero h1{font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-6,clamp(1.875rem,1.35rem + 2.6vw,2.875rem));line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;color:var(--sp-heading);margin:0;text-wrap:balance;overflow-wrap:anywhere}
.sprout-location .aen-section-desc{margin:var(--sp-3,.75rem) 0 0;color:var(--sp-muted);font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-normal,1.55);max-width:44rem}
.sprout-location .aen-section-meta{margin-top:var(--sp-3,.75rem);gap:var(--sp-2,.5rem);font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted)}
.sprout-location .aen-section-meta span{border:1px solid var(--sp-border);border-radius:var(--sp-radius-pill,999px);padding:3px 10px}

/* --- State: cities rail sits right under the hero as the State->City link --- */
.sprout-location .aen-section-hero + .aen-city-rail{margin-top:var(--sp-4,1rem);border-radius:var(--sp-radius-sm,4px)}

/* --- Location hero grid + side cards --- */
.sprout-location .aen-loc-hero{gap:var(--sp-6,2rem);margin:0}
.sprout-location .aen-loc-hero-side{gap:var(--sp-4,1rem)}

/* --- Cities directory (State page) --- */
.sprout-location .aen-directory{gap:var(--sp-3,.75rem);margin:0}
.sprout-location .aen-dir-card{border:1px solid var(--sp-border);border-radius:var(--sp-radius-card,10px);background:var(--sp-surface);padding:var(--sp-4,1rem);transition:border-color var(--sp-dur) var(--sp-ease),box-shadow var(--sp-dur) var(--sp-ease)}
.sprout-location .aen-dir-card:hover{transform:none;box-shadow:var(--sp-shadow-1)}
.sprout-location .aen-dir-card b{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);color:var(--sp-heading)}
.sprout-location .aen-dir-card small{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

/* (P14.1) The old "Latest 5" rail list styling was removed with the markup —
   the rail now renders sprout_location_discovery() (.aen-loc-discover), styled
   in the P14.1 block below. This also retired the accent-yellow-on-white
   numeral contrast issue flagged in the P14 audit. */

/* --- Video panel --- */
.sprout-location .aen-media-panel{margin-top:var(--sp-section,3.5rem)}
.sprout-location .aen-video-feature{min-height:0;aspect-ratio:var(--sp-ar-hero,16/9);border-radius:var(--sp-radius-sm,4px)}
.sprout-location .aen-video-feature img{height:100%;aspect-ratio:auto}
.sprout-location .aen-video-feature h3{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2,1.1875rem);line-height:var(--sp-lh-snug,1.3)}
.sprout-location .aen-video-feature .aen-play{background:var(--sp-accent);color:var(--sp-on-accent);box-shadow:none}

/* --- Sidebar: sticky + widget cards (match P1.3/P1.4) --- */
.sprout-archive .aen-content-columns .aen-rail,
.sprout-location .aen-content-columns .aen-rail{position:sticky;top:var(--sp-5,1.5rem);align-self:start}
.sprout-archive .aen-rail > * + *,
.sprout-location .aen-rail > * + *{margin-top:var(--sp-5,1.5rem)}
.sprout-archive .aen-rail .aen-widget,
.sprout-archive .aen-rail .aen-trending-now,
.sprout-location .aen-rail .aen-widget,
.sprout-location .aen-rail .aen-trending-now{background:var(--sp-surface);border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);padding:var(--sp-4,1rem)}
.sprout-archive .aen-rail .aen-widget-title,
.sprout-location .aen-rail .aen-widget-title{font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem)}

/* --- Empty state --- */
.sprout-archive .aen-empty,
.sprout-location .aen-empty{border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);color:var(--sp-muted);padding:var(--sp-7,3rem) var(--sp-5,1.5rem)}

/* --- Dark parity --- */
html[data-theme="dark"] .sprout-location .aen-section-hero,
html[data-theme="dark"] .sprout-archive .aen-archive-header{border-bottom-color:var(--sp-border)}
html[data-theme="dark"] .sprout-location .aen-video-feature .aen-play{background:var(--sp-accent);color:var(--sp-on-accent)}

/* --- Tablet --- */
/* Archive paired with its .aen-content-columns collapse point (moved to
   1200px — see that rule's comment); Location keeps its own separate,
   already-correct 1023px ladder (P14.1 block) and is intentionally left at
   1024px here, unchanged. */
@media(max-width:1200px){
	.sprout-archive .aen-content-columns .aen-rail{position:static}
}
@media(max-width:1024px){
	.sprout-location .aen-content-columns .aen-rail{position:static}
}

/* --- Mobile --- */
@media(max-width:700px){
	.sprout-archive .aen-content-columns,
	.sprout-location .aen-content-columns{margin-top:var(--sp-6,2rem)}
	.sprout-archive .aen-archive-header h1,
	.sprout-location .aen-section-hero h1{font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem))}
	.sprout-archive .aen-archive-lead .aen-story-copy h3,
	.sprout-location .aen-loc-hero .aen-lead .aen-story-copy h3{font-size:var(--sp-fs-4,clamp(1.375rem,1.15rem + 1vw,1.75rem))}
	.sprout-archive .aen-latest-list .aen-list-story,
	.sprout-location .aen-latest-list .aen-list-story{grid-template-columns:118px 1fr;gap:var(--sp-3,.75rem);padding:var(--sp-2,.5rem)}
	.sprout-archive .aen-list-story img,
	.sprout-location .aen-list-story img{aspect-ratio:var(--sp-ar-thumb,4/3)}
	.sprout-archive .aen-list-story h3,
	.sprout-location .aen-list-story h3{font-size:var(--sp-fs-1,1.0625rem)}
	.sprout-archive .aen-list-story p,
	.sprout-location .aen-list-story p{display:none}
	.sprout-location .aen-directory{grid-template-columns:1fr 1fr}
}


/* =====================================================================
   P14.1 — PREMIUM REGIONAL NETWORK  (State + City frontend)

   ONE consolidated visual system for .sprout-location. Loads after the
   P1.5 .sprout-location block so it wins on cascade order; every rule is
   scoped to .sprout-location (or the layout-specific briefing class) so
   the homepage, article and archive surfaces are untouched. Architecture
   (routing, query, pagination, $seen, layouts) is unchanged — this is
   presentation only.

   Breakpoint ladder (one stack, no competing sets):
     base            desktop        >=1200
     max-width:1199  laptop/tablet transition
     max-width:1023  tablet         (rail drops below, hero 1-col)
     max-width:700   mobile
     max-width:520   small mobile
   ===================================================================== */

/* --- 1. Container + vertical rhythm ---------------------------------- */
.aen-shell.sprout-location{max-width:min(1320px,92vw)}
.sprout-location .aen-city-rail .aen-shell,
.sprout-location .aen-city-inner.aen-shell{max-width:min(1320px,92vw)}
.sprout-location > .aen-loc-identity,
.sprout-location > .aen-loc-hero,
.sprout-location > .aen-loc-cities,
.sprout-location > .aen-content-columns,
.sprout-location > .aen-media-panel,
.sprout-location > .aen-home-section,
.sprout-location > .aen-newsletter{margin-top:var(--sp-section,3.5rem)}
.sprout-location > .aen-loc-identity{margin-top:var(--sp-4,1rem)}
.sprout-location > .aen-loc-hero{margin-top:var(--sp-6,2rem)}

/* Composition pass — tighter page-composition rhythm between District Pulse /
   the Cities directory / More State News on State ONLY (Video already has
   its own tighter rule above in "11. Video panel"; Short Videos keeps its
   own dedicated 3.5rem so it still reads as a clear break before the media
   sections). City is unaffected — this only ever matches .sprout-state. */
.sprout-location.sprout-state > .aen-loc-cities,
.sprout-location.sprout-state > .aen-home-section{margin-top:var(--sp-6,2rem)}

/* --- 2. Identity band ---------------------------------------------------
   A compact horizontal band. Banner variant = image strip beside the copy;
   tinted variant (no configured banner) = a restrained token gradient, no
   fabricated photography. The <h1> Hindi name is always the dominant plain
   text element, never inside decorative imagery. */
.sprout-location .aen-loc-identity{
	display:grid;grid-template-columns:minmax(0,1fr);gap:0;
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-md,8px);
	overflow:hidden;background:var(--sp-surface);
}
.sprout-location .aen-loc-identity.has-banner{grid-template-columns:minmax(0,300px) minmax(0,1fr)}
.sprout-location .aen-loc-identity__media{
	display:block;background-size:cover;background-position:50% 45%;background-repeat:no-repeat;
	min-height:180px;background-color:var(--sp-surface-2);
}
.sprout-location .aen-loc-identity.is-tinted{
	background:linear-gradient(135deg,var(--sp-surface) 0%,var(--sp-surface-2) 60%,var(--sp-surface) 100%);
	border-left:4px solid var(--sp-accent);
}
.sprout-location .aen-loc-identity__body{padding:var(--sp-5,1.5rem) var(--sp-6,2rem)}
.sprout-location .aen-loc-identity__kicker{
	display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-2,.5rem);margin:0 0 var(--sp-2,.5rem);
	font-family:var(--sprout-font-head);font-size:var(--sp-fs--1,.8125rem);
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;
}
.sprout-location .aen-loc-identity__kind{font-weight:700;color:var(--sp-muted)}
.sprout-location .aen-loc-identity__up{color:var(--sp-link-hover);font-weight:700;text-decoration:none}
.sprout-location .aen-loc-identity__up:hover{text-decoration:underline}
.sprout-location .aen-loc-identity__up::before{content:"\2039\00a0";opacity:.6}
.sprout-location .aen-loc-identity h1{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-6,clamp(1.875rem,1.35rem + 2.6vw,2.875rem));
	line-height:var(--sp-lh-tight,1.15);letter-spacing:-.015em;color:var(--sp-heading);
	margin:0;text-wrap:balance;overflow-wrap:break-word;word-break:normal;
}
.sprout-location .aen-loc-identity__desc{
	margin:var(--sp-3,.75rem) 0 0;color:var(--sp-text-2,var(--sp-muted));
	font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-normal,1.55);max-width:52ch;
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.sprout-location .aen-loc-identity .aen-section-meta{
	margin-top:var(--sp-3,.75rem);display:flex;flex-wrap:wrap;gap:var(--sp-2,.5rem);
	font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted);
}
.sprout-location .aen-loc-identity .aen-section-meta span{
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-pill,999px);padding:3px 10px;
}

/* --- 2b. Composition pass — compact State identity (State ONLY; City's
   identity band above is completely untouched — .sprout-city never matches
   .sprout-state). Orients the reader without consuming the first screen. --- */
.sprout-location.sprout-state .aen-loc-identity__body{padding:var(--sp-4,1rem) var(--sp-5,1.5rem)}
.sprout-location.sprout-state .aen-loc-identity__media{min-height:110px}
.sprout-location.sprout-state .aen-loc-identity h1{font-size:var(--sp-fs-5,clamp(1.5rem,1.15rem + 1.6vw,2.125rem))}
.sprout-location.sprout-state .aen-loc-identity__desc{margin-top:var(--sp-2,.5rem);-webkit-line-clamp:2}
.sprout-location.sprout-state .aen-loc-identity .aen-section-meta{margin-top:var(--sp-2,.5rem)}

/* --- 2c. Refinement pass — the body City Rail reads as SECONDARY context,
   not a second major nav bar duplicating the header's own context bar. Same
   sprout_state_cities_rail() output/markup/Phase-1 behaviour — only size,
   border and type-weight are turned down (State ONLY; City's own sibling
   rail on the City page is untouched). --- */
.sprout-location.sprout-state .aen-loc-identity + .aen-city-rail{
	border:0;border-top:1px solid var(--sp-border);border-radius:0;background:none;margin-top:var(--sp-3,.75rem);
}
.sprout-location.sprout-state .aen-loc-identity + .aen-city-rail .aen-city-inner{padding-top:var(--sp-2,.5rem);padding-bottom:var(--sp-2,.5rem)}
.sprout-location.sprout-state .aen-loc-identity + .aen-city-rail .aen-city-label{font-size:var(--sp-fs--2,.75rem)}
.sprout-location.sprout-state .aen-loc-identity + .aen-city-rail .aen-city-chips a{
	padding:4px 10px;font-size:var(--sp-fs--2,.75rem);min-height:28px;
}

/* --- 3. Context / city chip rail ------------------------------------- */
.sprout-location .aen-section-hero + .aen-city-rail,
.sprout-location .aen-loc-identity + .aen-city-rail{margin-top:var(--sp-4,1rem);border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px)}
.sprout-location .aen-city-chips a{min-height:36px;display:inline-flex;align-items:center}
.sprout-location .aen-city-chips a.active{background:var(--sp-accent);color:var(--sp-on-accent);border-color:var(--sp-accent);font-weight:700}

/* --- 4. Newsroom hero: dominant lead + secondary supporting -------- */
.sprout-location .aen-loc-hero{
	display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);
	gap:var(--sp-6,2rem);align-items:start;margin:0;
}
.sprout-location .aen-loc-hero .aen-lead{display:block;border:0;background:transparent;box-shadow:none;overflow:visible;margin:0}
.sprout-location .aen-loc-hero .aen-lead:hover{box-shadow:none;transform:none}
.sprout-location .aen-loc-hero .aen-lead .aen-image-wrap{
	height:auto;aspect-ratio:var(--sp-ar-hero,16/9);border-radius:var(--sp-radius-sm,4px);overflow:hidden;background:var(--sp-surface-2);
}
.sprout-location .aen-loc-hero .aen-lead .aen-image-wrap img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-location .aen-loc-hero .aen-lead .aen-story-copy{padding:var(--sp-4,1rem) 0 0}
.sprout-location .aen-loc-hero .aen-lead .aen-story-copy h2{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem));
	line-height:1.2;letter-spacing:-.015em;color:var(--sp-heading);
	margin:0 0 var(--sp-2,.5rem);text-wrap:balance;overflow-wrap:break-word;word-break:normal;
}
.sprout-location a.aen-lead:hover .aen-story-copy h2{color:var(--sp-link-hover)}
.sprout-location .aen-loc-hero .aen-lead .aen-lead-excerpt{
	color:var(--sp-text-2,var(--sp-muted));font-size:var(--sp-fs-1,1.0625rem);
	line-height:var(--sp-lh-normal,1.55);margin:0 0 var(--sp-2,.5rem);max-width:56ch;
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.sprout-location .aen-loc-hero .aen-lead .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}
.sprout-location .aen-loc-hero .aen-lead .aen-story-tag{
	background:var(--sp-danger);color:var(--sp-on-danger);border-radius:var(--sp-radius-sm,4px);
	font-weight:700;font-size:var(--sp-fs--1,.8125rem);letter-spacing:.02em;padding:4px 10px;
}
/* supporting side cards — clearly secondary, token media box (no fixed 150px) */
.sprout-location .aen-loc-hero-side{display:grid;gap:var(--sp-4,1rem);align-items:start}
.sprout-location .aen-loc-hero-side .aen-compact-card{
	flex-direction:column;gap:0;border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);
	background:var(--sp-surface);overflow:hidden;margin:0;
}
.sprout-location .aen-loc-hero-side .aen-compact-thumb{
	flex:none;width:100%;max-width:none;height:auto;aspect-ratio:var(--sp-ar-card,3/2);
}
.sprout-location .aen-loc-hero-side .aen-compact-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-location .aen-loc-hero-side .aen-compact-copy{padding:var(--sp-3,.75rem)}
.sprout-location .aen-loc-hero-side .aen-compact-copy h3{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);
	line-height:1.3;margin:0 0 var(--sp-2,.5rem);color:var(--sp-heading);
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word;
}
.sprout-location a.aen-compact-card:hover .aen-compact-copy h3{color:var(--sp-link-hover)}
.sprout-location .aen-loc-hero-side .aen-compact-copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

/* --- 5. Main + discovery column relationship ---------------------- */
.sprout-location .aen-content-columns{
	display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--sp-7,3rem);margin-top:var(--sp-section,3.5rem);
}
/* P15 Batch 1B — the City Desk rail is no longer always rendered on a State
   page (see sprout_render_location_stream()); when neither the discovery
   widget nor the news-sidebar widget area has anything to show, collapse to
   one column instead of leaving an empty 300px track. */
.sprout-location .aen-content-columns:not(:has(.aen-rail)){grid-template-columns:minmax(0,1fr)}
.sprout-location .aen-content-columns .aen-rail{position:sticky;top:var(--sp-5,1.5rem);align-self:start}
.sprout-location .aen-rail > * + *{margin-top:var(--sp-5,1.5rem)}
.sprout-location .aen-main-column > .aen-section-heading:first-child,
.sprout-location .aen-main-column > .aen-section-heading{margin-top:0}

/* --- 6. Discovery module (replaces the redundant "Latest 5") ------- */
.sprout-location .aen-loc-discover{
	background:var(--sp-surface);border:1px solid var(--sp-border);
	border-radius:var(--sp-radius-sm,4px);padding:var(--sp-4,1rem);
}
.sprout-location .aen-loc-discover .aen-widget-title{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;
	color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem);
}
.sprout-location .aen-loc-discover__list{list-style:none;margin:0;padding:0}
.sprout-location .aen-loc-discover__list li{border-bottom:1px solid var(--sp-border)}
.sprout-location .aen-loc-discover__list li:last-child{border-bottom:0}
.sprout-location .aen-loc-discover__list a{
	display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3,.75rem);
	padding:var(--sp-3,.75rem) 0;text-decoration:none;color:var(--sp-text);
}
.sprout-location .aen-loc-discover__list a:hover .aen-loc-discover__name{color:var(--sp-link-hover)}
.sprout-location .aen-loc-discover__name{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);
	line-height:1.3;color:var(--sp-heading);overflow-wrap:break-word;
}
.sprout-location .aen-loc-discover__count{
	flex:0 0 auto;font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted);white-space:nowrap;
}

/* --- 6b. District Pulse (State Homepage rebuild) — one compact headline per
   busy district, deliberately NOT a card grid, so it never reads as another
   round of the same city-card blocks used elsewhere on the page. --------- */
.sprout-location .aen-district-pulse{margin:0}
.sprout-location .aen-district-pulse__list{
	list-style:none;margin:0;padding:0;
	display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--sp-6,2rem);
}
.sprout-location .aen-district-pulse__item{
	display:flex;flex-direction:column;gap:var(--sp-1,.25rem);
	padding:var(--sp-3,.75rem) 0;border-bottom:1px solid var(--sp-border);
	text-decoration:none;color:inherit;
}
.sprout-location .aen-district-pulse__city{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	letter-spacing:var(--sp-tracking-eyebrow,.05em);text-transform:uppercase;color:var(--sp-muted);
}
.sprout-location .aen-district-pulse__title{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);
	line-height:1.3;color:var(--sp-heading);overflow-wrap:break-word;
}
.sprout-location .aen-district-pulse__item:hover .aen-district-pulse__title{color:var(--sp-link-hover)}
.sprout-location .aen-district-pulse__time{font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted)}
@media(max-width:1023px){
	.sprout-location .aen-district-pulse__list{grid-template-columns:minmax(0,1fr)}
}
/* Refinement pass — count-aware grid (CSS-only, no JS measurement, no markup/
   data change; sprout_state_district_pulse()'s selection logic is untouched).
   The :has()/:not() "exactly N children" idiom already used elsewhere in this
   file (see the flagship city-mosaic block). Desktop/tablet only — wrapped in
   min-width:1024px so it never fights the ≤1023px single-column collapse
   above (that rule already handles every count correctly on narrow screens).
   0 items never reaches this CSS at all: the section itself isn't rendered. */
@media(min-width:1024px){
	/* exactly 1 item — no lonely half-width block with a blank second cell */
	.sprout-location .aen-district-pulse__list:not(:has(> li:nth-child(2))){
		grid-template-columns:minmax(0,1fr);max-width:26rem;
	}
	/* exactly 3 items — a balanced 3-column row instead of 2-then-1-orphan */
	.sprout-location .aen-district-pulse__list:has(> li:nth-child(3)):not(:has(> li:nth-child(4))){
		grid-template-columns:repeat(3,minmax(0,1fr));
	}
	/* 2 items and 4-5 items both already fill the base 2-column grid evenly —
	   no override needed for either case. */
}

/* --- 7. Per-City / "More from state" -> editorial grid ------------- */
.sprout-location .aen-home-section .aen-latest-list{
	display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-5,1.5rem);
}
.sprout-location .aen-home-section .aen-latest-list .aen-list-story{
	display:flex;flex-direction:column;gap:var(--sp-2,.5rem);
	grid-template-columns:none;padding:0;margin:0;border:1px solid var(--sp-border);
	border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);overflow:hidden;
}
.sprout-location .aen-home-section .aen-latest-list .aen-list-story img{
	width:100%;height:auto;aspect-ratio:var(--sp-ar-card,3/2);object-fit:cover;border-radius:0;
}
.sprout-location .aen-home-section .aen-latest-list .aen-list-story > div{padding:0 var(--sp-3,.75rem) var(--sp-3,.75rem)}
.sprout-location .aen-home-section .aen-latest-list .aen-list-story h3{
	font-size:var(--sp-fs-1,1.0625rem);line-height:1.3;margin:var(--sp-2,.5rem) 0 var(--sp-1,.25rem);
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:break-word;
}
.sprout-location .aen-home-section .aen-latest-list .aen-list-story p{display:none}
.sprout-location .aen-home-section .aen-latest-list .aen-list-story:not(:has(img)) > div{padding-top:var(--sp-3,.75rem)}

/* --- 8. Directory (State -> cities) -------------------------------- */
.sprout-location .aen-directory{
	display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--sp-3,.75rem);margin:0;
}
.sprout-location .aen-dir-card{
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-card,10px);background:var(--sp-surface);
	padding:var(--sp-4,1rem);transition:border-color var(--sp-dur) var(--sp-ease),box-shadow var(--sp-dur) var(--sp-ease);
}
.sprout-location .aen-dir-card:hover{transform:none;box-shadow:var(--sp-shadow-1)}
.sprout-location .aen-dir-card b{
	display:block;font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);
	color:var(--sp-heading);overflow-wrap:break-word;
}
.sprout-location .aen-dir-card small{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

/* --- 8b. Directory search + progressive disclosure (500+ city scale) --- */
.sprout-location .aen-city-search{margin:0 0 var(--sp-4,1rem);max-width:26rem}
.sprout-location .aen-city-search input[type="search"]{
	width:100%;-webkit-appearance:none;appearance:none;
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-pill,999px);
	background:var(--sp-surface);color:var(--sp-text);
	padding:9px 16px;font:14px var(--sprout-font-body);
}
.sprout-location .aen-city-search input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}
.sprout-location .aen-city-search input[type="search"]:focus-visible{outline:2px solid var(--sp-accent);outline-offset:2px}
.sprout-location .aen-city-search-status{margin:.4em 2px 0;font-size:var(--sp-fs--1,.8125rem);color:var(--sp-muted);min-height:1.2em}

.sprout-location .aen-directory[data-collapsed="1"] .aen-dir-card--extra{display:none}
.sprout-location .aen-dir-card[hidden]{display:none}

.sprout-location .aen-dir-showmore{
	display:inline-flex;align-items:center;gap:6px;margin-top:var(--sp-4,1rem);cursor:pointer;
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-pill,999px);
	background:var(--sp-surface);color:var(--sp-text);font:700 13px var(--sprout-font-body);padding:9px 18px;
	transition:border-color var(--sp-dur) var(--sp-ease),color var(--sp-dur) var(--sp-ease);
}
.sprout-location .aen-dir-showmore:hover{border-color:var(--sp-accent);color:var(--sp-link-hover)}
.sprout-location .aen-dir-showmore:focus-visible{outline:2px solid var(--sp-accent);outline-offset:2px}
.sprout-location .aen-dir-showmore[hidden]{display:none}

/* --- 8c. Composition pass — "More Cities" reads as a discovery utility, not
   another news section (State ONLY; the directory only ever renders on
   State, so no extra qualifier is even needed here, but #aen-city-directory
   already scopes this precisely regardless). Same markup, same data, same
   Phase-1 search/progressive-disclosure behaviour — only the heading weight
   and card size are toned down. --- */
.sprout-location #aen-city-directory .aen-section-heading{
	border-bottom-color:var(--sp-border);padding-bottom:var(--sp-1,.25rem);margin-bottom:var(--sp-3,.75rem);
}
.sprout-location #aen-city-directory .aen-section-heading h2{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);
	letter-spacing:var(--sp-tracking-eyebrow,.05em);text-transform:uppercase;color:var(--sp-muted);
}
.sprout-location #aen-city-directory .aen-dir-card{padding:var(--sp-3,.75rem)}
.sprout-location #aen-city-directory .aen-dir-card b{font-size:var(--sp-fs-0,.9375rem)}

/* --- 9. Main-stream "Latest" list: compact rows, safe Hindi wrap --- */
.sprout-location .aen-main-column .aen-latest-list .aen-list-story{
	grid-template-columns:200px minmax(0,1fr);gap:var(--sp-4,1rem);align-items:start;
	padding:var(--sp-3,.75rem);margin-bottom:var(--sp-3,.75rem);
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);background:var(--sp-surface);
}
.sprout-location .aen-main-column .aen-list-story img{
	width:100%;height:auto;aspect-ratio:var(--sp-ar-card,3/2);object-fit:cover;border-radius:var(--sp-radius-sm,4px);
}
.sprout-location .aen-main-column .aen-list-story h3{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2,1.1875rem);
	line-height:1.3;margin:var(--sp-1,.25rem) 0 var(--sp-2,.5rem);color:var(--sp-heading);
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
	overflow-wrap:break-word;word-break:normal;
}
.sprout-location .aen-main-column a.aen-list-story:hover h3{color:var(--sp-link-hover)}
.sprout-location .aen-main-column .aen-list-story:not(:has(img)){grid-template-columns:minmax(0,1fr)}

/* --- 10. Focus visibility (chips / cards / rows / discovery / pager) */
.sprout-location .aen-city-chips a:focus-visible,
.sprout-location .aen-dir-card:focus-visible,
.sprout-location a.aen-list-story:focus-visible,
.sprout-location a.aen-compact-card:focus-visible,
.sprout-location .aen-loc-discover__list a:focus-visible,
.sprout-location .aen-loc-identity__up:focus-visible,
.sprout-location .aen-pagination a:focus-visible,
.sprout-location .navigation.pagination a:focus-visible{
	outline:2px solid var(--sp-accent);outline-offset:2px;border-radius:var(--sp-radius-sm,4px);
}

/* --- 11. Video panel: larger source already requested in PHP ------- */
.sprout-location .aen-media-panel{margin-top:var(--sp-section,3.5rem)}
.sprout-location .aen-video-feature{aspect-ratio:var(--sp-ar-hero,16/9);border-radius:var(--sp-radius-sm,4px);overflow:hidden}
.sprout-location .aen-video-feature img{width:100%;height:100%;object-fit:cover}
.sprout-location .aen-video-feature .aen-play{background:var(--sp-accent);color:var(--sp-on-accent);box-shadow:none}
/* Refinement pass — on State ONLY. The Phase-2B fix (max-width:640px) traded
   the original ~740px-tall full-width wall for a narrow left-aligned block
   with a large blank area beside it — same problem, different axis. Neither
   the video resolver (still posts_per_page=>1 in sprout_location_video_panel(),
   untouched) nor the markup changed: this uses the full available width
   again, but at a shorter, wider crop instead of 16:9, so it fills the row
   as a "balanced single-feature" band without becoming a vertical wall.
   City is untouched (no .sprout-state qualifier there). */
.sprout-location.sprout-state .aen-media-panel{margin-top:var(--sp-6,2rem)}
.sprout-location.sprout-state .aen-video-feature{aspect-ratio:21/9}
@media(max-width:700px){
	.sprout-location.sprout-state .aen-video-feature{aspect-ratio:var(--sp-ar-card,3/2)}
}

/* --- 12. Dark-mode parity for the NEW components ------------------- */
html[data-theme="dark"] .sprout-location .aen-loc-identity,
html[data-theme="dark"] .sprout-location .aen-loc-discover,
html[data-theme="dark"] .sprout-location .aen-dir-card,
html[data-theme="dark"] .sprout-location .aen-home-section .aen-latest-list .aen-list-story,
html[data-theme="dark"] .sprout-location .aen-main-column .aen-latest-list .aen-list-story,
html[data-theme="dark"] .sprout-location .aen-loc-hero-side .aen-compact-card{
	background:var(--sp-surface);border-color:var(--sp-border);
}
html[data-theme="dark"] .sprout-location .aen-loc-identity.is-tinted{
	background:linear-gradient(135deg,var(--sp-surface) 0%,var(--sp-surface-2) 60%,var(--sp-surface) 100%);
}

/* --- 13. Breakpoint ladder --------------------------------------- */
@media(max-width:1199px){
	.sprout-location .aen-loc-hero{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--sp-5,1.5rem)}
	.sprout-location .aen-content-columns{grid-template-columns:minmax(0,1fr) 280px;gap:var(--sp-6,2rem)}
	.sprout-location .aen-home-section .aen-latest-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:1023px){
	/* tablet: rail drops BELOW the main column as a discovery band; hero 1-col */
	.sprout-location .aen-content-columns{display:block}
	.sprout-location .aen-content-columns .aen-rail{position:static;margin-top:var(--sp-6,2rem)}
	.sprout-location .aen-rail{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:var(--sp-5,1.5rem)}
	.sprout-location .aen-rail > * + *{margin-top:0}
	.sprout-location .aen-loc-hero{grid-template-columns:minmax(0,1fr);gap:var(--sp-5,1.5rem)}
	.sprout-location .aen-loc-hero-side{grid-template-columns:repeat(2,minmax(0,1fr))}
	.sprout-location .aen-loc-identity.has-banner{grid-template-columns:minmax(0,1fr)}
	.sprout-location .aen-loc-identity__media{min-height:150px}
	.sprout-location .aen-directory{grid-template-columns:repeat(3,minmax(0,1fr))}
	.sprout-location > .aen-loc-identity,
	.sprout-location > .aen-loc-hero,
	.sprout-location > .aen-loc-cities,
	.sprout-location > .aen-content-columns,
	.sprout-location > .aen-media-panel,
	.sprout-location > .aen-home-section,
	.sprout-location > .aen-newsletter{margin-top:var(--sp-6,2rem)}
}
@media(max-width:700px){
	.aen-shell.sprout-location{max-width:100%}
	.sprout-location .aen-loc-identity__body{padding:var(--sp-4,1rem) var(--sp-4,1rem)}
	.sprout-location .aen-loc-identity h1{font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem))}
	.sprout-location .aen-loc-identity__desc{-webkit-line-clamp:2}
	.sprout-location .aen-loc-hero .aen-lead .aen-story-copy h2{font-size:var(--sp-fs-4,clamp(1.375rem,1.15rem + 1vw,1.75rem))}
	/* supporting stories become COMPACT ROWS, not 3 stacked giant images */
	.sprout-location .aen-loc-hero-side{grid-template-columns:minmax(0,1fr);gap:var(--sp-3,.75rem)}
	.sprout-location .aen-loc-hero-side .aen-compact-card{flex-direction:row;align-items:stretch}
	.sprout-location .aen-loc-hero-side .aen-compact-thumb{flex:0 0 118px;width:118px;aspect-ratio:var(--sp-ar-thumb,4/3)}
	.sprout-location .aen-loc-hero-side .aen-compact-copy{padding:var(--sp-2,.5rem) var(--sp-3,.75rem)}
	.sprout-location .aen-loc-hero-side .aen-compact-copy h3{-webkit-line-clamp:2;font-size:var(--sp-fs-0,.9375rem)}
	.sprout-location .aen-main-column .aen-latest-list .aen-list-story{grid-template-columns:118px minmax(0,1fr);gap:var(--sp-3,.75rem);padding:var(--sp-2,.5rem)}
	.sprout-location .aen-main-column .aen-list-story img{aspect-ratio:var(--sp-ar-thumb,4/3)}
	.sprout-location .aen-main-column .aen-list-story h3{font-size:var(--sp-fs-1,1.0625rem);-webkit-line-clamp:2}
	.sprout-location .aen-home-section .aen-latest-list{grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem)}
	.sprout-location .aen-directory{grid-template-columns:repeat(2,minmax(0,1fr))}
	.sprout-location .aen-rail{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:520px){
	.sprout-location .aen-loc-hero-side .aen-compact-thumb{flex-basis:104px;width:104px}
	.sprout-location .aen-directory{grid-template-columns:minmax(0,1fr)}
}
/* ===================================================================== */


/* =====================================================================
   P1.6 — Final QA & Hardening (revert = delete this block)

   Cross-phase consistency + touch-target/responsive fixes only. No new
   features, no colour changes, no layout variants. Every rule here is a
   deliberate override of an earlier P1.1–P1.5 declaration.
   ===================================================================== */

/* 1. Card-hover consistency ----------------------------------------------
   P1.1–P1.5 originally settled on box-shadow + border-colour as the hover
   language for full-width story cards. A handful of older base rules still
   added a translateY "bounce" on hover, which read as inconsistent next to
   the premium cards on the homepage / article / archive surfaces, so it is
   dropped here (transform only). A later pass (site-wide "no hover border"
   polish) then removed the border-colour hover swap itself from most of
   these same cards, replacing it with a subtle image scale or a neutral
   box-shadow — see each selector's own rule for its current feedback.
   Small tappable chips/buttons (.aen-share-btn, .aen-reaction, .aen-mod-btn,
   .aen-install-btn, .aen-ad-demo-box) keep their -1px press affordance and
   are intentionally not listed here. */
.aen-story-card:hover,
.aen-compact-card:hover,
.aen-list-story:hover,
.aen-related-card:hover,
.aen-youtube-card:hover,
.aen-dir-card:hover,
.aen-search-card:hover,
.aen-post-nav a:hover,
a.aen-promo-row:hover{transform:none}

/* 2. Trending lists — real anchor wrapper -----------------------------
   The trending rows became a single <a> wrapping the number + copy
   (was a JS onclick on the <li>), so the row's grid/flex must move off
   the <li> and onto that anchor. Mirrors the .sprout-location variant
   already in this file. Padding / borders / :hover stay on the <li>. */
.aen-trending-list li{display:block}
.aen-trending-list li > a{display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start;color:inherit;text-decoration:none}
.aen-trending li{display:block}
.aen-trending li > a{display:flex;gap:14px;align-items:baseline;color:inherit;text-decoration:none}

/* 3. Pagination touch targets ------------------------------------------
   P1 pagination pills are 40x40; bump the hit height to the 44px WCAG
   2.5.5 / platform minimum without changing the visual box (line-height
   and padding already centre the label). */
.aen-pagination .page-numbers,
.pagination .page-numbers{min-height:44px}

/* 4. City-chip / identity-city touch targets -------------------------- */
@media (max-width:700px){
	.aen-city-chips a,
	.sprout-home-identity__cities a{min-height:40px;display:inline-flex;align-items:center}
	.aen-trending-list li > a{grid-template-columns:28px 1fr;gap:9px}
}


/* =====================================================================
   Demo-QA polish — graceful degradation when a post has no featured
   image (revert = delete this block). Demo posts always get an image;
   these rules only affect genuinely image-less posts on any surface.
   ===================================================================== */

/* Story rows: when there is no <img>, drop the reserved image column so
   the copy is not pushed in by an empty gap. */
.aen-latest-list .aen-list-story:not(:has(img)),
.sprout-home .aen-latest-list .aen-list-story:not(:has(img)),
.sprout-location .aen-latest-list .aen-list-story:not(:has(img)),
.sprout-archive .aen-latest-list .aen-list-story:not(:has(img)){grid-template-columns:1fr}

/* Lead card with no image: give the headline block a top rule so it still
   reads as the dominant story rather than a bare paragraph. */
.aen-lead--textonly .aen-story-copy{border-top:2px solid var(--sp-heading,#111312);padding-top:var(--sp-3,.75rem)}

/* Location "featured video" with no poster: a solid panel instead of an
   empty framed box. */
.aen-video-feature--noimg{background:var(--sp-heading,#0f172a)}


/* =====================================================================
   P2.1 — Editorial Priority presentation on lead / prominent cards.
   Reader hierarchy: Breaking (red) > Featured (ink) > Normal (no badge).
   Scoped entirely to new .aen-prio-badge / .aen-lead--breaking|--featured
   classes — revert = delete this block. Uses existing design tokens; the
   colours resolve correctly in light and dark. No fixed heights.
   ===================================================================== */

.aen-prio-badge{
	display:inline-flex;align-items:center;gap:6px;
	font-family:var(--sprout-font-head,inherit);font-weight:800;
	font-size:var(--sp-fs--1,.8125rem);line-height:1;letter-spacing:.02em;
	padding:5px 11px;border-radius:var(--sp-radius-sm,4px);
	margin:0 0 var(--sp-2,.5rem);vertical-align:middle;
}

/* Breaking — strongest, urgent. Deep-red pill, text FORCED pure white with a
   literal value (never a custom property, never inherited) so a broken/dark
   theme variable or the `color:inherit` on the parent card link can never make
   it dark. The red background keeps a var so the Branding panel can still tune
   the red, with a hard #B90D0B fallback. */
.aen-prio-badge--breaking{
	background:var(--sp-danger,#B90D0B);
	color:#ffffff !important;
}
.aen-prio-badge--breaking::before{
	content:"";flex:0 0 auto;width:7px;height:7px;border-radius:50%;
	background:#ffffff;
}

/* Featured — premium, important, clearly calmer than Breaking. Solid ink
   pill (not red). --sp-heading flips light in dark mode, --sp-surface flips
   dark, so it stays a solid high-contrast pill in both themes. */
.aen-prio-badge--featured{
	background:var(--sp-heading,#111312);
	color:var(--sp-surface,#ffffff);
	font-weight:700;
}

/* Whole-lead accent so a Breaking lead reads as the single strongest story
   in whatever layout it appears in. No box-size change. */
.aen-lead--breaking .aen-image-wrap{box-shadow:inset 0 4px 0 0 var(--sp-danger,#B90D0B)}
.aen-lead--breaking.aen-lead--textonly .aen-story-copy{border-top-color:var(--sp-danger,#B90D0B)}

/* ==== P3.2 — "Regional Briefing" homepage layout ============================
   A second, buyer-selectable homepage presentation (registered in
   inc/homepage-layouts.php, chosen in Customize -> Sprout News -> Layout Style).
   Every rule is scoped to `.sprout-home-layout--briefing` (the sanitised P3.1
   <body> class), so the default "flagship" homepage
   (body.sprout-home-layout--flagship) is never matched by anything here.
   Consumes the SAME markup helper classes (.aen-lead, .aen-story-copy,
   .aen-image-wrap, .aen-topnews-list, .aen-prio-badge, .aen-trending-now ...)
   and the SAME design tokens as the rest of the theme; adds only the new
   .sprout-brief* structure. Revert = delete this block + inc/homepage-layouts.php
   + template-parts/home/section-top-briefing.php. Breakpoints match the homepage
   elsewhere: 1024px (tablet), 700px (mobile).
   ========================================================================== */

/* Parity fix: the shared P1.3 identity band defaults to 1rem top/bottom
   padding (32px total); City First already trims this to .75rem (24px) —
   State Network never got the same trim. Same treatment, same token. */
.sprout-home-layout--briefing .sprout-home-identity{padding:var(--sp-3,.75rem) 0}

/* --- Band rhythm + the divider before the lower feed (mirrors the flagship
       .aen-home-top + .aen-content-columns rule) --- */
.sprout-home-layout--briefing .sprout-brief{display:flex;flex-direction:column;gap:var(--sp-7,3rem)}
.sprout-home-layout--briefing .sprout-home .sprout-brief + .aen-content-columns{
	margin-top:var(--sp-7,3rem);padding-top:var(--sp-6,2rem);
	border-top:1px solid var(--sp-border);
}

/* --- Shared section head: a restrained ruled kicker, one per zone --- */
.sprout-home-layout--briefing .sprout-brief__head{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs--1,.8125rem);line-height:1.15;
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;
	color:var(--sp-heading);margin:0 0 var(--sp-4,1rem);
	padding-bottom:var(--sp-2,.5rem);border-bottom:2px solid var(--sp-heading);
}

/* --- ZONE 1: the dominant lead - a red editorial rail + horizontal split --- */
.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead{
	--brief-strip:40px;
	display:grid;grid-template-columns:var(--brief-strip) minmax(0,1.5fr) minmax(0,1fr);
	gap:0;align-items:start;
	text-decoration:none;color:inherit;
}
.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead.aen-lead--textonly{grid-template-columns:var(--brief-strip) minmax(0,1fr)}
/* the vertical State rail — intentional editorial furniture, not decoration */
.sprout-home-layout--briefing .sprout-brief__strip{
	align-self:stretch;min-height:150px;
	display:flex;align-items:center;justify-content:center;
	padding:var(--sp-5,1.5rem) 0;
	background:var(--sp-danger,#B90D0B);
	border-radius:var(--sp-radius-sm,4px) 0 0 var(--sp-radius-sm,4px);
}
.sprout-home-layout--briefing .sprout-brief__strip-label{
	writing-mode:vertical-rl;text-orientation:upright;text-combine-upright:none;
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-0,.9375rem);letter-spacing:.14em;line-height:1;
	color:var(--sp-on-danger,#fff);white-space:nowrap;
}
.sprout-home-layout--briefing .sprout-brief__lead-media{
	position:relative;margin:0;height:auto;border-radius:0 var(--sp-radius-sm,4px) var(--sp-radius-sm,4px) 0;overflow:hidden;
	aspect-ratio:var(--sp-ar-hero,16/9);max-height:clamp(300px,32vw,440px);background:var(--sp-surface-2,#f3f3f1);
}
.sprout-home-layout--briefing .sprout-brief__lead-media img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--briefing .sprout-brief__lead-media .aen-story-tag{
	position:absolute;left:var(--sp-4,1rem);top:var(--sp-4,1rem);
	background:var(--sp-heading,#111312);color:var(--sp-surface,#fff);
	border-radius:var(--sp-radius-sm,4px);font-weight:700;
	font-size:var(--sp-fs--1,.8125rem);letter-spacing:.02em;padding:4px 10px;
}
.sprout-home-layout--briefing .sprout-brief__lead-copy{padding:0 0 0 var(--sp-6,2rem)}
.sprout-home-layout--briefing .sprout-brief__lead-copy h2{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-6,clamp(1.875rem,1.35rem + 2.6vw,2.875rem));
	line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;
	color:var(--sp-heading);margin:var(--sp-2,.5rem) 0;text-wrap:balance;overflow-wrap:anywhere;
}
.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead:hover .sprout-brief__lead-copy h2{color:var(--sp-link-hover)}
.sprout-home-layout--briefing .sprout-brief__lead-copy .aen-lead-excerpt{
	color:var(--sp-muted);font-size:var(--sp-fs-1,1.0625rem);
	line-height:var(--sp-lh-normal,1.55);margin:0 0 var(--sp-2,.5rem);
}
.sprout-home-layout--briefing .sprout-brief__lead-copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);margin:0}

/* --- ZONE 2: "The Brief" - a firm row of text-forward headline cards.
   Commercial-refinement pass: dropped from 4-up to 3-up. At 4-up each card
   was only ~220-259px wide even at a full 1200-1440px desktop — thumbnail +
   headline read as a thin, generic "latest news" strip rather than "2-3
   State/District stories with real visual authority" (this pass's own
   target). 3-up gives each card ~262-356px, letting its existing 3:2
   thumbnail render meaningfully larger without changing the thumbnail rule,
   the card markup, or which/how many posts are selected — same content,
   same query, just a less cramped row. --- */
.sprout-home-layout--briefing .sprout-brief__cards{
	list-style:none;margin:0;padding:0;display:grid;gap:0 var(--sp-6,2rem);
	grid-template-columns:repeat(3,minmax(0,1fr));
}
.sprout-home-layout--briefing .sprout-brief__cards > li{display:flex}
.sprout-home-layout--briefing .sprout-brief__card{
	display:flex;flex-direction:column;gap:var(--sp-2,.5rem);width:100%;
	padding:var(--sp-4,1rem) 0 0;border-top:2px solid var(--sp-heading);
	text-decoration:none;color:inherit;
}
.sprout-home-layout--briefing .sprout-brief__card-thumb{
	display:block;margin:0 0 var(--sp-2,.5rem);border-radius:var(--sp-radius-sm,4px);
	overflow:hidden;aspect-ratio:var(--sp-ar-card,3/2);background:var(--sp-surface-2,#f3f3f1);
}
.sprout-home-layout--briefing .sprout-brief__card-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--briefing .sprout-brief__card-copy{display:flex;flex-direction:column;gap:var(--sp-1,.25rem);min-width:0}
.sprout-home-layout--briefing .sprout-brief__card-title{
	font-family:var(--sprout-font-head);font-weight:700;
	font-size:var(--sp-fs-1,1.0625rem);line-height:1.4;
	color:var(--sp-heading);overflow-wrap:anywhere;
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.sprout-home-layout--briefing .sprout-brief__card:hover .sprout-brief__card-title{color:var(--sp-link-hover)}
.sprout-home-layout--briefing .sprout-brief__card .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}
/* Editorial-authority pass, true desktop only (>=1200px, where the 3-up row
   above already gives each card ~300px+): a modest title bump (fs-1 -> fs-2)
   and a touch more breathing room between eyebrow/title/meta so a supporting
   card reads as an editorial story, not the same dense utility-row treatment
   the theme uses for compact list items elsewhere. Left unchanged at 901-
   1199px (cards are narrower there, ~262px, where fs-1 still fits its 3-line
   clamp comfortably) and at 701-900/<=700 (already tuned in prior passes). */
@media(min-width:1200px){
	.sprout-home-layout--briefing .sprout-brief__card-copy{gap:var(--sp-2,.5rem)}
	.sprout-home-layout--briefing .sprout-brief__card-title{font-size:var(--sp-fs-2,1.1875rem)}
}

/* --- ZONE 3: ranked Top News as a primary column beside Live + Trending --- */
.sprout-home-layout--briefing .sprout-brief__split{
	display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);
	gap:var(--sp-7,3rem);align-items:start;
}
.sprout-home-layout--briefing .sprout-brief__split--no-aside,
.sprout-home-layout--briefing .sprout-brief__split--no-ranked{grid-template-columns:minmax(0,1fr)}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list{list-style:none;margin:0;padding:0}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list li{border-bottom:1px solid var(--sp-border)}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list li:last-child{border-bottom:0}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list a{
	display:flex;gap:var(--sp-4,1rem);align-items:baseline;
	padding:var(--sp-4,1rem) 0;color:var(--sp-text);text-decoration:none;
}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list a:hover{color:var(--sp-link-hover)}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list b{
	color:var(--sp-accent);font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-2,1.1875rem);flex:0 0 auto;line-height:1.2;
}
.sprout-home-layout--briefing .sprout-brief__ranked .aen-topnews-list span{
	font-family:var(--sprout-font-head);font-weight:600;
	font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-snug,1.3);overflow-wrap:anywhere;
}
.sprout-home-layout--briefing .sprout-brief__aside{display:flex;flex-direction:column;gap:var(--sp-6,2rem)}
.sprout-home-layout--briefing .sprout-brief__aside .aen-home-block{margin-bottom:0}
.sprout-home-layout--briefing .sprout-brief__aside .aen-trending-now{margin-bottom:0}

/* --- ZONE 3b: Live Updates — header, then the existing live player, then the
       existing related content (trending) already rendered after this block --- */
.sprout-home-layout--briefing .sprout-brief__live{display:flex;flex-direction:column;gap:var(--sp-3,.75rem)}
.sprout-home-layout--briefing .sprout-brief__live .sprout-brief__head{margin:0}
.sprout-home-layout--briefing .sprout-brief__live .aen-live-block{margin:0}
.sprout-home-layout--briefing .sprout-brief__live .aen-live-card,
.sprout-home-layout--briefing .sprout-brief__live .aen-live-tv{margin:0;width:100%}

/* --- Smart tablet (901-1199) — root cause: this used to be ONE ≤1024px step
   that (a) only nudged the lead's ratio and (b) ALSO collapsed the ranked/
   aside split and the Brief cards to a single column/2-up — well before
   either genuinely ran out of room (at 1024px the split's own desktop ratio
   still gives the ranked column ~533px and the aside ~395px; the Brief cards,
   now 3-up since the commercial-refinement pass above, are still ~263px
   each). That is exactly a "resized desktop", not a composed tablet: two
   zones were shrinking their DENSITY for no reason a width this wide
   justifies. Split into two deliberate tiers: this one keeps the split
   side-by-side and the cards at their intentional 3-up row (both simply
   inherit the desktop rules now, unmodified, by NOT collapsing them here)
   and only carries forward the lead's own gentle ratio trim — extended from
   ≤1024px to the full ≤1199px tablet tier. --- */
@media(max-width:1199px){
	.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead{--brief-strip:34px;grid-template-columns:var(--brief-strip) minmax(0,1.35fr) minmax(0,1fr)}
	.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead.aen-lead--textonly{grid-template-columns:var(--brief-strip) minmax(0,1fr)}
	.sprout-home-layout--briefing .sprout-brief__lead-copy{padding-left:var(--sp-5,1.5rem)}
}

/* --- Small tablet / recompose (701-900) — root cause: below ~900px the
   split's ranked column and aside both fall under ~300px (too tight for a
   ranked headline list beside Live+Trending) and the horizontal 3-part lead
   (red strip + image + copy) squeezes its copy column to ~270-320px while
   still using the full desktop headline scale — a genuinely cramped, not
   recomposed, lead. Recompose instead of shrinking further: the lead stacks
   full-width (reusing the exact structural treatment already proven at
   <=700px mobile, moved up to <=900px so it engages before the squeeze, not
   after it — see the trimmed Mobile block below), the split collapses to one
   column (ranked list, then Live+Trending), and the Brief cards step down
   to 2-up — still text-forward "headline cards", just half the row density,
   matching this pass's own "2 supporting stories" composition target. --- */
@media(max-width:900px){
	.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead,
	.sprout-home-layout--briefing .sprout-home a.sprout-brief__lead.aen-lead--textonly{grid-template-columns:minmax(0,1fr)}
	/* the State rail becomes a slim red label bar on top of the lead */
	.sprout-home-layout--briefing .sprout-brief__strip{
		align-self:auto;min-height:0;justify-content:flex-start;
		padding:var(--sp-2,.5rem) var(--sp-3,.75rem);
		border-radius:var(--sp-radius-sm,4px) var(--sp-radius-sm,4px) 0 0;
	}
	.sprout-home-layout--briefing .sprout-brief__strip-label{writing-mode:horizontal-tb;text-orientation:mixed;letter-spacing:.12em;font-size:var(--sp-fs--1,.8125rem)}
	.sprout-home-layout--briefing .sprout-brief__lead-media{border-radius:0 0 var(--sp-radius-sm,4px) var(--sp-radius-sm,4px);max-height:none}
	.sprout-home-layout--briefing .sprout-brief__lead-copy{padding-left:0;padding-top:var(--sp-3,.75rem)}
	.sprout-home-layout--briefing .sprout-brief__lead-copy h2{font-size:var(--sp-fs-5,clamp(1.625rem,1.2rem + 2vw,2.375rem))}
	.sprout-home-layout--briefing .sprout-brief__split{grid-template-columns:minmax(0,1fr);gap:var(--sp-6,2rem)}
	.sprout-home-layout--briefing .sprout-brief__cards{gap:var(--sp-5,1.5rem) var(--sp-5,1.5rem);grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* --- Mobile (<=700) — final compact step: only the Brief cards need a
   further, phone-specific treatment (a 1-up compact row, thumb+text side by
   side) beyond what the 701-900 tier already established; the lead/split
   recomposition above already covers this width too (a max-width query has
   no lower bound), so it is not repeated here. --- */
@media(max-width:700px){
	/* Mobile editorial-priority reorder — same technique proven on City First
	   (.sprout-home-layout--flagship, frozen/untouched): inc/homepage.php
	   renders ticker/ad_top/strap/editorial/feed/ad_between/video/newsletter
	   as fixed DOM siblings of .sprout-home in one admin-configured order,
	   with no breakpoint awareness, so the 'top' ad slot always lands between
	   the identity strap and the State lead. `order` repositions the same
	   elements visually only — no PHP change, no markup duplication, no ad
	   id/dimension/mode change. Scoped to Briefing only. */
	.sprout-home-layout--briefing .sprout-home{display:flex;flex-direction:column}
	.sprout-home-layout--briefing .sprout-home > .aen-ticker{order:1}
	.sprout-home-layout--briefing .sprout-home > .sprout-home-identity,
	.sprout-home-layout--briefing .sprout-home > .aen-edition-banner{order:2}
	.sprout-home-layout--briefing .sprout-home > .sprout-brief{order:3}
	.sprout-home-layout--briefing .sprout-home > .aen-ad-top,
	.sprout-home-layout--briefing .sprout-home > .aen-promo-top{order:4}
	.sprout-home-layout--briefing .sprout-home > .aen-statenet-feed{order:5}
	.sprout-home-layout--briefing .sprout-home > .aen-ad-between_posts,
	.sprout-home-layout--briefing .sprout-home > .aen-promo-between_posts{order:6}
	.sprout-home-layout--briefing .sprout-home > .sprout-home-watch{order:7}
	.sprout-home-layout--briefing .sprout-home > .aen-newsletter{order:8}
	/* Same redundant-margin cleanup proven on City First: the ticker's own
	   margin-bottom and the 'top' ad's own margin-bottom duplicate the gap
	   the sibling-margin system (".sprout-home > .aen-ticker + *") already
	   owns on those exact edges. */
	.sprout-home-layout--briefing .sprout-home .aen-ticker{margin-bottom:0}
	.sprout-home-layout--briefing .sprout-home .aen-ad-top,
	.sprout-home-layout--briefing .sprout-home .aen-promo-top{margin-bottom:0}
	/* Parity fix: this layout never received the identity-band tightening
	   City First got. The shared, non-scoped mobile rule
	   ".sprout-home-identity{flex-direction:column;align-items:stretch}"
	   force-stacks the place/tag line and the city-chip strip onto two
	   full-width rows even when they'd fit one — the exact same root cause
	   already fixed for flagship, extended here (State/India were previously
	   left untouched on purpose, out of scope for that pass; now in scope). */
	.sprout-home-layout--briefing .sprout-home-identity{flex-direction:row;align-items:center;padding:var(--sp-2,.5rem) 0}

	.sprout-home-layout--briefing .sprout-brief__cards{grid-template-columns:minmax(0,1fr);gap:0}
	.sprout-home-layout--briefing .sprout-brief__card{flex-direction:row;gap:var(--sp-3,.75rem);align-items:flex-start;padding-top:var(--sp-3,.75rem)}
	.sprout-home-layout--briefing .sprout-brief__card-thumb{flex:0 0 34%;max-width:120px;margin:0;aspect-ratio:var(--sp-ar-thumb,4/3)}
	.sprout-home-layout--briefing .sprout-brief__card-copy{flex:1 1 auto;min-width:0}
}

/* ==== P3.3 — "Headline Stream" homepage layout =============================
   The third buyer-selectable homepage presentation (registered in
   inc/homepage-layouts.php, chosen in Customize -> Sprout News -> Layout Style).
   Every rule is scoped to `.sprout-home-layout--stream` (the sanitised P3.1
   <body> class), so the "flagship" and "briefing" homepages are never matched.
   A single national editorial column: a compact TEXT-FIRST lead, then 2
   supporting stories with real visual authority (promoted photo cards), then
   a compact national quick scan of fast-scan rows. Reuses the theme design
   tokens + the shared
   .aen-lead / .aen-story-copy / .aen-image-wrap / .aen-eyebrow / .aen-story-meta
   / .aen-prio-badge / .aen-trending-now / .aen-live-* classes; adds only the
   .sprout-stream* structure. Revert = delete this block +
   inc/homepage-layouts.php stream rows + template-parts/home/section-top-stream.php.
   Breakpoints match the homepage elsewhere: 1024px (tablet), 700px (mobile).
   Typography hierarchy: headline = --sp-heading, head font, 700-800, largest;
   dek/body = --sp-text, body font, normal; metadata = --sp-muted, smallest.
   ========================================================================== */

/* Parity fix: same identity-band padding trim as City First (.75rem instead
   of the shared P1.3 default of 1rem) — India Network never got it either. */
.sprout-home-layout--stream .sprout-home-identity{padding:var(--sp-3,.75rem) 0}

/* P13.4: the band uses the FULL content width — a national-news homepage, not a
   centred reading column. The live player alone keeps a sensible cap. */
.sprout-home-layout--stream .sprout-stream{display:block}
/* P15 Batch 3 — LIVE now renders BELOW the lead + support pair (see
   section-top-stream.php), and is deliberately kept visually secondary: a
   narrower, inset module rather than a full-bleed block, so it reads as a
   utility feature and never competes with the national lead above it. */
.sprout-home-layout--stream .sprout-stream__live{max-width:46rem;margin:0 auto var(--sp-5,1.5rem)}
.sprout-home-layout--stream .sprout-stream__live .aen-home-block{margin-bottom:0}
.sprout-home-layout--stream .sprout-stream__live .aen-live-card,
.sprout-home-layout--stream .sprout-stream__live .aen-live-tv{margin:0}
.sprout-home-layout--stream .sprout-stream__body{max-width:none;margin-inline:0}

/* --- The divider before the lower feed (mirrors the flagship rule) --- */
.sprout-home-layout--stream .sprout-home .sprout-stream + .aen-content-columns{
	margin-top:var(--sp-7,3rem);padding-top:var(--sp-6,2rem);
	border-top:1px solid var(--sp-border);
}

/* --- ZONE 1: the national lead — copy + a real image as one editorial unit --- */
.sprout-home-layout--stream .sprout-home a.sprout-stream__lead{
	display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,0.95fr);gap:var(--sp-6,2rem);
	align-items:center;text-decoration:none;color:inherit;
	padding:0 0 var(--sp-7,3rem);border-bottom:1px solid var(--sp-border);
	margin:0 0 var(--sp-7,3rem);
}
.sprout-home-layout--stream .sprout-home a.sprout-stream__lead.aen-lead--textonly{grid-template-columns:minmax(0,1fr)}
.sprout-home-layout--stream .sprout-home .aen-lead .sprout-stream__lead-copy{padding:0;order:1;min-width:0}
/* text-only lead keeps the shared .aen-lead--textonly top rule (theme.css) readable */
.sprout-home-layout--stream .sprout-home .aen-lead--textonly .sprout-stream__lead-copy{padding-top:var(--sp-3,.75rem)}
.sprout-home-layout--stream .sprout-home .aen-lead .sprout-stream__lead-media{
	order:2;width:auto;height:auto;margin:0;border-radius:var(--sp-radius-sm,4px);
	overflow:hidden;aspect-ratio:var(--sp-ar-hero,16/9);max-height:clamp(280px,30vw,420px);
	background:var(--sp-surface-2,#f3f3f1);
}
.sprout-home-layout--stream .sprout-stream__lead-media img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--stream .sprout-stream__lead-copy h2{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:clamp(1.75rem,1.35rem + 1.9vw,2.6rem);
	line-height:var(--sp-lh-tight,1.15);letter-spacing:-.02em;
	color:var(--sp-heading);margin:var(--sp-2,.5rem) 0 var(--sp-3,.75rem);
	text-wrap:balance;overflow-wrap:anywhere;
}
.sprout-home-layout--stream .sprout-home a.sprout-stream__lead:hover .sprout-stream__lead-copy h2{color:var(--sp-link-hover)}
.sprout-home-layout--stream .sprout-stream__lead-copy .aen-lead-excerpt{
	color:var(--sp-text);font-family:var(--sprout-font-body);
	font-size:var(--sp-fs-2,1.1875rem);line-height:var(--sp-lh-normal,1.55);
	margin:0 0 var(--sp-3,.75rem);max-width:62ch;
}
.sprout-home-layout--stream .sprout-stream__lead-copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);margin:0}

/* --- ZONE 2: the 2 supporting national stories — real visual authority,
   immediately after the lead. Reuses .sprout-stream__card (image, eyebrow,
   headline, dek, meta) but as a genuine 2-up grid of promoted photo cards
   instead of a single full-width interleaved break; --support overrides the
   card's own internal grid to stack image-over-copy so each ~50%-width card
   still shows a real, readable image instead of a cramped side-by-side crop. */
.sprout-home-layout--stream .sprout-stream__support{margin:0 0 var(--sp-6,2rem)}
.sprout-home-layout--stream .sprout-stream__support-label{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs--1,.8125rem);line-height:1.15;
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;
	color:var(--sp-heading);margin:0 0 var(--sp-3,.75rem);
	padding-bottom:var(--sp-2,.5rem);border-bottom:2px solid var(--sp-heading);
}
.sprout-home-layout--stream .sprout-stream__support-items{
	list-style:none;margin:0;padding:0;
	display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-5,1.5rem);
	align-items:start;
}
.sprout-home-layout--stream a.sprout-stream__card--support{
	grid-template-columns:minmax(0,1fr);gap:var(--sp-3,.75rem);align-items:stretch;
}
.sprout-home-layout--stream .sprout-stream__card--support .sprout-stream__card-media{
	aspect-ratio:var(--sp-ar-hero,16/9);max-height:none;
}
.sprout-home-layout--stream .sprout-stream__card--support .sprout-stream__card-title{
	font-size:var(--sp-fs-3,1.375rem);
}

/* --- ZONE 3: the national quick scan — compact newsroom rows --- */
.sprout-home-layout--stream .sprout-stream__label{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs--1,.8125rem);line-height:1.15;
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;
	color:var(--sp-heading);margin:0 0 var(--sp-2,.5rem);
	padding-bottom:var(--sp-2,.5rem);border-bottom:2px solid var(--sp-heading);
}
/* P15 Batch 3: this list is now rows ONLY — the deliberately lower-density
   "quick scan" beneath the lead + 2 supporting stories above (promoted photo
   cards no longer interleave here; see .sprout-stream__support). Still a 3-up
   newsroom grid of compact thumbnail rows. */
.sprout-home-layout--stream .sprout-stream__items{
	list-style:none;margin:0;padding:0;
	display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-5,1.5rem) var(--sp-6,2rem);
	align-items:start;
}

/* row — a compact newsroom row: thumbnail, eyebrow, headline, meta */
.sprout-home-layout--stream a.sprout-stream__row{
	display:grid;grid-template-columns:104px minmax(0,1fr);gap:var(--sp-3,.75rem);
	align-items:start;text-decoration:none;color:inherit;min-width:0;
}
.sprout-home-layout--stream a.sprout-stream__row.sprout-stream__row--nomedia{grid-template-columns:minmax(0,1fr)}
.sprout-home-layout--stream .sprout-stream__row-thumb{
	display:block;aspect-ratio:var(--sp-ar-card,3/2);border-radius:var(--sp-radius-sm,4px);
	overflow:hidden;background:var(--sp-surface-2);
}
.sprout-home-layout--stream .sprout-stream__row-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--stream .sprout-stream__row-copy{display:flex;flex-direction:column;gap:var(--sp-1,.25rem);min-width:0}
.sprout-home-layout--stream .sprout-stream__row-title{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);
	line-height:1.4;color:var(--sp-heading);overflow-wrap:anywhere;
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.sprout-home-layout--stream a.sprout-stream__row:hover .sprout-stream__row-title{color:var(--sp-link-hover)}
.sprout-home-layout--stream .sprout-stream__row-copy .aen-eyebrow{margin:0}
.sprout-home-layout--stream .sprout-stream__row .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);margin:0}

/* card — the promoted photo break (full width, prominent but height-controlled) */
.sprout-home-layout--stream a.sprout-stream__card{
	display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:var(--sp-5,1.5rem);
	align-items:center;margin:0;padding:var(--sp-5,1.5rem);
	background:var(--sp-surface-2,#f5f5f3);border-radius:var(--sp-radius-md,8px);
	text-decoration:none;color:inherit;
}
.sprout-home-layout--stream .sprout-stream__card-media{
	display:block;border-radius:var(--sp-radius-sm,4px);overflow:hidden;
	aspect-ratio:var(--sp-ar-card,3/2);max-height:300px;background:var(--sp-surface,#fff);
}
.sprout-home-layout--stream .sprout-stream__card-media img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--stream .sprout-stream__card-copy{display:flex;flex-direction:column;gap:var(--sp-2,.5rem);min-width:0}
.sprout-home-layout--stream .sprout-stream__card-title{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-2,1.1875rem);
	line-height:var(--sp-lh-snug,1.3);color:var(--sp-heading);overflow-wrap:anywhere;
}
.sprout-home-layout--stream a.sprout-stream__card:hover .sprout-stream__card-title{color:var(--sp-link-hover)}
.sprout-home-layout--stream .sprout-stream__card-dek{
	color:var(--sp-text);font-family:var(--sprout-font-body);
	font-size:var(--sp-fs-0,.9375rem);line-height:var(--sp-lh-normal,1.55);
}
.sprout-home-layout--stream .sprout-stream__card .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

/* --- Trending, at the foot of the stream --- */
.sprout-home-layout--stream .sprout-stream__trending{margin-top:var(--sp-7,3rem)}
.sprout-home-layout--stream .sprout-stream__trending .aen-trending-now{margin-bottom:0}

/* --- INDIA > STATE > CITY: the lower feed is DISCOVERY beneath the India band.
       All headings step down a size; city sections step down again and go
       muted, so no state/city block reads as another primary hero. --- */
.sprout-home-layout--stream .sprout-home .aen-content-columns .aen-section-heading{border-bottom-width:1px}
.sprout-home-layout--stream .sprout-home .aen-content-columns .aen-section-heading h2{font-size:var(--sp-fs-2,1.1875rem)}
.sprout-home-layout--stream .sprout-home .aen-content-columns [data-testid^="home-section-city-"] .aen-section-heading h2{font-size:var(--sp-fs-1,1.0625rem);color:var(--sp-muted)}
@media(min-width:1200px){
	/* city sections are local discovery — one notch denser than state */
	.sprout-home-layout--stream .sprout-home .aen-content-columns [data-testid^="home-section-city-"] .aen-latest-list{grid-template-columns:repeat(4,minmax(0,1fr))}
}

/* --- P15 Batch 1B — State Network / India Network lower-feed lead cards.
       Each lead card's OWN grid cell switches from the shared 2-col
       (thumb|text) list-item layout to a stacked, larger image-over-headline
       treatment — genuinely different card composition, not a colour/heading
       swap. Only :first-child of these NEW sections is touched; the parent
       .aen-latest-list's own column count (and City First's separate
       .aen-cityfirst-feed mosaic) are unaffected. --- */
.sprout-home-layout--stream .aen-indianet-feed [data-testid="home-section-india-latest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story,
.sprout-home-layout--briefing .aen-statenet-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story{
	grid-template-columns:1fr;
}
.sprout-home-layout--stream .aen-indianet-feed [data-testid="home-section-india-latest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img,
.sprout-home-layout--briefing .aen-statenet-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img{
	width:100%;aspect-ratio:var(--sp-ar-hero,16/9);
}
.sprout-home-layout--stream .aen-indianet-feed [data-testid="home-section-india-latest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3,
.sprout-home-layout--briefing .aen-statenet-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
	font-size:var(--sp-fs-3,1.375rem);font-weight:800;letter-spacing:-.01em;
}

/* --- Smart tablet (901-1199) — root cause: this used to be ONE ≤1024px step
   that trimmed the lead's ratio AND collapsed the 3-up stream grid to 2-up
   at the same breakpoint, even though the 3-up grid has real room to spare
   at this width (a full-width card spans all 3 tracks regardless of count,
   and at 1024px each of the 3 row tracks is still ~263px — comfortable for
   a 104px thumbnail + text). Unlike City First's rail or Briefing's split,
   India Network's lead does NOT need to fully stack in this tier: its own
   type scale here tops out at ~2.1rem (smaller than Briefing's ~2.375rem at
   the same tier) and its copy column stays >=440px down to 900px — genuinely
   not cramped, so it is intentionally left as the existing side-by-side
   ratio, just extended across the full tablet tier instead of stopping at
   1024px. Only the row-grid density collapse moves down to the 701-900 tier
   below, where it is actually needed. --- */
@media(max-width:1199px){
	.sprout-home-layout--stream .sprout-home a.sprout-stream__lead{grid-template-columns:minmax(0,1.1fr) minmax(0,0.9fr);gap:var(--sp-5,1.5rem);padding-bottom:var(--sp-6,2rem);margin-bottom:var(--sp-6,2rem)}
	.sprout-home-layout--stream .sprout-home .aen-lead .sprout-stream__lead-media{width:auto;max-height:clamp(220px,34vw,300px)}
	.sprout-home-layout--stream .sprout-stream__lead-copy h2{font-size:clamp(1.5rem,1.2rem + 1.6vw,2.1rem)}
}

/* --- Small tablet / recompose (701-900) — the stream's 3-up row grid drops
   to 2-up here (matching this pass's "2 supporting stories" composition
   target) — the tier where a 104px-thumbnail row genuinely needs more than
   ~200px of width to keep a long Hindi headline comfortable at 2 lines. */
@media(max-width:900px){
	.sprout-home-layout--stream .sprout-stream__items{grid-template-columns:repeat(2,minmax(0,1fr))}
	.sprout-home-layout--stream a.sprout-stream__card{gap:var(--sp-4,1rem);padding:var(--sp-4,1rem)}
}

/* --- Mobile --- */
@media(max-width:700px){
	/* Mobile editorial-priority reorder — same technique proven on City First
	   (.sprout-home-layout--flagship, frozen/untouched): see the identical
	   comment on the Briefing mobile block above. Scoped to India Network
	   only. */
	.sprout-home-layout--stream .sprout-home{display:flex;flex-direction:column}
	.sprout-home-layout--stream .sprout-home > .aen-ticker{order:1}
	.sprout-home-layout--stream .sprout-home > .sprout-home-identity,
	.sprout-home-layout--stream .sprout-home > .aen-edition-banner{order:2}
	.sprout-home-layout--stream .sprout-home > .sprout-stream{order:3}
	.sprout-home-layout--stream .sprout-home > .aen-ad-top,
	.sprout-home-layout--stream .sprout-home > .aen-promo-top{order:4}
	.sprout-home-layout--stream .sprout-home > .aen-indianet-feed{order:5}
	.sprout-home-layout--stream .sprout-home > .aen-ad-between_posts,
	.sprout-home-layout--stream .sprout-home > .aen-promo-between_posts{order:6}
	.sprout-home-layout--stream .sprout-home > .sprout-home-watch{order:7}
	.sprout-home-layout--stream .sprout-home > .aen-newsletter{order:8}
	.sprout-home-layout--stream .sprout-home .aen-ticker{margin-bottom:0}
	.sprout-home-layout--stream .sprout-home .aen-ad-top,
	.sprout-home-layout--stream .sprout-home .aen-promo-top{margin-bottom:0}
	/* Parity fix: same identity-row restore as City First and Briefing — see
	   the identical comment on Briefing's mobile block above. */
	.sprout-home-layout--stream .sprout-home-identity{flex-direction:row;align-items:center;padding:var(--sp-2,.5rem) 0}

	.sprout-home-layout--stream .sprout-home a.sprout-stream__lead,
	.sprout-home-layout--stream .sprout-home a.sprout-stream__lead.aen-lead--textonly{grid-template-columns:minmax(0,1fr);gap:var(--sp-3,.75rem);padding-bottom:var(--sp-5,1.5rem);margin-bottom:var(--sp-5,1.5rem)}
	.sprout-home-layout--stream .sprout-home .aen-lead .sprout-stream__lead-media{width:100%;aspect-ratio:var(--sp-ar-card,3/2);max-height:none}
	.sprout-home-layout--stream .sprout-stream__lead-copy h2{font-size:var(--sp-fs-4,clamp(1.375rem,1.15rem + 1vw,1.75rem))}
	.sprout-home-layout--stream .sprout-stream__lead-copy .aen-lead-excerpt{font-size:var(--sp-fs-1,1.0625rem)}
	.sprout-home-layout--stream .sprout-stream__items{grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem)}
	.sprout-home-layout--stream a.sprout-stream__row{grid-template-columns:96px minmax(0,1fr)}
	.sprout-home-layout--stream a.sprout-stream__card{grid-template-columns:minmax(0,1fr);gap:var(--sp-3,.75rem);padding:var(--sp-4,1rem)}
	.sprout-home-layout--stream .sprout-stream__card-title{font-size:var(--sp-fs-1,1.0625rem)}

	/* Support pair stacks to 1 column at phone width — each card keeps a real,
	   readable image instead of squeezing two side-by-side on a narrow screen. */
	.sprout-home-layout--stream .sprout-stream__support{margin-bottom:var(--sp-5,1.5rem)}
	.sprout-home-layout--stream .sprout-stream__support-items{grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem)}
	.sprout-home-layout--stream .sprout-stream__card--support .sprout-stream__card-title{font-size:var(--sp-fs-2,1.1875rem)}

	/* LIVE stays a supporting utility module at phone width too — a shorter,
	   strip-like footprint so it never rivals the lead + support above it. */
	.sprout-home-layout--stream .sprout-stream__live{margin-bottom:var(--sp-4,1rem)}
	.sprout-home-layout--stream .sprout-stream__live .aen-live-tv .sprout-video-facade,
	.sprout-home-layout--stream .sprout-stream__live .aen-live-tv-offline{aspect-ratio:21/9;min-height:120px}
	.sprout-home-layout--stream .sprout-stream__live .aen-live-tv-play{width:44px;height:44px;font-size:16px}
}

/* ==== P3.4 — "Local News Briefing" / "Regional Desk" State / City layout ====
   P15 Batch 2: this block now lives in assets/css/layouts/location-briefing.css
   and is enqueued only when sprout_location_layout() === 'briefing' (see
   amar_ekta_layout_assets() in functions.php) — it never downloads on a
   State/City page using the default "City Desk" (newsroom) layout. No rule,
   selector or breakpoint changed; this is a location-only, not a content,
   change. Revert = delete that file + its enqueue call + restore this block.
   ========================================================================== */

/* ==== P3.5 — "Editorial Focus" article layout ==============================
   P15 Batch 2: this block now lives in assets/css/layouts/article-focus.css
   and is enqueued only when sprout_article_layout() === 'focus' (see
   amar_ekta_layout_assets() in functions.php) — it never downloads on an
   article using the default "Standard" (or "Feature Story") layout. No rule,
   selector or breakpoint changed. Revert = delete that file + its enqueue
   call + restore this block.
   ========================================================================== */

/* ==== P3.6 — "Magazine Story" article layout ===============================
   P15 Batch 2: this block now lives in assets/css/layouts/article-magazine.css
   and is enqueued only when sprout_article_layout() === 'magazine' (see
   amar_ekta_layout_assets() in functions.php) — it never downloads on an
   article using the default "Standard" (or "Focus Story") layout. No rule,
   selector or breakpoint changed. Revert = delete that file + its enqueue
   call + restore this block.
   ========================================================================== */

/* ==== P13.5 — "City First" premium regional newsroom (flagship) =============
   Scoped to body.sprout-home-layout--flagship, so "State Network" (briefing)
   and "India Network" (stream) are never matched. Layers over the P1.3
   .sprout-home block and loads last so equal-specificity rules win. Every
   colour is a --sp-* token, so light and dark both resolve. The active
   edition/city drives the CONTENT (inc/homepage-layouts.php); this file only
   arranges it. Revert = delete this block + the P13.5 helpers in
   inc/homepage-layouts.php + template-parts/home/newsroom-rail.php + the hero
   carousel in section-top.php + initHeroCarousel() in assets/js/theme.js.
   ========================================================================== */

/* --- Edition identity: a tight strap, never a banner --- */
.sprout-home-layout--flagship .sprout-home-identity{
	gap:var(--sp-2,.5rem) var(--sp-4,1rem);padding:var(--sp-3,.75rem) 0;
	border-bottom:1px solid var(--sp-border);
}
.sprout-home-layout--flagship .sprout-home-identity__place{font-size:var(--sp-fs-2,1.1875rem)}
.sprout-home-layout--flagship .sprout-home-identity__tag{font-size:var(--sp-fs--1,.8125rem)}

/* trim the shared zone gaps: identity -> newsroom is one measured step */
.sprout-home-layout--flagship .sprout-home > * + *{margin-top:var(--sp-6,2rem)}
/* Premium refinement pass — root cause: the generic rule above and the base
   system's own ".sprout-home > .aen-ticker + *{margin-top:1.5rem}" (line
   ~2073) are equal specificity (two classes each); this flagship rule loads
   later in the file, so it silently won and widened the gap right after the
   ticker from the deliberately tighter 24px to 32px — the one transition at
   the very top of the page that both this file's own base-system comment
   ("was reading as a ~130px chasm") and this task's brief specifically flag
   as too loose. State Network / India Network never had this regression
   (they don't load this override at all). Restores the intended 24px here;
   does not touch ad reservation, ticker height, or any other gap. */
.sprout-home-layout--flagship .sprout-home > .aen-ticker + *{margin-top:var(--sp-5,1.5rem)}
.sprout-home-layout--flagship .sprout-home .sprout-home-identity + .aen-newsroom{
	margin-top:var(--sp-5,1.5rem);padding-top:0;border-top:0;
}
/* P25 — "शहर की और बड़ी खबरें" (.homepage-section--city-big-news) moved back
   INSIDE .aen-newsroom__main, directly under the carousel (was a true DOM
   sibling after the whole hero, P16/P17 — reverted per explicit direction).
   The old ".aen-newsroom + .homepage-section--city-big-news" adjacency rule
   is gone: that pair is no longer siblings, and no replacement is needed —
   .aen-newsroom__main is `display:flex;flex-direction:column;gap:2rem`
   (declared above), which already spaces the carousel from whatever follows
   it inside main natively, at the exact same 2rem value the old rule used.
   City Coverage ("शहर की पूरी कवरेज", .homepage-section--city-coverage) is
   now the hero SECTION's direct sibling (not City Big News's — that pair
   used to be siblings inside .homepage-network--city when City Big News
   still lived outside .aen-newsroom). Reproduces the same separator at the
   new true adjacency — no value changed, only which pair it sits between. */
.sprout-home-layout--flagship .sprout-home .aen-newsroom + .homepage-section--city-coverage{
	margin-top:var(--sp-7,3rem);padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border);
}
/* P17 — City Coverage used to be followed by State News as two adjacent
   .aen-home-section siblings INSIDE .aen-cityfirst-feed, separated by the
   generic ".aen-cityfirst-feed .aen-home-section + .aen-home-section" divider
   (margin-top:3.5rem) below. Now City Coverage lives in .homepage-network--
   city and State News is the feed container's new first child, so that same
   3.5rem/padding/border treatment is reproduced here, at the container
   boundary, instead. */
.sprout-home-layout--flagship .sprout-home .homepage-network--city + .aen-content-columns{
	margin-top:var(--sp-section,3.5rem);padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border);
}

/* =========================================================================
   THE 3-ZONE NEWSROOM
   ====================================================================== */
.sprout-home-layout--flagship .aen-newsroom{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-6,2rem);
}
.sprout-home-layout--flagship .aen-newsroom__main{min-width:0;display:flex;flex-direction:column;gap:var(--sp-6,2rem)}
.sprout-home-layout--flagship .aen-newsroom__rail{min-width:0;display:flex;flex-direction:column;gap:var(--sp-6,2rem)}

/* P24's "stretch main + fill with a dark background" workaround (used
   briefly to paper over a Hero/rail height mismatch after P17) has been
   REMOVED per explicit instruction — City Big News living inside
   .aen-newsroom__main again (P25) already brings main's natural height
   close to the rails in the normal case, and any residual gap is left as
   plain page background rather than an artificial dark panel. */

@media(min-width:1200px){
	/* Premium refinement pass: the hero carousel is the single most important
	   visual anchor on the City First homepage, but the original ratio
	   (0.92 : 2.2 : 0.95, of a 4.07 total) gave it only ~51-54% of the row
	   width against the two flanking rails' combined ~46-49% — the rails read
	   as co-equal with the hero rather than clearly supporting it.
	   Follow-up (this pass): after rebalancing to 0.85:2.5:0.85 and then
	   narrowing the rail's own .aen-nr-row thumbnail (below), the rail text
	   column was ~96px — still tight for a Hindi headline. Per this pass's
	   own priority order (fix rail internal layout / thumbnail / clamp
	   before rail width, and rail width before touching the hero again), the
	   rail's internal padding/gap had no further safe headroom to give
	   (already 0 horizontal card padding, a 12px thumb-to-text gap already
	   at the token scale's smallest step), so this nudges the ratio itself
	   by the smallest amount that meaningfully helps: 0.9:2.4:0.9. Hero stays
	   clearly dominant (~57%, vs. both rails combined ~43%) while each rail
	   gains ~13px (~229px total, ~109px of that for text after the 108px
	   thumbnail) — evaluated as the right next step, not a reversal of the
	   hero-dominance fix. */
	.sprout-home-layout--flagship .aen-newsroom{
		grid-template-columns:minmax(0,0.9fr) minmax(0,2.4fr) minmax(0,0.9fr);
		gap:var(--sp-6,2rem);align-items:start;
	}
	.sprout-home-layout--flagship .aen-newsroom__rail{position:sticky;top:var(--sp-5,1.5rem)}
}
@media(min-width:1200px){
	/* Micro-fix, paired with the ratio rebalance above: at ~216px the rail
	   track's fixed 118px .aen-nr-row thumbnail left only ~86px for eyebrow +
	   headline + timestamp — too tight for a Hindi headline, and this is
	   where BOTH rails ("शहर की ताज़ा खबरें" / "आसपास की खबरें") live, since
	   they share .aen-newsroom__rail + .aen-nr-row. Correction (full-system
	   audit): this reuses the 108px thumbnail + 3-line title clamp already
	   proven at the <=700px MOBILE step (below) — the narrow-rail desktop
	   case (3 columns, ~1200px+) needs the same relief as mobile. The
	   901-1199px tablet 2-column step has its OWN, less aggressive version of
	   this same fix below (its rail column already starts wider). Row
	   height/alignment/image aspect-ratio are untouched — only the
	   thumbnail's fixed column width and the title's clamp change, and only
	   inside this rail. The hero ratio above is not touched. Neither State
	   Network nor India Network uses .aen-newsroom at all, so this has no
	   effect on either. */
	.sprout-home-layout--flagship .aen-newsroom__rail .aen-nr-row{
		grid-template-columns:108px minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-newsroom__rail .aen-nr-row__title{
		-webkit-line-clamp:3;
	}
}

/* =========================================================================
   TABLET NEWSROOM COMPOSITION — 901-1199px vs. 701-900px
   Root cause (1024x768 visual QA): this used to be ONE undifferentiated
   701-1199px step that only repositioned the 3 existing DOM blocks
   (rail-left / main / rail-right) into a main+stacked-rail-pair grid and
   otherwise inherited every DESKTOP value verbatim (1.4fr:1fr ratio, 2rem
   gap, the UNMODIFIED 118px .aen-nr-row thumbnail) — a resized desktop, not
   a composed tablet layout. Split into two deliberate zones instead:
     - 901-1199px: still the 2-zone [PRIMARY HERO][SECONDARY NEWS] grid, but
       with its own tuned ratio/gap/thumbnail (below) so the secondary
       column reads as a real editorial module, not a squeezed leftover.
     - 701-900px: at this width a narrow side rail stops paying for itself
       (see the math in the block below), so the newsroom recomposes to a
       single stacked column — reusing the exact rail/thumbnail treatment
       already proven at <=700px mobile, just extended up to where the
       2-zone grid still works. This is a genuine recomposition (order +
       display change), not a shrunk copy of the tablet-2-col rules.
   ========================================================================== */
@media(min-width:901px) and (max-width:1199px){
	/* Priority order applied: (1) hero stays clearly dominant but no longer
	   "excessive" — 1.4fr:1fr (58.3%) trimmed to 1.3fr:1fr (56.5%); (2) that
	   ~2pp goes straight to the secondary column; (3) the main/rail gap drops
	   one token step (2rem -> 1.5rem) to return a further ~3-4px to both
	   columns instead of sitting in the gutter; (4) the rail's own thumbnail
	   (still the unmodified 118px inherited from the shared .aen-nr-row base)
	   drops to 100px, a smaller cut than the 118->108px used at <=700px/
	   >=1200px because this column starts from a wider base. Net effect at
	   1024px: rail column ~394px -> ~414px, and its headline text column
	   ~263px -> ~302px (+~15%) — without touching any font-size. */
	.sprout-home-layout--flagship .aen-newsroom{
		grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);
		gap:var(--sp-5,1.5rem);align-items:start;
	}
	.sprout-home-layout--flagship .aen-newsroom__main{grid-column:1;grid-row:1 / span 2}
	.sprout-home-layout--flagship .aen-newsroom__rail--left{grid-column:2;grid-row:1}
	.sprout-home-layout--flagship .aen-newsroom__rail--right{grid-column:2;grid-row:2}
	.sprout-home-layout--flagship .aen-newsroom__rail .aen-nr-row{grid-template-columns:100px minmax(0,1fr)}
}
@media(min-width:701px) and (max-width:900px){
	/* Below 901px the 2-zone grid's own secondary column would fall under
	   ~360px (900px shell) down to ~300px (701px shell) — the exact "very
	   thin rail" shape this pass was asked to eliminate, and there is no
	   further token-scale gap/thumbnail room left to rescue it without
	   shrinking type. Recompose instead of squeezing further: single stacked
	   column, same priority order and the same rail/thumbnail values already
	   proven at <=700px mobile (below) — reused verbatim, not reinvented, so
	   the transition INTO true mobile at 700px has no discontinuity. The
	   citygrid's own 2-column base (unscoped, above) is left alone here
	   (unlike mobile's forced 1fr) since the full-width main column is wide
	   enough at this range for 2 supporting-story cards to sit comfortably
	   side by side. */
	.sprout-home-layout--flagship .aen-newsroom{display:flex;flex-direction:column;gap:var(--sp-7,3rem)}
	.sprout-home-layout--flagship .aen-newsroom__main{order:1;gap:var(--sp-6,2rem)}
	.sprout-home-layout--flagship .aen-newsroom__rail--left{order:2}
	.sprout-home-layout--flagship .aen-newsroom__rail--right{order:3}
	.sprout-home-layout--flagship .aen-newsroom__rail .aen-nr-row{grid-template-columns:108px minmax(0,1fr);min-height:80px}
	.sprout-home-layout--flagship .aen-newsroom__rail .aen-nr-row__title{-webkit-line-clamp:3}
}

/* =========================================================================
   P28 — CONSOLIDATED CITY-FIRST EDITORIAL HEADING (ekta.png).
   One shared treatment for every light-background editorial section on the
   flagship homepage: a short accent-colored left bar next to the heading
   text, bold black heading, a thin light-gray underline across the row, and
   an optional right-aligned "सभी देखें ›" action link. Replaces two
   previously-inconsistent treatments — the original plain 2px dark bottom
   border (rails/City Big News) and this session's own 3px accent-colored
   bottom border (City Coverage/State/Category) — per explicit direction
   that both read as "too thick" versus the reference. Reuses existing
   tokens only: --sp-danger for the accent bar (an existing red token,
   already used elsewhere for category/urgent accents), --sp-border for the
   underline, --sp-heading for the text color. NOT applied to Video
   (.sprout-home-watch — dark background, needs its own light-on-dark
   variant, left untouched) or Newsletter (different markup entirely). */
.sprout-home-layout--flagship .aen-newsroom .aen-section-heading,
.sprout-home-layout--flagship .aen-citygrid .aen-section-heading,
.sprout-home-layout--flagship .aen-featured-split .aen-section-heading,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-section-heading,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-section-heading,
.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-section-heading,
.sprout-home-layout--flagship .aen-shorts .aen-section-heading{
	display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3,.75rem);
	border-bottom:1px solid var(--sp-border);padding-bottom:var(--sp-2,.5rem);margin:0 0 var(--sp-4,1rem);
}
.sprout-home-layout--flagship .aen-newsroom .aen-section-heading > div,
.sprout-home-layout--flagship .aen-citygrid .aen-section-heading > div,
.sprout-home-layout--flagship .aen-featured-split .aen-section-heading > div,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-section-heading > div,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-section-heading > div,
.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-section-heading > div,
.sprout-home-layout--flagship .aen-shorts .aen-section-heading > div{
	border-left:3px solid var(--sp-danger,#B90D0B);padding-left:var(--sp-3,.75rem);
}
.sprout-home-layout--flagship .aen-newsroom .aen-section-heading h2,
.sprout-home-layout--flagship .aen-citygrid .aen-section-heading h2,
.sprout-home-layout--flagship .aen-featured-split .aen-section-heading h2,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-section-heading h2,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-section-heading h2,
.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-section-heading h2,
.sprout-home-layout--flagship .aen-shorts .aen-section-heading h2{
	margin:0;font-family:var(--sprout-font-head);font-weight:800;
	font-size:var(--sp-fs-2,1.1875rem);line-height:var(--sp-lh-tight,1.15);
	letter-spacing:-.01em;color:var(--sp-heading);
}
.sprout-home-layout--flagship .aen-newsroom .aen-section-heading > a,
.sprout-home-layout--flagship .aen-citygrid .aen-section-heading > a,
.sprout-home-layout--flagship .aen-featured-split .aen-section-heading > a,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-section-heading > a,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-section-heading > a,
.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-section-heading > a,
.sprout-home-layout--flagship .aen-shorts .aen-section-heading > a{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	color:var(--sp-heading);text-decoration:none;white-space:nowrap;
}
.sprout-home-layout--flagship .aen-newsroom .aen-section-heading > a:hover,
.sprout-home-layout--flagship .aen-citygrid .aen-section-heading > a:hover,
.sprout-home-layout--flagship .aen-featured-split .aen-section-heading > a:hover,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-section-heading > a:hover,
.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-section-heading > a:hover,
.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-section-heading > a:hover,
.sprout-home-layout--flagship .aen-shorts .aen-section-heading > a:hover{color:var(--sp-link-hover)}
.sprout-home-layout--flagship .aen-newsroom__rail .aen-section-heading h2{
	font-size:var(--sp-fs-1,1.0625rem);letter-spacing:var(--sp-tracking-eyebrow,.06em);text-transform:uppercase;
}

/* =========================================================================
   COMPACT STORY GRID sections (P29/P31/P32)
   Used below the locked Hero band by City Big News, City Coverage, State
   News and the Category module (template-parts/home/section-featured-
   split.php). P32 — the lower-section Featured Carousel presentation
   (rotating slides, image+caption/headline+excerpt split, dots/arrows/
   autoplay) has been REMOVED per explicit direction: only the TOP Hero
   carousel exists on the homepage now. This is a plain grid of up to 6
   compact cards — image, eyebrow, headline, time/share — reusing the
   EXISTING .aen-compact-card/.aen-compact-thumb/.aen-compact-copy component
   (same one City Big News originally used), no new card design. The
   existing page-level sidebar/rail is a sibling at a higher level in every
   call site — this file never creates a third column of its own.
   ====================================================================== */
.aen-featured-grid{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem);
}
@media(min-width:701px){
	.aen-featured-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1024px){
	.aen-featured-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* .aen-featured-grid-4 (P37, Category/मनोरंजन only via `variant => 'grid4'`):
   same card component/styling as .aen-featured-grid above (selectors below
   are shared, not duplicated) — only the column counts differ (4 desktop
   instead of 3), scoped to its own class so City Big News's existing
   .aen-featured-grid is completely unaffected. */
.aen-featured-grid-4{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem);
}
@media(min-width:701px){
	.aen-featured-grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1024px){
	.aen-featured-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.aen-featured-grid .aen-compact-card,
.aen-featured-grid-4 .aen-compact-card{
	flex-direction:column;gap:0;border:1px solid var(--sp-border);border-radius:var(--sp-radius-card,10px);
	background:var(--sp-surface,#fff);overflow:hidden;margin:0;
}
.aen-featured-grid .aen-compact-thumb,
.aen-featured-grid-4 .aen-compact-thumb{
	flex:none;max-width:none;width:100%;aspect-ratio:var(--sp-ar-card,3/2);border-radius:0;
}
.aen-featured-grid .aen-compact-thumb img,
.aen-featured-grid-4 .aen-compact-thumb img{transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-featured-grid a.aen-compact-card:hover .aen-compact-thumb img,
.aen-featured-grid-4 a.aen-compact-card:hover .aen-compact-thumb img{transform:scale(1.03)}
.aen-featured-grid .aen-compact-copy,
.aen-featured-grid-4 .aen-compact-copy{padding:var(--sp-3,.75rem)}
.aen-featured-grid .aen-compact-copy h3,
.aen-featured-grid-4 .aen-compact-copy h3{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);
	line-height:var(--sp-lh-snug,1.3);margin:0 0 var(--sp-2,.5rem);color:var(--sp-heading);
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.aen-featured-grid a.aen-compact-card:hover .aen-compact-copy h3,
.aen-featured-grid-4 a.aen-compact-card:hover .aen-compact-copy h3{color:var(--sp-link-hover)}
.aen-featured-grid .aen-compact-copy .aen-story-meta,
.aen-featured-grid-4 .aen-compact-copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

/* =========================================================================
   CITY COVERAGE — SLIDER + SIDE CARDS (P34) — City Coverage ONLY, opt-in via
   section-featured-split.php's `variant => 'coverage'` (its one caller,
   sprout_home_flagship_city_latest() in inc/homepage-layouts.php; renamed
   from P33's pair-carousel layout). City Big News / State News / Category
   never pass this flag, so .aen-featured-grid above is completely
   unaffected. Reuses the EXISTING lower-section carousel JS
   (initSectionCarousel in theme.js, unchanged) via its existing
   .aen-featured-carousel* selectors — a single-story-per-slide carousel,
   exactly as this same class family behaved before P33 — no JS change.
   ====================================================================== */
.aen-coverage-layout{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5,1.5rem);
}
@media(min-width:900px){
	.aen-coverage-layout{grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);align-items:start}
}

/* ---- left: single-story-per-slide carousel (image top, copy below) ---- */
.aen-featured-carousel{
	position:relative;background:var(--sp-surface,#fff);border:1px solid var(--sp-border);
	border-radius:var(--sp-radius-card,10px);overflow:hidden;
}
.aen-featured-carousel__viewport{position:relative}
.aen-featured-carousel__slide{
	position:absolute;inset:0;display:flex;flex-direction:column;min-width:0;
	text-decoration:none;color:inherit;
	opacity:0;visibility:hidden;pointer-events:none;
	transition:opacity .5s var(--sp-ease),visibility .5s var(--sp-ease);
}
.aen-featured-carousel__slide.is-active,
.aen-featured-carousel--single .aen-featured-carousel__slide{
	position:relative;opacity:1;visibility:visible;pointer-events:auto;
}
.aen-featured-carousel__media{
	display:block;width:100%;aspect-ratio:var(--sp-ar-hero,16/9);overflow:hidden;background:var(--sp-surface-2,#f3f3f1);
}
/* Desktop only (matches .aen-coverage-layout's own 2-column breakpoint) —
	 a wider/shorter ratio than the shared --sp-ar-hero token (16/9≈1.78) on
	 purpose: 11/5=2.2 cuts the image's rendered height by ~19% at the same
	 width, to visually balance against the right side's 3 stacked cards.
	 Mobile/tablet keep the base 16/9 above, unchanged. Scoped to this class
	 only, not the --sp-ar-hero token itself (used by the real Hero and
	 several unrelated components elsewhere in this file). */
@media(min-width:900px){
	.aen-featured-carousel__media{aspect-ratio:11/5}
}
.aen-featured-carousel__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-featured-carousel__slide:hover .aen-featured-carousel__media img,
.aen-featured-carousel__slide:focus-visible .aen-featured-carousel__media img{transform:scale(1.03)}
.aen-featured-carousel__copy{display:flex;flex-direction:column;gap:var(--sp-2,.5rem);padding:var(--sp-4,1rem);flex:1 1 auto}
.aen-featured-carousel__title{
	font-family:var(--sprout-font-head);font-weight:800;color:var(--sp-heading);
	font-size:clamp(1.1rem,1rem + .6vw,1.4rem);line-height:var(--sp-lh-tight,1.15);letter-spacing:-.01em;
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.aen-featured-carousel__slide:hover .aen-featured-carousel__title,
.aen-featured-carousel__slide:focus-visible .aen-featured-carousel__title{color:var(--sp-link-hover)}
.aen-featured-carousel__excerpt{
	font-family:var(--sprout-font-body);color:var(--sp-text-2,var(--sp-muted));font-size:var(--sp-fs-0,.9375rem);
	line-height:var(--sp-lh-normal,1.55);
	display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;
}
.aen-featured-carousel__copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);margin-top:auto}
.aen-featured-carousel__controls{
	position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:var(--sp-3,.75rem);
	padding:var(--sp-3,.75rem) var(--sp-4,1rem);border-top:1px solid var(--sp-border);background:var(--sp-surface,#fff);
}
.aen-featured-carousel__dots{display:flex;gap:var(--sp-2,.5rem)}
.aen-featured-carousel__dot{
	width:8px;height:8px;padding:0;border:0;border-radius:var(--sp-radius-pill,999px);cursor:pointer;
	background:var(--sp-border);transition:background var(--sp-dur,.2s) var(--sp-ease),width var(--sp-dur,.2s) var(--sp-ease);
}
.aen-featured-carousel__dot.is-active{background:var(--sp-danger,#B90D0B);width:20px}
.aen-featured-carousel__dot:focus-visible{outline:2px solid var(--sp-accent,#fdd706);outline-offset:2px}
.aen-featured-carousel__arrow{
	width:32px;height:32px;flex:0 0 auto;border-radius:50%;border:1px solid var(--sp-border);
	background:var(--sp-surface,#fff);color:var(--sp-heading);display:grid;place-items:center;
	cursor:pointer;font-size:14px;line-height:0;transition:background var(--sp-dur,.2s) var(--sp-ease);
}
.aen-featured-carousel__arrow:hover{background:var(--sp-surface-2,#f3f3f1)}
.aen-featured-carousel__arrow:focus-visible{outline:2px solid var(--sp-accent,#fdd706);outline-offset:2px}
.aen-featured-carousel__arrow-ico{transform:scaleX(-1)} /* mirrors the shared chevron-right glyph into a "prev" arrow — no new icon */
@media(prefers-reduced-motion:reduce){
	.aen-featured-carousel__slide{transition:none}
}

/* ---- right: exactly 2 FIXED horizontal cards, stacked ---- */
.aen-coverage-side{display:flex;flex-direction:column;gap:var(--sp-3,.75rem)}
.aen-coverage-card{
	position:relative;background:var(--sp-surface,#fff);border:1px solid var(--sp-border);
	border-radius:var(--sp-radius-card,10px);overflow:hidden;
}
.aen-coverage-card__link{display:flex;align-items:stretch;text-decoration:none;color:inherit;min-width:0}
.aen-coverage-card__media{
	display:block;flex:0 0 40%;width:40%;overflow:hidden;background:var(--sp-surface-2,#f3f3f1);
}
.aen-coverage-card__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-coverage-card__link:hover .aen-coverage-card__media img,
.aen-coverage-card__link:focus-visible .aen-coverage-card__media img{transform:scale(1.03)}
.aen-coverage-card__copy{display:flex;flex-direction:column;gap:var(--sp-2,.5rem);padding:var(--sp-3,.75rem);flex:1 1 auto;min-width:0}
.aen-coverage-card__title{
	font-family:var(--sprout-font-head);font-weight:800;color:var(--sp-heading);
	font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-tight,1.15);letter-spacing:-.01em;
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.aen-coverage-card__link:hover .aen-coverage-card__title,
.aen-coverage-card__link:focus-visible .aen-coverage-card__title{color:var(--sp-link-hover)}
.aen-coverage-card__excerpt{
	font-family:var(--sprout-font-body);color:var(--sp-text-2,var(--sp-muted));font-size:var(--sp-fs--1,.8125rem);
	line-height:var(--sp-lh-normal,1.55);
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.aen-coverage-card .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);margin-top:auto}

/* ---- below-the-fold 5-card row (P35, City Coverage only) ----
   Reuses the EXISTING .aen-compact-card/.aen-compact-thumb/.aen-compact-copy
   component and its exact card treatment (border, radius, typography, hover
   image-scale, no hover border) — same styling already used by
   .aen-featured-grid above; only the column counts differ (5/3/1 instead of
   3/2/1) since this is a wider, lower-priority row under the slider+cards
   block, not the main grid. */
.aen-featured-row5{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem);
	margin-top:var(--sp-6,2rem);
}
@media(min-width:701px){
	.aen-featured-row5{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(min-width:1024px){
	.aen-featured-row5{grid-template-columns:repeat(5,minmax(0,1fr))}
}
.aen-featured-row5 .aen-compact-card{
	flex-direction:column;gap:0;border:1px solid var(--sp-border);border-radius:var(--sp-radius-card,10px);
	background:var(--sp-surface,#fff);overflow:hidden;margin:0;
}
.aen-featured-row5 .aen-compact-thumb{
	flex:none;max-width:none;width:100%;aspect-ratio:var(--sp-ar-card,3/2);border-radius:0;
}
.aen-featured-row5 .aen-compact-thumb img{transition:transform var(--sp-dur,.2s) var(--sp-ease)}
.aen-featured-row5 a.aen-compact-card:hover .aen-compact-thumb img{transform:scale(1.03)}
.aen-featured-row5 .aen-compact-copy{padding:var(--sp-3,.75rem)}
.aen-featured-row5 .aen-compact-copy h3{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);
	line-height:var(--sp-lh-snug,1.3);margin:0 0 var(--sp-2,.5rem);color:var(--sp-heading);
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.aen-featured-row5 a.aen-compact-card:hover .aen-compact-copy h3{color:var(--sp-link-hover)}
.aen-featured-row5 .aen-compact-copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}

@media(max-width:700px){
	.aen-featured-carousel__title{font-size:1.05rem}
	.aen-featured-carousel__excerpt{-webkit-line-clamp:3}
}

/* =========================================================================
   CENTER — HERO CAROUSEL
   P13.5.1 root-cause fix: the viewport now has a FIXED height (aspect-ratio +
   caps), every slide is position:absolute inset:0, the image is the slide
   BACKGROUND and the copy sits over a bottom scrim. No grid stacking, no
   negative offsets, no white gap below the image, no clipped / hidden text,
   no layout jump between slides.
   ====================================================================== */
.sprout-home-layout--flagship .aen-hero-carousel{
	position:relative;border-radius:var(--sp-radius-md,8px);overflow:hidden;
	background:var(--sp-ink);
}
.sprout-home-layout--flagship .aen-hero-carousel__viewport{
	position:relative;aspect-ratio:var(--sp-ar-hero,16/9);
	max-height:clamp(340px,34vw,460px);min-height:300px;
	touch-action:pan-y;cursor:grab;
}
.sprout-home-layout--flagship .aen-hero-carousel__viewport.is-dragging{cursor:grabbing}
.sprout-home-layout--flagship .aen-hero-carousel__viewport.is-dragging .aen-hero__slide{transition:none}
.sprout-home-layout--flagship .aen-hero__slide{
	position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;
	text-decoration:none;color:inherit;min-width:0;cursor:inherit;
	opacity:0;visibility:hidden;transition:opacity .5s var(--sp-ease),visibility .5s var(--sp-ease);
}
.sprout-home-layout--flagship .aen-hero__slide img{-webkit-user-drag:none;user-select:none;pointer-events:none}
.sprout-home-layout--flagship .aen-hero__slide.is-active,
.sprout-home-layout--flagship .aen-hero-carousel--single .aen-hero__slide{opacity:1;visibility:visible}
.sprout-home-layout--flagship .aen-hero__media{position:absolute;inset:0;overflow:hidden;background:var(--sp-ink)}
.sprout-home-layout--flagship .aen-hero__media img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--flagship .aen-hero__scrim{
	position:absolute;inset:0;pointer-events:none;
	background:linear-gradient(180deg,rgba(0,0,0,.05) 0%,rgba(0,0,0,.15) 34%,rgba(0,0,0,.58) 74%,rgba(0,0,0,.85) 100%);
}
/* image-backed slide → copy over the dark scrim, always white/light + readable */
.sprout-home-layout--flagship .aen-hero__copy{
	position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--sp-2,.5rem);
	padding:var(--sp-6,2rem) var(--sp-5,1.5rem) var(--sp-5,1.5rem);
}
.sprout-home-layout--flagship .aen-hero__copy .aen-eyebrow,
.sprout-home-layout--flagship .aen-hero__title,
.sprout-home-layout--flagship .aen-hero__excerpt,
.sprout-home-layout--flagship .aen-hero__copy .aen-story-meta{color:#fff}
.sprout-home-layout--flagship .aen-hero__copy .aen-story-meta{opacity:.88;font-size:var(--sp-fs--1,.8125rem);margin:0}
/* text-only slide (no image) → solid dark panel so the same white copy still reads */
.sprout-home-layout--flagship .aen-hero__slide--textonly{background:var(--sp-ink);justify-content:center}
.sprout-home-layout--flagship .aen-hero__slide--textonly .aen-hero__copy{padding:var(--sp-6,2rem)}
.sprout-home-layout--flagship .aen-hero__title{
	font-family:var(--sprout-font-head);font-weight:800;
	font-size:clamp(1.4rem,1.1rem + 1.5vw,2.05rem);line-height:var(--sp-lh-tight,1.15);
	letter-spacing:-.01em;text-wrap:balance;overflow-wrap:anywhere;
	display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
/* P13.5.2: no underline on the hero title hover — subtle opacity feedback only,
   so there is no layout jump. Other links keep the theme's normal behaviour. */
.sprout-home-layout--flagship a.aen-hero__slide:hover .aen-hero__title,
.sprout-home-layout--flagship a.aen-hero__slide:focus-visible .aen-hero__title{text-decoration:none;opacity:.9}
.sprout-home-layout--flagship .aen-hero__excerpt{
	display:block;font-family:var(--sprout-font-body);font-size:var(--sp-fs-1,1.0625rem);
	line-height:var(--sp-lh-normal,1.55);max-width:60ch;
}
/* restrained editorial lead-letter — hero standfirst only, never a headline or a
   compact row. Larger inline first letter (no float / drop), so Devanagari
   shaping and line-height stay intact. It sits on the dark scrim → light. */
.sprout-home-layout--flagship .aen-hero__excerpt::first-letter{
	font-family:var(--sprout-font-head);font-weight:800;font-size:1.5em;line-height:1;
	color:#fff;padding-inline-end:.06em;
}

/* carousel chrome — dots only (P13.5.2.2: no visible arrow buttons; the hero
   rotates on autoplay and responds to drag / swipe). */
.sprout-home-layout--flagship .aen-hero-carousel__dots{
	position:absolute;left:0;right:0;bottom:var(--sp-2,.5rem);z-index:3;
	display:flex;justify-content:center;gap:var(--sp-2,.5rem);
	/* This full-width strip sits at a higher z-index than .aen-hero__copy
	   (z-index:1) and right where the bottom-anchored headline/meta text
	   lives — without this, its bounding box (not just the small visible
	   dot buttons) silently swallows clicks meant for the slide link
	   underneath, anywhere along the empty space beside the dots. Root
	   cause of "headline visible but not clickable". The dots themselves
	   opt back in below so they stay fully clickable. */
	pointer-events:none;
}
.sprout-home-layout--flagship .aen-hero-carousel__dot{
	pointer-events:auto;
	width:8px;height:8px;padding:0;border:0;border-radius:var(--sp-radius-pill,999px);cursor:pointer;
	background:rgba(255,255,255,.5);box-shadow:0 0 0 1px rgba(0,0,0,.3);
	transition:background var(--sp-dur,.2s) var(--sp-ease),width var(--sp-dur,.2s) var(--sp-ease);
}
.sprout-home-layout--flagship .aen-hero-carousel__dot.is-active{background:#fff;width:20px}
.sprout-home-layout--flagship .aen-hero-carousel__dot:focus-visible{outline:2px solid #fff;outline-offset:2px}

@media(prefers-reduced-motion:reduce){
	.sprout-home-layout--flagship .aen-hero__slide{transition:none}
}

/* =========================================================================
   RAILS — compact newsroom rows (P13.5.4)
   Left rail ("शहर की ताज़ा खबरें") and right rail ("आसपास की खबरें") share
   this system: a consistent 4:3 editorial thumbnail (~118px, ~88px tall —
   editorially weighted against the headline, not a tiny icon), the headline
   as the primary element clamped to 2 lines, a subtle eyebrow + meta, a
   consistent minimum row height and a 1px divider. Same on both rails.
   ====================================================================== */
.sprout-home-layout--flagship .aen-nr-list__items{list-style:none;margin:0;padding:0}
.sprout-home-layout--flagship .aen-nr-list__items > li{border-top:1px solid var(--sp-border)}
.sprout-home-layout--flagship .aen-nr-list__items > li:first-child{border-top:0}
.sprout-home-layout--flagship .aen-nr-row{
	display:grid;grid-template-columns:118px minmax(0,1fr);gap:var(--sp-3,.75rem);
	align-items:start;min-height:88px;
	text-decoration:none;color:inherit;padding:var(--sp-3,.75rem) 0;min-width:0;
}
.sprout-home-layout--flagship .aen-nr-list__items > li:first-child .aen-nr-row{padding-top:0}
.sprout-home-layout--flagship .aen-nr-row--nomedia{grid-template-columns:minmax(0,1fr);min-height:0}
/* P28 — thumbnail nudged toward square (was 4:3) to match ekta.png's rail
   rows; content/query untouched, image proportion only. */
.sprout-home-layout--flagship .aen-nr-row__thumb{
	display:block;width:100%;aspect-ratio:1/1;border-radius:var(--sp-radius-md,8px);
	overflow:hidden;background:var(--sp-surface-2);
}
.sprout-home-layout--flagship .aen-nr-row__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.sprout-home-layout--flagship .aen-nr-row__copy{min-width:0;display:flex;flex-direction:column;gap:5px;padding-top:1px}
.sprout-home-layout--flagship .aen-nr-row__copy .aen-eyebrow{margin:0}
.sprout-home-layout--flagship .aen-nr-row__title{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-0,.9375rem);
	line-height:1.45;color:var(--sp-heading);overflow-wrap:anywhere;
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.sprout-home-layout--flagship a.aen-nr-row:hover .aen-nr-row__title{color:var(--sp-link-hover)}
.sprout-home-layout--flagship .aen-nr-row .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem);margin:0}
/* P26/P28 — "और खबरें देखें" / "और पास की खबरें" — a compact bordered
   button per ekta.png (was a plain top-divider text link), only rendered by
   newsroom-rail.php when more_url is non-empty. Reuses existing tokens; no
   new color, no pill/rounded-pill styling — a restrained editorial button. */
.sprout-home-layout--flagship .aen-nr-more{
	display:block;margin-top:var(--sp-4,1rem);padding:var(--sp-2,.5rem) var(--sp-3,.75rem);
	text-align:center;border:1px solid var(--sp-border);border-radius:var(--sp-radius-sm,4px);
	background:var(--sp-surface);
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	color:var(--sp-heading);text-decoration:none;
}
.sprout-home-layout--flagship .aen-nr-more:hover{border-color:var(--sp-heading);color:var(--sp-link-hover)}

/* --- RIGHT RAIL: Live Updates block --- */
.sprout-home-layout--flagship .aen-nr-live .aen-live-block,
.sprout-home-layout--flagship .aen-nr-live .aen-live-card,
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv{margin:0}
.sprout-home-layout--flagship .aen-nr-live .aen-section-heading{margin-bottom:var(--sp-3,.75rem)}
/* P26 — near-square Live block, scoped to the flagship right rail only
   (Briefing/Stream keep their own existing 16:9 / 21:9 aspect elsewhere,
   untouched). Applies to both possible states — the actual live player
   facade AND the "not live" placeholder — so the block's shape is
   consistent whichever state is showing; only the copy inside differs. */
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv .sprout-video-facade,
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv-offline{
	aspect-ratio:4/3;min-height:0;
}
/* Live TV as ONE YouTube-style player card (flagship right rail only): the
   old separate black "LIVE / label" header bar above the player was removed
   from the markup (section-top.php no longer prints .aen-live-tv-head for
   this layout), so the live-state indicator now lives INSIDE the player,
   bottom-left over the dark video area, and the play button reads as a
   YouTube-style red rounded rect instead of the base brand-yellow circle.
   Scoped to .aen-nr-live only — briefing/stream keep the shared base
   .aen-live-tv-* styling (circular yellow button, separate head bar)
   completely unchanged. */
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv{border-radius:var(--sp-radius-card,10px)}
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv-play{
	width:64px;height:44px;border-radius:10px;
	background:var(--sprout-brand-alert,#B90D0B);color:#fff;
}
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv-indicator{
	position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:6px;
	font:700 12px var(--sprout-font-body);color:#fff;letter-spacing:.02em;pointer-events:none;
}
.sprout-home-layout--flagship .aen-nr-live .aen-live-tv-indicator .aen-live-blink{background:var(--sprout-brand-alert,#B90D0B)}

/* =========================================================================
   CENTER — supporting city stories (P28: 3-across on desktop, per ekta.png —
   was a 2x2 grid; the reference is now the source of truth for this
   section's shape, per explicit direction. A 4th card, when present, spans
   the full row width below the primary 3 rather than sitting as a narrow
   orphan or being dropped — all 4 existing posts still render, no data
   change.)
   ====================================================================== */
/* P26 — small horizontal breathing room so the grid doesn't sit flush
   against the same edges the carousel fills edge-to-edge above it. The
   section still spans the same overall center-column width (aligned with
   the carousel/hero column) — only its own inner content is inset. */
.sprout-home-layout--flagship .aen-citygrid{padding-inline:var(--sp-2,.5rem)}
.sprout-home-layout--flagship .aen-citygrid__items{
	display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-4,1rem) var(--sp-5,1.5rem);
}
/* 4th card spans the full row — DESKTOP (3-col) ONLY. At the 2-column
   tablet breakpoint below, 4 cards already form a clean 2x2 with no
   remainder, so this must NOT apply there (it would strand card 3 alone
   in an otherwise-empty row). */
@media(min-width:1024px){
	.sprout-home-layout--flagship .aen-citygrid__items > .aen-card-shell:nth-child(4){grid-column:1 / -1;}
}
.sprout-home-layout--flagship .aen-citygrid .aen-compact-card{
	flex-direction:column;gap:0;border:1px solid var(--sp-border);border-radius:var(--sp-radius-card,10px);
	background:var(--sp-surface);overflow:hidden;margin:0;
}
.sprout-home-layout--flagship .aen-citygrid .aen-compact-thumb{
	flex:none;max-width:none;width:100%;aspect-ratio:var(--sp-ar-card,3/2);border-radius:0;
}
.sprout-home-layout--flagship .aen-citygrid .aen-compact-copy{padding:var(--sp-3,.75rem)}
.sprout-home-layout--flagship .aen-citygrid .aen-compact-copy h3{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs-1,1.0625rem);
	line-height:var(--sp-lh-snug,1.3);margin:0 0 var(--sp-2,.5rem);color:var(--sp-heading);
}
/* P27 — more substantial cards at 901px+: a taller image crop (more real
   "meaningful image area", not just a strip) and a slightly larger, more
   confident headline + copy padding, so each card reads as a real editorial
   card rather than a small thumbnail row — independent of exactly how wide
   the column ends up being at a given viewport (see the P27 QA report for
   the container-width investigation this pass also did). */
@media(min-width:901px){
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-thumb{aspect-ratio:4/3;}
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-copy{padding:var(--sp-4,1rem)}
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-copy h3{
		font-size:var(--sp-fs-2,1.1875rem);-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;
	}
}
/* P26 — no hover border/outline/shadow on City Big News cards (explicit
   request): the old ".aen-citygrid a.aen-compact-card:hover{border-color:
   var(--sp-accent)}" rule is removed outright — with no hover override, the
   border simply stays at its resting var(--sp-border) color, so there is no
   visible change and no layout shift on hover. Only the headline color
   still changes on hover, unchanged. */
.sprout-home-layout--flagship .aen-citygrid a.aen-compact-card:hover .aen-compact-copy h3{color:var(--sp-link-hover)}
.sprout-home-layout--flagship .aen-citygrid .aen-compact-copy .aen-story-meta{color:var(--sp-muted);font-size:var(--sp-fs--1,.8125rem)}
.sprout-home-layout--flagship .aen-citygrid .aen-prio-badge{margin:0 0 var(--sp-2,.5rem)}

/* =========================================================================
   LOWER FEED — State context (mosaic) / India Network placeholder / Category
   (City Latest moved out to .homepage-network--city — P17, see above)
   ====================================================================== */
.sprout-home-layout--flagship .aen-cityfirst-feed .aen-home-section + .aen-home-section,
.sprout-home-layout--flagship .aen-cityfirst-feed .aen-featured-split + .aen-shorts{
	margin-top:var(--sp-section,3.5rem);padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border);
}
/* P17 — State News's own .aen-home-section is now nested one level deeper,
   inside .homepage-network--state, so it is no longer a direct sibling of
   the Category module's .aen-home-section and the rule above no longer
   matches that pair. Reproduces the exact same divider at the new true
   adjacency (the wrapper div itself carries no margin/padding/border of its
   own, so this is the only place this gap can be restored).
   QA pass — State News and Category both now render via section-featured-
   split.php (.aen-featured-split), not the old section-list.php
   (.aen-home-section), so neither this rule nor the one above it actually
   matched their real adjacency any more — the State→Category divider AND
   the Category→Shorts divider (added just above) were silently missing.
   Added .aen-featured-split as an alternate target (kept .aen-home-section
   too — still used by any other non-flagship-variant caller) with the SAME
   existing token values, not new ones. */
.sprout-home-layout--flagship .aen-cityfirst-feed .homepage-network--state + .aen-home-section,
.sprout-home-layout--flagship .aen-cityfirst-feed .homepage-network--state + .aen-featured-split{
	margin-top:var(--sp-section,3.5rem);padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border);
}
/* P20/P19's own Category/State heading-accent rules were superseded by the
   P28 consolidated heading treatment above (left accent bar + thin
   underline) and removed here to avoid a conflicting later-in-cascade
   override. */

/* =========================================================================
   P13.5.5.13 — STATE CONTEXT MOSAIC (unchanged) + P18 CITY COVERAGE
   full-width editorial redesign.
   Presentation only. section-list.php still emits the same
   .aen-card-shell > (a.aen-list-story + button.aen-card-share) rows inside
   .aen-latest-list; these rules re-lay lists into hierarchy-bearing grids
   that adapt to the real rendered card count via :has(). No new query, no
   markup change, no $seen change. Scoped to .sprout-home-layout--flagship,
   so the Briefing/Stream layouts and State + City pages / archives are
   untouched.
     • "प्रदेश की खबरें" → [data-testid^="home-section-state-"], scoped under
       .aen-cityfirst-feed (unchanged — it stays inside the shared feed/rail
       container, wrapped in .homepage-network--state) — up to 5
     • "शहर की पूरी कवरेज" → [data-testid="home-section-citylatest"] — its
       OWN rules now live in the "P18 — CITY COVERAGE" block further below,
       since it moved to .homepage-network--city (P17) and this visual pass
       (P18) gives it a composition specifically designed for that section's
       full available width, instead of stretching the old narrow-column
       mosaic. See that block's own comment for the full rationale.
   Share control: not referenced here — it keeps its existing
   .aen-card-shell-anchored position and behaviour.
   ====================================================================== */

/* ---- 1. TABLET+ shared baseline (STATE only): drop the inherited equal
   2/3-up grid. Tighter measured gaps, top-aligned tracks, uniform 2-line
   headline clamp with comfortable Devanagari leading, supporting media =
   crisp 3:2. ---- */
@media(min-width:701px){
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list{
		grid-template-columns:repeat(2,minmax(0,1fr));
		gap:var(--sp-5,1.5rem) var(--sp-4,1rem);
		align-items:start;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list .aen-list-story h3{
		display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;
		line-height:var(--sp-lh-snug,1.3);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list .aen-list-story img{
		aspect-ratio:var(--sp-ar-card,3/2);
	}

	/* ---- 2. LEAD emphasis (count-independent default) ----
	   State lead = moderately prominent: 3:2 crop, fs-2 headline. ---- */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-2,1.1875rem);font-weight:700;-webkit-line-clamp:3;
	}

	/* ---- 3. exactly 2 stories → "1 + 1 balanced": pull the lead back ---- */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-1,1.0625rem);font-weight:700;-webkit-line-clamp:2;
	}
}

/* ---- 4. TABLET 701–1023 (STATE only): single column when < 2 cards ---- */
@media(min-width:701px) and (max-width:1023px){
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
}

/* ---- 5. LAPTOP + DESKTOP ≥1024 (STATE only) ---- */
@media(min-width:1024px){

	/* 5e. STATE CONTEXT — flatter, distinct mosaic when ≥5 cards:
	   ┌───────────────┬──────┬──────┐
	   │  LEAD (1-2/1) │  s2  │  s3  │
	   ├───────────────┴──────┴──────┤
	   │   s4 (1-2)    │   s5 (3-4)  │
	   └─────────────────────────────┘ */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)){
		grid-template-columns:repeat(4,minmax(0,1fr));
		gap:var(--sp-5,1.5rem) var(--sp-4,1rem);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:first-child{grid-column:1 / span 2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(2){grid-column:3;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(3){grid-column:4;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(4){grid-column:1 / span 2;grid-row:2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(5){grid-column:3 / span 2;grid-row:2;}
	/* row-1 narrow supports read one notch down */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(2) .aen-list-story h3,
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(3) .aen-list-story h3{
		font-size:var(--sp-fs-0,.9375rem);
	}

	/* 5f. STATE — exactly 4 → lead full-width + 3 across */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))){
		grid-template-columns:repeat(3,minmax(0,1fr));
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:first-child{grid-column:1 / -1;}

	/* 5g. STATE — exactly 3 → lead full-width + 2 */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))){
		grid-template-columns:repeat(2,minmax(0,1fr));
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:first-child{grid-column:1 / -1;}

	/* 5h. STATE — exactly 1 → single full-width */
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
}

/* ---- 5i. LAPTOP 1024–1199 WITH a rail present: the main column is only
   ~680px, so "reduce the number of simultaneous columns while keeping
   hierarchy" — collapse to lead-full-width + supporting 2-up rather than
   squeeze 3–4 narrow tracks. No-rail (.aen-wide) laptop keeps the real
   mosaic. P17 structural split: City Coverage moved out of .aen-cityfirst-
   feed into .homepage-network--city (grouped with Hero + City Big News), so
   it never sits beside the rail any more — it always gets the full mosaic
   at this breakpoint now (the citylatest-specific ":not(.aen-wide)" collapse
   below no longer applies to it and has been removed here; State keeps its
   existing has-rail collapse, unchanged, since it still shares the rail). ---- */
@media(min-width:1024px) and (max-width:1199px){
	.sprout-home-layout--flagship .aen-cityfirst-feed:not(.aen-wide) [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)){
		grid-template-columns:repeat(2,minmax(0,1fr));
		gap:var(--sp-5,1.5rem) var(--sp-4,1rem);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed:not(.aen-wide) [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)) > .aen-card-shell:nth-child(-n+6){
		grid-column:auto;grid-row:auto;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed:not(.aen-wide) [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)) > .aen-card-shell:first-child{
		grid-column:1 / -1;
	}
}

/* =========================================================================
   P19 — STATE NEWS ("प्रदेश की खबरें") full-width editorial redesign.

   SCOPE: only applies when .aen-cityfirst-feed carries .aen-wide (no rail —
   the main column runs the full homepage width). When a rail IS present,
   every existing State rule above (baseline / 5e-5h / 5i) is completely
   untouched and keeps governing the narrower main-column layout exactly as
   before — these new rules simply add a higher-specificity
   ".aen-wide"-scoped override on top, they replace nothing.

   MARKUP: unchanged — same section-list.php, same feature_first/feature_size
   ('aen-card') args already passed from sprout_home_render_term_section()'s
   state row (inc/homepage-layouts.php). No PHP change. Count is always ≤5
   here (the state row's own 'count' => 5), so there is no 6th-card case
   like City Coverage has.

   WHY NOT CITY'S EXACT CROP: State's feature uses the 'aen-card' image size
   (600×400 px, registered in functions.php) — noticeably smaller than City's
   'aen-hero' (1200×720). City's feature can safely use a 1:1 crop at full
   width without upscaling; for State, a 1:1 crop at a similar column width
   would need to enlarge the 400px-tall source, causing visible softness. A
   4:3 crop is the tallest ratio this source can render at a realistic
   feature-column width (~500px) without upscaling, while still meaningfully
   narrowing the height gap against the two-row supporting grid versus the
   old 3:2 crop. Supporting cards use a 16:9 crop (shorter than City's 3:2)
   for the same reason in reverse — it brings the two-row supporting stack's
   total height down closer to the feature's, since stretching the feature
   further isn't safe here. A residual, modest height difference remains
   (disclosed in the implementation report) — this is a real limit of the
   smaller source images, not something CSS alone can fully erase without
   either the feature upscaling or the supporting images enlarging further
   past their own native resolution.
   ====================================================================== */

/* ---- Shared card baseline (.aen-wide, ≥701px) ---- */
@media(min-width:701px){
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list{
		align-items:start;gap:var(--sp-6,2rem) var(--sp-5,1.5rem);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list .aen-list-story img{
		aspect-ratio:16/9;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:4/3;
	}
}

/* ---- DESKTOP ≥1200 (.aen-wide): feature + 2x2 supporting grid ---- */
@media(min-width:1200px){
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)){
		grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(3){grid-column:3;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(4){grid-column:2;grid-row:2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(5){grid-column:3;grid-row:2;}

	/* exactly 4 (1 feature + 3 support): merge the last two into one wider
	   card spanning the full support-zone width in row 2. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))){
		grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:nth-child(3){grid-column:3;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:nth-child(4){grid-column:2 / span 2;grid-row:2;}

	/* exactly 3 (1 feature + 2 support): support stacked full-width beside
	   the feature. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))){
		grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 1: single full-width feature reads better landscape, alone. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:var(--sp-ar-hero,16/9);
	}
}

/* ---- TABLET 701–1199 (.aen-wide): feature (full column) + up to 2
   supporting stacked on the right. ---- */
@media(min-width:701px) and (max-width:1199px){
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)){
		grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:first-child{
		grid-column:1;grid-row:1 / span 2;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 2: side-by-side, no empty second row beside the feature */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child{
		grid-column:1;grid-row:1;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}

	/* 4th/5th card (if present): compact full-width rows below the
	   2-column block — no squeezed narrow tracks, no tiny cards. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:nth-child(n+4){
		grid-column:1 / -1;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:nth-child(n+4) .aen-list-story{
		display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:var(--sp-4,1rem);align-items:center;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:nth-child(n+4) .aen-list-story img{
		aspect-ratio:16/9;margin:0;
	}
}

/* ---- 7. MOBILE ≤700 (STATE only): true editorial reflow ----
   .aen-latest-list is a plain stack here (the grid starts at 701px) and every
   .aen-list-story is already the inherited compact thumb + headline + meta row.
   Only the lead is promoted to an image-top feature. P19: feature crop
   changed from 16:9 to 4:3, matching the resolution-safe crop used above
   (this one line applies regardless of .aen-wide — mobile is already a
   single stacked column either way, so there is no narrower "with rail"
   variant to preserve separately at this width). ---- */
@media(max-width:700px){
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story{
		display:block;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img{
		width:100%;aspect-ratio:4/3;max-height:clamp(200px,58vw,320px);margin:0 0 var(--sp-3,.75rem);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-state-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-1,1.0625rem);-webkit-line-clamp:3;
	}
}

/* =========================================================================
   P20 — CATEGORY / dynamic category ("मनोरंजन" on this install) full-width
   editorial redesign.

   IDENTIFIER: [data-testid^="home-section-category-"] — the SAME dynamic
   category module (sprout_home_flagship_category(), inc/homepage-layouts.php)
   for whichever category is currently admin-enabled or busiest. Nothing here
   assumes or hardcodes "मनोरंजन"; if a different category becomes active
   these rules keep applying identically, by testid prefix, not by title.

   ROOT CAUSE this replaces: with no category-specific override, this section
   inherited the theme's generic ".sprout-home .aen-latest-list" card grid
   (3-up at ≥1200px). At its real count — always ≤4 (the row's own
   'count' => 4) — a 3-column grid places 3 cards in row 1 and strands the
   4th alone in row 2 at 1/3 width, which is exactly the "stories concentrated
   toward one side, large unused horizontal space" symptom reported. Scoped
   ONLY to [data-testid^="home-section-category-"], so State News
   ([data-testid^="home-section-state-"]) is completely unaffected — every
   State rule above (P19 and the original 5e-5h/5i) is untouched by this
   block.

   SCOPE: like P19, gated to .aen-cityfirst-feed.aen-wide (no rail present —
   the main column runs the full homepage width). When a rail IS present,
   the section keeps inheriting the generic base grid exactly as it does
   today — unchanged, since that narrower context is out of scope here.

   PHP: sprout_home_flagship_category()'s row now also sets
   feature_first:true + feature_size:'aen-card' (approved — see the commit /
   conversation note in that function) so the first card requests the same
   600×400 'aen-card' size State already uses, instead of every card sharing
   the small 220×140 'aen-thumb'. Category selection, the query, post count
   (4) and ordering are unchanged; $seen/$pool untouched.

   IMAGE SOURCES: feature = 'aen-card' (600×400, 3:2 native) — same
   resolution ceiling as State, so the feature uses the same resolution-safe
   4:3 crop reasoned through in P19 (not City's 1:1 — that would need
   City's larger 'aen-hero' source to avoid upscaling). Supporting cards
   still use 'aen-thumb' (220×140) — unchanged, not modified this pass — a
   16:9 crop keeps them compact and consistent with State's supporting
   treatment; some upscaling from that small source is a pre-existing
   characteristic of section-list.php's hardcoded non-feature image size,
   disclosed again here, not something this CSS-only pass can fix.

   COUNTS: this row always caps at 4 (never City's 6 or State's 5), so only
   1/2/3/4 need handling — there is no "5+" full mosaic case here.
   ====================================================================== */

/* ---- Shared card baseline (.aen-wide, ≥701px) ---- */
@media(min-width:701px){
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list{
		align-items:start;gap:var(--sp-6,2rem) var(--sp-5,1.5rem);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list .aen-list-story img{
		aspect-ratio:16/9;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:4/3;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-2,1.1875rem);font-weight:800;letter-spacing:-.01em;-webkit-line-clamp:3;
	}
}

/* ---- DESKTOP ≥1200 (.aen-wide) ---- */
@media(min-width:1200px){
	/* exactly 4 (1 feature + 3 support): feature left (rows 1-2), s2/s3
	   across the top, s4 spans the full support-zone width in row 2 — the
	   same "merge the odd one out into a wide card" idiom P18/P19 use. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)){
		grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)) > .aen-card-shell:nth-child(3){grid-column:3;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)) > .aen-card-shell:nth-child(4){grid-column:2 / span 2;grid-row:2;}

	/* exactly 3 (1 feature + 2 support): support stacked full-width beside
	   the feature. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))){
		grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 2: clean balanced side-by-side pair. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))){
		grid-template-columns:repeat(2,minmax(0,1fr));
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:4/3;
	}

	/* exactly 1: compact full-width editorial row — not a large single
	   feature card, a horizontal thumb+text row spanning the container
	   (explicitly asked for "compact", to avoid a big blank area beside a
	   single oversized card). */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story{
		display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:var(--sp-5,1.5rem);align-items:center;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:4/3;margin:0;
	}
}

/* ---- TABLET 701–1199 (.aen-wide): feature (full column) + up to 2
   supporting stacked on the right; a 4th (if present) drops to a compact
   full-width row below. ---- */
@media(min-width:701px) and (max-width:1199px){
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)){
		grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:first-child{
		grid-column:1;grid-row:1 / span 2;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 2: side-by-side, no empty second row beside the feature */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child{
		grid-column:1;grid-row:1;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}

	/* solo card: full width, compact row (same treatment as desktop). */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story{
		display:grid;grid-template-columns:minmax(0,240px) minmax(0,1fr);gap:var(--sp-4,1rem);align-items:center;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:4/3;margin:0;
	}

	/* 4th card (if present): compact full-width row below the 2-column block. */
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:nth-child(n+4){
		grid-column:1 / -1;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:nth-child(n+4) .aen-list-story{
		display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:var(--sp-4,1rem);align-items:center;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed.aen-wide [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:nth-child(n+4) .aen-list-story img{
		aspect-ratio:16/9;margin:0;
	}
}

/* ---- MOBILE ≤700: feature on top, every supporting story stacked below as
   the inherited compact thumb-left row (no override needed for them). ---- */
@media(max-width:700px){
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story{
		display:block;
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img{
		width:100%;aspect-ratio:4/3;max-height:clamp(200px,58vw,320px);margin:0 0 var(--sp-3,.75rem);
	}
	.sprout-home-layout--flagship .aen-cityfirst-feed [data-testid^="home-section-category-"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-1,1.0625rem);-webkit-line-clamp:3;
	}
}

/* =========================================================================
   P18 — CITY COVERAGE ("शहर की पूरी कवरेज") full-width editorial redesign.

   CONTEXT: P17 moved this section out of the narrow main-column-plus-rail
   layout into .homepage-network--city, where it now runs the FULL homepage
   content width (--sprout-container, 1180px) — the same width the Hero and
   City Big News already use. The mosaic below is designed specifically for
   that width, not the old narrow-column proportions stretched out.

   MARKUP: unchanged. section-list.php (called from
   sprout_home_flagship_city_latest(), inc/homepage-layouts.php) already
   emits exactly what an editorial "feature + supporting" layout needs — the
   first .aen-card-shell is flagged via feature_first/feature_size (a larger
   'aen-hero' image crop request) and up to 6 cards total, each an identical
   .aen-card-shell > (a.aen-list-story + button.aen-card-share). No PHP
   change was needed or made; no query, $seen or $pool logic touched.

   COMPOSITION: 1 dominant feature + up to 4 supporting stories in a 2x2
   grid, closest to a real newspaper "lead story + balanced grid" block
   rather than a stretched card wall:
     ┌───────────────┬──────────┬──────────┐
     │               │  s2      │  s3      │
     │   FEATURE     ├──────────┼──────────┤
     │   (1 / 1-2)   │  s4      │  s5      │
     └───────────────┴──────────┴──────────┘
   The feature uses a 1:1 crop (not the Hero's 16:9) specifically so its
   total block height (image + 3-line headline) lands close to the combined
   height of the two stacked supporting rows — the reason the OLD 16:9 lead
   can't just be reused here: at this section's own width, a 16:9 crop next
   to a 2-row support grid left a large empty gap under the feature. A 6th
   story (when present) runs as one compact full-width row below, so no
   content is ever dropped from the pool sprout_home_flagship_city_latest()
   already fetches (still capped at 6, unchanged).
   ====================================================================== */

/* P18's own heading-accent rule was superseded by the P28 consolidated
   heading treatment (left accent bar + thin underline, same size as every
   other City-First section heading, matching ekta.png's consistency). */

/* ---- Shared card baseline (all widths ≥701px): crisp 3:2 supporting media,
   2-line clamp, top-aligned tracks. ---- */
@media(min-width:701px){
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list{
		display:grid;align-items:start;gap:var(--sp-6,2rem) var(--sp-5,1.5rem);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list .aen-list-story h3{
		display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;
		line-height:var(--sp-lh-snug,1.3);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list .aen-list-story img{
		aspect-ratio:var(--sp-ar-card,3/2);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-3,1.375rem);font-weight:800;letter-spacing:-.01em;-webkit-line-clamp:3;
	}
}

/* ---- DESKTOP ≥1200: the full "feature + 2x2" mosaic. ---- */
@media(min-width:1200px){
	/* ≥5 cards: full 1 + 4 mosaic, feature square-cropped to match the
	   2-row supporting stack's height (see block comment above). */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)){
		grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:first-child .aen-list-story img{aspect-ratio:1/1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(3){grid-column:3;grid-row:1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(4){grid-column:2;grid-row:2;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(5)) > .aen-card-shell:nth-child(5){grid-column:3;grid-row:2;}

	/* 6th card (when present): one compact full-width row below the mosaic —
	   nothing from the pool's up-to-6 posts is ever dropped or hidden. */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(6)) > .aen-card-shell:nth-child(6){grid-column:1 / -1;grid-row:3;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(6)) > .aen-card-shell:nth-child(6) .aen-list-story{
		display:grid;grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:var(--sp-5,1.5rem);align-items:center;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(6)) > .aen-card-shell:nth-child(6) .aen-list-story img{margin:0;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(6)) > .aen-card-shell:nth-child(6) .aen-list-story h3{font-size:var(--sp-fs-1,1.0625rem);font-weight:700;}

	/* exactly 4 (1 feature + 3 support): merge what would be s4/s5 into one
	   wider card spanning the full support-zone width in row 2. */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))){
		grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:first-child .aen-list-story img{aspect-ratio:1/1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:nth-child(3){grid-column:3;grid-row:1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(4)):not(:has(> .aen-card-shell:nth-child(5))) > .aen-card-shell:nth-child(4){grid-column:2 / span 2;grid-row:2;}

	/* exactly 3 (1 feature + 2 support): support stacked full-width beside
	   the feature, matching the tablet composition at desktop width. */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))){
		grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)):not(:has(> .aen-card-shell:nth-child(4))) > .aen-card-shell:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 2: side-by-side balanced pair, feature pulls back to a normal
	   crop — no multi-row span with nothing to fill it. */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))){
		grid-template-columns:repeat(2,minmax(0,1fr));
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:var(--sp-ar-card,3/2);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-1,1.0625rem);font-weight:700;-webkit-line-clamp:2;
	}

	/* exactly 1: single full-width feature, landscape crop reads better alone. */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:var(--sp-ar-hero,16/9);
	}
}

/* ---- TABLET 701–1199: feature (full column) + up to 2 supporting stacked
   on the right; a 4th/5th/6th card (if present) runs as compact full-width
   rows below — "followed by compact supporting stories if necessary". ---- */
@media(min-width:701px) and (max-width:1199px){
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)){
		grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:first-child{
		grid-column:1;grid-row:1 / span 2;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:1/1;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(3)) > .aen-card-shell:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 2: side-by-side, no empty second row beside the feature */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child{
		grid-column:1;grid-row:1;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:var(--sp-ar-card,3/2);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:has(> .aen-card-shell:nth-child(2)):not(:has(> .aen-card-shell:nth-child(3))) > .aen-card-shell:nth-child(2){grid-column:2;grid-row:1;}

	/* solo card: full width */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list:not(:has(> .aen-card-shell:nth-child(2))) > .aen-card-shell:first-child .aen-list-story img{
		aspect-ratio:var(--sp-ar-hero,16/9);max-height:clamp(240px,42vw,380px);
	}

	/* 4th/5th/6th cards: compact full-width rows below the 2-column block —
	   no squeezed narrow tracks, no tiny cards. */
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:nth-child(n+4){
		grid-column:1 / -1;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:nth-child(n+4) .aen-list-story{
		display:grid;grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:var(--sp-4,1rem);align-items:center;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:nth-child(n+4) .aen-list-story img{
		aspect-ratio:var(--sp-ar-card,3/2);margin:0;
	}
}

/* ---- MOBILE ≤700: feature on top, every supporting story stacked below as
   the inherited compact thumb-left row (.aen-list-story's own default
   markup — no override needed for them). ---- */
@media(max-width:700px){
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story{
		display:block;
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story img{
		width:100%;aspect-ratio:var(--sp-ar-card,3/2);max-height:clamp(200px,58vw,320px);margin:0 0 var(--sp-3,.75rem);
	}
	.sprout-home-layout--flagship .homepage-network--city [data-testid="home-section-citylatest"] .aen-latest-list > .aen-card-shell:first-child .aen-list-story h3{
		font-size:var(--sp-fs-2,1.1875rem);-webkit-line-clamp:3;
	}
}

/* =========================================================================
   P22 — WATCH / VIDEO NEWSROOM redesign: ONE primary video + stacked
   supporting videos (was City First's "2 equal featured + 5 compact" grid).

   MARKUP: unchanged. section-video.php already emits a flat list of
   identical <a class="aen-youtube-card"> items (from either the YouTube
   feed or the WP fallback posts) — exactly like City/State/Category's
   .aen-card-shell list before their own redesigns, this composition is
   built entirely with :first-child / :nth-child / :has() positional
   selectors, no markup change, no video query/ID/ordering change.

   IDENTITY: still the same dark .sprout-home-watch panel, same
   .aen-youtube-card bottom-gradient text overlay, same play icon, same
   image treatment (16:9, object-fit:cover) — only which card is "primary"
   and how the grid places them changed. Scoped to
   .sprout-home-layout--flagship, so Briefing ("State Network") and Stream
   ("India Network") keep their own unrelated video grid, untouched.

   HEADING: the base ".sprout-home-watch .aen-section-heading" rule (line
   ~2715, unscoped) is shared by all three layouts' Video block, so it is
   left untouched — this adds a flagship-only override instead, reusing the
   same tokenized accent City Coverage / State News / Category use. --sp-
   accent is already proven readable against this panel's dark background —
   it's the same color the heading's "See all" link already uses. Briefing/
   Stream keep their original rgba(255,255,255,.16) heading border.
   ====================================================================== */
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-section-heading{
	border-bottom-width:3px;border-bottom-color:var(--sp-accent);padding-bottom:var(--sp-3,.75rem);
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-card img{
	width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;opacity:.94;
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-card b{
	font-size:var(--sp-fs--1,.8125rem);line-height:1.3;
	padding:var(--sp-5,1.5rem) var(--sp-3,.75rem) var(--sp-2,.5rem);
	background:linear-gradient(transparent,rgba(0,0,0,.8));
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
/* the primary card: larger crop, stronger headline — same gradient overlay
   technique, just bigger, never a different visual language. */
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-card:first-child img{
	max-height:clamp(280px,26vw,420px);
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-card:first-child b{
	font-size:var(--sp-fs-1,1.0625rem);line-height:var(--sp-lh-snug,1.3);
	padding:var(--sp-6,2rem) var(--sp-4,1rem) var(--sp-4,1rem);
	background:linear-gradient(transparent,rgba(0,0,0,.82));
	-webkit-line-clamp:3;
}

@media(min-width:1200px){
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid{
		grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:var(--sp-4,1rem);
	}
	/* 2 videos: primary + 1 supporting, side by side, single row */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(2)):not(:has(> .aen-youtube-card:nth-child(3))) > .aen-youtube-card:first-child{grid-column:1;grid-row:1;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(2)):not(:has(> .aen-youtube-card:nth-child(3))) > .aen-youtube-card:nth-child(2){grid-column:2;grid-row:1;}

	/* 3 videos: primary spans 2 rows, 2 supporting stacked on the right */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(3)):not(:has(> .aen-youtube-card:nth-child(4))) > .aen-youtube-card:first-child{grid-column:1;grid-row:1 / span 2;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(3)):not(:has(> .aen-youtube-card:nth-child(4))) > .aen-youtube-card:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(3)):not(:has(> .aen-youtube-card:nth-child(4))) > .aen-youtube-card:nth-child(3){grid-column:2;grid-row:2;}

	/* 4+ videos: primary spans 3 rows, 3 supporting stacked on the right;
	   anything beyond the 4th flows into a compact full-width row below —
	   nothing from the fetched videos is ever dropped or hidden. */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:first-child{grid-column:1;grid-row:1 / span 3;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:nth-child(3){grid-column:2;grid-row:2;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:nth-child(4){grid-column:2;grid-row:3;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(5)) > .aen-youtube-card:nth-child(n+5){
		grid-column:1 / -1;
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(5)){grid-auto-rows:auto;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(5)) > .aen-youtube-card:nth-child(n+5){
		display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:var(--sp-4,1rem);align-items:center;
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(5)) > .aen-youtube-card:nth-child(n+5) img{margin:0;}

	/* solo video: full width, no second column to leave empty */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:not(:has(> .aen-youtube-card:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
}

/* ---- TABLET 701–1199: primary + 2 supporting, simplified from desktop's
   3-stack. 4th+ videos (if present) drop to a compact full-width row. ---- */
@media(min-width:701px) and (max-width:1199px){
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid{
		grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--sp-4,1rem);
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(2)) > .aen-youtube-card:first-child{
		grid-column:1;grid-row:1 / span 2;
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(2)) > .aen-youtube-card:nth-child(2){grid-column:2;grid-row:1;}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(3)) > .aen-youtube-card:nth-child(3){grid-column:2;grid-row:2;}

	/* exactly 2: side by side, no empty second row beside the primary */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(2)):not(:has(> .aen-youtube-card:nth-child(3))) > .aen-youtube-card:first-child{
		grid-row:1;
	}

	/* 4th+ videos: compact full-width row(s) below */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:nth-child(n+4){
		grid-column:1 / -1;
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:nth-child(n+4){
		display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:var(--sp-3,.75rem);align-items:center;
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:has(> .aen-youtube-card:nth-child(4)) > .aen-youtube-card:nth-child(n+4) img{margin:0;}

	/* solo video: full width */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid:not(:has(> .aen-youtube-card:nth-child(2))){
		grid-template-columns:minmax(0,1fr);
	}
}

/* ---- MOBILE ≤700: clean vertical feed — primary on top (still bigger),
   every supporting video stacked below at a consistent compact size. ---- */
@media(max-width:700px){
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-grid{
		grid-template-columns:1fr;gap:var(--sp-4,1rem);
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-youtube-card:first-child img{
		max-height:clamp(200px,52vw,300px);
	}
}

/* =========================================================================
   VIDEO — FEATURED + 2 SIDE + 4-ROW (P38, flagship only)
   New grouping wrapper classes (.aen-video-layout/.aen-video-featured/
   .aen-video-side/.aen-video-row4) — the .aen-youtube-grid mosaic rules
   above no longer apply here since flagship's markup no longer emits that
   class (still used, unchanged, by Briefing/Stream). Each .aen-youtube-card
   inside these wrappers keeps the SAME base image/title-overlay treatment
   from the shared rules above (still .aen-youtube-card selectors); only the
   height/aspect-ratio is adjusted here so the featured card visually
   matches the 2-stacked-cards' combined height, with no fixed pixel value —
   the side column's own natural (2 × 16:9 image + gap) height sets the row
   height via CSS grid stretch, and the featured image fills exactly that.
   ====================================================================== */
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-layout{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem);
}
@media(min-width:900px){
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-layout{
		grid-template-columns:minmax(0,1.7fr) minmax(240px,1fr);align-items:stretch;
	}
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-featured{display:flex}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-featured .aen-youtube-card{
	flex:1 1 auto;display:flex;flex-direction:column;
}
@media(min-width:900px){
	/* No fixed height: the featured image fills whatever height the grid
	   row ends up being (set by the side column's own natural height). */
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-featured .aen-youtube-card{
		height:100%;
	}
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-featured .aen-youtube-card img{
		height:100%;aspect-ratio:unset;max-height:none;
	}
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-side{
	display:flex;flex-direction:column;gap:var(--sp-3,.75rem);
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-side .aen-youtube-card{flex:1 1 auto}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-side .aen-youtube-card img{
	aspect-ratio:16/9;max-height:none;
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-row4{
	display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4,1rem);margin-top:var(--sp-5,1.5rem);
}
@media(min-width:701px){
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-row4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(min-width:1024px){
	.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-row4{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.sprout-home-layout--flagship .sprout-home .sprout-home-watch .aen-video-row4 .aen-youtube-card img{
	aspect-ratio:16/9;max-height:none;
}

/* =========================================================================
   SHORT VIDEOS — a horizontal portrait strip, immediately before Video
   (P13.5.1). Data: aen_youtube_shorts() — existing YouTube layer, no new API.
   ====================================================================== */
/* P13.5.5.12: the strip now renders inside .aen-main-column, so it shares the
   central content width of the editorial sections above it. Match their
   between-section rhythm (3.5rem margin + 2rem padding + a 1px top rule) and
   their subtle 1px heading divider — no thick rule, no widget styling. */
/* P15 State Homepage composition pass — the selector prefix below was widened
   from `.sprout-home-layout--flagship` to `:is(.sprout-home-layout--flagship,
   .sprout-location)` so the SAME Shorts presentation (no duplicated CSS, no
   new component) also renders correctly on the State page's Short Videos
   band. Every value is untouched; only the scope changed. The one rule that
   is genuinely homepage-specific (.aen-cityfirst-feed's border-top variant)
   is deliberately left flagship-only below — .aen-cityfirst-feed does not
   exist under .sprout-location, so it would never match there anyway. */
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts{margin-top:var(--sp-section,3.5rem)}
.sprout-home-layout--flagship .aen-cityfirst-feed .aen-home-section + .aen-shorts{
	padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border);
}
/* P21/P28 — Short Videos heading: same consolidated left-bar + thin-
   underline treatment as the rest of the City-First homepage (see the P28
   block earlier in this file). The .sprout-home-layout--flagship-scoped
   copy of that block already covers .aen-shorts .aen-section-heading, so
   only the border/margin shorthand here needs to drop to the thin
   underline; the left-bar override below still applies here for
   .sprout-location too (dead selector today — Shorts isn't rendered there
   — kept for consistency with the rest of this shared, reused block). */
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts .aen-section-heading{
	display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3,.75rem);
	border-bottom:1px solid var(--sp-border);padding-bottom:var(--sp-2,.5rem);margin:0 0 var(--sp-3,.75rem);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts .aen-section-heading > div{
	border-left:3px solid var(--sp-danger,#B90D0B);padding-left:var(--sp-3,.75rem);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts .aen-section-heading h2{
	margin:0;font-family:var(--sprout-font-head);font-weight:800;font-size:var(--sp-fs-2,1.1875rem);
	line-height:var(--sp-lh-tight,1.15);letter-spacing:-.01em;color:var(--sp-heading);
}
/* P13.5.5.4: compact newsroom sort pills above the Shorts row. Client-side
   reorder only — no refetch. Tokens → correct in light + dark. */
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filters{
	display:flex;flex-wrap:wrap;gap:var(--sp-2,.5rem);margin:0 0 var(--sp-3,.75rem);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filter{
	appearance:none;-webkit-appearance:none;
	border:1px solid var(--sp-border);background:var(--sp-surface);color:var(--sp-text-2,var(--sp-muted));
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	line-height:1;letter-spacing:.01em;padding:7px 14px;border-radius:var(--sp-radius-pill,999px);
	cursor:pointer;transition:background var(--sp-dur,.2s) var(--sp-ease),color var(--sp-dur,.2s) var(--sp-ease),border-color var(--sp-dur,.2s) var(--sp-ease);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filter:hover:not(:disabled){border-color:var(--sp-heading);color:var(--sp-heading)}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filter.is-active{background:var(--sp-heading);border-color:var(--sp-heading);color:var(--sp-surface)}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filter:focus-visible{outline:2px solid var(--sp-accent,#FDD706);outline-offset:2px}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filter:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:700px){
	:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;overscroll-behavior-inline:contain}
	:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filters::-webkit-scrollbar{display:none}
	:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__filter{flex:0 0 auto}
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__scroller{position:relative}
/* P13.5.5.9 / P13.5.5.10 / P21: Hero-style clean strip — EXACTLY 5 equal
   cards fill the visible track on desktop (P21: was 6 — widened slightly so
   each card reads as a stronger, more "energetic" short-video tile per the
   Short Videos redesign, still well short of a "feature card" — every card
   remains the same fixed size); the rest are reached by native horizontal
   scroll / drag / swipe.
   The column width is a single FIXED length — never minmax(). A minmax() with a
   px floor is pinned to that floor whenever the row overflows (it always does),
   which defeats the calc and lets a 6th card show. 5 cards + 4 gaps === the
   track width (minus a 1px per-card safety so rounding can never reveal a
   sliver), so card 6 begins fully outside the viewport. No arrows, no visible
   scrollbar; overflow-y is hard-hidden so a phantom scrollbar can't steal
   width from the 100% basis. */
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__track{
	list-style:none;margin:0;padding:0 0 var(--sp-2,.5rem);
	display:grid;grid-auto-flow:column;
	grid-auto-columns:calc((100% - 4 * var(--sp-4,1rem)) / 5 - 1px);gap:var(--sp-4,1rem);
	overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;
	scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__track::-webkit-scrollbar{display:none}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__item{scroll-snap-align:start;min-width:0}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-short{display:flex;flex-direction:column;gap:var(--sp-2,.5rem);text-decoration:none;color:inherit;min-width:0}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-short__media{
	position:relative;display:block;aspect-ratio:9/16;border-radius:var(--sp-radius-card,10px);
	overflow:hidden;background:var(--sp-ink);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-short__media img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block;transition:transform var(--sp-dur,.2s) var(--sp-ease)}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-short__scrim{
	position:absolute;inset:0;pointer-events:none;
	background:linear-gradient(180deg,rgba(0,0,0,.24) 0%,transparent 26%,transparent 70%,rgba(0,0,0,.34) 100%);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-short__play{
	position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
	width:40px;height:40px;display:grid;place-items:center;font-size:15px;line-height:0;
	border-radius:var(--sp-radius-pill,999px);background:rgba(17,19,18,.62);color:#fff;
	box-shadow:0 0 0 1px rgba(255,255,255,.22);
}
:is(.sprout-home-layout--flagship, .sprout-location) .aen-short__title{
	font-family:var(--sprout-font-head);font-weight:600;font-size:var(--sp-fs-0,.9375rem);
	line-height:1.4;color:var(--sp-heading);overflow-wrap:anywhere;
	display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
:is(.sprout-home-layout--flagship, .sprout-location) a.aen-short:hover .aen-short__title{color:var(--sp-link-hover)}
:is(.sprout-home-layout--flagship, .sprout-location) a.aen-short:hover .aen-short__media img{transform:scale(1.04)}
:is(.sprout-home-layout--flagship, .sprout-location) a.aen-short:hover .aen-short__play{background:var(--sp-danger,#B90D0B)}

@media(min-width:701px) and (max-width:1199px){
	/* P21: tablet breakpoint aligned to the 701-1199px range used by the other
	   redesigned sections (was ≤1023px). EXACTLY 3 equal cards fill the width
	   here (was 4) — "3-ish" per the Short Videos redesign, large enough to
	   stay readable rather than squeezed; the rest swipe. Fixed length for
	   the same reason as desktop — no minmax() px floor. */
	:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__track{grid-auto-columns:calc((100% - 2 * var(--sp-4,1rem)) / 3 - 1px)}
}
@media(max-width:700px){
	:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts{margin-top:var(--sp-7,3rem)}
	:is(.sprout-home-layout--flagship, .sprout-location) .aen-shorts__track{grid-auto-columns:minmax(144px,46%);gap:var(--sp-3,.75rem)}
}

/* =========================================================================
   TRENDING — lightweight discovery tail (kept from P13.1)
   ====================================================================== */
.sprout-home-layout--flagship .aen-cityfirst-discover{
	margin-top:var(--sp-section,3.5rem);padding-top:var(--sp-6,2rem);border-top:1px solid var(--sp-border);
}
.sprout-home-layout--flagship .aen-cityfirst-discover .aen-trending-now{background:transparent;border:0;border-radius:0;padding:0;margin:0}
.sprout-home-layout--flagship .aen-cityfirst-discover .aen-widget-title{
	font-family:var(--sprout-font-head);font-weight:700;font-size:var(--sp-fs--1,.8125rem);
	letter-spacing:var(--sp-tracking-eyebrow,.09em);text-transform:uppercase;
	color:var(--sp-muted);margin:0 0 var(--sp-4,1rem);
}
.sprout-home-layout--flagship .aen-cityfirst-discover .aen-trending-list{columns:2;column-gap:var(--sp-7,3rem)}
@media(min-width:1200px){
	.sprout-home-layout--flagship .aen-cityfirst-discover .aen-trending-list{columns:3}
}
.sprout-home-layout--flagship .aen-cityfirst-discover .aen-trending-list li{break-inside:avoid;border-bottom:1px solid var(--sp-border)}
.sprout-home-layout--flagship .aen-cityfirst-discover .aen-trending-list li:hover{background:none}
.sprout-home-layout--flagship .aen-cityfirst-discover .aen-trending-list b{color:var(--sp-muted);font-size:var(--sp-fs-1,1.0625rem)}

/* =========================================================================
   DARK MODE — everything rides the dark-aware --sp-* tokens
   (inc/branding-system.php). The hero copy sits on a dark scrim / ink panel in
   BOTH themes, and the carousel nav is white-on-image in both — so no
   theme-specific overrides are needed here. The theme applies dark via
   html[data-theme="dark"] (JS mirrors the OS pref).
   ====================================================================== */

/* =========================================================================
   TABLET (<=1024)
   ====================================================================== */
@media(max-width:1023px){
	.sprout-home-layout--flagship .aen-hero-carousel__viewport{min-height:280px;max-height:clamp(300px,42vw,400px)}
	.sprout-home-layout--flagship .aen-hero__copy{padding:var(--sp-5,1.5rem) var(--sp-4,1rem) var(--sp-4,1rem)}
	/* P28 — tablet: 2 columns (was 3 on desktop) so cards stay readable
	   instead of squeezing 3 across a narrower center column; the 4th card
	   (if present) still spans the full row, same as desktop. */
	.sprout-home-layout--flagship .aen-citygrid__items{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4,1rem)}
	/* City Big News is now capped to exactly 3 cards (right-rail balance
	   pass) — at this 2-column breakpoint that leaves a lone 3rd/last card
	   in row 2; span it full-width so it doesn't strand next to empty
	   space, same treatment as the desktop 4th-card rule above. */
	.sprout-home-layout--flagship .aen-citygrid__items > .aen-card-shell:nth-child(3):last-child{grid-column:1 / -1}
}

/* =========================================================================
   MOBILE (<=700) — single-column editorial sequence, priority order
   ====================================================================== */
@media(max-width:700px){
	/* Mobile editorial-priority reorder — root cause: inc/homepage.php renders
	   the homepage's top-level blocks (ticker / ad_top / strap / editorial /
	   feed / ad_between / video / newsletter) as plain DOM siblings of
	   .sprout-home in one fixed, admin-configured order (ticker, ad_top,
	   strap, editorial...) — there is no per-breakpoint branch in PHP, and
	   this is the exact order every screenshot has shown: ticker, then the
	   'top' ad slot, THEN the identity strap and hero. That put a second ad
	   between "Breaking" and the lead story on every phone width, regardless
	   of how tight the surrounding spacing was. Reusing the same technique
	   already proven on .aen-newsroom's own left-rail/main/right-rail
	   children (flex + order, mobile-only): making .sprout-home a column
	   flex container lets each existing top-level block be repositioned
	   visually without moving a single line of PHP, duplicating any markup,
	   or changing the ad's slot/id/dimensions/mode — order is a rendering
	   property only, so sibling-combinator rules elsewhere in this file
	   (".homepage-network--city + .aen-content-columns" etc.) still resolve from the
	   unchanged DOM and keep applying to whichever element they were
	   already targeting. City First (flagship) only; State Network / India
	   Network keep their existing DOM order untouched, as scoped. */
	.sprout-home-layout--flagship .sprout-home{display:flex;flex-direction:column}
	.sprout-home-layout--flagship .sprout-home > .aen-ticker{order:1}
	.sprout-home-layout--flagship .sprout-home > .sprout-home-identity,
	.sprout-home-layout--flagship .sprout-home > .aen-edition-banner{order:2}
	/* P17/P25 — .aen-newsroom (Hero, which now contains City Big News again
	   internally — see P25) is not a direct child of .sprout-home:
	   sprout_home_flagship_city_network() wraps it together with City
	   Coverage inside one <div class="homepage-network homepage-network--
	   city">, which IS the direct child here. Everything after it keeps the
	   same relative sequence. */
	.sprout-home-layout--flagship .sprout-home > .homepage-network--city{order:3}
	/* the moved slot: was order 2 (ad_top loads right after the ticker in the
	   admin-configured block order) — now after the hero/newsroom instead of
	   before the identity strap. Both possible slot-'top' markups are
	   covered so the reorder holds in every Promotions & Ads mode. */
	.sprout-home-layout--flagship .sprout-home > .aen-ad-top,
	.sprout-home-layout--flagship .sprout-home > .aen-promo-top{order:4}
	.sprout-home-layout--flagship .sprout-home > .aen-cityfirst-feed{order:5}
	.sprout-home-layout--flagship .sprout-home > .aen-ad-between_posts,
	.sprout-home-layout--flagship .sprout-home > .aen-promo-between_posts{order:6}
	.sprout-home-layout--flagship .sprout-home > .sprout-home-watch{order:7}
	.sprout-home-layout--flagship .sprout-home > .aen-newsletter{order:8}
	/* Mobile final polish — root cause: the shared, non-flagship-scoped mobile
	   rule ".sprout-home-identity{flex-direction:column;align-items:stretch}"
	   (P1.3, above) forces the place/tag line and the city-chip strip onto two
	   FULL-WIDTH stacked rows on every homepage layout, even when the content
	   easily fits one row and the base rule already sets flex-wrap:wrap for
	   exactly the case where it doesn't. That costs City First's identity
	   strap a whole extra text row + row-gap (~35-40px) it doesn't need before
	   the hero even starts. Scoped to flagship only (State/India's own mobile
	   identity is untouched — not in scope here): restore the row layout: it
	   wraps to two lines by itself, via the inherited flex-wrap, whenever a
	   long place/state name genuinely doesn't fit, so nothing is forced. */
	.sprout-home-layout--flagship .sprout-home-identity{flex-direction:row;align-items:center;padding:var(--sp-2,.5rem) 0}
	/* Top-chain audit (390 first-viewport pass) — two genuinely duplicated
	   margins found above the identity band, both on top of the real ad
	   reservation (untouched): (1) .aen-ticker carries its own margin-bottom
	   (14px at <=960px) on top of the SAME edge already being set by
	   ".sprout-home > .aen-ticker + *{margin-top:1.5rem}" (the rule that
	   actually owns this gap); (2) the 'top' ad slot inherits the generic,
	   non-token ".aen-ad{margin:26px 0}" — its margin-top is already beaten
	   by the same sibling rule, but nothing overrides its margin-bottom, so
	   it stacks with the identity band's own incoming margin-top. Whether or
	   not the browser happens to collapse these adjacent block margins, they
	   are redundant: the sibling-margin rule is the single source of truth
	   for both gaps already. Zeroing the elements' own contribution removes
	   the duplication outright rather than depending on collapse behaviour.
	   Scoped to City First (flagship) only, mobile only, per this task's
	   scope — State Network / India Network share the same markup and would
	   benefit identically, but are intentionally left untouched here.
	   Nothing here touches the ad's reserved width/height. */
	.sprout-home-layout--flagship .sprout-home .aen-ticker{margin-bottom:0}
	.sprout-home-layout--flagship .sprout-home .aen-ad-top,
	.sprout-home-layout--flagship .sprout-home .aen-promo-top{margin-bottom:0}
	.sprout-home-layout--flagship .aen-newsroom{display:flex;flex-direction:column;gap:var(--sp-7,3rem)}
	/* hero -> city quick news -> supporting -> live -> nearby */
	.sprout-home-layout--flagship .aen-newsroom__main{order:1;gap:var(--sp-6,2rem)}
	.sprout-home-layout--flagship .aen-newsroom__rail--left{order:2}
	.sprout-home-layout--flagship .aen-newsroom__rail--right{order:3}
	/* Root cause: aspect-ratio(3/2) and min-height:360px were fighting at
	   true phone widths. At 390px the shell content column is ~358px, so 3:2
	   alone gives ~239px — but min-height:360px overrode that to a near-
	   square ~360px box, ~120px TALLER than the ratio this component claims
	   to use, pushing the lead story needlessly far down the first viewport
	   (the exact complaint at 390/430). 360px only ever matched the intended
	   ratio from ~540px content width up, i.e. it was never actually doing
	   useful work below that — it was tuned for a width this rule doesn't
	   run at. Lowered to 270px: still taller than the raw 3:2 result at
	   360-430px content widths (so it keeps engaging there, +~30-50px over
	   pure ratio as a deliberate floor for the overlay copy — eyebrow + a
	   3-line title + excerpt + meta needs ~250px to avoid clipping inside
	   this absolutely-positioned, overflow:hidden-clipped slide), while
	   recovering ~90px versus the old value; ratio alone still governs from
	   ~480px content width up (480px viewport) exactly as before. */
	.sprout-home-layout--flagship .aen-hero-carousel__viewport{aspect-ratio:var(--sp-ar-card,3/2);min-height:270px;max-height:none}
	.sprout-home-layout--flagship .aen-hero__copy{padding:var(--sp-5,1.5rem) var(--sp-4,1rem) var(--sp-4,1rem)}
	.sprout-home-layout--flagship .aen-hero__title{font-size:clamp(1.35rem,1.1rem + 2.4vw,1.75rem);-webkit-line-clamp:3}
	.sprout-home-layout--flagship .aen-citygrid__items{grid-template-columns:1fr;gap:0}
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-card{
		flex-direction:row;border:0;border-radius:0;border-bottom:1px solid var(--sp-border);
	}
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-card:last-child{border-bottom:0}
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-thumb{flex:0 0 38%;max-width:132px;width:auto;aspect-ratio:var(--sp-ar-thumb,4/3)}
	.sprout-home-layout--flagship .aen-citygrid .aen-compact-copy{padding:0 0 0 var(--sp-3,.75rem)}
	/* rails: keep the same compact horizontal thumbnail + text row on phones,
	   just a touch narrower — never an icon, never a giant image card. */
	.sprout-home-layout--flagship .aen-nr-row{grid-template-columns:108px minmax(0,1fr);min-height:80px}
	.sprout-home-layout--flagship .aen-nr-row__title{-webkit-line-clamp:3}
}


/* =====================================================================
   P14.2 — NORMAL NEWS CARD SHARE CONTROL

   ONE subtle 3-node share button (sprout_card_share() -> sprout_icon
   'share-nodes') on every normal news / story card. Video, Shorts, Live
   TV, the article social-share row, header/footer/nav, pagination,
   breadcrumb and place/directory cards deliberately never render it.

   DOM: full-card <a> components are wrapped in .aen-card-shell (a
   position:relative flex column). The <a> keeps its class, href and
   data-testid so every existing selector, :hover and layout rule still
   matches it. The <button> is an independent sibling of the <a> — no
   nested interactive elements. <article onclick> cards (post-card /
   post-list) place the button directly in the copy area.
   ===================================================================== */
.aen-card-shell{position:relative;display:flex;flex-direction:column;min-width:0}
.aen-card-shell > a{align-self:stretch;flex:1 1 auto;min-width:0}

.aen-card-share{
	position:absolute;right:var(--sp-2,.5rem);bottom:var(--sp-2,.5rem);z-index:3;
	display:inline-flex;align-items:center;justify-content:center;
	width:32px;height:32px;padding:0;margin:0;border:0;background:none;
	color:var(--sp-heading);cursor:pointer;border-radius:var(--sp-radius-sm,4px);
	-webkit-tap-highlight-color:transparent;
	transition:color var(--sp-dur,.2s) var(--sp-ease);
}
.aen-card-share .sprout-ico{font-size:15px;line-height:0}
.aen-card-share .sprout-ico > svg{width:1em;height:1em}
.aen-card-share:hover{color:var(--sp-accent)}
.aen-card-share:focus-visible{outline:2px solid var(--sp-accent);outline-offset:2px}
.aen-card-share[aria-expanded="true"]{color:var(--sp-accent)}

/* P14.3 — branded share popover (cloned from #aen-card-share-tpl by theme.js).
   position:fixed → out of flow, clamped to the viewport by the JS, so it can
   never shift layout or cause horizontal overflow. Tokens only → auto light/
   dark. Restrained border + soft shadow, short fade-in, reduced-motion safe. */
.aen-card-share-pop{
	position:fixed;z-index:var(--sp-z-popover,1000);box-sizing:border-box;
	width:min(236px,calc(100vw - 24px));
	padding:.625rem;
	background:var(--sp-surface);color:var(--sp-text);
	border:1px solid var(--sp-border);border-radius:var(--sp-radius-md,8px);
	/* was a hardcoded rgba(0,0,0,…) shadow — same class of bug the P15 audit
	   found in --sp-shadow-1/2/3 (already fixed with dark-mode overrides):
	   a black shadow against a near-black dark-mode page is nearly invisible.
	   The token now resolves correctly in both themes. */
	box-shadow:var(--sp-shadow-2,0 6px 20px rgba(17,19,18,.09));
	opacity:0;transform:translateY(-4px);
	transition:opacity .14s var(--sp-ease,ease),transform .14s var(--sp-ease,ease);
}
.aen-card-share-pop.is-open{opacity:1;transform:none}
.aen-card-share-pop__head{
	margin:0 0 6px;
	font-family:var(--sprout-font-head);font-weight:600;font-size:11px;line-height:1.2;
	letter-spacing:.03em;text-transform:uppercase;color:var(--sp-muted);
}
.aen-card-share-pop__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-1,.25rem)}
.aen-card-share-pop__opt{
	display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
	min-height:44px;padding:6px 2px;margin:0;border:1px solid transparent;border-radius:var(--sp-radius-sm,4px);
	background:none;-webkit-appearance:none;appearance:none;cursor:pointer;
	text-decoration:none;color:var(--sp-text-2,var(--sp-muted));
	font-family:var(--sprout-font-head);font-weight:600;font-size:10px;line-height:1;text-align:center;
	transition:background var(--sp-dur,.2s) var(--sp-ease),border-color var(--sp-dur,.2s) var(--sp-ease),color var(--sp-dur,.2s) var(--sp-ease);
}
.aen-card-share-pop__opt .sprout-ico{font-size:17px;line-height:0;color:var(--sp-heading)}
.aen-card-share-pop__opt .sprout-ico > svg{width:1em;height:1em}
.aen-card-share-pop__opt:hover{background:var(--sp-surface-2);border-color:var(--sp-border);color:var(--sp-heading)}
.aen-card-share-pop__opt:focus-visible{outline:2px solid var(--sp-accent);outline-offset:2px}
@media(max-width:420px){
	.aen-card-share-pop{width:min(224px,calc(100vw - 20px))}
	.aen-card-share-pop__grid{grid-template-columns:repeat(2,1fr)}
}
@media(prefers-reduced-motion:reduce){
	.aen-card-share-pop{transition:none;transform:none}
}

/* <article onclick> cards: anchor the button to the copy block's lower-right */
.aen-story-card,
.aen-list-story{position:relative}
.aen-story-card > .aen-card-share,
.aen-list-story > .aen-card-share{right:var(--sp-3,.75rem);bottom:var(--sp-3,.75rem)}

/* Restore "last card = no divider" after .aen-card-shell wrapping (each card
   is now the only child of its shell, so :last-child on the card matched all). */
.sprout-location-layout--briefing .sprout-locbrief__cards .aen-card-shell .sprout-locbrief__card{border-bottom:1px solid var(--sp-border)}
.sprout-location-layout--briefing .sprout-locbrief__cards .aen-card-shell:last-child .sprout-locbrief__card{border-bottom:0}

/* Trending widget rows are matched by `.aen-trending-list li > a` (direct
   child). After wrapping the <a> in .aen-card-shell that no longer matches, so
   re-assert the row grid on the wrapped anchor. */
.aen-trending-list li .aen-card-shell{display:block}
.aen-trending-list li .aen-card-shell > a{display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start;color:inherit;text-decoration:none}
.aen-trending-list .aen-card-share{right:0;bottom:0}

/* Mobile: a touch-friendlier target, tucked closer to the edge */
@media(max-width:700px){
	.aen-card-share{width:36px;height:36px;right:var(--sp-1,.25rem);bottom:var(--sp-1,.25rem)}
	.aen-trending-list li .aen-card-shell > a{grid-template-columns:28px 1fr;gap:9px}
	.sprout-home-layout--flagship .aen-citygrid .aen-card-shell .aen-compact-card{border-bottom:1px solid var(--sp-border)}
	.sprout-home-layout--flagship .aen-citygrid .aen-card-shell:last-child .aen-compact-card{border-bottom:0}
}
/* ===================================================================== */
