.market-grid {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 14px;
  margin-bottom: 34px;
}
.market-pulse { display: grid; grid-template-columns: repeat(3, minmax(180px, 1fr)); gap: 10px; margin: -20px 0 28px; }
.index-card { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 12px; background: var(--card); border: 1px solid var(--line); border-radius: 7px; padding: 12px 14px; }
.index-card span, .index-card small { display: block; }
.index-card span { font-size: 12px; }
.index-card small { color: var(--muted); font-size: 9px; margin-top: 3px; }
.index-card b { font: 18px Georgia; }
.index-card em { font-style: normal; font-size: 12px; font-weight: 700; }
.index-card .up { color: #b44840; }
.index-card .down { color: #27855a; }
.intraday-top { margin: 0; padding: 4px 0 0 20px; }
.intraday-top li { display: grid; grid-template-columns: minmax(120px, 170px) 1fr; gap: 8px 12px; align-items: center; padding: 7px 0; font-size: 11px; }
.intraday-top li > span { color: var(--muted); }
.overview-intraday-identity .security-code { font-size: 12px; }
.finance-table { min-width: 650px; }
#detailDialog { width: min(1120px, 94vw); padding: 0; overflow: auto; }
.detail-dialog-toolbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; justify-content: space-between; padding: 11px 16px; background: rgba(251,250,246,.97); border-bottom: 1px solid var(--line); backdrop-filter: blur(10px); }
.detail-dialog-toolbar span { color: var(--muted); font-size: 11px; letter-spacing: .5px; }
.detail-close { border: 1px solid #bbb9b0; border-radius: 999px; background: white; color: var(--ink); padding: 7px 12px; font-size: 12px; cursor: pointer; box-shadow: 0 4px 14px rgba(34,42,37,.08); }
.detail-close:hover { border-color: var(--green); color: var(--green); }
.detail-close:focus-visible { outline: 3px solid rgba(31,91,69,.24); outline-offset: 2px; border-color: var(--green); }
.detail-dialog-body { padding: 24px 28px 32px; }
.signal-overview { height: 290px; }
.section-head.compact { align-items: center; margin-bottom: 10px; }
.signal-explain { display: grid; gap: 10px; }
.signal-explain > div {
  display: flex;
  justify-content: space-between;
  gap: 15px;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
}
.signal-explain span { font-size: 12px; color: var(--muted); }
.signal-stack { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 5px; }
.signal-chip {
  display: inline-flex;
  align-items: center;
  min-height: 25px;
  padding: 4px 7px;
  border-radius: 6px;
  color: white;
}
.signal-chip b { font-size: 11px; line-height: 1; }
.signal-chip small { margin-left: 5px; padding-left: 5px; border-left: 1px solid rgba(255,255,255,.34); font-size: 9px; line-height: 1.1; font-weight: 650; white-space: nowrap; }
.signal-chip.a13 { background: #d35d55; }
.signal-chip.a15 { background: #9f302d; }
.signal-chip.a10 { background: #5d342a; }
.signal-chip.a2 { background: #d7953f; }
.signal-chip.a2-strong { background: #b96726; }
.signal-chip.b { background: #3f7fbd; }
.signal-chip.c { background: #805eb3; }
.signal-chip.c-watch { background: #8b7b9f; }
.signal-chip.d { background: #2f766f; }
.signal-chip.e1 { background: #65746d; }
.signal-chip.e2 { background: #2d6951; }
.signal-chip.e3 { background: #174d3a; }
.filter-panel {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 16px;
  margin-bottom: 14px;
  box-shadow: var(--shadow);
}
.limit-control { display: grid; gap: 9px; border: 1px solid #dedad1; border-radius: 7px; padding: 12px; background: #f8f7f2; margin-bottom: 14px; }
.limit-control small { display: block; color: var(--muted); font-size: 9px; margin-top: 4px; }
.limit-options { display: flex; flex-wrap: wrap; gap: 7px; }
.limit-toggle { cursor: pointer; }
.limit-toggle input { position: absolute; width: 1px; min-width: 0; height: 1px; margin: 0; opacity: 0; clip-path: inset(50%); pointer-events: none; }
.limit-toggle span, .limit-chip { display: inline-flex; align-items: center; border-radius: 999px; padding: 5px 9px; border: 1px solid var(--line); background: white; font-size: 10px; font-weight: 650; white-space: nowrap; }
.limit-toggle:has(input:checked) span { box-shadow: inset 0 0 0 1px currentColor; }
.limit-5, .limit-5 span { color: #8b3d34; background: #f7e6e2; border-color: #e8c6bd; }
.limit-10, .limit-10 span { color: #315943; background: #e7efe9; border-color: #c9dccf; }
.limit-20, .limit-20 span { color: #345f91; background: #e7eef7; border-color: #c8d8eb; }
.limit-30, .limit-30 span { color: #75548e; background: #eee8f3; border-color: #d9cce3; }
.limit-none, .limit-none span { color: #6f5a30; background: #f3eddd; border-color: #e3d7b8; }
.filter-block { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.filter-label { font-size: 11px; color: var(--muted); margin-right: 5px; }
.signal-toggle {
  display: flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line);
  padding: 7px 10px;
  border-radius: 6px;
  font-size: 11px;
  cursor: pointer;
}
.signal-toggle input { min-width: 0; width: auto; accent-color: var(--green); }
.signal-toggle.e1:has(input:checked), .signal-toggle.e2:has(input:checked), .signal-toggle.e3:has(input:checked) { border-color: #4f7462; background: #e8f0eb; }
.auto-filter-note { margin-right: auto; align-self: center; color: var(--muted); font-size: 10px; }
@media(max-width:850px){.detail-dialog-body{padding:18px 14px 26px}.detail-dialog-toolbar{padding:9px 12px}.signal-chip small{display:none}}
.compact-kpis { grid-template-columns: repeat(4, minmax(150px, 1fr)); margin-bottom: 14px; }
.market-filter-panel { margin-bottom: 14px; }
.market-filter-grid { grid-template-columns: repeat(7, minmax(120px, 1fr)); }
.market-signal-filter { margin: 14px 0 0; }
.all-stock-table-wrap table { min-width: 1320px; }
.market-state { display: inline-flex; padding: 5px 8px; border-radius: 999px; font-size: 10px; font-weight: 700; white-space: nowrap; }
.market-state.active-signal { background: #e6efe9; color: #285d43; border: 1px solid #c8dccf; }
.market-state.recent-signal { background: #f4ead7; color: #825f22; border: 1px solid #e5d2aa; }
.market-state.no-signal { background: #f0efeb; color: #77736c; border: 1px solid #dfddd6; }
.history-mini-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 4px; }
.history-mini-tags span { padding: 2px 5px; border-radius: 4px; background: #eeeae1; color: #605a4f; font-size: 9px; font-weight: 700; }
.price-up { color: #b44840; }
.price-down { color: #27855a; }
.analysis-date { display: block; color: var(--muted); margin-top: 4px; font-size: 9px; }
.status.not_required { background: #efeee9; color: #716d65; }
.signal-history-box { border-top: 3px solid #557caa; }
.timeline-list { display: grid; }
.timeline-event { display: grid; grid-template-columns: 105px 14px 1fr; gap: 8px; min-height: 60px; position: relative; }
.timeline-event time { color: var(--muted); font-size: 10px; padding-top: 2px; text-align: right; }
.timeline-event::after { content: ''; position: absolute; left: 118px; top: 15px; bottom: -3px; width: 1px; background: #ddd9cf; }
.timeline-event:last-child::after { display: none; }
.timeline-dot { width: 9px; height: 9px; margin-top: 4px; border-radius: 50%; background: #557caa; z-index: 1; box-shadow: 0 0 0 3px #edf1f6; }
.timeline-event.entered .timeline-dot { background: #27855a; box-shadow: 0 0 0 3px #e7f1eb; }
.timeline-event.exited .timeline-dot { background: #9a7a45; box-shadow: 0 0 0 3px #f4ecdf; }
.timeline-event.changed .timeline-dot { background: #b44840; box-shadow: 0 0 0 3px #f5e9e7; }
.timeline-event b { font-size: 11px; }
.timeline-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.timeline-tags span { display: inline-flex; padding: 3px 6px; border-radius: 4px; background: #e9edf2; color: #3d5873; font-size: 9px; font-weight: 700; }
.timeline-tags .empty-tag { background: #efeee9; color: #77736c; }
.timeline-tags i { font-style: normal; color: var(--muted); }
.signal-history-records { margin-top: 8px; }
.signal-history-records summary { cursor: pointer; color: var(--green); font-size: 11px; font-weight: 700; padding: 8px 0; }
.signal-history-records table { min-width: 700px; }
.risk-control { border: 1px solid var(--line); border-radius: 7px; padding: 12px; background: #fbfaf7; margin-bottom: 14px; }
.risk-control-head { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-bottom: 9px; }
.risk-control small { color: var(--muted); font-size: 9px; }
.risk-control .filter-label, .risk-control small { display: block; }
.risk-control .filter-label { margin-bottom: 4px; }
.risk-bulk-actions { display: flex; gap: 6px; flex: none; }
.risk-bulk-actions button { padding: 6px 9px; font-size: 10px; }
.risk-options { display: flex; flex-wrap: wrap; gap: 6px; }
.risk-toggle { display: flex; gap: 5px; align-items: center; padding: 5px 8px; border: 1px solid #e2d7cd; border-radius: 999px; background: white; font-size: 10px; cursor: pointer; }
.risk-toggle:has(input:checked) { border-color: #b96055; background: #f7e9e6; color: #7f352e; }
.risk-toggle input { width: auto; min-width: 0; accent-color: #a84f45; }
.risk-stack { display: flex; flex-wrap: wrap; gap: 4px; }
.risk-chip { display: inline-block; padding: 3px 6px; border-radius: 4px; background: #f3ded9; color: #8b3d34; border: 1px solid #e8c5bd; font-size: 9px; font-weight: 650; white-space: nowrap; }
.detail-risks { margin: -4px 0 8px; }
.candidate-breakdown { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 10px; }
.candidate-breakdown span { background: #eef2ef; border: 1px solid #dce5df; border-radius: 5px; padding: 7px 10px; color: var(--muted); font-size: 10px; }
.candidate-breakdown b { color: var(--ink); font-size: 13px; margin-right: 3px; }
.filter-grid { display: grid; grid-template-columns: repeat(6, minmax(120px, 1fr)); gap: 10px; }
.filter-grid label { display: grid; gap: 5px; color: var(--muted); font-size: 10px; }
.filter-grid input, .filter-grid select {
  width: 100%;
  min-width: 0;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: #fff;
}
.filter-actions { display: flex; gap: 8px; margin-top: 14px; }
.candidate-table-wrap table { min-width: 1250px; }
.pagination { display: flex; justify-content: center; align-items: center; gap: 14px; margin-top: 14px; }
.pagination button:disabled { opacity: .4; cursor: not-allowed; }
.empty-cell { text-align: center !important; padding: 34px !important; color: var(--muted); }
.status.queued { background: #f3ead7; color: #855f1e; }
.detail-signals { margin-bottom: 9px; }
.signal-proof { margin: 0 0 16px; }
.signal-facts { grid-template-columns: repeat(4, 1fr); }
.market-now { display: flex; gap: 10px; margin-top: 10px; }
.market-now span { flex: 1; padding: 10px; background: #eef2ef; border-radius: 5px; }
.market-now small, .market-now b { display: block; }
.market-now small { font-size: 10px; color: var(--muted); margin-bottom: 4px; }
.market-core { margin-bottom: 14px; border-top: 3px solid var(--green); }
.market-facts { grid-template-columns: repeat(4, 1fr); }
.market-fact b { font-size: 14px; }
.chart-title { color: var(--muted); font-size: 10px; letter-spacing: 1px; margin-bottom: 7px; }
.volume-chart-box { height: 285px; margin-top: 18px; }
.volume-chart-box canvas { max-height: 220px; }
.codex-box { max-height: 360px; overflow: auto; }
.decision-boundary { display:flex; gap:12px; align-items:center; padding:12px 14px; margin-bottom:14px; border:1px solid #dfcda7; border-left:4px solid #a9782b; border-radius:7px; background:#faf4e7; color:#67512d; }
.decision-boundary b { white-space:nowrap; font-size:12px; }
.decision-boundary span { font-size:10px; line-height:1.6; }
.terminal-schedule-box { margin-bottom:14px; }
.schedule-strip { display:flex; gap:6px; overflow-x:auto; padding:3px 0 8px; }
.schedule-slot { display:grid; min-width:58px; gap:2px; padding:7px 8px; border-radius:6px; border:1px solid var(--line); background:#f4f2ed; text-align:center; font-size:10px; }
.schedule-slot small { font-size:8px; color:var(--muted); }
.schedule-slot.completed { color:#266848; background:#e8f1eb; border-color:#c6ddce; }
.schedule-slot.running { color:#315f8a; background:#e8eef5; border-color:#c7d7e7; }
.schedule-slot.failed,.schedule-slot.missed { color:#913f37; background:#f7e8e5; border-color:#e8c6c0; }
.schedule-slot.upcoming { color:#7a632f; background:#f7f0df; border-color:#e5d6b1; }
.terminal-filter,.history-filter { display:flex; align-items:end; gap:10px; }
.terminal-filter label,.history-filter label { display:grid; gap:5px; min-width:180px; color:var(--muted); font-size:10px; }
.terminal-filter select,.history-filter input { padding:8px; border:1px solid var(--line); border-radius:5px; background:white; }
.terminal-table-wrap table { min-width:1250px; }
.warning-stack { display:flex; flex-wrap:wrap; gap:4px; }
.warning-chip { display:inline-flex; padding:4px 7px; border-radius:999px; background:#eceae4; color:#645f57; font-size:9px; font-weight:700; white-space:nowrap; }
.warning-chip.auction { background:#e8edf5; color:#3b5d84; }.warning-chip.accelerating { background:#f3ead7; color:#855f1e; }.warning-chip.strong { background:#f3ddd8; color:#913f37; }.warning-chip.formal { background:#dfede4; color:#226342; }
.daily-checklist { display:grid; grid-template-columns:repeat(5,minmax(150px,1fr)); gap:9px; margin-bottom:18px; }
.check-item { display:grid; grid-template-columns:10px 1fr; gap:8px; padding:12px; border:1px solid var(--line); border-radius:7px; background:var(--card); }
.check-item i { width:9px; height:9px; border-radius:50%; background:#aaa59b; margin-top:3px; }.check-item.completed i { background:#2c8259; }.check-item.running i,.check-item.partial i { background:#d08b35; }.check-item.failed i,.check-item.missed i { background:#b44840; }
.check-item b,.check-item span,.check-item strong { display:block; }.check-item b { font-size:11px; }.check-item span { color:var(--muted); font-size:9px; line-height:1.5; margin-top:4px; }.check-item strong { grid-column:2; font-size:9px; color:var(--muted); }
.analysis-tier { display:flex; justify-content:space-between; gap:10px; padding:9px 10px; margin-bottom:12px; border-radius:6px; background:#edf2ef; color:#315f48; }.analysis-tier span { font-size:9px; color:var(--muted); }
.analysis-columns { display:grid; grid-template-columns:1fr 1fr; gap:8px 18px; }.analysis-columns section { border-top:1px solid var(--line); }.analysis-columns h4 { margin-bottom:5px; }
.evidence-list li { margin-bottom:10px; }.evidence-list b,.evidence-list span { display:block; }.evidence-list span { color:var(--muted); font-size:9px; margin-top:3px; }.evidence-list a { color:var(--green); }
.scenario-details { cursor:default; }.scenario-details summary { cursor:pointer; font-weight:700; padding:4px 0; }.scenario-details[open] summary { margin-bottom:14px; }
.history-filter { margin-bottom:14px; }.history-tag { display:inline-flex!important; padding:3px 6px!important; }
.rules-panel { margin-top:16px; padding:14px; border:1px solid var(--line); border-radius:7px; background:var(--card); }.rules-panel summary { cursor:pointer; font-weight:700; }

@media (max-width: 1200px) {
  .filter-grid { grid-template-columns: repeat(3, 1fr); }
  .market-filter-grid { grid-template-columns: repeat(4, 1fr); }
  .daily-checklist { grid-template-columns:repeat(3,1fr); }
}
@media (max-width: 850px) {
  .market-grid { grid-template-columns: 1fr; }
  .market-pulse { grid-template-columns: 1fr; }
  .filter-grid { grid-template-columns: repeat(2, 1fr); }
  .signal-facts { grid-template-columns: repeat(2, 1fr); }
  .market-facts { grid-template-columns: repeat(3, 1fr); }
  .risk-control-head { align-items: flex-start; }
  .compact-kpis { grid-template-columns: repeat(2, 1fr); }
  .market-filter-grid { grid-template-columns: repeat(2, 1fr); }
  .timeline-event { grid-template-columns: 80px 14px 1fr; }
  .timeline-event::after { left: 93px; }
  .daily-checklist { grid-template-columns:repeat(2,1fr); }
  .analysis-columns { grid-template-columns:1fr; }
}
@media (max-width: 480px) {
  .filter-grid { grid-template-columns: 1fr; }
  .market-now { display: grid; }
  .market-facts { grid-template-columns: repeat(2, 1fr); }
  .signal-overview { height: 250px; }
  .market-filter-grid, .compact-kpis { grid-template-columns: 1fr; }
  .daily-checklist { grid-template-columns:1fr; }
  .terminal-filter,.history-filter,.decision-boundary { align-items:stretch; flex-direction:column; }
}
