/* BNP News – design tokens for light and dark themes.
 * Light defaults on :root; dark activated by [data-theme="dark"] on <html>.
 * All color references in index.html / feed.html use these variables. */

/* Always reserve the scrollbar gutter so pages with/without a vertical scrollbar
 * don't shift content horizontally when navigating between 纵览 / 时间线 / X 监控. */
html { scrollbar-gutter: stable; }

/* Omni Sciences — blue-based palette (走查2 #5) */
:root {
  /* Backgrounds */
  --bg:      #f5f7fb;
  --panel:   #ffffff;
  --panel2:  #eaf0f9;
  /* Borders */
  --line:    #d3dcec;
  /* Text */
  --txt:     #122036;
  --muted:   #57678a;
  /* Accents (blue base) */
  --accent:  #1f6fe0;
  --green:   #15a34a;
  --red:     #dc2626;
  --blue:    #1f6fe0;
  /* Header bg (semi-transparent) */
  --header-bg: rgba(245,247,251,0.93);
  /* Theme color for <meta name="theme-color"> */
  --theme-meta: #f5f7fb;
}

[data-theme="dark"] {
  --bg:      #0a0f1a;
  --panel:   #111a2b;
  --panel2:  #18233a;
  --line:    #263650;
  --txt:     #e7edf7;
  --muted:   #8696b6;
  --accent:  #4f9dff;
  --green:   #36d399;
  --red:     #f87272;
  --blue:    #6fb3ff;
  --header-bg: rgba(10,15,26,0.93);
  --theme-meta: #0a0f1a;
}

/* ===== Shared two-level nav + notification bell/panel (all pages) ===== */
/* Level-1 nav: just the page tabs + bell + theme toggle. Page-specific controls
   live in the level-2 bar (.nav2) below it. */
/* Fixed height so .nav2's sticky top offset below is exact (not a guess at nav1's height). */
.nav1{position:sticky;top:0;z-index:30;background:var(--header-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);
  box-sizing:border-box;height:46px;padding:0 16px;display:flex;gap:14px;align-items:center}
.nav1 .tabs{display:inline-flex;gap:4px}
.nav1 .tabs a{color:var(--muted);text-decoration:none;font-size:14px;font-weight:600;padding:5px 12px;border-radius:8px;border:1px solid transparent;white-space:nowrap}
.nav1 .tabs a:hover{color:var(--txt)}
.nav1 .tabs a.on{color:var(--accent);border-color:var(--line);background:var(--panel2)}
.nav1 .grow{flex:1}
.navbtn{position:relative;background:var(--panel2);border:1px solid var(--line);border-radius:8px;cursor:pointer;font-size:16px;padding:5px 9px;line-height:1;color:var(--txt)}
.navbtn:hover{border-color:var(--accent)}
.badge{position:absolute;top:-7px;right:-7px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--red);color:#fff;font-size:11px;line-height:17px;text-align:center;font-weight:700}
.userchip{display:inline-flex;align-items:center;gap:6px}
.userchip .uname{font-size:12px;color:var(--muted);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:560px){ .userchip .uname{display:none} }
/* Level-2 nav: page-specific stats + filters + toggles. */
.nav2{position:sticky;top:46px;z-index:20;background:var(--header-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);
  padding:8px 16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.nav2 .stat{color:var(--muted);font-size:12px}.nav2 .stat b{color:var(--txt)}
.nav2 input,.nav2 select{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:6px 10px;outline:none;font-size:13px}
.nav2 input:focus,.nav2 select:focus{border-color:var(--accent)}
.nav2 label.chk{color:var(--muted);font-size:12px;display:inline-flex;gap:5px;align-items:center;cursor:pointer}
.nav2 .grow{flex:1}
/* Notification panel (dropdown under the bell) */
.notif-panel{position:fixed;top:48px;right:12px;width:min(380px,calc(100vw - 24px));max-height:72vh;overflow-y:auto;z-index:60;
  background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.35);display:none}
.notif-panel.show{display:block}
.notif-head{display:flex;gap:8px;align-items:center;padding:11px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}
.notif-head b{font-size:14px}.notif-head .grow{flex:1}
.notif-head .lnk{color:var(--muted);font-size:12px;cursor:pointer}.notif-head .lnk:hover{color:var(--accent)}
.push-btn{background:var(--accent);border:1px solid var(--accent);color:#fff;border-radius:7px;padding:4px 10px;font-size:12px;cursor:pointer}
.push-btn.on{background:transparent;color:var(--green);border-color:var(--green);cursor:default}
.push-btn.off{background:transparent;color:var(--muted);border-color:var(--line)}
.notif-item{display:block;padding:10px 14px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--txt)}
.notif-item:last-child{border-bottom:none}.notif-item:hover{background:var(--panel2)}
.notif-item .a{font-weight:600;font-size:13px}.notif-item .h{color:var(--muted);font-size:12px}.notif-item .tm{color:var(--muted);font-size:11px;float:right}
.notif-item .tx{font-size:13px;color:var(--muted);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.notif-item.fresh{background:linear-gradient(90deg,rgba(255,138,61,.10),transparent 70%)}
.notif-empty{padding:26px 14px;color:var(--muted);font-size:13px;text-align:center}
