/* ═══════════════════════════════════════════════════════════
   EnggViz — Bilinear Transform Article Styles
   Aesthetic: Refined technical journal meets modern editorial
   ═══════════════════════════════════════════════════════════ */

/* ── Google Fonts ─────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,600;0,700;1,400&family=JetBrains+Mono:wght@400;500&family=DM+Sans:wght@300;400;500;600&display=swap');

/* ── CSS Variables ────────────────────────────────────────── */
:root {
          --accent: #2563eb;
          --accent-light: #dbeafe;
          --accent-dark: #1e40af;
          --green: #16a34a;
          --green-light: #dcfce7;
          --red: #dc2626;
          --red-light: #fee2e2;
          --amber: #d97706;
          --amber-light: #fffbeb;
          --purple: #7c3aed;
          --purple-light: #ede9fe;
          --slate-50: #f8fafc;
          --slate-100: #f1f5f9;
          --slate-200: #e2e8f0;
          --slate-300: #cbd5e1;
          --slate-400: #94a3b8;
          --slate-500: #64748b;
          --slate-600: #475569;
          --slate-700: #334155;
          --slate-800: #1e293b;
          --slate-900: #0f172a;
          --font-serif: 'Lora', Georgia, serif;
          --font-sans: 'DM Sans', system-ui, sans-serif;
          --font-mono: 'JetBrains Mono', 'Fira Code', monospace;
          --radius: 10px;
          --shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);
          --shadow-md: 0 4px 12px rgba(0, 0, 0, .10);
          --shadow-lg: 0 8px 32px rgba(0, 0, 0, .12);
}

/* ── Reset & Base ─────────────────────────────────────────── */
*,
*::before,
*::after {
          box-sizing: border-box;
          margin: 0;
          padding: 0;
}

html {
          scroll-behavior: smooth;
}

body {
          font-family: var(--font-sans);
          font-size: 1.0625rem;
          line-height: 1.75;
          color: var(--slate-800);
          background: #fff;
          -webkit-font-smoothing: antialiased;
}

/* ── Site Header ──────────────────────────────────────────── */
.site-header {
          position: sticky;
          top: 0;
          z-index: 100;
          background: rgba(255, 255, 255, 0.92);
          backdrop-filter: blur(12px);
          -webkit-backdrop-filter: blur(12px);
          border-bottom: 1px solid var(--slate-200);
          box-shadow: var(--shadow-sm);
}

.nav-bar {
          display: flex;
          align-items: center;
          justify-content: space-between;
          padding: 0.9rem 1.5rem;
}

.logo a {
          font-family: var(--font-serif);
          font-weight: 700;
          font-size: 1.35rem;
          color: var(--slate-900);
          text-decoration: none;
          letter-spacing: -0.5px;
}

.nav-links {
          display: flex;
          gap: 2rem;
          list-style: none;
}

.nav-links a {
          font-size: 0.9rem;
          font-weight: 500;
          color: var(--slate-600);
          text-decoration: none;
          transition: color .2s;
}

.nav-links a:hover {
          color: var(--accent);
}

/* ── Container ────────────────────────────────────────────── */
.container {
          max-width: 820px;
          margin: 0 auto;
          padding: 0 1.5rem;
}

/* ── Progress Bar ─────────────────────────────────────────── */
.reading-progress {
          position: fixed;
          top: 0;
          left: 0;
          height: 3px;
          background: linear-gradient(90deg, var(--accent), var(--purple));
          width: 0%;
          z-index: 200;
          transition: width .1s linear;
}

/* ── Article Layout ───────────────────────────────────────── */
.article-container {
          padding-top: 3rem;
          padding-bottom: 5rem;
}

/* ── Post Header ──────────────────────────────────────────── */
.post-header {
          margin-bottom: 3rem;
          padding-bottom: 2rem;
          border-bottom: 1px solid var(--slate-200);
}

.post-category {
          display: inline-flex;
          align-items: center;
          gap: 0.4rem;
          font-size: 0.75rem;
          font-weight: 600;
          letter-spacing: 0.1em;
          text-transform: uppercase;
          color: var(--accent);
          background: var(--accent-light);
          padding: 0.3rem 0.8rem;
          border-radius: 100px;
          margin-bottom: 1.2rem;
}

.post-title {
          font-family: var(--font-serif);
          font-size: clamp(1.75rem, 4vw, 2.5rem);
          font-weight: 700;
          line-height: 1.25;
          color: var(--slate-900);
          letter-spacing: -0.5px;
          margin-bottom: 1rem;
}

.post-meta {
          display: flex;
          align-items: center;
          flex-wrap: wrap;
          gap: 0.5rem 1rem;
          font-size: 0.875rem;
          color: var(--slate-500);
}

.post-meta .author {
          font-weight: 600;
          color: var(--slate-700);
}

/* TOC ── */
.toc-box {
          background: var(--slate-50);
          border: 1px solid var(--slate-200);
          border-left: 4px solid var(--accent);
          border-radius: 0 var(--radius) var(--radius) 0;
          padding: 1.5rem 1.75rem;
          margin: 0 0 2.5rem;
}

.toc-box h2 {
          font-family: var(--font-sans);
          font-size: 0.78rem;
          font-weight: 700;
          text-transform: uppercase;
          letter-spacing: 0.1em;
          color: var(--slate-500);
          margin-bottom: 0.9rem;
          border: none;
          padding: 0;
}

.toc-box ol {
          padding-left: 1.2rem;
          margin: 0;
          display: grid;
          gap: 0.35rem;
}

.toc-box li {
          font-size: 0.9rem;
          color: var(--slate-700);
}

.toc-box a {
          color: var(--accent);
          text-decoration: none;
          font-weight: 500;
}

.toc-box a:hover {
          text-decoration: underline;
}

/* ── Typography ───────────────────────────────────────────── */
.post-content h2 {
          font-family: var(--font-serif);
          font-size: 1.55rem;
          font-weight: 700;
          color: var(--slate-900);
          margin: 3rem 0 1rem;
          padding-bottom: 0.5rem;
          border-bottom: 2px solid var(--slate-100);
          letter-spacing: -0.3px;
          scroll-margin-top: 80px;
}

.post-content h3 {
          font-family: var(--font-serif);
          font-size: 1.15rem;
          font-weight: 600;
          color: var(--slate-800);
          margin: 2rem 0 0.75rem;
          scroll-margin-top: 80px;
}

.post-content p {
          margin: 0 0 1.2rem;
          color: var(--slate-700);
          line-height: 1.8;
}

.post-content strong {
          color: var(--slate-900);
}

.post-content a {
          color: var(--accent);
          text-decoration: underline;
          text-decoration-thickness: 1px;
          text-underline-offset: 2px;
}

.post-content ul,
.post-content ol {
          padding-left: 1.5rem;
          margin: 0 0 1.25rem;
          display: grid;
          gap: 0.5rem;
}

.post-content li {
          color: var(--slate-700);
}

/* ── Callout / Prereq Box ─────────────────────────────────── */
.callout,
.prereq-box {
          background: var(--amber-light);
          border-left: 4px solid var(--amber);
          padding: 1rem 1.25rem;
          margin: 1.75rem 0;
          border-radius: 0 var(--radius) var(--radius) 0;
          font-size: 0.97rem;
          color: #78350f;
          line-height: 1.7;
}

.callout strong,
.prereq-box strong {
          display: block;
          margin-bottom: 0.35rem;
          color: #92400e;
}

/* Key Insight callout variant */
.callout-insight {
          background: var(--purple-light);
          border-left: 4px solid var(--purple);
          padding: 1rem 1.25rem;
          margin: 1.75rem 0;
          border-radius: 0 var(--radius) var(--radius) 0;
          font-size: 0.97rem;
          color: #4c1d95;
          line-height: 1.7;
}

.callout-insight strong {
          display: block;
          margin-bottom: 0.35rem;
          color: #5b21b6;
}

/* ── Math Blocks ──────────────────────────────────────────── */
.math-block {
          background: var(--slate-50);
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          padding: 1.5rem 2rem;
          margin: 1.75rem 0;
          overflow-x: auto;
          text-align: center;
          box-shadow: var(--shadow-sm);
}

.math-block.definition {
          border-left: 4px solid var(--accent);
          border-radius: 0 var(--radius) var(--radius) 0;
          background: #eff6ff;
}

.math-block strong {
          display: block;
          color: var(--accent);
          font-size: 0.72rem;
          text-transform: uppercase;
          letter-spacing: 0.1em;
          margin-bottom: 0.75rem;
          font-family: var(--font-sans);
}

.math-block .katex-display {
          margin: 0;
}

/* Boxed result highlight */
.math-block .katex .boxed {
          border: 2px solid var(--accent);
          padding: 0.25em 0.6em;
          border-radius: 4px;
}

/* ── Derivation Steps ─────────────────────────────────────── */
.deriv-step {
          background: #fff;
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          padding: 1.1rem 1.25rem 1.1rem 1.5rem;
          margin: 1rem 0;
          font-size: 1rem;
          color: var(--slate-700);
          line-height: 1.7;
          position: relative;
          counter-increment: deriv-counter;
}

.deriv-step::before {
          content: '';
          position: absolute;
          left: 0;
          top: 0;
          bottom: 0;
          width: 4px;
          background: var(--slate-300);
          border-radius: var(--radius) 0 0 var(--radius);
}

.deriv-step:last-of-type::before {
          background: var(--accent);
}

.step-label {
          display: inline-block;
          font-size: 0.75rem;
          font-weight: 700;
          text-transform: uppercase;
          letter-spacing: 0.08em;
          color: var(--slate-500);
          margin-bottom: 0.5rem;
          font-family: var(--font-sans);
}

/* ── Plane Diagrams ───────────────────────────────────────── */
.two-plane-grid {
          display: grid;
          grid-template-columns: 1fr 1fr;
          gap: 1.5rem;
          margin: 2.5rem 0;
}

.plane-box {
          background: var(--slate-50);
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          overflow: hidden;
          box-shadow: var(--shadow-sm);
}

.plane-box-title {
          background: var(--slate-800);
          color: var(--slate-50);
          font-size: 0.78rem;
          font-weight: 700;
          letter-spacing: 0.06em;
          text-transform: uppercase;
          padding: 0.6rem 1rem;
          text-align: center;
          font-family: var(--font-sans);
}

.diagram-caption {
          font-size: 0.85rem;
          color: var(--slate-500);
          text-align: center;
          font-style: italic;
          margin: 0.75rem 0 1.5rem;
          line-height: 1.6;
}

/* Warp chart container */
.warp-chart {
          background: var(--slate-50);
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          overflow: hidden;
          margin: 1.75rem 0;
          box-shadow: var(--shadow-sm);
}

/* ── Tables ───────────────────────────────────────────────── */
.data-table,
.map-table {
          width: 100%;
          border-collapse: collapse;
          margin: 1.75rem 0;
          font-size: 0.9rem;
          background: #fff;
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          overflow: hidden;
          box-shadow: var(--shadow-sm);
}

.data-table thead th,
.map-table thead th {
          background: var(--slate-800);
          color: var(--slate-50);
          font-family: var(--font-sans);
          font-size: 0.78rem;
          font-weight: 600;
          letter-spacing: 0.06em;
          text-transform: uppercase;
          padding: 0.75rem 1rem;
          text-align: left;
}

.data-table tbody tr,
.map-table tbody tr {
          border-bottom: 1px solid var(--slate-100);
          transition: background .15s;
}

.data-table tbody tr:last-child,
.map-table tbody tr:last-child {
          border-bottom: none;
}

.data-table tbody tr:hover,
.map-table tbody tr:hover {
          background: var(--slate-50);
}

.data-table td,
.map-table td {
          padding: 0.75rem 1rem;
          color: var(--slate-700);
          vertical-align: top;
}

.data-table td:first-child,
.map-table td:first-child {
          font-weight: 600;
          color: var(--slate-800);
}

.highlight-row td {
          background: #eff6ff;
}

.highlight-row td:first-child {
          color: var(--accent-dark);
}

/* ── Code Blocks ──────────────────────────────────────────── */
pre {
          background: var(--slate-900);
          color: #e2e8f0;
          border-radius: var(--radius);
          padding: 1.5rem;
          overflow-x: auto;
          margin: 1.75rem 0;
          font-size: 0.875rem;
          line-height: 1.7;
          box-shadow: var(--shadow-md);
          position: relative;
}

pre::before {
          content: 'Python';
          position: absolute;
          top: 0.6rem;
          right: 1rem;
          font-family: var(--font-sans);
          font-size: 0.68rem;
          font-weight: 600;
          letter-spacing: 0.08em;
          text-transform: uppercase;
          color: var(--slate-500);
}

code {
          font-family: var(--font-mono);
          font-size: 0.875em;
          background: var(--slate-100);
          padding: 0.15em 0.45em;
          border-radius: 4px;
          color: var(--accent-dark);
}

pre code {
          background: none;
          padding: 0;
          color: inherit;
          font-size: inherit;
}

/* Python syntax highlighting */
pre .kw {
          color: #c084fc;
}

/* keywords */
pre .cm {
          color: #64748b;
}

/* comments */
pre .st {
          color: #86efac;
}

/* strings */
pre .nb {
          color: #67e8f9;
}

/* numbers */
pre .fn {
          color: #fbbf24;
}

/* functions */

/* ── Step List ────────────────────────────────────────────── */
ol.step-list {
          counter-reset: step-list-counter;
          list-style: none;
          padding-left: 0;
          display: grid;
          gap: 0.65rem;
          margin: 1rem 0 1.5rem;
}

ol.step-list li {
          counter-increment: step-list-counter;
          display: flex;
          gap: 0.9rem;
          align-items: flex-start;
          padding: 0.75rem 1rem;
          background: var(--slate-50);
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          font-size: 0.97rem;
          color: var(--slate-700);
}

ol.step-list li::before {
          content: counter(step-list-counter);
          min-width: 1.6rem;
          height: 1.6rem;
          background: var(--accent);
          color: #fff;
          font-size: 0.75rem;
          font-weight: 700;
          font-family: var(--font-sans);
          border-radius: 50%;
          display: flex;
          align-items: center;
          justify-content: center;
          flex-shrink: 0;
          margin-top: 0.1rem;
}

/* ── Key-Point Pill Tags ──────────────────────────────────── */
.tag-list {
          display: flex;
          flex-wrap: wrap;
          gap: 0.5rem;
          margin: 1rem 0 1.5rem;
}

.tag {
          font-size: 0.78rem;
          font-weight: 600;
          color: var(--slate-700);
          background: var(--slate-100);
          border: 1px solid var(--slate-200);
          padding: 0.25rem 0.7rem;
          border-radius: 100px;
          font-family: var(--font-sans);
          letter-spacing: 0.02em;
}

/* ── References ───────────────────────────────────────────── */
.references-list {
          list-style: none;
          padding: 0;
          display: grid;
          gap: 0.6rem;
}

.references-list li {
          font-size: 0.9rem;
          color: var(--slate-600);
          padding: 0.65rem 1rem;
          background: var(--slate-50);
          border: 1px solid var(--slate-200);
          border-radius: var(--radius);
          line-height: 1.5;
}

.references-list em {
          color: var(--slate-800);
          font-style: italic;
}

/* ── Footer ───────────────────────────────────────────────── */
.site-footer {
          background: var(--slate-900);
          color: var(--slate-400);
          font-size: 0.875rem;
          padding: 2rem 1.5rem;
          margin-top: 0;
          text-align: center;
}

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 768px) {
          .two-plane-grid {
                    grid-template-columns: 1fr;
          }

          .post-content h2 {
                    font-size: 1.3rem;
          }

          .post-title {
                    font-size: 1.6rem;
          }

          pre {
                    font-size: 0.8rem;
          }

          .data-table,
          .map-table {
                    font-size: 0.82rem;
          }

          .data-table td,
          .map-table td {
                    padding: 0.55rem 0.75rem;
          }

          .toc-box {
                    padding: 1.2rem;
          }
}

@media (max-width: 480px) {
          .nav-bar {
                    padding: 0.8rem 1rem;
          }

          .article-container {
                    padding-top: 2rem;
                    padding-bottom: 3rem;
          }

          .container {
                    padding: 0 1rem;
          }
}