/* Shared responsive system for all H4NF pages */

html {
  -webkit-text-size-adjust: 100%;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

img,
video,
canvas,
svg,
iframe {
  max-width: 100%;
  height: auto;
}

pre,
code,
table,
.diagram-scroll {
  max-width: 100%;
  overflow-x: auto;
}

/* Prevent common container overflow */
.nav-bar,
.language-switcher,
.hero-content,
.hero-inspo,
.hero-logos,
.video-container,
.projects-grid,
.upnext-grid,
.grid,
.grid-all,
.stills-grid,
.text-columns,
.cta,
.rule-grid,
.visual-grid,
.layout,
.content,
.blocks,
.character-grid,
.learning-grid,
.signal-grid,
.takeaways,
.media-stanza,
.split-block,
.article-body,
.info-block,
.diagram-wrap,
.slider {
  min-width: 0;
}

/* Keep long words and long labels from forcing horizontal scroll */
h1,
h2,
h3,
p,
a,
li,
.project-badge,
.project-title,
.project-description,
.section-title,
.lede,
.stanza,
.tag,
.lang-btn,
.lang-switch a {
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
}

/* Generic card shell tuning across project pages */
.project-card,
.upnext-card,
.info-block,
.card,
.block,
.learning-card,
.character-card,
.signal-card,
.takeaway-card,
.rule-card,
.role-item,
.article-body,
.role-list,
.meaning-content,
.hero-quote blockquote {
  max-width: 100%;
}

/* Page-specific base safety */
.article-body .inline-img {
  max-width: min(100%, 380px);
  height: auto;
}

@media (max-width: 1200px) {
  .hero-logos {
    flex-wrap: wrap;
    justify-content: center;
  }

  .video-container {
    grid-template-columns: 1fr !important;
    gap: 1.25rem !important;
  }

  .video-wrapper {
    max-width: 100% !important;
  }
}

@media (max-width: 1024px) {
  .layout {
    grid-template-columns: 1fr !important;
  }

  .toc {
    position: static !important;
    top: auto !important;
    margin-bottom: 0.75rem;
  }

  .media-stanza,
  .media-stanza.reverse,
  .split-block,
  .text-columns {
    grid-template-columns: 1fr !important;
  }

  .media-stanza.reverse > *:first-child,
  .media-stanza.reverse > *:last-child {
    order: initial !important;
  }

  .grid-all {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 768px) {
  .container,
  .content,
  .article,
  .longform,
  header,
  section,
  footer,
  .hero-content,
  .upnext-inner,
  .video-container,
  .hero-quote,
  .pdf-embed,
  .stills,
  .character-section,
  .role-section,
  .meaning-box {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
    max-width: 100% !important;
  }

  .nav-bar {
    top: 10px !important;
    left: 10px !important;
    right: 10px !important;
    gap: 0.5rem !important;
    padding: 0.5rem 0.65rem !important;
  }

  .nav-link,
  .nav-link span {
    min-width: 0;
  }

  .nav-link span:last-child,
  .back-link,
  .lang-btn,
  .lang-switch a {
    font-size: 0.82rem !important;
  }

  .project-badge {
    font-size: 0.72rem !important;
    padding: 0.25rem 0.45rem !important;
    max-width: 100%;
    text-align: center;
  }

  .lang-switch {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.25rem;
  }

  .lang-switch a,
  .lang-btn {
    margin-left: 0 !important;
    padding: 0.3rem 0.5rem !important;
  }

  .hero-title {
    font-size: clamp(2rem, 10vw, 3rem) !important;
  }

  h1 {
    font-size: clamp(1.65rem, 8vw, 2.4rem) !important;
    line-height: 1.2 !important;
  }

  h2 {
    font-size: clamp(1.3rem, 6vw, 1.9rem) !important;
  }

  .hero-subtitle,
  .lede,
  p,
  li {
    font-size: clamp(0.95rem, 3.6vw, 1.05rem) !important;
    line-height: 1.65 !important;
  }

  .projects-grid,
  .upnext-grid,
  .grid,
  .stills-grid,
  .text-columns,
  .cta,
  .rule-grid,
  .visual-grid,
  .learning-grid,
  .character-grid,
  .signal-grid,
  .takeaways,
  .role-list {
    grid-template-columns: 1fr !important;
  }

  .grid-all {
    grid-template-columns: 1fr !important;
  }

  .project-card,
  .upnext-card,
  .info-block,
  .card,
  .block,
  .learning-card,
  .character-card,
  .signal-card,
  .takeaway-card,
  .rule-card,
  .role-item,
  .article-body,
  .role-list,
  .meaning-content,
  .hero-quote blockquote,
  .grid-item {
    padding: 1rem !important;
    border-radius: 12px !important;
  }

  .project-title {
    font-size: 1.35rem !important;
  }

  .project-description {
    font-size: 0.95rem !important;
    min-height: 0 !important;
    -webkit-line-clamp: unset !important;
    display: block !important;
  }

  .project-preview,
  .video-frame,
  .video-wrapper,
  .youtube-wrapper,
  .dailymotion-wrapper,
  .upnext-image,
  .slider,
  .plate,
  .diagram-scroll,
  .diagram-modal {
    border-radius: 12px !important;
  }

  .youtube-wrapper iframe,
  .dailymotion-wrapper iframe {
    min-height: 220px;
    height: 46vw !important;
    max-height: 280px;
  }

  .upnext-image,
  .upnext-image img {
    min-height: 180px !important;
  }

  .hero-logo {
    height: 44px !important;
    width: auto !important;
    max-width: 42vw !important;
  }

  .hero-logo.flag-earth {
    height: 64px !important;
  }

  .language-switcher {
    top: 10px !important;
    right: 10px !important;
    gap: 0.3rem !important;
    padding: 0.35rem !important;
    max-width: calc(100vw - 20px);
  }

  .article-body .inline-img {
    width: 100% !important;
    float: none !important;
    margin: 0 0 0.9rem !important;
    max-width: 100% !important;
  }

  .video-attribution {
    font-size: 0.82rem !important;
    line-height: 1.45 !important;
  }

  .slider-controls button {
    width: 36px !important;
    height: 36px !important;
  }

  .diagram-scroll.expandable {
    height: 240px !important;
  }

  .diagram-wrap {
    min-width: 680px !important;
    padding: 0.65rem !important;
  }

  .diagram-modal {
    width: 96vw !important;
    max-height: 88vh !important;
  }

  .diagram-modal-body .mermaid {
    min-width: 760px !important;
  }

  .mermaid {
    font-size: 0.95rem !important;
  }

  .pause {
    margin: 1rem 0 !important;
    height: 1rem !important;
  }
}

@media (max-width: 600px) {
  .hero-section {
    min-height: auto !important;
    padding-top: 4.5rem !important;
    padding-bottom: 2.25rem !important;
  }

  .scroll-indicator {
    display: none !important;
  }

  .hero-content {
    padding-top: 0.4rem !important;
    padding-bottom: 0.2rem !important;
  }

  .project-number {
    font-size: 0.8rem !important;
    padding: 0.22rem 0.6rem !important;
  }

  .btn-explore {
    width: 100%;
    justify-content: center;
    padding: 0.58rem 0.95rem !important;
    font-size: 0.9rem !important;
  }

  .grid-item p {
    margin: 0.4rem 0.55rem !important;
    font-size: 1rem !important;
    line-height: 1.5 !important;
  }

  .diagram-scroll.expandable {
    height: 210px !important;
  }

  .diagram-wrap {
    min-width: 600px !important;
  }

  .diagram-modal-body .mermaid {
    min-width: 640px !important;
  }
}

@media (max-width: 480px) {
  .nav-bar {
    flex-direction: column;
    align-items: stretch;
    top: max(8px, env(safe-area-inset-top)) !important;
  }

  .nav-link {
    justify-content: center;
  }

  .lang-switch {
    justify-content: center;
  }

  .language-switcher {
    top: max(8px, env(safe-area-inset-top)) !important;
    right: 8px !important;
  }

  .project-badge {
    font-size: 0.68rem !important;
  }

  .tag {
    font-size: 0.72rem !important;
  }

  .hero-title {
    font-size: clamp(1.8rem, 11vw, 2.4rem) !important;
  }

  h1 {
    font-size: clamp(1.45rem, 8.8vw, 2rem) !important;
  }

  .diagram-scroll.expandable {
    height: 190px !important;
  }

  .diagram-wrap {
    min-width: 520px !important;
  }

  .diagram-modal-body .mermaid {
    min-width: 560px !important;
  }
}
