/* Market Calendar — estilos del plugin (compact home + página full). */

/* Tokens definidos también en .mcal-daypanel: el panel se reparenta a <body>
   (fuera de .mcal-wrap), sin ellos su interior y los colores de los tiles
   quedaban sin valor (transparente / negro). */
.mcal-wrap,
.mcal-daypanel {
    --mcal-accent: #026580;
    --mcal-up:     #27AE60;
    --mcal-down:   #E74C3C;
    --mcal-bg:     #ffffff;
    --mcal-panel:  #ffffff;
    --mcal-border: rgba(120, 120, 140, 0.22);
    --mcal-muted:  #6c757d;
    --mcal-radius: 8px;
    --mcal-font:   Roboto, system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
    font-family: var(--mcal-font);
    color: #1a1a1a;
}
.mcal-wrap { margin-bottom: 20px; }

/* [hidden] load-bearing: los overlays (.mcal-loader, .mcal-daypanel) tienen
   display:flex de autor, que vence a [hidden] de UA. Sin este !important el
   spinner y el panel de día quedan visibles siempre y tapan/bloquean el panel
   (gotcha §8 de tool-plugin-pattern). NO borrar. */
.mcal-wrap [hidden] { display: none !important; }
/* El panel de día se reparenta a <body> (fuera de .mcal-wrap) para escapar del
   overflow del slot: necesita su propia regla [hidden] global. NO borrar. */
.mcal-daypanel[hidden] { display: none !important; }

.mcal-panel {
    background: var(--mcal-panel);
    border: 1px solid var(--mcal-border);
    border-radius: var(--mcal-radius);
    padding: 14px;
    position: relative;
    box-sizing: border-box;
}

/* Watermark de marca SOLO CSS (patrón MRP/POI): logo grande de fondo para que
   las capturas lleven la fuente. Detrás del contenido (z-index), sin capturar
   clics. El contenido se eleva con z-index:1. */
.mcal-panel::before {
    content: ''; position: absolute; inset: 0; pointer-events: none;
    background: url('../iconos/bf_logo.webp') no-repeat center / 58%;
    opacity: 0.06; z-index: 0;
}
.mcal-controls, .mcal-content, .mcal-filter { position: relative; z-index: 1; }
.mcal-loader { z-index: 3; }
/* En la home (compact) el watermark va más grande, para que las capturas del
   bloque de portada lleven bien la marca. */
.mcal-compact .mcal-panel::before { background-size: 96%; opacity: 0.07; }

/* ── Cabecera de controles ─────────────────────────────────────────────── */
.mcal-controls {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px 10px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}
.mcal-title { font-weight: 700; font-size: 1.05rem; }
.mcal-in-slot .mcal-title { display: none; }

.mcal-types { display: flex; gap: 2px; flex-wrap: wrap; }
.mcal-type-btn {
    padding: 5px 11px; border: 1px solid var(--mcal-border); background: #f4f5f7;
    border-radius: 6px; cursor: pointer; font-size: 0.82rem; color: #4a5568;
    transition: all 0.15s;
}
.mcal-type-btn:hover { background: #e9ecef; }
.mcal-type-btn.active { background: var(--mcal-accent); color: #fff; border-color: var(--mcal-accent); font-weight: 600; }

/* Cabecera en 3 grupos: tipos (izq) · filtro de fecha (centro) · Today/vistas/ℹ
   (dcha). El centro crece y centra su contenido; si no cabe, envuelve a una fila
   propia centrada (flex-basis grande + flex-wrap). */
.mcal-types { flex: 0 0 auto; }
.mcal-filter { flex: 1 1 320px; display: flex; justify-content: center; align-items: center;
    gap: 8px 12px; flex-wrap: wrap; }
.mcal-right { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; }
.mcal-views { display: flex; align-items: center; gap: 4px; }
.mcal-nav-btn, .mcal-view-btn {
    padding: 4px 10px; border: 1px solid var(--mcal-border); background: #fff;
    border-radius: 6px; cursor: pointer; font-size: 0.82rem; color: #333; line-height: 1.4;
}
.mcal-nav-btn:hover, .mcal-view-btn:hover { background: #f1f3f5; }
.mcal-view-btn.active { background: var(--mcal-accent); color: #fff; border-color: var(--mcal-accent); font-weight: 600; }
.mcal-today { font-size: 0.78rem; }

/* ── Rejilla semanal ───────────────────────────────────────────────────── */
.mcal-week {
    display: grid;
    grid-template-columns: repeat(var(--mcal-cols, 7), 1fr);
    gap: 6px;
}
.mcal-col { border: 1px solid var(--mcal-border); border-radius: 8px; overflow: hidden; min-height: 90px; }
.mcal-col.mcal-weekend { background: rgba(120, 120, 140, 0.04); }
.mcal-col-h {
    text-align: center; font-size: 0.72rem; font-weight: 700; padding: 5px;
    background: rgba(2, 101, 128, 0.10); color: var(--mcal-accent);
    text-transform: uppercase; letter-spacing: 0.03em;
}
.mcal-weekend .mcal-col-h { color: var(--mcal-muted); background: rgba(120, 120, 140, 0.08); }
.mcal-cnt { font-weight: 500; opacity: 0.7; }
.mcal-col-b { padding: 7px; }
.mcal-empty { text-align: center; color: var(--mcal-muted); padding: 12px 0; }

/* ── Tiles (mosaico de logos) ──────────────────────────────────────────── */
.mcal-tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 9px 6px; }
.mcal-tiles-wide { grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); }
.mcal-tile {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    text-align: center; text-decoration: none; color: inherit; cursor: pointer;
}
.mcal-tile:hover .mcal-sym { color: var(--mcal-accent); }
.mcal-logo {
    width: 34px; height: 34px; border-radius: 8px; object-fit: contain;
    background: #fff; border: 1px solid var(--mcal-border); margin-bottom: 2px;
}
.mcal-logo-fallback {
    background: linear-gradient(135deg, #cfd6dd, #aeb7c2);
    border: 1px solid var(--mcal-border);
}
.mcal-sym { font-weight: 700; font-size: 0.72rem; line-height: 1; }
.mcal-prim { font-size: 0.72rem; font-weight: 700; line-height: 1.15; }
.mcal-prim.up { color: var(--mcal-up); }
.mcal-prim.down { color: var(--mcal-down); }
.mcal-sub { font-size: 0.64rem; color: var(--mcal-muted); line-height: 1.1; }
.mcal-yoy { font-size: 0.62rem; font-weight: 600; line-height: 1; padding: 1px 4px; border-radius: 4px; }
.mcal-yoy.up { color: var(--mcal-up); background: rgba(39, 174, 96, 0.12); }
.mcal-yoy.down { color: var(--mcal-down); background: rgba(231, 76, 60, 0.12); }

.mcal-more {
    display: block; width: 100%; margin-top: 6px; padding: 3px; border: none;
    background: none; color: var(--mcal-accent); font-size: 0.68rem; font-weight: 600;
    cursor: pointer; text-align: center;
}
.mcal-more:hover { text-decoration: underline; }

/* ── Tile IPO ──────────────────────────────────────────────────────────── */
.mcal-tile-ipo { padding: 6px 4px; border: 1px solid var(--mcal-border); border-radius: 7px; }
.mcal-ipo-exch { font-size: 0.6rem; color: var(--mcal-muted); }
.mcal-ipo-badge { font-size: 0.58rem; padding: 1px 5px; border-radius: 4px; font-weight: 600; }
.mcal-ipo-badge.priced { background: rgba(39, 174, 96, 0.14); color: var(--mcal-up); }
.mcal-ipo-badge.expected { background: rgba(2, 101, 128, 0.10); color: var(--mcal-accent); }

/* ── Filas económicas ──────────────────────────────────────────────────── */
.mcal-rows { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
/* Variante FULL (week/list/día): dos líneas — qué es · país, y debajo valores. */
.mcal-econ-row { font-size: 0.8rem; line-height: 1.28; min-width: 0; }
.mcal-econ-l1 { display: flex; align-items: flex-start; gap: 6px; }
.mcal-econ-l2 { display: flex; flex-wrap: wrap; gap: 3px 14px; margin-left: 14px; margin-top: 2px; }
.mcal-impact-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; margin-top: 4px; background: var(--mcal-muted); }
.impact-high .mcal-impact-dot { background: var(--mcal-down); }
.impact-medium .mcal-impact-dot { background: #d97706; }
.impact-low .mcal-impact-dot { background: var(--mcal-muted); }
.mcal-econ-country { font-weight: 700; flex: 0 0 auto; }
.mcal-econ-event { flex: 1 1 auto; min-width: 0; font-weight: 600; }
.mcal-econ-time { color: var(--mcal-muted); font-size: 0.72rem; flex: 0 0 auto; }
.mcal-econ-vals { font-size: 0.76rem; font-weight: 500; white-space: nowrap; }
.mcal-econ-none { color: var(--mcal-muted); font-style: italic; font-weight: 400; }
/* Variante COMPACT (month/home): una línea, elipsis, sin valores. */
.mcal-econ-compact { display: flex; align-items: center; gap: 6px; font-size: 0.72rem; line-height: 1.25; }
.mcal-econ-compact .mcal-impact-dot { margin-top: 0; }
.mcal-econ-compact .mcal-econ-event { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }

/* ── Filtro de tiempo (centro de la cabecera, siempre visible) ─────────── */
.mcal-lf-presets { display: flex; gap: 2px; }
.mcal-lf-btn { padding: 3px 10px; border: 1px solid var(--mcal-border); background: #fff; border-radius: 6px; cursor: pointer; font-size: 0.78rem; color: #333; }
.mcal-lf-btn:hover { background: #f1f3f5; }
.mcal-lf-btn.active { background: var(--mcal-accent); color: #fff; border-color: var(--mcal-accent); font-weight: 600; }
.mcal-lf-date { font-size: 0.76rem; color: var(--mcal-muted); display: inline-flex; align-items: center; gap: 5px; }
.mcal-lf-date input { font-size: 0.78rem; padding: 3px 6px; border: 1px solid var(--mcal-border); border-radius: 5px; background: #fff; color: inherit; }

/* ── Rejilla mensual ───────────────────────────────────────────────────── */
.mcal-mhead, .mcal-mgrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.mcal-mh { text-align: center; font-size: 0.66rem; font-weight: 700; color: var(--mcal-muted); padding: 3px; text-transform: uppercase; }
.mcal-mgrid { margin-top: 4px; }
.mcal-mcell { border: 1px solid var(--mcal-border); border-radius: 6px; min-height: 74px; padding: 4px; min-width: 0; }
.mcal-mcell .mcal-rows { gap: 6px; }
.mcal-mcell .mcal-econ-row { font-size: 0.72rem; }
.mcal-mcell .mcal-econ-vals { font-size: 0.68rem; }
.mcal-mcell.mcal-out { background: rgba(120, 120, 140, 0.05); opacity: 0.6; }
.mcal-mnum { font-size: 0.66rem; font-weight: 700; color: var(--mcal-muted); margin-bottom: 3px; }
.mcal-mcell .mcal-tiles { grid-template-columns: repeat(3, 1fr); gap: 5px 3px; }
.mcal-mcell .mcal-logo { width: 24px; height: 24px; }
.mcal-mcell .mcal-prim, .mcal-mcell .mcal-sub, .mcal-mcell .mcal-yoy { display: none; }

/* ── Lista ─────────────────────────────────────────────────────────────── */
.mcal-list-day {
    font-size: 0.78rem; font-weight: 700; color: var(--mcal-accent);
    padding: 10px 4px 4px; border-top: 1px solid var(--mcal-border); margin-top: 6px;
}
.mcal-list-day:first-child { border-top: none; margin-top: 0; }
.mcal-list-body { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 12px 8px; padding: 4px; }
.mcal-list-body .mcal-rows, .mcal-rows { grid-column: 1 / -1; }
.mcal-empty-list { color: var(--mcal-muted); padding: 20px; text-align: center; }

/* ── Panel de día ("+N more") ──────────────────────────────────────────── */
.mcal-daypanel {
    position: fixed; inset: 0; z-index: 9999; background: rgba(0, 0, 0, 0.62);
    display: flex; align-items: center; justify-content: center; padding: 20px;
}
.mcal-daypanel-inner {
    background: var(--mcal-panel, #fff); color: inherit;
    border: 1px solid var(--mcal-border); border-radius: 10px; padding: 18px;
    max-width: 680px; width: 100%; max-height: 80vh; overflow: auto;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
}
.mcal-daypanel-head { font-weight: 700; margin-bottom: 12px; color: var(--mcal-accent); }
.mcal-daypanel-close {
    position: absolute; top: 14px; right: 18px; font-size: 1.6rem; line-height: 1;
    background: none; border: none; color: #fff; cursor: pointer;
}

/* ── Compact (home) ────────────────────────────────────────────────────── */
.mcal-compact-list { display: flex; flex-direction: column; gap: 4px; }
.mcal-cday {
    font-size: 0.68rem; font-weight: 700; text-transform: uppercase; color: var(--mcal-accent);
    letter-spacing: 0.03em; padding: 5px 2px 2px; border-top: 1px solid rgba(120, 120, 140, 0.12);
}
.mcal-cday:first-child { border-top: none; }
.mcal-compact .mcal-tiles { grid-template-columns: repeat(4, 1fr); }

/* ── Loader ────────────────────────────────────────────────────────────── */
.mcal-loader { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.mcal-spinner {
    width: 34px; height: 34px; border: 4px solid #eee; border-top-color: var(--mcal-accent);
    border-radius: 50%; animation: mcal-spin 0.8s linear infinite; margin: 20px auto;
}
@keyframes mcal-spin { to { transform: rotate(360deg); } }
.mcal-error { color: var(--mcal-muted); padding: 16px; text-align: center; }

/* ── Fit-to-height en el slot clamped de la home (§7 tool-plugin-pattern) ─ */
@media (min-width: 901px) {
    .bft-row-clamped .bft-slot-body:has(.mcal-wrap) { height: var(--bft-row-max, auto); }
    .bft-row-clamped .mcal-wrap { height: 100%; }
    .bft-row-clamped .mcal-panel { height: 100%; display: flex; flex-direction: column; }
    .bft-row-clamped .mcal-content { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
    .bft-row-clamped .bft-slot-body:has(.mcal-wrap)::after { display: none; }
}

/* ── Responsive ────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .mcal-week { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
    .mcal-week { grid-template-columns: 1fr; }
    .mcal-mhead { display: none; }
    .mcal-mgrid { grid-template-columns: 1fr; }
    .mcal-mcell.mcal-out { display: none; }
}

/* ── Dark mode ─────────────────────────────────────────────────────────── */
@media (prefers-color-scheme: dark) {
    .mcal-wrap:not([data-theme="light"]),
    .mcal-daypanel:not([data-theme="light"]) {
        --mcal-bg: #15181d; --mcal-panel: #1b1f26; --mcal-border: rgba(160, 170, 190, 0.20);
        --mcal-muted: #9aa4b2; color: #e5e7eb;
    }
    .mcal-wrap:not([data-theme="light"]) .mcal-type-btn,
    .mcal-wrap:not([data-theme="light"]) .mcal-nav-btn,
    .mcal-wrap:not([data-theme="light"]) .mcal-view-btn,
    .mcal-wrap:not([data-theme="light"]) .mcal-lf-btn,
    .mcal-wrap:not([data-theme="light"]) .mcal-lf-date input { background: #232833; color: #cbd5e1; }
    .mcal-wrap:not([data-theme="light"]) .mcal-logo { background: #fff; }
}
:root[data-theme="dark"] .mcal-wrap,
:root[data-theme="dark"] .mcal-daypanel {
    --mcal-bg: #15181d; --mcal-panel: #1b1f26; --mcal-border: rgba(160, 170, 190, 0.20);
    --mcal-muted: #9aa4b2; color: #e5e7eb;
}
:root[data-theme="dark"] .mcal-type-btn,
:root[data-theme="dark"] .mcal-nav-btn,
:root[data-theme="dark"] .mcal-view-btn,
:root[data-theme="dark"] .mcal-lf-btn,
:root[data-theme="dark"] .mcal-lf-date input { background: #232833; color: #cbd5e1; }
