/* ============================================================
   fab-shared.css — SemiMatrix Fab Series v2
   Shared across all fab-*.html files
   ============================================================ */

@import url('/styles/content-page-common.css');

:root {
  --accent-fab: #06b6d4; --accent-fab-dim: rgba(6,182,212,0.15);
  --grid-overlay: rgba(6,182,212,0.018);
  --content-nav-active: var(--accent-fab);
  --content-nav-active-dim: var(--accent-fab-dim);
  --content-badge-color: var(--accent-fab);
  --content-progress-gradient: linear-gradient(90deg, var(--accent-fab), var(--cyan), var(--accent));
  --content-accent-hover: rgba(6,182,212,0.35);
  --content-scroll-hover-bg: var(--accent-fab-dim);
  --content-process-margin: 24px 0;
  --content-process-padding: 18px 0;
  --content-process-gap: 18px;
  --content-process-num-size: 34px;
  --content-process-num-bg: var(--accent-fab-dim);
  --content-process-num-border: rgba(6,182,212,0.35);
  --content-process-num-color: var(--accent-fab);
  --content-process-title-size: 14px;
  --content-process-desc-line-height: 1.6;
  --content-grid-margin: 20px 0;
  --content-card-padding: 16px;
  --content-card-title-size: 13px;
  --content-table-margin: 20px 0;
  --content-table-th-padding: 11px 14px;
  --content-table-td-padding: 11px 14px;
  --content-code-margin: 20px 0;
  --content-code-padding: 18px;
  --content-nav-margin-top: 60px;
  --content-nav-padding-top: 28px;
  --content-related-padding: 12px;
  --content-related-line-height: 1.4;
  --content-param-section-margin: 20px;
  --content-param-row-padding: 8px 0;
}

/* ===== FAB PROGRESS STEPS ===== */
.fab-steps-bar {
  position: sticky; top: 64px; z-index: 200;
  background: rgba(5,10,14,0.95);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
  padding: 0 40px;
  display: flex; align-items: stretch; gap: 0; overflow-x: auto;
  scrollbar-width: none;
}
.fab-steps-bar::-webkit-scrollbar { display:none; }
.fab-step-item {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 20px; text-decoration: none;
  border-bottom: 2px solid transparent;
  transition: var(--tr); white-space:nowrap; flex-shrink:0;
}
.fab-step-item:hover { background: rgba(255,255,255,0.03); border-bottom-color: var(--border-b); }
.fab-step-item.active { border-bottom-color: var(--accent-fab); }
.fab-step-num {
  font-family: var(--mono); font-size: 10px; color: var(--sub);
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--border); display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; transition: var(--tr);
}
.fab-step-item.active .fab-step-num { background: var(--accent-fab); color: #fff; }
.fab-step-item.done .fab-step-num { background: var(--green-dim); color: var(--green); border: 1px solid rgba(16,185,129,0.4); }
.fab-step-name {
  font-family: var(--display); font-size: 11px; font-weight: 600;
  letter-spacing: 1px; color: var(--text-mid); text-transform: uppercase;
  transition: var(--tr);
}
.fab-step-item.active .fab-step-name { color: var(--text); }
.fab-step-item.done .fab-step-name { color: var(--green); }

/* ===== PAGE LAYOUT ===== */
.fab-wrap {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  grid-template-rows: auto auto;
  min-height: 100vh;
  padding-top: 64px;
  position: relative; z-index: 2;
  max-width: 1400px;
  margin: 0 auto;
}

/* ===== LEFT SIDEBAR ===== */
.fab-toc {
  grid-column: 1;
  grid-row: 1 / span 2;
  padding: 24px 0;
  position: sticky; top: 80px;
  height: calc(100vh - 100px);
  overflow-y: auto; scrollbar-width:thin; scrollbar-color:var(--border) transparent;
  background: linear-gradient(180deg, rgba(8,15,20,0.9), rgba(12,23,32,0.84));
  border: 1px solid var(--border);
  border-radius: 22px;
  box-shadow: var(--shadow-card);
}
.fab-toc::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(103,232,249,0.75), transparent);
  pointer-events: none;
}
.fab-toc::-webkit-scrollbar { width:4px; }
.fab-toc::-webkit-scrollbar-track { background:transparent; }
.fab-toc::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }

/* fab steps nav in sidebar */
.fab-step-link {
  display:flex; align-items:center; gap:8px;
  padding:7px 10px; border-radius:7px; text-decoration:none;
  transition:var(--tr); color:var(--text-mid); font-size:12px;
}
.fab-step-link:hover { color:var(--text); background:rgba(255,255,255,0.04); }
.fab-step-link.current { color:var(--accent-fab); background:var(--accent-fab-dim); }
.fab-step-link.done-link { color:var(--green); }
.fsnum {
  width:20px; height:20px; border-radius:50%;
  background:var(--border); display:flex; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:9px; color:var(--sub); flex-shrink:0;
}
.fab-step-link.current .fsnum { background:var(--accent-fab); color:#fff; }
.fab-step-link.done-link .fsnum { background:var(--green-dim); color:var(--green); }

/* ===== MAIN CONTENT ===== */
.fab-main {
  grid-column: 2;
  grid-row: 1;
  padding: 44px 52px 80px;
  max-width: 100%;
}

.fab-breadcrumb {
  font-family:var(--mono); font-size:11px; color:var(--sub);
  margin-bottom:24px; display:flex; align-items:center; gap:8px; flex-wrap:wrap;
}
.fab-breadcrumb a { color:var(--sub); text-decoration:none; transition:color 0.2s; }
.fab-breadcrumb a:hover { color:var(--accent); }
.fab-breadcrumb .bc-sep { color:var(--border-b); }

/* Step badge */
.fab-step-badge {
  display: inline-flex; align-items:center; gap:12px;
  margin-bottom: 18px;
}
.fab-badge-num {
  width: 52px; height: 52px; border-radius: 12px;
  background: var(--accent-fab-dim); border: 1px solid rgba(6,182,212,0.35);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:18px; font-weight:700; color:var(--accent-fab);
}
.fab-badge-label {
  font-family:var(--mono); font-size:10px; color:var(--sub);
  letter-spacing:3px; text-transform:uppercase; line-height:1.5;
}
.fab-badge-label span { display:block; font-size:12px; color:var(--accent-fab); letter-spacing:1px; }

/* Hero */
.fab-hero { margin-bottom: 40px; padding-bottom: 32px; border-bottom: 1px solid var(--border); }
.fab-eyebrow {
  font-family:var(--mono); font-size:10px; color:var(--accent-fab);
  letter-spacing:3px; text-transform:uppercase; margin-bottom:12px;
  display:flex; align-items:center; gap:8px;
}
.fab-eyebrow::before { content:''; width:16px; height:1px; background:var(--accent-fab); }
.fab-title {
  font-family: var(--display);
  font-size: clamp(30px, 3.5vw, 48px);
  font-weight: 700; line-height: 1.08;
  color: var(--text); margin-bottom: 16px; letter-spacing: -0.5px;
}
.fab-title .accent { color: var(--accent-fab); }
.fab-meta { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.fab-chip {
  font-family:var(--mono); font-size:10px; color:var(--text-mid);
  border:1px solid var(--border); padding:5px 12px; border-radius:5px;
  display:flex; align-items:center; gap:5px; letter-spacing:0.5px;
}
.fab-chip::before { content:''; width:5px; height:5px; background:var(--accent-fab); border-radius:50%; }
.fab-desc { font-size:15px; color:var(--text-mid); line-height:1.75; max-width:680px; }

/* Body typography */
.fab-body h2 {
  font-family:var(--display); font-size:24px; font-weight:700; color:var(--text);
  margin:0 0 20px; padding: 14px 20px;
  position: relative;
  display: flex;
  align-items: center;
  border-left: 4px solid var(--accent-fab);
  background: linear-gradient(90deg, rgba(6,182,212,0.08), rgba(6,182,212,0.01) 90%, transparent);
  border-radius: 0 var(--radius) var(--radius) 0;
  box-shadow: inset 12px 0 24px -12px rgba(6, 182, 212, 0.2);
}
.fab-body h2::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(90deg, var(--border), transparent);
}
.fab-body h2 .h2-num {
  font-family:var(--mono); font-size:10px; color:var(--accent-fab);
  border:1px solid rgba(6,182,212,0.45); background:rgba(6,182,212,0.18);
  padding:4px 10px; border-radius:6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 14px;
  box-shadow: 0 0 12px rgba(6, 182, 212, 0.25);
  text-shadow: 0 0 5px rgba(6, 182, 212, 0.5);
}
.fab-body h3 {
  font-family:var(--display); font-size:17px; font-weight:600;
  color: #e2e8f0; margin:28px 0 14px;
  display: block;
  position: relative;
  padding-left: 16px;
  border-left: 3px solid var(--accent-fab);
  text-shadow: 0 0 12px rgba(6, 182, 212, 0.15);
}
.fab-body section {
  position: relative;
  scroll-margin-top: 100px;
  background: linear-gradient(180deg, rgba(10, 18, 26, 0.5) 0%, rgba(6, 10, 14, 0.75) 100%) !important;
  border: 1px solid rgba(255, 255, 255, 0.05) !important;
  border-radius: 22px !important;
  padding: 36px 40px !important;
  margin-bottom: 40px !important;
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.03) !important;
  backdrop-filter: blur(16px);
  transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}
.fab-body section:hover {
  border-color: var(--accent-fab) !important;
  background: linear-gradient(180deg, rgba(12, 22, 32, 0.65) 0%, rgba(8, 14, 20, 0.82) 100%) !important;
  box-shadow: 
    0 25px 50px rgba(0, 0, 0, 0.5), 
    0 0 24px rgba(6, 182, 212, 0.05),
    inset 0 1px 0 rgba(6, 182, 212, 0.15) !important;
  transform: translateY(-2px);
}
@media (max-width: 640px) {
  .fab-body section {
    padding: 20px 18px !important;
    margin-bottom: 20px !important;
    border-radius: 12px !important;
  }
}
.fab-body p { font-size:15px; line-height:1.85; color:var(--text); margin-bottom:16px; }
.fab-body strong {
  color: #38bdf8;
  font-weight: 600;
  text-shadow: 0 0 8px rgba(56, 189, 248, 0.25);
}
.fab-body ul { margin:0 0 16px 0; display:flex; flex-direction:column; gap:8px; list-style:none; padding:0; }
.fab-body ul li {
  font-size:14px; line-height:1.7; color:var(--text);
  padding-left:22px; position:relative;
}
.fab-body ul li::before {
  content:'';
  position:absolute;
  left:4px;
  top:8px;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent-fab);
  box-shadow: 0 0 8px var(--accent-fab);
}

/* Equation */
.eq-block {
  background: linear-gradient(135deg, rgba(6,182,212,0.06), rgba(10,18,26,0.5)) !important;
  border: 1px solid rgba(6,182,212,0.22) !important;
  border-left: 4px solid var(--accent-fab) !important;
  border-radius: 16px !important;
  box-shadow: 0 16px 40px rgba(0,0,0,0.25), inset 0 0 20px rgba(6,182,212,0.04) !important;
  padding: 22px 24px !important; margin:22px 0; font-family:var(--mono);
  position:relative; overflow:hidden;
  transition: all 0.3s ease;
}
.eq-block:hover {
  border-color: rgba(6,182,212,0.4) !important;
  box-shadow: 0 20px 48px rgba(6,182,212,0.1), inset 0 0 20px rgba(6,182,212,0.08) !important;
  transform: translateY(-2px);
}
.eq-block::before {
  content:''; position:absolute; top:0; right:0; bottom:0; width:100px;
  background:linear-gradient(270deg, rgba(6,182,212,0.06), transparent);
  pointer-events: none;
}
.eq-label { font-size:9px; color:var(--cyan); letter-spacing:2.5px; text-transform:uppercase; margin-bottom:8px; font-weight: 600; }
.eq-main { font-size:16px; color:var(--text); letter-spacing:0.5px; line-height:1.6; text-shadow: 0 0 12px rgba(6, 182, 212, 0.4); overflow-x: auto; -webkit-overflow-scrolling: touch; }
.eq-main .v { color:var(--accent); }
.eq-desc { font-size:12px; color:var(--text-mid); margin-top:7px; line-height:1.6; }

/* Diagram */
.diagram-box {
  background:var(--bg2); border:1px solid var(--border);
  border-radius:var(--radius); padding:28px; margin:24px 0;
  position:relative; overflow:hidden;
}
.diagram-box::after {
  content:attr(data-label);
  position:absolute; top:12px; right:16px;
  font-family:var(--mono); font-size:9px; color:var(--sub);
  letter-spacing:2px; text-transform:uppercase;
}
.fab-nav-placeholder { display:block; }

/* ===== RIGHT SIDEBAR ===== */
.fab-sidebar-right {
  position: static !important;
  height: auto !important;
  overflow: visible !important;
  grid-column: 2;
  grid-row: 2;
  width: 100%;
  margin-top: 48px;
  padding: 32px 36px !important;
  border: 1px solid var(--border);
  border-radius: 22px;
  background: linear-gradient(180deg, rgba(8,15,20,0.92), rgba(12,23,32,0.84));
  box-shadow: var(--shadow-card);
  display: grid;
  grid-template-columns: 1.2fr 1fr 0.8fr;
  gap: 32px;
  align-items: start;
}
.fab-sidebar-right::-webkit-scrollbar { display:none; }
.fab-sidebar-right .career-card {
  margin-top: 0 !important;
}
.fab-sidebar-right .param-section {
  margin-top: 0 !important;
}
.fab-sidebar-right .sr-label:first-child {
  margin-top: 0 !important;
}

/* ===== RESPONSIVE ===== */
@media(max-width:1200px) {
  .fab-wrap { grid-template-columns: 220px 1fr; }
  .fab-sidebar-right {
    grid-column: 2;
    grid-row: 2;
    grid-template-columns: 1.2fr 1.1fr;
    gap: 24px;
  }
  .fab-sidebar-right .career-card {
    grid-column: 1 / span 2;
    margin-top: 12px !important;
  }
}
@media(max-width:900px) {
  .fab-wrap { grid-template-columns: minmax(0, 1fr); }
  .fab-toc, .topic-toc { display:none; }
  .fab-main { grid-column: 1; padding: 24px 20px 60px; }
  .fab-sidebar-right {
    grid-column: 1;
    grid-row: 3;
    grid-template-columns: 1fr;
    gap: 24px;
    padding: 24px 20px !important;
  }
  .fab-sidebar-right .career-card {
    grid-column: 1;
  }
  .sc-nav { padding: 0 20px; }
  .sc-nav-links { display:none; }
  .sc-hamburger { display:flex; }
  .fab-steps-bar { padding: 0 16px; }
  .fab-step-name { display:none; }
  .fab-step-item { padding: 12px; }
  .fab-grid { grid-template-columns:1fr; }
  .fab-nav { grid-template-columns:1fr; }
}

/* ===== ROADMAP CONTEXT PREMIUM OVERRIDES ===== */
.roadmap-context {
  margin: 28px 0 !important;
  padding: 24px 28px !important;
  border: 1px solid rgba(6, 182, 212, 0.15) !important;
  border-left: 4px solid var(--accent-fab) !important;
  background: linear-gradient(135deg, rgba(6, 182, 212, 0.05) 0%, rgba(10, 18, 26, 0.4) 100%) !important;
  border-radius: 12px !important;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.03) !important;
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  position: relative;
  overflow: hidden;
}
.roadmap-context:hover {
  border-color: rgba(6, 182, 212, 0.35) !important;
  box-shadow: 0 18px 40px rgba(6, 182, 212, 0.08), inset 0 1px 0 rgba(6, 182, 212, 0.1) !important;
  transform: translateY(-2px);
}
.roadmap-context::before {
  content: '';
  position: absolute;
  top: 0; right: 0; bottom: 0; width: 150px;
  background: linear-gradient(270deg, rgba(6, 182, 212, 0.05), transparent);
  pointer-events: none;
}

