/* Protecciones finales compartidas por el sitio publico y el acceso. */
html, body {
  width: 100%;
  max-width: 100%;
  min-width: 0 !important;
  overflow-x: clip;
}
*, *::before, *::after { box-sizing: border-box; }
main, section, article, header, footer, nav, form,
.container, .product-container, .nav-wrap, .product-nav,
.home-intro-grid, .story-grid, .values-layout, .contact-layout,
.product-hero-grid, .uses-layout, .requirements-layout, .request-layout,
.footer-grid, .profile-grid, .benefits-grid, .uses-grid,
.auth-shell, .auth-panel, .auth-form-wrap, .choice-panel {
  min-width: 0;
  max-width: 100%;
}
img, video, iframe, svg, canvas {
  display: block;
  max-width: 100%;
}
img, video { height: auto; }
input, select, textarea, button {
  min-width: 0;
  max-width: 100%;
  font: inherit;
}
input, select, textarea { width: 100%; }
h1, h2, h3, h4, p, label, a, button, td, th,
.profile-card, .benefit-card, .choice-copy {
  overflow-wrap: anywhere;
}
.site-header, .product-header { max-width: 100vw; }
.site-header .main-nav, .product-nav nav { overscroll-behavior: contain; }
.home-intro-copy, .story-heading, .contact-copy, .product-hero-copy,
.uses-copy, .request-copy, .auth-form-wrap, .choice-copy { min-width: 0; }
.contact-form, .profile-form, .application-card,
.requirements-card, .steps-card { width: 100%; }
.toast, .product-toast {
  max-width: min(430px, calc(100vw - 28px));
}
:where(a, button, input, select, textarea):focus-visible {
  outline: 3px solid rgba(95, 148, 119, 0.45);
  outline-offset: 3px;
}

@media (max-width: 1120px) {
  body.menu-open { overflow: hidden; }
  .site-header .main-nav, .product-nav nav {
    height: auto;
    max-height: calc(100dvh - 72px);
    padding-bottom: max(28px, env(safe-area-inset-bottom));
  }
}

@media (max-width: 800px) {
  .home-intro-grid, .story-grid, .values-layout, .contact-layout,
  .product-hero-grid, .uses-layout, .requirements-layout, .request-layout,
  .footer-grid, .choice-grid {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .home-actions, .hero-actions, .profile-selection,
  .contact-actions, .form-actions { flex-wrap: wrap; }
  .home-actions > *, .hero-actions > *, .profile-selection > *,
  .contact-actions > *, .form-actions > * { max-width: 100%; }
  .auth-shell, .auth-panel { min-height: 100dvh; }
}

@media (max-width: 600px) {
  :root { --site-gutter: 14px; }
  .container, .product-container, .nav-wrap, .product-nav {
    width: calc(100% - 28px);
  }
  .home-intro, .standalone-story, .standalone-profiles,
  .contact-screen, .product-hero, .uses-section,
  .requirements-section, .request-section { padding-inline: 0; }
  .home-intro-copy h1, .story-heading h1, .contact-copy h1,
  .product-hero h1, .section-heading h1, .choice-panel h1 {
    font-size: clamp(2rem, 11vw, 3rem) !important;
    line-height: 1.06 !important;
  }
  .home-actions, .hero-actions, .profile-selection,
  .contact-actions, .form-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .home-actions > *, .hero-actions > *, .profile-selection > *,
  .contact-actions > *, .form-actions > * {
    width: 100%;
    justify-content: center;
    text-align: center;
  }
  .application-card, .contact-form, .profile-form,
  .requirements-card, .steps-card { padding-inline: 16px !important; }
  .choice-header { gap: 12px; }
  .choice-header img { max-width: 48vw; }
  .choice-header button { padding-inline: 14px; }
  .choice-card {
    grid-template-columns: auto minmax(0, 1fr);
    gap: 15px;
  }
  .choice-card b { display: none; }
  .auth-panel { padding-inline: 16px !important; }
  .auth-form-wrap, .auth-form, .password-field, .auth-submit {
    width: 100% !important;
  }
}

@media (max-width: 380px) {
  .container, .product-container, .nav-wrap, .product-nav {
    width: calc(100% - 20px);
  }
  .brand, .brand img, .product-brand, .product-brand img { width: 112px; }
  .choice-header { padding-inline: 12px; }
}

@media (min-width: 1121px) and (max-height: 760px) {
  .site-header .nav-wrap, .product-nav { height: 72px; }
  .home-intro, .product-hero, .contact-screen {
    min-height: auto;
    padding-block: 54px;
  }
}

@media (pointer: coarse) {
  button, .btn, .product-btn, .main-nav a, .product-nav nav a,
  input, select { min-height: 44px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
