/* ===== Merged shell: tabs + RTL + map + news =====
   Scoped tokens live on #panel-map / #panel-news so the TV panel keeps styles.css intact. */

.site{ --ui-bg:#ffffff; --ui-top:#ffffff; --ui-ink:#161b17; --ui-soft:#5b675e; --ui-line:#e3e7e3;
  --ui-accent:#2f8f5b; --ui-sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --ui-fa:"Vazirmatn","SF Arabic","Geeza Pro",Tahoma,var(--ui-sans);
  font-family:var(--ui-fa); }
/* Fixed, non-scrolling page — each tab manages its own space */
html, body{ height:100%; overflow:hidden; }
body{ margin:0; background:#ffffff; }
.site{ height:100vh; display:flex; flex-direction:column; overflow:hidden; }
.site-top{ flex:0 0 auto; }
.panel{ min-height:0; }
.panel.is-active{ flex:1 1 auto; min-height:0; }
/* map & news scroll INSIDE their own panel, not the whole page */
#panel-map.is-active, #panel-news.is-active, #panel-bets.is-active{ overflow-y:auto; overflow-x:hidden; }
/* TV: original lstv layout — video LEFT, channel rail RIGHT (laptop); stacked video-on-top (mobile) */
#panel-tv.is-active{ overflow:hidden; }
#panel-tv .app-shell{ height:100%; min-height:0; }
/* the stage grid lays out LTR so the viewer sits left and the rail right,
   while the Persian content inside stays RTL */
#panel-tv .stage{ direction:ltr; }
#panel-tv .viewer, #panel-tv .rail{ direction:rtl; }
/* mobile: styles.css stacks player on top; let the TV panel scroll internally */
@media (max-width:980px){
  #panel-tv.is-active{ overflow-y:auto; }
  #panel-tv .app-shell{ height:auto; }
}

/* --- top bar + tabs --- */
.site-top{ position:sticky; top:0; z-index:30; background:var(--ui-top);
  border-bottom:1px solid var(--ui-line); }
/* nav + every tab share one 1280px container, so right edges line up */
.tabs{ max-width:1280px; margin-inline:auto; padding:10px clamp(12px,3vw,26px); }
.site-brand{ display:flex; align-items:center; gap:9px; font-weight:700; color:var(--ui-ink); font-size:16px; }
.site-logo{ display:grid; place-items:center; width:30px; height:30px; border-radius:8px;
  background:linear-gradient(135deg,#c2a15c,#8a6d2f); color:#101720; font-weight:800; font-size:12px; letter-spacing:.02em; }
/* 3 tabs anchored top-right, flowing right→left (RTL flex-start = right) */
.tabs{ display:flex; gap:6px; flex-wrap:wrap; }
.tab{ font-family:var(--ui-fa); font-size:14px; font-weight:600; color:var(--ui-soft);
  background:transparent; border:1px solid transparent; border-radius:999px; padding:8px 15px; cursor:pointer;
  transition:background .15s,color .15s,border-color .15s; }
.tab:hover{ color:var(--ui-ink); background:rgba(47,143,91,.07); }
.tab.is-active{ color:#ffffff; background:var(--ui-accent); border-color:var(--ui-accent); }
.tab:focus-visible{ outline:2px solid var(--ui-accent); outline-offset:2px; }

/* --- panels --- */
.panel{ display:none; }
.panel.is-active{ display:block; }

/* keep the TV panel readable in RTL shell */
#panel-tv{ direction:rtl; }

/* ================= MAP + NEWS shared tokens ================= */
#panel-map, #panel-news, #panel-bets{
  --panel:#ffffff; --panel-2:#f6f8f6; --ink:#161b17; --ink-soft:#535e56; --ink-faint:#8b948d;
  --line:#e3e7e3; --line-soft:#edf0ed; --accent:#2f8f5b; --accent-soft:#257a4b;
  --map-land:#f2f0ea; --map-land-edge:#c9cec5; --map-sea:#eaf1ec; --map-grid:#dde4de;
  --cat-explosion:#d98033; --cat-missile:#c04545; --cat-airstrike:#b45585; --cat-drone:#3591a5;
  --cat-infra:#5b7aa8; --cat-naval:#2f8f86; --cat-alert:#b08d2e; --cat-other:#8a94a3;
  --map-nb:#f7f5f0; --map-nb-edge:#d6dad2;
  --shadow:0 4px 18px rgba(30,45,35,.08);
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --fa:"Vazirmatn","SF Arabic","Geeza Pro",Tahoma,var(--sans);
  color:var(--ink); font-family:var(--fa);
}

/* ================= MAP ================= */
.map-wrap{ max-width:1280px; margin:0 auto; padding:16px clamp(12px,3vw,26px) 40px; }
.map-head{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px 20px; padding-bottom:14px;
  border-bottom:1px solid var(--line); margin-bottom:16px; }
.map-title{ margin:3px 0 2px; font-size:clamp(19px,3vw,26px); font-weight:700; }
.map-sub{ color:var(--ink-soft); font-size:12.5px; max-width:70ch; line-height:1.6; }
.map-sub a{ color:var(--ink-soft); text-decoration:underline; }
.map-snap{ margin-inline-start:auto; text-align:left; display:flex; flex-direction:column; gap:2px; }
.map-snap-v{ font-size:12.5px; color:var(--ink-soft); }
.map-grid{ display:grid; grid-template-columns:1fr 340px; gap:16px; align-items:start; }
@media (max-width:900px){ .map-grid{ grid-template-columns:1fr; } }
.map-card{ background:var(--panel); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow); }
.mapcard{ position:relative; overflow:hidden; padding:6px; }
#m_map{ display:block; width:100%; height:auto; }
.maphint{ position:absolute; inset-inline-start:14px; bottom:11px; font-family:var(--mono); font-size:10px;
  color:var(--ink-faint); pointer-events:none; direction:rtl; }
.map-rail{ display:flex; flex-direction:column; gap:16px; }
.panel-pad{ padding:16px; }
.panel-title{ font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--ink-faint); font-weight:600; margin:0 0 12px; }
.horizon-val{ display:flex; align-items:baseline; gap:8px; direction:rtl; }
.horizon-val .big{ font-size:26px; font-weight:700; }
.horizon-val .unit{ color:var(--ink-soft); font-size:13px; }
.count-line{ font-family:var(--fa); font-size:12.5px; color:var(--ink-soft); margin:2px 0 14px; direction:rtl; }
.count-line b{ color:var(--accent-soft); }
input[type=range]{ -webkit-appearance:none; appearance:none; width:100%; height:26px; background:transparent; cursor:pointer; margin:0; direction:ltr; }
input[type=range]::-webkit-slider-runnable-track{ height:6px; border-radius:6px;
  background:linear-gradient(90deg,var(--accent) 0 var(--fill,42%),var(--line) var(--fill,42%) 100%); }
input[type=range]::-webkit-slider-thumb{ -webkit-appearance:none; width:18px; height:18px; margin-top:-6px;
  border-radius:50%; background:var(--panel); border:2px solid var(--accent); }
input[type=range]::-moz-range-thumb{ width:18px; height:18px; border-radius:50%; background:var(--panel); border:2px solid var(--accent); }
.ticks{ display:flex; justify-content:space-between; direction:ltr; font-family:var(--fa); font-size:10px; color:var(--ink-faint); margin-top:4px; }
.timeline{ margin-top:16px; }
.tl-label{ font-family:var(--fa); font-size:10px; color:var(--ink-faint); margin-bottom:6px; direction:rtl; }
.tl-box{ position:relative; height:34px; border:1px solid var(--line); border-radius:8px; background:var(--panel-2); overflow:hidden; }
.tl-window{ position:absolute; top:0; bottom:0; right:0; background:color-mix(in srgb,var(--accent) 16%,transparent); border-left:1.5px dashed var(--accent); }
.tl-tick{ position:absolute; bottom:6px; width:3px; border-radius:2px; transform:translateX(-50%); }
.tl-now{ position:absolute; right:2px; top:3px; font-family:var(--fa); font-size:9px; color:var(--accent-soft); }
.tl-axis{ position:absolute; left:6px; bottom:2px; font-family:var(--mono); font-size:9px; color:var(--ink-faint); }
.legend{ display:flex; flex-wrap:wrap; gap:7px; direction:rtl; }
.chip{ display:inline-flex; align-items:center; gap:7px; padding:5px 10px; border:1px solid var(--line); border-radius:999px;
  background:var(--panel-2); cursor:pointer; font-size:12px; color:var(--ink-soft); font-family:var(--fa); }
.chip .dot{ width:9px; height:9px; border-radius:50%; background:var(--c); }
.chip .n{ font-family:var(--fa); font-size:11px; color:var(--ink-faint); }
.chip[aria-pressed=false]{ opacity:.4; }
.listcard{ margin-top:16px; max-height:min(520px,66vh); overflow:auto; }
.list-head{ position:sticky; top:0; background:var(--panel); padding:14px 16px 10px; border-bottom:1px solid var(--line-soft); }
.events{ list-style:none; margin:0; padding:6px; }
.ev{ display:grid; grid-template-columns:auto 1fr; gap:10px; padding:9px 10px; border-radius:10px; cursor:pointer; border:1px solid transparent; direction:rtl; }
.ev+.ev{ margin-top:2px; }
.ev:hover,.ev.active{ background:var(--panel-2); }
.ev.active{ border-color:var(--line); }
.ev .mk{ width:11px; height:11px; border-radius:50%; margin-top:4px; background:var(--c); box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent); }
.ev .place{ font-size:13.5px; font-weight:600; }
.ev .en{ font-size:12.5px; color:var(--ink-soft); margin-top:2px; line-height:1.5; }
.ev .meta{ display:flex; gap:8px; align-items:center; margin-top:5px; font-family:var(--fa); font-size:10.5px; color:var(--ink-faint); }
.src-tag{ color:var(--ink-faint); border:1px solid var(--line); border-radius:4px; padding:0 4px; font-size:9.5px; }
.ev-empty{ padding:24px 16px; text-align:center; color:var(--ink-faint); font-size:13px; }

/* pins */
.pin{ cursor:pointer; transition:opacity .2s; }
.pin.dim{ display:none; }
.pulse{ transform-box:fill-box; transform-origin:center; opacity:0; }
.pin.recent .pulse{ animation:m_pulse 2.6s ease-out infinite; }
@keyframes m_pulse{ 0%{ transform:scale(.65); opacity:.5; } 70%{ transform:scale(2.4); opacity:0; } 100%{ opacity:0; } }
.pin.sel .core,.pin:focus-visible .core{ stroke:var(--ink); stroke-width:2.4; }
.pin:focus-visible{ outline:none; }
.cl-badge{ fill:#fff; font-family:var(--sans); font-weight:700; text-anchor:middle; dominant-baseline:central;
  pointer-events:none; paint-order:stroke; stroke:rgba(0,0,0,.28); stroke-width:.5px; }
.citylabel{ font-family:var(--fa); fill:var(--ink-faint); paint-order:stroke; stroke:var(--map-sea); stroke-width:2.6px; stroke-linejoin:round; }
.citylabel.hot{ fill:var(--ink); font-weight:600; }
.citydot{ fill:var(--ink-faint); opacity:.5; }
@media (prefers-reduced-motion:reduce){ .pin.recent .pulse{ animation:none; } }

/* map popup */
.popup{ position:absolute; z-index:20; width:min(320px,80vw); background:var(--panel); border:1px solid var(--line);
  border-radius:12px; box-shadow:var(--shadow); padding:13px 14px; display:none; direction:rtl; }
.popup.show{ display:block; }
.pu-close{ position:absolute; top:8px; left:9px; border:none; background:transparent; color:var(--ink-faint); font-size:17px; cursor:pointer; }
.pu-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:0 0 10px; }
.pu-place{ font-size:15.5px; font-weight:700; }
.pu-count{ font-family:var(--fa); font-size:11px; color:var(--accent-soft); }
.pu-members{ max-height:min(52vh,360px); overflow:auto; display:flex; flex-direction:column; gap:12px; }
.pu-item{ border-inline-start:3px solid var(--c); padding-inline-start:10px; }
.pu-item.hl{ background:var(--panel-2); border-radius:7px; padding:5px 8px; }
.pu-item-top{ display:flex; align-items:center; justify-content:space-between; gap:8px; }
.pu-cat{ color:var(--c); font-weight:600; font-size:11px; }
.pu-when{ font-family:var(--fa); font-size:10.5px; color:var(--ink-faint); }
.pu-fa{ font-family:var(--fa); direction:rtl; text-align:right; font-size:13px; line-height:1.7; white-space:pre-wrap; margin:3px 0 4px; color:var(--ink); }
.pu-meta2{ font-family:var(--mono); font-size:10px; color:var(--ink-faint); direction:ltr; }

/* ================= NEWS ================= */
.news-wrap{ max-width:1280px; margin:0 auto; padding:16px clamp(12px,3vw,26px) 44px; direction:rtl; }
.news-head{ display:flex; flex-wrap:wrap; align-items:flex-end; gap:12px 20px; padding-bottom:14px; border-bottom:1px solid var(--line); margin-bottom:18px; }
.news-title{ margin:4px 0 3px; font-size:clamp(18px,3vw,24px); font-weight:700; }
.news-sub{ color:var(--ink-soft); font-size:12.5px; }
.news-controls{ margin-inline-start:auto; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.news-count{ font-family:var(--fa); font-size:12px; color:var(--accent-soft); }
.horizon-tabs{ display:inline-flex; border:1px solid var(--line); border-radius:999px; overflow:hidden; }
.horizon-tabs button{ font-family:var(--fa); font-size:12.5px; color:var(--ink-soft); background:transparent; border:none;
  padding:7px 13px; cursor:pointer; }
.horizon-tabs button[aria-pressed=true]{ background:var(--accent); color:#ffffff; font-weight:700; }
.news-list{ display:flex; flex-direction:column; gap:22px; }
.n-group{ display:flex; flex-direction:column; gap:10px; }
.n-cat{ display:flex; align-items:center; gap:8px; margin:0; font-size:14.5px; font-weight:700; color:var(--ink);
  border-inline-start:3px solid var(--nc); padding-inline-start:9px; }
.n-cat-n{ margin-inline-start:8px; font-family:var(--fa); font-size:11px; color:var(--nc); opacity:.85; }
.n-items{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),380px)); justify-content:start; gap:10px; }
.n-item{ display:block; text-decoration:none; color:inherit; background:var(--panel); border:1px solid var(--line);
  border-radius:12px; padding:13px 14px; transition:border-color .15s,transform .12s; }
.n-item:hover{ border-color:var(--accent); transform:translateY(-1px); }
.n-item:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.n-title{ font-size:14.5px; font-weight:600; line-height:1.55; }
.n-sum{ font-size:12.5px; color:var(--ink-soft); line-height:1.7; margin-top:6px; }
.n-meta{ display:flex; align-items:center; gap:7px; margin-top:9px; font-family:var(--fa); font-size:11px; color:var(--ink-faint); flex-wrap:wrap; }
.n-src{ color:var(--accent-soft); font-weight:600; }
.n-badge{ border:1px solid var(--line); border-radius:4px; padding:0 5px; font-size:9.5px; }
.n-empty{ color:var(--ink-faint); text-align:center; padding:30px; }
.news-foot{ margin-top:26px; padding-top:14px; border-top:1px solid var(--line); color:var(--ink-faint); font-size:12px; line-height:1.8; }

/* ===== neighbour countries + Iran fill ===== */
.nb{ fill:var(--map-nb); stroke:var(--map-nb-edge); stroke-width:.8; stroke-linejoin:round; }
.iran{ fill:var(--map-land); stroke:var(--map-land-edge); stroke-width:1.2; stroke-linejoin:round; }

/* ===== one-fold MAP: fills its panel, event list scrolls internally ===== */
#panel-map .map-wrap{ height:100%; max-width:none; display:flex; flex-direction:column; gap:10px; padding:12px clamp(12px,3vw,22px); }
#panel-map .map-head{ margin:0; padding-bottom:8px; }
#panel-map .map-sub{ font-size:11.5px; }
#panel-map .map-grid{ flex:1 1 auto; min-height:0; grid-template-columns:1fr 320px; align-items:stretch; }
#panel-map .mapcard{ min-height:0; display:flex; }
#panel-map #m_map{ width:100%; height:100%; }
#panel-map .map-rail{ min-height:0; }
.rail-fixed{ flex:0 0 auto; }
.rail-scroll{ flex:1 1 auto; min-height:0; overflow:auto; margin-top:0; max-height:none; }
.map-rail .tl-box{ margin-top:10px; }
.map-rail .legend{ margin-top:12px; }
.map-rail .count-line{ margin:0 auto 0 0; }
@media (max-width:900px){ #panel-map .map-grid{ grid-template-columns:1fr; grid-auto-rows:minmax(0,1fr); } }

/* ===== one-fold NEWS: header fixed, list scrolls internally ===== */
#panel-news .news-wrap, #panel-bets .news-wrap{ padding:12px clamp(12px,3vw,22px) 40px; }
#panel-news .news-head{ flex:0 0 auto; margin-bottom:12px; padding-bottom:10px; }
#panel-news .news-list{ flex:1 1 auto; min-height:0; overflow:auto; padding-inline-end:4px; gap:16px; }
#panel-news .news-foot{ flex:0 0 auto; margin-top:10px; padding-top:10px; }
.n-items{ grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr)); }
.n-sum{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

/* ===== map zoom controls ===== */
#m_map{ touch-action:none; cursor:grab; }
#m_map:active{ cursor:grabbing; }
.map-zoom{ position:absolute; top:12px; inset-inline-end:12px; display:flex; flex-direction:column; gap:6px; z-index:10; }
.map-zoom button{ width:32px; height:32px; border-radius:8px; border:1px solid var(--line);
  background:var(--panel); color:var(--ink); font-size:17px; line-height:1; cursor:pointer;
  box-shadow:var(--shadow); }
.map-zoom button:hover{ border-color:var(--accent); color:var(--accent-soft); }
.map-zoom button:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }

/* ===== compact now-strip: give the video more height ===== */
#panel-tv .now-strip{ min-height:0; padding:.5rem clamp(1rem,3vw,1.6rem); gap:.9rem; }
#panel-tv .now-strip .eyebrow{ margin:0; font-size:.66rem; }
#panel-tv .now-strip h2{ font-size:clamp(.95rem,1.6vw,1.15rem); line-height:1.3;
  display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; -webkit-line-clamp:unset; }
#panel-tv .now-strip p:last-child{ margin:.1rem 0 0; font-size:.8rem; }
#panel-tv .program-stats{ min-width:0; gap:.4rem; }
#panel-tv .program-stats span{ font-size:.75rem; padding:.25rem .55rem; }

/* topbar + ticker removed: the stage is the only row and fills the panel */
#panel-tv .app-shell{ grid-template-rows:minmax(0,1fr); }

/* ===== prediction markets tab ===== */
.bets-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),430px)); justify-content:start; gap:12px; }
.k-item{ background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px 16px; }
.k-top{ display:flex; align-items:baseline; justify-content:space-between; gap:14px; }
.k-title{ font-size:14.5px; font-weight:600; line-height:1.6; }
.k-pct{ font-size:24px; font-weight:700; color:var(--ink); white-space:nowrap; }
.k-pct-l{ font-size:11px; font-weight:500; color:var(--ink-faint); margin-inline-start:5px; }
.k-bar{ height:4px; border-radius:4px; background:var(--line-soft); margin:9px 0 7px; overflow:hidden; direction:ltr; }
.k-bar span{ display:block; height:100%; border-radius:4px; background:color-mix(in srgb, var(--accent) 55%, var(--line)); }
.k-meta{ display:flex; justify-content:space-between; gap:10px; font-size:11.5px; color:var(--ink-faint); }
.k-link{ color:var(--ink-faint); font-size:11px; text-decoration:none; border-bottom:1px dotted var(--ink-faint); }
.k-link:hover{ color:var(--accent-soft); border-color:var(--accent-soft); }
/* RTL-safe map header: each sub piece isolated in its own box */
.map-head{ direction:rtl; }
.map-sub{ display:flex; flex-wrap:wrap; align-items:baseline; gap:0 7px; }
.map-sub > span{ unicode-bidi:isolate; }
.sub-sep{ color:var(--ink-faint); }
.map-snap{ direction:rtl; text-align:right; }
.map-sub .ms{ white-space:nowrap; unicode-bidi:isolate; }


.n-item{ display:flex; gap:11px; align-items:flex-start; }
.n-img{ width:62px; height:62px; object-fit:cover; border-radius:8px; flex:0 0 auto; }
.n-body{ min-width:0; flex:1; }

/* light theme for the TV panel (overrides styles.css dark tokens) */
:root{ --bg:#ffffff; --panel:#f6f8f6; --panel-2:#eef1ee; --line:#e0e5e0; --text:#161b17;
  --muted:#5b675e; --dim:#8b948d; --green:#2f8f5b; --red:#c04545; --gold:#8a7430;
  --focus:#2f8f5b; --shadow:0 6px 22px rgba(30,45,35,.10); color-scheme:light; }
body{ background:#ffffff !important; }
#panel-tv .player-frame{ background:#0b0d0b; } /* the video itself stays dark */
#panel-tv .now-strip{ background:var(--panel); border-top:1px solid var(--line); }
#panel-tv .rail{ background:var(--panel-2); }

/* sparkline: 45-day yes-price movement */
.k-spark{ margin:9px 0 2px; }
.k-spark svg{ display:block; width:100%; height:84px; overflow:visible; }
.ks-line{ fill:none; stroke:color-mix(in srgb, var(--ink-soft) 70%, var(--accent)); stroke-width:1.5; vector-effect:non-scaling-stroke; stroke-linejoin:round; }
.ks-area{ fill:color-mix(in srgb, var(--ink-soft) 5%, transparent); }
.ks-dot{ fill:var(--ink-soft); }
.ks-cap{ display:block; margin-top:3px; font-size:10px; color:var(--ink-faint); text-align:left; }
/* Live (top) gets the tall row; Next (bottom) the short one */
#panel-tv .rail{ grid-template-rows:minmax(0,1fr) minmax(9rem,32%); }

.k-src{ font-size:10px; color:var(--ink-faint); border:1px solid var(--line); border-radius:4px; padding:0 5px; direction:ltr; }

/* items from the last 3h breathe gently */
.ev.fresh .mk{ animation:freshdot 2.6s ease-in-out infinite; }
@keyframes freshdot{ 0%,100%{ box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent); }
  50%{ box-shadow:0 0 0 6px color-mix(in srgb,var(--c) 10%,transparent); } }
@media (prefers-reduced-motion:reduce){ .ev.fresh .mk{ animation:none; } }

/* TV constrained to the same container */
#panel-tv .app-shell{ max-width:1280px; margin-inline:auto; width:100%; }

.k-img{ width:44px; height:44px; object-fit:cover; border-radius:8px; flex:0 0 auto; }
.k-top{ align-items:center; }

/* breaking bar: last 60 minutes */
.breaking{ border:1px solid color-mix(in srgb,var(--cat-missile) 28%,transparent);
  background:color-mix(in srgb,var(--cat-missile) 4%,var(--panel));
  border-radius:12px; padding:10px 14px; margin-bottom:18px; }
.bk-head{ display:flex; align-items:center; gap:7px; font-size:12px; font-weight:700;
  color:var(--cat-missile); margin-bottom:7px; }
.bk-dot{ width:8px; height:8px; border-radius:50%; background:var(--cat-missile);
  animation:bkpulse 1.6s ease-in-out infinite; }
@keyframes bkpulse{ 0%,100%{opacity:1} 50%{opacity:.35} }
@media (prefers-reduced-motion:reduce){ .bk-dot{ animation:none; } }
.bk-row{ display:flex; gap:9px; align-items:baseline; padding:3px 0; text-decoration:none; color:inherit; }
.bk-row:hover .bk-txt{ color:var(--cat-missile); }
.bk-time{ flex:0 0 auto; font-size:10.5px; color:var(--ink-faint); }
.bk-txt{ font-size:13px; line-height:1.6; }

/* chat */
.chat-wrap{ max-width:760px; }
.c-list{ height:calc(100vh - 250px); min-height:280px; overflow-y:auto; border:1px solid var(--line);
  border-radius:12px; background:var(--panel); padding:12px 14px; display:flex; flex-direction:column; gap:7px; }
.c-msg{ display:flex; gap:8px; align-items:baseline; flex-wrap:wrap; font-size:13.5px; line-height:1.65; }
.c-user{ font-weight:700; color:var(--accent-soft); flex:0 0 auto; }
.c-text{ min-width:0; }
.c-time{ font-size:10px; color:var(--ink-faint); margin-inline-start:auto; }
.c-empty{ color:var(--ink-faint); text-align:center; margin:auto; }
.c-form{ display:flex; gap:8px; margin-top:10px; }
.c-name{ flex:0 0 110px; }
.c-text-in{ flex:1; }
.c-name,.c-text-in{ font-family:var(--fa); font-size:13.5px; padding:9px 12px; border:1px solid var(--line);
  border-radius:9px; background:var(--panel); color:var(--ink); }
.c-name:focus,.c-text-in:focus{ outline:2px solid var(--accent); outline-offset:1px; }
.c-send{ font-family:var(--fa); font-size:13.5px; font-weight:600; padding:9px 18px; border:none;
  border-radius:9px; background:var(--accent); color:#fff; cursor:pointer; }
.c-send:hover{ background:var(--accent-soft); }

/* 24h playback hides live pins while ripples fire */
#m_map.playing .pin{ display:none; }

.map-clock{ position:absolute; top:12px; left:50%; transform:translateX(-50%); z-index:11;
  font-size:30px; font-weight:700; color:var(--ink); font-variant-numeric:tabular-nums;
  background:color-mix(in srgb,var(--panel) 86%,transparent); border:1px solid var(--line);
  border-radius:12px; padding:4px 18px; pointer-events:none; direction:rtl; }
