/* qSIM Quantum Laboratory — Design System */
/* Light + Dark mode | Shadow-as-border | 8px spacing scale */
 :root {
    /* ── Colors (oklch for lightness accuracy, hex for compatibility) ── */
     --bg: #ffffff;
     --surface: #ffffff;
     --surface-tint: #fafafa;
     --fg: #171717;
     --fg-secondary: #4d4d4d;
     --fg-muted: #666666;
     --fg-placeholder: #808080;
     --border: #ebebeb;
     --border-light: #f5f5f5;
     --accent: #b8860b;
     --accent-hover: #9a7209;
     --accent-bg: #fffbeb;
     --accent-soft: rgba(184,134,11,0.08);
     --fg-inverse: #ffffff;
    /* ── Accent extended ── */
     --accent-glow: rgba(184,134,11,0.15);
     --accent-ring: rgba(184,134,11,0.3);
     --warm-gradient: linear-gradient(135deg, #b8860b 0%, #d4a843 50%, #b8860b 100%);
    /* ── Shadows (shadow-as-border) ── */
     --shadow-border: 0px 0px 0px 1px rgba(0,0,0,0.08);
     --shadow-border-lg: 0px 0px 0px 1px rgba(0,0,0,0.12);
     --shadow-card: 0px 0px 0px 1px rgba(0,0,0,0.08), 0px 2px 2px rgba(0,0,0,0.04), 0px 8px 8px -8px rgba(0,0,0,0.04);
     --shadow-card-hover: 0px 0px 0px 1px rgba(0,0,0,0.10), 0px 4px 4px rgba(0,0,0,0.04), 0px 12px 12px -8px rgba(0,0,0,0.06);
     --shadow-elevated: 0px 0px 0px 1px rgba(0,0,0,0.10), 0px 8px 16px rgba(0,0,0,0.06), 0px 24px 48px -12px rgba(0,0,0,0.08);
     --shadow-nav: 0px 0px 0px 1px rgba(0,0,0,0.04);
     --shadow-focus: 0 0 0 2px rgba(184,134,11,0.35);
    /* ── Typography ── */
     --font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
     --font-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, monospace;
     --font-display: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
     --text-xs: 12px;
     --text-sm: 14px;
     --text-md: 16px;
     --text-lg: 18px;
     --text-xl: 20px;
     --text-2xl: 24px;
     --text-3xl: 30px;
     --text-4xl: 36px;
     --text-5xl: 48px;
     --text-6xl: 60px;
    /* ── Spacing (8px base) ── */
     --s-1: 4px;
     --s-2: 8px;
     --s-3: 12px;
     --s-4: 16px;
     --s-5: 32px;
     --s-6: 36px;
     --s-7: 40px;
     --s-8: 48px;
     --s-9: 64px;
     --s-10: 96px;
     --s-11: 120px;
    /* ── Radius ── */
     --r-sm: 4px;
     --r-md: 6px;
     --r-lg: 8px;
     --r-xl: 12px;
     --r-pill: 9999px;
    /* ── Transitions ── */
     --ease: cubic-bezier(0.16, 1, 0.3, 1);
     --t-fast: 150ms;
     --t-base: 250ms;
     --t-slow: 400ms;
}
/* ─── Dark Mode ─── */
 [data-theme="dark"] {
     --bg: #141414;
     --surface: #1a1a1a;
     --surface-tint: #222;
     --fg: #e8e8e8;
     --fg-secondary: #a0a0a0;
     --fg-muted: #666;
     --fg-placeholder: #555;
     --border: #2a2a2a;
     --border-light: #1e1e1e;
     --accent: #d4a843;
     --accent-hover: #e0b855;
     --accent-bg: rgba(212,168,67,0.1);
     --accent-soft: rgba(212,168,67,0.08);
     --fg-inverse: #171717;
     --accent-glow: rgba(212,168,67,0.20);
     --accent-ring: rgba(212,168,67,0.35);
     --warm-gradient: linear-gradient(135deg, #d4a843 0%, #e0b855 50%, #d4a843 100%);
     --shadow-border: 0px 0px 0px 1px rgba(255,255,255,0.08);
     --shadow-border-lg: 0px 0px 0px 1px rgba(255,255,255,0.12);
     --shadow-card: 0px 0px 0px 1px rgba(255,255,255,0.08), 0px 2px 2px rgba(0,0,0,0.20), 0px 8px 8px -8px rgba(0,0,0,0.15);
     --shadow-card-hover: 0px 0px 0px 1px rgba(255,255,255,0.10), 0px 4px 4px rgba(0,0,0,0.25), 0px 12px 12px -8px rgba(0,0,0,0.20);
     --shadow-elevated: 0px 0px 0px 1px rgba(255,255,255,0.10), 0px 8px 16px rgba(0,0,0,0.30), 0px 24px 48px -12px rgba(0,0,0,0.25);
     --shadow-nav: 0px 0px 0px 1px rgba(255,255,255,0.04);
     --shadow-focus: 0 0 0 2px rgba(212,168,67,0.35);
}
/* ─── Reset & Base ─── */
 *, *::before, *::after {
     box-sizing: border-box;
}
 html {
     scroll-behavior: smooth;
     -webkit-text-size-adjust: 100%;
     color-scheme: light dark;
}
 body {
     margin: 0;
     background: var(--bg);
     color: var(--fg);
     font-family: var(--font-body);
     font-size: var(--text-md);
     line-height: 1.5;
     text-rendering: optimizeLegibility;
     -webkit-font-smoothing: antialiased;
     overflow-x: hidden;
     transition: background var(--t-slow) var(--ease), color var(--t-slow) var(--ease);
}
 img, svg {
     display: block;
     max-width: 100%;
}
 a {
     color: inherit;
     text-decoration: none;
     transition: color var(--t-fast) var(--ease);
}
 button {
     font: inherit;
     cursor: pointer;
     background: none;
     border: none;
     color: inherit;
}
 p {
     text-wrap: pretty;
}
 h1, h2, h3, h4 {
     text-wrap: balance;
}
 *:focus-visible {
     outline: 2px solid var(--accent);
     outline-offset: 2px;
     border-radius: var(--r-sm);
}
 ::-webkit-scrollbar {
     width: 5px;
}
 ::-webkit-scrollbar-track {
     background: transparent;
}
 ::-webkit-scrollbar-thumb {
     background: var(--border);
     border-radius: 3px;
}
 ::selection {
     background: var(--accent);
     color: var(--fg-inverse);
}
/* ═══════════════════════════════════════════════════════════════ KEYFRAMES (only what's used) ═══════════════════════════════════════════════════════════════ */
 @keyframes reveal {
     to {
         opacity: 1;
         transform: translateY(0);
    }
}
 @keyframes shimmer {
     0% {
         background-position: 200% 0;
    }
     100% {
         background-position: -200% 0;
    }
}
 @keyframes pulse-ring {
     0% {
         transform: scale(0.9);
         opacity: 0.6;
    }
     50% {
         transform: scale(1.1);
         opacity: 0.3;
    }
     100% {
         transform: scale(0.9);
         opacity: 0.6;
    }
}
/* ═══════════════════════════════════════════════════════════════ LAYOUT PRIMITIVES ═══════════════════════════════════════════════════════════════ */
 .container {
     max-width: 1200px;
     margin-inline: auto;
     padding-inline: var(--s-7);
}
 .section {
     padding-block: clamp(64px, 10vw, var(--s-11));
     position: relative;
}
 .stack {
     display: flex;
     flex-direction: column;
}
 .stack > * + * {
     margin-top: var(--s-4);
}
 .row-between {
     display: flex;
     align-items: center;
     justify-content: space-between;
     gap: var(--s-4);
}
 .grid-2 {
     display: grid;
     grid-template-columns: repeat(2, 1fr);
     gap: var(--s-5);
}
 .grid-3 {
     display: grid;
     grid-template-columns: repeat(3, 1fr);
     gap: var(--s-5);
}
 .grid-4 {
     display: grid;
     grid-template-columns: repeat(4, 1fr);
     gap: var(--s-5);
}
 @media (max-width: 1024px) {
     .grid-3 {
         grid-template-columns: repeat(2, 1fr);
    }
}
 @media (max-width: 768px) {
     .container {
         padding-inline: var(--s-4);
    }
     .grid-2, .grid-3 {
         grid-template-columns: 1fr;
    }
     .grid-4 {
         grid-template-columns: repeat(2, 1fr);
    }
}
 @media (max-width: 480px) {
     .grid-4 {
         grid-template-columns: 1fr;
    }
}
/* ═══════════════════════════════════════════════════════════════ SHARED UTILITY CLASSES (replaces inline styles) ═════════════════════════════════════════════════════════════ */
/* Flex helpers */
 .flex {
     display: flex;
}
 .flex-center {
     display: flex;
     align-items: center;
}
 .flex-between {
     display: flex;
     align-items: center;
     justify-content: space-between;
}
 .flex-wrap {
     flex-wrap: wrap;
}
/* Gap sizes */
 .gap-1 {
     gap: var(--s-1);
}
 .gap-2 {
     gap: var(--s-2);
}
 .gap-3 {
     gap: var(--s-3);
}
 .gap-4 {
     gap: var(--s-4);
}
 .gap-5 {
     gap: var(--s-5);
}
 .gap-6 {
     gap: var(--s-6);
}
 .gap-7 {
     gap: var(--s-7);
}
 .gap-8 {
     gap: var(--s-8);
}
 .gap-lg {
     gap: var(--s-9);
}
 .gap-xl {
     gap: var(--s-10);
}
/* Spacing helpers */
 .mt-0 {
     margin-top: 0;
}
 .mt-1 {
     margin-top: var(--s-1);
}
 .mt-2 {
     margin-top: var(--s-2);
}
 .mt-3 {
     margin-top: var(--s-3);
}
 .mt-4 {
     margin-top: var(--s-4);
}
 .mt-5 {
     margin-top: var(--s-5);
}
 .mb-0 {
     margin-bottom: 0;
}
 .mb-2 {
     margin-bottom: var(--s-2);
}
 .mb-3 {
     margin-bottom: var(--s-3);
}
 .mb-4 {
     margin-bottom: var(--s-4);
}
 .mi-auto {
     margin-inline: auto;
}
 .mt-auto {
     margin-top: auto;
}
/* Text helpers */
 .text-center {
     text-align: center;
}
 .text-sm {
     font-size: var(--text-sm);
     color: var(--fg-secondary);
}
 .text-muted {
     color: var(--fg-muted);
}
 .text-accent {
     color: var(--accent);
}
 .text-display {
     font-family: var(--font-display);
}
 .text-mono {
     font-family: var(--font-mono);
}
/* Max-width helpers */
 .max-15ch {
     max-width: 15ch;
}
 .max-280 {
     max-width: 280px;
}
 .max-300 {
     max-width: 300px;
}
 .max-380 {
     max-width: 380px;
}
 .max-500 {
     max-width: 500px;
}
 .max-520 {
     max-width: 520px;
}
 .max-760 {
     max-width: 760px;
}
/* Width helpers */
 .w-full {
     width: 100%;
}
/* Position helpers */
 .relative {
     position: relative;
}
/* Padding helpers */
 .pt-0 {
     padding-top: 0;
}
/* Opacity helpers */
 .opacity-60 {
     opacity: 0.6;
}
/* Line height */
 .leading-loose {
     line-height: 1.7;
}
/* ═══════════════════════════════════════════════════════════════ TYPOGRAPHY ═══════════════════════════════════════════════════════════════ */
 h1, .h1 {
     font-family: var(--font-display);
     font-size: clamp(48px, 8vw, 72px);
     line-height: 1.02;
     letter-spacing: -0.04em;
     margin: 0;
     font-weight: 400;
}
 h2, .h2 {
     font-family: var(--font-display);
     font-size: clamp(30px, 5vw, 40px);
     line-height: 1.1;
     letter-spacing: -0.02em;
     margin: 0;
     font-weight: 400;
}
 h3, .h3 {
     font-size: var(--text-2xl);
     font-weight: 500;
     line-height: 1.25;
     letter-spacing: -0.01em;
     margin: 0;
}
 .lead {
     font-size: var(--text-xl);
     line-height: 1.6;
     color: var(--fg-secondary);
     max-width: 50ch;
     margin: 0;
}
 .eyebrow {
     font-family: var(--font-mono);
     font-size: var(--text-sm);
     letter-spacing: 0.12em;
     text-transform: uppercase;
     color: var(--accent);
     margin: 0;
     font-weight: 500;
}
 .meta {
     font-family: var(--font-mono);
     font-size: var(--text-sm);
     color: var(--fg-muted);
     letter-spacing: 0.02em;
}
 .num {
     font-family: var(--font-mono);
     font-variant-numeric: tabular-nums;
}
/* ═══════════════════════════════════════════════════════════════ BUTTONS ═══════════════════════════════════════════════════════════════ */
 .btn {
     display: inline-flex;
     align-items: center;
     gap: var(--s-2);
     padding: var(--s-2) var(--s-4);
     background: var(--surface);
     color: var(--fg);
     font-size: var(--text-sm);
     font-weight: 500;
     border-radius: var(--r-md);
     box-shadow: var(--shadow-border);
     line-height: 1.43;
     transition: all var(--t-base) var(--ease);
     cursor: pointer;
}
 .btn:hover {
     box-shadow: var(--shadow-border-lg);
     transform: translateY(-2px);
}
 .btn:active {
     transform: translateY(0);
     transition-duration: var(--t-fast);
}
 .btn-primary {
     background: var(--fg);
     color: var(--bg);
     box-shadow: none;
}
 .btn-primary:hover {
     background: var(--fg);
     color: var(--bg);
     box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}
/* ─── Theme Toggle ─── */
 .theme-toggle {
     display: flex;
     align-items: center;
     justify-content: center;
     width: 36px;
     height: 36px;
     border-radius: var(--r-pill);
     cursor: pointer;
     transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
     color: var(--fg-muted);
     flex-shrink: 0;
}
 .theme-toggle:hover {
     color: var(--fg);
     transform: scale(1.1);
}
 .theme-toggle:active {
     transform: scale(0.9);
}
 .theme-toggle svg {
     width: 18px;
     height: 18px;
}
/* ═══ CANVAS BACKGROUND ═══ */
 #quantumCanvas {
     position: absolute;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     pointer-events: none;
     z-index: -1;
     opacity: 0.4;
}
 [data-theme="dark"] #quantumCanvas {
     opacity: 0.6;
}
/* ═══════════════════════════════════════════════════════════════ SKIP NAV ═══════════════════════════════════════════════════════════════ */
 .skip-nav {
     position: absolute;
     top: -100%;
     left: 0;
     z-index: 9999;
     padding: 12px 24px;
     background: var(--accent);
     color: var(--fg-inverse);
     font-size: var(--text-sm);
     font-weight: 600;
     text-decoration: none;
     border-radius: 0 0 var(--r-md) 0;
     transition: top 0.2s ease;
}
 .skip-nav:focus {
     top: 0;
     outline: 2px solid var(--fg-inverse);
     outline-offset: 2px;
}
/* ═══════════════════════════════════════════════════════════════ NAVIGATION ═══════════════════════════════════════════════════════════════ */
 .topnav {
     position: fixed;
     top: 0;
     left: 0;
     width: 100%;
     z-index: 100;
     background: rgba(255,255,255,0.85);
     backdrop-filter: blur(16px);
     -webkit-backdrop-filter: blur(16px);
     box-shadow: var(--shadow-nav);
     transition: background var(--t-base) var(--ease), box-shadow var(--t-base) var(--ease);
}
 [data-theme="dark"] .topnav {
     background: rgba(10,10,10,0.85);
}
 .topnav.scrolled {
     background: rgba(255,255,255,0.92);
     box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.04), 0px 2px 8px rgba(0,0,0,0.03);
}
 [data-theme="dark"] .topnav.scrolled {
     background: rgba(10,10,10,0.92);
     box-shadow: 0px 0px 0px 1px rgba(255,255,255,0.04), 0px 2px 8px rgba(0,0,0,0.15);
}
 .topnav-inner {
     display: flex;
     align-items: center;
     justify-content: space-between;
     padding-block: var(--s-3);
}
 .topnav .logo {
     display: flex;
     align-items: center;
     gap: var(--s-2);
     font-size: 15px;
     font-weight: 600;
     color: var(--fg);
     transition: opacity var(--t-fast);
}
 .topnav .logo:hover {
     opacity: 0.7;
}
 .topnav .logo img {
     height: 22px;
}
 .topnav nav {
     display: flex;
     align-items: center;
     gap: var(--s-5);
}
 .topnav nav a {
     font-size: var(--text-sm);
     font-weight: 500;
     color: var(--fg-muted);
     transition: color var(--t-fast) var(--ease);
     position: relative;
     padding: var(--s-1) 0;
}
 .topnav nav a::after {
     content: '';
     position: absolute;
     bottom: -2px;
     left: 0;
     width: 100%;
     height: 1px;
     background: var(--fg);
     transform: scaleX(0);
     transform-origin: right;
     transition: transform var(--t-base) var(--ease);
}
 .topnav nav a:hover, .topnav nav a.active {
     color: var(--fg);
}
 .topnav nav a.active::after {
     transform: scaleX(1);
     transform-origin: left;
}
 .topnav nav a.active::after {
     width: 4px;
     height: 4px;
     border-radius: 50%;
     background: var(--accent);
     bottom: -6px;
     left: 50%;
     transform: translateX(-50%);
}
 .topnav nav a:hover::after {
     width: 4px;
     height: 4px;
     border-radius: 50%;
     background: var(--fg);
     bottom: -6px;
     left: 50%;
     transform: translateX(-50%);
}
 .nav-toggle {
     display: none;
     border: none;
     color: var(--fg);
     font-size: 20px;
     cursor: pointer;
     padding: var(--s-1);
     background: none;
}
 @media (max-width: 768px) {
     .nav-toggle {
         display: block;
    }
     .topnav nav {
         display: none;
         position: absolute;
         top: 100%;
         left: 0;
         right: 0;
         background: var(--bg);
         flex-direction: column;
         padding: var(--s-4);
         box-shadow: var(--shadow-border);
         gap: 0;
    }
     .topnav nav.open {
         display: flex;
    }
     .topnav nav a {
         padding: var(--s-3) 0;
    }
     .topnav nav a::after {
         display: none;
    }
     .topnav .btn {
         display: none;
    }
}
/* ═══════════════════════════════════════════════════════════════ HERO ═══════════════════════════════════════════════════════════════ */
 .hero {
     min-height: 90vh;
     display: flex;
     align-items: center;
     text-align: center;
     position: relative;
     overflow: hidden;
}
 .hero-content {
     max-width: 800px;
     margin-inline: auto;
     position: relative;
     z-index: 2;
     align-items: center;
}
 .hero-badge {
     display: inline-flex;
     align-items: center;
     gap: 10px;
     font-family: var(--font-mono);
     font-size: var(--text-sm);
     text-transform: uppercase;
     letter-spacing: 0.1em;
     color: var(--fg-secondary);
     margin-bottom: var(--s-2);
     align-self: center;
}
 .hero-badge::before, .hero-badge::after {
     content: '';
     width: 24px;
     height: 1px;
     background: var(--accent);
}
 .hero-visual {
     position: absolute;
     top: 50%;
     left: 50%;
     transform: translate(-50%, -50%);
     width: 600px;
     height: 600px;
     background: radial-gradient(circle, var(--accent-soft) 0%, transparent 70%);
     opacity: 0.5;
     pointer-events: none;
     z-index: 1;
}
 .hero-rings {
     position: absolute;
     top: 50%;
     left: 50%;
     transform: translate(-50%, -50%);
     width: 700px;
     height: 700px;
     pointer-events: none;
     z-index: 0;
}
 .hero-ring {
     position: absolute;
     top: 50%;
     left: 50%;
     border: 1px solid var(--accent-soft);
     border-radius: 50%;
     transform: translate(-50%, -50%);
     animation: pulse-ring 6s ease-in-out infinite;
}
 .hero-ring:nth-child(1) {
     width: 400px;
     height: 400px;
     animation-delay: 0s;
}
 .hero-ring:nth-child(2) {
     width: 550px;
     height: 550px;
     animation-delay: 1s;
}
 .hero-ring:nth-child(3) {
     width: 700px;
     height: 700px;
     animation-delay: 2s;
}
/* ═══════════════════════════════════════════════════════════════ CARDS ═══════════════════════════════════════════════════════════════ */
 .card {
     background: var(--surface);
     border-radius: var(--r-lg);
     box-shadow: var(--shadow-card);
     transition: box-shadow var(--t-base) var(--ease), transform var(--t-base) var(--ease);
     overflow: hidden;
}
 .card:hover {
     box-shadow: var(--shadow-card-hover);
     transform: translateY(-4px);
}
 .pillar-card {
     padding: var(--s-5);
     background: var(--surface);
     border-radius: var(--r-lg);
     box-shadow: var(--shadow-card);
     transition: all var(--t-base) var(--ease);
     position: relative;
     overflow: hidden;
}
 .pillar-card:hover {
     box-shadow: var(--shadow-card-hover);
     transform: translateY(-4px);
     border-left: 3px solid var(--accent);
     padding-left: calc(var(--s-5) - 3px);
}
 .pillar-card .mark {
     color: var(--accent);
     margin-bottom: var(--s-4);
     opacity: 0.5;
     transition: opacity var(--t-base) var(--ease);
     display: inline-flex;
     align-items: center;
     justify-content: center;
}
 .pillar-card:hover .mark {
     opacity: 1;
     background: var(--accent-soft);
}
/* ─── Card Link ─── */
 .card-link {
     display: block;
     padding: var(--s-5);
     background: var(--surface);
     box-shadow: var(--shadow-card);
     border-radius: var(--r-lg);
     transition: all var(--t-base) var(--ease);
     position: relative;
     overflow: hidden;
}
 .card-link::before {
     content: '';
     position: absolute;
     left: 0;
     top: 0;
     bottom: 0;
     width: 3px;
     background: var(--accent);
     opacity: 0;
     transition: opacity var(--t-base) var(--ease);
}
 .card-link:hover {
     box-shadow: var(--shadow-card-hover);
     transform: translateY(-4px);
}
 .card-link:hover::before {
     opacity: 1;
}
 .card-link > * {
     position: relative;
     z-index: 1;
}
/* ═══════════════════════════════════════════════════════════════ STATS ═══════════════════════════════════════════════════════════════ */
 .stat-row {
     padding-block: var(--s-8);
     box-shadow: 0 -1px 0 0 var(--border), 0 1px 0 0 var(--border);
}
 .stat-num {
     font-family: var(--font-display);
     font-size: var(--text-6xl);
     font-weight: 600;
     color: var(--fg);
     line-height: 1;
     letter-spacing: -0.03em;
}
 .stat-label {
     font-size: var(--text-xs);
     color: var(--fg-muted);
     text-transform: uppercase;
     letter-spacing: 0.1em;
     margin-top: var(--s-2);
     font-weight: 500;
     font-family: var(--font-mono);
}
 .stat-divider {
     width: 1px;
     height: 60px;
     background: linear-gradient(to bottom, transparent, var(--border), transparent);
     align-self: center;
}
 @media (max-width: 768px) {
     .stat-divider {
         display: none;
    }
}
/* ═══════════════════════════════════════════════════════════════ FOOTER ═══════════════════════════════════════════════════════════════ */
 .footer {
     padding-block: var(--s-9) var(--s-6);
     border-top: 1px solid var(--accent);
     color: var(--fg-muted);
     font-size: var(--text-sm);
}
 .footer a {
     color: var(--fg-muted);
     transition: color var(--t-fast);
}
 .footer a:hover {
     color: var(--fg);
}
 .footer .logo {
     font-size: 15px;
     font-weight: 600;
     color: var(--fg);
     margin-bottom: var(--s-2);
     display: inline-flex;
     align-items: center;
     gap: var(--s-2);
}
 .footer .logo img {
     height: 20px;
}
 .footer h4, .footer .footer-heading {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.12em;
     text-transform: uppercase;
     color: var(--fg-muted);
     margin: 0 0 var(--s-4);
     font-weight: 500;
}
 .footer-links {
     list-style: none;
     display: flex;
     flex-direction: column;
     gap: var(--s-2);
     padding: 0;
     margin: 0;
}
 .footer-links a {
     font-size: var(--text-sm);
     transition: all var(--t-fast) var(--ease);
}
 .footer-links a:hover {
     color: var(--accent);
     transform: translateX(4px);
}
 .footer-bottom {
     margin-top: var(--s-8);
     padding-top: var(--s-5);
     border-top: 1px solid var(--border);
     display: flex;
     justify-content: space-between;
     align-items: center;
     flex-wrap: wrap;
     gap: var(--s-4);
}
 .footer-bottom p {
     margin: 0;
     color: var(--fg-muted);
     font-size: var(--text-sm);
}
/* ─── Footer Grid ─── */
 .footer-grid {
     display: grid;
     grid-template-columns: 1.5fr 1fr 1fr 1fr;
     gap: var(--s-8);
     align-items: start;
}
 .footer-brand {
     padding-top: 4px;
}
 .footer-brand .logo {
     margin-top: 0;
}
 @media (max-width: 768px) {
     .footer-grid {
         grid-template-columns: 1fr 1fr;
    }
}
 @media (max-width: 480px) {
     .footer-grid {
         grid-template-columns: 1fr;
    }
}
/* ─── Card Link Arrow ─── */
 .card-link-arrow {
     font-size: 14px;
     color: var(--accent);
     font-weight: 500;
     display: inline-flex;
     align-items: center;
     gap: 4px;
     transition: gap var(--t-fast) var(--ease);
}
 .card-link:hover .card-link-arrow {
     gap: 8px;
}
/* ─── Page Headers ─── */
 .page-hero {
     padding-top: clamp(120px, 15vw, 180px);
     padding-bottom: clamp(48px, 6vw, var(--s-8));
     overflow: hidden;
}
/* ═══════════════════════════════════════════════════════════════ TEAM CARD - PI PROFILE ═══════════════════════════════════════════════════════════════ */
 .team-card {
     background: var(--surface);
     border-radius: var(--r-lg);
     box-shadow: var(--shadow-card);
     overflow: hidden;
     transition: all 0.6s var(--ease);
     position: relative;
     cursor: pointer;
}
 .team-card:hover {
     box-shadow: var(--shadow-elevated);
     transform: translateY(-6px);
}
 .portrait-wrap {
     position: relative;
     overflow: hidden;
}
 .portrait {
     width: 100%;
     aspect-ratio: 2/3;
     object-fit: cover;
     transition: transform 12s var(--ease);
     display: block;
}
 .team-card:hover .portrait {
     transform: scale(1.06);
}
 .portrait-overlay {
     position: absolute;
     inset: 0;
     background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.5) 40%, transparent 70%);
     display: flex;
     flex-direction: column;
     justify-content: flex-end;
     padding: var(--s-6);
     color: #fff;
     z-index: 2;
     transition: padding-bottom 0.6s var(--ease);
}
 .team-card:hover .portrait-overlay {
     padding-bottom: var(--s-8);
}
 [data-theme="dark"] .portrait-overlay {
     background: linear-gradient(to top, rgba(0,0,0,0.92) 0%, rgba(0,0,0,0.55) 40%, transparent 70%);
}
 .portrait-overlay .overlay-role {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.12em;
     text-transform: uppercase;
     color: var(--accent);
     margin-bottom: var(--s-1);
     font-weight: 500;
}
 .portrait-overlay .overlay-name {
     font-family: var(--font-display);
     font-size: var(--text-2xl);
     letter-spacing: -0.01em;
     color: #fff;
     margin-bottom: var(--s-2);
     line-height: 1.2;
}
 .portrait-overlay .overlay-bio {
     font-size: var(--text-sm);
     line-height: 1.6;
     color: rgba(255,255,255,0.8);
     max-width: 95%;
}
 .portrait-overlay .overlay-extra {
     max-height: 0;
     overflow: hidden;
     opacity: 0;
     transition: max-height 0.8s var(--ease), opacity 0.6s ease 0.15s;
}
 .team-card:hover .portrait-overlay .overlay-extra {
     max-height: 300px;
     opacity: 1;
}
 .portrait-overlay .overlay-divider {
     width: 100%;
     height: 1px;
     background: linear-gradient(90deg, rgba(255,255,255,0.15), transparent);
     margin: var(--s-4) 0;
}
 .portrait-overlay .overlay-inquiry-label {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.12em;
     text-transform: uppercase;
     color: var(--accent);
     margin-bottom: var(--s-1);
     font-weight: 500;
}
 .portrait-overlay .overlay-inquiry {
     font-family: var(--font-display);
     font-size: var(--text-sm);
     color: rgba(255,255,255,0.85);
     line-height: 1.5;
     margin-bottom: var(--s-4);
}
 .portrait-overlay .overlay-stats {
     display: flex;
     gap: var(--s-5);
     margin-bottom: var(--s-4);
}
 .portrait-overlay .overlay-stat .val {
     font-family: var(--font-display);
     font-size: var(--text-2xl);
     color: #fff;
     line-height: 1;
     letter-spacing: -0.02em;
}
 .portrait-overlay .overlay-stat .label {
     font-size: var(--text-xs);
     color: rgba(255,255,255,0.65);
     text-transform: uppercase;
     letter-spacing: 0.1em;
     font-weight: 500;
     font-family: var(--font-mono);
}
 .portrait-overlay .overlay-email {
     display: inline-flex;
     align-items: center;
     gap: 6px;
     color: rgba(255,255,255,0.6);
     font-size: var(--text-sm);
     transition: color var(--t-fast);
}
 .portrait-overlay .overlay-email:hover {
     color: var(--accent);
}
 .portrait-overlay .overlay-email svg {
     width: 14px;
     height: 14px;
}
 .team-card .content {
     display: none;
}
/* ═══════════════════════════════════════════════════════════════ MEMBER CARD - COLLABORATORS / FORMER PIs ═══════════════════════════════════════════════════════════════ */
 .member-card {
     background: var(--surface);
     border-radius: var(--r-lg);
     box-shadow: var(--shadow-card);
     overflow: hidden;
     border-left: 3px solid transparent;
     transition: box-shadow 0.4s var(--ease), transform 0.4s var(--ease), border-left var(--t-base) var(--ease);
}
 .member-card:hover {
     box-shadow: var(--shadow-elevated);
     transform: translateY(-4px);
     border-left: 3px solid var(--accent);
}
 .member-photo {
     width: 100%;
     height: 220px;
     object-fit: cover;
     transition: transform 0.6s var(--ease);
}
 .member-card:hover .member-photo {
     transform: scale(1.04);
}
 .member-info {
     padding: var(--s-5);
}
 .member-name {
     font-family: var(--font-display);
     font-size: var(--text-xl);
     letter-spacing: -0.01em;
     margin-bottom: var(--s-1);
     transition: color var(--t-base);
}
 .member-card:hover .member-name {
     color: var(--accent);
}
 .member-role {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.08em;
     text-transform: uppercase;
     color: var(--fg-muted);
     font-weight: 500;
}
 .member-card-horizontal {
     display: flex;
     align-items: stretch;
     gap: 0;
}
 .member-card-horizontal .member-photo {
     width: 260px;
     height: 100%;
     min-height: 200px;
     flex-shrink: 0;
}
 .member-card-horizontal .member-info {
     flex: 1;
     display: flex;
     flex-direction: column;
     justify-content: center;
}
 @media (max-width: 600px) {
     .member-card-horizontal {
         flex-direction: column;
    }
     .member-card-horizontal .member-photo {
         width: 100%;
         height: 220px;
         min-height: auto;
    }
}
/* Social links (used in team page) */
 .social-links {
     display: flex;
     gap: var(--s-3);
}
 .social-link {
     display: flex;
     align-items: center;
     gap: var(--s-2);
     font-size: var(--text-sm);
     color: var(--fg-muted);
     transition: color var(--t-fast);
}
 .social-link:hover {
     color: var(--accent);
}
 .social-link svg {
     width: 16px;
     height: 16px;
}
/* ═══════════════════════════════════════════════════════════════ STUDENT CARD ═══════════════════════════════════════════════════════════════ */
 .student-card {
     background: var(--surface);
     border-radius: var(--r-xl);
     box-shadow: var(--shadow-card);
     overflow: hidden;
     transition: all var(--t-slow) var(--ease);
     position: relative;
}
 .student-card:hover {
     box-shadow: var(--shadow-elevated);
     transform: translateY(-6px);
}
 .student-photo-wrap {
     padding: var(--s-5) var(--s-5) 0;
     position: relative;
}
 .student-photo {
     width: 100%;
     aspect-ratio: 1/1;
     object-fit: cover;
     border-radius: var(--r-lg);
     display: block;
     transition: transform var(--t-slow) var(--ease);
}
 .student-card:hover .student-photo {
     transform: scale(1.04);
}
 .student-info {
     text-align: center;
     padding: var(--s-4) var(--s-4) var(--s-3);
}
 .student-name {
     font-family: var(--font-display);
     font-size: var(--text-xl);
     color: var(--fg);
     letter-spacing: -0.01em;
     line-height: 1.2;
     margin-bottom: var(--s-1);
}
 .student-role {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     color: var(--fg-muted);
     text-transform: uppercase;
     letter-spacing: 0.12em;
     font-weight: 500;
}
 .student-divider {
     height: 1px;
     background: var(--border);
     margin: 0 var(--s-5);
}
 .student-actions {
     display: flex;
     justify-content: center;
     gap: var(--s-3);
     padding: var(--s-4) var(--s-5) var(--s-5);
}
 .student-action-btn {
     display: flex;
     align-items: center;
     justify-content: center;
     width: 36px;
     height: 36px;
     border-radius: 50%;
     border: 1px solid var(--border);
     background: var(--surface-tint);
     color: var(--fg-muted);
     transition: all var(--t-base) var(--ease);
}
 .student-action-btn:hover {
     border-color: var(--accent);
     color: var(--accent);
     transform: translateY(-3px);
}
 .student-action-btn svg {
     width: 16px;
     height: 16px;
}
/* No-photo placeholder */
 .student-card-no-photo {
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: center;
     min-height: 280px;
}
 .no-photo-avatar {
     width: 120px;
     height: 120px;
     border-radius: 50%;
     background: var(--surface-tint);
     border: 2px solid var(--border);
     display: flex;
     align-items: center;
     justify-content: center;
     margin-bottom: var(--s-4);
     transition: all var(--t-slow) var(--ease);
}
 .no-photo-avatar svg {
     width: 48px;
     height: 48px;
     color: var(--fg-muted);
     opacity: 0.4;
}
 .student-card:hover .no-photo-avatar {
     border-color: var(--accent);
     background: var(--accent-soft);
     transform: scale(1.05);
}
 .student-card:hover .no-photo-avatar svg {
     color: var(--accent);
     opacity: 0.7;
}
/* ═══════════════════════════════════════════════════════════════ TEAM GRID ═══════════════════════════════════════════════════════════════ */
 .team-grid {
     display: grid;
     grid-template-columns: repeat(3, 1fr);
     gap: var(--s-7);
}
 @media (max-width: 1024px) {
     .team-grid {
         grid-template-columns: repeat(2, 1fr);
    }
}
 @media (max-width: 768px) {
     .team-grid {
         grid-template-columns: 1fr;
    }
}
/* ═══════════════════════════════════════════════════════════════ PUBLICATIONS TABLE ═══════════════════════════════════════════════════════════════ */
 .filter-bar {
     display: flex;
     gap: var(--s-4);
     align-items: center;
     margin-bottom: var(--s-5);
     flex-wrap: wrap;
}
 .search-input {
     flex: 1;
     min-width: 200px;
     padding: var(--s-2) var(--s-4);
     background: var(--surface);
     box-shadow: var(--shadow-border);
     color: var(--fg);
     font-family: var(--font-mono);
     font-size: var(--text-sm);
     border-radius: var(--r-md);
     border: none;
     transition: all var(--t-base) var(--ease);
}
 .search-input:focus {
     outline: none;
     box-shadow: var(--shadow-focus), var(--shadow-border);
}
 .search-input::placeholder {
     color: var(--fg-placeholder);
}
 .filter-btn {
     padding: var(--s-1) var(--s-3);
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.08em;
     text-transform: uppercase;
     box-shadow: var(--shadow-border);
     color: var(--fg-muted);
     background: var(--surface);
     border-radius: var(--r-md);
     font-weight: 500;
     border: none;
     transition: all var(--t-base) var(--ease);
}
 .filter-btn:hover {
     box-shadow: var(--shadow-border-lg);
     color: var(--fg);
}
 .filter-btn.active {
     box-shadow: var(--shadow-focus), var(--shadow-border);
     color: var(--fg);
     background: var(--accent-soft);
}
 .ds-table {
     width: 100%;
     border-collapse: collapse;
}
 .ds-table th {
     text-align: left;
     padding: var(--s-4);
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.1em;
     text-transform: uppercase;
     color: var(--fg-muted);
     font-weight: 500;
     border-bottom: 1px solid var(--border);
}
 .ds-table td {
     padding: var(--s-4);
     border-bottom: 1px solid var(--border-light);
     vertical-align: top;
     font-size: var(--text-sm);
}
 .ds-table tr:hover td {
     background: var(--surface-tint);
}
 .ds-table td:first-child {
     border-left: 3px solid transparent;
}
 .ds-table tr:hover td:first-child {
     border-left-color: var(--accent);
}
/* ═══ PUBLICATION CARDS ═══ */
 .pub-section {
     break-inside: avoid;
}
 .pub-card {
     padding: 12px 16px;
     background: var(--surface);
     box-shadow: var(--shadow-card);
     border-radius: var(--r-lg);
     transition: all var(--t-base) var(--ease);
}
 .pub-card:hover {
     box-shadow: var(--shadow-card-hover);
}
 .ds-table tbody tr:nth-child(even) td {
     background: var(--surface-tint);
}
 .ds-table tr:hover td {
     background: var(--accent-soft) !important;
}
 @media (max-width: 768px) {
     .ds-table th:nth-child(3), .ds-table td:nth-child(3) {
         display: none;
    }
}
/* ═══════════════════════════════════════════════════════════════ NEWS PAGE ═══════════════════════════════════════════════════════════════ */
 .news-split {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: var(--s-9);
}
 .news-entry {
     padding: var(--s-5) 0;
     border-bottom: 1px solid var(--border);
     transition: all var(--t-base) var(--ease);
     position: relative;
}
 .news-entry:last-child {
     border-bottom: none;
}
 .news-entry::before {
     content: '';
     position: absolute;
     left: 0;
     top: 0;
     bottom: 0;
     width: 2px;
     background: var(--accent);
     opacity: 0;
     transition: opacity var(--t-base) var(--ease);
}
 .news-entry:hover {
     padding-left: var(--s-3);
}
 .news-entry:hover::before {
     opacity: 1;
}
 .news-entry h3 {
     font-family: var(--font-display);
     font-size: var(--text-lg);
     line-height: 1.35;
     margin: var(--s-2) 0;
     transition: color var(--t-fast);
     letter-spacing: -0.01em;
}
 .news-entry h3:hover {
     color: var(--accent);
}
 .news-entry p {
     color: var(--fg-secondary);
     font-size: var(--text-sm);
     line-height: 1.6;
     margin: 0;
}
 .news-entry .meta {
     font-size: var(--text-sm);
     color: var(--fg-muted);
}
 .source-tag {
     display: inline-block;
     padding: 2px var(--s-2);
     background: var(--surface-tint);
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.04em;
     text-transform: uppercase;
     color: var(--fg-muted);
     margin-left: var(--s-2);
     border-radius: var(--r-sm);
     font-weight: 500;
}
 .news-entry:hover .source-tag {
     background: var(--accent-soft);
     color: var(--accent);
}
 .lab-news-panel {
     padding: var(--s-5);
     background: var(--surface);
     box-shadow: var(--shadow-card);
     border-radius: var(--r-lg);
     position: sticky;
     top: 80px;
     border-top: 4px solid var(--accent);
}
 @media (max-width: 920px) {
     .news-split {
         grid-template-columns: 1fr;
    }
     .lab-news-panel {
         position: static;
    }
}
/* ═══════════════════════════════════════════════════════════════ CONTACT PAGE ═══════════════════════════════════════════════════════════════ */
 .contact-grid {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: var(--s-9);
     align-items: start;
}
 @media (max-width: 920px) {
     .contact-grid {
         grid-template-columns: 1fr;
    }
}
 .form-group {
     margin-bottom: var(--s-5);
}
 .form-label {
     display: block;
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.12em;
     text-transform: uppercase;
     color: var(--fg-muted);
     margin-bottom: var(--s-2);
     font-weight: 500;
}
 .form-input, .form-textarea, .form-select {
     width: 100%;
     padding: var(--s-3) var(--s-4);
     background: var(--surface);
     box-shadow: var(--shadow-border);
     color: var(--fg);
     font-family: var(--font-body);
     font-size: var(--text-md);
     border-radius: var(--r-md);
     border: none;
     transition: all var(--t-base) var(--ease);
     line-height: 1.5;
}
 .form-input:focus, .form-textarea:focus, .form-select:focus {
     outline: none;
     box-shadow: var(--shadow-focus), var(--shadow-border-lg);
}
 .form-input::placeholder, .form-textarea::placeholder {
     color: var(--fg-placeholder);
}
 .form-textarea {
     min-height: 160px;
     resize: vertical;
}
 .form-select {
     appearance: none;
     background-image: url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23666666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
     background-repeat: no-repeat;
     background-position: right var(--s-4) center;
     padding-right: var(--s-8);
     cursor: pointer;
}
 .form-row {
     display: grid;
     grid-template-columns: 1fr 1fr;
     gap: var(--s-4);
}
 @media (max-width: 600px) {
     .form-row {
         grid-template-columns: 1fr;
    }
}
 .btn-submit {
     display: inline-flex;
     align-items: center;
     justify-content: center;
     gap: var(--s-2);
     padding: var(--s-3) var(--s-6);
     background: var(--fg);
     color: var(--bg);
     font-size: var(--text-sm);
     font-weight: 500;
     border-radius: var(--r-md);
     border: none;
     cursor: pointer;
     transition: all var(--t-base) var(--ease);
     width: 100%;
}
 .btn-submit:hover {
     box-shadow: 0 4px 16px rgba(0,0,0,0.15);
     transform: translateY(-2px);
}
 .btn-submit:active {
     transform: translateY(0);
}
 .btn-submit svg {
     width: 16px;
     height: 16px;
}
 .form-status {
     display: none;
     padding: var(--s-4);
     border-radius: var(--r-md);
     margin-top: var(--s-4);
     font-size: var(--text-sm);
     line-height: 1.6;
}
 .form-status.success {
     display: block;
     background: var(--accent-soft);
     color: var(--accent);
}
 .contact-info-stack {
     display: flex;
     flex-direction: column;
     gap: var(--s-5);
}
 .contact-info-card {
     padding: var(--s-5);
     background: var(--surface);
     box-shadow: var(--shadow-card);
     border-radius: var(--r-lg);
     transition: all var(--t-base) var(--ease);
}
 .contact-info-card:hover {
     box-shadow: var(--shadow-card-hover);
     transform: translateY(-2px);
}
 .contact-info-card .info-icon {
     display: flex;
     align-items: center;
     justify-content: center;
     width: 44px;
     height: 44px;
     border-radius: 50%;
     background: var(--accent-soft);
     color: var(--accent);
     margin-bottom: var(--s-3);
     transition: all var(--t-base) var(--ease);
}
 .contact-info-card:hover .info-icon {
     background: var(--accent);
     color: var(--fg-inverse);
     transform: scale(1.05);
}
 .contact-info-card .info-icon svg {
     width: 20px;
     height: 20px;
}
 .contact-info-card h4 {
     font-family: var(--font-display);
     font-size: var(--text-lg);
     margin: 0 0 var(--s-1);
     letter-spacing: -0.01em;
}
 .contact-info-card p {
     color: var(--fg-secondary);
     font-size: var(--text-sm);
     line-height: 1.6;
     margin: 0;
}
 .contact-info-card a {
     color: var(--accent);
     font-weight: 500;
     transition: color var(--t-fast);
}
 .contact-info-card a:hover {
     color: var(--accent-hover);
}
 .map-wrap {
     width: 100%;
     height: 240px;
     background: var(--surface-tint);
     box-shadow: var(--shadow-border);
     border-radius: var(--r-lg);
     overflow: hidden;
     position: relative;
}
 .map-wrap iframe {
     width: 100%;
     height: 100%;
     border: 0;
     border-radius: var(--r-lg);
}
/* ═══════════════════════════════════════════════════════════════ SECTION DIVIDER / ACCENT LINE ═══════════════════════════════════════════════════════════════ */
 .section-divider {
     height: 1px;
     background: linear-gradient(90deg, transparent, var(--accent) 50%, transparent);
     opacity: 0.6;
}
 section.section-divider {
     height: auto;
     background: none;
     opacity: 1;
     box-shadow: 0 -1px 0 0 var(--border), 0 1px 0 0 var(--border);
}
 .accent-line {
     height: 1px;
     background: linear-gradient(90deg, transparent, var(--accent) 50%, transparent);
     opacity: 0.6;
}
/* ═══════════════════════════════════════════════════════════════ PUBLICATIONS PAGE — Redesigned ═══════════════════════════════════════════════════════════════ */
/* ─── Sticky Filter Bar ─── */
 .pub-filters {
     position: sticky;
     top: 52px;
    /* below nav */
     z-index: 50;
     background: var(--bg);
     padding-block: var(--s-4);
     border-bottom: 1px solid var(--border-light);
     transition: box-shadow var(--t-base) var(--ease);
}
 .pub-filters.is-stuck {
     box-shadow: 0 4px 16px rgba(0,0,0,0.06);
}
 [data-theme="dark"] .pub-filters.is-stuck {
     box-shadow: 0 4px 16px rgba(0,0,0,0.30);
}
 .filter-bar-inner {
     display: flex;
     flex-direction: column;
     gap: var(--s-3);
}
 .filter-search-wrap {
     position: relative;
     flex: 1;
}
 .filter-search-icon {
     position: absolute;
     left: 14px;
     top: 50%;
     transform: translateY(-50%);
     color: var(--fg-placeholder);
     pointer-events: none;
}
 .filter-search-input {
     width: 100%;
     padding: var(--s-2) var(--s-4) var(--s-2) 40px;
     background: var(--surface);
     box-shadow: var(--shadow-border);
     color: var(--fg);
     font-family: var(--font-mono);
     font-size: var(--text-sm);
     border-radius: var(--r-md);
     border: none;
     transition: all var(--t-base) var(--ease);
}
 .filter-search-input:focus {
     outline: none;
     box-shadow: var(--shadow-focus), var(--shadow-border);
}
 .filter-search-input::placeholder {
     color: var(--fg-placeholder);
}
 .filter-group {
     display: flex;
     flex-wrap: wrap;
     gap: var(--s-2);
}
 .filter-chip {
     padding: 4px 12px;
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.06em;
     text-transform: uppercase;
     box-shadow: var(--shadow-border);
     color: var(--fg-muted);
     background: var(--surface);
     border-radius: var(--r-pill);
     font-weight: 500;
     border: none;
     cursor: pointer;
     transition: all var(--t-base) var(--ease);
     white-space: nowrap;
}
 .filter-chip:hover {
     box-shadow: var(--shadow-border-lg);
     color: var(--fg);
     transform: translateY(-1px);
}
 .filter-chip.active {
     box-shadow: var(--shadow-focus), var(--shadow-border);
     color: var(--accent);
     background: var(--accent-soft);
}
 .filter-results-meta {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     color: var(--fg-muted);
     margin: var(--s-2) 0 0;
     letter-spacing: 0.04em;
}
/* ─── Author Quick-Jump Chips ─── */
 .pub-authors-bar {
     padding-top: var(--s-5);
}
 .author-chips {
     display: flex;
     flex-wrap: wrap;
     gap: var(--s-2);
}
 .author-chip {
     display: inline-flex;
     align-items: center;
     gap: var(--s-2);
     padding: 6px 14px 6px 6px;
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     letter-spacing: 0.04em;
     box-shadow: var(--shadow-border);
     color: var(--fg-muted);
     background: var(--surface);
     border-radius: var(--r-pill);
     font-weight: 500;
     border: none;
     cursor: pointer;
     transition: all var(--t-base) var(--ease);
     white-space: nowrap;
}
 .author-chip:hover {
     box-shadow: var(--shadow-border-lg);
     color: var(--fg);
     transform: translateY(-1px);
}
 .author-chip.active {
     box-shadow: var(--shadow-focus), var(--shadow-border);
     color: var(--accent);
     background: var(--accent-soft);
}
 .author-chip-avatar {
     width: 24px;
     height: 24px;
     border-radius: 50%;
     background-size: cover;
     background-position: center;
     flex-shrink: 0;
}
/* ─── Publication Entry (single-column full-width) ─── */
 .pub-list {
     display: flex;
     flex-direction: column;
     gap: var(--s-3);
}
 .pub-entry {
     background: var(--surface);
     box-shadow: var(--shadow-card);
     border-radius: var(--r-lg);
     transition: all var(--t-base) var(--ease);
     overflow: hidden;
}
 .pub-entry:hover {
     box-shadow: var(--shadow-card-hover);
}
 .pub-entry.hidden {
     display: none;
}
 .pub-entry-inner {
     display: flex;
     align-items: flex-start;
     gap: var(--s-4);
     padding: var(--s-5);
}
 .pub-entry-main {
     flex: 1;
     min-width: 0;
}
 .pub-entry-header {
     display: flex;
     align-items: center;
     gap: var(--s-3);
     margin-bottom: var(--s-2);
}
 .pub-year {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     font-weight: 500;
     color: var(--accent);
     letter-spacing: 0.06em;
     flex-shrink: 0;
}
 .pub-journal {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     color: var(--fg-muted);
     letter-spacing: 0.02em;
     white-space: nowrap;
     overflow: hidden;
     text-overflow: ellipsis;
}
 .pub-title {
     font-family: var(--font-display);
     font-size: var(--text-lg);
     line-height: 1.35;
     letter-spacing: -0.01em;
     margin: 0 0 var(--s-2);
     color: var(--fg);
     font-weight: 400;
}
 .pub-authors {
     font-size: var(--text-sm);
     color: var(--fg-secondary);
     line-height: 1.6;
     margin: 0;
}
 .pub-author-link {
     color: var(--fg-secondary);
     text-decoration: none;
     border-bottom: 1px solid transparent;
     transition: all var(--t-fast) var(--ease);
     cursor: pointer;
}
 .pub-author-link:hover {
     color: var(--accent);
     border-bottom-color: var(--accent);
}
/* ─── Action Buttons (arXiv / DOI) ─── */
 .pub-entry-actions {
     display: flex;
     flex-direction: column;
     gap: var(--s-2);
     flex-shrink: 0;
}
 .pub-action-btn {
     display: inline-flex;
     align-items: center;
     gap: 6px;
     padding: 6px 14px;
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     font-weight: 500;
     letter-spacing: 0.04em;
     border-radius: var(--r-md);
     text-decoration: none;
     white-space: nowrap;
     transition: all var(--t-base) var(--ease);
     border: 1px solid transparent;
}
 .pub-action-arxiv {
     background: var(--surface-tint);
     color: var(--fg-secondary);
     border-color: var(--border);
}
 .pub-action-arxiv:hover {
     background: var(--accent-soft);
     color: var(--accent);
     border-color: var(--accent);
     transform: translateY(-1px);
     box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
 .pub-action-doi {
     background: var(--surface-tint);
     color: var(--fg-secondary);
     border-color: var(--border);
}
 .pub-action-doi:hover {
     background: var(--accent-soft);
     color: var(--accent);
     border-color: var(--accent);
     transform: translateY(-1px);
     box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
/* ─── Empty State ─── */
 .pub-empty {
     text-align: center;
     padding: var(--s-10) 0;
}
/* ─── Author Profiles Grid ─── */
 .pub-author-grid {
     display: grid;
     grid-template-columns: repeat(2, 1fr);
     gap: var(--s-4);
}
 @media (max-width: 768px) {
     .pub-author-grid {
         grid-template-columns: 1fr;
    }
}
 .pub-author-card {
     background: var(--surface);
     box-shadow: var(--shadow-card);
     border-radius: var(--r-lg);
     padding: var(--s-4);
     transition: all var(--t-base) var(--ease);
}
 .pub-author-card:hover {
     box-shadow: var(--shadow-card-hover);
}
 .pub-author-card-header {
     display: flex;
     align-items: center;
     gap: var(--s-3);
}
 .pub-author-card-img {
     width: 48px;
     height: 48px;
     border-radius: 50%;
     object-fit: cover;
     flex-shrink: 0;
}
 .pub-author-card-img-muted {
     opacity: 0.5;
     filter: grayscale(100%);
}
 .pub-author-card-name {
     font-family: var(--font-display);
     font-size: var(--text-md);
     margin: 0;
     letter-spacing: -0.01em;
     line-height: 1.3;
}
 .pub-author-card-role {
     font-family: var(--font-mono);
     font-size: var(--text-xs);
     color: var(--fg-muted);
     letter-spacing: 0.06em;
     text-transform: uppercase;
     margin: var(--s-1) 0 0;
}
/* ─── Avatar Fallback (no photo) ─── */
 .pub-author-card-avatar {
     width: 48px;
     height: 48px;
     border-radius: 50%;
     flex-shrink: 0;
     display: flex;
     align-items: center;
     justify-content: center;
     font-family: var(--font-display);
     font-size: var(--text-lg);
     color: var(--fg-muted);
     background: var(--surface-tint);
     border: 1px solid var(--border);
}
 .author-chip-avatar-fallback {
     width: 24px;
     height: 24px;
     border-radius: 50%;
     background: var(--surface-tint);
     border: 1px solid var(--border);
     display: flex;
     align-items: center;
     justify-content: center;
     font-family: var(--font-mono);
     font-size: 9px;
     font-weight: 600;
     color: var(--fg-muted);
     flex-shrink: 0;
     text-transform: uppercase;
     letter-spacing: 0.05em;
}
/* ─── Outline Badge (Former Member) ─── */
 .badge-outline {
     display: inline-block;
     padding: 2px 10px;
     font-family: var(--font-mono);
     font-size: 10px;
     letter-spacing: 0.1em;
     text-transform: uppercase;
     color: var(--fg-muted);
     border: 1px solid var(--border);
     border-radius: var(--r-pill);
     font-weight: 500;
     margin-top: var(--s-1);
}
/* ─── Responsive ─── */
 @media (max-width: 768px) {
     .pub-entry-inner {
         flex-direction: column;
         gap: var(--s-3);
    }
     .pub-entry-actions {
         flex-direction: row;
         width: 100%;
    }
     .pub-action-btn {
         flex: 1;
         justify-content: center;
    }
     .pub-filters {
         top: 48px;
    }
}
/* ═══════════════════════════════════════════════════════════════ INTERACTIVE SELECTOR (Three Pillars of Inquiry) ═══════════════════════════════════════════════════════════════ */
 .interactive-selector-container {
     display: flex;
     justify-content: center;
     width: 100%;
     margin-top: var(--s-4);
}
 .interactive-selector {
     display: flex;
     width: 100%;
     max-width: 1200px;
     height: 560px;
     margin: 0;
     align-items: stretch;
     overflow: hidden;
     position: relative;
     border-radius: var(--r-xl);
     box-shadow: var(--shadow-card);
}
 .selector-option {
     position: relative;
     flex: 1;
     display: flex;
     flex-direction: column;
     justify-content: flex-end;
     overflow: hidden;
     cursor: pointer;
     transition: flex 0.7s var(--ease), border-color var(--t-base), box-shadow 0.7s var(--ease), opacity 0.8s var(--ease), transform 0.8s var(--ease);
     will-change: flex;
     border-right: 1px solid var(--border);
}
 .selector-option::before {
     content: '';
     position: absolute;
     inset: 0;
     background-size: cover;
     background-position: center;
     background-repeat: no-repeat;
     z-index: 0;
     transition: transform 0.8s var(--ease);
     will-change: transform;
}
 .selector-option:nth-child(1)::before {
     background-image: url('https://images.unsplash.com/photo-1635070041078-e363dbe005cb?auto=format&fit=crop&w=1200&q=80');
}
 .selector-option:nth-child(2)::before {
     background-image: url('https://images.unsplash.com/photo-1507668077129-56e32842fceb?auto=format&fit=crop&w=1200&q=80');
}
 .selector-option:nth-child(3)::before {
     background-image: url('https://images.unsplash.com/photo-1532094349884-543bc11b234d?auto=format&fit=crop&w=1200&q=80');
}
/* Background image scale on active / hover */
 .selector-option:hover::before {
     transform: scale(1.04);
}
 .selector-option.active::before {
     transform: scale(1.08);
}
 .selector-option:last-child {
     border-right: none;
}
/* Active State */
 .selector-option.active {
     flex: 4.5;
     cursor: default;
     box-shadow: var(--shadow-elevated);
}
/* Dark gradient overlay for text readability */
 .selector-shadow {
     position: absolute;
     left: 0;
     right: 0;
     bottom: 0;
     height: 140px;
     background: linear-gradient(to top, rgba(10, 10, 10, 0.95) 0%, rgba(10, 10, 10, 0.4) 70%, transparent 100%);
     pointer-events: none;
     opacity: 0.7;
     transition: opacity 0.7s var(--ease), height 0.7s var(--ease);
     z-index: 1;
}
 .selector-option.active .selector-shadow {
     opacity: 1;
     height: 180px;
}
/* Content labels */
 .selector-label {
     position: absolute;
     left: 0;
     right: 0;
     bottom: var(--s-4);
     display: flex;
     align-items: center;
     padding-inline: var(--s-5);
     gap: var(--s-4);
     z-index: 2;
     pointer-events: none;
     width: 100%;
     overflow: hidden;
}
/* Icon in a circular badge */
 .selector-icon {
     width: 44px;
     height: 44px;
     display: flex;
     align-items: center;
     justify-content: center;
     border-radius: 50%;
     background: rgba(10, 10, 10, 0.85);
     backdrop-filter: blur(10px);
     -webkit-backdrop-filter: blur(10px);
     border: 1px solid rgba(255, 255, 255, 0.15);
     color: var(--accent);
     flex-shrink: 0;
     transition: transform 0.4s var(--ease), background 0.4s var(--ease), color 0.4s var(--ease);
}
 .selector-option.active .selector-icon {
     background: var(--accent);
     color: var(--bg);
     border-color: transparent;
     transform: scale(1.08);
}
/* Info: text transitions */
 .selector-info {
     color: #ffffff;
     overflow: hidden;
     display: flex;
     flex-direction: column;
     justify-content: center;
}
 .selector-title {
     font-family: var(--font-display);
     font-size: var(--text-lg);
     font-weight: 500;
     color: #ffffff;
     line-height: 1.25;
     transition: color 0.4s var(--ease);
     white-space: nowrap;
}
 .selector-option.active .selector-title {
     color: var(--accent);
}
 .selector-description {
     font-size: var(--text-sm);
     color: rgba(255, 255, 255, 0.75);
     margin-top: 4px;
     max-width: 520px;
     opacity: 0;
     transform: translateX(16px);
     transition: opacity 0.6s var(--ease) 0.1s, transform 0.6s var(--ease) 0.1s;
     line-height: 1.5;
     text-overflow: ellipsis;
     display: -webkit-box;
     -webkit-line-clamp: 2;
     -webkit-box-orient: vertical;
     overflow: hidden;
}
 .selector-option.active .selector-description {
     opacity: 1;
     transform: translateX(0);
}
/* Entrance Animations using the Observer class reveal-selector */
 .reveal-selector .selector-option {
     opacity: 0;
     transform: translateY(20px);
}
 .reveal-selector.visible .selector-option {
     opacity: 1;
     transform: translateY(0);
}
 .reveal-selector.visible .selector-option:nth-child(1) {
     transition-delay: 0s, 0s, 0s, 0.1s, 0.1s;
}
 .reveal-selector.visible .selector-option:nth-child(2) {
     transition-delay: 0s, 0s, 0s, 0.25s, 0.25s;
}
 .reveal-selector.visible .selector-option:nth-child(3) {
     transition-delay: 0s, 0s, 0s, 0.4s, 0.4s;
}
/* Mobile Responsiveness */
 @media (max-width: 768px) {
     .interactive-selector {
         flex-direction: column;
         height: 520px;
    }
     .selector-option {
         border-right: none;
         border-bottom: 1px solid var(--border);
    }
     .selector-option:last-child {
         border-bottom: none;
    }
     .selector-option.active {
         flex: 2.2;
    }
     .selector-label {
         bottom: var(--s-3);
         padding-inline: var(--s-4);
         gap: var(--s-3);
    }
     .selector-icon {
         width: 38px;
         height: 38px;
    }
     .selector-title {
         font-size: var(--text-md);
    }
     .selector-description {
         font-size: var(--text-xs);
         margin-top: 2px;
         -webkit-line-clamp: 3;
    }
}
/* ═══════════════════════════════════════════════════════════════ REVEAL ANIMATION (IntersectionObserver-driven) ═══════════════════════════════════════════════════════════════ */
 .reveal {
     opacity: 0;
     transform: translateY(24px);
}
 .reveal.visible {
     opacity: 1;
     transform: translateY(0);
     animation: reveal 0.7s var(--ease) both;
}
/* ═══════════════════════════════════════════════════════════════ REDUCED MOTION ═══════════════════════════════════════════════════════════════ */
 @media (prefers-reduced-motion: reduce) {
     *, *::before, *::after {
         animation-duration: 0.01ms !important;
         animation-iteration-count: 1 !important;
         transition-duration: 0.01ms !important;
    }
     html {
         scroll-behavior: auto;
    }
}
 