/* ═══════════════════════════════════════════════════════════
   ETH Bitácora · ETH Desk — Magnus Markets
   BASE THEME: Beacon Terminal (default)
   Canon fonts (system sans/serif/mono) · beacon-blue + cyber-cyan
   Overlays for Æther & Code and Genesis Ledger live in:
     /static/themes/aether.css
     /static/themes/ledger.css
   Font-sizes in rem so root scale controls everything.
   ═══════════════════════════════════════════════════════════ */

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

html{font-size:var(--root-fs, 100%)}

/* ── Beacon Terminal · DARK (default boot) ─────────────── */
:root{
  /* ── Reskin: Mercury Navy (oklch) — base azul profundo ── */
  --bg:oklch(0.165 0.040 257);
  --bg2:oklch(0.205 0.044 256);
  --bg3:oklch(0.245 0.048 255);
  --card:oklch(0.205 0.044 256);
  --card2:oklch(0.235 0.047 255);

  --border:oklch(1 0 0 / 0.09);
  --border2:oklch(1 0 0 / 0.16);

  --cyan:oklch(0.82 0.115 250);
  --cyan2:oklch(0.70 0.130 256);
  --cyan3:oklch(0.82 0.115 250 / 0.14);

  --red:oklch(0.70 0.165 25);
  --red2:oklch(0.58 0.160 25);
  --green:oklch(0.78 0.135 158);
  --green2:oklch(0.62 0.130 158);
  --gold:oklch(0.82 0.125 75);
  --gold2:oklch(0.68 0.130 70);

  --txt:oklch(0.97 0.004 250);
  --txt2:oklch(0.82 0.006 250);
  --txt3:oklch(0.66 0.008 250);

  --accent-amber:oklch(0.82 0.115 250);
  --accent-teal:oklch(0.82 0.115 250);
  --ink:oklch(0.82 0.006 250);
  --ink-strong:oklch(0.97 0.004 250);

  --beacon-pulse:oklch(0.82 0.115 250);

  /* ── Canon typography (Magnus) — system stacks ── */
  --font-sans:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Helvetica,"Segoe UI",Roboto,Arial,sans-serif;
  --font-serif:"New York","Iowan Old Style","Times New Roman",Georgia,serif;
  --font-mono:ui-monospace,"SF Mono",Menlo,Monaco,Consolas,monospace;
  /* roles existentes mapeados al canon */
  --font-prose:var(--font-sans);
  --font-display:var(--font-serif);

  /* ── Canon type scale (base 17) ── */
  --fs-2xs:14px; --fs-xs:15px; --fs-sm:16px; --fs-base:17px;
  --fs-md:19px; --fs-lg:20px; --fs-xl:24px; --fs-2xl:clamp(40px,4.4vw,56px);

  /* ── Canon structural tokens ── */
  --r-sm:9px; --r-md:12px; --r-lg:16px;
  --t-fast:160ms; --t-base:240ms;
  --rail-w-collapsed:56px; --rail-w-expanded:240px;

  /* ── Canon color aliases → paleta Beacon de ETH Desk (NO se cambia el color) ── */
  --surface:var(--card); --surface-2:var(--card2);
  --hairline:var(--border); --hairline-strong:var(--border2);
  --accent:var(--cyan); --accent-hover:var(--cyan2);
  --accent-soft:color-mix(in srgb, var(--cyan) 14%, transparent);
  --text:var(--txt); --text-2:var(--txt2); --text-3:var(--txt3);
  --text-4:color-mix(in srgb, var(--txt3) 65%, transparent);
  --down:var(--red); --up:var(--green); --warn:var(--gold); --oxblood:#BE4655;
  /* venues (institucional gold ETHA · crypto-native cyan Deribit) */
  --etha:oklch(0.80 0.115 85); --deribit:oklch(0.78 0.105 215);
  --shadow-1:0 1px 2px rgba(0,0,0,0.18);
  --shadow-2:0 10px 30px rgba(0,0,0,0.34), 0 2px 4px rgba(0,0,0,0.20);
  --shadow-3:0 26px 60px rgba(0,0,0,0.5);
}

/* ── Design-overlay utility ──────────────────────────────── */
.design-only{display:none !important}
body.design-beacon .beacon-only,
body.design-aether .aether-only,
body.design-ledger .ledger-only{display:initial !important}
body.design-beacon #top-ticker{display:flex !important}
body.design-aether #constellation-bg{display:block !important}
body.design-ledger #marginalia-rail{display:flex !important}

/* ── Beacon Terminal · LIGHT ─────────────────────────────── */
body.theme-light{
  /* ── Reskin: Mercury Navy · light (cool blue-tinted) ── */
  --bg:oklch(0.965 0.006 252);
  --bg2:oklch(0.945 0.008 252);
  --bg3:oklch(0.915 0.010 252);
  --card:oklch(0.995 0.003 250);
  --card2:oklch(0.935 0.008 252);

  --border:oklch(0.30 0.02 255 / 0.10);
  --border2:oklch(0.30 0.02 255 / 0.20);

  --cyan:oklch(0.50 0.135 252);
  --cyan2:oklch(0.44 0.145 255);
  --cyan3:oklch(0.50 0.135 252 / 0.12);

  --red:oklch(0.55 0.185 27);
  --red2:oklch(0.47 0.180 27);
  --green:oklch(0.55 0.145 158);
  --green2:oklch(0.46 0.140 158);
  --gold:oklch(0.62 0.135 70);
  --gold2:oklch(0.54 0.130 65);

  --txt:oklch(0.24 0.012 255);
  --txt2:oklch(0.40 0.012 255);
  --txt3:oklch(0.53 0.011 255);

  --accent-amber:oklch(0.50 0.135 252);
  --accent-teal:oklch(0.50 0.135 252);
  --ink:oklch(0.40 0.012 255);
  --ink-strong:oklch(0.24 0.012 255);

  --beacon-pulse:oklch(0.50 0.135 252);

  --etha:oklch(0.60 0.135 75); --deribit:oklch(0.52 0.120 235);

  /* Re-resolver los aliases canon contra los tokens light.
     Custom properties se computan donde se declaran: si --surface/--text/…
     viven sólo en :root, su var(--card)/var(--txt) queda atado al valor DARK
     de :root y nunca voltea. Redefinirlos acá los liga a los tokens light. */
  --surface:var(--card); --surface-2:var(--card2);
  --hairline:var(--border); --hairline-strong:var(--border2);
  --accent:var(--cyan); --accent-hover:var(--cyan2);
  --accent-soft:color-mix(in srgb, var(--cyan) 14%, transparent);
  --text:var(--txt); --text-2:var(--txt2); --text-3:var(--txt3);
  --text-4:color-mix(in srgb, var(--txt3) 65%, transparent);
  --down:var(--red); --up:var(--green); --warn:var(--gold);

  /* Sombras suaves para fondo claro (las dark son demasiado pesadas en light) */
  --shadow-1:0 1px 2px oklch(0.30 0.02 255 / 0.08);
  --shadow-2:0 10px 30px oklch(0.30 0.02 255 / 0.10), 0 2px 4px oklch(0.30 0.02 255 / 0.06);
  --shadow-3:0 26px 60px oklch(0.30 0.02 255 / 0.16);
}

body{
  background:var(--bg);
  color:var(--txt);
  font:1rem/1.6 var(--font-prose);
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  font-variant-ligatures:none;
  min-height:100vh;
  overflow-x:hidden;
  background-image:
    radial-gradient(ellipse 60% 30% at 50% 0%,   color-mix(in oklab, var(--accent-amber) 14%, transparent), transparent 70%),
    radial-gradient(ellipse 80% 40% at 50% 100%, color-mix(in oklab, var(--accent-teal) 6%, transparent),  transparent 70%);
  background-attachment:fixed;
  transition:background-color .3s, color .3s;
}
/* Subtle Beacon grid texture (only on dark default) */
body.design-beacon:not(.theme-light)::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='80' height='80'><path d='M80 0 H0 V80' stroke='%23161b2a' stroke-width='1' fill='none'/></svg>");
  background-size:80px 80px;opacity:.45;
}

::selection{background:color-mix(in oklab, var(--accent-amber) 40%, transparent); color:var(--ink-strong)}

.grid-bg{display:none}

.wrap{position:relative;z-index:1;max-width:1600px;margin:0 auto;padding:0 32px 48px}

/* ── TABS ───────────────────────────────────────────────── */
.tabs{
  display:flex;gap:2px;
  margin:24px 0 0;
  border-bottom:1px solid var(--border);
}
.tab-btn{
  background:transparent;border:0;border-bottom:2px solid transparent;
  color:var(--txt3);
  font-family:var(--font-mono);font-size:0.84rem;font-weight:500;
  letter-spacing:0.14em;text-transform:uppercase;
  padding:14px 22px;cursor:pointer;transition:all .2s;
  margin-bottom:-1px;
}
.tab-btn:hover{color:var(--accent-amber)}
.tab-btn.active{
  color:var(--accent-amber);
  border-bottom-color:var(--accent-amber);
}
.tab-panel[hidden]{display:none}

/* ── REGIME BANNER ──────────────────────────────────────── */
.regime-banner{
  background:var(--bg2);
  border:1px solid var(--border);
  border-radius:3px;
  padding:28px 32px;
  margin:24px 0 18px;
  display:grid;
  grid-template-columns:1fr;
  gap:22px;
}
.reg-eyebrow{
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.28em;text-transform:uppercase;
  color:color-mix(in oklab, var(--ink) 55%, transparent);
  margin-bottom:6px;
}
.reg-headline{
  font-family:var(--font-display);
  font-size:3rem;font-weight:400;font-style:italic;
  line-height:0.95;letter-spacing:-0.012em;
  margin-bottom:14px;
  color:var(--ink-strong);
}
.reg-headline.bull{color:var(--green)}
.reg-headline.bear{color:var(--red)}
.reg-headline.neutral{color:var(--gold)}
.reg-score-row{display:flex;align-items:baseline;gap:6px;margin-bottom:14px}
.reg-score{font-family:var(--font-mono);font-size:1.6rem;font-weight:600;font-variant-numeric:tabular-nums}
.reg-score.bull{color:var(--green)}
.reg-score.bear{color:var(--red)}
.reg-score.neutral{color:var(--gold)}
.reg-score-tot{font-family:var(--font-mono);font-size:0.92rem;color:var(--txt3);letter-spacing:0.04em}
.reg-bar{
  position:relative;height:8px;
  background:linear-gradient(90deg,
    color-mix(in oklab, var(--red) 30%, transparent) 0%,
    color-mix(in oklab, var(--red) 15%, transparent) 35%,
    color-mix(in oklab, var(--gold) 14%, transparent) 50%,
    color-mix(in oklab, var(--green) 15%, transparent) 65%,
    color-mix(in oklab, var(--green) 30%, transparent) 100%);
  border-radius:4px;
  border:1px solid var(--border);
}
.reg-bar-zero{position:absolute;left:50%;top:-3px;width:1px;height:14px;background:var(--border2);transform:translateX(-0.5px)}
.reg-bar-marker{
  position:absolute;top:-4px;width:14px;height:16px;
  background:var(--ink-strong);border-radius:2px;
  transform:translateX(-50%);
  box-shadow:0 1px 3px rgba(0,0,0,.2);
  transition:left .6s ease, background-color .2s;
}
.reg-bar-marker.bull{background:var(--green)}
.reg-bar-marker.bear{background:var(--red)}
.reg-bar-marker.neutral{background:var(--gold)}
.reg-bar-labels{
  display:flex;justify-content:space-between;
  font-family:var(--font-mono);font-size:0.84rem;
  color:var(--txt3);letter-spacing:0.08em;
  margin-top:8px;
}
.reg-chips{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:10px;
}
.reg-chip{
  background:var(--bg);
  border:1px solid var(--border);
  border-left:3px solid var(--border2);
  border-radius:2px;
  padding:12px 14px;
  display:flex;flex-direction:column;gap:6px;
  min-width:0;
}
.reg-chip.bull{border-left-color:var(--green)}
.reg-chip.bear{border-left-color:var(--red)}
.reg-chip.neutral{border-left-color:var(--gold)}
.reg-chip.pending{border-left-color:var(--txt3);border-left-style:dashed;background:color-mix(in oklab, var(--bg) 92%, var(--ink))}
.reg-chip-label{
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.16em;text-transform:uppercase;
  color:color-mix(in oklab, var(--ink) 60%, transparent);
}
.reg-chip-score{
  font-family:var(--font-display);font-size:1.4rem;font-weight:400;
  color:var(--ink-strong);font-variant-numeric:tabular-nums;line-height:1;
}
.reg-chip.bull .reg-chip-score{color:var(--green)}
.reg-chip.bear .reg-chip-score{color:var(--red)}
.reg-chip.neutral .reg-chip-score{color:var(--gold)}
.reg-chip.pending .reg-chip-score{font-size:0.84rem;font-family:var(--font-mono);font-style:italic;color:var(--txt3)}
.reg-chip-meta{
  font-family:var(--font-mono);font-size:0.84rem;
  color:var(--txt3);display:flex;justify-content:space-between;gap:8px;
}
.reg-w{letter-spacing:0.04em}
.reg-contrib{color:var(--accent-teal);font-variant-numeric:tabular-nums}
.reg-norm-note{
  font-family:var(--font-mono);font-size:0.84rem;
  color:var(--txt3);
  padding-top:10px;border-top:1px dashed var(--border);
  line-height:1.5;
}

/* ── PHASE 2 PLACEHOLDER ────────────────────────────────── */
.placeholder-card{
  background:transparent;
  border:1px dashed var(--border2);
  border-radius:3px;
  padding:24px 26px;
  display:flex;flex-direction:column;gap:10px;
}
.ph-tag{
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.20em;text-transform:uppercase;
  color:var(--gold);font-weight:500;
}
.ph-text{
  font-size:0.92rem;color:var(--ink);line-height:1.55;max-width:72ch;
}

/* ── METHODOLOGY TAB ────────────────────────────────────── */
/* ═══════════════════════════════════════════════════════════
   METHODOLOGY · redesign scopeado bajo .mth-scope
   (editor de pesos premium — hero + cards + locked grids)
   Clases prefijadas mth- · tokens canon · sin chocar con otras vistas.
   La lógica (renderMethodSliders/renderMethodPreview) es la existente.
   ═══════════════════════════════════════════════════════════ */
.mth-scope{--mth-cyan:var(--deribit)}

/* ════════════════ PAGE HEADER · .pgh ════════════════
   Encabezado de sección unificado. Acento siempre oxblood (barra vertical
   + glyph + dot del stamp). Sin breadcrumb. Portado de eth-desk-redesign/
   page-header/d3.html con el acento fijado a var(--oxblood). */
.pgh{padding:6px 0 16px;margin-bottom:18px;border-bottom:1px solid var(--hairline)}
.pgh-lead{display:flex;align-items:flex-start;gap:21px}
.pgh-glyph{flex:0 0 auto;width:38px;height:38px;display:grid;place-items:center;color:var(--oxblood);margin-top:2px;position:relative}
.pgh-glyph::before{content:"";position:absolute;left:-21px;top:-2px;bottom:-2px;width:2px;background:var(--oxblood);border-radius:2px}
.pgh-glyph svg{width:32px;height:32px}
.pgh-titlewrap{min-width:0}
.pgh-title{font-family:var(--font-serif);font-weight:500;letter-spacing:-.014em;line-height:1.0;font-size:clamp(34px,4.1vw,50px);color:var(--text);margin:0}
.pgh-foot{display:flex;align-items:baseline;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-top:13px;padding-left:59px}
.pgh-sub{max-width:54ch;font-size:var(--fs-base);color:var(--text-3);line-height:1.5;margin:0}
.pgh-stamp{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-4);white-space:nowrap}
.pgh-stamp .dot{width:6px;height:6px;border-radius:999px;background:var(--oxblood)}
@media (max-width:640px){
  .pgh-foot{padding-left:0}
  .pgh-glyph{width:34px;height:34px}
  .pgh-glyph svg{width:28px;height:28px}
  .pgh-title{font-size:32px}
}

/* ── masthead ── */
.mth-masthead{padding:8px 0 18px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap}
.mth-kicker{display:flex;align-items:center;gap:10px;font-size:var(--fs-2xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.mth-rh{color:var(--oxblood);font-size:14px}
.mth-mh-title{font-family:var(--font-serif);font-weight:500;letter-spacing:-.005em;line-height:1.15;font-size:var(--fs-md);margin-top:6px;color:var(--text-2)}

/* ── HERO: recipe (izq) + preview (der) ── */
.mth-hero{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:20px;align-items:stretch}

/* IZQ · la receta */
.mth-recipe{position:relative;overflow:hidden;background:linear-gradient(180deg, var(--surface-2) 0%, var(--surface) 42%);border:1px solid var(--hairline);border-radius:var(--r-lg);box-shadow:var(--shadow-2);display:flex;flex-direction:column}
.mth-recipe::before{content:"";position:absolute;inset:0 0 auto 0;height:1px;background:linear-gradient(90deg,transparent,var(--hairline-strong) 30%,var(--hairline-strong) 70%,transparent)}
.mth-recipe-top{padding:24px 26px 18px}
.mth-recipe-eyebrow{display:flex;align-items:center;gap:9px;font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.mth-recipe-cat{font-family:var(--font-serif);font-weight:600;line-height:1.12;letter-spacing:-.01em;font-size:27px;margin-top:8px;color:var(--text)}
.mth-recipe-lede{font-size:var(--fs-sm);color:var(--text-2);line-height:1.5;margin-top:11px}
.mth-formula{border-top:1px solid var(--hairline);padding:16px 26px 18px;background:color-mix(in oklab, var(--bg) 50%, transparent)}
.mth-formula-label{font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);font-weight:600;margin-bottom:14px}
.mth-formula-eq{display:flex;align-items:center;flex-wrap:wrap;gap:9px 8px}
.mth-fterm{display:inline-flex;flex-direction:column;gap:3px;padding:9px 13px;border-radius:var(--r-sm);border:1px solid var(--hairline-strong);background:var(--surface-2)}
.mth-fterm .mth-fw{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1;color:var(--accent)}
.mth-fterm .mth-fn{font-size:14px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.mth-fop{font-family:var(--font-mono);font-size:var(--fs-lg);color:var(--text-4);font-weight:500}
.mth-feq{font-family:var(--font-mono);font-size:var(--fs-lg);color:var(--text-3);font-weight:600}
.mth-fres{display:inline-flex;flex-direction:column;gap:3px;padding:9px 14px;border-radius:var(--r-sm);border:1px solid color-mix(in oklab,var(--accent) 32%,transparent);background:color-mix(in oklab,var(--accent) 9%,transparent)}
.mth-fres .mth-fw{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:600;color:var(--text);line-height:1}
.mth-fres .mth-fn{font-size:14px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.mth-formula-foot{margin-top:13px;font-size:14px;color:var(--text-4);line-height:1.45}
.mth-recipe-norm{margin-top:auto;padding:14px 26px;border-top:1px solid var(--hairline);display:flex;gap:11px;align-items:flex-start}
.mth-recipe-norm .mth-ni{flex:0 0 auto;width:18px;height:18px;color:var(--accent);margin-top:1px}
.mth-recipe-norm .mth-ni svg{width:18px;height:18px}
.mth-recipe-norm .mth-nt{font-size:14px;color:var(--text-3);line-height:1.5}

/* DER · preview en vivo */
.mth-preview-col{display:flex;flex-direction:column;gap:14px;align-self:start}
.mth-preview-head{display:flex;align-items:center;gap:9px;font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.mth-preview-head .mth-seam{width:4px;height:15px;border-radius:2px;background:var(--accent)}
.mth-pulse{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:14px;letter-spacing:.02em;text-transform:none;color:var(--text-4);font-weight:500}
.mth-pulse .mth-d{width:6px;height:6px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.mth-preview{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-1);padding:20px 20px 16px;display:flex;flex-direction:column}
.mth-preview.bear{border-left:3px solid color-mix(in oklab,var(--down) 55%,transparent)}
.mth-preview.bull{border-left:3px solid color-mix(in oklab,var(--up) 55%,transparent)}
.mth-preview.neutral{border-left:3px solid color-mix(in oklab,var(--warn) 55%,transparent)}
.mth-preview-top{display:flex;gap:20px;align-items:center}

/* gauge rombo */
.mth-gauge{position:relative;flex:0 0 auto;width:124px;height:124px;display:grid;place-items:center}
.mth-gauge svg.mth-ring{position:absolute;inset:0;transform:rotate(-90deg)}
.mth-gauge .mth-ring-track{stroke:var(--hairline-strong)}
.mth-gauge .mth-rhombus{position:absolute;width:60px;height:60px;transform:rotate(45deg);border-radius:9px;border:1px solid var(--hairline-strong);background:color-mix(in oklab,var(--accent) 6%,transparent)}
.mth-gauge.bear .mth-rhombus{border-color:color-mix(in oklab,var(--down) 38%,transparent);background:color-mix(in oklab,var(--down) 9%,transparent)}
.mth-gauge.bull .mth-rhombus{border-color:color-mix(in oklab,var(--up) 38%,transparent);background:color-mix(in oklab,var(--up) 9%,transparent)}
.mth-gauge.neutral .mth-rhombus{border-color:color-mix(in oklab,var(--warn) 38%,transparent);background:color-mix(in oklab,var(--warn) 9%,transparent)}
.mth-gn{position:relative;text-align:center;line-height:1}
.mth-gn-num{font-family:var(--font-mono);font-size:42px;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text)}
.mth-gauge.bear .mth-gn-num{color:var(--down)} .mth-gauge.bull .mth-gn-num{color:var(--up)} .mth-gauge.neutral .mth-gn-num{color:var(--warn)}
.mth-gn-den{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--text-3);display:block;margin-top:2px}
.mth-gn-zone{font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-weight:600;display:block;margin-top:5px}
.mth-gauge.bear .mth-gn-zone{color:var(--down)} .mth-gauge.bull .mth-gn-zone{color:var(--up)} .mth-gauge.neutral .mth-gn-zone{color:var(--warn)}

.mth-preview-read{min-width:0}
.mth-preview-cat{font-family:var(--font-serif);font-size:23px;font-weight:600;line-height:1.12;letter-spacing:-.01em;color:var(--text)}
.mth-preview.bear .mth-preview-cat{color:var(--down)} .mth-preview.bull .mth-preview-cat{color:var(--up)} .mth-preview.neutral .mth-preview-cat{color:var(--warn)}
.mth-preview-fg{font-size:14px;color:var(--text-3);margin-top:5px;line-height:1.4}
.mth-preview-fg b{color:var(--warn);font-weight:600}

/* barra de 5 zonas */
.mth-pv-bar{position:relative;height:8px;border-radius:999px;overflow:hidden;display:flex;margin-top:16px}
.mth-pv-bar .mth-z{height:100%}
.mth-z-strong-bear{width:25%;background:color-mix(in oklab,var(--down) 52%,transparent)}
.mth-z-mild-bear{width:15%;background:color-mix(in oklab,var(--down) 26%,transparent)}
.mth-z-neutral{width:20%;background:var(--hairline-strong)}
.mth-z-mild-bull{width:15%;background:color-mix(in oklab,var(--up) 26%,transparent)}
.mth-z-strong-bull{width:25%;background:color-mix(in oklab,var(--up) 52%,transparent)}
.mth-pv-marker{position:absolute;top:50%;width:3px;height:16px;border-radius:2px;transform:translate(-50%,-50%);box-shadow:0 0 0 2px var(--surface);background:var(--warn)}
.mth-pv-marker.bear{background:var(--down)} .mth-pv-marker.bull{background:var(--up)}
.mth-pv-scale{display:flex;justify-content:space-between;margin-top:7px;font-family:var(--font-mono);font-size:14px;color:var(--text-4)}

/* suma de pesos + reset */
.mth-weight-meter{margin-top:16px;border-top:1px solid var(--hairline);padding-top:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.mth-wm-left{display:flex;flex-direction:column;gap:2px}
.mth-wm-lbl{font-size:14px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-4);font-weight:600}
.mth-wm-val{display:inline-flex;align-items:baseline;gap:8px}
.mth-wm-num{font-family:var(--font-mono);font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.mth-wm-num.ok{color:var(--up)} .mth-wm-num.warn{color:var(--warn)}
.mth-wm-tag{font-size:14px;font-weight:600}
.mth-wm-tag.ok{color:var(--up)} .mth-wm-tag.warn{color:var(--warn)}
.mth-wm-reset{font:inherit;font-size:var(--fs-2xs);font-weight:600;display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 15px;border:1px solid var(--hairline-strong);border-radius:999px;background:var(--surface-2);color:var(--text-2);cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast)}
.mth-wm-reset:hover{color:var(--text);border-color:color-mix(in oklab,var(--accent) 40%,transparent);background:var(--accent-soft)}
.mth-wm-reset svg{width:15px;height:15px}

/* reparto del 100% */
.mth-contrib-card{border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-1);padding:15px 18px 16px}
.mth-contrib-label{font-size:var(--fs-2xs);letter-spacing:.04em;color:var(--text-2);font-weight:600}
.mth-contrib-sub{display:block;margin-top:2px;font-size:15px;letter-spacing:0;color:var(--text-3);font-weight:500}
.mth-contrib-stack{display:flex;height:13px;border-radius:999px;overflow:hidden;margin-top:13px;background:var(--surface-2)}
.mth-seg-c{height:100%}
.mth-contrib-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:13px}
.mth-cl-item{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--text-3)}
.mth-cl-item .mth-sw{width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.mth-cl-item b{font-family:var(--font-mono);color:var(--text-2);font-weight:600;font-variant-numeric:tabular-nums}

/* ── section titles ── */
.mth-sliders{display:block}
.mth-sec{margin-top:40px}
.mth-sec-title{display:flex;align-items:center;gap:14px;margin-bottom:8px}
.mth-sec-title .mth-dot{width:8px;height:8px;transform:rotate(45deg);background:var(--accent);border-radius:2px;flex:0 0 auto}
.mth-sec-title .mth-dot.lock{background:var(--text-4)}
.mth-sec-title h2{font-family:var(--font-serif);font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em;color:var(--text)}
.mth-sec-title .mth-line{flex:1;height:1px;background:var(--hairline)}
.mth-badge{font-size:var(--fs-2xs);font-family:var(--font-mono);color:var(--text-3);border:1px solid var(--hairline);padding:3px 9px;border-radius:999px;white-space:nowrap}
.mth-badge.active{color:var(--up);border-color:color-mix(in oklab,var(--up) 32%,transparent)}
.mth-sec-sub{font-size:var(--fs-2xs);color:var(--text-4);margin-bottom:18px;line-height:1.5}

/* ── editor de pesos · dim card ── */
.mth-dim-list{display:flex;flex-direction:column;gap:16px}
.mth-dim{border:1px solid var(--hairline);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);padding:18px 22px;transition:border-color var(--t-fast)}
.mth-dim:focus-within{border-color:color-mix(in oklab,var(--accent) 36%,transparent)}
.mth-dim-head{display:flex;align-items:flex-start;gap:14px}
.mth-dim-name-wrap{min-width:0;flex:1}
.mth-dim-name{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mth-dim-name .n{font-family:var(--font-serif);font-size:var(--fs-lg);font-weight:600;color:var(--text);letter-spacing:-.01em}
.mth-phase-badge{font-size:14px;letter-spacing:.04em;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap}
.mth-phase-badge.p1{color:var(--up);border:1px solid color-mix(in oklab,var(--up) 30%,transparent);background:color-mix(in oklab,var(--up) 11%,transparent)}
.mth-dim-src{font-size:15px;color:var(--text-3);line-height:1.45;margin-top:6px}
.mth-dim-formula{font-size:15px;color:var(--text-3);line-height:1.45;margin-top:4px;font-family:var(--font-mono)}
.mth-dim-val{flex:0 0 auto;display:flex;align-items:baseline;gap:3px}
.mth-dim-val input{font:inherit;font-family:var(--font-mono);font-size:32px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;width:74px;text-align:right;background:transparent;border:0;border-bottom:2px solid var(--hairline-strong);color:var(--accent);padding:0 2px 2px;min-height:40px}
.mth-dim-val input:focus{outline:none;border-bottom-color:var(--accent)}
.mth-dim-val .suf{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--text-4);font-weight:600}
.mth-dim-slider-row{display:flex;align-items:center;gap:14px;margin-top:16px}
.mth-scope input.method-slider{-webkit-appearance:none;appearance:none;flex:1;width:auto;height:8px;border-radius:999px;cursor:pointer;margin:0;background:linear-gradient(90deg, var(--accent) 0 var(--fill,60%), var(--surface-2) var(--fill,60%) 100%);border:1px solid var(--hairline)}
.mth-scope input.method-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;border-radius:999px;background:var(--text);border:5px solid var(--accent);box-shadow:var(--shadow-2);cursor:grab;margin-top:0}
.mth-scope input.method-slider::-moz-range-thumb{width:24px;height:24px;border-radius:999px;background:var(--text);border:5px solid var(--accent);box-shadow:var(--shadow-2);cursor:grab}
.mth-scope input.method-slider:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.mth-dim-contrib{flex:0 0 auto;min-width:128px;text-align:right;display:flex;flex-direction:column;gap:2px}
.mth-dim-contrib .ck{font-size:14px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-4);font-weight:600}
.mth-dim-contrib .cv{font-family:var(--font-mono);font-size:var(--fs-md);color:var(--text-2);font-weight:600;font-variant-numeric:tabular-nums;line-height:1.05}
.mth-dim-contrib .cv b{color:var(--accent);font-size:var(--fs-lg)}
.mth-dim-contrib .cv .den{font-size:14px;color:var(--text-4);font-weight:500}

/* ── desglose de sub-pesos ── */
.mth-subw{margin-top:16px;border-top:1px solid var(--hairline);padding-top:14px}
.mth-subw-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}
.mth-subw-title{font-size:var(--fs-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);font-weight:600}
.mth-subw-sum{font-family:var(--font-mono);font-size:14px;color:var(--text-4);font-variant-numeric:tabular-nums}
.mth-subw-sum b{color:var(--text-2);font-weight:600}
.mth-scope .mth-subw-table{display:table;width:100%;border-collapse:collapse;background:transparent;border:0}
.mth-scope .mth-sw-row{transition:background var(--t-fast)}
.mth-scope .mth-sw-row:hover{background:var(--surface-2)}
.mth-scope .mth-sw-row.zero{opacity:.62}
.mth-scope .mth-sw-row td{padding:8px;border:0;background:transparent;text-align:left;font-family:var(--font-sans);vertical-align:middle}
.mth-scope .mth-sw-row td.mw-mark{width:18px;text-align:center;font-family:var(--font-mono);font-size:14px}
.mth-sw-mark.on{color:var(--accent)} .mth-sw-mark.off{color:var(--text-4)}
.mth-sw-name{min-width:0}
.mth-sw-name .nm{font-size:var(--fs-2xs);color:var(--text-2);font-weight:500;display:block}
.mth-sw-name .note{font-size:15px;color:var(--text-3);line-height:1.4;display:block;margin-top:1px}
.mth-scope td.mw-pct{display:table-cell;position:relative;width:150px;min-width:0;gap:0;padding:8px;flex:none}
.mth-sw-bar{position:relative;height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden;pointer-events:none}
.mth-sw-bar .fill{position:absolute;inset:0 auto 0 0;background:var(--accent);border-radius:999px}
.mth-sw-bar .fill.off{background:var(--hairline-strong)}
.mth-scope input.mw-pct-slider{position:absolute;left:8px;right:8px;top:50%;transform:translateY(-50%);width:auto;height:24px;margin:0;opacity:0;cursor:pointer}
.mth-scope .mth-sw-pctcell{width:64px;text-align:right;white-space:nowrap}
.mth-scope input.mw-pct-input{font-family:var(--font-mono);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums;width:40px;text-align:right;background:transparent;border:0;border-bottom:1px solid var(--hairline);color:var(--text-2);padding:2px 2px;min-height:28px}
.mth-scope input.mw-pct-input:focus{outline:none;border-bottom-color:var(--accent);color:var(--accent)}
.mth-sw-suf{font-family:var(--font-mono);font-size:14px;color:var(--text-4)}

/* ── fase 2/3 · locked grids ── */
.mth-locked-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.mth-locked{position:relative;border:1px dashed var(--hairline-strong);border-radius:var(--r-md);background:color-mix(in oklab,var(--surface) 78%,transparent);padding:16px 18px;display:flex;flex-direction:column;gap:8px}
.mth-locked-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.mth-locked-name{display:flex;align-items:center;gap:9px;min-width:0}
.mth-locked-name .mth-lk{flex:0 0 auto;width:16px;height:16px;color:var(--text-4)}
.mth-locked-name .mth-lk svg{width:16px;height:16px}
.mth-locked-name .n{font-size:var(--fs-sm);font-weight:600;color:var(--text-2)}
.mth-locked-pct{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:600;color:var(--text-4);font-variant-numeric:tabular-nums}
.mth-locked-note{font-size:14px;color:var(--text-3);line-height:1.45}
.mth-locked-src{font-size:15px;color:var(--text-3);line-height:1.4;font-family:var(--font-mono)}
.mth-locked-tag{align-self:flex-start;font-size:14px;letter-spacing:.04em;font-weight:600;padding:2px 9px;border-radius:999px;color:var(--text-3);border:1px solid var(--hairline-strong);background:var(--surface-2)}

/* ── Next phase · fichas cuadradas (home) → modal + detalle en Metodología ── */
.np-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:14px;margin-top:4px}
.np-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:8px;aspect-ratio:1/1;padding:16px;border:1px dashed var(--hairline-strong);border-radius:var(--r-md);background:color-mix(in oklab,var(--surface) 70%,transparent);color:var(--text-2);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--t-fast),background var(--t-fast),transform var(--t-fast)}
.np-card:hover{border-color:var(--accent);background:color-mix(in oklab,var(--surface-2) 80%,transparent);transform:translateY(-1px)}
.np-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.np-lock{width:20px;height:20px;color:var(--text-4)}
.np-lock svg{width:20px;height:20px}
.np-name{font-size:var(--fs-md);font-weight:600;color:var(--text);line-height:1.2;margin-top:auto}
.np-tag{font-size:var(--fs-2xs);letter-spacing:.04em;color:var(--text-3);padding:2px 8px;border-radius:999px;border:1px solid var(--hairline-strong);background:var(--surface-2)}
.np-expand{position:absolute;top:12px;right:12px;font-size:var(--fs-sm);color:var(--text-4);opacity:.4;transition:opacity var(--t-fast)}
.np-card:hover .np-expand{opacity:1;color:var(--accent)}
.np-modal-pct{font-family:var(--font-mono);font-size:var(--fs-md);font-weight:600;color:var(--text-4)}
.np-modal-block{padding:14px 0;border-top:1px solid var(--hairline)}
.np-modal-block:first-child{border-top:0}
.np-modal-h{font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);font-weight:600;margin-bottom:8px}
.np-modal-formula{font-size:var(--fs-base);color:var(--text);line-height:1.5}
.np-modal-src{font-size:var(--fs-sm);color:var(--text-3);font-family:var(--font-mono);line-height:1.45}
.np-modal-subs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.np-modal-subs li{display:flex;align-items:baseline;gap:8px;font-size:var(--fs-sm);color:var(--text-2);line-height:1.4}
.np-modal-subs .d{color:var(--accent);font-weight:700}
.np-modal-subs .nm{font-weight:500}
.np-modal-subs .nt{color:var(--text-4);font-size:var(--fs-2xs);margin-left:auto;text-align:right}
/* Metodología: chip + lista de sub-indicadores en locked cards + sección feeds */
.mth-locked-chip{font-size:var(--fs-2xs);letter-spacing:.04em;color:var(--text-3);padding:1px 7px;border-radius:999px;border:1px solid var(--hairline);background:var(--surface-2)}
.mth-locked-subs{list-style:none;margin:2px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}
.mth-locked-subs li{font-size:14px;color:var(--text-3);line-height:1.4;padding-left:14px;position:relative}
.mth-locked-subs li::before{content:"·";position:absolute;left:3px;color:var(--text-4)}
.mth-prelim{margin-top:40px}

/* ── responsive ── */
@media(max-width:1024px){
  .mth-hero{grid-template-columns:1fr}
  .mth-locked-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:640px){
  .mth-recipe-top{padding:20px 18px 14px}
  .mth-recipe-cat{font-size:22px}
  .mth-formula{padding:14px 18px 16px}
  .mth-recipe-norm{padding:14px 18px}
  .mth-preview-top{flex-direction:column;align-items:center;text-align:center;gap:14px}
  .mth-preview-read{width:100%}
  .mth-preview-cat{font-size:21px}
  .mth-dim{padding:16px 16px}
  .mth-dim-head{gap:10px}
  .mth-dim-val input{font-size:27px;width:62px}
  .mth-dim-slider-row{flex-wrap:wrap}
  .mth-scope input.method-slider{flex-basis:100%;order:1}
  .mth-dim-contrib{order:2;min-width:0;text-align:left;margin-top:4px}
  .mth-locked-grid{grid-template-columns:1fr}
  .mth-scope td.mw-pct{width:110px}
}

/* ── HEADER / BANNER ────────────────────────────────────── */
header{display:flex;align-items:center;justify-content:space-between;padding:36px 0 28px;border-bottom:1px solid var(--border);gap:24px;flex-wrap:wrap}
.logo-area{display:flex;align-items:center;gap:24px;min-width:0;flex:1 1 auto}

/* Logo gets a sepia "stamped" frame — distinguishes the masthead */
.logo-frame{
  width:96px;height:96px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:color-mix(in oklab, var(--accent-amber) 6%, var(--bg2));
  border:1px solid color-mix(in oklab, var(--accent-amber) 28%, transparent);
  border-radius:3px;
  box-shadow:
    inset 0 0 0 1px color-mix(in oklab, var(--accent-amber) 10%, transparent),
    0 1px 0 color-mix(in oklab, var(--ink) 5%, transparent);
  position:relative;
}
.logo-frame::before,
.logo-frame::after{
  content:"";position:absolute;width:8px;height:8px;
  border:1px solid var(--accent-amber);
}
.logo-frame::before{top:6px;left:6px;border-right:0;border-bottom:0}
.logo-frame::after{bottom:6px;right:6px;border-left:0;border-top:0}
.logo-area img{width:72px;height:72px;object-fit:contain;opacity:.95;display:block}

/* Vertical rule separating logo from wordmark — editorial feel */
.brand-rule{
  width:1px;height:88px;
  background:linear-gradient(180deg,
    transparent,
    color-mix(in oklab, var(--accent-amber) 50%, transparent) 30%,
    color-mix(in oklab, var(--accent-amber) 50%, transparent) 70%,
    transparent);
  flex-shrink:0;
}

.brand{display:flex;flex-direction:column;justify-content:center;min-width:0}
.brand-eyebrow{
  font-family:var(--font-mono);
  font-size:0.84rem;
  letter-spacing:0.28em;
  text-transform:uppercase;
  color:color-mix(in oklab, var(--ink) 55%, transparent);
  margin-bottom:8px;
}
.brand h1{
  font-family:var(--font-display);
  font-size:3.4rem;
  font-weight:400;
  font-style:italic;
  color:var(--accent-amber);
  letter-spacing:-0.015em;
  line-height:0.95;
  text-wrap:balance;
}
.brand p{
  font-size:0.84rem;
  color:color-mix(in oklab, var(--ink) 62%, transparent);
  letter-spacing:0.18em;
  text-transform:uppercase;
  margin-top:10px;
  font-family:var(--font-mono);
  font-weight:500;
}
.header-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.live-badge{display:flex;align-items:center;gap:8px;font-size:0.84rem;color:var(--green);letter-spacing:0.20em;text-transform:uppercase;font-family:var(--font-mono);font-weight:500}
.live-dot{width:8px;height:8px;background:var(--green);border-radius:50%;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(1.45)}}
.ts{font-size:0.84rem;color:var(--txt3);font-family:var(--font-mono);letter-spacing:0.08em}

/* ── Control group (theme + scale) ──────────────────────── */
.ctrl-group{display:flex;gap:4px;align-items:center}
.ctrl-btn{
  background:transparent;border:1px solid var(--border);color:var(--txt2);
  font-family:var(--font-mono);font-size:0.84rem;font-weight:500;
  width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border-radius:2px;transition:all .2s;padding:0;letter-spacing:0.04em;
}
.ctrl-btn:hover{border-color:var(--accent-amber);color:var(--accent-amber)}
.ctrl-btn svg{width:15px;height:15px;stroke:currentColor;fill:none}
.ctrl-btn.ctrl-designs{
  width:auto;padding:0 12px;
  text-decoration:none;
  border-color:color-mix(in oklab, var(--accent-amber) 30%, var(--border));
  color:var(--accent-amber);
  font-size:0.84rem;letter-spacing:0.14em;text-transform:uppercase;font-weight:500;
}
.ctrl-btn.ctrl-designs:hover{background:color-mix(in oklab, var(--accent-amber) 10%, transparent)}
.ctrl-btn .ico-moon{display:none}
body.theme-dark .ctrl-btn .ico-sun{display:none}
body.theme-dark .ctrl-btn .ico-moon{display:block}

/* Language toggle */
.lang-toggle{display:flex;gap:4px}
.lang-btn{background:transparent;border:1px solid var(--border);color:var(--txt3);font-family:var(--font-mono);font-size:0.84rem;padding:7px 13px;cursor:pointer;border-radius:2px;letter-spacing:0.12em;transition:all .2s;text-transform:uppercase;font-weight:500;min-height:34px}
.lang-btn.active{background:color-mix(in oklab, var(--accent-amber) 10%, transparent);color:var(--accent-amber);border-color:color-mix(in oklab, var(--accent-amber) 32%, transparent)}
.lang-btn:hover{border-color:var(--accent-amber);color:var(--accent-amber)}

/* Countdown chip (reemplaza btn-refresh) */
.countdown{
  display:inline-flex;align-items:center;gap:6px;
  background:transparent;
  border:1px solid var(--border);
  color:var(--txt2);
  font-family:var(--font-mono);font-size:0.84rem;font-weight:500;
  padding:8px 14px;min-height:34px;
  border-radius:2px;cursor:pointer;letter-spacing:0.04em;
  transition:all .2s;
}
.countdown:hover{border-color:var(--accent-amber);color:var(--accent-amber)}
.countdown:disabled{cursor:wait;opacity:.7}
.countdown strong{
  color:var(--accent-amber);font-weight:500;
  font-variant-numeric:tabular-nums;
  min-width:1.6em;text-align:right;display:inline-block;
}
.countdown .cd-busy{display:none}
.countdown.refreshing .cd-idle{display:none}
.countdown.refreshing .cd-busy{display:inline}
.countdown.refreshing{color:var(--accent-amber);border-color:color-mix(in oklab, var(--accent-amber) 35%, transparent)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── PRICE HERO ─────────────────────────────────────────── */
.price-hero{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:30px;padding:30px 34px;background:var(--bg2);border:1px solid var(--border);border-radius:3px;margin:30px 0 18px}
.eth-icon{width:52px;height:52px;background:linear-gradient(135deg, var(--accent-teal), color-mix(in oklab, var(--accent-teal) 70%, black));border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.4rem;color:var(--bg);flex-shrink:0}
.price-block .eth-lbl{font-size:0.84rem;color:color-mix(in oklab, var(--ink) 65%, transparent);letter-spacing:0.20em;text-transform:uppercase;margin-bottom:10px;font-family:var(--font-mono);font-weight:500;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.price-block .eth-price{font-family:var(--font-display);font-size:3.6rem;font-weight:400;color:var(--ink-strong);line-height:1;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.pct{font-family:var(--font-mono);font-size:0.94rem;font-weight:500;padding:4px 11px;border-radius:2px;letter-spacing:0.04em}
.pct.up{color:var(--green);background:color-mix(in oklab, var(--green) 14%, transparent)}
.pct.dn{color:var(--red);background:color-mix(in oklab, var(--red) 14%, transparent)}

/* ── METRICS STRIP ──────────────────────────────────────── */
.metrics-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:12px}
.metric-cell{background:var(--bg2);border:1px solid var(--border);border-radius:3px;padding:16px 20px 14px;text-align:left;display:flex;flex-direction:column;gap:10px}
.metric-cell .ml{font-size:0.84rem;color:color-mix(in oklab, var(--ink) 62%, transparent);letter-spacing:0.18em;text-transform:uppercase;font-family:var(--font-mono);font-weight:500}
.metric-cell .mv{font-family:var(--font-display);font-size:1.88rem;font-weight:400;color:var(--accent-amber);font-variant-numeric:tabular-nums;line-height:1;word-break:break-all}

/* ── SECTIONS ───────────────────────────────────────────── */
.section{margin:40px 0}
.sec-title{display:flex;align-items:baseline;gap:14px;margin-bottom:22px;padding-bottom:14px;border-bottom:1px solid var(--border)}
.sec-title h2{font-family:var(--font-display);font-size:1.75rem;font-weight:400;color:var(--ink-strong);letter-spacing:-0.005em;text-transform:none;line-height:1.1}
.sec-line{display:none}
.sec-dot{width:5px;height:22px;background:var(--accent-amber);border-radius:1px;flex-shrink:0;align-self:center}

/* ── CARDS ──────────────────────────────────────────────── */
.card{background:var(--bg2);border:1px solid var(--border);border-radius:3px;padding:24px;transition:border-color .2s}
.card:hover{border-color:var(--border2)}
.card-sm{background:var(--bg2);border:1px solid var(--border);border-radius:3px;padding:16px 18px}

/* ── ETF TABLE ──────────────────────────────────────────── */
.etf-table{width:100%;border-collapse:collapse}
.etf-table th{font-size:0.84rem;color:color-mix(in oklab, var(--ink) 62%, transparent);letter-spacing:0.18em;text-transform:uppercase;padding:13px 14px;text-align:right;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-weight:500;white-space:nowrap}
.etf-table th:first-child{text-align:left}
.etf-table td{padding:14px;font-family:var(--font-mono);font-size:0.94rem;border-bottom:1px solid color-mix(in oklab, var(--ink) 7%, transparent);text-align:right;font-variant-numeric:tabular-nums;color:var(--txt);white-space:nowrap}
.etf-table td:first-child{text-align:left;font-family:var(--font-prose);font-weight:500;font-size:1rem;white-space:normal}
.etf-table tr:hover td{background:color-mix(in oklab, var(--accent-amber) 4%, transparent)}
.etf-ticker{color:var(--accent-amber);font-weight:500;font-family:var(--font-prose)}
.etf-name{font-size:0.84rem;color:var(--txt3);font-family:var(--font-prose);font-weight:400;margin-top:3px;display:block}

/* ── TECH INDICATORS ────────────────────────────────────── */
.tech-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
.ind-card{background:var(--bg2);border:1px solid var(--border);border-radius:3px;padding:20px}
.ind-label{font-size:0.84rem;color:color-mix(in oklab, var(--ink) 62%, transparent);letter-spacing:0.18em;text-transform:uppercase;margin-bottom:12px;font-family:var(--font-mono);font-weight:500}
.ind-val{font-family:var(--font-display);font-size:2.12rem;font-weight:400;color:var(--ink-strong);font-variant-numeric:tabular-nums;line-height:1}
.ind-sig{display:inline-block;font-size:0.84rem;padding:4px 11px;border-radius:2px;letter-spacing:0.14em;text-transform:uppercase;margin-top:10px;font-family:var(--font-mono);font-weight:500}
.sig-bull{background:color-mix(in oklab, var(--green) 14%, transparent);color:var(--green);border:1px solid color-mix(in oklab, var(--green) 32%, transparent)}
.sig-bear{background:color-mix(in oklab, var(--red) 14%, transparent);color:var(--red);border:1px solid color-mix(in oklab, var(--red) 32%, transparent)}
.sig-neu{background:color-mix(in oklab, var(--gold) 14%, transparent);color:var(--gold);border:1px solid color-mix(in oklab, var(--gold) 32%, transparent)}

/* ── MA TABLE ───────────────────────────────────────────── */
.ma-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ma-table{width:100%;border-collapse:collapse}
.ma-table td{padding:11px 12px;font-size:0.94rem;border-bottom:1px solid color-mix(in oklab, var(--ink) 6%, transparent)}
.ma-table td:first-child{color:var(--ink);font-size:0.84rem;letter-spacing:0.06em;font-family:var(--font-mono)}
.ma-table td:last-child{font-family:var(--font-mono);text-align:right;font-variant-numeric:tabular-nums}

/* ── NEWS ───────────────────────────────────────────────── */
.news-grid{display:grid;gap:12px}
.news-item{background:var(--bg2);border:1px solid var(--border);border-radius:3px;padding:16px 18px;transition:all .2s;cursor:pointer}
.news-item:hover{border-color:var(--border2);background:color-mix(in oklab, var(--accent-amber) 3%, var(--bg2))}
.news-source{font-size:0.84rem;color:var(--accent-amber);letter-spacing:0.18em;text-transform:uppercase;margin-bottom:8px;font-family:var(--font-mono);font-weight:500}
.news-title{font-size:1rem;font-weight:500;color:var(--ink-strong);line-height:1.45;margin-bottom:10px}
.news-meta{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.news-time{font-size:0.84rem;color:var(--txt3);font-family:var(--font-mono)}
.news-tag{font-size:0.84rem;padding:3px 10px;border-radius:2px;background:color-mix(in oklab, var(--accent-teal) 14%, transparent);color:var(--accent-teal);font-family:var(--font-mono);letter-spacing:0.12em}

/* ── LOADING ────────────────────────────────────────────── */
.loading-block{background:linear-gradient(90deg, var(--bg2) 25%, var(--bg3) 50%, var(--bg2) 75%);background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:3px;height:90px;width:100%}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.loading-text{text-align:center;color:var(--txt3);font-size:0.88rem;padding:36px;font-family:var(--font-mono);letter-spacing:0.1em}
.loading-text::after{content:'...';animation:dots 1.5s infinite}
@keyframes dots{0%{content:''}33%{content:'.'}66%{content:'..'}100%{content:'...'}}

/* ── GAUGE ──────────────────────────────────────────────── */
.gauge-wrap{margin:12px 0}
.gauge-bar{height:5px;background:color-mix(in oklab, var(--ink) 10%, transparent);border-radius:2px;overflow:hidden;margin-top:8px}
.gauge-fill{height:100%;border-radius:2px;transition:width .8s ease}
.gauge-bull{background:linear-gradient(90deg, var(--green2), var(--green))}
.gauge-bear{background:linear-gradient(90deg, var(--red2), var(--red))}
.gauge-neu{background:linear-gradient(90deg, var(--gold2), var(--gold))}

/* ── COLUMN GRIDS ───────────────────────────────────────── */
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.three-col{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.four-col{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.five-col{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}

/* ── FUNDAMENTAL ────────────────────────────────────────── */
.fund-card{background:var(--bg2);border:1px solid var(--border);border-radius:3px;padding:20px}
.fund-val{font-family:var(--font-display);font-size:2rem;font-weight:400;color:var(--accent-amber);margin:8px 0 6px;line-height:1;font-variant-numeric:tabular-nums;word-break:break-word}
.fund-lbl{font-size:0.84rem;color:color-mix(in oklab, var(--ink) 62%, transparent);letter-spacing:0.18em;text-transform:uppercase;font-family:var(--font-mono);font-weight:500}
.fund-sub{font-size:0.88rem;color:var(--ink);margin-top:5px}

/* ── SIGNAL BAR ─────────────────────────────────────────── */
.signal-bar{display:flex;align-items:stretch;height:12px;border-radius:2px;overflow:hidden;margin:12px 0}
.signal-bull-seg{background:var(--green)}
.signal-neu-seg{background:var(--gold)}
.signal-bear-seg{background:var(--red)}
.signal-legend{display:flex;gap:20px;font-size:0.84rem;color:var(--ink);font-family:var(--font-mono);letter-spacing:0.04em;flex-wrap:wrap}
.signal-legend span{display:flex;align-items:center;gap:7px}
.signal-legend em{width:9px;height:9px;border-radius:2px;display:inline-block;font-style:normal}

/* ── OPTIONS FLOW BADGES ────────────────────────────────── */
.flow-badge{display:inline-block;font-size:0.84rem;padding:4px 10px;border-radius:2px;letter-spacing:0.14em;text-transform:uppercase;font-family:var(--font-mono);font-weight:500}
.call-badge{background:color-mix(in oklab, var(--green) 14%, transparent);color:var(--green);border:1px solid color-mix(in oklab, var(--green) 32%, transparent)}
.put-badge{background:color-mix(in oklab, var(--red) 14%, transparent);color:var(--red);border:1px solid color-mix(in oklab, var(--red) 32%, transparent)}

/* ── SCROLL ─────────────────────────────────────────────── */
.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}
.scroll-x::-webkit-scrollbar{height:10px}
.scroll-x::-webkit-scrollbar-thumb{background:var(--border2);border-radius:5px}

/* ── FOOTER ─────────────────────────────────────────────── */
footer{text-align:center;padding:32px 0 16px;border-top:1px solid var(--border);margin-top:48px}
footer p{font-size:0.84rem;color:var(--txt3);letter-spacing:0.08em;font-family:var(--font-mono)}
footer a{color:var(--accent-teal);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s}
footer a:hover{border-bottom-color:var(--accent-teal)}

/* ── ERROR ──────────────────────────────────────────────── */
.err-msg{color:var(--red);font-size:0.88rem;padding:14px 16px;font-family:var(--font-mono);background:color-mix(in oklab, var(--red) 6%, transparent);border:1px solid color-mix(in oklab, var(--red) 22%, transparent);border-radius:3px;margin:12px 0}

/* ── Inline data-source note (global header) ────────────── */
#datasource-note{font-size:0.84rem !important;color:var(--txt3) !important;background:color-mix(in oklab, var(--accent-teal) 4%, transparent) !important;border-color:color-mix(in oklab, var(--accent-teal) 18%, transparent) !important}
#datasource-note svg{color:var(--accent-teal) !important}

/* ── Per-section data source label ─────────────────────── */
.data-source{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  font-family:var(--font-mono);font-size:0.84rem;
  color:var(--txt3);
  margin-top:14px;padding-top:10px;
  border-top:1px dashed var(--border);
  letter-spacing:0.04em;line-height:1.4;
}
.data-source .ds-ico{
  font-size:0.95rem;opacity:.7;
  color:var(--accent-teal);flex-shrink:0;
}
.data-source.cache{color:var(--gold)}
.data-source.cache .ds-ico{color:var(--gold)}
.data-source.fallback{color:var(--red)}
.data-source.fallback .ds-ico{color:var(--red)}

/* ═══════════════════════════════════════════════════════════
   RESPONSIVE
   1024px  iPad portrait / small laptop
    768px  large phone landscape / small tablet
    480px  iPhone portrait
   ═══════════════════════════════════════════════════════════ */

@media(max-width:1024px){
  .wrap{padding:0 24px 40px}
  .metrics-strip{grid-template-columns:repeat(3,1fr)}
  .tech-grid{grid-template-columns:1fr 1fr}
  .four-col{grid-template-columns:1fr 1fr}
}

@media(max-width:768px){
  html{font-size:calc(var(--root-fs, 100%) * 0.95)}
  .wrap{padding:0 18px 32px}
  header{padding:22px 0 18px;gap:14px}
  .logo-area{gap:16px;width:100%}
  .logo-frame{width:72px;height:72px}
  .logo-area img{width:54px;height:54px}
  .brand-rule{height:64px}
  .brand-eyebrow{font-size:0.84rem;letter-spacing:0.22em;margin-bottom:5px}
  .brand h1{font-size:2.1rem}
  .brand p{font-size:0.84rem;letter-spacing:0.16em;margin-top:6px}
  .tab-btn{padding:12px 16px;font-size:0.84rem}
  .regime-banner{padding:22px 20px}
  .reg-headline{font-size:2.2rem}
  .reg-chips{grid-template-columns:repeat(3,1fr)}
  .method-preview{grid-template-columns:1fr;gap:8px}
  .mp-headline{font-size:1.4rem}
  .header-right{width:100%;justify-content:flex-start;gap:10px}
  .price-hero{grid-template-columns:auto 1fr;gap:18px;padding:22px 20px}
  .price-hero > div:last-child{grid-column:1/-1;text-align:left}
  .price-block .eth-price{font-size:2.6rem}
  .metrics-strip{grid-template-columns:repeat(2,1fr);gap:10px}
  .three-col,.four-col{grid-template-columns:1fr 1fr}
  .tech-grid{grid-template-columns:1fr 1fr}
  .sec-title h2{font-size:1.5rem}
  .section{margin:28px 0}
  .card{padding:18px}
  .ind-card{padding:16px}
  .fund-card{padding:16px}
  .etf-table th,.etf-table td{padding:10px}
  .etf-table th{font-size:0.84rem}
  .etf-table td{font-size:0.88rem}
  .btn-refresh{padding:9px 16px}
}

@media(max-width:480px){
  html{font-size:calc(var(--root-fs, 100%) * 0.90)}
  .wrap{padding:0 14px 24px}
  header{padding:16px 0 14px;gap:10px}
  .logo-area{gap:12px}
  .logo-frame{width:58px;height:58px}
  .logo-frame::before,.logo-frame::after{width:6px;height:6px}
  .logo-area img{width:42px;height:42px}
  .brand-rule{height:50px}
  .brand-eyebrow{font-size:0.84rem;margin-bottom:4px}
  .brand h1{font-size:1.7rem;line-height:1}
  .tab-btn{padding:10px 12px;font-size:0.84rem;letter-spacing:0.10em}
  .regime-banner{padding:18px 14px;gap:18px}
  .reg-headline{font-size:1.8rem;margin-bottom:10px}
  .reg-score{font-size:1.2rem}
  .reg-chips{grid-template-columns:1fr 1fr;gap:8px}
  .reg-chip{padding:10px 12px}
  .reg-chip-score{font-size:1.15rem}
  .placeholder-card{padding:18px 16px}
  .method-header h2{font-size:1.5rem}
  .method-card{padding:14px 16px}
  .method-card-name{font-size:1.1rem}
  .method-card-val strong{font-size:1.15rem}
  input.method-slider::-webkit-slider-thumb{width:22px;height:22px}
  .header-right{gap:8px;align-items:center}
  .ts{display:none}
  .live-badge{font-size:0.84rem}
  .ctrl-btn{width:32px;height:32px}
  .ctrl-btn svg{width:13px;height:13px}
  .lang-btn{padding:6px 10px;font-size:0.84rem;min-height:32px}
  .btn-refresh{padding:8px 12px;min-height:36px}
  .btn-refresh span{display:none}
  .price-hero{grid-template-columns:auto 1fr;gap:14px;padding:18px 16px;margin:20px 0 14px}
  .price-hero > div:last-child{grid-column:1/-1}
  .eth-icon{width:42px;height:42px;font-size:1.1rem}
  .price-block .eth-lbl{font-size:0.84rem;letter-spacing:0.14em}
  .price-block .eth-price{font-size:2.1rem}
  .metrics-strip{grid-template-columns:1fr 1fr;gap:8px}
  .metric-cell{padding:12px 14px 10px}
  .metric-cell .mv{font-size:1.4rem}
  .two-col,.three-col,.four-col,.tech-grid,.ma-grid,.five-col{grid-template-columns:1fr}
  .sec-title h2{font-size:1.3rem}
  .sec-title{gap:10px;padding-bottom:10px;margin-bottom:16px}
  .sec-dot{height:18px}
  .section{margin:22px 0}
  .card,.ind-card,.fund-card{padding:14px}
  .ind-val{font-size:1.7rem}
  .fund-val{font-size:1.6rem}
  .news-title{font-size:0.94rem}
  footer{padding:24px 0 12px;margin-top:32px}
  footer p{font-size:0.84rem}
}

/* ═══════════════════════════════════════════════════════════
   BEACON-SPECIFIC OVERRIDES (typographic + signature ticker)
   ═══════════════════════════════════════════════════════════ */

body.design-beacon .brand h1,
body.design-beacon .reg-headline,
body.design-beacon .sec-title h2,
body.design-beacon .method-header h2,
body.design-beacon .method-card-name,
body.design-beacon .mp-headline,
body.design-beacon .metric-cell .mv,
body.design-beacon .reg-chip-score,
body.design-beacon .ind-val,
body.design-beacon .fund-val,
body.design-beacon .price-block .eth-price{
  font-style:normal;
  font-family:var(--font-sans);
  font-weight:700;
  letter-spacing:-0.02em;
}
body.design-beacon .brand h1{font-weight:800;letter-spacing:-0.028em;font-size:2.4rem}
body.design-beacon .reg-headline{font-weight:700;letter-spacing:-0.022em;font-size:2.6rem}

/* ── Beacon · strip editorial decorations ───────────────── */
body.design-beacon .logo-frame{
  width:62px;height:62px;
  background:linear-gradient(180deg, var(--bg2), var(--bg3));
  border:1px solid var(--border2);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
body.design-beacon .logo-frame::before,
body.design-beacon .logo-frame::after{display:none}
body.design-beacon .logo-frame img{width:44px;height:44px;opacity:.95}
body.design-beacon .brand-rule{display:none}
body.design-beacon .brand-eyebrow{
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.22em;color:var(--accent-teal);
  font-weight:500;opacity:.9;
}
body.design-beacon .brand p{
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.16em;color:var(--txt3);font-weight:400;
}
body.design-beacon header{padding:24px 0 20px;border-bottom-color:var(--border2)}

/* ── Beacon · section titles (terminal tags) ──────────── */
body.design-beacon .sec-title{
  align-items:center;gap:10px;padding-bottom:10px;
  border-bottom:1px solid var(--border);
}
body.design-beacon .sec-dot{
  width:auto;height:auto;background:transparent;
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.18em;color:var(--bg);background:var(--accent-amber);
  padding:3px 7px;border-radius:1px;
  font-weight:600;text-transform:uppercase;
  flex-shrink:0;align-self:center;line-height:1;
}
body.design-beacon .sec-dot::before{content:"§"}
body.design-beacon .sec-title h2{
  font-family:var(--font-display);font-weight:700;
  font-size:1.4rem;letter-spacing:-0.018em;color:var(--ink-strong);
}

/* ── Beacon · cards (sharp edges, tight, elevated) ────── */
body.design-beacon .regime-banner,
body.design-beacon .price-hero,
body.design-beacon .metric-cell,
body.design-beacon .card,
body.design-beacon .card-sm,
body.design-beacon .ind-card,
body.design-beacon .fund-card,
body.design-beacon .reg-chip,
body.design-beacon .news-item,
body.design-beacon .method-card,
body.design-beacon .method-preview,
body.design-beacon .placeholder-card{
  border-radius:2px;
}
body.design-beacon .regime-banner{
  background:linear-gradient(180deg, var(--card2), var(--bg2));
  border:1px solid var(--border2);
  padding:24px 28px;
}
body.design-beacon .regime-banner::before{
  content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg, transparent, var(--accent-amber), var(--accent-teal), var(--accent-amber), transparent);
  opacity:.6;
}
body.design-beacon .regime-banner{position:relative;overflow:hidden}
body.design-beacon .reg-chip{
  background:var(--bg);
  border:1px solid var(--border);
  border-left-width:2px;
  padding:10px 12px;
}
body.design-beacon .reg-eyebrow{
  font-family:var(--font-mono);
  font-size:0.84rem;letter-spacing:0.28em;
  color:var(--accent-teal);
}
body.design-beacon .reg-score{font-weight:700;letter-spacing:-0.015em}

/* ── Beacon · price hero (terminal-grade) ─────────────── */
body.design-beacon .price-hero{
  background:linear-gradient(180deg, var(--card2), var(--bg2));
  border:1px solid var(--border2);
  padding:22px 26px;
}
body.design-beacon .eth-icon{
  background:linear-gradient(135deg, var(--accent-amber), var(--cyan2));
  box-shadow:0 0 18px color-mix(in oklab, var(--accent-amber) 40%, transparent);
  color:#fff;
}
body.design-beacon .price-block .eth-price{font-weight:700;letter-spacing:-0.028em}
body.design-beacon .pct{font-family:var(--font-mono);font-weight:600;letter-spacing:0;border:1px solid transparent}
body.design-beacon .pct.up{border-color:color-mix(in oklab, var(--green) 35%, transparent)}
body.design-beacon .pct.dn{border-color:color-mix(in oklab, var(--red) 35%, transparent)}

/* ── Beacon · metric strip (terminal density) ─────────── */
body.design-beacon .metrics-strip{gap:6px}
body.design-beacon .metric-cell{
  padding:12px 14px 10px;background:var(--bg2);
  border:1px solid var(--border);
}
body.design-beacon .metric-cell:hover{background:var(--bg3);border-color:var(--border2)}
body.design-beacon .metric-cell .ml{
  font-family:var(--font-mono);font-size:0.84rem;
  letter-spacing:0.18em;color:var(--txt3);
}
body.design-beacon .metric-cell .mv{
  font-family:var(--font-display);font-weight:700;
  letter-spacing:-0.018em;color:var(--ink-strong);
  font-size:1.4rem;
}

/* ── Beacon · data-source labels (solid hairline) ─────── */
body.design-beacon .data-source{
  border-top:1px solid var(--border);
  font-family:var(--font-mono);
  font-size:0.84rem;letter-spacing:0.06em;
}

/* ── Beacon · placeholder card (terminal note) ────────── */
body.design-beacon .placeholder-card{
  background:linear-gradient(180deg, color-mix(in oklab, var(--gold) 6%, var(--bg2)), var(--bg2));
  border:1px solid color-mix(in oklab, var(--gold) 28%, var(--border2));
  padding:18px 22px;
}
body.design-beacon .ph-tag{color:var(--gold);font-family:var(--font-mono);letter-spacing:0.22em}

/* ── Beacon · methodology cards ───────────────────────── */
body.design-beacon .method-card{
  background:var(--bg2);border:1px solid var(--border);border-left-width:2px;
}
body.design-beacon .method-card-name{
  font-family:var(--font-display);font-weight:700;
  letter-spacing:-0.015em;font-size:1.15rem;
}

/* ── Beacon · countdown chip & ctrl buttons ───────────── */
body.design-beacon .countdown{
  background:var(--bg2);border:1px solid var(--border2);
}
body.design-beacon .countdown:hover{border-color:var(--accent-amber);color:var(--accent-amber)}
body.design-beacon .ctrl-btn{background:var(--bg2);border:1px solid var(--border2)}
body.design-beacon .lang-btn{background:var(--bg2);border:1px solid var(--border2)}
body.design-beacon .lang-btn.active{
  background:var(--accent-amber);color:var(--bg);
  border-color:var(--accent-amber);
}
body.design-beacon .tab-btn{font-family:var(--font-mono);font-weight:600}

/* ── Beacon · footer hairline ─────────────────────────── */
body.design-beacon footer{border-top-color:var(--border2)}
body.design-beacon footer a{color:var(--accent-teal)}
body.design-beacon footer a:hover{color:var(--cyan)}

/* ── Top ticker (Beacon only) ────────────────────────────── */
#top-ticker{
  display:none;
  align-items:center;gap:18px;flex-wrap:wrap;
  background:var(--card2);
  border:1px solid var(--rule-2, var(--border));
  border-radius:2px;
  padding:10px 16px;
  margin:18px 0 0;
  font-family:var(--font-mono);font-size:0.84rem;
  color:var(--ink-strong);letter-spacing:0.08em;
  text-transform:uppercase;
  position:relative;overflow:hidden;
}
#top-ticker::before{
  content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg, transparent, var(--accent-amber), var(--accent-teal), var(--accent-amber), transparent);
  opacity:.5;
}
.tk-item{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.tk-label{color:var(--txt3);font-weight:500}
.tk-val{color:var(--accent-teal);font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:0.04em;text-transform:none}
.tk-val.amber{color:var(--accent-amber)}
.tk-val.burn{color:var(--gold)}
.tk-val.pos{color:var(--green)}
.tk-val.neg{color:var(--red)}
.tk-pip{
  width:6px;height:6px;border-radius:50%;
  background:var(--beacon-pulse);box-shadow:0 0 8px var(--beacon-pulse);
  animation:tk-blink 1.6s infinite;
}
@keyframes tk-blink{0%,100%{opacity:1}50%{opacity:.35}}

/* ── Constellation backdrop (Aether placeholder, real SVG injected by overlay) ── */
#constellation-bg{
  display:none;
  position:fixed;inset:0;z-index:-1;pointer-events:none;
}

/* ── Marginalia rail (Ledger placeholder, layout in overlay) ── */
#marginalia-rail{
  display:none;
  flex-direction:column;gap:14px;
  position:sticky;top:80px;
}

/* ── Design picker ───────────────────────────────────────── */
.design-picker{
  display:flex;gap:3px;align-items:center;
  border:1px solid var(--border);border-radius:2px;
  padding:2px;background:var(--bg2);
}
.dp-btn{
  background:transparent;border:0;
  width:30px;height:30px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;border-radius:2px;
  font-family:var(--font-mono);font-size:0.84rem;font-weight:600;
  color:var(--txt3);
  transition:all .15s;
  letter-spacing:0;
}
.dp-btn:hover{color:var(--ink-strong);background:color-mix(in oklab, var(--accent-amber) 8%, transparent)}
.dp-btn.active{
  background:var(--accent-amber);color:var(--bg);
  box-shadow:0 0 0 1px var(--accent-amber);
}
.dp-btn[data-design="aether"].active{background:#0fa6a6;box-shadow:0 0 0 1px #0fa6a6}
.dp-btn[data-design="ledger"].active{background:#7c2418;box-shadow:0 0 0 1px #7c2418;color:#f0e8d4}

@media(max-width:480px){
  #top-ticker{font-size:0.84rem;gap:10px;padding:8px 12px}
  .design-picker{padding:1px}
  .dp-btn{width:28px;height:28px;font-size:0.84rem}
}


/* ═══════════════════════════════════════════════════════════
   MAGNUS SENTIMENT V2 — 0-100 SCALE, 5 CATEGORIES
   New layout: top-hero-row · 5-zone bar · chips-v2 · dim-summary
   ═══════════════════════════════════════════════════════════ */

/* ── Category color tokens ──────────────────────────────── */
/* Used on badges, mini-cards, zone bars, markers */
.cat-strong-bull { --cat-color: var(--green);   --cat-bg: color-mix(in oklab, var(--green) 14%, transparent);   --cat-border: color-mix(in oklab, var(--green) 32%, transparent); }
.cat-mild-bull   { --cat-color: #6fcf97;        --cat-bg: color-mix(in oklab, #6fcf97 14%, transparent);        --cat-border: color-mix(in oklab, #6fcf97 32%, transparent); }
.cat-neutral     { --cat-color: var(--gold);    --cat-bg: color-mix(in oklab, var(--gold) 14%, transparent);    --cat-border: color-mix(in oklab, var(--gold) 32%, transparent); }
.cat-mild-bear   { --cat-color: #eb8c8c;        --cat-bg: color-mix(in oklab, #eb8c8c 14%, transparent);        --cat-border: color-mix(in oklab, #eb8c8c 32%, transparent); }
.cat-strong-bear { --cat-color: var(--red);     --cat-bg: color-mix(in oklab, var(--red) 14%, transparent);     --cat-border: color-mix(in oklab, var(--red) 32%, transparent); }

/* ── TOP HERO ROW — price + global index side-by-side ────── */
.top-hero-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  margin: 30px 0 0;
  align-items: stretch;
}
/* Override .price-hero margin when inside top-hero-row */
.top-hero-row .price-hero {
  margin: 0;
  flex: 1 1 auto;
}

/* ── GLOBAL INDEX COLUMN (right of price hero) ───────────── */
.global-index-col {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 22px 30px 18px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  min-width: 300px;
  max-width: 400px;
  position: relative;
  overflow: hidden;
}

/* ── PRICE CHART SECTION ────────────────────────────────── */
.price-chart-section {
  margin: 14px 0 0;
  border-radius: 3px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--bg2);
}

/* ── REGIME BADGE (pill in card header) ─────────────────── */
.regime-badge {
  display: inline-block;
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  padding: 3px 9px;
  border-radius: 2px;
  white-space: nowrap;
  color: var(--cat-color, var(--txt2));
  background: var(--cat-bg, transparent);
  border: 1px solid var(--cat-border, var(--border));
}
/* Explicit color overrides for when --cat-color is not inherited */
.regime-badge.cat-strong-bull { color:var(--green);   background:color-mix(in oklab,var(--green) 14%,transparent);   border-color:color-mix(in oklab,var(--green) 32%,transparent); }
.regime-badge.cat-mild-bull   { color:#6fcf97;        background:color-mix(in oklab,#6fcf97 14%,transparent);        border-color:color-mix(in oklab,#6fcf97 32%,transparent); }
.regime-badge.cat-neutral     { color:var(--gold);    background:color-mix(in oklab,var(--gold) 14%,transparent);    border-color:color-mix(in oklab,var(--gold) 32%,transparent); }
.regime-badge.cat-mild-bear   { color:#eb8c8c;        background:color-mix(in oklab,#eb8c8c 14%,transparent);        border-color:color-mix(in oklab,#eb8c8c 32%,transparent); }
.regime-badge.cat-strong-bear { color:var(--red);     background:color-mix(in oklab,var(--red) 14%,transparent);     border-color:color-mix(in oklab,var(--red) 32%,transparent); }

/* ── 5-ZONE SCORE BAR ───────────────────────────────────── */
.reg-bar-5zone {
  position: relative;
  display: flex;
  height: 10px;
  border-radius: 5px;
  overflow: visible;
  margin: 10px 0 0;
  gap: 1px;
}
.reg-bar-zone {
  flex: 1;
  height: 100%;
  border-radius: 0;
}
.reg-bar-zone:first-child { border-radius: 5px 0 0 5px; }
.reg-bar-zone:nth-child(5) { border-radius: 0 5px 5px 0; }

.z-strong-bear { background: var(--red);   opacity: 0.80; }
.z-mild-bear   { background: #eb8c8c;      opacity: 0.70; }
.z-neutral     { background: var(--gold);  opacity: 0.75; }
.z-mild-bull   { background: #6fcf97;      opacity: 0.70; }
.z-strong-bull { background: var(--green); opacity: 0.80; }

/* Score position marker */
.reg-bar-marker-5z {
  position: absolute;
  top: -5px;
  width: 4px;
  height: 20px;
  background: var(--ink-strong);
  border-radius: 2px;
  transform: translateX(-50%);
  box-shadow: 0 0 6px rgba(0,0,0,.4);
  transition: left .6s ease, background-color .2s;
  z-index: 2;
}
.reg-bar-marker-5z.bull    { background: var(--green); box-shadow: 0 0 8px color-mix(in oklab, var(--green) 60%, transparent); }
.reg-bar-marker-5z.bear    { background: var(--red);   box-shadow: 0 0 8px color-mix(in oklab, var(--red) 60%, transparent); }
.reg-bar-marker-5z.neutral { background: var(--gold);  box-shadow: 0 0 8px color-mix(in oklab, var(--gold) 50%, transparent); }

/* Labels below the bar: 0 · 20 · 40 · 60 · 80 · 100 */
.reg-bar-labels-5 {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin-top: 4px;
  padding: 0 2px;
}

/* Category names row */
.reg-bar-cats {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.04em;
  margin-top: 2px;
  padding: 0 1px;
  flex-wrap: nowrap;
  gap: 2px;
}
.reg-bar-cats span { flex: 1; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.reg-bar-cats .cat-strong-bear { color: var(--red); }
.reg-bar-cats .cat-mild-bear   { color: #eb8c8c; }
.reg-bar-cats .cat-neutral     { color: var(--gold); }
.reg-bar-cats .cat-mild-bull   { color: #6fcf97; }
.reg-bar-cats .cat-strong-bull { color: var(--green); }

/* F&G overlay line */
.reg-fg-line {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  margin-bottom: 6px;
  letter-spacing: 0.04em;
}

/* ── MODULE CARDS V2 (regime banner) ─────────────────────── */
.reg-chips-v2 {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.reg-chips-f1 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

/* Rectángulos full-width editoriales (vertical stack) */
.reg-chips-f1,
.regime-stack .reg-chips-v2 {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.regime-banner.regime-stack {
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.reg-chip-v2 {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 0;                                       /* esquinas rectas */
  border-left: 3px solid var(--cat-color, var(--border2)); /* franja izquierda con color */
  padding: 18px 22px;
  display: grid;
  grid-template-columns: 200px 1fr 140px;
  gap: 22px;
  align-items: start;
  position: relative;
  transition: border-left-color .3s;
}
.reg-chip-v2:hover { background: color-mix(in oklab, var(--bg) 94%, var(--ink)); }
.reg-chip-v2.locked {
  background: color-mix(in oklab, var(--bg) 96%, var(--ink));
  border-left-style: dashed;
  opacity: 0.78;
}
.reg-chip-v2.cat-strong-bull { border-left-color: var(--green); }
.reg-chip-v2.cat-mild-bull   { border-left-color: #6fcf97; }
.reg-chip-v2.cat-neutral     { border-left-color: var(--gold); }
.reg-chip-v2.cat-mild-bear   { border-left-color: #eb8c8c; }
.reg-chip-v2.cat-strong-bear { border-left-color: var(--red); }

/* Columna izquierda: nombre + fase + peso */
.reg-chip-v2-header {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: flex-start;
}
.reg-chip-v2-name {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 500;
  color: var(--ink-strong);
  line-height: 1.15;
}
.reg-chip-v2-weight,
.reg-chip-v2-contrib {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.reg-chip-v2-contrib { color: var(--accent-teal); }

/* Columna central: barra + sub-indicadores */
.reg-chip-v2-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

/* Columna derecha: score grande + badge */
.reg-chip-v2-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
  text-align: right;
}
.reg-chip-v2-score {
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: -0.02em;
}
.reg-chip-v2-score.muted { color: var(--txt3); font-size: 1.4rem; }
.reg-chip-v2-den {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  font-weight: 400;
  margin-left: 2px;
}

/* Sub-indicadores en grid 2-3 columnas dentro del rect */
.reg-sub-indicators {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 4px 18px;
  border-top: 1px solid var(--border);
  padding-top: 10px;
}

/* Sub-mark (★ contribuye / · display) */
.sub-mark {
  flex-shrink: 0;
  width: 12px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  text-align: center;
  line-height: 1;
}
.sub-mark.contributes { color: var(--accent-amber); }
.sub-mark.display     { color: var(--txt3); opacity: 0.55; }

/* Subtítulo bajo el h2 de sección */
.dim-subtitle {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin: -8px 0 8px;
  line-height: 1.5;
}

/* Leyenda ★ / · al inicio del bloque F1 */
.dim-legend {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin: 0 0 14px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.dim-legend-sep { color: var(--border2); margin: 0 4px; }

.sub-gauge-labels {
  display: flex;
  justify-content: space-between;
  font-size:0.84rem;
  color: var(--txt3);
}

/* Móvil: rectángulo en una sola columna */
@media (max-width: 768px) {
  .reg-chip-v2 {
    grid-template-columns: 1fr;
    gap: 14px;
  }
  .reg-chip-v2-right {
    align-items: flex-start;
    text-align: left;
    flex-direction: row;
    gap: 14px;
  }
  .reg-sub-indicators {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 480px) {
  .reg-sub-indicators { grid-template-columns: 1fr; }
}

/* Sub-indicators block */
.reg-sub-indicators {
  display: flex;
  flex-direction: column;
  gap: 0;
  border-top: 1px solid var(--border);
  padding-top: 8px;
  margin-top: 4px;
}
.reg-locked-note {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  font-style: italic;
  line-height: 1.5;
  border-top: 1px dashed var(--border);
  padding-top: 8px;
  margin-top: 4px;
}

/* Sub-indicator rows */
.sub-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 4px 0;
  border-bottom: 1px solid color-mix(in oklab, var(--border) 60%, transparent);
}
.sub-row:last-child { border-bottom: 0; }
.sub-label {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.06em;
  min-width: 72px;
  flex-shrink: 0;
}
.sub-val {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt2);
  font-variant-numeric: tabular-nums;
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sub-sig {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  flex-shrink: 0;
  padding: 1px 5px;
  border-radius: 2px;
}
/* sub-sig inherits sig-bull / sig-bear / sig-neu from existing rules */

.sub-gauge-wrap {
  padding: 2px 0;
}

/* ── DIMENSION SUMMARY BAR (after chart) ─────────────────── */
.dimension-summary-wrap {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 14px 18px;
  margin: 12px 0 14px;
}
.dim-summary-label {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-bottom: 10px;
}
.dim-summary-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* Individual mini-card */
.dim-mini {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 10px 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  cursor: pointer;
  transition: border-color .2s, transform .15s;
  min-width: 110px;
  flex: 1 1 110px;
  max-width: 200px;
  border-top-width: 3px;
  border-top-color: var(--cat-color, var(--border));
}
.dim-mini:hover { transform: translateY(-1px); border-color: var(--border2); }
.dim-mini.locked {
  cursor: default;
  opacity: 0.6;
  border-top-color: var(--txt3);
  border-top-style: dashed;
}
.dim-mini.locked:hover { transform: none; }

/* Category-colored top border on mini-cards */
.dim-mini.cat-strong-bull { border-top-color: var(--green); }
.dim-mini.cat-mild-bull   { border-top-color: #6fcf97; }
.dim-mini.cat-neutral     { border-top-color: var(--gold); }
.dim-mini.cat-mild-bear   { border-top-color: #eb8c8c; }
.dim-mini.cat-strong-bear { border-top-color: var(--red); }

.dim-mini-name {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--txt3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dim-mini-score {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.dim-mini-badge {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 2px;
  display: inline-block;
  white-space: nowrap;
}
.dim-mini-badge.cat-strong-bull { color:var(--green);   background:color-mix(in oklab,var(--green) 14%,transparent); }
.dim-mini-badge.cat-mild-bull   { color:#6fcf97;        background:color-mix(in oklab,#6fcf97 14%,transparent); }
.dim-mini-badge.cat-neutral     { color:var(--gold);    background:color-mix(in oklab,var(--gold) 14%,transparent); }
.dim-mini-badge.cat-mild-bear   { color:#eb8c8c;        background:color-mix(in oklab,#eb8c8c 14%,transparent); }
.dim-mini-badge.cat-strong-bear { color:var(--red);     background:color-mix(in oklab,var(--red) 14%,transparent); }

.dim-mini-lock {
  font-size: 1rem;
  line-height: 1;
}
.dim-mini-phase {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--txt3);
}

/* ── PHASE BADGES (small pills for phase labels) ─────────── */
.phase-badge {
  display: inline-block;
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  padding: 3px 8px;
  border-radius: 2px;
  white-space: nowrap;
}
.phase-badge.phase1 {
  color: var(--green);
  background: color-mix(in oklab, var(--green) 10%, transparent);
  border: 1px solid color-mix(in oklab, var(--green) 28%, transparent);
}
.phase-badge.phase2 {
  color: var(--txt3);
  background: color-mix(in oklab, var(--txt3) 8%, transparent);
  border: 1px solid color-mix(in oklab, var(--txt3) 20%, transparent);
}
.phase-badge.small {
  font-size:0.84rem;
  padding: 2px 6px;
  letter-spacing: 0.08em;
}

/* ── METHODOLOGY — section titles ────────────────────────── */
.method-section-title {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--txt3);
  padding: 10px 0 8px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 12px;
}

/* ── ARCHITECTURE TAB ────────────────────────────────────── */
.arch-header {
  margin: 28px 0 20px;
}
.arch-header h2 {
  font-family: var(--font-display);
  font-size: 2rem;
  font-weight: 400;
  color: var(--ink-strong);
  letter-spacing: -0.005em;
  line-height: 1.1;
  margin-bottom: 8px;
}
.arch-diagram {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 18px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.arch-diagram svg {
  max-width: 100%;
  height: auto;
  display: block;
}
.arch-diagram .mermaid {
  display: block;
}
/* Tipografía SVG Mermaid */
.arch-diagram svg .nodeLabel,
.arch-diagram svg .edgeLabel,
.arch-diagram svg foreignObject div {
  font-size:14px !important;
  font-family: var(--font-sans) !important;
}
.arch-diagram svg .cluster-label .nodeLabel,
.arch-diagram svg .cluster .nodeLabel {
  font-size:14px !important;
  font-weight: 600;
  letter-spacing: 0.04em;
}

/* Tabla de referencia de Arquitectura: ajustar todo al ancho de pantalla */
.arch-ref-wrap {
  overflow-x: hidden;  /* sin scroll horizontal — todo cabe */
}
.arch-ref-table {
  width: 100%;
  table-layout: fixed;
}
/* Anchos de columna (suma 100%) */
.arch-ref-table .arc-col-mod   { width: 18%; }
.arch-ref-table .arc-col-fase  { width: 7%; }
.arch-ref-table .arc-col-peso  { width: 8%; }
.arch-ref-table .arc-col-api   { width: 18%; }  /* la mitad del tamaño anterior */
.arch-ref-table .arc-col-auth  { width: 11%; }
.arch-ref-table .arc-col-rate  { width: 14%; }
.arch-ref-table .arc-col-arch  { width: 24%; }  /* archivo/función gana espacio */

.arch-ref-table th,
.arch-ref-table td {
  white-space: normal !important;        /* permitir wrap */
  word-break: break-word;
  vertical-align: top;
  padding: 10px 8px !important;
  font-size:0.84rem;
}
.arch-ref-table th {
  font-size:0.84rem !important;
}
.arch-ref-table td:last-child {
  font-size:0.84rem;
  line-height: 1.5;
}
.arch-ref-table td .etf-ticker {
  font-size: 0.84rem;
}

/* ── RESPONSIVE — new elements ───────────────────────────── */
@media (max-width: 1024px) {
  .top-hero-row { grid-template-columns: 1fr; }
  .global-index-col { max-width: 100%; min-width: 0; }
  .reg-chips-f1 { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 768px) {
  .top-hero-row { gap: 12px; }
  .global-index-col { padding: 16px 18px; }
  .reg-chips-f1 { grid-template-columns: 1fr; }
  .dim-summary-row { gap: 8px; }
  .dim-mini { min-width: 90px; padding: 8px 10px; }
  .dim-mini-score { font-size: 1.2rem; }
}

@media (max-width: 480px) {
  .top-hero-row { margin-top: 20px; gap: 10px; }
  .global-index-col { padding: 14px 16px; }
  .reg-chips-f1 { grid-template-columns: 1fr; gap: 8px; }
  .reg-chip-v2 { padding: 12px 14px 10px; }
  .reg-chip-v2-score { font-size: 1.15rem; }
  .reg-chip-v2-name { font-size: 0.94rem; }
  .dim-summary-row { flex-direction: column; }
  .dim-mini { max-width: 100%; min-width: 0; flex-direction: row; align-items: center; justify-content: space-between; }
  .dim-mini-score { font-size: 1.1rem; }
  .arch-header h2 { font-size: 1.5rem; }
}

/* ── BEACON DESIGN OVERRIDES — new elements ──────────────── */
body.design-beacon .global-index-col {
  background: linear-gradient(180deg, var(--card2), var(--bg2));
  border: 1px solid var(--border2);
}
body.design-beacon .reg-chip-v2 {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 2px;
}
body.design-beacon .reg-chip-v2-name {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.015em;
}
body.design-beacon .dimension-summary-wrap {
  background: var(--bg2);
  border: 1px solid var(--border2);
}
body.design-beacon .dim-mini {
  background: var(--bg);
  border-radius: 2px;
  border: 1px solid var(--border);
}
body.design-beacon .price-chart-section {
  border-color: var(--border2);
}


/* ═══════════════════════════════════════════════════════════
   HERO v3 — Precio compacto + Advanced Chart integrado
   ═══════════════════════════════════════════════════════════ */

/* .price-hero ahora es flex-column con 3 rows: header, chart, source */
.top-hero-row .price-hero {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 18px 22px 12px;
  margin: 0;
}

/* Header row: precio izquierda + meta (ETH/BTC, BLOQUE) derecha */
.price-hero-header {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 20px;
  align-items: center;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}
.price-hero-left {
  display: flex;
  align-items: center;
  gap: 18px;
  min-width: 0;
}
.price-hero-right {
  display: flex;
  flex-direction: column;
  gap: 8px;
  text-align: right;
  flex-shrink: 0;
}
.ph-mini { line-height: 1.1; }
.ph-mini-lbl {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-bottom: 2px;
}
.ph-mini-val {
  font-family: var(--font-mono);
  font-size: 0.95rem;
  color: var(--txt2);
  font-variant-numeric: tabular-nums;
}
.ph-mini-val.gold { color: var(--gold); }

/* Compactar el bloque de precio para dejar espacio al chart */
.top-hero-row .price-hero .eth-price {
  font-size: clamp(1.6rem, 3.4vw, 2.4rem);
  letter-spacing: -0.022em;
  line-height: 1;
}
.top-hero-row .price-hero .eth-lbl {
  margin-bottom: 6px;
  font-size:0.84rem;
  display: flex;
  align-items: center;
  gap: 8px;
}
.top-hero-row .price-hero .eth-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
}
.top-hero-row .price-hero .eth-range {
  font-size:0.84rem;
  color: var(--txt3);
  font-family: var(--font-mono);
}
.top-hero-row .price-hero .eth-icon {
  width: 38px;
  height: 38px;
  font-size: 1rem;
}

/* Source badge inline en eth-lbl */
.ds-badge {
  font-family: var(--font-mono);
  font-size:0.84rem;
  padding: 2px 7px;
  border-radius: 2px;
  background: color-mix(in oklab, var(--accent-teal) 12%, transparent);
  color: var(--accent-teal);
  letter-spacing: 0.10em;
  border: 1px solid color-mix(in oklab, var(--accent-teal) 28%, transparent);
}

/* Microcopy de fuente en cada metric-cell */
.m-src {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.12em;
  color: var(--txt3);
  margin-top: 6px;
  text-transform: uppercase;
  opacity: 0.7;
}

/* ── Aurora glow alrededor del big-category ──────────────── */
.global-aurora-wrap {
  position: relative;
  display: inline-block;
  isolation: isolate;
  padding: 4px 8px;
  margin: 4px -8px;
}
.global-aurora-wrap::before {
  content: "";
  position: absolute;
  inset: -30px;
  background: radial-gradient(
    ellipse at center,
    color-mix(in oklab, var(--cat-color, var(--gold)) 45%, transparent),
    transparent 65%
  );
  filter: blur(28px);
  opacity: 0.55;
  z-index: -1;
  pointer-events: none;
  transition: background .4s;
}
/* Aurora color por categoría (heredando del .global-hero-category dentro) */
.global-index-col:has(.cat-strong-bull) .global-aurora-wrap::before { background: radial-gradient(ellipse at center, color-mix(in oklab, var(--green) 50%, transparent), transparent 65%); }
.global-index-col:has(.cat-mild-bull)   .global-aurora-wrap::before { background: radial-gradient(ellipse at center, color-mix(in oklab, #6fcf97 50%, transparent),       transparent 65%); }
.global-index-col:has(.cat-neutral)     .global-aurora-wrap::before { background: radial-gradient(ellipse at center, color-mix(in oklab, var(--gold) 50%, transparent),  transparent 65%); }
.global-index-col:has(.cat-mild-bear)   .global-aurora-wrap::before { background: radial-gradient(ellipse at center, color-mix(in oklab, #eb8c8c 50%, transparent),       transparent 65%); }
.global-index-col:has(.cat-strong-bear) .global-aurora-wrap::before { background: radial-gradient(ellipse at center, color-mix(in oklab, var(--red) 50%, transparent),   transparent 65%); }

/* Responsive: stack en pantallas medianas */
@media (max-width: 900px) {
  .hero-chart-wrap { height: 220px; }
  .global-aurora-wrap::before { inset: -16px; filter: blur(18px); }
}
@media (max-width: 600px) {
  .price-hero-header { grid-template-columns: 1fr; }
  .price-hero-right { flex-direction: row; gap: 18px; text-align: left; }
  .hero-chart-wrap { height: 180px; }
  .top-hero-row .price-hero .eth-price { font-size: 1.6rem; }
}


/* ═══════════════════════════════════════════════════════════
   BIG CATEGORY HERO (Magnus Sentiment Global)
   ═══════════════════════════════════════════════════════════ */
.global-hero-category {
  font-family: var(--font-display);
  font-size: clamp(2.0rem, 3.2vw, 3.2rem);
  font-weight: 600;
  font-style: italic;
  letter-spacing: -0.02em;
  line-height: 1;
  margin: 8px 0 6px;
  text-transform: none;
  text-shadow: 0 0 28px color-mix(in oklab, var(--cat-color, var(--gold)) 30%, transparent);
  word-break: keep-all;
  overflow-wrap: normal;
  hyphens: none;
  white-space: nowrap;
  position: relative;
  z-index: 2;
}
.global-hero-category.cat-strong-bull { color: var(--green); }
.global-hero-category.cat-mild-bull   { color: #6fcf97; }
.global-hero-category.cat-neutral     { color: var(--gold); }
.global-hero-category.cat-mild-bear   { color: #eb8c8c; }
.global-hero-category.cat-strong-bear { color: var(--red); }

.global-hero-score {
  font-family: var(--font-mono);
  font-size: 1.25rem;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  margin-bottom: 4px;
  letter-spacing: 0.04em;
}
.global-hero-score .gs-num { font-weight: 600; color: var(--ink-strong); }
.global-hero-score .gs-den { color: var(--txt3); font-weight: 400; }

.global-hero-strip { margin-top: 12px; }
.global-hero-strip .reg-bar-5zone { height: 5px; border-radius: 3px; }
.global-hero-strip .reg-bar-marker-5z { top: -5px; height: 14px; width: 3px; }

/* Beacon: stronger glow on big category */
body.design-beacon .global-hero-category {
  font-weight: 700;
  letter-spacing: -0.03em;
}


/* ═══════════════════════════════════════════════════════════
   MINI-BAR 0–100 dentro de cada rectángulo (5 zonas)
   ═══════════════════════════════════════════════════════════ */
.reg-chip-v2-bar-wrap { margin: 4px 0 2px; }
.reg-chip-v2-bar {
  position: relative;
  display: flex;
  height: 5px;
  border-radius: 3px;
  overflow: visible;
  gap: 1px;
}
.reg-chip-v2-bar .reg-bar-zone {
  flex: 1;
  height: 100%;
  border-radius: 0;
  opacity: 0.55;
}
.reg-chip-v2-bar .reg-bar-zone:first-child  { border-radius: 3px 0 0 3px; }
.reg-chip-v2-bar .reg-bar-zone:nth-child(5) { border-radius: 0 3px 3px 0; }
.reg-chip-v2-bar .reg-bar-marker-mini {
  position: absolute;
  top: -4px;
  width: 3px;
  height: 13px;
  background: var(--ink-strong);
  border-radius: 2px;
  transform: translateX(-50%);
  box-shadow: 0 0 4px rgba(0,0,0,.6);
  z-index: 2;
  transition: left .5s ease;
}
.reg-chip-v2-bar .reg-bar-marker-mini.bull    { background: var(--green); box-shadow: 0 0 6px color-mix(in oklab, var(--green) 60%, transparent); }
.reg-chip-v2-bar .reg-bar-marker-mini.bear    { background: var(--red);   box-shadow: 0 0 6px color-mix(in oklab, var(--red)   60%, transparent); }
.reg-chip-v2-bar .reg-bar-marker-mini.neutral { background: var(--gold);  box-shadow: 0 0 6px color-mix(in oklab, var(--gold)  60%, transparent); }
.reg-chip-v2-bar-labels {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  margin-top: 4px;
}


/* ═══════════════════════════════════════════════════════════
   LAB TAB — 10 visualizaciones de evaluación
   ═══════════════════════════════════════════════════════════ */

.lab-header { margin: 24px 0 20px; }
.lab-header h2 {
  font-family: var(--font-display);
  font-size: 1.9rem;
  font-weight: 400;
  color: var(--ink-strong);
  margin-bottom: 6px;
}
.lab-header p {
  font-size: 0.86rem;
  color: var(--txt2);
  max-width: 80ch;
  line-height: 1.5;
}

.lab-example {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 18px 22px 16px;
  margin-bottom: 14px;
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 22px;
  align-items: start;
}
.lab-meta { display: flex; flex-direction: column; gap: 6px; }
.lab-title {
  font-family: var(--font-display);
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--ink-strong);
  line-height: 1.2;
}
.lab-desc {
  font-family: var(--font-prose);
  font-size:0.84rem;
  color: var(--txt2);
  line-height: 1.5;
}
.lab-pros {
  grid-column: 1 / -1;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  padding-top: 10px;
  border-top: 1px dashed var(--border);
  line-height: 1.5;
}
.lab-mockup {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 24px;
  min-height: 220px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

@media (max-width: 900px) {
  .lab-example { grid-template-columns: 1fr; }
}

/* Ejemplo 1: Editorial Type Stack */
.lab-ex1 { align-items: flex-start; }
.ex1-cat {
  font-family: var(--font-display);
  font-size: clamp(3rem, 9vw, 5.4rem);
  font-weight: 700;
  font-style: italic;
  color: var(--gold);
  letter-spacing: -0.025em;
  line-height: 0.95;
  text-shadow: 0 0 30px color-mix(in oklab, var(--gold) 28%, transparent);
}
.ex1-score {
  font-family: var(--font-mono);
  font-size: 1.6rem;
  color: var(--ink-strong);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  margin: 4px 0 16px;
}
.ex1-den { color: var(--txt3); font-weight: 400; font-size: 0.9rem; }
.ex1-bars { display: flex; flex-direction: column; gap: 4px; }
.ex1-bar-row {
  display: grid;
  grid-template-columns: 100px 1fr 40px;
  align-items: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size:0.84rem;
}
.ex1-bar-lbl { color: var(--txt2); }
.ex1-bar { height: 6px; background: color-mix(in oklab, var(--ink) 8%, transparent); border-radius: 3px; overflow: hidden; }
.ex1-bar-fill { height: 100%; transition: width .5s; }
.ex1-bar-fill.cat-strong-bull { background: var(--green); }
.ex1-bar-fill.cat-mild-bull   { background: #6fcf97; }
.ex1-bar-fill.cat-neutral     { background: var(--gold); }
.ex1-bar-fill.cat-mild-bear   { background: #eb8c8c; }
.ex1-bar-fill.cat-strong-bear { background: var(--red); }
.ex1-bar-val { color: var(--ink-strong); text-align: right; font-variant-numeric: tabular-nums; }
.ex1-bar-row.locked { opacity: 0.45; }

/* Ejemplo 2: Horizon Ribbon */
.lab-ex2 .ex2-ribbon {
  display: flex;
  height: 160px;
  gap: 4px;
  align-items: flex-end;
}
.ex2-col {
  flex: 1;
  position: relative;
  background: color-mix(in oklab, var(--ink) 6%, transparent);
  height: 100%;
  border-radius: 2px 2px 0 0;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  overflow: hidden;
}
.ex2-fill {
  width: 100%;
  transition: height .6s;
}
.ex2-fill.cat-strong-bull { background: var(--green); }
.ex2-fill.cat-mild-bull   { background: #6fcf97; }
.ex2-fill.cat-neutral     { background: var(--gold); }
.ex2-fill.cat-mild-bear   { background: #eb8c8c; }
.ex2-fill.cat-strong-bear { background: var(--red); }
.ex2-lbl {
  position: absolute;
  bottom: 6px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--ink-strong);
  text-align: center;
  text-shadow: 0 0 4px rgba(0,0,0,.4);
  line-height: 1.2;
}
.ex2-col.locked { opacity: 0.4; }
.ex2-global {
  margin-top: 14px;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 0.84rem;
  color: var(--txt2);
}
.ex2-global strong { color: var(--gold); font-weight: 600; }

/* Ejemplo 3: Brick Tower */
.lab-ex3 {
  display: grid;
  grid-template-columns: 1fr 1.4fr 1fr 1fr;
  gap: 18px;
  align-items: end;
}
.ex3-tower {
  display: flex;
  flex-direction: column-reverse;
  gap: 3px;
}
.ex3-tower::before {
  content: "";
  display: block;
  width: 100%; height: 12px;
  background: linear-gradient(180deg, var(--green), transparent);
  border-radius: 2px;
}
.ex3-tower::after {
  content: "";
  width: 100%; height: 12px;
  background: linear-gradient(180deg, transparent, var(--green));
  border-radius: 2px;
  opacity: 1;
}
.ex3-center { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.ex3-tower-lbl {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.16em;
  margin-top: 6px;
}
.ex3-tower-val {
  font-family: var(--font-mono);
  font-size: 1.4rem;
  font-weight: 600;
  color: var(--ink-strong);
}
.ex3-tower-cat {
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-style: italic;
  font-weight: 500;
}
.ex3-tower-cat.cat-neutral { color: var(--gold); }
.ex3-side { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.ex3-mini-lbl { font-family: var(--font-mono); font-size:0.84rem; color: var(--txt3); }
.ex3-mini-tower {
  width: 14px;
  height: 100px;
  background: color-mix(in oklab, var(--ink) 10%, transparent);
  border-radius: 2px;
  overflow: hidden;
  display: flex;
  flex-direction: column-reverse;
  position: relative;
}
.ex3-brick {
  width: 100%;
  height: calc(var(--lit, 5) * 10%);
}
.ex3-brick.cat-strong-bull { background: var(--green); }
.ex3-brick.cat-mild-bull   { background: #6fcf97; }
.ex3-brick.cat-neutral     { background: var(--gold); }
.ex3-brick.cat-mild-bear   { background: #eb8c8c; }
.ex3-brick.cat-strong-bear { background: var(--red); }
/* Main tower: 10 bricks visible via JS — but we'll fake 10 segments inline */
#ex3-main-tower {
  width: 36px;
  height: 220px;
  background:
    linear-gradient(180deg,
      var(--bg) 0%, var(--bg) 50%,
      var(--gold) 50%, var(--gold) 100%);
  border: 1px solid var(--border);
  border-radius: 2px;
  position: relative;
}
#ex3-main-tower::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: repeating-linear-gradient(180deg, transparent 0, transparent 21px, var(--bg2) 21px, var(--bg2) 23px);
  border-radius: 2px;
}

/* Ejemplo 4: Constellation Dots */
.ex4-svg { width: 100%; max-width: 360px; height: auto; display: block; margin: 0 auto; }
.ex4-dot { stroke: var(--bg); stroke-width: 1.5; }
.ex4-dot.cat-strong-bull { fill: var(--green);   filter: drop-shadow(0 0 8px color-mix(in oklab, var(--green) 60%, transparent)); }
.ex4-dot.cat-mild-bull   { fill: #6fcf97;        filter: drop-shadow(0 0 8px color-mix(in oklab, #6fcf97 60%, transparent)); }
.ex4-dot.cat-neutral     { fill: var(--gold);    filter: drop-shadow(0 0 8px color-mix(in oklab, var(--gold) 60%, transparent)); }
.ex4-dot.cat-mild-bear   { fill: #eb8c8c;        filter: drop-shadow(0 0 8px color-mix(in oklab, #eb8c8c 60%, transparent)); }
.ex4-dot.cat-strong-bear { fill: var(--red);     filter: drop-shadow(0 0 8px color-mix(in oklab, var(--red) 60%, transparent)); }
.ex4-dot.ex4-locked      { fill: var(--txt3); opacity: 0.4; }
.ex4-lbl  { font-family: var(--font-mono); font-size:14px; fill: var(--txt2); text-anchor: middle; letter-spacing: 0.04em; }
.ex4-lbl-sm{font-family: var(--font-mono); font-size:14px; fill: var(--txt3); text-anchor: middle; }
.ex4-global   { font-family: var(--font-sans); font-size: 30px; font-weight: 700; fill: var(--gold); text-anchor: middle; font-style: italic; }
.ex4-globlbl  { font-family: var(--font-mono); font-size:14px; fill: var(--gold); text-anchor: middle; letter-spacing: 0.16em; }

/* Ejemplo 5: Polar Bars */
.ex5-svg { width: 100%; max-width: 280px; height: auto; display: block; margin: 0 auto; }
.ex5-bar.cat-strong-bull { stroke: var(--green); }
.ex5-bar.cat-mild-bull   { stroke: #6fcf97; }
.ex5-bar.cat-neutral     { stroke: var(--gold); }
.ex5-bar.cat-mild-bear   { stroke: #eb8c8c; }
.ex5-bar.cat-strong-bear { stroke: var(--red); }
.ex5-bar.ex5-locked      { stroke: var(--txt3); opacity: 0.35; stroke-dasharray: 2,2; }
.ex5-bar { stroke-linecap: round; }
.ex5-center { fill: var(--bg2); stroke: var(--border); }
.ex5-num    { font-family: var(--font-sans); font-size: 22px; font-weight: 700; font-style: italic; fill: var(--gold); text-anchor: middle; }
.ex5-cat    { font-family: var(--font-mono); font-size:14px; fill: var(--gold); text-anchor: middle; letter-spacing: 0.16em; }
.ex5-lbl    { font-family: var(--font-mono); font-size:14px; fill: var(--txt2); text-anchor: middle; }
.ex5-lbl-sm { fill: var(--txt3); font-size:14px; }

/* Ejemplo 6: Pyramid */
.lab-ex6 { gap: 14px; display: flex; flex-direction: column; align-items: center; }
.ex6-top { text-align: center; padding-bottom: 12px; border-bottom: 1px solid var(--border); width: 100%; }
.ex6-eyebrow { font-family: var(--font-mono); font-size:0.84rem; color: var(--txt3); letter-spacing: 0.22em; margin-top: 4px; }
.ex6-cat {
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 6vw, 4rem);
  font-weight: 700;
  font-style: italic;
  letter-spacing: -0.022em;
  line-height: 0.95;
}
.ex6-cat.cat-neutral { color: var(--gold); }
.ex6-num { font-family: var(--font-mono); font-size: 1.4rem; color: var(--ink-strong); font-weight: 600; }
.ex6-f1, .ex6-f2 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  width: 75%;
}
.ex6-f2 { grid-template-columns: repeat(2, 1fr); width: 50%; opacity: 0.5; }
.ex6-tile {
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: 2px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-family: var(--font-mono);
}
.ex6-tile.cat-strong-bull { border-left: 3px solid var(--green); }
.ex6-tile.cat-mild-bull   { border-left: 3px solid #6fcf97; }
.ex6-tile.cat-neutral     { border-left: 3px solid var(--gold); }
.ex6-tile.cat-mild-bear   { border-left: 3px solid #eb8c8c; }
.ex6-tile.cat-strong-bear { border-left: 3px solid var(--red); }
.ex6-tile.locked { border-left-style: dashed; }
.ex6-tile-name { font-size:0.84rem; color: var(--txt3); letter-spacing: 0.08em; text-transform: uppercase; }
.ex6-tile-val  { font-size: 1.1rem; color: var(--ink-strong); font-weight: 600; }

/* Ejemplo 7: Heat Strip Mosaic */
.lab-ex7 { display: flex; flex-direction: column; gap: 10px; }
.ex7-strip { display: flex; height: 80px; gap: 2px; }
.ex7-block {
  padding: 10px 14px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border-radius: 2px;
  color: var(--bg);
}
.ex7-block.cat-strong-bull { background: var(--green); }
.ex7-block.cat-mild-bull   { background: #6fcf97; }
.ex7-block.cat-neutral     { background: var(--gold); }
.ex7-block.cat-mild-bear   { background: #eb8c8c; }
.ex7-block.cat-strong-bear { background: var(--red); }
.ex7-name { font-family: var(--font-mono); font-size:0.84rem; font-weight: 600; letter-spacing: 0.08em; }
.ex7-meta { font-family: var(--font-mono); font-size:0.84rem; opacity: 0.85; }
.ex7-locked { display: flex; gap: 6px; }
.ex7-lock-tile {
  padding: 6px 12px;
  border: 1px dashed var(--border2);
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  border-radius: 2px;
}
.ex7-readout {
  font-family: var(--font-mono);
  font-size: 0.94rem;
  color: var(--ink-strong);
  margin-top: 8px;
  letter-spacing: 0.04em;
}
.ex7-readout strong { color: var(--gold); font-size: 1.4rem; font-weight: 700; margin-right: 6px; }

/* Ejemplo 8: Sparkline Matrix */
.ex8-global { text-align: center; padding-bottom: 16px; border-bottom: 1px solid var(--border); margin-bottom: 12px; }
.ex8-num { font-family: var(--font-sans); font-size: 3rem; font-weight: 700; font-style: italic; color: var(--gold); line-height: 1; letter-spacing: -0.025em; }
.ex8-cat { font-family: var(--font-display); font-size: 1.1rem; font-style: italic; color: var(--gold); margin-top: 4px; }
.ex8-eyebrow { font-family: var(--font-mono); font-size:0.84rem; color: var(--txt3); letter-spacing: 0.20em; margin-top: 6px; }
.ex8-rows { display: flex; flex-direction: column; gap: 6px; }
.ex8-row {
  display: grid;
  grid-template-columns: 110px 1fr 40px;
  align-items: center;
  gap: 12px;
  font-family: var(--font-mono);
  font-size:0.84rem;
}
.ex8-lbl { color: var(--txt2); }
.ex8-spark { height: 24px; width: 100%; }
.ex8-spark polyline { fill: none; stroke-width: 1.5; stroke-linecap: round; }
.ex8-spark polyline.cat-strong-bull { stroke: var(--green); }
.ex8-spark polyline.cat-mild-bull   { stroke: #6fcf97; }
.ex8-spark polyline.cat-neutral     { stroke: var(--gold); }
.ex8-spark polyline.cat-mild-bear   { stroke: #eb8c8c; }
.ex8-spark polyline.cat-strong-bear { stroke: var(--red); }
.ex8-val { color: var(--ink-strong); text-align: right; font-weight: 600; }
.ex8-row.locked { opacity: 0.45; }
.ex8-locked-note { color: var(--txt3); font-size:0.84rem; text-align: right; }

/* Ejemplo 9: Aurora Glow */
.lab-ex9 {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 280px;
}
.ex9-aurora {
  text-align: center;
  position: relative;
  z-index: 2;
}
.ex9-aurora::before {
  content: "";
  position: absolute;
  inset: -40px;
  background: radial-gradient(circle, color-mix(in oklab, var(--gold) 30%, transparent), transparent 70%);
  z-index: -1;
  filter: blur(20px);
}
.ex9-num {
  font-family: var(--font-sans);
  font-size: clamp(5rem, 14vw, 8rem);
  font-weight: 800;
  font-style: italic;
  color: var(--gold);
  line-height: 0.9;
  letter-spacing: -0.04em;
  text-shadow: 0 0 60px color-mix(in oklab, var(--gold) 50%, transparent);
}
.ex9-cat {
  font-family: var(--font-mono);
  font-size: 0.84rem;
  color: var(--gold);
  letter-spacing: 0.22em;
  margin-top: -10px;
}
.ex9-chip {
  position: absolute;
  font-family: var(--font-mono);
  font-size:0.84rem;
  padding: 6px 10px;
  border-radius: 2px;
  background: var(--bg);
  border: 1px solid var(--border);
  letter-spacing: 0.06em;
  z-index: 3;
}
.ex9-chip.cat-strong-bull { color: var(--green); border-color: color-mix(in oklab, var(--green) 30%, transparent); }
.ex9-chip.cat-mild-bull   { color: #6fcf97; border-color: color-mix(in oklab, #6fcf97 30%, transparent); }
.ex9-chip.cat-neutral     { color: var(--gold); border-color: color-mix(in oklab, var(--gold) 30%, transparent); }
.ex9-chip.cat-mild-bear   { color: #eb8c8c; border-color: color-mix(in oklab, #eb8c8c 30%, transparent); }
.ex9-chip.cat-strong-bear { color: var(--red); border-color: color-mix(in oklab, var(--red) 30%, transparent); }
.ex9-chip.locked { color: var(--txt3); opacity: 0.6; border-style: dashed; }
.ex9-chip-tl { top: 10px;  left: 20px; }
.ex9-chip-tr { top: 10px;  right: 20px; }
.ex9-chip-bl { bottom: 10px; left: 20px; }
.ex9-chip-br { bottom: 10px; right: 20px; }
.ex9-chip-bc { bottom: 10px; left: 50%; transform: translateX(-50%); }

/* Ejemplo 10: Marquee Ticker */
.ex10-ticker {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: center;
  padding: 14px 18px;
  background: linear-gradient(90deg, var(--bg3), var(--bg2));
  border: 1px solid var(--border2);
  border-radius: 2px;
  font-family: var(--font-mono);
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.ex10-tag {
  color: var(--txt3);
  font-size:0.84rem;
  letter-spacing: 0.12em;
  padding: 2px 6px;
}
.ex10-tag.global { color: var(--accent-amber); font-weight: 700; }
.ex10-tag.locked { color: var(--txt3); opacity: 0.5; }
.ex10-val {
  font-variant-numeric: tabular-nums;
  padding: 2px 8px;
  border-radius: 2px;
}
.ex10-val.cat-strong-bull { color: var(--green);   background: color-mix(in oklab, var(--green) 14%, transparent); }
.ex10-val.cat-mild-bull   { color: #6fcf97;        background: color-mix(in oklab, #6fcf97 14%, transparent); }
.ex10-val.cat-neutral     { color: var(--gold);    background: color-mix(in oklab, var(--gold) 14%, transparent); }
.ex10-val.cat-mild-bear   { color: #eb8c8c;        background: color-mix(in oklab, #eb8c8c 14%, transparent); }
.ex10-val.cat-strong-bear { color: var(--red);     background: color-mix(in oklab, var(--red) 14%, transparent); }
.ex10-val.locked          { color: var(--txt3); opacity: 0.5; }
.ex10-sep { color: var(--border2); font-weight: 300; }


/* ═══════════════════════════════════════════════════════════
   METHODOLOGY — Desglose de sub-pesos por dimensión
   ═══════════════════════════════════════════════════════════ */
.method-weights-wrap {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.method-weights-title {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-bottom: 8px;
}
.method-weights-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-mono);
}
.method-weights-table td {
  padding: 5px 8px 5px 0;
  font-size:0.84rem;
  border-bottom: 1px solid color-mix(in oklab, var(--border) 50%, transparent);
}
.method-weights-table tr:last-child td { border-bottom: 0; }
.method-weights-table .mw-mark { width: 18px; text-align: center; }
.method-weights-table .mw-name { color: var(--ink); }
.method-weights-table .mw-pct {
  text-align: right;
  width: 60px;
  font-variant-numeric: tabular-nums;
}
.method-weights-table .mw-pct-active { color: var(--accent-amber); font-weight: 600; }
.method-weights-table .mw-pct-zero   { color: var(--txt3); }
.method-weights-table .mw-note-cell { color: var(--txt3); font-size:0.84rem; padding-left: 12px; }
.method-weights-table .mw-note { font-style: italic; }


/* ═══════════════════════════════════════════════════════════
   ITERATION 5 — Header FIXED con ticker dinámico tipo CNBC
   ═══════════════════════════════════════════════════════════ */

.hdr-fixed {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 22px;
  align-items: center;
  padding: 12px 24px;
  background: linear-gradient(180deg, var(--bg2) 0%, color-mix(in oklab, var(--bg2) 92%, var(--bg)) 100%);
  border-bottom: 1px solid var(--border2);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  min-height: 258px;
}

/* Header de 2 filas (rediseño nav1): fila 1 marca + stat-chips + live · fila 2 ticker.
   Deja de ser grid 3-col; ahora es column con dos bandas. */
.hdr-fixed.hdr-slim.hdr-2row {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  min-height: 0;
  overflow: hidden;
}
/* Las dos filas no deben heredar el ancho del ticker-track (que mide miles de px) */
.hdr-2row > .hdr-brand-row,
.hdr-2row > .hdr-ticker-row { width: 100%; min-width: 0; }
@media (min-width: 1024px) {
  .hdr-fixed.hdr-slim.hdr-2row { left: var(--rail-w-collapsed); }
  html.rail-pinned .hdr-fixed.hdr-slim.hdr-2row { left: var(--rail-w-expanded); }
}

/* Fila 1 — la marca manda */
.hdr-brand-row {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 12px 24px 11px 24px;
  min-width: 0;
}
@media (max-width: 1023px) {
  .hdr-brand-row { padding-left: 64px; } /* clearance para el botón ☰ del rail */
}
@media (max-width: 639px) {
  .hdr-brand-row { gap: 12px; padding: 10px 16px 9px 64px; }
}

.hdr-spacer { flex: 1 1 0; min-width: 8px; }

/* Stat-chips cableados a data real (precio/score) */
.hdr-stats { display: flex; align-items: center; gap: 10px; flex: 0 1 auto; min-width: 0; overflow: hidden; }
.hdr-stat {
  display: inline-flex; flex-direction: column; gap: 3px;
  padding: 7px 14px; min-height: 44px; justify-content: center;
  background: color-mix(in oklab, var(--ink-strong) 4%, transparent);
  border: 1px solid var(--hairline); border-radius: var(--r-sm); white-space: nowrap;
}
.hdr-stat-k { font-size:14px; letter-spacing: .14em; text-transform: uppercase; color: var(--txt3); font-weight: 600; }
.hdr-stat-v { font-family: var(--font-mono); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; line-height: 1; color: var(--ink-strong); }
.hdr-stat-v.up { color: var(--green); }
.hdr-stat-v.dn { color: var(--red); }
.hdr-stat-delta { font-size: var(--fs-2xs); margin-left: 7px; color: var(--txt3); }
.hdr-stat-delta.up { color: var(--green); }
.hdr-stat-delta.dn { color: var(--red); }
.hdr-stat-score .hdr-stat-v { color: var(--accent-amber); }
.hdr-stat-den { color: var(--txt3); font-size: var(--fs-2xs); margin-left: 7px; }
.hdr-stat-score { align-items: center; }
.hdr-stat-score .hdr-stat-den { margin-left: 5px; }
@media (max-width: 1180px) { .hdr-stats { display: none; } }

/* Fila 2 — ticker como banda fina con borde superior */
.hdr-ticker-row { border-top: 1px solid var(--hairline); padding: 0 24px; }

/* Spacing del wrap para que el contenido no quede debajo del header de 2 filas */
.wrap { padding-top: calc(var(--hdr-h, 120px) + 18px); }

/* Brand grande (logo 3x + ETH Desk display) — clickable: vuelve al top */
.hdr-brand-compact {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-shrink: 0;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
  padding: 4px 6px;
  margin: -4px -6px;
  border-radius: 3px;
  transition: background .15s, transform .15s;
}
.hdr-brand-compact:hover {
  background: color-mix(in oklab, var(--accent-amber) 6%, transparent);
}
.hdr-brand-compact:active {
  transform: scale(0.98);
}
.hdr-logo-sm {
  width: 234px; height: 234px;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in oklab, var(--accent-amber) 8%, var(--bg2));
  border: 1px solid color-mix(in oklab, var(--accent-amber) 30%, transparent);
  border-radius: 2px;
  flex-shrink: 0;
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--accent-amber) 8%, transparent);
}
.hdr-logo-sm img { width: 180px; height: 180px; object-fit: contain; }
.hdr-brand-text-sm { line-height: 1.05; }
.hdr-title-sm {
  font-family: var(--font-display);
  font-size: 2.4rem;
  font-weight: 700;
  letter-spacing: -0.022em;
  color: var(--ink-strong);
}
.hdr-subtitle-sm {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-top: 4px;
}

/* Ticker scrolling */
.hdr-ticker {
  overflow: hidden;
  position: relative;
  height: 36px;
  display: flex;
  align-items: center;
  background: color-mix(in oklab, var(--accent-teal) 4%, transparent);
  border: 1px solid color-mix(in oklab, var(--accent-teal) 18%, transparent);
  border-radius: 2px;
  min-width: 0;
}
/* En el header de 2 filas el ticker es banda fina (sin recuadro teal) */
.hdr-2row .hdr-ticker {
  height: 34px;
  background: transparent;
  border: 0;
  border-radius: 0;
}
.hdr-ticker::before,
.hdr-ticker::after {
  content: "";
  position: absolute;
  top: 0; bottom: 0;
  width: 30px;
  pointer-events: none;
  z-index: 2;
}
.hdr-ticker::before {
  left: 0;
  background: linear-gradient(90deg, var(--bg2), transparent);
}
.hdr-ticker::after {
  right: 0;
  background: linear-gradient(270deg, var(--bg2), transparent);
}
.hdr-ticker-track {
  display: inline-flex;
  align-items: center;
  gap: 0;
  white-space: nowrap;
  animation: tk-scroll-left 80s linear infinite;
  padding-left: 14px;
}
.hdr-ticker:hover .hdr-ticker-track { animation-play-state: paused; }

.ht-item {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-variant-numeric: tabular-nums;
  padding: 0 4px;
}
.ht-lbl {
  color: var(--txt3);
  font-size:0.84rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.ht-val {
  color: var(--ink-strong);
  font-weight: 600;
}
.ht-val.up { color: var(--green); }
.ht-val.dn { color: var(--red); }
.ht-extra {
  font-style: normal;
  font-size:0.84rem;
  color: var(--txt2);
}
.ht-extra.up { color: var(--green); font-weight: 600; }
.ht-extra.dn { color: var(--red); font-weight: 600; }
.ht-icon.up { color: var(--green); }
.ht-icon.dn { color: var(--red); }
.ht-sep {
  color: var(--border2);
  padding: 0 8px;
  font-weight: 300;
}

/* Controls compactos */
.hdr-controls.hdr-ctrl-tight {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  flex-wrap: nowrap;
}
.hdr-ctrl-tight .ctrl-btn {
  width: 28px; height: 28px;
  font-size:0.84rem;
}
.hdr-ctrl-tight .ctrl-btn svg { width: 13px; height: 13px; }
.hdr-ctrl-tight .lang-btn {
  padding: 5px 9px;
  font-size:0.84rem;
  min-height: 28px;
}
/* Lang toggle único (botón compacto) */
.lang-single {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  width: 32px;
  height: 28px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--accent-amber);
  border-radius: 2px;
  cursor: pointer;
  transition: all .15s;
}
.lang-single:hover {
  background: color-mix(in oklab, var(--accent-amber) 10%, transparent);
  border-color: color-mix(in oklab, var(--accent-amber) 35%, transparent);
}
.hdr-ctrl-tight .live-badge {
  font-size:0.84rem;
  letter-spacing: 0.14em;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.hdr-ctrl-tight .live-badge .ts {
  color: var(--txt3);
  font-family: var(--font-mono);
  font-size:0.84rem;
  margin-left: 4px;
}
.hdr-ctrl-tight .countdown {
  padding: 5px 10px;
  font-size:0.84rem;
  min-height: 28px;
}
.hdr-ctrl-tight .countdown strong { min-width: 1.4em; }

/* Hide IDs ocultos */
.pp-hidden-values { display: none !important; }

@media (max-width: 1023px) {
  .hdr-ticker-row { padding: 0 16px; }
  .wrap { padding-top: calc(var(--hdr-h, 120px) + 18px); }
}

@media (max-width: 639px) {
  .hdr-ticker-row { padding: 0 14px; }
  .hdr-ticker { height: 30px; min-height: 30px; }
  .ht-item { font-size:0.84rem; gap: 5px; padding: 0 3px; }
  .ht-lbl { font-size:0.84rem; }
  .wrap { padding-top: calc(var(--hdr-h, 108px) + 16px); padding-left: 14px; padding-right: 14px; }
}


/* ── HEADER V2 (legacy, oculto cuando hay hdr-fixed) ──────── */
.hdr-v2 {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 28px;
  align-items: center;
  padding: 18px 0 14px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 0;
}
.hdr-brand { display: flex; align-items: center; gap: 14px; min-width: 0; }
.hdr-logo {
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  background: color-mix(in oklab, var(--accent-amber) 8%, var(--bg2));
  border: 1px solid color-mix(in oklab, var(--accent-amber) 28%, transparent);
  border-radius: 2px;
  flex-shrink: 0;
}
.hdr-logo img { width: 32px; height: 32px; object-fit: contain; }
.hdr-brand-text { min-width: 0; }
.hdr-eyebrow {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--ink) 55%, transparent);
  margin-bottom: 2px;
}
.hdr-title {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--ink-strong);
  line-height: 1.1;
}
.hdr-title-sep { color: var(--accent-amber); margin: 0 4px; font-weight: 300; }
.hdr-title-sub { color: var(--accent-teal); font-weight: 500; font-size: 1.2rem; }
.hdr-subtitle {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-top: 2px;
}

/* Protocol Pulse Bar (centro del header) */
.hdr-pulse {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.06em;
  background: color-mix(in oklab, var(--accent-teal) 4%, transparent);
  border: 1px solid color-mix(in oklab, var(--accent-teal) 18%, transparent);
  border-radius: 2px;
  padding: 10px 16px;
  flex-wrap: wrap;
}
.hp-item { display: inline-flex; align-items: baseline; gap: 6px; white-space: nowrap; }
.hp-lbl  { color: var(--txt3); font-size:0.84rem; letter-spacing: 0.18em; text-transform: uppercase; }
.hp-val  { color: var(--ink-strong); font-variant-numeric: tabular-nums; font-weight: 500; }
.hp-val.amber { color: var(--accent-amber); }
.hp-sep  { color: var(--border2); font-weight: 300; }

/* Controls (derecha) */
.hdr-controls {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.hdr-ctrl-grp { display: flex; gap: 4px; }
.hdr-design-picker { padding: 1px; }
.hdr-design-picker .dp-btn { width: 26px; height: 26px; font-size:0.84rem; }
.hdr-live { font-size:0.84rem; letter-spacing: 0.16em; }

/* Badge live apilado — estado / timestamp / refresh en columna (ahorra ancho en el header) */
.hdr-controls.hdr-live-stack { flex-direction: column; align-items: flex-end; gap: 5px; flex-wrap: nowrap; }
.hdr-live-stack .live-badge { padding: 0; gap: 7px; }
.hdr-live-stack .ts { display: inline-block; margin: 0; font-family: var(--font-mono); font-size: 0.84rem; color: var(--txt3); letter-spacing: 0.06em; }
.hdr-live-stack .countdown { border: 0; background: transparent; padding: 2px; min-height: auto; gap: 6px; color: var(--txt2); letter-spacing: 0.04em; }
.hdr-live-stack .countdown:hover { color: var(--accent-amber); border-color: transparent; }
.hdr-live-stack .cd-ring { width: 13px; height: 13px; flex: 0 0 13px; color: var(--accent-amber); }
.hdr-live-stack .cd-ring path { fill: none; }

/* Esconder reglas viejas del header */
header.hdr-v2 .logo-area,
header.hdr-v2 .brand-rule,
header.hdr-v2 .brand,
header.hdr-v2 .ctrl-designs { display: none; }

/* ── SPOT card (izquierda del fold) ─────────────────────────── */
.spot-card,
.chart-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 18px 22px 16px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-height: 200px;
}

.card-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--txt3);
  flex-wrap: wrap;
}
.ce-live {
  display: inline-flex; align-items: center; gap: 5px;
  color: var(--green); font-weight: 600;
  padding: 2px 8px; border-radius: 2px;
  background: color-mix(in oklab, var(--green) 12%, transparent);
}
.ce-src,
.ce-meta,
.ce-now { color: var(--accent-teal); font-weight: 500; }
.ce-now { margin-left: auto; }

.spot-big-row {
  display: flex;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
}
.spot-icon {
  width: 36px; height: 36px;
  background: linear-gradient(135deg, var(--accent-teal), color-mix(in oklab, var(--accent-teal) 70%, black));
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 1.1rem; color: var(--bg);
  flex-shrink: 0;
  align-self: center;
}
.spot-num {
  font-family: var(--font-display);
  font-size: clamp(2.4rem, 4vw, 3.4rem);
  font-weight: 700;
  letter-spacing: -0.028em;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.spot-pct {
  font-family: var(--font-mono);
  font-size: 0.95rem;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 2px;
}
.spot-src {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.06em;
  color: var(--txt3);
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px dashed var(--border);
}

/* ── CHART/GAS card (derecha del fold) ───────────────────────── */
.chart-spark-wrap {
  position: relative;
  flex: 1;
  min-height: 180px;
  display: flex;
  align-items: stretch;
  gap: 8px;
}
.chart-spark {
  flex: 1;
  height: 100%;
  width: 100%;
  display: block;
}
.chart-spark-placeholder {
  position: absolute;
  inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  opacity: 0.6;
  font-style: italic;
}

/* Y-axis labels — HTML overlay a la izquierda del SVG (NO escalan con el SVG) */
.chart-yaxis {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 4px 0;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  font-variant-numeric: tabular-nums;
  text-align: right;
  flex-shrink: 0;
  min-width: 48px;
}
.chart-yaxis span { line-height: 1; }
/* Grid lines del fondo */
.spark-grid { opacity: 0.5; }

/* X-axis row (tiempos start / NOW / end) */
.chart-spark-xlbl {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin-top: 4px;
  padding: 0 4px;
}
.chart-now-tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--accent-teal);
  font-weight: 600;
}
.chart-now-tag .live-dot { width: 5px; height: 5px; }

/* Wrap del header del chart: 2 grupos de botones lado a lado */
.chart-controls {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

/* Timeframe selector */
.tf-selector,
.ct-selector {
  display: inline-flex;
  gap: 1px;
  border: 1px solid var(--border);
  border-radius: 2px;
  overflow: hidden;
  background: var(--bg);
}
.tf-btn,
.ct-btn {
  background: transparent;
  border: none;
  color: var(--txt3);
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  padding: 5px 9px;
  cursor: pointer;
  transition: all .15s;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.ct-btn { padding: 4px 6px; }
.ct-btn svg { display: block; }
.tf-btn:hover,
.ct-btn:hover {
  background: color-mix(in oklab, var(--accent-teal) 10%, transparent);
  color: var(--ink-strong);
}
.tf-btn.active,
.ct-btn.active {
  background: var(--accent-teal);
  color: var(--bg);
}

/* Candles / bars styling */
.spark-candle-up   { fill: var(--green); stroke: var(--green); }
.spark-candle-down { fill: var(--red);   stroke: var(--red);   }
.spark-candle-wick { stroke-width: 1; }
.spark-bar-teal    { fill: var(--accent-teal); opacity: 0.85; }
.spark-bar-teal:hover { opacity: 1; }
/* Foot del chart card — solo fuente, sin gas (que vive ahora en Protocol Pulse) */
.chart-card-foot {
  padding-top: 8px;
  border-top: 1px dashed var(--border);
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.06em;
}

/* Re-layout del top-hero-row para SPOT + CHART (legacy, solo si NO es hero-v2) */
.top-hero-row:not(.hero-v2) {
  grid-template-columns: 1.4fr 1fr !important;
  margin-top: 18px !important;
}

/* ── Hero v2: [Banner Wide + Magnus] izquierda 65% · Chart der 35% ── */
.top-hero-row.hero-v2,
section[data-tab] .top-hero-row.hero-v2,
.wrap .top-hero-row.hero-v2 {
  grid-template-columns: 60% 40% !important;
  margin-top: 18px !important;
  gap: 14px;
  align-items: stretch;
}
.hero-left-col {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

/* Banner Wide compacto: precio gigante + delta + grid 4 metadatos (centrado) */
.bw-banner {
  background: linear-gradient(180deg, color-mix(in oklab, var(--bg2) 70%, var(--bg3)), var(--bg2));
  border: 1px solid var(--border2);
  border-left: 3px solid var(--red);
  border-radius: 2px;
  padding: 18px 24px 16px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  transition: border-left-color .3s;
  text-align: center;
  align-items: center;
}
.bw-banner .bw-main {
  align-items: center;
  width: 100%;
}
.bw-banner .bw-eyebrow {
  justify-content: center;
}
.bw-banner .bw-num-row {
  justify-content: center;
}
.bw-banner .bw-meta {
  width: 100%;
  text-align: left;  /* metadatos individuales left-aligned dentro del grid centrado */
}
.bw-banner.up   { border-left-color: var(--green); }
.bw-banner.flat { border-left-color: var(--accent-teal); }
.bw-main { display: flex; flex-direction: column; gap: 4px; }
.bw-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.bw-live {
  display: inline-flex; align-items: center; gap: 5px;
  color: var(--green); font-weight: 600;
  padding: 2px 7px; border-radius: 2px;
  background: color-mix(in oklab, var(--green) 12%, transparent);
}
.bw-src { color: var(--accent-teal); font-weight: 500; }
.bw-num-row {
  display: flex;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 2px;
}
.bw-icon {
  width: 32px; height: 32px;
  background: linear-gradient(135deg, var(--accent-teal), color-mix(in oklab, var(--accent-teal) 70%, black));
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 1rem; color: var(--bg);
  align-self: center;
  flex-shrink: 0;
}
.bw-price {
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 4vw, 3rem);
  font-weight: 700;
  letter-spacing: -0.028em;
  line-height: 1;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
}
.bw-pct {
  font-family: var(--font-display);
  font-size: clamp(1.2rem, 2.2vw, 1.6rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--red);
}
.bw-pct.up { color: var(--green); }
.bw-meta {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  padding-top: 10px;
  border-top: 1px dashed var(--border);
}
.bw-meta-item { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.bw-meta-item span {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--txt3);
}
.bw-meta-item strong {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Banner Wide minimal: una línea con datos secundarios condensados */
.bw-meta-line {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  padding-top: 10px;
  margin-top: 4px;
  border-top: 1px dashed var(--border);
  text-align: center;
}
.bw-meta-line strong {
  color: var(--ink-strong);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.bw-banner.bw-minimal {
  padding-bottom: 12px;
}
.bw-banner.bw-minimal .bw-main { gap: 6px; }

/* Magnus banner cuando va apilado dentro de la columna izquierda */
.magnus-banner.magnus-stacked {
  margin: 0;
  padding: 20px 20px 16px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.magnus-stacked .magnus-banner-top { gap: 4px; }
.magnus-stacked .global-hero-category {
  font-size: clamp(2rem, 3.5vw, 3rem) !important;
}
.magnus-stacked .magnus-banner-divider { margin: 14px 0 12px; }
.magnus-stacked .magnus-f1-row { max-width: none; gap: 10px; }
.magnus-stacked .magnus-f2-row { max-width: none; margin-top: 8px; gap: 10px; }
.magnus-stacked .magnus-f3-row { max-width: none; margin-top: 8px; gap: 8px; }
.magnus-stacked .mb-tile { padding: 10px 12px; }
.magnus-stacked .mb-tile-val { font-size: 1.4rem; }

/* El chart-card de la derecha (col 2) se estira full-height del row */
.hero-v2 .chart-card {
  height: auto;
  display: flex;
  flex-direction: column;
}
.hero-v2 .chart-spark-wrap {
  flex: 1;
  min-height: 200px;
}

@media (max-width: 900px) {
  .top-hero-row.hero-v2,
  section[data-tab] .top-hero-row.hero-v2,
  .wrap .top-hero-row.hero-v2 {
    grid-template-columns: 1fr !important;
    gap: 12px;
  }
  .bw-meta { grid-template-columns: repeat(2, 1fr); }
  .hero-v2 .chart-card { order: 2; min-height: 280px; }
  .hero-v2 .hero-left-col { order: 1; }
  .hero-v2 .chart-spark-wrap { min-height: 240px; }
}

@media (max-width: 600px) {
  .hero-v2 .chart-card { min-height: 240px; padding: 14px 14px 12px; }
  .hero-v2 .chart-spark-wrap { min-height: 200px; }
  .chart-card .card-eyebrow { font-size:0.84rem; gap: 8px; flex-wrap: wrap; }
  .chart-controls { flex-wrap: wrap; gap: 4px; }
  .spot-card, .bw-banner { padding: 14px 16px 12px; }
  .bw-price { font-size: 1.8rem !important; }
  .bw-meta-line { font-size:0.84rem; }
  .magnus-stacked { padding: 16px 14px 12px !important; }
  .magnus-stacked .global-hero-category { font-size: clamp(1.5rem, 8vw, 2.2rem) !important; }
  .magnus-stacked .gs-num { font-size: 1.6rem !important; }
  .magnus-stacked .magnus-f1-row,
  .magnus-stacked .magnus-f2-row { grid-template-columns: 1fr !important; gap: 6px !important; }
  .magnus-stacked .magnus-f3-row { grid-template-columns: repeat(2, 1fr) !important; gap: 6px !important; }
}

/* ── MAGNUS BANNER ───────────────────────────────────────────── */
.magnus-banner {
  background: var(--bg2);
  border: 1px solid var(--border2);
  border-radius: 3px;
  padding: 32px 28px 24px;
  margin: 18px 0;
  position: relative;
  overflow: hidden;
  text-align: center;
}
.magnus-banner-top {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  position: relative;
  z-index: 2;
}
.magnus-aurora { padding: 4px 16px; margin: 4px -16px; }
.magnus-aurora::before {
  inset: -50px !important;
  filter: blur(40px) !important;
  opacity: 0.55 !important;
}
.magnus-banner .global-hero-category {
  font-size: clamp(2.6rem, 4.8vw, 4.4rem) !important;
}
.magnus-banner-divider {
  height: 1px;
  background: var(--border);
  margin: 22px 0 18px;
  width: 80%;
  margin-left: auto; margin-right: auto;
}
.magnus-f1-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  max-width: 880px;
  margin: 0 auto;
}
.magnus-f2-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  max-width: 880px;
  margin: 12px auto 0;
  opacity: 0.55;
}
.magnus-f3-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  max-width: 1000px;
  margin: 10px auto 0;
  opacity: 0.42;
}
.mb-tile.locked.f3 {
  border-style: dashed;
  border-color: color-mix(in oklab, var(--accent-teal) 28%, var(--border));
}
.mb-tile {
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-left: 3px solid var(--border2);
  border-radius: 2px;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-align: left;
}
.mb-tile.cat-strong-bull { border-left-color: var(--green); }
.mb-tile.cat-mild-bull   { border-left-color: #6fcf97; }
.mb-tile.cat-neutral     { border-left-color: var(--gold); }
.mb-tile.cat-mild-bear   { border-left-color: #eb8c8c; }
.mb-tile.cat-strong-bear { border-left-color: var(--red); }
.mb-tile.locked { border-left-style: dashed; opacity: 0.85; }
.mb-tile-name {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--txt3);
}
.mb-tile-val {
  font-family: var(--font-display);
  font-size: 1.6rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.mb-tile-cat {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.06em;
  color: var(--txt2);
  text-transform: uppercase;
}

/* ── Tiles clickeables → scroll a la sección correspondiente ── */
.mb-tile-link {
  cursor: pointer;
  transition: transform .15s, border-color .15s, background .15s, box-shadow .15s;
  user-select: none;
}
.mb-tile-link:hover {
  transform: translateY(-1px);
  background: color-mix(in oklab, var(--accent-teal) 5%, var(--bg));
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
}
.mb-tile-link:active { transform: translateY(0); }
.mb-tile-link:focus-visible {
  outline: 2px solid color-mix(in oklab, var(--accent-amber) 60%, transparent);
  outline-offset: 2px;
}
.mb-tile-link.locked:hover { opacity: 1; }

/* Flash en la sección destino tras el scroll */
@keyframes dim-flash-anim {
  0%   { box-shadow: 0 0 0 2px color-mix(in oklab, var(--accent-amber) 65%, transparent); background: color-mix(in oklab, var(--accent-amber) 6%, transparent); }
  100% { box-shadow: 0 0 0 2px transparent; background: transparent; }
}
.dim-flash {
  animation: dim-flash-anim 1.4s ease-out;
  border-radius: 3px;
}

/* ── PROTOCOL PULSE — strip 2 filas ─────────────────────────── */
.protocol-pulse {
  margin: 16px 0;
}
.pp-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
  font-family: var(--font-mono);
  flex-wrap: wrap;
}
.pp-state {
  background: var(--accent-amber);
  color: var(--bg);
  font-size:0.84rem;
  padding: 3px 8px;
  letter-spacing: 0.18em;
  font-weight: 700;
  border-radius: 2px;
}
.pp-title { font-size: 0.84rem; color: var(--ink-strong); font-weight: 600; }
.pp-sub   { color: var(--txt3); font-weight: 400; }
.pp-meta  { margin-left: auto; font-size:0.84rem; color: var(--txt3); letter-spacing: 0.06em; }

.pp-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 2px;
  overflow: hidden;
}
.pp-cell {
  padding: 14px 16px;
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.pp-cell:nth-child(5n) { border-right: none; }
.pp-lbl {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--txt3);
}
.pp-val {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.pp-ctx {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
}
/* Source hyperlink debajo de cada métrica — clic abre el endpoint real */
.pp-src {
  margin-top: 6px;
  padding-top: 5px;
  border-top: 1px dashed color-mix(in oklab, var(--border) 70%, transparent);
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}
.pp-src a {
  color: var(--accent-teal);
  text-decoration: none;
  opacity: 0.75;
  transition: opacity .15s, color .15s;
}
.pp-src a:hover {
  opacity: 1;
  color: var(--accent-amber);
  text-decoration: underline;
}

/* Responsive */
@media (max-width: 1024px) {
  .hdr-v2 { grid-template-columns: 1fr; gap: 12px; padding: 14px 0; }
  .hdr-pulse { order: 2; }
  .hdr-controls { order: 3; justify-content: flex-start; }
  .pp-grid { grid-template-columns: repeat(3, 1fr); }
  .pp-cell:nth-child(5n) { border-right: 1px solid var(--border); }
  .pp-cell:nth-child(3n) { border-right: none; }
  .top-hero-row { grid-template-columns: 1fr !important; }
}
@media (max-width: 768px) {
  .magnus-f1-row { grid-template-columns: 1fr; }
  .magnus-f2-row { grid-template-columns: 1fr; }
  .magnus-f3-row { grid-template-columns: repeat(2, 1fr); }
  .pp-grid { grid-template-columns: repeat(2, 1fr); }
  .pp-cell:nth-child(3n) { border-right: 1px solid var(--border); }
  .pp-cell:nth-child(2n) { border-right: none; }
  .spot-num { font-size: 2rem; }
}
@media (max-width: 480px) {
  .pp-grid { grid-template-columns: 1fr; }
  .pp-cell { border-right: none !important; border-top: 1px solid var(--border); }
}


/* ═══════════════════════════════════════════════════════════
   TICKER LAB — 4 propuestas dinámicas
   ═══════════════════════════════════════════════════════════ */

.tk-block {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 22px 24px;
  margin-bottom: 20px;
}
.tk-meta { margin-bottom: 14px; }
.tk-title {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 500;
  color: var(--ink-strong);
}
.tk-desc {
  font-size:0.84rem;
  color: var(--txt2);
  margin-top: 4px;
  line-height: 1.5;
  max-width: 80ch;
}
.tk-pros {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  padding-top: 12px;
  margin-top: 14px;
  border-top: 1px dashed var(--border);
  line-height: 1.5;
}
.tk-mockup {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 0;
  overflow: hidden;
}
.tk-readout {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  padding: 12px 16px;
  letter-spacing: 0.06em;
  border-top: 1px solid var(--border);
  background: color-mix(in oklab, var(--bg) 50%, var(--bg2));
}

/* ── Animation: scroll horizontal seamless ── */
@keyframes tk-scroll-left {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* ═════ Mockup 1: CNBC Scroll ═════ */
.tk1-ticker {
  background: linear-gradient(180deg, color-mix(in oklab, var(--bg2) 60%, var(--bg3)), var(--bg));
  border-bottom: 1px solid var(--border2);
  overflow: hidden;
  position: relative;
  padding: 14px 0;
}
.tk1-track {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  white-space: nowrap;
  animation: tk-scroll-left 60s linear infinite;
  padding-left: 12px;
}
.tk1-ticker:hover .tk1-track { animation-play-state: paused; }
.tk1-item {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  font-family: var(--font-mono);
  font-size: 0.84rem;
  font-variant-numeric: tabular-nums;
}
.tk1-lbl { color: var(--txt3); font-size:0.84rem; letter-spacing: 0.12em; text-transform: uppercase; }
.tk1-item strong { color: var(--ink-strong); font-weight: 600; }
.tk1-item strong.ok { color: var(--green); }
.tk1-item em { font-style: normal; font-size:0.84rem; color: var(--txt2); }
.tk1-item em.dn { color: var(--red); font-weight: 600; }
.tk1-item em.up { color: var(--green); font-weight: 600; }
.tk1-sep { color: var(--border2); padding: 0 6px; font-weight: 300; }

/* ═════ Mockup 2: Bloomberg Dual-Row ═════ */
.tk2-bar {
  display: flex;
  flex-direction: column;
}
.tk2-headline {
  display: flex;
  align-items: stretch;
  gap: 0;
  background: linear-gradient(180deg, color-mix(in oklab, var(--accent-amber) 4%, var(--bg2)), var(--bg2));
  border-bottom: 1px solid var(--border);
  padding: 0;
  overflow-x: auto;
}
.tk2-pin {
  display: inline-flex;
  flex-direction: column;
  gap: 4px;
  padding: 12px 18px;
  border-right: 1px solid var(--border);
  font-family: var(--font-mono);
  flex-shrink: 0;
}
.tk2-pin:last-child { border-right: none; }
.tk2-pin .tk2-lbl { color: var(--txt3); font-size:0.84rem; letter-spacing: 0.14em; text-transform: uppercase; }
.tk2-pin strong { color: var(--ink-strong); font-size: 0.94rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.tk2-pin strong.big { font-family: var(--font-display); font-size: 1.4rem; letter-spacing: -0.015em; }
.tk2-pin strong.cat-neutral { color: var(--gold); }
.tk2-pin strong.ok { color: var(--green); }
.tk2-pin em { font-style: normal; font-size:0.84rem; color: var(--txt2); margin-top: 1px; }
.tk2-pin em.dn { color: var(--red); }
.tk2-pin em.up { color: var(--green); }

.tk2-scroll {
  overflow: hidden;
  padding: 8px 0;
  position: relative;
  background: var(--bg);
}
.tk2-track {
  display: inline-flex;
  gap: 10px;
  white-space: nowrap;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt2);
  letter-spacing: 0.04em;
  animation: tk-scroll-left 45s linear infinite;
  padding-left: 14px;
}
.tk2-scroll:hover .tk2-track { animation-play-state: paused; }
.tk2-track .sep { color: var(--border2); margin: 0 4px; }

/* ═════ Mockup 3: Numeric Grid Panel ═════ */
.tk3-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  background: var(--bg);
}
.tk3-cell {
  padding: 12px 14px;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-family: var(--font-mono);
}
.tk3-cell:nth-child(5n) { border-right: none; }
.tk3-cell:nth-last-child(-n+5) { border-bottom: none; }
.tk3-cell span {
  font-size:0.84rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--txt3);
}
.tk3-cell strong {
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: -0.012em;
}
.tk3-cell strong.ok { color: var(--green); }
.tk3-cell em { font-style: normal; font-size:0.84rem; color: var(--txt2); }
.tk3-cell em.dn { color: var(--red); }
.tk3-cell em.up { color: var(--green); }
.tk3-cell.cat-neutral strong { color: var(--gold); }

/* ═════ Mockup 4: Crypto-native con sparklines mini ═════ */
.tk4-strip {
  background: linear-gradient(180deg, var(--bg2), var(--bg));
  overflow: hidden;
  padding: 14px 0;
  position: relative;
}
.tk4-track {
  display: inline-flex;
  gap: 10px;
  padding: 0 14px;
  white-space: nowrap;
  animation: tk-scroll-left 80s linear infinite;
}
.tk4-strip:hover .tk4-track { animation-play-state: paused; }
.tk4-chip {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 14px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-left: 3px solid var(--border2);
  border-radius: 2px;
  min-width: 140px;
  flex-shrink: 0;
  font-family: var(--font-mono);
}
.tk4-chip.up { border-left-color: var(--green); }
.tk4-chip.dn { border-left-color: var(--red); }
.tk4-chip.cat-neutral { border-left-color: var(--gold); }
.tk4-name {
  font-size:0.84rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--txt3);
}
.tk4-val {
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.012em;
}
.tk4-spark {
  height: 18px;
  width: 100%;
  margin: 3px 0;
}
.tk4-pct {
  font-size:0.84rem;
  color: var(--txt2);
  font-variant-numeric: tabular-nums;
}
.tk4-chip.up .tk4-pct { color: var(--green); font-weight: 600; }
.tk4-chip.dn .tk4-pct { color: var(--red); font-weight: 600; }
.tk4-chip.cat-neutral .tk4-pct { color: var(--gold); font-weight: 600; }

@media (max-width: 768px) {
  .tk3-grid { grid-template-columns: repeat(3, 1fr); }
}

/* ── Toggle de modo Sticky/Fixed (sólo en Ticker Lab) ── */
.tk-sticky-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.08em;
  flex-wrap: wrap;
}
.tk-sticky-hint { text-transform: uppercase; letter-spacing: 0.14em; }
.tk-sticky-tip { font-style: italic; opacity: 0.7; }
.tk-sticky-toggle {
  display: inline-flex;
  gap: 1px;
  border: 1px solid var(--border2);
  border-radius: 2px;
  overflow: hidden;
  background: var(--bg);
}
.tks-btn {
  background: transparent;
  border: none;
  color: var(--txt3);
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  padding: 5px 10px;
  cursor: pointer;
  text-transform: uppercase;
}
.tks-btn:hover { background: color-mix(in oklab, var(--accent-teal) 12%, transparent); color: var(--ink-strong); }
.tks-btn.active { background: var(--accent-teal); color: var(--bg); }

/* Modo sticky: el ticker se pega al top al scrollear */
.tk1-ticker.is-sticky,
.tk2-bar.is-sticky {
  position: sticky;
  top: 0;
  z-index: 50;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
}

/* Modo fixed: siempre arriba, encima de todo */
.tk1-ticker.is-fixed,
.tk2-bar.is-fixed {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}


/* ═══════════════════════════════════════════════════════════
   ITERATION 6 — Cuerpo del dashboard: secciones por dimensión
   Números (★/·) + Visuales (gauges, charts, donuts) en SVG inline
   ═══════════════════════════════════════════════════════════ */

/* Leyenda global ★/· */
.dim-legend-global {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin: 18px 0 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
  flex-wrap: wrap;
}

/* Bloque por dimensión (card editorial full-width) */
.dim-block {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 20px 24px 18px;
  margin: 14px 0;
  position: relative;
  overflow: hidden;
}

/* Header: título grande + meta + score grande */
.dim-block-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 12px;
  margin-bottom: 12px;
}
.dim-block-head .dbh-left { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.dbh-title {
  font-family: var(--font-display);
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink-strong);
  line-height: 1.1;
}
.dbh-meta {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.06em;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.dbh-meta strong { color: var(--accent-amber); font-weight: 600; }
.dbh-right { flex-shrink: 0; }
.dbh-score {
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 4vw, 3rem);
  font-weight: 700;
  letter-spacing: -0.025em;
  color: var(--ink-strong);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.dbh-den {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  font-weight: 400;
  margin-left: 2px;
}
.dim-block-head.cat-strong-bull { border-left: 4px solid var(--green); padding-left: 14px; margin-left: -18px; }
.dim-block-head.cat-mild-bull   { border-left: 4px solid #6fcf97;      padding-left: 14px; margin-left: -18px; }
.dim-block-head.cat-neutral     { border-left: 4px solid var(--gold);  padding-left: 14px; margin-left: -18px; }
.dim-block-head.cat-mild-bear   { border-left: 4px solid #eb8c8c;      padding-left: 14px; margin-left: -18px; }
.dim-block-head.cat-strong-bear { border-left: 4px solid var(--red);   padding-left: 14px; margin-left: -18px; }

/* Mini-barra 0-100 de la dimensión */
.dim-block-bar { margin: 10px 0 14px; }
.dim-block-bar .reg-chip-v2-bar { height: 6px; }
.dim-block-bar .reg-chip-v2-bar-labels { font-size:0.84rem; padding: 0 2px; }

/* Grid 2 columnas: números (izq) + visuales (der) */
.dim-block-grid {
  display: grid;
  grid-template-columns: minmax(280px, 38%) 1fr;
  gap: 22px;
  align-items: flex-start;
}
.dim-numbers {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  border-right: 1px dashed var(--border);
  padding-right: 18px;
}
.dim-visuals {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  align-items: stretch;
}

/* Foot del bloque (fuente con hyperlink) */
.dim-block-foot {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px dashed var(--border);
}
.dim-block-foot a {
  color: var(--accent-teal);
  text-decoration: none;
  opacity: 0.8;
}
.dim-block-foot a:hover { opacity: 1; text-decoration: underline; color: var(--accent-amber); }

/* ── Componentes visuales ──────────────────────────────────── */
.viz-cell {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 2px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-height: 78px;
}
.viz-cell-wide { grid-column: 1 / -1; }
.viz-label {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--txt3);
}
.viz-label strong { color: var(--ink-strong); font-weight: 600; }

/* SVG gauge wrapper */
.viz-gauge svg { width: 100%; height: 26px; display: block; }
.viz-ticks {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  margin-top: 4px;
}
.viz-ticks-5 {
  display: flex;
  justify-content: space-between;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  margin-top: 4px;
}

/* MAs ladder */
.vml-list { display: flex; flex-direction: column; gap: 4px; font-family: var(--font-mono); font-size:0.84rem; }
.vml-row { display: grid; grid-template-columns: 64px 1fr 60px; align-items: center; gap: 8px; }
.vml-name { color: var(--txt3); font-size:0.84rem; letter-spacing: 0.06em; }
.vml-bar {
  position: relative;
  height: 6px;
  background: color-mix(in oklab, var(--ink) 6%, transparent);
  border-radius: 3px;
}
.vml-center {
  position: absolute;
  left: 50%; top: -1px; bottom: -1px;
  width: 1px;
  background: var(--border2);
}
.vml-fill { position: absolute; top: 0; bottom: 0; border-radius: 3px; }
.vml-pct { text-align: right; font-variant-numeric: tabular-nums; font-weight: 600; }

/* MACD viz labels (legacy, ya no usado) */
.vmx-lbl,
.vmx-lbl-c { display: none; }

/* MACD viz nuevo — 3 chips + histbar centrado */
.vmacd-chips {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  font-family: var(--font-mono);
}
.vmacd-chip {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 0;
}
.vmacd-lbl {
  font-size:0.84rem;
  letter-spacing: 0.14em;
  color: var(--txt3);
}
.vmacd-chip strong {
  font-size: 1rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.vmacd-histbar {
  position: relative;
  height: 7px;
  background: color-mix(in oklab, var(--ink) 6%, transparent);
  border-radius: 3px;
  margin-top: 6px;
}
.vmacd-zero {
  position: absolute;
  left: 50%; top: -2px; bottom: -2px;
  width: 1px;
  background: var(--border2);
}
.vmacd-fill {
  position: absolute;
  top: 0; bottom: 0;
  border-radius: 3px;
}

/* Calls vs Puts split */
.viz-cp { padding: 0; }
.vcp-bar {
  display: flex;
  height: 28px;
  border-radius: 2px;
  overflow: hidden;
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  color: var(--bg);
}
.vcp-calls {
  background: var(--green);
  display: flex; align-items: center; padding: 0 8px;
  white-space: nowrap; overflow: hidden;
}
.vcp-puts {
  background: var(--red);
  display: flex; align-items: center; justify-content: flex-end; padding: 0 8px;
  white-space: nowrap; overflow: hidden;
}

/* Strikes table */
.vst-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.vst-col { display: flex; flex-direction: column; gap: 3px; }
.vst-head {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.16em;
  text-align: center;
  padding: 3px 0;
  border-radius: 2px;
  margin-bottom: 4px;
  font-weight: 700;
}
.vst-head.call { color: var(--green); background: color-mix(in oklab, var(--green) 12%, transparent); }
.vst-head.put  { color: var(--red);   background: color-mix(in oklab, var(--red) 12%, transparent); }
.vst-row {
  display: grid;
  grid-template-columns: 60px 1fr 50px;
  gap: 6px;
  align-items: center;
  font-family: var(--font-mono);
  font-size:0.84rem;
}
.vst-strike { color: var(--ink-strong); font-weight: 600; font-variant-numeric: tabular-nums; }
.vst-bar { height: 8px; background: color-mix(in oklab, var(--ink) 6%, transparent); border-radius: 2px; overflow: hidden; }
.vst-row.call .vst-fill { background: color-mix(in oklab, var(--green) 70%, transparent); height: 100%; }
.vst-row.put  .vst-fill { background: color-mix(in oklab, var(--red) 70%, transparent);   height: 100%; }
.vst-oi { color: var(--txt3); text-align: right; font-variant-numeric: tabular-nums; }

/* Dominance donut */
.viz-donut-wrap {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 14px;
  align-items: center;
}
.viz-donut { width: 80px; height: 80px; }
.vdo-num { font-family: var(--font-display); font-weight: 700; font-size: 14px; fill: var(--accent-teal); }
.vdo-lbl { font-family: var(--font-mono); font-size:14px; fill: var(--txt3); letter-spacing: 0.14em; }
.viz-donut-legend {
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt2);
}
.vdo-sw {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 2px;
  margin-right: 6px;
  vertical-align: middle;
}

/* ── Bloque locked (sección "Next phase" en el home) ──────── */
.dim-block.dim-locked {
  background: color-mix(in oklab, var(--bg) 94%, var(--ink));
  border-style: dashed;
  opacity: 0.92;
}
.dim-locked-head {
  margin-bottom: 14px;
}
.dim-locked-head h2 {
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--gold);
  letter-spacing: -0.018em;
}
.dim-locked-sub {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  margin-top: 4px;
}

/* ── Divider editorial: información complementaria ─────────── */
.body-divider {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 36px 0 22px;
}
.bd-line {
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border2), transparent);
}
.bd-eyebrow {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--accent-teal);
  white-space: nowrap;
}

/* Responsive */
@media (max-width: 900px) {
  .dim-block-grid { grid-template-columns: 1fr; }
  .dim-numbers { border-right: none; border-bottom: 1px dashed var(--border); padding-right: 0; padding-bottom: 14px; }
  .dim-visuals { grid-template-columns: 1fr; }
  .vst-cols { grid-template-columns: 1fr; }
  .dbh-title { font-size: 1.3rem; }
  .dbh-score { font-size: 2rem; }
}


/* ─── Fuentes más grandes en los dim-block (legibilidad) ─── */
.dim-block .sub-row {
  padding: 7px 0;
  gap: 10px;
}
.dim-block .sub-label {
  font-size: 0.84rem;
  letter-spacing: 0.04em;
  min-width: 110px;
  color: var(--txt2);
}
.dim-block .sub-val {
  font-size: 1rem;
  color: var(--ink-strong);
  font-weight: 500;
}
.dim-block .sub-sig {
  font-size: 0.9rem;
  padding: 2px 7px;
}
.dim-block .sub-mark {
  width: 14px;
  font-size: 0.92rem;
}
.dim-block .viz-label {
  font-size:0.84rem;
  letter-spacing: 0.06em;
}
.dim-block .viz-label strong {
  font-size: 0.96rem;
}
.dim-block .viz-ticks,
.dim-block .viz-ticks-5 {
  font-size:0.84rem;
}
.dim-block .vml-list { font-size:0.84rem; }
.dim-block .vml-name { font-size:0.84rem; }
.dim-block .vml-pct  { font-size: 0.84rem; }
.dim-block .vcp-bar {
  height: 36px;
  font-size:0.84rem;
}
.dim-block .vst-row {
  font-size:0.84rem;
  grid-template-columns: 68px 1fr 56px;
}
.dim-block .vst-head { font-size:0.84rem; padding: 5px 0; }
.dim-block .viz-cell { padding: 13px 15px; min-height: 92px; gap: 10px; }
.dim-block .viz-donut { width: 100px; height: 100px; }
.dim-block .vdo-num { font-size: 17px; }
.dim-block .vdo-lbl { font-size:14px; }
.dim-block .viz-donut-legend { font-size:0.84rem; }


/* ─── prelim-wrap: tablas preliminares dentro de Fase 2/3 ─── */
.prelim-wrap {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px dashed var(--border2);
}
.prelim-wrap + .prelim-wrap { margin-top: 14px; }
.prelim-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.prelim-tag {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.10em;
  color: var(--gold);
  padding: 4px 10px;
  background: color-mix(in oklab, var(--gold) 12%, transparent);
  border: 1px solid color-mix(in oklab, var(--gold) 30%, transparent);
  border-radius: 2px;
  text-transform: uppercase;
}
.prelim-note {
  font-family: var(--font-mono);
  font-size:0.84rem;
  color: var(--txt3);
  letter-spacing: 0.04em;
  font-style: italic;
}

/* ──────────────────────────────────────────────────────────────────
 * Magnus v2 · Technical indicators block
 * ────────────────────────────────────────────────────────────────── */

/* Warning chips row */
.warn-chips-row {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin: 0 0 12px 0;
}
.warn-chip {
  display: inline-block;
  font-size:14px; line-height: 1.4;
  padding: 4px 10px; border-radius: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.warn-chip.warn-warn {
  background: color-mix(in srgb, var(--gold) 25%, transparent);
  color: var(--gold);
  border: 1px solid color-mix(in srgb, var(--gold) 40%, transparent);
}
.warn-chip.warn-info {
  background: color-mix(in srgb, var(--txt3) 18%, transparent);
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 30%, transparent);
}

/* Bucket headers (Tendencia / Osciladores) */
.tech-bucket-head {
  font-size:14px; font-weight: 700;
  margin: 14px 0 8px 0;
  letter-spacing: 0.04em;
  color: var(--txt);
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
  padding-bottom: 4px;
}
.tech-bucket-head.bucket-osc { margin-top: 18px; }
.tb-tag {
  font-size:14px; font-weight: 500;
  margin-left: 8px;
  padding: 2px 6px; border-radius: 6px;
  text-transform: uppercase;
}
.tb-score {
  background: color-mix(in srgb, var(--green) 18%, transparent);
  color: var(--green);
}
.tb-visual {
  background: color-mix(in srgb, var(--txt3) 18%, transparent);
  color: var(--txt3);
}

/* Stack alignment table */
.tech-stack .stack-rows {
  display: grid; gap: 4px;
  margin-top: 6px;
}
.stack-row {
  display: grid; grid-template-columns: 16px 1fr auto;
  gap: 8px; align-items: center;
  font-size:14px;
}
.stack-mark { font-weight: 700; text-align: center; }
.stack-bull { color: var(--green); }
.stack-bear { color: var(--red); }
.stack-label { color: var(--txt2); font-family: var(--font-mono); }
.stack-vals { color: var(--txt3); font-size:14px; }
.stack-summary {
  font-size:14px; font-weight: 700;
  margin-left: 8px;
}
.stack-summary.all-bull { color: var(--green); }
.stack-summary.all-bear { color: var(--red); }
.stack-summary.mixed { color: var(--gold); }

/* Slope rows */
.slope-row .vml-name { color: var(--txt2); }
.slope-weight {
  font-size:14px; color: var(--txt3);
  margin-left: 6px; font-style: italic;
}

/* Extension chip */
.tech-extension { padding-bottom: 8px; }
.ext-val {
  font-size:14px; font-weight: 700;
  margin-left: 6px;
}
.ext-val.ext-oversold { color: var(--green); }
.ext-val.ext-overext { color: var(--red); }
.ext-val.ext-neutral { color: var(--gold); }
.ext-meta { font-size:14px; color: var(--txt2); margin-top: 4px; }
.ext-meta strong { color: var(--txt); }
.ext-meta-note { color: var(--txt3); font-style: italic; }

/* ADX strength */
.tech-adx .adx-extreme { color: var(--red); }
.tech-adx .adx-trending { color: var(--gold); }
.tech-adx .adx-chop { color: var(--txt3); }
.adx-note { font-size:14px; color: var(--txt3); margin-top: 2px; font-style: italic; }

/* ──────────────────────────────────────────────────────────────────
 * Magnus v2 · Editable weight inputs + font size bumps
 * ────────────────────────────────────────────────────────────────── */

/* Default scale fallback (cuando localStorage no fijó --root-fs).
   Los botones +/− del header setean --root-fs inline y sobreescriben este default. */
:root { --root-fs: 106%; }

/* Module-level slider: number input replaces <strong>. Right-aligned. */
.method-card-val {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  font-family: var(--font-mono);
  font-size: 1.05rem;
  font-weight: 600;
  color: var(--txt);
}
.method-card-val-input {
  font-family: var(--font-mono);
  font-size: 1.05rem;
  font-weight: 600;
  width: 3.4rem;
  padding: 4px 6px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 80%, transparent);
  color: var(--txt);
  border: 1px solid color-mix(in srgb, var(--txt3) 35%, transparent);
  border-radius: 4px;
  text-align: right;
  -moz-appearance: textfield;
}
.method-card-val-input:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--green) 18%, transparent);
}
.method-card-val-input::-webkit-outer-spin-button,
.method-card-val-input::-webkit-inner-spin-button {
  -webkit-appearance: none; margin: 0;
}
.method-card-val-suffix {
  color: var(--txt3);
  font-size: 0.92rem;
}

/* Sub-weights table — wider, editable pct cell, bigger fonts. */
.method-weights-table { font-size: 0.92rem; line-height: 1.6; }
.method-weights-table .mw-name { font-size: 0.94rem; color: var(--txt); }
.method-weights-title { font-size: 0.92rem; letter-spacing: 0.06em; }
.mw-sum { font-family: var(--font-mono); font-weight: 700; color: var(--green); }

/* Per-row pct cell: number input + slider, compact horizontal layout. */
.mw-pct {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 195px;
  padding-right: 6px;
}
.mw-pct-input {
  font-family: var(--font-mono);
  font-size: 0.94rem;
  width: 3rem;
  padding: 2px 4px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 75%, transparent);
  color: var(--txt);
  border: 1px solid color-mix(in srgb, var(--txt3) 28%, transparent);
  border-radius: 3px;
  text-align: right;
  -moz-appearance: textfield;
}
.mw-pct-input::-webkit-outer-spin-button,
.mw-pct-input::-webkit-inner-spin-button {
  -webkit-appearance: none; margin: 0;
}
.mw-pct-input:focus {
  outline: none;
  border-color: var(--green);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--green) 18%, transparent);
}
.mw-pct-suffix {
  color: var(--txt3);
  font-size: 0.85rem;
}
.mw-pct-slider {
  flex: 1;
  height: 6px;
  cursor: pointer;
  appearance: none;
  background: color-mix(in srgb, var(--txt3) 25%, transparent);
  border-radius: 3px;
  outline: none;
}
.mw-pct-slider::-webkit-slider-thumb {
  appearance: none;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--green);
  border: 2px solid var(--bg2, #0f131d);
  cursor: pointer;
}
.mw-pct-slider::-moz-range-thumb {
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--green);
  border: 2px solid var(--bg2, #0f131d);
  cursor: pointer;
}

.mw-pct.mw-pct-zero .mw-pct-input { color: var(--txt3); }
.mw-pct.mw-pct-active .mw-pct-input { color: var(--green); font-weight: 700; }

/* Bump small fonts in the dim-block visualizations */
.viz-label { font-size: 0.92rem; }
.viz-ticks { font-size:0.84rem; }

/* Magnus v2 warn chips — make them bigger so they don't get lost */
.warn-chip { font-size: 0.84rem; padding: 5px 12px; }

/* Magnus v2 bucket headers */
.tech-bucket-head { font-size: 0.96rem; }
.tb-tag { font-size:0.84rem; padding: 3px 8px; }

/* Magnus v2 stack rows */
.stack-row { font-size: 0.86rem; }
.stack-label { font-size: 0.85rem; }
.stack-vals { font-size:0.84rem; }
.stack-summary { font-size: 0.86rem; }

/* Magnus v2 slope rows */
.slope-row .vml-name { font-size: 0.86rem; }
.slope-weight { font-size:0.84rem; }

/* Magnus v2 extension chip + adx */
.ext-meta { font-size: 0.86rem; }
.ext-meta-note { font-size:0.84rem; }
.tech-extension .ext-val { font-size: 1rem; }
.tech-adx .adx-note { font-size: 0.84rem; }

/* Sub-weight note column — was too small */
.method-weights-table .mw-note { font-size: 0.84rem; color: var(--txt2); }
.method-weights-table .mw-mark { font-size: 1rem; }

/* method card formula / src lines */
.method-src, .method-formula { font-size: 0.88rem; }
.method-card-name { font-size: 1rem; }

/* Phase badges */
.phase-badge.small { font-size:0.84rem; padding: 3px 8px; }

/* ──────────────────────────────────────────────────────────────────
 * Magnus v2 Phase 1.B · Layout 2×2 + Lab Viz · sin emojis
 * ────────────────────────────────────────────────────────────────── */

/* Thin score bar — solo para el dim-block técnico */
.dim-block-bar.dim-block-bar-thin .reg-chip-v2-bar { height: 4px; }
.dim-block-bar.dim-block-bar-thin .reg-chip-v2-bar-labels {
  font-size:0.84rem; margin-top: 3px;
}

/* Grid 2 cols × 2 rows internos */
.dim-block-tech-grid {
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(360px, 1.6fr);
  grid-template-rows: auto auto;
  gap: 14px 18px;
  padding: 12px 0;
}
@media (max-width: 900px) {
  .dim-block-tech-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto auto;
  }
}

/* Sub-bucket box — uno por celda */
.tech-sub-bucket {
  background: color-mix(in srgb, var(--card2, #161b2a) 60%, transparent);
  border: 1px solid color-mix(in srgb, var(--border, rgba(255,255,255,0.08)) 100%, transparent);
  border-radius: 4px;
  padding: 10px 12px 12px;
}

/* Bucket header — sin emoji, marker geométrico ▌ */
.tsb-head {
  display: flex; align-items: center; gap: 8px;
  font-size:0.84rem; font-weight: 700;
  letter-spacing: 0.10em;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 20%, transparent);
  color: var(--txt);
}
.tsb-marker {
  display: inline-block;
  font-size: 1.05rem;
  line-height: 0.7;
  letter-spacing: -0.5em;
  margin-right: 2px;
}
.tsb-marker-trend { color: var(--green); }
.tsb-marker-osc { color: var(--cyan); }
.tsb-tag {
  font-size:0.84rem;
  padding: 2px 7px;
  border-radius: 3px;
  letter-spacing: 0.06em;
  font-weight: 600;
  margin-left: auto;
}
.tsb-tag-score {
  background: color-mix(in srgb, var(--green) 18%, transparent);
  color: var(--green);
  border: 1px solid color-mix(in srgb, var(--green) 30%, transparent);
}
.tsb-tag-visual {
  background: color-mix(in srgb, var(--txt3) 18%, transparent);
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
}

/* Body of each sub-bucket */
.tsb-body { display: block; }
.tsb-nums-trend .tsb-body, .tsb-nums-osc .tsb-body {
  font-size: 0.86rem;
}
.tsb-viz-trend .tsb-body .viz-cell,
.tsb-viz-osc .tsb-body .viz-cell {
  margin-bottom: 10px;
}

/* Warning chips · sin emoji · variantes por categoría */
.warn-chip {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 0.84rem; font-weight: 600;
  letter-spacing: 0.02em;
  padding: 6px 12px;
  border-radius: 3px;
  border: 1px solid;
}
.warn-chip.warn-warn,
.warn-chip.warn-cat-oversold {
  background: color-mix(in srgb, var(--gold) 18%, transparent);
  color: var(--gold);
  border-color: color-mix(in srgb, var(--gold) 45%, transparent);
}
.warn-chip.warn-cat-overextended {
  background: color-mix(in srgb, var(--red) 14%, transparent);
  color: var(--red);
  border-color: color-mix(in srgb, var(--red) 40%, transparent);
}
.warn-chip.warn-cat-stage4 {
  background: color-mix(in srgb, var(--red) 12%, transparent);
  color: var(--red);
  border-left: 3px solid var(--red);
  border-radius: 0 3px 3px 0;
}
.warn-chip.warn-cat-stage2 {
  background: color-mix(in srgb, var(--green) 12%, transparent);
  color: var(--green);
  border-left: 3px solid var(--green);
  border-radius: 0 3px 3px 0;
}

/* SMA viz · estilos compartidos */
.sma-viz .sma-svg { width: 100%; height: auto; display: block; margin-top: 6px; }
.sma-viz-sublbl { font-size:0.84rem; color: var(--txt3); font-weight: 500; margin-left: 6px; }
.sma-legend { font-size:0.84rem; margin-top: 6px; color: var(--txt2); letter-spacing: 0.02em; }
.sma-leg-pct { font-size:0.84rem; opacity: 0.85; }
.stage-desc { font-size:0.84rem; margin-top: 6px; color: var(--txt2); font-style: italic; }
.bar-sigma { font-size:0.84rem; color: var(--txt3); }
.bar-dist { font-size:0.84rem; color: var(--txt2); margin-left: 8px; }

/* ─────────────── Laboratorio · Visualizaciones SMA ─────────────── */
.lab-viz-section {
  margin: 36px 0 24px;
  padding: 18px 22px 22px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--bg3, #161b2a) 60%, transparent), transparent);
  border: 1px solid color-mix(in srgb, var(--border, rgba(255,255,255,0.08)) 100%, transparent);
  border-radius: 6px;
}
.lab-viz-header { margin-bottom: 16px; }
.lab-viz-h {
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin: 0;
  color: var(--txt);
}
.lab-viz-sub {
  font-size: 0.86rem;
  color: var(--txt3);
  margin-top: 6px;
  letter-spacing: 0.01em;
}
.lab-viz-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
  gap: 14px;
}
.lab-viz-card {
  background: color-mix(in srgb, var(--card2, #161b2a) 70%, transparent);
  border: 1px solid color-mix(in srgb, var(--border, rgba(255,255,255,0.08)) 100%, transparent);
  border-radius: 4px;
  padding: 12px;
  display: flex; flex-direction: column;
  transition: border-color 0.15s ease;
}
.lab-viz-card.selected {
  border-color: var(--green);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--green) 25%, transparent);
}
.lab-viz-head {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 6px;
}
.lab-viz-title {
  font-size: 0.96rem; font-weight: 700;
  color: var(--txt);
  letter-spacing: 0.02em;
  flex: 1;
}
.lab-viz-btn {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 30%, transparent);
  padding: 4px 10px;
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.15s ease;
}
.lab-viz-btn:hover {
  border-color: var(--green);
  color: var(--green);
}
.lab-viz-card.selected .lab-viz-btn {
  background: color-mix(in srgb, var(--green) 18%, transparent);
  color: var(--green);
  border-color: var(--green);
  cursor: default;
}
.lab-viz-desc {
  font-size:0.84rem;
  color: var(--txt3);
  margin-bottom: 10px;
  letter-spacing: 0.01em;
}
.lab-viz-body { flex: 1; min-height: 200px; }
.lab-viz-body .viz-cell { padding: 0; background: transparent; border: none; }
.lab-viz-body .viz-label { font-size: 0.84rem; margin-bottom: 4px; }

/* ──────────────────────────────────────────────────────────────────
 * Magnus v2 · SMA viz inline tab bar (dentro del bucket Tendencia)
 * ────────────────────────────────────────────────────────────────── */
.sma-inline-tabbar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 4px 0 10px;
  padding-bottom: 8px;
  border-bottom: 1px dashed color-mix(in srgb, var(--txt3) 25%, transparent);
}
.sma-inline-tabbar-label {
  font-size:0.84rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt3);
  font-family: var(--font-mono);
  flex-shrink: 0;
}
.sma-inline-tabs {
  display: flex;
  flex: 1;
  gap: 4px;
  flex-wrap: wrap;
}
.sma-inline-tab {
  font-family: inherit;
  font-size:0.84rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  padding: 4px 10px;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 28%, transparent);
  border-radius: 3px;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.12s ease;
}
.sma-inline-tab:hover {
  border-color: color-mix(in srgb, var(--cyan) 60%, transparent);
  color: var(--cyan);
}
.sma-inline-tab.active {
  background: color-mix(in srgb, var(--cyan) 18%, transparent);
  color: var(--cyan);
  border-color: var(--cyan);
  font-weight: 700;
}

/* ──────────────────────────────────────────────────────────────────
 * Magnus v2 Phase 1.B (v2) · Layout 2-col · Motor del Magnus Score
 * ────────────────────────────────────────────────────────────────── */

/* 2-col grid: LEFT motor + RIGHT indicadores · punto intermedio entre 1:1.9 (original) y 1.15:1 (compacto) */
.dim-block-tech-cols {
  display: grid;
  grid-template-columns: minmax(380px, 1fr) minmax(440px, 1.4fr);
  gap: 18px;
  padding: 12px 0;
}
@media (max-width: 1200px) {
  .dim-block-tech-cols { grid-template-columns: minmax(340px, 1fr) minmax(400px, 1.3fr); }
}
@media (max-width: 900px) {
  .dim-block-tech-cols { grid-template-columns: 1fr; }
}

.tech-col {
  background: color-mix(in srgb, var(--card2, #161b2a) 55%, transparent);
  border: 1px solid color-mix(in srgb, var(--border, rgba(255,255,255,0.08)) 100%, transparent);
  border-radius: 4px;
  padding: 12px 14px 14px;
}
.tech-col-score {
  border-left: 3px solid color-mix(in srgb, var(--green) 70%, transparent);
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--green) 5%, transparent) 0%,
      color-mix(in srgb, var(--green) 2%, transparent) 100%),
    color-mix(in srgb, var(--card2, #161b2a) 55%, transparent);
}
.tech-col-context {
  border-left: 3px solid color-mix(in srgb, var(--cyan) 50%, transparent);
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--cyan) 4%, transparent) 0%,
      color-mix(in srgb, var(--cyan) 2%, transparent) 100%),
    color-mix(in srgb, var(--card2, #161b2a) 55%, transparent);
}

.tech-col-nums { margin-bottom: 14px; }
.tech-col-viz .viz-cell { margin-bottom: 12px; }
.tech-col-viz .viz-cell:last-child { margin-bottom: 0; }

/* Header del column (tsb-head) — actualizado */
.tsb-meta {
  font-size:0.84rem;
  color: var(--txt3);
  font-style: italic;
  letter-spacing: 0.04em;
  margin-left: auto;
}

/* Contributing factor rows (LEFT column) */
.contrib-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: baseline;
  gap: 10px;
  padding: 5px 0;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 12%, transparent);
  font-size: 0.86rem;
}
.contrib-row:last-child { border-bottom: none; }
.contrib-name {
  color: var(--txt);
  font-weight: 500;
}
.contrib-weight {
  display: inline-block;
  font-family: var(--font-mono);
  font-size:0.84rem;
  margin-left: 6px;
  padding: 1px 7px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--green) 18%, transparent);
  color: var(--green);
  font-weight: 700;
}
.contrib-weight.zero {
  background: color-mix(in srgb, var(--txt3) 14%, transparent);
  color: var(--txt3);
}
.contrib-val {
  font-family: var(--font-mono);
  font-weight: 600;
  color: var(--txt);
  text-align: right;
}
.contrib-val.bull { color: var(--green); }
.contrib-val.bear { color: var(--red); }
.contrib-row.inactive {
  opacity: 0.65;
}
.contrib-row.inactive .contrib-name { color: var(--txt2); }
.contrib-empty {
  padding: 10px 6px;
  font-size: 0.86rem;
  color: var(--txt3);
  font-style: italic;
}

/* Section divider inside the right column */
.context-divider {
  margin: 14px 0 6px;
  padding: 4px 0;
  font-size:0.84rem;
  letter-spacing: 0.14em;
  color: var(--txt3);
  border-top: 1px solid color-mix(in srgb, var(--txt3) 18%, transparent);
  border-bottom: 1px dashed color-mix(in srgb, var(--txt3) 18%, transparent);
  text-align: center;
  font-weight: 700;
}

/* Empty data note */
.empty-note {
  padding: 12px 6px;
  font-size: 0.86rem;
  color: var(--txt3);
  font-style: italic;
}

/* ─── Magnus Trend Strength Meter ─────────────────────────────────────── */
.magnus-meter .meter-bar {
  position: relative;
  height: 18px;
  margin: 8px 0 12px;
  border-radius: 4px;
  overflow: hidden;
  background: color-mix(in srgb, var(--bg2, #0f131d) 60%, transparent);
}
.magnus-meter .meter-zones {
  position: absolute; inset: 0;
  display: flex;
  opacity: 0.25;
}
.magnus-meter .meter-zone { flex: 1; }
.magnus-meter .meter-zone.z-strong-bear { background: var(--red); }
.magnus-meter .meter-zone.z-mild-bear   { background: var(--gold); }
.magnus-meter .meter-zone.z-neutral     { background: var(--txt3); }
.magnus-meter .meter-zone.z-mild-bull   { background: color-mix(in srgb, var(--green) 60%, var(--gold)); }
.magnus-meter .meter-zone.z-strong-bull { background: var(--green); }
.magnus-meter .meter-seg {
  position: absolute;
  top: 0; height: 100%;
  border-right: 1px solid rgba(0,0,0,0.30);
  opacity: 0.75;
}
.magnus-meter .meter-marker {
  position: absolute;
  top: -3px; bottom: -3px;
  width: 3px;
  background: var(--txt);
  box-shadow: 0 0 0 1px rgba(0,0,0,0.55);
  transform: translateX(-1.5px);
}
.magnus-meter .meter-list {
  display: grid;
  gap: 4px;
  font-size:0.84rem;
}
.magnus-meter .meter-row {
  display: grid;
  grid-template-columns: 1fr 36px 50px 14px 60px;
  align-items: baseline;
  gap: 6px;
  font-family: var(--font-mono);
}
.magnus-meter .meter-key { color: var(--txt2); font-family: inherit; font-size:0.84rem; }
.magnus-meter .meter-w { color: var(--txt3); text-align: right; }
.magnus-meter .meter-val { font-weight: 700; text-align: right; }
.magnus-meter .meter-arrow { color: var(--txt3); text-align: center; }
.magnus-meter .meter-contrib { color: var(--txt); font-weight: 700; text-align: right; }

/* ─── Regime Quadrant ─────────────────────────────────────────────────── */
.viz-cell.quadrant .sma-svg { width: 100%; height: auto; }

/* ─── Slope Composite Strength viz (concepto: dirección + fuerza) ─────── */
.slope-strength .ss-headline {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 6px 0 8px;
}
.slope-strength .ss-label {
  font-size: 0.94rem;
  font-weight: 800;
  letter-spacing: 0.06em;
}
.slope-strength .ss-score {
  font-family: var(--font-mono);
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--txt);
}
.slope-strength .ss-den {
  font-size:0.84rem;
  color: var(--txt3);
  font-weight: 500;
}
.slope-strength .ss-bar {
  position: relative;
  display: flex;
  height: 12px;
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 8px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 60%, transparent);
}
.slope-strength .ss-bar-zone {
  flex: 1;
  opacity: 0.22;
}
.slope-strength .ss-bar-zone.z-strong-bear { background: var(--red); }
.slope-strength .ss-bar-zone.z-mild-bear   { background: var(--gold); }
.slope-strength .ss-bar-zone.z-neutral     { background: var(--txt3); }
.slope-strength .ss-bar-zone.z-mild-bull   { background: color-mix(in srgb, var(--green) 60%, var(--gold)); }
.slope-strength .ss-bar-zone.z-strong-bull { background: var(--green); }
.slope-strength .ss-marker {
  position: absolute;
  top: -3px; bottom: -3px;
  width: 3px;
  transform: translateX(-1.5px);
  box-shadow: 0 0 0 1px rgba(0,0,0,0.5);
  border-radius: 1px;
}
.slope-strength .ss-story {
  font-size: 0.86rem;
  color: var(--txt2);
  margin: 6px 0 8px;
}
.ss-tiers {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  font-family: var(--font-mono);
  font-size:0.84rem;
}
.ss-tier {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 70%, transparent);
  border: 1px solid color-mix(in srgb, var(--txt3) 18%, transparent);
}

/* ─── Mapa del Ciclo Magnus · título centrado + prominent ───────────── */
.viz-cell.quadrant .quadrant-title {
  text-align: center;
  padding: 16px 12px 18px;
  margin-bottom: 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 14%, transparent);
}
.quadrant-title-main {
  font-size: 1.20rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--txt2);
  font-family: var(--font-mono);
}
.quadrant-title-stage {
  margin-top: 12px;
  font-size: 1.55rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  font-family: inherit;
}

/* ─── Precio + Medias Móviles overlay ──────────────────────────────────── */
.tech-col-chart { margin-bottom: 14px; }
.viz-cell.ma-overlay {
  padding: 10px 12px 12px;
}
.ma-overlay .mao-header,
.slope-strength .mao-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 4px;
}
.ma-overlay .mao-tf-bar {
  display: flex;
  gap: 4px;
}
.mao-tf {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 3px 9px;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.12s ease;
}
.mao-tf:hover {
  border-color: color-mix(in srgb, var(--cyan) 60%, transparent);
  color: var(--cyan);
}
.mao-tf.active {
  background: color-mix(in srgb, var(--cyan) 18%, transparent);
  color: var(--cyan);
  border-color: var(--cyan);
}
.ma-overlay .mao-svg {
  width: 100%;
  height: auto;
  display: block;
  background: color-mix(in srgb, var(--bg2, #0f131d) 35%, transparent);
  border-radius: 3px;
  margin-top: 6px;
}
.ma-overlay .mao-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
  justify-content: center;
}
.ma-overlay .mao-legend-note {
  margin-top: 8px;
  text-align: center;
  font-size:0.84rem;
  color: var(--txt3);
  font-style: italic;
  letter-spacing: 0.01em;
}
.mao-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 9px;
  font-family: var(--font-mono);
  font-size:0.84rem;
  background: color-mix(in srgb, var(--bg2, #0f131d) 55%, transparent);
  border: 1px solid color-mix(in srgb, var(--txt3) 18%, transparent);
  border-radius: 3px;
}
.mao-chip.mao-chip-price {
  border-color: color-mix(in srgb, var(--txt) 30%, transparent);
}
.mao-chip-swatch {
  width: 18px;
  height: 4px;
  display: inline-block;
  flex-shrink: 0;
}
.mao-chip-name {
  color: var(--txt2);
  font-weight: 600;
}
.mao-chip-val {
  color: var(--txt);
  font-weight: 700;
}
.mao-chip-delta {
  font-weight: 700;
  margin-left: 2px;
}

/* ─── Propuestas Tendencia (tab temporal) ────────────────────────────── */
.trend-proposals-wrap {
  max-width: 1280px;
  margin: 0 auto;
  padding: 20px 16px 40px;
}
.trend-proposals-wrap h2 {
  font-size: 1.4rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--txt);
  margin-bottom: 8px;
}
.trend-proposals-intro {
  font-size: 0.92rem;
  color: var(--txt2);
  margin-bottom: 24px;
  line-height: 1.5;
  max-width: 900px;
}
.proposal-tier {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  color: var(--txt3);
  margin: 22px 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 22%, transparent);
}
.proposal-row {
  margin-bottom: 18px;
  background: color-mix(in srgb, var(--card2, #161b2a) 55%, transparent);
  border: 1px solid color-mix(in srgb, var(--border, rgba(255,255,255,0.08)) 100%, transparent);
  border-radius: 5px;
  padding: 12px 16px 16px;
}
.proposal-row-head {
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--txt);
  margin-bottom: 10px;
  letter-spacing: 0.02em;
}
.proposal-row-head .proposal-row-tag {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  color: var(--txt3);
  margin-left: 8px;
}
.proposal-row-cells {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
@media (max-width: 900px) {
  .proposal-row-cells { grid-template-columns: 1fr; }
}
.proposal-cell {
  position: relative;
  background: color-mix(in srgb, var(--bg2, #0f131d) 50%, transparent);
  border-radius: 4px;
  padding: 12px 14px 14px;
  border: 1px solid color-mix(in srgb, var(--txt3) 12%, transparent);
}
.proposal-cell-label {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  color: var(--txt3);
  margin-bottom: 8px;
  text-transform: uppercase;
}

/* ─── Bloque de explicación enriquecida en cards (3 sub-bloques) ──────────── */
.ss-description {
  font-size: 0.92rem;
  line-height: 1.55;
  color: var(--txt2);
  background: color-mix(in srgb, var(--bg2, #0f131d) 50%, transparent);
  padding: 10px 12px;
  border-radius: 3px;
  border-left: 2px solid color-mix(in srgb, var(--cyan) 40%, transparent);
  margin: 8px 0 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ss-description strong { color: var(--txt); font-weight: 700; }
.ss-description em { color: var(--gold); font-style: italic; }

.ss-desc-block {
  font-size: 0.92rem;
  line-height: 1.55;
}
.ss-desc-h {
  display: block;
  font-size:0.84rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--cyan);
  font-weight: 700;
  margin-bottom: 3px;
}
.ss-desc-aside {
  margin-top: 2px;
  padding-top: 8px;
  border-top: 1px dashed color-mix(in srgb, var(--txt3) 22%, transparent);
  font-size: 0.88rem;
  color: var(--txt3);
}
.ss-desc-aside .ss-desc-h { color: var(--txt3); }

/* Descripciones en la columna izquierda (legacy · no usar) */
.left-viz-desc {
  margin: 6px 0 10px;
  font-size: 0.88rem;
  line-height: 1.5;
}

/* Pie técnico al final de cada card de la columna izquierda (Mapa / Stack / Slope)
   Estilo distinto al .ss-description (que va arriba con border-left cyan en derecha):
   aquí va al pie, sin background propio, con label-clave en grid 2-col */
.left-viz-foot {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px dashed color-mix(in srgb, var(--txt3) 25%, transparent);
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 0.88rem;
  line-height: 1.55;
  color: var(--txt2);
}
.left-viz-foot-row {
  display: grid;
  grid-template-columns: 95px 1fr;
  gap: 12px;
  align-items: baseline;
}
.lvf-label {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--green);
  font-weight: 700;
  opacity: 0.85;
}
.lvf-text {
  color: var(--txt2);
}
.lvf-text strong {
  color: var(--txt);
  font-weight: 700;
}
@media (max-width: 640px) {
  .left-viz-foot-row { grid-template-columns: 1fr; gap: 2px; }
}

/* MA Overlay full-width (primer item de INDICADORES DE TENDENCIA, antes de los slots) */
.tech-trend-ma-row { margin-bottom: 14px; }

/* Phase 3.4 · venue separation · ETHA (institucional) vs Deribit (crypto-nativo) */
.venue-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  margin: 20px 0 12px;
  border-radius: 4px;
  border-left: 4px solid transparent;
}
.venue-banner:first-child { margin-top: 4px; }
.venue-banner-etha {
  background: color-mix(in srgb, var(--gold) 12%, transparent);
  border-left-color: var(--gold);
}
.venue-banner-deribit {
  background: color-mix(in srgb, var(--cyan) 12%, transparent);
  border-left-color: var(--cyan);
}
.venue-tag {
  font-family: var(--font-mono);
  font-weight: 800;
  font-size: 0.9rem;
  width: 28px;
  height: 28px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0;
}
.venue-banner-etha .venue-tag {
  background: color-mix(in srgb, var(--gold) 30%, transparent);
  color: var(--gold);
}
.venue-banner-deribit .venue-tag {
  background: color-mix(in srgb, var(--cyan) 30%, transparent);
  color: var(--cyan);
}
.venue-name {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: 0.1em;
}
.venue-banner-etha    .venue-name { color: var(--gold); }
.venue-banner-deribit .venue-name { color: var(--cyan); }
.venue-sub {
  font-size:0.84rem;
  color: var(--txt2);
  letter-spacing: 0.02em;
}

/* Border lateral por venue en cada card del MOTOR (refuerzo visual) */
.venue-section { display: flex; flex-direction: column; gap: 12px; }
.venue-section .viz-cell {
  border-left: 3px solid transparent;
}
.venue-etha    .viz-cell { border-left-color: color-mix(in srgb, var(--gold) 40%, transparent); }
.venue-deribit .viz-cell { border-left-color: color-mix(in srgb, var(--cyan) 40%, transparent); }

/* Phase 4.0 · Sticky header de dim expandida + tiles disabled F2/F3 + comentario dinámico */
.dim-sticky-head {
  position: sticky;
  top: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 24px;
  background: color-mix(in srgb, var(--bg, #0a0d11) 96%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
  margin-bottom: 12px;
}
.dim-back {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 6px 12px;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 30%, transparent);
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.12s ease;
}
.dim-back:hover {
  border-color: var(--cyan);
  color: var(--cyan);
  background: color-mix(in srgb, var(--cyan) 12%, transparent);
}
.dim-switcher {
  display: inline-flex;
  gap: 3px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 60%, transparent);
  padding: 3px;
  border-radius: 4px;
  margin-left: auto;
}
.dim-switch-btn {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 4px 12px;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.12s ease;
}
.dim-switch-btn:hover {
  border-color: var(--cyan);
  color: var(--cyan);
}
.dim-switch-btn.active {
  background: color-mix(in srgb, var(--cyan) 18%, transparent);
  color: var(--cyan);
  border-color: var(--cyan);
}

/* Mobile: stack vertical, sticky-head se compacta */
@media (max-width: 768px) {
  .dim-sticky-head { flex-wrap: wrap; padding: 8px 12px; gap: 8px; }
  .dim-switcher { margin-left: 0; width: 100%; justify-content: stretch; }
  .dim-switch-btn { flex: 1; padding: 6px 6px; }
}

/* Comentario dinámico debajo del score en cada tile F1 */
.mb-tile-summary {
  margin-top: 6px;
  font-size:14px;
  line-height: 1.4;
  color: var(--txt2);
  font-family: var(--font-mono);
  opacity: 0.85;
}

/* Tiles F2/F3 deshabilitados con tag Próximamente · cursor not-allowed */
.mb-tile.coming-soon {
  cursor: not-allowed;
  opacity: 0.55;
  filter: grayscale(0.4);
}
.mb-tile.coming-soon:hover {
  transform: none;
  opacity: 0.55;
}
.mb-tile.coming-soon .mb-tile-cat {
  color: var(--gold);
  font-size:14px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* Phase 3.7/3.8 · Sparkline + gauge + vote-bar para INDICADORES Sentimiento */
.viz-cell .spark-svg,
.viz-cell .gauge-svg,
.viz-cell .vote-bar-svg {
  display: block;
  width: 100%;
  height: auto;
  max-height: 200px;
  margin: 10px 0 6px;
  border-radius: 3px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 35%, transparent);
}
.viz-cell .gauge-svg,
.viz-cell .vote-bar-svg {
  background: transparent;
}

/* Pill selector timeframe (1m/3m/6m/1y) por card del Sentimiento */
.sent-tf-bar {
  display: flex;
  gap: 4px;
  width: fit-content;
  margin: 6px 0 4px auto; /* margin-left:auto -> right-align, sync with Technical/Options */
}
.sent-tf {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 3px 9px;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.12s ease;
}
.sent-tf:hover {
  border-color: color-mix(in srgb, var(--cyan) 60%, transparent);
  color: var(--cyan);
}
.sent-tf.active {
  background: color-mix(in srgb, var(--cyan) 18%, transparent);
  color: var(--cyan);
  border-color: var(--cyan);
}

/* Phase 3.5 · Unusual Activity table + Samples Opciones pestaña */
.unusual-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.84rem;
  margin: 8px 0;
}
.unusual-table th {
  text-align: left;
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt3);
  padding: 6px 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 22%, transparent);
}
.unusual-table td {
  padding: 6px 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 10%, transparent);
}
.unusual-table tr:hover td {
  background: color-mix(in srgb, var(--cyan) 6%, transparent);
}

/* Phase 3.4 · selectors para el chart GEX */
.gex-controls {
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: flex-end;
  margin: 4px 6px 8px;
  flex-wrap: wrap;
}
.gex-maturity-bar, .gex-zoom-toggle {
  display: inline-flex;
  gap: 3px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 60%, transparent);
  padding: 3px;
  border-radius: 4px;
}
.gex-tf {
  font-family: var(--font-mono);
  font-size:0.84rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 3px 9px;
  background: transparent;
  color: var(--txt2);
  border: 1px solid color-mix(in srgb, var(--txt3) 25%, transparent);
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.12s ease;
}
.gex-tf:hover {
  border-color: color-mix(in srgb, var(--cyan) 60%, transparent);
  color: var(--cyan);
}
.gex-tf.active {
  background: color-mix(in srgb, var(--cyan) 18%, transparent);
  color: var(--cyan);
  border-color: var(--cyan);
}

/* Phase 3.3 · charts GEX profile + Skew smile (motor de Opciones + pestaña Propuestas) */
.gex-profile-svg, .skew-smile-svg {
  width: 100%;
  height: auto;
  max-height: 280px;
  display: block;
  background: color-mix(in srgb, var(--bg2, #0f131d) 35%, transparent);
  border-radius: 3px;
  margin: 6px 0 8px;
}

/* Pestaña Propuestas Visuales */
.propuestas-header { padding: 18px 22px 8px; }
.propuestas-header h2 {
  font-family: var(--font-mono);
  font-size: 1.35rem;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}
.propuestas-intro {
  font-size: 0.92rem;
  line-height: 1.6;
  color: var(--txt2);
  margin-bottom: 18px;
}
.propuesta-slot {
  max-width: 900px;
  margin: 0 auto 18px;
  padding: 0 22px;
}

/* ─── ETF Options · dual panel (ETHA institucional + Deribit crypto-nativo) ─── */
/* .etf-compare-bar y .etf-dual-pane eliminadas en Phase 3.1 — reemplazadas por
   dim-block-tech-cols (clon de Análisis Técnico): MOTOR | INDICADORES */

/* Métricas duales Deribit (Skew + IV) */
.etf-dual-metric {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 6px;
}
.edm-cell {
  text-align: center;
  padding: 8px 6px;
  background: color-mix(in srgb, var(--bg2, #0f131d) 50%, transparent);
  border-radius: 3px;
}
.edm-lbl {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--txt3);
}
.edm-val {
  font-family: var(--font-mono);
  font-size: 1.3rem;
  font-weight: 700;
  margin: 4px 0 2px;
}
.edm-sub {
  font-size:0.84rem;
  color: var(--txt3);
}


/* Pestañas dimensionales · wrapper · usa el mismo ancho que el tab main */
.dim-tab-wrap {
  width: 100%;
  margin: 0;
  padding: 18px 0 60px;
}

/* Sección de propuestas dentro de Análisis Técnico */
.dim-tab-prop-section {
  margin-top: 34px;
  padding-top: 22px;
  border-top: 1px dashed color-mix(in srgb, var(--txt3) 30%, transparent);
}
.dim-tab-prop-title {
  font-family: var(--font-mono);
  font-size: 1.15rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 8px;
  color: var(--cyan);
}
.dim-tab-prop-intro {
  font-size: 0.95rem;
  line-height: 1.6;
  color: var(--txt2);
  margin-bottom: 18px;
}
.indicator-prop-slot {
  margin-bottom: 18px;
}
.indicator-prop-slot:last-child { margin-bottom: 0; }

/* Tiles del banner Magnus Sentiment: cursor pointer + hover en los activos */
.mb-tile-link:not(.locked) {
  cursor: pointer;
  transition: border-color 0.15s ease, transform 0.15s ease, background 0.15s ease;
}
.mb-tile-link:not(.locked):hover {
  border-color: var(--cyan);
  transform: translateY(-1px);
  background: color-mix(in srgb, var(--cyan) 6%, var(--card2, #161b2a));
}

/* ─── Ficha vertical · indicador de tendencia (signal + chart + key ideas + ⓘ modal) ─── */
.viz-cell.trend-ficha {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 16px 14px;
}
.trend-ficha-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.trend-ficha-title {
  font-family: var(--font-mono);
  font-size: 0.86rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--txt);
  line-height: 1.3;
}
.trend-ficha-sub {
  display: inline-block;
  margin-left: 8px;
  font-size:0.84rem;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: var(--txt3);
  text-transform: none;
}
.trend-ficha-signal {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-top: 2px;
}
.trend-ficha-signal .ss-label {
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.trend-ficha-signal .ss-score {
  font-family: var(--font-mono);
  font-size: 1.05rem;
  font-weight: 700;
}
.trend-ficha-signal .ss-den {
  font-size:0.84rem;
  font-weight: 400;
  color: var(--txt3);
}
.trend-ficha-chart {
  margin: 4px -4px 0;
}
.trend-ficha-chart .viz-cell.ma-overlay {
  background: transparent;
  border: none;
  padding: 0;
}

/* Botón ⓘ para abrir modal de metodología */
.ficha-info-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--cyan) 35%, transparent);
  color: var(--cyan);
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 6px 11px;
  border-radius: 3px;
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
  flex-shrink: 0;
}
.ficha-info-btn:hover {
  background: color-mix(in srgb, var(--cyan) 14%, transparent);
  border-color: var(--cyan);
}
.ficha-info-icon { font-size: 1rem; line-height: 1; }
.ficha-info-lbl { font-weight: 600; }

/* Key ideas (bullets al pie de la ficha) */
.key-ideas {
  margin-top: 6px;
  padding-top: 10px;
  border-top: 1px dashed color-mix(in srgb, var(--txt3) 22%, transparent);
}
.key-ideas-title {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 0.85;
  font-weight: 700;
  margin-bottom: 7px;
}
.key-ideas-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 0.9rem;
  line-height: 1.55;
  color: var(--txt2);
}
.key-ideas-list li {
  position: relative;
  padding-left: 14px;
}
.key-ideas-list li::before {
  content: '·';
  position: absolute;
  left: 4px;
  color: var(--gold);
  opacity: 0.6;
  font-weight: 700;
}
.key-ideas-list strong { color: var(--txt); font-weight: 700; }
.key-ideas-list em { color: var(--gold); font-style: italic; }

/* Chart proposal · SVG ocupa todo el ancho, chips compactos a la derecha */
.viz-cell.ma-overlay.prop-chart {
  display: flex;
  flex-direction: column;
  padding: 8px 4px 8px 4px;
}
.prop-chart .mao-header {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 4px;
  padding: 0 6px;
}
.prop-chart-body {
  flex: 1 1 auto;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  min-height: 0;
}
.prop-chart .prop-svg {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  height: auto;
  display: block;
}
.prop-chart .mao-chips.prop-chips-side {
  flex: 0 0 auto;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 4px;
  margin: 0;
  padding-right: 4px;
}
.prop-chart .mao-chips.prop-chips-side .mao-chip {
  padding: 3px 7px;
  font-size:0.84rem;
  white-space: nowrap;
}
/* Selector compacto del proposal */
.prop-tf-bar .mao-tf { padding: 2px 7px; font-size:0.84rem; }
@media (max-width: 720px) {
  .prop-chart-body { flex-direction: column; align-items: stretch; }
  .prop-chart .mao-chips.prop-chips-side {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    padding: 0;
  }
}

/* ─── Modal de metodología ─── */
.trend-modal {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(10,13,17,0.5);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  z-index: 9000;
  padding: 24px;
  cursor: pointer;
}
.trend-modal[hidden] { display: none !important; }
.trend-modal-panel {
  background: var(--surface);
  border: 1px solid var(--hairline-strong);
  border-radius: var(--r-lg);
  max-width: min(720px, 92vw);
  width: 100%;
  max-height: 88vh;
  overflow-y: auto;
  cursor: default;
  box-shadow: var(--shadow-3);
}
@media (max-width: 640px) {
  .trend-modal { padding: 0; }
  .trend-modal-panel { width: 100%; max-width: 100%; height: 100%; max-height: 100%; border-radius: 0; }
}
.trend-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 24px 14px;
  border-bottom: 1px solid color-mix(in srgb, var(--txt3) 18%, transparent);
}
.trend-modal-title {
  font-family: var(--font-display);
  font-size: var(--fs-lg);
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--text);
}
.trend-modal-subtitle {
  margin-top: 4px;
  font-size: 0.9rem;
  color: var(--txt3);
  font-style: italic;
}
.trend-modal-close {
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--txt3) 30%, transparent);
  color: var(--txt2);
  font-size: 1.2rem;
  width: 34px;
  height: 34px;
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  transition: all 0.15s ease;
  flex-shrink: 0;
}
.trend-modal-close:hover {
  background: color-mix(in srgb, var(--red) 16%, transparent);
  border-color: var(--red);
  color: var(--red);
}
.trend-modal-body {
  padding: 18px 24px 26px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.modal-block-h {
  font-family: var(--font-mono);
  font-size:0.84rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cyan);
  font-weight: 700;
  margin-bottom: 6px;
}
.modal-block-p {
  font-size: 0.98rem;
  line-height: 1.6;
  color: var(--txt2);
}
.modal-block-p strong { color: var(--txt); font-weight: 700; }
.modal-block-p em { color: var(--gold); font-style: italic; }

/* ════════════════ VERDICT CARD — read de mercado (rediseño magnus-designer) ════════════════ */
.verdict {
  position:relative; overflow:hidden;
  background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 80%,var(--accent) 6%) 0%, var(--surface) 42%);
  border:1px solid var(--hairline); border-radius:var(--r-lg); box-shadow:var(--shadow-2);
  display:flex; flex-direction:column;
}
.verdict.bear { border-left:3px solid color-mix(in oklab,var(--down) 70%,transparent); }
.verdict.bull { border-left:3px solid color-mix(in oklab,var(--up) 70%,transparent); }
.verdict.neutral { border-left:3px solid color-mix(in oklab,var(--accent) 60%,transparent); }
.verdict::before {
  content:""; position:absolute; inset:0 0 auto 0; height:1px;
  background:linear-gradient(90deg,transparent,var(--hairline-strong) 30%,var(--hairline-strong) 70%,transparent);
}
.verdict-top { display:flex; gap:22px; padding:24px 26px 20px; align-items:center; }
.gauge { position:relative; flex:0 0 auto; width:132px; height:132px; display:grid; place-items:center; }
.gauge svg.ring { position:absolute; inset:0; transform:rotate(-90deg); }
.gauge .ring-track { stroke:var(--hairline-strong); }
.gauge .ring-val { stroke:var(--reg-col,var(--down)); stroke-linecap:round; }
.gauge .zone-band { stroke:color-mix(in oklab,var(--reg-col,var(--down)) 26%,transparent); }
.gauge .rhombus {
  position:absolute; width:64px; height:64px; transform:rotate(45deg); border-radius:9px;
  border:1px solid color-mix(in oklab,var(--reg-col,var(--down)) 38%,transparent);
  background:color-mix(in oklab,var(--reg-col,var(--down)) 9%,transparent);
}
.gauge .gn { position:relative; text-align:center; line-height:1; }
.gauge .gn-num { font-family:var(--font-mono); font-size:46px; font-weight:600; letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--reg-col,var(--down)); }
.gauge .gn-den { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); display:block; margin-top:2px; }
.gauge .gn-zone { font-size:14px; letter-spacing:.1em; text-transform:uppercase; color:var(--reg-col,var(--down)); font-weight:600; display:block; margin-top:5px; }
.verdict-head { min-width:0; flex:1; }
.verdict-cat, .layer-v { overflow-wrap:anywhere; }
.verdict-eyebrow { display:flex; align-items:center; gap:9px; font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
.verdict-eyebrow .rh { color:var(--oxblood); font-size:14px; transform:translateY(.5px); }
.verdict-cat { font-family:var(--font-serif); font-weight:600; line-height:1.08; letter-spacing:-.01em; font-size:32px; margin-top:7px; color:var(--text); }
.verdict-cat .bear-word { color:var(--down); }
.verdict-cat .bull-word { color:var(--up); }
.regime-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
.rchip { display:inline-flex; align-items:center; gap:6px; padding:5px 11px; min-height:32px; border-radius:999px; font-size:var(--fs-2xs); font-weight:600; white-space:nowrap; border:1px solid var(--hairline-strong); color:var(--text-2); background:var(--surface-2); }
.rchip .ar { font-size:14px; line-height:1; font-weight:700; }
.rchip.extreme .ar { display:inline-grid; place-items:center; width:14px; height:14px; border-radius:999px; border:1.5px solid currentColor; font-size:9px; }
.rchip.bear  { color:var(--down); border-color:color-mix(in oklab,var(--down) 34%,transparent); background:color-mix(in oklab,var(--down) 14%,transparent); }
.rchip.warnup{ color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); background:color-mix(in oklab,var(--up) 12%,transparent); }
.rchip.bullup{ color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); background:color-mix(in oklab,var(--up) 12%,transparent); }
.rchip.beardn{ color:var(--down); border-color:color-mix(in oklab,var(--down) 34%,transparent); background:color-mix(in oklab,var(--down) 14%,transparent); }
.rchip.extreme{ color:var(--warn); border-color:color-mix(in oklab,var(--warn) 34%,transparent); background:color-mix(in oklab,var(--warn) 13%,transparent); }
.layers { border-top:1px solid var(--hairline); padding:16px 26px 18px; background:color-mix(in oklab,var(--surface) 60%,transparent); }
.layers-label, .drivers-label { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; margin-bottom:12px; }
.layer { display:grid; grid-template-columns:96px 1fr; gap:14px; align-items:baseline; padding:9px 0; }
.layer + .layer { border-top:1px solid var(--hairline); }
.layer-k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
.layer-v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
.layer-v b { color:var(--text); font-weight:600; }
.layer-v .tag { font-weight:600; }
.layer-v .tag.bear { color:var(--down); } .layer-v .tag.up { color:var(--up); } .layer-v .tag.warn { color:var(--warn); }
.drivers { border-top:1px solid var(--hairline); padding:16px 26px 20px; }
.drivers-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.drivers-hint { font-size:14px; color:var(--text-4); }
.driver { padding:9px 0; }
.driver + .driver { border-top:1px solid var(--hairline); }
.driver-row { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:7px; }
.driver-id { display:flex; align-items:baseline; gap:9px; min-width:0; }
.driver-name { font-size:var(--fs-sm); color:var(--text); font-weight:500; }
.driver-weight { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-4); font-variant-numeric:tabular-nums; white-space:nowrap; }
.driver-score { font-family:var(--font-mono); font-size:var(--fs-md); font-weight:600; font-variant-numeric:tabular-nums; color:var(--text); line-height:1; }
.driver-bar { height:4px; border-radius:999px; background:var(--hairline-strong); overflow:hidden; }
.driver-bar > span { display:block; height:100%; border-radius:999px; }
.driver-bar.bear > span { background:var(--down); }
.driver-bar.warn > span { background:var(--warn); }
.driver-bar.cool > span { background:var(--accent); }
.driver-score.bear { color:var(--down); } .driver-score.warn { color:var(--warn); } .driver-score.cool { color:var(--text-2); }
@media (max-width:640px){
  .verdict-top { flex-direction:column; align-items:center; text-align:center; gap:14px; padding:22px 18px 16px; }
  .verdict-head { width:100%; min-width:0; }
  .verdict-eyebrow, .regime-chips { justify-content:center; }
  .verdict-cat { font-size:22px; line-height:1.18; overflow-wrap:break-word; }
  .layers, .drivers { padding-left:18px; padding-right:18px; }
  .layer { grid-template-columns:1fr; gap:3px; padding:10px 0; }
}

/* ════════════════ POLISH · Dimensiones / Next phase / Methodology / Architecture (rediseño) ════════════════ */
.dim-locked-head h2, .dim-locked-head h3 { color:var(--text-2); letter-spacing:-.01em; }
.dim-locked-sub { color:var(--text-4); }
.dim-legend-global { color:var(--text-3); }
.dim-legend-global .dim-legend-mk, .dim-legend-global .mk { color:var(--accent); }

/* dim-block (detalle Fase 1 + locked) consistencia de card */
.dim-block { border-radius:var(--r-lg); }
.dim-block.dim-locked { background:linear-gradient(180deg, color-mix(in srgb,var(--surface) 60%,transparent) 0%, transparent 70%); }

/* Methodology + Architecture: card radius + jerarquía de texto */
.method-preview, .arch-diagram, .arch-ref-wrap, .method-sliders { border-radius:var(--r-lg); }
.method-header h2, .arch-header h2 { letter-spacing:-.01em; }
.method-intro, .arch-header p { color:var(--text-3); }
.arch-ref-table th { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-3); }

/* ════════ Premium polish · dim views (technical/options/sentiment comparten clases) ════════ */
.dim-block-head { align-items:center; padding-bottom:14px; border-bottom:1px solid var(--hairline); margin-bottom:16px; }
.dbh-title { letter-spacing:-.015em; }
.dim-block-head.cat-strong-bear .dbh-score, .dim-block-head.cat-mild-bear .dbh-score { color:var(--down); }
.dim-block-head.cat-strong-bull .dbh-score, .dim-block-head.cat-mild-bull .dbh-score { color:var(--up); }
.dim-block-tech-cols { gap:16px; }
.tech-col { border-radius:var(--r-lg); border-color:var(--hairline) !important; background:color-mix(in srgb, var(--surface) 72%, transparent) !important; padding:18px 20px; }
.tsb-head { color:var(--text-3); }
.ind-card { border-radius:var(--r-md); border-color:var(--hairline); }
.dim-block-foot { color:var(--text-4); }

/* ════════════════════════════════════════════════════════════════════════════
   TECHNICAL DETAIL · redesign portado del mockup (eth-desk-redesign/technical.html)
   TODO scopeado bajo #dim-technical (bloque) y #tech-modal-host (modales)
   para NO pisar las clases del Home (#magnus-banner usa .verdict/.gauge/.layers/…)
   Tokens (--down/--up/--warn/--oxblood/--fs-x, --font-x, --r-x, --hairline) ya en :root.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── HERO: veredicto (izq) + motor (der) ── */
#dim-technical .tech-hero { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:20px; align-items:stretch; margin-top:18px; }
#dim-technical .tverdict {
  position:relative; overflow:hidden;
  background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 80%,var(--accent) 6%) 0%, var(--surface) 42%);
  border:1px solid var(--hairline); border-radius:var(--r-lg); box-shadow:var(--shadow-2);
  display:flex; flex-direction:column;
}
#dim-technical .tverdict.bear { border-left:3px solid color-mix(in oklab,var(--down) 70%,transparent); }
#dim-technical .tverdict.bull { border-left:3px solid color-mix(in oklab,var(--up) 70%,transparent); }
#dim-technical .tverdict.neutral { border-left:3px solid color-mix(in oklab,var(--warn) 60%,transparent); }
#dim-technical .tverdict-top { display:flex; gap:22px; padding:24px 26px 20px; align-items:center; }

/* faceted rhombus gauge */
#dim-technical .tgauge { position:relative; flex:0 0 auto; width:132px; height:132px; display:grid; place-items:center; }
#dim-technical .tgauge svg.ring { position:absolute; inset:0; transform:rotate(-90deg); }
#dim-technical .tgauge .ring-track { stroke:var(--hairline-strong); }
#dim-technical .tgauge .rhombus {
  position:absolute; width:64px; height:64px; transform:rotate(45deg); border-radius:9px;
  border:1px solid color-mix(in oklab,var(--gv) 38%,transparent);
  background:color-mix(in oklab,var(--gv) 9%,transparent);
}
#dim-technical .tgauge .gn { position:relative; text-align:center; line-height:1; }
#dim-technical .tgauge .gn-num { font-family:var(--font-mono); font-size:46px; font-weight:600; letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--gv); }
#dim-technical .tgauge .gn-den { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); display:block; margin-top:2px; }
#dim-technical .tgauge .gn-zone { font-size:14px; letter-spacing:.1em; text-transform:uppercase; color:var(--gv); font-weight:600; display:block; margin-top:5px; }

#dim-technical .tverdict-head { min-width:0; flex:1; }
#dim-technical .tverdict-cat, #dim-technical .tlayer-v { overflow-wrap:anywhere; }
#dim-technical .tverdict-eyebrow {
  display:flex; align-items:center; gap:9px;
  font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600;
}
#dim-technical .tverdict-eyebrow .rh { color:var(--oxblood); font-size:14px; transform:translateY(.5px); }
#dim-technical .tverdict-cat {
  font-family:var(--font-serif); font-weight:600; line-height:1.08; letter-spacing:-.01em;
  font-size:31px; margin-top:7px; color:var(--text);
}
#dim-technical .tverdict-cat .gword { color:var(--gv); }
#dim-technical .tregime-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
#dim-technical .trchip {
  display:inline-flex; align-items:center; gap:6px; padding:5px 11px; min-height:32px;
  border-radius:999px; font-size:var(--fs-2xs); font-weight:600; white-space:nowrap;
  border:1px solid var(--hairline-strong); color:var(--text-2); background:var(--surface-2);
}
#dim-technical .trchip .ar { font-size:14px; line-height:1; font-weight:700; }
#dim-technical .trchip.bear  { color:var(--down); border-color:color-mix(in oklab,var(--down) 34%,transparent); background:color-mix(in oklab,var(--down) 14%,transparent); }
#dim-technical .trchip.up    { color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); background:color-mix(in oklab,var(--up) 12%,transparent); }
#dim-technical .trchip.warn  { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 34%,transparent); background:color-mix(in oklab,var(--warn) 13%,transparent); }

/* Cómo leerlo */
#dim-technical .tlayers { border-top:1px solid var(--hairline); padding:16px 26px 18px; background:color-mix(in oklab,var(--surface) 60%,transparent); }
#dim-technical .tlayers-label { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; margin-bottom:12px; }
#dim-technical .tlayer { display:grid; grid-template-columns:104px 1fr; gap:14px; align-items:baseline; padding:9px 0; }
#dim-technical .tlayer + .tlayer { border-top:1px solid var(--hairline); }
#dim-technical .tlayer-k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#dim-technical .tlayer-v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
#dim-technical .tlayer-v b { color:var(--text); font-weight:600; }
#dim-technical .tlayer-v .tag { font-weight:600; }
#dim-technical .tlayer-v .tag.bear { color:var(--down); } #dim-technical .tlayer-v .tag.up { color:var(--up); } #dim-technical .tlayer-v .tag.warn { color:var(--warn); }

#dim-technical .tverdict-foot {
  margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:13px 26px; border-top:1px solid var(--hairline); font-size:var(--fs-2xs); color:var(--text-4);
}
#dim-technical .tverdict-foot .brand { font-family:var(--font-serif); color:var(--text-3); }
#dim-technical .tverdict-foot .more { font-family:var(--font-sans); color:var(--accent); cursor:pointer; font-weight:600; background:none; border:0; min-height:32px; font-size:var(--fs-2xs); }

/* ── Motor del score (stack + slope) ── */
#dim-technical .engine-col { display:flex; flex-direction:column; gap:14px; align-self:start; }
#dim-technical .engine-head { display:flex; align-items:center; gap:9px; font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-technical .engine-head .seam { width:4px; height:15px; border-radius:2px; background:var(--accent); }
#dim-technical .engine-head .hint { margin-left:auto; font-size:14px; letter-spacing:.02em; text-transform:none; color:var(--text-4); font-weight:500; }
#dim-technical .tviz { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:16px 18px 15px; display:flex; flex-direction:column; }
#dim-technical .tviz.bear { border-left:3px solid color-mix(in oklab,var(--down) 55%,transparent); }
#dim-technical .tviz.up { border-left:3px solid color-mix(in oklab,var(--up) 55%,transparent); }
#dim-technical .tviz.warn { border-left:3px solid color-mix(in oklab,var(--warn) 55%,transparent); }
#dim-technical .tviz-label { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-2); font-weight:600; }
#dim-technical .tviz-label .sub { display:block; margin-top:2px; font-size:14px; letter-spacing:0; color:var(--text-4); font-weight:500; text-transform:none; }
#dim-technical .ss-head { display:flex; align-items:baseline; gap:10px; margin-top:12px; }
#dim-technical .ss-tag { font-size:var(--fs-xs); letter-spacing:.04em; font-weight:700; }
#dim-technical .ss-tag.bear { color:var(--down); } #dim-technical .ss-tag.up { color:var(--up); } #dim-technical .ss-tag.warn { color:var(--warn); }
#dim-technical .ss-num { margin-left:auto; font-family:var(--font-mono); font-size:32px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
#dim-technical .ss-num.bear { color:var(--down); } #dim-technical .ss-num.up { color:var(--up); } #dim-technical .ss-num.warn { color:var(--warn); }
#dim-technical .ss-num .den { font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; }
#dim-technical .ssb { position:relative; height:7px; border-radius:999px; overflow:hidden; display:flex; margin-top:12px; }
#dim-technical .ssb .z { height:100%; }
#dim-technical .ssb .z-strong-bear { width:25%; background:color-mix(in oklab,var(--down) 52%,transparent); }
#dim-technical .ssb .z-mild-bear   { width:15%; background:color-mix(in oklab,var(--down) 26%,transparent); }
#dim-technical .ssb .z-neutral     { width:20%; background:var(--hairline-strong); }
#dim-technical .ssb .z-mild-bull   { width:15%; background:color-mix(in oklab,var(--up) 26%,transparent); }
#dim-technical .ssb .z-strong-bull { width:25%; background:color-mix(in oklab,var(--up) 52%,transparent); }
#dim-technical .ssb-marker { position:absolute; top:50%; width:3px; height:15px; border-radius:2px; transform:translate(-50%,-50%); box-shadow:0 0 0 2px var(--surface); }
#dim-technical .ss-story { margin-top:11px; font-size:14px; color:var(--text-3); line-height:1.45; }
#dim-technical .ss-tiers { display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
#dim-technical .ss-tierb { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; padding:3px 8px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); display:inline-flex; align-items:center; gap:5px; color:var(--text-2); }
#dim-technical .ss-tierb .ar { font-size:14px; }
#dim-technical .ss-tierb.up { color:var(--up); border-color:color-mix(in oklab,var(--up) 28%,transparent); }
#dim-technical .ss-tierb.bear { color:var(--down); border-color:color-mix(in oklab,var(--down) 28%,transparent); }
#dim-technical .ss-tierb.warn { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 28%,transparent); }
#dim-technical .engine-method { display:inline-flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:42px; font:inherit; font-size:var(--fs-2xs); font-weight:600; cursor:pointer; background:var(--surface); color:var(--accent); border:1px solid color-mix(in oklab,var(--accent) 28%,transparent); border-radius:var(--r-md); box-shadow:var(--shadow-1); transition:background var(--t-fast),border-color var(--t-fast); }
#dim-technical .engine-method:hover { background:var(--accent-soft); border-color:color-mix(in oklab,var(--accent) 44%,transparent); }
#dim-technical .engine-method svg { width:16px; height:16px; }

/* ── Section titles ── */
#dim-technical .tsec { margin-top:36px; }
#dim-technical .tsec-title { display:flex; align-items:center; gap:14px; margin-bottom:8px; flex-wrap:wrap; }
#dim-technical .tsec-title .dot { width:8px; height:8px; transform:rotate(45deg); background:var(--accent); border-radius:2px; }
#dim-technical .tsec-title .dot.osc { background:var(--text-3); }
#dim-technical .tsec-title .dot.reg { background:var(--warn); }
#dim-technical .tsec-title h3 { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin:0; }
#dim-technical .tsec-title .line { flex:1; height:1px; background:var(--hairline); }
#dim-technical .tsec-title .badge { font-size:var(--fs-2xs); font-family:var(--font-mono); color:var(--text-3); border:1px solid var(--hairline); padding:3px 9px; border-radius:999px; }
#dim-technical .tsec-sub { font-size:var(--fs-2xs); color:var(--text-4); margin-bottom:16px; }
#dim-technical .tsec-sub b { color:var(--text-2); font-weight:600; }
#dim-technical .sec-method { font:inherit; font-size:var(--fs-2xs); font-weight:600; display:inline-flex; align-items:center; gap:6px; min-height:32px; padding:0 12px; border:1px solid color-mix(in oklab,var(--accent) 30%,transparent); border-radius:999px; background:var(--accent-soft); color:var(--accent); cursor:pointer; transition:background var(--t-fast); }
#dim-technical .sec-method:hover { background:color-mix(in oklab,var(--accent) 18%,transparent); }

/* ── Chart inline (medias + supertrend) ── */
#dim-technical .ma-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr); gap:16px; align-items:stretch; }
#dim-technical .tchart-card { border:1px solid var(--hairline); border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-1); padding:18px 20px 14px; display:flex; flex-direction:column; }
#dim-technical .tchart-card.bear { border-left:3px solid color-mix(in oklab,var(--down) 55%,transparent); }
#dim-technical .tchart-card.up { border-left:3px solid color-mix(in oklab,var(--up) 55%,transparent); }
#dim-technical .tchart-head { display:flex; align-items:center; gap:10px 12px; flex-wrap:wrap; }
#dim-technical .tchart-eyebrow { font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-technical .tchart-spot { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; }
#dim-technical .tchart-spot b { color:var(--text-2); font-weight:600; }
#dim-technical .ttf { margin-left:auto; display:inline-flex; gap:4px; }
#dim-technical .ttf button { font:inherit; font-family:var(--font-mono); font-size:14px; min-height:32px; min-width:40px; padding:0 9px; background:transparent; color:var(--text-3); border:1px solid var(--hairline); border-radius:var(--r-sm); cursor:pointer; transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast); }
#dim-technical .ttf button:hover { color:var(--text-2); border-color:var(--hairline-strong); }
#dim-technical .ttf button.active { background:var(--accent-soft); color:var(--accent); border-color:color-mix(in oklab,var(--accent) 34%,transparent); }
#dim-technical .tchart-legend { display:flex; flex-wrap:wrap; gap:7px 14px; margin-top:13px; font-size:14px; color:var(--text-3); }
#dim-technical .tchart-legend .ser { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
#dim-technical .tchart-legend .ser .ln { width:16px; height:0; border-top-width:2px; border-top-style:solid; border-radius:2px; }
#dim-technical .tchart-legend .ser .ln.dash { border-top-style:dashed; }
#dim-technical .tchart-legend .ser .val { color:var(--text-4); }
#dim-technical .tchart-body { position:relative; flex:1; margin-top:12px; display:flex; }
#dim-technical .tchart-yaxis { display:flex; flex-direction:column; justify-content:space-between; padding:2px 10px 18px 0; font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; text-align:right; min-width:58px; }
#dim-technical .tchart-svg-wrap { flex:1; position:relative; min-height:218px; }
/* Tooltip hover del chart de medias (precio + SMA 8/20/50/200 con su color) */
.tma-tip { position:absolute; top:6px; z-index:6; pointer-events:none; min-width:132px; padding:7px 9px; background:color-mix(in oklab, var(--bg) 86%, transparent); border:1px solid var(--hairline); border-radius:7px; font-family:var(--font-mono); font-size:var(--fs-2xs); line-height:1.5; box-shadow:0 4px 14px rgba(0,0,0,.35); backdrop-filter:blur(3px); }
.tma-tip[hidden] { display:none; }
.tma-tip-date { color:var(--txt3); font-size:var(--fs-2xs); letter-spacing:.04em; margin-bottom:5px; }
.tma-tip-row { display:flex; align-items:center; gap:7px; }
.tma-tip-dot { width:7px; height:7px; border-radius:50%; flex:0 0 7px; }
.tma-tip-lbl { color:var(--txt2); }
.tma-tip-val { margin-left:auto; font-variant-numeric:tabular-nums; font-weight:600; }
/* Panel de verificación de datos (record 5m) */
.dcheck-btn { font-family:var(--font-mono); font-size:var(--fs-2xs); padding:6px 12px; min-height:32px; border:1px solid var(--hairline); border-radius:6px; background:transparent; color:var(--text-2); cursor:pointer; margin-left:10px; transition:all .15s; }
.dcheck-btn:hover { border-color:var(--accent-amber); color:var(--accent-amber); }
.dcheck-modal { max-width:min(820px,94vw); }
.dcheck-sub { font-size:var(--fs-2xs); color:var(--txt3); margin:4px 0 0; font-family:var(--font-mono); }
.dcheck-actions { display:flex; gap:10px; margin-bottom:14px; }
.dcheck-actions .dcheck-btn { margin-left:0; }
.dcheck-h4 { font-size:var(--fs-2xs); text-transform:uppercase; letter-spacing:.08em; color:var(--txt3); margin:16px 0 8px; font-family:var(--font-mono); font-weight:600; }
.dcheck-tbl-wrap { max-height:240px; overflow:auto; border:1px solid var(--hairline); border-radius:6px; }
.dcheck-tbl-wrap.dcheck-live { max-height:48vh; }
.dcheck-tbl { width:100%; border-collapse:collapse; font-family:var(--font-mono); font-size:var(--fs-2xs); font-variant-numeric:tabular-nums; }
.dcheck-tbl th { position:sticky; top:0; background:var(--bg); text-align:left; padding:8px 10px; color:var(--txt3); border-bottom:1px solid var(--hairline); font-weight:600; }
.dcheck-tbl th.r, .dcheck-tbl td.r { text-align:right; }
.dcheck-tbl td { padding:7px 10px; border-bottom:1px solid color-mix(in oklab, var(--hairline) 60%, transparent); color:var(--txt2); }
.dcheck-tbl td.ok { color:var(--green); font-weight:700; }
.dcheck-tbl td.no { color:var(--down); font-weight:700; }
.mth-checks { margin-top:40px; }
.mth-check-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:16px; margin-top:14px; }
.mth-check-card { border:1px solid var(--hairline); border-radius:12px; background:color-mix(in oklab, var(--ink-strong) 3%, transparent); padding:18px 20px; }
.mth-check-card h3 { margin:0 0 8px; font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--ink-strong); font-weight:600; }
.mth-check-card p { margin:0 0 14px; font-size:var(--fs-2xs); color:var(--txt3); line-height:1.5; }
.dcheck-details-toggle { display:block; width:100%; text-align:left; margin:4px 0 14px; padding:10px 12px; border:1px solid var(--hairline); border-radius:6px; background:transparent; color:var(--txt2); font-family:var(--font-mono); font-size:var(--fs-2xs); cursor:pointer; }
.dcheck-details-toggle:hover { border-color:var(--accent-amber); color:var(--accent-amber); }
.dcheck-details { margin:0 0 16px; padding:14px 16px; border:1px solid var(--hairline); border-radius:6px; background:color-mix(in oklab, var(--ink-strong) 3%, transparent); }
.dcheck-details .dcheck-h4:first-child { margin-top:0; }
.dcheck-src { list-style:none; margin:0; padding:0; }
.dcheck-src li { display:flex; flex-direction:column; gap:2px; padding:6px 0; border-bottom:1px solid color-mix(in oklab, var(--hairline) 60%, transparent); font-size:var(--fs-2xs); color:var(--txt2); }
.dcheck-src li:last-child { border-bottom:0; }
.dcheck-file { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--accent-amber); }
.dcheck-formula { margin:0; font-size:var(--fs-2xs); color:var(--txt2); line-height:1.6; }
.dcheck-code { margin:0; padding:12px 14px; background:var(--bg); border:1px solid var(--hairline); border-radius:6px; overflow:auto; font-family:var(--font-mono); font-size:var(--fs-2xs); line-height:1.6; color:var(--txt2); white-space:pre; }
/* Modal del panel de verificación — estilos propios (los del tech-modal están scopeados) */
#dcheck-host .modal-backdrop { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:28px; background:color-mix(in oklab, var(--bg) 62%, transparent); backdrop-filter:blur(8px); }
#dcheck-host .modal-backdrop[hidden] { display:none; }
#dcheck-host .tmodal { position:relative; width:min(820px,94vw); max-height:88vh; overflow:auto; background:var(--surface); border:1px solid var(--hairline-strong); border-radius:var(--r-lg); box-shadow:var(--shadow-3); }
#dcheck-host .modal-head { padding:22px 64px 16px 24px; border-bottom:1px solid var(--hairline); }
#dcheck-host .modal-head h3 { margin:0; }
#dcheck-host .modal-close { position:absolute; top:16px; right:16px; width:40px; height:40px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-3); cursor:pointer; display:grid; place-items:center; z-index:2; }
#dcheck-host .modal-close:hover { color:var(--text); border-color:var(--hairline-strong); }
#dcheck-host .modal-close svg { width:18px; height:18px; }
#dcheck-host .modal-body { padding:18px 24px 22px; }
#dim-technical .tchart-svg { width:100%; height:100%; display:block; }
#dim-technical .tchart-annot { position:absolute; font-family:var(--font-mono); font-size:14px; font-weight:600; color:var(--down); background:color-mix(in oklab,var(--bg) 78%,transparent); border:1px solid color-mix(in oklab,var(--down) 32%,transparent); border-radius:var(--r-sm); padding:3px 8px; white-space:nowrap; pointer-events:none; transform:translateY(-50%); }
#dim-technical .tchart-x { display:flex; justify-content:space-between; margin-top:7px; font-family:var(--font-mono); font-size:14px; color:var(--text-4); padding-left:58px; }
#dim-technical .tchart-x .now { display:inline-flex; align-items:center; gap:5px; color:var(--down); }
#dim-technical .tchart-x .now .dot { width:6px; height:6px; border-radius:999px; background:var(--down); }
#dim-technical .tchart-foot { margin-top:9px; font-size:14px; color:var(--text-4); line-height:1.45; }
#dim-technical .tchart-foot .flip { color:var(--down); font-weight:600; }
#dim-technical .st-strip { display:flex; align-items:baseline; gap:9px 14px; flex-wrap:wrap; margin-top:13px; }
#dim-technical .st-state { font-size:var(--fs-2xs); letter-spacing:.05em; text-transform:uppercase; font-weight:700; color:var(--down); }
#dim-technical .st-state.up { color:var(--up); }
#dim-technical .st-state .ar { font-size:14px; }
#dim-technical .st-meta { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; }
#dim-technical .st-meta b { color:var(--text-2); font-weight:600; }

/* ── Tabla MA complemento ── */
#dim-technical .tma-card { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:6px 4px; display:flex; flex-direction:column; justify-content:center; }
#dim-technical .tma-table { width:100%; border-collapse:collapse; }
#dim-technical .tma-table th { text-align:left; font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; padding:11px 18px 9px; border-bottom:1px solid var(--hairline); }
#dim-technical .tma-table th.r { text-align:right; }
#dim-technical .tma-table td { padding:13px 18px; border-bottom:1px solid var(--hairline); }
#dim-technical .tma-table tr:last-child td { border-bottom:0; }
#dim-technical .tma-name { font-size:var(--fs-sm); font-weight:600; color:var(--text); }
#dim-technical .tma-name .span { display:block; font-size:14px; color:var(--text-4); font-weight:500; }
#dim-technical .tma-val { font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--text-2); font-variant-numeric:tabular-nums; text-align:right; }
#dim-technical .tma-dist { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; text-align:right; }
#dim-technical .tma-dist.bear { color:var(--down); } #dim-technical .tma-dist.up { color:var(--up); }
#dim-technical .tma-sig { text-align:right; }
#dim-technical .tag-sig { display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:999px; font-size:14px; font-weight:600; letter-spacing:.02em; }
#dim-technical .tag-sig .ar { font-size:9px; }
#dim-technical .tag-sig.bear { color:var(--down); background:color-mix(in oklab,var(--down) 13%,transparent); }
#dim-technical .tag-sig.up { color:var(--up); background:color-mix(in oklab,var(--up) 13%,transparent); }
#dim-technical .tag-sig.warn { color:var(--warn); background:color-mix(in oklab,var(--warn) 13%,transparent); }
#dim-technical .tag-sig.neu { color:var(--text-3); background:var(--surface-2); }

/* ── Osciladores (fichas → modal) ── */
#dim-technical .osc-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
#dim-technical .osc { position:relative; border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:14px 16px 13px; display:flex; flex-direction:column; gap:7px; cursor:pointer; text-align:left; font:inherit; width:100%; transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast),background var(--t-fast); }
#dim-technical .osc:hover { border-color:var(--hairline-strong); background:var(--surface-2); transform:translateY(-1px); box-shadow:var(--shadow-2); }
#dim-technical .osc:hover .osc-expand { opacity:1; color:var(--accent); }
#dim-technical .osc:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
#dim-technical .osc-top { display:flex; align-items:center; gap:8px; }
#dim-technical .osc-lbl { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-3); font-weight:600; }
#dim-technical .osc-expand { margin-left:auto; width:22px; height:22px; flex:0 0 auto; display:grid; place-items:center; color:var(--text-4); opacity:.6; transition:opacity var(--t-fast),color var(--t-fast); }
#dim-technical .osc-expand svg { width:14px; height:14px; }
#dim-technical .osc-row { display:flex; align-items:baseline; gap:10px; }
#dim-technical .osc-val { font-family:var(--font-mono); font-size:25px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; color:var(--text); }
#dim-technical .osc-val.bear { color:var(--down); } #dim-technical .osc-val.up { color:var(--up); } #dim-technical .osc-val.warn { color:var(--warn); }
#dim-technical .osc-val.sm { font-size:18px; }
#dim-technical .osc-spark { margin-left:auto; flex:0 0 auto; width:62px; height:24px; display:block; opacity:.9; }
#dim-technical .osc-meta { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; line-height:1.45; }
#dim-technical .osc-meta b { color:var(--text-2); font-weight:600; }
#dim-technical .osc-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; padding-top:2px; }
#dim-technical .osc-foot .tag-sig { font-size:14px; }

/* ── Tally summary ── */
#dim-technical .tsummary { margin-top:24px; border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:18px 22px; }
#dim-technical .tsummary-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
#dim-technical .tsummary-lbl { font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-technical .tsummary-verdict { font-size:var(--fs-2xs); font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
#dim-technical .tsummary-verdict.bear { color:var(--down); } #dim-technical .tsummary-verdict.up { color:var(--up); } #dim-technical .tsummary-verdict.warn { color:var(--warn); }
#dim-technical .ttally { display:flex; height:9px; border-radius:999px; overflow:hidden; }
#dim-technical .ttally .bull { background:var(--up); } #dim-technical .ttally .neu { background:var(--hairline-strong); } #dim-technical .ttally .bear { background:var(--down); }
#dim-technical .ttally-legend { display:flex; gap:18px; margin-top:11px; font-size:14px; color:var(--text-3); flex-wrap:wrap; }
#dim-technical .ttally-legend span { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); }
#dim-technical .ttally-legend em { width:9px; height:9px; border-radius:2px; font-style:normal; }
#dim-technical .ttally-legend em.bull { background:var(--up); } #dim-technical .ttally-legend em.neu { background:var(--hairline-strong); } #dim-technical .ttally-legend em.bear { background:var(--down); }

/* responsive */
@media (max-width:1024px){
  #dim-technical .tech-hero { grid-template-columns:1fr; }
  #dim-technical .osc-grid { grid-template-columns:repeat(3,1fr); }
  #dim-technical .ma-layout { grid-template-columns:1fr; }
}
@media (max-width:640px){
  #dim-technical .tverdict-top { flex-direction:column; align-items:center; text-align:center; gap:14px; padding:22px 18px 16px; }
  #dim-technical .tlayer { grid-template-columns:1fr; gap:3px; }
  #dim-technical .osc-grid { grid-template-columns:repeat(2,1fr); }
  #dim-technical .ttf { margin-left:0; width:100%; }
  #dim-technical .ttf button { flex:1; }
}
@media (max-width:380px){
  #dim-technical .osc-grid { grid-template-columns:1fr; }
}

/* ════════════════ MODAL TÉCNICO (scopeado a #tech-modal-host) ════════════════ */
#tech-modal-host .modal-backdrop { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:28px; background:color-mix(in oklab,var(--bg) 62%,transparent); backdrop-filter:blur(8px); }
#tech-modal-host .modal-backdrop[hidden] { display:none; }
#tech-modal-host .tmodal { position:relative; width:min(720px,92vw); max-height:88vh; overflow:auto; background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 82%,var(--accent) 5%) 0%, var(--surface) 30%); border:1px solid var(--hairline-strong); border-radius:var(--r-lg); box-shadow:var(--shadow-3); }
#tech-modal-host .tmodal.bear { border-top:3px solid color-mix(in oklab,var(--down) 60%,transparent); }
#tech-modal-host .tmodal.up { border-top:3px solid color-mix(in oklab,var(--up) 60%,transparent); }
#tech-modal-host .tmodal.warn { border-top:3px solid color-mix(in oklab,var(--warn) 60%,transparent); }
#tech-modal-host .modal-head { display:flex; align-items:flex-start; gap:14px; padding:22px 64px 16px 24px; border-bottom:1px solid var(--hairline); }
#tech-modal-host .modal-eyebrow { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#tech-modal-host .modal-title { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin-top:4px; color:var(--text); }
#tech-modal-host .modal-title .span { display:block; font-family:var(--font-sans); font-size:14px; color:var(--text-4); font-weight:500; letter-spacing:0; margin-top:3px; }
#tech-modal-host .modal-head .hv { margin-left:auto; text-align:right; flex:0 0 auto; }
#tech-modal-host .modal-head .hv-num { font-family:var(--font-mono); font-size:34px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
#tech-modal-host .modal-head .hv-num.bear { color:var(--down); } #tech-modal-host .modal-head .hv-num.up { color:var(--up); } #tech-modal-host .modal-head .hv-num.warn { color:var(--warn); } #tech-modal-host .modal-head .hv-num.neu { color:var(--text-2); }
#tech-modal-host .modal-head .hv-sig { display:inline-flex; margin-top:8px; }
#tech-modal-host .modal-close { position:absolute; top:16px; right:16px; width:40px; height:40px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-3); cursor:pointer; display:grid; place-items:center; z-index:2; }
#tech-modal-host .modal-close:hover { color:var(--text); border-color:var(--hairline-strong); }
#tech-modal-host .modal-close svg { width:18px; height:18px; }
#tech-modal-host .modal-body { padding:18px 24px 22px; }
#tech-modal-host .modal-tabs { display:inline-flex; gap:4px; margin:4px 0; padding:4px; border:1px solid var(--hairline); border-radius:999px; background:color-mix(in oklab,var(--surface) 50%,transparent); }
#tech-modal-host .modal-tabs button { font:inherit; font-size:var(--fs-2xs); font-weight:600; min-height:34px; padding:0 16px; background:transparent; color:var(--text-3); border:0; border-radius:999px; cursor:pointer; display:inline-flex; align-items:center; gap:7px; transition:background var(--t-fast),color var(--t-fast); }
#tech-modal-host .modal-tabs button:hover { color:var(--text-2); }
#tech-modal-host .modal-tabs button[aria-selected="true"] { background:var(--accent-soft); color:var(--accent); }
#tech-modal-host .modal-tabs button .ti { width:15px; height:15px; flex:0 0 auto; }
#tech-modal-host .modal-tabs button .ti svg { width:15px; height:15px; display:block; }
#tech-modal-host .modal-panel[hidden] { display:none; }
#tech-modal-host .modal-chart { border:1px solid var(--hairline); border-radius:var(--r-md); background:color-mix(in oklab,var(--surface) 60%,transparent); padding:14px 16px 12px; margin-top:14px; }
#tech-modal-host .modal-chart-body { display:flex; margin-top:10px; }
#tech-modal-host .modal-chart .tchart-yaxis { padding-bottom:14px; }
#tech-modal-host .modal-chart .tchart-svg-wrap { min-height:180px; }
#tech-modal-host .modal-chart .tchart-x { margin-top:6px; }
#tech-modal-host .tchart-body { position:relative; flex:1; display:flex; }
#tech-modal-host .tchart-yaxis { display:flex; flex-direction:column; justify-content:space-between; padding:2px 10px 18px 0; font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; text-align:right; min-width:48px; }
#tech-modal-host .tchart-svg-wrap { flex:1; position:relative; }
#tech-modal-host .tchart-svg { width:100%; height:100%; display:block; }
#tech-modal-host .tchart-x { display:flex; justify-content:space-between; margin-top:7px; font-family:var(--font-mono); font-size:14px; color:var(--text-4); padding-left:48px; }
#tech-modal-host .tchart-x .now { display:inline-flex; align-items:center; gap:5px; }
#tech-modal-host .tchart-x .now .dot { width:6px; height:6px; border-radius:999px; background:currentColor; }
#tech-modal-host .modal-legend { display:flex; flex-wrap:wrap; gap:7px 14px; align-items:center; font-size:14px; color:var(--text-3); }
#tech-modal-host .modal-legend .ser { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); }
#tech-modal-host .modal-legend .ser .ln { width:16px; border-top-width:2px; border-top-style:solid; }
#tech-modal-host .modal-legend .ttf { margin-left:auto; display:inline-flex; gap:4px; }
#tech-modal-host .modal-legend .ttf button { font:inherit; font-family:var(--font-mono); font-size:14px; min-height:32px; min-width:40px; padding:0 9px; background:transparent; color:var(--text-3); border:1px solid var(--hairline); border-radius:var(--r-sm); cursor:pointer; }
#tech-modal-host .modal-legend .ttf button.active { background:var(--accent-soft); color:var(--accent); border-color:color-mix(in oklab,var(--accent) 34%,transparent); }
#tech-modal-host .modal-read { display:grid; grid-template-columns:104px 1fr; gap:13px; margin-top:16px; }
#tech-modal-host .modal-read + .modal-read { border-top:1px solid var(--hairline); padding-top:13px; }
#tech-modal-host .modal-read .k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#tech-modal-host .modal-read .v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
#tech-modal-host .modal-read .v b { color:var(--text); font-weight:600; }
#tech-modal-host .modal-read .v .tag.warn { color:var(--warn); font-weight:600; } #tech-modal-host .modal-read .v .tag.bear { color:var(--down); font-weight:600; } #tech-modal-host .modal-read .v .tag.up { color:var(--up); font-weight:600; }
#tech-modal-host .modal-stats { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
#tech-modal-host .modal-stat { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; padding:5px 10px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-2); }
#tech-modal-host .modal-stat .k { color:var(--text-4); }
#tech-modal-host .tmethod-intro { font-size:var(--fs-sm); color:var(--text-2); line-height:1.5; margin-top:14px; }
#tech-modal-host .tmethod-intro b { color:var(--text); font-weight:600; }
#tech-modal-host .method-block { margin-top:18px; }
#tech-modal-host .method-block + .method-block { border-top:1px solid var(--hairline); padding-top:16px; }
#tech-modal-host .method-h { display:flex; align-items:center; gap:9px; margin-bottom:10px; font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#tech-modal-host .method-h .seam { width:4px; height:14px; border-radius:2px; background:var(--accent); }
#tech-modal-host .method-formula { font-family:var(--font-mono); font-size:14px; color:var(--text-2); font-variant-numeric:tabular-nums; background:color-mix(in oklab,var(--surface) 60%,transparent); border:1px solid var(--hairline); border-radius:var(--r-sm); padding:10px 13px; line-height:1.55; overflow-wrap:anywhere; }
#tech-modal-host .method-formula b { color:var(--text); font-weight:600; }
#tech-modal-host .method-steps { list-style:none; counter-reset:ms; margin-top:11px; display:flex; flex-direction:column; gap:9px; padding:0; }
#tech-modal-host .method-steps li { display:grid; grid-template-columns:24px 1fr; gap:11px; align-items:baseline; font-size:14px; color:var(--text-2); line-height:1.5; }
#tech-modal-host .method-steps li::before { counter-increment:ms; content:counter(ms); font-family:var(--font-mono); font-size:14px; font-weight:600; width:24px; height:24px; display:grid; place-items:center; border-radius:var(--r-sm); border:1px solid var(--hairline-strong); color:var(--text-3); background:var(--surface-2); }
#tech-modal-host .method-steps li b { color:var(--text); font-weight:600; }
#tech-modal-host .method-score { margin-top:14px; border:1px solid color-mix(in oklab,var(--accent) 26%,transparent); border-radius:var(--r-md); background:color-mix(in oklab,var(--accent) 7%,transparent); padding:14px 16px; }
#tech-modal-host .method-score-h { display:flex; align-items:center; gap:8px; margin-bottom:11px; font-size:var(--fs-2xs); letter-spacing:.08em; text-transform:uppercase; color:var(--accent); font-weight:700; }
#tech-modal-host .method-score-h .rh { font-size:14px; transform:translateY(.5px); }
#tech-modal-host .method-feed { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
#tech-modal-host .method-feed .cell { display:flex; flex-direction:column; gap:3px; }
#tech-modal-host .method-feed .cell .ck { font-size:14px; letter-spacing:.04em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#tech-modal-host .method-feed .cell .cv { font-family:var(--font-mono); font-size:var(--fs-md); font-weight:600; letter-spacing:-.01em; font-variant-numeric:tabular-nums; color:var(--text); line-height:1.1; }
#tech-modal-host .method-feed .cell .cv.bear { color:var(--down); } #tech-modal-host .method-feed .cell .cv.warn { color:var(--warn); } #tech-modal-host .method-feed .cell .cv.up { color:var(--up); }
#tech-modal-host .method-feed .cell .cs { font-size:14px; color:var(--text-3); line-height:1.35; }
#tech-modal-host .method-contrib { margin-top:13px; font-size:14px; color:var(--text-2); line-height:1.5; }
#tech-modal-host .method-contrib b { color:var(--text); font-weight:600; }
#tech-modal-host .method-contrib .tag.bear { color:var(--down); font-weight:600; } #tech-modal-host .method-contrib .tag.warn { color:var(--warn); font-weight:600; } #tech-modal-host .method-contrib .tag.up { color:var(--up); font-weight:600; }
#tech-modal-host .method-note { margin-top:14px; font-size:14px; color:var(--text-4); line-height:1.45; }
@media (max-width:640px){
  #tech-modal-host .modal-backdrop { padding:0; }
  #tech-modal-host .tmodal { width:100vw; max-width:100vw; height:100vh; max-height:100vh; border-radius:0; }
  #tech-modal-host .modal-read { grid-template-columns:1fr; gap:3px; }
  #tech-modal-host .modal-tabs { display:flex; width:100%; }
  #tech-modal-host .modal-tabs button { flex:1; justify-content:center; }
  #tech-modal-host .method-feed { grid-template-columns:1fr; }
}

/* ════════════════════════════════════════════════════════════════════════════
   OPCIONES DETAIL · redesign portado del mockup (eth-desk-redesign/options.html)
   TODO scopeado bajo #dim-etf_options (bloque) y #opt-modal-host (modales)
   para NO pisar las clases del Home/Technical. Tokens (--down/--up/--warn/
   --etha/--deribit/--fs-x, --font-x, --r-x, --hairline) ya en :root.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── HERO: veredicto (izq) + motor (der) ── */
#dim-etf_options .opt-hero { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:20px; align-items:stretch; margin-top:18px; }
#dim-etf_options .overdict { position:relative; overflow:hidden; background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 80%,var(--accent) 6%) 0%, var(--surface) 42%); border:1px solid var(--hairline); border-radius:var(--r-lg); box-shadow:var(--shadow-2); display:flex; flex-direction:column; }
#dim-etf_options .overdict.bear { border-left:3px solid color-mix(in oklab,var(--down) 70%,transparent); }
#dim-etf_options .overdict.up { border-left:3px solid color-mix(in oklab,var(--up) 70%,transparent); }
#dim-etf_options .overdict.neutral { border-left:3px solid color-mix(in oklab,var(--warn) 60%,transparent); }
#dim-etf_options .overdict-top { display:flex; gap:22px; padding:24px 26px 20px; align-items:center; }
#dim-etf_options .ogauge { position:relative; flex:0 0 auto; width:132px; height:132px; display:grid; place-items:center; }
#dim-etf_options .ogauge svg.ring { position:absolute; inset:0; transform:rotate(-90deg); }
#dim-etf_options .ogauge .ring-track { stroke:var(--hairline-strong); }
#dim-etf_options .ogauge .rhombus { position:absolute; width:64px; height:64px; transform:rotate(45deg); border-radius:9px; border:1px solid color-mix(in oklab,var(--gv) 38%,transparent); background:color-mix(in oklab,var(--gv) 9%,transparent); }
#dim-etf_options .ogauge .gn { position:relative; text-align:center; line-height:1; }
#dim-etf_options .ogauge .gn-num { font-family:var(--font-mono); font-size:46px; font-weight:600; letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--gv); }
#dim-etf_options .ogauge .gn-den { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); display:block; margin-top:2px; }
#dim-etf_options .ogauge .gn-zone { font-size:14px; letter-spacing:.1em; text-transform:uppercase; color:var(--gv); font-weight:600; display:block; margin-top:5px; }
#dim-etf_options .overdict-head { min-width:0; flex:1; }
#dim-etf_options .overdict-cat, #dim-etf_options .olayer-v { overflow-wrap:anywhere; }
#dim-etf_options .overdict-eyebrow { display:flex; align-items:center; gap:9px; font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-etf_options .overdict-eyebrow .rh { color:var(--oxblood); font-size:14px; transform:translateY(.5px); }
#dim-etf_options .overdict-cat { font-family:var(--font-serif); font-weight:600; line-height:1.08; letter-spacing:-.01em; font-size:31px; margin-top:7px; color:var(--text); }
#dim-etf_options .overdict-cat .gword { color:var(--gv); }
#dim-etf_options .oregime-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
#dim-etf_options .orchip { display:inline-flex; align-items:center; gap:6px; padding:5px 11px; min-height:32px; border-radius:999px; font-size:var(--fs-2xs); font-weight:600; white-space:nowrap; border:1px solid var(--hairline-strong); color:var(--text-2); background:var(--surface-2); }
#dim-etf_options .orchip .ar { font-size:14px; line-height:1; font-weight:700; }
#dim-etf_options .orchip.bear { color:var(--down); border-color:color-mix(in oklab,var(--down) 34%,transparent); background:color-mix(in oklab,var(--down) 14%,transparent); }
#dim-etf_options .orchip.up { color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); background:color-mix(in oklab,var(--up) 12%,transparent); }
#dim-etf_options .orchip.warn { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 34%,transparent); background:color-mix(in oklab,var(--warn) 13%,transparent); }
#dim-etf_options .olayers { border-top:1px solid var(--hairline); padding:16px 26px 18px; background:color-mix(in oklab,var(--surface) 60%,transparent); }
#dim-etf_options .olayers-label { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; margin-bottom:12px; }
#dim-etf_options .olayer { display:grid; grid-template-columns:104px 1fr; gap:14px; align-items:baseline; padding:9px 0; }
#dim-etf_options .olayer + .olayer { border-top:1px solid var(--hairline); }
#dim-etf_options .olayer-k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#dim-etf_options .olayer-v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
#dim-etf_options .olayer-v b { color:var(--text); font-weight:600; }
#dim-etf_options .olayer-v .tag { font-weight:600; }
#dim-etf_options .olayer-v .tag.bear { color:var(--down); } #dim-etf_options .olayer-v .tag.up { color:var(--up); } #dim-etf_options .olayer-v .tag.warn { color:var(--warn); }
#dim-etf_options .overdict-foot { margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:13px 26px; border-top:1px solid var(--hairline); font-size:var(--fs-2xs); color:var(--text-4); }
#dim-etf_options .overdict-foot .brand { font-family:var(--font-serif); color:var(--text-3); }
#dim-etf_options .overdict-foot .more { font-family:var(--font-sans); color:var(--accent); cursor:pointer; font-weight:600; background:none; border:0; min-height:32px; font-size:var(--fs-2xs); }

/* ── Motor: 4 componentes con venue tags ── */
#dim-etf_options .oengine-col { display:flex; flex-direction:column; gap:14px; align-self:start; }
#dim-etf_options .oengine-head { display:flex; align-items:center; gap:9px; font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-etf_options .oengine-head .seam { width:4px; height:15px; border-radius:2px; background:var(--accent); }
#dim-etf_options .oengine-head .hint { margin-left:auto; font-size:14px; letter-spacing:.02em; text-transform:none; color:var(--text-4); font-weight:500; }
#dim-etf_options .oviz { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:15px 18px 14px; display:flex; flex-direction:column; }
#dim-etf_options .oviz.etha { border-left:3px solid color-mix(in oklab,var(--etha) 60%,transparent); }
#dim-etf_options .oviz.deribit { border-left:3px solid color-mix(in oklab,var(--deribit) 60%,transparent); }
#dim-etf_options .oviz-label { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-2); font-weight:600; display:flex; align-items:baseline; flex-wrap:wrap; gap:6px; }
#dim-etf_options .oviz-label .sub { font-size:14px; letter-spacing:0; color:var(--text-4); font-weight:500; text-transform:none; }
#dim-etf_options .oviz-label .wt { margin-left:auto; font-family:var(--font-mono); font-size:14px; color:var(--text-3); border:1px solid var(--hairline); border-radius:999px; padding:1px 8px; font-weight:600; }
#dim-etf_options .vtag { display:inline-grid; place-items:center; width:18px; height:18px; border-radius:5px; font-family:var(--font-mono); font-size:14px; font-weight:700; flex:0 0 auto; }
#dim-etf_options .vtag.etha { background:color-mix(in oklab,var(--etha) 22%,transparent); color:var(--etha); border:1px solid color-mix(in oklab,var(--etha) 40%,transparent); }
#dim-etf_options .vtag.deribit { background:color-mix(in oklab,var(--deribit) 22%,transparent); color:var(--deribit); border:1px solid color-mix(in oklab,var(--deribit) 40%,transparent); }
#dim-etf_options .oss-head { display:flex; align-items:baseline; gap:10px; margin-top:12px; }
#dim-etf_options .oss-tag { font-size:var(--fs-xs); letter-spacing:.04em; font-weight:700; }
#dim-etf_options .oss-tag.bear { color:var(--down); } #dim-etf_options .oss-tag.up { color:var(--up); } #dim-etf_options .oss-tag.neutral { color:var(--warn); }
#dim-etf_options .oss-num { margin-left:auto; font-family:var(--font-mono); font-size:32px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
#dim-etf_options .oss-num.bear { color:var(--down); } #dim-etf_options .oss-num.up { color:var(--up); } #dim-etf_options .oss-num.neutral { color:var(--warn); }
#dim-etf_options .oss-num .den { font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; }
#dim-etf_options .ossb { position:relative; height:7px; border-radius:999px; overflow:hidden; display:flex; margin-top:12px; }
#dim-etf_options .ossb .z { height:100%; }
#dim-etf_options .ossb .z-strong-bear { width:25%; background:color-mix(in oklab,var(--down) 52%,transparent); }
#dim-etf_options .ossb .z-mild-bear { width:15%; background:color-mix(in oklab,var(--down) 26%,transparent); }
#dim-etf_options .ossb .z-neutral { width:20%; background:var(--hairline-strong); }
#dim-etf_options .ossb .z-mild-bull { width:15%; background:color-mix(in oklab,var(--up) 26%,transparent); }
#dim-etf_options .ossb .z-strong-bull { width:25%; background:color-mix(in oklab,var(--up) 52%,transparent); }
#dim-etf_options .ossb-marker { position:absolute; top:50%; width:3px; height:15px; border-radius:2px; transform:translate(-50%,-50%); box-shadow:0 0 0 2px var(--surface); }
#dim-etf_options .oss-story { margin-top:11px; font-size:14px; color:var(--text-3); line-height:1.45; }
#dim-etf_options .oss-story b { font-weight:600; }
#dim-etf_options .oss-tiers { display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
#dim-etf_options .oss-tier { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; padding:3px 8px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); display:inline-flex; align-items:center; gap:5px; color:var(--text-2); }
#dim-etf_options .oss-tier .ar { font-size:14px; }
#dim-etf_options .oss-tier.up { color:var(--up); border-color:color-mix(in oklab,var(--up) 28%,transparent); }
#dim-etf_options .oss-tier.bear { color:var(--down); border-color:color-mix(in oklab,var(--down) 28%,transparent); }
#dim-etf_options .oss-tier.neutral { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 28%,transparent); }
#dim-etf_options .oengine-method { display:inline-flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:42px; font:inherit; font-size:var(--fs-2xs); font-weight:600; cursor:pointer; background:var(--surface); color:var(--accent); border:1px solid color-mix(in oklab,var(--accent) 28%,transparent); border-radius:var(--r-md); box-shadow:var(--shadow-1); transition:background var(--t-fast),border-color var(--t-fast); }
#dim-etf_options .oengine-method:hover { background:var(--accent-soft); border-color:color-mix(in oklab,var(--accent) 44%,transparent); }
#dim-etf_options .oengine-method svg { width:16px; height:16px; }

/* ── Section titles ── */
#dim-etf_options .osec { margin-top:36px; }
#dim-etf_options .osec-title { display:flex; align-items:center; gap:14px; margin-bottom:8px; flex-wrap:wrap; }
#dim-etf_options .osec-title .dot { width:8px; height:8px; transform:rotate(45deg); background:var(--accent); border-radius:2px; }
#dim-etf_options .osec-title .dot.osc { background:var(--text-3); }
#dim-etf_options .osec-title .dot.reg { background:var(--warn); }
#dim-etf_options .osec-title h3 { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin:0; }
#dim-etf_options .osec-title .line { flex:1; height:1px; background:var(--hairline); }
#dim-etf_options .osec-title .badge { font-size:var(--fs-2xs); font-family:var(--font-mono); color:var(--text-3); border:1px solid var(--hairline); padding:3px 9px; border-radius:999px; }
#dim-etf_options .osec-sub { font-size:var(--fs-2xs); color:var(--text-4); margin-bottom:16px; line-height:1.5; }
#dim-etf_options .osec-sub b { color:var(--text-2); font-weight:600; }
#dim-etf_options .ostruct-venue { margin-top:18px; }
#dim-etf_options .ostruct-venue-h { font-family:var(--font-mono); font-size:var(--fs-xs); color:var(--text-2); letter-spacing:.04em; display:flex; align-items:center; gap:8px; margin-bottom:10px; }
#dim-etf_options .ostruct-venue-h .span { color:var(--text-4); font-size:var(--fs-2xs); }
#dim-etf_options .ostruct-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(420px,1fr)); gap:14px; }
#dim-etf_options .ovenue-sec { margin-top:30px; }
#dim-etf_options .osec-title .vtag { margin-right:2px; }
#dim-etf_options .oviz-card { position:relative; cursor:pointer; border-radius:10px; transition:background var(--t-fast,.15s); }
#dim-etf_options .oviz-card:hover { background:color-mix(in oklab,var(--accent) 6%,transparent); }
#dim-etf_options .oviz-card > .osc-expand { position:absolute; top:12px; right:12px; opacity:.35; z-index:2; pointer-events:none; transition:opacity var(--t-fast,.15s); }
#dim-etf_options .oviz-card:hover > .osc-expand { opacity:1; color:var(--accent); }
#dim-etf_options .oviz-card > .osc-expand svg { width:15px; height:15px; }
#dim-etf_options .ovenue-ctx { margin-top:16px; }
#dim-etf_options .ovenue-ctx-h { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); letter-spacing:.04em; margin-bottom:8px; }
#dim-etf_options .opt-viz-expanded { padding:6px 2px 2px; }
#dim-etf_options .opt-viz-expanded .viz-cell { background:transparent; border:none; padding:0; }
#dim-etf_options .opt-viz-expanded .mao-svg { width:100%; height:auto; }
#dim-etf_options .sec-method { font:inherit; font-size:var(--fs-2xs); font-weight:600; display:inline-flex; align-items:center; gap:6px; min-height:32px; padding:0 12px; border:1px solid color-mix(in oklab,var(--accent) 30%,transparent); border-radius:999px; background:var(--accent-soft); color:var(--accent); cursor:pointer; transition:background var(--t-fast); }
#dim-etf_options .sec-method:hover { background:color-mix(in oklab,var(--accent) 18%,transparent); }

/* ── Venue banner ── */
#dim-etf_options .ovenue-banner { display:flex; align-items:center; gap:10px; margin:6px 0 14px; font-size:var(--fs-2xs); letter-spacing:.06em; color:var(--text-2); font-weight:600; }
#dim-etf_options .ovenue-banner .venue-tag { display:inline-grid; place-items:center; width:24px; height:24px; border-radius:6px; font-family:var(--font-mono); font-size:14px; font-weight:700; }
#dim-etf_options .ovenue-banner.etha .venue-tag { background:color-mix(in oklab,var(--etha) 22%,transparent); color:var(--etha); border:1px solid color-mix(in oklab,var(--etha) 42%,transparent); }
#dim-etf_options .ovenue-banner.deribit .venue-tag { background:color-mix(in oklab,var(--deribit) 22%,transparent); color:var(--deribit); border:1px solid color-mix(in oklab,var(--deribit) 42%,transparent); }
#dim-etf_options .ovenue-banner .venue-name { font-size:var(--fs-sm); }
#dim-etf_options .ovenue-banner.etha .venue-name { color:var(--etha); }
#dim-etf_options .ovenue-banner.deribit .venue-name { color:var(--deribit); }
#dim-etf_options .ovenue-banner .venue-sub { font-size:14px; color:var(--text-4); font-weight:500; letter-spacing:0; }
#dim-etf_options .ovenue-banner .venue-line { flex:1; height:1px; }
#dim-etf_options .ovenue-banner.etha .venue-line { background:linear-gradient(90deg,color-mix(in oklab,var(--etha) 30%,transparent),transparent); }
#dim-etf_options .ovenue-banner.deribit .venue-line { background:linear-gradient(90deg,color-mix(in oklab,var(--deribit) 30%,transparent),transparent); }

/* ── Chart inline (GEX profile / skew smile) + tabla ── */
#dim-etf_options .ma-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr); gap:16px; align-items:stretch; }
#dim-etf_options .ochart-card { border:1px solid var(--hairline); border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-1); padding:18px 20px 14px; display:flex; flex-direction:column; }
#dim-etf_options .ochart-card.bear { border-left:3px solid color-mix(in oklab,var(--down) 55%,transparent); }
#dim-etf_options .ochart-card.up { border-left:3px solid color-mix(in oklab,var(--up) 55%,transparent); }
#dim-etf_options .ochart-card.etha { border-left:3px solid color-mix(in oklab,var(--etha) 55%,transparent); }
#dim-etf_options .ochart-card.deribit { border-left:3px solid color-mix(in oklab,var(--deribit) 55%,transparent); }
#dim-etf_options .ochart-head { display:flex; align-items:center; gap:10px 12px; flex-wrap:wrap; }
#dim-etf_options .ochart-eyebrow { font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-etf_options .ochart-spot { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; }
#dim-etf_options .ochart-spot b { color:var(--text-2); font-weight:600; }
#dim-etf_options .otf { margin-left:auto; display:inline-flex; gap:4px; }
#dim-etf_options .otf button { font:inherit; font-family:var(--font-mono); font-size:14px; min-height:32px; min-width:40px; padding:0 9px; background:transparent; color:var(--text-3); border:1px solid var(--hairline); border-radius:var(--r-sm); cursor:pointer; transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast); }
#dim-etf_options .otf button:hover { color:var(--text-2); border-color:var(--hairline-strong); }
#dim-etf_options .otf button.active { background:var(--accent-soft); color:var(--accent); border-color:color-mix(in oklab,var(--accent) 34%,transparent); }
#dim-etf_options .ost-strip { display:flex; align-items:baseline; gap:9px 14px; flex-wrap:wrap; margin-top:13px; }
#dim-etf_options .ost-state { font-size:var(--fs-2xs); letter-spacing:.05em; text-transform:uppercase; font-weight:700; color:var(--down); }
#dim-etf_options .ost-state.up { color:var(--up); }
#dim-etf_options .ost-state .ar { font-size:14px; }
#dim-etf_options .ost-meta { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; }
#dim-etf_options .ost-meta b { color:var(--text-2); font-weight:600; }
#dim-etf_options .ochart-legend { display:flex; flex-wrap:wrap; gap:7px 14px; margin-top:13px; font-size:14px; color:var(--text-3); }
#dim-etf_options .ochart-legend .ser { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
#dim-etf_options .ochart-legend .ser .sw { width:13px; height:13px; border-radius:3px; flex:0 0 auto; }
#dim-etf_options .ochart-legend .ser .ln { width:16px; height:0; border-top-width:2px; border-top-style:solid; border-radius:2px; }
#dim-etf_options .ochart-legend .ser .ln.dash { border-top-style:dashed; }
#dim-etf_options .ochart-body { position:relative; flex:1; margin-top:12px; display:flex; }
#dim-etf_options .ochart-yaxis { display:flex; flex-direction:column; justify-content:space-between; padding:2px 10px 18px 0; font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; text-align:right; min-width:58px; }
#dim-etf_options .ochart-svg-wrap { flex:1; position:relative; min-height:230px; }
#dim-etf_options .ochart-svg { width:100%; height:100%; display:block; }
#dim-etf_options .ochart-x { display:flex; justify-content:space-between; margin-top:7px; font-family:var(--font-mono); font-size:14px; color:var(--text-4); padding-left:58px; }
#dim-etf_options .ochart-x .now { display:inline-flex; align-items:center; gap:5px; color:var(--text-3); }
#dim-etf_options .ochart-x .now .dot { width:6px; height:6px; border-radius:999px; background:var(--text-3); }
#dim-etf_options .ochart-foot { margin-top:9px; font-size:14px; color:var(--text-4); line-height:1.45; }
#dim-etf_options .ochart-foot b { color:var(--text-2); font-weight:600; }
#dim-etf_options .ochart-foot .flip { color:var(--down); font-weight:600; }
#dim-etf_options .oma-card { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:6px 4px; display:flex; flex-direction:column; justify-content:center; }
#dim-etf_options .oma-table { width:100%; border-collapse:collapse; }
#dim-etf_options .oma-table th { text-align:left; font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; padding:11px 18px 9px; border-bottom:1px solid var(--hairline); }
#dim-etf_options .oma-table th.r { text-align:right; }
#dim-etf_options .oma-table td { padding:13px 18px; border-bottom:1px solid var(--hairline); }
#dim-etf_options .oma-table tr:last-child td { border-bottom:0; }
#dim-etf_options .oma-name { font-size:var(--fs-sm); font-weight:600; color:var(--text); }
#dim-etf_options .oma-name .span { display:block; font-size:14px; color:var(--text-4); font-weight:500; }
#dim-etf_options .oma-val { font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--text-2); font-variant-numeric:tabular-nums; text-align:right; }
#dim-etf_options .oma-val.bear { color:var(--down); } #dim-etf_options .oma-val.up { color:var(--up); } #dim-etf_options .oma-val.warn { color:var(--warn); }
#dim-etf_options .oma-sig { text-align:right; }
#dim-etf_options .tag-sig { display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:999px; font-size:14px; font-weight:600; letter-spacing:.02em; }
#dim-etf_options .tag-sig .ar { font-size:9px; }
#dim-etf_options .tag-sig.bear { color:var(--down); background:color-mix(in oklab,var(--down) 13%,transparent); }
#dim-etf_options .tag-sig.up { color:var(--up); background:color-mix(in oklab,var(--up) 13%,transparent); }
#dim-etf_options .tag-sig.warn { color:var(--warn); background:color-mix(in oklab,var(--warn) 13%,transparent); }
#dim-etf_options .tag-sig.neu { color:var(--text-3); background:var(--surface-2); }

/* ── Indicadores de contexto (fichas → modal) ── */
#dim-etf_options .osc-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
#dim-etf_options .osc { position:relative; border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:14px 16px 13px; display:flex; flex-direction:column; gap:7px; cursor:pointer; text-align:left; font:inherit; width:100%; transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast),background var(--t-fast); }
#dim-etf_options .osc:hover { border-color:var(--hairline-strong); background:var(--surface-2); transform:translateY(-1px); box-shadow:var(--shadow-2); }
#dim-etf_options .osc:hover .osc-expand { opacity:1; color:var(--accent); }
#dim-etf_options .osc:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
#dim-etf_options .osc.etha { border-top:2px solid color-mix(in oklab,var(--etha) 45%,transparent); }
#dim-etf_options .osc.deribit { border-top:2px solid color-mix(in oklab,var(--deribit) 45%,transparent); }
#dim-etf_options .osc-top { display:flex; align-items:center; gap:8px; }
#dim-etf_options .osc-lbl { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-3); font-weight:600; }
#dim-etf_options .osc-expand { margin-left:auto; width:22px; height:22px; flex:0 0 auto; display:grid; place-items:center; color:var(--text-4); opacity:.6; transition:opacity var(--t-fast),color var(--t-fast); }
#dim-etf_options .osc-expand svg { width:14px; height:14px; }
#dim-etf_options .osc-row { display:flex; align-items:baseline; gap:10px; }
#dim-etf_options .osc-val { font-family:var(--font-mono); font-size:25px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; color:var(--text); }
#dim-etf_options .osc-val.bear { color:var(--down); } #dim-etf_options .osc-val.up { color:var(--up); } #dim-etf_options .osc-val.warn { color:var(--warn); }
#dim-etf_options .osc-val.sm { font-size:18px; }
#dim-etf_options .osc-meta { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; line-height:1.45; }
#dim-etf_options .osc-meta b { color:var(--text-2); font-weight:600; }
#dim-etf_options .osc-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; padding-top:2px; }
#dim-etf_options .osc-foot .tag-sig { font-size:14px; }

/* ── Tally summary ── */
#dim-etf_options .osummary { margin-top:24px; border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:18px 22px; }
#dim-etf_options .osummary-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
#dim-etf_options .osummary-lbl { font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-etf_options .osummary-verdict { font-size:var(--fs-2xs); font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
#dim-etf_options .osummary-verdict.bear { color:var(--down); } #dim-etf_options .osummary-verdict.up { color:var(--up); } #dim-etf_options .osummary-verdict.warn { color:var(--warn); }
#dim-etf_options .otally { display:flex; height:9px; border-radius:999px; overflow:hidden; }
#dim-etf_options .otally .bull { background:var(--up); } #dim-etf_options .otally .neu { background:var(--hairline-strong); } #dim-etf_options .otally .bear { background:var(--down); }
#dim-etf_options .otally-legend { display:flex; gap:18px; margin-top:11px; font-size:14px; color:var(--text-3); flex-wrap:wrap; }
#dim-etf_options .otally-legend span { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); }
#dim-etf_options .otally-legend em { width:9px; height:9px; border-radius:2px; font-style:normal; }
#dim-etf_options .otally-legend em.bull { background:var(--up); } #dim-etf_options .otally-legend em.neu { background:var(--hairline-strong); } #dim-etf_options .otally-legend em.bear { background:var(--down); }

/* responsive */
@media (max-width:1024px){
  #dim-etf_options .opt-hero { grid-template-columns:1fr; }
  #dim-etf_options .osc-grid { grid-template-columns:repeat(3,1fr); }
  #dim-etf_options .ma-layout { grid-template-columns:1fr; }
}
@media (max-width:640px){
  #dim-etf_options .overdict-top { flex-direction:column; align-items:center; text-align:center; gap:14px; padding:22px 18px 16px; }
  #dim-etf_options .olayer { grid-template-columns:1fr; gap:3px; }
  #dim-etf_options .osc-grid { grid-template-columns:repeat(2,1fr); }
  #dim-etf_options .otf { margin-left:0; width:100%; }
  #dim-etf_options .otf button { flex:1; }
}
@media (max-width:380px){
  #dim-etf_options .osc-grid { grid-template-columns:1fr; }
}

/* ════════════════ MODAL OPCIONES (scopeado a #opt-modal-host) ════════════════ */
/* Next phase · modal de ficha (mismo chrome que opt/tech, scopeado a su host) */
#np-modal-host .modal-backdrop { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:28px; background:color-mix(in oklab,var(--bg) 62%,transparent); backdrop-filter:blur(8px); }
#np-modal-host .modal-backdrop[hidden] { display:none; }
#np-modal-host .tmodal { position:relative; width:min(640px,92vw); max-height:88vh; overflow:auto; background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 82%,var(--accent) 5%) 0%, var(--surface) 30%); border:1px solid var(--hairline-strong); border-radius:var(--r-lg); box-shadow:var(--shadow-3); }
#np-modal-host .modal-head { display:flex; align-items:flex-start; gap:14px; padding:22px 64px 16px 24px; border-bottom:1px solid var(--hairline); }
#np-modal-host .modal-eyebrow { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#np-modal-host .modal-title { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin-top:4px; color:var(--text); }
#np-modal-host .modal-head .np-modal-pct { margin-left:auto; flex:0 0 auto; }
#np-modal-host .modal-close { position:absolute; top:16px; right:16px; width:40px; height:40px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-3); cursor:pointer; display:grid; place-items:center; z-index:2; }
#np-modal-host .modal-close:hover { color:var(--text); border-color:var(--hairline-strong); }
#np-modal-host .modal-close svg { width:18px; height:18px; }
#np-modal-host .modal-body { padding:6px 24px 22px; }
@media(max-width:640px){
  #np-modal-host .modal-backdrop { padding:0; }
  #np-modal-host .tmodal { width:100vw; max-width:100vw; height:100vh; max-height:100vh; border-radius:0; }
}
#opt-modal-host .modal-backdrop { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:28px; background:color-mix(in oklab,var(--bg) 62%,transparent); backdrop-filter:blur(8px); }
#opt-modal-host .modal-backdrop[hidden] { display:none; }
#opt-modal-host .tmodal { position:relative; width:min(720px,92vw); max-height:88vh; overflow:auto; background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 82%,var(--accent) 5%) 0%, var(--surface) 30%); border:1px solid var(--hairline-strong); border-radius:var(--r-lg); box-shadow:var(--shadow-3); }
#opt-modal-host .tmodal.bear { border-top:3px solid color-mix(in oklab,var(--down) 60%,transparent); }
#opt-modal-host .tmodal.up { border-top:3px solid color-mix(in oklab,var(--up) 60%,transparent); }
#opt-modal-host .tmodal.warn { border-top:3px solid color-mix(in oklab,var(--warn) 60%,transparent); }
#opt-modal-host .tmodal.etha { border-top:3px solid color-mix(in oklab,var(--etha) 60%,transparent); }
#opt-modal-host .tmodal.deribit { border-top:3px solid color-mix(in oklab,var(--deribit) 60%,transparent); }
#opt-modal-host .modal-head { display:flex; align-items:flex-start; gap:14px; padding:22px 64px 16px 24px; border-bottom:1px solid var(--hairline); }
#opt-modal-host .modal-eyebrow { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#opt-modal-host .modal-title { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin-top:4px; color:var(--text); }
#opt-modal-host .modal-title .span { display:block; font-family:var(--font-sans); font-size:14px; color:var(--text-4); font-weight:500; letter-spacing:0; margin-top:3px; }
#opt-modal-host .modal-head .hv { margin-left:auto; text-align:right; flex:0 0 auto; }
#opt-modal-host .modal-head .hv-num { font-family:var(--font-mono); font-size:34px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
#opt-modal-host .modal-head .hv-num.bear { color:var(--down); } #opt-modal-host .modal-head .hv-num.up { color:var(--up); } #opt-modal-host .modal-head .hv-num.warn { color:var(--warn); } #opt-modal-host .modal-head .hv-num.neu { color:var(--text-2); }
#opt-modal-host .modal-head .hv-sig { display:inline-flex; margin-top:8px; }
#opt-modal-host .modal-close { position:absolute; top:16px; right:16px; width:40px; height:40px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-3); cursor:pointer; display:grid; place-items:center; z-index:2; }
#opt-modal-host .modal-close:hover { color:var(--text); border-color:var(--hairline-strong); }
#opt-modal-host .modal-close svg { width:18px; height:18px; }
#opt-modal-host .modal-body { padding:18px 24px 22px; }
#opt-modal-host .modal-tabs { display:inline-flex; gap:4px; margin:4px 0; padding:4px; border:1px solid var(--hairline); border-radius:999px; background:color-mix(in oklab,var(--surface) 50%,transparent); }
#opt-modal-host .modal-tabs button { font:inherit; font-size:var(--fs-2xs); font-weight:600; min-height:34px; padding:0 16px; background:transparent; color:var(--text-3); border:0; border-radius:999px; cursor:pointer; display:inline-flex; align-items:center; gap:7px; transition:background var(--t-fast),color var(--t-fast); }
#opt-modal-host .modal-tabs button:hover { color:var(--text-2); }
#opt-modal-host .modal-tabs button[aria-selected="true"] { background:var(--accent-soft); color:var(--accent); }
#opt-modal-host .modal-tabs button .ti { width:15px; height:15px; flex:0 0 auto; }
#opt-modal-host .modal-tabs button .ti svg { width:15px; height:15px; display:block; }
#opt-modal-host .modal-panel[hidden] { display:none; }
#opt-modal-host .modal-chart { border:1px solid var(--hairline); border-radius:var(--r-md); background:color-mix(in oklab,var(--surface) 60%,transparent); padding:14px 16px 12px; margin-top:14px; }
#opt-modal-host .modal-chart-body { display:flex; margin-top:10px; }
#opt-modal-host .modal-chart .tchart-yaxis { padding-bottom:14px; }
#opt-modal-host .modal-chart .tchart-svg-wrap { min-height:180px; }
#opt-modal-host .modal-chart .tchart-x { margin-top:6px; }
#opt-modal-host .tchart-body { position:relative; flex:1; display:flex; }
#opt-modal-host .tchart-yaxis { display:flex; flex-direction:column; justify-content:space-between; padding:2px 10px 18px 0; font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; text-align:right; min-width:48px; }
#opt-modal-host .tchart-svg-wrap { flex:1; position:relative; }
#opt-modal-host .tchart-svg { width:100%; height:100%; display:block; }
#opt-modal-host .tchart-x { display:flex; justify-content:space-between; margin-top:7px; font-family:var(--font-mono); font-size:14px; color:var(--text-4); padding-left:48px; }
#opt-modal-host .tchart-x .now { display:inline-flex; align-items:center; gap:5px; }
#opt-modal-host .tchart-x .now .dot { width:6px; height:6px; border-radius:999px; background:currentColor; }
#opt-modal-host .modal-legend { display:flex; flex-wrap:wrap; gap:7px 14px; align-items:center; font-size:14px; color:var(--text-3); }
#opt-modal-host .modal-legend .ser { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); }
#opt-modal-host .modal-legend .ser .ln { width:16px; border-top-width:2px; border-top-style:solid; }
#opt-modal-host .modal-read { display:grid; grid-template-columns:104px 1fr; gap:13px; margin-top:16px; }
#opt-modal-host .modal-read + .modal-read { border-top:1px solid var(--hairline); padding-top:13px; }
#opt-modal-host .modal-read .k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#opt-modal-host .modal-read .v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
#opt-modal-host .modal-read .v b { color:var(--text); font-weight:600; }
#opt-modal-host .modal-stats { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
#opt-modal-host .modal-stat { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; padding:5px 10px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-2); }
#opt-modal-host .modal-stat .k { color:var(--text-4); }
#opt-modal-host .tmethod-intro { font-size:var(--fs-sm); color:var(--text-2); line-height:1.5; margin-top:14px; }
#opt-modal-host .tmethod-intro b { color:var(--text); font-weight:600; }
#opt-modal-host .method-block { margin-top:18px; }
#opt-modal-host .method-block + .method-block { border-top:1px solid var(--hairline); padding-top:16px; }
#opt-modal-host .method-h { display:flex; align-items:center; gap:9px; margin-bottom:10px; font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#opt-modal-host .method-h .seam { width:4px; height:14px; border-radius:2px; background:var(--accent); }
#opt-modal-host .method-formula { font-family:var(--font-mono); font-size:14px; color:var(--text-2); font-variant-numeric:tabular-nums; background:color-mix(in oklab,var(--surface) 60%,transparent); border:1px solid var(--hairline); border-radius:var(--r-sm); padding:10px 13px; line-height:1.55; overflow-wrap:anywhere; }
#opt-modal-host .method-formula b { color:var(--text); font-weight:600; }
#opt-modal-host .method-score { margin-top:14px; border:1px solid color-mix(in oklab,var(--accent) 26%,transparent); border-radius:var(--r-md); background:color-mix(in oklab,var(--accent) 7%,transparent); padding:14px 16px; }
#opt-modal-host .method-score-h { display:flex; align-items:center; gap:8px; margin-bottom:11px; font-size:var(--fs-2xs); letter-spacing:.08em; text-transform:uppercase; color:var(--accent); font-weight:700; }
#opt-modal-host .method-score-h .rh { font-size:14px; transform:translateY(.5px); }
#opt-modal-host .method-feed { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
#opt-modal-host .method-feed .cell { display:flex; flex-direction:column; gap:3px; }
#opt-modal-host .method-feed .cell .ck { font-size:14px; letter-spacing:.04em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#opt-modal-host .method-feed .cell .cv { font-family:var(--font-mono); font-size:var(--fs-md); font-weight:600; letter-spacing:-.01em; font-variant-numeric:tabular-nums; color:var(--text); line-height:1.1; }
#opt-modal-host .method-feed .cell .cv.bear { color:var(--down); } #opt-modal-host .method-feed .cell .cv.warn { color:var(--warn); } #opt-modal-host .method-feed .cell .cv.up { color:var(--up); }
#opt-modal-host .method-feed .cell .cs { font-size:14px; color:var(--text-3); line-height:1.35; }
#opt-modal-host .method-contrib { margin-top:13px; font-size:14px; color:var(--text-2); line-height:1.5; }
#opt-modal-host .method-contrib b { color:var(--text); font-weight:600; }
#opt-modal-host .method-contrib .tag.bear { color:var(--down); font-weight:600; } #opt-modal-host .method-contrib .tag.warn { color:var(--warn); font-weight:600; } #opt-modal-host .method-contrib .tag.up { color:var(--up); font-weight:600; }
#opt-modal-host .method-note { margin-top:14px; font-size:14px; color:var(--text-4); line-height:1.45; }
@media (max-width:640px){
  #opt-modal-host .modal-backdrop { padding:0; }
  #opt-modal-host .tmodal { width:100vw; max-width:100vw; height:100vh; max-height:100vh; border-radius:0; }
  #opt-modal-host .modal-read { grid-template-columns:1fr; gap:3px; }
  #opt-modal-host .modal-tabs { display:flex; width:100%; }
  #opt-modal-host .modal-tabs button { flex:1; justify-content:center; }
  #opt-modal-host .method-feed { grid-template-columns:1fr; }
}

/* ════════════════════════════════════════════════════════════════════════════
   SENTIMIENTO DETAIL · redesign portado del mockup (eth-desk-redesign/sentiment.html)
   TODO scopeado bajo #dim-sentiment (bloque) y #sent-modal-host (modales)
   para NO pisar Home/Technical/Opciones. Tokens ya en :root.
   NOTA de color: en sentimiento el TEMOR EXTREMO usa --warn (atención), NO --down.
   ════════════════════════════════════════════════════════════════════════════ */

/* ── HERO: veredicto (izq) + motor (der) ── */
#dim-sentiment .sent-hero { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:20px; align-items:stretch; margin-top:18px; }
#dim-sentiment .sverdict { position:relative; overflow:hidden; background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 80%,var(--accent) 6%) 0%, var(--surface) 42%); border:1px solid var(--hairline); border-radius:var(--r-lg); box-shadow:var(--shadow-2); display:flex; flex-direction:column; }
#dim-sentiment .sverdict.fear { border-left:3px solid color-mix(in oklab,var(--warn) 70%,transparent); }
#dim-sentiment .sverdict.up { border-left:3px solid color-mix(in oklab,var(--up) 70%,transparent); }
#dim-sentiment .sverdict.warn { border-left:3px solid color-mix(in oklab,var(--gold) 65%,transparent); }
#dim-sentiment .sverdict.neutral { border-left:3px solid var(--hairline-strong); }
#dim-sentiment .sverdict-top { display:flex; gap:22px; padding:24px 26px 20px; align-items:center; }
#dim-sentiment .sgauge { position:relative; flex:0 0 auto; width:132px; height:132px; display:grid; place-items:center; }
#dim-sentiment .sgauge svg.ring { position:absolute; inset:0; transform:rotate(-90deg); }
#dim-sentiment .sgauge .ring-track { stroke:var(--hairline-strong); }
#dim-sentiment .sgauge .rhombus { position:absolute; width:64px; height:64px; transform:rotate(45deg); border-radius:9px; border:1px solid color-mix(in oklab,var(--gv) 38%,transparent); background:color-mix(in oklab,var(--gv) 9%,transparent); }
#dim-sentiment .sgauge .gn { position:relative; text-align:center; line-height:1; }
#dim-sentiment .sgauge .gn-num { font-family:var(--font-mono); font-size:46px; font-weight:600; letter-spacing:-.03em; font-variant-numeric:tabular-nums; color:var(--gv); }
#dim-sentiment .sgauge .gn-den { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); display:block; margin-top:2px; }
#dim-sentiment .sgauge .gn-zone { font-size:14px; letter-spacing:.1em; text-transform:uppercase; color:var(--gv); font-weight:600; display:block; margin-top:5px; }
#dim-sentiment .sverdict-head { min-width:0; flex:1; }
#dim-sentiment .sverdict-cat, #dim-sentiment .slayer-v { overflow-wrap:anywhere; }
#dim-sentiment .sverdict-eyebrow { display:flex; align-items:center; gap:9px; font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-sentiment .sverdict-eyebrow .rh { color:var(--oxblood); font-size:14px; transform:translateY(.5px); }
#dim-sentiment .sverdict-cat { font-family:var(--font-serif); font-weight:600; line-height:1.08; letter-spacing:-.01em; font-size:31px; margin-top:7px; color:var(--text); }
#dim-sentiment .sverdict-cat .fear-word { color:var(--warn); } #dim-sentiment .sverdict-cat .up-word { color:var(--up); } #dim-sentiment .sverdict-cat .warn-word { color:var(--gold); }
#dim-sentiment .sregime-chips { display:flex; flex-wrap:wrap; gap:7px; margin-top:11px; }
#dim-sentiment .srchip { display:inline-flex; align-items:center; gap:6px; padding:5px 11px; min-height:32px; border-radius:999px; font-size:var(--fs-2xs); font-weight:600; white-space:nowrap; border:1px solid var(--hairline-strong); color:var(--text-2); background:var(--surface-2); }
#dim-sentiment .srchip .ar { font-size:14px; line-height:1; font-weight:700; }
#dim-sentiment .srchip.extreme .ar { display:inline-grid; place-items:center; width:14px; height:14px; border-radius:999px; border:1.5px solid currentColor; font-size:9px; }
#dim-sentiment .srchip.fear { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 34%,transparent); background:color-mix(in oklab,var(--warn) 13%,transparent); }
#dim-sentiment .srchip.extreme { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 40%,transparent); background:color-mix(in oklab,var(--warn) 15%,transparent); }
#dim-sentiment .srchip.contrarian { color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); background:color-mix(in oklab,var(--up) 12%,transparent); }
#dim-sentiment .srchip.bear { color:var(--down); border-color:color-mix(in oklab,var(--down) 34%,transparent); background:color-mix(in oklab,var(--down) 14%,transparent); }
#dim-sentiment .srchip.up { color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); background:color-mix(in oklab,var(--up) 12%,transparent); }
#dim-sentiment .slayers { border-top:1px solid var(--hairline); padding:16px 26px 18px; background:color-mix(in oklab,var(--surface) 60%,transparent); }
#dim-sentiment .slayers-label { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; margin-bottom:12px; }
#dim-sentiment .slayer { display:grid; grid-template-columns:104px 1fr; gap:14px; align-items:baseline; padding:9px 0; }
#dim-sentiment .slayer + .slayer { border-top:1px solid var(--hairline); }
#dim-sentiment .slayer-k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#dim-sentiment .slayer-v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
#dim-sentiment .slayer-v b { color:var(--text); font-weight:600; }
#dim-sentiment .slayer-v .tag { font-weight:600; }
#dim-sentiment .slayer-v .tag.fear, #dim-sentiment .slayer-v .tag.warn { color:var(--warn); } #dim-sentiment .slayer-v .tag.up { color:var(--up); } #dim-sentiment .slayer-v .tag.bear { color:var(--down); }
#dim-sentiment .sverdict-foot { margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:13px 26px; border-top:1px solid var(--hairline); font-size:var(--fs-2xs); color:var(--text-4); }
#dim-sentiment .sverdict-foot .brand { font-family:var(--font-serif); color:var(--text-3); }
#dim-sentiment .sverdict-foot .more { font-family:var(--font-sans); color:var(--accent); cursor:pointer; font-weight:600; background:none; border:0; min-height:32px; font-size:var(--fs-2xs); }

/* ── Motor: F&G driver + confirmación de contexto ── */
#dim-sentiment .sengine-col { display:flex; flex-direction:column; gap:14px; align-self:start; }
#dim-sentiment .sengine-head { display:flex; align-items:center; gap:9px; font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-sentiment .sengine-head .seam { width:4px; height:15px; border-radius:2px; background:var(--accent); }
#dim-sentiment .sengine-head .hint { margin-left:auto; font-size:14px; letter-spacing:.02em; text-transform:none; color:var(--text-4); font-weight:500; }
#dim-sentiment .sviz { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:16px 18px 15px; display:flex; flex-direction:column; }
#dim-sentiment .sviz.fear { border-left:3px solid color-mix(in oklab,var(--warn) 55%,transparent); }
#dim-sentiment .sviz.up { border-left:3px solid color-mix(in oklab,var(--up) 55%,transparent); }
#dim-sentiment .sviz.bear { border-left:3px solid color-mix(in oklab,var(--down) 55%,transparent); }
#dim-sentiment .sviz.warn { border-left:3px solid color-mix(in oklab,var(--gold) 55%,transparent); }
#dim-sentiment .sviz.neutral { border-left:3px solid var(--hairline-strong); }
#dim-sentiment .sviz-label { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-2); font-weight:600; }
#dim-sentiment .sviz-label .sub { display:block; margin-top:2px; font-size:14px; letter-spacing:0; color:var(--text-4); font-weight:500; text-transform:none; }
#dim-sentiment .ss-head { display:flex; align-items:baseline; gap:10px; margin-top:12px; }
#dim-sentiment .ss-tag { font-size:var(--fs-xs); letter-spacing:.04em; font-weight:700; }
#dim-sentiment .ss-tag.fear, #dim-sentiment .ss-tag.warn { color:var(--warn); } #dim-sentiment .ss-tag.up { color:var(--up); } #dim-sentiment .ss-tag.bear { color:var(--down); } #dim-sentiment .ss-tag.neutral { color:var(--text-2); }
#dim-sentiment .ss-num { margin-left:auto; font-family:var(--font-mono); font-size:32px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
#dim-sentiment .ss-num.fear, #dim-sentiment .ss-num.warn { color:var(--warn); } #dim-sentiment .ss-num.up { color:var(--up); } #dim-sentiment .ss-num.bear { color:var(--down); } #dim-sentiment .ss-num.neutral { color:var(--text-2); }
#dim-sentiment .ss-num .den { font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; }
/* F&G zoned bar: temor extremo · temor · neutral · codicia · codicia extrema */
#dim-sentiment .ssb { position:relative; height:7px; border-radius:999px; overflow:hidden; display:flex; margin-top:12px; }
#dim-sentiment .ssb .z { height:100%; }
#dim-sentiment .ssb .z-xfear { width:25%; background:color-mix(in oklab,var(--warn) 52%,transparent); }
#dim-sentiment .ssb .z-fear { width:20%; background:color-mix(in oklab,var(--warn) 26%,transparent); }
#dim-sentiment .ssb .z-neu { width:10%; background:var(--hairline-strong); }
#dim-sentiment .ssb .z-greed { width:20%; background:color-mix(in oklab,var(--up) 26%,transparent); }
#dim-sentiment .ssb .z-xgreed { width:25%; background:color-mix(in oklab,var(--up) 52%,transparent); }
#dim-sentiment .ssb-marker { position:absolute; top:50%; width:3px; height:15px; border-radius:2px; transform:translate(-50%,-50%); box-shadow:0 0 0 2px var(--surface); }
#dim-sentiment .ss-story { margin-top:11px; font-size:14px; color:var(--text-3); line-height:1.45; }
#dim-sentiment .ss-story b { font-weight:600; color:var(--text-2); }
#dim-sentiment .ss-tiers { display:flex; flex-wrap:wrap; gap:6px; margin-top:11px; }
#dim-sentiment .ss-tier { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; padding:3px 8px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); display:inline-flex; align-items:center; gap:5px; color:var(--text-2); }
#dim-sentiment .ss-tier .ar { font-size:14px; }
#dim-sentiment .ss-tier.up { color:var(--up); border-color:color-mix(in oklab,var(--up) 28%,transparent); }
#dim-sentiment .ss-tier.bear { color:var(--down); border-color:color-mix(in oklab,var(--down) 28%,transparent); }
#dim-sentiment .ss-tier.fear, #dim-sentiment .ss-tier.warn { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 28%,transparent); }
#dim-sentiment .ss-tier.neutral { color:var(--text-2); }
#dim-sentiment .sengine-method { display:inline-flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:42px; font:inherit; font-size:var(--fs-2xs); font-weight:600; cursor:pointer; background:var(--surface); color:var(--accent); border:1px solid color-mix(in oklab,var(--accent) 28%,transparent); border-radius:var(--r-md); box-shadow:var(--shadow-1); transition:background var(--t-fast),border-color var(--t-fast); }
#dim-sentiment .sengine-method:hover { background:var(--accent-soft); border-color:color-mix(in oklab,var(--accent) 44%,transparent); }
#dim-sentiment .sengine-method svg { width:16px; height:16px; }

/* ── Section titles ── */
#dim-sentiment .ssec { margin-top:36px; }
#dim-sentiment .ssec-title { display:flex; align-items:center; gap:14px; margin-bottom:8px; flex-wrap:wrap; }
#dim-sentiment .ssec-title .dot { width:8px; height:8px; transform:rotate(45deg); background:var(--accent); border-radius:2px; }
#dim-sentiment .ssec-title .dot.ctx { background:var(--text-3); }
#dim-sentiment .ssec-title .dot.phase { background:var(--warn); }
#dim-sentiment .ssec-title h3 { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin:0; }
#dim-sentiment .ssec-title .line { flex:1; height:1px; background:var(--hairline); }
#dim-sentiment .ssec-title .badge { font-size:var(--fs-2xs); font-family:var(--font-mono); color:var(--text-3); border:1px solid var(--hairline); padding:3px 9px; border-radius:999px; }
#dim-sentiment .ssec-sub { font-size:var(--fs-2xs); color:var(--text-4); margin-bottom:16px; line-height:1.5; }
#dim-sentiment .ssec-sub b { color:var(--text-2); font-weight:600; }
#dim-sentiment .sec-method { font:inherit; font-size:var(--fs-2xs); font-weight:600; display:inline-flex; align-items:center; gap:6px; min-height:32px; padding:0 12px; border:1px solid color-mix(in oklab,var(--accent) 30%,transparent); border-radius:999px; background:var(--accent-soft); color:var(--accent); cursor:pointer; transition:background var(--t-fast); }
#dim-sentiment .sec-method:hover { background:color-mix(in oklab,var(--accent) 18%,transparent); }

/* ── Chart inline (F&G histórico) + tabla lectura ── */
#dim-sentiment .ma-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(0,1fr); gap:16px; align-items:stretch; }
#dim-sentiment .schart-card { border:1px solid var(--hairline); border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-1); padding:18px 20px 14px; display:flex; flex-direction:column; }
#dim-sentiment .schart-card.fear { border-left:3px solid color-mix(in oklab,var(--warn) 55%,transparent); }
#dim-sentiment .schart-card.up { border-left:3px solid color-mix(in oklab,var(--up) 55%,transparent); }
#dim-sentiment .schart-card.warn { border-left:3px solid color-mix(in oklab,var(--gold) 55%,transparent); }
#dim-sentiment .schart-card.neutral { border-left:3px solid var(--hairline-strong); }
#dim-sentiment .schart-head { display:flex; align-items:center; gap:10px 12px; flex-wrap:wrap; }
#dim-sentiment .schart-eyebrow { font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#dim-sentiment .schart-spot { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; }
#dim-sentiment .schart-spot b { color:var(--text-2); font-weight:600; }
#dim-sentiment .stf { margin-left:auto; display:inline-flex; gap:4px; }
#dim-sentiment .stf button { font:inherit; font-family:var(--font-mono); font-size:14px; min-height:32px; min-width:40px; padding:0 9px; background:transparent; color:var(--text-3); border:1px solid var(--hairline); border-radius:var(--r-sm); cursor:pointer; transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast); }
#dim-sentiment .stf button:hover { color:var(--text-2); border-color:var(--hairline-strong); }
#dim-sentiment .stf button.active { background:var(--accent-soft); color:var(--accent); border-color:color-mix(in oklab,var(--accent) 34%,transparent); }
#dim-sentiment .sst-strip { display:flex; align-items:baseline; gap:9px 14px; flex-wrap:wrap; margin-top:13px; }
#dim-sentiment .sst-state { font-size:var(--fs-2xs); letter-spacing:.05em; text-transform:uppercase; font-weight:700; color:var(--warn); }
#dim-sentiment .sst-state.up { color:var(--up); } #dim-sentiment .sst-state.bear { color:var(--down); } #dim-sentiment .sst-state.warn { color:var(--gold); } #dim-sentiment .sst-state.neutral { color:var(--text-2); }
#dim-sentiment .sst-state .ar { font-size:14px; }
#dim-sentiment .sst-meta { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; }
#dim-sentiment .sst-meta b { color:var(--text-2); font-weight:600; }
#dim-sentiment .schart-legend { display:flex; flex-wrap:wrap; gap:7px 14px; margin-top:13px; font-size:14px; color:var(--text-3); }
#dim-sentiment .schart-legend .ser { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); font-variant-numeric:tabular-nums; }
#dim-sentiment .schart-legend .ser .sw { width:14px; height:10px; border-radius:3px; flex:0 0 auto; }
#dim-sentiment .schart-legend .ser .ln { width:16px; height:0; border-top-width:2px; border-top-style:solid; border-radius:2px; }
#dim-sentiment .schart-body { position:relative; flex:1; margin-top:12px; display:flex; }
#dim-sentiment .schart-yaxis { display:flex; flex-direction:column; justify-content:space-between; padding:2px 10px 18px 0; font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; text-align:right; min-width:58px; }
#dim-sentiment .schart-svg-wrap { flex:1; position:relative; min-height:230px; }
#dim-sentiment .schart-svg { width:100%; height:100%; display:block; }
#dim-sentiment .schart-x { display:flex; justify-content:space-between; margin-top:7px; font-family:var(--font-mono); font-size:14px; color:var(--text-4); padding-left:58px; }
#dim-sentiment .schart-x .now { display:inline-flex; align-items:center; gap:5px; color:var(--warn); }
#dim-sentiment .schart-x .now .dot { width:6px; height:6px; border-radius:999px; background:var(--warn); }
#dim-sentiment .schart-foot { margin-top:9px; font-size:14px; color:var(--text-4); line-height:1.45; }
#dim-sentiment .schart-foot b { color:var(--text-2); font-weight:600; }
#dim-sentiment .schart-foot .flip { color:var(--warn); font-weight:600; }
#dim-sentiment .schart-foot .up { color:var(--up); font-weight:600; }
#dim-sentiment .sma-card { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:6px 4px; display:flex; flex-direction:column; justify-content:center; }
#dim-sentiment .sma-table { width:100%; border-collapse:collapse; }
#dim-sentiment .sma-table th { text-align:left; font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; padding:11px 18px 9px; border-bottom:1px solid var(--hairline); }
#dim-sentiment .sma-table th.r { text-align:right; }
#dim-sentiment .sma-table td { padding:13px 18px; border-bottom:1px solid var(--hairline); }
#dim-sentiment .sma-table tr:last-child td { border-bottom:0; }
#dim-sentiment .sma-name { font-size:var(--fs-sm); font-weight:600; color:var(--text); }
#dim-sentiment .sma-name .span { display:block; font-size:14px; color:var(--text-4); font-weight:500; }
#dim-sentiment .sma-val { font-family:var(--font-mono); font-size:var(--fs-sm); color:var(--text-2); font-variant-numeric:tabular-nums; text-align:right; }
#dim-sentiment .sma-val.fear, #dim-sentiment .sma-val.warn { color:var(--warn); } #dim-sentiment .sma-val.up { color:var(--up); } #dim-sentiment .sma-val.bear { color:var(--down); } #dim-sentiment .sma-val.neutral { color:var(--text-2); }
#dim-sentiment .sma-sig { text-align:right; }
#dim-sentiment .tag-sig { display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:999px; font-size:14px; font-weight:600; letter-spacing:.02em; }
#dim-sentiment .tag-sig .ar { font-size:9px; }
#dim-sentiment .tag-sig.fear, #dim-sentiment .tag-sig.warn { color:var(--warn); background:color-mix(in oklab,var(--warn) 13%,transparent); }
#dim-sentiment .tag-sig.bear { color:var(--down); background:color-mix(in oklab,var(--down) 13%,transparent); }
#dim-sentiment .tag-sig.up { color:var(--up); background:color-mix(in oklab,var(--up) 13%,transparent); }
#dim-sentiment .tag-sig.neutral { color:var(--text-2); background:var(--surface-2); }
#dim-sentiment .tag-sig.neu { color:var(--text-3); background:var(--surface-2); }

/* ── Fichas de contexto → modal ── */
#dim-sentiment .ssc-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
#dim-sentiment .ssc { position:relative; border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:14px 16px 13px; display:flex; flex-direction:column; gap:7px; cursor:pointer; text-align:left; font:inherit; width:100%; transition:border-color var(--t-fast),transform var(--t-fast),box-shadow var(--t-fast),background var(--t-fast); }
#dim-sentiment .ssc:hover { border-color:var(--hairline-strong); background:var(--surface-2); transform:translateY(-1px); box-shadow:var(--shadow-2); }
#dim-sentiment .ssc:hover .ssc-expand { opacity:1; color:var(--accent); }
#dim-sentiment .ssc:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
#dim-sentiment .ssc.locked { cursor:default; opacity:.62; }
#dim-sentiment .ssc.locked:hover { transform:none; box-shadow:var(--shadow-1); border-color:var(--hairline); background:var(--surface); }
#dim-sentiment .ssc-top { display:flex; align-items:center; gap:8px; }
#dim-sentiment .ssc-lbl { font-size:var(--fs-2xs); letter-spacing:.04em; color:var(--text-3); font-weight:600; }
#dim-sentiment .ssc-phase { margin-left:auto; font-size:14px; font-family:var(--font-mono); color:var(--text-4); border:1px solid var(--hairline); border-radius:999px; padding:1px 8px; }
#dim-sentiment .ssc-expand { margin-left:auto; width:22px; height:22px; flex:0 0 auto; display:grid; place-items:center; color:var(--text-4); opacity:.6; transition:opacity var(--t-fast),color var(--t-fast); }
#dim-sentiment .ssc-expand svg { width:14px; height:14px; }
#dim-sentiment .ssc-row { display:flex; align-items:baseline; gap:10px; }
#dim-sentiment .ssc-val { font-family:var(--font-mono); font-size:25px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; color:var(--text); }
#dim-sentiment .ssc-val.fear, #dim-sentiment .ssc-val.warn { color:var(--warn); } #dim-sentiment .ssc-val.bear { color:var(--down); } #dim-sentiment .ssc-val.up { color:var(--up); }
#dim-sentiment .ssc-val.sm { font-size:18px; }
#dim-sentiment .ssc-meta { font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; line-height:1.45; }
#dim-sentiment .ssc-meta b { color:var(--text-2); font-weight:600; }
#dim-sentiment .ssc-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; padding-top:2px; }
#dim-sentiment .ssc-foot .tag-sig { font-size:14px; }

/* responsive */
@media (max-width:1024px){
  #dim-sentiment .sent-hero { grid-template-columns:1fr; }
  #dim-sentiment .ssc-grid { grid-template-columns:repeat(3,1fr); }
  #dim-sentiment .ma-layout { grid-template-columns:1fr; }
}
@media (max-width:640px){
  #dim-sentiment .sverdict-top { flex-direction:column; align-items:center; text-align:center; gap:14px; padding:22px 18px 16px; }
  #dim-sentiment .slayer { grid-template-columns:1fr; gap:3px; }
  #dim-sentiment .ssc-grid { grid-template-columns:repeat(2,1fr); }
  #dim-sentiment .stf { margin-left:0; width:100%; }
  #dim-sentiment .stf button { flex:1; }
}
@media (max-width:380px){
  #dim-sentiment .ssc-grid { grid-template-columns:1fr; }
}

/* ════════════════ MODAL SENTIMIENTO (scopeado a #sent-modal-host) ════════════════ */
#sent-modal-host .modal-backdrop { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:28px; background:color-mix(in oklab,var(--bg) 62%,transparent); backdrop-filter:blur(8px); }
#sent-modal-host .modal-backdrop[hidden] { display:none; }
#sent-modal-host .tmodal { position:relative; width:min(720px,92vw); max-height:88vh; overflow:auto; background:linear-gradient(180deg, color-mix(in oklab,var(--surface) 82%,var(--accent) 5%) 0%, var(--surface) 30%); border:1px solid var(--hairline-strong); border-radius:var(--r-lg); box-shadow:var(--shadow-3); }
#sent-modal-host .tmodal.fear, #sent-modal-host .tmodal.warn { border-top:3px solid color-mix(in oklab,var(--warn) 60%,transparent); }
#sent-modal-host .tmodal.up { border-top:3px solid color-mix(in oklab,var(--up) 60%,transparent); }
#sent-modal-host .tmodal.bear { border-top:3px solid color-mix(in oklab,var(--down) 60%,transparent); }
#sent-modal-host .modal-head { display:flex; align-items:flex-start; gap:14px; padding:22px 64px 16px 24px; border-bottom:1px solid var(--hairline); }
#sent-modal-host .modal-eyebrow { font-size:var(--fs-2xs); letter-spacing:.12em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#sent-modal-host .modal-title { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; margin-top:4px; color:var(--text); }
#sent-modal-host .modal-title .span { display:block; font-family:var(--font-sans); font-size:14px; color:var(--text-4); font-weight:500; letter-spacing:0; margin-top:3px; }
#sent-modal-host .modal-head .hv { margin-left:auto; text-align:right; flex:0 0 auto; padding-right:4px; }
#sent-modal-host .modal-head .hv-num { font-family:var(--font-mono); font-size:34px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
#sent-modal-host .modal-head .hv-num.fear, #sent-modal-host .modal-head .hv-num.warn { color:var(--warn); } #sent-modal-host .modal-head .hv-num.up { color:var(--up); } #sent-modal-host .modal-head .hv-num.bear { color:var(--down); } #sent-modal-host .modal-head .hv-num.neu, #sent-modal-host .modal-head .hv-num.neutral { color:var(--text-2); }
#sent-modal-host .modal-head .hv-sig { display:inline-flex; margin-top:8px; }
#sent-modal-host .tag-sig { display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:999px; font-size:14px; font-weight:600; letter-spacing:.02em; }
#sent-modal-host .tag-sig .ar { font-size:9px; }
#sent-modal-host .tag-sig.fear, #sent-modal-host .tag-sig.warn { color:var(--warn); background:color-mix(in oklab,var(--warn) 13%,transparent); }
#sent-modal-host .tag-sig.bear { color:var(--down); background:color-mix(in oklab,var(--down) 13%,transparent); }
#sent-modal-host .tag-sig.up { color:var(--up); background:color-mix(in oklab,var(--up) 13%,transparent); }
#sent-modal-host .tag-sig.neutral, #sent-modal-host .tag-sig.neu { color:var(--text-3); background:var(--surface-2); }
#sent-modal-host .modal-close { position:absolute; top:16px; right:16px; width:40px; height:40px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-3); cursor:pointer; display:grid; place-items:center; z-index:2; }
#sent-modal-host .modal-close:hover { color:var(--text); border-color:var(--hairline-strong); }
#sent-modal-host .modal-close svg { width:18px; height:18px; }
#sent-modal-host .modal-body { padding:18px 24px 22px; }
#sent-modal-host .modal-tabs { display:inline-flex; gap:4px; margin:4px 0; padding:4px; border:1px solid var(--hairline); border-radius:999px; background:color-mix(in oklab,var(--surface) 50%,transparent); }
#sent-modal-host .modal-tabs button { font:inherit; font-size:var(--fs-2xs); font-weight:600; min-height:34px; padding:0 16px; background:transparent; color:var(--text-3); border:0; border-radius:999px; cursor:pointer; display:inline-flex; align-items:center; gap:7px; transition:background var(--t-fast),color var(--t-fast); }
#sent-modal-host .modal-tabs button:hover { color:var(--text-2); }
#sent-modal-host .modal-tabs button[aria-selected="true"] { background:var(--accent-soft); color:var(--accent); }
#sent-modal-host .modal-tabs button .ti { width:15px; height:15px; flex:0 0 auto; }
#sent-modal-host .modal-tabs button .ti svg { width:15px; height:15px; display:block; }
#sent-modal-host .modal-panel[hidden] { display:none; }
#sent-modal-host .modal-chart { border:1px solid var(--hairline); border-radius:var(--r-md); background:color-mix(in oklab,var(--surface) 60%,transparent); padding:14px 16px 12px; margin-top:14px; }
#sent-modal-host .modal-chart-body { display:flex; margin-top:10px; }
#sent-modal-host .modal-chart .tchart-yaxis { padding-bottom:14px; }
#sent-modal-host .modal-chart .tchart-svg-wrap { min-height:180px; }
#sent-modal-host .modal-chart .tchart-x { margin-top:6px; }
#sent-modal-host .tchart-body { position:relative; flex:1; display:flex; }
#sent-modal-host .tchart-yaxis { display:flex; flex-direction:column; justify-content:space-between; padding:2px 10px 18px 0; font-family:var(--font-mono); font-size:14px; color:var(--text-4); font-variant-numeric:tabular-nums; text-align:right; min-width:48px; }
#sent-modal-host .tchart-svg-wrap { flex:1; position:relative; }
#sent-modal-host .tchart-svg { width:100%; height:100%; display:block; }
#sent-modal-host .tchart-x { display:flex; justify-content:space-between; margin-top:7px; font-family:var(--font-mono); font-size:14px; color:var(--text-4); padding-left:48px; }
#sent-modal-host .tchart-x .now { display:inline-flex; align-items:center; gap:5px; }
#sent-modal-host .tchart-x .now .dot { width:6px; height:6px; border-radius:999px; background:currentColor; }
#sent-modal-host .modal-legend { display:flex; flex-wrap:wrap; gap:7px 14px; align-items:center; font-size:14px; color:var(--text-3); }
#sent-modal-host .modal-legend .ser { display:inline-flex; align-items:center; gap:7px; font-family:var(--font-mono); }
#sent-modal-host .modal-legend .ser .ln { width:16px; border-top-width:2px; border-top-style:solid; }
/* valor actual limpio cuando no hay serie histórica */
#sent-modal-host .modal-current { border:1px solid var(--hairline); border-radius:var(--r-md); background:color-mix(in oklab,var(--surface) 60%,transparent); padding:18px 20px; margin-top:14px; text-align:center; }
#sent-modal-host .modal-current-k { font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#sent-modal-host .modal-current-v { font-family:var(--font-mono); font-size:40px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1.1; margin-top:8px; color:var(--text); }
#sent-modal-host .modal-current-v.fear, #sent-modal-host .modal-current-v.warn { color:var(--warn); } #sent-modal-host .modal-current-v.up { color:var(--up); } #sent-modal-host .modal-current-v.bear { color:var(--down); }
#sent-modal-host .modal-current-s { font-family:var(--font-mono); font-size:14px; color:var(--text-4); margin-top:6px; }
#sent-modal-host .modal-read { display:grid; grid-template-columns:104px 1fr; gap:13px; margin-top:16px; }
#sent-modal-host .modal-read + .modal-read { border-top:1px solid var(--hairline); padding-top:13px; }
#sent-modal-host .modal-read .k { font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#sent-modal-host .modal-read .v { font-size:var(--fs-sm); color:var(--text-2); line-height:1.45; }
#sent-modal-host .modal-read .v b { color:var(--text); font-weight:600; }
#sent-modal-host .modal-read .v .tag.warn, #sent-modal-host .modal-read .v .tag.fear { color:var(--warn); font-weight:600; } #sent-modal-host .modal-read .v .tag.bear { color:var(--down); font-weight:600; } #sent-modal-host .modal-read .v .tag.up { color:var(--up); font-weight:600; }
#sent-modal-host .modal-stats { display:flex; flex-wrap:wrap; gap:8px; margin-top:16px; }
#sent-modal-host .modal-stat { font-family:var(--font-mono); font-size:14px; font-variant-numeric:tabular-nums; padding:5px 10px; border-radius:var(--r-sm); border:1px solid var(--hairline); background:var(--surface-2); color:var(--text-2); }
#sent-modal-host .modal-stat .k { color:var(--text-4); }
#sent-modal-host .tmethod-intro { font-size:var(--fs-sm); color:var(--text-2); line-height:1.5; margin-top:14px; }
#sent-modal-host .tmethod-intro b { color:var(--text); font-weight:600; }
#sent-modal-host .method-block { margin-top:18px; }
#sent-modal-host .method-block + .method-block { border-top:1px solid var(--hairline); padding-top:16px; }
#sent-modal-host .method-h { display:flex; align-items:center; gap:9px; margin-bottom:10px; font-size:var(--fs-2xs); letter-spacing:.1em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
#sent-modal-host .method-h .seam { width:4px; height:14px; border-radius:2px; background:var(--accent); }
#sent-modal-host .method-formula { font-family:var(--font-mono); font-size:14px; color:var(--text-2); font-variant-numeric:tabular-nums; background:color-mix(in oklab,var(--surface) 60%,transparent); border:1px solid var(--hairline); border-radius:var(--r-sm); padding:10px 13px; line-height:1.55; overflow-wrap:anywhere; }
#sent-modal-host .method-formula b { color:var(--text); font-weight:600; }
#sent-modal-host .method-steps { list-style:none; counter-reset:ms; margin-top:11px; display:flex; flex-direction:column; gap:9px; padding:0; }
#sent-modal-host .method-steps li { display:grid; grid-template-columns:24px 1fr; gap:11px; align-items:baseline; font-size:14px; color:var(--text-2); line-height:1.5; }
#sent-modal-host .method-steps li::before { counter-increment:ms; content:counter(ms); font-family:var(--font-mono); font-size:14px; font-weight:600; width:24px; height:24px; display:grid; place-items:center; border-radius:var(--r-sm); border:1px solid var(--hairline-strong); color:var(--text-3); background:var(--surface-2); }
#sent-modal-host .method-steps li b { color:var(--text); font-weight:600; }
#sent-modal-host .method-score { margin-top:14px; border:1px solid color-mix(in oklab,var(--accent) 26%,transparent); border-radius:var(--r-md); background:color-mix(in oklab,var(--accent) 7%,transparent); padding:14px 16px; }
#sent-modal-host .method-score-h { display:flex; align-items:center; gap:8px; margin-bottom:11px; font-size:var(--fs-2xs); letter-spacing:.08em; text-transform:uppercase; color:var(--accent); font-weight:700; }
#sent-modal-host .method-score-h .rh { font-size:14px; transform:translateY(.5px); }
#sent-modal-host .method-feed { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
#sent-modal-host .method-feed .cell { display:flex; flex-direction:column; gap:3px; }
#sent-modal-host .method-feed .cell .ck { font-size:14px; letter-spacing:.04em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
#sent-modal-host .method-feed .cell .cv { font-family:var(--font-mono); font-size:var(--fs-md); font-weight:600; letter-spacing:-.01em; font-variant-numeric:tabular-nums; color:var(--text); line-height:1.1; }
#sent-modal-host .method-feed .cell .cv.fear, #sent-modal-host .method-feed .cell .cv.warn { color:var(--warn); } #sent-modal-host .method-feed .cell .cv.bear { color:var(--down); } #sent-modal-host .method-feed .cell .cv.up { color:var(--up); } #sent-modal-host .method-feed .cell .cv.neutral { color:var(--text-2); }
#sent-modal-host .method-feed .cell .cs { font-size:14px; color:var(--text-3); line-height:1.35; }
#sent-modal-host .method-contrib { margin-top:13px; font-size:14px; color:var(--text-2); line-height:1.5; }
#sent-modal-host .method-contrib b { color:var(--text); font-weight:600; }
#sent-modal-host .method-contrib .tag.bear { color:var(--down); font-weight:600; } #sent-modal-host .method-contrib .tag.warn, #sent-modal-host .method-contrib .tag.fear { color:var(--warn); font-weight:600; } #sent-modal-host .method-contrib .tag.up { color:var(--up); font-weight:600; }
#sent-modal-host .method-note { margin-top:14px; font-size:14px; color:var(--text-4); line-height:1.45; }
@media (max-width:640px){
  #sent-modal-host .modal-backdrop { padding:0; }
  #sent-modal-host .tmodal { width:100vw; max-width:100vw; height:100vh; max-height:100vh; border-radius:0; }
  #sent-modal-host .modal-head { flex-direction:column; align-items:flex-start; gap:10px; padding:20px 60px 14px 18px; }
  #sent-modal-host .modal-head .hv { margin-left:0; text-align:left; padding-right:0; }
  #sent-modal-host .modal-read { grid-template-columns:1fr; gap:3px; }
  #sent-modal-host .modal-tabs { display:flex; width:100%; }
  #sent-modal-host .modal-tabs button { flex:1; justify-content:center; }
  #sent-modal-host .method-feed { grid-template-columns:1fr; }
}

/* Masthead vista Technical (titulo por-vista, como el mock) */
#dim-technical .tmast { padding:6px 0 14px; display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; }
#dim-technical .tmast-left { min-width:0; }
#dim-technical .tmast-kicker { font-family:var(--font-mono); font-size:var(--fs-2xs); letter-spacing:.14em; text-transform:uppercase; color:var(--text-3); display:flex; align-items:center; gap:7px; }
#dim-technical .tmast-kicker .rh { color:var(--oxblood); font-size:14px; }
#dim-technical .tmast-kicker span { color:var(--text-2); }
#dim-technical .tmast-h1 { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.015em; margin:6px 0 0; color:var(--text); }
#dim-technical .tmast-stamp { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-4); white-space:nowrap; }

/* ════════════════════════════════════════════════════════════════════════════
   ARCHITECTURE · portado del mock (eth-desk-redesign/architecture.html)
   TODO scopeado bajo .arch-scope para NO pisar otras vistas. Tokens ya en :root.
   ════════════════════════════════════════════════════════════════════════════ */

/* masthead por-vista (como Technical) */
.arch-scope .arch-mast { padding:6px 0 16px; display:flex; align-items:flex-end; justify-content:space-between; gap:20px; flex-wrap:wrap; }
.arch-scope .arch-mast-left { min-width:0; }
.arch-scope .arch-kicker { font-family:var(--font-mono); font-size:var(--fs-2xs); letter-spacing:.14em; text-transform:uppercase; color:var(--text-3); display:flex; align-items:center; gap:7px; }
.arch-scope .arch-kicker .rh { color:var(--oxblood); font-size:14px; }
.arch-scope .arch-kicker span { color:var(--text-2); }
.arch-scope .arch-h1 { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.015em; margin:6px 0 0; color:var(--text); }
.arch-scope .arch-stamp { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-4); white-space:nowrap; }

/* overview de 3 fases */
.arch-scope .pipe-overview { margin-top:6px; display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.arch-scope .po { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface); box-shadow:var(--shadow-1); padding:15px 17px; display:flex; flex-direction:column; gap:8px; }
.arch-scope .po.active { border-top:2px solid color-mix(in oklab,var(--up) 55%,transparent); }
.arch-scope .po.next   { border-top:2px solid color-mix(in oklab,var(--warn) 50%,transparent); }
.arch-scope .po.later  { border-top:2px solid var(--hairline-strong); }
.arch-scope .po-top { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
.arch-scope .po-phase { font-size:var(--fs-2xs); letter-spacing:.08em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
.arch-scope .po-state { font-size:var(--fs-2xs); font-weight:700; letter-spacing:.04em; text-transform:uppercase; display:inline-flex; align-items:center; gap:5px; }
.arch-scope .po-state.on { color:var(--up); } .arch-scope .po-state.soon { color:var(--warn); } .arch-scope .po-state.off { color:var(--text-4); }
.arch-scope .po-count { font-family:var(--font-mono); font-size:28px; font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; color:var(--text); }
.arch-scope .po-count .den { font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; }
.arch-scope .po-desc { font-size:var(--fs-2xs); color:var(--text-3); line-height:1.45; }

/* section titles */
.arch-scope .sec { margin-top:40px; }
.arch-scope .sec-title { display:flex; align-items:center; gap:14px; margin-bottom:8px; }
.arch-scope .sec-title .dot { width:8px; height:8px; transform:rotate(45deg); background:var(--accent); border-radius:2px; flex:0 0 auto; }
.arch-scope .sec-title h2 { font-family:var(--font-serif); font-size:var(--fs-xl); font-weight:600; letter-spacing:-.01em; }
.arch-scope .sec-title .line { flex:1; height:1px; background:var(--hairline); }
.arch-scope .sec-title .badge { font-size:var(--fs-2xs); font-family:var(--font-mono); color:var(--text-3); border:1px solid var(--hairline); padding:3px 9px; border-radius:999px; white-space:nowrap; }
.arch-scope .sec-sub { font-size:var(--fs-2xs); color:var(--text-4); margin-bottom:18px; line-height:1.5; }
.arch-scope .sec-sub b { color:var(--text-2); font-weight:600; }

/* diagrama de pipeline */
.arch-scope .flow { border:1px solid var(--hairline); border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-1); padding:6px 0 4px; overflow:hidden; }
.arch-scope .flow-grid { display:grid; grid-template-columns:1fr; }
.arch-scope .phase { position:relative; padding:18px 24px; }
.arch-scope .phase + .phase { border-top:1px solid var(--hairline); }
.arch-scope .phase-head { display:flex; align-items:center; gap:11px; margin-bottom:14px; flex-wrap:wrap; }
.arch-scope .phase-tag { font-family:var(--font-mono); font-size:var(--fs-2xs); font-weight:700; letter-spacing:.04em; padding:3px 9px; border-radius:var(--r-sm); border:1px solid var(--hairline-strong); }
.arch-scope .phase-tag.f1 { color:var(--up); border-color:color-mix(in oklab,var(--up) 38%,transparent); background:color-mix(in oklab,var(--up) 11%,transparent); }
.arch-scope .phase-tag.f2 { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 36%,transparent); background:color-mix(in oklab,var(--warn) 10%,transparent); }
.arch-scope .phase-tag.f3 { color:var(--text-3); border-color:var(--hairline-strong); background:var(--surface-2); }
.arch-scope .phase-name { font-family:var(--font-serif); font-size:var(--fs-md); font-weight:600; color:var(--text); }
.arch-scope .phase-status { font-size:var(--fs-2xs); color:var(--text-4); }
.arch-scope .phase-status b { color:var(--text-2); font-weight:600; }
.arch-scope .phase-share { margin-left:auto; font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); font-variant-numeric:tabular-nums; }
.arch-scope .phase-share b { color:var(--text); font-weight:600; }

/* cards de dimensión */
.arch-scope .dims { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.arch-scope .dims.three { grid-template-columns:repeat(3,1fr); }
.arch-scope .dims.four  { grid-template-columns:repeat(4,1fr); }
.arch-scope .dim { position:relative; border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface-2); padding:14px 15px 13px; display:flex; flex-direction:column; gap:9px; min-width:0; }
.arch-scope .dim.on { border-left:3px solid color-mix(in oklab,var(--up) 60%,transparent); }
.arch-scope .dim.soon { border-left:3px solid color-mix(in oklab,var(--warn) 48%,transparent); }
.arch-scope .dim.off { border-left:3px solid var(--hairline-strong); opacity:.78; }
.arch-scope .dim-top { display:flex; align-items:flex-start; gap:9px; }
.arch-scope .dim-ic { width:30px; height:30px; flex:0 0 auto; border-radius:var(--r-sm); display:grid; place-items:center; border:1px solid var(--hairline); background:var(--surface); color:var(--text-3); }
.arch-scope .dim-ic svg { width:17px; height:17px; }
.arch-scope .dim.on .dim-ic { color:var(--up); border-color:color-mix(in oklab,var(--up) 30%,transparent); }
.arch-scope .dim-name { font-size:var(--fs-sm); font-weight:600; color:var(--text); line-height:1.2; min-width:0; }
.arch-scope .dim-name .span { display:block; font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; margin-top:3px; line-height:1.35; }
.arch-scope .dim-weight { margin-left:auto; flex:0 0 auto; text-align:right; }
.arch-scope .dim-weight .wn { font-family:var(--font-mono); font-size:var(--fs-md); font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; line-height:1; }
.arch-scope .dim.on .dim-weight .wn { color:var(--up); }
.arch-scope .dim.soon .dim-weight .wn, .arch-scope .dim.off .dim-weight .wn { color:var(--text-3); }
.arch-scope .dim-weight .wl { display:block; font-size:var(--fs-2xs); letter-spacing:.04em; text-transform:uppercase; color:var(--text-4); font-weight:600; margin-top:3px; }
.arch-scope .dim-bar { height:5px; border-radius:999px; background:var(--hairline); overflow:hidden; }
.arch-scope .dim-bar i { display:block; height:100%; border-radius:999px; }
.arch-scope .dim.on .dim-bar i { background:var(--up); }
.arch-scope .dim.soon .dim-bar i { background:color-mix(in oklab,var(--warn) 60%,transparent); }
.arch-scope .dim-note { font-size:var(--fs-2xs); color:var(--text-3); line-height:1.4; }
.arch-scope .dim-src { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-4); overflow-wrap:anywhere; }
.arch-scope .dim-state { display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-2xs); font-weight:700; letter-spacing:.04em; text-transform:uppercase; margin-top:auto; }
.arch-scope .dim-state.on { color:var(--up); } .arch-scope .dim-state.soon { color:var(--warn); } .arch-scope .dim-state.off { color:var(--text-4); }
.arch-scope .dim-state .ck { width:13px; height:13px; }

/* conector hacia el score */
.arch-scope .flow-foot { display:flex; align-items:center; gap:14px; padding:18px 24px; border-top:1px solid var(--hairline-strong); background:linear-gradient(180deg, color-mix(in oklab,var(--accent) 5%,transparent), color-mix(in oklab,var(--surface) 50%,transparent)); }
.arch-scope .flow-foot .converge { display:inline-flex; align-items:center; gap:9px; flex:0 0 auto; font-size:var(--fs-2xs); letter-spacing:.08em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
.arch-scope .flow-foot .converge .arrow { color:var(--accent); font-family:var(--font-mono); font-size:var(--fs-lg); }
.arch-scope .score-node { display:flex; align-items:center; gap:13px; padding:12px 18px; border:1px solid color-mix(in oklab,var(--accent) 38%,transparent); border-radius:var(--r-md); background:color-mix(in oklab,var(--accent) 10%,transparent); box-shadow:var(--shadow-1); }
.arch-scope .score-node .rh { color:var(--oxblood); font-size:14px; }
.arch-scope .score-node .sn-txt { min-width:0; }
.arch-scope .score-node .sn-name { font-family:var(--font-serif); font-size:var(--fs-md); font-weight:600; color:var(--text); letter-spacing:-.01em; }
.arch-scope .score-node .sn-sub { font-size:var(--fs-2xs); color:var(--text-3); }
.arch-scope .flow-foot .ctx-note { margin-left:auto; font-size:var(--fs-2xs); color:var(--text-4); line-height:1.45; max-width:340px; text-align:right; }

/* tabla de módulos */
.arch-scope .modules-card { border:1px solid var(--hairline); border-radius:var(--r-lg); background:var(--surface); box-shadow:var(--shadow-1); overflow:hidden; }
.arch-scope .mod-table { width:100%; border-collapse:collapse; }
.arch-scope .mod-table thead th { text-align:left; font-size:var(--fs-2xs); letter-spacing:.06em; text-transform:uppercase; color:var(--text-4); font-weight:600; padding:14px 18px 11px; border-bottom:1px solid var(--hairline-strong); white-space:nowrap; }
.arch-scope .mod-table thead th.r { text-align:right; }
.arch-scope .mod-table tbody td { padding:15px 18px; border-bottom:1px solid var(--hairline); vertical-align:top; }
.arch-scope .mod-table tbody tr:last-child td { border-bottom:0; }
.arch-scope .mod-table tbody tr:hover td { background:color-mix(in oklab,var(--surface-2) 60%,transparent); }
.arch-scope .grp-row td { padding:13px 18px 9px !important; background:color-mix(in oklab,var(--bg) 55%,var(--surface)) !important; border-bottom:1px solid var(--hairline) !important; border-top:1px solid var(--hairline); }
.arch-scope .grp { display:flex; align-items:center; gap:10px; }
.arch-scope .grp .gtag { font-family:var(--font-mono); font-size:var(--fs-2xs); font-weight:700; letter-spacing:.03em; padding:2px 8px; border-radius:var(--r-sm); border:1px solid var(--hairline-strong); }
.arch-scope .grp .gtag.f1 { color:var(--up); border-color:color-mix(in oklab,var(--up) 36%,transparent); background:color-mix(in oklab,var(--up) 10%,transparent); }
.arch-scope .grp .gtag.f2 { color:var(--warn); border-color:color-mix(in oklab,var(--warn) 34%,transparent); background:color-mix(in oklab,var(--warn) 9%,transparent); }
.arch-scope .grp .gtag.f3 { color:var(--text-3); border-color:var(--hairline-strong); background:var(--surface-2); }
.arch-scope .grp .glabel { font-size:var(--fs-2xs); letter-spacing:.08em; text-transform:uppercase; color:var(--text-3); font-weight:600; }
.arch-scope .grp .gmeta { margin-left:auto; font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-4); }
.arch-scope .m-name { font-size:var(--fs-sm); font-weight:600; color:var(--text); }
.arch-scope .m-name .span { display:block; font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; margin-top:3px; line-height:1.4; }
.arch-scope .m-fn { font-size:var(--fs-2xs); color:var(--text-2); line-height:1.5; }
.arch-scope .m-fn b { color:var(--text); font-weight:600; }
.arch-scope .m-src { font-family:var(--font-mono); font-size:var(--fs-2xs); color:var(--text-3); line-height:1.55; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.arch-scope .m-src .auth { color:var(--text-4); }
.arch-scope .m-weight { font-family:var(--font-mono); font-size:var(--fs-md); font-weight:600; letter-spacing:-.02em; font-variant-numeric:tabular-nums; text-align:right; color:var(--text); white-space:nowrap; display:block; }
.arch-scope .m-weight.up { color:var(--up); }
.arch-scope .m-weight.ctx { font-size:var(--fs-2xs); color:var(--text-4); font-weight:500; }
.arch-scope .m-status { text-align:right; white-space:nowrap; display:block; }
.arch-scope .st-pill { display:inline-flex; align-items:center; gap:6px; padding:5px 11px; min-height:28px; border-radius:999px; font-size:var(--fs-2xs); font-weight:600; letter-spacing:.02em; }
.arch-scope .st-pill .ck { width:13px; height:13px; flex:0 0 auto; }
.arch-scope .st-pill.on  { color:var(--up);   background:color-mix(in oklab,var(--up) 13%,transparent);   border:1px solid color-mix(in oklab,var(--up) 28%,transparent); }
.arch-scope .st-pill.soon{ color:var(--warn); background:color-mix(in oklab,var(--warn) 13%,transparent); border:1px solid color-mix(in oklab,var(--warn) 28%,transparent); }
.arch-scope .st-pill.off { color:var(--text-3); background:var(--surface-2); border:1px solid var(--hairline); }
.arch-scope .m-lbl { display:none; }

/* responsive */
@media (max-width:1024px){
  .arch-scope .pipe-overview { grid-template-columns:1fr; }
  .arch-scope .dims.four { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:640px){
  .arch-scope .arch-mast { padding:4px 0 14px; }
  .arch-scope .dims, .arch-scope .dims.three, .arch-scope .dims.four { grid-template-columns:1fr; }
  .arch-scope .phase { padding:16px; }
  .arch-scope .phase-share { margin-left:0; width:100%; }
  .arch-scope .flow-foot { flex-direction:column; align-items:flex-start; padding:16px; }
  .arch-scope .flow-foot .ctx-note { margin-left:0; text-align:left; max-width:none; }
  .arch-scope .mod-table, .arch-scope .mod-table tbody, .arch-scope .mod-table tr, .arch-scope .mod-table td { display:block; width:100%; }
  .arch-scope .mod-table thead { display:none; }
  .arch-scope .mod-table tbody tr.dim-row { border:1px solid var(--hairline); border-radius:var(--r-md); background:var(--surface-2); margin:0 14px 12px; padding:4px 0; }
  .arch-scope .mod-table tbody tr.dim-row:hover td { background:transparent; }
  .arch-scope .mod-table tbody td { border-bottom:1px solid var(--hairline); padding:11px 16px; display:flex; gap:12px; align-items:baseline; }
  .arch-scope .mod-table tbody tr.dim-row td:last-child { border-bottom:0; }
  .arch-scope .m-lbl { display:block; flex:0 0 92px; font-size:var(--fs-2xs); letter-spacing:.05em; text-transform:uppercase; color:var(--text-4); font-weight:600; }
  .arch-scope .m-weight, .arch-scope .m-status { text-align:left; }
  .arch-scope .m-status .st-pill { margin-left:0; }
  .arch-scope .grp-row { display:block; }
  .arch-scope .grp-row td { display:block; margin:18px 14px 8px; border-radius:var(--r-sm); }
}

/* Marca ETH Desk persistente en el header de 2 filas (rediseño nav1) → click a Magnus Score.
   Un poco más grande que el mock para darle presencia. */
.hdr-slim .hdr-brand { display:inline-flex; align-items:center; gap:15px; flex:0 0 auto; min-width:0; text-decoration:none; color:inherit; cursor:pointer; padding:6px 12px 6px 6px; margin:-6px 0; border-radius:var(--r-md); min-height:48px; position:relative; transition:background .16s ease; }
.hdr-slim .hdr-brand:hover { background:color-mix(in oklab, var(--text) 6%, transparent); }
.hdr-slim .hdr-brand:hover .hdr-brand-chip { box-shadow:0 0 0 2px var(--accent-soft); }
.hdr-slim .hdr-brand:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.hdr-slim .hdr-brand-chip { width:48px; height:48px; border-radius:12px; flex:0 0 48px; display:block; }
.hdr-slim .hdr-brand-text { display:flex; flex-direction:column; line-height:1; min-width:0; }
.hdr-slim .hdr-brand-name { font-family:var(--font-serif); font-size:26px; font-weight:500; letter-spacing:.002em; color:var(--text); white-space:nowrap; }
.hdr-slim .hdr-brand-sub { font-family:var(--font-mono); font-size:12.5px; letter-spacing:.24em; text-transform:uppercase; color:var(--text-3); margin-top:6px; white-space:nowrap; }
.hdr-slim .hdr-brand::after { content:"\2192 Magnus Score"; position:absolute; left:8px; top:calc(100% + 8px); font-family:var(--font-mono); font-size:14px; color:var(--accent); background:var(--surface); border:1px solid var(--hairline-strong); border-radius:7px; padding:5px 10px; white-space:nowrap; opacity:0; transform:translateY(-3px); pointer-events:none; transition:opacity .16s ease, transform .16s ease; box-shadow:0 1px 2px rgba(0,0,0,.18); z-index:5; }
.hdr-slim .hdr-brand:hover::after { opacity:1; transform:translateY(0); }
@media (max-width:639px){
  .hdr-slim .hdr-brand-sub { display:none; }
  .hdr-slim .hdr-brand-name { font-size:20px; }
  .hdr-slim .hdr-brand-chip { width:40px; height:40px; flex-basis:40px; }
  .hdr-fixed.hdr-slim .hdr-controls { display:none; }
}


/* ════════ Footer · banda mono (ETH Desk) ════════ */
footer.ft { margin-top:40px; }
footer.ft .ft-band { border:1px solid var(--hairline); border-radius:var(--r-md); background:color-mix(in oklab, var(--surface) 70%, transparent); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); display:flex; align-items:center; overflow:hidden; font-family:var(--font-mono); text-align:left; }
footer.ft .ft-cell { display:flex; flex-direction:row; align-items:center; gap:9px; padding:0 18px; min-height:54px; font-size:var(--fs-2xs); letter-spacing:.03em; border-right:1px solid var(--hairline); }
footer.ft .ft-cell:last-child { border-right:0; }
footer.ft .ft-cell.brand { gap:11px; }
footer.ft .brand-mark { width:30px; height:30px; flex:0 0 auto; border-radius:7px; border:1px solid var(--hairline-strong); background:color-mix(in oklab, var(--surface) 80%, transparent); display:grid; place-items:center; }
footer.ft .brand-mark svg { width:19px; height:19px; }
footer.ft .ft-cell.brand b { font-family:var(--font-serif); font-weight:600; font-size:var(--fs-sm); letter-spacing:0; color:var(--text); }
footer.ft .ft-cell.brand .desk { color:var(--text-3); }
footer.ft .ft-cell.brand .sep { color:var(--text-4); }
footer.ft .ft-cell .lbl { color:var(--text-4); letter-spacing:.06em; }
footer.ft .ft-cell .val { color:var(--text-2); font-variant-numeric:tabular-nums; }
footer.ft .live-dot { width:7px; height:7px; border-radius:50%; background:var(--up); box-shadow:0 0 0 3px color-mix(in oklab, var(--up) 22%, transparent); }
footer.ft .ft-spacer { flex:1; min-width:0; align-self:stretch; }
footer.ft .ft-cell.copy { color:var(--text-4); border-left:1px solid var(--hairline); }
footer.ft .ft-cell.copy .rh { color:var(--oxblood); }
@media (max-width:820px){
  footer.ft .ft-band { flex-wrap:wrap; }
  footer.ft .ft-spacer { display:none; }
  footer.ft .ft-cell { flex:1 1 auto; border-top:1px solid var(--hairline); }
  footer.ft .ft-cell.brand { flex-basis:100%; border-top:0; }
}
@media (max-width:480px){ footer.ft .ft-cell { flex-basis:100%; border-right:0; justify-content:flex-start; } }
