/* ============================================================
   CyberSOC Command Center — Dark SOC Theme
   ============================================================ */

:root {
  --bg-primary:    #0a0e17;
  --bg-secondary:  #111827;
  --bg-card:       #1a1f2e;
  --border:        #2a3040;
  --border-hover:  #3d4a60;

  --accent-blue:   #3b82f6;
  --accent-cyan:   #06b6d4;
  --accent-green:  #10b981;
  --accent-red:    #ef4444;
  --accent-amber:  #f59e0b;
  --accent-orange: #f97316;
  --accent-purple: #8b5cf6;

  --text-primary:   #f1f5f9;
  --text-secondary: #94a3b8;
  --text-muted:     #4b5563;

  --glow-red:    0 0 20px rgba(239,68,68,0.45);
  --glow-blue:   0 0 20px rgba(59,130,246,0.45);
  --glow-green:  0 0 15px rgba(16,185,129,0.35);
  --glow-amber:  0 0 15px rgba(245,158,11,0.35);
  --glow-purple: 0 0 15px rgba(139,92,246,0.35);
  --glow-cyan:   0 0 15px rgba(6,182,212,0.35);

  --header-h: 60px;
  --gap:       7px;
  --r:         10px;
  --r-sm:       5px;
}

/* ============================================================ Reset */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; overflow: hidden; font-family: 'Inter', sans-serif;
  background: var(--bg-primary); color: var(--text-primary); font-size: 13px; line-height: 1.5; }

.mono { font-family: 'JetBrains Mono', monospace; }

/* ============================================================ Header */
.header {
  position: fixed; top: 0; left: 0; right: 0;
  height: var(--header-h); z-index: 100;
  background: var(--bg-primary);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 16px; gap: 12px;
  backdrop-filter: blur(4px);
}

.header-left { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

.shield-icon { font-size: 22px; filter: drop-shadow(0 0 8px rgba(59,130,246,0.7)); }

.header-title { font-size: 15px; font-weight: 700; letter-spacing: 0.04em; white-space: nowrap; }

/* Phase Indicator */
.header-center { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; }

.phase-indicator { display: flex; align-items: center; }

.phase-dot { display: flex; flex-direction: column; align-items: center; gap: 3px; }

.phase-dot-circle {
  width: 11px; height: 11px; border-radius: 50%;
  background: var(--text-muted); border: 2px solid var(--border);
  transition: all 0.4s ease;
}

.phase-dot.active .phase-dot-circle  { background: var(--accent-blue); border-color: var(--accent-blue); box-shadow: var(--glow-blue); animation: phasePulse 1.6s ease infinite; }
.phase-dot.completed .phase-dot-circle { background: var(--accent-green); border-color: var(--accent-green); box-shadow: var(--glow-green); }

.phase-dot[data-phase="triage"].active     .phase-dot-circle { background: var(--accent-amber); border-color: var(--accent-amber); box-shadow: var(--glow-amber); }
.phase-dot[data-phase="remediation"].active .phase-dot-circle { background: var(--accent-orange); border-color: var(--accent-orange); }
.phase-dot[data-phase="report"].active     .phase-dot-circle { background: var(--accent-green);  border-color: var(--accent-green);  box-shadow: var(--glow-green); }

@keyframes phasePulse { 0%,100%{box-shadow:0 0 6px rgba(59,130,246,.4)} 50%{box-shadow:0 0 18px rgba(59,130,246,.9)} }

.phase-label { font-size: 8px; font-weight: 600; letter-spacing: .08em; color: var(--text-muted); transition: color .3s; white-space: nowrap; }
.phase-dot.active    .phase-label { color: var(--accent-blue); }
.phase-dot.completed .phase-label { color: var(--accent-green); }
.phase-dot[data-phase="triage"].active    .phase-label { color: var(--accent-amber); }
.phase-dot[data-phase="remediation"].active .phase-label { color: var(--accent-orange); }

.phase-connector { width: 36px; height: 1px; background: var(--border); margin: 0 4px 12px; transition: background .4s; }
.phase-connector.completed { background: var(--accent-green); }

.red-team-alert {
  font-size: 10px; font-weight: 700; letter-spacing: .1em;
  color: var(--accent-red); padding: 2px 8px;
  border: 1px solid var(--accent-red); border-radius: 4px;
  animation: blink 0.7s ease infinite;
}
@keyframes blink { 0%,100%{opacity:1} 50%{opacity:.25} }

/* Header right */
.header-right { display: flex; align-items: center; gap: 14px; flex-shrink: 0; }

.header-stat { display: flex; flex-direction: column; align-items: center; }
.header-stat-label { font-size: 8px; font-weight: 600; letter-spacing: .1em; color: var(--text-muted); }
.header-stat-value { font-size: 12px; font-weight: 700; }
.header-stat-value.mono { font-family: 'JetBrains Mono', monospace; font-size: 10px; }

.difficulty-badge {
  padding: 3px 9px; border-radius: 4px; font-size: 9px; font-weight: 700; letter-spacing: .1em;
  background: rgba(59,130,246,.15); color: var(--accent-blue); border: 1px solid rgba(59,130,246,.4);
}
.difficulty-badge.easy   { background:rgba(16,185,129,.15); color:var(--accent-green); border-color:rgba(16,185,129,.4); }
.difficulty-badge.medium { background:rgba(245,158,11,.15); color:var(--accent-amber); border-color:rgba(245,158,11,.4); }
.difficulty-badge.hard   { background:rgba(239,68,68,.15);  color:var(--accent-red);   border-color:rgba(239,68,68,.4); }

/* ============================================================ Grid */
.main-grid {
  position: fixed; top: var(--header-h); left: 0; right: 0; bottom: 0;
  display: grid;
  grid-template-columns: 272px 1fr 256px;
  grid-template-rows: 56% 44%;
  gap: var(--gap); padding: var(--gap);
}

/* ============================================================ Panel */
.panel {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  box-shadow: 0 4px 24px rgba(0,0,0,.35);
  display: flex; flex-direction: column; overflow: hidden;
  transition: border-color .25s;
}
.panel:hover { border-color: var(--border-hover); }

.panel-header {
  padding: 8px 12px; border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between; flex-shrink: 0;
  min-height: 36px;
}
.panel-title { font-size: 11px; font-weight: 600; letter-spacing: .05em; }
.panel-body   { flex: 1; overflow: hidden; position: relative; }

.panel-1 { grid-column:1; grid-row:1; }
.panel-2 { grid-column:2; grid-row:1; }
.panel-3 { grid-column:3; grid-row:1; }
.panel-4 { grid-column:1; grid-row:2; }
.panel-5 { grid-column:2; grid-row:2; }
.panel-6 { grid-column:3; grid-row:2; display:flex; flex-direction:column; }

/* ============================================================ Badges */
.badge {
  display:inline-flex; align-items:center; justify-content:center;
  min-width:18px; height:18px; padding:0 5px; border-radius:9px;
  font-size:10px; font-weight:700; font-family:'JetBrains Mono',monospace;
  background:rgba(239,68,68,.2); color:var(--accent-red); border:1px solid rgba(239,68,68,.4);
}

.reward-badge { font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; color:var(--accent-green); }
.reward-badge.negative { color:var(--accent-red); }

/* Panel 2 graph summary subtitle */
.graph-summary {
  width:100%; font-size:9px; font-family:'JetBrains Mono',monospace;
  color:var(--text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  padding-top:1px;
}

/* Panel 2 legend */
.graph-legend { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.legend-item  { display:flex; align-items:center; gap:3px; font-size:9px; color:var(--text-secondary); }
.legend-dot   { width:7px; height:7px; border-radius:50%; }
.legend-dot.host       { background:var(--accent-blue); }
.legend-dot.process    { background:var(--accent-amber); border-radius:1px; transform:rotate(45deg); }
.legend-dot.ioc        { background:var(--accent-red); }
.legend-dot.alert-node { background:var(--accent-orange); }
.legend-dot.vuln       { background:var(--accent-green); border-radius:1px; }

/* ============================================================ Alert List (Panel 1) */
.alert-list {
  height:100%; overflow-y:auto; padding:7px;
  display:flex; flex-direction:column; gap:5px;
  scrollbar-width:thin; scrollbar-color:var(--border) transparent;
}

.alert-card {
  background:var(--bg-secondary); border:1px solid var(--border);
  border-radius:var(--r-sm); padding:7px 9px; cursor:pointer;
  transition:border-color .2s, box-shadow .2s;
  animation:slideInRight .3s ease forwards;
}
.alert-card:hover { border-color:var(--accent-blue); }

.alert-card.pivot { border-color:var(--accent-red) !important; animation:pivotPulse 1s ease 4; }
@keyframes pivotPulse { 0%,100%{box-shadow:none} 50%{box-shadow:var(--glow-red)} }

.alert-card-header { display:flex; align-items:center; justify-content:space-between; gap:5px; margin-bottom:3px; }

.severity-badge { padding:1px 5px; border-radius:3px; font-size:8px; font-weight:700; letter-spacing:.07em; flex-shrink:0; }
.severity-low      { background:rgba(16,185,129,.2);  color:var(--accent-green);  }
.severity-medium   { background:rgba(245,158,11,.2);  color:var(--accent-amber);  }
.severity-high     { background:rgba(249,115,22,.2);  color:var(--accent-orange); }
.severity-critical { background:rgba(239,68,68,.2);   color:var(--accent-red);    border:1px solid rgba(239,68,68,.4); }

.alert-host        { font-family:'JetBrains Mono',monospace; font-size:10px; color:var(--accent-cyan); }
.alert-description { font-size:10px; color:var(--text-secondary); line-height:1.4; margin-bottom:3px; }
.alert-iocs        { font-family:'JetBrains Mono',monospace; font-size:9px; color:var(--text-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.alert-footer      { display:flex; align-items:center; gap:5px; margin-top:3px; }

.pivot-badge {
  display:inline-flex; align-items:center; gap:2px; padding:1px 5px;
  border-radius:3px; font-size:8px; font-weight:700;
  background:rgba(239,68,68,.2); color:var(--accent-red); border:1px solid rgba(239,68,68,.5);
  animation:blink .7s ease infinite;
}
.correlated-badge {
  display:inline-flex; align-items:center; gap:2px; padding:1px 5px;
  border-radius:3px; font-size:8px; font-weight:700;
  background:rgba(139,92,246,.2); color:var(--accent-purple); border:1px solid rgba(139,92,246,.4);
}

/* ============================================================ Threat Graph (Panel 2) */
.graph-body {
  padding:0; background:radial-gradient(ellipse at center, #0d1422 0%, var(--bg-card) 100%);
}
#threat-graph-svg { width:100%; height:100%; }

.graph-tooltip {
  position:absolute; background:var(--bg-secondary); border:1px solid var(--border);
  border-radius:var(--r-sm); padding:7px 9px; font-size:10px;
  pointer-events:none; z-index:10; max-width:190px;
  box-shadow:0 4px 16px rgba(0,0,0,.5); transition:opacity .15s;
}
.graph-tooltip.hidden { opacity:0; pointer-events:none; }
.graph-tooltip-title { font-weight:600; font-family:'JetBrains Mono',monospace; margin-bottom:4px; color:var(--accent-cyan); font-size:11px; }
.graph-tooltip-row   { display:flex; justify-content:space-between; gap:8px; margin-bottom:1px; }
.graph-tooltip-key   { color:var(--text-muted); }
.graph-tooltip-value { color:var(--text-primary); font-family:'JetBrains Mono',monospace; }

/* D3 SVG styles */
.graph-link { fill:none; stroke-width:1.5; }
.graph-link.runs_on           { stroke:rgba(59,130,246,.5); }
.graph-link.involves          { stroke:rgba(148,163,184,.35); stroke-dasharray:4,4; }
.graph-link.communicates_with { stroke:rgba(245,158,11,.5); stroke-dasharray:6,3; }
.graph-link.exploits          { stroke:rgba(239,68,68,.6); }
.graph-link.pivoted_from      { stroke:var(--accent-red); stroke-width:3; filter:drop-shadow(0 0 4px rgba(239,68,68,.8)); }
.graph-link.part_of_chain     { stroke:rgba(100,116,139,.4); stroke-dasharray:3,5; }

.node-label { font-family:'JetBrains Mono',monospace; font-size:9px; fill:rgba(148,163,184,.7); pointer-events:none; user-select:none; }

/* ============================================================ Action Log (Panel 3) */
.action-log {
  height:100%; overflow-y:auto; padding:7px;
  display:flex; flex-direction:column; gap:3px;
  font-family:'JetBrains Mono',monospace; font-size:10.5px;
  scrollbar-width:thin; scrollbar-color:var(--border) transparent;
}

.log-entry {
  padding:5px 7px; border-radius:4px;
  border-left:2.5px solid var(--border);
  background:rgba(255,255,255,.02);
  animation:slideInRight .25s ease forwards;
  line-height:1.5;
}
.log-entry.investigation { border-left-color:var(--accent-cyan); }
.log-entry.remediation   { border-left-color:var(--accent-amber); }
.log-entry.triage        { border-left-color:var(--accent-purple); }
.log-entry.report        { border-left-color:var(--accent-green); }

.log-step   { color:var(--text-muted); font-size:9px; }
.log-action { color:var(--accent-cyan); font-weight:700; }
.log-entry.remediation .log-action { color:var(--accent-amber); }
.log-entry.triage      .log-action { color:var(--accent-purple); }
.log-entry.report      .log-action { color:var(--accent-green); }
.log-target { color:var(--text-primary); }
.log-result  { font-size:9px; color:var(--text-secondary); margin-top:1px; }
.log-details {
  font-size:9px; color:var(--text-muted); margin-top:3px; padding:3px 6px;
  background:rgba(0,0,0,.2); border-radius:3px; border-left:2px solid var(--border);
  line-height:1.6;
}
.log-reward { font-size:10px; font-weight:700; }
.log-reward.positive { color:var(--accent-green); }
.log-reward.negative { color:var(--accent-red); }

/* ============================================================ Network Topology (Panel 4) */
.network-topology {
  height:100%; overflow-y:auto; padding:7px;
  display:flex; flex-direction:column; gap:5px;
  scrollbar-width:thin; scrollbar-color:var(--border) transparent;
}

.subnet-section {
  background:var(--bg-secondary); border:1px solid var(--border);
  border-radius:var(--r-sm); padding:6px 8px;
  transition:border-color .3s; position:relative; overflow:hidden;
}
.subnet-section.has-compromised { border-color:rgba(239,68,68,.4); }
.subnet-section.isolated        { border-color:rgba(245,158,11,.6); background:rgba(245,158,11,.04); }

.subnet-header  { display:flex; align-items:center; justify-content:space-between; margin-bottom:5px; }
.subnet-name    { font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:.08em; }
.subnet-stats   { font-size:9px; font-family:'JetBrains Mono',monospace; color:var(--text-muted); }
.subnet-stats .compromised { color:var(--accent-red); }
.subnet-stats .isolated    { color:var(--accent-amber); }

.host-grid { display:flex; flex-wrap:wrap; gap:3px; }

.host-dot {
  width:9px; height:9px; border-radius:2px;
  cursor:pointer; transition:transform .15s;
}
.host-dot:hover { transform:scale(1.6); z-index:1; }
.host-dot.online       { background:rgba(59,130,246,.5); }
.host-dot.compromised  { background:var(--accent-red); animation:hostGlow 1.2s ease infinite; }
.host-dot.isolated     { background:rgba(100,116,139,.5); border:1px solid var(--accent-amber); }
.host-dot.queried      { background:var(--accent-cyan); }
.host-dot.healthy      { background:rgba(16,185,129,.5); }

@keyframes hostGlow { 0%,100%{box-shadow:none} 50%{box-shadow:0 0 5px rgba(239,68,68,.9)} }

.isolated-overlay {
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:rgba(245,158,11,.06); border:1.5px solid rgba(245,158,11,.5);
  border-radius:var(--r-sm); font-size:9px; font-weight:700;
  color:var(--accent-amber); letter-spacing:.08em; pointer-events:none;
}

.topology-stats { display:flex; gap:6px; }
.topo-stat { font-size:9px; font-family:'JetBrains Mono',monospace; font-weight:600; padding:2px 5px; border-radius:3px; }
.topo-stat.compromised { background:rgba(239,68,68,.15); color:var(--accent-red); }
.topo-stat.isolated    { background:rgba(245,158,11,.15); color:var(--accent-amber); }

/* ============================================================ Scores Panel (Panel 5) */
.scores-body {
  display:flex; flex-direction:row; gap:10px; padding:8px; overflow:hidden; height:100%; align-items:stretch;
}
.radar-container    { flex:0 0 52%; position:relative; min-width:0; }
.timeline-container { flex:1; position:relative; min-width:0; border-left:1px solid rgba(42,48,64,0.7); padding-left:10px; }

/* ============================================================ Mission Status (Panel 6) */
.panel-6 .panel-body {
  display:flex; flex-direction:column; overflow-y:auto;
  scrollbar-width:thin; scrollbar-color:var(--border) transparent;
}

.containment-section,
.impact-section,
.threats-section,
.control-section {
  padding:7px 11px; border-bottom:1px solid var(--border); flex-shrink:0;
}
.containment-section:last-child,
.impact-section:last-child,
.threats-section:last-child,
.control-section:last-child { border-bottom:none; }

.section-label {
  font-size:9px; font-weight:600; letter-spacing:.08em;
  color:var(--text-muted); text-transform:uppercase; margin-bottom:5px;
}

/* Containment bars */
.containment-bars { display:flex; flex-direction:column; gap:4px; }

.containment-bar-item { display:flex; flex-direction:column; gap:2px; }
.containment-bar-label {
  display:flex; justify-content:space-between;
  font-size:9px; color:var(--text-secondary);
}
.containment-bar-label .complete { color:var(--accent-green); }
.containment-bar-track { height:5px; background:var(--bg-secondary); border-radius:3px; overflow:hidden; border:1px solid var(--border); }
.containment-bar-fill { height:100%; background:var(--accent-cyan); border-radius:3px; transition:width .5s ease; width:0%; }
.containment-bar-fill.complete { background:var(--accent-green); box-shadow:var(--glow-green); }

/* Business Impact Gauge */
.impact-gauge { padding:2px 0; }

.impact-gauge-track {
  position:relative; height:11px; border-radius:6px; overflow:hidden;
  display:flex; margin-bottom:3px;
}
.impact-zone-green { flex:0 0 40%; background:linear-gradient(90deg,rgba(16,185,129,.4),rgba(16,185,129,.2)); }
.impact-zone-amber { flex:0 0 35%; background:linear-gradient(90deg,rgba(245,158,11,.25),rgba(245,158,11,.5)); }
.impact-zone-red   { flex:0 0 25%; background:linear-gradient(90deg,rgba(239,68,68,.35),rgba(239,68,68,.7)); }

.impact-marker {
  position:absolute; top:-2px; width:3px; height:15px;
  background:white; border-radius:2px; box-shadow:0 0 8px rgba(255,255,255,.8);
  transition:left .5s ease; left:0%; transform:translateX(-50%);
}

.impact-labels { display:flex; justify-content:space-between; font-size:8px; color:var(--text-muted); margin-bottom:3px; }
.impact-value-display { display:flex; align-items:center; justify-content:space-between; }
.impact-label { font-size:9px; color:var(--text-muted); }
.impact-value { font-size:18px; font-weight:700; font-family:'JetBrains Mono',monospace; color:var(--accent-green); transition:color .5s; }
.impact-value.high     { color:var(--accent-amber); }
.impact-value.critical { color:var(--accent-red); }

/* Active threats */
.active-threats-list { display:flex; flex-wrap:wrap; gap:3px; }

.threat-tag {
  padding:2px 5px; border-radius:3px; font-size:9px; font-weight:600;
  font-family:'JetBrains Mono',monospace;
  background:rgba(239,68,68,.15); color:var(--accent-red); border:1px solid rgba(239,68,68,.3);
}
.threat-tag.contained {
  background:rgba(16,185,129,.15); color:var(--accent-green);
  border-color:rgba(16,185,129,.3); text-decoration:line-through; opacity:.6;
}

/* Controls */
.control-section { display:flex; flex-wrap:wrap; align-items:center; gap:5px; padding:8px 11px !important; }

.btn {
  padding:5px 12px; border-radius:var(--r-sm); font-size:11px; font-weight:600;
  cursor:pointer; border:1px solid transparent; transition:all .2s;
  display:inline-flex; align-items:center; gap:3px;
}
.btn:disabled { opacity:.5; cursor:not-allowed; }
.btn-primary  { background:var(--accent-blue); color:#fff; border-color:var(--accent-blue); }
.btn-primary:hover:not(:disabled)  { background:#2563eb; box-shadow:var(--glow-blue); }
.btn-secondary { background:var(--bg-secondary); color:var(--text-primary); border-color:var(--border); }
.btn-secondary:hover { border-color:var(--accent-blue); color:var(--accent-blue); }

.task-selector { display:flex; align-items:center; gap:5px; font-size:11px; color:var(--text-secondary); margin-left:auto; }
.task-select {
  background:var(--bg-secondary); color:var(--text-primary);
  border:1px solid var(--border); border-radius:4px; padding:3px 6px;
  font-size:11px; cursor:pointer; outline:none;
}
.task-select:focus { border-color:var(--accent-blue); }

/* ============================================================ Overlays */
.overlay {
  position:fixed; inset:0; z-index:200;
  display:flex; align-items:center; justify-content:center;
  background:rgba(10,14,23,.92); backdrop-filter:blur(10px);
}
.overlay.hidden { display:none; }

.overlay-content {
  text-align:center; display:flex; flex-direction:column; align-items:center; gap:14px;
}
.overlay-icon { font-size:44px; filter:drop-shadow(0 0 20px rgba(59,130,246,.7)); }
.overlay h2   { font-size:22px; font-weight:700; }

#connection-status { font-size:13px; color:var(--text-secondary); }

.connection-spinner {
  width:30px; height:30px; border:2.5px solid var(--border);
  border-top-color:var(--accent-blue); border-radius:50%; animation:spin 1s linear infinite;
}
@keyframes spin { to { transform:rotate(360deg); } }

/* Final Score Overlay */
.final-score-content {
  text-align:center; display:flex; flex-direction:column; align-items:center; gap:14px;
  max-width:480px; width:90%; padding:28px;
  background:var(--bg-card); border:1px solid var(--accent-green);
  border-radius:var(--r); box-shadow:var(--glow-green), 0 24px 60px rgba(0,0,0,.7);
  animation:revealPop .5s cubic-bezier(.175,.885,.32,1.275) forwards;
}
@keyframes revealPop { from{opacity:0;transform:scale(.8)} to{opacity:1;transform:scale(1)} }

.mission-complete-banner {
  font-size:12px; font-weight:700; letter-spacing:.2em; color:var(--accent-green);
  border:1px solid var(--accent-green); padding:3px 14px; border-radius:3px;
  animation:bannerGlow 1.5s ease infinite;
}
@keyframes bannerGlow { 0%,100%{box-shadow:none} 50%{box-shadow:var(--glow-green)} }

.final-score-label  { font-size:10px; font-weight:600; letter-spacing:.15em; color:var(--text-muted); }
.final-score-number {
  font-family:'JetBrains Mono',monospace; font-size:64px; font-weight:700;
  color:var(--accent-green); line-height:1;
}

.final-grade-bars { width:100%; display:flex; flex-direction:column; gap:3px; }
.final-grade-bar-item { display:grid; grid-template-columns:140px 1fr 38px; align-items:center; gap:6px; }
.final-grade-bar-label { font-size:9px; color:var(--text-secondary); text-align:right; }
.final-grade-bar-track { height:5px; background:var(--bg-secondary); border-radius:3px; overflow:hidden; }
.final-grade-bar-fill  { height:100%; background:var(--accent-cyan); border-radius:3px; transition:width 1s ease; }
.final-grade-bar-value { font-family:'JetBrains Mono',monospace; font-size:9px; color:var(--text-primary); }

.final-penalties-bonuses { width:100%; display:flex; flex-direction:column; gap:2px; max-height:80px; overflow-y:auto; }
.penalty-item { font-size:10px; color:var(--accent-red); font-family:'JetBrains Mono',monospace; }
.bonus-item   { font-size:10px; color:var(--accent-green); font-family:'JetBrains Mono',monospace; }

/* ============================================================ Screen Flash */
.screen-flash { position:fixed; inset:0; pointer-events:none; z-index:999; opacity:0; border-radius:0; }
.screen-flash.red-flash   { background:rgba(239,68,68,.08); border:5px solid rgba(239,68,68,.6); }
.screen-flash.green-flash { background:rgba(16,185,129,.07); border:5px solid rgba(16,185,129,.5); }

/* ============================================================ Notifications */
#notification-container {
  position:fixed; top:calc(var(--header-h) + 10px); right:10px; z-index:150;
  display:flex; flex-direction:column; gap:5px; pointer-events:none;
}
.notification-toast {
  padding:7px 13px; border-radius:var(--r-sm); font-size:11px; font-weight:600;
  color:#fff; animation:toastIn .3s ease forwards; pointer-events:none;
  max-width:340px;
}
.notification-toast.red    { background:rgba(239,68,68,.9);  border:1px solid var(--accent-red);   box-shadow:var(--glow-red); }
.notification-toast.green  { background:rgba(16,185,129,.9); border:1px solid var(--accent-green); }
.notification-toast.blue   { background:rgba(59,130,246,.9); border:1px solid var(--accent-blue);  }
.notification-toast.amber  { background:rgba(245,158,11,.9); border:1px solid var(--accent-amber); }
@keyframes toastIn { from{opacity:0;transform:translateX(100%)} to{opacity:1;transform:translateX(0)} }

/* ============================================================ Utility */
.hidden { display:none !important; }

.empty-state { color:var(--text-muted); font-size:11px; text-align:center; padding:16px; font-style:italic; }

/* ============================================================ Animations */
@keyframes slideInRight { from{opacity:0;transform:translateX(16px)} to{opacity:1;transform:translateX(0)} }
@keyframes fadeIn       { from{opacity:0} to{opacity:1} }
@keyframes scaleBounce  { 0%{transform:scale(1)} 50%{transform:scale(1.14)} 100%{transform:scale(1)} }

/* ============================================================ Scrollbars */
::-webkit-scrollbar       { width:3px; height:3px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }
::-webkit-scrollbar-thumb:hover { background:var(--border-hover); }

/* ============================================================ Turn Indicator */
.turn-indicator {
  font-size:10px; font-weight:700; letter-spacing:.08em;
  padding:3px 10px; border-radius:4px; border:1px solid;
  white-space:nowrap;
}
.turn-indicator.blue-turn {
  color:var(--accent-blue); border-color:rgba(59,130,246,.5);
  background:rgba(59,130,246,.1);
}
.turn-indicator.red-turn {
  color:var(--accent-red); border-color:rgba(239,68,68,.5);
  background:rgba(239,68,68,.1); animation:blink .7s ease infinite;
}

/* ============================================================ Red Team Toolkit */
.red-team-section {
  padding:7px 11px; border-top:1px solid rgba(239,68,68,.2);
  background:rgba(239,68,68,.03); flex-shrink:0;
}
.red-team-section.rt-disabled { opacity:.45; pointer-events:none; }

.rt-form { display:flex; flex-direction:column; gap:5px; }
.rt-select { width:100%; }

.rt-fields { display:flex; flex-direction:column; gap:4px; }

.rt-input {
  width:100%; padding:4px 7px; border-radius:4px;
  background:var(--bg-secondary); color:var(--text-primary);
  border:1px solid var(--border); font-size:11px; outline:none;
  font-family:'Inter', sans-serif;
}
.rt-input:focus { border-color:var(--accent-red); }
.rt-input::placeholder { color:var(--text-muted); }

.btn-red {
  background:rgba(239,68,68,.15); color:var(--accent-red);
  border:1px solid rgba(239,68,68,.5); width:100%;
}
.btn-red:hover:not(:disabled) { background:rgba(239,68,68,.28); box-shadow:var(--glow-red); }
.btn-red:disabled { opacity:.4; }
