:root {
  --bg: #020914;
  --panel: rgba(8, 27, 50, .82);
  --panel-2: rgba(6, 22, 42, .92);
  --line: rgba(50, 142, 255, .24);
  --line-strong: rgba(55, 151, 255, .58);
  --text: #e9f3ff;
  --muted: #7890ad;
  --blue: #1677ff;
  --blue2: #00a8ff;
  --red: #ff463f;
  --green: #3bd382;
  --yellow: #ffb324;
  --orange: #ff8a00;
  --shadow: 0 0 30px rgba(0, 102, 255, .16), inset 0 0 18px rgba(28, 132, 255, .04);
}
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; }
body {
  min-width: 1360px;
  font-family: "Inter", "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
  color: var(--text);
  background: radial-gradient(circle at 72% 28%, #062049 0%, #020914 38%, #01050d 100%);
  overflow: hidden;
}
button, input { font: inherit; color: inherit; }
button { border: 0; cursor: pointer; }
[hidden] { display: none !important; }

/* Shared logo */
.brand { display: flex; align-items: center; gap: 16px; }
.hawk-logo {
  width: 76px;
  height: 76px;
  position: relative;
  border-radius: 18px;
  background: conic-gradient(from 38deg, #0c52ff, #00aaff, #1762ff, #042a84, #0c52ff);
  clip-path: polygon(50% 0%, 88% 18%, 100% 58%, 70% 100%, 26% 100%, 0 60%, 10% 18%);
  box-shadow: 0 0 34px rgba(0, 120, 255, .46);
}
.hawk-logo::before {
  content: "";
  position: absolute;
  inset: 18px;
  border-radius: 50%;
  background: #031228;
  box-shadow: inset 0 0 0 10px rgba(31, 119, 255, .74);
}
.hawk-logo::after {
  content: "";
  position: absolute;
  right: -5px;
  top: 26px;
  width: 44px;
  height: 28px;
  background: linear-gradient(90deg, #0d65ff, #10c8ff);
  clip-path: polygon(0 0, 100% 50%, 0 100%, 22% 50%);
  filter: drop-shadow(0 0 14px rgba(17, 165, 255, .7));
}
.hawk-logo.small { width: 36px; height: 36px; border-radius: 9px; }
.hawk-logo.small::before { inset: 9px; box-shadow: inset 0 0 0 5px rgba(31, 119, 255, .74); }
.hawk-logo.small::after { right: -3px; top: 12px; width: 22px; height: 15px; }
.brand-title { font-size: 52px; font-weight: 800; letter-spacing: -1.5px; text-shadow: 0 0 22px rgba(255,255,255,.18); }
.brand-stack .brand-title { font-size: 23px; line-height: 1; letter-spacing: -.4px; }
.brand-subtitle { margin-top: 4px; font-size: 11px; color: #b6c7dd; letter-spacing: 4px; white-space: nowrap; }

/* Login */
.login-page {
  height: 100vh;
  display: grid;
  grid-template-columns: 1.25fr .75fr;
  align-items: center;
  gap: 60px;
  padding: 0 120px 0 110px;
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(circle at 46% 83%, rgba(15, 120, 255, .58) 0 1px, transparent 3px),
    radial-gradient(circle at 35% 75%, rgba(13, 115, 255, .34), transparent 13%),
    linear-gradient(180deg, rgba(5, 18, 40, .0), rgba(8, 41, 87, .18) 78%, rgba(0, 5, 13, .7)),
    radial-gradient(circle at 75% 40%, #071b42, transparent 46%),
    #020914;
}
.login-page::before {
  content: "";
  position: absolute;
  left: -30px;
  right: 28%;
  bottom: 0;
  height: 52%;
  background:
    repeating-linear-gradient(90deg, rgba(25,126,255,.08) 0 2px, transparent 2px 68px),
    radial-gradient(ellipse at 45% 92%, rgba(0, 121, 255, .36) 0 2px, transparent 3px),
    linear-gradient(140deg, transparent 0 26%, rgba(21, 112, 255, .1) 26.2%, transparent 27% 100%);
  opacity: .96;
  pointer-events: none;
}
.login-page::after {
  content: "";
  position: absolute;
  left: 8%;
  bottom: 12%;
  width: 500px;
  height: 190px;
  border-radius: 50%;
  border: 1px solid rgba(44, 142, 255, .5);
  box-shadow: 0 0 0 30px rgba(0, 118, 255, .03), 0 0 0 58px rgba(0, 118, 255, .025), 0 0 45px rgba(0, 118, 255, .45);
  transform: perspective(500px) rotateX(70deg);
  pointer-events: none;
}
.login-hero { position: relative; z-index: 2; padding-top: 20px; }
.brand-login { margin-bottom: 68px; }
.login-hero h1 {
  margin: 0 0 20px;
  font-size: 72px;
  line-height: .98;
  letter-spacing: 4px;
  font-weight: 900;
}
.login-hero h2 {
  margin: 0 0 56px;
  font-size: 34px;
  color: #0aa4ff;
  letter-spacing: 5px;
}
.hero-features { display: flex; gap: 70px; align-items: center; }
.hero-feature { display: flex; align-items: center; gap: 16px; min-width: 170px; }
.hero-feature strong { display: block; font-size: 18px; margin-bottom: 7px; }
.hero-feature small { display: block; color: #a3b4cc; font-size: 13px; }
.feature-icon {
  width: 54px; height: 54px; border-radius: 50%;
  display: block; position: relative;
  background: radial-gradient(circle, #0c65df 0%, #0a2e66 58%, rgba(4, 18, 43, .4) 100%);
  box-shadow: 0 0 22px rgba(0, 132, 255, .46), inset 0 0 14px rgba(56, 169, 255, .4);
}
.feature-icon::before { content: ""; position: absolute; inset: 15px; border-radius: 50%; border: 2px solid #29b3ff; }
.bolt-icon::before { border: 0; inset: 11px; background: #1ab7ff; clip-path: polygon(50% 0, 18% 52%, 48% 52%, 34% 100%, 82% 38%, 54% 38%); }
.rise-icon::before { border: 0; inset: 13px; background: none; border-left: 3px solid #22c0ff; border-bottom: 3px solid #22c0ff; transform: skew(-8deg); }
.rise-icon::after { content:""; position:absolute; left:19px; top:18px; width:20px; height:16px; border-top:4px solid #22c0ff; border-right:4px solid #22c0ff; transform: rotate(-10deg); }
.login-slogan { margin-top: 290px; font-size: 24px; color: rgba(255,255,255,.83); letter-spacing: 4px; }
.login-card {
  position: relative;
  z-index: 3;
  justify-self: center;
  width: 410px;
  padding: 36px 34px 34px;
  border: 1px solid rgba(34, 139, 255, .55);
  border-radius: 14px;
  background: linear-gradient(160deg, rgba(9, 36, 75, .78), rgba(2, 12, 27, .88));
  box-shadow: 0 0 36px rgba(24, 126, 255, .12), inset 0 0 20px rgba(35, 131, 255, .04);
}
.login-card h3 { margin: 0; text-align: center; font-size: 23px; }
.login-card p { margin: 12px 0 28px; text-align: center; color: #a9bdd8; font-size: 15px; }
.field {
  height: 50px;
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 0 16px;
  margin-bottom: 18px;
  border: 1px solid rgba(69, 143, 255, .27);
  border-radius: 8px;
  background: rgba(0, 16, 36, .43);
}
.field input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; font-size: 16px; color: #e8f1ff; }
.field input::placeholder { color: #788fae; }
.field-icon, .eye-btn { width: 19px; height: 19px; opacity: .86; display: block; background: #93abd0; }
.user-icon { clip-path: path("M9.5 10.5c3 0 5.5 2.2 5.5 5v1H4v-1c0-2.8 2.5-5 5.5-5Zm0-8A3.5 3.5 0 1 1 9.5 9a3.5 3.5 0 0 1 0-7Z"); }
.lock-icon { clip-path: polygon(20% 45%,20% 100%,80% 100%,80% 45%,70% 45%,70% 30%,60% 15%,40% 15%,30% 30%,30% 45%); }
.eye-btn { border: 0; background: #93abd0; clip-path: ellipse(48% 30% at 50% 50%); }
.login-options { display: flex; justify-content: space-between; align-items: center; margin: 4px 0 22px; color: #94a7c0; font-size: 14px; }
.remember { display: flex; align-items: center; gap: 8px; }
.remember input { accent-color: var(--blue); width: 18px; height: 18px; }
.link-btn { background: none; color: #1d9bff; padding: 0; }
.primary-btn {
  width: 100%; height: 54px; border-radius: 7px;
  background: linear-gradient(100deg, #1399ff, #0053ff);
  color: white; font-size: 18px; font-weight: 700;
  box-shadow: 0 14px 34px rgba(0, 82, 255, .28);
}
.divider { display: flex; align-items: center; gap: 18px; margin: 23px 0; color: #8d9ebb; }
.divider::before, .divider::after { content: ""; height: 1px; flex: 1; background: rgba(100, 154, 228, .24); }
.outline-btn { width: 100%; height: 45px; border: 1px solid rgba(36, 145, 255, .72); border-radius: 6px; background: rgba(0, 33, 72, .22); color: #1da4ff; font-size: 17px; }

/* Dashboard */
.dashboard-page {
  height: 100vh;
  padding: 14px 18px 16px;
  background:
    radial-gradient(circle at 70% 20%, rgba(12, 76, 157, .32), transparent 43%),
    radial-gradient(circle at 50% 120%, rgba(6, 71, 140, .28), transparent 42%),
    #020914;
}
.topbar { height: 54px; display: grid; grid-template-columns: 250px 1fr 150px auto auto; align-items: center; gap: 10px; }
.top-brand { align-self: start; gap: 10px; padding-left: 2px; }
.main-nav { height: 52px; display: flex; align-items: flex-start; gap: 20px; }
.main-nav button { height: 42px; padding: 0 17px; border-radius: 6px; color: #c5d2e3; background: transparent; font-size: 14px; white-space: nowrap; }
.main-nav button.active { background: linear-gradient(180deg, rgba(24, 118, 255, .55), rgba(6, 49, 110, .85)); color: white; box-shadow: 0 0 22px rgba(0, 140, 255, .5), inset 0 -2px 0 #1bb9ff; }
.top-time { text-align: right; line-height: 1.25; color: #8fa0b8; }
.top-time strong { display:block; color: #e4eefc; font-size: 16px; font-weight: 500; }
.top-time span { font-size: 12px; }
.account-box { display:flex; align-items:center; gap:8px; justify-content:flex-end; }
.account-box span {
  max-width: 150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:#d8eaff; font-size:13px; padding:0 10px; height:30px; line-height:30px;
  border:1px solid rgba(65,142,230,.22); border-radius:6px; background:rgba(8,37,74,.45);
}
.account-box button {
  height:30px; padding:0 12px; border-radius:6px; border:1px solid rgba(255,93,86,.24);
  background:rgba(120,28,34,.28); color:#ff8c86; font-size:12px;
}
.layout-toolbar { display:flex; gap:8px; margin-left: 12px; }
.layout-toolbar button {
  height:32px; padding:0 14px; border-radius:6px; border:1px solid rgba(70,145,231,.28);
  background:rgba(7,45,95,.55); color:#8cc4ff; font-size:12px;
}
.dashboard-shell { height: calc(100vh - 70px); display: flex; gap: 6px; min-height: 0; align-items: stretch; }
.column-resizer {
  flex: 0 0 8px;
  min-width: 8px;
  border-radius: 999px;
  cursor: col-resize;
  background: linear-gradient(180deg, transparent, rgba(43, 136, 255, .28), transparent);
  box-shadow: inset 0 0 0 1px rgba(84, 151, 235, .10);
  opacity: .7;
}
.column-resizer:hover,
.column-resizer.resizing {
  opacity: 1;
  background: linear-gradient(180deg, transparent, rgba(52, 158, 255, .58), transparent);
  box-shadow: 0 0 18px rgba(32, 133, 255, .24), inset 0 0 0 1px rgba(116, 184, 255, .35);
}
.layout-column { min-height: 0; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; gap: 10px; padding-right: 2px; align-items: stretch; }
.left-rail { flex: 0 0 250px; }
.center-grid { flex: 1 1 auto; min-width: 0; }
.right-rail { flex: 0 0 430px; }
.panel {
  border: 1px solid rgba(54, 128, 215, .28);
  border-radius: 6px;
  background: linear-gradient(180deg, rgba(10, 32, 58, .92), rgba(5, 21, 40, .78));
  box-shadow: var(--shadow);
  overflow: hidden;
  position: relative;
}
.panel::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(120deg, rgba(56, 148, 255, .08), transparent 22%, transparent 78%, rgba(0, 131, 255, .04));
}
.panel-title, .panel-head, .chart-head { position: relative; z-index: 1; }
.panel-title { padding: 13px 16px 8px; font-size: 16px; font-weight: 700; letter-spacing: .5px; }
.row-between { display: flex; justify-content: space-between; align-items: center; }
.row-between button, .panel-head button, .chart-head button { background: transparent; color: #5eafff; font-size: 12px; }
.tiny-info { color: #7f94af; font-size: 12px; margin-left: 4px; }
.donut-wrap { display: grid; grid-template-columns: 126px 1fr; align-items: center; padding: 5px 18px 0; gap: 12px; }
.donut {
  width: 112px; height: 112px; border-radius: 50%;
  background: conic-gradient(var(--red) 0 58%, var(--green) 58% 88%, #18314f 88%);
  position: relative;
  display: grid; place-items: center;
  box-shadow: 0 0 25px rgba(0, 174, 255, .2);
}
.donut::before { content: ""; position: absolute; inset: 15px; border-radius: 50%; background: #0b203d; }
.donut span { position: relative; font-size: 30px; font-weight: 800; line-height: 1; text-align: center; }
.donut em { display: block; margin-top: 8px; font-size: 12px; font-style: normal; font-weight: 500; color: #b9c8dc; }
.legend-list { list-style: none; padding: 0; margin: 0; }
.legend-list li { display: grid; grid-template-columns: 14px 1fr 28px; align-items: center; margin: 15px 0; color: #dce8f7; font-size: 14px; }
.dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.dot.red { background: var(--red); } .dot.yellow { background: var(--yellow); } .dot.green { background: var(--green); }
.compare { padding-left: 32px; color: #768aa4; font-size: 13px; }
.compare b { color: var(--red); margin-left: 14px; }
.group-list, .status-list { list-style: none; padding: 0 10px; margin: 0; position:relative; z-index:1; max-height: calc(100% - 54px); overflow: auto; }
.group-list li { height: 34px; display: grid; grid-template-columns: 22px 1fr; align-items: center; padding: 0 10px; border-radius: 4px; color: #d8e4f5; font-size: 14px; margin-bottom: 4px; }
.group-list li.selected { background: rgba(15, 83, 164, .72); box-shadow: inset 0 0 0 1px rgba(56, 150, 255, .25); }
.mini-icon { width: 14px; height: 14px; display:block; border-radius: 4px; border: 2px solid currentColor; }
.mini-icon.blue { color:#28a4ff; } .mini-icon.orange { color:#ff9b15; } .mini-icon.green { color:#1edb70; } .mini-icon.amber { color:#ffb52a; } .mini-icon.cyan { color:#00c2ff; }
.status-list li { height: 32px; display: grid; grid-template-columns: 1fr 52px 34px; align-items: center; color: #cddbea; font-size: 13px; margin-bottom: 6px; cursor: pointer; }
.status-list em { font-style: normal; font-size: 12px; }
.status-list .run { color: #b7cce7; } .status-list .stop { color: #76869c; }
.switch { width: 32px; height: 18px; position: relative; display: block; }
.switch input { display: none; }
.switch i { position: absolute; inset: 0; border-radius: 12px; background: #22344d; box-shadow: inset 0 0 0 1px rgba(255,255,255,.14); }
.switch i::before { content: ""; position:absolute; width: 14px; height:14px; top:2px; left:2px; border-radius:50%; background:#a5b9d4; transition:.2s; }
.switch input:checked + i { background: linear-gradient(90deg, #0a62df, #38a0ff); }
.switch input:checked + i::before { left:16px; background:white; }
.spin { width: 15px; height: 15px; border: 2px solid rgba(67,161,255,.18); border-top-color:#49aaff; border-radius:50%; animation: spin 1.2s linear infinite; justify-self:end; }
@keyframes spin { to { transform: rotate(360deg); } }
.ghost-btn { position:absolute; bottom:12px; left:16px; right:16px; height:36px; border-radius:4px; background:rgba(16,74,140,.55); border:1px solid rgba(66,151,255,.25); color:#a7d2ff; }
.panel-head { display:flex; justify-content:space-between; align-items:center; padding: 12px 14px 8px; border-bottom:1px solid rgba(66,122,190,.16); }
.panel-head h3, .chart-head h3 { margin:0; display:inline-block; font-size:20px; letter-spacing:1px; }
.panel-head span { color:#6f8198; font-size:12px; margin-left:10px; }
.refresh-dot { display:inline-block; width:12px; height:12px; border-radius:50%; border:1px solid #6f8198; margin-left:8px; vertical-align:-2px; }
.head-actions { display:flex; gap:10px; }
.head-actions button { height:28px; padding:0 12px; border:1px solid rgba(60,142,255,.28); border-radius:4px; background:rgba(5,44,94,.46); color:#78beff; }
table { width:100%; border-collapse:collapse; position:relative; z-index:1; }
th { color:#8195b1; font-weight:600; text-align:left; font-size:12px; height:34px; background:rgba(15,40,68,.56); border-bottom:1px solid rgba(72,128,196,.13); }
td { color:#c4d1e1; font-size:12px; height:38px; border-bottom:1px solid rgba(65,109,160,.13); }
.event-table th, .event-table td { padding: 0 10px; }
.event-table th:nth-child(1), .event-table td:nth-child(1) { width:58px; color:#9aa8bb; }
.event-table th:nth-child(2), .event-table td:nth-child(2) { width:145px; color:#e6edf8; font-weight:600; }
.hot-row { outline: none; box-shadow: none; }
mark { padding:1px 5px; margin-left:6px; border-radius:7px; background:#e13a35; color:white; font-size:9px; }
.tag { display:inline-flex; align-items:center; justify-content:center; height:22px; min-width:38px; padding:0 8px; border-radius:4px; font-weight:700; }
.redtag { background: rgba(255,62,53,.14); color:#ff5a4f; border:1px solid rgba(255,63,53,.23); }
.smalltag { height:20px; min-width:34px; font-size:12px; }
.grade { font-size:16px; } .grade.a { color:#ff4b42; } .grade.bplus { color:#ffbb1b; } .grade.b { color:#ffb517; } .grade.c { color:#ffb517; }
.panel-head.simple { justify-content:flex-start; gap:10px; }
.panel-head.simple button { margin-left:auto; height:26px; padding:0 12px; background:rgba(16,70,132,.55); border:1px solid rgba(71,150,255,.26); border-radius:4px; }
.compact-table th, .compact-table td { padding:0 10px; }
.trend-panel { min-height: 0; }
.chart-head { display:grid; grid-template-columns: 170px 1fr auto; align-items:center; gap:8px; padding: 12px 16px 0; }
.chart-head h3 { font-size:18px; }
.legend-inline { display:flex; gap:20px; color:#8fa5bf; font-size:12px; align-items:center; white-space:nowrap; }
.l::before { content:""; display:inline-block; width:18px; height:2px; margin-right:6px; vertical-align:middle; }
.redline::before { background:#ff473e; } .orangeline::before { background:#ff9a00; } .greenline::before { background:#27c97a; } .limegreen::before { background:#96d83a; } .blueline::before { background:#4da0ff; }
.range-tabs { display:flex; gap:6px; }
.range-tabs button { height:24px; padding:0 9px; border-radius:4px; color:#8294aa; }
.range-tabs button.active { color:white; background:rgba(25,87,165,.8); border:1px solid rgba(79,153,255,.28); }
.line-chart { width:100%; height:calc(100% - 40px); min-height:170px; position:relative; z-index:1; }
.grid-lines line { stroke: rgba(85,126,181,.16); stroke-width:1; }
.axis-labels text { fill:#8fa1b8; font-size:12px; }
.path { fill:none; stroke-width:2.1; filter: drop-shadow(0 0 3px currentColor); }
.path.red { stroke:#ff443e; color:#ff443e; } .path.orange { stroke:#ff990a; color:#ff990a; } .path.green { stroke:#24d385; color:#24d385; } .path.lime { stroke:#91db35; color:#91db35; } .path.blue { stroke:#4b9eff; color:#4b9eff; }
.detail-panel h3 { position:relative; z-index:1; margin: 6px 16px 8px; font-size:15px; line-height:1.5; font-weight:700; }
#detailTitle { word-break: break-word; }
.pill-red { display:inline-flex; height:22px; padding:0 9px; margin-left:6px; align-items:center; border-radius:12px; border:1px solid rgba(255,79,68,.46); color:#ff4f48; background:rgba(255,52,44,.1); font-size:13px; }
.detail-grid { display:grid; grid-template-columns:1fr 205px; gap:14px; padding:0 16px; position:relative; z-index:1; }
.detail-copy h4 { color:#69b7ff; margin:0 0 8px; font-size:13px; }
.detail-copy ul { margin:0; padding-left:18px; color:#bdd0e5; font-size:12px; line-height:1.85; }
.detail-copy li::marker { color:#5fb2ff; }
.meta-box { display:grid; grid-template-columns:74px 1fr; gap:8px 4px; margin:0; padding:14px 12px; border:1px solid rgba(71,123,183,.18); border-radius:4px; color:#b7c8dd; background:rgba(8,26,50,.5); font-size:12px; }
.meta-box dt { color:#7488a0; } .meta-box dd { margin:0; text-align:right; }
.red-text { color:#ff5148 !important; font-weight:700; }
.concepts { display:flex; gap:8px; padding:12px 16px 0; position:relative; z-index:1; }
.concepts button { height:28px; padding:0 12px; border-radius:4px; background:rgba(16,75,144,.58); border:1px solid rgba(66,151,255,.22); color:#78baff; font-size:12px; }
.stock-table th, .stock-table td { padding: 0 12px; }
.stock-table td { color:#ff554c; font-weight:700; }
.stock-table td:first-child { color:#dbe7f4; font-weight:400; }
.stock-table small { color:#75879c; margin-left:4px; }
.stars { letter-spacing:1px; color:#ff5b52 !important; }
.push-panel, .score-panel { min-height:0; align-self:start; }
.push-ok { color:#3ddb85; font-size:13px; }
.push-ok.warn { color:#ffb324; }

.push-test { position:relative; z-index:1; height:36px; border-radius:4px; background:linear-gradient(180deg,#1c7dff,#0b54c4); color:#d8eaff; font-weight:700; }

.score-wrap { position:relative; z-index:1; display:grid; grid-template-columns:116px 1fr; gap:14px; padding:8px 16px 0; }
.score-ring { width:108px; height:108px; border-radius:50%; display:grid; place-items:center; align-content:center; background:radial-gradient(circle, rgba(15,66,122,.9) 45%, transparent 46%), conic-gradient(#39a9ff 0 76%, rgba(54,94,150,.25) 76%); box-shadow:0 0 26px rgba(45,158,255,.35); }
.score-ring strong { font-size:38px; line-height:1; }
.score-wrap dl { display:grid; grid-template-columns:1fr 34px; gap:10px 4px; margin:5px 0 0; font-size:13px; }
.score-wrap dt { color:#86a2c0; } .score-wrap dd { margin:0; text-align:right; color:#dce9f8; }
.suggestion { position:relative; z-index:1; margin:12px 14px 0; padding:10px 12px; border-radius:5px; background:rgba(7,25,47,.5); }
.suggestion h4 { margin:0 0 8px; color:#ffb321; }
.suggestion p { margin:8px 0; color:#c4d3e5; font-size:12px; }
.suggestion i { width:13px; height:13px; display:inline-block; border-radius:50%; margin-right:7px; vertical-align:-2px; }
.suggestion .warn { background:#ff8a1c; } .suggestion .info { background:#37b8ff; } .suggestion .ok { background:#43db85; }
.suggestion b { color:#48e385; font-size:22px; margin-left:8px; }
@media (max-width: 1500px) {
  .event-table th, .event-table td { padding:0 8px; font-size:11px; }
  .login-page { padding-left: 80px; padding-right: 80px; }
  .login-hero h1 { font-size: 64px; }
}

/* Settings modal: v1.0.4 */
.settings-overlay[hidden] { display: none !important; }
.settings-overlay {
  position: fixed;
  inset: 0;
  z-index: 50;
  display: grid;
  place-items: center;
  background: rgba(1, 7, 18, .68);
  backdrop-filter: blur(8px);
}
.settings-modal {
  width: min(980px, calc(100vw - 64px));
  max-height: calc(100vh - 70px);
  overflow: hidden;
  border: 1px solid rgba(45, 142, 255, .45);
  border-radius: 12px;
  background:
    radial-gradient(circle at 20% 0%, rgba(22, 94, 190, .28), transparent 34%),
    linear-gradient(160deg, rgba(8, 31, 61, .96), rgba(3, 13, 29, .98));
  box-shadow: 0 26px 90px rgba(0, 0, 0, .58), 0 0 42px rgba(0, 112, 255, .18), inset 0 0 0 1px rgba(255,255,255,.03);
}
.settings-head {
  height: 76px;
  padding: 18px 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid rgba(71, 145, 236, .18);
}
.settings-head h3 { margin: 0; font-size: 22px; letter-spacing: 1px; }
.settings-head p { margin: 6px 0 0; color: #8ba1bd; font-size: 13px; }
.close-btn {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  color: #bed8ff;
  font-size: 26px;
  background: rgba(9, 42, 82, .62);
  border: 1px solid rgba(72, 151, 255, .28);
}
.settings-body {
  padding: 18px;
  display: grid;
  grid-template-columns: 1.35fr .8fr;
  gap: 14px;
  overflow: auto;
  max-height: calc(100vh - 146px);
}
.setting-card {
  position: relative;
  border: 1px solid rgba(58, 132, 220, .28);
  border-radius: 10px;
  background: linear-gradient(180deg, rgba(10, 35, 66, .82), rgba(5, 20, 39, .76));
  padding: 16px;
  box-shadow: inset 0 0 20px rgba(29, 118, 255, .04);
}
.setting-card-main { min-height: 430px; }
.setting-title-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
  margin-bottom: 16px;
}
.setting-card h4 { margin: 0; font-size: 18px; }
.setting-card p { margin: 7px 0 0; color: #8ea7c5; font-size: 13px; line-height: 1.55; }
.config-badge {
  flex: 0 0 auto;
  height: 28px;
  line-height: 28px;
  padding: 0 12px;
  border-radius: 15px;
  font-weight: 700;
  font-size: 13px;
}
.config-badge.ok { color: #42f08a; background: rgba(38, 177, 91, .16); border: 1px solid rgba(66, 240, 138, .25); }
.config-badge.warn { color: #ffb13d; background: rgba(255, 177, 61, .14); border: 1px solid rgba(255, 177, 61, .24); }
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.config-field { display: flex; flex-direction: column; gap: 8px; }
.config-field-wide { grid-column: 1 / -1; }
.config-field span { color: #bfd2ed; font-size: 13px; }
.config-field input, .config-field select {
  width: 100%;
  height: 42px;
  padding: 0 12px;
  border: 1px solid rgba(71, 145, 236, .28);
  border-radius: 7px;
  background: rgba(2, 15, 32, .62);
  color: #e7f1ff;
  outline: none;
}
.config-field input::placeholder { color: #687f9d; }
.config-field small { color: #7f91aa; font-size: 12px; }
.config-field small b { color: #5fb7ff; font-weight: 600; }
.settings-actions {
  margin-top: 18px;
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.primary-small, .outline-small, .danger-small {
  height: 38px;
  padding: 0 18px;
  border-radius: 7px;
  font-weight: 700;
}
.primary-small {
  color: #fff;
  background: linear-gradient(100deg, #138cff, #0052ff);
  box-shadow: 0 10px 26px rgba(0, 88, 255, .25);
}
.outline-small {
  color: #58b7ff;
  border: 1px solid rgba(64, 156, 255, .55);
  background: rgba(6, 34, 70, .42);
}
.danger-small {
  color: #ff7272;
  border: 1px solid rgba(255, 95, 95, .35);
  background: rgba(91, 13, 25, .22);
}
.primary-small:disabled, .outline-small:disabled, .danger-small:disabled { opacity: .6; cursor: wait; }
.config-result {
  margin-top: 14px;
  min-height: 38px;
  padding: 10px 12px;
  border-radius: 7px;
  color: #9ab0cd;
  background: rgba(1, 13, 29, .55);
  border: 1px solid rgba(71, 145, 236, .18);
  font-size: 13px;
  line-height: 1.45;
}
.config-result.ok { color: #45ee8a; border-color: rgba(69, 238, 138, .24); background: rgba(10, 74, 44, .22); }
.config-result.warn { color: #ffb943; border-color: rgba(255, 185, 67, .25); background: rgba(89, 58, 11, .22); }
.config-result.error { color: #ff6d6d; border-color: rgba(255, 109, 109, .25); background: rgba(82, 17, 25, .24); }
.setting-tips { margin: 12px 0 0; padding-left: 18px; color: #9fb1c9; font-size: 13px; line-height: 1.85; }
.setting-tips code {
  padding: 2px 5px;
  border-radius: 4px;
  color: #7bd0ff;
  background: rgba(9, 37, 74, .7);
  border: 1px solid rgba(82, 157, 244, .16);
}
@media (max-width: 1100px) {
  .settings-body { grid-template-columns: 1fr; }
  .settings-modal { width: calc(100vw - 36px); }
}

/* v1.0.4 auth register modal */
.auth-overlay {
  position: fixed;
  inset: 0;
  z-index: 30;
  display: grid;
  place-items: center;
  background: rgba(0, 6, 17, .58);
  backdrop-filter: blur(16px);
}
.auth-modal {
  position: relative;
  width: 420px;
  padding: 32px 34px 30px;
  border: 1px solid rgba(38, 139, 255, .46);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(9, 33, 67, .96), rgba(3, 13, 31, .96));
  box-shadow: 0 0 42px rgba(0, 113, 255, .22), inset 0 0 18px rgba(26, 126, 255, .04);
}
.auth-modal h3 {
  margin: 0 0 8px;
  text-align: center;
  font-size: 26px;
  letter-spacing: .4px;
}
.auth-modal p {
  margin: 0 0 24px;
  text-align: center;
  color: #9fb4ce;
  font-size: 14px;
}
.auth-close {
  position: absolute;
  top: 12px;
  right: 14px;
}
.auth-field {
  height: 54px;
  margin-bottom: 14px;
}
.auth-message {
  min-height: 22px;
  margin: 2px 0 14px;
  color: #8ea6c2;
  font-size: 13px;
  text-align: center;
}
.auth-message.ok { color: #3bd382; }
.auth-message.error { color: #ff625d; }
.auth-submit { height: 54px; margin-top: 4px; }
.auth-back { height: 48px; margin-top: 14px; }
.primary-btn:disabled,
.outline-btn:disabled {
  cursor: not-allowed;
  opacity: .62;
}

/* v1.0.4 global action dialog */
.dialog-overlay[hidden] { display: none !important; }
.dialog-overlay {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: grid;
  place-items: center;
  background: rgba(1, 7, 18, .68);
  backdrop-filter: blur(10px);
}
.dialog-modal {
  position: relative;
  width: min(460px, calc(100vw - 40px));
  padding: 28px 30px 24px;
  border: 1px solid rgba(57, 149, 255, .48);
  border-radius: 16px;
  background:
    radial-gradient(circle at 50% 0%, rgba(35, 121, 255, .20), transparent 38%),
    linear-gradient(180deg, rgba(9, 33, 67, .98), rgba(2, 13, 30, .98));
  box-shadow: 0 26px 90px rgba(0, 0, 0, .58), 0 0 44px rgba(0, 119, 255, .18), inset 0 0 18px rgba(26,126,255,.04);
  color: #e7f1ff;
}
.dialog-close { position: absolute; top: 12px; right: 14px; }
.dialog-icon {
  width: 50px;
  height: 50px;
  margin: 0 auto 14px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  font-weight: 900;
  font-size: 22px;
  color: #fff;
  background: linear-gradient(135deg, #1395ff, #004dff);
  box-shadow: 0 0 28px rgba(0, 118, 255, .36);
}
.dialog-icon.success { background: linear-gradient(135deg, #2ce58b, #057b43); box-shadow: 0 0 28px rgba(54, 221, 132, .28); }
.dialog-icon.warning { background: linear-gradient(135deg, #ffb23e, #cc6200); box-shadow: 0 0 28px rgba(255, 160, 43, .28); }
.dialog-icon.error { background: linear-gradient(135deg, #ff5e5e, #ad1728); box-shadow: 0 0 28px rgba(255, 81, 81, .28); }
.dialog-modal h3 {
  margin: 0 24px 12px;
  text-align: center;
  font-size: 22px;
  letter-spacing: .5px;
}
.dialog-content {
  min-height: 54px;
  color: #b6c9e4;
  text-align: center;
  font-size: 14px;
  line-height: 1.75;
}
.dialog-content b { color: #5dbbff; }
.dialog-content .red-text { color: #ff665f; }
.dialog-content .green-text { color: #42e98b; }
.dialog-actions {
  margin-top: 20px;
  display: flex;
  justify-content: center;
  gap: 12px;
}
.dialog-actions button { min-width: 116px; }
.dialog-actions.single #dialogCancel { display: none; }


.mini-action-btn { background: transparent; color: #5eafff; font-size: 12px; }
.clickable-title { cursor: pointer; }
.push-field-wrap { position:relative; z-index:1; margin:0 14px 12px; }
.push-label { display:block; margin-bottom:8px; color:#94a7bd; font-size:12px; }
.push-token-input {
  width:100%; height:36px; padding:0 12px; border-radius:4px;
  border:1px solid rgba(68,130,197,.22); background:rgba(3,17,33,.5); color:#dce8f7; outline:none;
}
.push-token-input::placeholder { color:#728aa8; }
.push-hint { margin-top:8px; color:#89a1bc; font-size:12px; }
.push-actions { position:relative; z-index:1; display:grid; grid-template-columns: 92px 1fr; gap:10px; margin:2px 14px 14px; }
.push-actions .outline-small, .push-actions .push-test { width:100%; }
.keyword-modal { width: 760px; max-width: calc(100vw - 40px); }
.keyword-body { padding-top: 0; }
.keyword-add-row { display:grid; grid-template-columns: 1fr 110px; gap:10px; margin-bottom: 14px; }
.keyword-add-row input {
  height:40px; border-radius:8px; border:1px solid rgba(68,130,197,.22);
  background:rgba(3,17,33,.58); color:#e9f3ff; padding:0 12px; outline:none;
}
.keyword-manager-list { max-height: 360px; overflow:auto; display:grid; gap:10px; }
.keyword-manager-item {
  display:flex; justify-content:space-between; align-items:center; gap:16px;
  padding:12px 14px; border-radius:8px; border:1px solid rgba(60,132,210,.2);
  background:rgba(8,28,52,.55);
}
.keyword-manager-meta { display:flex; align-items:center; gap:10px; }
.keyword-manager-meta strong { font-size:15px; }
.keyword-manager-meta small { color:#8aa0bb; }
.keyword-manager-actions-row { display:flex; align-items:center; gap:12px; }
.keyword-manager-actions { margin-top: 14px; }
.tiny-inline { display:flex; align-items:center; gap:6px; color:#b9cbe0; font-size:13px; }
.tiny-inline input { accent-color: var(--blue); }
.status-list::-webkit-scrollbar, .group-list::-webkit-scrollbar, .keyword-manager-list::-webkit-scrollbar { width: 8px; }
.status-list::-webkit-scrollbar-thumb, .group-list::-webkit-scrollbar-thumb, .keyword-manager-list::-webkit-scrollbar-thumb { background: rgba(72,128,196,.28); border-radius: 999px; }

.push-mini-btn { font-size: 13px !important; letter-spacing: .2px; }
.score-panel { padding-bottom: 12px; }
.push-panel { padding-bottom: 12px; }
.push-field-wrap { margin-bottom: 10px; }
.push-hint { margin-top: 6px; }

.dashboard-widget { min-height: 150px; flex: 0 0 auto; }
.dashboard-widget[data-widget="event-overview"] { height: 205px; }
.dashboard-widget[data-widget="keyword-groups"] { height: 240px; }
.dashboard-widget[data-widget="monitor-status"] { height: 340px; }
.dashboard-widget[data-widget="today-events"] { height: 322px; }
.dashboard-widget[data-widget="hit-flow"] { height: 200px; }
.dashboard-widget[data-widget="trend-panel"] { height: 280px; }
.dashboard-widget[data-widget="detail-panel"] { height: 220px; }
.dashboard-widget[data-widget="stocks-panel"] { height: 175px; }
.dashboard-widget[data-widget="push-panel"] { height: 175px; }
.dashboard-widget[data-widget="score-panel"] { height: 245px; }
.layout-column::-webkit-scrollbar { width: 8px; }
.layout-column::-webkit-scrollbar-thumb { background: rgba(72,128,196,.28); border-radius: 999px; }
.dashboard-widget.dragging { opacity: .48; border-color: rgba(90,180,255,.6); box-shadow: 0 0 0 2px rgba(69,165,255,.22), 0 12px 32px rgba(0,0,0,.28); }
.dashboard-widget.drop-target { border-color: rgba(90,180,255,.78); box-shadow: inset 0 0 0 2px rgba(64,160,255,.24), 0 0 30px rgba(35,132,255,.14); }
.layout-column.drop-column { box-shadow: inset 0 0 0 1px rgba(79,153,255,.24); border-radius: 8px; }
.widget-resize-handle {
  position:absolute; right: 8px; bottom: 8px; width: 16px; height: 16px; z-index: 3; cursor: nwse-resize;
  background: linear-gradient(135deg, transparent 0 45%, rgba(127,191,255,.88) 45% 55%, transparent 55% 65%, rgba(127,191,255,.88) 65% 75%, transparent 75% 100%);
  opacity: .8;
}
.dashboard-widget.resizing { user-select:none; }
.dashboard-widget.resizing iframe, .dashboard-widget.resizing svg { pointer-events:none; }
@media (max-width: 1680px) {
  .left-rail { flex-basis: 235px; }
  .right-rail { flex-basis: 400px; }
}
@media (max-width: 1400px) {
  body { min-width: 1180px; }
  .topbar { grid-template-columns: 220px 1fr auto auto auto; }
  .layout-toolbar button { padding: 0 10px; }
  .right-rail { flex-basis: 360px; }
}
@media (max-width: 1280px) {
  body { min-width: 980px; }
  .column-resizer { display: none; }
  .dashboard-shell { display:grid; grid-template-columns: minmax(220px, 260px) minmax(0,1fr); grid-template-areas: "left center" "right right"; }
  .left-rail { grid-area:left; }
  .center-grid { grid-area:center; }
  .right-rail { grid-area:right; flex-basis:auto; }
}
@media (max-width: 1024px) {
  body { min-width: 0; }
  .topbar { grid-template-columns: 1fr; height: auto; gap: 10px; padding: 10px 12px; }
  .main-nav { flex-wrap: wrap; gap: 8px; }
  .top-time, .account-box, .layout-toolbar { justify-self: start; margin-left: 0; }
  .dashboard-shell { height: auto; display:flex; flex-direction: column; }
  .left-rail, .center-grid, .right-rail { flex-basis: auto; overflow: visible; }
}

.dashboard-widget {
  max-width: 100%;
  min-width: min(260px, 100%);
}
.dashboard-widget.width-custom {
  align-self: flex-start;
}
.widget-resize-x-handle {
  position:absolute; right: 0; top: 42px; bottom: 28px; width: 10px; z-index: 3; cursor: ew-resize;
  background: linear-gradient(90deg, transparent, rgba(127,191,255,.24));
  opacity: .45;
}
.widget-resize-x-handle:hover { opacity: 1; background: linear-gradient(90deg, transparent, rgba(127,191,255,.46)); }
.dashboard-widget.resizing-x { user-select:none; }
.dashboard-widget.resizing-x table,
.dashboard-widget.resizing-x svg { pointer-events:none; }
body.layout-resizing { cursor: col-resize; user-select: none; }
body.layout-resizing * { user-select: none !important; }
@media (max-width: 1024px) {
  .column-resizer { display: none; }
  .dashboard-widget.width-custom { width: 100% !important; }
}

.countdown-badge {
  display:inline-flex; align-items:center; gap:4px; height:22px; margin-left:10px; padding:0 8px;
  border-radius:12px; border:1px solid rgba(72,151,255,.24); background:rgba(12,58,111,.42);
  color:#8dbbea !important; font-size:12px !important;
}
.countdown-badge b { color:#41caff; font-weight:800; }
.loading-row { text-align:center; color:#7d93ad; height:58px; }
.greentag { background: rgba(47,211,130,.13); color:#40df8a; border:1px solid rgba(64,223,138,.22); }
.neutraltag { background: rgba(255,179,36,.13); color:#ffbe35; border:1px solid rgba(255,190,53,.22); }
.legend-inline .dyn-red::before { background:#ff473e; }
.legend-inline .dyn-orange::before { background:#ff9a00; }
.legend-inline .dyn-green::before { background:#27c97a; }
.legend-inline .dyn-lime::before { background:#96d83a; }
.legend-inline .dyn-blue::before { background:#4da0ff; }
.muted-inline { color:#778ca8; font-size:12px; }
.event-table tbody tr:first-child { box-shadow: inset 0 0 14px rgba(45,145,255,.06); }

.version-badge {
  position: fixed;
  left: 14px;
  bottom: 8px;
  z-index: 30;
  height: 24px;
  line-height: 24px;
  padding: 0 10px;
  border-radius: 6px;
  color: #7eaee9;
  font-size: 12px;
  background: rgba(4, 22, 45, .72);
  border: 1px solid rgba(55, 126, 210, .22);
  backdrop-filter: blur(6px);
  pointer-events: none;
}

.today-events {
  overflow-y: auto !important;
  overflow-x: hidden !important;
}
.today-events .panel-head {
  position: sticky;
  top: 0;
  z-index: 5;
  background: linear-gradient(180deg, rgba(10, 32, 58, .98), rgba(8, 26, 50, .96));
}
.today-events thead th {
  position: sticky;
  top: 53px;
  z-index: 4;
}
.today-events::-webkit-scrollbar { width: 8px; }
.today-events::-webkit-scrollbar-thumb { background: rgba(72,128,196,.34); border-radius: 999px; }
.event-summary-cell {
  max-width: 360px;
  line-height: 1.35;
}

/* v1.0.13: remove keyword group panel; monitor list uses remaining left rail space */
.dashboard-widget[data-widget="keyword-groups"] { display: none !important; }
.left-rail .monitor-status { min-height: 360px; }

/* v1.0.14 event table column layout */
.event-table th:nth-child(1), .event-table td:nth-child(1) { width:58px; color:#9aa8bb; }
.event-table th:nth-child(2), .event-table td:nth-child(2) { width:auto; color:#e6edf8; font-weight:600; }
.event-table th:nth-child(3), .event-table td:nth-child(3) { width:92px; }
.event-table th:nth-child(4), .event-table td:nth-child(4) { width:132px; }
.event-table th:nth-child(5), .event-table td:nth-child(5) { width:72px; }
.event-table th:nth-child(6), .event-table td:nth-child(6) { width:98px; }
.event-table th:nth-child(7), .event-table td:nth-child(7) { width:146px; }
.event-table th:nth-child(8), .event-table td:nth-child(8) { width:132px; }
.event-summary-cell { min-width: 380px; max-width: 520px; line-height:1.4; }

/* v1.0.15 news title link */
.news-link { color:#e6f2ff; text-decoration:none; font-weight:600; }
.news-link:hover { color:#58b8ff; text-decoration:underline; }
.event-summary-cell .news-link { display:inline; }

/* v1.0.16 dynamic event detail panels */
.empty-state {
  position: relative;
  z-index: 1;
  margin: 18px 16px;
  padding: 18px 16px;
  border-radius: 8px;
  border: 1px dashed rgba(91, 160, 240, .3);
  background: rgba(5, 24, 47, .46);
  color: #8fa9c9;
  font-size: 13px;
  line-height: 1.6;
}
.compact-empty { margin-top: 12px; }
.event-table tbody tr { cursor: pointer; }
.event-table tbody tr.selected-event {
  background: rgba(20, 92, 170, .28);
  box-shadow: inset 0 0 0 1px rgba(84, 166, 255, .28);
}
.detail-panel #detailContent { position: relative; z-index: 1; }
#detailTitle { word-break: break-word; }
.stock-table tbody tr td { height: 34px; }
.stock-table .green-text { color: #43db85 !important; }
.score-panel #scoreContent { position: relative; z-index: 1; }
.score-panel .empty-state { margin-top: 18px; }

.showapi-title-row { margin-top: 22px; padding-top: 18px; border-top: 1px solid rgba(78,140,210,.18); }
.showapi-grid { margin-top: 12px; }

/* v1.0.20 hit-flow scroll */
.hit-flow {
  overflow-y: auto !important;
  overflow-x: hidden !important;
}
.hit-flow .panel-head {
  position: sticky;
  top: 0;
  z-index: 5;
  background: linear-gradient(180deg, rgba(10, 32, 58, .98), rgba(8, 26, 50, .96));
}
.hit-flow thead th {
  position: sticky;
  top: 53px;
  z-index: 4;
}
.hit-flow::-webkit-scrollbar { width: 8px; }
.hit-flow::-webkit-scrollbar-thumb { background: rgba(72,128,196,.34); border-radius: 999px; }

/* v1.0.21 overview layout */
.event-overview .donut-wrap {
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 4px 14px 0;
  gap: 10px;
}
.event-overview .legend-list {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
.event-overview .legend-list li {
  width: 108px;
  display: grid;
  grid-template-columns: 14px 1fr 28px;
  align-items: center;
  margin: 0;
  justify-content: center;
  text-align: center;
}
.event-overview .legend-list span {
  text-align: center;
}
.event-overview .legend-list b {
  text-align: left;
}
.event-overview .compare {
  display: none !important;
}
.dashboard-widget[data-widget="event-overview"] { height: 235px; }
.config-field textarea {
  width: 100%;
  min-height: 96px;
  padding: 10px 12px;
  border: 1px solid rgba(71, 145, 236, .28);
  border-radius: 7px;
  background: rgba(2, 15, 32, .62);
  color: #e7f1ff;
  outline: none;
  resize: vertical;
  line-height: 1.45;
}
.checkbox-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 16px;
  padding: 12px;
  border: 1px solid rgba(71, 145, 236, .18);
  border-radius: 8px;
  background: rgba(3, 18, 38, .42);
}
.checkbox-row label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #d8e8ff;
  font-size: 13px;
}
.checkbox-row input { width: auto; height: auto; }


.source-status-bar {
  position: relative;
  z-index: 2;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 7px 12px 8px;
  border-bottom: 1px solid rgba(66,122,190,.14);
  background: rgba(5, 20, 38, .45);
}
.source-pill {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 0 8px;
  border-radius: 999px;
  font-size: 11px;
  color: #9fc4ed;
  background: rgba(25, 75, 130, .35);
  border: 1px solid rgba(83, 157, 255, .2);
  max-width: 420px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.source-pill.ok { color: #44e28a; border-color: rgba(68,226,138,.26); background: rgba(35,130,72,.16); }
.source-pill.warn { color: #ffbc45; border-color: rgba(255,188,69,.28); background: rgba(154,101,14,.16); }

/* v1.0.26: table scroll fix + compact free-source status */
.today-events,
.hit-flow {
  display: flex !important;
  flex-direction: column;
  overflow: hidden !important;
}
.today-events .panel-head,
.hit-flow .panel-head {
  flex: 0 0 auto;
  position: relative !important;
  top: auto !important;
  z-index: 8;
  background: #0a203a !important;
}
.source-status-bar {
  flex: 0 0 auto;
  min-height: 34px;
  max-height: 72px;
  overflow-y: auto;
  overflow-x: hidden;
  align-content: flex-start;
  background: #071c34 !important;
}
.source-status-bar::-webkit-scrollbar,
.realtime-table-scroll::-webkit-scrollbar { width: 8px; }
.source-status-bar::-webkit-scrollbar-thumb,
.realtime-table-scroll::-webkit-scrollbar-thumb { background: rgba(72,128,196,.34); border-radius: 999px; }
.realtime-table-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  position: relative;
  z-index: 1;
}
.today-events thead th,
.hit-flow thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 6 !important;
  background: #102843 !important;
  box-shadow: 0 1px 0 rgba(72,128,196,.22), 0 8px 12px rgba(1,7,16,.26);
}
.event-table-scroll table,
.hit-table-scroll table { table-layout: fixed; }
.event-table td,
.compact-table td {
  vertical-align: middle;
}
.event-summary-cell .news-link,
.hit-title-cell .news-link {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.35;
}
.hit-flow-table th:nth-child(1), .hit-flow-table td:nth-child(1) { width: 62px; }
.hit-flow-table th:nth-child(2), .hit-flow-table td:nth-child(2) { width: 84px; }
.hit-flow-table th:nth-child(3), .hit-flow-table td:nth-child(3) { width: auto; }
.hit-flow-table th:nth-child(4), .hit-flow-table td:nth-child(4) { width: 112px; }
.hit-flow-table th:nth-child(5), .hit-flow-table td:nth-child(5) { width: 66px; text-align: center; }
.hit-flow-table th:nth-child(6), .hit-flow-table td:nth-child(6) { width: 104px; }
.hit-flow-table td { height: 42px; }
.time-col { color:#aab9ca !important; white-space: nowrap; }
.keyword-badge,
.source-badge,
.industry-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 22px;
  max-width: 100%;
  padding: 0 8px;
  border-radius: 999px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 11px;
  border: 1px solid rgba(83,157,255,.18);
  background: rgba(17,59,105,.35);
  color: #bddcff;
}
.keyword-badge.hit { color:#51e491; background:rgba(36,122,70,.18); border-color:rgba(81,228,145,.22); }
.keyword-badge.miss { color:#8fa4bd; background:rgba(90,113,140,.12); border-color:rgba(130,157,190,.16); }
.source-badge { color:#7fc5ff; }
.industry-badge { color:#d6e6fa; }
.judge-cell .tag { height:22px; min-width:44px; padding:0 6px; font-size:12px; }
.source-pill {
  max-width: 300px;
  height: 24px;
  line-height: 24px;
  flex: 0 1 auto;
}
.source-pill.neutral {
  color: #9fc4ed;
  border-color: rgba(83,157,255,.22);
  background: rgba(25,75,130,.28);
}
.source-pill.source-summary { max-width: 240px; }


/* v1.0.34: monitor button overlap fix + dashboard panel role adjustment */
.monitor-status {
  display: flex !important;
  flex-direction: column;
  min-height: 0;
  overflow: hidden !important;
}
.monitor-status .panel-title {
  flex: 0 0 auto;
}
.monitor-status .status-list {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none !important;
  overflow-y: auto;
  padding: 0 10px 6px;
}
.monitor-status .ghost-btn {
  position: relative !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  flex: 0 0 36px;
  width: calc(100% - 32px);
  margin: 8px 16px 12px;
}
.status-list li {
  grid-template-columns: minmax(0, 1fr) 50px 38px;
  column-gap: 8px;
}
.status-list li > span:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.radar-mode-badge {
  display: inline-flex;
  align-items: center;
  height: 22px;
  padding: 0 8px;
  margin-left: 10px;
  border-radius: 999px;
  color: #54e29a !important;
  background: rgba(44, 151, 91, .16);
  border: 1px solid rgba(84, 226, 154, .24);
  font-size: 12px;
}
.event-table tr[data-event-index] .grade.b {
  color: #ffb517;
}
.event-table tr:not(.hot-row) mark {
  display: none;
}


/* v1.0.34: remove keyword trend panel from dashboard */
.dashboard-widget[data-widget="trend-panel"],
.trend-panel { display: none !important; }
.center-grid { padding-bottom: 12px; }

/* v1.0.34: overview statistics now follow today event table rows. */


/* v1.0.34: realtime overview keeps donut and legend centered after manual resize */
.dashboard-widget[data-widget="event-overview"],
.event-overview {
  display: flex !important;
  flex-direction: column !important;
}
.event-overview .panel-title {
  flex: 0 0 auto;
}
.event-overview .donut-wrap {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  width: 100% !important;
  box-sizing: border-box !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 14px 14px !important;
  gap: 12px !important;
}
.event-overview .donut {
  flex: 0 0 auto !important;
}
.event-overview .legend-list {
  flex: 0 0 auto !important;
}


/* v1.0.37: remove source status blank bar + remove detail headline block */
#sourceStatusBar { display: none !important; }
.detail-panel #detailTitle { display: none !important; }
.detail-panel .detail-grid { padding-top: 8px; }
