
/* IndexedList — SINGLE SOURCE (2026-09-09, owner brief). tools/build-indexed-list.py writes this into each consumer's
   region. The rules are the ae/bs-free-zone.html "Restrictions and trade-offs" implementation (the .svc-core shell, the
   .core-list two-column list and the "variant B: indexed core-list" rules), moved here verbatim: an open two-column list,
   a quiet mono two-digit index (data-idx) at the left of each item, bold title with an 18px hairline under it, muted
   supporting text; one column under 780px. Copy and the index come from data; no cards, icons, labels or tags. */
.svc-core { padding:80px 0;border-top:1px solid var(--line-soft) }
.svc-core .sec-head { max-width: 720px; margin-bottom: 32px; }
.svc-core .sec-head h2 { font-size: clamp(26px, 2.8vw, 34px); line-height: 1.15; letter-spacing: -.02em; font-weight: 500; margin: 0 0 14px; color: var(--text); }
.svc-core .sec-head .lede { font-size: 15.5px; line-height: 1.65; color: var(--muted); margin: 0; }
.core-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 24px 40px; }
.core-list li { display: flex; flex-direction: column; gap: 6px; padding-left: 18px; border-left: 1px solid var(--line-soft); }
.core-list li b { font-size: 14.5px; color: var(--text); font-weight: 500; letter-spacing: -.005em; }
.core-list li span { color: var(--muted); font-size: 13.5px; line-height: 1.6; }
@media (max-width: 780px) { .core-list { grid-template-columns: 1fr; gap: 20px; } }
.core-list--indexed li { padding-left: 34px; border-left: none; position: relative; }
.core-list--indexed li::before { content: attr(data-idx); position: absolute; left: 0; top: 2px; font-family: var(--mono); font-size: 10.5px; letter-spacing: .16em; color: var(--mineral); opacity: .85; line-height: 1.6; }
.core-list--indexed li b { position: relative; padding-bottom: 6px; }
.core-list--indexed li b::after { content: ""; position: absolute; left: 0; bottom: 0; width: 18px; height: 1px; background: var(--line); }

/* Grouped decision list (2026-09-09, owner brief): the criteria run under a small group heading; a group of kind
   "conclusion" is one restrained bordered surface — same type scale and colour family, no colour state, no icon,
   no CTA — so a different outcome reads as a different outcome, not as the sixth identical item. */
.core-groups { display: grid; gap: 36px; }
.core-group-label { margin: 0 0 16px; font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; font-weight: 500; color: var(--muted); }
.core-group--conclusion .core-list { grid-template-columns: 1fr; gap: 0; padding: 20px 22px 22px; border: 1px solid var(--line-soft); border-radius: 14px; background: var(--surface-tinted); }
.core-group--conclusion .core-list li span { max-width: 62ch; }
/* Outcome band (2026-09-10, owner brief): a conclusion group with one sentence and no items — the answer beneath the
   criteria, not a sixth item: the same quiet bordered surface, the uppercase label, one line of text; no number, no CTA,
   no icon, no status colour. The list fills row-first (01 02 / 03 04 / 05) so the numbers read left to right. */
.core-group--outcome { padding: 20px 22px 22px; border: 1px solid var(--line-soft); border-radius: 14px; background: var(--surface-tinted); }
.core-group--outcome .core-group-label { margin-bottom: 8px; }
.core-outcome { margin: 0; color: var(--text); font-size: 15px; line-height: 1.6; max-width: 72ch; }
/* Hover (owner, 2026-09-10): on a fine pointer a hovered criterion takes the outcome band's surface. The item carries its
   own inset (padding, no negative margin) so the wash has room; the group label shares the inset so the edges align. */
.core-group .core-list--indexed { gap: 12px 24px; }
.core-group .core-list--indexed li { border-radius: 10px; padding: 10px 12px 10px 44px; transition: background-color .18s ease; }
.core-group .core-list--indexed li::before { left: 12px; top: 12px; }
.core-group > .core-group-label { padding-left: 12px; }
@media (hover: hover) and (pointer: fine) { .core-group .core-list--indexed li:hover { background: var(--surface-tinted); } }
@media (prefers-reduced-motion: reduce) { .core-group .core-list--indexed li { transition: none; } }
/* Side media (2026-09-09): the list column and one editorial-media figure in the shared .edm-split (editorial-media.css,
   58/42, image right; stacked after the list under 900px). The list sets the height; the figure follows it. */
.indexed-list .edm-split > .core-groups, .indexed-list .edm-split > .core-list { min-width: 0; }

/* Criteria cards variant — the canonical Golden Visa eligibility card shell, RESTORED VERBATIM (2026-09-10) from the
   approved 2026-09-08 rules (tools/drop-1788802701/ae-cs-golden-visa.html, `.gv-elig*`; staging still serves them). The
   first shared pass swapped the surface for --surface-tinted and the pill for --surface and read as a darker, denser,
   dashboard-like card — the owner rejected it. Every value below is the approved one: near-transparent card on the page
   ground, --line outline, the brass accent hairline at the left inset, mineral-tinted 44px marker square, quiet brass-
   tinted pill, 15px/13.5px copy, two columns at 14px, one column under 900px. The literal tints are the baseline's own.
   Data-only variation: the marker square holds the item's icon OR its two-digit index; the pill is present or absent;
   the shell (three columns marker · copy · meta) never changes. Frozen by tools/audit-criteria-cards.py against
   docs/audits/criteria-card-baseline.css — change the baseline only with the owner's approval. */
.core-list--cards { gap: 14px; }
.core-list--cards li { position: relative; display: grid; grid-template-columns: 44px 1fr auto; gap: 16px; align-items: start; padding: 20px 22px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.015); transition: border-color .2s, background .2s; }
.core-list--cards li::before { content: ""; position: absolute; inset: 14px auto 14px 0; width: 2px; border-radius: 2px; background: linear-gradient(180deg, rgba(194,162,106,.5), rgba(194,162,106,0)); opacity: .7; }
.core-list--cards li:hover { border-color: rgba(230,224,210,.28); background: rgba(230,224,210,.03); }
.crit-mark { width: 44px; height: 44px; border-radius: 11px; border: 1px solid rgba(143,164,172,.22); background: rgba(143,164,172,.08); color: var(--mineral); display: inline-flex; align-items: center; justify-content: center; flex: none; font-family: var(--mono); font-size: 11.5px; letter-spacing: .14em; line-height: 1; }
.crit-mark svg { width: 20px; height: 20px; }
.crit-copy { min-width: 0; }
.core-list--cards li .crit-copy b { display: block; font-size: 15px; color: var(--text); font-weight: 500; letter-spacing: -.005em; margin-bottom: 4px; padding: 0; }
.core-list--cards li .crit-copy b::after { content: none; }
.core-list--cards li .crit-copy span { color: var(--muted); font-size: 13.5px; line-height: 1.6; }
.crit-chip { align-self: center; padding: 5px 10px; border-radius: 999px; border: 1px solid rgba(194,162,106,.35); background: rgba(194,162,106,.08); color: var(--brass); font-family: var(--mono); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; white-space: nowrap; }
@media (max-width: 900px) {
  .core-list--cards { grid-template-columns: 1fr; }
  .core-list--cards li { grid-template-columns: 40px 1fr auto; }
  .crit-chip { grid-column: 1 / -1; justify-self: start; }
}
@media (prefers-reduced-motion: reduce) { .core-list--cards li { transition: none; } }
    