/* Dashboard — Intelligence Command Center */

#page-dashboard {
  padding: 10px 12px;
  background: var(--tv-bg);
  min-height: calc(100vh - var(--header-height));
}

/* ── Header ── */
.dc-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}

.dc-header-left {
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.dc-title {
  font-size: var(--t-lg);
  font-weight: 800;
  color: var(--tv-text-primary);
  letter-spacing: -0.02em;
}

.dc-date {
  font-size: var(--t-xs);
  color: var(--tv-text-tertiary);
}

.dc-header-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.dc-status {
  font-size: var(--t-2xs);
  color: var(--tv-text-tertiary);
  display: flex;
  align-items: center;
  gap: 4px;
}

.dc-status-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--tv-green);
}

.dc-btn {
  background: var(--tv-bg);
  border: 1px solid var(--tv-border);
  color: var(--tv-text-secondary);
  font-size: var(--t-2xs);
  padding: 5px 10px;
  border-radius: 4px;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.12s;
}

.dc-btn:hover {
  background: var(--tv-bg-secondary);
  color: var(--tv-text-primary);
  border-color: var(--tv-text-tertiary);
}

.dc-btn-sm {
  padding: 3px 8px;
  font-size: var(--t-3xs);
}

/* ── Loading ── */
.dc-spinner {
  display: inline-block;
  width: 10px;
  height: 10px;
  border: 2px solid var(--tv-border);
  border-top-color: var(--tv-accent);
  border-radius: 50%;
  animation: dc-spin 0.6s linear infinite;
}

@keyframes dc-spin { to { transform: rotate(360deg); } }

.dc-skeleton {
  height: 60px;
  background: var(--tv-bg-tertiary);
  border-radius: 6px;
  animation: dc-pulse 1.5s ease-in-out infinite;
}

.dc-skeleton-card {
  height: 100px;
  background: var(--tv-bg-tertiary);
  border-radius: 6px;
  animation: dc-pulse 1.5s ease-in-out infinite;
}

@keyframes dc-pulse {
  0%, 100% { opacity: 0.3; }
  50% { opacity: 0.6; }
}

/* ══════════════════════════
   BRIEFING
   ══════════════════════════ */

.dc-briefing-wrap {
  margin-bottom: 10px;
  max-width: 860px;
}

.dc-briefing-loading {
  padding: 16px;
  text-align: center;
  color: var(--tv-text-tertiary);
  font-size: var(--t-xs);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.dc-briefing-empty {
  padding: 20px;
  text-align: center;
  color: var(--tv-text-tertiary);
  font-size: var(--t-xs);
  border: 1px dashed var(--tv-border);
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
}

.dc-briefing {
  border: 1px solid var(--tv-border);
  border-radius: 8px;
  background: var(--tv-bg);
  overflow: hidden;
}

.dc-briefing-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  cursor: pointer;
  background: linear-gradient(135deg, rgba(41, 98, 255, 0.04), rgba(41, 98, 255, 0.01));
  border-bottom: 1px solid var(--tv-border-light);
  transition: background 0.15s;
}

.dc-briefing-header:hover {
  background: linear-gradient(135deg, rgba(41, 98, 255, 0.06), rgba(41, 98, 255, 0.02));
}

.dc-briefing-headline {
  font-size: var(--t-sm);
  font-weight: 700;
  color: var(--tv-text-primary);
  line-height: 1.4;
  flex: 1;
  padding-right: 16px;
}

.dc-briefing-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.dc-briefing-time {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
}

.dc-briefing-toggle {
  color: var(--tv-text-tertiary);
  font-size: 10px;
  transition: transform 0.2s;
}

.dc-briefing-body {
  padding: 16px 24px;
  transition: max-height 0.3s ease, opacity 0.3s ease, padding 0.3s ease;
  max-height: 2000px;
  opacity: 1;
}

.dc-briefing-body.dc-collapsed {
  max-height: 0;
  opacity: 0;
  padding: 0 24px;
  overflow: hidden;
}

.dc-briefing-snapshot {
  font-size: var(--t-xs);
  color: var(--tv-text-secondary);
  line-height: 1.7;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--tv-border-light);
}

.dc-briefing-sectors {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.dc-sector-tag {
  font-size: var(--t-3xs);
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 3px;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}

.dc-sector-hot { background: var(--tv-green-bg); color: var(--tv-green); }
.dc-sector-cold { background: var(--tv-red-bg); color: var(--tv-red); }
.dc-sector-rotate { background: rgba(41, 98, 255, 0.08); color: var(--tv-accent); }

.dc-briefing-section {
  margin-bottom: 16px;
}

.dc-briefing-section-title {
  font-size: var(--t-3xs);
  font-weight: 800;
  color: var(--tv-text-tertiary);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--tv-border-light);
}

.dc-title-red { color: var(--tv-red); }

.dc-dev-item {
  padding: 8px 0;
  border-bottom: 1px solid var(--tv-border-light);
}

.dc-dev-item:last-child { border-bottom: none; }

.dc-dev-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 2px;
}

.dc-dev-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}

.dc-dev-title {
  font-size: var(--t-2xs);
  font-weight: 600;
  color: var(--tv-text-primary);
  flex: 1;
}

.dc-dev-imp {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  font-variant-numeric: tabular-nums;
}

.dc-dev-detail {
  font-size: var(--t-3xs);
  color: var(--tv-text-secondary);
  line-height: 1.55;
  margin-left: 12px;
}

.dc-opp-item {
  padding: 8px 0;
  border-bottom: 1px solid var(--tv-border-light);
}

.dc-opp-item:last-child { border-bottom: none; }

.dc-opp-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 3px;
}

.dc-risk-item {
  padding: 5px 0 5px 8px;
  border-left: 2px solid var(--tv-red-bg);
  margin-bottom: 4px;
}

.dc-risk-text {
  font-size: var(--t-3xs);
  color: var(--tv-text-secondary);
  line-height: 1.4;
}

.dc-risk-hedge {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  font-style: italic;
  margin-top: 2px;
}

.dc-action-items {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.dc-action-item {
  font-size: var(--t-3xs);
  color: var(--tv-text-secondary);
  display: flex;
  align-items: flex-start;
  gap: 6px;
  line-height: 1.4;
}

.dc-action-item i {
  color: var(--tv-green);
  font-size: 9px;
  margin-top: 2px;
  flex-shrink: 0;
}

.dc-briefing-contrarian {
  margin-top: 8px;
  padding: 8px 10px;
  background: rgba(124, 77, 255, 0.05);
  border: 1px solid rgba(124, 77, 255, 0.15);
  border-radius: 4px;
  font-size: var(--t-3xs);
  color: var(--tv-text-secondary);
  line-height: 1.4;
}

.dc-briefing-contrarian i {
  color: var(--tv-purple);
  margin-right: 2px;
}

.dc-catalyst-text {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  font-style: italic;
  margin-left: 12px;
}

/* ══════════════════════════
   TOOLBAR (filters + sort)
   ══════════════════════════ */

.dc-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.dc-filters {
  display: flex;
  gap: 2px;
  align-items: center;
  overflow-x: auto;
  padding-bottom: 2px;
  scrollbar-width: none;
  flex: 1;
  min-width: 0;
}

.dc-filters::-webkit-scrollbar { display: none; }

.dc-sort {
  flex-shrink: 0;
}

.dc-sort-select {
  background: var(--tv-bg-secondary);
  border: 1px solid var(--tv-border);
  color: var(--tv-text-secondary);
  font-size: var(--t-3xs);
  font-family: inherit;
  padding: 4px 6px;
  border-radius: 4px;
  cursor: pointer;
}

.dc-sort-select:hover { border-color: var(--tv-text-tertiary); }

.dc-filter {
  background: none;
  border: 1px solid transparent;
  color: var(--tv-text-tertiary);
  font-size: var(--t-3xs);
  font-weight: 600;
  padding: 4px 8px;
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: inherit;
  transition: all 0.12s;
}

.dc-filter:hover {
  color: var(--tv-text-secondary);
  background: var(--tv-bg-secondary);
}

.dc-filter-active {
  color: var(--tv-text-primary);
  background: var(--tv-bg-secondary);
  border-color: var(--tv-border);
}

.dc-filter i { font-size: 9px; }

.dc-filter-badge {
  font-size: 9px;
  font-weight: 700;
  color: var(--tv-text-tertiary);
  background: var(--tv-bg-tertiary);
  padding: 0 4px;
  border-radius: 6px;
  min-width: 14px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.dc-filter-tag {
  color: var(--tag-color, var(--tv-text-tertiary));
}

.dc-filter-tag.dc-filter-active {
  background: var(--tag-bg, var(--tv-bg-secondary));
  color: var(--tag-color, var(--tv-text-primary));
  border-color: var(--tag-color, var(--tv-border));
}

.dc-filter-sep {
  width: 1px;
  height: 14px;
  background: var(--tv-border);
  margin: 0 4px;
  flex-shrink: 0;
}

/* ══════════════════════════
   CARD GRID
   ══════════════════════════ */

.dc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 8px;
  align-items: start;
}

.dc-loading-cards {
  display: contents;
}

.dc-empty-state {
  grid-column: 1 / -1;
  padding: 40px 20px;
  text-align: center;
  color: var(--tv-text-tertiary);
  font-size: var(--t-xs);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}

.dc-empty-state i { font-size: 24px; }

/* ══════════════════════════
   CARD
   ══════════════════════════ */

.dc-card {
  background: var(--tv-bg);
  border: 1px solid var(--tv-border);
  border-radius: 6px;
  overflow: hidden;
  transition: border-color 0.15s, box-shadow 0.15s;
}

.dc-card:hover {
  border-color: var(--tv-text-tertiary);
}

.dc-card-starred {
  border-color: rgba(255, 193, 7, 0.35);
  box-shadow: 0 0 0 1px rgba(255, 193, 7, 0.1);
}

.dc-card-starred:hover {
  border-color: rgba(255, 193, 7, 0.5);
}

.dc-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 5px 10px;
  background: var(--tv-bg-secondary);
  border-bottom: 1px solid var(--tv-border-light);
}

.dc-card-type {
  font-size: var(--t-3xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.dc-card-type i { font-size: 9px; }

.dc-card-tags {
  display: flex;
  gap: 2px;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  margin: 0 4px;
}

.dc-tag {
  font-size: 8px;
  font-weight: 700;
  padding: 1px 5px;
  border-radius: 3px;
  white-space: nowrap;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  line-height: 1.4;
}

.dc-card-score {
  font-size: var(--t-3xs);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  min-width: 18px;
  text-align: center;
  flex-shrink: 0;
}

.dc-card-actions {
  display: flex;
  gap: 2px;
  opacity: 0;
  transition: opacity 0.15s;
}

.dc-card:hover .dc-card-actions { opacity: 1; }

.dc-action {
  background: none;
  border: none;
  color: var(--tv-text-tertiary);
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 3px;
  font-size: 10px;
  transition: all 0.1s;
}

.dc-action:hover {
  color: var(--tv-text-primary);
  background: var(--tv-bg-tertiary);
}

.dc-action-star.dc-action-active {
  color: #ffc107;
}

.dc-action-hide.dc-action-active {
  color: var(--tv-red);
}

.dc-card-main {
  padding: 8px 10px;
}

/* ══════════════════════════
   SHARED CARD ELEMENTS
   ══════════════════════════ */

.dc-ticker {
  font-weight: 700;
  color: var(--tv-accent);
  cursor: pointer;
  font-size: var(--t-2xs);
}

.dc-ticker:hover { text-decoration: underline; }

.dc-row {
  display: flex;
  align-items: center;
  gap: 6px;
}

.dc-row-between { justify-content: space-between; }

.dc-row-meta {
  flex-wrap: wrap;
  margin-top: 3px;
}

.dc-row-levels {
  margin-top: 6px;
  gap: 14px;
  flex-wrap: wrap;
}

.dc-dir {
  font-size: var(--t-3xs);
  font-weight: 800;
  text-transform: uppercase;
}

.dc-meta {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  font-variant-numeric: tabular-nums;
}

.dc-pnl {
  font-size: var(--t-sm);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.dc-score-lg {
  font-size: var(--t-sm);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.dc-conviction {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  font-weight: 600;
  text-transform: uppercase;
}

.dc-signal-tag {
  font-size: var(--t-3xs);
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 3px;
  white-space: nowrap;
}

.dc-detail {
  font-size: var(--t-3xs);
  color: var(--tv-text-secondary);
  line-height: 1.45;
  margin-top: 3px;
}

.dc-level {
  font-size: var(--t-3xs);
  color: var(--tv-text-secondary);
  font-variant-numeric: tabular-nums;
}

.dc-level-label {
  color: var(--tv-text-tertiary);
  margin-right: 2px;
}

.dc-time {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  margin-left: auto;
}

.dc-date {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  white-space: nowrap;
}

.dc-chips {
  display: flex;
  gap: 3px;
  margin-top: 4px;
  flex-wrap: wrap;
}

.dc-chip {
  font-size: var(--t-3xs);
  color: var(--tv-accent);
  font-weight: 600;
  background: rgba(41, 98, 255, 0.08);
  padding: 0 4px;
  border-radius: 2px;
  cursor: pointer;
}

.dc-chip:hover { background: rgba(41, 98, 255, 0.16); }

.dc-flags {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
  margin-top: 4px;
}

.dc-flag {
  font-size: var(--t-3xs);
  padding: 1px 6px;
  border-radius: 3px;
  line-height: 1.4;
}

.dc-flag-green { color: var(--tv-green); background: var(--tv-green-bg); }
.dc-flag-red { color: var(--tv-red); background: var(--tv-red-bg); }

.dc-theme-name {
  font-size: var(--t-2xs);
  color: var(--tv-text-primary);
  font-weight: 600;
}

.dc-risk-bar {
  padding-left: 8px;
}

.dc-catalyst-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  margin-top: 4px;
}

.dc-feed-dir {
  font-size: var(--t-3xs);
  font-weight: 700;
}

.dc-contrarian {
  font-size: var(--t-3xs);
  font-weight: 800;
  color: var(--tv-purple);
  background: rgba(124, 77, 255, 0.1);
  padding: 0 4px;
  border-radius: 2px;
}

.dc-implication {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  margin-top: 2px;
  font-style: italic;
  line-height: 1.35;
}

.dc-memory-name {
  font-size: var(--t-2xs);
  color: var(--tv-text-primary);
  font-weight: 500;
}

.dc-memory-score {
  font-size: var(--t-3xs);
  color: var(--tv-text-tertiary);
  font-variant-numeric: tabular-nums;
}

.dc-memory-cat {
  font-size: var(--t-3xs);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}

.dc-note-tags {
  font-size: var(--t-3xs);
  color: var(--tv-purple);
  font-weight: 600;
  margin-top: 3px;
}

/* ══════════════════════════
   RESPONSIVE
   ══════════════════════════ */

@media (max-width: 768px) {
  #page-dashboard { padding: 8px; }
  .dc-grid { grid-template-columns: 1fr; }
  .dc-briefing-headline { font-size: var(--t-xs); }
  .dc-card-actions { opacity: 1; }
}

@media (max-width: 480px) {
  .dc-filters { gap: 1px; }
  .dc-filter { padding: 3px 6px; }
}
