/* [TYPOGRAPHY PHASE 1B · 2026-08-27] ARABIC/KURDISH TAIL — EXTENDED, NOT REPLACED.
   The stacks below led with a Latin-only family (MEASURED: ui-monospace / JetBrains Mono / Inter /
   Arial draw 0 of 13 Kurdish and 0 of 16 Arabic characters), so any Arabic-script glyph inside a
   mixed run — «34 بڕیار», «ADX 17 · لاواز» — fell to whatever the operating system chose.
   The Latin order is UNTOUCHED: digits, tickers and prices still come from the same face and the
   same metrics. Two Arabic-capable families are appended before the generic, and the browser
   resolves PER CHARACTER, so nothing Latin changes and no !important or :lang rule is needed.
   Both appended faces MEASURE 13/13 on the Sorani letters. */

#ngLive.off i{background:var(--muted);animation:none}
.ng-card:focus-visible,
.ng-more:focus-visible{
  outline:2px solid var(--gold);outline-offset:2px}
/* COVERAGE, stated rather than implied. A filter decidable for 5% of the archive says 5%. */
.ng-cov{background:var(--card);border:1px solid var(--line);color:var(--muted);border-radius:4px;
  padding:0 4px;font-size:12px;letter-spacing:0}

/* ── THE NEW-STORIES PILL (§18: nothing moves under the reader) ─────────────────────────────── */
.ng-newpill{align-self:center;background:var(--gold);color:#fff;border:none;border-radius:999px;
  padding:6px 16px;font-size:12.5px;font-family:inherit;cursor:pointer;box-shadow:0 3px 12px rgba(0,0,0,.28)}

/* ── THE LIST ───────────────────────────────────────────────────────────────────────────────── */
.ng-list{overflow-y:auto;overflow-x:hidden;max-height:calc(100vh - 290px);min-height:320px;
  border:1px solid var(--line);border-radius:12px;background:var(--card);
  scrollbar-width:thin;outline:none}
.ng-spacer{width:100%}
.ng-card{display:block;width:100%;text-align:start;border:none;border-bottom:1px solid var(--line);
  background:none;padding:10px 14px;cursor:pointer;font-family:inherit}
.ng-card:hover{background:var(--card2)}
.ng-card:last-of-type{border-bottom:none}
.ng-et{font-size:12px;color:var(--muted)}

/* Chips. Limited and meaningful (§62): importance, confirmation, domain. Everything else expands. */
.ng-dom,
.ng-et,
.ng-imp,
.ng-conf{border-radius:5px;padding:1px 7px;font-size:12px;
  border:1px solid var(--line);white-space:nowrap}
.ng-dom{color:var(--txt2);background:var(--card2)}
.ng-imp{background:var(--card2);color:var(--muted)}
.ng-imp-critical{border-color:var(--gold);color:var(--gold);background:var(--red-deep);font-weight:700}
.ng-imp-high{border-color:var(--gold);color:var(--gold)}
.ng-imp-medium{color:var(--txt2)}
.ng-conf{background:none;color:var(--muted)}
.ng-conf-independently_confirmed,.ng-conf-primary_source_confirmed{color:var(--up);border-color:var(--up)}
.ng-conf-conflicting{color:var(--down);border-color:var(--down)}

.ng-tail{padding:14px;text-align:center}
.ng-end{font-size:12px;color:var(--muted)}
.ng-more{background:var(--card2);border:1px solid var(--line);color:var(--txt);border-radius:9px;
  padding:8px 18px;font-size:12.5px;font-family:inherit;cursor:pointer}
.ng-more:hover{border-color:var(--gold)}
.ng-ghost{background:none;color:var(--muted)}
.ng-empty{padding:44px 18px;text-align:center;display:flex;flex-direction:column;gap:8px;
  align-items:center}
.ng-empty b{font-size:14px;color:var(--txt)}
.ng-empty span{font-size:12px;color:var(--muted)}
.ng-err-detail{font-family:ui-monospace,'Vazirmatn','IBM Plex Sans Arabic',monospace;font-size:12px;color:var(--muted)}
.ng-muted{color:var(--muted)}

/* ── DETAIL PANEL ───────────────────────────────────────────────────────────────────────────── */
.ng-d{padding:4px 2px}
.ng-d-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.ng-d-h{margin:0 0 12px;font-size:17px;line-height:1.45;font-weight:700;color:var(--txt)}
.ng-d-body{display:flex;flex-direction:column;gap:1px}
.ng-d-row{display:grid;grid-template-columns:minmax(96px,26%) 1fr;gap:10px;padding:7px 0;
  border-top:1px solid var(--line);font-size:12.5px;align-items:baseline}
.ng-d-k{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px}
.ng-d-v{color:var(--txt2);min-width:0;overflow-wrap:anywhere}
.ng-tag{display:inline-block;background:var(--card2);border:1px solid var(--line);border-radius:5px;
  padding:1px 7px;font-size:12px;margin:2px 3px 2px 0;color:var(--txt2)}
.ng-tag-i{font-family:ui-monospace,'Vazirmatn','IBM Plex Sans Arabic',monospace}
.ng-src{display:inline-block;color:var(--gold);text-decoration:none;font-size:12px;
  margin:2px 8px 2px 0}
.ng-src:hover{text-decoration:underline}
.ng-d-actions{display:flex;gap:8px;margin-top:14px}
.ng-ai{margin-top:12px;font-size:12.5px;color:var(--txt2);display:flex;flex-direction:column;gap:6px}
@media (max-width:900px){
  .ng-list{max-height:calc(100vh - 260px)}
}
@media (max-width:640px){
  .ng-card{padding:12px 13px}
  .ng-list{max-height:none;min-height:60vh;border-inline:none;border-radius:0}
  .ng-d-row{grid-template-columns:1fr;gap:2px}
}

/* ── TOUCH TARGETS ARE SIZED BY THE FINGER, NOT BY THE SCREEN (§32) ─────────────────────────── */
/* Measured across the 36-render matrix: a 1024px tablet is a TOUCH device, but every rule that
   grew the controls was keyed to `max-width:640px` — so the tablet got 32-38px chips, icons and
   inputs while passing every width-based check. 136 undersized targets across the touch renders,
   all of them just under the line. `pointer: coarse` asks the right question: is a finger doing
   the pointing. 44px is the WCAG target size, and it applies at any width. */
@media (pointer: coarse){
  .ng-more{min-height:44px;display:inline-flex;align-items:center}
  /* the card is already a large target; keep its own tap area generous rather than dense */
  .ng-card{padding-block:13px}
}

/* ── RTL ────────────────────────────────────────────────────────────────────────────────────── */
/* Nothing above uses left/right — margin-inline, padding-inline and border-inline mirror on their
   own. What CANNOT mirror is a symbol or a signed number: EUR/USD reversed is a different pair and
   -0.5% reversed is a different fact, so every one of them carries dir="ltr" in the markup. */
[dir="rtl"] .ng-tag-i{direction:ltr;unicode-bidi:isolate}

/* ── REDUCED MOTION ─────────────────────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  #ngLive i{animation:none}
}

/* the «load more» button drew 33px on a fine pointer (MEASURED 2026-09-03); the coarse block already grows it */
.ng-more{min-height:36px}
