/* =========================================================
   THEME TOKENS — LIGHT MODE
   ========================================================= */
:root {
  /* Brand + Accent */
  --brand-dark: #3f484b;
  --brand-hover: #5c6b6f;
  --accent-click: #0099ff;

  /* Surfaces + Text */
  --bg-light: #f7f8f9;
  --box-bg: #ffffff;
  --text-color: #1f1f1f;

  /* Hover Surfaces */
  --box-hover-bg: #f0f2f4;
  --box-hover-text: #3f484b;

  /* Buttons */
  --button-bg: #3f484b;
  --button-text: #ffffff;
  --button-hover-bg: #0099ff;
  --button-hover-text: #ffffff;

  /* Borders + Lines */
  --footer-border: #d0d4d6;
  --input-border: #cccccc;

  /* States */
  --menu-hover-bg: #e9fafa;
  --danger: #c62828;

  /* Shadows (RGBA tokens so you can theme them) */
  --shadow-weak: rgba(0, 0, 0, 0.05);
  --shadow-med: rgba(0, 0, 0, 0.08);

  /* Extra surface */
  --bg-dark: #eef2f5;

  /* ===== ReactBits token mapping ===== */
  --rb-accent: var(--accent-click);
  --rb-fg: var(--text-color);
  --rb-bg: var(--bg-light);
  --rb-surface: var(--box-bg);
  --rb-muted: var(--brand-hover);
  --rb-shadow: var(--shadow-med);

  /* Threads line color (light mode) */
  --rb-thread-light: #3f484b; /* darker lines on light bg */
}

/* =========================================================
   THEME TOKENS — DARK MODE
   ========================================================= */
[data-theme="dark"] {
  --brand-dark: #ffffff;
  --brand-hover: #a6b4bc;
  --accent-click: #0099ff;

  --bg-light: #1f1f1f;
  --box-bg: #2a2a2a;
  --text-color: #eeeeee;

  --box-hover-bg: #333333;
  --box-hover-text: #ffffff;

  --button-bg: #ffffff;
  --button-text: #1f1f1f;
  --button-hover-bg: #0099ff;
  --button-hover-text: #1f1f1f;

  --footer-border: #444444;
  --input-border: #666666;

  --menu-hover-bg: #20323a;
  --danger: #ff6b6b;

  --shadow-weak: rgba(0, 0, 0, 0.25);
  --shadow-med: rgba(0, 0, 0, 0.35);

  --bg-dark: #161a1d;

  /* ReactBits map */
  --rb-accent: var(--accent-click);
  --rb-fg: var(--text-color);
  --rb-bg: var(--bg-light);
  --rb-surface: var(--box-bg);
  --rb-muted: var(--brand-hover);
  --rb-shadow: var(--shadow-med);

  /* Threads line color (dark mode) */
  --rb-thread-light: #ffffff; /* white lines on dark bg */
}

/* =========================================================
   GLOBAL RESET + BASE
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  font-family: 'Arial', sans-serif;
  background-color: var(--bg-light);
  color: var(--text-color);
  line-height: 1.6;
  scroll-behavior: smooth;
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  scrollbar-color: var(--accent-click) var(--bg-light);
  scrollbar-width: thin;

  display: flex;
  flex-direction: column;
}

body {
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Prevent media overflow everywhere */
img, video, iframe { max-width: 100%; height: auto; display: block; }

/* =========================================================
   SCROLLBARS
   ========================================================= */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: var(--accent-click); }
::-webkit-scrollbar-thumb {
  background-color: var(--accent-click);
  border-radius: 4px;
}

/* =========================================================
   FOCUS RING
   ========================================================= */
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--accent-click);
  outline-offset: 2px;
}

/* =========================================================
   HEADER
   ========================================================= */
header {
  position: fixed;
  top: 0;
  width: 100%;
  background-color: var(--bg-light);
  border-bottom: 1px solid transparent;
  padding: 1em 0;
  z-index: 999;
  transition: background-color 0.4s ease, border-color 0.4s ease, box-shadow 0.4s ease;
}
header.scrolled {
  border-color: var(--footer-border);
  box-shadow: 0 2px 8px var(--shadow-weak);
}
.header-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
}
.menu { display: flex; align-items: center; flex-wrap: wrap; }
.menu a {
  position: relative;
  margin: 0 10px;
  padding: 10px 15px;
  border-radius: 6px;
  color: var(--brand-dark);
  transition: color 0.3s, background-color 0.3s;
}
.menu a:hover { background-color: var(--menu-hover-bg); color: var(--accent-click); }
.menu a.active::after {
  content: "";
  position: absolute;
  bottom: 0; left: 0;
  height: 2px; width: 100%;
  background-color: var(--accent-click);
  border-radius: 2px;
}
.logo img {
  height: 60px; width: auto; max-height: 80px;
  transition: transform 0.3s;
}

/* =========================================================
   FOOTER
   ========================================================= */
footer {
  background-color: var(--box-bg);
  padding: 1em 0;
  text-align: center;
  font-size: 12px;
  color: var(--brand-dark);
  border-top: 1px solid var(--footer-border);
}
.footer-container {
  display: flex;
  justify-content: center;
  padding: 0 20px;
}

/* =========================================================
   LAYOUT — MAIN WRAPPER + CONTENT
   ========================================================= */
.page-wrapper {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding-top: 140px;
}
main.content {
  flex: 1;
  padding: 0 20px;
  display: flex;
  flex-direction: column;
}
.content > section {
  max-width: 800px;
  width: 100%;
  margin: 20px auto;
  padding: 20px;
  background-color: var(--box-bg);
  color: var(--text-color);
  border-radius: 12px;
  box-shadow: 0 8px 24px var(--rb-shadow);
  transition: all 0.3s ease-in-out;
}
.content > section:last-of-type { margin-bottom: 0; }

/* Wider LinkedIn section */
.content > section.linkedin-posts {
  max-width: none;
  width: 100%;
  background-color: transparent;
  box-shadow: none;
  padding: 20px 0;
}

/* Section divider */
hr {
  margin: 60px auto;
  max-width: 1000px;
  border: 0;
  border-top: 1px solid var(--footer-border);
  opacity: 0.6;
}

/* =========================================================
   ABOUT PAGE
   ========================================================= */
img.profile-photo {
  width: 180px; height: 220px;
  border-radius: 100px;
  object-fit: cover; object-position: center;
  display: block;
  margin: 0 auto 5px auto;
}
#about p { text-align: justify; }

.subtitle {
  font-style: italic;
  margin-top: -10px;
  color: var(--brand-hover);
  text-align: center;
}

/* DSL partner logo */
.company-photo {
  display: block;
  margin: 0 auto 40px auto;
  width: 500px;
  height: auto;
  object-fit: contain;
  box-shadow: 0 4px 12px var(--rb-shadow);
  transition: transform 0.3s ease;
}
@media (max-width: 768px) {
  .company-photo {
    max-width: 90%;
    margin: 0 auto 20px auto;
  }
}
.company-photo:hover { transform: scale(1.02); }

/* =========================================================
   BUTTONS (Shared)
   ========================================================= */
.button-link,
.submit-button {
  display: inline-block;
  margin-top: 20px;
  background-color: var(--button-bg);
  color: var(--button-text);
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: 0;
  padding: 10px 20px;
  border-radius: 8px;
  border: 2px solid transparent;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.3s ease, color 0.3s ease, transform 0.2s ease;
  line-height: 1.2;
  text-align: center;
}
.button-link:hover,
.submit-button:hover {
  background-color: var(--button-hover-bg);
  color: var(--button-hover-text);
  transform: translateY(-3px);
}
.button-link:active,
.submit-button:active {
  transform: translateY(-1px) scale(0.99);
}

/* =========================================================
   CONTACT PAGE
   ========================================================= */
#contactForm {
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.input-box, textarea {
  width: 100%;
  padding: 10px;
  margin-top: 5px;
  border-radius: 8px;
  border: 1px solid var(--input-border);
  background-color: var(--box-bg);
  color: var(--text-color);
}
.input-box:focus-visible, textarea:focus-visible {
  border-color: var(--accent-click);
  outline: none;
}
.form-group { display: flex; flex-direction: column; gap: 6px; }
.label-text { font-weight: 600; }
.req { color: var(--danger); font-weight: 700; }
.form-note { font-size: 0.9rem; color: var(--brand-hover); margin-top: 6px; }

/* =========================================================
   PROJECTS PAGE
   ========================================================= */
.project-section {
  margin: 40px auto;
  max-width: 800px;
  display: flex;
  flex-direction: column;
  gap: 80px;
}
.project-box {
  background-color: var(--box-bg);
  padding: 20px;
  border-radius: 12px;
  color: var(--text-color);
  box-shadow: 0 8px 24px var(--rb-shadow);
  cursor: pointer;
  transition: all 0.3s ease-in-out;
}
.project-box:hover {
  background-color: var(--box-hover-bg);
  color: var(--box-hover-text);
  transform: translateY(-8px) scale(1.02);
}
.project-box footer {
  margin-top: 20px;
  text-align: center;
  font-size: 14px;
  font-weight: bold;
  color: var(--brand-hover);
  transition: color 0.3s;
}
.project-box:hover footer { color: var(--accent-click); }
.project-box h3 { margin-top: 0; }
.project-box p { margin-bottom: 10px; }

.projects-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 48px 24px;
  max-width: 1000px;
  margin: 0 auto 80px auto;
  padding: 0 20px;
}
@media (max-width: 768px) {
  .projects-grid {
    grid-template-columns: 1fr;
  }
}

.projects-grid > section { all: unset; display: block; }

/* Fancy border effect wrapper for "game" card */
.shifting-border {
  position: relative;
  border-radius: 20px;
  padding: 4px;
  z-index: 0;
  overflow: hidden;
}
.shifting-border::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: 20px;
  background: conic-gradient(var(--accent-click), var(--footer-border), var(--accent-click));
  animation: shiftGradient 7s linear infinite;
}
@keyframes shiftGradient {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.shifting-border .project-box {
  background: var(--box-bg);
  border-radius: 15px;
  padding: 20px;
  position: relative;
  z-index: 1;
}

/* =========================================================
   LINKEDIN SECTION (Embeds)
   ========================================================= */
.linkedin-posts { padding: 60px 20px; }
.linkedin-embed-grid {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px;
  padding: 0;
  max-width: 1400px;
  margin: 0 auto;
}
.linkedin-embed-grid iframe {
  flex: 1 1 600px;
  max-width: 680px;
  height: 1000px;
  border-radius: 8px;
  box-shadow: 0 4px 12px var(--shadow-weak);
  overflow: hidden;
}

/* =========================================================
   MISC / UTILITIES
   ========================================================= */
ul { list-style: disc; margin-left: 1.5em; padding-left: 0.5em; }
li { margin-bottom: 0.5em; }
.easter-egg-box {
  background: var(--bg-dark);
  padding: 20px;
  margin-top: 2rem;
  border-radius: 12px;
  box-shadow: 0 4px 10px var(--shadow-weak);
  text-align: center;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 768px) {
  .header-container, .footer-container {
    flex-direction: column;
    align-items: center;
    text-align: center;
  }
  .menu { flex-direction: column; gap: 10px; margin-bottom: 10px; }
  .menu a { display: block; padding: 8px 0; }
  .logo img { height: 50px; }

  /* Center burger + controls on mobile to avoid drift */
  .right-controls {
    margin: 0 !important;
    width: 100%;
    justify-content: center;
  }
  .menu-toggle { margin: 0 auto; }

  header { min-height: 200px; }
  .page-wrapper { padding-top: 210px; }

  main.content { padding-left: 16px; padding-right: 16px; }
}

/* =========================================================
   SOCIAL MEDIA LINKS
   ========================================================= */
.social-icons-container {
  display: flex;
  flex-wrap: wrap;
  gap: 15px;
  align-items: center;
  justify-content: center;
}
.social-icon a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  text-decoration: none;
  font-weight: 500;
  color: var(--accent-click);
  transition: color 0.3s ease;
}
.social-icon a:hover { color: var(--brand-hover); }
.social-icon img {
  height: 18px;
  width: auto;
  display: inline-block;
}




/* Anchor scroll offset for fixed header */
:root { --header-offset: 140px; }          /* matches .page-wrapper padding-top on desktop */
@media (max-width: 768px) {
  :root { --header-offset: 140px; }        /* if your mobile header ever grows, bump this */
}

/* Make anchor jumps and scrollIntoView land below the header */
html { scroll-padding-top: var(--header-offset); }

/* Also help when a specific section is targeted directly */
section[id] { scroll-margin-top: var(--header-offset); }


/* =========================================================
   REACTBITS INTEGRATION LAYER
   ========================================================= */
.rb-layer { position: relative; isolation: isolate; }
.rb-overlay { position: absolute; inset: 0; pointer-events: none; z-index: 0; }
.rb-content { position: relative; z-index: 1; }

.motion-safe { animation-play-state: running !important; }

@media (prefers-reduced-motion: reduce) {
  .rb-animate,
  .rb-aurora,
  .rb-border-beam,
  .rb-retro-grid,
  .rb-shiny-text,
  .rb-true-focus,
  .rb-scrambled,
  .rb-spotlight,
  .rb-marquee {
    animation: none !important;
    transition: none !important;
    background-attachment: initial !important;
  }
  .rb-spotlight { opacity: 0.15; }
}
.motion-reduce .rb-animate,
.motion-reduce .rb-aurora,
.motion-reduce .rb-border-beam,
.motion-reduce .rb-retro-grid,
.motion-reduce .rb-shiny-text,
.motion-reduce .rb-spotlight,
.motion-reduce .rb-marquee {
  animation: none !important;
  transition: none !important;
  background-attachment: initial !important;
}

/* Effects */

/* =========================================================
   TEXT EFFECTS
   ========================================================= */
.rb-true-focus { position: relative; display: inline-block; color: var(--rb-fg); animation: rbTrueFocus 6s ease-in-out infinite; }
@keyframes rbTrueFocus {
  0%, 100% { filter: blur(4px); opacity: 0.5; color: var(--rb-muted); }
  40%, 60% { filter: blur(0); opacity: 1; color: var(--rb-accent); }
}
.rb-scrambled { display: inline-block; color: var(--rb-fg); font-variant-ligatures: none; }
.rb-scrambled .char { display: inline-block; will-change: transform; }


/* =========================================================
   HERO OVERRIDES (full-bleed)
   ========================================================= */
.content > section.hero-section {
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  max-width: none !important;
  margin: 0 !important;
  padding: clamp(48px, 6vw, 96px) 0 !important;

  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: clamp(420px, 54vh, 780px);
  display: grid;
  place-items: center;
}
.hero-inner { width: min(1000px, 92%); text-align: center; }
.hero-inner .h1 { margin: 0 0 12px; }
.hero-inner .lead { max-width: 800px; margin: 0 auto 20px; }
.hero-inner .cta-row { display: inline-flex; gap: 12px; flex-wrap: wrap; justify-content: center; }

/* WebGL canvas host */
.threads-container {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none; /* JS enables when mouse interaction is on */
  background:
    radial-gradient(1200px 600px at 50% -10%,
      color-mix(in srgb, var(--accent-click), transparent 92%) 0%,
      transparent 70%) var(--bg-light);
}
[data-theme="dark"] .threads-container {
  background:
    radial-gradient(1200px 600px at 50% -10%,
      color-mix(in srgb, var(--accent-click), transparent 90%) 0%,
      transparent 72%) var(--bg-light);
}
/* content sits above */
.hero-section > .hero-inner { position: relative; z-index: 1; }

/* =======================
   THREADS — HIGH CONTRAST (pure CSS fallback/alt)
   ======================= */
.threads-strong {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background: var(--rb-bg);
}
.threads-strong::before,
.threads-strong::after {
  content: "";
  position: absolute;
  inset: -25% -25%;
  z-index: 0;
  pointer-events: none;
  background-image:
    repeating-linear-gradient(115deg, rgba(0,0,0,0.12) 0px, rgba(0,0,0,0.12) 2px, transparent 2px, transparent 14px),
    repeating-linear-gradient(115deg, rgba(0,153,255,0.22) 0px, rgba(0,153,255,0.22) 2px, transparent 2px, transparent 22px);
  background-size: 280px 280px, 420px 420px;
  opacity: 0.9;
  animation: threadsStrongA 26s linear infinite;
}
.threads-strong::after {
  background-size: 360px 360px, 540px 540px;
  opacity: 0.6;
  mix-blend-mode: multiply;
  animation: threadsStrongB 34s linear infinite;
}
.threads-strong > * { position: relative; z-index: 1; }
@keyframes threadsStrongA { 0% { background-position: 0 0, 0 0; } 100% { background-position: 280px 420px, 420px 560px; } }
@keyframes threadsStrongB { 0% { background-position: 0 0, 0 0; } 100% { background-position: -320px -360px, -520px -640px; } }
[data-theme="dark"] .threads-strong::before,
[data-theme="dark"] .threads-strong::after { opacity: 0.45; }
@media (prefers-reduced-motion: reduce) {
  .threads-strong::before,
  .threads-strong::after { animation: none !important; }
}

/* Intro band card */
.intro-band {
  max-width: 800px;
  margin: 24px auto;
  padding: 20px;
  background: var(--box-bg);
  border-radius: 12px;
  box-shadow: 0 8px 24px var(--rb-shadow);
}

/* =========================
   HEADER LAYOUT (no inline)
   ========================= */
.right-controls {
  display: flex;
  align-items: center;
  gap: 15px;
  margin-left: auto;
  margin-right: 25px;
}
.theme-toggle {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 1rem;
  color: var(--brand-dark);
  display: inline-flex;
  align-items: center;
}

/* =========================
   BURGER BUTTON
   ========================= */
.menu-toggle {
  display: none; /* hidden on desktop by default */
  background: none;
  border: 1px solid transparent;
  padding: 8px 10px;
  border-radius: 8px;
  color: var(--brand-dark);
  cursor: pointer;
  line-height: 1;
  align-items: center;
  gap: 8px;
}
.menu-toggle:focus-visible {
  outline: 2px solid var(--accent-click);
  outline-offset: 2px;
}
.menu-toggle-box {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
}
.menu-toggle-bar {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--brand-dark);
  border-radius: 2px;
  transition: transform 0.25s ease, opacity 0.25s ease, background-color 0.25s ease;
}

/* Animated "X" when open */
.menu-toggle[aria-expanded="true"] .menu-toggle-bar:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle-bar:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] .menu-toggle-bar:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* Prevent background scroll when menu is open on mobile */
.menu-open, .menu-open body { overflow: hidden; }

/* =========================
   MOBILE BEHAVIOR
   ========================= */
@media (max-width: 768px) {
  .menu-toggle { display: inline-flex; }
  .header-container { gap: 10px; }

  /* Nav closed by default on mobile */
  .menu {
    display: none;
    flex-direction: column;
    width: 100%;
    gap: 6px;
    margin: 8px 0 0 0;
    padding: 8px 0;
    border-top: 1px solid var(--footer-border);
  }
  .menu.open { display: flex; }

  /* Bigger tap targets */
  .menu a,
  .menu .theme-toggle {
    padding: 12px 14px;
    margin: 0;
    border-radius: 8px;
  }
  .menu .theme-toggle:hover {
    background-color: var(--menu-hover-bg);
    color: var(--accent-click);
  }

  /* Tune header spacing for collapsed menu */
  header { min-height: unset; }
  .page-wrapper { padding-top: 140px; }
}

/* =========================
   DARK MODE VISIBILITY FOR BURGER
   ========================= */
[data-theme="dark"] .menu-toggle {
  color: var(--brand-dark);           /* button/icon color */
  background-color: transparent;
}
[data-theme="dark"] .menu-toggle-bar {
  background-color: var(--brand-dark); /* the 3 bars become light in dark mode */
}

/* =========================================================
   ROTATING TEXT (HERO)
   ========================================================= */
.text-rotate { display:flex; flex-wrap:wrap; white-space:pre-wrap; position:relative; }
.text-rotate-sr-only {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.text-rotate-word { display:inline-flex; }
.text-rotate-element {
  display:inline-block;
  transform: translateY(100%);
  opacity: 0;
  transition: transform 400ms cubic-bezier(.2,.8,.2,1), opacity 400ms cubic-bezier(.2,.8,.2,1);
  will-change: transform, opacity;
}
.text-rotate-element.in {
  transform: translateY(0);
  opacity: 1;
  transition-delay: calc(var(--char-index, 0) * var(--stagger, 0ms));
}
.text-rotate-element.out {
  transform: translateY(-120%);
  opacity: 0;
  transition-delay: calc(var(--char-rev-index, 0) * var(--stagger, 0ms));
}
.rt-wrap { white-space: nowrap; display:inline-flex; gap: 0; align-items: baseline; margin-left: 0; }
.rt-chip {
  display:inline-flex; align-items: baseline;
  padding: .15em .5em;
  border-radius: .6em;
  background: var(--accent-click);
  color: #fff;
  line-height: 1;
  box-shadow: 0 2px 10px var(--shadow-weak);
  vertical-align: baseline;
  margin-left: 0;
}
.rt-chip .text-rotate-element { color: inherit; }

@media (prefers-reduced-motion: reduce) {
  .text-rotate-element,
  .text-rotate-element.in,
  .text-rotate-element.out {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}




/* =========================================================
   LINKEDIN IMAGE CLICK OVERLAY
   ========================================================= */
.linkedin-posts {
  width: 100%;
  margin: 40px auto;
}

.linkedin-embed-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: start;
}

.linkedin-container {
  position: relative;
  width: 100%;
  overflow: hidden;
  border-radius: 12px;
}

/* LinkedIn embed – fully interactive */
.linkedin-container iframe {
  width: 100%;
  min-height: 420px;
  border-radius: 12px;
  background: white;
  pointer-events: auto;  /* allow scrolling + clicking inside LinkedIn embed */
}

/* CLICKABLE OVERLAY — only top image area */
.linkedin-image-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 55%;           /* overlay clickable region */
  z-index: 10;
  cursor: pointer;
  background: rgba(0,0,0,0); /* fully transparent */
  display: block;
}

/* Mobile layout: stack vertically */
@media (max-width: 900px) {
  .linkedin-embed-grid {
    grid-template-columns: 1fr;
  }

  .linkedin-container iframe {
    min-height: 500px;
  }

  /* Adjust overlay height for mobile if needed */
  .linkedin-image-overlay {
    height: 50%;
  }
}

/* 
   PHOTO TIMELINE (Reusable Component)
   */

/* Remove white background behind photo timeline rows */
#photo-timeline,
.photo-timeline-shell,
.photo-timeline-scene {
  background: transparent !important;
}

.photo-timeline-shell {
  position: relative;
  width: 100%;
  margin: 40px 0 60px;
}

.photo-timeline {
  position: relative;
  width: 100%;
  margin: 40px 0 60px;
}

.photo-timeline-scene {
  min-height: 50vh;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 40px;
  align-items: center;
}

.photo-timeline-media {
  position: relative;
  border-radius: 24px;
  overflow: hidden;
  box-shadow: 0 26px 80px rgba(0, 0, 0, 0.55);
  isolation: isolate;
}

.photo-timeline-media::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 10% 0%, rgba(255, 255, 255, 0.24), transparent 60%),
    radial-gradient(circle at 90% 100%, rgba(0, 148, 206, 0.38), transparent 60%);
  mix-blend-mode: soft-light;
  pointer-events: none;
}

.photo-timeline-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border: none;
}

.photo-timeline-content {
  max-width: 34rem;
}

.photo-timeline-dot-row {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.photo-timeline-dot {
  width: 12px;
  height: 12px;
  border-radius: 99px;
  background: rgba(0, 0, 0, 0.15);
  transition: background 0.25s ease, transform 0.25s ease;
}

.photo-timeline-year {
  font-size: 0.82rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  opacity: 0.8;
}

.photo-timeline-title {
  font-size: 1.15rem;
  font-weight: 600;
  margin: 2px 0 6px;
}

.photo-timeline-text {
  font-size: 0.95rem;
  opacity: 0.9;
}

.photo-timeline-scene.is-active .photo-timeline-dot {
  background: #0099ff;
  transform: scale(1.2);
}

.photo-timeline-scene.is-active .photo-timeline-title {
  color: #0099ff;
}

/* Hero image (top banner style) */
.photo-timeline-hero {
  width: 100%;
  aspect-ratio: 16/9;
  object-fit: cover;
  display: block;
  border-radius: 18px;
  border: none;
  margin: 24px 0;
}

@media (max-width: 900px) {
  .photo-timeline-scene {
    grid-template-columns: minmax(0, 1fr);
    min-height: auto;
    align-items: flex-start;
  }

  .photo-timeline-media {
    order: -1;
    border-radius: 18px;
  }

  .photo-timeline {
    margin-top: 24px;
  }
}

.aos-timeline[data-aos="fade-up"] {
  transform: translateY(30px);
  opacity: 0;
  transition: transform 0.9s ease-out, opacity 0.9s ease-out;
}

.aos-animate.aos-timeline[data-aos="fade-up"] {
  transform: translateY(0);
  opacity: 1;
}


/* ===============================
   CHRISTMAS MODE — DECEMBER ONLY
   =============================== */

body.christmas-active #snow-canvas {
  position: fixed;
  pointer-events: none;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: 10; /* Above all content, below menu */
}

#christmas-emoji {
  margin-left: 8px;
  opacity: 1;
  transition: opacity 0.4s ease;
}

.xmas-hidden {
  opacity: 0;
}

/* Soft seasonal accent for hero */
body.christmas-active .hero-section {
  position: relative;
}

body.christmas-active .hero-section::after {
  content: "";
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  pointer-events: none;

  z-index: 1;
}