/* ==========================================================================
   SRO School Suite — Fullscreen Unified Ecosystem Flow Stylesheet
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Prompt:wght@400;500;600;700&family=Sarabun:wght@300;400;500;600;700&family=Plus+Jakarta+Sans:wght@500;600;700;800&display=swap');

:root {
  --primary: #1565c0;
  --primary-light: #e3f2fd;
  --primary-dark: #0d47a1;

  --mvp-color: #16a34a;
  --mvp-bg: #f0fdf4;
  --mvp-border: #86efac;

  --v2-color: #2563eb;
  --v2-bg: #eff6ff;
  --v2-border: #93c5fd;

  --poc-color: #9333ea;
  --poc-bg: #faf5ff;
  --poc-border: #d8b4fe;

  --canvas-bg: #ffffff;
  --page-bg: #f8fafc;
  --border-subtle: #e2e8f0;
  --border-strong: #cbd5e1;

  --text-main: #0f172a;
  --text-muted: #64748b;
  --text-secondary: #334155;

  --font-display: 'Prompt', -apple-system, sans-serif;
  --font-body: 'Sarabun', 'Plus Jakarta Sans', -apple-system, sans-serif;
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  background: var(--page-bg);
  color: var(--text-main);
  font-family: var(--font-body);
  line-height: 1.5;
  font-size: 14px;
  -webkit-font-smoothing: antialiased;
}

/* Fullscreen Responsive Container */
.flow-app-container {
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 12px 18px 36px;
}

/* ---------- Top Navbar ---------- */
.top-navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  background: #ffffff;
  padding: 12px 20px;
  border-radius: 14px;
  border: 1px solid var(--border-subtle);
  box-shadow: 0 1px 3px rgba(0,0,0,0.04);
  margin-bottom: 12px;
}

.app-branding h1 {
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 700;
  color: var(--text-main);
  display: flex;
  align-items: center;
  gap: 8px;
}

.app-branding .version-pill {
  font-size: 11px;
  background: linear-gradient(135deg, #1565c0, #0284c7);
  color: #fff;
  padding: 2px 9px;
  border-radius: 999px;
  font-weight: 600;
}

.app-branding p {
  color: var(--text-muted);
  font-size: 12px;
  margin-top: 2px;
}

.navbar-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.filter-group {
  display: inline-flex;
  background: #f1f5f9;
  padding: 3px;
  border-radius: 10px;
  border: 1px solid var(--border-subtle);
}

.filter-btn {
  border: none;
  background: transparent;
  padding: 5px 12px;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
  border-radius: 7px;
  cursor: pointer;
  transition: all 0.15s ease;
}

.filter-btn:hover {
  color: var(--text-main);
}

.filter-btn.active {
  background: #ffffff;
  color: var(--primary);
  box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}

.btn-print {
  border: 1px solid var(--primary);
  background: var(--primary);
  color: #ffffff;
  padding: 6px 14px;
  border-radius: 8px;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background 0.15s ease;
}

.btn-print:hover {
  background: var(--primary-dark);
}

/* ---------- Legend Strip ---------- */
.legend-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0 4px;
  margin-bottom: 10px;
}

.legend-tags {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.status-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: 'Plus Jakarta Sans', var(--font-display);
  font-size: 11px;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 6px;
  border: 1px solid;
  letter-spacing: 0.3px;
}

.status-badge.mvp {
  background: var(--mvp-bg);
  color: var(--mvp-color);
  border-color: var(--mvp-border);
}

.status-badge.v2 {
  background: var(--v2-bg);
  color: var(--v2-color);
  border-color: var(--v2-border);
}

.status-badge.poc {
  background: var(--poc-bg);
  color: var(--poc-color);
  border-color: var(--poc-border);
}

.canvas-hint {
  font-size: 12px;
  color: var(--text-muted);
}

/* ---------- Fullscreen Diagram Canvas Card ---------- */
.diagram-canvas-card {
  width: 100%;
  background: var(--canvas-bg);
  border: 1.5px solid var(--border-subtle);
  border-radius: 16px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.03);
  padding: 16px 14px 20px;
  position: relative;
  overflow-x: auto;
}

.diagram-svg-viewport {
  display: block;
  width: 100%;
  height: auto;
  min-width: 1200px;
  overflow: visible;
}

/* SVG Text rendering */
svg text {
  font-family: var(--font-body);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  user-select: none;
}

/* Interactive SVG Node Group */
.diagram-node {
  cursor: pointer;
  transition: opacity 0.22s ease, transform 0.2s ease;
}

.diagram-node:hover rect.node-bg {
  stroke-width: 2.2;
}

.diagram-node.dimmed,
.flow-edge.dimmed {
  opacity: 0.12 !important;
  filter: grayscale(80%);
  transition: opacity 0.22s ease, filter 0.22s ease;
}

/* Active Source Node (the one user is hovering) */
.diagram-node.active-source rect.node-bg {
  stroke-width: 2.8 !important;
  stroke: #2563eb !important;
  filter: drop-shadow(0 0 14px rgba(37, 99, 235, 0.55)) !important;
}

/* Connected Chain Nodes (Upstream & Downstream) */
.diagram-node.highlighted rect.node-bg {
  stroke-width: 2.4;
  filter: drop-shadow(0 2px 8px rgba(37, 99, 235, 0.25));
}

.diagram-node.upstream rect.node-bg {
  stroke: #0284c7 !important;
}

.diagram-node.downstream rect.node-bg {
  stroke: #2563eb !important;
}

/* Highlighted Edges in Full Chain */
.flow-edge {
  transition: opacity 0.22s ease, stroke-width 0.2s ease, stroke 0.2s ease;
}

.flow-edge.highlighted {
  stroke-width: 3.2 !important;
  opacity: 1 !important;
  filter: drop-shadow(0 0 4px rgba(37, 99, 235, 0.4));
}

.flow-edge.highlighted.downstream {
  stroke: #2563eb !important;
}

.flow-edge.highlighted.upstream {
  stroke: #0284c7 !important;
}

.flow-edge[stroke="#a855f7"] {
  opacity: 0.5;
}

/* Flow Stream Animation */
@keyframes flowStream {
  from { stroke-dashoffset: 40; }
  to { stroke-dashoffset: 0; }
}

.flow-edge.animated {
  stroke-dasharray: 6 5;
  animation: flowStream 2.5s linear infinite;
}

/* ---------- Ecosystem Closed-Loop Banner ---------- */
.ecosystem-summary-bar {
  margin-top: 14px;
  background: linear-gradient(90deg, #eff6ff 0%, #ffffff 50%, #f0fdf4 100%);
  border: 1.5px dashed var(--primary);
  border-radius: 12px;
  padding: 10px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
}

.eco-left {
  display: flex;
  align-items: center;
  gap: 10px;
}

.eco-icon {
  font-size: 20px;
}

.eco-title {
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 700;
  color: var(--primary-dark);
}

.eco-desc {
  font-size: 11.5px;
  color: var(--text-secondary);
}

.eco-tags {
  display: flex;
  align-items: center;
  gap: 6px;
}

.eco-step-pill {
  font-size: 11px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 5px;
  background: #ffffff;
  border: 1px solid var(--border-strong);
  color: var(--text-main);
}

.eco-arrow {
  color: var(--primary);
  font-weight: 700;
  font-size: 11px;
}

/* ---------- Footer ---------- */
.page-footer {
  margin-top: 20px;
  font-size: 11.5px;
  color: var(--text-muted);
  text-align: center;
}

.page-footer a {
  color: var(--primary);
  text-decoration: none;
  font-weight: 600;
}

@media print {
  body { background: #fff; }
  .top-navbar, .legend-bar, .page-footer { display: none !important; }
  .flow-app-container { width: 100%; padding: 0; }
  .diagram-canvas-card { border: none; box-shadow: none; padding: 0; }
}
