/* ── DEFAULT SCROLLBAR (Smart Money spec) ──────────────────
   Applies to any scrollable element that doesn't already declare its own
   ::-webkit-scrollbar rule — e.g. .pf-ticker-dd (the Watchlist "Agregar
   ticker" / nav "Buscar ticker" dropdown) had no override at all and fell
   back to the native OS scrollbar (wide, light gray, rounded thumb).
   Matches .pf-mod-pane's look (Smart Money's drawer body): a thin 3px
   thumb at rgba(255,255,255,.1), transparent track. A selector with its
   own more-specific ::-webkit-scrollbar rule still wins the cascade, so
   this only fills in the gaps — it doesn't touch already-styled scrollbars
   elsewhere (e.g. the 2px ones) that were a deliberate, different choice. */
*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.1) transparent;}
*::-webkit-scrollbar{width:3px;height:3px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}

/* ── SKIP LINK — visible on :focus, hidden otherwise ─────── */
.ic-skip-link {
  position: fixed;
  top: -100%;
  left: 12px;
  z-index: 999999;
  background: var(--accent, #e8d3a5);
  color: #050505;
  padding: 10px 20px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: .7rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  text-decoration: none;
  font-weight: 600;
  border-radius: 2px;
  transition: top .15s;
}
.ic-skip-link:focus {
  top: 12px;
  outline: 2px solid #050505;
  outline-offset: 2px;
}

/* Fragile-source data — a live value today, but sourced by scraping a page
   or feed with no documented API contract (HTML parsing of ici.org,
   multpl.com, or federalreserve.gov; reading Banxico's undocumented public
   CMS feed rather than their real SIE API): could silently break with zero
   warning if the source site restructures. Deliberately narrower than "any
   dependency that could ever break" — Yahoo's unofficial chart API and
   Japan MOF's fixed-format CSV are both similar in kind but out of scope
   for this flag on purpose. Blue distinguishes these at a glance. */
.pf-fragile-val{color:#60a5fa !important;}

/* ── FOCUS-VISIBLE — keyboard nav ring ───────────────────── */
:focus-visible {
  outline: 2px solid rgba(232, 211, 165, .8);
  outline-offset: 2px;
}
/* Suppress focus ring on mouse click (browsers that support :focus-visible) */
:focus:not(:focus-visible) {
  outline: none;
}
/* Platform tab buttons get a bottom-bar focus indicator instead */
.pf-ctab:focus-visible {
  outline: none;
  border-bottom-color: rgba(232, 211, 165, .9) !important;
  background: rgba(232, 211, 165, .06);
}
/* Screener filter inputs */
.pf-filter-row input:focus-visible,
.pf-filter-row select:focus-visible {
  outline: 1px solid rgba(232, 211, 165, .55);
  outline-offset: 0;
}

/* ── UNIFIED PLATFORM NAV BAR ─────────────────────────────── */
.pf-search-bar {
  display: flex;
  align-items: stretch;
  height: 52px;
  border-bottom: 2px solid rgba(255,255,255,.12);
  background: rgba(5,5,5,.96);
  backdrop-filter: blur(20px);
  gap: 0;
  flex-shrink: 0;
  position: relative;
  overflow: visible;
  z-index: 100;
}
/* Zone dividers */
.pf-zone-sep {
  width: 1px;
  background: linear-gradient(to bottom, transparent 15%, rgba(255,255,255,.18) 40%, rgba(232,211,165,.25) 50%, rgba(255,255,255,.18) 60%, transparent 85%);
  flex-shrink: 0;
  align-self: stretch;
}

/* ══ PUBLIC COMPS — Editorial Redesign ══════════════════════════ */

.pf-comps-shell {
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
  min-height: 100%;
  background: var(--bg);
}

/* ── Hero header ── */
.pf-comps-hero {
  position: relative;
  padding: 48px 48px 0;
  overflow: hidden;
  flex-shrink: 0;
  background: var(--bg);
}

.pf-comps-hero::before {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 420px; height: 220px;
  background: radial-gradient(circle at top right, rgba(232,211,165,.07), transparent 65%);
  pointer-events: none;
}

.pf-comps-hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 18px;
}

.pf-comps-hero-eyebrow::before {
  content: '';
  width: 28px;
  height: 1px;
  background: var(--accent);
  opacity: .6;
}

.pf-comps-hero-title {
  font-family: var(--sans);
  font-size: clamp(2.4rem, 4vw, 4rem);
  font-weight: 400;
  line-height: .95;
  letter-spacing: -.04em;
  color: var(--text);
  margin-bottom: 20px;
}

.pf-comps-hero-title em {
  font-style: italic;
  color: var(--accent);
}

.pf-comps-hero-rule {
  width: 100%;
  height: 1px;
  background: linear-gradient(to right, rgba(232,211,165,.3), rgba(255,255,255,.06) 40%, transparent);
  margin-top: 32px;
}

/* ── Controls bar (statement tabs + scale + tickers) ── */
.pf-comps-controls {
  display: flex;
  align-items: center;
  gap: 0;
  padding: 0 48px;
  height: 52px;
  flex-shrink: 0;
  background: var(--bg);
  border-bottom: 1px solid rgba(255,255,255,.06);
  position: relative;
}

.pf-comps-stmt-tabs {
  display: flex;
  align-items: stretch;
  height: 100%;
  gap: 0;
}

.pf-comps-stmt-tab {
  background: none;
  border: none;
  padding: 0 22px;
  font-family: var(--sans);
  font-size: .75rem;
  font-weight: 400;
  font-style: normal;
  letter-spacing: .06em;
  color: var(--muted);
  cursor: pointer;
  white-space: nowrap;
  transition: color .25s, background .25s;
  position: relative;
}

.pf-comps-stmt-tab:first-child { border-left: 1px solid rgba(255,255,255,.06); }
.pf-comps-stmt-tab:hover { color: var(--text); background: rgba(255,255,255,.02); }

.pf-comps-stmt-tab.active {
  color: var(--accent);
  background: rgba(232,211,165,.04);
}

.pf-comps-stmt-tab.active::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 1px;
  background: var(--accent);
}

/* scale group */
.pf-comps-scale-group {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

.pf-comps-scale-label {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted2);
}

.pf-comps-scale-btn {
  background: none;
  border: 1px solid rgba(255,255,255,.1);
  padding: 4px 12px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--muted);
  cursor: pointer;
  transition: all .2s;
}
.pf-comps-scale-btn:hover { border-color: rgba(255,255,255,.2); color: var(--text); }
.pf-comps-scale-btn.active {
  border-color: var(--accent);
  color: var(--accent);
  background: rgba(232,211,165,.07);
}

/* ── Ticker ribbon ── */
.pf-comps-tickers {
  display: flex;
  align-items: center;
  padding: 10px 48px;
  gap: 8px;
  flex-shrink: 0;
  background: var(--bg);
  border-bottom: 1px solid rgba(255,255,255,.06);
  overflow-x: auto;
  scrollbar-width: none;
}
.pf-comps-tickers::-webkit-scrollbar { display: none; }

.pf-comps-tickers-label {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--muted2);
  flex-shrink: 0;
  margin-right: 6px;
}

.pf-comps-chip {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 5px 14px 5px 10px;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.08);
  cursor: pointer;
  flex-shrink: 0;
  transition: all .25s var(--ease);
  backdrop-filter: blur(8px);
}
.pf-comps-chip:hover {
  border-color: rgba(255,255,255,.18);
  background: rgba(255,255,255,.06);
  transform: translateY(-1px);
}
.pf-comps-chip.active {
  border-color: rgba(232,211,165,.35);
  background: rgba(232,211,165,.07);
}

.pf-comps-chip-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
}
.pf-comps-chip-tk {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  color: var(--text);
  font-weight: 500;
}

/* ── Main charts area ── */
.pf-comps-body {
  flex: 1;
  padding: 32px 48px 48px;
  display: flex;
  flex-direction: column;
  gap: 48px;
  overflow-y: auto;
}

/* ── Metric label above chart ── */
.pf-comps-metric-label {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 16px;
}

.pf-comps-metric-name {
  font-family: var(--sans);
  font-size: 1.55rem;
  font-weight: 400;
  letter-spacing: -.025em;
  color: var(--text);
  line-height: 1;
}

.pf-comps-metric-unit {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
}

.pf-comps-metric-rule {
  flex: 1;
  height: 1px;
  background: rgba(255,255,255,.07);
  align-self: center;
}

/* ── Vertical bar chart ── */
.pf-comps-vchart {
  display: flex;
  align-items: flex-end;
  gap: 0;
  height: 180px;
  position: relative;
}

/* Y-axis grid lines */
.pf-comps-vchart-grid {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  pointer-events: none;
}

.pf-comps-vchart-gridline {
  width: 100%;
  height: 1px;
  background: rgba(255,255,255,.05);
}

/* Y-axis labels (left side) */
.pf-comps-yaxis {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 180px;
  padding-bottom: 26px; /* room for ticker labels */
  flex-shrink: 0;
  width: 64px;
  margin-right: 12px;
}

.pf-comps-yaxis-tick {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-xs);
  letter-spacing: .05em;
  color: rgba(112,112,112,0.8);
  text-align: right;
  white-space: nowrap;
  line-height: 1;
}

.pf-comps-yaxis-tick.top { color: #ffffff; font-weight: 600; }

/* bars container */
.pf-comps-cols {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  flex: 1;
  height: 100%;
  padding-bottom: 0;
}

.pf-comps-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  flex: 1;
  height: 100%;
  gap: 0;
  position: relative;
  cursor: default;
}

/* value label above bar */
.pf-comps-col-val {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  font-weight: 600;
  letter-spacing: .04em;
  color: #ffffff;
  white-space: nowrap;
  margin-bottom: 5px;
  text-align: center;
  flex-shrink: 0;
  transition: color .2s;
}

.pf-comps-col-val.is-selected { color: var(--accent); }

/* the bar itself */
.pf-comps-col-bar {
  width: 100%;
  transition: height .65s cubic-bezier(.16,1,.3,1);
  min-height: 2px;
  position: relative;
}

/* subtle inner highlight */
.pf-comps-col-bar::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: rgba(255,255,255,.35);
}

/* negative bars: flip direction with top anchor */
.pf-comps-col-bar.neg {
  align-self: flex-start;
}

/* ticker label below bar */
.pf-comps-col-tk {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .07em;
  color: var(--muted2);
  margin-top: 7px;
  white-space: nowrap;
  flex-shrink: 0;
  transition: color .2s;
}

.pf-comps-col-tk.is-selected {
  color: var(--accent);
  font-weight: 600;
}

/* zero line for mixed charts */
.pf-comps-zero-line {
  position: absolute;
  left: 0; right: 0;
  height: 1px;
  background: rgba(255,255,255,.2);
}

/* ── Empty state ── */
.pf-comps-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted2);
}

/* ── Section divider inside body ── */
.pf-comps-section-header {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--muted2);
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}

/* ── Metrics grid ── */
.pf-comps-metrics-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 40px 48px;
}

.pf-cmd-logo {
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  padding: 7px 16px 0 14px;
  cursor: pointer;
  flex-shrink: 0;
  background: rgba(255,255,255,.02);
  transition: background .2s;
  overflow: visible;
}
.pf-cmd-logo:hover { background: rgba(255,255,255,.04); }

/* Scale the homepage logo to fit the 52px nav bar (90px → 52px ≈ 0.555) */
.pf-cmd-logo .logo {
  transform: scale(0.555);
  transform-origin: top left;
  margin-right: calc((40px * 0.555) - 40px);
  margin-bottom: calc((90px * 0.555) - 90px);
  margin-left: -4px;
}

/* .pf-wrap redefines --serif to Inter — hardcode Cormorant Garamond on the logo */
.pf-cmd-logo .logo-letter {
  font-family: 'Cormorant Garamond', serif !important;
}

.pf-logo-mark {
  position: relative;
  width: 52px;
  height: 42px;
  flex-shrink: 0;
}

.pf-logo-mark span {
  position: absolute;
  font-family: var(--serif);
  font-size: 1.3rem;
  line-height: 1;
  font-weight: 400;
  transition: opacity .3s ease;
}

.pf-logo-mark .pfli { top: 0;    left: 0;    color: var(--text); }
.pf-logo-mark .pfla { top: 13px; left: 16px; color: var(--accent); font-style: italic; }
.pf-logo-mark .pflc { top: 26px; left: 33px; color: var(--text); }

.pf-cmd-logo:hover .pf-logo-mark span { opacity: .75; }

/* ── ZONE B: Search ── */
.pf-search-wrap {
  position: relative;
  display: flex;
  align-items: center;
  gap: 10px;
  width: 280px;
  flex-shrink: 0;
  padding: 0 16px;
  background: rgba(255,255,255,.025);
  transition: background .2s;
}
.pf-search-wrap:focus-within {
  background: rgba(255,255,255,.045);
}

.pf-search-wrap svg { color: var(--muted); flex-shrink: 0; }

.pf-search-input {
  background: none;
  border: none;
  outline: none;
  color: var(--text);
  font-family: var(--sans);
  font-size:var(--fs-md);
  letter-spacing: .04em;
  width: 100%;
  min-width: 0;
}

.pf-search-input::placeholder { color: var(--muted2); }

.pf-search-kbd {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .1em;
  color: var(--muted2);
  border: 1px solid rgba(255,255,255,.12);
  padding: 3px 6px;
  flex-shrink: 0;
  background: rgba(255,255,255,.04);
}

/* ── Ticker search dropdown — shared by nav "Buscar ticker" and
   Watchlist "Agregar ticker" (pf_attachTickerDropdown in platform.js).
   Positioned relative to whichever wrapper it's appended into. */
.pf-ticker-dd{
  display:none;
  position:absolute;
  top:100%;
  left:0;
  right:0;
  margin-top:4px;
  background:#12130f;
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 12px 28px rgba(0,0,0,.45);
  max-height:280px;
  overflow-y:auto;
  z-index:200;
}
.pf-ticker-dd.open{display:block;}
.pf-ticker-dd-item{
  display:flex;
  align-items:baseline;
  gap:10px;
  padding:7px 12px;
  cursor:pointer;
  font-family:var(--sans);
}
.pf-ticker-dd-item.active,.pf-ticker-dd-item:hover{background:rgba(255,255,255,.06);}
.pf-ticker-dd-tk{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.04em;color:var(--text);flex-shrink:0;}
.pf-ticker-dd-nm{flex:1;font-size:var(--fs-sm);color:var(--muted2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pf-ticker-dd-exch{font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--muted2);opacity:.6;flex-shrink:0;}

/* ── ZONE C: Nav tabs ── */
.pf-search-bar .pf-cmd-tabs {
  display: flex;
  align-items: stretch;
  flex: 1;
  overflow: hidden;
}

/* ── ZONE D: User ── */
.pf-user-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 20px;
  color: var(--muted);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .14em;
  text-transform: uppercase;
  cursor: pointer;
  flex-shrink: 0;
  transition: color .2s, background .2s;
  background: rgba(255,255,255,.02);
}

.pf-user-btn:hover { color: var(--text); background: rgba(255,255,255,.04); }

/* User avatar circle */
.pf-user-btn .pf-avatar {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.15);
  background: rgba(232,211,165,.12);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.pf-user-btn .pf-avatar svg { color: var(--accent); }

/* ── User dropdown menu items ───────────────────────────────── */
.ic-menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 9px 12px;
  background: none;
  border: none;
  border-radius: 3px;
  cursor: pointer;
  font-family: 'Inter', sans-serif;
  font-size: .78rem;
  font-weight: 400;
  letter-spacing: .01em;
  color: rgba(230,230,230,.7);
  text-align: left;
  transition: background .15s, color .15s;
  margin-bottom: 1px;
}
.ic-menu-item:hover {
  background: rgba(255,255,255,.055);
  color: #f0f0f0;
}
.ic-menu-item svg {
  opacity: .45;
  flex-shrink: 0;
  transition: opacity .15s;
}
.ic-menu-item:hover svg { opacity: .75; }

.ic-menu-item--danger {
  color: rgba(220,80,80,.65);
}
.ic-menu-item--danger:hover {
  background: rgba(220,60,60,.08);
  color: rgba(230,90,90,.95);
}
.ic-menu-item--danger svg {
  color: rgba(220,80,80,.8);
  opacity: .65;
}
.ic-menu-item--danger:hover svg { opacity: 1; }

:root{

  --bg:#050505;
  --surface:#0d0d0d;
  --surface2:#121212;

  --text:#f5f5f5;
  --muted:#9f9f9f;
  --muted2:#707070;

  --line:rgba(255,255,255,.08);
  --line2:rgba(255,255,255,.16);

  --accent:#e8d3a5;
  --accent2:#e8d3a5;

  --glass:rgba(255,255,255,.05);

  --shadow:
    0 10px 30px rgba(0,0,0,.35),
    0 30px 80px rgba(0,0,0,.45);

  --sans:'Inter',sans-serif;
  --serif:'Cormorant Garamond',serif;
  --mono:'IBM Plex Mono',monospace;

  --ease:cubic-bezier(.16,1,.3,1);

  --fs-nano: 6.5px;
  --fs-xs:   7.5px;
  --fs-sm:   9px;
  --fs-md:   11px;
  --fs-lg:   15px;
  --fs-xl:   24px;

}

/* ══ LATEST FEED STRIP ══════════════════════════════════════════ */
.ic-feed-strip {
  padding: 0 0 4rem;
  overflow: hidden;
}
.ic-feed-eyebrow {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 2rem;
}
.ic-feed-eyebrow::before {
  content: '';
  width: 28px; height: 1px;
  background: var(--accent); opacity: .6;
}
.ic-feed-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(255,255,255,.06);
}
.ic-feed-card {
  background: var(--bg);
  padding: 2rem 2rem 1.8rem;
  display: flex;
  flex-direction: column;
  gap: 10px;
  cursor: pointer;
  transition: background .2s;
  text-decoration: none;
  color: inherit;
}
.ic-feed-card:hover { background: rgba(255,255,255,.03); }
.ic-feed-type {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  gap: 8px;
}
.ic-feed-type-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.ic-feed-title {
  font-family: var(--serif);
  font-size: 1.3rem;
  font-weight: 400;
  line-height: 1.25;
  letter-spacing: -.025em;
  color: var(--text);
  flex: 1;
}
.ic-feed-meta {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  color: var(--muted2);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.ic-feed-arrow {
  font-size:var(--fs-sm);
  letter-spacing: .12em;
  color: var(--accent);
  opacity: 0;
  transition: opacity .2s, transform .2s;
}
.ic-feed-card:hover .ic-feed-arrow { opacity: 1; transform: translateX(4px); }
@media (max-width: 1000px) {
  .ic-feed-grid { grid-template-columns: 1fr; }
}

/* ══ VAULT OVERHAUL ══════════════════════════════════════════════ */

/* Featured card */
.vault-featured {
  margin-bottom: 3.5rem;
  display: grid;
  grid-template-columns: 480px 1fr;
  min-height: 320px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.08);
  transition: border-color .3s;
  cursor: pointer;
}
.vault-featured:hover { border-color: rgba(232,211,165,.3); }
.vault-featured-img {
  position: relative;
  overflow: hidden;
}
.vault-featured-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.2s cubic-bezier(.16,1,.3,1);
  filter: saturate(.85);
}
.vault-featured:hover .vault-featured-img img { transform: scale(1.04); filter: saturate(1); }
.vault-featured-img::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(to right, transparent 60%, rgba(5,5,5,.92));
}
.vault-featured-badge {
  display: inline-block;
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  padding: .35rem .9rem;
  background: var(--accent);
  color: #050505;
  margin-bottom: 1.1rem;
}
.vault-featured-content {
  padding: 3rem 3rem 2.5rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: rgba(255,255,255,.02);
}
.vault-featured-type {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: .8rem;
  display: flex; align-items: center; gap: 8px;
}
.vault-featured-title {
  font-family: var(--serif);
  font-size: clamp(1.8rem, 3vw, 2.6rem);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -.04em;
  color: var(--text);
  margin-bottom: 1rem;
}
.vault-featured-desc {
  font-size: .95rem;
  line-height: 1.85;
  color: var(--muted);
  margin-bottom: 1.5rem;
}
.vault-featured-kpis {
  display: flex;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.vault-featured-kpi {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .1em;
  border: 1px solid rgba(255,255,255,.12);
  padding: .3rem .8rem;
  color: var(--muted);
}
.vault-featured-actions {
  display: flex;
  gap: 1rem;
  align-items: center;
}
.vault-featured-meta {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  color: var(--muted2);
}

/* Search bar */
.vault-search-wrap {
  position: relative;
  margin-bottom: 0;
  margin-right: auto;
}
.vault-search-input {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.1);
  color: var(--text);
  font-family: var(--sans);
  font-size: .82rem;
  letter-spacing: .02em;
  padding: .55rem 1rem .55rem 2.4rem;
  outline: none;
  width: 280px;
  transition: border-color .2s, background .2s;
}
.vault-search-input:focus { border-color: rgba(232,211,165,.4); background: rgba(255,255,255,.06); }
.vault-search-input::placeholder { color: var(--muted2); }
.vault-search-icon {
  position: absolute;
  left: .75rem; top: 50%;
  transform: translateY(-50%);
  color: var(--muted2);
  width: 14px; height: 14px;
  pointer-events: none;
}

/* Filter bar enhanced */
.vault-filter-bar {
  display: flex;
  align-items: center;
  gap: .7rem;
  flex-wrap: wrap;
}
.vault-filter-right {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: .7rem;
}

/* Content type chips (for filter) */
.filter-chip[data-type] { border-style: dashed; }
.filter-chip[data-type].active { border-style: solid; }
.filter-chip.type-tesis  { --chip-c: #e8d3a5; }
.filter-chip.type-articulo { --chip-c: #64b5f6; }
.filter-chip.type-stream { --chip-c: #ef5350; }
.filter-chip.type-modelo { --chip-c: #66bb6a; }
.filter-chip.type-ref    { --chip-c: #ab47bc; }
.filter-chip[data-type].active { border-color: var(--chip-c); color: var(--chip-c); }

/* Card metadata tags */
.thesis-card-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: .6rem 1.5rem .5rem;
  border-top: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.18);
}
.thesis-card-date {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  color: var(--muted2);
  flex: 1;
}
.thesis-card-read {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .06em;
  color: var(--muted2);
}
.thesis-card-type-badge {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .14em;
  text-transform: uppercase;
  padding: .2rem .6rem;
  border: 1px solid;
}

/* No-results state */
.vault-no-results {
  padding: 5rem 0;
  text-align: center;
  font-family: var(--sans);
  font-size: .82rem;
  color: var(--muted2);
  letter-spacing: .08em;
}

@media (max-width: 1000px) {
  .vault-featured { grid-template-columns: 1fr; }
  .vault-featured-img { min-height: 240px; }
  .vault-featured-img::after { background: linear-gradient(to top, rgba(5,5,5,.92) 0%, transparent 60%); }
}

@media (max-width: 1100px) {
  .pf-comps-hero, .pf-comps-controls, .pf-comps-tickers { padding-left:24px; padding-right:24px; }
  .pf-comps-body { padding-left:24px; padding-right:24px; }
  .pf-search-wrap { width:auto; min-width:0; flex:1; }
}

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

html{
  scroll-behavior:smooth;
  height:100%;
}

body{

  background:var(--bg);
  color:var(--text);

  font-family:var(--sans);

  overflow-x:hidden;
  height:100%;
  display:flex;
  flex-direction:column;

  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;

}

/* PREMIUM LOADER */

.loader{

  position:fixed;
  inset:0;

  background:#050505;

  z-index:999999;

  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;

  transition:
    opacity 1s ease,
    visibility 1s ease;

}

.loader.hide{
  opacity:0;
  visibility:hidden;
}

.loader-logo{

  position:relative;
  width:96px;
  height:96px;

  margin-bottom:1.8rem;

}

.loader-ring {
  position: absolute;
  top: 49%;
  left: 49.5%;
  width: 150px;
  height: 150px;
  transform: translate(-50%, -50%) rotate(-90deg);
}

.loader-ring-track {
  fill: none;
  stroke: rgba(255, 255, 255, 0.08);
  stroke-width: 1.5;
}

.loader-ring-fill {
  fill: none;
  stroke: var(--accent);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-dasharray: 339;
  stroke-dashoffset: 339;
  animation: ringFill 2s var(--ease) forwards;
}

@keyframes ringFill {
  to {
    stroke-dashoffset: 0;
  }
}

.loader-logo-letter{
  position:absolute;
  font-family:var(--serif);
  font-size:2.4rem;
  line-height:1;
  letter-spacing:0;
}

.loader-logo-letter.l-i{
  top:0;
  left:0;
  color:var(--text);
}

.loader-logo-letter.l-amp{
  top:32px;
  left:25px;
  color:var(--accent);
  font-style:italic;
}

.loader-logo-letter.l-c{
  top:64px;
  left:64px;
  color:var(--text);
}

.loader-bar{

  width:240px;
  height:1px;

  background:rgba(255,255,255,.08);

  overflow:hidden;
  position:relative;

}

.loader-bar::after{

  content:'';

  position:absolute;
  left:0;
  top:0;

  width:40%;
  height:100%;

  background:white;

  animation:loaderMove 1.6s var(--ease) infinite;

}

.loader-text{

  margin-top:1rem;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.22em;
  text-transform:uppercase;

  color:#8c8c8c;

}

@keyframes loaderMove{

  0%{
    transform:translateX(-120%);
  }

  100%{
    transform:translateX(320%);
  }

}

@keyframes loaderPulse{

  0%,100%{
    opacity:.65;
    transform:translateY(0px);
  }

  50%{
    opacity:1;
    transform:translateY(-4px);
  }

}

/* GLOBAL FX */

body::before{

  content:'';

  position:fixed;
  inset:0;

  pointer-events:none;

  background:
    linear-gradient(
      rgba(255,255,255,.015) 1px,
      transparent 1px
    );

  background-size:100% 3px;

  opacity:.18;

  z-index:9999;

}

body::after{

  content:'';

  position:fixed;
  inset:0;

  pointer-events:none;

  background:
    radial-gradient(circle at top right,
    rgba(255,255,255,.045),
    transparent 30%),
    radial-gradient(circle at bottom left,
    rgba(255,255,255,.03),
    transparent 25%);

  mix-blend-mode:screen;

  z-index:0;

}

section{
  display:none;
  min-height:100vh;
}

/* ══ SECTION TRANSITIONS ════════════════════════════════════════ */
section {
  animation: none;
}
section.active {
  animation: sectionFadeIn .22s ease both;
}
@keyframes sectionFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  section.active { animation: none; }
}

section.active{
  display:block;
}

.wrap{
  width:min(1480px,92%);
  margin:auto;
}

.reveal{
  opacity:0;
  transform:translateY(40px);

  transition:
    opacity 1s var(--ease),
    transform 1s var(--ease);
}

.reveal.visible{
  opacity:1;
  transform:none;
}

.d1{transition-delay:.1s;}
.d2{transition-delay:.2s;}
.d3{transition-delay:.3s;}

.eyebrow{

  display:flex;
  align-items:center;
  gap:14px;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.22em;
  text-transform:uppercase;

  color:var(--muted);

  margin-bottom:2rem;

}

.eyebrow::before{

  content:'';
  width:32px;
  height:1px;

  background:rgba(255,255,255,.22);

}

.glass{

  background:rgba(255,255,255,.03);

  backdrop-filter:blur(24px);

  border:1px solid rgba(255,255,255,.08);

  box-shadow:var(--shadow);

}

.reflection{

  position:relative;
  overflow:hidden;

}

/* NAV */

nav{

  position:fixed;
  top:0;
  left:0;

  width:100%;

  padding:2rem 4.5%;

  z-index:1000;

  display:flex;
  justify-content:space-between;
  align-items:center;

  transition:
    background .5s ease,
    padding .5s ease,
    border-color .5s ease,
    transform .6s var(--ease);

  border-bottom:1px solid transparent;

}

nav.scrolled{

  background:rgba(5,5,5,.7);

  backdrop-filter:blur(24px);

  border-bottom:1px solid var(--line);

  padding:1.2rem 4.5%;

}

.logo{

  position:relative;
  cursor:pointer;
  width:40px;
  height:90px;
  flex-shrink:0;

}

.logo-letter{
  position:absolute;
  font-family:var(--serif);
  font-size:1.55rem;
  line-height:1;
  letter-spacing:0;
  font-weight:400;
  transition:opacity .3s ease;
}

.logo-letter.l-i{
  top:0;
  left:0;
  color:var(--text);
}

.logo-letter.l-amp{
  top:25px;
  left:24.5px;
  color:var(--accent);
  font-style:italic;
}

.logo-letter.l-c{
  top:52px;
  left:52px;
  color:var(--text);
}

.logo:hover .logo-letter{
  opacity:.75;
}

.nav-links{

  display:flex;
  gap:3rem;
  align-items:center;

}

.nav-links a{

  position:relative;
  text-decoration:none;
  color: rgba(255, 255, 255, 0.85);
  font-family:var(--serif);
  font-size:1.30rem;
  font-weight: 300;
  letter-spacing:.03em;
  text-transform:none;

  cursor:pointer;

  transition:
    color .3s ease,
    transform .35s ease;

}

.nav-links a:hover{
  transform:translateY(-2px);
}

.nav-links a::after{

  content:'';
  position:absolute;

  left:0;
  bottom:-8px;

  width:0;
  height:1px;

  background:white;

  transition:width .35s var(--ease);

}

.nav-links a:hover,
.nav-links a.active{
  color:white;
}

.nav-links a:hover::after,
.nav-links a.active::after{
  width:100%;
}

/* ── HERO ───────────────────────────────────────────── */

.hero {
  position: relative;
  width: 100%;
  height: 100vh;
  height: 100svh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  isolation: isolate;
  background: #020304;
}

.hero::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse 80% 50% at 50% -10%, rgba(255,255,255,.06), transparent),
    radial-gradient(ellipse 100% 60% at 50% 110%, rgba(26,130,180,.26), transparent),
    #020304;
}

.hero::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background-image:
    radial-gradient(circle, rgba(255,255,255,.32) .5px, transparent .9px),
    radial-gradient(circle, rgba(210,230,255,.18) .4px, transparent .7px),
    radial-gradient(circle, rgba(255,255,255,.14) .3px, transparent .6px);
  background-size: 160px 160px, 250px 250px, 340px 340px;
  background-position: 0 0, 95px 58px, 48px 115px;
  opacity: .17;
  mask-image: linear-gradient(to bottom, black 0%, rgba(0,0,0,.65) 36%, transparent 64%);
  -webkit-mask-image: linear-gradient(to bottom, black 0%, rgba(0,0,0,.65) 36%, transparent 64%);
}

.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(ellipse at 50% 40%, rgba(232,211,165,.06), transparent 30%),
    radial-gradient(ellipse at 50% 94%, rgba(44,158,204,.20), transparent 46%);
}

.hero-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(rgba(255,255,255,.020) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.016) 1px, transparent 1px);
  background-size: 80px 80px;
  opacity: .24;
  mask-image: linear-gradient(to bottom,
    transparent 0%,
    black 12%,
    rgba(0,0,0,.5) 42%,
    transparent 66%);
  -webkit-mask-image: linear-gradient(to bottom,
    transparent 0%,
    black 12%,
    rgba(0,0,0,.5) 42%,
    transparent 66%);
}

.hero-content {
  position: relative;
  z-index: 8;
  width: min(1020px, calc(100% - 48px));
  margin: 0 auto;
  padding-top: clamp(130px, 17vh, 210px);
  text-align: center;
  opacity: 0;
  transform: translateY(18px);
  animation: heroTextIn 1.1s cubic-bezier(.16,1,.3,1) .3s forwards;
}

.hero-eyebrow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  font-family: var(--mono);
  font-size: .575rem;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: rgba(232,211,165,.58);
  margin-bottom: 1.5rem;
}

.hero-eyebrow::before,
.hero-eyebrow::after {
  content: '';
  display: block;
  width: 26px;
  height: 1px;
  background: rgba(232,211,165,.34);
  flex-shrink: 0;
}

.hero-title {
  font-family: var(--serif);
  font-size: clamp(3.1rem, 6.2vw, 8rem);
  line-height: .955;
  letter-spacing: -.055em;
  font-weight: 400;
  margin: 0 auto 1.5rem;
  text-shadow:
    0 2px 22px rgba(0,0,0,.84),
    0 28px 100px rgba(0,0,0,.90);
}

.hero-sub {
  max-width: 580px;
  margin: 0 auto;
  font-size: clamp(.94rem, 1.15vw, 1.16rem);
  font-weight: 300;
  line-height: 1.80;
  letter-spacing: .01em;
  color: rgba(236,236,236,.74);
  text-shadow:
    0 2px 16px rgba(0,0,0,.80),
    0 14px 50px rgba(0,0,0,.84);
}

.hero-cta-row {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 12px;
  margin-top: 2rem;
}

.hero-cta {
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 24px;
  border-radius: 999px;
  font-family: var(--sans);
  font-size: .70rem;
  font-weight: 500;
  letter-spacing: .11em;
  text-transform: uppercase;
  cursor: pointer;
  transition:
    transform .2s var(--ease),
    border-color .2s var(--ease),
    background .2s var(--ease),
    color .2s var(--ease);
}

.hero-cta:hover { transform: translateY(-1px); }

.hero-cta-primary {
  border: 1px solid rgba(232,211,165,.46);
  background: rgba(232,211,165,.11);
  color: var(--accent);
}

.hero-cta-primary:hover {
  background: rgba(232,211,165,.20);
  border-color: rgba(232,211,165,.70);
}

.hero-cta-secondary {
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.036);
  color: rgba(255,255,255,.74);
}

.hero-cta-secondary:hover {
  border-color: rgba(255,255,255,.26);
  color: rgba(255,255,255,.94);
}

/* ── Earth — buried into hero bottom ── */

.hero-earth-wrap {
  position: absolute;
  left: 50%;
  bottom: 0;
  width: clamp(680px, 90vw, 1460px);
  aspect-ratio: 1;
  transform: translate(-50%, 52%);
  z-index: 2;
  pointer-events: none;
  opacity: 0;
  will-change: transform, opacity;
  animation: heroEarthIn 2s cubic-bezier(.16,1,.3,1) .08s forwards;
}

.hero-earth-atmosphere {
  position: absolute;
  inset: -6%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 50%,
      transparent 44%,
      rgba(52,182,226,.18) 50%,
      rgba(14,80,130,.10) 60%,
      transparent 68%);
  filter: blur(12px);
  opacity: .88;
}

.hero-earth-glow {
  position: absolute;
  inset: -4%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 34%, rgba(80,204,240,.20), transparent 30%),
    radial-gradient(circle at 50% 50%, rgba(30,140,190,.10), transparent 56%);
  filter: blur(24px);
  opacity: .85;
}

.hero-earth-sphere {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  overflow: hidden;
  background: #061825;
  box-shadow:
    inset 0 30px 88px rgba(115,218,242,.17),
    inset -140px -170px 240px rgba(0,0,0,.96),
    inset 65px 40px 110px rgba(255,255,255,.07),
    0 -20px 110px rgba(56,198,236,.22),
    0 0 0 1px rgba(90,210,240,.08);
}

.hero-earth-texture-track {
  position: absolute;
  inset: -3% -100%;
  display: flex;
  width: 300%;
  height: 106%;
  will-change: transform;
  animation: heroTextureRotate 36s linear infinite;
}

.hero-earth-texture {
  flex: 0 0 33.3333%;
  height: 100%;
  background:
    linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.22)),
    url('../assets/earth_atmos_2048.jpg') center center / cover no-repeat;
  filter: saturate(.80) contrast(1.14) brightness(.68);
}

.hero-earth-grid {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background:
    repeating-radial-gradient(ellipse at 50% 50%, transparent 0 56px, rgba(116,228,248,.14) 58px, transparent 60px),
    repeating-linear-gradient(90deg, transparent 0 90px, rgba(116,228,248,.11) 92px, transparent 94px);
  opacity: .50;
  mix-blend-mode: screen;
  mask-image: radial-gradient(circle at center, black 0 62%, transparent 72%);
  -webkit-mask-image: radial-gradient(circle at center, black 0 62%, transparent 72%);
}

.hero-earth-light {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background:
    radial-gradient(circle at 36% 22%, rgba(255,255,255,.22), transparent 15%),
    radial-gradient(circle at 50% 50%, transparent 42%, rgba(0,0,0,.16) 57%, rgba(0,0,0,.88) 100%),
    linear-gradient(118deg, rgba(255,255,255,.08), transparent 30%, rgba(0,0,0,.56) 72%);
}

.hero-readable-overlay {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
  background:
    radial-gradient(ellipse 70% 50% at 50% 32%,
      rgba(0,0,0,.22) 0%,
      rgba(0,0,0,.48) 34%,
      transparent 58%),
    linear-gradient(180deg,
      rgba(0,0,0,.10) 0%,
      rgba(0,0,0,.06) 36%,
      rgba(0,0,0,.80) 100%);
}

@keyframes heroEarthIn {
  from { transform: translate(-50%, 64%); opacity: .18; }
  to   { transform: translate(-50%, 52%); opacity: 1; }
}

@keyframes heroTextIn {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes heroTextureRotate {
  from { transform: translate3d(0,0,0); }
  to   { transform: translate3d(-33.3333%,0,0); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-earth-wrap {
    animation: none;
    opacity: 1;
    transform: translate(-50%, 52%);
  }
  .hero-content {
    animation: none;
    opacity: 1;
    transform: none;
  }
  .hero-earth-texture-track {
    animation: none;
  }
}
/* MANIFESTO */

.manifesto{
  padding:7rem 0 9rem;
}

.manifesto-grid{

  display:grid;
  grid-template-columns:1fr 540px;
  gap:7rem;

  align-items:start;

}

.manifesto-copy h2{

  font-family:var(--serif);
  font-size:clamp(2.8rem,4.5vw,4.6rem);

  line-height:.92;
  letter-spacing:-.04em;
  font-weight:400;

  margin-bottom:3rem;

}

.manifesto-copy h2 em{
  color:var(--accent);
}

.manifesto-copy p{

  font-size:1.05rem;
  line-height:2;
  font-weight: 300;

  color:#c8c8c8;

  margin-bottom:1.8rem;

}

.manifesto-rule{

  width:64px;
  height:1px;

  background:rgba(255,255,255,.22);

  margin:3rem 0;

}

.manifesto-aside{

  font-family:var(--serif);
  font-size:1.3rem;
  line-height:1.7;
  font-style:italic;

  color:#c0c0c0;

}

.manifesto-visual{

  position:relative;
  overflow:hidden;

  min-height:500px;

  backdrop-filter:blur(20px);

}

.manifesto-visual img{

  position:absolute;
  inset:0;

  width:100%;
  height:100%;

  object-fit:cover;

  transition:transform 1.4s var(--ease);

}

.manifesto-visual:hover img{
  transform:scale(1.05);
}

.manifesto-overlay{

  position:absolute;
  inset:0;

  background:
    linear-gradient(
      to top,
      rgba(0,0,0,.92) 0%,
      rgba(0,0,0,.15) 60%
    );

}

/* PHILOSOPHY */

.philosophy{
  padding:7rem 0 9rem;
}

.philosophy-grid{

  display:grid;
  grid-template-columns:580px 1fr;
  gap:8rem;

  align-items:center;

}

.philosophy-image{

  overflow:hidden;
  border:1px solid var(--line);

}

.philosophy-image img{

  width:100%;
  height:500px;

  object-fit:cover;

  transition:transform 1.2s var(--ease);

}

.philosophy-image:hover img{
  transform:scale(1.05);
}

.philosophy-copy h2{

  font-family:var(--serif);
  font-size:clamp(2.8rem,4.5vw,4.6rem);

  line-height:.92;
  letter-spacing:-.04em;
  font-weight:400;

  margin-bottom:2.5rem;

}

.philosophy-copy p{

  font-size:1.05rem;
  line-height:2;
  font-weight: 300;

  color:#c5c5c5;

  margin-bottom:1.7rem;

}

/* QUOTE */

.pull-quote{

  padding:10rem 0;

}

.pull-quote blockquote{

  max-width:1100px;
  margin:auto auto 2rem;

  text-align:center;

  font-family:var(--serif);
  font-size:clamp(3rem,5.5vw,5.6rem);
  font-weight: 300;

  line-height:1.03;
  letter-spacing:-.05em;
  font-style:italic;

}

.pull-quote cite{

  display:block;

  text-align:center;

  font-family:var(--serif);
  font-size:1.2rem;
  letter-spacing:.18em;
  text-transform:none;

  color:var(--muted);

}

/* ANALYSTS */

.analysts{
  padding:0rem 0;
}

.analysts h2{

  font-family:var(--serif);
  font-size:clamp(2.8rem,4.5vw,4.6rem);

  letter-spacing:-.03em;
  font-weight:400;

  margin-bottom:5rem;

}

.analyst-grid{

  display:grid;
  grid-template-columns:repeat(3,1fr);

  gap:1.5rem;

}

.analyst-card{

  position:relative;
  overflow:hidden;

  min-height:700px;

  transition:
    transform .55s var(--ease),

}

.analyst-card:hover{

  transform:translateY(-10px);

}

.analyst-card::after{
  display:none;
}

.analyst-card img{

  position:absolute;
  inset:0;

  width:100%;
  height:100%;

  object-fit:cover;

  transition:transform 1.2s var(--ease);

}

.analyst-card:hover img{
  transform:scale(1.05);
}

.analyst-overlay{

  position:absolute;
  inset:0;

  padding:3rem;

  display:flex;
  flex-direction:column;
  justify-content:flex-end;

  background:
    linear-gradient(
      to top,
      rgba(0,0,0,0) 0%,
      rgba(0,0,0,.2) 0%
    );

}

.analyst-bio{

  font-size:.92rem;
  font-weight: 300;
  line-height:1.9;

  color:#d0d0d0;

  margin-bottom:1.6rem;

  opacity:0;
  transform:translateY(18px);

  transition:
    opacity .5s var(--ease),
    transform .5s var(--ease);

}

.analyst-card:hover .analyst-bio{
  opacity:1;
  transform:none;
}

.analyst-name{

  font-family:var(--serif);
  font-size:2rem;

  margin-bottom:.7rem;

}

.analyst-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
}

.linkedin-btn{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  padding:.55rem 1.1rem;
  background:rgba(255,255,255,.05);
  backdrop-filter:blur(10px);
  color:#c8d8f0;
  font-size:var(--fs-sm);
  letter-spacing:.16em;
  text-transform:uppercase;
  text-decoration:none;
  cursor:pointer;
  transition:
    background .3s ease,
    color .3s ease,
    transform .3s ease;
  white-space:nowrap;
}

.linkedin-btn:hover{
  background:rgba(100,160,255,.1);
  color:#a8c8ff;
  transform:translateY(-2px);
}

.linkedin-btn svg{
  width:20px;
  height:20px;
  fill:currentColor;
  flex-shrink:0;
}

/* SUBSTACK */

.substack{

  padding:10rem 0;

  text-align:center;

}

.substack h2{

  max-width:1000px;
  margin:0 auto 3.5rem;

  font-family:var(--serif);
  font-size:clamp(2.8rem,4.5vw,4.6rem);

  line-height:1.05;
  letter-spacing:-.04em;
  font-style:italic;
  font-weight:400;

}

/* LAB */

.lab{

  display:grid;
  grid-template-columns:1.25fr .85fr;

  overflow:hidden;

  margin-top:6rem;
  margin-bottom:8rem;

  background:rgba(255,255,255,.02);

  backdrop-filter:blur(24px);

  box-shadow:var(--shadow);

}

.lab-visual{

  position:relative;
  min-height:500px;

  background:
    linear-gradient(rgba(0,0,0,.2),rgba(0,0,0,.6)),
    url('https://images.unsplash.com/photo-1642790106117-e829e14a795f?q=80&w=2400&auto=format&fit=crop')
    center center/cover no-repeat;

}

.lab-visual::before{

  content:'';

  position:absolute;
  inset:0;

  background:
    linear-gradient(
      rgba(255,255,255,.03) 1px,
      transparent 1px
    );

  background-size:100% 4px;

  opacity:.2;

}

.lab-visual::after{

  content:'';
  position:absolute;
  inset:0;

  background:
    radial-gradient(circle at center,
    transparent 10%,
    rgba(0,0,0,.65) 100%);

}

.live-badge{

  position:absolute;
  top:2rem;
  left:2rem;

  z-index:2;

  display:flex;
  align-items:center;
  gap:.7rem;

}

.live-dot{

  width:7px;
  height:7px;

  border-radius:50%;
  background:#ff5e5e;

  animation:pulse 1.0s infinite;

}

@keyframes pulse{
  0%,100%{opacity:1;}
  50%{opacity:.2;}
}

.play-btn{

  position:absolute;
  inset:0;

  margin:auto;

  width:88px;
  height:88px;

  z-index:2;

  border-radius:50%;
  border:1px solid rgba(255,255,255,.2);

  display:flex;
  align-items:center;
  justify-content:center;

  transition:
    transform .5s var(--ease),
    background .5s ease,
    box-shadow .5s ease;

}

.play-btn:hover{

  transform:scale(1.08);
  background:rgba(255,255,255,.08);

  box-shadow:
    0 0 40px rgba(255,255,255,.15);

}

.play-triangle{

  width:0;
  height:0;

  border-top:12px solid transparent;
  border-bottom:12px solid transparent;
  border-left:18px solid white;

  margin-left:6px;

}

.lab-body{

  padding:5rem 4rem;

  display:flex;
  flex-direction:column;
  justify-content:center;

}

.lab-principle{

  border-left:1px solid rgba(255,255,255,.16);

  padding-left:1.2rem;

  font-family:var(--serif);
  font-style:italic;

  font-size:1rem;
  line-height:1.7;

  color:#c0c0c0;

  margin-bottom:2rem;

}

.lab-body h2{

  font-family:var(--serif);
  font-size:clamp(2.6rem,4vw,4rem);

  line-height:.95;
  letter-spacing:-.04em;
  font-weight:400;

  margin-bottom:1.5rem;

}

.lab-body p{

  color:#c7c7c7;
  line-height:2;
  font-weight: 300;

  margin-bottom:2.5rem;

}

/* BUTTON */

.btn{

  position:relative;
  overflow:hidden;

  display:inline-flex;
  align-items:center;
  justify-content:center;

  padding:0.5rem 3rem;

  border:1px solid rgba(255,255,255,.16);

  text-decoration:none;
  color:white;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.2em;
  text-transform:uppercase;

  transition:
    border-color .4s ease,
    transform .4s ease,
    box-shadow .4s ease;

  background:rgba(255,255,255,.02);

  backdrop-filter:blur(14px);

}

.btn::before{

  content:'';
  position:absolute;
  inset:0;

  background:white;

  transform:translateX(-101%);

  transition:transform .5s var(--ease);

}

.btn span{
  position:relative;
  z-index:2;
}

.btn:hover{

  transform:translateY(-3px);
  border-color:white;

  box-shadow:
    0 10px 30px rgba(255,255,255,.08);

}

.btn:hover::before{
  transform:translateX(0);
}

.btn:hover span{
  color:black;
}

.link-line{

  display:inline-flex;
  align-items:center;
  gap:.7rem;

  text-decoration:none;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.18em;
  text-transform:uppercase;

  color:#cbcbcb;

  transition:gap .3s ease;

}

.link-line:hover{
  gap:1.2rem;
}

/* VAULT */

.vault-page{
  padding-top:8rem;
}

.vault-hero{

  position:relative;
  min-height:88vh;

  display:flex;
  align-items:flex-end;

  overflow:hidden;

}

.vault-hero-bg{

  position:absolute;
  inset:0;

  background:
    linear-gradient(rgba(0,0,0,.55),rgba(0,0,0,.78)),
    url('https://images.unsplash.com/photo-1551288049-bebda4e38f71?q=80&w=2070')
    center center/cover no-repeat;

  transform:scale(1.06);

  animation:heroZoom 18s ease-out forwards;

}

.vault-hero-content{

  position:relative;
  z-index:2;

  width:min(1480px,92%);
  margin:auto;

  padding-bottom:6rem;

  max-width:900px;

}

.vault-hero-content h1{

  font-family:var(--serif);
  font-size:clamp(4.5rem,8vw,7.4rem);

  line-height:.88;
  letter-spacing:-.05em;
  font-weight:400;

  margin-bottom:2rem;

}

.vault-hero-content p{

  max-width:700px;

  color:#d0d0d0;

  line-height:2;

}

.vault-intro{
  padding:8rem 0 6rem;
  border-bottom:1px solid var(--line);
  margin-bottom:6rem;
}

.vault-intro-grid{

  display:grid;
  grid-template-columns:1fr 1fr;

  gap:6rem;

}

.vault-intro h2{

  font-family:var(--serif);
  font-size:clamp(2.6rem,4vw,4rem);

  line-height:.92;
  letter-spacing:-.04em;
  font-weight:400;

}

.vault-intro p{

  color:#c7c7c7;
  line-height:2;

  margin-bottom:1.5rem;

}

/* BLOOMBERG TERMINAL */

.terminal-wrap{

  margin-bottom:8rem;

  border:1px solid rgba(255,255,255,.08);

  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.04),
      rgba(255,255,255,.02)
    );

  backdrop-filter:blur(28px);

  box-shadow:var(--shadow);

  overflow:hidden;

}

.terminal-top{

  display:flex;
  justify-content:space-between;
  align-items:center;

  padding:1rem 1.5rem;

  border-bottom:1px solid rgba(255,255,255,.08);

  background:rgba(255,255,255,.03);

}

.terminal-title{

  display:flex;
  align-items:center;
  gap:1rem;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.18em;
  text-transform:uppercase;

  color:#d0d0d0;

}

.terminal-dots{
  display:flex;
  gap:.45rem;
}

.terminal-dots span{

  width:8px;
  height:8px;

  border-radius:50%;

  background:#6d6d6d;

}

.terminal-body{

  padding:2rem;

}

.terminal-search{

  width:100%;

  background:black;

  border:1px solid rgba(255,255,255,.12);

  padding:1.4rem 1.6rem;

  color:white;

  font-family:var(--mono);
  font-size:.78rem;
  letter-spacing:.08em;

  outline:none;

  margin-bottom:2rem;

}

.terminal-search:focus{

  border-color:rgba(255,255,255,.25);

  box-shadow:
    0 0 0 1px rgba(255,255,255,.08);

}

.terminal-grid{

  display:grid;
  grid-template-columns:repeat(3,1fr);

  gap:1rem;

}

.terminal-card{

  position:relative;

  padding:1.5rem;

  border:1px solid rgba(255,255,255,.06);

  background:rgba(255,255,255,.02);

  overflow:hidden;

  transition:
    transform .45s var(--ease),
    border-color .45s ease,
    background .45s ease;

}

.terminal-card:hover{

  transform:translateY(-6px);

  border-color:rgba(255,255,255,.16);

  background:rgba(255,255,255,.04);

}

.terminal-type{

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.18em;
  text-transform:uppercase;

  color:#8f8f8f;

  margin-bottom:1rem;

}

.terminal-card h4{

  font-family:var(--serif);
  font-size:1.6rem;
  font-weight:400;

  line-height:1;

  margin-bottom:1rem;

}

.terminal-card p{

  color:#bfbfbf;

  line-height:1.8;
  font-size:.9rem;

}

.terminal-meta{

  margin-top:1.5rem;

  display:flex;
  justify-content:space-between;
  align-items:center;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.16em;
  text-transform:uppercase;

  color:#777;

}

/* THESIS */

.thesis{
  padding:4rem 0 12rem;
}

.thesis-head{

  display:flex;
  justify-content:space-between;
  align-items:flex-end;

  margin-bottom:4rem;

}

.thesis-head h2{

  font-family:var(--serif);
  font-size:clamp(2.6rem,4vw,4rem);

  letter-spacing:-.04em;
  font-weight:400;

}

.thesis-grid{

  display:grid;
  grid-template-columns:repeat(3,1fr);

  gap:1.5rem;

}

.thesis-card{

  position:relative;
  overflow:hidden;

  min-height:600px;

  border:1px solid var(--line);

  display:flex;
  align-items:flex-end;

  transition:
    transform .5s var(--ease),
    border-color .5s ease,
    box-shadow .5s ease;

  cursor:pointer;

  background:rgba(255,255,255,.02);

  backdrop-filter:blur(20px);

}

.thesis-card:hover{

  transform:translateY(-8px);
  border-color:rgba(255,255,255,.18);

  box-shadow:
    0 20px 50px rgba(0,0,0,.45);

}

.thesis-card img{

  position:absolute;
  inset:0;

  width:100%;
  height:100%;

  object-fit:cover;

  transition:transform 1.2s var(--ease);

}

.thesis-card:hover img{
  transform:scale(1.06);
}

.thesis-card::before{

  content:'';
  position:absolute;
  inset:0;

  background:
    linear-gradient(
      to top,
      rgba(0,0,0,.96) 0%,
      rgba(0,0,0,.25) 60%
    );

}

.thesis-card::after{
  display:none;
}

.thesis-content{

  position:relative;
  z-index:2;

  padding:3rem;

  transform:translateY(12px);
  transition:transform .5s var(--ease);

}

.thesis-card:hover .thesis-content{
  transform:none;
}

.thesis-tag{

  display:block;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.18em;
  text-transform:uppercase;

  color:#c5c5c5;

  margin-bottom:1.3rem;

}

.thesis-card h3{

  font-family:var(--serif);
  font-size:2rem;

  line-height:1.04;
  font-weight:400;

  margin-bottom:1rem;

}

.thesis-card p{

  font-size:.92rem;
  line-height:1.9;

  color:#d1d1d1;

  margin-bottom:2rem;

}

/* LIBRARY MODAL */

.library-modal{

  position:fixed;
  inset:0;

  background:rgba(0,0,0,.82);
  backdrop-filter:blur(20px);

  z-index:3000;

  opacity:0;
  visibility:hidden;

  transition:
    opacity .5s ease,
    visibility .5s ease;

}

.library-modal.active{
  opacity:1;
  visibility:visible;
}

.library-inner{

  position:absolute;
  top:50%;
  left:50%;

  transform:translate(-50%,-50%) scale(.96);

  width:min(1100px,92%);
  height:min(760px,88vh);

  background:#0a0a0a;

  border:1px solid var(--line2);

  overflow:hidden;

  transition:transform .5s var(--ease);

  box-shadow:
    0 40px 120px rgba(0,0,0,.65);

}

.library-modal.active .library-inner{
  transform:translate(-50%,-50%) scale(1);
}

.library-grid{

  display:grid;
  grid-template-columns:420px 1fr;

  height:100%;

}

.library-cover{

  position:relative;
  overflow:hidden;
}

.library-cover img{

  width:100%;
  height:100%;

  object-fit:cover;

}

.library-content{

  padding:4rem;
  overflow-y:auto;

}

.library-close{

  position:absolute;
  top:2rem;
  right:2rem;

  z-index:5;

  width:48px;
  height:48px;

  border:1px solid var(--line2);

  background:rgba(255,255,255,.04);

  display:flex;
  align-items:center;
  justify-content:center;

  cursor:pointer;

}

.library-content h2{

  font-family:var(--serif);
  font-size:4rem;
  font-weight:400;
  line-height:.92;
  letter-spacing:-.04em;

  margin-bottom:2rem;

}

.library-content p{

  color:#c5c5c5;
  line-height:2;

  margin-bottom:1.5rem;

}

.library-metrics{

  display:grid;
  grid-template-columns:repeat(3,1fr);

  gap:1rem;

  margin:3rem 0;

}

.metric{

  border:1px solid var(--line);
  padding:1.5rem;

  background:rgba(255,255,255,.02);

}

.metric span{

  display:block;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.16em;
  text-transform:uppercase;

  color:#8d8d8d;

  margin-bottom:.8rem;

}

.metric strong{

  font-size:1.2rem;
  font-weight:500;

}

/* PLATFORM TERMINAL STYLES */
:root{--up:#34d399;--dn:#f87171;}

.platform-mode #nav{display:none;}
.home-mode #nav{display:none;}
.pf-wrap{width:100%;display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg);font-family:var(--sans);}

/* ── PLATFORM FONT RULES + TYPE SCALE ── */
/* Drawer/modal overlays (#pf-rev-drawer-overlay, #pf-mult-drawer-overlay, #pf-mod-overlay)
   render as body-level siblings outside .pf-wrap, so they need the same
   token overrides repeated here to match the rest of the platform's type. */
.pf-wrap,
#pf-rev-drawer-overlay,
#pf-mult-drawer-overlay,
#pf-mod-overlay,
#pf-dcf-drawer-overlay {
  --sans:    'IBM Plex Mono', monospace;
  --serif:   'IBM Plex Mono', monospace;
  --fs-nano: 6.5px;
  --fs-xs:   7.5px;
  --fs-sm:   9px;
  --fs-md:   11px;
  --fs-lg:   15px;
  --fs-xl:   24px;
}

/* Numeric values & percentages → IBM Plex Mono */
.pf-wrap .pf-reg-val,
.pf-wrap .pf-kpi-price,
.pf-wrap .pf-kpi-chg,
.pf-wrap .pf-ci-val,
.pf-wrap .pf-ci-chg,
.pf-wrap .pf-sec-val,
.pf-wrap .pf-cr-val,
.pf-wrap .pf-cr-chg,
.pf-wrap .pf-ry-val,
.pf-wrap .pf-sg-val,
.pf-wrap .pf-ts-meta-val,
.pf-wrap .pf-dp-val,
.pf-wrap .pf-accord-val,
.pf-wrap .pf-stat-val,
.pf-wrap .pf-tl-val,
.pf-wrap .pf-ph-price,
.pf-wrap .pf-ph-chg,
.pf-wrap .pf-baro-pct-label { font-family: var(--mono) !important; }

/* ── TABLE NUMERIC COLUMNS → IBM Plex Mono ── */
/* Financial table first column = row label text → keep Inter */
.pf-wrap .pf-fin-tbl td:first-child,
.pf-wrap .pf-fin-section-row td { font-family: var(--sans) !important; }

/* Global Markets, U.S. Equity, Commodities, Divisas, Watchlist, Barometro: price/chg columns */
.pf-wrap .pf-tbl td.t-a,
.pf-wrap .pf-tbl td:nth-child(n+3):not(.pf-yield-flag-cell),
/* Watchlist numeric cells (price, chg%, cap, eps, pe, rev, beta) */
.pf-wrap .pf-wl-row td:nth-child(n+3),
/* Global Yields */
.pf-wrap .pf-ry-val,
/* Screener / Filtros all data cells (already mono — keep) */
/* Financial Statements */
.pf-wrap .pf-fin-tbl td:not(:first-child),
.pf-wrap .pf-fin-tbl td.t-a,
/* Ratios */
.pf-wrap .pf-ratios-tbl td,
/* Key Data (tearsheet) */
.pf-wrap .pf-tsv-br-val,
/* Revenue vs Earnings chart labels */
.pf-wrap .pf-ts-fin-cell .pf-fin-tbl td,
/* Analyst Recommendations */
.pf-wrap .pf-fin-tbl tbody td:not(:first-child) { font-family: var(--mono) !important; }
.pf-body{flex:1;overflow:hidden;overflow-x:hidden;display:flex;flex-direction:column;min-height:0;}
.pf-body::-webkit-scrollbar{width:2px;}
.pf-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);}
.pf-section{display:none!important;}
.pf-section.active{display:flex!important;flex-direction:column;flex:1;min-height:0;}

/* ── MARKET STATUS PILL ──────────────────────────────────── */
.pf-market-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 7px;
  padding: 2px 7px;
  border-radius: 2px;
  font-family: var(--mono);
  font-size: .52rem;
  letter-spacing: .12em;
  font-weight: 500;
  text-transform: uppercase;
  vertical-align: middle;
  position: relative;
  top: -1px;
  transition: all .3s;
}
.pf-market-pill::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  flex-shrink: 0;
}
.pf-market-pill.open {
  background: rgba(52,211,153,.1);
  border: 1px solid rgba(52,211,153,.3);
  color: #34d399;
}
.pf-market-pill.open::before {
  background: #34d399;
  box-shadow: 0 0 0 0 rgba(52,211,153,.4);
  animation: marketPulse 2s infinite;
}
.pf-market-pill.closed {
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  color: rgba(160,160,160,.7);
}
.pf-market-pill.closed::before {
  background: rgba(160,160,160,.4);
}
.pf-market-pill.prepost {
  background: rgba(232,211,165,.08);
  border: 1px solid rgba(232,211,165,.2);
  color: rgba(232,211,165,.7);
}
.pf-market-pill.prepost::before {
  background: rgba(232,211,165,.6);
  animation: marketPulse 3s infinite;
}
@keyframes marketPulse {
  0%   { box-shadow: 0 0 0 0 currentColor; }
  70%  { box-shadow: 0 0 0 4px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* ── MORNING BRIEF ───────────────────────────────────────── */
.pf-morning-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: rgba(5,5,5,.55);
  backdrop-filter: blur(6px);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .5s ease;
  cursor: pointer;
}
.pf-morning-overlay.visible {
  opacity: 1;
  pointer-events: all;
}
.pf-morning-overlay.hiding {
  opacity: 0;
  pointer-events: none;
}
.pf-morning-shell {
  width: min(1040px, 96vw);
  height: 90vh;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.1);
  border-top: 2px solid var(--accent);
  background: #080808;
}

/* Header */
.pf-morning-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 28px 12px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  flex-shrink: 0;
}
.pf-morning-dateline {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--muted2);
}
.pf-morning-title {
  font-family: var(--serif);
  font-size: 1.15rem;
  font-weight: 400;
  letter-spacing: .01em;
  color: var(--text);
}
.pf-morning-title em {
  color: var(--accent);
  font-style: italic;
}

/* Ticker tape inside morning brief */
.pf-morning-tape {
  height: 28px;
  display: flex;
  align-items: center;
  border-bottom: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.3);
  overflow: hidden;
  flex-shrink: 0;
}
.pf-morning-tape-inner {
  display: flex;
  align-items: center;
  gap: 28px;
  white-space: nowrap;
  animation: pftape 35s linear infinite;
}

/* Body scroll area */
.pf-morning-body {
  overflow: hidden;
  flex: 1;
  min-height: 0;
}
.pf-morning-body::-webkit-scrollbar { width: 4px; }
.pf-morning-body::-webkit-scrollbar-track { background: transparent; }
.pf-morning-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); }

/* Two-column editorial grid */
.pf-morning-grid {
  display: grid;
  grid-template-columns: 1.45fr 1fr;
  gap: 1px;
  background: rgba(255,255,255,.05);
  height: 100%;
}

/* LEFT column: lead story + news */
.pf-morning-lead {
  background: #080808;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.08) transparent;
}
.pf-morning-lead::-webkit-scrollbar { width: 3px; }
.pf-morning-lead::-webkit-scrollbar-track { background: transparent; }
.pf-morning-lead::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); }

/* Lead image */
.pf-morning-lead-img-wrap {
  position: relative;
  width: 100%;
  height: 170px;
  overflow: hidden;
  flex-shrink: 0;
}
.pf-morning-lead-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(.85);
  transition: transform 1.2s cubic-bezier(.16,1,.3,1), filter .4s;
}
.pf-morning-lead-img-wrap:hover .pf-morning-lead-img {
  transform: scale(1.03);
  filter: saturate(1);
}
.pf-morning-lead-img-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, transparent 40%, rgba(8,8,8,.85) 100%);
}

/* Lead text block */
.pf-morning-lead-body {
  padding: 14px 28px 12px;
  flex-shrink: 0;
}
.pf-morning-lead-eyebrow {
  display: none;
}
.pf-morning-lead-eyebrow::before {
  content: '';
  width: 20px;
  height: 1px;
  background: var(--accent);
  opacity: .6;
}
.pf-morning-lead-headline {
  font-family: var(--serif);
  font-size: clamp(1.3rem, 2vw, 1.75rem);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: -.025em;
  color: var(--text);
  margin-bottom: 10px;
}
.pf-morning-lead-deck {
  font-family: var(--sans);
  font-size: .78rem;
  line-height: 1.75;
  color: var(--muted);
}

/* Section headers */
.pf-morning-section-hdr {
  font-family: var(--mono);
  font-size:var(--fs-xs);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--muted2);
  padding: 12px 28px 10px;
  border-bottom: 1px solid rgba(255,255,255,.05);
  flex-shrink: 0;
}

/* News items (below lead, same left column) */
.pf-morning-news-item {
  padding: 8px 28px;
  border-bottom: 1px solid rgba(255,255,255,.04);
  cursor: pointer;
  transition: background .15s;
  text-decoration: none;
  display: block;
  color: inherit;
}
.pf-morning-news-item:hover { background: rgba(255,255,255,.025); }
.pf-morning-news-src {
  font-family: var(--mono);
  font-size:var(--fs-xs);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 3px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.pf-morning-news-src-tag {
  padding: 1px 6px;
  background: rgba(232,211,165,.08);
  border: 1px solid rgba(232,211,165,.18);
  font-size: .5rem;
  letter-spacing: .14em;
  color: rgba(232,211,165,.6);
}
.pf-morning-news-hl {
  font-family: var(--sans);
  font-size: .76rem;
  line-height: 1.5;
  color: var(--text);
  letter-spacing: -.005em;
}
.pf-morning-news-ts {
  font-family: var(--mono);
  font-size:var(--fs-xs);
  letter-spacing: .06em;
  color: var(--muted2);
  margin-top: 3px;
}

/* RIGHT column: I&C vault cards */
.pf-morning-right {
  background: #080808;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.08) transparent;
}
.pf-morning-right::-webkit-scrollbar { width: 3px; }
.pf-morning-right::-webkit-scrollbar-track { background: transparent; }
.pf-morning-right::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); }
.pf-morning-ic-cards {
  display: flex;
  flex-direction: column;
  flex: 1;
}

/* Vault-card replica inside Morning Brief — stacked layout */
.pf-morning-ic-cards .thesis-card {
  cursor: pointer;
  transition: background .2s;
  flex-shrink: 0;
  flex: 1;
  transform: none !important;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  min-height: 0;
  border: none;
}
.pf-morning-ic-cards .thesis-card::before {
  display: none;
}
.pf-morning-ic-cards .thesis-card:hover {
  transform: none !important;
  background: rgba(255,255,255,.02);
}
.pf-morning-ic-cards .thesis-card img {
  position: relative;
  width: 100%;
  height: 52%;
  object-fit: cover;
  display: block;
  filter: saturate(.85);
  flex-shrink: 0;
  transition: transform 1.2s cubic-bezier(.16,1,.3,1), filter .4s;
}
.pf-morning-ic-cards .thesis-card:hover img {
  transform: scale(1.03);
  filter: saturate(1);
}
.pf-morning-ic-cards .thesis-content {
  position: relative;
  z-index: 2;
  padding: 20px 22px 12px;
  transform: none !important;
  background: #080808;
}
.pf-morning-ic-cards .thesis-tag {
  margin-bottom: 8px;
  font-size:var(--fs-xs);
}
.pf-morning-ic-cards .thesis-card h3 {
  font-size: 1.2rem;
  line-height: 1.3;
  margin-bottom: 12px;
  color: var(--text);
  font-family: var(--serif);
  font-weight: 400;
  letter-spacing: -.02em;
}
.pf-morning-ic-cards .thesis-card p {
  display: block;
  font-family: var(--sans);
  font-size: .76rem;
  line-height: 1.7;
  color: var(--muted);
  max-height: none !important;
  opacity: 1 !important;
  overflow: visible !important;
  margin-bottom: 0 !important;
  transition: none !important;
}
.pf-morning-ic-cards .thesis-card-meta {
  padding: 12px 22px 16px;
  position: relative;
  z-index: 2;
  background: #080808;
  border-top: 1px solid rgba(255,255,255,.05);
  margin-top: auto;
}

/* Footer */
.pf-morning-footer {
  display: flex;
  align-items: center;
  padding: 10px 28px;
  border-top: 1px solid rgba(255,255,255,.06);
  flex-shrink: 0;
  background: rgba(255,255,255,.015);
}
.pf-morning-footer-note {
  font-family: var(--mono);
  font-size:var(--fs-xs);
  letter-spacing: .1em;
  color: var(--muted2);
}
#pf-screener.active,#pf-financials.active{display:flex!important;flex-direction:column;flex:1;min-height:0;height:100%;}

/* CMD BAR - now merged into pf-search-bar */
.pf-cmd-tabs{display:flex;align-items:stretch;flex:1;overflow:hidden;}
.pf-ctab{display:flex;align-items:center;gap:5px;padding:0 14px;font-family:var(--sans);font-size:var(--fs-sm);font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted2);border-right:1px solid var(--line);cursor:pointer;position:relative;white-space:nowrap;background:none;border-top:none;border-bottom:3px solid transparent;border-left:none;transition:color .15s,background .15s;}
.pf-ctab:hover{color:var(--muted);background:rgba(255,255,255,.025);}
.pf-ctab.active{color:var(--text);border-bottom:3px solid var(--accent);background:rgba(232,211,165,.04);}
.pf-ctab .pf-kbd{display:none;position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);font-family:var(--sans);font-size:var(--fs-xs);background:var(--surface);border:1px solid var(--line);padding:1px 5px;white-space:nowrap;z-index:10;}
.pf-ctab:hover .pf-kbd{display:block;}
@keyframes pfpulse{0%,100%{opacity:.3;}50%{opacity:1;}}

/* NEWS BAR (below ticker tape) */
.pf-news-bar{width:100%;display:flex;align-items:stretch;border-bottom:none;background:var(--surface);flex-shrink:0;height:80px;overflow:hidden;position:relative;}
.pf-news-bar-label{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.22em;text-transform:uppercase;color:var(--muted2);padding:0 16px;display:flex;align-items:center;border-right:1px solid rgba(255,255,255,.08);flex-shrink:0;gap:6px;}
.pf-news-bar-inner{flex:1;overflow:hidden;position:relative;}
.pf-news-bar-inner .pf-news{display:flex;flex-wrap:nowrap;height:80px;padding:0;gap:1px;overflow-x:auto;scroll-behavior:smooth;}
.pf-news-bar-inner .pf-news::-webkit-scrollbar{height:2px;}
.pf-news-bar-inner .pf-news::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
.pf-news-bar-inner .pf-news-card{width:270px;min-width:270px;height:80px;background:var(--surface);padding:10px 14px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--line);transition:background .15s;}
.pf-news-bar-inner .pf-news-card:hover{background:var(--surface2);}

/* COMMODITIES dropdown */
.pf-commod-panel{display:flex;flex-direction:column;flex:1;min-height:0;}
.pf-commod-header .pf-commod-arrow{font-size:var(--fs-md);color:var(--muted);transition:transform .2s;}
.pf-commod-panel.collapsed .pf-commod-arrow{transform:rotate(-90deg);}
.pf-commod-body{overflow:hidden;flex:1;min-height:0;transition:max-height .25s ease;}
.pf-commod-panel.collapsed .pf-commod-body{max-height:0;overflow:hidden;}
.pf-commod-body::-webkit-scrollbar{display:none;}
.pf-commod-body .pf-tbl td{padding:1px 10px;}
.pf-commod-body .pf-tbl th{padding:1px 10px;}

.pf-dash-main{display:flex;flex-direction:column;gap:1px;min-width:0;align-self:stretch;}
.pf-dash-main>.pf-panel{flex:0 0 auto;}
/* flex:0 0 auto (not flex:1) — this rule predates the content-sizing fix
   below (search "watchlist sizes to its own content"); a stray flex:1 here
   was overriding that later rule's intent since the later rule never
   redeclared the flex shorthand, only height, so this one still won the
   cascade for that property. */
.pf-below-rendimiento{display:flex;flex-shrink:0;flex:0 0 auto;background:var(--line);}
/* CAPITAL FLOWS */
.pf-flows-wrap{display:flex;flex-direction:column;gap:1px;background:var(--line);}
.pf-flows-row{display:flex;align-items:center;background:var(--surface);padding:5px 10px;gap:8px;}
.pf-flows-label{font-family:var(--sans);font-size:var(--fs-sm);font-weight:500;letter-spacing:.04em;color:var(--text);width:108px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-flows-label--sub{padding-left:10px;font-family:var(--sans);font-size:var(--fs-sm);font-weight:400;letter-spacing:.02em;color:var(--text);}
.pf-flows-bar-wrap{flex:1;position:relative;height:7px;background:rgba(255,255,255,.05);}
.pf-flows-bar-pos{position:absolute;top:0;left:50%;height:100%;transition:width .6s cubic-bezier(.16,1,.3,1);}
.pf-flows-bar-neg{position:absolute;top:0;height:100%;transition:width .6s cubic-bezier(.16,1,.3,1);right:50%;}
.pf-flows-zero{position:absolute;top:0;bottom:0;left:50%;width:1px;background:rgba(255,255,255,.18);}
.pf-flows-val{font-family:var(--mono);font-size:var(--fs-sm);font-weight:500;width:54px;text-align:right;flex-shrink:0;}
.pf-flows-legend{display:flex;gap:14px;padding:5px 10px 6px;border-top:1px solid var(--line);}
.pf-flows-leg-item{display:flex;align-items:center;gap:5px;font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted2);letter-spacing:.06em;}
.pf-flows-leg-dot{width:8px;height:4px;flex-shrink:0;}
/* min-width:0 — same flex "won't shrink below content" issue as .pf-scroll
   above, one level up the tree: without it, this panel (row-direction flex
   item inside .pf-below-rendimiento) refused to shrink to its allotted
   share, so .pf-scroll's own min-width:0 fix below never got the chance to
   matter — the panel itself was already forcing 654px regardless. */
.pf-macro-fed-merged{flex:1;display:flex;flex-direction:column;min-width:0;}

/* TICKER TAPE */
.pf-tape{height:18px;display:flex;align-items:stretch;border-bottom:1px solid var(--line);background:rgba(0,0,0,.4);flex-shrink:0;overflow:hidden;}
.pf-tape-anch{display:none;}
.pf-tape-dot{display:none;}
.pf-tape-live{display:none;}
.pf-tape-scroll{flex:1;overflow:hidden;position:relative;}
.pf-tape-inner{display:flex;align-items:center;gap:28px;white-space:nowrap;animation:pftape 35s linear infinite;}
@keyframes pftape{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}
.pf-tape-item{font-family:var(--sans);font-size:var(--fs-md);letter-spacing:.05em;display:flex;align-items:center;gap:5px;color:var(--muted2);}
.pf-tape-item b{color:var(--muted);font-weight:500;}
.pf-tape-item .t-up{color:var(--up);}
.pf-tape-item .t-dn{color:var(--dn);}

/* SHARED PANEL STYLES */
.pf-panel{background:var(--surface);border:1px solid var(--line);}
.pf-ph{min-height:26px;height:auto;display:flex;align-items:center;gap:8px;padding:0 10px;background:rgba(0,0,0,.3);border-bottom:1px solid var(--line);flex-wrap:nowrap;overflow:hidden;}
.pf-ph-title{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--text);flex-shrink:0;font-weight:700;}
.pf-ph-sub{display:none!important;}
.pf-ph-price{display:none!important;}
.pf-ph-chg{display:none!important;}
.pf-ph-pts{display:none!important;}
.pf-ph-ml{display:none!important;}
#pf-sector-tabs,#pf-factor-tabs,#pf-flows-tabs{display:flex!important;gap:1px;background:rgba(255,255,255,.04);padding:2px;}
.pf-ts{display:none!important;}

/* CHIPS & TABS */
.pf-chip{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);border:1px solid var(--line);padding:2px 7px;cursor:pointer;background:none;transition:all .12s;}
.pf-chip:hover{color:var(--muted);border-color:var(--line2);}
.pf-chip.on{color:var(--text);border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.05);}
.pf-htabs{display:flex;gap:1px;background:rgba(255,255,255,.04);padding:2px;}
.pf-htab-group{display:flex;gap:1px;background:rgba(255,255,255,.04);padding:2px;}
.pf-htab{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);padding:2px 6px;cursor:pointer;background:none;border:none;transition:color .12s;}
.pf-htab:hover{color:var(--muted);}
.pf-htab.on{background:rgba(255,255,255,.1);color:var(--text);}
.pf-fin-tab-wrap{display:flex;align-items:center;}
.pf-fin-dl-btn{opacity:0;width:0;margin-left:0;pointer-events:none;overflow:hidden;background:none;border:none;color:var(--accent);height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;padding:0;transition:opacity .16s ease,width .16s ease,margin-left .16s ease;}
.pf-fin-tab-wrap:hover .pf-fin-dl-btn{opacity:1;width:16px;margin-left:4px;pointer-events:auto;}
.pf-fin-dl-btn:hover{opacity:.7;}
.pf-sub-tabs{display:flex;border-bottom:1px solid var(--line);}
.pf-stab{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);padding:0 12px;height:26px;display:flex;align-items:center;cursor:pointer;border-bottom:1px solid transparent;margin-bottom:-1px;transition:color .12s;background:none;border-top:none;border-left:none;border-right:none;}
.pf-stab:hover{color:var(--muted);}
.pf-stab.on{color:var(--text);border-bottom-color:rgba(255,255,255,.4);}

/* TABLES */
.pf-overlay-on td,.pf-overlay-on{background:rgba(255,255,255,0.04)!important;outline:1px solid rgba(255,255,255,0.15);outline-offset:-1px;}
.pf-tbl tr[data-overlay-key]{cursor:pointer;}
.pf-tbl tr[data-overlay-key]:hover td{background:rgba(255,255,255,0.03);}
.pf-sec-cell[data-overlay-key]{cursor:pointer;}
.pf-yield-row[data-overlay-key]{cursor:pointer;}
.pf-factor-row[data-overlay-key]{cursor:pointer;}
.pf-earn-row[data-overlay-key]{cursor:pointer;}
.pf-tbl th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:4px 10px;text-align:left;font-weight:500;white-space:nowrap;}
.pf-tbl th:not(:first-child){text-align:right;}
.pf-tbl td{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;color:var(--muted);padding:4px 10px;}
.pf-tbl td:not(:first-child){text-align:right;}
.pf-tbl tr:last-child td{border-bottom:none;}
.pf-tbl tr{position:relative;transition:border .1s;}
.pf-tbl tr:hover td{color:var(--text);}
.pf-tbl tr:hover td:first-child{border-left:1px solid rgba(255,255,255,.3);}
.pf-tbl .tn{font-family:var(--sans);color:var(--text);font-weight:600;font-size:var(--fs-sm);}
.pf-tbl .ts{color:var(--muted2);font-size:var(--fs-xs);}
.pf-tbl .t-up{color:var(--up);}
.pf-tbl .t-dn{color:var(--dn);}
.pf-tbl .t-11{font-size:var(--fs-md);}
.pf-tbl .t-14{font-size:var(--fs-lg);font-weight:500;}
.pf-tbl .t-a{text-align:right;}
.pf-tbl .t-alt{background:rgba(255,255,255,.01);}

/* Center header rows for Macro-tab table panels (Mercados Globales/EE.UU.,
   Commodities, Divisas, Barómetro, IPO, Calendario Económico, Watchlist) —
   body cell alignment untouched. */
#pf-global-tbl th,
#pf-us-equity-tbl th,
#pf-commod-tbl th,
#pf-fx-tbl th,
#pf-calendar-tbl th,
#pf-barometro-root th,
#pf-ipo-root .pf-ipo-tbl th,
#pf-wl-tbl th{
  text-align:center;
}
/* Commodities/Divisas: center+middle align the numeric cells too (not just headers) */
#pf-commod-tbl td.t-a,
#pf-fx-tbl td.t-a{
  text-align:center;
  vertical-align:middle;
}
/* Barómetro del Valor: only the "Actual" value cell — not the adjacent
   percentile/tag+bar cell, which keeps its own right-aligned flex layout */
#pf-barometro-root td.pf-baro-actual{
  text-align:center;
  vertical-align:middle;
}

/* HOME GRID */
.pf-home-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);}
.pf-dashboard{display:grid;grid-template-columns:minmax(220px,1fr) minmax(360px,1.45fr) minmax(280px,1.2fr);gap:1px;background:var(--line);flex:1;min-height:0;align-items:stretch;overflow:hidden;}
.pf-dash-col{display:flex;flex-direction:column;gap:1px;min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;}
.pf-dash-main{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1;min-height:0;overflow:hidden;}
.pf-dash-main>.pf-panel{flex:0 0 auto;min-height:0;}
.pf-dash-main .pf-panel{min-height:0;}
/* Chart panel grows to fill; watchlist gets a fixed height sized to exactly
   fit a 6-row watchlist (panel header 26px + add-ticker row 30px + table
   header/6 rows 232px = 290px, measured directly, not guessed) — a fixed
   height:38% here left ~175px of dead space under a 6-row watchlist at a
   typical viewport, space the chart could otherwise use. This box does NOT
   grow/shrink as tickers are added/removed (that was tried and reverted —
   deliberately a fixed reserved height, not autofit): with fewer than 6
   tickers it just shows empty space below the last row rather than
   resizing the chart above it on every add/remove. The watchlist itself is
   uncapped (2026-07-10 — see pf_addWl), so past 6 tickers this box scrolls
   (.pf-scroll's own overflow-y:auto) instead of growing. */
#pf-rendimiento-panel{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;}
#pf-rendimiento-panel>div[style*="height:320px"]{flex:1;min-height:0;height:auto!important;padding-bottom:4px;}
.pf-below-rendimiento{display:flex;flex-shrink:0;height:290px;background:var(--line);}
.pf-below-rendimiento>.pf-panel{flex:1;display:flex;flex-direction:column;min-height:0;}
.pf-dash-news{min-height:150px;}
.pf-factor-list{display:grid;grid-template-columns:1fr;gap:1px;background:var(--line);}
.pf-factor-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;background:var(--surface);padding:6px 10px;font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted);}
.pf-factor-row b{font-family:var(--sans);font-size:var(--fs-md);color:var(--text);font-weight:600;}
@media (max-width:1100px){.pf-dashboard{grid-template-columns:1fr;}.pf-dash-main .pf-panel{min-height:360px;}}
/* ── News sidebar — fixed overlay, slides in from left edge (Home tab only) ── */
#pf-home-news-sidebar{position:fixed;top:0;right:0;bottom:0;width:650px;z-index:99990;transform:translateX(100%);transition:transform .55s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;background:#050505;border-left:1px solid rgba(255,255,255,.06);border-top:3px solid rgba(232,211,165,.65);overflow:hidden;pointer-events:none;box-shadow:none;}
#pf-home-news-sidebar.pf-nsb-open{transform:translateX(0);pointer-events:auto;box-shadow:-80px 0 160px rgba(0,0,0,.99);}
#pf-home-news-trigger{position:fixed;top:0;right:0;bottom:0;width:20px;z-index:99991;cursor:e-resize;display:none;}
#pf-home-news-trigger::after{content:'';position:absolute;right:0;top:20%;bottom:20%;width:1px;background:linear-gradient(to bottom,transparent,rgba(232,211,165,.4),transparent);opacity:0;transition:opacity .3s;}
#pf-home-news-trigger:hover::after{opacity:1;}
.pf-nsb-hdr{flex-shrink:0;background:#050505;padding:0;}
.pf-nsb-mh-rule{height:1px;background:rgba(255,255,255,.11);}
.pf-nsb-mh-rule--faint{background:rgba(255,255,255,.05);}
.pf-nsb-mh-body{padding:16px 26px 14px;display:flex;align-items:baseline;justify-content:space-between;gap:16px;}
.pf-nsb-mh-left{display:flex;align-items:baseline;gap:13px;}
.pf-nsb-mh-brand{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.32em;text-transform:uppercase;color:rgba(232,211,165,.82);font-weight:600;}
.pf-nsb-mh-pipe{color:rgba(255,255,255,.15);font-size:.85rem;font-weight:100;line-height:1;}
.pf-nsb-mh-title{font-family:var(--serif);font-size:1.52rem;font-weight:400;letter-spacing:-.022em;color:#fff;line-height:1;}
.pf-nsb-mh-date{font-family:var(--mono);font-size:.44rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.24);white-space:nowrap;}
.pf-nsb-mh-sub{padding:5px 26px 9px;font-family:var(--mono);font-size:.44rem;letter-spacing:.26em;text-transform:uppercase;color:rgba(255,255,255,.17);}
.pf-home-news-list{flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;background:#080808;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.07) transparent;}
.pf-home-news-list::-webkit-scrollbar{width:3px;}
.pf-home-news-list::-webkit-scrollbar-track{background:transparent;}
.pf-home-news-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
.pf-nsb-section{border-bottom:1px solid rgba(255,255,255,.05);}
.pf-nsb-sec-hdr{display:flex;align-items:center;gap:14px;padding:12px 20px 11px;border-left:3px solid var(--sec-color,rgba(255,255,255,.2));background:rgba(255,255,255,.018);}
.pf-nsb-sec-name{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.3em;text-transform:uppercase;color:rgba(255,255,255,.52);white-space:nowrap;}
.pf-nsb-sec-line{flex:1;height:1px;background:rgba(255,255,255,.07);}
.pf-nsb-sec-count{font-family:var(--mono);font-size:.48rem;letter-spacing:.06em;color:rgba(255,255,255,.2);white-space:nowrap;}
.pf-nsb-sec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.04);}
.pf-nsb-card{display:flex;flex-direction:column;text-decoration:none;cursor:pointer;background:#0a0a0a;transition:background .2s;}
.pf-nsb-card:hover{background:#0e0e0e;}
.pf-nsb-card-img-wrap{overflow:hidden;flex-shrink:0;background:#111;}
.pf-nsb-card-img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.7) brightness(.85);transition:transform 1.4s cubic-bezier(.16,1,.3,1),filter .5s;}
.pf-nsb-card:hover .pf-nsb-card-img{transform:scale(1.04);filter:saturate(.9) brightness(.95);}
.pf-nsb-card-body{display:flex;flex-direction:column;flex:1;}
.pf-nsb-card-flag{font-family:var(--mono);font-size:.41rem;letter-spacing:.2em;text-transform:uppercase;color:var(--sec-color,rgba(232,211,165,.8));margin-bottom:5px;}
.pf-nsb-byline{display:flex;align-items:center;gap:6px;margin-top:auto;padding-top:8px;}
.pf-nsb-src{font-family:var(--mono);font-size:.44rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.26);}
.pf-nsb-dot{color:rgba(255,255,255,.14);font-size:.48rem;}
.pf-nsb-ts{font-family:var(--mono);font-size:.44rem;letter-spacing:.06em;color:rgba(255,255,255,.2);}
.pf-nsb-summary{font-family:var(--sans);font-size:var(--fs-md);line-height:1.54;color:rgba(255,255,255,.4);margin-top:6px;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}
.pf-nsb-card--lead .pf-nsb-summary{-webkit-line-clamp:3;}
.pf-nsb-card--sm .pf-nsb-summary{-webkit-line-clamp:2;font-size:var(--fs-sm);}
.pf-nsb-tickers{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px;}
.pf-nsb-ticker{font-family:var(--mono);font-size:.38rem;letter-spacing:.09em;padding:2px 6px;border:1px solid rgba(255,255,255,.09);color:rgba(255,255,255,.28);border-radius:2px;}
.pf-nsb-loading{padding:40px 26px;font-family:var(--mono);font-size:.5rem;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.18);text-align:center;}
/* Flat grid: fills remaining height, 2 equal rows */
.pf-nsb-flat-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:rgba(255,255,255,.04);overflow-y:auto;align-content:start;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;}
/* Image placeholder when src fails or is missing */
.pf-nsb-img-err{background:linear-gradient(180deg,rgba(255,255,255,.04) 0%,rgba(255,255,255,.02) 100%);}
.pf-nsb-img-placeholder{background:linear-gradient(160deg,#111 0%,#0a0a0a 100%);}
/* Lead card: fixed pixel height so the grid dominates */
.pf-nsb-card--lead{flex:none;}
.pf-nsb-card--lead .pf-nsb-card-img-wrap{flex:none;height:275px;}
.pf-nsb-card--lead .pf-nsb-card-body{flex:none;padding:10px 20px 12px;}
.pf-nsb-card--lead .pf-nsb-summary,.pf-nsb-card--lead .pf-nsb-tickers{display:none;}
.pf-nsb-card--lead .pf-nsb-card-flag{font-size:.42rem;margin-bottom:5px;}
.pf-nsb-card--lead .pf-nsb-hl{font-family:var(--serif);font-size:1.2rem;font-weight:500;line-height:1.22;letter-spacing:-.024em;color:rgba(255,255,255,.94);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;}
.pf-nsb-card--lead:hover .pf-nsb-hl{color:rgba(232,211,165,.9);}
/* Small cards: fill grid cell, image flexes to fill */
.pf-nsb-card--sm{min-height:200px;}
.pf-nsb-card--sm .pf-nsb-card-img-wrap{height:unset;flex:1;min-height:36px;}
.pf-nsb-card--sm .pf-nsb-card-body{flex:none;padding:8px 12px 10px;}
.pf-nsb-card--sm .pf-nsb-card-flag{font-size:.36rem;margin-bottom:4px;}
.pf-nsb-card--sm .pf-nsb-hl{font-family:var(--sans);font-size:.75rem;font-weight:600;line-height:1.3;letter-spacing:-.01em;color:rgba(255,255,255,.88);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;}
.pf-nsb-card--sm:hover .pf-nsb-hl{color:rgba(232,211,165,.9);}

/* ANÁLISIS — ticker news sidebar (right edge) */
#pf-ts-news-sidebar{position:fixed;top:0;right:0;width:650px;height:100vh;z-index:99990;transform:translateX(100%);transition:transform .55s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;background:#050505;border-left:1px solid rgba(255,255,255,.06);border-top:3px solid rgba(232,211,165,.65);overflow:hidden;pointer-events:none;box-shadow:none;}
#pf-ts-news-sidebar.pf-ts-nsb-open{transform:translateX(0);pointer-events:auto;box-shadow:-80px 0 160px rgba(0,0,0,.99);}
#pf-ts-news-trigger{position:fixed;top:0;right:0;width:28px;height:100vh;z-index:99991;cursor:pointer;display:none;}
#pf-ts-news-trigger::before{content:'NOTICIAS';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);writing-mode:vertical-rl;font-family:var(--mono);font-size:.38rem;letter-spacing:.22em;color:rgba(232,211,165,.4);white-space:nowrap;transition:color .3s;pointer-events:none;}
#pf-ts-news-trigger::after{content:'';position:absolute;right:0;top:10%;bottom:10%;width:1px;background:linear-gradient(to bottom,transparent,rgba(232,211,165,.22) 30%,rgba(232,211,165,.22) 70%,transparent);}
#pf-ts-news-trigger:hover::before{color:rgba(232,211,165,.9);}
#pf-ts-news-list{flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;background:#080808;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.07) transparent;}
#pf-ts-news-list::-webkit-scrollbar{width:3px;}
#pf-ts-news-list::-webkit-scrollbar-track{background:transparent;}
#pf-ts-news-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
/* ANÁLISIS ticker sidebar — stacked scrollable cards (image shorter so more fit) */
#pf-ts-news-sidebar .pf-nsb-card--lead{flex:none;display:flex;flex-direction:column;border-bottom:1px solid rgba(255,255,255,.05);}
#pf-ts-news-sidebar .pf-nsb-card--lead .pf-nsb-card-img-wrap{height:190px;flex-shrink:0;}
#pf-ts-news-sidebar .pf-nsb-card--lead .pf-nsb-card-body{flex:none;padding:10px 20px 13px;}
#pf-ts-news-sidebar .pf-nsb-card--lead .pf-nsb-summary,#pf-ts-news-sidebar .pf-nsb-card--lead .pf-nsb-tickers{display:none;}
/* MACRO left sidebar — card fills full sidebar, summary expands to limits */
#pf-macro-left-news-sidebar .pf-home-news-list{display:flex;flex-direction:column;}
#pf-macro-left-news-sidebar .pf-nsb-card--lead{flex:1;min-height:0;display:flex;flex-direction:column;}
#pf-macro-left-news-sidebar .pf-nsb-card--lead .pf-nsb-card-img-wrap{height:180px;flex-shrink:0;}
#pf-macro-left-news-sidebar .pf-nsb-card--lead .pf-nsb-card-body{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 16px 14px;}
#pf-macro-left-news-sidebar .pf-nsb-card--lead .pf-nsb-summary{display:block;flex:1;overflow:hidden;-webkit-line-clamp:unset;}
#pf-macro-left-news-sidebar .pf-nsb-card--lead .pf-nsb-tickers{display:flex;flex-shrink:0;}
#pf-macro-left-news-sidebar .pf-nsb-card--lead .pf-nsb-byline{flex-shrink:0;}
/* MACRO — left-edge news sidebar (clone of Noticias) */
#pf-macro-left-news-sidebar{position:fixed;top:0;left:0;width:340px;height:100vh;z-index:99990;transform:translateX(-100%);transition:transform .55s cubic-bezier(.16,1,.3,1);display:flex;flex-direction:column;background:#050505;border-right:1px solid rgba(255,255,255,.06);border-top:3px solid rgba(232,211,165,.65);overflow:hidden;pointer-events:none;box-shadow:none;}
#pf-macro-left-news-sidebar.pf-macro-nsb-open{transform:translateX(0);pointer-events:auto;box-shadow:80px 0 160px rgba(0,0,0,.99);}
#pf-macro-left-news-trigger{position:fixed;top:0;left:0;width:28px;height:100vh;z-index:99991;cursor:pointer;display:none;}
#pf-macro-left-news-trigger::after{content:'';position:absolute;left:0;top:10%;bottom:10%;width:1px;background:linear-gradient(to bottom,transparent,rgba(232,211,165,.22) 30%,rgba(232,211,165,.22) 70%,transparent);}
#pf-macro-left-news-list{flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;background:#080808;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.07) transparent;}
#pf-macro-left-news-list::-webkit-scrollbar{width:3px;}
#pf-macro-left-news-list::-webkit-scrollbar-track{background:transparent;}
#pf-macro-left-news-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}

/* REGIME STRIP */

/* ── VIX PANEL ───────────────────────────────────────────────── */
/* Tachometer gauge */
.pf-vix-tacho{padding:6px 8px 4px;}
/* Hero row (legacy, no longer rendered) */
.pf-vix-hero{display:flex;align-items:flex-start;gap:14px;padding:12px 14px 10px;}
.pf-vix-hero-l{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;}
.pf-vix-hero-r{display:flex;flex-direction:column;gap:7px;flex:1;min-width:0;padding-top:4px;}
.pf-vix-hero-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.pf-vix-num{font-family:var(--mono);font-size:40px;font-weight:700;line-height:1;letter-spacing:-.03em;}
.pf-vix-unit{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.25em;text-transform:uppercase;color:var(--muted2);margin-top:4px;}
.pf-vix-badge{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;padding:3px 9px;border:1px solid;flex-shrink:0;border-radius:2px;}
.pf-vix-chg{font-family:var(--mono);font-size:var(--fs-sm);font-weight:600;flex-shrink:0;}
/* Gradient thermometer — sits inside hero-r */
.pf-vix-therm{width:100%;}
.pf-vix-therm-bg{height:5px;background:rgba(255,255,255,.07);border-radius:3px;position:relative;}
.pf-vix-therm-fill{position:absolute;top:0;left:0;height:100%;border-radius:3px;transition:width .6s var(--ease);}
.pf-vix-therm-knob{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;background:#fff;border:2px solid;transform:translate(-50%,-50%);transition:left .6s var(--ease);}
.pf-vix-therm-row{display:flex;justify-content:space-between;margin-top:6px;font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.08em;color:var(--muted2);}
/* Daily signal */
.pf-vix-signal{margin:0 14px 10px;padding:8px 10px 8px 12px;border-left:2px solid;background:rgba(255,255,255,.03);}
.pf-vix-signal-hdr{display:block;font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:5px;}
.pf-vix-signal-body{display:block;font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted);line-height:1.55;letter-spacing:.02em;}
/* Term structure */
.pf-vix-divider{height:1px;background:var(--line);}
.pf-vix-term{padding:9px 14px 4px;}
.pf-vix-term-hdr{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.18em;text-transform:uppercase;color:var(--muted2);margin-bottom:7px;}
.pf-vix-spark{display:block;}
.pf-vix-term-lbl{display:flex;margin-top:6px;}
.pf-vix-term-lbl>span{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;}
.pf-vix-tv{font-family:var(--mono);font-size:var(--fs-xs);color:var(--text);letter-spacing:-.01em;}
.pf-vix-tl{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.12em;color:var(--muted2);text-transform:uppercase;}
.pf-vix-slope{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.06em;padding:5px 0 3px;}
/* Put/Call */
.pf-vix-pc{display:flex;align-items:center;gap:10px;padding:9px 14px;}
.pf-pc-bar-wrap{flex:1;position:relative;height:4px;}
.pf-pc-bar{position:absolute;inset:0;background:linear-gradient(to right,var(--up) 0%,#f59e0b 35%,var(--dn) 100%);opacity:.4;border-radius:2px;}
.pf-pc-needle{position:absolute;top:-3px;bottom:-3px;width:2px;background:rgba(255,255,255,.85);transform:translateX(-50%);}
.pf-vix-pc-val{font-family:var(--mono);font-size:var(--fs-md);font-weight:600;letter-spacing:-.01em;flex-shrink:0;}
.pf-vix-pc-tag{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted2);flex-shrink:0;}

/* ── CALENDAR PANEL ──────────────────────────────────────────── */
#pf-calendar-tbl{width:100%;}
#pf-calendar-tbl td,#pf-calendar-tbl th{padding:5px 20px;}
#pf-calendar-tbl .pf-cal-event{width:100%;}
.pf-cal-event{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);text-align:left!important;}
#pf-calendar-tbl th:nth-child(3){text-align:center!important;}
.pf-cal-date{white-space:nowrap;font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted2);}
.pf-cal-tmr{color:var(--accent)!important;font-weight:600;}
.pf-cal-dash{color:var(--muted2);}
.pf-cal-actual{font-family:var(--mono);font-size:var(--fs-xs);white-space:nowrap;font-weight:600;}

/* ── SHARED PANEL HELPERS ────────────────────────────────────── */
.pf-panel-desc{display:block;font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);line-height:1.55;padding:6px 12px 8px;border-bottom:1px solid var(--line);letter-spacing:.02em;}
.pf-th-hint{display:block;font-family:var(--sans);font-size:var(--fs-nano);font-weight:400;color:var(--muted2);letter-spacing:.04em;text-transform:none;margin-top:2px;white-space:nowrap;}
.pf-vix-term-hint{font-size:var(--fs-nano);color:var(--muted2);font-weight:400;letter-spacing:.04em;text-transform:none;}
.pf-vix-pc-left{display:flex;flex-direction:column;gap:2px;flex-shrink:0;}
.pf-vix-pc-title{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted);}
.pf-vix-pc-hint{font-family:var(--sans);font-size:var(--fs-nano);color:var(--muted2);letter-spacing:.02em;max-width:90px;}
.pf-vix-pc-right{display:flex;flex-direction:column;align-items:flex-end;gap:1px;flex-shrink:0;}

/* ── VOLATILITY & IPO PANELS — side-by-side row above Rendimiento ── */
.pf-macro-side-row{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);flex:0 0 auto;}
.pf-macro-side-row>.pf-panel{overflow:hidden;min-width:0;}
/* VIX content is tall — scroll within a fixed cap */
#pf-vix-root{max-height:182px;overflow-y:auto;}
/* ── IPO & CAPITAL SUPPLY CALENDAR ──────────────────────────── */
#pf-ipo-panel{display:flex;flex-direction:column;overflow:hidden;}
#pf-ipo-root{flex:1;min-height:0;overflow:hidden;}
#pf-ipo-root .pf-ipo-tbl{height:100%;width:100%;table-layout:fixed;}
#pf-ipo-panel .pf-ipo-tbl tbody{height:100%;}
#pf-ipo-panel .pf-ipo-tbl tbody tr{height:1px;}
#pf-ipo-panel .pf-ipo-tbl th,#pf-ipo-panel .pf-ipo-tbl td{padding:7px 10px;vertical-align:middle;}
/* Date, Price, Size fixed narrow widths; Company takes the remainder.
   table-layout:fixed (added above) is what keeps Fecha/Precio/Tamaño from
   getting pushed out past #pf-ipo-root's overflow:hidden by a long company
   name — under the default auto layout, columns size to fit content
   regardless of wrapping, so a long name would silently stretch the whole
   table wider than the panel. Company itself used to ellipsis-truncate to
   one line; now wraps to as many lines as it needs instead (per user
   request — full name matters more here than row height), since the list
   is capped at 3 entries there's always room for a 2-line name without the
   panel overflowing. Same fixed-width pattern already used for
   #pf-wl-tbl/.pfnp-pos-tbl/.pf-lr-table elsewhere. */
.pf-ipo-tbl th:nth-child(n+2),.pf-ipo-tbl td:nth-child(n+2){white-space:nowrap;width:58px;}
.pf-ipo-tbl .tn{white-space:normal;overflow-wrap:break-word;line-height:1.3;}
.pf-ipo-num{font-family:var(--mono);font-size:var(--fs-sm);}
.pf-ipo-near{font-weight:600;}
.pf-ipo-empty{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);padding:10px 14px;text-align:center;}
.pf-flows-empty{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);padding:10px 14px;text-align:center;}

/* ── REGIME STRIP ────────────────────────────────────────────── */
.pf-regime-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);grid-column:span 3;}
.pf-reg-cell{background:var(--surface);padding:8px 10px;display:flex;flex-direction:column;gap:3px;}
.pf-reg-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);}
.pf-reg-val{font-family:var(--mono);font-size:var(--fs-md);color:var(--text);font-weight:500;}
.pf-reg-state{font-family:var(--sans);font-size:var(--fs-sm);}

/* KPI STRIP */
.pf-kpi-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);grid-column:span 3;}
.pf-kpi{background:var(--surface);padding:6px 10px;cursor:pointer;transition:background .15s;}
.pf-kpi:hover{background:var(--surface2);}
.pf-kpi.on{background:var(--surface2);border-top:1px solid rgba(255,255,255,.15);}
.pf-kpi-name{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);margin-bottom:4px;}
.pf-kpi-price{font-family:var(--mono);font-size:var(--fs-md);color:var(--text);font-weight:500;margin-bottom:2px;}
.pf-kpi-chg{font-family:var(--sans);font-size:var(--fs-sm);}
.pf-kpi-pts{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);margin-bottom:3px;}
.pf-kpi-spark{height:22px;}

/* CHART INFO */
.pf-chart-info{display:flex;align-items:baseline;gap:8px;padding:6px 10px 2px;flex-wrap:wrap;}
.pf-ci-name{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-ci-val{font-family:var(--mono);font-size:var(--fs-lg);font-weight:500;color:var(--text);}
.pf-ci-chg{font-family:var(--sans);font-size:var(--fs-sm);}
.pf-ci-pts{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
.pf-ci-sep{font-family:var(--mono);font-size:var(--fs-xs);color:rgba(255,255,255,.12);margin:0 2px;}
.pf-ci-stat{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);opacity:.6;}
.pf-ci-stat-val{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);letter-spacing:.04em;}

/* RICH CHART TOOLTIP */
#pf-chart-tooltip{
  background:rgba(8,8,8,0.97);
  border:1px solid rgba(255,255,255,.06);
  border-radius:3px;
  padding:8px 12px;
  min-width:130px;
  box-shadow:0 8px 32px rgba(0,0,0,.6),0 0 0 0.5px rgba(232,211,165,.12);
  font-family:var(--mono);
}
#pf-chart-tooltip .ptt-label{font-size:var(--fs-nano);letter-spacing:.18em;text-transform:uppercase;color:#888;margin-bottom:5px;}
#pf-chart-tooltip .ptt-price{font-size:var(--fs-lg);font-weight:600;color:var(--text);letter-spacing:-.01em;line-height:1;}
#pf-chart-tooltip .ptt-row{display:flex;align-items:center;gap:6px;margin-top:4px;}
#pf-chart-tooltip .ptt-chg{font-size:var(--fs-xs);font-weight:500;}
#pf-chart-tooltip .ptt-pts{font-size:var(--fs-xs);color:var(--muted2);}
#pf-chart-tooltip .ptt-divider{width:100%;height:1px;background:rgba(255,255,255,.06);margin:6px 0;}
#pf-chart-tooltip .ptt-meta-row{display:flex;justify-content:space-between;align-items:center;}
#pf-chart-tooltip .ptt-meta-lbl{font-size:var(--fs-nano);letter-spacing:.14em;text-transform:uppercase;color:#888;}
#pf-chart-tooltip .ptt-meta-val{font-size:var(--fs-xs);color:#c8c8c8;}
#pf-chart-tooltip .ptt-bar{width:100%;height:2px;background:rgba(255,255,255,.07);border-radius:1px;margin-top:6px;overflow:hidden;}
#pf-chart-tooltip .ptt-bar-fill{height:100%;border-radius:1px;transition:width .15s;}

/* ROLLING RETURNS */
.pf-returns{display:none;}
.pf-ret-badge{font-family:var(--sans);font-size:var(--fs-xs);padding:2px 6px;border:1px solid var(--line);display:flex;gap:4px;align-items:center;}
.pf-ret-label{color:var(--muted2);}

/* SECTOR HEATMAP */
.pf-sector-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);padding:1px;flex:1;}
.pf-sec-tabs-row{display:flex;align-items:center;border-bottom:1px solid var(--line);background:rgba(0,0,0,.2);overflow:hidden;flex-shrink:0;padding:2px 4px;gap:1px;flex-wrap:nowrap;}
.pf-sec-tabs-row .pf-htab{padding:2px 5px;font-size:var(--fs-xs);letter-spacing:.04em;flex-shrink:0;}
.pf-sec-yields-row{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);}
.pf-sec-yields-row>.pf-panel{display:flex;flex-direction:column;}

/* ── BARÓMETRO ────────────────────────────────────────────── */
.pf-baro-grid{display:flex;flex-direction:column;gap:0;}
.pf-baro-card{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:3px 10px;border-bottom:1px solid var(--line);background:var(--surface);}
.pf-baro-card:last-child{border-bottom:none;}
.pf-baro-card:hover .pf-baro-label{color:var(--text);}
.pf-baro-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);margin-bottom:3px;}
.pf-baro-context{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
.pf-baro-pct-wrap{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:72px;}
.pf-baro-pct-bar-bg{width:72px;height:3px;background:rgba(255,255,255,.07);}
.pf-baro-pct-bar-fill{height:100%;transition:width .5s var(--ease);}
.pf-baro-pct-label{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;}
.pf-markets-row{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);flex:0 0 auto;}
#pf-commod-row{flex:1.5;}
#pf-sectores-panel{flex:1.5;min-height:0;display:flex;flex-direction:column;}
.pf-markets-row>.pf-panel{display:flex;flex-direction:column;overflow:hidden;}
.pf-markets-row .pf-tbl{flex:1;}
.pf-markets-row .pf-tbl td{padding:3px 10px;}
.pf-markets-row .pf-tbl th{padding:3px 10px;}
/* Commodities panel: "WTI Crude Oil" is the longest name and wraps onto a
   second line at this table's normal 10px cell padding, doubling that row's
   height relative to its neighbors. Tighter padding (scoped to this table
   only, via #id so it beats the .pf-markets-row rule above regardless of
   CSS source order) reclaims enough width for every name to fit on one
   line — confirmed via direct measurement (Playwright + local Edge): at
   9px/IBM Plex Mono, "WTI Crude Oil" needs ~125.7px including padding,
   4-5px more than this panel had free at 10px padding. */
#pf-commod-tbl .tn{white-space:nowrap;}
#pf-commod-tbl td{padding:3px 5px;}
#pf-commod-tbl th{padding:3px 5px;}
.pf-sec-cell{padding:2px 6px;cursor:pointer;transition:opacity .15s;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.pf-sec-cell:hover{opacity:.8;}
.pf-sec-name{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.04em;text-transform:uppercase;margin-bottom:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;}
.pf-sec-val{font-family:var(--mono);font-size:var(--fs-sm);font-weight:500;text-align:center;}
.pf-sec-etf{display:block;font-family:var(--mono);font-size:var(--fs-nano);color:var(--muted2);opacity:.75;margin-top:1px;letter-spacing:.02em;text-align:center;}

/* GLOBAL YIELDS TABLE */
.pf-yield-rows{padding:0;flex:1;display:flex;flex-direction:column;overflow:hidden;}
.pf-yield-tbl{width:100%;border-collapse:collapse;flex:1;}
.pf-yield-tbl thead tr{border-bottom:1px solid rgba(255,255,255,.06);}
.pf-yield-tbl thead th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);padding:3px 6px;text-align:center;font-weight:400;}
.pf-yield-tbl thead th:first-child{width:26px;}
.pf-yield-tbl tbody{display:table-row-group;}
.pf-yield-tbl tbody tr{border-bottom:1px solid rgba(255,255,255,.025);cursor:pointer;transition:background .15s;}
.pf-yield-tbl tbody tr:last-child{border-bottom:none;}
.pf-yield-tbl tbody tr:hover{background:rgba(255,255,255,.03);}
.pf-yield-flag-cell{padding:0 6px;width:26px;}
.pf-yield-flag-svg{display:block;width:18px;height:12px;border-radius:2px;overflow:hidden;flex-shrink:0;}
/* .pf-yield-flag-cell is shared with Tasas Globales/Calendario Económico/
   IPO's small 18x12 flag icons. Watchlist/Posiciones instead size column 1
   via the #pf-wl-tbl/.pfnp-pos-tbl :nth-child(1) rules below (those tables
   use table-layout:fixed with a hardcoded per-column px budget, so an
   :nth-child(1) rule always wins over this class rule on specificity —
   sizing the logo chip here had no effect and was previously masking a
   real overflow: the chip grew across several iterations while the actual
   cell stayed pinned at 22px, so the logo silently clipped against the
   cell's own overflow:hidden). */
/* Real company logos (Watchlist/Posiciones) — same square chip for every
   row regardless of the source image's own aspect/cropping; no background
   card behind it (removed per feedback — image sits directly on the row),
   just object-fit:contain so nothing gets stretched or cropped.
     Confirmed directly (4x-scale screenshot inspection) that images were
   NOT being cropped at the previous 24px size — math also rules it out,
   since object-fit:contain can only letterbox or shrink, never crop, and
   these source images are already square (128x128) same as the chip. The
   "cut off" look was a legibility problem: several of these logos are
   fairly detailed (Dynatrace's faceted cube, MercadoLibre's badge with
   "25 años" text) and 24px genuinely isn't enough resolution to read them
   clearly — it just LOOKS cropped/broken at that size. Sized up further
   to fix that directly rather than re-diagnosing a crop that isn't there. */
.pf-wl-logo-wrap{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;overflow:hidden;flex-shrink:0;}
.pf-wl-logo{display:block;width:100%;height:100%;object-fit:contain;}
/* Fallback (TD has no logo for this symbol, or the hand-drawn PF_LOGOS set)
   used to be the 18x12 flag-shaped box — overridden here to match the real
   logos' square footprint instead. The SVG's own internal viewBox scales
   to fit automatically (default preserveAspectRatio), so none of the
   hand-drawn artwork itself needs to change. */
.pf-wl-logo-wrap .pf-yield-flag-svg{width:100%;height:100%;}
.pf-yield-rate{font-family:var(--mono);font-size:var(--fs-sm);font-weight:500;color:var(--muted);text-align:center;vertical-align:middle;padding:3px 6px;letter-spacing:.02em;}

/* CREDIT CONDITIONS */
.pf-credit-row{display:flex;align-items:center;gap:6px;padding:5px 10px;border-bottom:1px solid rgba(255,255,255,.025);}
.pf-credit-row:last-child{border:none;}
.pf-cr-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);width:70px;}
.pf-cr-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted);width:50px;}
.pf-cr-spark{width:60px;height:16px;flex-shrink:0;}
.pf-cr-chg{font-family:var(--mono);font-size:var(--fs-xs);margin-left:auto;}
.pf-cr-state{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}

/* REAL YIELDS */
.pf-ry-row{display:flex;align-items:center;gap:8px;padding:5px 10px;border-bottom:1px solid rgba(255,255,255,.025);}
.pf-ry-row:last-child{border:none;}
.pf-ry-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);flex:1;}
.pf-ry-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted);}
.pf-ry-spark{width:80px;height:16px;}

/* EARNINGS */
.pf-earn-row{display:flex;align-items:center;gap:6px;padding:4px 10px;border-bottom:1px solid rgba(255,255,255,.025);}
.pf-earn-row:last-child{border:none;}
.pf-earn-date{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);width:26px;flex-shrink:0;}
.pf-earn-tk{font-family:var(--sans);font-size:var(--fs-sm);font-weight:500;color:var(--text);width:42px;}
.pf-earn-co{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pf-earn-est{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted);}
.pf-earn-hist{display:flex;gap:2px;flex-shrink:0;}
.pf-beat-sq{width:8px;height:8px;border:1px solid var(--line);}
.pf-earn-impl{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
.pf-earn-timing{font-family:var(--sans);font-size:var(--fs-xs);border:1px solid var(--line);padding:1px 4px;color:var(--muted2);}
.pf-earn-tod{font-family:var(--sans);font-size:var(--fs-xs);border:1px solid var(--line);padding:1px 5px;color:var(--muted);}

/* WATCHLIST */
/* ── Vault content floating popup (outside the panel) ── */
#pf-wl-vault-popup {
  position: fixed;
  display: flex;
  flex-direction: column;
  gap: 5px;
  align-items: stretch;
  pointer-events: none;
  opacity: 0;
  transition: opacity .16s ease;
  z-index: 9999;
  white-space: nowrap;
  /* generous invisible padding so mouse can travel diagonally without popup hiding */
  padding: 12px 16px 16px 12px;
}
#pf-wl-vault-popup.visible {
  opacity: 1;
  pointer-events: auto;
}
.pf-wl-vault-btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 10px 22px 10px 15px;
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .12em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--muted);
  background: rgba(5,5,5,.97);
  border: 1px solid rgba(255,255,255,.14);
  backdrop-filter: blur(16px);
  transition: border-color .15s, color .15s, background .15s;
  cursor: pointer;
  flex-shrink: 0;
  box-shadow: 0 4px 20px rgba(0,0,0,.65);
  min-width: 148px;
}
.pf-wl-vault-btn:hover { color: var(--text); border-color: rgba(255,255,255,.30); background: rgba(16,16,16,.99); }
.pf-wl-vault-modelo:hover { border-color: rgba(102,187,106,.55); color: #66bb6a; }
.pf-wl-vault-stream:hover { border-color: rgba(239,83,80,.55);   color: #ef5350; }
.pf-wl-vault-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
  opacity: .9;
}
.pf-wl-add{position:relative;display:flex;gap:4px;padding:6px 10px;border-bottom:1px solid var(--line);}
.pf-wl-panel-cap{max-height:260px;overflow:hidden;display:flex;flex-direction:column;}
.pf-wl-input{flex:1;background:none;border:none;border-bottom:1px solid var(--line);color:var(--muted);font-family:var(--sans);font-size:var(--fs-sm);outline:none;padding:2px 0;}
.pf-wl-input::placeholder{color:var(--muted2);}
.pf-wl-input:disabled{cursor:not-allowed;opacity:.5;}
.pf-wl-btn:disabled{cursor:not-allowed;opacity:.4;}
/* Watchlist table: fixed layout, deliberately tight (small font, tight
   padding) so all 14 columns fit within this panel's REAL available width
   (measured ~571px in its actual grid slot at a standard 1440px laptop
   viewport — confirmed via direct ancestor-chain measurement) with no
   horizontal scroll, per explicit user preference. Column widths
   themselves live in PF_WL_COLUMNS (platform.js) as inline styles, which
   always win over anything here — this block only sets the shared
   font-size/padding/ellipsis behavior every cell inherits unless a
   specific cell overrides it inline (a few do: the 52-week bar, Empresa,
   the alert/delete icons — see pf_renderWl).
     This replaces a stale nth-child(1..12) width block that dated from
   before PF_WL_COLUMNS existed — those rules never did anything (inline
   width always won) and silently went out of sync with the column count
   as columns were added/removed/reordered, which is exactly the kind of
   trap that caused a real bug once already (a too-narrow "Ticker" header
   silently ellipsis-truncating to "TICK…"). Deleted rather than updated,
   since PF_WL_COLUMNS is the single source of truth for widths now. */
/* border-collapse:collapse — the base .pf-tbl class doesn't set this, so
   the browser default (border-collapse:separate, with its own default
   border-spacing) was adding a few extra px of pure inter-cell spacing on
   top of every column's already fully-accounted-for content width — the
   last few px standing between this table fitting its panel with zero
   scroll and not quite making it. */
#pf-wl-tbl{table-layout:fixed;width:100%;border-collapse:collapse;}
/* th/td font-size split to match every other Macro-tab table (.pf-tbl:
   th=var(--fs-xs)=7.5px, td=var(--fs-sm)=9px) — this table used to hardcode
   both to 7.5px, one size smaller than the rest of the tab for data cells
   specifically. See PF_WL_COLUMNS in platform.js: column widths were tuned
   against the old uniform 7.5px, so this may need re-measuring/widening
   per column now that td text renders larger. */
#pf-wl-tbl th,#pf-wl-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:3px 2px;}
#pf-wl-tbl th{font-size:var(--fs-xs);}
#pf-wl-tbl td{font-size:var(--fs-sm);}

/* ── Posiciones table: same layout engine as Watchlist ──────── */
/* Shared table-layout, padding, text-overflow with #pf-wl-tbl  */
.pfnp-pos-tbl{table-layout:fixed;width:100%;}
.pfnp-pos-tbl th,.pfnp-pos-tbl td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:3px 4px;}
/* Col 1 widened to fit the 32px logo chip — see matching #pf-wl-tbl comment
   above; 18px reclaimed from columns 3/4/6/7 which had slack. */
.pfnp-pos-tbl th:nth-child(1),.pfnp-pos-tbl td:nth-child(1){width:40px;padding:3px 2px;}
.pfnp-pos-tbl th:nth-child(2),.pfnp-pos-tbl td:nth-child(2){width:72px;}
.pfnp-pos-tbl th:nth-child(3),.pfnp-pos-tbl td:nth-child(3){width:48px;}
.pfnp-pos-tbl th:nth-child(4),.pfnp-pos-tbl td:nth-child(4){width:46px;}
.pfnp-pos-tbl th:nth-child(5),.pfnp-pos-tbl td:nth-child(5){width:44px;}
.pfnp-pos-tbl th:nth-child(6),.pfnp-pos-tbl td:nth-child(6){width:40px;}
.pfnp-pos-tbl th:nth-child(7),.pfnp-pos-tbl td:nth-child(7){width:64px;}
/* "Retorno Cumulativo" wraps to 2 lines instead of truncating (2026-07-19,
   explicit request for this exact name) — overrides the table's normal
   nowrap-header rule for this one header only. */
.pfnp-pos-tbl-ret-hdr{display:block;white-space:normal;line-height:1.25;overflow:visible;text-overflow:clip;}
.pfnp-pos-tbl th:nth-child(8),.pfnp-pos-tbl td:nth-child(8){width:44px;}
.pfnp-pos-tbl th:nth-child(9),.pfnp-pos-tbl td:nth-child(9){width:44px;overflow:visible;}
.pfnp-pos-tbl th:nth-child(10),.pfnp-pos-tbl td:nth-child(10){width:26px;padding:3px 2px;}
.pf-wl-btn{background:none;border:1px solid var(--line);color:var(--muted2);font-family:var(--sans);font-size:var(--fs-sm);padding:2px 8px;cursor:pointer;}
/* 34px (was 40px) — confirmed via direct measurement that the old 40px bar
   plus its cell's normal 20px horizontal padding (10px each side) needed
   60px total, but the Watchlist/Posiciones "52S"/"52 W" columns are only
   44px, so the bar visibly overflowed into the next column. Shared by both
   tables (pf_renderWl/pf_renderPerformance) — their cell padding is also
   tightened inline where this renders, see those call sites. */
.pf-52-bar{width:34px;height:7px;background:rgba(255,255,255,.06);position:relative;display:inline-block;vertical-align:middle;}
.pf-52-fill{position:absolute;left:0;top:0;height:100%;display:block;transition:width .5s var(--ease);}
.pf-score{font-family:var(--sans);font-size:var(--fs-sm);}
/* FLAG */
.pf-flag{display:inline-flex;align-items:center;width:20px;height:14px;border-radius:2px;overflow:hidden;flex-shrink:0;border:1px solid rgba(255,255,255,.08);}
.pf-flag svg{width:20px;height:14px;display:block;}
/* STYLE BOX 3x3 */
.pf-panel:has(#pf-flows-root),
.pf-panel:has(#pf-style-grid){display:flex;flex-direction:column;overflow:hidden;}
#pf-flows-root{flex:1;min-height:0;overflow:hidden;}
.pf-style-grid{display:grid;grid-template-columns:36px 1fr 1fr 1fr;grid-template-rows:18px repeat(3,1fr);gap:1px;background:var(--line);padding:1px;flex:1;min-height:0;}
.pf-sg-corner{background:var(--surface);}
.pf-sg-hdr{background:rgba(0,0,0,.3);font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);display:flex;align-items:center;justify-content:center;}
.pf-sg-row-lbl{background:rgba(0,0,0,.3);font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);display:flex;align-items:center;justify-content:center;writing-mode:unset;transform:none;}
.pf-sg-cell{background:var(--surface);padding:2px 6px;cursor:pointer;transition:opacity .15s;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.pf-sg-cell:hover{opacity:.8;}
.pf-sg-etf{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.04em;text-transform:uppercase;margin-bottom:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted2);}
.pf-sg-val{font-family:var(--mono);font-size:var(--fs-sm);font-weight:500;letter-spacing:.02em;}

/* NEWS */
.pf-news{display:flex;gap:1px;overflow-x:auto;background:var(--line);padding:1px;}
.pf-news::-webkit-scrollbar{height:2px;}
.pf-news::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);}
.pf-news-card{width:280px;min-width:280px;background:var(--surface);border:none;padding:10px 12px;flex-shrink:0;}
.pf-news-source{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);margin-bottom:4px;}
.pf-news-hl{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted);line-height:1.5;margin-bottom:6px;}
.pf-news-foot{display:flex;align-items:center;gap:6px;}
.pf-news-ts{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);text-transform:uppercase;letter-spacing:.1em;}
.pf-news-tag{font-family:var(--sans);font-size:var(--fs-xs);border:1px solid var(--line);padding:1px 5px;color:var(--muted2);}

/* ALLOCATOR SCORECARD */
.pf-alloc-tbl{width:100%;border-collapse:collapse;}
.pf-alloc-tbl th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);padding:4px 10px;border-bottom:1px solid rgba(255,255,255,.04);font-weight:400;}
.pf-alloc-tbl td{font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted);padding:5px 10px;border-bottom:1px solid rgba(255,255,255,.025);}
.pf-dots{display:flex;gap:3px;align-items:center;}
.pf-dot{width:4px;height:4px;border-radius:50%;}
.pf-dot.filled{background:rgba(255,255,255,.8);}
.pf-dot.empty{border:1px solid var(--line);}
.pf-grade{font-family:var(--serif);font-style:italic;font-size:28px;opacity:.4;color:var(--text);}

/* ══════════════════════════════════════════════════════════════
   DATA SELECTION — DRAWER
   ══════════════════════════════════════════════════════════════ */

/* Outer wrapper — always visible as a single toolbar row */
.pf-ds-drawer {
  border-bottom: 1px solid rgba(255,255,255,.05);
  background: var(--surface);
  flex-shrink: 0;
  transition: background .2s;
}
.pf-ds-drawer.open {
  background: rgba(255,255,255,.018);
}
.pf-ds-drawer.preset-mode {
  border-left: 2px solid rgba(232,211,165,.4);
}

/* ── Header bar (always shown) ── */
.pf-ds-header {
  height: 38px;
  display: flex;
  align-items: center;
  padding: 0 14px;
  gap: 12px;
  cursor: pointer;
  user-select: none;
}
.pf-ds-header:hover .pf-ds-hdr-label { color: var(--muted); }

.pf-ds-hdr-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-md);
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: none;
  color: var(--muted2);
  flex-shrink: 0;
  transition: color .15s;
}
.pf-ds-hdr-label svg { opacity: .55; }

/* Summary pills in the header (show selected count / category) */
.pf-ds-hdr-summary {
  display: flex;
  align-items: center;
  gap: 5px;
  flex: 1;
  min-width: 0;
  overflow: hidden;
}
.pf-ds-hdr-pill {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 500;
  letter-spacing: .01em;
  color: var(--accent);
  background: rgba(232,211,165,.07);
  border: 1px solid rgba(232,211,165,.2);
  padding: 1px 7px;
  white-space: nowrap;
  flex-shrink: 0;
}
.pf-ds-hdr-none {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 400;
  color: var(--muted2);
  opacity: .5;
  letter-spacing: .01em;
}

/* Chevron toggle */
.pf-ds-chevron {
  margin-left: auto;
  flex-shrink: 0;
  color: var(--muted2);
  opacity: .4;
  transition: transform .2s var(--ease), opacity .15s;
}
.pf-ds-drawer.open .pf-ds-chevron {
  transform: rotate(180deg);
  opacity: .65;
}

/* ── Expandable body ── */
.pf-ds-body {
  display: none;
  flex-direction: column;
  border-top: 1px solid rgba(255,255,255,.05);
}
.pf-ds-drawer.open .pf-ds-body { display: flex; }

/* Horizontal category tabs row */
.pf-ds-cats-row {
  display: flex;
  align-items: stretch;
  flex-shrink: 0;
  border-bottom: 1px solid rgba(255,255,255,.06);
  overflow-x: auto;
  scrollbar-width: none;
}
.pf-ds-cats-row::-webkit-scrollbar { display: none; }

.pf-ds-cat-btn {
  font-family: 'Inter', sans-serif;
  font-size: .7rem;
  font-weight: 500;
  letter-spacing: .01em;
  text-transform: none;
  color: var(--muted2);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  padding: 0 18px;
  height: 38px;
  cursor: pointer;
  text-align: center;
  transition: color .2s, background .2s;
  white-space: nowrap;
  flex-shrink: 0;
  position: relative;
}
.pf-ds-cat-btn:hover { color: var(--muted); background: rgba(255,255,255,.025); }
.pf-ds-cat-btn.active {
  color: var(--accent);
  border-bottom-color: rgba(232,211,165,.7);
  background: rgba(232,211,165,.04);
}

/* Right: metric area */
.pf-ds-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* Subcat tabs for CAGR */
.pf-ds-subcats {
  display: none;
  align-items: center;
  gap: 4px;
  padding: 6px 12px;
  border-bottom: 1px solid rgba(255,255,255,.04);
  flex-wrap: wrap;
}
.pf-ds-subcats.visible { display: flex; }
.pf-ds-subcat-label {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 500;
  letter-spacing: .01em;
  text-transform: none;
  color: var(--muted2);
  margin-right: 4px;
}
.pf-ds-subcat-btn {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 500;
  letter-spacing: .01em;
  color: var(--muted2);
  background: none;
  border: 1px solid rgba(255,255,255,.07);
  padding: 2px 8px;
  cursor: pointer;
  transition: all .1s;
  white-space: nowrap;
}
.pf-ds-subcat-btn:hover { color: var(--muted); border-color: rgba(255,255,255,.15); }
.pf-ds-subcat-btn.active {
  color: var(--accent);
  border-color: rgba(232,211,165,.3);
  background: rgba(232,211,165,.05);
}

/* Metric grid */
.pf-ds-metric-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 10px 12px;
  overflow-y: auto;
  max-height: 160px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.08) transparent;
  align-content: flex-start;
}
.pf-ds-metric-grid::-webkit-scrollbar { width: 3px; }
.pf-ds-metric-grid::-webkit-scrollbar-thumb { background: rgba(255,255,255,.1); }

.pf-ds-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: 'Inter', sans-serif;
  font-size: .68rem;
  font-weight: 400;
  letter-spacing: .01em;
  color: var(--muted2);
  background: rgba(255,255,255,.02);
  border: 1px solid rgba(255,255,255,.07);
  padding: 4px 9px;
  cursor: pointer;
  transition: all .1s;
  white-space: nowrap;
  user-select: none;
  line-height: 1.3;
}
.pf-ds-chip:hover {
  color: var(--muted);
  border-color: rgba(255,255,255,.18);
  background: rgba(255,255,255,.04);
}
.pf-ds-chip.selected {
  color: var(--accent);
  border-color: rgba(232,211,165,.45);
  background: rgba(232,211,165,.08);
}
.pf-ds-chip.selected::after {
  content: ' ✓';
  opacity: .6;
  font-size:var(--fs-sm);
}

/* Footer: selected queue + actions */
.pf-ds-footer {
  border-top: 1px solid rgba(255,255,255,.05);
  padding: 7px 12px;
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,.01);
  flex-shrink: 0;
  min-height: 38px;
}
.pf-ds-footer-label {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 500;
  letter-spacing: .02em;
  text-transform: none;
  color: var(--muted2);
  flex-shrink: 0;
}
.pf-ds-sel-queue {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  flex: 1;
  min-width: 0;
  align-items: center;
}
.pf-ds-sel-chip {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 500;
  letter-spacing: .01em;
  color: var(--accent);
  background: rgba(232,211,165,.07);
  border: 1px solid rgba(232,211,165,.2);
  padding: 2px 5px 2px 7px;
  white-space: nowrap;
}
.pf-ds-sel-chip-x {
  cursor: pointer;
  opacity: .4;
  font-size:var(--fs-sm);
  line-height: 1;
  padding: 0 1px;
  transition: opacity .1s;
}
.pf-ds-sel-chip-x:hover { opacity: .9; }
.pf-ds-footer-none {
  font-family: 'Inter', sans-serif;
  font-size:var(--fs-sm);
  font-weight: 400;
  color: var(--muted2);
  opacity: .4;
  letter-spacing: .01em;
}
.pf-ds-footer-actions {
  display: flex;
  gap: 5px;
  flex-shrink: 0;
}

/* IBM Plex Mono throughout the data-selection drawer */
.pf-ds-hdr-label,.pf-ds-hdr-pill,.pf-ds-hdr-none,
.pf-ds-cat-btn,.pf-ds-subcat-label,.pf-ds-subcat-btn,
.pf-ds-chip,.pf-ds-footer-label,.pf-ds-sel-chip,.pf-ds-footer-none {
  font-family: var(--mono);
}

/* ══════════════════════════════════════════════════════════════
   PRESET STEP RAIL  (slides in from right of screener shell)
   ══════════════════════════════════════════════════════════════ */
.pf-preset-rail {
  position: absolute;
  top: 0;
  right: 0;
  width: 172px;
  bottom: 0;
  background: rgba(8,8,8,.97);
  border-left: 1px solid rgba(232,211,165,.15);
  display: none;
  flex-direction: column;
  z-index: 20;
  pointer-events: none;
}
.pf-preset-rail.visible {
  display: flex;
  pointer-events: auto;
}

.pf-rail-head {
  padding: 12px 14px 10px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  flex-shrink: 0;
}
.pf-rail-title {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
  opacity: .7;
  margin-bottom: 2px;
}
.pf-rail-subtitle {
  font-family: var(--sans);
  font-size: .85rem;
  color: var(--text);
  font-weight: 400;
  opacity: .65;
}
.pf-rail-cancel {
  margin-top: 8px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(200,80,80,.55);
  cursor: pointer;
  transition: color .15s;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.pf-rail-cancel:hover { color: rgba(220,100,100,.85); }

/* Steps list */
.pf-rail-steps {
  padding: 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 0;
  flex: 1;
}
.pf-rail-step {
  display: flex;
  gap: 10px;
  padding-bottom: 20px;
  position: relative;
  opacity: .3;
  transition: opacity .25s;
}
.pf-rail-step.active { opacity: 1; }
.pf-rail-step.done   { opacity: .5; }

/* Vertical connector line */
.pf-rail-step:not(:last-child)::after {
  content: '';
  position: absolute;
  left: 9px;
  top: 20px;
  bottom: 0;
  width: 1px;
  background: rgba(255,255,255,.08);
}
.pf-rail-step.done:not(:last-child)::after {
  background: rgba(232,211,165,.2);
}

.pf-rail-step-num {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.15);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--mono);
  font-size:var(--fs-sm);
  color: var(--muted2);
  flex-shrink: 0;
  background: var(--surface);
  transition: all .25s;
}
.pf-rail-step.active .pf-rail-step-num {
  border-color: rgba(232,211,165,.6);
  background: rgba(232,211,165,.1);
  color: var(--accent);
}
.pf-rail-step.done .pf-rail-step-num {
  border-color: rgba(232,211,165,.3);
  background: rgba(232,211,165,.06);
  color: var(--accent);
}
.pf-rail-step.done .pf-rail-step-num::before { content: '✓'; font-size:var(--fs-sm); }

.pf-rail-step-body {
  padding-top: 1px;
}
.pf-rail-step-label {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 3px;
  line-height: 1.3;
}
.pf-rail-step.active .pf-rail-step-label { color: var(--text); }
.pf-rail-step-hint {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  color: var(--muted2);
  line-height: 1.5;
  opacity: .8;
}

/* ══ SAVE PRESET MODAL ══════════════════════════════════════ */
.pf-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(4px);
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s;
}
.pf-modal-overlay.visible {
  opacity: 1;
  pointer-events: auto;
}
.pf-modal {
  background: #0d0d0d;
  border: 1px solid rgba(232,211,165,.2);
  padding: 24px 28px 20px;
  width: 320px;
  box-shadow: 0 20px 60px rgba(0,0,0,.7);
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.pf-modal-title {
  font-family: var(--sans);
  font-size: 1.1rem;
  font-weight: 400;
  color: var(--text);
  letter-spacing: -.01em;
}
.pf-modal-label {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted2);
  margin-bottom: 6px;
}
.pf-modal-input {
  width: 100%;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.12);
  outline: none;
  color: var(--text);
  font-family: var(--sans);
  font-size: .75rem;
  letter-spacing: .06em;
  padding: 9px 12px;
  transition: border-color .2s;
}
.pf-modal-input:focus { border-color: rgba(232,211,165,.45); }
.pf-modal-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 4px;
}
.pf-modal-btn {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 7px 16px;
  cursor: pointer;
  transition: all .2s;
  border: 1px solid rgba(255,255,255,.12);
  background: none;
  color: var(--muted);
}
.pf-modal-btn:hover { color: var(--text); border-color: rgba(255,255,255,.25); }
.pf-modal-btn.primary {
  background: rgba(232,211,165,.1);
  border-color: rgba(232,211,165,.35);
  color: var(--accent);
}
.pf-modal-btn.primary:hover { background: rgba(232,211,165,.18); }

/* ══ DISCARD CONFIRM ══════════════════════════════════════════ */
.pf-confirm-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.5);
  backdrop-filter: blur(3px);
  z-index: 9100;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s;
}
.pf-confirm-overlay.visible { opacity: 1; pointer-events: auto; }
.pf-confirm-box {
  background: #0d0d0d;
  border: 1px solid rgba(255,80,80,.25);
  padding: 20px 24px 16px;
  width: 280px;
  box-shadow: 0 16px 40px rgba(0,0,0,.65);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.pf-confirm-msg {
  font-family: var(--sans);
  font-size: .75rem;
  color: var(--text);
  line-height: 1.5;
}

/* ══ PRESET CREATION OVERLAY ══════════════════════════════════ */
.pf-preset-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.35);
  z-index: 18;
  pointer-events: none;
  opacity: 0;
  transition: opacity .25s;
}
.pf-preset-backdrop.visible { opacity: 1; pointer-events: auto; }

/* ══ TOAST ═══════════════════════════════════════════════════ */
.pf-toast {
  position: fixed;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%) translateY(12px);
  background: rgba(232,211,165,.12);
  border: 1px solid rgba(232,211,165,.3);
  color: var(--accent);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .16em;
  text-transform: uppercase;
  padding: 9px 20px;
  z-index: 10000;
  opacity: 0;
  pointer-events: none;
  transition: opacity .22s, transform .22s;
  backdrop-filter: blur(8px);
}
.pf-toast.show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ══ ONBOARDING ═════════════════════════════════════════════════ */
.ic-ob-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(2px);z-index:99990;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;}
.ic-ob-overlay.visible{opacity:1;pointer-events:all;}
.ic-ob-modal{background:var(--surface);border:1px solid rgba(232,211,165,.16);width:720px;max-width:calc(100vw - 40px);max-height:calc(100vh - 48px);overflow-y:auto;padding:0;position:relative;transform:translateY(20px);transition:transform .35s;}
.ic-ob-overlay.visible .ic-ob-modal{transform:translateY(0);}
.ic-ob-step{display:none;}
.ic-ob-step.active{display:block;padding:38px 46px 0;}
.ic-ob-eyebrow{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;}
.ic-ob-title{font-family:var(--sans);font-size:1.45rem;font-weight:400;letter-spacing:-.025em;color:var(--text);margin-bottom:11px;line-height:1.25;}
.ic-ob-body{font-family:var(--sans);font-size:.8rem;color:var(--muted2);line-height:1.7;margin-bottom:16px;}
.ic-ob-features{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0 0 14px;}
.ic-ob-card{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07);padding:10px 12px;display:flex;gap:10px;align-items:flex-start;}
.ic-ob-card-icon{flex-shrink:0;color:var(--accent);opacity:.6;margin-top:2px;}
.ic-ob-card-name{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.7);margin-bottom:3px;}
.ic-ob-card-desc{font-family:var(--sans);font-size:var(--fs-md);color:var(--muted2);line-height:1.55;}
.ic-ob-tip{border-left:2px solid rgba(232,211,165,.3);padding:7px 12px;background:rgba(232,211,165,.04);font-family:var(--sans);font-size:var(--fs-md);color:rgba(232,211,165,.6);line-height:1.6;margin-bottom:0;}
.ic-ob-tip b{color:rgba(232,211,165,.85);font-weight:500;}
.ic-ob-tabs-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:20px 0 26px;}
.ic-ob-tab-card{border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.025);padding:16px 10px 13px;text-align:center;}
.ic-ob-tab-card-icon{color:var(--accent);opacity:.55;margin-bottom:10px;}
.ic-ob-tab-card-num{font-family:var(--mono);font-size:.5rem;letter-spacing:.2em;color:var(--accent);opacity:.7;margin-bottom:5px;}
.ic-ob-tab-card-name{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.65);margin-bottom:6px;}
.ic-ob-tab-card-desc{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);line-height:1.45;}
.ic-ob-keys{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:16px 0 18px;}
.ic-ob-key-row{display:flex;align-items:center;gap:8px;padding:9px 12px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07);}
.ic-ob-kbd{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.08em;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);padding:2px 6px;color:var(--text);white-space:nowrap;flex-shrink:0;}
.ic-ob-key-desc{font-family:var(--sans);font-size:var(--fs-md);color:var(--muted2);}
.ic-ob-footer{display:flex;align-items:center;justify-content:space-between;padding:16px 46px 24px;margin-top:22px;border-top:1px solid rgba(255,255,255,.06);}
.ic-ob-dots{display:flex;gap:6px;align-items:center;}
.ic-ob-dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.16);transition:background .2s,width .2s,border-radius .2s;}
.ic-ob-dot.active{background:var(--accent);width:18px;border-radius:3px;}
.ic-ob-actions{display:flex;gap:12px;align-items:center;}
.ic-ob-skip{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);background:none;border:none;cursor:pointer;padding:4px 0;transition:color .15s;}
.ic-ob-skip:hover{color:var(--text);}
.ic-ob-next{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.14em;text-transform:uppercase;color:#0d0d0d;background:var(--accent);border:none;padding:9px 22px;cursor:pointer;transition:opacity .15s;}
.ic-ob-next:hover{opacity:.85;}

/* ══ PRESET CHIP BADGE + DROPDOWN ══════════════════════════════ */
.pf-scr2-preset { position: relative; }
.pf-preset-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 14px;
  height: 14px;
  padding: 0 3px;
  border-radius: 7px;
  background: rgba(255,255,255,.1);
  font-family: var(--mono);
  font-size:var(--fs-sm);
  color: var(--muted2);
  margin-left: 5px;
  vertical-align: middle;
  transition: background .2s;
}
.pf-scr2-preset:hover .pf-preset-badge { background: rgba(255,255,255,.18); }
.pf-preset-menu-btn {
  display: none;
  align-items: center;
  justify-content: center;
  margin-left: 4px;
  opacity: 0;
  cursor: pointer;
  font-size:var(--fs-sm);
  color: var(--muted2);
  line-height: 1;
  padding: 0 2px;
  transition: opacity .15s, color .15s;
  vertical-align: middle;
}
.pf-scr2-preset:hover .pf-preset-menu-btn { opacity: .7; display: inline-flex; }
.pf-preset-menu-btn:hover { opacity: 1 !important; color: var(--text); }
.pf-preset-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  background: #111;
  border: 1px solid rgba(255,255,255,.1);
  box-shadow: 0 8px 24px rgba(0,0,0,.6);
  z-index: 500;
  min-width: 130px;
  display: none;
}
.pf-preset-dropdown.open { display: block; }
.pf-preset-dd-item {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--muted);
  padding: 9px 14px;
  cursor: pointer;
  transition: background .15s, color .15s;
  display: block;
  white-space: nowrap;
  border: none;
  background: none;
  width: 100%;
  text-align: left;
}
.pf-preset-dd-item:hover { background: rgba(255,255,255,.06); color: var(--text); }
.pf-preset-dd-item.danger { color: rgba(220,80,80,.7); }
.pf-preset-dd-item.danger:hover { background: rgba(200,60,60,.08); color: rgba(240,100,100,.9); }
.pf-preset-tooltip {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  background: rgba(12,12,12,.97);
  border: 1px solid rgba(255,255,255,.1);
  padding: 8px 12px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  color: var(--muted2);
  line-height: 1.7;
  letter-spacing: .06em;
  z-index: 600;
  pointer-events: none;
  white-space: nowrap;
  display: none;
}

/* ── Metric info badge + tooltip (global, all sections) ── */
/* Badges are inline; tooltip is rendered into document.body via JS
   so it is never clipped by any ancestor's overflow:hidden.        */
.pf-mti,
.pf-th-mti {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  position: relative;
  vertical-align: middle;
  cursor: help;
}
.pf-mti-badge {
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 1px solid rgba(232,211,165,.28);
  background: rgba(232,211,165,.055);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.18);
  font-family: var(--sans);
  font-size:var(--fs-xs);
  font-weight: 700;
  font-style: normal;
  color: rgba(232,211,165,.62);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  flex-shrink: 0;
  cursor: help;
  transition: border-color .16s, color .16s, background .16s, box-shadow .16s, transform .16s;
  user-select: none;
}
.pf-th-mti .pf-mti-badge {
  width: 11px;
  height: 11px;
  font-size:var(--fs-xs);
}
.pf-mti:hover .pf-mti-badge,
.pf-th-mti:hover .pf-mti-badge,
.pf-mti-badge:hover {
  border-color: rgba(232,211,165,.7);
  color: var(--accent);
  background: rgba(232,211,165,.14);
  box-shadow: 0 0 0 2px rgba(232,211,165,.08), inset 0 0 0 1px rgba(255,255,255,.08);
  transform: translateY(-.5px);
}

/* ── Hide info badges via setting ── */
body.ic-hide-info-btns .pf-mti,
body.ic-hide-info-btns .pf-th-mti { display: none !important; }

/* ── Body-portal tooltip (appended to <body>, never clipped) ── */
#pf-global-metric-tip {
  position: fixed;
  background: rgba(7,7,7,.98);
  border: 1px solid rgba(232,211,165,.2);
  padding: 8px 12px 9px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  color: rgba(200,200,200,.9);
  line-height: 1.6;
  letter-spacing: .03em;
  z-index: 99999;
  pointer-events: none;
  white-space: nowrap;
  display: none;
  text-transform: none;
  font-weight: 400;
  box-shadow: 0 8px 28px rgba(0,0,0,.55);
  max-width: 260px;
}
#pf-global-metric-tip strong {
  color: var(--accent);
  font-weight: 500;
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  text-transform: uppercase;
  display: block;
  margin-bottom: 3px;
}
#pf-global-metric-tip .pf-tip-calc {
  color: rgba(180,180,180,.55);
  font-size: .57rem;
  letter-spacing: .06em;
  display: block;
  margin-top: 2px;
}
/* Arrow pointing DOWN (tip above badge — default) */
#pf-global-metric-tip::after {
  content: '';
  position: absolute;
  top: 100%;
  left: var(--tip-arrow-x, 50%);
  transform: translateX(-50%);
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid rgba(232,211,165,.2);
}
/* Arrow pointing UP (tip below badge — when near top of screen) */
#pf-global-metric-tip.tip-below::after {
  top: auto;
  bottom: 100%;
  border-top: none;
  border-bottom: 5px solid rgba(232,211,165,.2);
}

/* Keep old .pf-mti-tip hidden (legacy; no longer used for display) */
.pf-mti-tip { display: none !important; }

/* ══ ZERO RESULTS STATE ══════════════════════════════════════ */
/* Content block inside .pf-scr-empty-overlay (see site.css's SCREENER
   section) — the overlay itself handles centering against the visible
   pane; this is just the icon/title/sub stack's own layout. */
.pf-zero-results {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 48px 24px;
}
/* Icon + bold title + muted instruction — same visual pattern as the
   Watchlist empty state (pf_renderWl) for a consistent "blank canvas"
   look wherever this app shows an empty table. */
.pf-zero-icon { opacity: .14; }
.pf-zero-title {
  font-family: var(--sans);
  font-size: .78rem;
  font-weight: 600;
  color: rgba(255,255,255,.45);
  letter-spacing: .01em;
}
.pf-zero-sub {
  font-family: var(--sans);
  font-size: 10px;
  color: rgba(255,255,255,.22);
  letter-spacing: .02em;
  text-align: center;
  max-width: 280px;
  line-height: 1.6;
  margin: 0 auto;
}
.pf-zero-remove-btn {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 6px 14px;
  background: none;
  border: 1px solid rgba(255,255,255,.1);
  color: var(--muted);
  cursor: pointer;
  transition: all .2s;
}
.pf-zero-remove-btn:hover { border-color: rgba(255,255,255,.25); color: var(--text); }

/* ══ LIVE COUNT INLINE ════════════════════════════════════════ */
#pf-live-count {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .1em;
  color: var(--muted2);
  white-space: nowrap;
  flex-shrink: 0;
  transition: color .2s;
}
/* Same typography as #pf-live-count right next to it — only the color
   differs (accent, to signal "scan in progress"), so the two don't read as
   two different type systems in the same row. */
#pf-scan-status {
  font-family: var(--mono);
  font-size:var(--fs-sm);
  letter-spacing: .1em;
  color: var(--accent);
  white-space: nowrap;
  flex-shrink: 0;
  margin-right: 8px;
}

/* SCREENER */
.pf-scr-bar{height:44px;display:flex;align-items:center;gap:8px;padding:0 12px;border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0;}
.pf-scr-count{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
.pf-scr-title{font-family:var(--sans);font-size:var(--fs-sm);font-weight:500;color:var(--muted);}
.pf-scr-pills{display:none;gap:4px;flex-wrap:wrap;padding:4px 12px;border-bottom:1px solid var(--line);background:var(--surface);}
.pf-pill{font-family:var(--sans);font-size:var(--fs-xs);border:1px solid var(--line);padding:2px 8px;color:var(--muted2);display:flex;align-items:center;gap:4px;}
.pf-pill-x{cursor:pointer;opacity:.6;}
.pf-scr-wrap{overflow:auto;flex:1;}
.pf-scr-wrap::-webkit-scrollbar{width:2px;height:2px;}
.pf-scr-tbl-filler{flex:1;min-height:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px);background-size:100% 33px;}
.pf-scr-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);}
/* RADAR zero-results overlay (pf_checkZeroResults) — a sibling of the
   <table>, not a row inside it, specifically so it centers against
   #pf-scr-table-view's own (visible-pane) box instead of the table's real
   column width, which is frequently wider than the visible scroll pane
   (.pf-scr-wrap has overflow:auto). `top` is set inline via JS to the
   measured header height so this starts right below the sticky header and
   fills the rest of #pf-scr-table-view — true center on both axes, and its
   opaque background sits above (hides) .pf-scr-tbl-filler's gridline
   pattern underneath, so no gridlines show through the empty state. */
.pf-scr-empty-overlay{
  position:absolute;
  left:0;right:0;bottom:0;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--surface);
  z-index:1;
}
.pf-scr-tbl{--pf-scr-col-w:88px;width:1496px;border-collapse:collapse;min-width:1496px;table-layout:fixed;}
.pf-scr-tbl col{width:var(--pf-scr-col-w);}
.pf-scr-tbl th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);padding:8px 4px 6px;text-align:center;border-bottom:1px solid var(--line);white-space:normal;cursor:pointer;user-select:none;background:var(--surface);position:sticky;top:0;vertical-align:middle;line-height:1.5;font-weight:500;}
.pf-scr-th-inner{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;width:100%;}
.pf-scr-th-inner.is-right{justify-content:center;}
.pf-scr-th-inner.is-center{justify-content:center;align-items:center;}
.pf-scr-th-text{min-width:0;word-break:break-word;overflow-wrap:break-word;white-space:normal;}
.pf-scr-th-inner .pf-th-mti{flex:0 0 auto;}
.pf-scr-th-inner .pf-mti-badge{opacity:.9;}
.pf-scr-tbl th:first-child,.pf-scr-tbl th:nth-child(2){position:sticky;left:0;z-index:2;}
.pf-scr-tbl th:nth-child(2){left:var(--pf-scr-col-w);}
.pf-scr-tbl td{font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted);padding:5px 4px;border-bottom:1px solid rgba(255,255,255,.025);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:var(--pf-scr-row-h,auto);}
.pf-scr-tbl td:first-child,.pf-scr-tbl td:nth-child(2){text-align:left;background:var(--surface);position:sticky;z-index:1;}
.pf-scr-tbl td:first-child{left:0;z-index:2;}
.pf-scr-tbl td:nth-child(2){left:var(--pf-scr-col-w);}
.pf-scr-tbl tr{cursor:pointer;transition:background .12s ease;}
.pf-scr-tbl tbody tr:hover td{
  background:rgba(232,211,165,.07) !important;
  color:var(--text);
  border-bottom-color:rgba(255,255,255,.06);
}
.pf-scr-tbl tbody tr:hover td:first-child{
  border-left:2px solid rgba(232,211,165,.55);
  background:linear-gradient(rgba(232,211,165,.07),rgba(232,211,165,.07)),var(--surface) !important;
}
.pf-scr-tbl tbody tr:hover td:nth-child(2){
  background:linear-gradient(rgba(232,211,165,.07),rgba(232,211,165,.07)),var(--surface) !important;
}
/* ── Watchlist star ───────────────────────────────────────── */
.pf-scr-star-td{text-align:center;padding:0 6px;overflow:visible;}
.pf-scr-star{cursor:pointer;font-size:var(--fs-lg);color:rgba(255,255,255,.18);user-select:none;display:inline-block;transition:color .12s,transform .15s;line-height:1;}
.pf-scr-star:hover{color:#e8d3a5;transform:scale(1.25);}
.pf-scr-star.starred{color:#e8d3a5;}
.pf-scr-tbl tbody tr:hover .pf-scr-star:not(.starred){color:rgba(232,211,165,.45);}
.pf-star-tip{position:absolute;top:50%;left:calc(100% + 5px);transform:translateY(-50%);background:rgba(12,12,12,.97);border:1px solid rgba(255,255,255,.1);padding:3px 8px;font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.06em;color:var(--muted);white-space:nowrap;z-index:10;pointer-events:none;opacity:0;transition:opacity .12s;}
.pf-scr-star-td:hover .pf-star-tip{opacity:1;}

/* ── Row CTA ──────────────────────────────────────────────── */
.pf-scr-row-cta{opacity:0;margin-left:auto;flex-shrink:0;font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border:1px solid rgba(232,211,165,.28);padding:2px 7px;white-space:nowrap;pointer-events:none;transition:opacity .15s;}
.pf-scr-tbl tbody tr:hover .pf-scr-row-cta{opacity:1;}
.pf-scr-sort-ind{color:var(--accent);margin-left:3px;font-size:10px;line-height:1;vertical-align:middle;}
.pf-scr-tbl th.pf-scr-th--sorted{color:var(--muted) !important;}

.pf-logo-sq{width:20px;height:20px;background:rgba(255,255,255,.06);border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}

/* ── Screener pagination (inline, ROW A, left of live count) ── */
.pf-scr-pagination{
  display:none;
  flex-shrink:0;
  align-items:center;
  gap:10px;
  margin-right:12px;
}
.pf-scr-pg-nums{display:flex;align-items:center;flex-wrap:wrap;gap:2px;margin:0 2px;}
.pf-scr-pg-nav,.pf-scr-pg-btn{
  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.02em;
  min-width:22px;
  height:22px;
  padding:0 5px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:none;
  border:1px solid rgba(255,255,255,.1);
  color:var(--muted);
  cursor:pointer;
  transition:all .15s;
}
.pf-scr-pg-nav:hover:not(:disabled),.pf-scr-pg-btn:hover{
  border-color:rgba(255,255,255,.25);
  color:var(--text);
}
.pf-scr-pg-nav:disabled{
  opacity:.3;
  cursor:default;
}
.pf-scr-pg-btn.active{
  border-color:rgba(232,211,165,.5);
  background:rgba(232,211,165,.1);
  color:var(--accent);
  cursor:default;
}
/* ══ SCREENER FONT OVERRIDES: Inter for labels, mono for numbers ══ */

/* Company name + sector columns (text) → Inter */
.pf-scr-tbl td:first-child,
.pf-scr-tbl td:nth-child(2) {
  font-family: var(--sans) !important;
}
/* Logo square text → Inter */
.pf-logo-sq { font-family: var(--sans) !important; }

/* Filter row value input (the number the user types) → mono */
.pf-ctag-input {
  font-family: var(--mono) !important;
  letter-spacing: .06em !important;
}

/* Screener table header labels → sans */
.pf-scr-tbl th { font-family: var(--sans) !important; }

/* Ticker name + company name inside Empresa cell */
.pf-scr-tbl .tn { font-family: var(--sans); font-size:var(--fs-sm); font-weight: 500; color: var(--text); }
.pf-scr-tbl .ts { font-family: var(--sans); font-size:var(--fs-sm); color: var(--muted2); }

/* Confirm dialog text → sans */
.pf-confirm-msg { font-family: var(--sans) !important; }

/* Tearsheet description text → mono */
.pf-ts-desc-text { font-family: var(--mono) !important; }

/* News card text → sans */
.pf-news-card-headline,
.pf-news-card-source,
.pf-news-card-meta { font-family: var(--sans) !important; }

/* Pie legend label → sans, value → mono */
.pf-pie-legend-label { font-family: var(--sans) !important; }
.pf-pie-legend-val   { font-family: var(--mono) !important; }

/* Category buttons in column selector → mono */
.pf-ds-cat-btn { font-family: var(--mono) !important; letter-spacing: .02em !important; }

/* ══ END SCREENER FONT OVERRIDES ══════════════════════════════ */

/* ── SCREENER CONTROL BAR v2 ─────────────────────────────────── */

.pf-scr2-shell {
  flex-shrink: 0;
  border-bottom: 1px solid var(--line);
  position: relative;
}

/* Shared row */
.pf-scr2-row {
  display: flex;
  align-items: center;
  gap: 0;
  padding: 0 14px;
  background: var(--surface);
  border-bottom: 1px solid rgba(255,255,255,.05);
  min-height: 40px;
  flex-wrap: wrap;
}
.pf-scr2-row:last-child { border-bottom: none; }

/* Thin vertical separator */
.pf-scr2-sep {
  width: 1px;
  height: 20px;
  background: rgba(255,255,255,.1);
  flex-shrink: 0;
  margin: 0 12px;
}

/* Section label */
.pf-scr2-label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted2);
  flex-shrink: 0;
  margin-right: 10px;
}

/* ── ROW A ── */

/* Search box */
.pf-scr2-search {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 10px;
  height: 28px;
  background: rgba(255,255,255,.035);
  border: 1px solid rgba(255,255,255,.07);
  transition: border-color .15s, background .15s;
  flex-shrink: 0;
}
.pf-scr2-search:focus-within {
  border-color: rgba(255,255,255,.18);
  background: rgba(255,255,255,.055);
}
.pf-scr2-search svg { color: var(--muted2); flex-shrink: 0; }
.pf-scr2-search input {
  background: none;
  border: none;
  outline: none;
  color: var(--text);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  width: 200px;
  letter-spacing: .02em;
}
.pf-scr2-search input::placeholder { color: var(--muted2); }

/* View toggle pills */
.pf-scr2-views {
  display: flex;
  gap: 3px;
  flex-shrink: 0;
}
.pf-scr2-view {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted2);
  background: none;
  border: 1px solid transparent;
  cursor: pointer;
  transition: all .12s;
}
.pf-scr2-view:hover { color: var(--muted); border-color: rgba(255,255,255,.1); background: rgba(255,255,255,.03); }
.pf-scr2-view.on { color: var(--text); border-color: rgba(255,255,255,.25); background: rgba(255,255,255,.06); }

/* Preset buttons */
.pf-scr2-presets {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
  flex: 1;
}
#pf-user-preset-chips {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
}
.pf-scr2-preset {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted2);
  background: rgba(255,255,255,.02);
  border: 1px solid rgba(255,255,255,.07);
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
}
.pf-scr2-preset svg { opacity: 0; transition: opacity .12s; flex-shrink: 0; }
.pf-scr2-preset:hover { color: var(--muted); border-color: rgba(255,255,255,.15); }
.pf-scr2-preset.on {
  color: var(--accent);
  border-color: rgba(232,211,165,.35);
  background: rgba(232,211,165,.06);
}

/* Result count */
.pf-scr2-count-wrap {
  display: flex;
  align-items: baseline;
  gap: 4px;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 14px;
}
.pf-scr2-count-num {
  font-family: var(--mono);
  font-size: 1rem;
  font-weight: 500;
  color: var(--text);
  line-height: 1;
}
.pf-scr2-count-lbl {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--muted2);
}

/* ── ROW B: Filter builder ── */
/* Column layout now: header line (label + action buttons, always visible,
   always at the top) then the filter/rule rows below it — explicit request
   that Crear Preset/+ Criterio/+ Regla sit at the TOP of their section
   regardless of how many rows exist below, not wrap below an arbitrarily
   tall stack of them. */
.pf-scr2-rowb {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap; /* overrides .pf-scr2-row's flex-wrap:wrap — on a column-direction container that wraps overflow into a NEW COLUMN to the right instead of stacking below, which pushed #pf-filtros-body/#pf-reglas-body almost entirely off-screen */
  align-items: stretch;
  gap: 8px;
  padding: 10px 14px;
  min-height: 44px;
  background: rgba(255,255,255,.012);
}

/* Header line: label on the left, action buttons on the right */
.pf-scr2-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  flex-shrink: 0;
}

/* Static criteria tags row — hidden unless the active preset defines tags */
.pf-scr2-criteria-tags {
  display: none;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
}
.pf-scr2-criteria-tags.visible {
  display: flex;
}

/* Individual criteria tag */
.pf-scr2-ctag {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .08em;
  color: var(--accent);
  background: rgba(232,211,165,.07);
  border: 1px solid rgba(232,211,165,.22);
  padding: 3px 9px;
  white-space: nowrap;
  line-height: 1.6;
}

.pf-scr2-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

/* Action buttons */
.pf-scr2-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  height: 26px;
  padding: 0 10px;
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .03em;
  text-transform: uppercase;
  cursor: pointer;
  border: 1px solid;
  transition: all .12s;
  white-space: nowrap;
}
/* Add criterion */
.pf-scr2-btn--add {
  color: var(--muted);
  border-color: rgba(255,255,255,.12);
  background: rgba(255,255,255,.03);
}
.pf-scr2-btn--add:hover { color: var(--text); border-color: rgba(255,255,255,.25); background: rgba(255,255,255,.06); }

/* Apply */
.pf-scr2-btn--apply {
  color: var(--accent);
  border-color: rgba(232,211,165,.3);
  background: rgba(232,211,165,.05);
}
.pf-scr2-btn--apply:hover { background: rgba(232,211,165,.1); border-color: rgba(232,211,165,.5); }

/* Save preset */
.pf-scr2-btn--save {
  color: var(--muted2);
  border-color: rgba(255,255,255,.08);
  background: none;
}
.pf-scr2-btn--save:hover { color: var(--muted); border-color: rgba(255,255,255,.18); }

.pf-scr2-btn--preset-modal {
  color: var(--accent);
  border-color: rgba(232,211,165,.25);
  background: rgba(232,211,165,.05);
  gap: 6px;
}
.pf-scr2-btn--preset-modal:hover {
  background: rgba(232,211,165,.1);
  border-color: rgba(232,211,165,.45);
}

.pf-scr2-preset--editing {
  border-color: rgba(232,211,165,.4);
  background: rgba(232,211,165,.06);
  padding: 4px 8px;
  display: inline-flex;
  align-items: center;
}

/* Clear */
.pf-scr2-btn--clear {
  color: rgba(200,80,80,.7);
  border-color: rgba(200,80,80,.2);
  background: none;
}
.pf-scr2-btn--clear:hover { color: rgba(220,100,100,.9); border-color: rgba(200,80,80,.35); background: rgba(200,80,80,.04); }

/* Tag-styled dynamic filter rows */
.pf-scr2-criteria-tags {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 5px;
  align-items: center;
}
/* One filter criterion per row (explicit request) — not wrapped tag pills.
   align-items: flex-start, NOT stretch — stretch forced each row's own
   bordered/backgrounded chip to the full container width, which left a
   large empty strip inside that same box after its compact content
   (select/op/input/remove button never grow to fill it) — it just read as
   an oversized, mostly-dead rectangle. flex-start keeps each row's chip
   shrink-to-fit its actual content while still stacking one per line. */
.pf-scr2-filterrows {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  max-height: none;
  overflow-y: visible;
}

/* Tag-styled dynamic filter rows */
.pf-scr2-ctag-row {
  display: inline-flex;
  align-items: center;
  gap: 0;
  background: rgba(232,211,165,.07);
  border: 1px solid rgba(232,211,165,.22);
  height: 24px;
  overflow: hidden;
}

.pf-ctag-select,
.pf-ctag-input {
  background: none;
  border: none;
  outline: none;
  color: var(--accent);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .02em;
  padding: 0;
  height: 100%;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}
.pf-ctag-select { padding: 0 4px 0 7px; }
.pf-ctag-select option { background: var(--bg); color: var(--text); }
.pf-ctag-op { padding: 0 3px; }
.pf-ctag-input {
  width: 38px;
  padding: 0 4px 0 2px;
  text-align: left;
}
.pf-ctag-input::placeholder { color: rgba(232,211,165,.3); }
/* hide number spinners */
.pf-ctag-input::-webkit-inner-spin-button,
.pf-ctag-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.pf-ctag-input[type=number] { -moz-appearance: textfield; }

.pf-ctag-remove {
  background: none;
  border: none;
  border-left: 1px solid rgba(232,211,165,.15);
  color: rgba(232,211,165,.35);
  cursor: pointer;
  font-size:var(--fs-xs);
  padding: 0 6px;
  height: 100%;
  line-height: 1;
  transition: color .12s, background .12s;
}
.pf-ctag-remove:hover { color: rgba(232,211,165,.9); background: rgba(232,211,165,.08); }

/* TEARSHEET */
/* Identity bar */
.pf-ts-identity{display:flex;align-items:stretch;gap:1px;background:var(--surface);border-bottom:none;flex-shrink:0;}
.pf-ts-id-left{flex:1;background:var(--surface);padding:8px 20px 6px;}
.pf-ts-id-ticker{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--muted2);margin-bottom:5px;}
.pf-ts-id-name{font-family:var(--sans);font-style:italic;font-size:var(--fs-xl);font-weight:600;color:var(--text);line-height:1.1;}
.pf-ts-id-right{display:flex;flex-direction:column;justify-content:center;align-items:flex-end;background:var(--surface);padding:14px 22px 12px;min-width:200px;gap:4px;}
.pf-ts-id-price{font-family:var(--mono);font-style:italic;font-size:34px;font-weight:600;color:var(--text);line-height:1;}
.pf-ts-id-change{font-family:var(--mono);font-size:var(--fs-md);}
.pf-ts-id-badge{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.1em;border:1px solid var(--line);padding:3px 9px;cursor:pointer;color:var(--muted2);text-transform:uppercase;transition:all .15s;margin-top:4px;}
.pf-ts-id-badge:hover{border-color:var(--line2);color:var(--muted);}
/* Dashboard shell */
.pf-ts-dashboard{display:flex;flex-direction:column;gap:1px;background:var(--line);flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;margin-top:0;border-top:1px solid rgba(255,255,255,0.05);}
/* Description row */
.pf-ts-desc-row{background:var(--line);}
.pf-ts-desc-panel{display:flex;flex-direction:column;}
.pf-ts-desc-body{padding:14px 20px 16px;}
.pf-ts-desc-text{font-family:var(--mono);font-size:var(--fs-sm);line-height:1.9;color:var(--muted);margin:0 0 14px 0;}
.pf-ts-desc-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0;border-top:1px solid var(--line);padding-top:12px;}
/* Right-padding 14px->8px->20px (2026-07-12, two follow-ups same day) —
   this row grew from 3 items (Sector/Industria/Exchange) to 10 (8 fields
   moved in from the old Key Data grid), and needs to fit on the SAME row
   as the name/ticker and price blocks (explicit request, reverting an
   earlier own-row attempt) — first tightened to reclaim room for that
   squeeze, then explicitly widened back out past the original 14px once
   the squeeze itself was no longer the binding constraint. No
   .pf-ts-meta-sep rule anymore — the "·" separator between items was
   dropped (explicit request); this padding is the only inter-item gap.
   align-items+text-align:center (also explicit) — each item's label sits
   centered over its value rather than left-edge-aligned, matching/wider
   values (e.g. "Consumer Cyclical") set the column's width and narrower
   labels (e.g. "Sector") center within it. */
.pf-ts-meta-item{display:flex;flex-direction:column;align-items:center;text-align:center;padding:0 20px 0 0;}
.pf-ts-meta-label{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);margin-bottom:2px;}
.pf-ts-meta-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);}
/* Main 2-row 5-col grid
   Row 1 (320px): Segmentos | Comparables | Historia de Precio (col 3-4) | Ratios
   Row 2 (1fr)  : Financials cols 1-2 | Valuation Graphs col 3 | Key Data col 4 | Ratios (cont.)
*/
/* 2026-07-12: cols 1-2 (Financials) narrowed, cols 3-4 (Segmentos/Historia
   de Precio/Ratios/Múltiplos/Consenso/Historial de Ganancias) widened by
   the same amount — col 5 (Comparables Públicos/Valuación) unchanged. */
/* Row 1 (Segmentos/Historia de Precio) shrunk, row 2 (Ratios/Múltiplos/
   Consenso/Historial de Ganancias) grown — Ratios/Múltiplos' own tables
   (up to 9-10 rows) were clipping at real viewport heights (verified via
   scrollHeight>clientHeight, not assumed). */
.pf-ts-main-dashboard{display:grid;grid-template-columns:minmax(140px,0.28fr) minmax(170px,0.56fr) minmax(200px,0.79fr) minmax(165px,0.44fr) minmax(220px,0.75fr);grid-template-rows:minmax(210px,0.30fr) minmax(280px,1.10fr);gap:1px;background:var(--line);align-items:stretch;flex:1;min-height:0;overflow:hidden;}
/* Cols 1-2, rows 1-2 combined: Segmentos+Ratios (top, fixed height) + Financials (bottom, flex:1) */
.pf-ts-left-wrap{grid-column:1/3;grid-row:1/3;display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.pf-ts-left-top{display:flex;flex-direction:row;gap:1px;background:var(--line);flex-shrink:0;height:232px;overflow:hidden;}
.pf-ts-right-col{display:flex;flex-direction:column;gap:1px;background:var(--line);min-width:0;flex:0 0 185px;}
.pf-pubcomps-col{display:flex;flex-direction:column;gap:0;min-width:0;overflow:hidden;flex:1;}
.pf-ratios-col{display:flex;flex-direction:column;gap:0;min-width:0;overflow:hidden;background:var(--surface);}
.pf-ts-main-dashboard>.pf-ratios-col{grid-column:5;grid-row:1/3;overflow:hidden;min-height:0;}
/* 2026-07-12: Segmentos/Geografías moved to the left of Historia de Precio
   — .pf-dash-main (the price-chart panel) is no longer a direct grid child
   itself; .pf-ts-price-row now takes that grid slot and holds Segmentos
   (fixed ~190px, same width it had in the vg-grid) + .pf-dash-main
   (flex:1) side by side. */
.pf-ts-main-dashboard>.pf-ts-price-row{grid-column:3/5;grid-row:1;overflow:hidden;display:flex;flex-direction:row;gap:1px;background:var(--line);min-width:0;}
.pf-ts-price-row .pf-dash-main{flex:1;min-width:0;overflow:hidden;display:flex;flex-direction:column;}
.pf-ts-price-row .pf-ts-right-col{flex:0 0 190px;}
/* Key Data cell — no longer a standalone grid cell; content embedded in valrec */
.pf-ts-keydata-cell{display:none;}
/* Financials: fills remaining height inside pf-ts-left-wrap */
.pf-ts-fin-cell{background:var(--surface);display:flex;flex-direction:column;overflow:hidden;min-height:0;border-top:none;}
/* Row 2: Valuation Graphs spans cols 3-4, row 2 — below Historia de Precio */
.pf-ts-valrec-cell{grid-column:3/5;grid-row:2/3;background:var(--surface);display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0;}
/* Key Data horizontal strip inside valrec cell */
.pf-ts-kd-strip{flex-shrink:0;border-bottom:1px solid var(--line);}
.pf-ts-kd-strip-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:1px;background:var(--line);}
/* Financials controls bar inside tearsheet */
.pf-ts-fin-bar{flex-shrink:0;height:36px;min-height:36px;border-bottom:1px solid var(--line);}
/* Financials scroll area — flex:1 so it fills remaining height in the left
   wrapper. overflow-x:hidden (was auto both axes) — table-layout:fixed on
   .pf-fin-tbl now guarantees the table never exceeds this container's
   width, so a horizontal scrollbar should never be needed; keeping x
   hidden rather than auto means it actually can't appear even if some
   future edit reintroduces an overflow-prone cell, instead of silently
   allowing the scroll-to-see-everything problem back. Vertical still
   scrolls normally for statements with more rows than fit vertically. */
.pf-ts-fin-scroll{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;}
/* Shrink fin table text to fit narrower column. Period (FYxx) cells get a
   much tighter horizontal padding than before (was a blanket 3px 7px on
   every cell, label column included) — numbers are short and don't need
   the same lateral breathing room as a text label, and every px trimmed
   here is a px the label column gets to keep instead of ellipsis-
   truncating (see the width split on pf_renderFinancials's labelTh —
   this padding change is what actually lets that width increase read as
   MORE label text, not just a wider empty margin). */
/* 2026-07-12: trimmed further (3px 3px→3px 2px, first-child 3px 8px→3px
   6px) — the column itself got narrower this same pass (see
   .pf-ts-main-dashboard's grid-template-columns above), so the numeric
   columns need every spare px to avoid crowding/wrapping. */
.pf-ts-fin-cell .pf-fin-tbl th,.pf-ts-fin-cell .pf-fin-tbl td{font-size:var(--fs-xs);padding:3px 2px;}
.pf-ts-fin-cell .pf-fin-tbl th:first-child,.pf-ts-fin-cell .pf-fin-tbl td:first-child{font-size:var(--fs-xs);padding:3px 6px;}

/* ── Ratios / Margins panel ── */
.pf-ratios-inner{display:flex;flex-direction:column;height:237px;overflow:hidden;background:var(--surface);}
.pf-ratios-body{display:grid;grid-template-columns:162px 1fr;flex:1;min-height:0;overflow:hidden;}
.pf-ratios-table-wrap{overflow:hidden;border-right:1px solid var(--line);background:var(--bg);display:flex;flex-direction:column;}
.pf-ratios-metric-list{display:flex;flex-direction:column;flex:1;}
.pf-ratios-metric-item{display:flex;align-items:center;gap:8px;padding:0 8px;cursor:pointer;transition:background .12s;flex:1;}
.pf-ratios-metric-item:hover{background:rgba(255,255,255,.03);}
.pf-ratios-metric-item.on .pf-ratios-dot{opacity:1;}
.pf-ratios-metric-item.on .pf-ratios-metric-label{color:var(--text);}
.pf-ratios-metric-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);line-height:1.3;transition:color .12s;white-space:nowrap;}
.pf-ratios-tbl{width:100%;border-collapse:collapse;}
.pf-ratios-tbl thead tr{border-bottom:1px solid var(--line);}
.pf-ratios-tbl th{font-family:var(--mono);font-size:5.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);padding:4px 7px 3px;text-align:right;font-weight:500;background:rgba(0,0,0,.35);position:sticky;top:0;z-index:1;}
.pf-ratios-tbl th:first-child{text-align:left;}
.pf-ratios-tbl td{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);padding:3.5px 7px;border-bottom:1px solid rgba(255,255,255,.03);text-align:right;white-space:nowrap;font-weight:500;}
.pf-ratios-tbl td:first-child{font-family:var(--sans);font-size:var(--fs-nano);color:var(--muted2);text-align:left;letter-spacing:.03em;display:flex;align-items:center;gap:5px;}
.pf-ratios-tbl tr:hover td{background:rgba(255,255,255,.025);cursor:pointer;}
.pf-ratios-tbl tr.on td{background:rgba(255,255,255,.04);}
.pf-ratios-tbl tr.on td:first-child{color:var(--accent);}
.pf-ratios-dot{display:none;}
.pf-ratios-chart-wrap{display:flex;flex-direction:column;overflow:hidden;background:var(--surface);padding:8px 12px 6px;}
.pf-ratios-chart-title{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);margin-bottom:6px;flex-shrink:0;}
.pf-ratios-canvas-wrap{flex:1;position:relative;min-height:0;}
/* overflow-y:auto (was hidden), 2026-07-12 — a safety net so genuinely
   tall content (e.g. Ratios' up to 9-row tables) scrolls into view on a
   constrained viewport instead of silently clipping; harmless when
   content already fits (no scrollbar appears). */
.pf-pubcomps-inner{display:flex;flex-direction:column;background:var(--surface);overflow-y:auto;overflow-x:hidden;}
.pf-pubcomps-topbar{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0;height:26px;padding:0 4px;overflow:visible;scrollbar-width:none;position:relative;z-index:30;}
.pf-pubcomps-topbar::-webkit-scrollbar{display:none;}
.pf-pubcomps-topbar-label{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.18em;text-transform:uppercase;color:var(--muted2);flex-shrink:0;}
.pf-pubcomps-stmt-tabs{display:flex;align-items:stretch;height:100%;gap:0;flex-shrink:0;}
.pf-pubcomps-stmt-tab{background:none;border:none;border-right:1px solid var(--line);padding:0 7px;font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);cursor:pointer;white-space:nowrap;transition:color .15s,background .15s;position:relative;}
.pf-pubcomps-stmt-tab:hover{color:var(--text);background:rgba(255,255,255,.025);}
.pf-pubcomps-stmt-tab.active{color:var(--accent);background:rgba(232,211,165,.04);}
.pf-pubcomps-stmt-tab.active::after{content:'';position:absolute;bottom:0;left:0;right:0;height:1.5px;background:var(--accent);}
/* Statement-tab buttons restyled to match Historia de Precio's pill
   buttons (2026-07-12 explicit request) — scoped to .pf-pc-htab-style (a
   new, uniquely-placed wrapper class, see the HTML comment at its use
   site) so Múltiplos' (pf-pct3-*) tabs, which share the base
   .pf-pubcomps-stmt-tab class but were NOT part of this request, stay
   exactly as they were. Ratios briefly used this same class too
   (2026-07-12), was converted to a dropdown (2026-07-13), then back to a
   pill row (2026-07-14) that went through a brief scroll-bar phase before
   landing on real font-size autofit (pf_autofitRatiosTabs, revived —
   see platform.js) the same day — this block applies to Comparables
   Públicos, Ratios, and (as of 2026-07-14) Historia de Precio's benchmark
   pills too, all three now autofit-driven rather than fixed-size.
   flex/min-width/overflow/text-overflow/text-align explicitly overridden,
   not just left unset — real bug caught before shipping the Ratios half
   of the 2026-07-12 restyle: a legacy `#tearsheet [id^="pf-pct2-"]` rule
   (kept for a DIFFERENT, older layout that paired equal-width flex-basis:0
   slots with pf_autofitRatiosTabs's dynamic per-viewport font-sizing) set
   flex:1 1 0 + overflow:hidden — back when pf_autofitRatiosTabs was
   TEMPORARILY a no-op (2026-07-12 through 2026-07-14, now revived),
   that combination silently squeezed "Profitability"
   (the longest label) below its own text width and hard-clipped it to
   "PROFITABIL" with no ellipsis. That legacy rule was removed outright on
   2026-07-13 once it turned out to still be live for pf-pct2-* IDs and was
   doing the exact same thing to the new dropdown's options — this
   .pf-pc-htab-style override remains
   only as Comparables Públicos' fix for the same underlying rule. */
.pf-pc-htab-style{background:rgba(255,255,255,.04);padding:2px;gap:1px;height:auto;}
#pf-tearsheet .pf-pc-htab-style .pf-pubcomps-stmt-tab{flex:0 0 auto;min-width:auto;border-right:none;padding:2px 6px;font-size:var(--fs-xs);letter-spacing:.08em;color:var(--muted2);overflow:visible;text-overflow:clip;text-align:center;}
#pf-tearsheet .pf-pc-htab-style .pf-pubcomps-stmt-tab:hover{color:var(--muted);background:none;}
#pf-tearsheet .pf-pc-htab-style .pf-pubcomps-stmt-tab.active{color:var(--text);background:rgba(255,255,255,.1);}
.pf-pc-htab-style .pf-pubcomps-stmt-tab.active::after{display:none;}
.pf-pubcomps-scale-group{display:flex;align-items:center;gap:3px;margin-left:auto;}
.pf-pubcomps-scale-label{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-pubcomps-scale-btn{background:none;border:1px solid var(--line);padding:2px 7px;font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);cursor:pointer;transition:all .15s;}
.pf-pubcomps-scale-btn:hover{border-color:var(--line2);color:var(--text);}
.pf-pubcomps-scale-btn.active{border-color:var(--accent);color:var(--accent);background:rgba(232,211,165,.06);}
/* overflow-y:auto (was hidden), 2026-07-12 — same safety-net reasoning as
   .pf-pubcomps-inner above. */
.pf-pubcomps-body{flex:1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;min-height:0;}

.pf-m3-toggle{font-family:var(--mono);font-size:.52rem;letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid rgba(255,255,255,.1);color:var(--muted2);padding:1px 5px;cursor:pointer;transition:color .15s,border-color .15s,background .15s;border-radius:2px;line-height:1.6;}
.pf-m3-toggle:hover:not(.active){border-color:rgba(255,255,255,.2);color:var(--muted);}
.pf-m3-toggle.active[data-g="tev"]{border-color:rgba(140,180,255,.5);color:rgba(140,180,255,.9);background:rgba(140,180,255,.08);}
.pf-m3-toggle.active[data-g="ntm"]{border-color:rgba(200,160,255,.5);color:rgba(200,160,255,.9);background:rgba(200,160,255,.08);}

/* Two-pane layout — no gap between columns */
.pf-pc-layout{display:grid;grid-template-columns:1fr;gap:0;flex:1;min-height:0;overflow:hidden;height:100%;}

/* Left: metric list */
.pf-pc-list{display:flex;flex-direction:column;border-right:none;overflow:hidden;background:var(--bg);margin:0;padding:0;}
.pf-pc-list::-webkit-scrollbar{display:none;}
.pf-pc-list::-webkit-scrollbar-thumb{background:transparent;}
.pf-pc-metric-item{display:flex;align-items:center;gap:0;padding:5px 8px;cursor:pointer;transition:background .12s;margin:0;}
.pf-pc-metric-item:hover{background:rgba(255,255,255,.03);}
.pf-pc-metric-item.active{background:transparent;}
.pf-pc-metric-item-dot{display:none;}
.pf-pc-metric-item-dot.active{display:none;}
.pf-pc-metric-item-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);line-height:1.3;transition:color .12s;}
.pf-pc-metric-item.active .pf-pc-metric-item-label{color:var(--accent);}
.pf-pubcomps-menu-wrap{position:relative;display:flex;height:100%;z-index:31;}
.pf-pubcomps-metric-menu{display:none;position:absolute;top:100%;left:0;min-width:150px;background:#0c0c0c;border:1px solid rgba(255,255,255,.08);z-index:20;box-shadow:0 16px 36px rgba(0,0,0,.45);}
/* #pf-ts-bench-menu's own position:fixed override + hover-selector entry
   removed 2026-07-14 — Historia de Precio's benchmark dropdown was
   replaced with a scrollable pill row that day (explicit request, same
   direction as Ratios' own dropdown→scroll reversal); this base
   .pf-pubcomps-metric-menu/.pf-pubcomps-metric-option pair stays exactly
   as-is for Comparables Públicos' own per-statement metric-picker
   dropdowns, its only remaining consumer. */
.pf-pubcomps-metric-menu.open,.pf-pubcomps-menu-wrap:hover>.pf-pubcomps-metric-menu,.pf-pubcomps-menu-wrap:focus-within>.pf-pubcomps-metric-menu{display:flex;flex-direction:column;}
.pf-pubcomps-metric-option{background:none;border:0;border-bottom:1px solid rgba(255,255,255,.04);color:var(--muted2);font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.08em;text-transform:uppercase;text-align:left;padding:7px 9px;cursor:pointer;white-space:nowrap;}
.pf-pubcomps-metric-option:hover,.pf-pubcomps-metric-option.active{color:var(--accent);background:rgba(232,211,165,.05);}
/* Ratios category pills / Historia de Precio benchmark pills — both used
   a horizontal-scroll-bar approach for one round on 2026-07-14 (scoped
   classes .pf-ratios-scroll-tabs/.pf-ts-bench-scroll), superseded the
   same day by real per-panel font-size autofit instead (explicit
   request: "eliminate the scroll bar... fit the text inside of the
   header" — see pf_autofitRatiosTabs/pf_autofitTsBenchTabs in
   platform.js). Removed rather than left dead. */

/* Right: expanded chart */
.pf-pc-detail{display:flex;flex-direction:column;overflow:hidden;background:var(--surface);margin:0;padding:0;}
.pf-pc-chart-area{display:flex;flex-direction:column;padding:6px 8px 4px 0;gap:0;height:100%;overflow:hidden;box-sizing:border-box;}
.pf-pc-chart-metric-name{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text);margin-bottom:2px;flex-shrink:0;}
.pf-pc-chart-subtitle{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);margin-bottom:8px;flex-shrink:0;}
/* Vertical bar layout */
.pf-pc-chart-rows{display:flex;flex-direction:row;gap:3px;width:100%;flex:1;align-items:flex-end;justify-content:space-around;position:relative;z-index:1;min-height:0;}
.pf-pc-chart-row{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;height:100%;justify-content:flex-end;}
.pf-pc-chart-row.primary .pf-pc-chart-tk{color:var(--accent);}
/* Axis text matches Historia de Precio's Chart.js tick spec exactly
   (scales.x/price.ticks in pf_buildTsChart: IBM Plex Mono 8.3px,
   rgba(255,255,255,.9), no letter-spacing/uppercase) — kept as real DOM
   rules here since this chart is templated HTML, not canvas. */
.pf-pc-chart-tk{font-family:var(--mono);font-size:8.3px;color:rgba(255,255,255,.9);text-align:center;white-space:nowrap;order:3;flex-shrink:0;}
.pf-pc-chart-tk.primary{color:var(--accent);font-weight:600;}
.pf-pc-chart-track{width:100%;flex:1;background:transparent;position:relative;overflow:hidden;border:none;display:flex;align-items:flex-end;order:2;}
.pf-pc-chart-row.primary .pf-pc-chart-track{border:none;}
.pf-pc-bar-fill{width:100%;position:absolute;bottom:0;left:0;transition:height .45s cubic-bezier(.16,1,.3,1);}
/* Y-axis layout for pubcomps */
.pf-pc-chart-with-yaxis{display:flex;flex-direction:row;gap:0;flex:1;min-height:0;overflow:hidden;}
.pf-pc-yaxis{display:flex;flex-direction:column;justify-content:space-between;width:38px;flex-shrink:0;padding-bottom:18px;padding-top:2px;padding-right:4px;}
.pf-pc-yaxis-tick{font-family:var(--mono);font-size:8.3px;color:rgba(255,255,255,.9);text-align:right;white-space:nowrap;line-height:1;}
.pf-pc-bars-wrap{display:flex;flex-direction:column;flex:1;min-height:0;position:relative;}
/* Horizontal reference lines (2026-07-15, explicit request) — one per
   y-axis tick, already built in JS (pcBuildChart's gridHTML) but never
   shown. padding-top/bottom match .pf-pc-yaxis exactly so each line lands
   at the same height as its corresponding tick label; justify-content:
   space-between spaces all 5 the same way the tick labels themselves are
   spaced. Sits behind the bars (.pf-pc-chart-rows is z-index:1) and
   pointer-events:none so it never intercepts bar hover. */
.pf-pc-gridlines{display:flex;flex-direction:column;justify-content:space-between;position:absolute;inset:0;padding-top:2px;padding-bottom:18px;pointer-events:none;z-index:0;box-sizing:border-box;}
.pf-pc-gridline{width:100%;height:1px;background:rgba(255,255,255,.06);}
.pf-pc-zero-line{position:absolute;left:0;right:0;bottom:50%;height:1px;background:rgba(255,255,255,.18);z-index:1;}
/* Column label sitting on top of its OWN bar (2026-07-15, explicit
   request) — markup already existed (pcBuildChart), just CSS-hidden
   before. Lives inside .pf-pc-chart-track (position:relative) now, not as
   a flex sibling in the row, so its bottom/top offset (set inline, per
   bar, matching the exact same pct/h math the fill itself uses) tracks
   THAT column's own height instead of every label sharing one fixed row
   at the chart's top edge regardless of how tall each bar actually is.
   Font spec matches .pf-pc-yaxis-tick (same mono/8.3px/rgba(255,255,255,.9)
   the y-axis ticks already use) for visual consistency between the two. */
.pf-pc-chart-val{position:absolute;left:0;right:0;font-family:var(--mono);font-size:8.3px;color:rgba(255,255,255,.9);text-align:center;white-space:nowrap;z-index:2;}
.pf-pc-chart-val.primary{color:var(--accent);font-weight:600;}
/* Full-width news strip — sits above the dashboard, flush with identity */
.pf-ts-news-fullwidth{display:flex;flex-shrink:0;background:var(--surface);border-bottom:1px solid rgba(255,255,255,0.05);overflow:hidden;}
.pf-ts-news-fullwidth .pf-news-bar-inner{flex:1;overflow:hidden;position:relative;}
.pf-ts-news-fullwidth .pf-news{height:86px;display:flex;flex-wrap:nowrap;overflow-x:auto;background:transparent;padding:0;gap:1px;}
.pf-ts-news-fullwidth .pf-news::-webkit-scrollbar{height:2px;}
.pf-ts-news-fullwidth .pf-news::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
.pf-ts-news-fullwidth .pf-news-card{width:270px;min-width:270px;height:86px;background:var(--surface);padding:10px 14px;display:flex;flex-direction:column;justify-content:space-between;border-right:1px solid var(--line);}
/* Key data / metrics — full-width column layout */
.pf-ts-metrics-row{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);flex-shrink:0;align-items:stretch;}
.pf-ts-metric-group{background:var(--surface);display:flex;flex-direction:column;}
.pf-ts-mg-header{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:5px 8px 4px;background:rgba(0,0,0,.3);border-bottom:1px solid var(--line);flex-shrink:0;font-weight:500;}
/* Two-column inner grid: 8 cells = 4 rows × 2 cols, each cell identical height */
.pf-ts-mg-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(4,auto);gap:1px;background:var(--line);flex:1;}
.pf-ts-kd-cell{background:var(--surface);padding:4px 6px;display:flex;flex-direction:column;justify-content:center;height:100%;box-sizing:border-box;min-width:0;}
.pf-ts-kd-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.04em;color:var(--muted2);word-break:break-word;}
.pf-ts-kd-val{font-family:var(--mono);font-style:normal;font-size:var(--fs-sm);font-weight:500;color:var(--text);line-height:1.2;word-break:break-word;letter-spacing:.02em;}
/* Rendimiento strip — matches Historia de Precio typography */
#pf-macro-strip .pf-ts-kd-label{font-size:var(--fs-sm);font-weight:500;letter-spacing:.02em;color:var(--text);white-space:nowrap;word-break:normal;}
#pf-macro-strip .pf-ts-kd-val{font-family:var(--mono);font-weight:400;font-size:var(--fs-sm);color:var(--muted);white-space:nowrap;word-break:normal;line-height:1.2;}
/* No border-top/row dividers here — matches Historia de Precio's Key Data
   grid (platform.js, pf_renderTearsheetTab's metricGroups render), which is
   fully borderless cell-to-cell and row-to-row. */
/* Watchlist delete button */
.pf-wl-del-btn{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:var(--fs-lg);line-height:1;color:var(--muted2);cursor:pointer;border-radius:2px;transition:color .15s,background .15s;}
.pf-wl-del-btn:hover{color:var(--dn);background:rgba(255,80,80,.10);}
/* Pie legend */
.pf-pie-legend{display:flex;flex-direction:column;gap:5px;padding:8px 0 0 0;}
.pf-pie-legend-item{display:flex;align-items:center;gap:6px;}
.pf-pie-legend-label{font-family:var(--sans);font-size:var(--fs-sm);font-weight:500;color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-pie-legend-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);letter-spacing:.05em;flex-shrink:0;}
/* Segmentos/Geografías legend, extreme case (>4 breakdown lines, e.g.
   MSFT's 9 segments) — a 2-col grid was tried here first, but at ~74px
   per column the (necessarily nowrap+ellipsis) label truncated to
   near-unreadable ("Server P…") — worse than the original problem.
   Kept single-column (full ~155px label width reads far more of the
   name) and instead pairs a smaller donut (see pf_renderRevPies —
   100px shrinks to 64px in this case, freeing vertical room) with a
   smaller legend font, leaning on the existing overflow-y:auto for
   genuinely long lists. Only pf-seg-legend/pf-geo-legend ever get this
   class; normal <=4 item cases never gain it and render exactly as
   before. */
.pf-pie-legend-compact{gap:2px;}
.pf-pie-legend-compact .pf-pie-legend-label{font-size:var(--fs-nano);}
.pf-pie-legend-compact .pf-pie-legend-val{font-size:var(--fs-nano);}
.pf-pie-legend-compact .pf-pie-legend-val{font-size:var(--fs-xs);}

/* ══ M.O.D. — Modal Overlay Drawer (Earnings Intelligence) ══ */
#pf-mod-overlay{position:fixed;inset:0;background:rgba(0,0,0,.78);z-index:9100;display:none;align-items:flex-end;justify-content:center;backdrop-filter:blur(6px);}
#pf-mod-overlay.open{display:flex;}
#pf-mod-drawer{
  width:100%;max-width:1320px;height:72vh;min-height:480px;
  background:#080808;
  border:1px solid rgba(255,255,255,.08);
  border-bottom:none;
  border-radius:6px 6px 0 0;
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 -24px 80px rgba(0,0,0,.85);
  transform:translateY(100%);opacity:0;
  transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .22s ease;
}
#pf-mod-overlay.open #pf-mod-drawer{transform:translateY(0);opacity:1;}
/* drag handle */
.pf-mod-handle{width:36px;height:3px;background:rgba(255,255,255,.14);border-radius:2px;margin:10px auto 0;flex-shrink:0;}
/* header */
.pf-mod-header{display:flex;align-items:center;padding:10px 22px 11px;border-bottom:1px solid rgba(255,255,255,.07);flex-shrink:0;gap:16px;}
.pf-mod-eyebrow{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:8px;}
.pf-mod-eyebrow::before{content:'';width:18px;height:1px;background:var(--accent);opacity:.6;}
.pf-mod-title{font-family:var(--mono);font-size:var(--fs-md);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#fff;}
.pf-mod-sub{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);letter-spacing:.08em;}
.pf-mod-close{margin-left:auto;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:3px;border:1px solid rgba(255,255,255,.08);color:var(--muted);font-size:13px;transition:background .12s,color .12s;flex-shrink:0;}
.pf-mod-close:hover{background:rgba(255,255,255,.06);color:#fff;}
/* tab strip */
.pf-mod-tabs{display:flex;align-items:stretch;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0;overflow-x:auto;scrollbar-width:none;}
.pf-mod-tabs::-webkit-scrollbar{display:none;}
.pf-mod-tab{background:none;border:none;border-bottom:2px solid transparent;padding:0 20px;height:36px;font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);cursor:pointer;white-space:nowrap;transition:color .2s,border-color .2s;display:flex;align-items:center;gap:7px;}
.pf-mod-tab:hover{color:var(--text);}
.pf-mod-tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.pf-mod-tab-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0;}
/* body */
.pf-mod-body{flex:1;overflow:hidden;display:flex;flex-direction:column;}
.pf-mod-pane{display:none;flex:1;overflow-y:auto;flex-direction:column;}
.pf-mod-pane.active{display:flex;}
.pf-mod-pane::-webkit-scrollbar{width:3px;}
.pf-mod-pane::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
/* status bar */
.pf-mod-status{padding:7px 22px;font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);display:flex;align-items:center;gap:10px;border-top:1px solid rgba(255,255,255,.05);flex-shrink:0;}
.pf-mod-status-dot{width:5px;height:5px;border-radius:50%;background:#34d399;animation:pf-mod-pulse 2s ease-in-out infinite;}
@keyframes pf-mod-pulse{0%,100%{opacity:.5}50%{opacity:1}}
/* ── Section headers inside panes ── */
.pf-mod-section{padding:18px 22px 0;}
.pf-mod-section-label{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.22em;text-transform:uppercase;color:var(--muted2);padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.05);margin-bottom:14px;}
/* ── Earnings Calendar table ── */
.pf-mod-cal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1px;background:rgba(255,255,255,.05);margin:0 22px 18px;}
.pf-mod-cal-card{background:#0c0c0c;padding:12px 14px;display:flex;flex-direction:column;gap:5px;}
.pf-mod-cal-date{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-mod-cal-event{font-family:var(--sans);font-size:var(--fs-sm);font-weight:600;color:#fff;}
.pf-mod-cal-meta{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted);display:flex;gap:10px;flex-wrap:wrap;}
.pf-mod-cal-badge{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border:1px solid;border-radius:2px;}
/* ── EPS Surprise table ── */
.pf-mod-eps-table{width:100%;border-collapse:collapse;margin:0 0 18px;}
.pf-mod-eps-table thead th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:6px 10px;text-align:left;font-weight:500;}
.pf-mod-eps-table thead th:not(:first-child){text-align:right;}
.pf-mod-eps-table tbody td{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.02em;color:var(--muted);padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.035);}
.pf-mod-eps-table tbody td:not(:first-child){text-align:right;}
.pf-mod-eps-table tbody tr:hover{background:rgba(255,255,255,.025);}
.pf-mod-beat-bar{display:flex;gap:3px;justify-content:flex-end;align-items:center;}
.pf-mod-beat-sq{width:8px;height:8px;border-radius:1px;flex-shrink:0;}
/* ── Earnings Call transcript ── */
.pf-mod-call-header{display:flex;align-items:center;gap:14px;padding:14px 22px;border-bottom:1px solid rgba(255,255,255,.06);flex-shrink:0;}
.pf-mod-call-title{font-family:var(--sans);font-size:var(--fs-md);font-weight:600;color:#fff;}
.pf-mod-call-sub{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.1em;color:var(--muted2);text-transform:uppercase;}
.pf-mod-call-chip{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.1em;text-transform:uppercase;padding:3px 9px;border:1px solid;border-radius:2px;cursor:pointer;transition:all .15s;flex-shrink:0;}
.pf-mod-call-scroll{flex:1;overflow-y:auto;padding:0;}
.pf-mod-call-scroll::-webkit-scrollbar{width:3px;}
.pf-mod-call-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
.pf-mod-transcript-seg{display:flex;gap:14px;padding:12px 22px;border-bottom:1px solid rgba(255,255,255,.04);}
.pf-mod-transcript-seg:hover{background:rgba(255,255,255,.02);}
.pf-mod-ts-meta{flex-shrink:0;width:110px;display:flex;flex-direction:column;gap:3px;}
.pf-mod-ts-speaker{font-family:var(--sans);font-size:var(--fs-sm);font-weight:600;color:#fff;}
.pf-mod-ts-role{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
.pf-mod-ts-time{font-family:var(--mono);font-size:var(--fs-nano);color:var(--muted2);letter-spacing:.06em;}
.pf-mod-ts-text{font-family:var(--sans);font-size:var(--fs-sm);line-height:1.75;color:var(--muted);flex:1;}
.pf-mod-ts-text mark{background:rgba(232,211,165,.18);color:var(--accent);border-radius:2px;padding:0 2px;}
/* ── Guidance / Outlook ── */
.pf-mod-guidance-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1px;background:rgba(255,255,255,.05);margin:0 22px 18px;}
.pf-mod-guid-card{background:#0c0c0c;padding:12px 14px;display:flex;flex-direction:column;gap:4px;}
.pf-mod-guid-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-mod-guid-val{font-family:var(--mono);font-size:var(--fs-lg);font-weight:700;color:#fff;letter-spacing:.02em;}
.pf-mod-guid-range{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);letter-spacing:.04em;}
.pf-mod-guid-vs{font-family:var(--sans);font-size:var(--fs-xs);display:flex;align-items:center;gap:5px;margin-top:2px;}
.pf-mod-guid-delta{font-family:var(--mono);font-size:var(--fs-sm);font-weight:600;}
/* ── Loading skeleton ── */
.pf-mod-skeleton{height:12px;background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.04) 75%);background-size:200% 100%;animation:pf-mod-shimmer 1.4s infinite;border-radius:2px;margin-bottom:8px;}
@keyframes pf-mod-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* ── Revenue vs. Earnings cell — clickable cue ── */
.pf-vg-cell.pf-mod-trigger{cursor:pointer;position:relative;transition:background .15s;}
.pf-vg-cell.pf-mod-trigger:hover{background:rgba(255,255,255,.018);}
.pf-vg-cell.pf-mod-trigger::after{content:'';display:none;}
.pf-vg-cell.pf-mod-trigger:hover::after{color:rgba(232,211,165,.8);}

/* ── Revenue Deep-Dive Drawer ── */
#pf-rev-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.72);z-index:9000;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
#pf-rev-drawer-overlay.open{display:flex;}
#pf-rev-drawer{background:#0c0c0c;border:1px solid rgba(255,255,255,0.09);border-radius:4px;width:min(860px,92vw);max-height:82vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 32px 80px rgba(0,0,0,0.8);transform:translateY(12px);opacity:0;transition:transform .22s cubic-bezier(.16,1,.3,1),opacity .18s ease;}
#pf-rev-drawer-overlay.open #pf-rev-drawer{transform:translateY(0);opacity:1;}
.pf-rd-header{display:flex;align-items:center;padding:14px 20px 13px;border-bottom:1px solid rgba(255,255,255,0.07);flex-shrink:0;gap:14px;}
.pf-rd-title{font-family:var(--sans);font-size:var(--fs-md);font-weight:600;color:var(--text);letter-spacing:.06em;text-transform:uppercase;}
.pf-rd-sub{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);letter-spacing:.1em;text-transform:uppercase;}
.pf-rd-close{margin-left:auto;cursor:pointer;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:3px;border:1px solid rgba(255,255,255,0.07);color:var(--muted);font-size:var(--fs-lg);line-height:1;transition:background .12s,color .12s;flex-shrink:0;}
.pf-rd-close:hover{background:rgba(255,255,255,0.06);color:var(--text);}
.pf-rd-body{overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:1px;background:var(--line);}
.pf-rd-section{background:var(--surface);padding:18px 20px 16px;}
.pf-rd-section-title{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:14px;}
.pf-rd-charts-row{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);}
.pf-rd-chart-panel{background:var(--surface);padding:18px 20px 16px;}
.pf-rd-chart-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--muted2);margin-bottom:12px;}
.pf-rd-pie-wrap{display:flex;flex-direction:row;align-items:center;gap:20px;}
.pf-rd-table{width:100%;border-collapse:collapse;}
.pf-rd-table th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:5px 10px 5px 0;border-bottom:1px solid rgba(255,255,255,0.06);text-align:left;font-weight:500;}
.pf-rd-table th:not(:first-child){text-align:right;}
.pf-rd-table td{font-family:var(--mono);font-size:var(--fs-xs);color:var(--text);padding:7px 10px 7px 0;border-bottom:1px solid rgba(255,255,255,0.04);}
.pf-rd-table td:not(:first-child){text-align:right;color:var(--muted);}
.pf-rd-table td.pf-rd-seg-name{font-family:var(--sans);font-size:var(--fs-sm);color:var(--text);}
.pf-rd-bar-row{display:grid;grid-template-columns:130px 1fr 48px;align-items:center;gap:10px;padding:4px 0;}
.pf-rd-bar-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-rd-bar-track{height:4px;background:rgba(255,255,255,0.06);border-radius:2px;overflow:hidden;}
.pf-rd-bar-fill{height:100%;border-radius:2px;transition:width .4s ease;}
.pf-rd-bar-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);text-align:right;}
/* Sidebars — IBM Plex Mono + type scale */
#pf-home-news-sidebar,
#pf-ts-news-sidebar,
#pf-ts-vault-sidebar,
#pf-macro-left-news-sidebar{
  --sans:    'IBM Plex Mono',monospace;
  --serif:   'IBM Plex Mono',monospace;
  --fs-nano: 6.5px;
  --fs-xs:   7.5px;
  --fs-sm:   9px;
  --fs-md:   11px;
  --fs-lg:   15px;
  --fs-xl:   24px;
  font-family:'IBM Plex Mono',monospace;
}

/* Description band inside tearsheet (replaces news bar) */
.pf-ts-desc-band{background:var(--surface);padding:13px 20px 14px;flex-shrink:0;border-bottom:1px solid rgba(255,255,255,.05);}
.pf-ts-desc-band .pf-ts-desc-text{font-size:10.5px;line-height:1.9;color:var(--muted);margin:0;}
.pf-ts-nh-card{width:280px;min-width:280px;background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;gap:6px;cursor:pointer;flex-shrink:0;transition:filter .15s;text-decoration:none;color:inherit;}
.pf-ts-nh-card:hover{filter:brightness(1.25);}
.pf-ts-nh-top{display:flex;align-items:center;justify-content:space-between;}
.pf-ts-nh-source{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-ts-nh-tag{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.1em;border:1px solid;padding:1px 6px;text-transform:uppercase;}
.pf-ts-nh-hl{font-family:var(--sans);font-size:var(--fs-sm);line-height:1.6;color:var(--muted);flex:1;}
.pf-ts-nh-ts{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
/* News row */
.pf-ts-news-row{background:var(--line);flex-shrink:0;}
.pf-ts-news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1px;background:var(--line);padding:1px;}
.pf-ts-news-card{padding:12px 14px;display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:filter .15s;text-decoration:none;color:inherit;}
.pf-ts-news-card:hover{filter:brightness(1.25);}
.pf-ts-news-top{display:flex;align-items:center;justify-content:space-between;}
.pf-ts-news-source{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-ts-news-tag{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.1em;border:1px solid;padding:1px 6px;text-transform:uppercase;}
.pf-ts-news-hl{font-family:var(--sans);font-size:var(--fs-sm);line-height:1.6;color:var(--muted);}
.pf-ts-news-ts{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);text-transform:uppercase;letter-spacing:.1em;}
/* Keep old classes from breaking other references */
.pf-ts-meta{display:none;}
.pf-ts-nav{display:none;}
.pf-ts-controls{display:none;}
.pf-metrics-row{display:none;}
.pf-returns{display:none;}

/* ── TEARSHEET TYPOGRAPHY HARMONY WITH HOME ─────────────── */
#pf-tearsheet{
  font-family:var(--sans);
}
/* Identity logo — sized up, clipped to the same rounded-square shape as the
   reference (border-radius+overflow:hidden, so a square source image still
   reads as a clean rounded icon), but with no added background fill or
   border stroke around it — just the icon itself, no box. Overrides
   .pf-wl-logo-wrap's normal 32px treatment used everywhere else
   (Watchlist/RADAR rows) — scoped to this one spot only. */
#pf-ts-identity .pf-wl-logo-wrap{
  width:52px;
  height:52px;
  border-radius:6px;
  overflow:hidden;
  background:none;
}
#pf-tearsheet .pf-ts-id-left{
  padding:10px 14px 4px;
}
#pf-tearsheet .pf-ts-id-symbol{
  font-family:var(--mono);
  font-size:var(--fs-lg);
  font-weight:800;
  color:var(--muted2);
  letter-spacing:.06em;
}
#pf-tearsheet .pf-ts-id-change{
  font-family:var(--mono);
  font-size:10px;
  font-weight:900;
  letter-spacing:.02em;
  line-height:1;
}
#pf-tearsheet .pf-ts-id-ticker,
#pf-tearsheet .pf-ts-id-badge,
#pf-tearsheet .pf-ts-meta-label,
#pf-tearsheet .pf-ts-mg-header,
#pf-tearsheet .pf-ts-news-source,
#pf-tearsheet .pf-ts-news-ts,
#pf-tearsheet .pf-ts-nh-source,
#pf-tearsheet .pf-ts-nh-ts,
#pf-tearsheet .pf-vg-section-header,
#pf-tearsheet .pf-pc-chart-metric-name,
#pf-tearsheet .pf-ratios-chart-title{
  font-family:var(--sans);
  font-size:var(--fs-xs);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted2);
}
#pf-tearsheet .pf-ts-desc-text{
  font-family:var(--mono);
  font-size:var(--fs-sm);
  line-height:1.9;
  color:var(--muted);
}
#pf-tearsheet .pf-ts-meta-val,
#pf-tearsheet .pf-ts-kd-val,
#pf-tearsheet .pf-pie-legend-val,
#pf-tearsheet .pf-tsv-br-val,
#pf-tearsheet .pf-pt-stat-val{
  font-family:var(--sans);
  font-style:normal;
  font-size:var(--fs-sm);
  font-weight:500;
  letter-spacing:.02em;
  color:var(--text);
}
#pf-tearsheet .pf-ts-kd-val{font-family:var(--mono);font-weight:400;font-size:var(--fs-sm);color:var(--muted);white-space:nowrap;}
/* Identity row meta values + price match "NVIDIA CORPORATION" exactly */
#pf-ts-identity .pf-ts-meta-val{
  font-family:var(--mono);
  font-weight:800;
  font-size:var(--fs-sm);
  letter-spacing:.04em;
}
#pf-tearsheet .pf-ts-id-price{
  font-family:var(--mono);
  font-style:normal;
  font-size:28px;
  font-weight:900;
  letter-spacing:.04em;
  line-height:1.1;
}
#pf-tearsheet .pf-ts-id-name{
  font-family:var(--mono);
  font-style:normal;
  font-size:var(--fs-xl);
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
  line-height:1.2;
  color:#ffffff;
}
#pf-tearsheet .pf-ts-kd-label{
  font-family:var(--sans);
  font-size:var(--fs-sm);
  font-weight:500;
  letter-spacing:.02em;
  color:var(--text);
  white-space:nowrap;
}
#pf-tearsheet .pf-tsv-br-lbl,
#pf-tearsheet .pf-pt-stat-label{
  font-family:var(--sans);
  font-size:var(--fs-xs);
  letter-spacing:.02em;
  color:var(--muted2);
}
#pf-tearsheet .pf-pie-legend-label{
  font-family:var(--sans);
  font-size:var(--fs-sm);
  font-weight:500;
  letter-spacing:0;
}
#pf-tearsheet .pf-pubcomps-stmt-tab,
#pf-tearsheet .pf-pubcomps-metric-option,
#pf-tearsheet .pf-pubcomps-scale-label,
#pf-tearsheet .pf-pubcomps-scale-btn,
#pf-tearsheet .pf-pc-chart-subtitle{
  font-family:var(--sans);
  font-size:var(--fs-xs);
  letter-spacing:.08em;
  text-transform:uppercase;
}
/* .pf-pc-chart-tk/.pf-pc-yaxis-tick deliberately NOT overridden here — the
   base rules above already carry the Historia de Precio-matched axis-text
   spec (IBM Plex Mono 8.3px, rgba(255,255,255,.9)) and this scope must not
   re-introduce the old sans/uppercase/muted styling over them. */
#pf-tearsheet .pf-pubcomps-stmt-tab{
  font-weight:500;
}
/* Multiplos topbar: autofit tabs so all 7 items fit within bounds */
#pf-multiplos-topbar {
  overflow: hidden !important;
}
#pf-multiplos-topbar .pf-pubcomps-stmt-tabs {
  max-width: 100%;
  overflow: hidden;
  flex-shrink: 1;
  display: flex;
  min-width: 0;
  width: 100%;
}
#pf-tearsheet [id^="pf-pct3-"] {
  flex: 1 1 0;
  min-width: 0;
  padding: 0 3px;
  font-size: 5px; /* overridden at runtime by pf_autofitMultiplosTabs */
  letter-spacing: 0;
  white-space: nowrap;
  overflow: visible;
  text-overflow: clip;
  text-align: center;
}
/* Hide ⓘ badges inside Multiplos tabs to save horizontal space */
#pf-tearsheet [id^="pf-pct3-"] .pf-mti {
  display: none;
}
/* Ratios (pf-pubcomps2) — the [id^="pf-pct2-"] rule that used to live here
   (2026-07-12, "auto-fit all 6 tabs") styled the flat horizontal tab row
   that stood in .pf-pubcomps-topbar/.pf-pubcomps-stmt-tabs. Both that
   markup and the .pf-pubcomps-col wrapper it targeted were replaced by a
   dropdown (2026-07-13) whose options reused the SAME pf-pct2-* ids (for
   pf_pubcomps2SetStmt's existing id-prefix selector) but were vertical
   .pf-pubcomps-metric-option entries. The old rule's flex:1 1 0 +
   overflow:hidden + padding:0 + text-align:center — fine for equal-width
   horizontal pills — collapsed each dropdown row to near-zero height and
   clipped its label, since [id^="pf-pct2-"] is a bare attribute selector
   with no .pf-pubcomps-col scoping and kept matching the new elements.
   Removed entirely rather than rescoped. 2026-07-14: pf-pct2-* is back to
   being a horizontal pill row, font-size autofit-driven (pf_autofitRatiosTabs
   in platform.js) rather than dropdown/wrapped/scroll-barred. */
#pf-tearsheet .pf-ratios-tbl th,
#pf-tearsheet .pf-fin-tbl th,
#pf-tearsheet .pf-lr-table th{
  font-family:var(--sans);
  font-size:var(--fs-xs);
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted2);
  font-weight:500;
}
#pf-tearsheet .pf-ratios-tbl td,
#pf-tearsheet .pf-fin-tbl td,
#pf-tearsheet .pf-lr-table td{
  font-family:var(--sans);
  font-size:var(--fs-sm);
  letter-spacing:.02em;
  color:var(--muted);
}
#pf-tearsheet .pf-ratios-tbl td:first-child,
#pf-tearsheet .pf-fin-tbl td:first-child{
  font-family:var(--sans);
  font-size:var(--fs-sm);
}
/* 2026-07-12: removed the .pf-fin-section-row/.pf-fin-sub-specific
   downsize to var(--fs-xs) that used to live here — it left .pf-fin-key
   (total/subtotal rows) as the ONLY row type still at the 9px size above,
   producing a real, unintentional 3-way font-size inconsistency in the
   Linea column (headers 7.5px, detail lines 7.5px, totals 9px — nothing
   in this file's history documents that as deliberate). Every Linea-
   column cell — section header, detail line, or total — now shares the
   same var(--fs-sm) (9px) from the rule directly above, per explicit
   request ("make the Linea column have the same font size... make all
   text readable"). */
/* Needs to out-specificity #pf-tearsheet .pf-fin-tbl th/td above (both
   ID-scoped) — without this, .pf-fin-key's color intent (see site.css's
   base FINANCIALS block) gets silently flattened back to the plain muted
   default for every number in the live, tearsheet-embedded Financials
   panel (the only place this table actually renders). */
#pf-tearsheet .pf-fin-tbl .pf-fin-key td{color:var(--text);font-weight:500;}
#pf-tearsheet .pf-tsv-br.verdict .pf-tsv-br-val{
  font-family:var(--sans);
  font-style:normal;
  font-size:var(--fs-sm);
}

/* ══ TEARSHEET VAULT SIDEBAR — fixed overlay, slides in from left ══ */
/* ── Vault Sidebar ──────────────────────────────────────────────── */
#pf-ts-vault-sidebar{
  position:fixed;
  top:0;left:0;bottom:0;
  width:340px;
  z-index:99990;
  transform:translateX(-100%);
  transition:transform .28s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;
  background:#090909;
  border-right:1px solid rgba(232,211,165,.12);
  overflow:hidden;
  pointer-events:none;
  box-shadow:none;
}
#pf-ts-vault-sidebar::before{
  content:'';
  position:absolute;
  top:0;left:0;right:0;height:2px;
  background:linear-gradient(270deg,rgba(232,211,165,.9) 0%,rgba(232,211,165,.12) 100%);
  z-index:2;pointer-events:none;
}
#pf-ts-vault-sidebar.pf-vsb-open{
  transform:translateX(0);
  pointer-events:auto;
  box-shadow:48px 0 120px rgba(0,0,0,.96),1px 0 0 rgba(232,211,165,.06);
}

/* ─ Trigger strip ─ */
#pf-ts-vault-trigger{
  position:fixed;
  top:0;left:0;bottom:0;
  width:20px;
  z-index:99989;
  cursor:w-resize;
  display:none;
}
#pf-ts-vault-trigger::after{
  content:'';
  position:absolute;
  left:0;top:20%;bottom:20%;width:1px;
  background:linear-gradient(to bottom,transparent,rgba(232,211,165,.4),transparent);
  opacity:0;transition:opacity .3s;
}
#pf-ts-vault-trigger:hover::after{ opacity:1; }

/* ─ Vault button in identity bar ─ */
.pf-ts-vault-hint{
  display:flex;align-items:center;justify-content:center;
  width:26px;height:26px;flex-shrink:0;
  cursor:pointer;color:var(--accent);
  animation:vsb-hint-drift 3.2s ease-in-out infinite;
}
.pf-ts-vault-hint:hover{
  opacity:1 !important;
  animation:none;
}
@keyframes vsb-hint-drift{
  0%,100%{ opacity:.42; transform:translateX(1px); }
  48%,52%{ opacity:.95; transform:translateX(-7px); }
}

/* ─ Header ─ */
.pf-ts-vsb-header{
  display:flex;flex-direction:column;gap:9px;
  padding:24px 16px 15px;flex-shrink:0;
  border-bottom:1px solid rgba(255,255,255,.055);
}
.pf-ts-vsb-eyebrow{
  font-family:var(--mono);font-size:var(--fs-nano);
  letter-spacing:.26em;text-transform:uppercase;
  color:var(--accent);opacity:.45;
}
.pf-ts-vsb-hrow{
  display:flex;align-items:baseline;
  justify-content:space-between;gap:8px;
}
.pf-ts-vsb-htitle{
  font-family:var(--serif);font-size:var(--fs-xl);font-weight:400;
  font-style:italic;letter-spacing:-.015em;
  color:var(--text);line-height:1;
}
.pf-ts-vsb-ticker-label{
  font-family:var(--mono);font-size:var(--fs-xs);font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
  color:var(--accent);
  padding:2px 7px;
  border:1px solid rgba(232,211,165,.2);
  background:rgba(232,211,165,.06);
  flex-shrink:0;
}

/* ─ Cards scroll area ─ */
.pf-ts-vsb-cards{
  display:flex;flex-direction:column;
  flex:1;overflow-y:auto;
  padding:12px 12px 12px;gap:8px;
}
.pf-ts-vsb-cards::-webkit-scrollbar{width:0;}

/* ─ Card ─ */
.pf-ts-vsb-card{
  display:flex;flex-direction:column;
  cursor:pointer;position:relative;overflow:hidden;
  text-decoration:none;color:inherit;
}
.pf-ts-vsb-card::before{
  content:'';
  position:absolute;top:0;left:0;bottom:0;width:2px;
  opacity:0;transition:opacity .2s;z-index:2;
}
.pf-ts-vsb-card--tesis::before{ background:var(--accent); }
.pf-ts-vsb-card--modelo::before{ background:#66bb6a; }
.pf-ts-vsb-card--stream::before{ background:#ef5350; }
.pf-ts-vsb-card:hover::before{ opacity:1; }

/* ─ Cover ─ */
.pf-ts-vsb-cover{
  position:relative;width:100%;
  height:160px;overflow:hidden;
}
.pf-ts-vsb-cover-img{
  position:absolute;inset:0;
  background-size:cover;background-position:center;
  transition:transform .45s;
}
.pf-ts-vsb-card:hover .pf-ts-vsb-cover-img{
  transform:scale(1.04);
}
.pf-ts-vsb-cover-gradient{
  position:absolute;inset:0;
  background:linear-gradient(to bottom,
    transparent 40%,
    rgba(9,9,9,.55) 68%,
    rgba(9,9,9,.95) 100%
  );
}

/* ─ Type badge ─ */
.pf-ts-vsb-cover-type{
  position:absolute;top:10px;left:10px;
  display:flex;align-items:center;gap:5px;z-index:1;
}
.pf-ts-vsb-type-dot{
  width:5px;height:5px;border-radius:50%;flex-shrink:0;
}
.pf-ts-vsb-type-text{
  font-family:var(--sans);font-size:var(--fs-nano);
  letter-spacing:.14em;text-transform:uppercase;
  font-weight:600;color:rgba(255,255,255,.7);
}
.pf-ts-vsb-cover-title{
  position:absolute;bottom:11px;left:12px;right:10px;
  font-family:var(--serif);font-size:var(--fs-lg);font-weight:500;
  font-style:italic;color:#f2f2f2;line-height:1.25;
  text-shadow:0 1px 16px rgba(0,0,0,.98);z-index:1;
}

/* ─ Strip ─ */
.pf-ts-vsb-strip{
  display:flex;align-items:center;justify-content:space-between;
  padding:7px 10px 7px 12px;
  background:rgba(0,0,0,.35);
}
.pf-ts-vsb-strip-meta{
  font-family:var(--sans);font-size:var(--fs-xs);
  color:rgba(255,255,255,.42);
}
.pf-ts-vsb-strip-cta{
  display:flex;align-items:center;gap:4px;
  font-family:var(--sans);font-size:var(--fs-nano);
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--accent);opacity:.3;
  transition:opacity .15s;
}
.pf-ts-vsb-strip-cta svg{ transition:transform .15s; }
.pf-ts-vsb-card:hover .pf-ts-vsb-strip-cta{ opacity:1; }
.pf-ts-vsb-card:hover .pf-ts-vsb-strip-cta svg{ transform:translateX(3px); }

/* ─ Footer ─ */
.pf-ts-vsb-footer{
  padding:12px 16px;flex-shrink:0;
  border-top:1px solid rgba(255,255,255,.05);
  background:rgba(232,211,165,.012);
}
.pf-ts-vsb-all-link{
  display:flex;align-items:center;justify-content:space-between;
  font-family:var(--mono);font-size:var(--fs-nano);
  letter-spacing:.2em;text-transform:uppercase;
  color:var(--accent);opacity:.38;
  cursor:pointer;text-decoration:none;
  transition:opacity .15s;
}
.pf-ts-vsb-all-link:hover{ opacity:1; }
.pf-ts-vsb-all-arrow{
  font-size:12px;letter-spacing:0;
  transition:transform .18s;
}
.pf-ts-vsb-all-link:hover .pf-ts-vsb-all-arrow{ transform:translateX(4px); }

/* FINANCIALS */
/* table-layout:fixed (+ the 30%-label/70%-periods split set inline on the
   header row, see pf_renderFinancials) means this table's total width is
   always exactly its container's — it can no longer grow past its box and
   force a horizontal scrollbar the way the old auto-layout + min-width:900px
   did. border-collapse:separate (was collapse) fixes a real, well-known
   Chromium/WebKit bug: position:sticky on <td>/<th> combined with
   border-collapse:collapse corrupts repaint during horizontal scroll —
   confirmed 2026-07-10, ghosted/overlapping digits appeared in the sticky
   label column and the latest-period column specifically once a user
   scrolled the table sideways. Neither column here draws a visible
   per-cell border, so separate (with border-spacing:0 to avoid gaps) looks
   identical while sidestepping the bug entirely. */
.pf-fin-tbl{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0;}
/* Period ("FYxx") columns: centered, tighter horizontal padding than the
   label column — was 10px each side same as the label, which read as
   loose/uneven once the header text shrank from a full date ("SEP. 28,
   2024") down to "FY24". The label column keeps its own 10px via the
   :first-child overrides below. */
.pf-fin-tbl th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:5px 4px;text-align:center;vertical-align:middle;font-weight:500;position:sticky;top:0;background:var(--surface);}
.pf-fin-tbl th:first-child{text-align:left;padding:5px 10px;position:sticky;left:0;z-index:2;background:var(--surface);}
/* white-space/overflow/text-overflow (2026-07-12) — only td:first-child
   (the Linea column) had this before; a numeric cell wide enough to
   exceed its own fixed column width (e.g. a 9-10 digit weighted-average-
   share count) had nothing stopping it from visually bleeding into the
   next column with no indication at all, real gap found on SOFI
   ("1,150,140,000105,219,000998,024,000..." — several columns' worth of
   digits running together on one line, unreadable). Every cell now clips
   the same way the label column already did, with the same "…" cue
   rather than silently overlapping its neighbor — full value still in
   `title` (see pf_renderFinancials's fv()). */
.pf-fin-tbl td{font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted);padding:4px 4px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-fin-tbl td:first-child{text-align:left;padding:4px 10px;position:sticky;left:0;background:var(--surface);z-index:1;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* white-space/overflow/text-overflow added 2026-07-10 — this is a colspan
   cell spanning every column (real 10-K section headers, e.g. "RESTAURANT
   OPERATING COSTS (EXCLUSIVE OF DEPRECIATION AND AMORTIZATION SHOWN
   SEPARATELY BELOW)", can be genuinely long), and unlike td:first-child
   above it had NO overflow handling at all — long ones just raw-overflowed
   past the table's own width and got hard-clipped with no "…" indicator by
   .pf-fin-wrap/.pf-ts-fin-scroll's overflow-x:hidden, instead of eliding
   cleanly. title (see pf_renderFinancials) carries the untruncated text. */
/* font-weight:700 (was 400), 2026-07-12 explicit request — section-
   divider titles ("CURRENT ASSETS", "CURRENT LIABILITIES", "STOCKHOLDERS
   EQUITY", etc.) now read as bold group headers, not blending in with the
   detail rows they introduce. */
.pf-fin-section-row td{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);background:rgba(255,255,255,.03);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Total/subtotal rows (Gross margin, Total operating expenses, Operating
   income, Net income, ...) — given the same gold "vault" row-wash
   treatment used for Watchlist/RADAR rows that have a Substack thesis
   (rgba(232,211,165,.07)), so they read as the headline figures at a
   glance instead of blending into the detail lines. The extra 24px indent
   + accent left border this rule used to also apply (deliberately the
   OPPOSITE of a plain financial statement's usual convention) was removed
   2026-07-12 per explicit request — every Linea-column cell now sits
   flush at the same padding regardless of row type; only the gold wash
   still distinguishes a total row. */
.pf-fin-key td{font-weight:500;color:var(--text);background:rgba(232,211,165,.07);}
/* Needs its own background, not just inherited from .pf-fin-key td above —
   the sticky label column's own rule (.pf-fin-tbl td:first-child) sets an
   opaque background at the same specificity tier (2 pseudo/real classes +
   1 element each), and being a plain (non-:first-child) selector, the
   .pf-fin-key td rule above can't out-specify it on this one cell — without
   this, the label cell of a total row stayed plain dark while every other
   cell in that same row correctly went gold, a half-tinted row. Can't just
   set the same translucent rgba() here, either — this cell is
   position:sticky and MUST stay fully opaque (that's the entire point of
   giving it its own background at all: occluding whatever scrolls
   underneath it), and a 7%-alpha fill alone would let scrolled-past
   content show through. Layering a flat-color gradient (same stop twice)
   over var(--surface) gets both: fully opaque, and visually the same gold
   wash as every other cell in the row. */
/* padding-left:24px + border-left removed 2026-07-12 per explicit request
   ("eliminate the increased indent from the Linea column") — total rows
   now inherit the same flush padding as every other row (from the
   tearsheet-scoped td:first-child rule); only the opaque gold background
   (still needed on its own — see the comment above explaining why this
   sticky cell can't just inherit .pf-fin-key td's translucent background)
   remains here. */
.pf-ts-fin-cell .pf-fin-tbl .pf-fin-key td:first-child{background:linear-gradient(rgba(232,211,165,.07),rgba(232,211,165,.07)),var(--surface);}
/* Detail/component rows (Net sales, Cost of sales, R&D, ...) — flush left,
   same as every other row now. */
.pf-fin-sub td:first-child{color:var(--muted2);}
.pf-fin-tbl tr:hover td{color:var(--text);}
/* Subtle zebra stripe across detail rows only (header AND total rows keep
   their own distinct background — pf_renderFinancials skips the stripe
   class for total rows specifically so it never has to fight .pf-fin-key's
   gold wash for the same cells) — same barely-there alternating-row
   pattern already used in the Ratios table (pf_renderPubComps2's i%2
   rows). */
.pf-fin-tbl tr.pf-fin-stripe td{background:rgba(255,255,255,.012);}
.pf-fin-wrap{overflow-y:auto;overflow-x:hidden;}
.pf-fin-wrap::-webkit-scrollbar{width:2px;height:2px;}
.pf-fin-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);}

/* RATIOS */
.pf-dupont{display:flex;align-items:center;gap:8px;padding:10px 12px;background:rgba(0,0,0,.3);border-bottom:1px solid var(--line);}
.pf-dp-box{border:1px solid var(--line);background:var(--surface2);padding:10px 16px;text-align:center;}
.pf-dp-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted2);margin-bottom:4px;}
.pf-dp-val{font-family:var(--mono);font-size:var(--fs-md);font-weight:500;color:var(--text);}
.pf-dp-trend{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);}
.pf-dp-op{font-family:var(--sans);font-size:var(--fs-lg);color:var(--muted2);}
.pf-accord-col-hdr{display:flex;align-items:center;gap:8px;padding:4px 10px;}
.pf-ach-cat{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);font-weight:500;flex:1;}
.pf-ach-val{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);font-weight:500;min-width:52px;text-align:right;}
.pf-ach-chg{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);font-weight:500;min-width:60px;text-align:right;}
.pf-ach-arr{width:16px;}
.pf-accord{border-bottom:1px solid var(--line);}
.pf-accord-hd{height:44px;display:flex;align-items:center;gap:8px;padding:0 10px;cursor:pointer;background:var(--surface);}
.pf-accord-hd:hover td,.pf-accord-hd:hover{background:rgba(255,255,255,.03);}
.pf-accord-identity{display:flex;flex-direction:column;flex:1;gap:1px;overflow:hidden;}
.pf-accord-name{font-family:var(--sans);font-size:var(--fs-sm);font-weight:500;color:var(--text);}
.pf-accord-sub{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-accord-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted);min-width:52px;text-align:right;}
.pf-accord-chg{font-family:var(--mono);font-size:var(--fs-sm);min-width:60px;text-align:right;}
.pf-accord-chg.up{color:var(--up);}
.pf-accord-chg.dn{color:var(--dn);}
.pf-accord-chev{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);transition:transform .2s;margin-left:4px;}
.pf-accord-hd.open .pf-accord-chev{transform:rotate(90deg);}
.pf-accord-body{display:none;}
.pf-accord-body.open{display:block;}

/* Heatmap palette switcher — shared by the live DCF drawer's mini grid
   (pf_tsv_renderOverview) and full sensitivity grid (pf_tsv_renderSensGrid).
   The rest of this section (dead pf_renderValuation's own layout classes:
   .pf-val-grid, .pf-wacc-*, .pf-wi-*, .pf-val-sens-*, .pf-sens-*,
   .pf-recalc-btn, #pf-valuation) was removed 2026-07-13 alongside that
   function — confirmed zero other consumers via grep before deleting. */
.pf-heatmap-controls{display:flex;align-items:center;gap:3px;margin-left:auto;}
.pf-heatmap-btn{background:none;border:1px solid rgba(255,255,255,.08);color:var(--muted2);font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.12em;text-transform:uppercase;padding:2px 6px;cursor:pointer;}
.pf-heatmap-btn:hover{border-color:rgba(255,255,255,.18);color:var(--muted);}
.pf-heatmap-btn.active{border-color:rgba(232,211,165,.42);color:var(--accent);background:rgba(232,211,165,.06);}

/* ── TEARSHEET VALUATION GRAPHS SECTION ──────────────────── */
.pf-vg-section{background:var(--surface);border-top:1px solid var(--line);padding:0;}
.pf-vg-section-header{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);padding:7px 14px 6px;background:rgba(0,0,0,.25);border-bottom:1px solid var(--line);flex-shrink:0;}
/* 2 columns (2026-07-12 relayout, revised same day): Ratios+Consenso |
   Múltiplos+Historia de Ganancias. Segmentos/Geografías moved back out —
   now to the left of Historia de Precio (see .pf-ts-price-row). */
/* Col 1 (Ratios) widened slightly relative to col 2 (Múltiplos), 2026-07-12
   — Ratios' 6 Spanish category-tab labels (Rentabilidad/Eficiencia/
   Liquidez/Apalancamiento/Crecimiento/Márgenes) need more combined width
   than their English originals did; confirmed via scrollWidth>clientWidth
   that the old even 1fr/1fr split clipped "Márgenes" before this. */
.pf-vg-grid{display:grid;grid-template-columns:1.15fr 0.85fr;grid-template-rows:1fr 1fr;gap:1px;background:var(--line);min-width:0;width:100%;flex:1;height:100%;}
.pf-vg-cell{background:var(--surface);padding:0;display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.pf-vg-cell-full{background:var(--surface);padding:0;display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.pf-vg-chart-wrap{padding:6px 12px 10px;flex:1;position:relative;min-height:0;width:100%;box-sizing:border-box;}
.pf-mod-trigger .pf-vg-chart-wrap{flex:1;min-height:0;height:auto;}
/* Price target bar */
.pf-pt-bar-wrap{padding:8px 18px 10px;display:flex;flex-direction:column;gap:6px;flex:1;justify-content:center;align-items:center;}
.pf-pt-track{position:relative;height:6px;background:rgba(255,255,255,.07);margin:4px 0 14px;}
.pf-pt-fill{position:absolute;top:0;height:100%;background:linear-gradient(to right,rgba(232,211,165,.15),rgba(232,211,165,.4));}
.pf-pt-marker{position:absolute;top:-5px;width:2px;height:16px;transform:translateX(-50%);}
.pf-pt-marker-label{position:absolute;top:18px;transform:translateX(-50%);font-family:var(--mono);font-size:var(--fs-nano);white-space:nowrap;color:var(--muted2);}
.pf-pt-marker-val{position:absolute;bottom:18px;transform:translateX(-50%);font-family:var(--mono);font-size:var(--fs-xs);white-space:nowrap;}
.pf-pt-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:6px;}
.pf-pt-stat{background:var(--surface);padding:6px 8px;display:flex;flex-direction:column;gap:2px;}
.pf-pt-stat-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);}
.pf-pt-stat-val{font-family:var(--mono);font-size:var(--fs-md);color:var(--text);}
/* Latest rankings table */
.pf-lr-table{width:100%;border-collapse:collapse;table-layout:fixed;}
.pf-lr-table td{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted);padding:5px 10px;border-bottom:1px solid rgba(255,255,255,.03);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-lr-table td:nth-child(1){width:38%;font-family:var(--sans);}
.pf-lr-table td:nth-child(2){width:40%;}
.pf-lr-table td:nth-child(3){width:22%;}
.pf-lr-table tr:last-child td{border-bottom:none;}
.pf-lr-badge{display:inline-block;padding:1px 6px;font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.06em;border:1px solid;}

/* ── TEARSHEET VALUATION SECTION ──────────────────────────── */
/* Fits inside the ratios-col (col 4) as a third stacked panel */
.pf-tsv-card{display:flex;flex-direction:column;background:var(--surface);border-top:1px solid var(--line);cursor:pointer;transition:filter .15s;}
.pf-tsv-card:hover{filter:brightness(1.15);}
.pf-tsv-overview{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0;}
.pf-tsv-mini-sens{border-top:1px solid rgba(255,255,255,.07);padding:6px 8px 4px;flex:1;min-height:0;display:flex;flex-direction:column;}
.pf-tsv-mini-grid{display:grid;grid-template-columns:auto repeat(5,1fr);grid-template-rows:auto repeat(5,1fr);gap:1px;background:var(--line);flex:1;min-height:0;}
.pf-tsv-mini-cell{padding:4px 3px;font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.01em;text-align:center;display:flex;align-items:center;justify-content:center;min-height:0;}
.pf-tsv-mini-cell.hdr{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);letter-spacing:.14em;text-transform:uppercase;font-weight:500;}
/* Overview bridge rows — read-only, compact */
.pf-tsv-bridge-rows{display:flex;flex-direction:column;padding:0;}
.pf-tsv-br{display:flex;align-items:center;padding:4px 10px;border-bottom:1px solid rgba(255,255,255,.03);gap:6px;min-height:26px;}
.pf-tsv-br:last-child{border-bottom:none;}
.pf-tsv-br-lbl{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pf-tsv-br-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);text-align:right;white-space:nowrap;}
.pf-tsv-br.sep{border-top:1px solid rgba(255,255,255,.07);}
.pf-tsv-br.bold .pf-tsv-br-lbl{color:var(--muted);}
.pf-tsv-br.bold .pf-tsv-br-val{font-size:var(--fs-sm);}
.pf-tsv-br.verdict .pf-tsv-br-val{font-family:var(--serif);font-style:italic;font-size:var(--fs-md);}
/* ── DCF DRAWER (reuses .pf-rd-* from rev drawer) ─────────── */
#pf-dcf-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.72);z-index:9000;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
#pf-dcf-drawer-overlay.open{display:flex;}
/* max-height raised 88vh -> 97vh (2026-07-15, explicit request) — the
   Proyecciones DCF table at the bottom of the drawer was getting clipped
   into its own internal scrollbar on real (non-oversized) browser windows;
   this gives it enough headroom to render in full without scrolling on
   most screens. Still capped below 100vh so the modal doesn't touch the
   viewport edges. */
#pf-dcf-drawer{background:#0c0c0c;border:1px solid rgba(255,255,255,0.09);border-radius:4px;width:min(1080px,94vw);max-height:97vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 32px 80px rgba(0,0,0,0.8);transform:translateY(12px);opacity:0;transition:transform .22s cubic-bezier(.16,1,.3,1),opacity .18s ease;}
#pf-dcf-drawer-overlay.open #pf-dcf-drawer{transform:translateY(0);opacity:1;}
/* Inner layout helpers for DCF drawer body */
.pf-dcf-2col{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);}
.pf-dcf-3col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);}
.pf-dcf-pane{background:var(--surface);padding:0;}
.pf-dcf-pane-hdr{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);padding:7px 14px 5px;background:rgba(0,0,0,.3);border-bottom:1px solid rgba(255,255,255,.06);}
/* Bridge table */
/* max-height:260px/overflow-y:auto removed (2026-07-15) — this wrapper had
   its own independent vertical clip separate from the drawer's own
   max-height (#pf-dcf-drawer), so the projections table could still need
   an internal scrollbar even after the drawer itself was made tall enough
   to fit everything. overflow-x:auto kept — the wide multi-year column set
   legitimately needs horizontal scroll on narrower windows. */
.pf-bt-wrap{overflow-x:auto;}
.pf-bt-wrap::-webkit-scrollbar{width:2px;height:2px;}
.pf-bt-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}
/* border-collapse:separate (was collapse), 2026-07-15 — same fix as
   .pf-fin-tbl (see that rule's own comment): position:sticky on a
   <td>/<th> combined with border-collapse:collapse corrupts repaint during
   horizontal scroll in Chromium/WebKit. border-spacing:0 keeps it looking
   identical to true collapse otherwise. */
.pf-bt{width:100%;border-collapse:separate;border-spacing:0;font-family:var(--mono);font-size:var(--fs-sm);}
.pf-bt th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);font-weight:500;padding:4px 8px;text-align:right;white-space:nowrap;position:sticky;top:0;z-index:2;background:var(--surface);}
/* Métrica column frozen (2026-07-15, explicit request) — stays put while
   the many year-columns scroll horizontally. z-index:3 on the corner cell
   (sticky top AND left at once) so it sits above both the plain sticky
   header row (z-index:2) and the sticky body cells below (z-index:1). */
.pf-bt th:first-child{text-align:left;min-width:140px;position:sticky;left:0;z-index:3;background:var(--surface);}
.pf-bt td{padding:4px 8px;letter-spacing:.02em;text-align:right;border-bottom:1px solid rgba(255,255,255,.03);color:var(--muted);white-space:nowrap;}
.pf-bt td:first-child{text-align:left;color:var(--muted2);font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;position:sticky;left:0;z-index:1;background:var(--surface);}
/* pf-bt-key still brightens the label; pf-bt-lblonly (2026-07-15) brightens
   ONLY the label, not the data cells — used for Revenue $M so its projected-
   year values read at the same weight/color as every other plain row's,
   while the row itself stays identifiable at a glance via its label. */
.pf-bt tr.pf-bt-key td{color:var(--text);}
.pf-bt tr.pf-bt-key td:first-child,.pf-bt tr.pf-bt-lblonly td:first-child{color:var(--muted);}
.pf-bt tr.pf-bt-sep td{border-top:1px solid rgba(255,255,255,.07);}
.pf-bt tr.pf-bt-total td{color:rgba(232,211,165,.85);border-top:1px solid rgba(232,211,165,.2);}
.pf-bt tr.pf-bt-total td:first-child{color:rgba(232,211,165,.55);}
.pf-bt td.pf-bt-hist{color:rgba(100,100,100,.65)!important;}
/* YoY Growth/margins/% Rev rows (2026-07-15, explicit request) — a more
   grey row wash to set them apart from the raw $-amount rows above/below
   each of them. */
.pf-bt tr.pf-bt-pct{background:rgba(255,255,255,.045);}
/* The frozen first cell needs its own OPAQUE background (it must occlude
   whatever scrolls underneath it) — same "same color stop twice, layered
   over var(--surface)" trick already used for .pf-fin-key's own sticky
   label column, so it reads as the same grey wash as the rest of the row
   instead of falling back to plain var(--surface) once opaque. */
.pf-bt tr.pf-bt-pct td:first-child{background:linear-gradient(rgba(255,255,255,.045),rgba(255,255,255,.045)),var(--surface);}
/* WACC rows inside drawer */
.pf-dcf-wrow{display:flex;align-items:center;padding:5px 14px;border-bottom:1px solid rgba(255,255,255,.03);gap:8px;}
.pf-dcf-wrow:last-child{border-bottom:none;}
.pf-dcf-wsep-row{border-top:1px solid rgba(255,255,255,.07)!important;margin-top:2px;}
.pf-dcf-wlbl{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;color:var(--muted2);flex:1;}
/* Live/assumed provenance badge — see pf_tsv_srcBadge (platform.js) */
.pf-dcf-srcbadge{font-family:var(--mono);font-size:var(--fs-nano);letter-spacing:.06em;font-weight:600;padding:1px 4px;border-radius:2px;border:1px solid;margin-left:5px;white-space:nowrap;cursor:help;vertical-align:middle;}
/* font-size/color match .pf-dcf-eval exactly (2026-07-15, explicit
   request: assumption values should read at the same weight as the
   Equity Value Bridge's own values, not a smaller/dimmer tier) — was
   var(--fs-xs)/var(--muted). */
.pf-dcf-winput{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.02em;background:none;border:none;border-bottom:1px solid rgba(255,255,255,.1);color:var(--text);width:56px;text-align:right;outline:none;padding:1px 0;transition:border-color .15s;}
.pf-dcf-winput:focus{border-bottom-color:rgba(232,211,165,.5);color:var(--text);}
.pf-dcf-wunit{font-family:var(--mono);font-size:var(--fs-nano);color:var(--muted2);min-width:14px;}
.pf-dcf-wout{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.02em;color:rgba(232,211,165,.85);text-align:right;}
.pf-dcf-wsep{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.18em;text-transform:uppercase;color:var(--muted2);padding:5px 14px 3px;background:rgba(0,0,0,.2);}
/* Unified Equity Bridge + WACC panel (2026-07-14) — one shared .pf-ph
   header, sub-columns underneath instead of two lopsided ones each with
   its own header bar. Four columns as of 2026-07-15 — the Equity Value
   Bridge itself split in two (rate/margin build-up | dollar waterfall) at
   Enterprise Value, explicit request. */
.pf-dcf-unified-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:1px;background:var(--line);}
.pf-dcf-unified-col{background:var(--surface);display:flex;flex-direction:column;}
.pf-dcf-subhdr{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.16em;text-transform:uppercase;color:var(--muted2);padding:9px 14px 6px;border-bottom:1px solid rgba(255,255,255,.05);margin-bottom:2px;}
@media (max-width:820px){.pf-dcf-unified-grid{grid-template-columns:1fr;}}
/* Equity bridge rows in drawer */
.pf-dcf-erow{display:flex;align-items:center;padding:5px 14px;border-bottom:1px solid rgba(255,255,255,.03);gap:8px;}
.pf-dcf-erow:last-child{border-bottom:none;}
.pf-dcf-elbl{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;color:var(--muted2);flex:1;}
.pf-dcf-eval{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.02em;color:var(--text);text-align:right;}
.pf-dcf-erow.pf-dcf-etotal{background:rgba(0,0,0,.15);}
.pf-dcf-erow.pf-dcf-etotal .pf-dcf-elbl{color:var(--muted);}
/* font-size removed (2026-07-15, explicit request) — gold total rows
   should read at the same size as the plain white rows, distinguished by
   color alone, not also a larger size. Was var(--fs-md). */
.pf-dcf-erow.pf-dcf-etotal .pf-dcf-eval{color:rgba(232,211,165,.85);}
.pf-dcf-erow.pf-dcf-esep{border-top:1px solid rgba(255,255,255,.07);}
/* Scenario range bar + cards — see pf_tsv_renderScenarios (platform.js) */
.pf-dcf-scen-bar{position:relative;height:8px;background:rgba(255,255,255,.06);border-radius:4px;margin:6px 0 4px;}
.pf-dcf-scen-dot{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid var(--surface);z-index:2;cursor:help;}
.pf-dcf-scen-cur{position:absolute;top:-3px;bottom:-3px;width:2px;background:rgba(255,255,255,.55);transform:translateX(-50%);z-index:1;}
.pf-dcf-scen-bar-lbls{display:flex;justify-content:space-between;font-family:var(--mono);font-size:var(--fs-nano);color:var(--muted2);margin-bottom:6px;}
.pf-dcf-scen-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px;}
.pf-dcf-scen-card{background:var(--surface2);border:1px solid rgba(255,255,255,.06);border-radius:3px;padding:8px 10px;text-align:center;}
.pf-dcf-scen-card-lbl{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;margin-bottom:4px;}
.pf-dcf-scen-card-price{font-family:var(--mono);font-size:var(--fs-lg);font-weight:600;color:var(--text);}
.pf-dcf-scen-card-updown{font-family:var(--mono);font-size:var(--fs-sm);margin-top:2px;}
/* Compact context — the narrow always-visible Valuación card in the
   tearsheet (pf_tsv_renderOverview), vs. the wide modal drawer — same
   rectangles, tightened gap/padding/price size so 3 across still fits
   comfortably in a narrow column. Dimensions increased 2026-07-14
   (explicit request: "the growth percentage is barely readable" — it was
   sitting at var(--fs-nano), 6.5px) — updown bumped a full tier to
   var(--fs-xs) (7.5px), price/label each bumped a half-step too so the
   whole card still reads as one coherent size scale rather than one
   element jumping ahead of the others. Padding/gap widened slightly to
   give the larger text room without touching the 3-across grid — still
   comfortably fits the same column width, just less cramped. */
.pf-tsv-overview .pf-dcf-scen-cards{gap:6px;margin-top:0;}
.pf-tsv-overview .pf-dcf-scen-card{padding:7px 5px;}
.pf-tsv-overview .pf-dcf-scen-card-lbl{font-size:var(--fs-xs);letter-spacing:.08em;margin-bottom:3px;}
.pf-tsv-overview .pf-dcf-scen-card-price{font-size:var(--fs-sm);}
.pf-tsv-overview .pf-dcf-scen-card-updown{font-size:var(--fs-xs);margin-top:3px;}
/* Assumptions grid */
.pf-assump-row{display:flex;align-items:center;padding:5px 14px;border-bottom:1px solid rgba(255,255,255,.03);gap:8px;}
.pf-assump-row:last-child{border-bottom:none;}
.pf-assump-lbl{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);flex:1;}
.pf-assump-input{font-family:var(--mono);font-size:var(--fs-xs);background:none;border:none;border-bottom:1px solid rgba(255,255,255,.1);color:var(--muted);width:56px;text-align:right;outline:none;padding:1px 0;transition:border-color .15s;}
.pf-assump-input:focus{border-bottom-color:rgba(232,211,165,.5);color:var(--text);}
.pf-assump-unit{font-family:var(--mono);font-size:var(--fs-nano);color:var(--muted2);min-width:14px;}
/* Recalc button inside drawer — spec matched to RADAR's "Crear Preset"
   button (.pf-scr2-btn.pf-scr2-btn--preset-modal, 2026-07-15 explicit
   request): same height/font/letter-spacing/border/background/hover
   treatment. font-family is hardcoded to Inter rather than var(--sans) —
   the drawer's own CSS-variable scope (#pf-dcf-drawer-overlay) redefines
   --sans to IBM Plex Mono, so referencing the variable here would NOT
   actually match Crear Preset's real (Inter) font the way a literal value
   does. Kept as a full-width block (unlike Crear Preset's auto-width
   inline button) — that's this button's own layout role spanning the
   panel below the 3-column grid, not part of the visual spec being
   matched. */
.pf-dcf-recalc{display:flex;align-items:center;justify-content:center;gap:5px;height:26px;font-family:'Inter',sans-serif;font-size:var(--fs-sm);letter-spacing:.03em;text-transform:uppercase;border:1px solid rgba(232,211,165,.25);background:rgba(232,211,165,.05);color:var(--accent);padding:0 10px;cursor:pointer;margin:10px 14px;width:calc(100% - 28px);transition:all .12s;box-sizing:border-box;}
.pf-dcf-recalc:hover{background:rgba(232,211,165,.1);border-color:rgba(232,211,165,.45);}
/* year-range tabs inside drawer header */
.pf-dcf-yr-btn{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.1em;background:none;border:1px solid rgba(255,255,255,.1);color:var(--muted2);padding:3px 9px;cursor:pointer;transition:all .14s;}
.pf-dcf-yr-btn.active,.pf-dcf-yr-btn:hover{border-color:rgba(232,211,165,.5);color:rgba(232,211,165,.85);}

/* PERFORMANCE */
.pf-port-toggle{font-family:var(--sans);font-size:var(--fs-xs);border:1px solid var(--line);color:var(--muted2);background:none;padding:4px 10px;cursor:pointer;margin:8px 12px;transition:all .15s;}
.pf-port-toggle:hover{color:var(--muted);border-color:var(--line2);}
.pf-port-table{display:none;padding:0 12px 8px;}
.pf-port-table.open{display:block;}
.pf-perf-2col{display:grid;grid-template-columns:40% 60%;gap:1px;background:var(--line);}
.pf-perf-2l{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);}
.pf-val-big{font-family:var(--serif);font-style:italic;font-size:36px;font-weight:600;color:var(--text);line-height:1;}
.pf-stat-box{background:var(--surface);padding:12px;display:flex;flex-direction:column;gap:4px;}
.pf-stat-label{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--muted2);}
.pf-stat-val{font-family:var(--mono);font-size:var(--fs-lg);font-weight:500;color:var(--text);}
.pf-stat-val.big36{font-family:var(--serif);font-style:italic;font-size:36px;font-weight:600;line-height:1;}
.pf-perf-4grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:1px;background:var(--line);}
.pf-sankey{padding:12px;overflow-x:auto;}
.pf-sank-row{display:flex;align-items:center;gap:2px;margin-bottom:6px;}
.pf-sank-band{height:20px;display:flex;align-items:center;justify-content:center;font-family:var(--sans);font-size:var(--fs-xs);overflow:hidden;}
.pf-timeline{display:flex;align-items:flex-end;gap:0;padding:10px 12px;}
.pf-tl-node{display:flex;flex-direction:column;align-items:center;flex:1;}
.pf-tl-val{font-family:var(--mono);font-size:var(--fs-md);color:var(--muted);margin-bottom:4px;}
.pf-tl-dot{width:8px;height:8px;border:1px solid var(--line2);border-radius:50%;background:var(--surface2);}
.pf-tl-line{flex:1;height:1px;background:var(--line2);align-self:center;}
.pf-tl-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);margin-top:4px;}

/* ══ PERFORMANCE — editorial redesign ══════════════════════════ */
.pfnp-shell{display:flex;flex-direction:column;flex:1;width:100%;min-height:0;overflow:hidden;background:var(--bg);}

/* ── Hero header — matches pf-comps-hero pattern ── */
.pfnp-hero{position:relative;padding:32px 40px 0;flex-shrink:0;background:var(--bg);overflow:hidden;}
.pfnp-hero::before{content:'';position:absolute;top:0;right:0;width:380px;height:180px;background:radial-gradient(circle at top right,rgba(232,211,165,.06),transparent 65%);pointer-events:none;}
.pfnp-hero-eyebrow{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;}
.pfnp-hero-eyebrow::before{content:'';width:22px;height:1px;background:var(--accent);opacity:.55;}
.pfnp-hero-top{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;flex-wrap:wrap;}
.pfnp-hero-left{}
.pfnp-hero-val{font-family:var(--mono);font-size:clamp(2rem,3.5vw,3.2rem);font-weight:800;letter-spacing:-.02em;color:var(--text);line-height:1;}
.pfnp-hero-pnl{display:flex;align-items:center;gap:10px;margin-top:6px;}
.pfnp-hero-pnl-amt{font-family:var(--mono);font-size:.88rem;font-weight:600;letter-spacing:.02em;}
.pfnp-hero-pnl-amt.pos{color:var(--up);}
.pfnp-hero-pnl-amt.neg{color:var(--dn);}
.pfnp-hero-pnl-sub{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--muted2);}
.pfnp-hero-kpis{display:flex;gap:0;}
.pfnp-hero-kpi{display:flex;flex-direction:column;padding:10px 22px;min-width:90px;}
.pfnp-hero-kpi:last-child{}
.pfnp-hero-kpi-label{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.20em;text-transform:uppercase;color:var(--muted2);margin-bottom:5px;white-space:nowrap;}
.pfnp-hero-kpi-val{font-family:var(--mono);font-size:1.05rem;font-weight:700;letter-spacing:-.01em;color:var(--text);line-height:1;}
.pfnp-hero-kpi-val.pos{color:var(--up);}
.pfnp-hero-kpi-val.neg{color:var(--dn);}
.pfnp-hero-kpi-val.neutral{color:var(--muted);}
.pfnp-hero-rule{width:100%;height:1px;background:linear-gradient(to right,rgba(232,211,165,.25),rgba(255,255,255,.05) 40%,transparent);margin-top:28px;}

/* ── Main body — two independent flex columns ── */
.pfnp-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:row;gap:1px;background:var(--line);}
.pfnp-col{display:flex;flex-direction:column;gap:1px;min-width:0;}
.pfnp-col--left{flex:1.2;overflow:hidden;}
.pfnp-col--right{flex:1;overflow-y:auto;overflow-x:hidden;}
.pfnp-col--right::-webkit-scrollbar{width:3px;}
.pfnp-col--right::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}

/* Panel base */
.pfnp-panel{background:var(--surface);display:flex;flex-direction:column;overflow:hidden;}

/* Chart panel — left col, 2.2fr */
.pfnp-panel--chart{flex:2.2;min-height:0;}
.pfnp-chart-area{flex:1;min-height:0;height:0;position:relative;padding:4px 10px 6px;}
.pfnp-chart-area canvas{width:100%!important;height:100%!important;}
.pfnp-stat-bar{display:flex;align-items:center;gap:0;padding:6px 14px 8px;flex-shrink:0;border-top:1px solid var(--line);background:rgba(0,0,0,.18);}
.pfnp-stat-group{display:flex;align-items:center;gap:7px;padding:0 14px;}
.pfnp-stat-group:first-child{padding-left:2px;}
.pfnp-stat-swatch{width:16px;height:1.5px;display:inline-block;flex-shrink:0;}
.pfnp-stat-name{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--muted2);}
.pfnp-stat-val{font-family:var(--mono);font-size:.78rem;font-weight:600;letter-spacing:.02em;color:var(--text);}
.pfnp-stat-val.pos{color:var(--up);}
.pfnp-stat-val.neg{color:var(--dn);}
.pfnp-stat-divider{width:1px;height:18px;background:var(--line);flex-shrink:0;}

/* Bench tabs — matches pf-htab exactly */
.pfnp-bench-tabs{display:flex;gap:1px;background:rgba(255,255,255,.04);padding:2px;}
.pfnp-bench-tab{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted2);padding:2px 6px;cursor:pointer;background:none;border:none;transition:color .12s;}
.pfnp-bench-tab:hover{color:var(--muted);}
.pfnp-bench-tab.on{background:rgba(255,255,255,.1);color:var(--text);}

/* Holdings panel — right col, 2.2fr */
.pfnp-panel--holdings{flex:2.2;min-height:0;}

/* Thesis panel — right col. Was flex-shrink:0 (content-hugging only), so an
   empty/short list left almost no height here while .pfnp-posalloc-row's
   flex:2.2 soaked up all the column's leftover space (2026-07-17 user
   report). Now grows with the column like its sibling, and scrolls its own
   content internally (matching Posiciones' own #pfnp-pos-tbl-container
   pattern) instead of depending on content height to size the panel. */
.pfnp-panel--thesis{flex:1;min-height:0;}
.pfnp-thesis-list{flex:1;min-height:0;overflow-y:auto;}
.pfnp-thesis-row{display:flex;align-items:flex-start;gap:10px;padding:5px 14px;border-bottom:1px solid rgba(255,255,255,.04);transition:background .12s;cursor:pointer;}
.pfnp-thesis-row:last-child{border-bottom:none;}
.pfnp-thesis-row:hover{background:rgba(255,255,255,.025);}
.pfnp-thesis-row--empty{cursor:pointer;opacity:.45;transition:opacity .15s;}
.pfnp-thesis-row--empty:hover{opacity:.85;background:rgba(255,255,255,.02);}
.pfnp-thesis-left{display:flex;align-items:flex-start;gap:9px;flex:1;min-width:0;}
.pfnp-thesis-ring{position:relative;width:28px;height:28px;flex-shrink:0;}
.pfnp-thesis-ring svg{display:block;}
.pfnp-thesis-ring-pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:var(--fs-nano);font-weight:700;letter-spacing:0;}
.pfnp-thesis-info{flex:1;min-width:0;}
.pfnp-thesis-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:3px;}
.pfnp-thesis-tk{font-family:var(--mono);font-size:var(--fs-sm);font-weight:700;letter-spacing:.06em;color:var(--text);}
.pfnp-thesis-nm{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px;}
.pfnp-thesis-horizon{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.08em;color:var(--accent);background:rgba(232,211,165,.08);padding:1px 5px;border-radius:2px;white-space:nowrap;margin-left:auto;}
.pfnp-thesis-text{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:2px;}
.pfnp-thesis-chips{display:flex;gap:4px;flex-wrap:wrap;}
.pfnp-thesis-chip{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.06em;padding:1px 5px;border-radius:2px;white-space:nowrap;}
.pfnp-thesis-empty-cta{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.1em;color:var(--muted2);flex:1;display:flex;align-items:center;justify-content:flex-end;padding-right:4px;}
.pfnp-thesis-actions{display:flex;flex-direction:column;gap:3px;flex-shrink:0;opacity:0;transition:opacity .12s;}
.pfnp-thesis-row:hover .pfnp-thesis-actions{opacity:1;}
.pfnp-thesis-btn{background:none;border:1px solid rgba(255,255,255,.08);color:var(--muted2);width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color .12s,border-color .12s;}
.pfnp-thesis-btn:hover{color:var(--text);border-color:rgba(255,255,255,.2);}
.pfnp-thesis-btn--del:hover{color:#f87171;border-color:#f8717144;}
.pfnp-alloc-bar{display:flex;height:4px;gap:1px;flex-shrink:0;margin:0 14px 0;}
.pfnp-alloc-seg{height:100%;transition:opacity .2s;}
.pfnp-alloc-seg:hover{opacity:.65;}
.pfnp-htbl-wrap{flex:1;overflow-y:auto;}
.pfnp-htbl-wrap::-webkit-scrollbar{width:2px;}
.pfnp-htbl-wrap::-webkit-scrollbar-thumb{background:rgba(255,255,255,.08);}
.pfnp-htbl-hdr{display:grid;grid-template-columns:1.8fr min-content 1fr 1fr 1fr;padding:4px 14px;border-bottom:1px solid var(--line);background:rgba(0,0,0,.25);position:sticky;top:0;z-index:1;}
.pfnp-htbl-hdr span{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.16em;text-transform:uppercase;color:var(--muted2);}
.pfnp-htbl-row{display:grid;grid-template-columns:1.8fr min-content 1fr 1fr 1fr;padding:5px 14px;border-bottom:1px solid rgba(255,255,255,.025);transition:background .12s;align-items:center;}
.pfnp-htbl-row:hover{background:rgba(255,255,255,.025);}
.pfnp-htbl-name{display:flex;align-items:center;gap:6px;min-width:0;}
.pfnp-htbl-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;}
.pfnp-htbl-tk{font-family:var(--mono);font-size:var(--fs-sm);font-weight:600;letter-spacing:.06em;color:var(--text);}
.pfnp-htbl-nm{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pfnp-htbl-cell{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.02em;color:var(--muted);}
.pfnp-htbl-cell.pos{color:var(--up);}
.pfnp-htbl-cell.neg{color:var(--dn);}
.pfnp-htbl-cp{display:flex;align-items:center;gap:4px;flex-wrap:wrap;}

/* ── Posiciones checkpoint hover card ── */
.pfnp-cp-trigger{position:relative;display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:2px 4px 2px 2px;border:none;background:transparent;transition:opacity .15s;}
.pfnp-cp-trigger:hover{opacity:.75;}
.pfnp-cp-trigger--empty{opacity:.35;transition:opacity .2s;}
.pfnp-cp-trigger--empty:hover{opacity:1;}
.pfnp-cp-ring{position:relative;width:26px;height:26px;flex-shrink:0;cursor:pointer;}
.pfnp-cp-ring svg{display:block;}
.pfnp-cp-ring-pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:var(--fs-xs);font-weight:700;}
.pfnp-cp-score-lbl{font-family:var(--mono);font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;}
/* Hover card popup */
#pfnp-cp-popup{
  position:fixed;z-index:99990;pointer-events:none;
  background:#0d0d0d;border:1px solid rgba(255,255,255,.12);
  box-shadow:0 20px 60px rgba(0,0,0,.9);
  width:280px;opacity:0;transition:opacity .15s;display:none;
}
#pfnp-cp-popup.visible{opacity:1;}
.pfnp-cpp-header{display:flex;align-items:center;gap:10px;padding:10px 14px 8px;border-bottom:1px solid rgba(255,255,255,.07);}
.pfnp-cpp-ring{position:relative;width:36px;height:36px;flex-shrink:0;}
.pfnp-cpp-ring svg{display:block;}
.pfnp-cpp-ring-pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:var(--fs-xs);font-weight:700;}
.pfnp-cpp-title{font-family:var(--sans);font-size:.8rem;font-weight:600;color:var(--text);flex:1;}
.pfnp-cpp-thesis{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted);line-height:1.5;padding:7px 14px;border-bottom:1px solid rgba(255,255,255,.05);}
.pfnp-cpp-list{padding:6px 0;}
.pfnp-cpp-row{display:flex;align-items:flex-start;gap:8px;padding:5px 14px;}
.pfnp-cpp-info{flex:1;min-width:0;}
.pfnp-cpp-label{font-family:var(--mono);font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text);margin-bottom:1px;}
.pfnp-cpp-stmt{font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);line-height:1.45;}
.pfnp-cpp-weight{font-family:var(--mono);font-size:var(--fs-xs);color:rgba(255,255,255,.2);margin-top:1px;}
.pfnp-cpp-edit-hint{padding:7px 14px 8px;border-top:1px solid rgba(255,255,255,.05);font-family:var(--sans);font-size:var(--fs-xs);color:rgba(255,255,255,.2);letter-spacing:.06em;}

/* ── Thesis Overview Panel modal ── */
#pfnp-tesis-modal{
  position:fixed;inset:0;z-index:100000;
  background:rgba(0,0,0,.82);backdrop-filter:blur(12px);
  display:none;align-items:center;justify-content:center;
}
#pfnp-tesis-modal.open{display:flex;}
.pfnp-tm-box{
  background:#0a0a0a;border:1px solid rgba(255,255,255,.12);
  width:min(760px,96vw);max-height:88vh;
  display:flex;flex-direction:column;
  box-shadow:0 32px 80px rgba(0,0,0,.97),0 0 0 1px rgba(255,255,255,.04);
  animation:pfnpSlideIn .2s cubic-bezier(.16,1,.3,1);
}
@keyframes pfnpSlideIn{from{opacity:0;transform:translateY(14px) scale(.99);}to{opacity:1;transform:none;}}

/* Overview banner */
.pfnp-tm-overview{
  flex-shrink:0;
  background:linear-gradient(135deg,rgba(255,255,255,.03) 0%,transparent 60%);
  border-bottom:1px solid rgba(255,255,255,.07);
  padding:13px 20px 11px;
  display:flex;align-items:center;gap:14px;
  position:relative;overflow:hidden;
}
.pfnp-tm-overview::before{
  content:'';position:absolute;top:0;right:0;
  width:280px;height:100%;
  background:radial-gradient(ellipse at top right,rgba(232,211,165,.05),transparent 65%);
  pointer-events:none;
}
.pfnp-tm-ov-info{flex:1;min-width:0;}
.pfnp-tm-ov-company{
  font-family:var(--mono);font-size:.82rem;font-weight:600;
  color:var(--text);line-height:1.1;margin-bottom:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* Sub-tabs row */
.pfnp-tm-subtabs{
  display:flex;align-items:stretch;height:40px;
  border-bottom:1px solid rgba(255,255,255,.07);
  flex-shrink:0;position:relative;
}
.pfnp-tm-subtab{
  background:none;border:none;border-bottom:2px solid transparent;
  padding:0 20px;font-family:var(--sans);font-size:.7rem;
  letter-spacing:.06em;color:var(--muted2);cursor:pointer;
  transition:color .18s,background .18s;white-space:nowrap;
}
.pfnp-tm-subtab:hover{color:var(--muted);background:rgba(255,255,255,.02);}
.pfnp-tm-subtab.active{color:var(--accent);border-bottom-color:var(--accent);background:rgba(232,211,165,.03);}
.pfnp-tm-close--right{
  background:none;border:none;color:var(--muted2);cursor:pointer;
  padding:0 16px;display:flex;align-items:center;justify-content:center;
  transition:color .15s;margin-left:auto;
}
.pfnp-tm-close--right:hover{color:var(--text);}

.pfnp-tm-body{flex:1;overflow-y:auto;padding:12px 18px;display:flex;flex-direction:column;gap:7px;min-height:0;}
.pfnp-tm-body::-webkit-scrollbar{width:3px;}
.pfnp-tm-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);}

/* Tesis tab */
.pfnp-tm-thesis-row{display:flex;flex-direction:column;gap:5px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.06);}
.pfnp-tm-thesis-lbl{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--muted2);}
.pfnp-tm-thesis-inp{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:var(--text);font-family:var(--sans);font-size:.75rem;line-height:1.7;padding:10px 13px;resize:vertical;min-height:70px;outline:none;width:100%;box-sizing:border-box;}
.pfnp-tm-thesis-inp:focus{border-color:rgba(232,211,165,.35);}

/* Checkpoints section */
.pfnp-tm-cp-section-hdr{display:flex;align-items:center;justify-content:center;padding:4px 0 8px;}
/* 14px (was 8px) — each checkpoint is now a denser, taller card (title row +
   status row + Tesis Central + Catalizadores/Riesgos + Convicción/Precio
   Obj., 2026-07-17 redesign), so cards need a clearer gap to read as
   distinct units rather than one continuous block. */
.pfnp-tm-cp-list{display:flex;flex-direction:column;gap:8px;}
/* Golden accent styling (2026-07-18, explicit request) — same treatment as
   .pfnp-tm-save's own accent button, instead of the plain gray outline this
   used to have. */
.pfnp-tm-add-btn{display:flex;align-items:center;gap:5px;background:rgba(232,211,165,.1);border:1px solid rgba(232,211,165,.3);color:var(--accent);font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.08em;padding:6px 18px;cursor:pointer;transition:all .15s;white-space:nowrap;flex-shrink:0;}
.pfnp-tm-add-btn:hover{border-color:rgba(232,211,165,.55);background:rgba(232,211,165,.16);}

/* ── "What changed since your last visit" banner (2026-07-18 ground-up
   redesign) — the actual reason to come back daily: real movement, not a
   static dashboard. ── */
.pfnp-tm-changed-banner{display:flex;align-items:center;gap:7px;padding:7px 10px;margin-bottom:8px;background:rgba(232,211,165,.08);border:1px solid rgba(232,211,165,.25);color:var(--accent);font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;}

/* ── Collapsed scan-view row (2026-07-18) — the default for anything
   already configured: one glanceable line instead of the full form, so a
   daily check reads as a quick scan, not a wall of fields. Click to
   expand. Same left-accent-by-state language as the expanded card. ── */
.pfnp-cp-collapsed{display:flex;align-items:center;gap:9px;padding:9px 12px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07);cursor:pointer;transition:background .15s,border-color .15s;}
.pfnp-cp-collapsed:hover{background:rgba(255,255,255,.045);}
.pfnp-cp-collapsed-title{flex:1;min-width:0;font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pfnp-cp-collapsed-weight{display:flex;align-items:center;gap:2px;flex-shrink:0;}
.pfnp-cp-mini-dot{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.15);flex-shrink:0;}
/* No state color (2026-07-19, explicit request) — same mono/muted
   convention as .pfnp-tm-live-val's own "Actual" value, not a status color. */
.pfnp-cp-collapsed-val{font-family:var(--mono);font-size:.72rem;font-weight:700;color:var(--muted);flex-shrink:0;white-space:nowrap;}
.pfnp-cp-chevron{flex-shrink:0;color:rgba(255,255,255,.3);}
.pfnp-cp-changed-badge{font-family:var(--sans);font-size:8px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#0a0a0a;background:var(--accent);padding:2px 6px;border-radius:2px;flex-shrink:0;}
.pfnp-tm-collapse-btn{background:none;border:1px solid rgba(255,255,255,.08);color:rgba(255,255,255,.3);cursor:pointer;padding:4px 6px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;}
.pfnp-tm-collapse-btn:hover{border-color:rgba(232,211,165,.4);color:var(--accent);}

/* Pulse (2026-07-18) — the "fun"/attention cue for a checkpoint whose state
   just moved since the user's last visit, on both the collapsed row and the
   expanded card. Fades out on its own after a few cycles rather than
   looping forever, so it reads as "new" without becoming visual noise on a
   long-open session. */
@keyframes pfnpCpPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(232,211,165,0);}
  50%{box-shadow:0 0 0 3px rgba(232,211,165,.25);}
}
.pfnp-cp-pulse{animation:pfnpCpPulse 1.6s ease-in-out 3;}

/* Checkpoint card (2026-07-17 redesign) — was a cramped 2-col split
   (metric/state/horizon/peso crammed into a narrow left column, Tesis
   Central alone on the right) that got worse once Catalizadores/Riesgos
   Clave/Convicción/Precio Obj. moved down onto each checkpoint. Now a single
   column with a real title row, a dedicated status row, then one clearly
   labeled section per field group — stronger left accent + own background
   tint so a card's state reads at a glance without parsing the button row. */
.pfnp-tm-cp-row{
  background:rgba(255,255,255,.025);
  border:1px solid rgba(255,255,255,.07);border-left:3px solid transparent;
  padding:12px 14px 14px;display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s,background .15s;
}
.pfnp-tm-cp-row:hover{background:rgba(255,255,255,.04);}
.pfnp-tm-cp-hdr{display:flex;align-items:center;gap:9px;}
/* Plain derived heading (2026-07-18) — was an editable <input>; Métrica is
   no longer free-typed, so this is just display text now (see
   _pfnpDeriveCpLabel), not a form control. */
.pfnp-tm-cp-title{
  flex:1;font-family:var(--sans);font-size:.82rem;font-weight:600;color:var(--text);
  padding:3px 6px;margin-left:-6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.pfnp-tm-cp-sub-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.pfnp-tm-cp-section{display:flex;flex-direction:column;gap:5px;}
.pfnp-tm-col-lbl{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.55);font-weight:600;flex-shrink:0;}
.pfnp-tm-thesis-col-inp{min-height:50px;resize:vertical;}
.pfnp-tm-inp{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);color:var(--text);font-family:var(--sans);font-size:var(--fs-sm);padding:5px 8px;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s;}
.pfnp-tm-inp:focus{border-color:rgba(232,211,165,.3);}
.pfnp-tm-inp::placeholder{color:rgba(255,255,255,.2);}
textarea.pfnp-tm-inp{resize:vertical;min-height:34px;line-height:1.5;}
.pfnp-tm-weight-wrap{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:var(--fs-sm);color:var(--muted2);flex-shrink:0;white-space:nowrap;}
/* Peso — 5-dot strength indicator (2026-07-17) replacing a bare 1-5
   <select>, which read as an arbitrary form field rather than "how much
   this checkpoint matters." Click any dot to set that weight directly.
   Dots enlarged 7px→11px and flanked by a persistent Baja/Alta reference
   (2026-07-18, explicit request) — too small to tell the green→red
   gradation apart at a glance, and nothing told a viewer which end meant
   "barely matters" vs "critical" without hovering for the tooltip. */
.pfnp-tm-weight-dots{display:flex;align-items:center;gap:4px;flex-shrink:0;}
.pfnp-tm-weight-ref{font-family:var(--mono);font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.35);}
.pfnp-tm-weight-dot{width:11px;height:11px;border-radius:50%;padding:0;flex-shrink:0;background:transparent;border:1.5px solid rgba(255,255,255,.3);cursor:pointer;transition:all .12s;}
.pfnp-tm-weight-dot:hover{border-color:var(--accent);transform:scale(1.15);}
/* .filled dots get their color+border-color inline (pf_pctColor green→red
   scale, one shade per position) instead of a single fixed class color. */
.pfnp-tm-del-btn{background:none;border:1px solid rgba(255,255,255,.08);color:rgba(255,255,255,.25);cursor:pointer;padding:4px 6px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;}
.pfnp-tm-del-btn:hover{border-color:#f87171;color:#f87171;background:rgba(248,113,113,.08);}

/* ── Live metric selector (2026-07-18) — Métrica + Horizonte are ALWAYS
   this row (no free-typed input, no separate toggle/badge/editor mode —
   superseded the 2026-07-17 optional-link version entirely). ── */
/* Pill container + borderless selects (2026-07-18, explicit request) — same
   pattern as the app's existing filter-tag dropdowns (.pf-scr2-ctag-row/
   .pf-ctag-select, RADAR/Screener's metric+operator tags): one tinted pill
   holding borderless, appearance:none selects in the accent color, divided
   by thin separators, instead of each field looking like its own bordered
   generic input box. */
.pfnp-tm-live-config{display:flex;align-items:center;gap:2px;flex-wrap:wrap;min-height:26px;padding:0 8px;background:rgba(232,211,165,.07);border:1px solid rgba(232,211,165,.22);}
.pfnp-tm-live-div{width:1px;height:14px;background:rgba(232,211,165,.18);flex-shrink:0;}
.pfnp-tm-link-sel,.pfnp-tm-link-op-sel{
  background:none;border:none;outline:none;color:var(--accent);
  font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;
  padding:5px 6px;cursor:pointer;appearance:none;-webkit-appearance:none;
  width:auto;min-width:0;
}
.pfnp-tm-link-sel option,.pfnp-tm-link-op-sel option{background:var(--bg);color:var(--text);}
.pfnp-tm-link-sel{flex:1;min-width:70px;}
.pfnp-tm-link-sel--horizon{flex:.6;min-width:82px;}
.pfnp-tm-link-op-sel{flex-shrink:0;text-align:center;padding-right:4px;}
.pfnp-tm-link-threshold-inp{
  background:none;border:none;outline:none;color:var(--accent);
  font-family:var(--mono);font-size:var(--fs-sm);
  width:56px!important;flex-shrink:0;padding:5px 4px;
}
.pfnp-tm-link-threshold-inp::placeholder{color:rgba(255,255,255,.25);}
/* Umbral: type only, no spinner (2026-07-19, explicit request) — a native
   type="number" input's up/down spin button reads as an unwanted dropdown
   at this size; hidden so typing is the only way to set the value. */
.pfnp-tm-link-threshold-inp::-webkit-inner-spin-button,
.pfnp-tm-link-threshold-inp::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
.pfnp-tm-link-threshold-inp{-moz-appearance:textfield;}

/* Métrica cascading flyout menu (2026-07-19, explicit request: "like the
   ones from Windows") — a native <select>/<optgroup> can't show a
   hover-triggered submenu, so this one control is a custom <details> menu:
   click the trigger to open Categoría, hover a category to flyout its
   Métrica submenu (pure CSS :hover, no JS needed for the hover itself). */
.pfnp-tm-metric-dd{position:relative;flex:1;min-width:70px;}
.pfnp-tm-metric-trigger{
  display:flex;align-items:center;color:var(--accent);
  font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;
  padding:5px 6px;cursor:pointer;list-style:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.pfnp-tm-metric-trigger::-webkit-details-marker{display:none;}
.pfnp-tm-metric-trigger::marker{content:'';}
.pfnp-tm-metric-trigger--empty{color:rgba(255,255,255,.35);}
/* position:fixed + JS-computed top/left (pfnp_tmPositionMetricMenu, fired
   on the <details> toggle event) — the modal body scrolls
   (.pfnp-tm-body{overflow-y:auto}), which would otherwise clip an
   absolutely-positioned flyout the moment a checkpoint card sits near the
   bottom of the visible scroll area. Fixed positioning escapes that
   clipping entirely, same reasoning pfnp_showCpPopup already uses for its
   own edge-aware placement. */
.pfnp-tm-metric-menu{
  position:fixed;z-index:60;min-width:170px;
  background:#141414;border:1px solid rgba(232,211,165,.25);
  box-shadow:0 10px 26px rgba(0,0,0,.55);padding:4px 0;
}
.pfnp-tm-metric-cat{
  position:relative;padding:6px 12px;font-family:var(--sans);font-size:var(--fs-sm);
  color:var(--muted);white-space:nowrap;cursor:default;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
}
.pfnp-tm-metric-cat:hover{background:rgba(232,211,165,.09);color:var(--text);}
.pfnp-tm-metric-cat-arrow{font-size:9px;opacity:.5;}
.pfnp-tm-metric-submenu{
  display:none;position:absolute;left:100%;top:-5px;min-width:170px;
  background:#141414;border:1px solid rgba(232,211,165,.25);
  box-shadow:0 10px 26px rgba(0,0,0,.55);padding:4px 0;
}
.pfnp-tm-metric-cat:hover .pfnp-tm-metric-submenu{display:block;}
.pfnp-tm-metric-item{padding:6px 12px;font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted);white-space:nowrap;cursor:pointer;}
.pfnp-tm-metric-item:hover{background:rgba(232,211,165,.16);color:var(--accent);}
.pfnp-tm-metric-item.sel{color:var(--accent);font-weight:700;}
/* Precio Obj. — moved up here from the old meta-row (2026-07-18, explicit
   request), same borderless pill treatment as the rest of this row. */
.pfnp-tm-link-pt-inp{
  background:none;border:none;outline:none;color:var(--accent);
  font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;
  width:76px!important;flex-shrink:0;padding:5px 6px;
}
.pfnp-tm-link-pt-inp::placeholder{color:rgba(255,255,255,.25);}
/* Actual — set apart from the rest of the row (2026-07-19, explicit
   request: separate input-driven fields from ones the site computes for
   you) using the SAME convention the rest of this codebase already uses
   for a read-only computed value vs. an editable one — mono/muted instead
   of sans/gold (e.g. .pf-ts-kd-val: "font-family:var(--mono);
   font-weight:400;color:var(--muted)" for tearsheet Key Data values), not
   a new one-off color invented for this field alone. Métrica, Umbral,
   Operador, Horizonte, Precio Obj. all stay sans/gold (editable); this is
   the one value the user never types. */
.pfnp-tm-live-val{
  font-family:var(--mono);font-weight:700;font-size:var(--fs-sm);letter-spacing:.02em;
  color:var(--muted);flex-shrink:0;white-space:nowrap;padding:5px 6px;
}
/* Setup hint (2026-07-18) — only shown before a metric is chosen, guiding
   the very next step instead of leaving a blank card with no direction. */
.pfnp-tm-setup-hint{font-family:var(--sans);font-size:var(--fs-xs);color:rgba(232,211,165,.55);letter-spacing:.02em;padding:2px 2px 0;}

/* ── Catalizadores/Riesgos Clave + Convicción/Precio Obj. ─── */
.pfnp-tm-field-lbl{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);font-weight:600;}
.pfnp-tm-field-lbl--bull{color:rgba(52,211,153,0.75);}
.pfnp-tm-field-lbl--bear{color:rgba(248,113,113,0.75);}
.pfnp-tm-bull-bear{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;}
.pfnp-tm-bb-col{display:flex;flex-direction:column;gap:4px;}
.pfnp-tm-bb-inp--bull{border-left:2px solid rgba(52,211,153,0.25)!important;}
.pfnp-tm-bb-inp--bull:focus{border-color:rgba(52,211,153,0.45)!important;}
.pfnp-tm-bb-inp--bear{border-left:2px solid rgba(248,113,113,0.25)!important;}
.pfnp-tm-bb-inp--bear:focus{border-color:rgba(248,113,113,0.45)!important;}
.pfnp-tm-meta-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding-top:2px;border-top:1px solid rgba(255,255,255,.05);}
.pfnp-tm-pt-inp{width:76px!important;}

/* Thesis list — bull/bear badges */
.pfnp-thesis-bb-line{display:flex;gap:6px;align-items:center;margin-top:3px;}
.pfnp-thesis-bb{font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.08em;padding:1px 6px;border-radius:2px;}
.pfnp-thesis-bb--bull{color:rgba(52,211,153,0.75);background:rgba(52,211,153,0.08);}
.pfnp-thesis-bb--bear{color:rgba(248,113,113,0.75);background:rgba(248,113,113,0.08);}

/* Popover — bull/bear rows */
.pfnp-cpp-bb{padding:5px 14px 3px;border-top:1px solid rgba(255,255,255,.05);}
.pfnp-cpp-bb-row{font-family:var(--sans);font-size:.62rem;line-height:1.55;padding:1px 0;}
.pfnp-cpp-bb-row--bull{color:rgba(52,211,153,0.7);}
.pfnp-cpp-bb-row--bear{color:rgba(248,113,113,0.7);}

/* Footer */
.pfnp-tm-footer{display:flex;align-items:center;gap:10px;padding:9px 18px;border-top:1px solid rgba(255,255,255,.08);flex-shrink:0;background:rgba(255,255,255,.015);}
/* Uppercase to match Guardar cambios/Cancelar next to it (2026-07-19,
   explicit request) — only this footer instance of .pfnp-tm-add-btn; the
   one shown above an empty checkpoint list stays as-is. */
#pfnp-tm-footer-add-btn{text-transform:uppercase;}
.pfnp-tm-save{background:rgba(232,211,165,.1);border:1px solid rgba(232,211,165,.3);color:var(--accent);font-family:var(--sans);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;padding:6px 18px;cursor:pointer;transition:all .15s;}
.pfnp-tm-save:hover{background:rgba(232,211,165,.2);border-color:rgba(232,211,165,.55);}
.pfnp-tm-cancel{background:none;border:1px solid rgba(255,255,255,.1);color:var(--muted);font-family:var(--sans);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;padding:6px 13px;cursor:pointer;transition:all .15s;}
.pfnp-tm-cancel:hover{border-color:rgba(255,255,255,.22);color:var(--text);}
.pfnp-tm-hint{font-family:var(--sans);font-size:var(--fs-xs);color:rgba(255,255,255,.18);margin-left:auto;letter-spacing:.05em;}

/* Heatmap panel — left col, 1fr */
.pfnp-panel--heatmap{flex:1;min-height:0;display:flex;flex-direction:column;}
.pfnp-hmap-legend{display:flex;gap:10px;align-items:center;}
.pfnp-hmap-body{display:flex;padding:8px 14px 10px;gap:0;align-items:stretch;overflow-x:auto;flex:1;min-height:0;}
.pfnp-hmap-body::-webkit-scrollbar{display:none;}
.pfnp-hmap-year-col{display:flex;flex-direction:column;gap:2px;flex-shrink:0;margin-right:6px;}
.pfnp-hmap-year-hdr{height:14px;flex-shrink:0;}
.pfnp-hmap-year-cell{flex:1;display:flex;align-items:center;font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.06em;color:var(--muted2);white-space:nowrap;}
.pfnp-hmap-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:14px repeat(3,1fr);gap:2px;flex:1;min-width:0;}
.pfnp-hmap-mhdr{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--muted2);text-align:center;display:flex;align-items:center;justify-content:center;}
.pfnp-hmap-cell{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.01em;cursor:default;transition:opacity .12s;}
.pfnp-hmap-cell:hover{opacity:.72;}
.pfnp-hmap-ytd-col{display:flex;flex-direction:column;gap:2px;flex-shrink:0;margin-left:6px;}
.pfnp-hmap-ytd-hdr{height:14px;flex-shrink:0;font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--muted2);display:flex;align-items:flex-end;}
.pfnp-hmap-ytd-cell{flex:1;display:flex;align-items:center;font-family:var(--mono);font-size:var(--fs-sm);font-weight:600;letter-spacing:.03em;padding-left:10px;white-space:nowrap;}
.pfnp-hmap-ytd-cell.pos{color:var(--up);}
.pfnp-hmap-ytd-cell.neg{color:var(--dn);}

/* Allocation panel — next to Posiciones, matching Segmentos/Geografías */
.pfnp-posalloc-row{display:flex;flex-direction:row;flex:1.4;min-height:0;gap:1px;background:var(--line);overflow:hidden;}
.pfnp-posalloc-row .pfnp-panel--holdings{flex:1;min-width:0;}
.pfnp-panel--alloc{flex-shrink:0;width:175px;display:flex;flex-direction:column;overflow:hidden;}

/* ══ SEGUIMIENTO DE TESIS — COMPACT REDESIGN ══════════════════ */
.pos{color:var(--up);}
.neg{color:var(--dn);}
.neutral{color:var(--muted);}

/* EMPTY STATE */
.pf-empty{display:flex;align-items:center;justify-content:center;padding:20px;font-family:var(--sans);font-size:var(--fs-sm);color:var(--muted2);}

/* PANEL TIMESTAMP */
.pf-panel-ts{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);text-align:right;padding:3px 10px;border-top:1px solid rgba(255,255,255,.02);}

/* SCROLL INSIDE PANELS */
/* min-width:0 is the fix, not cosmetic — a flex item's default min-width
   is 'auto' (its content's natural size), so without this a wide table
   (like Watchlist's, table-layout:fixed with a real fixed pixel sum) never
   actually shrinks to the space its panel has; it just keeps growing the
   panel past its grid column instead, and this element's own
   overflow-x:auto never gets a chance to kick in — confirmed via direct
   ancestor-chain measurement: Watchlist's table/panel sat at 652-654px
   inside a 571px-wide .pf-dash-main (which does clip, via its own
   overflow-x:hidden), silently hiding the row-delete "×" past that edge
   with no scrollbar ever appearing. */
.pf-scroll{overflow-y:auto;overflow-x:auto;flex:1;min-height:0;min-width:0;}
.pf-scroll::-webkit-scrollbar{width:2px;}
.pf-scroll::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);}

/* CONTACT */

.contact-section{
  padding:14rem 0;
}

.contact-grid{

  width:min(1480px,92%);
  margin:auto;

  display:grid;
  grid-template-columns:1fr 1fr;

  gap:8rem;

}

.contact-text h1{

  font-family:var(--serif);
  font-size:clamp(4rem,7vw,7rem);

  line-height:.88;
  letter-spacing:-.05em;
  font-weight:400;

  margin-bottom:2rem;

}

.contact-text p{

  max-width:520px;

  color:#c8c8c8;
  line-height:2;

}

.form-field{
  margin-bottom:2rem;
}

.form-field label{

  display:block;

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.2em;
  text-transform:uppercase;

  color:var(--muted);

  margin-bottom:1rem;

}

.form-field input,
.form-field textarea{

  width:100%;

  background:none;
  border:none;
  border-bottom:1px solid var(--line);

  padding:1rem 0;

  color:white;

  font-size:1rem;
  font-family:var(--sans);

  outline:none;

  transition:border-color .35s ease;

}

.form-field input:focus,
.form-field textarea:focus{
  border-color:rgba(255,255,255,.35);
}

.form-field textarea{
  resize:none;
  min-height:120px;
}

/* FOOTER */

footer{

  border-top:1px solid var(--line);

  padding:7rem 0 3rem;

}

.footer-wrap{
  width:min(1480px,92%);
  margin:auto;
}

.footer-grid{

  display:grid;
  grid-template-columns:1.4fr 1fr 1fr 1fr;

  gap:4rem;

  padding-bottom:5rem;

  border-bottom:1px solid var(--line);

  margin-bottom:2rem;

}

.footer-brand p{

  margin-top:1.5rem;

  max-width:340px;

  color:#c0c0c0;
  line-height:1.9;
  font-weight: 300;

}

.footer-col h4{

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.2em;
  text-transform:uppercase;

  margin-bottom:1.5rem;

}

.footer-col a,
.footer-col p{

  display:block;

  text-decoration:none;

  color:#bebebe;
  line-height:1.9;

  margin-bottom:.8rem;
  font-weight: 300;

}

.footer-bottom{

  display:flex;
  justify-content:space-between;
  align-items:center;

}

.footer-bottom p{

  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.16em;

  color:#7e7e7e;

}

.footer-social{
  display:flex;
  gap:1.4rem;
}

.footer-social a{
  color:#c7c7c7;
}

/* VAULT FILTER BAR */

.vault-filter-bar{
  padding:0;
  display:flex;
  align-items:center;
  gap:.6rem;
  flex-wrap:wrap;
}

.filter-label{
  font-family:var(--mono);
  font-size:var(--fs-sm);
  font-weight: 600;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--muted2);
  margin-right:.5rem;
}

.filter-chip{
  padding:.55rem 1.4rem;
  border:1px solid rgba(255,255,255,.1);
  background:rgba(255,255,255,.03);
  color:var(--muted);
  font-family:var(--mono);
  font-size:var(--fs-sm);
  font-weight: 600;
  letter-spacing:.16em;
  text-transform:uppercase;
  cursor:pointer;
  transition:
    border-color .3s ease,
    background .3s ease,
    color .3s ease,
    transform .3s ease;
}

.filter-chip:hover{
  border-color:rgba(255,255,255,.25);
  color:white;
  transform:translateY(-2px);
}

.filter-chip.active{
  border-color:rgba(255,255,255,.4);
  background:rgba(255,255,255,.08);
  color:white;
}

.vault-grid-section{
  padding:0 0 10rem;
}

.vault-grid-section .thesis-grid{
  margin-top:0;
}

.thesis-card.hidden{
  display:none;
}

/* THESIS CARD TEXT REVEAL */

.thesis-card p{
  max-height:0;
  overflow:hidden;
  opacity:0;
  margin-bottom:0;
  transition:
    max-height .5s var(--ease),
    opacity .45s ease,
    margin-bottom .45s ease;
}

.thesis-card:hover p{
  max-height:120px;
  opacity:1;
  margin-bottom:2rem;
}

/* INSTAGRAM HUB */

.ig-hub{
  padding:6rem 0 9rem;
  margin-top:2rem;
}

.ig-hub-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:3rem;
}

.ig-hub-title{
  display:flex;
  align-items:center;
  gap:1.2rem;
}

.ig-icon{
  width:38px;
  height:38px;
  border:1px solid rgba(255,255,255,.15);
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(255,255,255,.04);
}

.ig-icon svg{
  width:18px;
  height:18px;
  stroke:white;
  fill:none;
  stroke-width:1.5;
  stroke-linecap:round;
  stroke-linejoin:round;
}

.ig-hub-title h3{
  font-family:var(--serif);
  font-size:clamp(2.6rem, 4vw, 4rem);
  line-height: .95;
  font-weight:400;
  letter-spacing:-.04em;
}

.ig-handle{
  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
  text-decoration:none;
  transition:color .3s ease;
}

.ig-handle:hover{
  color:white;
}

.ig-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1.5rem;
}

.ig-post{
  position:relative;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.07);
  background:rgba(255,255,255,.02);
  transition:
    transform .5s var(--ease),
    border-color .4s ease,
    box-shadow .4s ease;
  cursor:pointer;
}

.ig-post:hover{
  transform:translateY(-6px);
  border-color:rgba(255,255,255,.18);
  box-shadow:0 20px 50px rgba(0,0,0,.4);
}

.ig-post-img{
  width:100%;
  aspect-ratio:1/1;
  object-fit:cover;
  display:block;
  transition:transform 1.1s var(--ease);
  filter:saturate(.85);
}

.ig-post:hover .ig-post-img{
  transform:scale(1.05);
  filter:saturate(1);
}

.ig-post-overlay{
  position:absolute;
  inset:0;
  background:linear-gradient(to top, rgba(0,0,0,.9) 0%, transparent 55%);
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding:1.8rem;
  opacity:0;
  transition:opacity .4s ease;
}

.ig-post:hover .ig-post-overlay{
  opacity:1;
}

.ig-post-stats{
  display:flex;
  gap:1.2rem;
  margin-bottom:1rem;
}

.ig-stat{
  display:flex;
  align-items:center;
  gap:.45rem;
  font-family:var(--mono);
  font-size:var(--fs-md);
  letter-spacing:.12em;
  color:#d0d0d0;
}

.ig-stat svg{
  width:13px;
  height:13px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.8;
}

.ig-post-caption{
  font-size:.88rem;
  font-weight: 300;
  line-height:1.6;
  color:#e0e0e0;
}

.ig-post-date{
  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#d0d0d0;
  margin-top:.7rem;
}

.ig-post-tag{
  position:absolute;
  top:1.2rem;
  left:1.2rem;
  background:rgba(0,0,0,.65);
  backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.1);
  font-family:var(--mono);
  font-size:var(--fs-sm);
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#d0d0d0;
  padding:.35rem .85rem;
}

/* RESPONSIVE */

@media(max-width:1200px){

  .manifesto-grid,
  .philosophy-grid,
  .contact-grid,
  .vault-intro-grid,
  .lab,
  .library-grid{
    grid-template-columns:1fr;
  }

  .thesis-grid,
  .analyst-grid,
  .terminal-grid{
    grid-template-columns:1fr 1fr;
  }

  .platform-wrap{
    grid-template-columns:1fr;
  }

  .platform-side{
    position:relative;
    height:auto;
  }

}

@media(max-width:760px){

  .nav-links{
    display:none;
  }

  .thesis-grid,
  .analyst-grid,
  .footer-grid,
  .terminal-grid{
    grid-template-columns:1fr;
  }

  .platform-main{
    padding:5rem 2rem;
  }

  .hero{
    min-height:100svh;
    padding:0;
  }

  .hero-utility{
    display:none;
  }

  .hero-content{
    width:min(100% - 30px,680px);
    padding-top: clamp(100px, 14vh, 160px);
  }

  .hero-title{
    font-size:clamp(2.65rem,13vw,4.6rem);
    line-height:1;
    letter-spacing:-.05em;
    margin-bottom:1.15rem;
  }

  .hero-sub{
    font-size:.98rem;
    line-height:1.7;
    max-width:34rem;
  }

  .hero-cta-row{
    flex-direction:column;
    gap:9px;
    margin-top:1.4rem;
  }

  .hero-cta{
    width:min(100%,250px);
  }

  .hero-earth-wrap{
    width: clamp(540px, 140vw, 900px);
    transform: translate(-50%, 46%);
  }

}

/* ── SCREENER ENHANCEMENTS ── */
.pf-filter-row select,.pf-filter-row input{transition:border-color .2s;outline:none;}
.pf-filter-row select:focus,.pf-filter-row input:focus{border-color:rgba(255,255,255,.28)!important;}
#pf-scr-table-view{flex:1;}
#pf-scr-scatter-view{flex:1;}
.pf-sc-preset-btn{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:3px;color:var(--muted2);font-family:var(--mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;padding:3px 10px;cursor:pointer;transition:background .15s,border-color .15s,color .15s;}
.pf-sc-preset-btn:hover{background:rgba(232,211,165,.07);border-color:rgba(232,211,165,.28);color:var(--accent);}
.pf-sc-preset-btn.active{background:rgba(232,211,165,.1);border-color:rgba(232,211,165,.4);color:var(--accent);box-shadow:0 0 8px rgba(232,211,165,.12);}
.pf-chip[data-preset]{position:relative;}

/* ══ COLUMN SELECTION MODAL ════════════════════════════════════ */
.pf-col-modal {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity .22s var(--ease), visibility .22s var(--ease);
}
.pf-col-modal.visible {
  opacity: 1;
  visibility: visible;
}
.pf-col-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.72);
  backdrop-filter: blur(6px);
}
.pf-col-modal-panel {
  position: relative;
  width: min(1080px, 96vw);
  height: min(680px, 90vh);
  background: #0d0d0d;
  border: 1px solid rgba(255,255,255,.1);
  display: flex;
  flex-direction: column;
  box-shadow: 0 32px 80px rgba(0,0,0,.7), 0 0 0 1px rgba(232,211,165,.08);
  transform: translateY(18px) scale(.98);
  transition: transform .25s var(--ease);
  overflow: hidden;
}
.pf-col-modal.visible .pf-col-modal-panel {
  transform: translateY(0) scale(1);
}
/* Header */
.pf-col-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 24px 0;
  flex-shrink: 0;
}
.pf-col-modal-title {
  font-family: var(--sans);
  font-size: 1.15rem;
  font-weight: 500;
  letter-spacing: -.025em;
  color: var(--text);
}
.pf-col-modal-close {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 6px;
  display: flex;
  align-items: center;
  transition: color .15s;
}
.pf-col-modal-close:hover { color: var(--text); }
/* Search */
.pf-col-modal-search {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 14px 24px 0;
  padding: 0 14px;
  height: 42px;
  background: rgba(255,255,255,.04);
  border: 1.5px solid var(--accent);
  flex-shrink: 0;
}
.pf-col-modal-search svg { color: var(--muted); flex-shrink: 0; }
.pf-col-modal-search input {
  background: none;
  border: none;
  outline: none;
  font-family: var(--sans);
  font-size: .76rem;
  color: var(--text);
  width: 100%;
}
.pf-col-modal-search input::placeholder { color: var(--muted2); }
/* Three-panel body */
.pf-col-modal-body {
  display: grid;
  grid-template-columns: 220px 1fr 240px;
  flex: 1;
  min-height: 0;
  margin-top: 14px;
  border-top: 1px solid rgba(255,255,255,.07);
  overflow: hidden;
}
/* LEFT NAV */
.pf-col-modal-nav {
  border-right: 1px solid rgba(255,255,255,.07);
  overflow-y: auto;
  scrollbar-width: none;
  padding: 12px 0;
}
.pf-col-modal-nav::-webkit-scrollbar { display: none; }
.pmn-group-label {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--muted2);
  padding: 10px 20px 6px;
}
.pmn-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 20px;
  font-family: var(--sans);
  font-size: .68rem;
  color: var(--muted);
  cursor: pointer;
  transition: background .15s, color .15s;
  border-left: 2px solid transparent;
}
.pmn-item svg { flex-shrink: 0; color: inherit; }
.pmn-item:hover { background: rgba(255,255,255,.04); color: var(--text); }
.pmn-item.active {
  background: rgba(232,211,165,.07);
  color: var(--text);
  border-left-color: var(--accent);
}
/* CENTER LIST */
.pf-col-modal-list {
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.1) transparent;
  padding: 4px 0 16px;
  border-right: 1px solid rgba(255,255,255,.07);
}
.pml-title {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--text);
  padding: 14px 20px 10px;
  position: sticky;
  top: 0;
  background: #0d0d0d;
  z-index: 2;
  border-bottom: 1px solid rgba(255,255,255,.05);
}
.pml-empty {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  color: var(--muted2);
  padding: 24px 20px;
  text-align: center;
}
.pml-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  cursor: pointer;
  transition: background .12s;
  border-left: 2px solid transparent;
  position: relative;
}
.pml-row:hover { background: rgba(255,255,255,.04); }
.pml-row.selected {
  background: rgba(232,211,165,.08);
  border-left-color: var(--accent);
}
.pml-star { display: flex; align-items: center; flex-shrink: 0; cursor: pointer; }
.pml-star svg { transition: fill .12s; }
.pml-label {
  font-family: var(--sans);
  font-size: .68rem;
  color: var(--text);
  flex: 1;
  line-height: 1.3;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}
.pml-droplet {
  color: rgba(232,211,165,.4);
  flex-shrink: 0;
  display: flex;
  align-items: center;
}
.pml-chevron { color: var(--muted2); flex-shrink: 0; }
/* RIGHT PANEL */
.pf-col-modal-right {
  display: flex;
  flex-direction: column;
  background: rgba(255,255,255,.015);
  overflow: hidden;
  min-height: 0;
}
.pf-col-modal-right-header {
  font-family: var(--sans);
  font-size:var(--fs-sm);
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--text);
  padding: 14px 18px 10px;
  border-bottom: 1px solid rgba(255,255,255,.07);
  flex-shrink: 0;
  position: sticky;
  top: 0;
  background: rgba(13,13,13,.96);
}
.pf-col-modal-selected {
  flex: 1;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,.08) transparent;
}
.pms-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  border-bottom: 1px solid rgba(255,255,255,.04);
  transition: background .12s;
}
.pms-row:hover { background: rgba(255,255,255,.04); }
.pms-row.locked { opacity: .7; }
.pms-drag {
  font-size: .8rem;
  color: var(--muted2);
  cursor: grab;
  flex-shrink: 0;
  letter-spacing: -.05em;
}
.pms-label {
  font-family: var(--sans);
  font-size: .66rem;
  color: var(--text);
  flex: 1;
}
.pms-remove {
  font-size: .9rem;
  color: var(--muted2);
  cursor: pointer;
  flex-shrink: 0;
  transition: color .12s;
  padding: 0 2px;
}
.pms-remove:hover { color: #f88; }
.pms-lock { color: var(--muted2); flex-shrink: 0; display: flex; align-items: center; }
/* Footer */
.pf-col-modal-right-footer {
  padding: 14px 16px;
  border-top: 1px solid rgba(255,255,255,.07);
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex-shrink: 0;
  background: rgba(13,13,13,.96);
}
.pf-col-modal-btn-apply {
  background: rgba(232,211,165,.1);
  border: 1px solid rgba(232,211,165,.3);
  color: var(--accent);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: 9px 14px;
  cursor: pointer;
  transition: background .15s, border-color .15s;
  width: 100%;
}
.pf-col-modal-btn-apply:hover {
  background: rgba(232,211,165,.18);
  border-color: rgba(232,211,165,.5);
}
.pf-col-modal-btn-clear {
  background: none;
  border: 1px solid rgba(255,255,255,.1);
  color: var(--muted);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .1em;
  text-transform: uppercase;
  padding: 7px 14px;
  cursor: pointer;
  transition: border-color .15s, color .15s;
  width: 100%;
}
.pf-col-modal-btn-clear:hover { border-color: rgba(255,255,255,.22); color: var(--text); }

/* IBM Plex Mono throughout the column selector modal */
.pf-col-modal-title,.pf-col-modal-search input,
.pmn-group-label,.pmn-item,.pml-title,.pml-empty,.pml-label,
.pf-col-modal-right-header,.pms-label,
.pf-col-modal-btn-apply,.pf-col-modal-btn-clear {
  font-family: var(--mono);
}

/* ══ PLATFORM — RESPONSIVE BREAKPOINTS ══════════════════════════
   Three tiers:
   ≥1100px  → full desktop layout (no changes)
    768–1099 → tablet: single-column dashboard, collapsed nav
    <768px   → mobile: stacked, scrollable, touch-friendly
═══════════════════════════════════════════════════════════════ */

/* ── TABLET (768px – 1099px) ──────────────────────────────── */
@media(max-width:1099px){

  /* Wrap becomes scrollable instead of fixed-height */
  .pf-wrap { height:auto; min-height:100vh; overflow:visible; }
  .pf-body  { overflow:visible; flex:none; }
  .pf-section.active { flex:none; min-height:auto; }

  /* Search bar: compress search box, shrink tabs */
  .pf-search-wrap { width:180px; }
  .pf-ctab { padding:0 10px; font-size:var(--fs-xs); }
  .pf-ctab .pf-kbd { display:none !important; }

  /* Dashboard: 2 columns instead of 3 */
  .pf-dashboard {
    grid-template-columns: 1fr 1fr;
    overflow:visible;
  }

  /* Hero / comps sections */
  .pf-comps-hero  { padding:32px 24px 0; }
  .pf-comps-controls,
  .pf-comps-tickers { padding-left:24px; padding-right:24px; }
  .pf-comps-body  { padding:24px; }
  .pf-comps-metrics-grid { grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); }

  /* Screener: hide scatter plot, keep table */
  #pf-scr-scatter-view { display:none !important; }
  #pf-scr-table-view   { display:flex !important; }

  /* Tearsheet stacks vertically */
  .pf-ts-grid { flex-direction:column; }

  /* Performance section padding */
  .pf-perf-body { padding:20px; }
}

/* ── MOBILE (<768px) ─────────────────────────────────────── */
@media(max-width:767px){

  /* ── Foundation ── */
  .pf-wrap { height:auto; min-height:100vh; overflow-x:hidden; }
  .pf-body  { overflow:visible; flex:none; overflow-x:hidden; }
  .pf-section.active { flex:none; min-height:auto; overflow-x:hidden; }

  /* ── Search / nav bar ── */
  .pf-search-bar {
    height:auto;
    flex-wrap:wrap;
    padding:0;
    gap:0;
  }
  /* Logo */
  .pf-cmd-logo { height:48px; padding:0 14px; }

  /* Search box: full-width second row */
  .pf-zone-sep { display:none; }
  .pf-search-wrap {
    order:10;
    width:100%;
    height:40px;
    border-top:1px solid rgba(255,255,255,.08);
    padding:0 14px;
  }
  .pf-search-kbd { display:none; }

  /* Nav tabs: scrollable row */
  .pf-search-bar .pf-cmd-tabs {
    order:20;
    width:100%;
    overflow-x:auto;
    border-top:1px solid rgba(255,255,255,.08);
    height:40px;
    scrollbar-width:none;
  }
  .pf-search-bar .pf-cmd-tabs::-webkit-scrollbar { display:none; }
  .pf-ctab {
    padding:0 14px;
    height:40px;
    font-size:var(--fs-sm);
    flex-shrink:0;
    border-bottom-width:2px;
  }
  .pf-ctab .pf-kbd { display:none !important; }

  /* User button: stays in header row */
  .pf-user-btn { height:48px; padding:0 14px; }
  .pf-user-btn > span { display:none; } /* hide label, keep avatar */

  /* ── Ticker tape ── */
  .pf-tape { height:20px; }

  /* ── News bar ── */
  .pf-news-bar { height:52px; }
  .pf-news-bar-inner .pf-news-card { width:230px; min-width:230px; height:52px; padding:6px 10px; }

  /* ── Data disclaimer ── */
  #pf-data-disclaimer { padding:6px 12px; }
  #pf-data-disclaimer span { font-size:var(--fs-nano); }

  /* ── Dashboard: single column, scrollable ── */
  .pf-dashboard {
    grid-template-columns:1fr;
    background:none;
    gap:1px;
    overflow:visible;
    height:auto;
  }
  .pf-dash-col { display:contents; }

  /* Markets rows: stack panels */
  .pf-markets-row {
    display:flex;
    flex-direction:column;
    gap:1px;
  }

  /* Panels: remove fixed heights, let content breathe */
  .pf-panel { min-height:auto; }
  .pf-panel[style*="height"] { height:auto !important; }
  .pf-panel[style*="max-height"] { max-height:none !important; }

  /* Panel header */
  .pf-ph { padding:8px 12px; }
  .pf-ph-title { font-size:var(--fs-sm); }

  /* Tables inside panels */
  .pf-tbl { font-size:var(--fs-sm); }
  .pf-tbl td, .pf-tbl th { padding:5px 8px; }

  /* ── Macro / Fed merged panel ── */
  .pf-macro-fed-merged { flex-direction:column; }

  /* ── Comps section ── */
  .pf-comps-hero  { padding:20px 16px 0; }
  .pf-comps-hero-title { font-size:clamp(1.8rem,7vw,2.6rem); }
  .pf-comps-controls,
  .pf-comps-tickers { padding-left:16px; padding-right:16px; }
  .pf-comps-controls { height:auto; flex-wrap:wrap; gap:6px; padding-top:8px; padding-bottom:8px; }
  .pf-comps-stmt-tabs { width:100%; overflow-x:auto; }
  .pf-comps-scale-group { width:100%; justify-content:flex-end; padding-bottom:4px; }
  .pf-comps-body  { padding:16px; gap:32px; }
  .pf-comps-metrics-grid { grid-template-columns:1fr 1fr; gap:20px 16px; }
  .pf-comps-vchart { height:140px; }

  /* Chip ticker row: hide label on mobile */
  .pf-comps-tickers-label { display:none; }
  .pf-comps-chip { padding:4px 10px 4px 8px; }

  /* ── Screener ── */
  #pf-screener { height:auto !important; overflow:visible; }
  .pf-scr2-topbar { flex-wrap:wrap; gap:6px; padding:8px 12px; height:auto; }
  .pf-scr2-label  { font-size:var(--fs-xs); }
  #pf-scr-scatter-view { display:none !important; }
  #pf-scr-table-view   { display:flex !important; flex:none; }
  .pf-scr-tbl thead th { font-size:var(--fs-xs); padding:5px 6px; }
  .pf-scr-tbl tbody td { font-size:var(--fs-xs); padding:5px 6px; }

  /* Filter / rules panels */
  #pf-filtros-panel,
  #pf-reglas-panel { padding:6px 12px; }
  .pf-scr2-ctag-row { gap:4px; padding:4px 0; }

  /* ── Tearsheet ── */
  .pf-ts-grid { flex-direction:column; }
  .pf-ts-side  { width:100% !important; border-right:none; border-bottom:1px solid var(--line); }
  .pf-ts-main  { padding:16px; }

  /* Tearsheet 5-col fixed grid → single-column stacked */
  .pf-ts-main-dashboard {
    display:flex !important;
    flex-direction:column !important;
    height:auto !important;
    gap:1px;
  }
  .pf-ts-left-wrap,
  .pf-ts-left-top,
  .pf-ts-right-col,
  .pf-ts-main-dashboard>.pf-pubcomps-col,
  .pf-ts-main-dashboard>.pf-ts-price-row,
  .pf-ts-keydata-cell,
  .pf-ts-main-dashboard>.pf-ratios-col,
  .pf-ts-fin-cell,
  .pf-ts-valrec-cell {
    grid-column: unset !important;
    grid-row: unset !important;
    width: 100% !important;
    height: auto !important;
    min-height: 200px;
    overflow: visible !important;
    flex-shrink: 0 !important;
  }
  .pf-ts-left-top,
  .pf-ts-price-row { flex-direction: column !important; }
  .pf-ratios-inner { height:auto !important; }
  .pf-ratios-body { grid-template-columns:1fr !important; }
  .pf-ratios-table-wrap { border-right:none; border-bottom:1px solid var(--line); }
  .pf-ts-fin-scroll { height:auto; overflow:visible; }
  .pf-ts-fin-cell .pf-fin-tbl { min-width:100%; }
  .pf-ts-fin-cell .pf-fin-tbl th,
  .pf-ts-fin-cell .pf-fin-tbl td { font-size:var(--fs-xs); padding:4px 6px; }
  /* Tearsheet identity row */
  .pf-ts-identity { flex-wrap:wrap; }
  .pf-ts-id-right { min-width:unset; width:100%; align-items:flex-start; }

  /* Profile header */
  .pf-ts-header { padding:16px; flex-wrap:wrap; gap:10px; }
  .pf-ts-logo   { width:36px; height:36px; font-size:1rem; }
  .pf-ts-name   { font-size:1.1rem; }
  .pf-ts-kpis   { flex-wrap:wrap; gap:8px; padding:12px 16px; }
  .pf-ts-kpi    { min-width:calc(50% - 4px); }

  /* Segment / geo charts */
  .pf-ts-donut-row { flex-direction:column; gap:16px; }

  /* Earnings call transcript */
  .pf-ec-row { padding:10px 14px; }

  /* ── Performance / Portfolio ── */
  .pf-perf-body { padding:12px; }
  .pf-perf-summary-row { flex-wrap:wrap; gap:8px; }
  .pf-perf-kpi  { min-width:calc(50% - 4px); }

  /* Holdings table */
  .pf-port-table th,
  .pf-port-table td { padding:5px 8px; font-size:var(--fs-xs); }
  /* Hide less-important columns on small screens */
  .pf-port-table .col-cost,
  .pf-port-table .col-pe,
  .pf-port-table .col-pfcf { display:none; }

  /* Tesis tracker */
  .pfnp-cp-grid { grid-template-columns:1fr 1fr; gap:8px; padding:12px; }
  .pfnp-cp-card { padding:10px; }

  /* Tesis editor modal */
  .pfnp-tesis-modal-inner { width:calc(100vw - 24px); max-height:90vh; }
  .pfnp-tm-header { padding:14px 16px; }
  #pfnp-tm-body   { padding:12px 14px; }

  /* ── Overlay chart ── */
  .pf-overlay-panel { width:calc(100vw - 24px) !important; right:12px !important; left:12px !important; }
  #pf-overlay-chart { height:200px !important; }

  /* ── Sector heatmap ── */
  #pf-sector-grid { grid-template-columns:repeat(2,1fr) !important; gap:1px; }
  .pf-sec-cell    { padding:10px 8px; font-size:var(--fs-sm); }

  /* ── Yield curve ── */
  .pf-yield-row { gap:6px; }
  .pf-yield-term { width:24px; font-size:var(--fs-sm); }
  .pf-yield-val  { font-size:var(--fs-sm); }

  /* ── Credit spreads ── */
  .pf-credit-row { flex-wrap:wrap; gap:4px; padding:6px 12px; }

  /* ── Column selection modal ── */
  .pf-col-modal-inner { width:calc(100vw - 24px); max-height:85vh; }

  /* ── Comps bottom chart section ── */
  .pf-comps-vchart-grid { display:none; } /* simplified on mobile */
  .pf-comps-yaxis { width:44px; }

  /* ── News popover ── */
  .pf-np-popover { width:calc(100vw - 24px) !important; left:12px !important; right:12px !important; }
}

/* ── VERY SMALL SCREENS (<380px) ─────────────────────────── */
@media(max-width:379px){
  .pf-ctab { padding:0 10px; font-size:var(--fs-xs); }
  .pf-comps-metrics-grid { grid-template-columns:1fr; }
  .pfnp-cp-grid { grid-template-columns:1fr; }
  .pf-perf-kpi,
  .pf-ts-kpi { min-width:100%; }
}

/* ── Removed: .pf-mobile-warn — platform is now fully responsive ── */
.pf-mobile-warn { display:none !important; }

/* ══ REGLAS DE INVERSIÓN ═══════════════════════════════════════ */

/* Section row — sits between Filtros and the control bar, same pattern */
#pf-reglas-panel {
  border-top: 1px solid rgba(255,255,255,.05);
}
/* One rule per row (explicit request) — not wrapped tag pills. flex-start,
   not stretch — see .pf-scr2-filterrows for why stretch made each row's own
   chip an oversized, mostly-empty rectangle. */
#pf-reglas-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 6px 0 6px 0;
}
#pf-filtros-body.collapsed { display: none; }
#pf-reglas-body.collapsed { display: none; }

/* Rule row — same visual language as pf-scr2-ctag-row (filter tag pill) */
.pf-ri-row {
  display: inline-flex;
  align-items: center;
  gap: 0;
  background: rgba(100,170,255,.07);
  border: 1px solid rgba(100,170,255,.22);
  height: 24px;
  overflow: hidden;
}

/* Selects and input inside rule row — same as pf-ctag-* but in blue accent */
.pf-ri-select,
.pf-ri-input {
  background: none;
  border: none;
  outline: none;
  color: rgba(130,190,255,.9);
  font-family: var(--sans);
  font-size:var(--fs-sm);
  letter-spacing: .02em;
  padding: 0;
  height: 100%;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}
.pf-ri-select         { padding: 0 4px 0 7px; }
.pf-ri-select option  { background: var(--bg); color: var(--text); }
.pf-ri-op             { padding: 0 3px; font-style: italic; color: rgba(130,190,255,.6); }
.pf-ri-vs             { padding: 0 3px 0 1px; font-family: var(--mono); font-size:var(--fs-xs); color: rgba(130,190,255,.45); pointer-events: none; flex-shrink: 0; }
.pf-ri-remove {
  background: none;
  border: none;
  border-left: 1px solid rgba(100,170,255,.15);
  color: rgba(100,170,255,.35);
  cursor: pointer;
  font-size:var(--fs-xs);
  padding: 0 6px;
  height: 100%;
  line-height: 1;
  transition: color .12s, background .12s;
}
.pf-ri-remove:hover { color: rgba(130,190,255,.9); background: rgba(100,170,255,.1); }

/* Gauge cell in screener table — matches pfnp-risk-gauge exactly */
.pf-scr-gauge-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2px 8px;
}
.pf-scr-gauge-wrap {
  position: relative;
  width: 34px;
  height: 34px;
  flex-shrink: 0;
}
.pf-scr-gauge-wrap canvas {
  position: absolute;
  inset: 0;
}
.pf-scr-gauge-label {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-family: var(--mono);
  font-size:var(--fs-sm);
  font-weight: 700;
  color: var(--text);
  line-height: 1.1;
  gap: 1px;
}
.pf-scr-gauge-label span { font-size:var(--fs-nano); font-weight: 400; color: var(--muted2); }

#pf-mult-drawer-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.72);z-index:9000;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
#pf-mult-drawer-overlay.open{display:flex;}
#pf-mult-drawer{background:#0c0c0c;border:1px solid rgba(255,255,255,0.09);border-radius:4px;width:min(1100px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 32px 80px rgba(0,0,0,0.8);transform:translateY(12px);opacity:0;transition:transform .22s cubic-bezier(.16,1,.3,1),opacity .18s ease;}
#pf-mult-drawer-overlay.open #pf-mult-drawer{transform:translateY(0);opacity:1;}

/* Metric pill tabs inside drawer header */
.pf-mult-pill-group{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto;}
.pf-mult-pill{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid rgba(255,255,255,.1);color:var(--muted2);padding:3px 10px;cursor:pointer;transition:all .15s;border-radius:2px;}
.pf-mult-pill:hover{border-color:rgba(255,255,255,.2);color:var(--muted);}
.pf-mult-pill.active{border-color:rgba(232,211,165,.5);color:rgba(232,211,165,.9);background:rgba(232,211,165,.06);}

/* Drawer body grid */
.pf-mult-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:1px;background:var(--line);}

/* Top 2-col summary row */
.pf-mult-top-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);}
.pf-mult-stat-pane{background:var(--surface);padding:16px 20px;}
.pf-mult-stat-eyebrow{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:10px;}
.pf-mult-stat-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.03);}
.pf-mult-stat-row:last-child{border-bottom:none;}
.pf-mult-stat-label{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);}
.pf-mult-stat-val{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);}
.pf-mult-stat-val.accent{color:rgba(232,211,165,.9);}
.pf-mult-stat-val.up{color:rgba(100,200,120,.9);}
.pf-mult-stat-val.dn{color:rgba(220,100,100,.9);}

/* Chart pane */
.pf-mult-chart-pane{background:var(--surface);padding:18px 20px 14px;}
.pf-mult-chart-label{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:12px;}
.pf-mult-chart-wrap{position:relative;height:200px;}
.pf-mult-chart-wrap canvas{position:absolute;inset:0;width:100%!important;height:100%!important;}

/* Peer comparison table */
.pf-mult-peer-pane{background:var(--surface);padding:18px 20px 16px;}
.pf-mult-peer-label{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:12px;}
.pf-mult-peer-tbl{width:100%;border-collapse:collapse;}
.pf-mult-peer-tbl th{font-family:var(--sans);font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--muted2);padding:5px 10px 5px 0;text-align:right;font-weight:500;white-space:nowrap;}
.pf-mult-peer-tbl th:first-child{text-align:left;min-width:120px;}
.pf-mult-peer-tbl td{font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.02em;padding:6px 10px 6px 0;border-bottom:1px solid rgba(255,255,255,.03);text-align:right;color:var(--muted);white-space:nowrap;}
.pf-mult-peer-tbl td:first-child{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:.02em;font-weight:600;color:var(--text);text-align:left;}
.pf-mult-peer-tbl tr.is-primary td{color:var(--text);}
.pf-mult-peer-tbl tr.is-primary td:first-child{color:rgba(232,211,165,.9);}
.pf-mult-peer-tbl td.val-hi{color:rgba(100,200,120,.85);}
.pf-mult-peer-tbl td.val-lo{color:rgba(220,100,100,.85);}

/* Z-score band */
.pf-mult-band-pane{background:var(--surface);padding:18px 20px 16px;}
.pf-mult-band-label{font-family:var(--sans);font-size:var(--fs-nano);letter-spacing:.2em;text-transform:uppercase;color:var(--muted2);margin-bottom:14px;}
.pf-mult-gauge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px 20px;}
.pf-mult-gauge-item{display:flex;flex-direction:column;gap:6px;}
.pf-mult-gauge-name{font-family:var(--sans);font-size:var(--fs-xs);color:var(--muted2);letter-spacing:.08em;}
.pf-mult-gauge-bar-track{height:5px;background:rgba(255,255,255,.06);border-radius:3px;position:relative;overflow:hidden;}
.pf-mult-gauge-bar-fill{height:100%;border-radius:3px;transition:width .5s cubic-bezier(.16,1,.3,1);}
.pf-mult-gauge-marker{position:absolute;top:-2px;height:9px;width:2px;background:rgba(232,211,165,.9);transform:translateX(-50%);border-radius:1px;}
.pf-mult-gauge-meta{display:flex;justify-content:space-between;align-items:baseline;}
.pf-mult-gauge-cur{font-family:var(--mono);font-size:var(--fs-sm);font-weight:600;color:var(--text);}
.pf-mult-gauge-range{font-family:var(--mono);font-size:var(--fs-xs);color:var(--muted2);}
.pf-mult-gauge-zscore{font-family:var(--mono);font-size:var(--fs-xs);padding:2px 6px;border-radius:2px;}

/* ── Title-bar glow — click-to-drill overview panels ─────────── */

/* Border breathes slowly between dim and present */
@keyframes ic-modal-breath {
  0%, 100% { opacity: 0.32; }
  50%       { opacity: 0.88; }
}

/* Shimmer sweeps left → right, pauses at each end before repeating */
@keyframes ic-modal-shimmer {
  0%,  8%   { background-position: 112% 0; }
  92%, 100% { background-position: -12% 0; }
}

.ic-modal-glow {
  position: relative;
  isolation: isolate;
}

/* Perimeter border ring + inner ambient fill */
.ic-modal-glow::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  border: 1px solid rgba(232, 211, 165, 0.72);
  box-shadow:
    inset 0 0 18px -3px rgba(232, 211, 165, 0.20),
    inset 0 0  5px  0px rgba(232, 211, 165, 0.13);
  animation: ic-modal-breath 7s ease-in-out infinite;
}

/* Sweeping highlight on the bottom separator line */
.ic-modal-glow::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1px;
  pointer-events: none;
  z-index: 9999;
  background: linear-gradient(to right,
    transparent                0%,
    rgba(232, 211, 165, 0.00) 18%,
    rgba(232, 211, 165, 1.00) 50%,
    rgba(232, 211, 165, 0.00) 82%,
    transparent               100%
  );
  background-size: 300% 100%;
  background-repeat: no-repeat;
  animation: ic-modal-shimmer 5s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}

#pf-ts-fin-scale-tabs { background: none; padding: 0; }

