/* ==========================================================================
   1.502 · stylesheet
   2026-viz editorial. Off-white paper, risograph accents, geometric grotesque.
   ========================================================================== */

/* Self-hosted variable woff2, Romanian-subset. See vendor/README.md and fonts/. */
@font-face {
  font-family: "Unbounded";
  src: url("fonts/unbounded.var.woff2") format("woff2-variations"),
       url("fonts/unbounded.var.woff2") format("woff2");
  font-weight: 200 900; /* .hook-sub / .cap-text / .head-paradox .paradox-irony use 300 */
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Hanken Grotesk";
  src: url("fonts/hanken-grotesk.var.woff2") format("woff2-variations"),
       url("fonts/hanken-grotesk.var.woff2") format("woff2");
  font-weight: 400 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "JetBrains Mono";
  src: url("fonts/jetbrains-mono.var.woff2") format("woff2-variations"),
       url("fonts/jetbrains-mono.var.woff2") format("woff2");
  font-weight: 400 700;
  font-style: normal;
  font-display: swap;
}

:root {
  --paper: oklch(96% 0.015 70);
  --paper-deep: oklch(92% 0.025 50);
  --ink: oklch(20% 0.025 290);
  --ink-soft: oklch(34% 0.02 290);
  --ink-mute: oklch(55% 0.015 290);
  --rule: oklch(82% 0.015 70);

  --flare: oklch(65% 0.24 35);
  --flare-deep: oklch(55% 0.22 33);
  --ultra: oklch(52% 0.25 267);
  --ultra-deep: oklch(42% 0.23 267);
  --acid: oklch(86% 0.18 114);
  --acid-deep: oklch(70% 0.18 114);

  --f-display: "Unbounded", ui-sans-serif, system-ui, sans-serif;
  --f-body: "DM Sans", ui-sans-serif, system-ui, sans-serif;
  --f-mono: "JetBrains Mono", ui-monospace, monospace;

  --text-2xs:     0.55rem; /* truly tiny: tertiary footnotes, dense-list source rows */
  --text-label:   0.62rem; /* mono meta: eyebrows, tags, dates, axis ticks, source links */
  --text-caption: 0.72rem; /* caption body, source notes, secondary descriptions */

  --gutter: clamp(1rem, 4vw, 3rem);
  --stage-pad: clamp(2.5rem, 7vh, 5rem);

  --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
  --ease-out-quint: cubic-bezier(0.22, 1, 0.36, 1);
  --dur-base: 600ms;
}

@property --reveal {
  syntax: '<number>';
  inherits: false;
  initial-value: 0;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  background: var(--paper);
}

body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--f-body);
  font-size: clamp(14px, 0.7vw + 0.5rem, 16px);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "ss01", "cv11";
  overflow-x: hidden;
}

::selection { background: var(--flare); color: var(--paper); }

.mono { font-family: var(--f-mono); font-feature-settings: "zero"; }

.eyebrow {
  font-size: var(--text-caption);
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
}

.accent-flare { color: var(--flare); }
.accent-flare-deep { color: var(--flare-deep); }
.accent-ultra { color: var(--ultra); }
.accent-acid { color: var(--acid-deep); }

/* ---------- INTERACTIVE HEADLINE TRIGGERS ---------- */
.hl-trigger {
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: 0;
  padding: 0 0.04em;
  margin: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  position: relative;
  transition: color 200ms var(--ease-out-quart);
  letter-spacing: inherit;
  line-height: inherit;
}
.hl-trigger.accent-flare { color: var(--flare); }
.hl-trigger.accent-flare-deep { color: var(--flare-deep); }
.hl-trigger::after {
  content: "";
  position: absolute;
  left: 0.08em; right: 0.08em;
  bottom: 0.06em;
  height: 0.06em;
  background: currentColor;
  opacity: 0;
  transform: scaleX(0.2);
  transform-origin: left;
  transition: opacity 250ms var(--ease-out-quart), transform 400ms var(--ease-out-quint);
}
.hl-trigger:hover::after,
.hl-trigger:focus-visible::after,
.hl-trigger[data-active="true"]::after {
  opacity: 1;
  transform: scaleX(1);
}
.hl-trigger:focus-visible {
  outline: 2px solid var(--ultra);
  outline-offset: 4px;
}
.hl-trigger[data-active="true"] {
  color: var(--flare);
}

.dist-hint {
  margin-top: 0.75rem;
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
  opacity: 0;
  animation: hintFade 600ms var(--ease-out-quart) 600ms forwards;
}

.pledges-disclaimer {
  margin-top: 0.75rem;
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  color: var(--ink-mute);
  text-transform: uppercase;
  max-width: 60ch;
  line-height: 1.45;
}
@keyframes hintFade { to { opacity: 1; } }

/* Chart band filter — fade non-matching dots */
#dist-chart[data-filter="loss"] circle.dot:not([data-bandgroup="loss"]),
#dist-chart[data-filter="catastrophic"] circle.dot:not([data-band="pierdere_mare"]) {
  opacity: 0.1;
  transition: opacity 280ms var(--ease-out-quart);
}
#dist-chart[data-filter="loss"] circle.dot[data-bandgroup="loss"],
#dist-chart[data-filter="catastrophic"] circle.dot[data-band="pierdere_mare"] {
  opacity: 1;
  transition: opacity 280ms var(--ease-out-quart);
}
#dist-chart circle.dot {
  transition: opacity 280ms var(--ease-out-quart);
}

/* ---------- TOPBAR ---------- */
.topbar {
  position: fixed; top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: clamp(0.6rem, 2vw, 1.5rem);
  padding: 0.85rem var(--gutter);
  background: color-mix(in oklch, var(--paper) 85%, transparent);
  backdrop-filter: blur(8px) saturate(1.1);
  border-bottom: 1px solid color-mix(in oklch, var(--ink) 12%, transparent);
}
.top-mark {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-right: auto;   /* mark stă la stânga, restul (search + clopoțel) împins la dreapta */
}
.mark-dot {
  width: 10px; height: 10px;
  background: var(--flare);
  display: inline-block;
  animation: pulse 2.4s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 0.45; transform: scale(0.85); }
  50% { opacity: 1; transform: scale(1.1); }
}
.mark-label {
  font-family: var(--f-display);
  font-weight: 700;
  letter-spacing: -0.02em;
  font-size: 1.1rem;
}
/* Break în logo doar pe mobil: „Companii" / „de stat". Ascuns pe desktop. */
.mark-break { display: none; }

/* ---------- Year picker (masthead, lângă logo) ---------- */
.year-picker { position: relative; }
.year-picker-btn {
  appearance: none;
  background: transparent;
  border: 1px solid var(--rule);
  color: var(--ink);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 36px;
  padding: 0 0.6rem;
  cursor: pointer;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  font-weight: 600;
  letter-spacing: 0.1em;
  transition: border-color 0.12s, color 0.12s;
}
.year-picker-btn:hover { border-color: var(--ink); color: var(--flare); }
.year-picker-btn:focus-visible { outline: 2px solid var(--flare); outline-offset: 2px; }
.year-picker-caret { width: 9px; height: 6px; flex-shrink: 0; transition: transform 0.15s; }
.year-picker-btn[aria-expanded="true"] .year-picker-caret { transform: rotate(180deg); }

.year-picker-menu {
  position: absolute;
  top: calc(100% + 0.4rem);
  left: 0;
  min-width: 100%;
  padding: 0.25rem;
  background: var(--paper);
  border: 1px solid color-mix(in oklch, var(--ink) 16%, transparent);
  box-shadow: 0 14px 36px -16px color-mix(in oklch, var(--ink) 45%, transparent);
  z-index: 120;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0s linear 0.15s;
}
.year-picker.open .year-picker-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0s;
}
.year-picker-opt {
  appearance: none;
  background: transparent;
  border: none;
  width: 100%;
  text-align: left;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  padding: 0.4rem 0.6rem;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.1em;
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
}
.year-picker-opt:hover:not(:disabled),
.year-picker-opt:focus-visible {
  background: color-mix(in oklch, var(--ink) 7%, transparent);
  outline: none;
}
.year-picker-opt.is-selected { color: var(--flare); font-weight: 700; }
.year-picker-opt:disabled { color: var(--ink-mute); opacity: 0.55; cursor: default; }
.year-picker-soon {
  font-size: var(--text-2xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-mute);
}
.top-meta {
  display: flex;
  gap: 0.75rem;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
  justify-self: center;
}

/* ---------- ULTIMELE ACTUALIZĂRI (clopoțel masthead) ---------- */
.top-bell-wrap {
  position: relative;
  display: flex;
  align-items: center;
  order: 1;   /* împinge clopoțelul ultimul în masthead, la marginea dreaptă */
}
.top-bell {
  appearance: none;
  background: transparent;
  border: 1px solid var(--rule);
  color: var(--ink);
  min-height: 36px;
  min-width: 36px;
  padding: 0.4rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  position: relative;
  transition: border-color 0.12s, color 0.12s;
}
.top-bell:hover { border-color: var(--ink); color: var(--flare); }
.top-bell:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
.top-bell-icon { width: 16px; height: 16px; display: block; }
/* Bulina roșie: vizibilă doar când există noutăți necitite (clasa .has-news pe buton). */
.top-bell-dot {
  position: absolute;
  top: 4px; right: 4px;
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--flare);
  box-shadow: 0 0 0 2px var(--paper);
  opacity: 0;
  transform: scale(0.4);
  transition: opacity 0.18s, transform 0.18s;
  pointer-events: none;
}
.top-bell.has-news .top-bell-dot {
  opacity: 1;
  transform: scale(1);
  animation: pulse 2.4s ease-in-out infinite;
}

.updates-panel {
  position: absolute;
  top: calc(100% + 0.7rem);
  right: 0;
  width: min(380px, calc(100vw - 2 * var(--gutter)));
  max-height: calc(100vh - 5rem);
  overflow-y: auto;
  background: var(--paper);
  border: 1px solid color-mix(in oklch, var(--ink) 16%, transparent);
  box-shadow: 0 18px 48px -18px color-mix(in oklch, var(--ink) 45%, transparent);
  padding: 1rem 1.1rem 0.4rem;
  z-index: 110;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0s linear 0.18s;
}
.updates-panel.open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0s;
}
.updates-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 0.6rem;
}
.updates-panel-close {
  appearance: none;
  background: transparent;
  border: none;
  color: var(--ink-mute);
  font-size: 0.9rem;
  line-height: 1;
  padding: 0.3rem;
  cursor: pointer;
  transition: color 0.12s;
}
.updates-panel-close:hover { color: var(--flare); }
.updates-panel-close:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
.updates-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.update-item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.4rem;
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--rule);
}
.update-item:last-child {
  border-bottom: none;
}
.update-meta {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.75rem;
}
.update-date {
  font-size: var(--text-label);
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--flare);
  font-weight: 500;
}
.update-date--soon {
  color: var(--ink-mute);
}
.update-tag {
  font-size: var(--text-label);
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
}
.update-body p {
  font-family: var(--f-display);
  font-weight: 300;
  font-size: 0.86rem;
  color: var(--ink);
  line-height: 1.4;
  letter-spacing: -0.005em;
  margin: 0 0 0.55rem;
}
.update-body p:last-child {
  margin-bottom: 0;
}
.update-cta {
  font-size: var(--text-label);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--ink);
  padding-bottom: 2px;
  display: inline-block;
  transition: color 0.15s, border-color 0.15s;
}
.update-cta:hover,
.update-cta:focus-visible {
  color: var(--flare);
  border-bottom-color: var(--flare);
  outline: none;
}
@media (max-width: 600px) {
  /* Pe mobile panoul devine o foaie fixă ancorată sub masthead, lățime aproape plină. */
  .updates-panel {
    position: fixed;
    top: 3.5rem;
    left: var(--gutter);
    right: var(--gutter);
    width: auto;
    max-height: calc(100vh - 5rem);
  }
  .update-body p { font-size: 0.88rem; }
}

/* ---------- STAGE (sections) ---------- */
.stage {
  padding: calc(var(--stage-pad) + 2rem) var(--gutter) var(--stage-pad);
  position: relative;
  min-height: auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.stage + .stage {
  padding-top: clamp(2rem, 6vh, 4rem);
}

.stage.invert {
  background: var(--ultra);
  color: var(--paper);
}
.stage.invert .eyebrow { color: color-mix(in oklch, var(--paper) 70%, transparent); }
.stage.invert .accent-flare { color: var(--acid); }

.chapter-head {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
  margin-bottom: clamp(1.35rem, 4.2vh, 2.8rem);
}
.head-line {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(1.8rem, 3.8vw, 3.2rem);
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--ink);
}
.stage.invert .head-line { color: var(--paper); }

/* Sub-line editorial sub head-line — context care explică argumentul, nu titlul.
   Ex: pe §Listed, justifică DE CE listarea contează (raportare obligatorie). */
.chapter-sub {
  margin: 0;
  font-size: var(--text-caption);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
  line-height: 1.4;
  max-width: 64ch;
}
.stage.invert .chapter-sub { color: color-mix(in oklch, var(--paper) 60%, transparent); }

/* ---------- 0 · HOOK ---------- */
.hook {
  padding-top: 5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.25rem, 3vh, 2.5rem);
  align-content: center;
}
.hook-lede {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  text-align: left;
}
.huge {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: clamp(2.5rem, 6.5vw, 5.2rem);
  line-height: 0.9;
  letter-spacing: -0.04em;
  color: var(--ink);
  margin-top: 0.25rem;
}
.huge[data-reveal="chars"] span {
  display: inline-block;
  transform: translateY(100%);
  opacity: 0;
  transition: transform 800ms var(--ease-out-quint), opacity 600ms var(--ease-out-quart);
}
.huge[data-reveal="chars"].revealed span { transform: translateY(0); opacity: 1; }
.huge[data-reveal="chars"].revealed span:nth-child(1) { transition-delay: 0ms; }
.huge[data-reveal="chars"].revealed span:nth-child(2) { transition-delay: 70ms; }
.huge[data-reveal="chars"].revealed span:nth-child(3) { transition-delay: 140ms; }
.huge[data-reveal="chars"].revealed span:nth-child(4) { transition-delay: 210ms; }
.huge[data-reveal="chars"].revealed span:nth-child(5) { transition-delay: 280ms; }
.hook-sub {
  font-family: var(--f-display);
  font-weight: 300;
  font-size: clamp(1rem, 1.3vw, 1.35rem);
  max-width: 42ch;
  color: var(--ink-soft);
  margin-top: 0.4rem;
  letter-spacing: -0.01em;
}
.hook-ast {
  font-family: var(--f-mono);
  font-size: 0.5em;
  font-weight: 500;
  color: var(--flare);
  vertical-align: 0.7em;
  margin-left: 0.08em;
  letter-spacing: 0;
}

.hook-footer {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  padding-top: 0.4rem;
}
.hook-watermark {
  position: absolute;
  bottom: 0.55rem;
  right: 0;
  font-size: var(--text-label);
  letter-spacing: 0.04em;
  color: color-mix(in oklch, var(--ink-mute) 65%, transparent);
  white-space: nowrap;
  pointer-events: none;
}
.hook-details {
  min-width: 0;
}

.hook-details-summary {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--flare);
  cursor: pointer;
  padding: 0.5rem 0;
  border-bottom: 1px dotted color-mix(in oklch, var(--flare) 40%, transparent);
  display: inline-block;
  user-select: none;
  list-style: none;
  transition: color 200ms, border-color 200ms;
}

.hook-details-summary::-webkit-details-marker { display: none; }
.hook-details-summary::marker { content: ''; }

.hook-details-summary::after {
  content: '›';
  font-size: 1.35em;
  line-height: 1;
  display: inline-block;
  margin-left: 0.5em;
  position: relative;
  top: 0.02em;
  transition: transform 200ms ease;
}

details[open] > .hook-details-summary::after {
  transform: rotate(90deg);
}

.hook-details-summary:hover,
.hook-details-summary:focus-visible {
  color: var(--rust);
  border-bottom-color: color-mix(in oklch, var(--rust) 60%, transparent);
  outline: none;
}

.hook-note {
  margin: 1.25rem 0 0;
  max-width: 680px;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  line-height: 1.55;
  color: color-mix(in oklch, var(--ink) 60%, var(--paper));
  display: grid;
  gap: 0.2rem;
}
.hook-note > div {
  display: grid;
  grid-template-columns: 3.2rem 1fr;
  gap: 0.6rem;
  align-items: baseline;
}
.hook-note dt {
  font-weight: 700;
  color: var(--ink);
  text-align: right;
  letter-spacing: 0.02em;
}
.hook-note dd {
  margin: 0;
}
.hook-note-foot {
  margin: 1.4rem 0 0;
  max-width: 680px;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  line-height: 1.55;
  color: color-mix(in oklch, var(--ink) 60%, var(--paper));
}
.hook-note-link {
  display: inline-block;
  margin-top: 1rem;
  font-size: var(--text-label);
  color: var(--flare);
  text-decoration: none;
  border-bottom: 1px dotted color-mix(in oklch, var(--flare) 40%, transparent);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 0.25rem 0;
  transition: color 200ms, border-color 200ms;
}
.hook-note-link:hover { color: var(--rust); border-bottom-color: color-mix(in oklch, var(--rust) 60%, transparent); }

.byline-author {
  color: var(--ink);
  font-weight: 700;
  letter-spacing: 0.04em;
}

.method-author {
  color: var(--acid);
  font-weight: 700;
}

.grid-vis {
  position: relative;
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
}
/* Stacked mobile layout: JS adaugă .stacked când container.clientWidth < 560
   (separat de breakpoint-ul de viewport — pe ecrane înguste cu padding mare,
   cele două nu coincid). 3 blocuri verticale, fiecare cu header (număr + etichetă)
   deasupra waffle-ului; cell-size identic între blocuri (COLS fix), waffle-urile
   umplu toată lățimea. Magnitudinea se citește din înălțimea blocului. */
.grid-vis.stacked {
  aspect-ratio: auto;
  display: flex;
  flex-direction: column;
  gap: clamp(1rem, 4vw, 1.6rem);
}
.grid-vis.stacked .grid-band { display: flex; flex-direction: column; }
.grid-vis.stacked .grid-band-head {
  display: flex;
  align-items: baseline;
  gap: 0.55rem;
  margin-bottom: 0.4rem;
}
.grid-vis.stacked .grid-band-num {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: clamp(1.85rem, 8.5vw, 2.6rem);
  letter-spacing: -0.03em;
  line-height: 1;
}
.grid-vis.stacked .grid-band-label {
  font-family: var(--f-mono);
  font-size: clamp(0.72rem, 2.5vw, 0.85rem);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.hook-legend {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  gap: 1.75rem;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.05em;
  color: var(--ink-soft);
}
.legend-item { display: flex; align-items: center; gap: 0.6rem; }
.chip {
  width: 14px; height: 14px;
  display: inline-block;
}
.chip-loss { background: var(--flare); }
.chip-profit { background: var(--acid-deep); }
.chip-opaque { background: color-mix(in oklch, var(--ink) 30%, var(--paper)); }


#distribution .head-line {
  line-height: 1.08;
}
#distribution .hl-trigger {
  white-space: nowrap;
}

/* ---------- I · STATS ---------- */
.stat-stack {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 6 carduri = 3×2 grid curat */
  gap: 1px;
  background: color-mix(in oklch, var(--ink) 15%, transparent);
  border: 1px solid color-mix(in oklch, var(--ink) 15%, transparent);
}
.stat-cell {
  background: var(--paper);
  padding: 2rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  min-height: 260px;
  transition: background 400ms var(--ease-out-quart);
}
.stat-cell:hover { background: var(--paper-deep); }
.stat-num {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(1.8rem, 2.8vw, 2.6rem);
  line-height: 0.95;
  letter-spacing: -0.03em;
  color: var(--ink);
}
.stat-cell.accent-flare .stat-num { color: var(--flare); }
.stat-cell.accent-ultra .stat-num { color: var(--ultra); }
.stat-cell.accent-acid .stat-num { color: var(--acid-deep); }
.stat-cell.accent-ink .stat-num { color: var(--ink); }
.stat-body {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  flex: 1;
}
.stat-lbl {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.stat-note {
  font-size: 0.95rem;
  color: var(--ink-soft);
  line-height: 1.35;
  max-width: 32ch;
}

/* Thesis card — cifra-cheie a §I, full-width.
   Promovată editorial: tipografie mai mare, background tint, devine puntea
   către payoff-frame-ul de defalcare a celor 14 mld pe beneficiari. */
.stat-thesis {
  max-width: 1280px;
  width: 100%;
  margin: 1.25rem auto 0;
  background: var(--paper);
  border: 1px solid color-mix(in oklch, var(--ink) 15%, transparent);
  padding: clamp(1.1rem, 2vw, 1.85rem) clamp(1.25rem, 2.5vw, 2.25rem);
  display: grid;
  grid-template-columns: minmax(0, auto) 1.4fr;
  gap: clamp(1.25rem, 3vw, 2.5rem);
  align-items: center;
}
/* Varianta „bridge" — poziționată între hidro-payoff și transparenta-subventii:
   gap mai mare deasupra (separă de hidro), zero gap dedesubt (lipit de chart). */
.stat-thesis.stat-thesis-bridge {
  margin-top: clamp(3rem, 8vh, 6rem);
  margin-bottom: 0;
  border-bottom: none;
}
/* Payoff atașat de thesis card de deasupra: zero margin-top, border-top să nu duplice */
.viz-payoff.viz-payoff-attached {
  margin-top: 0;
}
.viz-payoff.viz-payoff-attached .payoff-frame {
  border-top: 1px solid color-mix(in oklch, var(--ink) 15%, transparent);
  padding: 0;
}
.stat-thesis-num {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(2.4rem, 5.6vw, 4.4rem);
  line-height: 0.92;
  letter-spacing: -0.035em;
  color: var(--flare);
  white-space: nowrap;
}
.stat-thesis-body {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.stat-thesis-lbl {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.stat-thesis-note {
  font-family: var(--f-body);
  font-weight: 400;
  font-size: 0.95rem;
  line-height: 1.35;
  color: var(--ink);
  margin: 0;
  max-width: 52ch;
}
.stat-thesis-sources {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.5rem;
  margin-top: 0.25rem;
}
.stat-thesis-sources .stat-source { margin-top: 0; padding-top: 0; border-top: none; }

/* Payoff frame — Hidro isolated */
.viz-payoff {
  max-width: 1280px;
  width: 100%;
  margin: clamp(2rem, 4vh, 6rem) auto 0;
}
.payoff-frame {
  padding: 2rem 0;
  display: grid;
  gap: 1.5rem;
}
.payoff-bar {
  height: 48px;
  background: color-mix(in oklch, var(--ink) 10%, transparent);
  position: relative;
  overflow: hidden;
}
.payoff-bar::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 67%;
  background: var(--acid-deep);
  transform-origin: left;
  transform: scaleX(var(--reveal, 0));
  transition: transform 1600ms var(--ease-out-quint);
}
.payoff-bar::after {
  content: "TOP 5 · ~2/3 DIN PROFIT · 2024";
  position: absolute;
  left: 1rem;
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.12em;
  color: var(--ink);
  opacity: 0;
  transition: opacity 600ms 1200ms var(--ease-out-quart);
}
.payoff-frame.revealed .payoff-bar::before { transform: scaleX(1); }
.payoff-frame.revealed .payoff-bar::after { opacity: 1; }
.payoff-text {
  display: grid;
  gap: 0.5rem;
}
.payoff-text-top {
  gap: 0.65rem;
  padding-bottom: 0.3rem;
}
.payoff-text-bottom {
  display: flex;
  flex-wrap: wrap;
  gap: 1.2rem;
  padding-top: 0.2rem;
}
.payoff-text-bottom .pf-source {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
.pf-head {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(1.2rem, 1.9vw, 1.85rem);
  letter-spacing: -0.018em;
  line-height: 1.08;
}
.pf-stat {
  font-family: var(--f-body);
  font-size: clamp(0.92rem, 1vw, 1.05rem);
  color: var(--ink-soft);
  max-width: 56ch;
}
/* Link compact către metodologie sub editorialul „top 5 = 2/3 din profit". */
.pf-source {
  display: inline-block;
  margin-top: 0.6rem;
  padding-top: 0.55rem;
  border-top: 1px dashed color-mix(in oklch, var(--ink) 18%, transparent);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  text-decoration: none;
  width: max-content;
  transition: color 0.12s, border-color 0.12s;
}
.pf-source:hover,
.pf-source:focus-visible {
  color: var(--flare);
  outline: none;
}
.pf-link {
  color: var(--flare);
  border-bottom: 1px solid color-mix(in oklch, var(--flare) 35%, transparent);
  text-decoration: none;
  transition: border-color 0.15s;
}
.pf-link:hover { border-bottom-color: var(--flare); }

/* Payoff #2 · Defalcarea celor 14 mld AAB · LIST view (per beneficiar)
   Fiecare rând = 1 SOE cu nume + bară + sumă + sursă. Click → profil companie.
   Bar relativ la maxim (RESTUL = 100% vizual = 6,68 mld real).
   Restul stilat distinct (hatched, separator vizual sus). */
.subv-list {
  display: flex;
  flex-direction: column;
  border: 1px solid color-mix(in oklch, var(--ink) 14%, transparent);
  margin-bottom: 1rem;
}
.subv-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto auto;
  column-gap: 1rem;
  row-gap: 0.35rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid color-mix(in oklch, var(--ink) 8%, transparent);
  position: relative;
  transition: background 0.15s ease;
}
.subv-row:last-child { border-bottom: none; }
.subv-row[role="link"],
a.subv-row {
  cursor: pointer;
}
a.subv-row {
  text-decoration: none;
  color: inherit;
}
.subv-row[role="link"]:hover,
.subv-row[role="link"]:focus-visible,
a.subv-row:hover,
a.subv-row:focus-visible {
  background: color-mix(in oklch, var(--ink) 4%, var(--paper));
  outline: none;
}
.subv-row[role="link"]:hover .subv-row-name,
.subv-row[role="link"]:focus-visible .subv-row-name,
a.subv-row:hover .subv-row-name,
a.subv-row:focus-visible .subv-row-name {
  color: var(--flare);
}
.subv-row-name {
  grid-column: 1;
  grid-row: 1;
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 0.95rem;
  letter-spacing: -0.01em;
  color: var(--ink);
  line-height: 1.2;
  transition: color 0.15s ease;
}
.subv-row-val {
  grid-column: 2;
  grid-row: 1;
  font-family: var(--f-mono);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: -0.005em;
  color: var(--ink);
  text-align: right;
  white-space: nowrap;
}
.subv-row-pct {
  font-size: var(--text-caption);
  color: var(--ink-mute);
  font-weight: 500;
  margin-left: 0.4rem;
}
.subv-row-track {
  grid-column: 1 / -1;
  grid-row: 2;
  height: 8px;
  background: color-mix(in oklch, var(--ink) 6%, transparent);
  position: relative;
  overflow: hidden;
}
.subv-row-fill {
  display: block;
  height: 100%;
  background: var(--flare);
  transform-origin: left center;
}

/* Animație reveal: rândurile fade-in din stânga, barele se umflă scaleX 0→1.
   Stagger via nth-child delay. Pattern: default = hidden, IO adaugă .in-view → @keyframes rulează.
   Folosesc @keyframes (nu transition) pentru fiabilitate cross-browser. */
.subv-list .subv-row {
  opacity: 0;
  transform: translateX(-14px);
}
.subv-list .subv-row-fill {
  transform: scaleX(0);
}
.subv-list.in-view .subv-row {
  animation: subv-row-in 700ms var(--ease-out-quart, cubic-bezier(0.25, 1, 0.5, 1)) forwards;
}
.subv-list.in-view .subv-row-fill {
  animation: subv-fill-in 1100ms var(--ease-out-quart, cubic-bezier(0.25, 1, 0.5, 1)) forwards;
}
@keyframes subv-row-in {
  from { opacity: 0; transform: translateX(-14px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes subv-fill-in {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
/* Stagger: rând n apare la n*65ms, bara se umflă cu mic decalaj */
.subv-list.in-view .subv-row:nth-child(1)  { animation-delay:   0ms; }
.subv-list.in-view .subv-row:nth-child(2)  { animation-delay:  65ms; }
.subv-list.in-view .subv-row:nth-child(3)  { animation-delay: 130ms; }
.subv-list.in-view .subv-row:nth-child(4)  { animation-delay: 195ms; }
.subv-list.in-view .subv-row:nth-child(5)  { animation-delay: 260ms; }
.subv-list.in-view .subv-row:nth-child(6)  { animation-delay: 325ms; }
.subv-list.in-view .subv-row:nth-child(7)  { animation-delay: 390ms; }
.subv-list.in-view .subv-row:nth-child(8)  { animation-delay: 455ms; }
.subv-list.in-view .subv-row:nth-child(9)  { animation-delay: 520ms; }
.subv-list.in-view .subv-row:nth-child(10) { animation-delay: 585ms; }
.subv-list.in-view .subv-row:nth-child(11) { animation-delay: 650ms; }
.subv-list.in-view .subv-row:nth-child(1)  .subv-row-fill { animation-delay: 250ms; }
.subv-list.in-view .subv-row:nth-child(2)  .subv-row-fill { animation-delay: 315ms; }
.subv-list.in-view .subv-row:nth-child(3)  .subv-row-fill { animation-delay: 380ms; }
.subv-list.in-view .subv-row:nth-child(4)  .subv-row-fill { animation-delay: 445ms; }
.subv-list.in-view .subv-row:nth-child(5)  .subv-row-fill { animation-delay: 510ms; }
.subv-list.in-view .subv-row:nth-child(6)  .subv-row-fill { animation-delay: 575ms; }
.subv-list.in-view .subv-row:nth-child(7)  .subv-row-fill { animation-delay: 640ms; }
.subv-list.in-view .subv-row:nth-child(8)  .subv-row-fill { animation-delay: 705ms; }
.subv-list.in-view .subv-row:nth-child(9)  .subv-row-fill { animation-delay: 770ms; }
.subv-list.in-view .subv-row:nth-child(10) .subv-row-fill { animation-delay: 835ms; }
.subv-list.in-view .subv-row:nth-child(11) .subv-row-fill { animation-delay: 900ms; }
.subv-list.in-view .subv-row:nth-child(12) .subv-row-fill { animation-delay: 965ms; }
.subv-list.in-view .subv-row:nth-child(13) .subv-row-fill { animation-delay: 1030ms; }
.subv-list.in-view .subv-row:nth-child(14) .subv-row-fill { animation-delay: 1095ms; }
.subv-list.in-view .subv-row:nth-child(15) .subv-row-fill { animation-delay: 1160ms; }

@media (prefers-reduced-motion: reduce) {
  .subv-list .subv-row,
  .subv-list .subv-row-fill {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
}
.subv-row-src {
  grid-column: 1 / -1;
  grid-row: 3;
  font-size: var(--text-2xs);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
/* CTA vizibil spre investigația dedicată: scos din stilul șters de „notă sursă" */
.subv-row-cta {
  font-size: var(--text-label);
  color: var(--flare);
  font-weight: 700;
  letter-spacing: 0.12em;
  border-bottom: 1px solid currentColor;
  padding-bottom: 1px;
  width: fit-content;
  justify-self: start;
  transition: color 0.15s ease;
}
a.subv-row:hover .subv-row-cta,
a.subv-row:focus-visible .subv-row-cta { color: var(--flare-deep); }

/* Variante per canal */
.subv-row.seg-bvc .subv-row-fill { background: var(--flare); }
.subv-row.seg-regas .subv-row-fill { background: var(--ochre, #c89a3c); }
.subv-row.seg-uat .subv-row-fill { background: var(--sage, #5a6f50); }
.subv-row.seg-uat-agg .subv-row-fill {
  /* Agregat 18 companii locale: aceeași familie verde-sage dar mai pală + hașură ușoară pentru
     a semnala compoziție din mai multe entități, vs cele 2 PMB-specifice. */
  background: repeating-linear-gradient(
    -45deg,
    color-mix(in oklch, var(--sage, #5a6f50) 78%, var(--paper)) 0px,
    color-mix(in oklch, var(--sage, #5a6f50) 78%, var(--paper)) 6px,
    color-mix(in oklch, var(--sage, #5a6f50) 55%, var(--paper)) 6px,
    color-mix(in oklch, var(--sage, #5a6f50) 55%, var(--paper)) 12px
  );
}
.subv-row.seg-regas-agg .subv-row-fill {
  /* Agregat 6 entități RegAS: ochre cu hașură. Același pattern ca seg-uat-agg. */
  background: repeating-linear-gradient(
    -45deg,
    color-mix(in oklch, var(--ochre, #c89a3c) 78%, var(--paper)) 0px,
    color-mix(in oklch, var(--ochre, #c89a3c) 78%, var(--paper)) 6px,
    color-mix(in oklch, var(--ochre, #c89a3c) 55%, var(--paper)) 6px,
    color-mix(in oklch, var(--ochre, #c89a3c) 55%, var(--paper)) 12px
  );
}
.subv-row.seg-unknown .subv-row-fill {
  /* Nealocat în raport: solid muted ink-tone, fără hașură.
     Hașura rupea ritmul grafic; ton solid se integrează cu paleta editorială. */
  background: color-mix(in oklch, var(--ink) 38%, var(--paper));
}

.subv-list-axis {
  font-size: var(--text-2xs);
  letter-spacing: 0.05em;
  color: var(--ink-mute);
  font-style: italic;
  margin-bottom: 0.5rem;
  text-transform: none;
}

.subv-flow-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.85rem 1.5rem;
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  padding-top: 0.5rem;
  border-top: 1px solid color-mix(in oklch, var(--ink) 12%, transparent);
}
.subv-flow-legend .lg-item {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}
.subv-flow-legend .lg-swatch {
  width: 14px;
  height: 8px;
  display: inline-block;
  flex-shrink: 0; /* păstrează 14px chiar și când textul fratelui umple lățimea (mobile) */
}
.subv-flow-legend .lg-bvc { background: var(--flare); }
.subv-flow-legend .lg-regas { background: var(--ochre, #c89a3c); }
.subv-flow-legend .lg-uat { background: var(--sage, #5a6f50); }
.subv-flow-legend .lg-unknown {
  background: color-mix(in oklch, var(--ink) 38%, var(--paper));
}

@media (max-width: 600px) {
  .subv-row {
    padding: 0.65rem 0.75rem;
    column-gap: 0.6rem;
  }
  .subv-row-name { font-size: 0.85rem; }
  .subv-row-val { font-size: var(--text-caption); }
  .subv-row-pct { font-size: var(--text-label); margin-left: 0.3rem; }
  .subv-row-src { font-size: var(--text-2xs); letter-spacing: 0.06em; }
  .subv-list-axis { font-size: var(--text-label); }
}

/* ---------- VIZ FRAMES ---------- */
.viz-frame {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  min-height: 420px;
}
.viz-frame.tall { min-height: 540px; }

/* Atribuire pe fiecare vizualizare majoră — supraviețuiește screenshot-ului
   atunci când imaginea e share-uită pe Twitter / Slack / prezentări.
   Mono mic, ink-mute, fix jos-dreapta, fără să distragă de la date.
   Convenție FT/Reuters/Pudding: doar URL-ul, fără logo decorativ.
   Background paper-tint subtil ca textul să fie lizibil deasupra graficelor. */
.viz-frame,
#grid-vis,
.emblem-posters,
.subv-list,
#hidro-payoff .payoff-frame,
.chart-embed {
  position: relative;
}
/* Padding-bottom rezervă o bandă curată sub chart pentru marker, evitând overlap cu
   labels din interiorul vizualizării. SVG-ul cu viewBox fix își păstrează înălțimea. */
.viz-frame,
.chart-embed {
  padding-bottom: 1.4rem;
}
.viz-frame::after,
.emblem-posters::after,
.subv-list::after,
#hidro-payoff .payoff-frame::after,
.chart-embed::after {
  content: 'companiidestat.ro';
  position: absolute;
  bottom: 0.25rem;
  right: 0.5rem;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.04em;
  color: color-mix(in oklch, var(--ink-mute) 78%, transparent);
  pointer-events: none;
  user-select: none;
  z-index: 2;
}
.stage.invert .viz-frame::after {
  color: color-mix(in oklch, var(--paper) 40%, transparent);
}
@media (max-width: 600px) {
  .viz-frame,
  #grid-vis,
  .subv-list,
  .chart-embed {
    padding-bottom: 1.1rem;
  }
  .viz-frame::after,
  .emblem-posters::after,
  .subv-list::after,
  #hidro-payoff .payoff-frame::after,
  .chart-embed::after {
    font-size: var(--text-2xs);
    bottom: 0.15rem;
    right: 0.3rem;
  }
}
.viz-caption {
  max-width: 1280px;
  width: 100%;
  margin: 1.5rem auto 0;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.5rem;
  align-items: baseline;
  padding-top: 1rem;
  border-top: 1px solid var(--rule);
}
.viz-caption.invert { border-top-color: color-mix(in oklch, var(--paper) 30%, transparent); }
.cap-mark {
  font-size: var(--text-caption);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-mute);
  white-space: nowrap;
}
.stage.invert .cap-mark { color: color-mix(in oklch, var(--paper) 65%, transparent); }
.cap-text {
  font-family: var(--f-display);
  font-weight: 300;
  font-size: clamp(0.95rem, 1.1vw, 1.15rem);
  line-height: 1.35;
  letter-spacing: -0.005em;
  color: var(--ink);
}
.cap-gloss {
  font-style: normal;
  font-family: var(--f-mono);
  font-size: 0.78em;
  color: var(--ink-mute);
  display: block;
  margin-top: 0.5rem;
  line-height: 1.45;
  letter-spacing: 0;
}
.stage.invert .cap-text { color: var(--paper); }
.stage.invert .cap-gloss { color: color-mix(in oklch, var(--paper) 60%, transparent); }

/* ---------- II.b · SECTOR SPARKLINES ---------- */
.sector-grid {
  max-width: 1280px;
  width: 100%;
  margin: 0.75rem auto 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 12px;
}

.sector-card {
  border: 1px solid var(--rule);
  background: color-mix(in oklch, var(--paper) 88%, white);
  border-radius: 10px;
  padding: 10px 10px 8px;
}
.sector-card svg {
  /* Browser-ul gestionează scroll-ul vertical (pan-y), iar swipe-urile orizontale
     ajung la pointermove pentru scrubbing. Fără luptă cu sintetic-mouse, fără
     direction detection în JS. */
  touch-action: pan-y;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}

/* Card clickable (companii listate BVB) — hyperlink integral cu hover/focus
   identic cu emblem-posters: border-color → ink, box-shadow subtle, cursor
   pointer. Tranziția pe border + shadow, fără layout shift. */
.sector-card.card-linked {
  cursor: pointer;
  outline: none;
  transition: border-color 180ms var(--ease-out-quart, ease-out), box-shadow 180ms;
}
.sector-card.card-linked:hover,
.sector-card.card-linked:focus-visible {
  border-color: var(--ink);
  box-shadow: 0 12px 32px -16px color-mix(in oklch, var(--ink) 35%, transparent);
}
.sector-card.card-linked:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
.sector-card.card-linked::after {
  content: 'VEZI PROFIL →';
  display: block;
  margin-top: 0.5rem;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  color: var(--ink-mute);
  text-align: right;
  transition: color 180ms;
}
.sector-card.card-linked:hover::after,
.sector-card.card-linked:focus-visible::after {
  color: var(--flare);
}

.sector-title {
  margin: 0 0 .35rem;
  font-family: var(--f-sans);
  font-size: .9rem;
  font-weight: 700;
  color: var(--ink);
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
}

.sector-n {
  color: var(--ink-mute);
  font-weight: 400;
  font-size: 0.78em;
  margin-left: 0.4em;
}

.sector-meta {
  color: var(--ink-mute);
  font-weight: 400;
  font-size: var(--text-label);
  letter-spacing: 0.08em;
  /*text-transform: uppercase;*/
  white-space: nowrap;
}


/* ---------- IV · GEOGRAPHY MAP ---------- */
.geo-hint {
  margin-top: 0.75rem;
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.geo-frame {
  max-width: 900px;
  margin: 0 auto;
}
.geo-frame svg { max-height: 620px; }

/* Toggle deasupra hărții — număr companii vs lei pierderi.
   Padding 0 (în loc de 0 1rem ca înainte) ca buttons să se alinieze cu marginile
   exterior ale hărții — fără asta toggle conținut era la 868px într-un container 900px,
   inset 16px față de SVG. */
.map-mode-toggle {
  display: flex;
  justify-content: center;
  gap: 0.4rem;
  margin: 0 auto 1.2rem;
  width: 100%;             /* fără asta, margin:auto pe flex-item shrink-uie la content */
  max-width: 900px;
  padding: 0;
  flex-wrap: wrap;
}

/* §IV alignment rail: chapter-head, toggle, geo-frame, viz-caption — toate la 900px.
   Înainte chapter-head + viz-caption erau la 1280px (default sectional), iar toggle +
   geo-frame la 900px → jog vizual de 190px la fiecare viewport ≥920px. Pin la 900px
   în scop #geo ca să nu afecteze celelalte capitole. */
#geo .chapter-head,
#geo .map-mode-toggle,
#geo .viz-caption { max-width: 900px; }
.map-mode-btn {
  appearance: none;
  border: 1px solid var(--rule);
  background: transparent;
  color: var(--ink-mute);
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.1em;
  padding: 0.55rem 0.95rem;
  cursor: pointer;
  transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
  border-radius: 2px;
}
.map-mode-btn:hover { color: var(--ink); border-color: var(--ink); }
.map-mode-btn.is-active {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.map-mode-btn:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}

/* Tooltip row activ (modul curent — emphasizat vizual). Tint neutru cu --ink,
   nu cu --flare: flare e culoarea pierderii, ar fi color collision pe modul „count". */
.sc-tooltip .tt-row-active {
  background: color-mix(in oklch, var(--ink) 6%, transparent);
  padding: 0.15rem 0.55rem;
  border-radius: 2px;
}

/* Mobile <=640px: toggle ocupă toată lățimea viewport-ului, butoanele împart egal.
   La 360px (cel mai îngust device standard) trebuie să încapă pe un singur rând. */
@media (max-width: 640px) {
  .map-mode-toggle {
    padding: 0;
    gap: 0.25rem;
    max-width: 100%;
    flex-wrap: nowrap;
  }
  .map-mode-btn {
    flex: 1 1 0;
    min-width: 0;
    padding: 0.6rem 0.4rem;
    font-size: var(--text-label);
    letter-spacing: 0.06em;
    white-space: nowrap;
  }
}

#judete-map path.county {
  transition: stroke-opacity 150ms, stroke-width 150ms, filter 150ms;
  cursor: pointer;
}
#judete-map path.county:hover {
  stroke-opacity: 1 !important;
  stroke-width: 1.5 !important;
  filter: brightness(1.08);
}

/* Zoom controls — overlay sticky în colțul stânga-sus al hărții.
   Stânga-sus pentru că dreapta e ocupată de inset-uri și de marginea cu Marea Neagră,
   iar utilizatorii se așteaptă la controale apropiate de gestul de pinch. */
.map-zoom-controls {
  position: absolute;
  top: 8px;
  right: 8px;
  display: none;
  flex-direction: column;
  gap: 4px;
  z-index: 2;
}
/* Afișare doar pe device-uri touch (mobile, tablete) — pe desktop pinch nu există
   și utilizatorii nu au nevoie de butoane (mouse drag pan-ează direct). */
@media (hover: none) and (pointer: coarse) {
  .map-zoom-controls { display: flex; }
}
.map-zoom-btn {
  appearance: none;
  width: 36px;
  height: 36px;
  border: 1px solid var(--rule);
  background: color-mix(in oklch, var(--paper) 92%, transparent);
  color: var(--ink);
  font-family: var(--f-mono);
  font-size: 1.1rem;
  line-height: 1;
  font-weight: 700;
  cursor: pointer;
  border-radius: 3px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background 120ms ease, border-color 120ms ease;
  -webkit-tap-highlight-color: transparent;
}
.map-zoom-btn:hover {
  background: var(--paper);
  border-color: var(--ink);
}
.map-zoom-btn:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
@media (max-width: 560px) {
  .map-zoom-btn {
    width: 40px;
    height: 40px;
    font-size: 1.2rem;
  }
}

/* ---------- VI · PARADOX HEADLINE ----------
   „Pierd bani. Plătesc regește." — contrast tipografic care reflectă paradoxul.

   Unbounded nu are italic native (nu e încărcat italic), deci în loc să folosim
   `font-style: italic` (care ar produce fake skew low-quality), construim contrast prin:
   - linia 1 = greutate maximă (default 700, fapt brut)
   - linia 2 = greutate ușoară (300, „regalitate" lejeră)
   - linia 2 puțin mai mare cu spacing mai deschis (suggestie de „lux")
   - linia 2 indentată asimetric (rupe gridul, semnalează „... și totuși")
   - underline decorativ subtil pe linia 2 (semnalizează că „regește" e sarcastic) */
.head-paradox {
  line-height: 0.95;
}
.head-paradox .paradox-fact {
  display: inline-block;  /* baza solidă, default Unbounded 700 */
}
.head-paradox .paradox-irony {
  font-weight: 300;             /* lighter — counter-balance vizual */
  font-size: 1.08em;
  letter-spacing: -0.005em;
  display: inline-block;
  margin-left: clamp(0.5ch, 2vw, 1.6ch);
  margin-top: 0.08em;
  position: relative;
}
/* Underline static — vizual semnalează „cuvântul-cheie ironic".
   Subtil (35% opacity) ca să nu concureze cu textul. */
.head-paradox .paradox-irony::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0.05em;
  bottom: 0.08em;
  height: 0.06em;
  background: currentColor;
  opacity: 0.35;
  pointer-events: none;
}
@media (max-width: 560px) {
  .head-paradox .paradox-irony {
    margin-left: 0.5ch;
    font-size: 1.06em;
  }
  .head-paradox .paradox-irony::after { bottom: 0.06em; height: 0.05em; }
}

/* ---------- VI · EMBLEM POSTERS ---------- */
.emblem-posters {
  max-width: 1280px;
  width: 100%;
  margin: clamp(2rem, 5vh, 3.5rem) auto 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* 3 × 2 — always */
  gap: 1px;
  background: color-mix(in oklch, var(--ink) 15%, transparent);
  border: 1px solid color-mix(in oklch, var(--ink) 15%, transparent);
}
@media (max-width: 760px) {
  .emblem-posters { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 460px) {
  .emblem-posters { grid-template-columns: 1fr; }
}
.emblem {
  background: var(--paper);
  padding: 1.75rem 1.5rem;
  display: flex;
  flex-flow: column;
  gap: 1rem;
  min-height: 320px;
  position: relative;
  overflow: hidden;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 700ms var(--ease-out-quart), transform 700ms var(--ease-out-quint);
  cursor: pointer;
  border: 1px solid transparent;
  outline: none;
}
.emblem.revealed { opacity: 1; transform: translateY(0); }
.emblem:hover,
.emblem:focus-visible {
  border-color: var(--ink);
  box-shadow: 0 12px 32px -16px color-mix(in oklch, var(--ink) 35%, transparent);
}
.emblem:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
.emblem:hover .emblem-fisa-btn,
.emblem:focus-visible .emblem-fisa-btn {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.emblem-tag {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.emblem-name {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 1.2rem;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink);
  max-width: 18ch;
  min-height: 2.2em;
}
.emblem-marja {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: clamp(1.9rem, 3.2vw, 2.8rem);
  line-height: 0.95;
  letter-spacing: -0.035em;
  color: var(--flare);
}
.emblem-bar {
  position: relative;
  height: 6px;
  background: color-mix(in oklch, var(--ink) 10%, transparent);
  margin-top: 0.5rem;
}
.emblem-bar-fill {
  position: absolute;
  inset: 0 auto 0 0;
  background: var(--flare);
  transform-origin: left;
  transform: scaleX(0);
  transition: transform 1400ms var(--ease-out-quint);
}
.emblem.revealed .emblem-bar-fill { transform: scaleX(var(--bar-w, 1)); }
.emblem-foot {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px dashed color-mix(in oklch, var(--ink) 20%, transparent);
}
.emblem-foot.emblem-foot-3 {
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0.55rem;
}
.emblem-foot.emblem-foot-1 {
  grid-template-columns: 1fr;
  gap: 0;
}
/* Cards become narrow at ≤760px (2-col grid) — 3-col foot wraps values
   mid-token ("1.49 / mil/an"). Stack vertically to keep each value on
   one line until the 1-col card grid (≤460px) gives back full width. */
@media (max-width: 760px) and (min-width: 461px) {
  .emblem-foot.emblem-foot-3 {
    grid-template-columns: 1fr;
    gap: 0.5rem;
  }
}
.emblem-foot-cell .foot-lbl {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  display: block;
  margin-bottom: 0.2rem;
}
.emblem-foot-cell .foot-val {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 1rem;
  letter-spacing: -0.01em;
  color: var(--ink);
  display: block;
}
.emblem-foot-cell .foot-note {
  font-family: var(--f-mono);
  font-size: var(--text-2xs);
  letter-spacing: 0.04em;
  text-transform: lowercase;
  color: var(--ink-mute);
  display: block;
  margin-top: 0.2rem;
  font-style: italic;
}

.emblem-note {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.05em;
  line-height: 1.55;
  color: var(--ultra);
  background: color-mix(in oklch, var(--ultra) 8%, var(--paper));
  padding: 0.65rem 0.8rem;
  margin-top: 0.55rem;
  font-weight: 500;
  text-transform: none;
}

/* AAB pierdere brută 2024 — bloc nou pe fiecare emblematic, sub foot.
   Sursa: raportul Guvernului · 8 mai 2026. Editorial: arată cifra oficială
   a Guvernului ca certificare a poziției cardului în top pierderi. */
.emblem-aab {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.6rem 0.75rem;
  margin-top: 0.6rem;
  background: color-mix(in oklch, var(--flare) 6%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--flare) 22%, transparent);
}
.emblem-aab .aab-lbl {
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 700;
}
.emblem-aab .aab-val {
  font-family: var(--f-mono);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--flare);
  letter-spacing: -0.005em;
  white-space: nowrap;
}

/* Subvenție 2025 — bloc nou pe fiecare emblematic, sub pierderea AAB.
   Sursa: BVC aprobat per HG sau proiect HG ministerial. Editorial: când = 0
   (Unifarm, Electrocentrale Craiova, CFR Marfă), cifra 0 e marcată explicit
   ca semn că pierderea se acoperă prin alte mecanisme (capitalizări etc.). */
.emblem-subv {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.4rem 0.5rem;
  padding: 0.6rem 0.75rem;
  margin-top: 0.35rem;
  background: color-mix(in oklch, var(--ink) 4%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--ink) 14%, transparent);
}
.emblem-subv .subv-lbl {
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 700;
}
.emblem-subv .subv-val {
  font-family: var(--f-mono);
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--ink);
  letter-spacing: -0.005em;
  white-space: nowrap;
}
.emblem-subv.is-zero .subv-val {
  color: var(--ink-mute);
}
/* Adnotare pentru companiile care declară 0 subvenții dar primesc bani prin
   canale ad-hoc (Fond Rezervă, PNRR). Linie secundară sub valoarea „0",
   cu sageata stânga ca indicator vizual că ascunde realitatea. */
.emblem-subv .subv-alt {
  flex-basis: 100%;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.04em;
  color: var(--flare);
  font-weight: 600;
  margin-top: 0.15rem;
  line-height: 1.45;
}
/* Local SOE (Termoenergetica) — fără date AMEPIP, badge explicit pe card */
.emblem-local-badge {
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  background: color-mix(in oklch, var(--ink) 6%, var(--paper));
  padding: 0.45rem 0.65rem;
  margin-top: 0.55rem;
  font-weight: 700;
  text-align: center;
  border: 1px dashed color-mix(in oklch, var(--ink) 25%, transparent);
}
.emblem-marja .marja-na {
  color: var(--ink-mute);
  font-weight: 400;
}
.emblem-note strong { font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.emblem-note-link {
  display: inline-block;
  margin-top: 0.4rem;
  color: var(--flare);
  text-decoration: none;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-size: var(--text-label);
  border-bottom: 1px solid color-mix(in oklch, var(--flare) 50%, transparent);
  padding-bottom: 1px;
  transition: color 0.12s, border-color 0.12s;
  position: relative;
  z-index: 1;       /* asigură click-ul ajunge la <a>, nu la card */
}
.emblem-note-link:hover {
  color: var(--flare-deep);
  border-bottom-color: var(--flare);
}

.emblem-tinte {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.6rem;
  padding: 0.55rem 0.7rem;
  background: color-mix(in oklch, var(--flare) 7%, var(--paper));
}
.emblem-tinte .tinte-n {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: 1.3rem;
  line-height: 1;
  color: var(--flare);
  letter-spacing: -0.02em;
}
.emblem-tinte .tinte-total {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  color: var(--ink-mute);
  font-weight: 500;
}
.emblem-tinte .tinte-lbl {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  color: var(--flare);
  font-weight: 700;
  margin-left: auto;
}
.emblem-insolvency .emblem-name { color: var(--ink-soft); }
.emblem-insolvency .emblem-marja {
  /* Keep flare — the loss is real. But signal that the LOW pay is legal cap. */
}

/* Indicator „VEZI PROFILUL COMPLET →" — afișaj vizual de afordanță; întreg
   cardul .emblem este clickable. Animația hover se aplică prin .emblem:hover. */
.emblem-fisa-btn {
  display: inline-block;
  background: transparent;
  border: 1px solid color-mix(in oklch, var(--ink) 22%, transparent);
  color: var(--ink-soft);
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.55rem 0.7rem;
  margin-top: auto;
  text-align: left;
  align-self: flex-start;
  pointer-events: none;
}

/* ---------- IV · DRILL-DOWN MODAL PE JUDEȚ ---------- */
#judete-map path.county { cursor: pointer; }

.judet-modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: clamp(1rem, 4vw, 2.5rem) 1rem;
}
.judet-modal.open { display: flex; }
.judet-modal-backdrop {
  position: absolute;
  inset: 0;
  background: color-mix(in oklch, var(--ink) 75%, transparent);
  backdrop-filter: blur(5px);
}
.judet-modal-card {
  position: relative;
  background: var(--paper);
  max-width: 880px;
  width: 100%;
  min-width: 0;
  max-height: calc(100dvh - 4rem);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--rule);
  box-shadow: 0 32px 80px -16px color-mix(in oklch, var(--ink) 45%, transparent);
}
.judet-modal-body {
  flex: 1;
  min-width: 0;
  overflow: auto;
  padding: 1.6rem clamp(1rem, 4vw, 2.4rem) 1.6rem;
}
.judet-modal-close {
  position: absolute;
  top: 0.65rem;
  right: 0.7rem;
  z-index: 2;
  appearance: none;
  background: transparent;
  border: 0;
  font-family: var(--f-mono);
  font-size: 1.25rem;
  color: var(--ink-mute);
  cursor: pointer;
  padding: 0.4rem 0.55rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  border-radius: 4px;
  transition: color 0.12s, background 0.12s;
}
.judet-modal-close:hover { color: var(--flare); }
.judet-modal-close:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
  background: color-mix(in oklch, var(--flare) 6%, var(--paper));
}

.judet-modal .modal-title {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(1.4rem, 2.5vw, 2rem);
  letter-spacing: -0.02em;
  margin: 0 0 0.5rem;
  padding-right: 2.4rem;
  color: var(--ink);
}
.judet-modal .modal-meta {
  font-size: var(--text-caption);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 1rem;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--rule);
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: baseline;
}
.judet-modal .modal-meta .sep { opacity: 0.4; }
.judet-modal .modal-meta .m-loss { color: var(--flare); font-weight: 700; }
.judet-modal .modal-meta .m-prof { color: var(--acid-deep); font-weight: 700; }
.judet-modal .modal-meta .m-opac { color: var(--ink-mute); }

.judet-modal .modal-controls {
  display: flex;
  gap: 1rem;
  margin-bottom: 0.75rem;
  flex-wrap: wrap;
}
.judet-modal .filter-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: var(--text-caption);
  letter-spacing: 0.1em;
  color: var(--ink-soft);
  text-transform: uppercase;
  cursor: pointer;
  user-select: none;
}
.judet-modal .filter-toggle input { cursor: pointer; }

.judet-modal table.judet-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  font-family: var(--f-body);
  font-size: 0.88rem;
}
.judet-modal table.judet-table td.cell-nume,
.judet-modal table.judet-table td.cell-marja,
.judet-modal table.judet-table td.cell-sal,
.judet-modal table.judet-table td.cell-pl {
  overflow-wrap: anywhere;
  word-break: break-word;
}
/* P/L cell: aceeași convenție de culoare ca .cell-marja — profit = acid-deep,
   pierdere = flare. Tabelul are deja un pattern stabilit (marja verde/roșu),
   inconsistența ar fi mai gravă decât „Christmas tree" pe județe sănătoase.
   Font-weight 600 (vs 700 pe marja) păstrează marja ca emphasis primar. */
.judet-modal .cell-pl-pos {
  color: var(--acid-deep);
  font-weight: 600;
}
.judet-modal .cell-pl-neg {
  color: var(--flare);
  font-weight: 600;
}

/* Agregate P/L în modal-meta — neutru, alineat cu vocabularul existent al meta-line
   (singurele cifre colorate sunt counts brute via .m-loss/.m-prof, din convenția veche).
   Cifra cumulată semnată e suficient de expresivă prin sign prefix („+", „−") fără culoare. */
.judet-modal .modal-meta .m-pl-pos,
.judet-modal .modal-meta .m-pl-neg { font-weight: 600; }

/* Mobile: ascunde coloana SALARIU sub 640px (date complementare disponibile doar
   pe centrale; P/L MFin rămâne — e mai editorial-relevant decât salariu director,
   plus user feedback explicit că vor să-l vadă pe telefon). */
@media (max-width: 640px) {
  .judet-modal table.judet-table th.th-sal,
  .judet-modal table.judet-table td.cell-sal { display: none; }
  /* Coloana P/L compactă pe mobile: doar valoarea, fără padding extra. */
  .judet-modal table.judet-table td.cell-pl { padding-left: 0.3rem; padding-right: 0.3rem; }
  .judet-modal table.judet-table th[data-sort="pl"] { padding-left: 0.3rem; padding-right: 0.3rem; font-size: var(--text-2xs); letter-spacing: 0.08em; }
}
.judet-modal table.judet-table th {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  font-weight: 500;
  text-align: left;
  padding: 0.7rem 0.6rem 0.55rem;
  border-bottom: 1px solid var(--rule);
}
.judet-modal table.judet-table th.sortable {
  cursor: pointer;
  user-select: none;
}
.judet-modal table.judet-table th.sortable:hover { color: var(--ink); }
.judet-modal table.judet-table td {
  padding: 0.55rem 0.6rem;
  border-bottom: 1px solid color-mix(in oklch, var(--ink) 6%, transparent);
  vertical-align: middle;  /* aliniere consistentă a marjei când numele wrap pe 2 linii */
  line-height: 1.35;
}
/* Pe județe fără salarii (40 din 42), tabelul are doar 2 coloane.
   Numele primește mai multă lățime, marja stă în dreapta cu spațiu generos. */
.judet-modal table.judet-table.two-col th:first-child,
.judet-modal table.judet-table.two-col td:first-child { width: 70%; }
.judet-modal table.judet-table tr:last-child td { border-bottom: 0; }
.judet-modal table.judet-table tr.row-clickable { cursor: pointer; transition: background 0.12s ease; }
.judet-modal table.judet-table tr.row-loading { cursor: progress; opacity: 0.6; }
.ac-row.row-loading,
.company-example.row-loading { cursor: progress; opacity: 0.6; }
.judet-modal table.judet-table tr.row-clickable:hover,
.judet-modal table.judet-table tr.row-clickable:focus-visible {
  background: color-mix(in oklch, var(--ink) 5%, transparent);
  outline: none;
}
.judet-modal table.judet-table tr.row-clickable:focus-visible .cell-nume {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.judet-modal .row-pierdere .cell-marja { color: var(--flare); font-weight: 700; }
.judet-modal .row-profit   .cell-marja { color: var(--acid-deep); font-weight: 700; }
.judet-modal .row-opac     .cell-marja { color: var(--ink-mute); }
.judet-modal .opac-tag {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  padding: 0.1rem 0.4rem;
  background: color-mix(in oklch, var(--ink) 6%, transparent);
}
/* Variante per sub-tip (slug ASCII): dormant rămâne neutru, deficitară primește
   emphasis flare (e o companie pe pierdere reală, doar fără cifră de afaceri). */
.judet-modal .opac-tag-deficitara {
  color: var(--paper);
  background: var(--flare);
  font-weight: 600;
}
.judet-modal .opac-tag-inactiva {
  color: var(--paper);
  background: color-mix(in oklch, var(--ink-mute) 60%, var(--ink));
}
.judet-modal .empty { padding: 1.5rem 0.6rem; text-align: center; color: var(--ink-mute); font-style: italic; }
.judet-modal .modal-foot {
  margin-top: 1.25rem;
  padding-top: 0.9rem;
  border-top: 1px solid var(--rule);
  font-size: var(--text-label);
  letter-spacing: 0.1em;
  line-height: 1.55;
  color: var(--ink-mute);
}

/* Notă: anterior aici era un fade gradient sticky la baza body-ului ca semnal de scroll.
   A fost eliminat pentru că se suprapunea peste paragraful "SURSA · AMEPIP..." din
   modal-foot (când utilizatorul scrolla la sfârșit, fade-ul rămânea peste foot și
   făcea textul ilizibil). Footer-ul cu border-top + text mono e deja semnal vizual
   de "end of list", scroll bar-ul nativ al modal-ului indică restul. */

@media (max-width: 640px) {
  .judet-modal { padding: 0.5rem 0.5rem; }
  .judet-modal-card { max-height: calc(100dvh - 1rem); }
  .judet-modal-body { padding: 1.2rem 1rem 1.4rem; }
  .judet-modal .modal-title { font-size: 1.3rem; }
  .judet-modal .modal-meta { font-size: var(--text-label); gap: 0.3rem; }
  .judet-modal table.judet-table { font-size: var(--text-caption); }
  .judet-modal table.judet-table th { font-size: var(--text-2xs); padding: 0.55rem 0.35rem; }
  /* Padding td asimetric (right + bottom + top, fără left) — câștigăm spațiu
     pentru numele lung al companiei pe mobile, cell-urile numerice rămân ancorate. */
  .judet-modal table.judet-table td { padding: 0.5rem 0.35rem 0.5rem 0; }
  /* Coloanele numerice (marja + P/L): zero padding, centrate — economie maximă
     de spațiu orizontal la <640px. */
  .judet-modal table.judet-table td.cell-marja,
  .judet-modal table.judet-table td.cell-pl { padding: 0.5rem 0; text-align: center; }
  .judet-modal table.judet-table th[data-sort="marja"],
  .judet-modal table.judet-table th[data-sort="pl"] { padding: 0.55rem 0; text-align: center; }
  .judet-modal .cell-sal { font-size: var(--text-caption); }
}

/* ---------- VI · PLEDGES (10 + PNRR ticker) ---------- */
.manifest {
  background: var(--paper);
}

.pledge-grid {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1px;
  background: color-mix(in oklch, var(--ink) 18%, transparent);
  border: 1px solid color-mix(in oklch, var(--ink) 18%, transparent);
}

.pledge {
  background: var(--paper);
  padding: 1.4rem 1.2rem 1.2rem;
  display: grid;
  grid-template-rows: auto 1fr auto auto;
  gap: 0.7rem;
  min-height: 240px;
  position: relative;
  overflow: hidden;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 600ms var(--ease-out-quart), transform 600ms var(--ease-out-quint), background 300ms;
}
.pledge.revealed { opacity: 1; transform: translateY(0); }
.pledge:hover { background: var(--paper-deep); }

.pledge-num {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: clamp(1.8rem, 2.5vw, 2.6rem);
  line-height: 0.85;
  letter-spacing: -0.04em;
  color: color-mix(in oklch, var(--ink) 25%, var(--paper));
}

.pledge-text {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(0.9rem, 1.05vw, 1.05rem);
  line-height: 1.15;
  letter-spacing: -0.015em;
  color: var(--ink);
  align-self: center;
  text-wrap: balance;
}

.pledge-stamp {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  font-weight: 700;
  color: var(--flare);
  padding-top: 0.4rem;
  border-top: 1px solid color-mix(in oklch, var(--ink) 12%, transparent);
}

.pledge.partial .pledge-stamp {
  color: var(--ultra);
}

.pledge-sub {
  font-family: var(--f-body);
  font-size: var(--text-caption);
  line-height: 1.3;
  color: var(--ink-mute);
  margin-top: 0.2rem;
  max-width: 28ch;
}

.pledge-source {
  max-width: 1280px;
  width: 100%;
  margin: 1rem auto 0;
  padding: 0.75rem 0.2rem;
  display: flex;
  gap: 0.75rem;
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.ps-label {
  color: var(--flare);
  font-weight: 700;
}

/* ---------- PNRR TICKER ---------- */
.pnrr-ticker {
  max-width: 1280px;
  width: 100%;
  margin: clamp(2rem, 6vh, 4rem) auto 0;
  background: var(--ink);
  color: var(--paper);
  padding: clamp(2rem, 4vw, 3rem);
  display: grid;
  gap: clamp(1.5rem, 3vw, 2.5rem);
  position: relative;
}

.ticker-eyebrow {
  font-size: var(--text-caption);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--acid);
  font-weight: 500;
}

.ticker-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 6vw, 5rem);
}

.ticker-cell {
  display: grid;
  gap: 0.6rem;
}

.ticker-num {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: clamp(2.6rem, 6.5vw, 5rem);
  line-height: 0.95;
  letter-spacing: -0.05em;
  color: var(--paper);
}
.ticker-slash {
  display: inline-block;
  padding: 0 0.1em;
  color: color-mix(in oklch, var(--paper) 35%, transparent);
}

.ticker-lbl {
  font-family: var(--f-body);
  font-size: clamp(0.88rem, 1vw, 1.05rem);
  color: color-mix(in oklch, var(--paper) 75%, transparent);
  letter-spacing: 0.01em;
}

.ticker-foot {
  display: flex;
  gap: 0.75rem;
  padding-top: 1.25rem;
  border-top: 1px solid color-mix(in oklch, var(--paper) 18%, transparent);
  font-size: var(--text-caption);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: color-mix(in oklch, var(--paper) 55%, transparent);
}
.ticker-foot span:first-child {
  color: var(--acid);
  font-weight: 700;
}

.manifest-final {
  max-width: 1280px;
  width: 100%;
  margin: clamp(4rem, 12vh, 8rem) auto 0;
  text-align: center;
}
.final-line {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: clamp(2.4rem, 6.5vw, 5rem);
  line-height: 0.98;
  letter-spacing: -0.045em;
  color: var(--ink);
}

/* ---------- METHODOLOGY ---------- */
.method {
  min-height: auto;
  padding: clamp(2rem, 4vh, 3rem) var(--gutter);
  background: var(--ink);
  color: var(--paper);
}
.method-inner {
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  display: grid;
  gap: 2rem;
}
.method .eyebrow { color: color-mix(in oklch, var(--paper) 50%, transparent); }
.method-defs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.75rem 2.5rem;
}
.method-defs > div {
  border-top: 1px solid color-mix(in oklch, var(--paper) 25%, transparent);
  padding-top: 1rem;
}
.method-defs dt {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: color-mix(in oklch, var(--paper) 65%, transparent);
  margin-bottom: 0.4rem;
}
.method-defs dd {
  font-family: var(--f-body);
  font-size: 0.95rem;
  line-height: 1.45;
  color: color-mix(in oklch, var(--paper) 90%, transparent);
}
.method-defs dd .mono { color: var(--acid); }
.method-links {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem 2.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid color-mix(in oklch, var(--paper) 25%, transparent);
}
.method-links a {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--paper);
  text-decoration: none;
  border-bottom: 1px solid var(--flare);
  padding-bottom: 2px;
  transition: color 200ms;
}
.method-links a:hover { color: var(--flare); }
.method-foot {
  font-size: var(--text-caption);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: color-mix(in oklch, var(--paper) 50%, transparent);
  padding-top: 1rem;
}

/* ---------- TOOLTIP ---------- */
/* Subgrid: toate rândurile împart același 2-col layout (label max-content + value
   auto), deci valorile se aliniază pe aceeași axă verticală indiferent de lungimea
   label-ului din rândul respectiv. Înainte foloseam flex per-row → fiecare valoare
   îsi negociază poziția cu label-ul ei → coloană dezordonată. */
.sc-tooltip {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  opacity: 0;
  background: var(--ink);
  color: var(--paper);
  padding: 0.85rem 1rem;
  /* Mai larg ca să încadreze valori multi-token („37,0 mil lei") fără wrap.
     Înainte: 280px era prea îngust pentru label uppercase 0.1em + value. */
  max-width: 340px;
  font-family: var(--f-body);
  font-size: 0.82rem;
  line-height: 1.4;
  z-index: 200;
  transition: opacity 140ms;
  box-shadow: 0 12px 28px -8px color-mix(in oklch, var(--ink) 40%, transparent);
  display: grid;
  /* minmax(0, ...) permite coloanelor să se restrângă sub lățimea conținutului
     (default grid items au min-width: auto = max-content, ce blochează shrink-ul
     și provoacă overflow pe mobile când numele companiei e lung). */
  grid-template-columns: minmax(0, max-content) minmax(0, auto);
  column-gap: 1rem;
  align-content: start;
}
.sc-tooltip strong {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 0.95rem;
  display: block;
  margin-bottom: 0.4rem;
  letter-spacing: -0.01em;
  grid-column: 1 / -1;
  /* Permite numelor lungi (ex. „Compania Națională Romarm S.A. Filiala...")
     să se rupă pe mai multe linii în loc să iasă din viewport. */
  min-width: 0;
  overflow-wrap: anywhere;
  hyphens: auto;
}
.sc-tooltip .tt-row {
  display: grid;
  grid-template-columns: subgrid;
  grid-column: 1 / -1;
  padding: 0.12rem 0;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.03em;
}
.sc-tooltip .tt-row > span:last-child {
  text-align: right;
  white-space: nowrap;
}
.sc-tooltip .tt-row span:first-child {
  color: color-mix(in oklch, var(--paper) 55%, transparent);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

/* ==========================================================================
   RESPONSIVE — single canonical cascade
   1080px : tablet portrait
    760px : phone landscape / small tablet
    560px : phone portrait (most polish lives here)
    420px : tight phone
   ========================================================================== */

/* ≤ 1080px — tablet portrait */
@media (max-width: 1080px) {
  .pledge-grid { grid-template-columns: repeat(3, 1fr); }
  .ticker-stats { gap: 2.5rem; }
}

/* ≤ 760px — phone landscape / small tablet */
@media (max-width: 760px) {
  /* Stage rhythm — single source of truth */
  .stage {
    --stage-pad: clamp(1.85rem, 5.2vh, 2.6rem);
    padding: calc(var(--stage-pad) + 0.6rem) var(--gutter) var(--stage-pad);
  }
  .stage + .stage { padding-top: 1.4rem; }

  /* Headlines */
  .head-line { font-size: clamp(1.55rem, 5.4vw, 2.2rem); line-height: 1.06; letter-spacing: -0.025em; }
  .huge { font-size: clamp(2.8rem, 16vw, 5.4rem); }
  .chapter-head { gap: 0.55rem; margin-bottom: 1.15rem; }

  /* Hero */
  .hook { padding-top: 6rem; gap: 1rem; }
  .hook-sub { max-width: 100%; font-size: clamp(1.05rem, 3.8vw, 1.3rem); }
  .grid-vis { aspect-ratio: auto; }

  /* § I stats — 2 cols on tablet portrait, single below */
  .stat-stack { grid-template-columns: repeat(2, 1fr); }
  .stat-cell { min-height: 0; padding: 1.4rem 1.15rem; gap: 1rem; }
  .stat-num { font-size: clamp(1.7rem, 6vw, 2.3rem); min-height: 0; }
  .stat-body { flex: 0 0 auto; }
  .stat-source { margin-top: 0.55rem; padding-top: 0; }
  .stat-note, .stat-thesis-note { font-size: 0.88rem; line-height: 1.4; }

  /* Thesis card — pe tablet stack vertical (număr deasupra, body sub) */
  .stat-thesis {
    grid-template-columns: 1fr;
    gap: 0.65rem;
    padding: 1.1rem 1.1rem;
  }
  .stat-thesis-num {
    font-size: clamp(1.85rem, 6.5vw, 2.6rem);
    white-space: normal;
  }
  .stat-thesis-sources { gap: 0.6rem 1.1rem; }

  /* Payoff */
  .payoff-bar { height: 38px; }
  .payoff-bar::after {
    font-size: var(--text-label);
    letter-spacing: 0.08em;
    left: 0.6rem;
  }

  /* Viz frames + captions */
  .viz-frame { min-height: 320px; }
  .viz-frame.tall { min-height: 400px; }
  .viz-caption {
    grid-template-columns: 1fr;
    gap: 0.45rem;
    margin-top: 1rem;
    padding-top: 0.75rem;
    align-items: start;
  }
  .cap-mark { font-size: var(--text-label); letter-spacing: 0.13em; }
  .cap-text { font-size: 0.94rem; line-height: 1.35; }

  /* Geo map height cap so it doesn't dominate the viewport */
  .geo-frame svg { max-height: 480px; }

  /* Distribution head needs tighter sizing */
  #distribution .head-line { font-size: clamp(1.4rem, 6.4vw, 1.95rem); }
  .dist-hint { letter-spacing: 0.13em; }

  /* Topbar — flex layout: mark left, search + clopoțel la dreapta (forțat prin margin-right:auto pe mark) */
  .topbar {
    padding: 0.7rem var(--gutter);
    gap: 0.7rem;
  }

  /* Emblems — slightly tighter spacing */
  .emblem-posters { margin-top: 1.4rem; }

  /* Pledges, ticker, final line */
  .pledge-grid { grid-template-columns: repeat(2, 1fr); }
  .pnrr-ticker { margin-top: 1.75rem; }
  .ticker-stats { grid-template-columns: 1fr; }
  .manifest-final { margin-top: 2rem; }

  /* Methodology — keep 2 cols on tablet, single phone */
  .method-defs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 2rem; }

  /* Tooltip safe-area */
  .sc-tooltip {
    max-width: min(82vw, 280px);
    font-size: 0.76rem;
  }
}

/* ≤ 560px — phone portrait */
@media (max-width: 560px) {
  /* Section rhythm a touch tighter */
  .stage { --stage-pad: clamp(1.65rem, 4.8vh, 2.4rem); }
  .stage + .stage { padding-top: 1.25rem; }
  .chapter-head { margin-bottom: 1rem; gap: 0.5rem; }

  /* Hero */
  .hook { padding-top: 5.5rem; gap: 0.85rem; }
  .huge { font-size: clamp(2.6rem, 16vw, 4.5rem); margin-top: 0.2rem; }
  .hook-sub { font-size: 1.2rem; margin-top: 0.3rem; }
  .hook-note { font-size: var(--text-label); padding-top: 0.75rem; margin-top: 0.95rem; }
  .hook-note > div { grid-template-columns: 2.4rem 1fr; gap: 0.45rem; }

  /* Topbar */
  .topbar { padding: 0.6rem var(--gutter); gap: 0.85rem; }
  .mark-label { font-size: 1rem; letter-spacing: -0.015em; line-height: 1.05; }
  .mark-break { display: inline; }

  /* § I stat cards — single column under 560 */
  .stat-stack { grid-template-columns: 1fr; }
  .stat-cell { padding: 1.25rem 1.1rem; min-height: 0; gap: 0.9rem; }
  .stat-num { font-size: clamp(1.7rem, 7.5vw, 2.2rem); }
  .stat-note, .stat-thesis-note { font-size: 0.85rem; }

  /* Payoff frame */
  .payoff-frame { gap: 0.8rem; }
  .payoff-bar { height: 34px; }
  .pf-head { font-size: clamp(1.05rem, 4.6vw, 1.3rem); }
  .pf-stat { font-size: 0.92rem; }
  .payoff-text-top { gap: 0.5rem; padding-bottom: 0.15rem; }
  .payoff-text-bottom { flex-direction: column; gap: 0.6rem; }

  /* Viz / captions */
  .viz-frame { min-height: 280px; }
  .viz-frame.tall { min-height: 340px; }
  .viz-caption { gap: 0.4rem 0.9rem; padding-top: 0.65rem; }
  .cap-mark { font-size: var(--text-label); letter-spacing: 0.12em; }
  .cap-text { font-size: 0.92rem; line-height: 1.4; }
  .cap-gloss { font-size: var(--text-caption); margin-top: 0.4rem; }
  .dist-hint, .geo-hint { font-size: var(--text-label); letter-spacing: 0.12em; }
  .geo-frame svg { max-height: 420px; }

  /* PNRR ticker */
  .pnrr-ticker { padding: 1.5rem 1.25rem; gap: 1rem; margin-top: 2rem; }
  .ticker-eyebrow { font-size: var(--text-label); letter-spacing: 0.14em; }
  .ticker-num { font-size: clamp(2.2rem, 11vw, 3.5rem); }
  .ticker-lbl { font-size: 0.88rem; }
  .ticker-foot { gap: 0.5rem; font-size: var(--text-label); padding-top: 1rem; }

  /* Pledges */
  .pledge { padding: 1.05rem 0.9rem; min-height: auto; gap: 0.55rem; }
  .pledge-num { font-size: clamp(1.5rem, 7vw, 2rem); }
  .pledge-text { font-size: 0.88rem; line-height: 1.2; }
  .pledge-stamp { font-size: var(--text-label); letter-spacing: 0.1em; }
  .pledge-sub { font-size: var(--text-label); max-width: 24ch; }
  .pledges-disclaimer { font-size: var(--text-label); letter-spacing: 0.12em; line-height: 1.5; }

  /* Emblem posters */
  .emblem { padding: 1.2rem 1.05rem; min-height: 220px; gap: 0.7rem; }
  .emblem-marja { font-size: clamp(1.8rem, 9vw, 2.6rem); }
  .emblem-name { font-size: 1.02rem; }
  .emblem-note { font-size: var(--text-label); padding: 0.55rem 0.65rem; }

  /* Manifesto final */
  .final-line { font-size: clamp(2rem, 11vw, 3.2rem); line-height: 1; }
  .manifest-final { margin-top: 2.5rem; }

  /* Methodology — single column phone */
  .method { padding: 2.5rem var(--gutter); }
  .method-defs { grid-template-columns: 1fr; gap: 1rem 1.5rem; }
  .method-defs dd { font-size: 0.88rem; }
  .method-links { gap: 1rem 1.75rem; }
  .method-links a { font-size: var(--text-caption); }

  /* Tooltip */
  .sc-tooltip {
    max-width: min(88vw, 250px);
    padding: 0.7rem 0.8rem;
  }
}

/* ≤ 420px — tight phone */
@media (max-width: 420px) {
  .topbar { padding: 0.55rem var(--gutter); gap: 0.4rem; }
  .top-mark { gap: 0.4rem; }
  .mark-label { font-size: 0.92rem; }
  .huge { font-size: clamp(2.4rem, 17vw, 4rem); }
  .hook-note { font-size: var(--text-label); }
  .hook-note > div { grid-template-columns: 2.1rem 1fr; gap: 0.35rem; }
  .stat-num { font-size: 1.85rem; }
  .pledge-grid { grid-template-columns: 1fr; }
  .pledge-text { font-size: 0.82rem; }
  .geo-frame svg { max-height: 380px; }
  /* La ecrane foarte mici, valori lungi gen „50.322 lei / lună" pot wrap-a în loc
     să forțeze tooltip-ul peste marginea viewport-ului. */
  .sc-tooltip .tt-row > span:last-child { white-space: normal; }
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
  .mark-dot { animation: none; }
  .top-bell.has-news .top-bell-dot { animation: none; }
  .huge[data-reveal="chars"] span { transform: none; opacity: 1; }
  .payoff-frame .payoff-bar::before { transform: scaleX(1); }
  .payoff-frame .payoff-bar::after { opacity: 1; }
  .emblem, .pledge { opacity: 1; transform: none; }
  .emblem-bar-fill { transform: scaleX(var(--bar-w, 1)); }
}

/* ==========================================================================
   COMPANY SEARCH MODAL
   ========================================================================== */
/* Topbar pill — pereche cu Cmd+K, mereu accesibilă pe tot articolul */
.top-search {
  appearance: none;
  background: transparent;
  border: 1px solid var(--rule);
  color: var(--ink);
  /* min-height 36px+ pe desktop, ≥44px pe mobile (vezi media query) ca să respecte
     touch-target-size critical guideline */
  padding: 0.55rem 0.85rem;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  cursor: pointer;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  transition: border-color 0.12s, color 0.12s;
  white-space: nowrap;
}
.top-search:hover { border-color: var(--ink); color: var(--flare); }
.top-search:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
.top-search-icon { width: 14px; height: 14px; flex-shrink: 0; }
.top-search-kbd {
  font-size: var(--text-2xs);
  padding: 0.08rem 0.3rem;
  border: 1px solid color-mix(in oklch, var(--ink-mute) 50%, transparent);
  border-radius: 3px;
  letter-spacing: 0.06em;
  color: var(--ink-mute);
}

/* Pe ecrane mici: ascunde label, dar PĂSTREAZĂ touch target ≥ 44x44 prin
   padding crescut. Rezultă o pastilă pătrată cu icon + (kbd când există spațiu). */
@media (max-width: 720px) {
  .top-search-lbl { display: none; }
  /* Icon-only: căutarea și clopoțelul devin pătrate identice, touch target 44x44 */
  .top-search, .top-bell {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
    gap: 0;
    justify-content: center;
  }
  /* Selectorul de an: aceeași înălțime ca butoanele, lățime auto (are text) */
  .year-picker-btn { height: 44px; min-height: 44px; padding: 0.24rem 0.68rem; }
}
@media (max-width: 480px) {
  .top-search-kbd { display: none; }
}

/* Pointer la investigația paralelă pe aeroporturi · masthead.
   Stil pereche cu .top-search: aceeași înălțime, același font, doar culoare distinctă. */
.top-investigation {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 0.85rem;
  min-height: 36px;
  box-sizing: border-box;
  border: 1px solid color-mix(in oklch, var(--flare) 38%, transparent);
  background: color-mix(in oklch, var(--flare) 7%, transparent);
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  line-height: 1;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.top-investigation:hover {
  background: color-mix(in oklch, var(--flare) 16%, transparent);
  border-color: var(--flare);
  color: var(--flare);
}
.top-investigation:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
}
.top-investigation-tag {
  color: var(--flare);
  font-weight: 700;
}
.top-investigation-tag::after {
  content: " · ";
  color: color-mix(in oklch, var(--flare) 50%, transparent);
  margin: 0 0.05rem;
}
.top-investigation-lbl {
  color: var(--ink);
}
.top-investigation-arrow {
  color: var(--flare);
  transition: transform 0.18s var(--ease-out-quart);
}
.top-investigation:hover .top-investigation-arrow { transform: translateX(3px); }

@media (max-width: 960px) {
  .top-investigation-suffix { display: none; }
}
@media (max-width: 800px) {
  .top-investigation-tag, .top-investigation-tag::after { display: none; }
}
@media (max-width: 720px) {
  .top-investigation { padding: 0.7rem 0.8rem; min-height: 44px; gap: 0.45rem; }
}

/* Methodology footer hint — un singur rând discret */
.method-foot .search-tip { color: var(--ink-mute); }
.method-foot .kbd-inline {
  display: inline-block;
  padding: 0.04rem 0.3rem;
  margin: 0 0.08rem;
  border: 1px solid var(--rule);
  border-radius: 3px;
  font-family: var(--f-mono);
  font-size: 0.9em;
  color: var(--ink);
  background: var(--paper);
}

.company-modal {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: clamp(1rem, 4vw, 2.5rem) 1rem;
}
.company-modal.open { display: flex; }
.company-modal-backdrop {
  position: absolute;
  inset: 0;
  background: color-mix(in oklch, var(--ink) 75%, transparent);
  backdrop-filter: blur(5px);
}
.company-modal-card {
  position: relative;
  background: var(--paper);
  width: 100%;
  max-width: 880px;
  max-height: calc(100dvh - 4rem);
  display: flex;
  flex-direction: column;
  border: 1px solid var(--rule);
  box-shadow: 0 32px 80px -16px color-mix(in oklch, var(--ink) 45%, transparent);
}
.company-modal-close {
  position: absolute;
  top: 0.65rem;
  right: 0.7rem;
  z-index: 2;
  appearance: none;
  background: transparent;
  border: 0;
  font-family: var(--f-mono);
  font-size: 1.25rem;
  color: var(--ink-mute);
  cursor: pointer;
  padding: 0.4rem 0.55rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  border-radius: 4px;
  transition: color 0.12s, background 0.12s;
}
.company-modal-close:hover { color: var(--flare); }
.company-modal-close:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
  background: color-mix(in oklch, var(--flare) 6%, var(--paper));
}

.company-modal-search {
  padding: 1.6rem clamp(1rem, 4vw, 2.4rem) 1.2rem;
  border-bottom: 1px solid var(--rule);
  background: var(--paper);
}
.company-modal-back-bar:empty { display: none; }
.company-modal-back-bar {
  padding: 1.6rem 3.2rem 0 clamp(1rem, 4vw, 2.4rem);
  background: var(--paper);
}
.company-modal-back {
  appearance: none;
  background: transparent;
  border: 1px solid color-mix(in oklch, var(--ink) 18%, transparent);
  color: var(--ink);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  padding: 0.4rem 0.7rem;
  cursor: pointer;
  transition: background 0.12s ease, border-color 0.12s ease;
}
.company-modal-back:hover,
.company-modal-back:focus-visible {
  background: color-mix(in oklch, var(--ink) 6%, transparent);
  border-color: var(--ink);
  outline: none;
}
.company-search-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
  margin-bottom: 0.7rem;
  padding-right: 2.4rem;
}
.company-search-input-wrap {
  position: relative;
  display: flex;
  align-items: center;
}
.company-search-input {
  width: 100%;
  appearance: none;
  border: 0;
  border-bottom: 2px solid var(--ink);
  background: transparent;
  padding: 0.55rem 2.2rem 0.55rem 0.1rem;
  font-family: var(--f-display);
  font-size: clamp(1.2rem, 3vw, 1.7rem);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--ink);
  outline: 0;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.company-search-icon {
  position: absolute;
  right: 0.25rem;
  pointer-events: none;
  color: var(--ink-mute);
  flex-shrink: 0;
}
.company-search-clear {
  position: absolute;
  right: 0;
  appearance: none;
  background: transparent;
  border: 0;
  padding: 0.5rem 0.65rem;
  font-family: var(--f-mono);
  font-size: 1.35rem;
  color: var(--ink-mute);
  cursor: pointer;
  line-height: 1;
  border-radius: 4px;
  transition: color 0.12s, background 0.12s;
}
.company-search-clear[hidden] { display: none; }
.company-search-clear:hover { color: var(--ink); }
.company-search-clear:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
  background: color-mix(in oklch, var(--flare) 6%, var(--paper));
}
.company-search-input::-webkit-search-cancel-button,
.company-search-input::-webkit-search-decoration { -webkit-appearance: none; appearance: none; }
.company-search-input:focus ~ .company-search-icon,
.company-search-input:focus-visible ~ .company-search-icon {
  color: var(--ink);
}
.company-search-input::placeholder {
  color: color-mix(in oklch, var(--ink-mute) 75%, transparent);
  font-weight: 400;
}
/* Focus state: pe lângă schimbarea de bordură, adăugăm un underline mai gros
   ca semnal vizibil pentru navigare cu tastatura (border-bottom subțire singur
   nu se distinge clar pe fundal cream). */
.company-search-input:focus { border-color: var(--flare); }
.company-search-input:focus-visible {
  border-color: var(--flare);
  box-shadow: 0 4px 0 -1px var(--flare);
}
.company-search-hint {
  margin-top: 0.7rem;
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
/* Tastele ↑↓/ENTER/ESC nu sunt disponibile pe device-uri touch — ascundem hint-ul. */
@media (hover: none) and (pointer: coarse) {
  .company-search-hint { display: none; }
}

.company-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: 1.2rem clamp(1rem, 4vw, 2.4rem) 1.6rem;
}
.company-loading {
  text-align: center;
  padding: 3rem 1rem;
  font-size: var(--text-caption);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
}
.company-error {
  padding: 1.5rem;
  border: 1px solid var(--flare);
  background: color-mix(in oklch, var(--flare) 6%, var(--paper));
}
.company-error .mono { font-size: var(--text-caption); letter-spacing: 0.16em; color: var(--flare); margin-bottom: 0.6rem; }
.company-error p { margin: 0.4rem 0; font-size: 0.9rem; }
.company-error code { font-family: var(--f-mono); font-size: var(--text-caption); }

/* --- Initial helper view --- */
.company-search-helper.hidden { display: none; }
.helper-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
  margin: 1rem 0 0.7rem;
}
.helper-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 0.5rem;
  margin-bottom: 1.4rem;
}
.company-example {
  appearance: none;
  background: transparent;
  border: 1px solid var(--rule);
  padding: 0.7rem 0.85rem;
  text-align: left;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 0.18rem;
  transition: border-color 0.12s, background 0.12s;
  font-family: var(--f-mono);
}
.company-example:hover { border-color: var(--flare); background: color-mix(in oklch, var(--flare) 4%, var(--paper)); }
.company-example .ex-label {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.company-example .ex-note {
  font-size: var(--text-label);
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.helper-stats {
  font-size: var(--text-caption);
  line-height: 1.6;
  color: var(--ink-mute);
  padding: 0.85rem 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.helper-stats strong { color: var(--ink); font-weight: 700; }
.helper-tip {
  margin: 1rem 0 0;
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--ink-soft);
}
.helper-tip strong { color: var(--ink); }

/* --- Autocomplete list --- */
.company-autocomplete {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--rule);
  max-height: 60vh;
  overflow-y: auto;
}
.ac-row {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 1rem;
  row-gap: 0.18rem;
  padding: 0.7rem 0.95rem;
  border-bottom: 1px solid var(--rule);
  cursor: pointer;
  transition: background 0.1s;
  align-items: baseline;
}
.ac-row:last-child { border-bottom: 0; }
.ac-row.ac-selected { background: color-mix(in oklch, var(--flare) 7%, var(--paper)); }
.ac-row.ac-selected .ac-name { color: var(--flare); }
.ac-main {
  display: flex;
  align-items: baseline;
  gap: 0.6rem;
  flex-wrap: wrap;
  grid-column: 1;
}
.ac-name {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: -0.01em;
  color: var(--ink);
}
.ac-ticker {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  padding: 0.18rem 0.42rem;
  border: 1px solid var(--ink);
  color: var(--ink);
  font-weight: 700;
}
.ac-meta {
  grid-column: 1;
  font-size: var(--text-label);
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  text-transform: uppercase;
  display: flex;
  flex-wrap: wrap;
  gap: 0.42rem;
  align-items: baseline;
}
.ac-meta .ac-sep { opacity: 0.5; }
.ac-marja {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  font-size: 1.05rem;
  font-weight: 700;
  font-family: var(--f-mono);
  text-align: right;
  min-width: 4.5rem;
}
.ac-row.ac-profit .ac-marja { color: var(--acid-deep); }
.ac-row.ac-pierdere .ac-marja { color: var(--flare); }
.ac-row.ac-opac .ac-marja { color: var(--ink-mute); font-weight: 400; font-style: italic; }

/* --- No results --- */
.company-no-results {
  padding: 1.5rem 0.5rem;
}
.no-res-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--flare);
  text-transform: uppercase;
  margin-bottom: 0.7rem;
}
.company-no-results p {
  font-size: 0.92rem;
  line-height: 1.55;
  margin: 0.5rem 0;
}
.company-no-results .no-res-hint {
  font-size: var(--text-caption);
  letter-spacing: 0.06em;
  color: var(--ink-mute);
  line-height: 1.6;
  text-transform: none;
}
.company-no-results strong { color: var(--ink); }

/* --- COMPANY PROFILE --- */
.company-profile { display: flex; flex-direction: column; gap: 1.6rem; }
.profile-back {
  appearance: none;
  background: transparent;
  border: 0;
  cursor: pointer;
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  padding: 0.6rem 0.6rem 0.6rem 0;
  margin-bottom: 0.3rem;
  margin-left: -0.2rem;
  text-transform: uppercase;
  align-self: flex-start;
  border-radius: 4px;
  transition: color 0.12s, background 0.12s;
}
.profile-back:hover { color: var(--flare); }
.profile-back:focus-visible {
  outline: 2px solid var(--flare);
  outline-offset: 2px;
  background: color-mix(in oklch, var(--flare) 6%, var(--paper));
}
.profile-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.profile-title {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(1.4rem, 3vw, 2rem);
  letter-spacing: -0.02em;
  margin: 0.4rem 0 0.65rem;
  color: var(--ink);
  line-height: 1.1;
}
.profile-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 0.8rem;
}
.profile-status,
.profile-ticker,
.profile-onrc-flag {
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  font-weight: 700;
  padding: 0.28rem 0.55rem;
  text-transform: uppercase;
}
.profile-status-profit { background: var(--acid); color: var(--ink); }
.profile-status-pierdere { background: var(--flare); color: var(--paper); }
.profile-status-opac,
.profile-status-opaca { background: color-mix(in oklch, var(--ink-mute) 30%, var(--paper)); color: var(--ink); }
.profile-status-inactiva { background: color-mix(in oklch, var(--ink-mute) 50%, var(--paper)); color: var(--paper); }
.profile-status-deficitara { background: var(--flare); color: var(--paper); }
/* Pre-operațional: nu e profit confirmat (nu vinde nimic), dar nu e nici deficitar.
   Companii în construcție (Energonuclear). Culoare neutră-pozitivă: ink mid-tone, evită
   verde (n-au profit operațional) și flare (nu pierd). */
.profile-status-pre-operational { background: color-mix(in oklch, var(--ink) 60%, var(--paper)); color: var(--paper); }
.profile-ticker { background: var(--ink); color: var(--paper); }
.profile-onrc-flag { background: var(--flare-deep); color: var(--paper); }
.profile-meta {
  font-size: var(--text-caption);
  letter-spacing: 0.12em;
  color: var(--ink-mute);
  text-transform: uppercase;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: baseline;
  padding-bottom: 0.85rem;
  border-bottom: 1px solid var(--rule);
}
.profile-meta strong { color: var(--ink); }
.profile-meta .sep { opacity: 0.45; }

.profile-section {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
}
.profile-section-title {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
  margin: 0;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--rule);
}
.profile-section-missing .profile-missing-note {
  font-size: 0.85rem;
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
}
.profile-section-missing strong { color: var(--ink); }

/* --- Sparkline --- */
.profile-spark-wrap {
  width: 100%;
  background: color-mix(in oklch, var(--ink) 3%, var(--paper));
  padding: 0.5rem 0.4rem;
}
.profile-sparkline {
  width: 100%;
  height: auto;
  display: block;
}
.spark-zero { stroke: var(--ink-mute); stroke-width: 1; stroke-dasharray: 2 4; opacity: 0.5; }
.spark-line { fill: none; stroke: var(--ink); stroke-width: 1.6; }
.spark-dot-pos { fill: var(--acid-deep); stroke: var(--ink); stroke-width: 1; }
.spark-dot-neg { fill: var(--flare); stroke: var(--ink); stroke-width: 1; }
.spark-dot-missing { fill: var(--ink-mute); opacity: 0.4; }
/* Font-size mărit în viewBox (720×140) ca să fie lizibil pe mobile.
   Container ~320px → scale 0.44× → 16px viewBox = 7px efectiv (acceptabil).
   Pe desktop la 720px width = 1:1, deci 16px = 16px, generos dar nu enorm. */
/* text-anchor e setat inline pe fiecare <text> (start/middle/end) ca să prevină
   tăierea etichetelor la extremele 2019/2024. Nu pune text-anchor în CSS — ar
   suprascrie atributul de prezentare al elementului. */
.spark-yr {
  font-family: 'JetBrains Mono', monospace;
  font-size: 14px;
  fill: var(--ink-mute);
  letter-spacing: 0.06em;
}
.spark-val {
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px;
  fill: var(--ink);
  font-weight: 700;
}
.spark-empty {
  text-align: center;
  padding: 1.2rem;
  font-size: var(--text-caption);
  letter-spacing: 0.16em;
  color: var(--ink-mute);
}

/* Financial cells under sparkline */
.profile-fin-grid,
.profile-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 0;
  border-top: 1px solid var(--rule);
}
.pfin-cell, .pstat {
  padding: 0.85rem 0.95rem;
  border-right: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.pfin-cell:last-child, .pstat:last-child { border-right: 0; }
.pfin-lbl, .pstat-lbl {
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  text-transform: uppercase;
  margin-bottom: 0.4rem;
}
.pfin-val {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(1.4rem, 2.4vw, 1.8rem);
  letter-spacing: -0.015em;
  line-height: 1;
}
.pfin-val.val-neg { color: var(--flare); }
.pfin-val.val-pos { color: var(--ink); }
.pfin-def {
  margin-top: 0.45rem;
  font-size: var(--text-label);
  letter-spacing: 0.06em;
  color: var(--ink-mute);
  text-transform: lowercase;
  font-style: italic;
}
.pstat-val {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: clamp(1.2rem, 2.2vw, 1.55rem);
  letter-spacing: -0.015em;
  color: var(--ink);
  line-height: 1;
}
.pstat-val.val-neg { color: var(--flare); }
.pstat-val.val-pos { color: var(--sage, var(--ink)); }
.pstat-unit {
  font-family: var(--f-body);
  font-weight: 400;
  font-size: 0.65em;
  color: var(--ink-mute);
}

/* Warn badge — lângă titlul secțiunii BILANȚ când capitalurile sunt negative */
.profile-warn-badge {
  display: inline-block;
  margin-left: 0.6rem;
  padding: 0.18rem 0.55rem;
  font-size: var(--text-2xs);
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--paper);
  background: var(--flare);
  border-radius: 0.15rem;
  vertical-align: middle;
}
/* Variantă mute: raportare formală (CA=0). Nu e gravă ca insolvența tehnică
   (capitaluri<0); e doar semnal că datele de bilanț nu reflectă activitate reală. */
.profile-warn-badge.profile-warn-badge-mute {
  background: var(--ink-mute);
  color: var(--paper);
}

/* Anexa table */
.anexa-summary {
  font-size: var(--text-caption);
  letter-spacing: 0.06em;
  color: var(--ink-soft);
}
.anexa-summary .ax-pos { color: var(--acid-deep); font-weight: 700; }
.anexa-summary .ax-neg { color: var(--flare); font-weight: 700; }
.anexa-summary .ax-neu { color: var(--ink-mute); font-weight: 700; }
.profile-anexa-tbl {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--f-body);
  font-size: 0.82rem;
}
.profile-anexa-tbl th {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
  text-align: left;
  padding: 0.4rem 0.6rem;
  border-bottom: 1px solid var(--ink);
  font-weight: 500;
}
.profile-anexa-tbl td {
  padding: 0.55rem 0.6rem;
  border-bottom: 1px solid var(--rule);
  vertical-align: top;
}
.profile-anexa-tbl tr:last-child td { border-bottom: 0; }
.profile-anexa-tbl .ax-name { line-height: 1.3; }
.profile-anexa-tbl .ax-val,
.profile-anexa-tbl .ax-target { white-space: nowrap; }
.profile-anexa-tbl .ax-good { color: var(--acid-deep); font-weight: 700; font-size: var(--text-label); letter-spacing: 0.08em; }
.profile-anexa-tbl .ax-bad { color: var(--flare); font-weight: 700; font-size: var(--text-label); letter-spacing: 0.08em; }
.profile-anexa-tbl .ax-none { color: var(--ink-mute); font-size: var(--text-label); }

.profile-foot {
  font-size: var(--text-label);
  letter-spacing: 0.06em;
  line-height: 1.6;
  color: var(--ink-mute);
  text-transform: none;
  padding-top: 1rem;
  border-top: 1px solid var(--rule);
}
.profile-foot code {
  font-family: var(--f-mono);
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
  padding: 0.08rem 0.3rem;
  font-size: 0.95em;
}

.company-not-found { padding: 2rem 0.5rem; }
.nf-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--flare);
  text-transform: uppercase;
  margin-bottom: 0.7rem;
}
.nf-back {
  margin-top: 1rem;
  appearance: none;
  background: transparent;
  border: 1px solid var(--ink);
  color: var(--ink);
  padding: 0.55rem 1rem;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.16em;
  cursor: pointer;
  text-transform: uppercase;
}
.nf-back:hover { background: var(--ink); color: var(--paper); }

/* Mobile adjustments */
@media (max-width: 640px) {
  .company-modal { padding: 0.5rem 0.5rem; }
  .company-modal-card { max-height: calc(100dvh - 1rem); }
  .company-modal-search { padding: 1.2rem 1rem 1rem; }
  .company-modal-body { padding: 1rem 1rem 1.4rem; }
  .helper-grid { grid-template-columns: 1fr; }
  .ac-row { padding: 0.7rem 0.7rem; grid-template-columns: 1fr auto; }
  .ac-name { font-size: 0.92rem; }
  .ac-marja { font-size: 0.95rem; min-width: 3.6rem; }
  .pfin-cell, .pstat { border-right: 0; }

  /* Anexa table → vertical stacked card per row, like indicators modal */
  .profile-anexa-tbl, .profile-anexa-tbl thead, .profile-anexa-tbl tbody,
  .profile-anexa-tbl tr, .profile-anexa-tbl td { display: block; width: 100%; }
  .profile-anexa-tbl thead { display: none; }
  .profile-anexa-tbl tr {
    margin-bottom: 0.85rem;
    padding: 0.7rem 0.85rem;
    border: 1px solid var(--rule);
  }
  .profile-anexa-tbl td { border: 0; padding: 0.18rem 0; }
  .profile-anexa-tbl .ax-name { font-weight: 600; margin-bottom: 0.3rem; }
  .profile-anexa-tbl td[data-label]::before {
    content: attr(data-label) " · ";
    font-family: var(--f-mono);
    font-size: var(--text-label);
    letter-spacing: 0.14em;
    color: var(--ink-mute);
    text-transform: uppercase;
    margin-right: 0.35rem;
  }
}

/* Profile · COMPARATIV (Phase 2) — rank în județ, sector, global */
/* Helper note de ierarhie — emphasis pur prin background tinted, fără bordură
   laterală (vezi impeccable absolute_bans: side-stripe borders >1px sunt slop). */
.cmp-helper {
  font-size: var(--text-caption);
  line-height: 1.55;
  color: var(--ink-soft);
  text-transform: none;
  letter-spacing: 0.01em;
  margin: 0 0 1rem;
  padding: 0.7rem 0.9rem;
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
}
.cmp-helper strong { color: var(--ink); font-weight: 700; }

.profile-comparativ .cmp-rows {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.cmp-row {
  display: grid;
  grid-template-columns: 80px 1fr auto;
  grid-template-rows: auto auto auto;
  column-gap: 0.85rem;
  row-gap: 0.35rem;
  align-items: baseline;
  padding: 0.85rem 0;
}
.cmp-row:last-child { border-bottom: 0; }
.cmp-row-empty { opacity: 0.45; }
.cmp-scope {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
  grid-column: 1; grid-row: 1;
}
.cmp-label {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: -0.01em;
  color: var(--ink);
  grid-column: 2; grid-row: 1;
}
.cmp-rank {
  font-size: var(--text-caption);
  letter-spacing: 0.06em;
  color: var(--ink);
  grid-column: 3; grid-row: 1;
  white-space: nowrap;
}
.cmp-rank strong { font-weight: 700; font-size: 1.05em; }
.cmp-sentence {
  grid-column: 2 / span 2;
  grid-row: 2;
  font-size: var(--text-caption);
  line-height: 1.45;
  color: var(--ink-soft);
}
.cmp-sentence strong { color: var(--ink); font-weight: 700; }
.cmp-bar-wrap {
  grid-column: 2 / span 2;
  grid-row: 3;
  margin-top: 0.6rem;
  padding: 0 8px;     /* spațiu ca markerul la 0% și 100% să nu fie tăiat */
}
.cmp-bar-track {
  position: relative;
  height: 2px;
  background: color-mix(in oklch, var(--ink) 14%, var(--paper));
  border-radius: 1px;
}
.cmp-bar-track::before,
.cmp-bar-track::after {
  content: '';
  position: absolute;
  top: -3px;
  width: 1px;
  height: 8px;
  background: color-mix(in oklch, var(--ink) 22%, var(--paper));
}
.cmp-bar-track::before { left: 0; }
.cmp-bar-track::after  { right: 0; }
.cmp-mark {
  position: absolute;
  top: -5px;
  width: 12px;
  height: 12px;
  margin-left: -6px;
  border-radius: 50%;
  border: 2px solid var(--paper);
  box-shadow: 0 0 0 1px var(--ink);
}
.cmp-mark-pos { background: var(--ink); }
.cmp-mark-neg { background: var(--flare); box-shadow: 0 0 0 1px var(--flare); }
.cmp-note {
  margin-top: 1rem;
  font-size: var(--text-caption);
  line-height: 1.55;
  color: var(--ink-soft);
}
.cmp-note strong { color: var(--ink); font-weight: 700; }
.cmp-note em { color: var(--ink-mute); font-style: italic; }

@media (max-width: 600px) {
  .cmp-row {
    grid-template-columns: 1fr auto;
  }
  .cmp-scope { grid-column: 1; grid-row: 1; }
  .cmp-rank { grid-column: 2; grid-row: 1; }
  .cmp-label { grid-column: 1 / span 2; grid-row: 2; font-size: 0.9rem; }
  .cmp-sentence { grid-column: 1 / span 2; grid-row: 3; }
  .cmp-bar-wrap { grid-column: 1 / span 2; grid-row: 4; }
}

/* CTA secundar sub emblem-posters — invitație de explorare */
.emblem-search-cta {
  margin-top: clamp(2rem, 5vw, 3.5rem);
  padding-top: 1.8rem;
  border-top: 1px solid color-mix(in oklch, var(--ink) 12%, transparent);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.85rem;
}
.emblem-cta-lede {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  line-height: 1.35;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
  max-width: 32ch;
}
.emblem-cta-btn {
  appearance: none;
  -webkit-appearance: none;
  background: var(--ink);
  border: 1px solid var(--ink);
  color: var(--paper);
  padding: 0.95rem 1.6rem;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.85rem;
  transition: background 0.15s, border-color 0.15s;
}
.emblem-cta-btn:hover { background: var(--flare); border-color: var(--flare); }
.emblem-cta-icon { width: 14px; height: 14px; flex-shrink: 0; }
.emblem-cta-kbd {
  font-size: var(--text-label);
  padding: 0.14rem 0.4rem;
  border: 1px solid color-mix(in oklch, var(--paper) 60%, transparent);
  border-radius: 3px;
  letter-spacing: 0.08em;
  opacity: 0.8;
}
.emblem-cta-hint {
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  color: var(--ink-mute);
  text-transform: uppercase;
  margin: 0;
}
@media (max-width: 768px) {
  .emblem-search-cta { padding-bottom: clamp(1.5rem, 6vw, 2.5rem); }
}
@media (max-width: 480px) {
  .emblem-cta-btn { font-size: var(--text-label); padding: 0.85rem 1.1rem; }
  .emblem-cta-kbd { display: none; }
}

/* ==========================================================================
   SOURCE LINKS — atribuiri inline per chart pe homepage + page methodology
   ========================================================================== */

/* Pe stat-cards din §I: 4 link-uri mici sub fiecare cifră */
.stat-source {
  display: inline-block;
  align-self: flex-start;
  margin-top: auto;
  padding-top: 1.25rem;
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--ink-mute) 35%, transparent);
  padding-bottom: 1px;
  transition: color 0.12s, border-color 0.12s;
}
.stat-source:hover,
.stat-source:focus-visible {
  color: var(--flare);
  border-bottom-color: var(--flare);
  outline: none;
}

/* SURSA inline la coada caption-ului per chart */
.viz-source {
  display: inline-block;
  grid-column: 1 / -1;
  justify-self: start;
  margin-top: 0.45rem;
  font-size: var(--text-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-mute);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--ink-mute) 35%, transparent);
  padding-bottom: 1px;
  transition: color 0.12s, border-color 0.12s;
}
.viz-source:hover,
.viz-source:focus-visible {
  color: var(--flare);
  border-bottom-color: var(--flare);
  outline: none;
}
.viz-caption.invert .viz-source {
  color: color-mix(in oklch, var(--paper) 70%, transparent);
  border-bottom-color: color-mix(in oklch, var(--paper) 35%, transparent);
}
.viz-caption.invert .viz-source:hover { color: var(--flare); border-bottom-color: var(--flare); }

/* Link în pledge-source din §VII */
.pledge-source .ps-link {
  color: var(--ink-mute);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--ink-mute) 35%, transparent);
  padding-bottom: 1px;
  transition: color 0.12s, border-color 0.12s;
}
.pledge-source .ps-link:hover,
.pledge-source .ps-link:focus-visible {
  color: var(--flare);
  border-bottom-color: var(--flare);
  outline: none;
}

/* PNRR ticker source */
.ticker-source {
  display: block;
  margin-top: 1rem;
  text-align: center;
  font-size: var(--text-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: color-mix(in oklch, var(--paper) 75%, transparent);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--paper) 30%, transparent);
  padding-bottom: 2px;
  width: max-content;
  margin-left: auto;
  margin-right: auto;
  transition: color 0.12s, border-color 0.12s;
}
.ticker-source:hover { color: var(--flare); border-bottom-color: var(--flare); }

/* ==========================================================================
   METHOD FOOTER COMPACT pe homepage — înlocuiește dl-ul de definiții lung
   ========================================================================== */

.method-inner-compact {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 1.6rem;
  padding: clamp(1.5rem, 4vw, 2.5rem) 0;
}

/* SOURCE BANNER · ascetic, mono, deasupra method-cta — afirmă onest:
   nu e live, e reproductibil. Trei linii, link inline. Trăiește pe fundalul
   închis al .method, deci folosește variantele paper-pe-ink. */
.source-banner {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  font-size: var(--text-label);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  text-wrap: balance;
  color: color-mix(in oklch, var(--paper) 60%, transparent);
  text-align: center;
  padding: 0.95rem 1rem;
  border: 1px dashed color-mix(in oklch, var(--paper) 22%, transparent);
  max-width: 720px;
  width: 100%;
  line-height: 1.55;
}
.source-banner .sb-line { display: block; }
.source-banner .sb-link {
  color: color-mix(in oklch, var(--paper) 85%, transparent);
  text-decoration: underline;
  text-decoration-color: color-mix(in oklch, var(--paper) 40%, transparent);
  text-underline-offset: 0.2em;
  transition: color 0.12s, text-decoration-color 0.12s;
}
.source-banner .sb-link:hover,
.source-banner .sb-link:focus-visible {
  color: var(--flare);
  text-decoration-color: var(--flare);
  outline: none;
}
@media (max-width: 560px) {
  .source-banner {
    font-size: var(--text-label);
    letter-spacing: 0.08em;
    padding: 0.85rem 0.75rem;
  }
}

.method-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.55rem;
  padding: 1.6rem clamp(1.2rem, 4vw, 2.2rem);
  background: color-mix(in oklch, var(--paper) 6%, var(--ink));
  color: var(--paper);
  text-decoration: none;
  border: 1px solid color-mix(in oklch, var(--paper) 18%, transparent);
  max-width: 720px;
  width: 100%;
  transition: background 0.15s, border-color 0.15s;
  text-wrap: balance;
}
.method-cta:hover,
.method-cta:focus-visible {
  background: var(--flare);
  border-color: var(--flare);
  outline: none;
}
.method-cta-eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: color-mix(in oklch, var(--paper) 70%, transparent);
  text-transform: uppercase;
}
.method-cta-title {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: clamp(1.1rem, 2.4vw, 1.55rem);
  letter-spacing: -0.015em;
  line-height: 1.15;
}
.method-cta-hint {
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  color: color-mix(in oklch, var(--paper) 60%, transparent);
  text-transform: uppercase;
}

/* ==========================================================================
   SPINOFF · pointer editorial la sub-pagina investigatie-aeroporturi.html
   Sign-off pointer la finalul longread-ului, înainte de .method (footer).
   Tipografie pură, fără card. Asimetric stânga, regulă subțire sus.
   ========================================================================== */
.stage.spinoff {
  padding-top: clamp(2rem, 5vh, 3.5rem);
  padding-bottom: clamp(2.5rem, 6vh, 4rem);
}

.spinoff-link {
  display: block;
  max-width: 1080px;
  margin: 0 auto;
  padding-top: clamp(1.6rem, 4vh, 2.5rem);
  border-top: 1px solid var(--rule);
  text-decoration: none;
  color: inherit;
}

.spinoff-eyebrow {
  display: block;
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-mute);
  margin-bottom: 0.95rem;
}

.spinoff-headline {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(1.7rem, 4vw, 2.85rem);
  line-height: 0.98;
  letter-spacing: -0.025em;
  margin: 0 0 1.25rem;
  color: var(--ink);
  max-width: 22ch;
}
.spinoff-accent {
  display: inline-block;
  font-weight: 300;
  color: var(--flare);
  font-size: 1.03em;
  letter-spacing: -0.01em;
  margin-top: 0.1em;
}

.spinoff-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-size: var(--text-caption);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--ink);
  border-bottom: 1px solid var(--ink);
  padding-bottom: 4px;
  transition: color 0.15s, border-color 0.15s;
}
.spinoff-link:hover .spinoff-cta,
.spinoff-link:focus-visible .spinoff-cta {
  color: var(--flare);
  border-bottom-color: var(--flare);
  outline: none;
}
.spinoff-arrow {
  font-size: 1rem;
  transition: transform 0.18s ease;
  display: inline-block;
}
.spinoff-link:hover .spinoff-arrow,
.spinoff-link:focus-visible .spinoff-arrow {
  transform: translateX(5px);
}

/* Footer-ul de pe homepage stă în .method care are background ink (dark).
   Centrat, contrast deschis pe închis. Textul moștenește `color: var(--paper)`
   din .method; intensitatea slabă vine prin opacitate, nu prin schimbare de culoare. */
.method-inner-compact .method-foot {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  font-size: var(--text-label);
  letter-spacing: 0.06em;
  color: color-mix(in oklch, var(--paper) 60%, transparent);
  max-width: 560px;
  margin: 0 auto;
}
/* Ledger: descriptorul la stânga, numele/email-ul la dreapta, aliniate pe aceleași axe */
.method-inner-compact .method-foot-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1.5rem;
}
.method-inner-compact .foot-label {
  color: color-mix(in oklch, var(--paper) 50%, transparent);
  font-weight: 400;
  letter-spacing: 0.1em;
}
.method-inner-compact .foot-value {
  text-align: right;
  font-weight: 600;
}
@media (max-width: 480px) {
  .method-inner-compact .method-foot-row { flex-direction: column; align-items: flex-start; gap: 0.15rem; }
  .method-inner-compact .foot-value { text-align: left; }
  .method-inner-compact .method-foot-meta { flex-wrap: wrap; justify-content: flex-start; gap: 0.35rem 0.9rem; }
}
.method-inner-compact .method-foot-author {
  color: var(--paper);
  font-weight: 600;
  letter-spacing: 0.08em;
}
.method-inner-compact .method-foot-author .author-link {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: color-mix(in oklch, var(--paper) 45%, transparent);
  text-underline-offset: 0.2em;
  transition: text-decoration-color 0.12s, color 0.12s;
}
.method-inner-compact .method-foot-author .author-link:hover,
.method-inner-compact .method-foot-author .author-link:focus-visible {
  color: var(--flare);
  text-decoration-color: var(--flare);
  outline: none;
}
.method-inner-compact .method-foot-coauthor {
  font-weight: 400;
  letter-spacing: 0.06em;
  color: var(--paper);
}
.method-inner-compact .method-foot-coauthor .author-link {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: color-mix(in oklch, var(--paper) 30%, transparent);
  text-underline-offset: 0.2em;
  transition: text-decoration-color 0.12s, color 0.12s;
}
.method-inner-compact .method-foot-coauthor .author-link:hover,
.method-inner-compact .method-foot-coauthor .author-link:focus-visible {
  color: var(--flare);
  text-decoration-color: var(--flare);
  outline: none;
}
.method-inner-compact .method-foot-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-top: 0.5rem;
  padding-top: 0.55rem;
  border-top: 1px solid color-mix(in oklch, var(--paper) 14%, transparent);
  color: color-mix(in oklch, var(--paper) 45%, transparent);
}
.method-inner-compact .method-foot-privacy {
  color: color-mix(in oklch, var(--paper) 55%, transparent);
  text-decoration: underline;
  text-decoration-color: color-mix(in oklch, var(--paper) 25%, transparent);
  text-underline-offset: 0.2em;
  transition: color 0.12s, text-decoration-color 0.12s;
}
.method-inner-compact .method-foot-privacy:hover,
.method-inner-compact .method-foot-privacy:focus-visible {
  color: var(--flare);
  text-decoration-color: var(--flare);
  outline: none;
}
.method-inner-compact .method-foot .kbd-inline {
  background: color-mix(in oklch, var(--paper) 12%, transparent);
  border-color: color-mix(in oklch, var(--paper) 35%, transparent);
  color: var(--paper);
}
.method-inner-compact .method-foot .search-tip {
  color: color-mix(in oklch, var(--paper) 75%, transparent);
}

/* Pe pagina metodologie.html, .method-foot din author-section stă pe paper.
   Vezi sectiunea page-method de mai jos pentru override-uri. */

/* ==========================================================================
   PAGINA DEDICATĂ DE METODOLOGIE — metodologie.html
   ========================================================================== */

body.page-method {
  background: var(--paper);
  color: var(--ink);
}
body.page-method .topbar { /* Override: progress bar inutil pe pagină statică */ }

.mark-home {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  text-decoration: none;
  color: var(--ink);
}
.mark-home:hover .mark-label { color: var(--flare); }
.mark-home:hover .mark-dot { background: var(--ink); }

.method-page {
  max-width: 960px;
  margin: 0 auto;
  padding: clamp(5rem, 10vh, 7rem) clamp(1rem, 5vw, 3rem) 4rem;
}

.method-hero { margin-bottom: clamp(3rem, 6vw, 4.5rem); }
.method-hero .eyebrow {
  font-size: var(--text-caption);
  letter-spacing: 0.2em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.method-title {
  font-family: var(--f-display);
  font-weight: 700;
  font-size: clamp(2rem, 5vw, 3.4rem);
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0.6rem 0 1.4rem;
  color: var(--ink);
}
.method-lede {
  font-size: clamp(1.05rem, 1.9vw, 1.25rem);
  line-height: 1.6;
  color: var(--ink-soft);
  max-width: 75ch;
}
.method-lede strong { color: var(--ink); font-weight: 700; }
.method-lede code {
  font-family: var(--f-mono);
  font-size: 0.92em;
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
  padding: 0.06rem 0.32rem;
}

.method-section {
  margin-bottom: clamp(3rem, 6vw, 4.5rem);
}
.method-section-head {
  margin-bottom: 1.5rem;
  padding-bottom: 0.8rem;
  border-bottom: 1px solid var(--rule);
}
.method-section-head .eyebrow {
  font-size: var(--text-label);
  letter-spacing: 0.2em;
  color: var(--flare);
  text-transform: uppercase;
}
.method-section-head h2 {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: clamp(1.4rem, 2.8vw, 1.95rem);
  letter-spacing: -0.02em;
  margin: 0.4rem 0 0;
  color: var(--ink);
}
.method-paragraph {
  font-size: 1rem;
  line-height: 1.65;
  color: var(--ink-soft);
  margin: 1rem 0;
}
.method-paragraph code {
  font-family: var(--f-mono);
  font-size: 0.9em;
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
  padding: 0.08rem 0.32rem;
}

/* ---------- Sources grid ---------- */
.src-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1.2rem;
}
.src-card {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  padding: 1.4rem 1.4rem 1.5rem;
  background: color-mix(in oklch, var(--ink) 3%, var(--paper));
  border: 1px solid var(--rule);
  position: relative;
}
.src-num {
  font-size: var(--text-caption);
  letter-spacing: 0.15em;
  color: var(--flare);
  font-weight: 700;
}
.src-meta {
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.src-title {
  font-family: var(--f-display);
  font-weight: 600;
  font-size: 1.05rem;
  line-height: 1.25;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin: 0;
}
.src-desc {
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
}
.src-desc strong { color: var(--ink); }
.src-links {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  margin-top: 0.4rem;
}
.src-link {
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--flare);
  text-decoration: none;
  padding-bottom: 1px;
  transition: color 0.12s, border-color 0.12s;
}
.src-link:hover {
  color: var(--flare-deep);
  text-decoration: underline;
}

/* ---------- Per-viz attribution table ---------- */
.viz-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.viz-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.92rem;
  min-width: 640px;
}

/* Mobile: tabela devine listă de carduri stivuite. Etichetele sunt în data-label
   și se afișează ca prefix mono uppercase deasupra fiecărei celule. */
@media (max-width: 720px) {
  .viz-table-wrap { overflow-x: visible; }
  .viz-table { min-width: 0; font-size: 0.88rem; display: block; }
  .viz-table thead { display: none; }
  .viz-table tbody, .viz-table tr { display: block; }
  .viz-table tbody tr {
    display: grid;
    gap: 0.45rem;
    padding: 1.1rem 0.9rem;
    border-top: 1px solid var(--rule);
  }
  .viz-table tbody tr:first-child { border-top: 1.5px solid var(--ink); }
  .viz-table tbody td {
    display: block;
    padding: 0;
    border-bottom: none;
    line-height: 1.5;
  }
  .viz-table tbody td:first-child {
    white-space: normal;
    font-family: var(--f-display);
    font-weight: 500;
    font-size: 1rem;
    color: var(--ink);
    margin-bottom: 0.15rem;
  }
  .viz-table tbody td[data-label]::before {
    content: attr(data-label);
    display: block;
    font-family: var(--f-mono);
    font-size: var(--text-2xs);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-mute);
    margin-bottom: 0.2rem;
  }
}
.viz-table thead th {
  text-align: left;
  font-family: var(--f-mono);
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  color: var(--ink-mute);
  text-transform: uppercase;
  padding: 0.6rem 0.8rem;
  border-bottom: 1.5px solid var(--ink);
  font-weight: 500;
}
.viz-table tbody td {
  padding: 0.85rem 0.8rem;
  border-bottom: 1px solid var(--rule);
  vertical-align: top;
  line-height: 1.5;
  color: var(--ink-soft);
}
.viz-table tbody td:first-child {
  white-space: nowrap;
  color: var(--ink);
  font-weight: 500;
}
.viz-table .viz-loc strong { font-weight: 700; }
.viz-table tbody td a {
  color: var(--flare);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--flare) 40%, transparent);
  padding-bottom: 1px;
  transition: color 0.12s, border-color 0.12s;
}
.viz-table tbody td a:hover { color: var(--flare-deep); border-bottom-color: var(--flare); }
.viz-table code {
  font-family: var(--f-mono);
  font-size: 0.85em;
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
  padding: 0.05rem 0.3rem;
}

/* AAB (raportul Guvernului) — secțiune comparativă pe metodologie */
.aab-method-intro {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink-soft);
  max-width: 70ch;
  margin: 0 0 1.75rem;
}
.aab-method-intro a { color: var(--flare); border-bottom: 1px solid color-mix(in oklch, var(--flare) 30%, transparent); text-decoration: none; transition: border-color 0.15s; }
.aab-method-intro a:hover { border-bottom-color: var(--flare); }
.aab-method-intro em { font-style: italic; color: var(--ink); }
.aab-method-source {
  margin-top: 1.25rem;
  font-size: var(--text-caption);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.aab-method-source a { color: inherit; border-bottom: 1px solid var(--rule); padding-bottom: 1px; text-decoration: none; }
.aab-method-source a:hover { color: var(--flare); border-bottom-color: var(--flare); }

/* Surse BVC pentru cele 3 rânduri roșii din graficul subvenții */
.aab-sources-head {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: clamp(1.1rem, 1.4vw, 1.35rem);
  letter-spacing: -0.012em;
  margin: 2rem 0 0.85rem;
  color: var(--ink);
}
.aab-bvc-sources {
  list-style: none;
  padding: 0;
  margin: 0 0 1.75rem;
  display: grid;
  gap: 1.1rem;
}
.aab-bvc-sources li {
  display: grid;
  gap: 0.4rem;
  padding: 1rem 1.1rem;
  background: color-mix(in oklch, var(--flare) 5%, transparent);
  border: 1px solid color-mix(in oklch, var(--flare) 18%, transparent);
}
.aab-bvc-sources .bvc-name {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 1.05rem;
  color: var(--ink);
  letter-spacing: -0.01em;
}
.aab-bvc-sources .bvc-doc {
  font-size: var(--text-caption);
  color: var(--ink-soft);
  line-height: 1.55;
  letter-spacing: 0.02em;
  text-transform: none;
}
.aab-bvc-sources .bvc-link {
  font-size: var(--text-label);
  color: var(--ink-mute);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.aab-bvc-sources a {
  color: var(--flare);
  border-bottom: 1px solid color-mix(in oklch, var(--flare) 35%, transparent);
  text-decoration: none;
  transition: border-color 0.15s;
}
.aab-bvc-sources a:hover { border-bottom-color: var(--flare); }

/* ---------- Definitions reuse existing .method-defs but on this page they're full-width ---------- */
.method-page .method-defs {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.method-page .method-defs > div {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 1.5rem;
  padding: 0.85rem 0;
  border-bottom: 1px solid var(--rule);
  align-items: baseline;
}
.method-page .method-defs > div:last-child { border-bottom: 0; }
.method-page .method-defs dt {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.1em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.method-page .method-defs dd {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink-soft);
  margin: 0;
}
.method-page .method-defs dd strong { color: var(--ink); }
.method-page .method-defs dd code {
  font-family: var(--f-mono);
  font-size: 0.88em;
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
  padding: 0.05rem 0.3rem;
}
@media (max-width: 600px) {
  .method-page .method-defs > div { grid-template-columns: 1fr; gap: 0.4rem; }
}

/* ---------- Download bar ---------- */
.dl-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.dl-card {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  padding: 1.2rem 1.3rem;
  background: var(--paper);
  border: 1px solid var(--rule);
  text-decoration: none;
  color: var(--ink);
  transition: border-color 0.12s, background 0.12s;
}
.dl-card:hover {
  border-color: var(--ink);
  background: color-mix(in oklch, var(--ink) 3%, var(--paper));
}
.dl-name {
  font-size: 0.82rem;
  letter-spacing: 0.06em;
  font-weight: 700;
  color: var(--ink);
}
.dl-desc {
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--ink-soft);
  flex: 1;
}
.dl-action {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--flare);
  text-transform: uppercase;
  font-weight: 700;
}
.dl-card:hover .dl-action { color: var(--flare-deep); }

.repo-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.4rem;
  background: var(--ink);
  color: var(--paper);
}
.repo-meta {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: color-mix(in oklch, var(--paper) 65%, transparent);
}
.repo-link {
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  letter-spacing: 0.08em;
  color: var(--paper);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--paper) 60%, transparent);
  padding-bottom: 1px;
}
.repo-link:hover { color: var(--flare); border-bottom-color: var(--flare); }

/* ---------- Reproducibility code block ---------- */
.repro-code {
  display: block;
  background: var(--ink);
  color: color-mix(in oklch, var(--paper) 92%, transparent);
  padding: 1.4rem 1.5rem;
  font-family: var(--f-mono);
  font-size: var(--text-caption);
  line-height: 1.7;
  overflow-x: auto;
  white-space: pre;
  margin: 1rem 0;
}
.repro-code code { font-family: inherit; background: none; color: inherit; padding: 0; }

.repro-block { max-width: 720px; }
.repro-block p { margin: 0 0 1.1rem; line-height: 1.7; color: var(--ink-soft); }
.repro-block code {
  font-family: var(--f-mono);
  font-size: 0.85em;
  background: color-mix(in oklch, var(--ink) 5%, var(--paper));
  padding: 0.1em 0.35em;
  border: 1px solid var(--rule);
}
.repro-note {
  border-left: 0;
  padding: 1rem 1.1rem;
  background: color-mix(in oklch, var(--flare) 4%, var(--paper));
  border: 1px solid color-mix(in oklch, var(--flare) 30%, transparent);
  color: var(--ink) !important;
  margin-top: 1.4rem !important;
}
.repro-checks {
  list-style: none;
  margin: 0 0 1.1rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.65rem;
}
.repro-checks li {
  padding: 0.85rem 1rem 0.85rem 1.1rem;
  background: color-mix(in oklch, var(--ink) 3%, var(--paper));
  border: 1px solid var(--rule);
  line-height: 1.55;
  color: var(--ink-soft);
  font-size: 0.93rem;
}

/* ---------- Press list ---------- */
.press-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.press-list li { border-bottom: 1px solid var(--rule); }
.press-list li:last-child { border-bottom: 0; }
.press-link {
  display: flex;
  flex-direction: column;
  gap: 0.32rem;
  padding: 1rem 0;
  text-decoration: none;
  color: var(--ink);
  transition: color 0.12s;
}
.press-link:hover { color: var(--flare); }
.press-pub {
  font-size: var(--text-label);
  letter-spacing: 0.18em;
  color: var(--ink-mute);
  text-transform: uppercase;
}
.press-link:hover .press-pub { color: var(--flare); }
.press-title {
  font-family: var(--f-display);
  font-weight: 500;
  font-size: 1.05rem;
  line-height: 1.35;
  letter-spacing: -0.01em;
}

/* ---------- Homepage press-quote band ---------- */
.press-band .press-quotes {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.6rem, 3vw, 3rem);
  max-width: 1280px;
  width: 100%;
  margin: clamp(1.8rem, 4vh, 2.6rem) auto 0;
}
@media (max-width: 720px) {
  .press-band .press-quotes { grid-template-columns: 1fr; }
}
.press-quote {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--rule);
  text-decoration: none;
  color: var(--ink);
  transition: color 0.14s;
}
.press-quote blockquote {
  margin: 0;
  font-family: var(--f-display);
  font-weight: 400;
  font-size: clamp(1rem, 1.15vw, 1.14rem);
  line-height: 1.46;
  letter-spacing: -0.01em;
}
.press-quote .press-cite {
  margin-top: auto;
  font-size: var(--text-label);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.press-quote:hover { color: var(--flare); }
.press-quote:hover .press-cite { color: var(--flare); }
.press-quote .press-cite::after {
  content: " →";
  display: inline-block;
  transition: transform 0.14s ease;
}
.press-quote:hover .press-cite::after { transform: translateX(3px); }

/* ---------- Author footer ---------- */
.method-author-section .method-paragraph a {
  color: var(--flare);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--flare) 40%, transparent);
  padding-bottom: 1px;
}
.method-author-section .method-paragraph a:hover { color: var(--flare-deep); border-bottom-color: var(--flare); }

.method-page .method-foot {
  display: flex;
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px solid var(--rule);
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 0.5rem;
  font-size: var(--text-caption);
  letter-spacing: 0.06em;
  color: var(--ink-mute);
  text-transform: none;
}
.method-back-home {
  margin-left: auto;
  color: var(--flare);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in oklch, var(--flare) 50%, transparent);
  padding-bottom: 1px;
}
.method-back-home:hover { color: var(--flare-deep); border-bottom-color: var(--flare); }

/* Tabelul viz: coloana de număr + highlight pe :target când vine din homepage */
.viz-table .viz-num-col { width: 3.5rem; }
.viz-table .viz-num {
  font-weight: 700;
  color: var(--flare);
  letter-spacing: 0.06em;
  white-space: nowrap;
  font-size: var(--text-caption);
}
/* Când utilizatorul aterizează pe #viz-N, scroll-margin-top compensează topbar-ul fixat */
.viz-table tr[id^="viz-"] {
  scroll-margin-top: 80px;
  transition: background 0.3s;
}
/* Anchor pentru link partajabil: companiidestat.ro/#transparenta-subventii */
#transparenta-subventii {
  scroll-margin-top: 80px;
}
.viz-table tr[id^="viz-"]:target {
  background: color-mix(in oklch, var(--flare) 8%, var(--paper));
  animation: viz-target-flash 1.6s ease-out 0.1s 1;
}
@keyframes viz-target-flash {
  0% { background: color-mix(in oklch, var(--flare) 22%, var(--paper)); }
  100% { background: color-mix(in oklch, var(--flare) 8%, var(--paper)); }
}

/* ---------- WORKFORCE OVERHAUL STYLING ---------- */
#workforce .chapter-head,
#workforce .map-mode-toggle,
#workforce .viz-caption,
#workforce-chart {
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}

#workforce .chapter-sub {
  font-family: var(--f-body);
  text-transform: none;
  letter-spacing: 0.01em;
}

/* Row-level layout refinements */
.wf-row text {
  pointer-events: none;
  user-select: none;
}
.wf-row line {
  pointer-events: none;
}
.wf-row rect.wf-bar {
  transition: filter 150ms ease;
}
.wf-zeroline {
  pointer-events: none;
}

