/*
 * responsive.css — OLLMH Child Theme
 * Mobile-first media queries at 576px, 768px, 992px, 1200px.
 */

/* ============================================================
   §4 Responsive Container Logic — global overflow guard
   Prevents any single wide child (table, pre, iframe, long URL)
   from producing a site-wide horizontal scrollbar. The offending
   child is clipped by its own cell instead.
   ============================================================ */
html { overflow-x: hidden; }
body { overflow-x: hidden; max-width: 100%; }
.container {
  max-width: var(--container-width);
  width: 100%;
  margin-inline: auto;
  padding-inline: calc(var(--spacing-unit) * 0.75);
  box-sizing: border-box;
  overflow-x: hidden;
}
/* Every direct grid/flex child must be able to shrink below its content
   size. Without min-width:0, a long word/URL/<pre> inside a column forces
   the column to its intrinsic width and blows the layout. */
.container > *,
.row > [class*="grid"],
.content-area > *,
.ollmh-footer-main > * { min-width: 0; }

/* Fluid media — bulletproof images, tables, embeds (all breakpoints).
   Defeats the hard-coded width/height attributes emitted by front-page.php. */
img,
video,
svg,
figure img {
  max-width: 100%;
  height: auto;
  border-style: none;
}
.table-wrap,
.entry-content table,
.clinic-schedule,
.ward-status {
  display: block;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  max-width: 100%;
}
.embed-wrap {
  position: relative;
  padding-block: 0;
  padding-bottom: 56.25%;
  height: 0;
  overflow: hidden;
  max-width: 100%;
}
.embed-wrap iframe,
.embed-wrap embed,
.embed-wrap object,
.embed-wrap video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ============================================================
   §4 Legacy 12-column collapse — mobile-first default.
   On mobile, every .grid* column stacks to 100% width and the
   .block side margins are neutralized so three 33% columns with
   30px margins no longer overflow. Columns re-expand at ≥768px.
   ============================================================ */
.row > [class*="grid"] {
  width: 100% !important;
  flex: 0 0 100%;
  margin-left: 0;
}
.block {
  margin: 0 0 calc(var(--spacing-unit) * 0.75) 0;
}
/* Float images become in-flow block images so they never escape the column. */
.tab-img,
.news-thumb,
#main-top img,
#feature img {
  float: none;
  display: block;
  max-width: 100%;
  height: auto;
  margin: 0 auto calc(var(--spacing-unit) * 0.5);
}
/* News scroller: floor instead of fixed height so it never clips or gaps. */
.news-scroller { height: auto; min-height: 240px; }

/* Hero ↔ container seam: breathing room under the full-width hero. */
.front-page .container > .row:first-child,
.home .container > .row:first-child {
  padding-top: calc(var(--spacing-unit) * 1.25);
}

/* Base (mobile-first defaults) */
.header-nav .menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  margin: 2px 0;
  padding: 0;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: var(--border-radius);
  color: var(--color-text-white);
  cursor: pointer;
}
.header-nav .menu-toggle span {
  display: block;
  width: 20px;
  height: 2px;
  margin: 2px auto;
  background: var(--color-text-white);
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.header-nav .menu-toggle.open span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.header-nav .menu-toggle.open span:nth-child(2) { opacity: 0; }
.header-nav .menu-toggle.open span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.header-nav .nav-menu {
  display: none;
  flex-direction: column;
  width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  background: var(--color-nav-dark-blue);
}
.header-nav.nav-open .nav-menu { display: flex; }
.header-nav .nav-menu li { width: 100%; }
.header-nav .nav-menu a {
  display: block;
  padding: 0.75em 1em;
  color: var(--color-text-white);
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.header-nav .nav-menu a:hover,
.header-nav .nav-menu a:focus { background: var(--color-nav-hover); color: var(--color-text-white); }
.header-nav .nav-menu .sub-menu {
  position: static;
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
  background: var(--color-primary-dark);
  box-shadow: none;
}
.header-nav .nav-menu .sub-menu a { padding-left: 2em; }

.content-area.has-sidebar { grid-template-columns: 1fr; }
.content-area.has-sidebar .sidebar { width: 100%; }

.footer-main .container { grid-template-columns: 1fr; }
.footer-copyright .container { flex-direction: column; text-align: center; }

.feature-blocks,
.department-columns,
.staff-grid,
.gallery-grid { grid-template-columns: 1fr; }

.news-scroller-section { grid-template-columns: 1fr; }
.contact-page .contact-grid { grid-template-columns: 1fr; }
.single-staff .staff-profile { grid-template-columns: 1fr; }

.ollmh-form input[type="text"],
.ollmh-form input[type="email"],
.ollmh-form input[type="url"],
.ollmh-form input[type="password"],
.ollmh-form input[type="search"],
.ollmh-form input[type="number"],
.ollmh-form input[type="tel"],
.ollmh-form input[type="date"],
.ollmh-form select,
.ollmh-form textarea { width: 100%; }

/* Hero — mobile defaults (stacked, centred) */
.ollmh-hero { padding: calc(var(--spacing-unit) * 2.5) 0; }
.ollmh-hero-inner {
  grid-template-columns: 1fr;
  text-align: left;
  gap: calc(var(--spacing-unit) * 2);
}
.ollmh-hero-content { max-width: 100%; margin: 0 auto; }
.ollmh-hero-subtitle { margin-left: 0; margin-right: 0; }
.ollmh-hero-cta { justify-content: center; flex-wrap: wrap; }
.ollmh-hero-overlay {
  background: linear-gradient(180deg,
    rgba(0, 18, 60, 0.08) 0%,
    rgba(7, 17, 46, 0.20) 55%,
    rgba(0, 18, 60, 0.45) 100%);
}

/* >= 576px */
@media (min-width: 576px) {
  .feature-blocks { grid-template-columns: repeat(2, 1fr); }
  .department-columns { grid-template-columns: repeat(2, 1fr); }
  .staff-grid { grid-template-columns: repeat(2, 1fr); }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); }
}

/* >= 768px — hero switches to 2-column layout */
@media (min-width: 768px) {
  .header-nav .menu-toggle { display: none; }
  .header-nav .nav-menu {
    display: flex;
    flex-direction: row;
    width: auto;
    background: transparent;
  }
  .header-nav .nav-menu li { width: auto; }
  .header-nav .nav-menu a { border-bottom: none; }
  .header-nav .nav-menu .sub-menu {
    position: absolute;
    display: none;
    width: 220px;
    background: var(--color-bg-dropdown);
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.18);
  }
  .header-nav .nav-menu li:hover > .sub-menu { display: block; }
  .header-nav .nav-menu .sub-menu a { color: var(--color-text-menu); padding: 0.6em 1em; }
  .header-nav .nav-menu .sub-menu a:hover { background: var(--color-bg-menu-item); color: var(--color-nav-hover); }

  .footer-main .container { grid-template-columns: repeat(3, 1fr); }
  .footer-copyright .container { flex-direction: row; text-align: left; }

  .news-scroller-section { grid-template-columns: 2fr 1fr; }
  .contact-page .contact-grid { grid-template-columns: 1fr 1fr; }
  .single-staff .staff-profile { grid-template-columns: 240px 1fr; }

  .ollmh-hero { padding: calc(var(--spacing-unit) * 3) 0; }
  .ollmh-hero-inner {
    grid-template-columns: 1fr;
    text-align: left;
    gap: calc(var(--spacing-unit) * 2.5);
  }
  .ollmh-hero-content { max-width: 720px; text-align: center; margin: 0 auto; }
  .ollmh-hero-subtitle { margin-left: 0; margin-right: 0; }
  .ollmh-hero-cta { justify-content: center; flex-wrap: nowrap; }
  .ollmh-hero-overlay {
    background: linear-gradient(180deg,
      rgba(0, 18, 60, 0.08) 0%,
      rgba(7, 17, 46, 0.20) 55%,
      rgba(0, 18, 60, 0.45) 100%);
  }

  /* §4 Legacy 12-column re-expand at ≥768px — restore multi-column ratios.
     Mirrors tx-finnix.css lines 28–39 so desktop rendering is unchanged. */
  .row > [class*="grid"] { flex: 0 1 auto; }
  .grid12 { width: 100%; }
  .grid11 { width: 91.6667%; }
  .grid10 { width: 83.3333%; }
  .grid9  { width: 75%; }
  .grid8  { width: 66.6667%; }
  .grid7  { width: 58.3333%; }
  .grid6  { width: 50%; }
  .grid5  { width: 41.6667%; }
  .grid4  { width: 33.3333%; }
  .grid3  { width: 25%; }
  .grid2  { width: 16.6667%; }
  .grid1  { width: 8.3333%; }
  .block { margin: 0 15px 10px; }
  .tab-img { float: left; max-width: 250px; margin: 0 15px 10px 0; }
  .news-scroller { height: 370px; min-height: 0; }
}

/* >= 992px */
@media (min-width: 992px) {
  .content-area.has-sidebar {
    grid-template-columns: 1fr var(--sidebar-width);
  }
  .content-area.has-sidebar .sidebar { width: var(--sidebar-width); }

  .feature-blocks { grid-template-columns: repeat(3, 1fr); }
  .department-columns { grid-template-columns: repeat(3, 1fr); }
  .staff-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
  .gallery-grid { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }

  .ollmh-hero { padding: calc(var(--spacing-unit) * 3.5) 0; }
  .ollmh-hero-inner { gap: calc(var(--spacing-unit) * 3); }
}

/* >= 1200px */
@media (min-width: 1200px) {
  .feature-blocks { grid-template-columns: repeat(4, 1fr); }
}

/* <= 576px: hide top bar */
@media (max-width: 575.98px) {
  .header-topbar { display: none; }
  .header-main .container { flex-wrap: wrap; }
  .site-logo img { max-height: 48px; }
  .site-title { font-size: var(--fs-h3); }
}

/* <= 768px: stack footer columns, single column content */
@media (max-width: 767.98px) {
  .footer-main .container { grid-template-columns: 1fr; }
  .content-area.has-sidebar { grid-template-columns: 1fr; }
  .content-area.has-sidebar .sidebar { width: 100%; margin-top: calc(var(--spacing-unit) * 1.5); }
  .wp-block-columns { flex-direction: column; }
  .wp-block-columns .wp-block-column { flex: 1 1 100%; }
  .event-listing li { flex-direction: column; }
  .event-listing .event-date { flex: 0 0 auto; width: 64px; }
  /* keep the hero CTAs clear of the edge chevrons (16px inset + 36px buttons) */
  .ollmh-hero-cta { padding-inline: 56px; }
}

/* <= 1200px: hide the tagline to give the nav menu more room. */
@media (max-width: 1200px) {
  .ollmh-tagline { display: none; }
  .ollmh-logo-text { font-size: 1rem; }
  .ollmh-logo a { gap: 10px; }
  .ollmh-header-inner { gap: 12px; }
  .ollmh-nav-item > a { padding: 9px 10px; font-size: 0.875rem; }
  .ollmh-nav-btn { padding: 8px 16px; font-size: 0.8rem; }
  .ollmh-nav-cta { margin-left: 4px; }
}

/* <= 1024px: hide the hospital name too — logo icon only, maximising
   space for the navigation items to the right. */
@media (max-width: 1024px) {
  .ollmh-logo-content { display: none; }
  .ollmh-logo a { gap: 0; }
  .ollmh-header-inner { gap: 10px; }
  .ollmh-nav-item > a { padding: 8px 8px; font-size: 0.8rem; }
  .ollmh-nav-btn { padding: 7px 14px; font-size: 0.75rem; }
  .ollmh-nav-cta { margin-left: 2px; }
}

/* <= 992px: collapse header navigation into mobile menu.
   Hamburger stays pinned to the top-right; only the logo icon is shown
   (the full hospital name + tagline are hidden to save horizontal space).
   The nav menu drops down full-width below the header bar. */
@media (max-width: 992px) {
  .ollmh-header-inner {
    flex-wrap: wrap;
    align-items: center;
    padding: 8px 16px;
    gap: 10px;
  }

  /* Logo: icon only on mobile — hide the wordmark + tagline. */
  .ollmh-logo a { gap: 0; }
  .ollmh-logo-icon img { width: 40px; height: 40px; }
  .ollmh-logo-content { display: none; }

  /* Hamburger: always top-right. It is a direct child of .ollmh-header-inner
     (sibling of the logo), so default flex order already places it at the
     right edge. We just make sure it never wraps below the logo. */
  .ollmh-nav-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    order: 2;
    margin-left: auto;
    flex-shrink: 0;
  }

  /* Nav menu: full-width dropdown panel below the header bar.
     Only the inner <ul> is toggled; the <nav> wrapper itself stays in the
     flow but is invisible (zero height) while the menu is closed, so no
     JS change is needed — main.js still toggles .is-open on .ollmh-nav-menu. */
  .ollmh-main-nav {
    flex-basis: 100%;
    width: 100%;
    order: 3;
  }
  .ollmh-nav-menu {
    display: none;
    flex-direction: column;
    width: 100%;
    margin: 0;
    background: var(--color-bg-white);
    border-top: 1px solid var(--color-border-light);
    padding: 8px;
    gap: 2px;
    box-shadow: 0 10px 24px rgba(0, 26, 85, 0.08);
  }
  .ollmh-nav-menu.is-open { display: flex; }

  .ollmh-nav-item { width: 100%; }
  .ollmh-nav-item > a {
    width: 100%;
    padding: 11px 13px;
    border-radius: 8px;
    justify-content: space-between;
  }
  .ollmh-nav-item > a::after { display: none; }

  /* Mobile dropdowns: expand inline instead of floating. */
  .ollmh-dropdown {
    position: static;
    width: 100%;
    min-width: 0;
    margin: 2px 0 4px;
    padding: 4px;
    box-shadow: none;
    border: none;
    background: var(--color-bg-light);
    border-radius: 8px;
    opacity: 1;
    visibility: visible;
    transform: none;
    display: none;
  }
  .ollmh-nav-item.has-dropdown.open > .ollmh-dropdown { display: block; }

  .ollmh-nav-cta { margin-left: 0; margin-top: 4px; }
  .ollmh-nav-btn { width: 100%; justify-content: center; padding: 12px 18px; }

  .ollmh-search-panel { width: calc(100vw - 32px); max-width: 320px; }

  /* §3 Mobile active state — left gold bar + bold + primary text.
     Survives the display:none of ::after (line 376) which removes the
     desktop underline cue. The left bar is the conventional mobile active
     cue and reuses --color-accent-gold (the "gold = active" brand language). */
  .ollmh-nav-menu .ollmh-nav-item.current > a,
  .ollmh-nav-menu .ollmh-dropdown li.current > a {
    color: var(--color-primary);
    font-weight: 700;
    background: rgba(0, 100, 205, 0.08);
    border-left: 3px solid var(--color-accent-gold);
    padding-left: 10px; /* compensate for the 3px border so text doesn't shift */
  }
  /* Active ancestor parent: gold caret + tinted bg, but no left bar
     (the bar belongs to the active *child*, not the ancestor). */
  .ollmh-nav-menu .ollmh-nav-item.current-ancestor > a {
    color: var(--color-primary);
    font-weight: 600;
    background: rgba(0, 100, 205, 0.05);
  }
  .ollmh-nav-menu .ollmh-nav-item.current-ancestor > a .ollmh-caret {
    border-top-color: var(--color-accent-gold);
    transform: rotate(180deg); /* points open, since we auto-expand */
    opacity: 1;
  }
  /* Ensure the auto-expanded active accordion is visible on menu open.
     .open is already styled at line 394; this guarantees it also applies
     when .current-ancestor is present without a prior tap. */
  .ollmh-nav-menu .ollmh-nav-item.current-ancestor > .ollmh-dropdown {
    display: block;
  }
}

/* <= 524px: compact top bar + header (matches footer's 524px breakpoint
   so the header and footer inner widths stay perfectly synchronized and
   text wraps at the same points). */
@media (max-width: 524px) {
  .ollmh-topbar-powered { font-size: 10px; }
  .ollmh-logo-icon img { width: 36px; height: 36px; }
  .ollmh-header-inner { padding: 6px 12px; }
  /* Give the hamburger a slightly larger tap target on small phones. */
  .ollmh-nav-toggle { padding: 10px; }
}

/* ============================================================
   Contact page responsive
   ============================================================ */

/* <= 1024px: stack the 2-col grid vertically (form above info stack).
   Matches the EduFin / EduN contact-page responsive behaviour: single
   column at tablet, with the email+phone form row and Call Us + Email Us
   info row each going 2-col so they don't get cramped. */
@media (max-width: 1024px) {
  .ollmh-page-header { min-height: 260px; }
  /* Form + info stack go full width (single column) */
  .ollmh-contact-grid { grid-template-columns: 1fr; }
  /* Email + phone form row: 2-col at tablet so they sit side by side */
  .ollmh-contact-form .ollmh-contact-form-row { grid-template-columns: 1fr 1fr; }
  /* Call Us + Email Us: keep side-by-side but go 2-col across full width */
  .ollmh-info-row-2col {
    grid-template-columns: 1fr 1fr;
  }
  .ollmh-map-details {
    grid-template-columns: repeat(2, 1fr);
  }
  .ollmh-quick-actions-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* >= 1024px (desktop): 2-col main grid — form (1.5fr) + info stack (1fr).
   The form column is wider so the form has room and does not crowd the
   info cards. Mirrors EduFin's .edufin-contact-grid desktop rule. */
@media (min-width: 1024px) {
  .ollmh-contact-grid { grid-template-columns: 1.5fr 1fr; }
}

/* <= 640px: Call Us + Email Us stack vertically, compact card padding */
@media (max-width: 640px) {
  .ollmh-info-row-2col {
    grid-template-columns: 1fr;
  }
  .ollmh-info-card {
    padding: 1.25rem;
  }
  /* Reduce left padding on links/content since icon alignment is less
     critical at this width — saves horizontal space */
  .ollmh-info-card a:not(.ollmh-whatsapp-btn),
  .ollmh-info-card-content,
  .ollmh-hours-row {
    padding-left: 0;
  }
  .ollmh-emergency-phone,
  .ollmh-ambulance-phone {
    padding-left: 0;
  }
  .ollmh-social-follow .ollmh-social-links {
    margin-left: 0;
  }
}

/* <= 1024px: home page tablet adjustments */
@media (max-width: 1024px) {
  .ollmh-home-welcome-image { order: -1; max-width: 600px; margin: 0 auto; }
  .ollmh-home-medical-cta-inner { grid-template-columns: 1fr; gap: 2rem; }
  .ollmh-home-medical-cta-image { max-width: 500px; margin: 0 auto; }
}

/* <= 768px: compact form padding, stack form grid, single-column map details */
@media (max-width: 768px) {
  /* Header goes auto-height on mobile (matches homepage hero pattern) */
  .ollmh-page-header { min-height: auto; padding: 2.5rem 0 2rem; }
  .ollmh-page-title { font-size: 1.75rem; }
  .ollmh-page-subtitle { font-size: 1rem; }

  .ollmh-contact-content { padding: 2rem 1rem; }
  .ollmh-contact-form-col { padding: 1.25rem; }
  /* Stack the email + phone form row to a single column on mobile */
  .ollmh-contact-form .ollmh-contact-form-row { grid-template-columns: 1fr; }
  .ollmh-map-details {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .ollmh-visit-card { padding: 1rem; }
  .ollmh-visit-detail-card { padding: 1.25rem 1rem; }
  .ollmh-quick-actions-grid { grid-template-columns: 1fr; }

  /* Home page responsive */
  .ollmh-home-welcome { padding: 2.5rem 1rem; }
  .ollmh-home-welcome-content h2 { font-size: 1.5rem; }
  .ollmh-home-welcome-features { grid-template-columns: 1fr; }
  .ollmh-home-welcome-image { order: -1; }

  .ollmh-home-mv-strip { padding: 2rem 1rem; }
  .ollmh-home-mv-inner { grid-template-columns: 1fr; gap: 1.5rem; }

  .ollmh-home-stats { padding: 2.5rem 1rem; }
  .ollmh-home-stats-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
  .ollmh-home-stat-number { font-size: 1.75rem; }
  .ollmh-home-stat-icon { width: 48px; height: 48px; }
  .ollmh-home-stat-icon i { font-size: 1.25rem; }

  .ollmh-home-departments { padding: 2.5rem 1rem; }
  /* Grid collapse lives with the other archive grids in pages.css
     (@media max-width: 768px → .ollmh-events-grid / .ollmh-home-dept-grid)
     so both sections always break to the same column counts. */

  .ollmh-home-medical-cta { padding: 2.5rem 1rem; }
  .ollmh-home-medical-cta-inner { grid-template-columns: 1fr; gap: 1.5rem; }
  .ollmh-home-medical-cta-content h2 { font-size: 1.375rem; }
  .ollmh-home-medical-cta-image { order: -1; }

  .ollmh-home-values { padding: 2.5rem 1rem; }
  .ollmh-home-values-grid { grid-template-columns: 1fr; gap: 1rem; }

  .ollmh-home-testimonials { padding: 2.5rem 1rem; }
  .ollmh-home-testimonials-grid { grid-template-columns: 1fr; gap: 1.25rem; }
  .ollmh-home-testimonial-avatar { width: 40px; height: 40px; }
  .ollmh-home-testimonial-avatar-initials { font-size: 0.875rem; }
  .ollmh-home-testimonial-author-right { display: none; }

  .ollmh-home-partners { padding: 2.5rem 1rem; }
  .ollmh-home-partners-grid { gap: 1rem; }
  .ollmh-home-partner-logo { min-width: 120px; padding: 0.75rem 1rem; }

  .ollmh-home-news { padding: 2.5rem 1rem; }
  .ollmh-home-news-grid { grid-template-columns: 1fr; gap: 1.25rem; }

  .ollmh-home-final-cta { padding: 2.5rem 1rem; }
  .ollmh-home-final-cta h2 { font-size: 1.375rem; }
  .ollmh-home-final-cta-buttons { flex-direction: column; }
  .ollmh-home-final-cta-buttons .btn { width: 100%; justify-content: center; }

  .ollmh-home-section-header { margin-bottom: 1.75rem; }
  .ollmh-home-section-header h2 { font-size: 1.375rem; }
}

/* <= 480px: even more compact home page */
@media (max-width: 480px) {
  .ollmh-home-medical-cta-programs { flex-direction: column; gap: 0.5rem; }
}

/* ============================================================
   ABOUT US PAGES — Responsive
   ============================================================ */

/* <= 1024px: tablet adjustments */
@media (max-width: 1024px) {
  .ollmh-about-overview-inner { grid-template-columns: 1fr; gap: 2rem; }
  .ollmh-about-overview-content { padding: 1.75rem; }
  .ollmh-about-overview-image { max-width: 600px; margin: 0 auto; }
  .ollmh-about-board-card { grid-template-columns: 1fr; gap: 1.5rem; padding: 1.75rem; }
  .ollmh-about-board-image { max-width: 500px; margin: 0 auto; }
}

/* <= 768px: mobile adjustments */
@media (max-width: 768px) {
  .ollmh-about-overview-content { padding: 1.5rem; }
  .ollmh-about-overview-content h2 { font-size: 1.375rem; }
  .ollmh-about-mv-grid { grid-template-columns: 1fr; gap: 1rem; }
  .ollmh-about-values-grid { grid-template-columns: 1fr; gap: 1rem; }
  .ollmh-about-info-grid { grid-template-columns: 1fr; gap: 1rem; }
  .ollmh-leadership-grid { grid-template-columns: 1fr; gap: 1.25rem; }
  .ollmh-about-history-grid { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }
  .ollmh-outlook-gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
  .ollmh-philosophy-motto { padding: 2rem 1.5rem; }
  .ollmh-about-timeline { padding-left: 2rem; }
  .ollmh-about-timeline-marker { left: -2rem; width: 36px; height: 36px; }
  .ollmh-about-board-card { padding: 1.5rem; }
  .ollmh-about-board-content h3 { font-size: 1.25rem; }
}

/* <= 480px: small phone */
@media (max-width: 480px) {
  .ollmh-about-history-grid { grid-template-columns: 1fr; }
  .ollmh-outlook-gallery-grid { grid-template-columns: 1fr; }
  .ollmh-philosophy-motto { padding: 1.5rem 1rem; }
  .ollmh-philosophy-motto-inner h2 { font-size: 1.25rem; }
  .ollmh-about-timeline { padding-left: 1.75rem; }
  .ollmh-about-timeline-marker { left: -1.75rem; width: 32px; height: 32px; }
}
