:root {
  color-scheme: dark;
  --bg: #060912;
  --bg-grad-a: rgba(45, 226, 192, 0.10);
  --bg-grad-b: rgba(167, 139, 250, 0.10);
  --ink: #eef3ff;
  --muted: #8b99b8;
  --muted-strong: #bfc9e0;
  --faint: #7180a5;
  --line: #1b2640;
  --line-soft: #141d34;
  --panel: #0d1322;
  --panel-strong: #111a2e;
  --panel-soft: #090e1a;
  --soft: rgba(139, 153, 184, 0.08);
  --accent: #2de2c0;        /* neon mint-cyan — primary brand + CTA */
  --neon: #38e8ff;          /* pure cyan accent */
  --violet: #a78bfa;
  --green: #34d399;         /* bullish */
  --rose: #ff6b9e;          /* pink — bearish secondary */
  --danger: #ff5470;        /* red — bearish / risk */
  --good: #34d399;
  --warning: #f2c14e;
  --gold: #f2c14e;          /* premium badge */
  --shadow: 0 18px 50px rgba(0, 0, 0, 0.45);
  --glow: 0 0 24px rgba(45, 226, 192, 0.22);
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
  --r-card: 16px;
  --r-pill: 999px;
  --r-tab: 14px;
  --maxw: 860px;
}

* { box-sizing: border-box; }

html, body {
  max-width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-x: none;
}

body {
  margin: 0;
  color: var(--ink);
  background:
    radial-gradient(760px 420px at 92% -8%, rgba(45, 226, 192, 0.14), transparent 60%),
    radial-gradient(760px 440px at -12% 105%, rgba(167, 139, 250, 0.14), transparent 55%),
    linear-gradient(180deg, rgba(3, 8, 17, 0.95), rgba(5, 9, 20, 0.98)),
    var(--bg);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
img { max-width: 100%; display: block; }

h1, h2, h3, h4, .card-title, .detail h1, .detail h2, .article-card h2, .event-card h2,
.alert-card h2, .review-card h2, .login-panel h2, .screen-title {
  font-family: var(--sans);
  font-weight: 700;
  letter-spacing: -0.2px;
  margin: 0;
}

/* ===== Buttons ===== */
button, .primary-link, .btn {
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel-strong);
  color: var(--ink);
  padding: 0 16px;
  cursor: pointer;
  transition: border-color .15s, transform .12s, background .15s;
  font-weight: 600;
}
button:hover, .primary-link:hover, .btn:hover { border-color: var(--accent); }
button:active, .primary-link:active { transform: translateY(1px); }
/* Quiet secondary hovers — cyan is reserved for selected states and primary actions. */
button:not(.primary):not(.active):not(.seg):not(.chip):hover,
.btn:not(.primary):hover { border-color: var(--muted-strong); }
a:focus-visible, button:focus-visible, input:focus-visible, .chip:focus-visible, .seg:focus-visible,
.icon-btn:focus-visible, .lang-row:focus-visible, .switch:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}
/* Suppress the browser's default visible focus box on non-interactive
   route-heading focus targets (h1/h2 with tabindex="-1"). Keyboard focus
   still moves to the heading for screen readers; only the visual box is hidden. */
h1[tabindex="-1"]:focus-visible, h2[tabindex="-1"]:focus-visible { outline: none; }

.primary, .primary-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: linear-gradient(135deg, var(--accent), #19b89a);
  border-color: transparent;
  color: #04130f;
  font-weight: 700;
  box-shadow: 0 6px 22px rgba(45, 226, 192, 0.22);
}
.primary:hover, .primary-link:hover { filter: brightness(1.05); border-color: transparent; }

.icon-button { min-height: 44px; padding: 0 12px; font-size: 13px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; }
.icon-button.saved { background: rgba(45, 226, 192, 0.14); border-color: rgba(45, 226, 192, 0.4); color: var(--accent); }
.icon-button[data-sign-out] { background: rgba(255, 84, 112, 0.14); border: 1px solid rgba(255, 84, 112, 0.4); color: var(--danger); font-weight: 700; }
.icon-button[data-sign-out]:hover { background: rgba(255, 84, 112, 0.22); border-color: rgba(255, 84, 112, 0.6); }

/* ===== Shell layout (mobile-first, centered column) ===== */
.shell { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }

.topbar {
  position: sticky; top: 0; z-index: 30;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 18px 18px;
  padding-top: calc(18px + env(safe-area-inset-top));
  background: rgba(5, 9, 18, 0.86);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-bottom: 1px solid rgba(148, 163, 184, 0.18);
}
.brand { display: flex; align-items: center; gap: 14px; min-width: 0; }
.brand-mark {
  display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px;
  background: linear-gradient(135deg, var(--accent), var(--neon));
  color: #04130f; font-weight: 800; font-size: 17px; letter-spacing: -0.7px;
  box-shadow: 0 0 18px rgba(45, 226, 192, 0.45);
}
.brand strong { font-size: 19px; font-weight: 800; letter-spacing: -0.2px; }
.brand small { display: block; font-size: 9px; letter-spacing: 0.22em; color: var(--faint); text-transform: uppercase; font-weight: 600; }

.top-actions { display: flex; align-items: center; gap: 8px; min-width: 0; flex-shrink: 0; }
.icon-btn {
  position: relative; display: grid; place-items: center;
  width: 44px; height: 44px; min-height: 44px; padding: 0; border-radius: 12px;
  background: var(--panel); border: 1px solid var(--line); color: var(--muted-strong);
}
.icon-btn:hover { border-color: var(--accent); color: var(--ink); }
.icon-btn .dot { position: absolute; top: 8px; right: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--danger); box-shadow: 0 0 8px var(--danger); }
.avatar-btn {
  width: 44px; height: 44px; padding: 0; border-radius: 50%; overflow: hidden;
  background: linear-gradient(135deg, var(--violet), var(--accent)); color: #060912; font-weight: 700; font-size: 14px;
}

.lang-pill { display: inline-flex; border: 1px solid rgba(148, 163, 184, 0.28); border-radius: 13px; overflow: hidden; background: rgba(13, 19, 34, 0.72); }
.lang-pill .segmented { border: 0; border-radius: 0; background: transparent; color: var(--muted); font-weight: 700; min-height: 44px; min-width: 32px; padding: 0 12px; font-size: 12px; }
.lang-pill .segmented.active { background: var(--accent); color: #04130f; }

.main {
  width: 100%; max-width: var(--maxw); margin: 0 auto;
  padding: 16px 14px calc(80px + env(safe-area-inset-bottom));
  flex: 1;
}
.main.wide { max-width: 1160px; }
/* Reusable role="status" live region for save/share/feedback confirmations. */
.app-status {
  position: fixed; left: 50%; transform: translateX(-50%);
  bottom: calc(76px + env(safe-area-inset-bottom)); z-index: 45;
  max-width: min(420px, calc(100% - 24px));
  padding: 9px 16px; border-radius: var(--r-pill);
  border: 1px solid rgba(45, 226, 192, 0.4);
  background: rgba(13, 19, 34, 0.96);
  color: var(--accent); font-size: 13px; font-weight: 600; text-align: center;
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.5);
  opacity: 0; pointer-events: none; transition: opacity .18s ease;
}
.app-status.show { opacity: 1; }
.news-refreshing {
  margin: 0 0 12px; padding: 8px 12px; border-radius: 10px;
  border: 1px solid var(--line); background: var(--panel);
  color: var(--muted); font-size: 13px;
}
/* Back-to-Profile navigation link on child screens */
.back-to-profile {
  display: inline-flex; align-items: center; gap: 4px;
  min-height: 44px; padding: 0 4px;
  color: var(--muted-strong); font-size: 14px; font-weight: 600;
  margin: 0 0 12px;
}
.back-to-profile:hover { color: var(--ink); }
.detail-back, .back-to-profile { min-height: 44px; }

/* eyebrow + page title kept for compatibility */
.eyebrow { margin: 0 0 4px; text-transform: uppercase; font-size: 10px; font-weight: 700; letter-spacing: 0.2em; color: var(--accent); }

/* auth banner (kept, restyled) */
.auth-banner {
  display: flex; justify-content: space-between; gap: 12px; align-items: center;
  border: 1px solid var(--line-soft); border-radius: 12px; padding: 9px 13px; margin: 0 0 16px;
  background: var(--panel); color: var(--muted); font-size: 12.5px;
}
.auth-banner strong { color: var(--muted-strong); font-weight: 600; }
.auth-banner.ok { border-color: rgba(52, 211, 153, 0.3); }
.auth-banner.locked { border-color: rgba(255, 84, 112, 0.4); }

/* ===== Bottom tab bar ===== */
.tabbar {
  position: fixed; left: 0; right: 0; transform: none;
  bottom: 0; z-index: 40;
  display: flex; gap: 4px;
  width: 100%;
  padding: 10px 18px calc(10px + env(safe-area-inset-bottom));
  border: 1px solid rgba(148, 163, 184, 0.18); border-bottom: 0; border-radius: 22px 22px 0 0;
  background: rgba(7, 13, 26, 0.94);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255,255,255,0.02);
}
.tabbar a {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  min-height: 48px; justify-content: center; padding: 7px 4px; border-radius: 10px;
  color: var(--faint); font-size: 12px; font-weight: 600; letter-spacing: 0.02em;
  transition: color .15s, background .15s;
}
.tabbar a .ti { font-size: 19px; line-height: 1; font-weight: 400; }
.tabbar svg { width: 20px; height: 20px; display: block; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.tabbar a:hover { color: var(--muted-strong); background: var(--soft); }
.tabbar a.active { color: var(--accent); background: transparent; }
.tabbar a.active .ti { text-shadow: 0 0 12px rgba(45, 226, 192, 0.6); }

/* legacy sidebar/mobile-nav kept hidden (replaced by topbar + tabbar) */
.sidebar, .mobile-nav, .nav, .admin-nav { display: none; }

/* admin sub-nav (horizontal chip row) */
.admin-subnav {
  display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px;
}
.admin-subnav a {
  padding: 8px 13px; border-radius: var(--r-pill); border: 1px solid var(--line);
  background: var(--panel); color: var(--muted); font-size: 12.5px; font-weight: 600;
}
.admin-subnav a:hover { color: var(--ink); border-color: var(--accent); }
.admin-subnav a.active { background: rgba(45, 226, 192, 0.14); color: var(--accent); border-color: rgba(45, 226, 192, 0.4); }

/* ===== Screen header (in-content) ===== */
.screen-head { margin-bottom: 22px; }
.screen-head h1 { font-size: 32px; line-height: 1.08; letter-spacing: -0.3px; }
.screen-head .sub { color: var(--muted); font-size: 15px; margin-top: 8px; font-weight: 500; }

/* ===== Segmented tabs (For You / Trending ...) ===== */
.seg-tabs {
  display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none;
  padding: 4px 0 12px; margin: 0 -2px 6px;
}
.seg-tabs::-webkit-scrollbar { display: none; }
.seg-tabs .seg {
  flex-shrink: 0; padding: 8px 16px; border-radius: var(--r-pill);
  border: 1px solid var(--line); background: var(--panel); color: var(--muted);
  font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap; min-height: 44px;
}
.seg-tabs .seg:hover { color: var(--ink); border-color: #2a375a; }
.seg-tabs .seg.active { background: var(--accent); color: #04130f; border-color: transparent; }

/* ===== Category chips ===== */
.chips { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; padding: 4px 2px 14px; }
.chips::-webkit-scrollbar { display: none; }
.chip {
  flex-shrink: 0; padding: 7px 14px; border-radius: var(--r-pill);
  border: 1px solid var(--line); background: var(--panel); color: var(--muted-strong);
  font-size: 12.5px; font-weight: 600; cursor: pointer; min-height: 44px;
}
.chip:not(.active):hover { border-color: var(--muted-strong); color: var(--ink); }
.chip.active { background: rgba(45, 226, 192, 0.14); color: var(--accent); border-color: rgba(45, 226, 192, 0.45); }
.chip.hot { color: var(--danger); border-color: rgba(255, 84, 112, 0.4); }
.chip.hot.active { background: rgba(255, 84, 112, 0.16); }
.news-filter-rail {
  display: flex;
  gap: 10px;
  padding: 0 0 18px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  scroll-snap-type: x proximity;
}
.news-filter-rail::-webkit-scrollbar { display: none; }
.news-filter-rail .chip {
  flex-shrink: 0;
  min-width: 58px;
  min-height: 44px;
  padding: 0 16px;
  border-radius: 24px;
  background: rgba(17, 26, 46, 0.86);
  border-color: rgba(148, 163, 184, 0.22);
  color: var(--muted-strong);
  font-size: 14px;
  font-weight: 800;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.02), 0 8px 26px rgba(0,0,0,0.18);
  scroll-snap-align: start;
}
.news-filter-rail .chip.active {
  background: rgba(45, 226, 192, 0.08);
  border-color: rgba(45, 226, 192, 0.78);
  color: var(--accent);
}

/* ===== News cards (feed) ===== */
.feed-list { display: grid; gap: 12px; }
.news-workspace {
  display: grid;
  grid-template-columns: minmax(0, 800px) 320px;
  gap: 24px;
  align-items: start;
}
.news-primary { min-width: 0; }
.news-rail {
  position: sticky;
  top: 96px;
  display: grid;
  gap: 12px;
}
.rail-panel {
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(13, 19, 34, 0.82);
  padding: 14px;
  box-shadow: var(--shadow);
}
.rail-panel h2 { font-size: 14px; margin: 0 0 10px; color: var(--ink); }
.rail-row {
  display: grid;
  gap: 3px;
  padding: 10px 0;
  border-top: 1px solid var(--line-soft);
}
.rail-row:first-of-type { border-top: 0; padding-top: 0; }
.rail-row b {
  font-size: 13px;
  line-height: 1.25;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.rail-row span { color: var(--muted); font-size: 12px; }
.rail-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.rail-chips span {
  border: 1px solid rgba(45, 226, 192, 0.32);
  border-radius: var(--r-pill);
  padding: 4px 9px;
  color: var(--accent);
  background: rgba(45, 226, 192, 0.08);
  font-size: 12px;
  font-weight: 700;
}
.rail-link { display: inline-flex; margin-top: 10px; color: var(--neon); font-size: 12px; font-weight: 800; }
.news-card {
  display: grid; grid-template-columns: 1fr 96px; gap: 14px; align-items: stretch;
  border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel);
  padding: 14px; transition: border-color .15s, transform .12s;
}
.news-card.no-thumb { grid-template-columns: 1fr; }
.news-card:hover { border-color: #2c3a5e; transform: translateY(-1px); }
.news-card .nc-body { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.news-card .nc-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.news-card.external .nc-title::after { content: " ↗"; color: var(--accent); font-weight: 700; }
.label-pill {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 9px; border-radius: var(--r-pill); font-size: 10px; font-weight: 700;
  letter-spacing: 0.04em; text-transform: uppercase;
}
.label-pill.breaking { background: rgba(255, 84, 112, 0.16); color: var(--danger); }
.label-pill.trending { background: rgba(242, 193, 78, 0.16); color: var(--warning); }
.label-pill.news { background: rgba(56, 232, 255, 0.14); color: var(--neon); }
.label-pill.analysis { background: rgba(167, 139, 250, 0.16); color: var(--violet); }
.nc-time { font-size: 12px; color: var(--faint); font-weight: 500; }
.nc-title { font-size: 16px; font-weight: 700; line-height: 1.28; color: var(--ink); letter-spacing: -0.2px; }
.nc-title:hover { color: var(--accent); }
.nc-source { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 6px; }
.nc-source .src-dot { width: 14px; height: 14px; border-radius: 4px; background: var(--panel-strong); display: grid; place-items: center; font-size: 8px; font-weight: 800; color: var(--muted-strong); }
.nc-scores { display: flex; gap: 8px; margin-top: 2px; flex-wrap: wrap; }
.score-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; padding: 3px 8px; border-radius: var(--r-pill); border: 1px solid transparent; }
.score-chip.bull { background: rgba(52, 211, 153, 0.12); color: var(--green); border-color: rgba(52, 211, 153, 0.3); }
.score-chip.bear { background: rgba(255, 84, 112, 0.12); color: var(--danger); border-color: rgba(255, 84, 112, 0.3); }
.score-chip.neu { background: rgba(56, 232, 255, 0.1); color: var(--neon); border-color: rgba(56, 232, 255, 0.28); }
.score-chip.cred { background: var(--soft); color: var(--muted-strong); border-color: var(--line); }
.nc-thumb { border-radius: 12px; background-size: cover; background-position: center; min-height: 96px; }
.nc-thumb.ph { display: grid; place-items: center; }
.news-sentinel { min-height: 32px; display: grid; place-items: center; color: var(--muted); font-size: 12px; }
.news-warm-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); box-shadow: var(--shadow); padding: 28px 18px 18px; text-align: center; display: grid; gap: 12px; }
.news-warm-card .warm-icon { width: 92px; height: 92px; margin: 0 auto; border-radius: 50%; display: grid; place-items: center; color: var(--accent); font-size: 48px; border: 1px solid rgba(45, 226, 192, 0.28); background: radial-gradient(circle, rgba(45, 226, 192, 0.14), transparent 64%); }
.news-warm-card h2 { font-size: 20px; }
.news-warm-card p { color: var(--muted); margin: 0 auto; max-width: 300px; }
.ghost-link { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid rgba(45, 226, 192, 0.45); border-radius: 12px; color: var(--accent); font-weight: 700; }
.preview-block { margin-top: 18px; }
.preview-block h3 { color: var(--muted); font-size: 14px; margin: 0 0 8px; }
.skeleton-card { display: grid; grid-template-columns: 84px 1fr; gap: 14px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 14px; }
.skeleton-card span, .skeleton-card b { display: block; border-radius: 8px; background: linear-gradient(90deg, rgba(139, 153, 184, 0.12), rgba(139, 153, 184, 0.22), rgba(139, 153, 184, 0.12)); }
.skeleton-card span { height: 84px; }
.skeleton-card div { display: grid; align-content: center; gap: 10px; }
.skeleton-card b { height: 13px; }
.skeleton-card b:nth-child(2) { width: 86%; }
.skeleton-card b:nth-child(3) { width: 58%; }

.signal-feed-list { gap: 14px; }
.signal-news-list {
  display: grid;
  gap: 0;
  overflow: hidden;
  border: 1px solid rgba(148, 163, 184, 0.18);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(12, 18, 32, 0.9), rgba(6, 10, 20, 0.92));
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.36);
}
.signal-card {
  display: grid; gap: 10px;
  border: 1px solid var(--line); border-radius: var(--r-card);
  background: linear-gradient(180deg, rgba(17, 26, 46, 0.96), rgba(9, 14, 26, 0.96));
  padding: 14px; box-shadow: var(--shadow); min-width: 0;
}
.signal-card:hover { border-color: rgba(56, 232, 255, 0.34); }
/* Quiet card hover — reduce cyan noise on non-interactive containers. */
.signal-card:hover { border-color: var(--muted-strong); }
.signal-card .art-img.hero, .signal-detail .art-img.hero { margin: 0; border-radius: 12px; }
.signal-news-list .signal-card {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.signal-news-list .signal-card:hover { border-color: transparent; }
.signal-tags, .signal-badges, .detail-actions, .feedback-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.signal-tags .tag, .detail-tags .tag {
  display: inline-flex; align-items: center; min-height: 26px; padding: 3px 9px;
  border: 1px solid rgba(167,139,250,.34); border-radius: var(--r-pill);
  background: rgba(167,139,250,.13); color: var(--muted-strong); font-size: 11px; font-weight: 800;
}
.signal-tags a.tag, .detail-tags a.tag { text-decoration: none; cursor: pointer; }
.signal-tags .coin-tag, .detail-tags .coin-tag { border-color: color-mix(in srgb, var(--accent) 48%, var(--line)); color: var(--accent); }
.signal-tags .category-tag, .detail-tags .category-tag { border-style: dashed; color: var(--muted); background: transparent; }
.coin-filter-active { border-color: var(--accent); color: var(--accent); }
.lead-media { position: relative; display: block; min-width: 0; }
.lead-tag {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  min-height: 31px; padding: 5px 13px;
  border: 0; border-radius: 13px;
  background: linear-gradient(135deg, rgba(84, 55, 168, 0.96), rgba(49, 33, 107, 0.96));
  color: #f6f3ff; font-size: 14px; font-weight: 800;
  box-shadow: 0 8px 24px rgba(21, 10, 52, 0.42);
}
.signal-title { color: var(--ink); font-size: 18px; line-height: 1.25; font-weight: 800; letter-spacing: -0.2px; overflow-wrap: anywhere; }
.signal-title:hover { color: var(--muted-strong); }
.signal-copy { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.signal-copy b { color: var(--violet); }
.signal-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-width: 0; }
.bookmark-btn {
  width: 44px; min-height: 44px; padding: 0; border-radius: 12px;
  display: grid; place-items: center; color: var(--muted-strong);
}
.bookmark-btn svg {
  width: 22px; height: 22px; display: block; fill: none; stroke: currentColor;
  stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round;
}
.bookmark-btn.saved { color: var(--gold); border-color: rgba(242,193,78,.42); background: rgba(242,193,78,.12); }
.signal-cta {
  min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border: 1px solid transparent; border-radius: 12px;
  background: linear-gradient(135deg, var(--accent), #79ecd8);
  color: #04130f; padding: 0 16px; font-weight: 800; font-size: 14px;
}
.signal-cta:hover { filter: brightness(1.04); }
/* Lead story: restrained 16:9 image, full badges, headline, TL;DR, CTA. */
.signal-news-list .signal-card-lead { padding: 0; gap: 0; }
.signal-card-lead .art-img.hero { aspect-ratio: 16 / 9; }
.signal-news-list .signal-card-lead .art-img.hero { aspect-ratio: 16 / 5.2; border-radius: 16px 16px 0 0; }
.lead-content { display: grid; gap: 16px; padding: 20px 16px 16px; }
.signal-card-lead .signal-title {
  font-size: 24px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.signal-card-lead .signal-copy {
  font-size: 16px; line-height: 1.55;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.signal-badges { gap: 10px; }
.signal-badges .score-chip,
.signal-badges .impact-chip,
.compact-metrics .score-chip,
.compact-metrics .impact-chip {
  min-height: 34px;
  gap: 7px;
  padding: 5px 12px;
  font-size: 13px;
  border-color: rgba(148, 163, 184, 0.18);
  background: rgba(11, 18, 32, 0.72);
}
.score-chip svg, .impact-chip svg {
  width: 18px; height: 18px; display: block; fill: none; stroke: currentColor;
  stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round;
}
.score-chip.cred { color: var(--accent); border-color: rgba(45, 226, 192, 0.28); background: rgba(45, 226, 192, 0.08); }
.impact-chip.med { color: var(--gold); border-color: rgba(242, 193, 78, 0.32); background: rgba(242, 193, 78, 0.07); }
.impact-chip.low { color: #d8e66a; border-color: rgba(216, 230, 106, 0.28); background: rgba(216, 230, 106, 0.06); }
.impact-chip.high { color: var(--warning); border-color: rgba(242, 193, 78, 0.36); background: rgba(242, 193, 78, 0.08); }
.signal-footer-lead { gap: 12px; }
.lead-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.signal-footer-lead .signal-cta { width: auto; min-width: 130px; }
.src-tile {
  display: grid; place-items: center; width: 18px; height: 18px; border-radius: 4px;
  flex: 0 0 auto; font-size: 8px; font-weight: 900; letter-spacing: -0.4px;
  color: #04130f; background: linear-gradient(135deg, var(--accent), #85f4de);
}
.src-tile.t1 { background: linear-gradient(135deg, #facc15, #fb923c); color: #1a1300; }
.src-tile.t2 { background: linear-gradient(135deg, #60a5fa, #22d3ee); color: #020817; }
.src-tile.t3 { background: linear-gradient(135deg, #a78bfa, #38e8ff); color: #070617; }
.src-tile.t4 { background: linear-gradient(135deg, #34d399, #2de2c0); color: #02130d; }
.nc-source strong { color: var(--ink); font-size: 13px; font-weight: 800; }
.nc-source span { flex-shrink: 0; }

/* Compact scan-first rows: thumbnail + two-line headline + one insight line. */
.signal-card-compact {
  display: grid; grid-template-columns: 112px 1fr; gap: 12px; align-items: start;
}
.signal-news-list .signal-card-compact {
  padding: 16px;
  border-top: 1px solid rgba(148, 163, 184, 0.14);
}
.signal-card-compact .compact-media { display: block; }
.signal-card-compact .compact-thumb { width: 112px; height: 104px; border-radius: 10px; object-fit: cover; }
.signal-card-compact .compact-body { display: grid; gap: 6px; min-width: 0; }
.signal-card-compact .signal-title {
  font-size: 17px; line-height: 1.22; font-weight: 800;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.signal-card-compact .compact-insight {
  font-size: 14px; line-height: 1.34;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.signal-card-compact .compact-metrics { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.signal-card-compact .compact-metrics .score-chip,
.signal-card-compact .compact-metrics .impact-chip { min-height: 27px; font-size: 11px; padding: 2px 6px; gap: 4px; }
.signal-card-compact .compact-metrics svg { width: 15px; height: 15px; }
.compact-footer {
  grid-column: 1 / -1;
  padding-top: 2px;
}
/* Compact card without a source image: body spans full width, no media column. */
.signal-card-compact.no-media { grid-template-columns: 1fr; }
.signal-card-compact.no-media .compact-media { display: none; }
.signal-card-compact.media-hidden { min-height: 156px; }

/* Signal Brief tabs: accessible tablist + panels. */
.brief-tabs button { min-height: 44px; }
.brief-tab-panel { outline: none; }
.brief-tab-panel:focus-visible { box-shadow: 0 0 0 2px rgba(56, 232, 255, 0.5); border-radius: 8px; }

/* Filter empty / customize CTA states. */
.filter-empty { padding: 28px 18px; text-align: center; display: grid; gap: 10px; border: 1px dashed var(--line); border-radius: var(--r-card); }
.filter-empty h2 { font-size: 17px; }
.filter-empty p { color: var(--muted); margin: 0 auto; max-width: 280px; }
.profile-following { text-decoration: none; }
.profile-following:hover { color: var(--accent); }

.market-brief-card, .prediction-soon {
  display: grid; gap: 16px;
  border: 1px solid var(--line); border-radius: var(--r-card);
  background: var(--panel); padding: 18px; box-shadow: var(--shadow);
}
.brief-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--muted); font-size: 12px; }
.brief-copy { margin: 0; color: var(--ink); font-size: 16px; line-height: 1.65; }
.home-market-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.home-market-card { border: 1px solid var(--line); border-radius: 14px; background: var(--panel-strong); padding: 12px; min-width: 0; }
.home-market-card .hm-token { display: flex; align-items: center; gap: 7px; font-size: 13px; margin-bottom: 8px; }
.home-market-card strong { display: block; font-size: 17px; }
.home-market-card span.up, .home-market-card span.dn { font-size: 13px; font-weight: 700; }
.home-market-card .up { color: var(--green); }
.home-market-card .dn { color: var(--danger); }
.home-market-card .spark { width: 100%; height: 42px; margin-top: 6px; }
.home-watch { margin: 20px 0 14px; }
.home-news-cta { width: 100%; min-height: 60px; justify-content: space-between; padding: 0 22px; font-size: 16px; background: linear-gradient(135deg, var(--accent), var(--neon), var(--violet)); }
.home-note { text-align: center; color: var(--muted); font-size: 12.5px; margin: 12px 0 0; }
.token-dot { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; color: #061018; font-size: 10px; font-weight: 900; flex: 0 0 auto; }
.prediction-soon h2 { font-size: 22px; margin: 0 0 6px; }
.prediction-soon p { color: var(--muted); margin: 0; }
.prediction-lock-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.prediction-token {
  display: grid; gap: 2px; min-height: 58px; align-content: center;
  border: 1px solid var(--line); border-radius: 14px; background: var(--panel-strong);
  padding: 10px; color: var(--muted-strong);
}
.prediction-token strong { color: var(--ink); font-size: 14px; }
.prediction-token small { color: var(--faint); font-size: 10px; text-transform: uppercase; font-weight: 700; letter-spacing: 0.05em; }
.prediction-token.active { border-color: rgba(45, 226, 192, 0.35); background: rgba(45, 226, 192, 0.08); }
.prediction-token.active small { color: var(--accent); }

/* ===== Article detail ===== */
.detail { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 18px; box-shadow: var(--shadow); }
.signal-detail { border: 0; border-radius: 0; background: transparent; padding: 0; box-shadow: none; display: grid; gap: 14px; }
.detail .art-img.hero { margin: -18px -18px 16px; border-radius: 16px 16px 0 0; }
.detail-topline { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.signal-detail .detail-topline { margin-bottom: 2px; }
.detail-back { color: var(--accent); font-weight: 700; font-size: 14px; }
.ig-action {
  width: 44px; height: 44px; min-height: 44px; padding: 0; border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--panel-strong);
  color: var(--ink); display: inline-grid; place-items: center;
}
.ig-action svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.ig-action:hover { color: var(--accent); transform: translateY(-1px); }
.ig-action.saved { color: var(--accent); border-color: rgba(45, 226, 192, 0.4); background: rgba(45, 226, 192, 0.08); }
.ig-action.saved svg path { fill: currentColor; }
.detail-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }
.detail h1 { font-size: clamp(24px, 6vw, 34px); line-height: 1.16; letter-spacing: -0.3px; margin: 6px 0 10px; }
.detail h1.detail-headline {
  font-size: clamp(24px, 5.2vw, 30px);
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden;
}
.detail h2 { font-size: 17px; line-height: 1.3; margin: 18px 0 8px; }
.detail .src-line { font-size: 12.5px; color: var(--muted); }
.impact-row { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0; }
.impact-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: var(--r-pill); font-size: 12px; font-weight: 700; border: 1px solid var(--line); background: var(--panel-strong); }
.safety-pill { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 5px 11px; border-radius: var(--r-pill); border: 1px solid rgba(52, 211, 153, 0.36); background: rgba(52, 211, 153, 0.13); color: var(--green); font-size: 12px; font-weight: 800; }
.impact-chip.high { color: var(--danger); border-color: rgba(255, 84, 112, 0.4); background: rgba(255, 84, 112, 0.1); }
.impact-chip.med { color: var(--warning); border-color: rgba(242, 193, 78, 0.4); background: rgba(242, 193, 78, 0.1); }
.impact-chip.low { color: var(--neon); border-color: rgba(56, 232, 255, 0.3); background: rgba(56, 232, 255, 0.08); }
.source-cta { width: 100%; min-height: 56px; display: inline-flex; align-items: center; justify-content: center; gap: 12px; margin-top: 16px; border: 1px solid var(--neon); border-radius: 12px; background: rgba(56, 232, 255, 0.04); color: var(--neon); font-size: 16px; font-weight: 800; box-shadow: 0 0 18px rgba(56, 232, 255, 0.12); }
.source-cta svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.brief-tabs {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0;
  border-bottom: 1px solid var(--line); margin-top: 2px;
}
.brief-tabs button {
  border: 0; border-radius: 0; background: transparent; color: var(--muted);
  min-height: 44px; padding: 0 6px; font-size: 12px; font-weight: 800;
}
.brief-tabs button.active { color: var(--neon); box-shadow: inset 0 -2px 0 var(--neon); }
.signal-brief-box, .brief-panel {
  border: 1px solid var(--line); border-radius: var(--r-card);
  background: var(--panel); padding: 14px; box-shadow: var(--shadow);
}
.signal-brief-box {
  border-color: rgba(56,232,255,.34);
}
.ai-quiet-label {
  font-size: 11px; font-weight: 600; color: var(--muted);
  letter-spacing: 0.04em; text-transform: uppercase;
}
  background: linear-gradient(180deg, rgba(56,232,255,.10), rgba(13,19,34,.76));
}
.sb-head { margin-bottom: 10px; }
.ai-badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: var(--r-pill); background: var(--accent); color: #04130f; font-size: 10px; font-weight: 900; letter-spacing: 0.05em; text-transform: uppercase; }
.brief-line { display: grid; grid-template-columns: 120px 1fr; gap: 10px; align-items: start; padding: 9px 0; border-top: 1px solid var(--line-soft); }
.brief-line:first-of-type { border-top: 0; }
.brief-line b { color: var(--ink); font-size: 12.5px; }
.brief-line span { color: var(--muted-strong); font-size: 13px; line-height: 1.45; }
.claim-basis { display: inline-flex; width: fit-content; padding: 2px 7px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 10px; font-weight: 800; letter-spacing: .04em; line-height: 1.4; text-transform: uppercase; }
.claim-basis-confirmed { color: var(--green); border-color: rgba(52,211,153,.35); }
.claim-basis-proposal { color: var(--warning); border-color: rgba(245,158,11,.35); }
.claim-basis-inference { color: var(--neon); border-color: rgba(56,232,255,.35); }
.brief-panel { display: grid; gap: 10px; }
.brief-panel h3 { font-size: 14px; }
.brief-panel p { margin: 0; color: var(--muted); }
.care-list, .check-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.care-list { counter-reset: care; }
.care-list li, .check-list li { color: var(--muted-strong); font-size: 13px; line-height: 1.45; }
.care-list li { display: grid; grid-template-columns: 24px 1fr; gap: 8px; }
.care-list li::before { counter-increment: care; content: counter(care); width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; background: rgba(56,232,255,.16); color: var(--neon); font-size: 11px; font-weight: 900; }
.care-copy { display: grid; gap: 5px; }
.admin-basis-diagnostics { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
.admin-basis-diagnostics > span { display: inline-flex; align-items: center; gap: 6px; padding: 5px 7px; border: 1px solid var(--line-soft); border-radius: 8px; }
.admin-basis-diagnostics b { color: var(--muted-strong); font-size: 11px; }
.check-list li { display: flex; gap: 8px; }
.check-list li::before { content: "✓"; color: var(--green); font-weight: 900; }
.asset-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.asset-pill { min-width: 0; display: grid; grid-template-columns: auto 1fr; gap: 1px 7px; align-items: center; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-strong); padding: 10px; }
.asset-pill .token-dot { grid-row: 1 / span 2; }
.asset-pill b { font-size: 13px; }
.asset-pill small { color: var(--faint); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.coin-asset-link { color: inherit; text-decoration: none; }
.coin-asset-link:hover { border-color: var(--accent); }
.source-stack { display: grid; gap: 8px; }
.source-label { margin: 4px 0 0; color: var(--faint); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.source-row-card { border: 1px solid var(--line); border-radius: 12px; background: var(--panel-strong); padding: 10px; display: grid; gap: 4px; }
.source-row-card small { color: var(--faint); font-size: 12px; }
.source-row-card span { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.source-row-card a { color: var(--neon); font-weight: 900; }
.source-original, .source-score-note {
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: rgba(9, 14, 26, 0.72);
  padding: 10px;
}
.source-original small { color: var(--faint); font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em; }
.source-original p { margin: 4px 0 0; color: var(--muted-strong); font-size: 13px; line-height: 1.45; }
.source-score-note { display: grid; gap: 4px; }
.source-score-note b { color: var(--accent); font-size: 13px; }
.source-score-note span { color: var(--muted); font-size: 12.5px; line-height: 1.45; }
.related-list { display: grid; gap: 9px; }
.related-item { display: flex; gap: 10px; align-items: center; border-bottom: 1px solid var(--line-soft); padding-bottom: 9px; }
.related-item:last-child { border-bottom: 0; padding-bottom: 0; }
.related-item b { display: block; font-size: 13px; line-height: 1.35; }
.related-item small { display: block; color: var(--faint); font-size: 12px; margin-top: 2px; }
.related-thumb { width: 64px; height: 48px; border-radius: 8px; background-size: cover; background-position: center; flex: 0 0 auto; }
.brief-panel-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.brief-panel-head a { color: var(--neon); font-size: 12px; font-weight: 800; }
.event-inline b { font-size: 14px; }
.feedback-row button { min-height: 44px; border-radius: 10px; padding: 0 14px; font-size: 13px; }
.feedback-row button.active { border-color: rgba(52,211,153,.45); color: var(--green); background: rgba(52,211,153,.12); }
.brief-toolbar { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 0; }
.brief-toolbar .secondary-source { grid-column: 1 / -1; margin-top: 0; min-height: 48px; font-size: 14px; box-shadow: none; }

/* AI TL;DR hero block */
.tldr {
  margin: 16px 0;
  border: 1px solid rgba(45, 226, 192, 0.3); border-radius: 14px;
  background: linear-gradient(180deg, rgba(45, 226, 192, 0.07), rgba(13, 19, 34, 0.4));
  padding: 16px; position: relative; overflow: hidden;
}
.tldr::before { content: ""; position: absolute; inset: 0 0 auto; height: 2px; background: linear-gradient(90deg, var(--accent), var(--neon)); }
.tldr .tldr-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.tldr .tldr-head .ai-badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: var(--r-pill); background: var(--accent); color: #04130f; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.tldr .tldr-head h3 { font-size: 15px; font-weight: 700; color: var(--ink); }
.tldr .tldr-bullets { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
.tldr .tldr-bullets li { display: flex; gap: 9px; color: var(--muted-strong); font-size: 14px; line-height: 1.5; }
.tldr .tldr-bullets li::before { content: "▸"; color: var(--accent); font-weight: 800; flex-shrink: 0; }
.tldr .tldr-bullets li b { color: var(--ink); font-weight: 600; }

.lang-toggle { display: inline-flex; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--panel-strong); }
.lang-toggle .segmented { border: 0; border-radius: 0; background: transparent; color: var(--muted); font-weight: 700; min-height: 36px; padding: 0 12px; font-size: 12px; }
.lang-toggle .segmented.active { background: var(--accent); color: #04130f; }

/* sentiment meter (detail) */
.sent-meter { display: flex; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel-strong); margin: 12px 0; }
.sent-meter .sm-track { flex: 1; height: 10px; border-radius: var(--r-pill); background: linear-gradient(90deg, var(--danger), var(--neon), var(--green)); position: relative; }
.sent-meter .sm-marker { position: absolute; top: -4px; width: 4px; height: 18px; border-radius: 2px; background: #fff; box-shadow: 0 0 8px rgba(255,255,255,0.6); transform: translateX(-50%); }
.sent-meter .sm-label { font-size: 12px; font-weight: 700; min-width: 86px; }

/* explainers / panels */
.panel { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; margin-top: 14px; box-shadow: var(--shadow); }
.panel h3 { font-size: 14px; font-weight: 700; margin: 0 0 8px; color: var(--ink); }
.panel p, .detail p { color: var(--muted); line-height: 1.6; }
.detail-grid, .explainers, .admin-grid, .form-grid, .meter-grid { display: grid; gap: 14px; }
.detail-grid, .meter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 14px 0; }
.explainers, .admin-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 14px; }

.meter { display: grid; gap: 8px; border: 1px solid var(--line-soft); border-radius: 12px; padding: 12px; background: var(--panel-soft); }
.meter > div:first-child { display: flex; justify-content: space-between; gap: 10px; }
.meter span { color: var(--faint); font-size: 12px; }
.meter strong { color: var(--ink); font-weight: 700; }
.bar { height: 7px; border-radius: 4px; background: rgba(139, 153, 184, 0.14); overflow: hidden; }
.bar span { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--accent), var(--green)); }

.mini-panel { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 14px; box-shadow: var(--shadow); }
.mini-panel h3 { font-size: 13px; margin: 0 0 6px; }
.mini-panel p { color: var(--muted); font-size: 13px; line-height: 1.5; margin: 0; }

/* ===== Markets / Market Pulse ===== */
.gauge-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 20px; text-align: center; box-shadow: var(--shadow); }
.gauge { position: relative; width: 200px; height: 116px; margin: 8px auto 4px; }
.gauge .arc { width: 200px; height: 116px; }
.gauge .gauge-val { position: absolute; left: 0; right: 0; bottom: 6px; text-align: center; }
.gauge .gauge-val b { display: block; font-size: 38px; font-weight: 800; letter-spacing: -1px; line-height: 1; }
.gauge .gauge-val span { display: block; font-size: 12px; font-weight: 600; color: var(--muted); margin-top: 2px; }
.gauge-label { font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--faint); font-weight: 700; }
.time-tabs { display: flex; gap: 6px; justify-content: center; margin: 16px 0; }
.time-tabs .tt { padding: 7px 16px; border-radius: var(--r-pill); border: 1px solid var(--line); background: var(--panel); color: var(--muted); font-size: 12.5px; font-weight: 600; cursor: pointer; }
.time-tabs .tt.active { background: var(--accent); color: #04130f; border-color: transparent; }

.movers { display: grid; gap: 10px; }
.mover-row { display: flex; align-items: center; gap: 14px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel); padding: 12px 14px; }
.mover-row .m-sym { width: 44px; font-weight: 800; font-size: 15px; }
.mover-row .m-price { font-size: 14px; font-weight: 600; color: var(--ink); }
.mover-row .m-chg { font-size: 12.5px; font-weight: 700; min-width: 70px; text-align: right; }
.mover-row .m-chg.up { color: var(--green); }
.mover-row .m-chg.dn { color: var(--danger); }
.mover-row .spark { flex: 1; height: 30px; min-width: 60px; }
.heat { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-top: 16px; }
.heat .hcell { aspect-ratio: 1 / 1; border-radius: 8px; display: grid; place-items: center; font-size: 10px; font-weight: 700; color: rgba(255,255,255,0.85); }

/* ===== Whale Radar ===== */
.whale-list { display: grid; gap: 10px; }
.whale-row {
  display: grid; grid-template-columns: auto 1fr auto; gap: 8px 14px; align-items: center;
  border: 1px solid var(--line); border-left: 3px solid var(--faint); border-radius: 12px; background: var(--panel); padding: 13px 14px;
}
.whale-row.risk-high { border-left-color: var(--danger); }
.whale-row.risk-medium { border-left-color: var(--warning); }
.whale-row.risk-low { border-left-color: var(--green); }
.wr-token { display: grid; gap: 1px; }
.wr-token b { font-size: 15px; font-weight: 800; letter-spacing: -0.2px; }
.wr-token small { font-size: 12px; color: var(--faint); }
.wr-usd { font-size: 15px; font-weight: 700; color: var(--ink); text-align: right; white-space: nowrap; }
.wr-flow { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12.5px; color: var(--muted-strong); }
.wr-flow .wr-arrow { color: var(--accent); font-weight: 700; }
.wr-flow .wr-party { font-weight: 600; }
.wr-risk { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.wr-risk small { font-size: 12px; color: var(--faint); }
.wr-note { grid-column: 1 / -1; font-size: 12px; color: var(--muted); margin: 2px 0 0; line-height: 1.45; }

@media (max-width: 560px) {
  .whale-row { grid-template-columns: 1fr auto; }
  .wr-flow, .wr-risk, .wr-note { grid-column: 1 / -1; }
}

/* ===== Events ===== */
.event-radar-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin: 10px 0 18px; }
.event-radar-head h1 { font-size: clamp(30px, 5vw, 42px); line-height: 1.05; letter-spacing: -0.04em; }
.event-radar-head p { margin: 7px 0 0; color: var(--muted); font-size: 14px; }
.event-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}
.event-timeline-controls .seg-tabs { width: 100%; padding: 4px; margin: 0; border: 1px solid var(--line); border-radius: var(--r-pill); background: rgba(9, 14, 26, 0.78); }
.event-timeline-controls .seg { flex: 1; border: 0; border-radius: var(--r-pill); background: transparent; box-shadow: none; color: var(--muted); }
.event-timeline-controls .seg.active { background: var(--panel-strong); color: var(--accent); }
.event-region-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 15px;
  border: 1px solid var(--line);
  border-radius: var(--r-pill);
  color: var(--muted-strong);
  background: rgba(13, 19, 34, 0.72);
  font-size: 13px;
  font-weight: 650;
  white-space: nowrap;
}
.event-region-chip:hover { border-color: var(--accent); color: var(--ink); }
.event-timeline { display: grid; gap: 22px; }
.event-timeline-group > h2 { margin: 0 0 7px; color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; }
.event-timeline-list { border-top: 1px solid var(--line-soft); }
.event-timeline-item { display: grid; grid-template-columns: 118px minmax(0, 1fr); gap: 17px; min-height: 136px; padding: 13px 0; border-bottom: 1px solid var(--line-soft); transition: background .15s, border-color .15s; }
.event-timeline-item:hover { background: rgba(45, 226, 192, 0.035); border-color: var(--line); }
.event-timeline-media { display: block; min-height: 110px; border-radius: 12px; background-color: var(--panel-soft); background-position: center; background-size: cover; }
.event-timeline-copy { display: flex; min-width: 0; flex-direction: column; align-items: flex-start; justify-content: center; }
.event-timeline-kicker { margin-bottom: 4px; color: var(--neon); font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.event-timeline-copy strong { color: var(--ink); font-size: 18px; line-height: 1.25; overflow-wrap: anywhere; }
.event-timeline-meta, .event-timeline-source { margin-top: 5px; color: var(--muted); font-size: 12.5px; line-height: 1.35; }
.event-timeline-source { margin-top: 3px; color: var(--faint); }
.event-registration-chip { margin-top: 8px; padding: 3px 9px; border: 1px solid rgba(242, 193, 78, .36); border-radius: 7px; background: rgba(242, 193, 78, .09); color: var(--warning); font-size: 11px; font-weight: 700; }
.event-detail-page { position: relative; width: 100%; max-width: 760px; margin: 0 auto; }
.event-detail-topline { position: absolute; top: 12px; right: 12px; left: 12px; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 12px; pointer-events: none; }
.event-detail-topline .detail-back { display: inline-flex; align-items: center; min-height: 44px; padding: 0 13px; border: 1px solid rgba(148,163,184,.28); border-radius: var(--r-pill); background: rgba(6,9,18,.82); color: var(--ink); font-size: 13px; font-weight: 650; backdrop-filter: blur(10px); pointer-events: auto; }
.event-share-button { width: 44px; min-width: 44px; }
.event-detail-topline .event-share-button { background: rgba(6,9,18,.82); backdrop-filter: blur(10px); pointer-events: auto; }
.event-detail { overflow: hidden; border: 1px solid var(--line); border-radius: 18px; background: rgba(9, 14, 26, .82); }
.event-detail-cover { width: 100%; aspect-ratio: 16 / 8.5; background-position: center; background-size: cover; }
.event-detail-body { padding: clamp(18px, 4vw, 30px); }
.event-detail-date { margin: 0 0 7px; color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.event-detail h1 { max-width: 19ch; font-size: clamp(30px, 6vw, 48px); line-height: 1.05; letter-spacing: -.045em; }
.event-detail.has-cover .event-detail-date { display: none; }
.event-detail.has-cover h1 { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.event-detail.has-cover .event-detail-body { padding-top: 0; }
.event-detail.has-cover .event-fact-band { position: relative; z-index: 2; margin-top: -44px; }
.event-fact-band { display: grid; grid-template-columns: 1.1fr 1.2fr 1fr; gap: 0; margin: 20px 0 6px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel-strong); }
.event-fact-band span { min-width: 0; padding: 13px 15px; border-left: 1px solid var(--line); }
.event-fact-band span:first-child { border-left: 0; }
.event-fact-band small { display: block; margin-bottom: 3px; color: var(--faint); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }
.event-fact-band b { display: block; color: var(--muted-strong); font-size: 12.5px; line-height: 1.35; overflow-wrap: anywhere; }
.event-detail-section { padding: 20px 0; border-bottom: 1px solid var(--line-soft); }
.event-detail-section > p:first-child { margin-top: 0; }
.event-detail-section h2 { margin: 0 0 10px; font-size: 16px; }
.event-presenter p { margin: 0 0 3px; color: var(--faint); font-size: 12px; }
.event-presenter h2 { margin: 0; font-size: 18px; }
.event-registration-state { margin-top: 18px; padding: 13px 15px; border-left: 3px solid var(--warning); background: rgba(242, 193, 78, .06); }
.event-registration-state strong { color: var(--warning); font-size: 14px; }
.event-registration-state p { margin: 3px 0 0; color: var(--muted); font-size: 12.5px; }
.event-about p, .event-location-detail p { max-width: 65ch; margin: 0 0 14px; color: var(--muted-strong); font-size: 15px; line-height: 1.65; }
.event-about p:last-child, .event-location-detail p:last-child { margin-bottom: 0; }
.event-location-detail p strong { color: var(--ink); }
.more-events-link { display: flex; align-items: center; min-height: 48px; color: var(--muted-strong); font-size: 14px; font-weight: 650; }
.event-detail-actions { position: static; display: grid; grid-template-columns: .9fr 1.35fr; gap: 10px; width: 100%; margin: 12px 0 0; padding: 10px; border: 1px solid var(--line); border-radius: 16px; background: rgba(7, 13, 26, .94); box-shadow: 0 14px 36px rgba(0,0,0,.48); }
.event-actions .primary-link { min-height: 44px; }
.event-row-actions .primary-link { min-height: 44px; }
.event-calendar-action, .event-register-action { display: inline-flex; min-height: 48px; align-items: center; justify-content: center; padding: 0 14px; border: 1px solid var(--line); border-radius: 12px; font-size: 13px; font-weight: 750; text-align: center; }
.event-calendar-action { color: var(--accent); border-color: rgba(45,226,192,.55); }
.event-register-action { border-color: transparent; background: linear-gradient(110deg, var(--neon), var(--violet)); color: #07101d; }
.event-calendar-action:hover, .event-register-action:hover { filter: brightness(1.08); }

/* ===== Profile ===== */
.profile-card, .profile-hero { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 20px; box-shadow: var(--shadow); margin-bottom: 14px; }
.profile-hero { display: flex; align-items: center; gap: 18px; }
.profile-avatar { width: 72px; height: 72px; border-radius: 50%; background: linear-gradient(135deg, var(--violet), var(--accent)); display: grid; place-items: center; font-size: 28px; font-weight: 800; color: #060912; flex: 0 0 auto; }
.profile-name { font-size: 19px; font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.profile-line { margin: 4px 0 0; color: var(--muted); font-size: 13px; }
a.profile-line { display: inline-flex; align-items: center; min-height: 44px; }
.premium-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; border-radius: var(--r-pill); background: linear-gradient(135deg, var(--gold), #b8841f); color: #1a1206; font-size: 10px; font-weight: 800; letter-spacing: 0.04em; text-transform: uppercase; }
.subtle-tag { display: inline-flex; vertical-align: middle; margin-left: 6px; padding: 2px 7px; border: 1px solid var(--line); border-radius: var(--r-pill); color: var(--faint); font-size: 10px; font-weight: 700; text-transform: uppercase; }
.profile-stats { display: flex; justify-content: center; gap: 24px; margin-top: 12px; }
.profile-stats .ps { text-align: center; }
.profile-stats .ps b { display: block; font-size: 18px; font-weight: 800; }
.profile-stats .ps span { font-size: 11px; color: var(--faint); }

.section-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; margin-bottom: 14px; box-shadow: var(--shadow); }
.section-card .sc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.section-card .sc-head h3 { font-size: 14px; font-weight: 700; }
.section-card .sc-head .sc-link { font-size: 12px; color: var(--accent); font-weight: 600; }

.watch-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.watch-chip { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 7px 12px; border-radius: var(--r-pill); border: 1px solid var(--line); background: var(--panel-strong); font-weight: 700; font-size: 12.5px; }
.watch-chip.active { border-color: rgba(45, 226, 192, 0.55); color: var(--ink); }
.watch-chip .wc-del { color: var(--faint); cursor: pointer; }
.watch-chip .wc-del:hover { color: var(--danger); }
.watch-add { display: flex; gap: 8px; margin-top: 12px; }
.watch-add input { flex: 1; }

.pref-row { display: flex; align-items: center; justify-content: space-between; min-height: 44px; padding: 11px 0; border-bottom: 1px solid var(--line-soft); }
.pref-row:last-child { border-bottom: 0; }
.pref-row .pr-label { font-size: 14px; font-weight: 600; }
.pref-row .pr-sub { font-size: 12px; color: var(--faint); }
.pref-row .pr-val { font-size: 12.5px; color: var(--muted-strong); font-weight: 600; }

.region-prompt { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; margin: 12px 0; border: 1px solid rgba(45, 226, 192, 0.4); border-radius: var(--r); background: rgba(45, 226, 192, 0.08); }
.region-prompt p { margin: 0; color: var(--muted-strong); font-size: 13px; }
.region-active-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 14px; margin: 8px 0 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); }
.region-active-bar span { color: var(--muted-strong); font-size: 13px; font-weight: 600; }
/* Inline location icon for event cards (replaces emoji). */
.ev-ico { width: 14px; height: 14px; display: inline-block; vertical-align: -2px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; color: var(--muted); }

/* toggle switch */
.switch { width: 52px; height: 32px; border-radius: var(--r-pill); background: var(--line); border: 0; position: relative; cursor: pointer; min-height: 44px; padding: 0; transition: background .18s; }
.switch::after { content: ""; position: absolute; top: 12px; left: 5px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .18s; }
.switch.on { background: var(--accent); }
.switch.on::after { transform: translateX(20px); }
.alert-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding-top: 12px; text-align: center; }
.alert-summary span { color: var(--muted); font-size: 12px; }
.alert-summary b { display: block; color: var(--ink); font-size: 18px; }

/* ===== Customize feed modal ===== */
.topic-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; }
.topic-chip { padding: 12px 8px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); color: var(--muted-strong); font-size: 12.5px; font-weight: 600; text-align: center; cursor: pointer; transition: all .14s; }
.topic-chip:hover { border-color: var(--accent); color: var(--ink); }
.topic-chip.on { background: rgba(45, 226, 192, 0.24); color: #dffdf7; border-color: rgba(45, 226, 192, 0.78); box-shadow: inset 0 0 0 1px rgba(45,226,192,0.36), 0 10px 26px rgba(45,226,192,0.10); }
.topic-chip.on .topic-check { color: #04130f; background: var(--accent); border-radius: 50%; padding: 0 4px; }

/* ===== Language screen ===== */
.lang-list { display: grid; gap: 8px; }
.lang-row { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--panel); cursor: pointer; min-height: 44px; width: 100%; text-align: left; font: inherit; color: inherit; }
.lang-row:disabled, .lang-row[disabled] { opacity: 0.5; cursor: not-allowed; }
.lang-row:disabled:hover { border-color: var(--line); }
.lang-row:hover:not(.selected):not(:disabled) { border-color: var(--muted-strong); }
.lang-row .lr-name { font-weight: 600; font-size: 14px; }
.lang-row .lr-native { font-size: 12px; color: var(--faint); margin-left: 8px; }
.lang-row .lr-state { font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: var(--r-pill); }
.lang-row .lr-state.active { background: var(--accent); color: #04130f; }
.lang-row .lr-state.soon { background: var(--soft); color: var(--faint); border: 1px solid var(--line); }
.lang-row.selected { border-color: rgba(45, 226, 192, 0.45); background: rgba(45, 226, 192, 0.08); }
/* Guest sign-in CTA on Profile */
.guest-signin-cta { display: flex; flex-direction: column; gap: 12px; padding: 16px; margin: 0 0 16px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel-strong); }
.guest-signin-cta p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.5; }
.guest-signin-cta .primary { align-self: flex-start; }
/* Profile pref-row as clickable link */
.pref-row-link { cursor: pointer; text-decoration: none; color: inherit; transition: background .15s; }
.pref-row-link:hover { background: var(--soft); }
/* Customize topic count and checkmarks */
.customize-count { font-size: 13px; font-weight: 600; color: var(--muted-strong); margin-bottom: 10px; }
.topic-check { margin-left: 4px; color: var(--accent); font-weight: 800; }
.customize-toolbar { justify-content: space-between; }
.customize-section { padding-bottom: 80px; }
/* Event Radar: compact inline location/filter row */
.event-location-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 8px 0 16px;
}
.event-location-bar .el-current { font-size: 13px; color: var(--muted); font-weight: 600; }
/* Customize: sticky action bar above tabbar */
.customize-sticky-bar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 42;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 16px calc(76px + env(safe-area-inset-bottom));
  background: rgba(7, 13, 26, 0.94);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
  border-top: 1px solid rgba(148, 163, 184, 0.18);
}
.customize-sticky-bar .primary { flex: 1; }
.customize-sticky-bar .primary:disabled { opacity: 0.4; cursor: not-allowed; }
/* Topic groups in Customize */
.topic-group { margin-bottom: 16px; }
.topic-group-label { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; color: var(--muted); margin: 0 0 8px; }
/* Language: more-languages note */
.lang-more-note { padding: 12px 0 4px; font-size: 13px; }
/* Profile: not-signed-in status line */
.profile-status-line { font-size: 12px; color: var(--muted); margin-top: 4px; }
/* Profile hero: guest Google sign-in button (sits in the empty right space) */
.profile-hero-main { flex: 1 1 0; min-width: 0; }
.profile-signin { margin-left: auto; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex: 0 0 auto; }
.profile-signin-btn { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 18px; border: 1px solid rgba(148,163,184,0.30); border-radius: var(--r-pill); background: #fff; color: #1f2937; font: inherit; font-size: 14px; font-weight: 700; cursor: pointer; transition: transform .12s, box-shadow .14s, border-color .14s; box-shadow: 0 6px 18px rgba(0,0,0,0.18); }
.profile-signin-btn:hover:not(:disabled) { transform: translateY(-1px); border-color: rgba(148,163,184,0.55); box-shadow: 0 10px 24px rgba(0,0,0,0.22); }
.profile-signin-btn:disabled { opacity: 0.55; cursor: not-allowed; box-shadow: none; }
.profile-signin-btn .g-logo { width: 20px; height: 20px; flex: 0 0 auto; }
.profile-signin-note { margin: 0; max-width: 220px; text-align: right; font-size: 11px; line-height: 1.4; color: var(--muted); }
@media (max-width: 420px) {
  .profile-hero { flex-wrap: wrap; }
  .profile-signin { margin-left: 0; margin-top: 14px; align-items: stretch; width: 100%; }
  .profile-signin-btn { width: 100%; justify-content: center; }
  .profile-signin-note { text-align: center; max-width: none; }
}
/* Login: secondary link */
.secondary-link { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 16px; color: var(--muted-strong); font-weight: 600; font-size: 14px; }
.secondary-link:hover { color: var(--ink); }

/* ===== Comments (article) ===== */
.comments { margin-top: 14px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; }
.comments h3 { font-size: 14px; margin: 0 0 12px; }
.comment-input { display: flex; gap: 8px; margin-bottom: 14px; }
.comment-input input { flex: 1; }
.comment { display: flex; gap: 10px; padding: 10px 0; border-top: 1px solid var(--line-soft); }
.comment:first-of-type { border-top: 0; }
.comment .c-av { width: 30px; height: 30px; border-radius: 50%; background: linear-gradient(135deg, var(--violet), var(--accent)); flex-shrink: 0; display: grid; place-items: center; color: #060912; font-weight: 700; font-size: 11px; }
.comment .c-body { flex: 1; }
.comment .c-body .c-meta { font-size: 11px; color: var(--faint); }
.comment .c-body .c-text { font-size: 13px; color: var(--muted-strong); }

/* ===== Alerts ===== */
.alert-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; box-shadow: var(--shadow); }
.alert-card h2 { font-size: 16px; margin: 8px 0; }
.alert-card p { color: var(--muted); }
.severity-high { border-color: rgba(255, 84, 112, 0.5); }
.severity-medium { border-color: rgba(242, 193, 78, 0.4); }

/* ===== Saved / article cards (legacy compat) ===== */
.article-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; box-shadow: var(--shadow); transition: transform .12s, border-color .15s; }
.article-card:hover { transform: translateY(-1px); border-color: #2c3a5e; }
.article-card .art-img.hero { margin: -16px -16px 12px; border-radius: 16px 16px 0 0; }
.card-meta, .card-footer, .toolbar, .row-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.card-meta { margin-bottom: 10px; }
.card-footer { justify-content: space-between; border-top: 1px solid var(--line-soft); padding-top: 12px; margin-top: 12px; color: var(--faint); font-size: 12px; }
.card-title, .article-card h2, .event-card h2, .alert-card h2, .review-card h2 { display: block; margin: 0 0 8px; color: var(--ink); font-size: 18px; line-height: 1.25; }
.card-title:hover { color: var(--accent); }
.article-card p, .event-card p, .alert-card p, .review-card p { color: var(--muted); line-height: 1.55; }

.badge, .token, .score, .warn, .good, .danger {
  display: inline-flex; align-items: center; min-height: 24px; border: 1px solid transparent;
  border-radius: var(--r-pill); padding: 0 10px; font-size: 11px; font-weight: 700; letter-spacing: 0.02em;
}
.badge { border-color: rgba(45, 226, 192, 0.32); background: rgba(45, 226, 192, 0.12); color: var(--accent); }
.token { border-color: rgba(167, 139, 250, 0.32); background: rgba(167, 139, 250, 0.14); color: var(--violet); }
.score { border-color: rgba(52, 211, 153, 0.3); background: rgba(52, 211, 153, 0.1); color: var(--green); }
.warn { border-color: rgba(242, 193, 78, 0.34); background: rgba(242, 193, 78, 0.12); color: var(--warning); }
.good { border-color: rgba(52, 211, 153, 0.3); background: rgba(52, 211, 153, 0.1); color: var(--good); }
.danger { border-color: rgba(255, 84, 112, 0.4); background: rgba(255, 84, 112, 0.12); color: var(--danger); }
.verified { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; color: var(--accent); border: 1px solid rgba(45, 226, 192, 0.3); border-radius: var(--r-pill); padding: 2px 9px; font-weight: 700; }

.why { display: grid; gap: 4px; border-left: 3px solid var(--accent); padding-left: 12px; margin: 12px 0; }
.why strong { color: var(--accent); font-family: var(--sans); font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; }
.why span { color: var(--muted); }

.event-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; box-shadow: var(--shadow); }
.event-card .event-place { font-size: 12.5px; color: var(--muted); margin: 4px 0; }
.review-card { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 16px; box-shadow: var(--shadow); }
.review-card .card-meta { margin-bottom: 8px; }

/* ===== Admin tables (reused, restyled) ===== */
.status-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 18px; }
.metric { position: relative; overflow: hidden; padding: 16px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); box-shadow: var(--shadow); }
.metric::before { content: ""; position: absolute; inset: 0 0 auto; height: 2px; background: linear-gradient(90deg, var(--accent), var(--neon), var(--violet)); }
.metric span { color: var(--faint); font-size: 12px; font-weight: 600; }
.metric strong { display: block; margin-top: 6px; color: var(--ink); font-size: 26px; font-weight: 800; line-height: 1; }

.admin-pipeline { margin-bottom: 28px; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.pipeline-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; }
.pipeline-head h1 { margin: 3px 0 5px; font-size: clamp(28px, 4vw, 42px); line-height: 1; }
.pipeline-head .sub { max-width: 680px; color: var(--muted); overflow-wrap: anywhere; }
.pipeline-head .eyebrow { margin: 0; color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.pipeline-controls { display: flex; align-items: center; gap: 10px; flex: 0 0 auto; }
.pipeline-ranges { display: grid; grid-template-columns: repeat(4, auto); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.pipeline-ranges button { min-height: 44px; padding: 0 13px; border: 0; border-right: 1px solid var(--line); border-radius: 0; background: var(--panel-soft); color: var(--muted); white-space: nowrap; }
.pipeline-ranges button:last-child { border-right: 0; }
.pipeline-ranges button[aria-pressed="true"] { background: rgba(45, 226, 192, 0.14); color: var(--accent); box-shadow: inset 0 -2px var(--accent); }
.pipeline-refresh { min-height: 44px; white-space: nowrap; }
.pipeline-update { min-height: 26px; display: flex; align-items: center; gap: 8px; padding: 7px 0 2px; color: var(--faint); font-size: 12px; }
.pipeline-spinner { width: 12px; height: 12px; border: 2px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: pipeline-spin 0.8s linear infinite; }
@keyframes pipeline-spin { to { transform: rotate(360deg); } }
.pipeline-error { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 8px 0 14px; padding: 10px 12px; border-left: 3px solid var(--danger); background: rgba(255, 84, 112, 0.08); color: var(--danger); overflow-wrap: anywhere; }
.pipeline-error button { min-height: 44px; flex: 0 0 auto; }
.pipeline-band, .pipeline-failures { margin-top: 20px; }
.pipeline-band-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-bottom: 9px; }
.pipeline-band-head h2 { margin: 0; font-size: 15px; }
.pipeline-band-head p { margin: 0; color: var(--faint); font-size: 12px; text-align: right; overflow-wrap: anywhere; }
.pipeline-export { min-height: 40px; flex: 0 0 auto; white-space: nowrap; }
.pipeline-metrics-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(128px, 1fr)); gap: 1px; border: 1px solid var(--line); background: var(--line); }
.pipeline-metric { min-width: 0; padding: 13px 14px; border-top: 2px solid transparent; background: var(--panel); }
.pipeline-metric span { display: block; min-height: 30px; color: var(--faint); font-size: 11px; font-weight: 700; line-height: 1.3; overflow-wrap: anywhere; }
.pipeline-metric strong { display: block; margin-top: 4px; color: var(--ink); font-size: 24px; line-height: 1; font-variant-numeric: tabular-nums; }
.pipeline-metric.is-ready { border-top-color: var(--good); }
.pipeline-metric.is-warning, .pipeline-metric.is-pending { border-top-color: var(--warning); }
.pipeline-metric.is-processing { border-top-color: var(--violet); }
.pipeline-metric.is-failed { border-top-color: var(--danger); }
.pipeline-metric.is-muted { border-top-color: var(--faint); }
.pipeline-failure-list { border-top: 1px solid var(--line); }
.pipeline-failure-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--line-soft); }
.pipeline-failure-main { min-width: 0; }
.pipeline-failure-main > strong { display: block; margin: 7px 0 4px; font-size: 13px; overflow-wrap: anywhere; }
.pipeline-failure-main p { margin: 0; color: var(--muted); font-family: var(--mono); font-size: 11.5px; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; }
.pipeline-failure-meta { display: flex; align-items: center; gap: 9px; color: var(--faint); font-size: 11px; }
.pipeline-status { display: inline-flex; align-items: center; min-height: 24px; padding: 2px 8px; border: 1px solid currentColor; border-radius: var(--r-pill); font-size: 10px; font-weight: 800; }
.pipeline-status.is-failed { color: var(--danger); background: rgba(255, 84, 112, 0.1); }
.pipeline-failure-actions { display: flex; align-items: center; gap: 16px; }
.pipeline-failure-actions > span { display: grid; gap: 2px; min-width: 54px; color: var(--ink); font-weight: 800; text-align: center; font-variant-numeric: tabular-nums; }
.pipeline-failure-actions small { color: var(--faint); font-size: 10px; font-weight: 600; }
.pipeline-failure-actions a { white-space: nowrap; }
.pipeline-empty { margin: 0; padding: 18px 0; color: var(--muted); }
.pipeline-failure-overflow { margin: 0; padding: 12px 0 4px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.pipeline-requeue { margin: 10px 0 14px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel-soft, rgba(255,255,255,0.02)); }
.pipeline-requeue-hint { margin: 0 0 10px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.pipeline-requeue-controls { display: flex; flex-wrap: wrap; gap: 8px; }
.pipeline-requeue-controls button { min-height: 36px; padding: 6px 14px; border: 1px solid var(--accent); border-radius: var(--r-pill); background: transparent; color: var(--accent); font-size: 12px; font-weight: 700; cursor: pointer; transition: background 0.15s; }
.pipeline-requeue-controls button:hover:not(:disabled) { background: rgba(0, 212, 255, 0.1); }
.pipeline-requeue-controls button:disabled { opacity: 0.5; cursor: not-allowed; }
.pipeline-requeue-status { margin: 8px 0 0; font-size: 12px; }
.pipeline-requeue-status.is-success { color: var(--accent); }
.pipeline-requeue-status.is-error { color: var(--danger); }


.admin-table { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 4px 16px; box-shadow: var(--shadow); }
.table-head, .source-row, .prompt-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid var(--line-soft); padding: 14px 0; }
.table-head { padding-top: 12px; }
.source-row:last-child, .prompt-row:last-child { border-bottom: 0; }
.source-row > div:first-child, .prompt-row > div:first-child { display: grid; gap: 5px; }
.source-row strong, .prompt-row strong { font-size: 14px; }
.source-row span, .prompt-row span { color: var(--faint); font-size: 12px; }
.source-row .secondary, .prompt-row .secondary { color: var(--muted); font-size: 12.5px; }
.row-actions { display: flex; gap: 8px; }
.article-edit-form { display: grid; gap: 12px; padding: 14px 0 18px; border-bottom: 1px solid var(--line-soft); }
.article-edit-form .toolbar { align-items: center; }
.admin-coin-editor { display: grid; gap: 10px; border: 1px solid var(--line); border-radius: 12px; padding: 12px; }
.admin-coin-editor legend { padding: 0 6px; font-weight: 700; }
.admin-coin-editor legend small { color: var(--muted); font-weight: 400; }
.admin-coin-values, .admin-coin-results { display: flex; flex-wrap: wrap; gap: 8px; }
.admin-coin-chip { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--line); border-radius: 999px; padding: 5px 8px; }
.admin-coin-chip button { border: 0; padding: 0 2px; background: transparent; color: var(--muted); }
.admin-coin-results button { width: auto; }
.prompt-row { border: 1px solid var(--line); border-radius: var(--r-card); padding: 14px; margin-bottom: 10px; }
.prompt-row strong { font-size: 13px; }
.prompt-row p { color: var(--muted); font-size: 12.5px; margin: 4px 0 0; }

.form-panel { margin-top: 16px; border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 18px; box-shadow: var(--shadow); }
.form-panel h2 { font-size: 18px; margin: 0 0 12px; }
.form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

label { display: grid; gap: 6px; color: var(--faint); font-weight: 600; font-size: 12px; }
input, select, textarea { width: 100%; border: 1px solid var(--line); border-radius: 10px; min-height: 42px; padding: 9px 12px; color: var(--ink); background: var(--panel-soft); }
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(45, 226, 192, 0.15); }
textarea { min-height: 88px; resize: vertical; }
.check { display: flex; align-items: center; gap: 8px; margin: 14px 0; }
.check input { width: auto; min-height: auto; }
.toolbar { margin-top: 14px; }

.empty { min-height: 240px; display: grid; place-items: center; align-content: center; text-align: center; border: 1px dashed var(--line); border-radius: var(--r-card); background: var(--panel); }
.empty h2 { margin-bottom: 6px; font-size: 18px; }
.empty p { color: var(--muted); }
.login-panel { border: 1px solid var(--line); border-radius: var(--r-card); background: var(--panel); padding: 24px; box-shadow: var(--shadow); max-width: 640px; }
.login-panel h2 { margin: 0 0 10px; color: var(--ink); font-size: 24px; }
.login-panel p { color: var(--muted); }
.login-panel .secondary { color: var(--faint); font-size: 12.5px; }
.login-panel .notice { color: var(--muted); }
.login-panel.locked { border-color: rgba(255, 84, 112, 0.4); }

code { border: 1px solid var(--line); border-radius: 6px; background: var(--soft); color: var(--accent); padding: 2px 6px; font-size: 12.5px; font-family: var(--mono); }
.notice { margin-top: 14px; padding: 13px; border: 1px dashed rgba(45, 226, 192, 0.32); border-radius: 12px; background: rgba(45, 226, 192, 0.05); color: var(--muted); font-size: 12.5px; line-height: 1.5; }
.notice.small { font-size: 12.5px; }
.secondary { color: var(--faint); }

/* ===== Source images ===== */
.art-img {
  background-size: cover; background-position: center; background-repeat: no-repeat;
  background-color: var(--panel-soft); border-radius: 12px; overflow: hidden; position: relative; flex-shrink: 0;
}
.art-img.hero { aspect-ratio: 16 / 9; margin-bottom: 14px; }
.art-img.thumb { width: 56px; height: 56px; aspect-ratio: 1 / 1; }
.art-img.no-img.ph-reg { background: linear-gradient(135deg, rgba(45,226,192,.18), rgba(45,226,192,.04)); }
.art-img.no-img.ph-mkt { background: linear-gradient(135deg, rgba(52,211,154,.18), rgba(52,211,154,.04)); }
.art-img.no-img.ph-enf { background: linear-gradient(135deg, rgba(255,84,112,.18), rgba(255,84,112,.04)); }
.art-img.no-img.ph-pol { background: linear-gradient(135deg, rgba(167,139,250,.18), rgba(167,139,250,.04)); }
.art-img .ph-letter { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--sans); font-weight: 800; font-size: 28px; color: var(--muted); opacity: .5; }
.art-img:not(.no-img) .ph-letter { display: none; }

/* nc-thumb category tints (placeholders) */
.nc-thumb.ph { position: relative; }
.nc-thumb.ph .ph-letter { position: absolute; inset: 0; display: grid; place-items: center; font-weight: 800; font-size: 30px; color: var(--muted); opacity: .5; }
.nc-thumb.ph-reg { background: linear-gradient(135deg, rgba(45,226,192,.18), rgba(45,226,192,.04)); }
.nc-thumb.ph-mkt { background: linear-gradient(135deg, rgba(52,211,154,.18), rgba(52,211,154,.04)); }
.nc-thumb.ph-enf { background: linear-gradient(135deg, rgba(255,84,112,.18), rgba(255,84,112,.04)); }
.nc-thumb.ph-pol { background: linear-gradient(135deg, rgba(167,139,250,.18), rgba(167,139,250,.04)); }

.load-more {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin: 4px auto 0; padding: 13px; width: 100%;
  border: 1px dashed var(--line); border-radius: 12px; background: transparent;
  color: var(--muted); font-size: 13px; font-weight: 600; cursor: pointer;
}
.load-more:hover { border-color: var(--accent); color: var(--ink); background: rgba(45,226,192,0.05); }

/* ===== Responsive ===== */
@media (max-width: 900px) {
  .news-workspace { grid-template-columns: 1fr; }
  .news-rail { display: none; }
  .detail-grid, .meter-grid, .admin-grid, .explainers, .form-grid { grid-template-columns: 1fr; }
  .status-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pipeline-head { align-items: flex-start; flex-direction: column; }
  .pipeline-controls { width: 100%; justify-content: space-between; }
  .news-card { grid-template-columns: 1fr 84px; }
  .nc-thumb { min-height: 84px; }
  .heat { grid-template-columns: repeat(5, 1fr); }
}
@media (max-width: 560px) {
  .main { padding: 14px 12px calc(80px + env(safe-area-inset-bottom)); }
  .pipeline-head h1 { font-size: 30px; }
  .pipeline-controls { display: grid; }
  .pipeline-ranges { grid-template-columns: repeat(4, minmax(0, 1fr)); width: 100%; }
  .pipeline-ranges button { min-width: 0; padding: 0 7px; font-size: 11px; white-space: normal; }
  .pipeline-refresh { width: 100%; }
  .pipeline-band-head { align-items: flex-start; flex-direction: column; gap: 4px; }
  .pipeline-band-head p { text-align: left; }
  .pipeline-export { width: 100%; }
  .pipeline-metrics-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pipeline-metric span { min-height: 28px; }
  .pipeline-failure-row { grid-template-columns: 1fr; gap: 10px; }
  .pipeline-failure-actions { justify-content: space-between; }
  .pipeline-error { align-items: flex-start; flex-direction: column; }
  .topbar { gap: 8px; padding: 14px 10px; }
  .brand { gap: 10px; min-width: 0; }
  .brand small { display: none; }
  .brand strong { display: block; font-size: 17px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .brand-mark { width: 40px; height: 40px; border-radius: 12px; font-size: 16px; flex: 0 0 auto; }
  .top-actions { gap: 6px; }
  .icon-btn { width: 44px; height: 44px; min-height: 44px; }
  .avatar-btn { display: none; }
  .lang-pill .segmented { min-height: 44px; padding: 0 10px; }
  .topic-grid { grid-template-columns: repeat(2, 1fr); }
  .news-card { grid-template-columns: 1fr 76px; gap: 12px; padding: 13px; }
  .nc-title { font-size: 15px; }
  .nc-thumb { min-height: 76px; }
  .screen-head h1 { font-size: 32px; }
  .screen-head .sub { font-size: 15px; }
  .news-filter-rail .chip { min-width: 58px; padding: 0 14px; }
  .profile-stats { gap: 18px; }
  .heat { grid-template-columns: repeat(4, 1fr); }
  .brief-line { grid-template-columns: 1fr; gap: 3px; }
  .asset-grid { grid-template-columns: 1fr; }
  .signal-footer { align-items: flex-start; flex-wrap: wrap; }
  .signal-footer .nc-source { min-width: 0; flex: 1 1 190px; overflow-wrap: anywhere; }
  .signal-cta { width: 100%; }
  .signal-news-list .signal-footer { align-items: center; flex-wrap: nowrap; }
  .signal-news-list .signal-footer .nc-source { flex: 1 1 auto; min-width: 0; overflow: hidden; overflow-wrap: normal; }
  .signal-news-list .nc-source strong,
  .signal-news-list .nc-source span:not(.src-tile) { white-space: nowrap; }
  .signal-news-list .signal-cta { width: auto; }
  .signal-news-list .signal-card-lead { padding: 0; gap: 0; }
  .signal-news-list .signal-card-lead .art-img.hero { aspect-ratio: 16 / 6.2; }
  .signal-news-list .signal-card-compact { grid-template-columns: 100px 1fr; gap: 12px; }
  .signal-news-list .signal-card-compact.no-media { grid-template-columns: 1fr; }
  .signal-news-list .signal-card-compact.media-hidden { min-height: 136px; }
  .signal-news-list .signal-card-compact .compact-thumb { width: 100px; height: 100px; }
  .signal-news-list .signal-card-compact .signal-title { font-size: 16px; }
  .signal-news-list .signal-card-compact .compact-insight { font-size: 13.5px; }
  .signal-news-list .compact-metrics .score-chip,
  .signal-news-list .compact-metrics .impact-chip { font-size: 10.5px; padding: 2px 5px; }
  /* Signal Brief detail: explicit responsive hero height on mobile. */
  .signal-detail .art-img.hero { height: min(44vw, 175px); max-height: 175px; aspect-ratio: auto; background-size: cover; }
  .detail h1.detail-headline { -webkit-line-clamp: 4; }
  .event-controls { align-items: stretch; flex-wrap: wrap; }
  .event-controls .seg-tabs { min-width: 0; flex: 1 1 100%; }
  .event-region-chip { flex: 1 1 auto; }
  .event-radar-head { align-items: center; margin-top: 2px; }
  .event-radar-head h1 { font-size: 30px; }
  .event-radar-head p { font-size: 13px; }
  .event-region-chip { max-width: 130px; overflow: hidden; text-overflow: ellipsis; }
  .event-timeline-item { grid-template-columns: 108px minmax(0, 1fr); gap: 14px; min-height: 128px; }
  .event-timeline-media { min-height: 104px; }
  .event-timeline-copy strong { font-size: 16px; }
  .event-timeline-meta { font-size: 12px; }
  .event-detail { margin-inline: -2px; border-radius: 15px; }
  .event-detail-cover { aspect-ratio: 16 / 10; }
  .event-detail h1 { font-size: 32px; }
  .event-fact-band { grid-template-columns: .9fr 1.2fr .9fr; }
  .event-fact-band span { padding: 11px 9px; }
  .event-fact-band b { font-size: 11px; }
  .event-detail-actions { grid-template-columns: 1fr 1.25fr; }
  .event-calendar-action, .event-register-action { padding-inline: 10px; font-size: 12px; }
  .signal-detail { padding: 14px; }
  /* Compact metadata for detail view. */
  .impact-row { flex-wrap: wrap; gap: 6px; }
  .impact-row .score-chip, .impact-row .impact-chip, .impact-row .safety-pill { font-size: 10.5px; padding: 3px 8px; }
  .detail .src-line { font-size: 12px; }
  .detail-tags .tag { font-size: 12px; padding: 2px 7px; min-height: 22px; }
  /* Skeleton: match compact card sizing. */
  .skeleton-card { grid-template-columns: 72px 1fr; gap: 10px; padding: 12px; }
  .skeleton-card span { height: 72px; }
  .skeleton-card.skeleton-lead { grid-template-columns: 1fr; }
  .skeleton-card.skeleton-lead span { height: 120px; }
}
@media (max-width: 380px) {
  .pipeline-failure-meta { align-items: flex-start; flex-direction: column; gap: 5px; }
  .pipeline-failure-actions { align-items: flex-start; flex-direction: column; }
  .topbar { padding-inline: 8px; }
  .brand { gap: 8px; }
  .brand-mark { width: 36px; height: 36px; font-size: 15px; }
  .brand strong { display: block; font-size: 15px; }
  .lang-pill .segmented { min-height: 44px; padding: 0 8px; }
  .avatar-btn { width: 42px; height: 42px; }
  .news-filter-rail { gap: 8px; }
  .news-filter-rail .chip { padding: 0 12px; }
  .signal-news-list .compact-metrics svg { display: none; }
  .signal-news-list .compact-metrics .score-chip,
  .signal-news-list .compact-metrics .impact-chip { padding-inline: 6px; }
  .event-radar-head { align-items: flex-start; flex-direction: column; gap: 10px; }
  .event-region-chip { max-width: 100%; }
  .event-timeline-item { grid-template-columns: 94px minmax(0, 1fr); gap: 12px; }
  .event-detail-actions { grid-template-columns: 1fr; }
}
@media (min-width: 720px) {
  .main { padding-top: 22px; }
  .screen-head h1 { font-size: 34px; }
  .tabbar {
    left: 50%; right: auto; transform: translateX(-50%);
    width: min(560px, calc(100% - 32px));
  }
}

/* Home AI prediction cards */
.home-predictions { margin-top: 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--panel-strong); padding: 14px; }
.home-predictions .hp-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.home-predictions .hp-disclaim { font-size: 12px; color: var(--muted); letter-spacing: 0; }
.hp-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.hp-card { border: 1px solid var(--line); border-radius: 12px; padding: 11px; min-width: 0; background: rgba(255,255,255,0.02); }
.hp-card.up { border-color: rgba(52,211,153,0.45); }
.hp-card.dn { border-color: rgba(255,84,112,0.45); }
.hp-card.neu { border-color: var(--line); }
.hp-card .hp-token { display: flex; align-items: center; gap: 6px; font-size: 12.5px; margin-bottom: 6px; }
.hp-card .hp-dir { margin-left: auto; font-size: 12px; }
.hp-card.up .hp-dir { color: var(--green); }
.hp-card.dn .hp-dir { color: var(--danger); }
.hp-card.neu .hp-dir { color: var(--neon); }
.hp-dir-text { display: block; font-size: 14px; }
.hp-card.up .hp-dir-text { color: var(--green); }
.hp-card.dn .hp-dir-text { color: var(--danger); }
.hp-card.neu .hp-dir-text { color: var(--ink); }
.hp-conf { font-size: 11px; color: var(--muted); display: block; margin: 2px 0 6px; }
.hp-why { font-size: 12px; color: var(--muted-strong); margin: 0; line-height: 1.45; }
.hp-note { font-size: 12px; color: var(--muted); margin: 10px 0 0; }
@media (max-width: 480px) { .hp-grid { grid-template-columns: 1fr; } }

/* ===== Pull-to-refresh ===== */
.ptr-indicator {
  position: fixed; top: 0; left: 0; right: 0;
  display: flex; align-items: flex-end; justify-content: center;
  gap: 8px; padding-bottom: 10px;
  height: 0; overflow: visible;
  z-index: 39; pointer-events: none;
  color: var(--muted); font-size: 13px; font-weight: 500;
  opacity: 0;
  transition: height 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.2s ease;
}
.ptr-spinner {
  width: 18px; height: 18px;
  border: 2px solid var(--line);
  border-top-color: var(--accent);
  border-radius: 50%; flex-shrink: 0;
  transition: border-top-color 0.2s ease, box-shadow 0.2s ease;
}
.ptr-indicator.ptr-ready .ptr-spinner {
  border-top-color: var(--neon);
  box-shadow: 0 0 10px rgba(56, 232, 255, 0.45);
}
.ptr-indicator.ptr-spinning .ptr-spinner {
  animation: ptr-spin 0.7s linear infinite;
  border-top-color: var(--accent);
  box-shadow: 0 0 8px rgba(45, 226, 192, 0.35);
}
.ptr-text {
  white-space: nowrap;
  transition: color 0.2s ease;
}
.ptr-indicator.ptr-ready .ptr-text { color: var(--neon); }
.ptr-indicator.ptr-spinning .ptr-text { color: var(--accent); }
@keyframes ptr-spin { to { transform: rotate(360deg); } }
#app { transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1); }
body.ptr-pulling #app { transition: none; }
body.ptr-pulling .ptr-indicator { transition: none; }

/* ===== Prediction market card ===== */
.pm-card {
  border: 1px solid rgba(56, 232, 255, 0.22);
  border-radius: var(--r-card);
  background: linear-gradient(180deg, rgba(17, 26, 46, 0.96), rgba(9, 14, 26, 0.96));
  padding: 16px; box-shadow: var(--shadow); display: grid; gap: 10px;
}
.signal-news-list .pm-card { border: 0; border-top: 1px solid rgba(148, 163, 184, 0.14); border-radius: 0; background: transparent; box-shadow: none; padding: 16px; }
.pm-card-label { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: var(--neon); }
.pm-question { margin: 0; font-size: 17px; font-weight: 800; line-height: 1.25; color: var(--ink); }
.pm-values { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.pm-yes { font-size: 22px; font-weight: 900; color: var(--accent); }
.pm-supporting { font-size: 13px; color: var(--muted); font-weight: 600; }
.pm-close { font-size: 12px; color: var(--muted); }
.pm-source { font-size: 12px; color: var(--muted); display: flex; gap: 6px; align-items: center; }
.pm-cta {
  min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border: 1px solid var(--neon); border-radius: 12px; background: rgba(56, 232, 255, 0.04);
  color: var(--neon); font-size: 14px; font-weight: 800; padding: 0 16px;
}
.pm-cta:hover { filter: brightness(1.05); }
.pm-disclosure { font-size: 12px; color: var(--muted); margin: 0; }

/* ===== Reduced motion ===== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .ig-action:hover { transform: none; }
  .signal-card:hover { transform: none; }
  .tabbar a.active .ti { text-shadow: none; }
}
