/**
 * WES Design System — dark nautical
 * Shared across all tickers. Do not fork per ticker; extend here.
 */

@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700&family=IBM+Plex+Mono:wght@300;400;500;600&display=swap');

:root {
  /* ---- surface ---- */
  --wes-bg:            #061421;
  --wes-bg-raised:     #0a1c2c;
  --wes-bg-panel:      #0d2233;
  --wes-bg-inset:      #04101a;
  --wes-rule:          #1a3548;
  --wes-rule-strong:   #2a4a60;

  /* ---- ink ---- */
  --wes-ink:           #e8e2d4;   /* warm cream, primary text */
  --wes-ink-muted:     #9aa8b4;
  --wes-ink-faint:     #63798a;
  --wes-ink-heading:   #f2ede1;

  /* ---- accent ---- */
  --wes-gold:          #c9a961;
  --wes-gold-dim:      #8a7442;
  --wes-brass:         #d8b978;
  --wes-teal:          #4a8fa8;

  /* ---- severity (data is lowercase; these are display only) ---- */
  --wes-red:           #c25b52;
  --wes-red-bg:        rgba(194, 91, 82, 0.12);
  --wes-yellow:        #d4a24a;
  --wes-yellow-bg:     rgba(212, 162, 74, 0.12);
  --wes-green:         #6b9e78;
  --wes-green-bg:      rgba(107, 158, 120, 0.12);
  --wes-info:          #5d8ca8;
  --wes-info-bg:       rgba(93, 140, 168, 0.12);

  /* ---- provenance status ---- */
  --wes-status-reported:   var(--wes-green);
  --wes-status-calculated: var(--wes-teal);
  --wes-status-soft:       var(--wes-yellow);
  --wes-status-missing:    var(--wes-ink-faint);
  --wes-status-invalid:    var(--wes-red);

  /* ---- type ---- */
  --wes-serif: 'Playfair Display', Georgia, serif;
  --wes-mono:  'IBM Plex Mono', 'SF Mono', Consolas, monospace;

  --wes-fs-xs:  0.6875rem;
  --wes-fs-sm:  0.8125rem;
  --wes-fs-base: 0.9375rem;
  --wes-fs-lg:  1.125rem;
  --wes-fs-xl:  1.5rem;
  --wes-fs-2xl: 2rem;
  --wes-fs-3xl: 2.75rem;

  --wes-track-wide: 0.08em;
  --wes-track-caps: 0.14em;

  /* ---- space ---- */
  --wes-s1: 0.25rem; --wes-s2: 0.5rem;  --wes-s3: 0.75rem;
  --wes-s4: 1rem;    --wes-s5: 1.5rem;  --wes-s6: 2rem;
  --wes-s7: 3rem;    --wes-s8: 4rem;

  --wes-maxw: 1440px;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--wes-bg);
  color: var(--wes-ink);
  font-family: var(--wes-mono);
  font-size: var(--wes-fs-base);
  font-weight: 300;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: var(--wes-serif);
  color: var(--wes-ink-heading);
  font-weight: 500;
  line-height: 1.2;
  margin: 0 0 var(--wes-s3);
}
h1 { font-size: var(--wes-fs-3xl); }
h2 { font-size: var(--wes-fs-2xl); }
h3 { font-size: var(--wes-fs-lg); }

/* Section label — small caps monospace over a thin rule */
.wes-section-label {
  font-family: var(--wes-mono);
  font-size: var(--wes-fs-xs);
  font-weight: 500;
  letter-spacing: var(--wes-track-caps);
  text-transform: uppercase;
  color: var(--wes-gold);
  padding-bottom: var(--wes-s2);
  border-bottom: 1px solid var(--wes-rule);
  margin-bottom: var(--wes-s5);
}

hr, .wes-rule {
  border: 0;
  border-top: 1px solid var(--wes-rule);
  margin: var(--wes-s6) 0;
}

/* ------------------------------------------------------------------ layout */
.wes-shell { max-width: var(--wes-maxw); margin: 0 auto; padding: var(--wes-s6) var(--wes-s5) var(--wes-s8); }
.wes-section { margin-bottom: var(--wes-s7); }
.wes-grid { display: grid; gap: var(--wes-s4); }
.wes-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.wes-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.wes-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.wes-panel {
  background: var(--wes-bg-panel);
  border: 1px solid var(--wes-rule);
  padding: var(--wes-s4) var(--wes-s5);
}
.wes-panel-inset { background: var(--wes-bg-inset); border: 1px solid var(--wes-rule); padding: var(--wes-s4); }

/* ------------------------------------------------------------ pulse metrics */
.wes-pulse { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1px; background: var(--wes-rule); border: 1px solid var(--wes-rule); }
.wes-pulse-cell { background: var(--wes-bg-raised); padding: var(--wes-s3) var(--wes-s4); }
.wes-pulse-label { font-size: var(--wes-fs-xs); letter-spacing: var(--wes-track-wide); text-transform: uppercase; color: var(--wes-ink-faint); margin-bottom: var(--wes-s1); }
.wes-pulse-value { font-family: var(--wes-serif); font-size: var(--wes-fs-xl); color: var(--wes-ink-heading); line-height: 1.1; }
.wes-pulse-sub { font-size: var(--wes-fs-xs); color: var(--wes-ink-muted); }

/* ----------------------------------------------------------------- tables */
.wes-table { width: 100%; border-collapse: collapse; font-size: var(--wes-fs-sm); }
.wes-table th {
  text-align: left;
  font-weight: 500;
  font-size: var(--wes-fs-xs);
  letter-spacing: var(--wes-track-wide);
  text-transform: uppercase;
  color: var(--wes-ink-faint);
  padding: var(--wes-s2) var(--wes-s3);
  border-bottom: 1px solid var(--wes-rule-strong);
  white-space: nowrap;
}
.wes-table td { padding: var(--wes-s2) var(--wes-s3); border-bottom: 1px solid var(--wes-rule); vertical-align: top; }
.wes-table tbody tr:hover { background: var(--wes-bg-raised); }
.wes-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.wes-table caption { caption-side: bottom; text-align: left; font-size: var(--wes-fs-xs); color: var(--wes-ink-faint); padding-top: var(--wes-s3); }

/* Explicit column separation for pro-forma tables — pre/post transaction must never blur */
.wes-col-reported   { background: rgba(107, 158, 120, 0.05); }
.wes-col-transactions { background: rgba(212, 162, 74, 0.05); }
.wes-col-estimated  { background: rgba(93, 140, 168, 0.05); }

/* ------------------------------------------------------------------ badges */
.wes-badge {
  display: inline-block;
  font-size: var(--wes-fs-xs);
  font-weight: 500;
  letter-spacing: var(--wes-track-wide);
  text-transform: uppercase;
  padding: 0.15em 0.55em;
  border: 1px solid currentColor;
  white-space: nowrap;
}
.wes-badge[data-severity="red"]    { color: var(--wes-red);    background: var(--wes-red-bg); }
.wes-badge[data-severity="yellow"] { color: var(--wes-yellow); background: var(--wes-yellow-bg); }
.wes-badge[data-severity="green"]  { color: var(--wes-green);  background: var(--wes-green-bg); }
.wes-badge[data-severity="info"]   { color: var(--wes-info);   background: var(--wes-info-bg); }

/* Three-tier claim verification badges */
.wes-tier { display: inline-flex; gap: 1px; }
.wes-tier-cell { font-size: var(--wes-fs-xs); padding: 0.1em 0.4em; border: 1px solid var(--wes-rule-strong); color: var(--wes-ink-faint); }
.wes-tier-cell[data-state="verified"], .wes-tier-cell[data-state="confirmed"] { color: var(--wes-green); border-color: var(--wes-green); }
.wes-tier-cell[data-state="partially_verified"], .wes-tier-cell[data-state="partially_confirmed"] { color: var(--wes-yellow); border-color: var(--wes-yellow); }
.wes-tier-cell[data-state="contradicted"] { color: var(--wes-red); border-color: var(--wes-red); }
.wes-tier-cell[data-state="unverified"], .wes-tier-cell[data-state="pending"] { color: var(--wes-ink-faint); }

/* ------------------------------------------------------- provenance marking */
[data-status] { cursor: help; border-bottom: 1px dotted transparent; }
[data-status="reported"]   { border-bottom-color: transparent; }
[data-status="calculated"] { border-bottom-color: var(--wes-status-calculated); }
[data-status="estimated"], [data-status="management_claim"],
[data-status="third_party"], [data-status="stale"] { border-bottom-color: var(--wes-status-soft); }
[data-status="fixture"], [data-status="invalid"] { color: var(--wes-status-invalid); border-bottom-color: var(--wes-status-invalid); }
.is-missing { color: var(--wes-status-missing); }

.wes-status-chip { font-size: var(--wes-fs-xs); letter-spacing: var(--wes-track-wide); text-transform: uppercase; color: var(--wes-ink-faint); }

/* ---------------------------------------------------------- fixture banner */
#wes-fixture-banner {
  position: sticky; top: 0; z-index: 9999;
  display: flex; flex-wrap: wrap; gap: var(--wes-s3); align-items: baseline;
  padding: var(--wes-s3) var(--wes-s5);
  background: repeating-linear-gradient(45deg, #3a1512, #3a1512 12px, #4a1a16 12px, #4a1a16 24px);
  border-bottom: 2px solid var(--wes-red);
  color: #f4d9d5;
  font-size: var(--wes-fs-sm);
  letter-spacing: var(--wes-track-wide);
}
#wes-fixture-banner strong { color: #fff; letter-spacing: var(--wes-track-caps); }
.wes-banner-files { font-size: var(--wes-fs-xs); color: #d9a9a3; }
.wes-fixture-mode .wes-pulse-value,
.wes-fixture-mode .wes-panel { opacity: 0.82; }

/* ------------------------------------------------------------------ charts */
.wes-chart { position: relative; height: 280px; }
.wes-chart-tall { height: 380px; }
.wes-chart-note { font-size: var(--wes-fs-xs); color: var(--wes-ink-faint); margin-top: var(--wes-s2); }

/* ------------------------------------------------------------------ footer */
.wes-footer { margin-top: var(--wes-s8); padding-top: var(--wes-s4); border-top: 1px solid var(--wes-rule); font-size: var(--wes-fs-xs); color: var(--wes-ink-faint); display: flex; flex-wrap: wrap; gap: var(--wes-s4); justify-content: space-between; }

/* ----------------------------------------------------------------- utility */
.wes-muted { color: var(--wes-ink-muted); }
.wes-faint { color: var(--wes-ink-faint); }
.wes-gold { color: var(--wes-gold); }
.wes-caps { font-size: var(--wes-fs-xs); letter-spacing: var(--wes-track-caps); text-transform: uppercase; }
.wes-tnum { font-variant-numeric: tabular-nums; }
.wes-caveat { font-size: var(--wes-fs-xs); color: var(--wes-yellow); border-left: 2px solid var(--wes-yellow); padding-left: var(--wes-s3); margin: var(--wes-s3) 0; }

@media (max-width: 1024px) {
  .wes-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wes-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .wes-grid-2, .wes-grid-3, .wes-grid-4 { grid-template-columns: minmax(0, 1fr); }
  h1 { font-size: var(--wes-fs-2xl); }
}

/* ------------------------------------------------------------------- print */
@media print {
  :root { --wes-bg: #fff; --wes-bg-raised: #fff; --wes-bg-panel: #fff; --wes-bg-inset: #fafafa;
          --wes-ink: #111; --wes-ink-heading: #000; --wes-ink-muted: #444; --wes-ink-faint: #666;
          --wes-rule: #ccc; --wes-rule-strong: #999; --wes-gold: #8a6d20; }
  body { background: #fff; color: #111; font-size: 10pt; }
  .wes-section { break-inside: avoid; }
  .wes-table { break-inside: auto; }
  .wes-table tr { break-inside: avoid; }
  #wes-fixture-banner { position: static; background: #fff; border: 2px solid #000; color: #000; }
  [data-status] { border-bottom: none; }
  [data-status]::after { content: " [" attr(data-status) "]"; font-size: 7pt; color: #666; }
  .wes-chart { height: 200px; }
}
