/* ============================================================
   APEX INVERSIÓN — la piel de Investment Mode

   TODA regla de esta hoja cuelga del prefijo `.iv-`. Es la misma
   garantía de no regresión que `.mkw-` en Market y `[data-tier="max"]`
   en Max: sin esas clases la hoja es inerte, así que Trade Mode no
   puede verse afectado por nada de lo que hay aquí.

   Lectura de diseño: un terminal de inversión sereno. Denso, con las
   cifras mandando y el texto justo; nada flota. Tres reglas:

   · NI UN COLOR NUEVO. Todo sale de los tokens de `base.css`, así que
     claro y oscuro funcionan sin una sola regla duplicada. Verde y rojo
     solo significan «sube» y «baja»; el carmesí de marca (`--blue`) va
     en dosis mínimas y nunca como relleno de un dato.
   · APOYADO = FILETE. Los módulos del Panel son PANELES DE UN MISMO
     INSTRUMENTO, separados por una línea de 1 px, no tarjetas flotando:
     el fondo del contenedor asoma entre ellos (`gap:1px`) y esa es la
     única línea que los separa.
   · LAS CIFRAS SON TABULARES, en la familia del producto (`--font-num`),
     nunca monoespaciadas: un saldo no es la salida de una terminal.
   ============================================================ */

/* ------------------------------------------------------------
   PIEZAS COMUNES
   ------------------------------------------------------------ */
.iv-num{ font-family:var(--font-num); font-variant-numeric:tabular-nums; }
.iv-t-up{ color:var(--green-text); }
.iv-t-down{ color:var(--red-text); }
.iv-t-flat{ color:var(--muted); }
.iv-t-warn{ color:var(--amber-text); }
.iv-ic{ display:block; flex-shrink:0; }

/* Etiqueta solo para lectores de pantalla: fuera de la vista con
   `clip`, NUNCA con `aria-hidden` ni `display:none` (un lector de
   pantalla no anuncia lo que no está en el árbol). */
.iv-sr{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

/* El área de pulsación crece con el relleno y el margen negativo la
   devuelve: el enlace ocupa lo mismo en la maqueta y se puede tocar
   (≥ 24 px, y más con el dedo). */
.iv-link{
  display:inline-flex; align-items:center; gap:4px;
  padding:6px 8px; margin:-6px -8px;
  border:0; border-radius:var(--r-2xs); background:none;
  color:var(--muted); font:inherit; font-size:var(--text-caption-size); font-weight:600;
  cursor:pointer; white-space:nowrap;
  transition:color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
}
.iv-link:hover{ color:var(--text); background:var(--surface2); }
@media (pointer:coarse){ .iv-link{ padding:10px 8px; margin:-10px -8px; } }
.iv-link:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-link .iv-ic{ transition:transform var(--dur-fast) var(--ease); }
.iv-link:hover .iv-ic{ transform:translateX(2px); }

/* `input.iv-input` y no `.iv-input`: la regla base de `base.css`
   (`input[type=text]…`) pesa (0,1,1) y ganaba a una clase sola — el
   campo salía con el fondo y el relleno del formulario genérico. Con el
   mismo peso, gana esta por orden de carga. */
input.iv-input{
  width:100%; height:38px; box-sizing:border-box;
  padding:0 var(--space-3);
  border:1px solid var(--border); border-radius:var(--r-sm);
  background:var(--surface); color:var(--text);
  font-family:var(--font-body); font-size:var(--text-body-sm-size);
  transition:border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
}
input.iv-input::placeholder{ color:var(--muted2); }
input.iv-input:hover{ border-color:var(--muted2); }
input.iv-input:focus{  border-color:var(--muted2); box-shadow:var(--shadow-focus); }
/* El aspa nativa de `type=search` en WebKit no respeta los tokens. */
input.iv-input::-webkit-search-cancel-button{ -webkit-appearance:none; appearance:none; }

.iv-search-field{ position:relative; display:flex; align-items:center; }
.iv-search-field > .iv-ic{
  position:absolute; left:12px; top:50%; transform:translateY(-50%);
  color:var(--muted2); pointer-events:none;
}
.iv-search-field input.iv-input{ padding-left:36px; }

/* La espera: la FORMA de lo que va a llegar, nunca un spinner genérico.
   El material (`.sk`, su barrido y el movimiento reducido) vive una sola
   vez en components.css y lo compone `ui/skeleton.js`; aquí solo están
   las tallas de cada pieza, junto al bloque que imitan. */

.iv-empty-line{
  margin:var(--space-2) 0 0; color:var(--muted);
  font-size:var(--text-body-sm-size); line-height:1.5;
}
.iv-empty{ padding:var(--space-3) 0 var(--space-2); }
.iv-empty-t{ margin:0; color:var(--text); font-size:var(--text-body-size); font-weight:600; }
.iv-empty-d{ margin:4px 0 var(--space-4); color:var(--muted); font-size:var(--text-body-sm-size); line-height:1.5; max-width:46ch; }
.iv-empty .ui-btn .iv-ic{ margin-left:-2px; }

/* EL ESTADO DE UNA PANTALLA SIN DATOS (`invest/empty.js`). Centrado,
   con su icono y su acción a la vista: una línea suelta en una esquina
   y el resto en blanco se lee como «no cargó». El error lleva la misma
   forma, en neutro: «no se pudo leer» no es «no hay nada». */
.iv-empty.is-page{
  display:flex; flex-direction:column; align-items:center; text-align:center;
  min-height:min(52vh, 440px); justify-content:center; box-sizing:border-box;
  padding:var(--space-9) var(--space-5);
  border:1px solid var(--border-soft); border-radius:var(--r-lg);
  background:var(--surface);
}
.iv-empty.is-page .iv-empty-ic{
  display:grid; place-items:center; width:56px; height:56px; flex:none;
  margin-bottom:var(--space-4); border-radius:50%;
  background:var(--blue-soft); color:var(--blue);
}
.iv-empty.is-page.is-error .iv-empty-ic{ background:var(--surface2); color:var(--muted); }
.iv-empty.is-page .iv-empty-t{ font-size:var(--text-h3-size); font-weight:var(--text-h3-weight); letter-spacing:var(--text-h3-ls); }
.iv-empty.is-page .iv-empty-d{ margin:var(--space-2) auto var(--space-5); max-width:52ch; }
.iv-empty.is-page .iv-empty-acts{ justify-content:center; }
/* Dentro de un contenedor que ya tiene su superficie (el hilo de
   Decisiones) no se dibuja una segunda caja. */
.iv-dossier > .iv-empty.is-page{ border:0; background:transparent; }

/* El destello de un precio que cambió: una vez, corto, en el sentido
   del cambio. Con movimiento reducido `base.css` lo deja en 0,001 ms:
   el precio se actualiza igual, sin el parpadeo. */
.iv-num.is-tick-up{ animation:ivTickUp 1s var(--ease); }
.iv-num.is-tick-down{ animation:ivTickDown 1s var(--ease); }
@keyframes ivTickUp{ 0%{ background:var(--green-soft); } 100%{ background:transparent; } }
@keyframes ivTickDown{ 0%{ background:var(--red-soft); } 100%{ background:transparent; } }

/* ------------------------------------------------------------
   EL PANEL — contenedor y cabecera
   ------------------------------------------------------------ */
.iv-home{
  display:flex; flex-direction:column; gap:var(--space-5);
  /* El Panel empieza donde empieza el contenido: el aire superior de
     `main` ya separa la pantalla del borde. */
  margin-top:calc(var(--space-6) * -1);
}

.iv-home-head{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:var(--space-5); flex-wrap:wrap;
}
.iv-home-hello{ min-width:0; }
.iv-home-title{
  margin:0; color:var(--text);
  font-family:var(--font-display); font-size:26px; font-weight:700;
  line-height:1.15; letter-spacing:-0.022em;
}
.iv-home-sub{
  display:flex; align-items:center; flex-wrap:wrap; gap:6px 14px;
  margin:6px 0 0; color:var(--muted); font-size:var(--text-body-sm-size);
}
.iv-session{ display:inline-flex; align-items:center; gap:7px; }
.iv-session:empty{ display:none; }
.iv-session::before{
  content:''; width:7px; height:7px; border-radius:50%;
  background:var(--muted2);
}
.iv-session.is-open::before{ background:var(--green); }
.iv-home-search{ width:min(340px, 100%); }

/* ------------------------------------------------------------
   LA TIRA DE REFERENCIA — es la cinta de Market (`ticker.js`)
   ------------------------------------------------------------ */
/* El punto de «medido»: lo usan las cabeceras de Posiciones, Cartera,
   Seguimiento y Market para la hora del dato. */
.iv-live{
  display:inline-flex; align-items:center; gap:8px;
  color:var(--muted2); font-size:var(--text-caption-size); font-weight:500;
}
.iv-live::before{
  content:''; width:7px; height:7px; border-radius:50%; background:var(--muted2);
}
.iv-live:empty{ visibility:hidden; }
.iv-live.is-on{ color:var(--muted); }
.iv-live.is-on::before{ background:var(--green); animation:ivLive 2.4s ease-in-out infinite; }
.iv-live.is-unavailable{ color:var(--red-text); }
.iv-live.is-unavailable::before{ background:var(--red); }
@keyframes ivLive{
  0%, 100%{ box-shadow:0 0 0 0 var(--green-soft-border); }
  50%{ box-shadow:0 0 0 4px transparent; }
}

/* ------------------------------------------------------------
   LOS MÓDULOS — un instrumento, no una colección de tarjetas
   ------------------------------------------------------------ */
.iv-home-grid{
  display:grid;
  grid-template-columns:minmax(0, 1.42fr) minmax(0, 1fr);
  grid-template-areas:"mine brief" "events alerts";
  gap:1px;
  background:var(--border-soft);
  border:1px solid var(--border); border-radius:var(--r-md);
  overflow:hidden;
}
.iv-mine{ grid-area:mine; }
.iv-brief{ grid-area:brief; }
.iv-events{ grid-area:events; }
.iv-alerts{ grid-area:alerts; }

.iv-panel{
  min-width:0; box-sizing:border-box;
  padding:16px 18px 18px;
  background:var(--surface);
}
.iv-activity{ border:1px solid var(--border); border-radius:var(--r-md); }
.iv-panel-h{
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-3);
  min-height:24px;
}
.iv-panel-h h2{
  margin:0; color:var(--text);
  font-family:var(--font-display); font-size:15px; font-weight:650; letter-spacing:-0.01em;
}
.iv-panel-sub{
  margin:6px 0 4px; color:var(--muted); font-size:var(--text-body-sm-size); line-height:1.45;
}
.iv-more{ margin-top:var(--space-3); }

/* ---- Tus activos hoy -------------------------------------------- */
.iv-rows{ display:flex; flex-direction:column; margin-top:6px; }
.iv-row{
  display:grid; grid-template-columns:minmax(0, 1fr) 96px 92px 76px;
  align-items:center; gap:var(--space-4);
  width:auto; box-sizing:border-box;
  margin:0 -18px; padding:9px 18px;
  border:0; border-top:1px solid var(--border-soft);
  background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-rows > .iv-row:first-child{ border-top-color:transparent; }
.iv-row:hover{ background:var(--surface2); }
/* PULSAR UNA FILA SE NOTA: el fondo baja un escalón (no una escala, que
   en una fila a todo lo ancho se lee como un salto). Una regla para
   todas las filas pulsables de Inversión. */
.iv-row:active, .iv-q:not(.iv-q-head):active, .iv-wl-main:active, .iv-ps-main:active, .iv-dc-item:active,
.iv-al-row:active, .iv-act-row:active, .iv-tape-i:active{ background:var(--surface3); }
.iv-row:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-row-id{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.iv-row-code{ color:var(--text); font-size:14.5px; font-weight:650; letter-spacing:-0.005em; }
.iv-row-name{
  color:var(--muted); font-size:12.5px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.iv-row-spark{ display:flex; align-items:center; justify-content:center; }
.iv-row-price{
  color:var(--text); font-size:14.5px; font-weight:600; text-align:right;
  border-radius:4px; padding:0 2px;
}

/* La pastilla de la variación: el patrón de lectura de cualquier lista
   de valores seria. Ancho fijo para que las cifras encolumnen. */
.iv-pill{
  display:inline-flex; align-items:center; justify-content:flex-end;
  min-width:74px; height:26px; justify-self:end; box-sizing:border-box; padding:0 8px;
  border-radius:var(--r-2xs);
  background:var(--surface2); color:var(--muted);
  font-size:13px; font-weight:650;
}
.iv-pill.iv-t-up{ background:var(--green-soft); color:var(--green-text); }
.iv-pill.iv-t-down{ background:var(--red-soft); color:var(--red-text); }

.iv-spark{ display:block; width:96px; height:28px; overflow:visible; }
.iv-spark.is-empty{ height:28px; }
.iv-spark-line{ fill:none; stroke:currentColor; stroke-width:1.5; stroke-linejoin:round; stroke-linecap:round; vector-effect:non-scaling-stroke; }
.iv-spark-area{ fill:currentColor; stroke:none; opacity:.09; }

/* ---- Resumen del día -------------------------------------------- */
.iv-tone{
  display:flex; flex-direction:column; gap:3px;
  margin:10px 0 12px; padding-left:12px;
  border-left:2px solid var(--muted2);
}
.iv-tone-up{ border-left-color:var(--green-text); }
.iv-tone-down{ border-left-color:var(--red-text); }
.iv-tone-t{ color:var(--text); font-size:16px; font-weight:650; letter-spacing:-0.01em; }
.iv-tone-d{ color:var(--muted); font-size:12.5px; }
.iv-facts{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.iv-fact{
  position:relative; padding:7px 0 7px 16px;
  border-top:1px solid var(--border-soft);
  color:var(--text); font-size:var(--text-body-sm-size); line-height:1.45;
}
.iv-fact:first-child{ border-top:0; }
.iv-fact::before{
  content:''; position:absolute; left:2px; top:14px;
  width:6px; height:6px; border-radius:50%; background:var(--muted2);
}
.iv-fact.iv-t-up::before{ background:var(--green); }
.iv-fact.iv-t-down::before{ background:var(--red); }
.iv-changed{
  margin-top:10px; padding:10px 12px;
  border-radius:var(--r-sm); background:var(--surface2);
}
.iv-changed p{ margin:3px 0 0; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5; }
.iv-k{ color:var(--muted); font-size:12px; font-weight:650; }
.iv-foot{ margin:10px 0 0; color:var(--muted2); font-size:12px; }
.iv-foot:empty{ display:none; }

/* ---- Próximos eventos ------------------------------------------- */
.iv-events-list{ list-style:none; margin:8px 0 0; padding:0; }
.iv-events-list li, .iv-events-sk{
  display:grid; grid-template-columns:118px minmax(64px, auto) minmax(0, 1fr);
  align-items:center; gap:var(--space-3);
  padding:8px 0; border-top:1px solid var(--border-soft);
}
.iv-events-list li:first-child, .iv-events-sk:first-child{ border-top:0; }
.iv-ev-when{ display:flex; flex-direction:column; gap:1px; }
.iv-ev-date{ color:var(--text); font-size:13px; font-weight:600; }
.iv-ev-rel{ color:var(--muted); font-size:12px; }
.iv-ev-asset{
  justify-self:start; padding:3px 8px; border-radius:var(--r-2xs);
  border:1px solid var(--border); background:none; color:var(--text);
  font-family:var(--font-num); font-variant-numeric:tabular-nums;
  font-size:12.5px; font-weight:650; cursor:pointer;
}
.iv-ev-asset:hover{ background:var(--surface2); }
.iv-ev-asset:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-ev-type{ color:var(--muted); font-size:var(--text-body-sm-size); }

/* ---- Alertas ---------------------------------------------------- */
.iv-al-stats{
  display:flex; gap:var(--space-5); margin:8px 0 6px;
  color:var(--muted); font-size:var(--text-body-sm-size);
}
.iv-al-stats strong{ color:var(--text); font-size:17px; font-weight:650; margin-right:2px; }
.iv-alerts-list{ list-style:none; margin:2px 0 0; padding:0; }
.iv-alerts-list li, .iv-al-sk{ border-top:1px solid var(--border-soft); }
.iv-alerts-list li:first-child, .iv-al-sk:first-child{ border-top:0; }
.iv-al-row, .iv-al-sk{
  position:relative; display:flex; flex-direction:column; gap:2px; width:auto;
  margin:0 -18px; padding:8px 18px 8px 32px;
  border:0; background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-al-row:hover{ background:var(--surface2); }
.iv-al-row:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-al-row::before, .iv-al-sk::before{
  content:''; position:absolute; left:18px; top:15px;
  width:6px; height:6px; border-radius:50%; background:var(--muted2);
}
.iv-alerts-list li.is-new .iv-al-row::before{ background:var(--blue); }
.iv-al-t{ color:var(--text); font-size:var(--text-body-sm-size); font-weight:600; }
.iv-al-m{ color:var(--muted); font-size:12px; }
.iv-empty .ui-btn .iv-ic{ width:15px; height:15px; }

/* ------------------------------------------------------------
   LOS ATAJOS
   ------------------------------------------------------------ */
.iv-actions{
  display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:var(--space-2);
}
.iv-action{
  display:flex; align-items:center; gap:10px;
  min-height:48px; box-sizing:border-box; padding:0 14px;
  border:1px solid var(--border); border-radius:var(--r-sm);
  background:var(--surface); color:var(--text);
  font:inherit; font-size:var(--text-body-sm-size); font-weight:600; text-align:left;
  cursor:pointer;
  transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);
}
.iv-action:hover{ background:var(--surface2); border-color:var(--muted2); }
.iv-action:active{ transform:scale(.98); }
.iv-action:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-action-ic{
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:var(--r-2xs);
  background:var(--surface2); color:var(--text); flex-shrink:0;
}
.iv-action:hover .iv-action-ic{ background:var(--surface); }
/* La acción principal del Panel lleva el acento de marca en su icono,
   y solo ahí: una por pantalla, nunca como relleno del botón. */
.iv-action.is-primary .iv-action-ic{ background:var(--blue-soft); color:var(--blue); }
.iv-action-t{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* El rótulo corto solo existe en la fila de cinco del móvil. */
.iv-action-s{ display:none; }

/* ------------------------------------------------------------
   TU ACTIVIDAD
   ------------------------------------------------------------ */
.iv-activity-list{ display:flex; flex-direction:column; margin-top:6px; }
.iv-act-row{
  display:grid; grid-template-columns:28px 72px minmax(0, 1fr) auto 64px;
  align-items:center; gap:var(--space-3);
  margin:0 -18px; padding:8px 18px;
  border:0; border-top:1px solid var(--border-soft);
  background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-activity-list > .iv-act-row:first-child{ border-top-color:transparent; }
.iv-act-row:hover{ background:var(--surface2); }
.iv-act-row:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-act-ic{
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:var(--r-2xs);
  background:var(--surface2); color:var(--muted);
}
.iv-act-asset{
  color:var(--text); font-family:var(--font-num); font-variant-numeric:tabular-nums;
  font-size:14px; font-weight:650;
}
.iv-act-type{ color:var(--muted); font-size:var(--text-body-sm-size); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-act-date{ color:var(--muted2); font-size:12.5px; text-align:right; }
.iv-act-verdict{ font-size:12.5px; font-weight:650; }

/* ------------------------------------------------------------
   MARKET
   ------------------------------------------------------------ */
.iv-mkt{ display:flex; flex-direction:column; gap:var(--space-5); margin-top:calc(var(--space-6) * -1); }
.iv-mkt-tools{ display:flex; align-items:center; gap:var(--space-2); width:min(400px, 100%); }
.iv-mkt-tools .iv-home-search{ flex:1; width:auto; }
.iv-refresh .iv-ic{ transition:transform .5s var(--ease); }
.iv-refresh:hover .iv-ic{ transform:rotate(-90deg); }

/* ---- La cinta ----------------------------------------------------
   Un teletipo de bolsa: nombre, precio y variación, y a su lado la forma
   de la sesión con su degradado y el cierre anterior en discontinua
   (la anatomía de la app Bolsa de Apple). CORRE SIEMPRE, a velocidad
   constante y sin rótulos: el movimiento ya dice que está viva. Solo se
   detiene al recorrerla con el TECLADO, para que una celda enfocada no
   se escape; con movimiento reducido es una fila quieta. */
.iv-tape{
  position:relative; display:flex; align-items:center;
  border:1px solid var(--border); border-radius:var(--r-md);
  background:var(--surface); overflow:hidden;
}
.iv-tape[hidden]{ display:none; }
.iv-tape-viewport{
  flex:1; min-width:0; overflow:hidden;
  /* Los bordes se desvanecen: la cinta entra y sale, no se corta. */
  -webkit-mask-image:linear-gradient(to right, transparent 0, currentColor 48px, currentColor calc(100% - 48px), transparent 100%);
  mask-image:linear-gradient(to right, transparent 0, currentColor 48px, currentColor calc(100% - 48px), transparent 100%);
}
.iv-tape-track{
  display:flex; width:max-content; will-change:transform;
  animation:ivTape var(--iv-tape-dur, 60s) linear infinite;
}
.iv-tape:has(:focus-visible) .iv-tape-track{ animation-play-state:paused; }
@keyframes ivTape{ from{ transform:translate3d(0,0,0); } to{ transform:translate3d(-50%,0,0); } }
.iv-tape-set{ display:flex; align-items:stretch; flex-shrink:0; }
.iv-tape-i{
  display:inline-flex; align-items:center; gap:14px; flex-shrink:0;
  padding:12px 22px 12px 20px; border:0; border-right:1px solid var(--border-soft);
  background:none; color:inherit; font:inherit; text-align:left; cursor:pointer; white-space:nowrap;
  transition:background var(--dur-fast) var(--ease);
}
.iv-tape-i:hover{ background:var(--surface2); }
.iv-tape-i:focus-visible{ box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-tape-txt{ display:flex; flex-direction:column; gap:1px; min-width:76px; }
.iv-tape-n{ color:var(--text); font-size:13px; font-weight:700; letter-spacing:-0.005em; }
.iv-tape-p{
  color:var(--text); font-size:16px; font-weight:700; letter-spacing:-0.015em;
  border-radius:4px; padding:0 2px; margin:0 -2px;
}
.iv-tape-c{ font-size:13px; font-weight:650; }
.iv-tape-spark{ display:block; width:84px; height:36px; flex-shrink:0; }
.iv-tape-spark:empty{ width:0; }
.iv-tk-svg{ display:block; width:100%; height:100%; overflow:visible; }
.iv-tk-line{ fill:none; stroke:currentColor; stroke-width:1.6; stroke-linejoin:round; stroke-linecap:round; vector-effect:non-scaling-stroke; }
.iv-tk-ref{ stroke:currentColor; stroke-width:1; stroke-dasharray:3 3; opacity:.55; vector-effect:non-scaling-stroke; }
.iv-tk-area{ stroke:none; }
/* Los degradados viven una vez en el documento (`ensureTickerDefs`). */
.iv-tk-defs{ position:absolute; width:0; height:0; overflow:hidden; }
.iv-tk-g-up .iv-tk-s0{ stop-color:var(--green); stop-opacity:.34; }
.iv-tk-g-down .iv-tk-s0{ stop-color:var(--red); stop-opacity:.34; }
.iv-tk-g-flat .iv-tk-s0{ stop-color:var(--muted); stop-opacity:.22; }
.iv-tk-g-up .iv-tk-s1{ stop-color:var(--green); stop-opacity:0; }
.iv-tk-g-down .iv-tk-s1{ stop-color:var(--red); stop-opacity:0; }
.iv-tk-g-flat .iv-tk-s1{ stop-color:var(--muted); stop-opacity:0; }
.iv-tape-skel{ cursor:default; }
.iv-tape-skel .iv-tape-txt{ gap:7px; }
.iv-tape-sk-spark{ width:84px; height:30px; border-radius:var(--r-2xs); }
.iv-tape-empty{ margin:0; padding:18px 20px; color:var(--muted); font-size:var(--text-body-sm-size); white-space:normal; }
@media (prefers-reduced-motion: reduce){
  /* Sin movimiento, la cinta es una fila que se desplaza con el dedo o
     la rueda, y la copia de la costura sobra. */
  .iv-tape-track{ animation:none !important; }
  .iv-tape-viewport{ overflow-x:auto; -webkit-mask-image:none; mask-image:none; scrollbar-width:none; }
  .iv-tape-viewport::-webkit-scrollbar{ display:none; }
  .iv-tape-set[inert]{ display:none; }
}

/* ---- El resumen del día / de la semana ------------------------- */
.iv-band{
  border:1px solid var(--border); border-radius:var(--r-md);
  background:var(--surface); padding:16px 18px 18px;
}
.iv-band-head{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); flex-wrap:wrap; }
.iv-band-head h2{
  margin:0; color:var(--text);
  font-family:var(--font-display); font-size:15px; font-weight:650; letter-spacing:-0.01em;
}
.iv-band-body{
  display:grid; grid-template-columns:minmax(0, 0.9fr) minmax(0, 1.2fr) minmax(0, 1fr);
  gap:var(--space-6); margin-top:6px;
}
.iv-band-body > .iv-empty-line{ grid-column:1 / -1; }
/* El esqueleto ocupa la fila entera y hereda las MISMAS columnas que el
   resumen, así que en 1100 y 640 se recompone igual que él. */
.iv-band-body > .iv-band-sk{ grid-column:1 / -1; display:grid; grid-template-columns:inherit; gap:inherit; }
.sk-wrap .iv-tone{ gap:9px; padding-top:2px; padding-bottom:2px; }
.iv-band-sk .iv-band-tone > .sk{ margin-top:6px; }
.iv-fact-sk .sk{ margin:3.5px 0; }
.iv-band-sk .iv-band-changed{ display:grid; gap:9px; }
.iv-band-tone .iv-tone{ margin-top:8px; }
.iv-band-tone .iv-foot{ margin-top:6px; }
.iv-band-facts{ margin-top:4px; }
.iv-band-changed{
  align-self:start; margin-top:8px; padding:10px 12px;
  border-radius:var(--r-sm); background:var(--surface2);
}
.iv-band-changed p{ margin:3px 0 0; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5; }

/* ---- La semana, contada ------------------------------------------
   Un titular que dice qué fue la semana, una entrada con quién marcó el
   ritmo, y tres tramos numerados separados por AIRE y un filete, no por
   cajas. El número es texto. Las barras solo comparan PRECIOS. */
.iv-band-body.is-week{ display:block; margin-top:10px; }
.iv-week-meta{
  margin:0; color:var(--muted); font-size:12px; font-weight:600;
  font-family:var(--font-num); font-variant-numeric:tabular-nums;
}
.iv-week-h{
  margin:6px 0 0; max-width:34ch; color:var(--text);
  font-family:var(--font-display); font-size:23px; line-height:1.2; font-weight:700; letter-spacing:-0.018em;
  text-wrap:balance;
}
.iv-week-lede{
  margin:6px 0 0; max-width:62ch; color:var(--muted);
  font-size:15px; line-height:1.5;
  font-variant-numeric:tabular-nums;
}
.iv-week-grid{
  display:grid; grid-template-columns:minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 0.95fr);
  gap:var(--space-6); margin-top:var(--space-5); padding-top:var(--space-4);
  border-top:1px solid var(--border);
}
.iv-week-sec{ min-width:0; }
.iv-week-sk-h{ margin-top:10px; height:26px; }
.iv-week-sk-lede{ margin-top:12px; height:14px; }
.iv-week-sk-h4{ margin-bottom:14px; }
.iv-week-sec-h{
  display:flex; align-items:baseline; gap:8px; margin:0 0 8px;
  color:var(--text); font-size:13px; font-weight:650;
}
.iv-week-num{
  color:var(--muted); font-family:var(--font-num); font-variant-numeric:tabular-nums;
  font-size:12px; font-weight:650;
}
.iv-week-moves{ list-style:none; margin:0; padding:0; }
.iv-week-move{
  display:grid; grid-template-columns:minmax(0, 1fr) 72px 70px; align-items:center; gap:var(--space-3);
  padding:7px 0; border-top:1px solid var(--border-soft);
  font-size:14px;
}
.iv-week-move:first-child{ border-top:0; }
.iv-week-move-n{ color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-week-move-c{
  text-align:right; font-weight:650;
  font-family:var(--font-num); font-variant-numeric:tabular-nums; white-space:nowrap;
}
.iv-week-bar{ display:block; height:6px; border-radius:3px; background:var(--surface2); overflow:hidden; }
.iv-week-bar-i{ display:block; height:100%; border-radius:3px; }
/* Un bono o el VIX no llevan barra: su pista vacía se leería como «no
   se movió». */
.iv-week-bar:empty{ background:none; }
.iv-bg-up{ background:var(--green); }
.iv-bg-down{ background:var(--red); }
.iv-bg-flat{ background:var(--muted2); }

.iv-chain{ list-style:none; margin:0; padding:0; }
.iv-chain-step{
  display:flex; justify-content:space-between; gap:var(--space-3);
  padding:6px 0; color:var(--text); font-size:14px; font-weight:600;
}
.iv-chain-step > span:last-child{ font-family:var(--font-num); font-variant-numeric:tabular-nums; white-space:nowrap; }
.iv-chain-via{
  margin:0 0 0 5px; padding:2px 0 4px 14px; border-left:2px solid var(--border);
  color:var(--muted); font-size:13px; line-height:1.45;
}
.iv-week-note{ margin:10px 0 0; color:var(--muted); font-size:12px; line-height:1.45; }

.iv-week-line{ margin:0 0 6px; color:var(--muted); font-size:13px; }
.iv-week-mine{ list-style:none; margin:0; padding:0; }
.iv-week-chip{
  display:grid; grid-template-columns:58px minmax(0, 1fr) auto; align-items:center; gap:var(--space-2);
  width:calc(100% + 16px); margin:0 -8px; padding:7px 8px; min-height:36px;
  border:0; border-radius:var(--r-sm); background:transparent; color:var(--text);
  font:inherit; font-size:14px; text-align:left; cursor:pointer;
}
.iv-week-chip:hover{ background:var(--surface2); }
.iv-week-chip-c{ font-weight:650; }
.iv-week-chip-n{ color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-week-chip > span:last-child{ font-weight:650; font-family:var(--font-num); font-variant-numeric:tabular-nums; }

.iv-week-sum{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px;
  margin:var(--space-5) 0 0; padding-top:var(--space-3); border-top:1px solid var(--border);
  color:var(--text); font-size:14px; line-height:1.5;
}

/* ---- El tablero -------------------------------------------------- */
.iv-board{
  border:1px solid var(--border); border-radius:var(--r-md);
  background:var(--surface); overflow:hidden;
}
.iv-board-tabs{
  flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none;
  padding:10px 12px; border-bottom:1px solid var(--border-soft);
}
.iv-board-tabs::-webkit-scrollbar{ display:none; }
.iv-tab{ flex-shrink:0; }
.iv-board-body{ padding:0 0 6px; }
/* Las filas del esqueleto usan las columnas de una cotización (y sus
   mismos `display:none` por anchura): mismo alto, mismo sitio. */
.iv-q-sk .iv-q-id{ gap:8px; padding:1px 0; }
.iv-q-sk-last{ width:76px; height:14px; }
.iv-q-sk-chg{ width:52px; }
.iv-q-sk-pill{ width:74px; height:26px; }
.iv-q-sk-spark{ width:96px; height:28px; border-radius:var(--r-xs); }
.iv-q-sk-track{ height:4px; border-radius:var(--r-pill); }
.iv-q-sk-end{ width:34%; height:8px; }
.iv-q-sk-group{ width:72px; }
/* Las piezas del Panel: misma talla que lo que sustituyen. */
.iv-sk-spark{ width:96px; height:28px; border-radius:var(--r-xs); }
.iv-sk-price{ width:72px; height:14px; margin-left:auto; }
.iv-sk-pill{ width:74px; height:26px; justify-self:end; }
.iv-sk-chip-sm{ width:56px; height:22px; }
.iv-sk-stat{ width:84px; height:18px; }
.iv-sk-icon{ width:28px; height:28px; }
.iv-sk-icbtn{ width:28px; height:28px; border-radius:var(--r-xs); }
.iv-sk-price.is-short{ width:52px; }
.iv-al-sk{ gap:7px; }
.iv-board-msg{ padding:28px 18px; }
.iv-board-msg p{ margin:0 0 12px; color:var(--muted); font-size:var(--text-body-sm-size); max-width:60ch; }
.iv-board-msg .iv-empty-t{ color:var(--text); font-size:var(--text-body-size); font-weight:600; margin-bottom:4px; }
.iv-board-msg .ui-btn .iv-ic{ width:15px; height:15px; }
.iv-board-note{ margin:10px 18px 4px; color:var(--muted2); font-size:12px; }

.iv-q-table{ display:flex; flex-direction:column; }
.iv-q{
  display:grid;
  grid-template-columns:minmax(150px, 1.5fr) 104px 84px 84px 80px 118px 118px 96px;
  align-items:center; gap:var(--space-3);
  padding:8px 18px;
  border:0; border-top:1px solid var(--border-soft);
  background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-q:hover{ background:var(--surface2); }
.iv-q:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-q-head{
  cursor:default; border-top:0; padding-top:10px; padding-bottom:8px;
  color:var(--muted2); font-size:11.5px; font-weight:650;
}
.iv-q-head:hover{ background:none; }
.iv-q-head > span{ color:var(--muted2); font-size:11.5px; font-weight:650; letter-spacing:0; }
.iv-q-group{
  padding:14px 18px 6px; border-top:1px solid var(--border-soft);
  color:var(--muted); font-size:12px; font-weight:650;
}
.iv-q-head + .iv-q-group{ border-top:0; padding-top:4px; }
.iv-q-id{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.iv-q-name{
  color:var(--text); font-size:14px; font-weight:600;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.iv-q-code{ color:var(--muted2); font-size:11.5px; font-weight:600; }
.iv-q-last, .iv-q-chg, .iv-q-pct, .iv-q-multi{ text-align:right; justify-self:end; }
.iv-q-head .iv-q-last, .iv-q-head .iv-q-chg, .iv-q-head .iv-q-pct, .iv-q-head .iv-q-multi{ justify-self:end; }
.iv-q-last{ color:var(--text); font-size:14px; font-weight:650; border-radius:4px; padding:0 2px; }
.iv-q-chg{ font-size:13px; font-weight:600; }
.iv-q-multi{ font-size:13px; font-weight:600; }
.iv-q-range, .iv-q-year{ min-width:0; }
.iv-q-spark{ display:flex; justify-content:flex-end; }
.iv-q .iv-spark{ width:96px; height:30px; }
/* Seguir desde la fila (Trading, FASE 7): un botón HERMANO del de la
   fila, a su derecha; la fila y su cabecera dejan su sitio. */
.iv-q-wrap{ position:relative; }
.iv-q-wrap > .iv-q{ width:100%; }
.iv-mkt.has-follow .iv-q{ padding-right:56px; }
.iv-q-follow{ position:absolute; right:14px; top:50%; transform:translateY(-50%); }
.iv-q-follow.is-on{ color:var(--text); background:var(--surface2); }
/* El contexto de trading, replegado bajo el tablero (sus reglas viven
   en `market.css`, con la capa de Trading que las pinta). */
.iv-mkt-tctx[hidden]{ display:none; }

/* El rango: dónde está el precio entre el mínimo y el máximo. */
.iv-range{ display:flex; flex-direction:column; gap:4px; width:100%; }
.iv-range.is-off{ color:var(--muted2); font-size:11.5px; }
.iv-range-track{
  position:relative; height:4px; border-radius:var(--r-pill); background:var(--surface3);
}
.iv-range-dot{
  position:absolute; top:50%; width:9px; height:9px; margin-left:-4.5px; margin-top:-4.5px;
  border-radius:50%; background:var(--text); border:2px solid var(--surface);
}
.iv-range-ends{
  display:flex; justify-content:space-between; gap:6px;
  color:var(--muted2); font-size:11px; font-weight:600;
}

/* ------------------------------------------------------------
   CREAR UNA ALERTA (en línea y en diálogo)
   ------------------------------------------------------------ */
.iv-ac{ display:flex; flex-direction:column; gap:10px; }
.iv-ac-h{ color:var(--text); font-size:var(--text-body-size); font-weight:600; }
.iv-ac-now{ color:var(--muted); font-size:var(--text-body-sm-size); font-family:var(--font-num); font-variant-numeric:tabular-nums; margin:0; }
.iv-ac-seg{ margin-top:2px; }
.iv-ac-label{ display:block; color:var(--muted); font-size:12.5px; font-weight:600; margin-top:var(--space-3); }
.iv-ac-row{ display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; }
input.iv-ac-val{ width:160px; flex:0 0 auto; font-family:var(--font-num); font-variant-numeric:tabular-nums; font-size:15px; font-weight:600; }
.iv-ac-presets{ display:flex; gap:6px; flex-wrap:wrap; }
.iv-chip{
  height:var(--ctl-h-sm); padding:0 10px; box-sizing:border-box;
  border:1px solid var(--border); border-radius:var(--r-pill);
  background:var(--surface); color:var(--muted);
  font-family:var(--font-num); font-variant-numeric:tabular-nums; font-size:12.5px; font-weight:650;
  cursor:pointer;
  transition:background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
}
.iv-chip:hover{ background:var(--surface2); color:var(--text); border-color:var(--muted2); }
.iv-chip:active{ transform:scale(.97); }
.iv-chip:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-ac-hint{ margin:var(--space-2) 0 0; min-height:1.4em; color:var(--muted); font-size:12.5px; }
.iv-ac-hint.is-error{ color:var(--red-text); }
.iv-ac-existing{ border-top:1px solid var(--border-soft); padding-top:10px; }
.iv-ac-k{ display:block; color:var(--muted); font-size:12px; font-weight:650; margin-bottom:4px; }
.iv-ac-existing ul{ list-style:none; margin:0; padding:0; }
.iv-ac-existing li{
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-2);
  padding:4px 0; color:var(--text); font-size:var(--text-body-sm-size);
}
.iv-ac-del{
  display:inline-flex; align-items:center; justify-content:center;
  width:var(--ctl-h-sm); height:var(--ctl-h-sm); border:0; border-radius:var(--r-2xs);
  background:none; color:var(--muted2); cursor:pointer;
}
.iv-ac-del:hover{ background:var(--surface2); color:var(--red-text); }
.iv-ac-del:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-ac-acts{ display:flex; justify-content:flex-end; gap:var(--space-2); margin-top:4px; }
.iv-ac-foot{ margin:0; color:var(--muted2); font-size:12px; text-align:right; }

/* El diálogo nativo: FLOTANTE, así que este sí lleva sombra. */
.iv-dialog{
  width:min(460px, calc(100vw - 32px)); box-sizing:border-box;
  padding:0; border:1px solid var(--border); border-radius:var(--r-lg);
  background:var(--surface); color:var(--text);
  box-shadow:var(--shadow-lg);
}
.iv-dialog::backdrop{ background:rgba(20,12,8,.42); }
.iv-dialog-in{ padding:18px 20px 20px; display:flex; flex-direction:column; gap:10px; }
.iv-dialog-h{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); }
.iv-dialog-h h2{ margin:0; font-family:var(--font-display); font-size:17px; font-weight:700; letter-spacing:-0.01em; }
.iv-dialog-body:empty{ display:none; }
.iv-dialog .tt-asset-dropdown{ z-index:20; }

/* ------------------------------------------------------------
   RESPONSIVE — tres composiciones, no una encogida
   ------------------------------------------------------------ */
@media (max-width:1240px){
  .iv-q{ grid-template-columns:minmax(150px, 1.5fr) 104px 84px 84px 80px 118px 96px; }
  .iv-q-year{ display:none; }
}
@media (max-width:1100px){
  .iv-actions{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
  .iv-band-body{ grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); }
  .iv-band-changed{ grid-column:1 / -1; }
  .iv-week-grid{ grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); }
  .iv-week-grid > .iv-week-sec:nth-child(3) .iv-week-mine{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); column-gap:var(--space-5); }
  .iv-week-grid > .iv-week-sec:nth-child(3){ grid-column:1 / -1; }
  .iv-q{ grid-template-columns:minmax(140px, 1.5fr) 100px 80px 84px 80px 96px; }
  .iv-q-range{ display:none; }
}
@media (max-width:900px){
  /* Safari iOS amplía la pantalla al enfocar un campo de menos de 16 px:
     en móvil ese mínimo es un suelo, como en la regla base. */
  input.iv-input, input.iv-ac-val{ font-size:16px; }
  .iv-home, .iv-mkt{ margin-top:0; }
  .iv-mkt-tools{ width:100%; }
  .iv-home-grid{
    grid-template-columns:minmax(0, 1fr);
    grid-template-areas:"mine" "brief" "events" "alerts";
  }
  .iv-home-search{ width:100%; }
}
@media (max-width:640px){
  .iv-home{ gap:var(--space-4); }
  .iv-home-title{ font-size:22px; }
  .iv-panel{ padding:14px 14px 16px; }
  .iv-row{ margin:0 -14px; padding:9px 14px; grid-template-columns:minmax(0, 1fr) 56px 84px 70px; gap:var(--space-2); }
  .iv-al-row, .iv-al-sk{ margin:0 -14px; padding:8px 14px 8px 28px; }
  .iv-al-row::before, .iv-al-sk::before{ left:14px; }
  .iv-spark{ width:56px; }
  .iv-pill{ min-width:66px; font-size:12.5px; }
  .iv-q-sk-pill, .iv-sk-pill{ width:66px; }
  .iv-sk-spark{ width:56px; }
  /* En móvil los atajos son una fila de cinco, icono sobre rótulo, como
     las acciones rápidas de cualquier app nativa: dos columnas dejaban
     el quinto solo en su fila. */
  .iv-actions{ grid-template-columns:repeat(5, minmax(0, 1fr)); gap:6px; }
  .iv-action{
    flex-direction:column; justify-content:center; gap:6px;
    min-height:72px; padding:8px 4px; text-align:center;
    font-size:11.5px; line-height:1.2;
  }
  .iv-action-t{ display:none; }
  .iv-action-s{ display:block; white-space:nowrap; }
  .iv-events-list li, .iv-events-sk{ grid-template-columns:96px auto minmax(0, 1fr); }
  .iv-band{ padding:14px 14px 16px; }
  .iv-band-body{ grid-template-columns:minmax(0, 1fr); gap:var(--space-2); }
  .iv-week-h{ font-size:20px; }
  .iv-week-lede{ font-size:14px; }
  .iv-week-grid{ grid-template-columns:minmax(0, 1fr); gap:var(--space-5); margin-top:var(--space-4); }
  .iv-week-grid > .iv-week-sec:nth-child(3) .iv-week-mine{ grid-template-columns:minmax(0, 1fr); }
  .iv-q{ grid-template-columns:minmax(0, 1fr) auto 76px; gap:var(--space-2); padding:9px 14px; }
  .iv-mkt.has-follow .iv-q{ padding-right:52px; }
  .iv-q-follow{ right:10px; }
  .iv-q-chg, .iv-q-multi, .iv-q-spark{ display:none; }
  .iv-q-group, .iv-board-note{ padding-left:14px; padding-right:14px; margin-left:0; }
  .iv-tape-i{ padding:11px 14px; }
  /* El icono ya dice el TIPO de análisis: en una fila de móvil se
     queda el activo, lo que concluyó y cuándo. */
  .iv-act-row{ margin:0 -14px; padding:8px 14px; grid-template-columns:28px minmax(0, 1fr) auto 56px; }
  .iv-act-type{ display:none; }
}

/* ============================================================
   FASE 2 — SEGUIMIENTO, CALENDARIO Y ALERTAS

   Las tres pantallas comparten el mismo esqueleto que el Panel y
   Market: cabecera con título y una línea de estado, y debajo UN
   instrumento (tabla, rejilla o lista) apoyado en filetes, no en
   tarjetas. Los tres tonos de CATEGORÍA (`--cat-1/2/3`) distinguen de
   dónde viene un evento del calendario; verde y rojo siguen significando
   solo «sube» y «baja».
   ============================================================ */
.iv-host{ display:block; }
/* `display:block` es una regla de autor y el `display:none` del
   atributo `hidden` es del navegador: sin esto, `releaseHost` marcaba la
   pieza de Inversión como oculta y seguía pintada. Al pasar a Trading
   con una pantalla abierta, se veían las DOS piezas, una debajo de la
   otra (lo encontró la prueba de la Fase 5). */
.iv-host[hidden]{ display:none; }
/* Lo que la pieza de Inversión ocultó se queda oculto aunque su hoja le
   dé un `display` propio (`.amode-grid{display:grid}` anulaba el
   atributo `hidden` y el analizador de Trading asomaba debajo). */
.iv-host ~ [data-iv-hid]{ display:none !important; }
.iv-page-head{ margin-bottom:var(--space-1); }
.iv-alc, .iv-cal, .iv-wl{
  display:flex; flex-direction:column; gap:var(--space-4);
  margin-top:calc(var(--space-6) * -1);
}
.iv-count{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:18px; height:18px; padding:0 5px; box-sizing:border-box; margin-left:4px;
  border-radius:var(--r-pill); background:var(--surface3); color:var(--text);
  font-family:var(--font-num); font-variant-numeric:tabular-nums; font-size:11px; font-weight:700;
}
.iv-badge{
  display:inline-flex; align-items:center; height:20px; padding:0 7px;
  border-radius:var(--r-pill); background:var(--blue-soft); color:var(--blue);
  font-size:11px; font-weight:700;
}
.iv-sk-chip{ display:inline-block; width:72px; height:28px; border-radius:var(--r-sm); }
.iv-sk-gh{ width:96px; margin-bottom:10px; }
.iv-sk-switch{ width:40px; height:24px; border-radius:var(--r-pill); }

/* ---- «Deshacer»: FLOTANTE, así que lleva sombra ---------------- */
.iv-undo{
  position:fixed; left:50%; bottom:calc(env(safe-area-inset-bottom, 0px) + 88px); z-index:60;
  transform:translateX(-50%);
  display:flex; align-items:center; gap:var(--space-4);
  max-width:calc(100vw - 32px); box-sizing:border-box; padding:10px 12px 10px 16px;
  border-radius:var(--r-md); background:var(--text); color:var(--bg);
  box-shadow:var(--shadow-lg); font-size:var(--text-body-sm-size);
  animation:ivUndoIn .18s var(--ease);
}
@keyframes ivUndoIn{ from{ opacity:0; transform:translate(-50%, 6px); } to{ opacity:1; transform:translate(-50%, 0); } }
.iv-undo-t{ min-width:0; }
.iv-undo-b{
  flex-shrink:0; height:30px; padding:0 10px; border:0; border-radius:var(--r-sm);
  background:transparent; color:var(--bg); font:inherit; font-weight:700; cursor:pointer;
  text-decoration:underline; text-underline-offset:3px;
}
.iv-undo-b:hover{ background:color-mix(in srgb, var(--bg) 16%, transparent); }
.iv-undo-b:focus-visible{ outline:2px solid var(--bg); outline-offset:1px; }

/* ------------------------------------------------------------
   ALERTAS
   ------------------------------------------------------------ */
.iv-alc-grid{
  display:grid; grid-template-columns:minmax(0, 1fr) 320px; gap:var(--space-5); align-items:start;
}
.iv-alc-main{ min-width:0; display:flex; flex-direction:column; gap:var(--space-4); }
.iv-alc-tabs{ align-self:flex-start; }
.iv-alc-new .iv-ic{ margin-left:-2px; }
.iv-ch-panel{
  border:1px solid var(--border); border-radius:var(--r-md);
  position:sticky; top:var(--space-5);
}
.iv-ch-list{ list-style:none; margin:10px 0 0; padding:0; }
.iv-ch{
  display:grid; grid-template-columns:32px minmax(0, 1fr) auto; align-items:center; gap:var(--space-3);
  padding:11px 0; border-top:1px solid var(--border-soft);
}
.iv-ch:first-child{ border-top:0; }
.iv-ch-ic{
  display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:32px; border-radius:var(--r-sm); background:var(--surface2); color:var(--muted);
}
.iv-ch.is-on .iv-ch-ic{ background:var(--green-soft); color:var(--green-text); }
.iv-ch-txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.iv-ch-t{ color:var(--text); font-size:var(--text-body-sm-size); font-weight:650; }
.iv-ch-d{ color:var(--muted); font-size:12.5px; line-height:1.4; overflow-wrap:anywhere; }
.iv-ch-mail{ display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-ch-r{ display:flex; justify-content:flex-end; }
.iv-ch-on{ display:inline-flex; align-items:center; gap:4px; color:var(--green-text); font-size:12.5px; font-weight:650; }
.iv-ch-foot{ margin:10px 0 0; padding-top:10px; border-top:1px solid var(--border-soft); color:var(--muted); font-size:12.5px; line-height:1.45; }
.iv-ch-test{ display:flex; align-items:center; flex-wrap:wrap; gap:6px 14px; margin-top:12px; }
.iv-ch-test .iv-link{ margin-left:0; padding-left:0; }
.iv-ch-res{ color:var(--muted); font-size:12.5px; }

/* El interruptor: el mismo gesto que en cualquier ajuste de un móvil. */
/* Apagado se dibuja con su CONTORNO y un botón en tinta apagada: con el
   botón en `--surface`, en oscuro quedaba casi del color de la pista y el
   interruptor no se veía (lo encontró una captura). Encendido, el botón
   vuelve a la superficie sobre el verde. */
.iv-switch{
  position:relative; width:40px; height:24px; flex-shrink:0; padding:0;
  border:0; border-radius:var(--r-pill); background:var(--surface3); cursor:pointer;
  box-shadow:inset 0 0 0 1px var(--border);
  transition:background var(--dur-fast) var(--ease);
}
.iv-switch-k{
  position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%;
  background:var(--muted);
  transition:transform var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
}
.iv-switch[aria-checked="true"]{ background:var(--green); box-shadow:none; }
.iv-switch[aria-checked="true"] .iv-switch-k{ transform:translateX(16px); background:var(--surface); box-shadow:var(--shadow-sm); }
.iv-switch:focus-visible{  box-shadow:var(--shadow-focus); }

.iv-al-group{ display:flex; flex-direction:column; }
.iv-al-group + .iv-al-group{ margin-top:var(--space-4); }
.iv-al-gh{
  display:flex; align-items:center; margin:0 0 6px;
  color:var(--muted); font-size:12px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
}
.iv-al-note{ margin:0 0 6px; color:var(--muted); font-size:12.5px; }
.iv-al-list, .iv-nt-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--border-soft); }
.iv-al-item{
  display:grid; grid-template-columns:minmax(120px, 190px) minmax(0, 1fr) 118px auto;
  align-items:center; gap:var(--space-4);
  padding:10px 0; border-bottom:1px solid var(--border-soft);
}
.iv-al-item.is-paused .iv-al-c, .iv-al-item.is-paused .iv-al-now{ color:var(--muted); }
.iv-al-id{
  display:flex; flex-direction:column; align-items:flex-start; gap:1px; min-width:0;
  padding:4px 6px; margin:-4px -6px; border:0; border-radius:var(--r-2xs);
  background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
}
.iv-al-id:hover{ background:var(--surface2); }
.iv-al-id:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-al-id .iv-row-name{ max-width:100%; }
.iv-al-cond{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.iv-al-c{ color:var(--text); font-size:var(--text-body-sm-size); font-weight:600; font-family:var(--font-num); font-variant-numeric:tabular-nums; }
.iv-al-d{ color:var(--muted); font-size:12.5px; }
.iv-al-item.is-near .iv-al-d{ color:var(--amber-text); font-weight:600; }
.iv-al-now{ color:var(--text); font-size:var(--text-body-sm-size); font-weight:600; text-align:right; }
.iv-al-acts{ display:flex; gap:4px; justify-content:flex-end; }

.iv-nt-bar{
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-3);
  margin-bottom:var(--space-2); color:var(--muted); font-size:12.5px; font-weight:600;
}
.iv-nt{
  display:grid; grid-template-columns:32px minmax(0, 1fr) auto; align-items:center; gap:var(--space-3);
  width:100%; box-sizing:border-box; padding:10px 8px; margin:0;
  border:0; border-bottom:1px solid var(--border-soft);
  background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-nt:hover{ background:var(--surface2); }
.iv-nt:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-nt-ic{
  display:inline-flex; align-items:center; justify-content:center; position:relative;
  width:32px; height:32px; border-radius:var(--r-sm); background:var(--surface2); color:var(--muted);
}
.iv-nt.is-unread .iv-nt-ic::after{
  content:''; position:absolute; top:-2px; right:-2px; width:8px; height:8px; border-radius:50%;
  background:var(--blue); border:2px solid var(--bg);
}
.iv-nt-txt{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.iv-nt-t{ color:var(--text); font-size:var(--text-body-sm-size); font-weight:600; }
.iv-nt.is-unread .iv-nt-t{ font-weight:700; }
.iv-nt-d{ color:var(--muted); font-size:12.5px; line-height:1.4; }
.iv-nt-when{ color:var(--muted2); font-size:12px; white-space:nowrap; }

/* ------------------------------------------------------------
   CALENDARIO
   ------------------------------------------------------------ */
.iv-cal-bar{ display:flex; align-items:center; flex-wrap:wrap; gap:var(--space-3) var(--space-4); }
.iv-cal-nav{ display:flex; align-items:center; gap:4px; margin-right:auto; }
.iv-cal-title{
  margin:0 6px; min-width:170px; color:var(--text);
  font-family:var(--font-display); font-size:18px; font-weight:700; letter-spacing:-0.01em;
}
.iv-cal-nav .ui-btn{ margin-left:8px; }
.iv-cal-filters{ display:flex; flex-wrap:wrap; gap:6px; }
.iv-cal-f{ display:inline-flex; align-items:center; gap:6px; font-family:var(--font-body); }
.iv-cal-f.is-active{ background:var(--surface); color:var(--text); border-color:var(--border); }
.iv-cal-f.is-todo .iv-cal-dot{ display:none; }

/* El color dice DE DÓNDE viene el evento, y nada más. */
.iv-cal-dot{ display:inline-block; width:7px; height:7px; border-radius:50%; flex-shrink:0; background:var(--muted2); }

.is-macro > .iv-cal-dot, .iv-cal-dot.is-macro, .iv-cal-f.is-macro .iv-cal-dot{ background:var(--cat-1); }
.is-activo > .iv-cal-dot, .iv-cal-dot.is-activo, .iv-cal-f.is-activos .iv-cal-dot{ background:var(--cat-2); }
.is-propio > .iv-cal-dot, .iv-cal-dot.is-propio, .iv-cal-f.is-mios .iv-cal-dot{ background:var(--cat-3); }
.iv-cal-dot.is-mas{ background:var(--muted2); }

.iv-cal-grid-wrap{ display:grid; grid-template-columns:minmax(0, 1fr) 300px; gap:var(--space-4); align-items:start; }
.iv-cal[data-vista="agenda"] .iv-cal-grid-wrap{ grid-template-columns:minmax(0, 1fr); }
.iv-cal-main{ min-width:0; }
.iv-cal-side{ border:1px solid var(--border); border-radius:var(--r-md); position:sticky; top:var(--space-5); }
.iv-cal-side[hidden]{ display:none; }

.iv-month{ border:1px solid var(--border); border-radius:var(--r-md); overflow:hidden; background:var(--border-soft); }
/* La espera del calendario: el número del día y las filas de una lista. */
.iv-sk-daynum{ width:26px; height:26px; border-radius:var(--r-pill); }
.iv-cal-sk-list{ display:grid; }
.iv-cal-sk-row{
  display:grid; grid-template-columns:64px minmax(0, 1fr); gap:var(--space-3); align-items:center;
  padding:12px 0; border-top:1px solid var(--border-soft);
}
.iv-cal-sk-row:first-child{ border-top:0; }
.iv-sk-when{ width:48px; }
.iv-month-head{
  display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); background:var(--surface);
  border-bottom:1px solid var(--border-soft);
}
.iv-month-head span{
  padding:8px 10px; color:var(--muted); font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
}
.iv-month-row{ display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:1px; margin-top:1px; }
.iv-month-row:first-of-type{ margin-top:0; }
.iv-day{
  display:flex; flex-direction:column; gap:3px; min-width:0; min-height:104px; box-sizing:border-box;
  padding:6px 6px 8px; background:var(--surface);
}
.iv-day.is-out{ background:color-mix(in srgb, var(--surface) 55%, var(--bg)); }
.iv-day.is-out .iv-day-n{ color:var(--muted2); }
.iv-day-n{
  align-self:flex-start; display:inline-flex; align-items:center; justify-content:center;
  min-width:26px; height:26px; padding:0 6px; box-sizing:border-box; border:0; border-radius:var(--r-pill);
  background:none; color:var(--text); font:inherit; font-size:12.5px; font-weight:650; cursor:pointer;
}
.iv-day-n:hover{ background:var(--surface2); }
.iv-day-n:focus-visible{  box-shadow:var(--shadow-focus); }
/* HOY es un ANILLO; ELEGIDO es un RELLENO (la regla del calendario de
   APEX desde la Fase 6.1): si los dos fueran relleno, la rejilla
   parecería tener dos días seleccionados. La casilla elegida lleva
   además un velo muy suave, para que se vea desde lejos sin el marco
   grueso que en oscuro se leía como un error de pintado. */
.iv-day.is-today .iv-day-n{ box-shadow:inset 0 0 0 1.5px var(--blue); color:var(--blue); }
.iv-day.is-sel, .iv-wday.is-sel{ background:color-mix(in srgb, var(--text) 4%, var(--surface)); }
.iv-day.is-sel .iv-day-n{ background:var(--text); color:var(--surface); }
.iv-day.is-sel.is-today .iv-day-n{ background:var(--blue-soft); color:var(--blue); }
.iv-day.is-past .iv-day-n{ color:var(--muted); }
.iv-day-evs{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.iv-day-dots{ display:none; gap:3px; padding-left:6px; }
.iv-cev{
  display:flex; align-items:center; gap:5px; width:100%; min-width:0; box-sizing:border-box;
  height:22px; padding:0 5px; border:0; border-radius:var(--r-2xs);
  background:var(--surface2); color:var(--text); font:inherit; font-size:11px; font-weight:600; text-align:left; cursor:pointer;
}
.iv-cev:hover{ background:var(--surface3); }
.iv-cev:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-cev.is-past{ color:var(--muted); background:transparent; }
.iv-cev-h{ color:var(--muted); font-weight:650; flex-shrink:0; }
.iv-cev-t{ min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-cev-bell{ display:inline-flex; margin-left:auto; color:var(--muted); flex-shrink:0; }
.iv-day-more{
  align-self:flex-start; height:20px; padding:0 6px; border:0; border-radius:var(--r-2xs);
  background:none; color:var(--muted); font:inherit; font-size:11px; font-weight:700; cursor:pointer;
}
.iv-day-more:hover{ color:var(--text); background:var(--surface2); }

.iv-week-cal{ display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); gap:1px;
  border:1px solid var(--border); border-radius:var(--r-md); overflow:hidden; background:var(--border-soft); }
.iv-wday{ display:flex; flex-direction:column; min-width:0; min-height:280px; background:var(--surface); }
.iv-wday-h{
  display:flex; align-items:center; justify-content:space-between; gap:6px; padding:8px 8px 8px 10px;
  border:0; border-bottom:1px solid var(--border-soft); background:none; color:var(--muted);
  font:inherit; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; cursor:pointer;
}
.iv-wday-h .iv-num{
  display:inline-flex; align-items:center; justify-content:center; min-width:30px; height:30px; padding:0 6px;
  box-sizing:border-box; border-radius:var(--r-pill);
  color:var(--text); font-size:16px; letter-spacing:-0.01em; text-transform:none;
}
.iv-wday.is-today .iv-wday-h .iv-num{ color:var(--blue); box-shadow:inset 0 0 0 1.5px var(--blue); }
.iv-wday.is-sel .iv-wday-h .iv-num{ background:var(--text); color:var(--surface); }
.iv-wday.is-sel.is-today .iv-wday-h .iv-num{ background:var(--blue-soft); color:var(--blue); }
.iv-wday-list{ list-style:none; margin:0; padding:8px; display:flex; flex-direction:column; gap:4px; }
.iv-wday-list .iv-cev{ height:auto; min-height:24px; padding:5px 7px; flex-wrap:wrap; align-items:center; row-gap:2px; }
/* En la semana cabe el título entero: debajo de la hora, en su línea. */
.iv-wday-list .iv-cev-t{ flex:1 0 100%; white-space:normal; line-height:1.3; }


.iv-agenda{ display:flex; flex-direction:column; gap:var(--space-4); }
.iv-agenda-h{ display:flex; align-items:center; gap:8px; margin:0 0 4px;
  color:var(--text); font-size:13px; font-weight:700; }
.iv-agenda-day.is-past .iv-agenda-h{ color:var(--muted); }

.iv-cal-list{ list-style:none; margin:6px 0 0; padding:0; }
.iv-cal-list > li{ border-top:1px solid var(--border-soft); }
.iv-cal-list > li:first-child{ border-top:0; }
.iv-cal-item{
  display:grid; grid-template-columns:78px 8px minmax(0, 1fr) auto; align-items:start; gap:10px;
  width:100%; box-sizing:border-box; padding:10px 4px; margin:0;
  border:0; background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-cal-item > .iv-cal-dot{ margin-top:6px; }
.iv-cal-item:hover{ background:var(--surface2); }
.iv-cal-item:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-cal-item.is-past{ color:var(--muted); }
.iv-cal-item-h{ color:var(--muted); font-size:12.5px; font-weight:650; padding-top:1px; }
.iv-cal-item-t{ display:flex; flex-direction:column; gap:2px; color:var(--text); font-size:var(--text-body-sm-size); font-weight:600; min-width:0; }
.iv-cal-item.is-past .iv-cal-item-t{ color:var(--muted); }
.iv-cal-item-r{ font-size:12.5px; font-weight:600; }
.iv-cal-item-r.iv-t-flat{ color:var(--muted); }
/* Abierto, el resultado vive en el detalle: no se repite en la fila. */
.iv-cal-item.is-open .iv-cal-item-r{ display:none; }

.iv-cal-detail{ display:flex; flex-direction:column; gap:10px; padding:4px 4px 14px 96px; }
.iv-cal-meta{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; margin:0; color:var(--muted); font-size:12.5px; }
.iv-cal-meta > span{ display:inline-flex; align-items:center; gap:5px; }
.iv-cal-tag{ color:var(--text); font-weight:650; }
.iv-cal-prov{ padding:1px 7px; border-radius:var(--r-pill); background:var(--amber-soft); color:var(--amber-text); font-weight:650; }
.iv-cal-result{
  display:flex; flex-direction:column; gap:2px; margin:0; padding:2px 0 2px 12px;
  border-left:2px solid var(--muted2); color:var(--text); font-size:var(--text-body-sm-size); font-weight:600;
}
.iv-cal-result.iv-tone-up{ border-left-color:var(--green-text); }
.iv-cal-result.iv-tone-down{ border-left-color:var(--red-text); }
.iv-cal-why{ margin:0; color:var(--muted); font-size:var(--text-body-sm-size); line-height:1.5; max-width:60ch; }
.iv-cal-note{ margin:0; color:var(--muted); font-size:12.5px; }
.iv-cal-av{ display:flex; flex-direction:column; gap:6px; }
.iv-cal-avseg{ flex-wrap:wrap; }
.iv-cal-avline{ display:inline-flex; align-items:center; gap:6px; margin:0; color:var(--muted); font-size:12.5px; }
/* El contexto de un activo (Trading lo trae de sus posiciones). */
.iv-cal-item-rel{ color:var(--muted); font-size:12.5px; font-weight:600; }
.iv-cal-item.is-open .iv-cal-item-rel{ display:none; }
.iv-cal-metrics{ max-width:360px; }
.iv-cal-ctx{ margin:0; color:var(--text); font-size:12.5px; font-weight:600; }
.iv-cal-tesis{ display:flex; flex-direction:column; gap:2px; margin:0; padding:2px 0 2px 12px; border-left:2px solid var(--border);
  color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5; max-width:60ch; }
.iv-cal-src{ margin:0; color:var(--muted); font-size:12px; }
/* No poder leer las fechas de los activos se DICE: un mes sin ellas
   afirmaría que no hay nada previsto. */
.iv-cal-warn{ margin:0; padding:10px 14px; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
  color:var(--muted); font-size:var(--text-body-sm-size); }
.iv-cal-warn[hidden]{ display:none; }
.iv-cal-warn .iv-link{ margin-left:6px; }
.iv-cal-acts{ display:flex; align-items:center; flex-wrap:wrap; gap:8px 14px; }
.iv-cal-acts .iv-link{ margin-left:0; }
.iv-cal-side .iv-panel-h{ gap:8px; justify-content:flex-start; }
.iv-cal-side .iv-panel-h h2{ font-size:15px; }
.iv-cal-side .iv-cal-detail{ padding-left:4px; }
.iv-cal-side .iv-cal-item{ grid-template-columns:44px 8px minmax(0, 1fr) auto; }
.iv-cal-none{ margin:10px 0 4px; color:var(--muted); font-size:var(--text-body-sm-size); }
.iv-cal-add{ margin:12px 0 0; }

/* ---- El formulario de un evento --------------------------------- */
.iv-cal-dialog{ width:min(520px, calc(100vw - 32px)); }
.iv-f-l{ display:block; margin:4px 0 -4px; color:var(--muted); font-size:12.5px; font-weight:650; }
.iv-f-opt{ color:var(--muted2); font-weight:500; }
.iv-f-row{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:var(--space-3); }
.iv-f-row > div{ display:flex; flex-direction:column; gap:10px; }
.iv-f-row > div[hidden]{ display:none; }
select.iv-input, textarea.iv-input, input.iv-input[type="date"], input.iv-input[type="time"]{
  width:100%; box-sizing:border-box; min-height:38px; padding:0 var(--space-3);
  border:1px solid var(--border); border-radius:var(--r-sm);
  background:var(--surface); color:var(--text);
  font-family:var(--font-body); font-size:var(--text-body-sm-size);
}
textarea.iv-textarea{ padding:8px var(--space-3); resize:vertical; line-height:1.5; }
select.iv-input:focus, textarea.iv-input:focus{  border-color:var(--muted2); box-shadow:var(--shadow-focus); }
.iv-check{ display:inline-flex; align-items:center; gap:8px; color:var(--text); font-size:var(--text-body-sm-size); cursor:pointer; }
.iv-check input{ width:16px; height:16px; accent-color:var(--text); }

/* ------------------------------------------------------------
   SEGUIMIENTO
   ------------------------------------------------------------ */
.iv-wl-search{ position:relative; }
input.iv-input.iv-input-lg{ height:48px; font-size:15px; padding-left:42px; border-radius:var(--r-md); }
.iv-wl-search .iv-search-field > .iv-ic{ left:14px; }
.iv-wl-dd{ max-height:360px; }
.iv-wl-tools{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); flex-wrap:wrap; }
.iv-wl-tools:empty{ display:none; }

.iv-wl-table{ border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface); overflow:hidden; }
.iv-wl-headrow, .iv-wl-main{
  display:grid;
  grid-template-columns:minmax(150px, 1.4fr) 104px 108px 84px 84px minmax(120px, 1fr);
  align-items:center; column-gap:var(--space-4);
}
.iv-wl-headrow{
  padding:9px 96px 9px 18px; border-bottom:1px solid var(--border-soft);
  color:var(--muted); font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
}
.iv-wl-headrow .is-num{ text-align:right; }
.iv-wl-list{ list-style:none; margin:0; padding:0; }
.iv-wl-row{ position:relative; border-top:1px solid var(--border-soft); }
.iv-wl-row:first-child{ border-top:0; }
.iv-wl-main{
  row-gap:6px; width:100%; box-sizing:border-box; padding:12px 96px 12px 18px; margin:0;
  border:0; background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-wl-main:hover{ background:var(--surface2); }
.iv-wl-main:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-wl-id{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.iv-wl-spark{ display:flex; align-items:center; }
.iv-wl-price{ color:var(--text); font-size:14.5px; font-weight:650; text-align:right; }
.iv-wl-main .iv-pill{ justify-self:end; }
.iv-wl-multi{ text-align:right; font-size:13px; font-weight:650; color:var(--muted); }
.iv-wl-range{ display:flex; flex-direction:column; gap:5px; min-width:0; }
.iv-wl-range.is-off{ color:var(--muted2); font-size:12px; }
.iv-wl-range-t{ color:var(--muted); font-size:11.5px; font-weight:600; }
/* Lo tuyo: la segunda línea de la fila, a todo lo ancho. */
.iv-wl-ctx{
  grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px;
  color:var(--muted); font-size:12.5px; line-height:1.45;
}
.iv-wl-ctx strong{ font-weight:650; }
.iv-wl-sep{ width:3px; height:3px; border-radius:50%; background:var(--muted2); }
.iv-wl-ev{ display:inline-flex; align-items:center; gap:5px; }
.iv-wl-ev.is-near{ color:var(--text); font-weight:600; }
/* Lo que Trading añade a la fila (FASE 7): «algo cambió» con su umbral,
   sus marcas y su nota. Un punto y una palabra; nunca una insignia por
   fila (lo quieto no dice nada). */
.iv-wl-flag{ display:inline-flex; align-items:center; gap:5px; color:var(--text); font-weight:650; }
.iv-wl-flag::before{ content:''; width:6px; height:6px; border-radius:50%; background:var(--blue); flex:0 0 auto; }
.iv-wl-mark{ color:var(--text); }
.iv-wl-state{ margin:0 0 var(--space-3); padding:10px 14px; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
  color:var(--muted); font-size:var(--text-body-sm-size); }
.iv-wl-state.is-down{ color:var(--text); }
.iv-wl-note{ font-style:italic; max-width:48ch; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-wl-acts{
  position:absolute; top:12px; right:12px; display:flex; gap:2px;
}
.iv-wl-acts .ui-icon-btn{ color:var(--muted); }
.iv-wl-acts .ui-icon-btn:hover{ color:var(--text); }
/* Con alertas, el botón dice cuántas AL LADO de la campana, sin taparla. */
.iv-wl-acts .ui-icon-btn.has-count{ width:auto; padding:0 7px; gap:3px; color:var(--text); }
.iv-wl-count{ font-size:12px; font-weight:700; }
/* El Seguimiento de Inversión es una TABLA de siete columnas: usa el
   ancho de la vista, como Market. La medida de 860 px de
   `investment.css` es para las listas de lectura de Trading. */
html[data-mode="investment"] #view-watchlist:has(> .iv-host:not([hidden])){ max-width:none; }
.iv-wl-empty{ padding:var(--space-5) 0; }
.iv-wl-ideas{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.iv-wl-ideas .iv-chip{ display:inline-flex; align-items:center; gap:4px; font-family:var(--font-body); color:var(--text); }

/* ------------------------------------------------------------
   FASE 2 · RESPONSIVE
   ------------------------------------------------------------ */
@media (max-width:1180px){
  .iv-wl-headrow, .iv-wl-main{ grid-template-columns:minmax(150px, 1.4fr) 96px 104px 84px 84px; }
  .iv-wl-headrow > span:nth-child(6), .iv-wl-range{ display:none; }
}
@media (max-width:999px){
  .iv-alc-grid, .iv-cal-grid-wrap{ grid-template-columns:minmax(0, 1fr); }
  .iv-ch-panel, .iv-cal-side{ position:static; }
  /* Los canales van ANTES de las listas: activarlos es lo primero que
     hace falta para que una alerta sirva con la app cerrada. */
  .iv-ch-panel{ order:-1; }
  .iv-day{ min-height:88px; }
}
@media (max-width:900px){
  .iv-alc, .iv-cal, .iv-wl{ margin-top:0; }
  select.iv-input, textarea.iv-input, input.iv-input[type="date"], input.iv-input[type="time"]{ font-size:16px; }
}
@media (max-width:760px){
  .iv-wl-headrow{ display:none; }
  .iv-wl-main{
    grid-template-columns:minmax(0, 1fr) auto auto; column-gap:var(--space-3);
    padding:12px 86px 12px 14px;
  }
  .iv-wl-spark, .iv-wl-multi{ display:none; }
  /* En móvil lo tuyo va en líneas: con separadores, al partirse, un
     «•» quedaba al principio de la línea siguiente. */
  .iv-wl-ctx{ flex-direction:column; align-items:flex-start; gap:2px; }
  .iv-wl-sep{ display:none; }
  .iv-wl-acts{ top:10px; right:8px; }
  .iv-al-item{ grid-template-columns:minmax(0, 1fr) auto; row-gap:4px; }
  .iv-al-cond{ grid-column:1 / -1; grid-row:2; }
  .iv-al-now{ grid-column:2; grid-row:1; }
  .iv-al-acts{ grid-column:2; grid-row:2; align-self:end; }
}
@media (max-width:640px){
  .iv-cal-bar{ gap:var(--space-2); }
  .iv-cal-nav{ width:100%; }
  .iv-cal-title{ min-width:0; font-size:16px; flex:1; }
  .iv-cal-views{ width:100%; }
  .iv-cal-views .ui-seg-i{ flex:1; }
  .iv-cal-filters{ width:100%; flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; }
  .iv-cal-filters::-webkit-scrollbar{ display:none; }
  .iv-cal-f{ flex-shrink:0; }
  .iv-month-head span{ padding:6px 0; text-align:center; font-size:11px; }
  /* En móvil las fichas no caben: la casilla enseña puntos, y el
     detalle vive en el panel del día, debajo. */
  .iv-day{ min-height:52px; padding:4px 2px 6px; align-items:center; }
  .iv-day-n{ align-self:center; min-width:28px; height:28px; }
  .iv-day-evs{ display:none; }
  .iv-day-dots{ display:flex; justify-content:center; padding-left:0; min-height:7px; }
  .iv-week-cal{ grid-template-columns:minmax(0, 1fr); }
  .iv-wday{ min-height:0; }
  .iv-wday-h{ justify-content:flex-start; }
  .iv-cal-item{ grid-template-columns:64px 8px minmax(0, 1fr) auto; }
  .iv-cal-detail{ padding-left:4px; }
  .iv-f-row{ grid-template-columns:minmax(0, 1fr); }
  .iv-ch-panel{ padding:14px; }
  .iv-nt{ padding:10px 4px; }
}

/* ============================================================
   FASE 3 · POSICIONES Y CARTERA

   Mismas reglas que el resto de la hoja: ni un color nuevo, apoyado =
   filete, cifras tabulares. La cartera usa los tres tonos de CATEGORÍA
   (`--cat-1/2/3`) y nunca verde, rojo o el carmesí de marca: esos ya
   significan «sube», «baja» y «APEX».
   ============================================================ */
.iv-muted{ color:var(--muted); }
.iv-empty-acts{ display:flex; flex-wrap:wrap; gap:var(--space-2); }
.iv-dialog-sub{ margin:3px 0 0; color:var(--muted); font-size:var(--text-body-sm-size); line-height:1.45; }
.iv-dialog-h > div{ min-width:0; }
.iv-sec-h{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); margin-bottom:var(--space-3); }
.iv-sec-t{ margin:0; color:var(--text); font-family:var(--font-display); font-size:15px; font-weight:650; letter-spacing:-0.01em; }

/* Las dos pantallas son TABLAS: usan el ancho de la vista, como el
   Seguimiento y Market. */
html[data-mode="investment"] #view-tradetracker:has(> .iv-host:not([hidden])),
html[data-mode="investment"] #view-portfolio:has(> .iv-host:not([hidden])){ max-width:none; }
.iv-ps, .iv-pf{ display:flex; flex-direction:column; gap:var(--space-5); margin-top:calc(var(--space-6) * -1); }

/* ---- Posiciones: cabecera y pestañas ---------------------------- */
.iv-ps-cta{ display:flex; flex-wrap:wrap; gap:var(--space-2); }
.iv-ps-caps{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--space-2); padding:10px 0 10px 12px; margin:0 0 var(--space-3); border-left:2px solid var(--amber); font-size:13px; color:var(--text); }
.iv-ps-caps[hidden]{ display:none; }
.iv-ps-tools{ display:flex; align-items:center; justify-content:space-between; gap:var(--space-3); flex-wrap:wrap; }
.iv-ps-tools:empty{ display:none; }
.iv-ps-n{ margin-left:4px; color:var(--muted); font-size:12px; font-weight:650; }
.iv-sk-seg{ width:104px; height:30px; border-radius:var(--r-pill); }
.iv-ps-id > .sk + .sk{ margin-top:6px; }
.ui-seg-i.is-active .iv-ps-n{ color:inherit; }

/* ---- La tabla ----------------------------------------------------- */
.iv-ps-table{ border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface); overflow:hidden; }
.iv-ps-headrow, .iv-ps-main{
  display:grid;
  grid-template-columns:minmax(130px, 1.3fr) 76px 96px 100px 110px 112px 56px 84px 16px;
  align-items:center; column-gap:var(--space-3);
}
.iv-ps-headrow{
  padding:9px 18px; border-bottom:1px solid var(--border-soft);
  color:var(--muted); font-size:11.5px; font-weight:700; text-transform:uppercase; letter-spacing:.04em;
}
.iv-ps-headrow .is-num{ text-align:right; }
.iv-ps-list{ list-style:none; margin:0; padding:0; }
.iv-ps-row{ border-top:1px solid var(--border-soft); }
.iv-ps-row:first-child{ border-top:0; }
.iv-ps-main{
  width:100%; box-sizing:border-box; padding:12px 18px; margin:0;
  border:0; background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-ps-main:hover, .iv-ps-row.is-open > .iv-ps-main{ background:var(--surface2); }
.iv-ps-main:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-ps-id{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.iv-ps-c{ display:flex; flex-direction:column; align-items:flex-end; gap:1px; min-width:0; color:var(--text); font-size:14px; font-weight:600; text-align:right; }
.iv-ps-c small{ font-size:12px; font-weight:650; }
.iv-ps-c.is-strong{ font-weight:700; }
.iv-ps-days{ align-items:flex-start; color:var(--muted); font-size:13px; font-weight:500; text-align:left; }
.iv-ps-chev{ display:flex; color:var(--muted2); transition:transform var(--dur-fast) var(--ease); }
.iv-ps-row.is-open .iv-ps-chev{ transform:rotate(90deg); }
.iv-ps-total{
  display:grid; grid-template-columns:minmax(130px, 1.3fr) 76px 96px 100px 110px 112px 56px 84px 16px;
  column-gap:var(--space-3); align-items:baseline;
  padding:12px 18px; border-top:1px solid var(--border); background:var(--surface2);
  color:var(--muted); font-size:13px; font-weight:650;
}
.iv-ps-total > :first-child{ grid-column:1 / 5; }
.iv-ps-total > :nth-child(2){ grid-column:5; }
.iv-ps-total > :nth-child(3){ grid-column:6; display:flex; flex-direction:column; align-items:flex-end; }
.iv-ps-total .iv-num{ font-size:14.5px; color:var(--text); text-align:right; }
.iv-ps-total .iv-num.iv-t-up{ color:var(--green-text); }
.iv-ps-total .iv-num.iv-t-down{ color:var(--red-text); }
.iv-ps-total small{ font-size:12px; font-weight:650; }
.iv-ps-total > :first-child small{ margin-left:6px; font-weight:500; color:var(--muted); }

/* ---- El detalle de una posición --------------------------------- */
.iv-ps-detail{
  display:grid; grid-template-columns:minmax(0, 1.2fr) minmax(0, 1fr); gap:var(--space-4) var(--space-6);
  padding:16px 18px 18px; border-top:1px solid var(--border-soft); background:var(--surface);
}
.iv-ps-thesis{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; min-width:0; }
.iv-ps-thesis .iv-k{ margin:0; }
.iv-ps-thesis-t{ margin:0; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere; }
.iv-ps-thesis-t.is-empty{ color:var(--muted); }
/* El origen de la tesis y de la posición (Automation Fases 3.1 y 3.2).
   Sin un color nuevo: la procedencia es una nota, no un estado. */
.iv-ps-thesis-o{ margin:0; color:var(--muted); font-size:12px; }
.iv-ps-src{ margin-left:6px; padding:1px 6px; border:1px solid var(--border-soft); border-radius:999px; color:var(--muted); font-size:11px; font-weight:650; vertical-align:middle; }
.iv-ps-prov{ grid-column:1 / -1; padding:10px 12px; border:1px solid var(--border-soft); border-radius:var(--r-md); }
.iv-ps-prov-t{ margin:0; color:var(--text); font-size:13px; font-weight:650; }
.iv-ps-prov-d{ margin:2px 0 0; color:var(--muted); font-size:12.5px; line-height:1.5; }
.iv-ps-draft{ align-self:stretch; margin-top:6px; padding:12px 14px; border-left:2px solid var(--border); }
.iv-ps-draft-k{ margin:0 0 4px; color:var(--text); font-size:12px; font-weight:700; }
.iv-ps-draft-src,
.iv-ps-draft-d{ margin:0 0 6px; color:var(--muted); font-size:12.5px; line-height:1.5; }
.iv-ps-draft-list{ list-style:none; margin:0 0 8px; padding:0; display:flex; flex-direction:column; gap:6px; }
.iv-ps-draft-f{ display:grid; grid-template-columns:64px minmax(0, 1fr); gap:8px; font-size:13px; line-height:1.5; }
.iv-ps-draft-a{ color:var(--muted); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding-top:2px; }
.iv-ps-draft-f.is-usuario .iv-ps-draft-x{ color:var(--text); }
.iv-ps-draft-f.is-apex .iv-ps-draft-x{ color:var(--muted); }
.iv-ps-draft-x{ overflow-wrap:anywhere; white-space:pre-wrap; }
.iv-ps-draft-acts{ display:flex; flex-wrap:wrap; gap:8px; }
.iv-ps-facts{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px var(--space-4); margin:0; }
.iv-ps-facts div{ min-width:0; }
.iv-ps-facts dt{ color:var(--muted); font-size:12px; font-weight:600; }
.iv-ps-facts dd{ margin:2px 0 0; color:var(--text); font-size:14px; font-weight:650; }
.iv-ps-facts dd.iv-t-up{ color:var(--green-text); }
.iv-ps-facts dd.iv-t-down{ color:var(--red-text); }
.iv-ps-movs{ grid-column:1 / -1; width:100%; border-collapse:collapse; font-size:13px; }
.iv-ps-movs th{ padding:6px 8px; border-bottom:1px solid var(--border-soft); color:var(--muted); font-size:11px; font-weight:700; text-align:left; text-transform:uppercase; letter-spacing:.04em; }
.iv-ps-movs td{ padding:6px 8px; border-bottom:1px solid var(--border-soft); color:var(--text); }
.iv-ps-movs .is-num{ text-align:right; }
.iv-ps-movs .is-act{ width:36px; text-align:right; }
.iv-ps-movs tr:last-child td{ border-bottom:0; }
.iv-ps-movs th:first-child, .iv-ps-movs td:first-child{ padding-left:0; }
.iv-ps-kind{ font-weight:650; }
.iv-ps-kind.is-venta{ color:var(--muted); }
.iv-ps-movs .ui-icon-btn{ color:var(--muted); }
.iv-ps-acts{ grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2); }
.iv-ps-acts-sp{ flex:1; }
.iv-ps-acts .ui-icon-btn{ color:var(--muted); }
.iv-ps-acts .ui-icon-btn:hover, .iv-ps-movs .ui-icon-btn:hover{ color:var(--red); }

/* ---- Cerradas ------------------------------------------------------ */
.iv-ps-closed{ border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface); }
.iv-ps-closed > summary{
  display:flex; align-items:center; gap:var(--space-3); padding:12px 18px; cursor:pointer;
  color:var(--text); font-size:14px; font-weight:650; list-style:none;
}
.iv-ps-closed > summary::-webkit-details-marker{ display:none; }
.iv-ps-closed > summary .iv-num:last-child{ margin-left:auto; font-size:13.5px; }
.iv-ps-closed-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--border-soft); }
.iv-ps-closed-list li{ display:flex; align-items:center; gap:var(--space-2); padding-right:12px; border-top:1px solid var(--border-soft); }
.iv-ps-closed-list li:first-child{ border-top:0; }
.iv-ps-closed-i{
  flex:1; display:grid; grid-template-columns:minmax(80px, 140px) minmax(0, 1fr) auto; gap:var(--space-4); align-items:center;
  padding:10px 18px; border:0; background:none; color:inherit; font:inherit; font-size:13.5px; text-align:left; cursor:pointer;
}
.iv-ps-closed-i:hover{ background:var(--surface2); }
.iv-ps-closed-i small{ font-size:12px; }
.iv-ps-closed-list .ui-icon-btn{ color:var(--muted); }

/* ---- Pendientes ----------------------------------------------------- */
.iv-ps-headrow.is-pending, .iv-ps-pmain{ grid-template-columns:minmax(120px, 1.3fr) 92px 92px 144px 100px 84px; }
.iv-ps-headrow.is-pending{ padding-right:236px; }
.iv-ps-prow{ position:relative; border-top:1px solid var(--border-soft); }
.iv-ps-prow:first-child{ border-top:0; }
.iv-ps-pmain{
  display:grid; align-items:center; column-gap:var(--space-3);
  width:100%; box-sizing:border-box; padding:12px 236px 12px 18px; margin:0;
  border:0; background:none; color:inherit; font:inherit; text-align:left; cursor:pointer;
}
.iv-ps-pmain:hover{ background:var(--surface2); }
.iv-ps-pmain:focus-visible{  box-shadow:inset 0 0 0 2px var(--blue-soft-border); }
.iv-ps-dist, .iv-ps-bell{ align-items:flex-start; color:var(--muted); font-size:13px; font-weight:550; text-align:left; }
.iv-ps-dist.is-reached{ color:var(--green-text); font-weight:700; }
.iv-ps-bell{ flex-direction:row; align-items:center; gap:5px; }
.iv-ps-bell.is-on{ color:var(--text); }
.iv-ps-pacts{ position:absolute; top:9px; right:12px; display:flex; align-items:center; gap:2px; }
.iv-ps-pacts .ui-btn{ margin-right:6px; }
.iv-ps-pacts .ui-icon-btn{ color:var(--muted); }
.iv-ps-pacts .ui-icon-btn:hover{ color:var(--text); }
.iv-ps-pthesis{ margin:-4px 0 0; padding:0 236px 12px 18px; color:var(--muted); font-size:12.5px; line-height:1.45; overflow-wrap:anywhere; }

/* ---- Los diálogos --------------------------------------------------- */
.iv-ps-dialog{ width:min(520px, calc(100vw - 32px)); }
.iv-ps-mode{ align-self:flex-start; }
.iv-ps-note{ margin:0; color:var(--muted); font-size:12.5px; line-height:1.45; }
.iv-ps-note:empty{ display:none; }
.iv-ps-calc{ margin:0; color:var(--muted); font-size:12.5px; }
.iv-ps-calc:empty{ display:none; }
.iv-ps-all{ align-self:flex-start; }
.iv-ps-newonly{ display:flex; flex-direction:column; gap:10px; }
.iv-ps-newonly[hidden]{ display:none; }

/* ---- Cartera --------------------------------------------------------- */
.iv-pf-body{ display:flex; flex-direction:column; gap:var(--space-5); }
/* El esqueleto de la cartera: las mismas secciones, con el mismo aire. */
.iv-pf-sk{ display:flex; flex-direction:column; gap:var(--space-5); }
.iv-sk-big{ width:min(260px, 70%); height:40px; margin-top:8px; border-radius:var(--r-xs); }
.iv-sk-today{ margin-top:12px; }
.iv-sk-fact{ display:grid; gap:8px; }
.iv-sk-kpi{ width:112px; height:38px; border-radius:var(--r-xs); }
.iv-sk-chart{ height:180px; border-radius:var(--r-sm); }
.iv-sk-k{ margin-bottom:var(--space-3); }
.iv-sk-dot10{ width:10px; height:10px; border-radius:50%; }
.iv-sk-num{ width:44px; justify-self:end; }
.iv-sk-num.is-wide{ width:72px; }
.iv-sk-track{ height:8px; border-radius:4px; }
/* El anillo, con su hueco: la máscara recorta también el barrido. En una
   máscara solo cuenta el alfa, así que va `currentColor` (opaco), no un
   color escrito a mano. */
.iv-sk-ring{
  width:132px; height:132px; border-radius:50%;
  -webkit-mask:radial-gradient(circle closest-side, transparent 63%, currentColor 64%, currentColor 87%, transparent 88%);
  mask:radial-gradient(circle closest-side, transparent 63%, currentColor 64%, currentColor 87%, transparent 88%);
}
.iv-pf-hero{
  display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.5fr); gap:var(--space-4) var(--space-6); align-items:end;
  padding:18px 20px; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
}
.iv-pf-value .iv-k{ margin:0; }
.iv-pf-big{ margin:4px 0 0; color:var(--text); font-size:40px; font-weight:700; line-height:1.05; letter-spacing:-0.025em; }
.iv-pf-today{ margin:6px 0 0; font-size:14.5px; font-weight:650; }
.iv-pf-today span{ margin-left:4px; }
.iv-pf-today em{ margin-left:4px; color:var(--muted); font-style:normal; font-weight:500; }
.iv-pf-facts{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px var(--space-5); margin:0; }
.iv-pf-facts dt{ color:var(--muted); font-size:12px; font-weight:600; }
.iv-pf-facts dd{ margin:3px 0 0; color:var(--text); font-size:16px; font-weight:650; }
.iv-pf-facts dd small{ margin-left:3px; font-size:12.5px; font-weight:600; }
.iv-pf-facts dd.iv-t-up{ color:var(--green-text); }
.iv-pf-facts dd.iv-t-down{ color:var(--red-text); }
.iv-pf-facts dd small{ color:var(--muted); }
.iv-pf-cover{ grid-column:1 / -1; margin:0; color:var(--muted); font-size:12.5px; }

.iv-pf-sec{ padding:18px 20px; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface); }
.iv-pf-empty{ margin:0; color:var(--muted); font-size:var(--text-body-sm-size); line-height:1.5; max-width:60ch; }
.iv-pf-note{ margin:var(--space-3) 0 0; color:var(--muted); font-size:12.5px; line-height:1.45; }

.iv-pf-perf-k{ display:flex; flex-wrap:wrap; gap:var(--space-3) var(--space-6); margin-bottom:var(--space-3); }
.iv-pf-perf-k > div{ display:grid; grid-template-columns:auto auto; column-gap:8px; align-items:center; }
.iv-pf-perf-k dt{ color:var(--muted); font-size:12.5px; font-weight:600; }
.iv-pf-perf-k dd{ grid-column:1 / -1; margin:2px 0 0; color:var(--text); font-size:20px; font-weight:700; }
.iv-pf-perf-k > div:has(.iv-pf-key) dd{ grid-column:2; }
.iv-pf-perf-k > div:has(.iv-pf-key){ grid-template-columns:12px auto; }
.iv-pf-perf-k dd.iv-t-up{ color:var(--green-text); }
.iv-pf-perf-k dd.iv-t-down{ color:var(--red-text); }
.iv-pf-key{ width:12px; height:3px; border-radius:2px; }
.iv-pf-key.is-pf{ background:var(--cat-1); }
.iv-pf-key.is-ix{ background:var(--muted2); }
.iv-pf-chart{ display:block; width:100%; height:180px; overflow:visible; }
.iv-pf-zero{ stroke:var(--border); stroke-width:1; stroke-dasharray:3 4; vector-effect:non-scaling-stroke; }
.iv-pf-l-pf, .iv-pf-l-ix{ fill:none; stroke-width:2; stroke-linejoin:round; stroke-linecap:round; vector-effect:non-scaling-stroke; }
.iv-pf-l-pf{ stroke:var(--cat-1); }
.iv-pf-l-ix{ stroke:var(--muted2); stroke-width:1.6; }

.iv-pf-comp{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.2fr); gap:var(--space-5) var(--space-8); }
.iv-pf-comp .iv-k{ margin:0 0 var(--space-3); }
.iv-pf-donut{ display:grid; grid-template-columns:132px minmax(0, 1fr); gap:var(--space-5); align-items:center; }
.iv-pf-donut svg{ width:132px; height:132px; transform:rotate(0deg); }
.iv-pf-legend{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.iv-pf-legend li{
  display:grid; grid-template-columns:10px minmax(0, 1fr) auto auto; gap:10px; align-items:center;
  padding:7px 0; border-top:1px solid var(--border-soft); font-size:13.5px;
}
.iv-pf-legend li:first-child{ border-top:0; }
.iv-pf-legend .iv-num{ text-align:right; font-weight:650; color:var(--text); }
.iv-pf-legend .iv-num.iv-muted{ color:var(--muted); font-weight:500; min-width:84px; }
.iv-pf-legend-n{ color:var(--text); min-width:0; overflow-wrap:anywhere; }
.iv-pf-dot{ width:10px; height:10px; border-radius:50%; }
.iv-pf-bars{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.iv-pf-bar{
  display:grid; grid-template-columns:64px minmax(0, 1fr) 56px 92px; gap:var(--space-3); align-items:center;
  width:100%; padding:7px 0; border:0; border-top:1px solid var(--border-soft); background:none; color:inherit; font:inherit;
  font-size:13.5px; text-align:left; cursor:pointer;
}
.iv-pf-bars li:first-child .iv-pf-bar{ border-top:0; }
.iv-pf-bar:hover .iv-row-code{ text-decoration:underline; text-underline-offset:3px; }
.iv-pf-bar:focus-visible{  box-shadow:0 0 0 2px var(--blue-soft-border); border-radius:var(--r-2xs); }
.iv-pf-bar .iv-num{ text-align:right; font-weight:650; }
.iv-pf-bar .iv-num.iv-muted{ font-weight:500; }
.iv-pf-track{ height:8px; border-radius:4px; background:var(--surface2); overflow:hidden; }
.iv-pf-fill{ display:block; height:100%; border-radius:4px; background:var(--cat-1); }

.iv-pf-div{ display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:var(--space-4); margin:0; }
.iv-pf-div dt{ color:var(--muted); font-size:12px; font-weight:600; }
.iv-pf-div dd{ margin:3px 0 0; color:var(--text); font-size:16px; font-weight:650; }
.iv-pf-flag{
  display:flex; align-items:flex-start; gap:8px; margin:var(--space-4) 0 0; padding:10px 12px;
  border-left:2px solid var(--amber); background:var(--surface2); border-radius:0 var(--r-2xs) var(--r-2xs) 0;
  color:var(--text); font-size:13px; line-height:1.45;
}
.iv-pf-flag .iv-ic{ margin-top:1px; color:var(--amber-text); }
.iv-pf-more{ margin:0; }

/* ---- Fase 3 · responsive ------------------------------------------ */
@media (max-width:1180px){
  .iv-ps-headrow, .iv-ps-main, .iv-ps-total{ grid-template-columns:minmax(120px, 1.3fr) 96px 100px 110px 112px 56px 16px; }
  .iv-ps-headrow > span:nth-child(2), .iv-ps-main > .iv-ps-c[data-label="Cantidad"],
  .iv-ps-headrow > span:nth-child(8), .iv-ps-main > .iv-ps-days{ display:none; }
  .iv-ps-total > :first-child{ grid-column:1 / 4; }
  .iv-ps-total > :nth-child(2){ grid-column:4; }
  .iv-ps-total > :nth-child(3){ grid-column:5; }
  .iv-ps-headrow.is-pending, .iv-ps-pmain{ grid-template-columns:minmax(110px, 1.3fr) 92px 92px 140px 96px; }
  .iv-ps-headrow.is-pending > span:nth-child(6), .iv-ps-bell{ display:none; }
}
@media (max-width:900px){
  .iv-ps, .iv-pf{ margin-top:0; }
  .iv-pf-hero{ grid-template-columns:minmax(0, 1fr); }
  .iv-pf-comp{ grid-template-columns:minmax(0, 1fr); }
  .iv-pf-div{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .iv-ps-detail{ grid-template-columns:minmax(0, 1fr); }
}
@media (max-width:760px){
  .iv-ps-head{ align-items:flex-start; }
  .iv-ps-cta{ width:100%; }
  .iv-ps-cta .ui-btn{ flex:1; justify-content:center; }
  .iv-ps-headrow{ display:none; }
  .iv-ps-main{ grid-template-columns:minmax(0, 1fr) auto auto 16px; column-gap:var(--space-3); padding:12px 14px; }
  .iv-ps-main > .iv-ps-c[data-label="Coste medio"], .iv-ps-main > .iv-ps-c[data-label="Precio"],
  .iv-ps-main > .iv-ps-c[data-label="Peso"]{ display:none; }
  .iv-ps-detail{ padding:14px; }
  .iv-ps-movs th:nth-child(4), .iv-ps-movs td:nth-child(4){ display:none; }
  .iv-ps-total{ grid-template-columns:minmax(0, 1fr) auto auto; padding:12px 14px; column-gap:var(--space-4); }
  .iv-ps-total > :first-child, .iv-ps-total > :nth-child(2), .iv-ps-total > :nth-child(3){ grid-column:auto; }
  .iv-ps-pmain{ grid-template-columns:minmax(0, 1fr) auto; row-gap:4px; padding:12px 14px 6px; }
  .iv-ps-pmain > .iv-ps-c[data-label="Precio"], .iv-ps-pmain > .iv-ps-c[data-label="Importe"]{ display:none; }
  .iv-ps-dist{ grid-column:1 / -1; }
  .iv-ps-pacts{ position:static; padding:0 14px 12px; }
  .iv-ps-pthesis{ padding:0 14px 12px; margin:0; }
  .iv-ps-closed-i{ grid-template-columns:minmax(0, 1fr) auto; padding:10px 14px; }
  .iv-ps-closed-i .iv-muted{ display:none; }
  .iv-pf-hero, .iv-pf-sec{ padding:16px; }
  .iv-pf-big{ font-size:34px; }
  .iv-pf-donut{ grid-template-columns:96px minmax(0, 1fr); gap:var(--space-4); }
  .iv-pf-donut svg{ width:96px; height:96px; }
  .iv-pf-legend .iv-num.iv-muted{ display:none; }
  .iv-pf-bar{ grid-template-columns:56px minmax(0, 1fr) 52px; }
  .iv-pf-bar .iv-num.iv-muted{ display:none; }
  .iv-pf-chart{ height:150px; }
}
.iv-pf-axis{ display:flex; justify-content:space-between; margin-top:6px; color:var(--muted); font-size:11.5px; font-weight:600; }
.iv-ps-movs td:first-child{ white-space:nowrap; }

/* ---- El Panel: la franja «Tu cartera» ------------------------------ */
.iv-pfbar[hidden]{ display:none; }
.iv-pfbar-in{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:6px var(--space-5); width:100%; box-sizing:border-box;
  padding:12px 18px; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
  color:var(--text); font:inherit; font-size:14px; font-weight:600; text-align:left; cursor:pointer;
  transition:background var(--dur-fast) var(--ease);
}
.iv-pfbar-in:hover{ background:var(--surface2); }
.iv-pfbar-in:focus-visible{  box-shadow:0 0 0 2px var(--blue-soft-border); }
.iv-pfbar-in em{ color:var(--muted); font-style:normal; font-weight:500; }
.iv-pfbar-k{ color:var(--muted); font-size:12.5px; font-weight:650; }
.iv-pfbar-v{ font-size:18px; font-weight:700; letter-spacing:-0.01em; }
.iv-pfbar-n{ color:var(--muted); font-weight:500; }
.iv-pfbar-go{ display:inline-flex; align-items:center; gap:4px; margin-left:auto; color:var(--muted); font-size:13px; font-weight:600; }
@media (max-width:640px){
  .iv-pfbar-in{ gap:4px var(--space-3); padding:12px 14px; }
  .iv-pfbar-go{ display:none; }
}

/* ============================================================
   FASE 4 · ANALIZAR Y DECISIONES

   El analizador es un FORMULARIO y un DOCUMENTO: una columna legible,
   no una tabla. Decisiones es un chat: la lista a la izquierda y el
   hilo a la derecha. Ni un color nuevo: la lectura de APEX usa verde,
   rojo y ámbar con su significado de siempre (a favor, en contra, para
   revisar) y lo neutro va en gris.
   ============================================================ */
.iv-anz, .iv-dc{ display:flex; flex-direction:column; gap:var(--space-5); margin-top:calc(var(--space-6) * -1); }
.iv-anz{ max-width:860px; }
html[data-mode="investment"] #view-history:has(> .iv-host:not([hidden])){ max-width:none; }

/* Decisions: el espacio de conversación convive con el historial de inversión existente. */
.iv-dc-views{display:flex;gap:22px;border-bottom:1px solid var(--border);margin:-8px 0 2px;padding:0 2px;}
.iv-dc-view{appearance:none;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);font:inherit;font-size:var(--text-body-sm-size);font-weight:600;padding:10px 2px 11px;cursor:pointer;transition:color .16s,border-color .16s;}
.iv-dc-view:hover,.iv-dc-view.is-active{color:var(--text);}
.iv-dc-view.is-active{border-bottom-color:var(--blue-fill);}
.iv-dc-view:focus-visible,.iv-chat-recent:focus-visible,.iv-chat-prompts button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;}
.iv-dc-chat[hidden],.iv-dc-grid[hidden]{display:none!important;}
.iv-chat{display:grid;grid-template-columns:minmax(190px,240px) minmax(0,1fr);min-height:min(680px,calc(100dvh - 240px));border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;}
.iv-chat-sidebar{padding:18px 12px;border-right:1px solid var(--border-soft);display:flex;flex-direction:column;gap:14px;min-width:0;}
.iv-chat-recent-list{display:flex;flex-direction:column;gap:3px;overflow:auto;}
.iv-chat-recent{display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:left;border:0;border-radius:var(--r-sm);background:transparent;color:var(--muted);padding:10px 9px;font:inherit;font-size:var(--text-caption-size);cursor:pointer;}
.iv-chat-recent:hover,.iv-chat-recent.is-active{background:var(--surface2);color:var(--text);}
.iv-chat-recent span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.iv-chat-recent time{flex:none;color:var(--muted2);font-size:11px;}
.iv-chat-recent-empty{font-size:var(--text-caption-size);line-height:1.5;color:var(--muted);padding:4px 8px;}
.iv-chat-main{min-width:0;display:flex;flex-direction:column;padding:18px clamp(16px,4vw,52px) 14px;}
.iv-chat-sub{font-size:var(--text-caption-size);color:var(--muted);margin:0 0 8px;}
.iv-chat-messages{flex:1;min-height:280px;max-height:min(55dvh,620px);overflow:auto;display:flex;flex-direction:column;gap:18px;padding:12px 2px 20px;scroll-behavior:smooth;}
.iv-chat-empty{margin:auto;max-width:540px;text-align:center;padding:38px 12px;}
.iv-chat-overline,.iv-chat-speaker{font-family:var(--font-num);font-size:var(--text-label-size);font-weight:700;letter-spacing:.09em;color:var(--muted);}
.iv-chat-empty h2{font-family:var(--font-display);font-size:clamp(25px,3vw,34px);letter-spacing:-.035em;margin:10px 0;}
.iv-chat-empty>p:not(.iv-chat-overline){max-width:440px;margin:0 auto;color:var(--muted);font-size:var(--text-body-sm-size);line-height:1.6;}
.iv-chat-prompts{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:22px;}
.iv-chat-prompts button{background:var(--surface2);border:1px solid var(--border-soft);border-radius:var(--r-sm);color:var(--muted);padding:9px 12px;font:inherit;font-size:var(--text-caption-size);cursor:pointer;}
.iv-chat-prompts button:hover{color:var(--text);border-color:var(--border);}
.iv-chat-message{max-width:min(760px,92%);}
.iv-chat-message.is-user{align-self:flex-end;background:var(--surface2);border-radius:var(--r-md);padding:12px 15px;}
.iv-chat-message.is-apex{align-self:flex-start;}
.iv-chat-speaker{margin:0 0 6px;}
.iv-chat-content{font-size:var(--text-body-sm-size);line-height:1.65;color:var(--text);margin:0;overflow-wrap:anywhere;}
.iv-chat-context{font-size:11px;color:var(--muted);margin:8px 0 0;}
.iv-chat-composer{display:flex;align-items:flex-end;gap:10px;border:1px solid var(--border);border-radius:var(--r-md);padding:9px;background:var(--surface);}
.iv-chat-composer textarea{border:0!important;box-shadow:none!important;resize:vertical;min-height:40px;max-height:130px;flex:1;}
.iv-chat-disclaimer{font-size:var(--text-label-size);color:var(--muted);margin:8px 2px 0;}
.iv-chat-error{color:var(--red-text);font-size:var(--text-body-sm-size);}
.iv-chat-convert{align-self:flex-start;margin-top:8px;}
@media(max-width:760px){.iv-chat{grid-template-columns:minmax(0,1fr);min-height:calc(100dvh - 260px);}.iv-chat-sidebar{border-right:0;border-bottom:1px solid var(--border-soft);padding:10px;}.iv-chat-recent-list{flex-direction:row;overflow-x:auto;}.iv-chat-recent{flex:0 0 auto;max-width:190px;}.iv-chat-main{padding:12px;}.iv-chat-messages{max-height:none;min-height:260px;}.iv-chat-message{max-width:96%;}}
@media(prefers-reduced-motion:reduce){.iv-dc-view{transition:none}.iv-chat-messages{scroll-behavior:auto}}

/* ---- Las tres tarjetas ------------------------------------------ */
.iv-anz-cards{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:var(--space-3); }
.iv-anz-card{
  display:grid; grid-template-columns:auto minmax(0, 1fr); column-gap:10px; row-gap:3px; align-items:center;
  padding:14px 16px; box-sizing:border-box; text-align:left;
  border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
  color:var(--text); font:inherit; cursor:pointer;
  transition:background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
}
.iv-anz-card:hover{ background:var(--surface2); }
.iv-anz-card:active{ transform:scale(.99); }
.iv-anz-card:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-anz-card.is-active{ border-color:var(--text); background:var(--surface2); }
.iv-anz-card-ic{
  display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px;
  border-radius:var(--r-sm); background:var(--surface3); color:var(--text);
}
.iv-anz-card.is-active .iv-anz-card-ic{ background:var(--text); color:var(--bg); }
.iv-anz-card-t{ display:flex; align-items:center; gap:6px; font-size:14px; font-weight:650; white-space:nowrap; }
.iv-anz-card-q{ grid-column:1 / -1; color:var(--muted); font-size:12.5px; line-height:1.4; }
.iv-anz-pro{
  display:inline-flex; align-items:center; height:18px; padding:0 6px; border-radius:var(--r-pill);
  background:var(--surface3); color:var(--muted); font-size:11px; font-weight:700; letter-spacing:.02em;
}

/* ---- El formulario --------------------------------------------- */
.iv-anz-form{
  display:flex; flex-direction:column; gap:12px;
  padding:var(--space-5); border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
}
.iv-anz-q-t{ margin:0 0 4px; color:var(--text); font-family:var(--font-display); font-size:18px; font-weight:650; letter-spacing:-0.01em; }
.iv-anz-fs{ margin:0; padding:0; border:0; display:flex; flex-direction:column; gap:10px; min-width:0; }
.iv-anz-fs > legend{ padding:0; margin-bottom:8px; }
.iv-anz-seg{ flex-wrap:wrap; align-self:flex-start; }
.iv-anz-imp{ display:flex; flex-direction:column; gap:10px; max-width:240px; }
.iv-anz-imp[hidden]{ display:none; }
.iv-anz-weight{ margin:-2px 0 0; min-height:1.3em; color:var(--muted); font-size:12.5px; }
.iv-anz-weight:empty{ display:none; }
.iv-anz-note{ margin:0; color:var(--muted); font-size:var(--text-body-sm-size); }
.iv-anz-from{ margin:6px 0 0; color:var(--muted); font-size:12.5px; }
.iv-anz-acts{ display:flex; align-items:center; flex-wrap:wrap; gap:var(--space-3); margin-top:4px; }
.iv-anz-cost{ color:var(--muted); font-size:12.5px; }
.iv-anz-locked{ align-items:flex-start; gap:6px; }
.iv-anz-locked .iv-empty-d{ margin-bottom:var(--space-3); }

.iv-anz-loading{
  display:flex; flex-direction:column; gap:var(--space-5);
  padding:var(--space-5); border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
}
.iv-anz-loading .iv-empty-d{ margin-bottom:0; }
.iv-anz-loading-copy{ min-width:0; }
/* El documento que llega, en su forma: rótulo, veredicto con su
   resumen, tres cifras y el texto. */
.iv-anz-skeleton{ display:grid; gap:var(--space-4); }
.iv-anz-sk-verdict{ display:grid; grid-template-columns:auto minmax(0, 1fr); gap:var(--space-3); align-items:start; }
.iv-anz-skel-grid{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:var(--space-3); }
.iv-anz-sk-tile{ height:64px; border-radius:var(--r-sm); }
@media (max-width:560px){ .iv-anz-sk-verdict{ grid-template-columns:minmax(0, 1fr); } }

.iv-anz-result{ display:flex; flex-direction:column; gap:var(--space-4); }
.iv-anz-racts{ display:flex; flex-wrap:wrap; gap:var(--space-2); }
.iv-anz-racts .iv-ic, .iv-dc-thead-acts .ui-btn .iv-ic{ margin-left:-2px; }

/* ---- Tus últimos análisis -------------------------------------- */
.iv-anz-recent[hidden]{ display:none; }
.iv-anz-rlist{ list-style:none; margin:0; padding:0; border-top:1px solid var(--border); }
.iv-anz-rlist > li{ border-bottom:1px solid var(--border); }
.iv-anz-ri{
  display:grid; grid-template-columns:64px 150px minmax(0, 1fr) auto; align-items:center; gap:var(--space-3);
  width:100%; padding:11px 8px; margin:0 -8px; box-sizing:content-box;
  border:0; border-radius:var(--r-sm); background:none; color:var(--text); font:inherit; text-align:left; cursor:pointer;
}
.iv-anz-ri:hover{ background:var(--surface2); }
.iv-anz-ri:focus-visible{  box-shadow:var(--shadow-focus); }
.iv-anz-ri-k{ color:var(--muted); font-size:12.5px; font-weight:600; }
.iv-anz-ri-s{ overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:var(--text); font-size:13.5px; }

/* ---- El documento de un análisis ------------------------------- */
.iv-an{
  display:flex; flex-direction:column; gap:var(--space-5);
  padding:var(--space-5); border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface);
}
.iv-an-head{ display:flex; flex-direction:column; gap:8px; }
.iv-an-kicker{ margin:0; color:var(--muted); font-size:12px; font-weight:650; letter-spacing:.02em; }
.iv-an-verdict{ display:flex; align-items:flex-start; gap:10px; }
.iv-an-summary{ margin:0; color:var(--text); font-size:16px; font-weight:550; line-height:1.5; }
.iv-an-ctx{ margin:0; color:var(--muted); font-size:12.5px; }
.iv-an-thesis{
  margin:4px 0 0; padding:2px 0 2px 12px; border-left:2px solid var(--border);
  color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5;
}
.iv-an-thesis cite{ display:block; margin-top:4px; color:var(--muted); font-size:11.5px; font-style:normal; font-weight:650; }
.iv-an-chip{
  display:inline-flex; align-items:center; flex:0 0 auto; height:22px; padding:0 8px; margin-top:1px;
  border-radius:var(--r-pill); font-size:11.5px; font-weight:700; white-space:nowrap;
  background:var(--surface3); color:var(--muted);
}
.iv-an-chip.is-up{ background:var(--green-soft); color:var(--green-text); }
.iv-an-chip.is-down{ background:var(--red-soft); color:var(--red-text); }
.iv-an-chip.is-warn{ background:var(--amber-soft); color:var(--amber-text); }
.iv-an-plazos{ display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:var(--space-3); }
.iv-an-plazo{ display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:12px 14px; border:1px solid var(--border); border-radius:var(--r-sm); }
.iv-an-plazo.is-mine{ border-color:var(--text); }
.iv-an-plazo-k{ margin:0; color:var(--muted); font-size:12px; font-weight:650; }
.iv-an-plazo-k em{ margin-left:4px; color:var(--text); font-style:normal; }
.iv-an-plazo-t{ margin:0; color:var(--text); font-size:13px; line-height:1.45; }
.iv-an-two{ display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:var(--space-5); }
.iv-an-two:empty{ display:none; }
.iv-an-sec{ min-width:0; }
.iv-an-h{ margin:0 0 8px; color:var(--text); font-family:var(--font-display); font-size:14px; font-weight:650; letter-spacing:-0.005em; }
.iv-an-p{ margin:0; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.55; }
.iv-an-list{ margin:0; padding-left:18px; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.55; }
.iv-an-list > li + li{ margin-top:5px; }
.iv-an-sec.is-questions .iv-an-list{ list-style:none; padding-left:0; }
.iv-an-sec.is-questions .iv-an-list > li{ padding-left:12px; border-left:2px solid var(--border); }
.iv-an-risks{ list-style:none; margin:0; padding:0; }
.iv-an-risks > li{
  display:grid; grid-template-columns:8px minmax(0, 1fr) auto; gap:10px; align-items:baseline;
  padding:7px 0; border-top:1px solid var(--border);
  color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5;
}
.iv-an-risks > li:first-child{ border-top:0; padding-top:0; }
.iv-an-dot{ width:7px; height:7px; border-radius:50%; background:var(--muted2); transform:translateY(-1px); }
.iv-an-risks > li.is-alta .iv-an-dot{ background:var(--red); }
.iv-an-risks > li.is-media .iv-an-dot{ background:var(--amber); }
.iv-an-grav{ color:var(--muted); font-size:11.5px; font-weight:650; }
.iv-an-rows{ margin:0; border-top:1px solid var(--border); }
.iv-an-row{ display:grid; grid-template-columns:190px minmax(0, 1fr); gap:var(--space-4); padding:12px 0; border-bottom:1px solid var(--border); }
.iv-an-row dt{ color:var(--muted); font-size:12.5px; font-weight:650; }
.iv-an-row dd{ display:flex; align-items:flex-start; gap:10px; margin:0; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5; }
.iv-an-foot{ margin:0; color:var(--muted); font-size:12px; }

/* ---- DECISIONES: expediente -------------------------------------- */
.iv-dc-grid{
  display:grid; grid-template-columns:minmax(240px, 290px) minmax(0, 1fr);
  height:auto; min-height:0; align-items:start;
  gap:24px; overflow-anchor:none;
}
.iv-dc-grid.is-empty{ grid-template-columns:minmax(0, 1fr); height:auto; min-height:0; }
.iv-dc-grid.is-empty .iv-dc-side{ display:none; }
.iv-dc-side{ display:flex; flex-direction:column; min-height:0; border:1px solid var(--border-soft); border-radius:var(--r-md); background:var(--surface); }
.iv-dc-search{ padding:12px 12px 8px; }
.iv-dc-search input.iv-input{ width:100%; }
.iv-dc-filter{ padding:0 12px 8px; }
.iv-dc-filter .iv-chip{ display:inline-flex; align-items:center; gap:6px; }
.iv-dc-filter:empty{ display:none; }
.iv-chip.is-on{ border-color:var(--text); background:var(--surface2); color:var(--text); }
.iv-dc-list{ list-style:none; margin:0; padding:0 0 8px; flex:1 1 auto; }
/* Loading keeps the shape of the asset index and its record. */
.iv-sk-avatar{ width:40px; height:40px; border-radius:50%; }
.iv-sk-avatar.is-sm{ width:32px; height:32px; flex:0 0 32px; }
.iv-sk-time{ width:36px; margin-left:auto; flex:0 0 auto; }
.iv-dc-item-top > .sk:first-child{ flex:0 1 auto; }
.iv-dc-sk{ display:flex; flex-direction:column; flex:1 1 auto; min-height:0; }

.iv-sk-sub{ margin-top:6px; }
.iv-dc-item{
  display:grid; grid-template-columns:minmax(0, 1fr); gap:10px; align-items:start;
  width:100%; padding:11px 14px; box-sizing:border-box; border:0; border-bottom:1px solid var(--border);
  background:none; color:var(--text); font:inherit; text-align:left; cursor:pointer;
}
.iv-dc-item:hover{ background:var(--surface2); }
.iv-dc-item:focus-visible{  box-shadow:inset var(--shadow-focus); }
.iv-dc-item.is-active{ background:var(--surface2); box-shadow:inset 3px 0 0 var(--text); }
.iv-dc-item-main{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.iv-dc-item-top{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; min-width:0; }
.iv-dc-state{ color:var(--muted); font-size:11.5px; font-weight:600; white-space:nowrap; }
.iv-dc-state.is-abierta{ color:var(--text); }
.iv-dc-pin{ display:inline-flex; color:var(--muted); }
.iv-dc-time{ margin-left:auto; color:var(--muted); font-size:11.5px; white-space:nowrap; font-family:var(--font-num); font-variant-numeric:tabular-nums; }
.iv-dc-item.is-pending .iv-dc-time{ color:var(--amber-text); font-weight:650; }
.iv-dc-prev{ overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:var(--muted); font-size:13px; }
.iv-dc-flag{ align-self:flex-start; display:inline-flex; align-items:center; gap:6px; color:var(--amber-text); font-size:11.5px; font-weight:650; }
.iv-dc-flag::before{ content:''; width:6px; height:6px; border-radius:50%; background:var(--amber); }
.iv-dc-noresult{ padding:14px; color:var(--muted); font-size:var(--text-body-sm-size); }

.iv-dossier{ display:flex; flex-direction:column; min-height:0; min-width:0; background:var(--surface); border:1px solid var(--border-soft); border-radius:var(--r-md); }
.iv-dc-thead{
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-3); padding:16px;
  border-bottom:1px solid var(--border); background:var(--surface);
}
.iv-dc-back{ display:none; }
.iv-dc-thead-id{ min-width:0; flex:1 1 auto; }
.iv-dc-title{
  padding:0; border:0; background:none; color:var(--text); font:inherit;
  font-family:var(--font-display); font-size:24px; font-weight:700; letter-spacing:-0.01em; cursor:pointer;
}
.iv-dc-title:hover{ text-decoration:underline; text-underline-offset:3px; }
.iv-dc-title:focus-visible{  box-shadow:var(--shadow-focus); border-radius:4px; }
.iv-dc-sub{ margin:4px 0 0; overflow-wrap:anywhere; line-height:1.5; color:var(--muted); font-size:12.5px; }
.iv-dc-thead-acts{ display:flex; flex-wrap:wrap; align-items:center; gap:6px; flex:0 0 auto; }
.iv-dc-thead-acts [aria-pressed="true"]{ color:var(--text); background:var(--surface3); }
.iv-dc-banner{
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:6px var(--space-3);
  padding:9px 16px; border-bottom:1px solid var(--border); background:var(--amber-soft);
  color:var(--text); font-size:13px; font-weight:550;
}
.iv-dc-banner > span{ display:inline-flex; align-items:center; gap:8px; }
.iv-dc-banner .iv-ic{ color:var(--amber-text); flex:0 0 auto; }
/* Reports and notes share a flat document, never message alignment. */
.iv-dossier-nav{ display:flex; flex-wrap:wrap; gap:4px 20px; padding:8px 16px; border-bottom:1px solid var(--border); background:var(--surface); }
.iv-dossier-nav .iv-link{ min-height:40px; display:inline-flex; align-items:center; }
.iv-record-row{ display:flex; gap:12px; align-items:center; width:100%; padding:14px 0; border:0; background:none; font:inherit; color:var(--text); text-align:left; cursor:pointer; }
.iv-record-row:hover{ background:var(--surface2); }
.iv-record-row:active{ background:var(--surface3); }
.is-open > .iv-record-row{ background:var(--surface2); }
.iv-record-row:focus-visible{ outline:2px solid var(--focus-ring); outline-offset:3px; }
.iv-record-title{ flex:1; min-width:0; display:grid; gap:5px; }
.iv-record-title strong{ font-size:14px; font-weight:600; overflow-wrap:anywhere; }
.iv-record-title time{ font-size:12px; color:var(--muted); }
.iv-record-preview{ font-size:12.5px; line-height:1.5; color:var(--muted); overflow-wrap:anywhere; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }
.iv-record-chevron{ display:flex; transform:rotate(-90deg); color:var(--muted); }
.is-open > .iv-record-row .iv-record-chevron{ transform:rotate(90deg); }
.iv-record-document{ padding:12px 0 20px; }
.iv-record-document > .iv-dc-meta{ margin-top:20px; }
.iv-record-document .iv-an-summary,.iv-record-document .iv-an-p,.iv-record-document .iv-an-list li{ white-space:pre-line; }
.iv-dossier-identity{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.iv-dossier-facts{ width:100%; display:flex; flex-wrap:wrap; gap:16px 32px; margin:8px 0; }
.iv-dossier-facts dt{ font-size:12px; color:var(--muted); }
.iv-dossier-facts dd{ margin:4px 0 0; font-size:14px; font-weight:600; font-variant-numeric:tabular-nums; }
.iv-dossier-section h2{ scroll-margin-top:72px; }
.iv-dossier-section{ padding:20px; border-bottom:1px solid var(--border); min-width:0; }
.iv-dossier-section h2{ display:flex; align-items:center; gap:10px; margin:0 0 16px; font-size:16px; }
.iv-dossier-section h2 .iv-num{ color:var(--muted); font-size:12px; font-weight:500; }
.iv-dossier-records{ list-style:none; margin:0; padding:0; }
.iv-dossier-record{ padding:0; margin:0; border-bottom:1px solid var(--border); min-width:0; }
.iv-dossier-record:last-child{ margin-bottom:0; border-bottom:0; }
.iv-dossier-entry{ padding:14px 0; display:flex; flex-direction:column; gap:10px; min-width:0; }
.iv-dossier-empty,.iv-dossier-origin{ color:var(--muted); font-size:12px; line-height:1.5; }
.iv-dossier-origin{ margin:16px 20px; }
.iv-dossier-entry .iv-dc-text{ max-width:80ch; }
.iv-dc-filters{ width:100%; }
.iv-dc-filters summary{ cursor:pointer; padding:10px 4px; font-weight:600; font-size:13px; }
.iv-dc-filters .iv-dc-seg{ margin:6px 0; flex-wrap:wrap; }
.iv-reflection-editor{ display:flex; flex-direction:column; gap:12px; }
.iv-reflection-editor label{ font-size:14px; font-weight:600; }
.iv-reflection-editor textarea{ min-height:110px; resize:vertical; }
.iv-dc-who{ margin:0; color:var(--text); font-size:14px; font-weight:600; }
.iv-dc-ref{ margin:0; color:var(--muted); font-size:11.5px; font-weight:650; }
.iv-dc-text{ margin:0; color:var(--text); font-size:var(--text-body-sm-size); line-height:1.5; white-space:pre-wrap; overflow-wrap:anywhere; }
.iv-dc-full{ align-self:stretch; margin-top:4px; }
.iv-dc-full .iv-an{ padding:0; border:0; background:transparent; }
.iv-dc-full .iv-an-plazos{ grid-template-columns:minmax(0, 1fr); }
.iv-dc-full .iv-an-two{ grid-template-columns:minmax(0, 1fr); }
.iv-dc-full .iv-an-row{ grid-template-columns:minmax(0, 1fr); gap:var(--space-3); }

.iv-dc-meta{ display:flex; align-items:center; flex-wrap:wrap; gap:4px 14px; align-self:stretch; }
.iv-dc-meta .iv-link{ font-size:12px; min-height:36px; display:inline-flex; align-items:center; }
.iv-dossier-entry.is-editing .iv-dc-meta{ justify-content:flex-end; gap:8px; }
.iv-dc-hour{ margin-left:auto; color:var(--muted2); font-size:11px; font-family:var(--font-num); font-variant-numeric:tabular-nums; }
.iv-dc-event{ display:grid; grid-template-columns:92px minmax(0,1fr) auto; align-items:start; gap:12px; padding:14px 0; border-bottom:1px solid var(--border); font-size:13px; }
.iv-dc-event p{ margin:4px 0 0; color:var(--muted); line-height:1.5; }
.iv-ledger-values{ display:flex; gap:16px; margin:0; text-align:right; }
.iv-ledger-values dt{ color:var(--muted); font-size:11px; }
.iv-ledger-values dd{ margin:3px 0 0; font-variant-numeric:tabular-nums; }
.iv-dc-event-in{ display:flex; align-items:baseline; gap:7px; font-size:13px; font-family:var(--font-num); font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.iv-dc-event time{ color:var(--muted); font-size:12px; }
.iv-dc-none{ margin:auto; padding:var(--space-6); text-align:center; }
.iv-dc-none .iv-empty-d{ margin-left:auto; margin-right:auto; }
.iv-dossier > .iv-empty{ margin:auto; padding:var(--space-6); text-align:center; }
.iv-dossier > .iv-empty .iv-empty-d{ margin-left:auto; margin-right:auto; }
.iv-dossier > .iv-empty .iv-empty-acts{ justify-content:center; }
.iv-dc-grid.is-empty .iv-dossier{ background:var(--surface); }

@media (max-width:900px){
  .iv-anz-cards{ grid-template-columns:minmax(0, 1fr); gap:8px; }
  .iv-anz-card{ padding:11px 14px; }
  .iv-anz-card-q{ grid-column:2; }
  .iv-an-plazos, .iv-an-two{ grid-template-columns:minmax(0, 1fr); }
  .iv-an-row{ grid-template-columns:minmax(0, 1fr); gap:6px; }
  .iv-anz-ri{ grid-template-columns:56px minmax(0, 1fr) auto; }
  .iv-anz-ri-k{ display:none; }

  /* En móvil, la lista O el hilo: nunca los dos apretados. */
  .iv-dc-grid{ grid-template-columns:minmax(0, 1fr); height:auto; min-height:0; }
  .iv-dc-side{ border-right:0; }
  .iv-dc-grid:not(.is-thread) .iv-dossier{ display:none; }
  .iv-dc-grid.is-thread .iv-dc-side{ display:none; }
  .iv-dc-back{ display:inline-flex; align-items:center; gap:6px; flex-basis:100%; min-height:36px; }
  .iv-dc-panel:has(.iv-dc-grid.is-thread) > .iv-dc-toolbar{ display:none; }
  .iv-dc-grid.is-empty .iv-dossier{ display:flex; }
  .iv-dc-thead{ flex-wrap:wrap; padding:8px 10px; gap:6px 8px; }
  .iv-dc-thead-acts{ width:100%; }
  .iv-dc-event{ grid-template-columns:1fr auto; }
  .iv-dc-event > time{ grid-column:1 / -1; }
  .iv-record-row{ gap:8px; }
  .iv-record-row .hist-row-icon{ display:none; }
  .iv-dossier-section{ padding:16px 12px; }
  .iv-dc-full .iv-an{ padding:0; }
  .iv-dc-thead-acts .ui-btn{ flex:1 1 auto; min-height:44px; }
}
@media (max-width:640px){
  .iv-anz-form, .iv-an{ padding:var(--space-4); }
  .iv-an-summary{ font-size:15px; }
}

/* ============================================================
   FASE 5 — APEX INTELLIGENCE

   Una lista, no un muro de tarjetas: las lecturas afirmadas en UN panel
   con filetes entre ellas, y lo que está en observación debajo, en
   líneas. El punto dice el tono (ámbar: algo a vigilar; verde: algo
   que haces bien) y nunca significa «sube» o «baja». La familia
   (Inversión / Trading) va con los tonos de CATEGORÍA, como el
   calendario y la cartera.
   ============================================================ */
.iv-ix{ display:flex; flex-direction:column; gap:var(--space-4); margin-top:calc(var(--space-6) * -1); }
.iv-ix-body{ display:flex; flex-direction:column; gap:var(--space-6); max-width:880px; }
/* La cabecera, a la misma medida que la lista: el filtro se alinea con
   el borde derecho de lo que filtra, no con el de la ventana. */
.iv-ix > .iv-page-head{ max-width:880px; }
.iv-ix-sec{ display:flex; flex-direction:column; gap:var(--space-2); }
.iv-ix-h{ margin:0; color:var(--text); font-family:var(--font-display); font-size:15px; font-weight:650; letter-spacing:-0.01em; }
.iv-ix-note{ margin:-2px 0 var(--space-1); color:var(--muted); font-size:12.5px; }

.iv-ix-list{ list-style:none; margin:0; padding:0; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface); }
.iv-ix-item{ display:grid; grid-template-columns:8px minmax(0, 1fr); gap:0 14px; padding:16px 20px 16px 18px; }
.iv-ix-item + .iv-ix-item{ border-top:1px solid var(--border); }
.iv-ix-dot{ width:8px; height:8px; margin-top:7px; border-radius:50%; background:var(--muted2); }
.iv-ix-item.is-alerta .iv-ix-dot{ background:var(--amber); }
.iv-ix-item.is-bien .iv-ix-dot{ background:var(--green); }
.iv-ix-main{ min-width:0; }
.iv-sk-ix{ display:grid; gap:9px; padding-top:1px; }
.iv-sk-h{ width:120px; }
.iv-sk-link{ width:96px; margin-top:3px; }
/* La familia va en su propia COLUMNA a la derecha: con la etiqueta
   detrás del título, un enunciado de dos líneas la dejaba sola en una
   tercera, y cada lectura la pintaba en un sitio distinto. */
.iv-ix-top{ display:grid; grid-template-columns:minmax(0, 1fr) auto; align-items:start; gap:4px 12px; }
.iv-ix-title{ margin:0; color:var(--text); font-size:15px; font-weight:650; line-height:1.35; letter-spacing:-0.005em; }
.iv-ix-frase{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 8px;
  margin:4px 0 0; color:var(--muted); font-size:13.5px; line-height:1.5; max-width:72ch;
}
.iv-ix-mom{
  display:inline-block; padding:1px 7px; border-radius:var(--r-pill);
  background:var(--surface2); color:var(--text); font-size:11.5px; font-weight:650; white-space:nowrap;
}
.iv-ix-toggle{ margin-top:6px; margin-bottom:-6px; font-size:12.5px; color:var(--text); }
.iv-ix-proof{ margin-top:12px; }
.iv-ix-proof[hidden]{ display:none; }

.iv-ix-fam{
  display:inline-flex; align-items:center; height:20px; padding:0 8px; box-sizing:border-box;
  border-radius:var(--r-pill); font-size:11px; font-weight:700; white-space:nowrap;
}
.iv-ix-fam.is-inversion{ background:color-mix(in srgb, var(--cat-1) 13%, transparent); color:var(--cat-1); }
.iv-ix-fam.is-trading{ background:color-mix(in srgb, var(--cat-2) 13%, transparent); color:var(--cat-2); }

.iv-ix-evs{ list-style:none; margin:0; padding:0; }
.iv-ix-ev{
  display:grid; grid-template-columns:8px 58px 52px minmax(0, 1fr) auto; align-items:baseline; gap:10px;
  padding:9px 0; border-top:1px solid var(--border); font-size:13px; line-height:1.45;
}
.iv-ix-ev-mark{ align-self:center; width:7px; height:7px; box-sizing:border-box; border-radius:50%; border:1.5px solid var(--muted2); }
.iv-ix-item.is-alerta .iv-ix-ev.is-hit .iv-ix-ev-mark{ border-color:var(--amber-text); background:var(--amber); }
.iv-ix-item.is-bien .iv-ix-ev .iv-ix-ev-mark{ border-color:var(--green-text); }
.iv-ix-ev-code{ color:var(--text); font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.iv-ix-ev-date{ color:var(--muted); white-space:nowrap; }
.iv-ix-ev-t{ color:var(--text); min-width:0; }
.iv-ix-ev-go{ justify-self:end; font-size:12px; }
.iv-ix-more{ margin:8px 0 0; color:var(--muted); font-size:12.5px; line-height:1.45; }
.iv-ix-trev{ display:flex; flex-direction:column; gap:6px; margin:0; }
.iv-ix-trev > div{ display:grid; grid-template-columns:68px minmax(0, 1fr); gap:10px; padding-top:8px; border-top:1px solid var(--border); font-size:13px; }
.iv-ix-trev dt{ color:var(--muted); font-weight:600; }
.iv-ix-trev dd{ margin:0; color:var(--text); }

.iv-ix-obslist{ list-style:none; margin:0; padding:0; border-top:1px solid var(--border); }
.iv-ix-obs{ display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 12px; padding:11px 2px; border-bottom:1px solid var(--border); }
.iv-ix-obs-t{ color:var(--text); font-size:14px; font-weight:600; }
.iv-ix-obs-n{ margin-left:auto; color:var(--muted); font-size:12.5px; text-align:right; }
.iv-ix-foot{ margin:0; color:var(--muted); font-size:12.5px; line-height:1.5; }
/* La mitad que no se pudo leer, dicha sin tapar la que sí: una línea
   apoyada (filete, sin sombra) con su reintento al lado. */
.iv-ix-aviso{
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px 16px;
  padding:10px 14px; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface2);
}
.iv-ix-aviso p{ margin:0; color:var(--text); font-size:13px; line-height:1.45; }
.iv-ix-empty{ max-width:560px; }
.iv-ix-empty.is-page{ max-width:none; }

@media (max-width:640px){
  .iv-ix-item{ padding:14px 14px 14px 12px; gap:0 10px; }
  .iv-ix-ev{ grid-template-columns:8px auto minmax(0, 1fr); gap:2px 8px; }
  .iv-ix-ev-date{ grid-column:3; }
  .iv-ix-ev-t{ grid-column:2 / -1; }
  .iv-ix-ev-go{ grid-column:2 / -1; justify-self:start; margin-top:2px; }
  .iv-ix-obs-n{ margin-left:0; text-align:left; flex-basis:100%; }
}

}

/* APEX Intelligence lives inside Decisions in both modes. */
.iv-chat-empty{text-align:left;margin:auto 0;max-width:660px;padding:var(--space-5) 0;}
.iv-chat-empty>p:not(.iv-chat-overline){margin:0;max-width:560px;}
.iv-chat-prompts{justify-content:flex-start;}
.iv-chat-focus{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;border-bottom:1px solid var(--border-soft);}
.iv-chat-focus>div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-width:0;}
.iv-chat-focus strong{color:var(--text);font-weight:600;overflow-wrap:anywhere;}
.iv-chat-topics{list-style:none;margin:var(--space-5) 0 0;padding:0;}
.iv-chat-topics li{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 0;border-top:1px solid var(--border-soft);}
.iv-chat-topics li>div{display:flex;flex-direction:column;align-items:flex-start;gap:6px;}
.iv-chat-topics .is-important{border-left:2px solid var(--blue-fill);padding-left:14px;}
.iv-chat-topics p{margin:0;color:var(--muted);font-size:var(--text-body-sm-size);line-height:1.6;}
.iv-chat-message.is-user{align-self:flex-start;background:none;border-radius:0;padding:0 0 0 14px;border-left:2px solid var(--border);}
.iv-chat-message{max-width:100%;width:100%;}
.iv-chat-content{white-space:pre-wrap;}
.iv-chat-actions{display:flex;gap:16px;flex-wrap:wrap;margin:8px 0 16px;}
.iv-chat-reflection{padding:16px 0;border-top:1px solid var(--border);display:grid;gap:12px;}
.iv-chat-reflection label{font-weight:600;}
.iv-chat-reflection>div{display:flex;gap:8px;flex-wrap:wrap;}
.iv-chat-disclaimer summary,.iv-chat-context summary{cursor:pointer;}
.iv-chat-context ul{padding-left:18px;line-height:1.6;}
.iv-chat-disclaimer p{line-height:1.6;}
.iv-chat button:disabled{cursor:default;opacity:.6;}
.iv-chat button:focus-visible,.iv-chat summary:focus-visible,.iv-chat-messages:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px;}
@media(max-width:760px){
  .iv-chat-focus{align-items:flex-start;flex-wrap:wrap;}
  .iv-chat-empty h2{font-size:26px;}
  .iv-chat-composer{align-items:center;}
  .iv-chat-composer textarea{min-width:0;}
}

/* Panel: lectura breve primero; las superficies existentes siguen en detalle. */
.iv-reading{padding:28px 0 20px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:12px 0 22px;}
.iv-reading-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;}
.iv-reading h2{font-size:clamp(23px,3vw,32px);line-height:1.15;letter-spacing:-.035em;font-weight:600;margin:6px 0 24px;color:var(--text);max-width:24ch;}
.iv-reading h3{font-size:18px;line-height:1.35;letter-spacing:-.02em;font-weight:600;margin:0 0 7px;color:var(--text);}
.iv-reading-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;}
.iv-reading-item{min-width:0;padding:0 22px 6px 0;border-right:1px solid var(--border);}
.iv-reading-item:last-child{border-right:0;padding-right:0;}
.iv-reading p,.iv-reading blockquote{font-size:14px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere;}
.iv-reading .iv-reading-relation{color:var(--text);font-weight:500;}
.iv-reading blockquote{margin:14px 0;padding-left:12px;border-left:2px solid var(--blue);}
.iv-reading-coverage{margin-top:22px;max-width:88ch;}
.iv-reading-actions{display:flex;flex-wrap:wrap;gap:12px 24px;margin-top:20px;}
.iv-reading-general{padding-left:20px;max-width:75ch;line-height:1.7;color:var(--text);}
.iv-home-detail>summary{cursor:pointer;padding:16px 0;font-weight:500;color:var(--text);font-size:15px;}
.iv-home-detail[open]>summary{margin-bottom:14px;}
.iv-home-detail>summary:focus-visible{outline:2px solid var(--blue);outline-offset:5px;border-radius:4px;}
@media(max-width:760px){
 .iv-reading{padding-top:22px;}
 .iv-reading-head{display:block;}
 .iv-reading-head>.iv-link{margin-bottom:20px;}
 .iv-reading-list{grid-template-columns:1fr;gap:20px;}
 .iv-reading-item{border-right:0;border-bottom:1px solid var(--border);padding:0 0 20px;}
 .iv-reading-item:last-child{border-bottom:0;padding-bottom:0;}
 .iv-reading h2{max-width:22ch;margin-bottom:14px;}
}

/* Panel de entrada: bienvenida, accesos y lectura personal en widgets. */
.iv-home-welcome{margin:8px 0 0;color:var(--muted);font-size:var(--text-body-sm-size);line-height:1.5;}
.iv-home>.iv-actions{margin:20px 0 0;}
.iv-home .iv-reading-list{gap:16px;}
.iv-home .iv-reading-item,.iv-home .iv-reading-item:last-child{padding:20px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);}
@media(max-width:540px){
 .iv-home>.iv-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
 .iv-home>.iv-actions .iv-action{flex-direction:row;min-height:56px;padding:10px;gap:8px;}
 .iv-home>.iv-actions .iv-action-t{display:block;white-space:normal;}
 .iv-home>.iv-actions .iv-action-s{display:none;}
 .iv-home>.iv-actions .iv-action:last-child{grid-column:1/-1;}
 .iv-home .iv-reading-item,.iv-home .iv-reading-item:last-child{padding:16px;}
}

/* Lectura didáctica y acciones claras en el Panel. */
.iv-home-detail{margin-top:24px;}
.iv-reading-fact{font-size:20px!important;font-weight:600;line-height:1.35!important;color:var(--text);}
.iv-reading-relation{display:inline-block;padding:6px 10px;border-radius:var(--r-sm);background:var(--surface2);font-size:12px!important;line-height:1.5!important;}
.iv-reading-cta{margin-top:auto;align-self:flex-start;gap:8px;min-height:40px;}
.iv-home .iv-reading-item{display:flex;flex-direction:column;align-items:flex-start;}
.iv-home .iv-reading-item h3{margin-bottom:4px;}
.iv-home .iv-action{min-height:60px;border-radius:var(--r-lg);box-shadow:0 1px 2px rgba(0,0,0,.03);text-align:left;}
.iv-home .iv-action:hover{border-color:var(--blue);box-shadow:var(--shadow-focus);}
.iv-home .iv-action-ic{flex-shrink:0;border-radius:10px;width:36px;height:36px;}
.iv-home-detail .iv-tape-empty{white-space:normal;line-height:1.5;}

/* Market Pulse: reserve chart space and keep an uninterrupted quote loop. */
.iv-tape-spark:empty{width:84px;}
.iv-tape-track[data-state="empty"]{animation:none;}
.iv-tape-set>.iv-tape-set{flex-shrink:0;}

/* ---- Los DATOS MEDIDOS de un fundamental ----------------------
   Las cifras que APEX leyó, aparte de su interpretación: una rejilla
   tranquila de cifras sobre un filete, y el detalle replegado. */
.iv-an-measured{ display:flex; flex-direction:column; gap:10px; }
.iv-an-measured:empty, .iv-anz-result [data-anz-medidos][hidden]{ display:none; }
.iv-an-facts{
  display:grid; grid-template-columns:repeat(auto-fit, minmax(130px, 1fr)); gap:var(--space-3) var(--space-4);
  margin:0; padding:12px 0 0; border-top:1px solid var(--border); align-items:start;
}
.iv-an-fact{ display:flex; flex-direction:column-reverse; gap:3px; min-width:0; }
.iv-an-fact dt{ color:var(--muted); font-size:12px; font-weight:600; }
.iv-an-fact dd{ margin:0; color:var(--text); font-family:var(--font-num); font-variant-numeric:tabular-nums; font-size:17px; font-weight:650; letter-spacing:-0.01em; }
.iv-an-facts.is-full{ border-top:0; padding-top:4px; }
.iv-an-facts.is-full .iv-an-fact dd{ font-size:14.5px; }
.iv-an-event{ color:var(--muted); }
.iv-an-event strong{ color:var(--text); font-weight:650; }
.iv-an-note{ margin:0; color:var(--muted); font-size:12px; line-height:1.45; }
.iv-an-p.is-muted{ color:var(--muted); }
.iv-an-group + .iv-an-group{ margin-top:var(--space-4); }
.iv-an-gh{ margin:0 0 4px; color:var(--muted); font-size:11.5px; font-weight:700; letter-spacing:.02em; }

/* ---- DECISIONES: la barra de filtros (la del Historial de Trading) */
.iv-dc-panel{ display:flex; flex-direction:column; gap:var(--space-3); }
.iv-dc-panel[hidden]{ display:none; }
.iv-dc-toolbar{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--space-2) var(--space-4); }
.iv-dc-toolbar[hidden]{ display:none; }
.iv-dc-seg{ flex-wrap:wrap; }
.iv-dc-seg-n{ margin-left:4px; color:var(--muted); font-family:var(--font-num); font-variant-numeric:tabular-nums; font-weight:600; }
.iv-dc-seg .ui-seg-i.is-active .iv-dc-seg-n{ color:inherit; }
.iv-dc-panel.has-toolbar .iv-dc-grid{ height:auto; }
.iv-dc-scope{
  display:flex; align-items:center; justify-content:space-between; gap:var(--space-3);
  padding:8px 16px; border-bottom:1px solid var(--border); background:var(--surface2);
  color:var(--muted); font-size:12.5px;
}
@media (max-width: 900px){
  .iv-dc-toolbar{ flex-wrap:nowrap; overflow-x:auto; padding-bottom:2px; scrollbar-width:none; }
  .iv-dc-toolbar::-webkit-scrollbar{ display:none; }
  .iv-dc-seg{ flex-wrap:nowrap; flex:0 0 auto; }
  .iv-dc-seg .ui-seg-i{ white-space:nowrap; }
  .iv-dc-panel.has-toolbar .iv-dc-grid{ height:auto; }
}
