/* ══════════════════════════════════════════════════════════════════════════
   tva-skin.css: THE TVA SYSTEM. Loads last, after figma-skin.css.

   SOURCE AND ITS STATUS, STATED HONESTLY BECAUSE THIS PRODUCT REQUIRES IT.
     MEASURED  the palette and type scale, read from frame 405:17 via
               get_design_context on 2026-09-23 and already applied by
               figma-skin.css: #ffffff / #0d0d0d / #5d5d5d / #8f8f8f /
               #e5e5e5 / #d9d9d9 / #b42318, Inter plus JetBrains Mono.
     FROM TEXT everything TVA-specific below. Frame 487:17 "Today · TVA ·
               Light" could not be read: the Figma connector is not
               registered this session and the PAT returns 403 Token expired.
               So these values come from the owner's written brief, not from
               the file, and each needs truing up when Figma returns.

   The brief describes TVA as: "Blueprint and terminal. Hairline rules,
   corner registration marks, orange label chips, ruled fills, a faint
   drafting grid. Edges and annotation, not mass." Verdict in the same doc:
   "Lead with TVA. Keep Bitmap for the hero."

   THE ONE IDEA THIS FILE EXISTS TO SERVE. Three states must never blur:
     TRADED        we read the feed and saw a fill
     MEASURED ZERO we read it and nothing traded
     CANNOT SEE    no feed published, or we do not read it
   Blur the first two and you fabricate liquidity. Blur the last two and you
   call a market dead when you were simply not looking. The four-marker
   vocabulary below is that distinction made visible.
   ══════════════════════════════════════════════════════════════════════════ */

:root, :root:root {
  --tva-chip:   #ff7a1a;          /* label chips, the one accent TVA allows */
  --tva-rule:   #e5e5e5;
  --tva-grid:   rgba(13,13,13,.035);
  --tva-mark:   #0d0d0d;
  /* rhythm 40 / 34 / 32 / 10, quoted from the brief */
  --tva-s1: 40px; --tva-s2: 34px; --tva-s3: 32px; --tva-s4: 10px;
}

/* ── the drafting grid ───────────────────────────────────────────────────
   Faint, behind everything, never on a card. The TVA grid component measures
   1408 x 938 against a 1440 frame, so the column pitch is derived from a
   1408 content width inside a 16px gutter each side. */
:root:root body::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background:
    repeating-linear-gradient(to right, var(--tva-grid) 0 1px, transparent 1px 88px),
    repeating-linear-gradient(to bottom, var(--tva-grid) 0 1px, transparent 1px 88px);
}
/* Only the three layout blocks. `body > *` also caught every overlay scripts
   append to <body> (tour card .ob, popovers, sheets, toasts) and turned their
   position:fixed into an in-flow block: the tour card reserved 243px under the
   footer and dropped to z-index 1. */
:root:root body > :is(header, .app, footer) { position: relative; z-index: 1; }

/* ── cards sit flat, and carry corner registration marks ─────────────────
   The brief: cards "lost their white-to-orange wash and sit flat, so the
   pixel chart reads as recorded data rather than decoration". The marks are
   drawn with a conic gradient so they cost one element, not four. */
:root:root:root body section.panel {
  background: #fff !important;
  box-shadow: none !important;
  border: 1px solid var(--tva-rule) !important;
  border-radius: 0 !important;          /* blueprint, not consumer card */
  position: relative;
}
:root:root:root body section.panel::before,
:root:root:root body section.panel::after {
  content: ""; position: absolute; width: 7px; height: 7px; pointer-events: none;
  border: 1px solid var(--tva-mark); opacity: .55;
}
:root:root:root body section.panel::before { top: -1px; left: -1px; border-right: 0; border-bottom: 0; }
:root:root:root body section.panel::after  { bottom: -1px; right: -1px; border-left: 0; border-top: 0; }

/* ── orange label chips ──────────────────────────────────────────────────
   Section labels stop being grey text and become annotation. This is the
   single most TVA-looking change and the one the brief names explicitly. */
:root:root:root body .td-sec-k,
:root:root:root body .sec-k,
:root:root:root body .ch .k,
:root:root:root body .td-p-k {
  color: var(--tva-chip) !important;
  font-size: 10px !important;
  font-weight: 500 !important;
  letter-spacing: .66px !important;
  border: 1px solid rgba(255,122,26,.35);
  border-radius: 2px;
  padding: 2px 5px;
  display: inline-block;
  background: rgba(255,122,26,.05);
}

/* The four-marker utility classes that stood here (.mk, .mk--traded, ...) are
   removed: nothing used the modifiers, and `.mk` is marks.js's class for every
   coin and venue mark, so the rule shrank all of them to 9px with a 1px
   border (Payoffs drew HYPE at 9x9 against 18x18 in 696:30807). */

/* ── ruled fills ─────────────────────────────────────────────────────────
   The brief calls for "ruled fills" over solid mass. The bar keeps its
   measured 2px height and #0d0d0d fill from frame 405:17; what changes is
   the TRACK, which becomes ruled rather than a solid grey slab, so an empty
   bar reads as a measured zero and not as absence. */
:root:root:root body .td-r .track,
:root:root:root body .td-r [class*="bar"] {
  background: repeating-linear-gradient(90deg,
    var(--tva-rule) 0 1px, transparent 1px 4px) !important;
}

/* ── rhythm ──────────────────────────────────────────────────────────────
   40 / 34 / 32 / 10, quoted from the brief. Applied between sections only;
   dense rows keep the measured 46px pitch from frame 405:17. */
:root:root:root body section.panel { margin-bottom: var(--tva-s1) !important; }
:root:root:root body section.panel > header,
:root:root:root body section.panel > .ch { padding: var(--tva-s4) var(--tva-s3) !important; }
