/*
 * Urbanix responsive contract
 * Loaded after page styles so shared viewport behaviour stays consistent.
 * Core ranges: compact <480, mobile <768, tablet <1024,
 * laptop <1280, desktop 1280-1799, wide desktop >=1800.
 */

html { min-width: 320px; }
body { overflow-x: clip; }
img, video, iframe, svg { max-width: 100%; }
main, section, article, aside, form, fieldset, nav { min-width: 0; }
p, h1, h2, h3, h4, a, button, label, dt, dd, li { overflow-wrap: anywhere; }
.shell { width: min(calc(100% - (2 * var(--gutter-page))), var(--container-public)); }

/* Wide desktops and zoomed-out browser viewports. */
@media (min-width: 1800px) {
  :root { --section-space: clamp(5rem, 6vw, 7.5rem); }
  html { font-size: 17px; }
  .public-header__row { min-height: 82px; padding-inline: 1.15rem; }
  .public-nav { gap: clamp(1.15rem, 1.35vw, 2rem); font-size: .76rem; }
  .home-hero__layout { grid-template-columns: minmax(420px, .76fr) minmax(760px, 1.24fr); }
  .home-hero__visual { min-height: clamp(650px, 39vw, 760px); }
  .home-hero h1 { max-width: 680px; }
  .m-journey { min-height: 340px; }
  .m-system { min-height: 500px; }
  .m-models, .catalogue-models, .catalogue-grid--premium { gap: 2rem; }
  .catalogue-intro__media, .model-showcase__media { min-height: 650px; }
  .configurator-layout { grid-template-columns: minmax(0, 1fr) 460px; gap: 2.25rem; }
  .admin-grid { grid-template-columns: repeat(4, minmax(260px, 1fr)); gap: 1.5rem; }
}

@media (min-width: 2400px) {
  html { font-size: 18px; }
  :root { --container-public: 1840px; }
}

/* Laptop and smaller desktop navigation. */
@media (max-width: 1280px) {
  :root { --gutter-page: clamp(1.25rem, 3vw, 2.5rem); }
  .public-header { padding-top: 12px; }
  .public-header__row { min-height: 72px; }
  .public-header__toggle { display: inline-flex; }
  .public-nav {
    position: absolute;
    top: calc(100% + .5rem);
    right: 0;
    left: 0;
    display: none;
    max-height: calc(100dvh - 7rem);
    overflow-y: auto;
    padding: 1rem;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-card);
    color: var(--color-brand-ink);
    background: rgb(255 255 255 / 98%);
    box-shadow: var(--shadow-deep);
  }
  .public-nav.is-open { display: flex; }
  .public-nav > a { padding-inline: .75rem; }
  .public-nav__cta { margin-top: .5rem; justify-content: center; }
  .home-hero__layout { grid-template-columns: minmax(300px, .78fr) minmax(500px, 1.22fr); gap: clamp(2rem, 4vw, 3.5rem); }
  .home-hero h1 { font-size: clamp(3.5rem, 6vw, 5.6rem); }
  .m-steps { grid-template-columns: repeat(4, 1fr); row-gap: 1.5rem; }
  .m-steps li:nth-child(4)::before { display: none; }
  .catalogue-filter, .catalogue-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .catalogue-filter > div, .catalogue-filters__heading { grid-column: 1 / -1; grid-row: auto; }
  .shape-feature__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .reform-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .admin-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Tablet landscape and iPad-sized layouts. */
@media (max-width: 1024px) {
  :root { --section-space: clamp(3.75rem, 8vw, 5rem); }
  .section-heading--split { grid-template-columns: 1fr; gap: 1rem; }
  .public-footer__lead { padding: 2.5rem; }
  .public-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem; }
  .home-hero__layout, .catalogue-intro__grid, .model-showcase__grid,
  .catalogue-handoff__grid, .model-description, .model-specifications,
  .model-experience__grid, .project-detail, .contact-layout,
  .m-method__body, .m-partners, .m-academy { grid-template-columns: 1fr; }
  .home-hero__copy { max-width: 760px; padding-top: 2rem; }
  .home-hero__visual { min-height: clamp(500px, 70vw, 650px); }
  .m-journeys, .m-models, .projects-grid, .catalogue-models,
  .catalogue-grid, .catalogue-grid--premium, .reform-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .m-benefits > div { grid-template-columns: repeat(2, 1fr); }
  .m-systems, .m-service-links, .system-split { grid-template-columns: 1fr; }
  .catalogue-intro__media, .model-showcase__media { min-height: clamp(440px, 64vw, 620px); }
  .catalogue-results__heading { margin-top: 3.5rem; }
  .model-showcase__media { order: -1; }
  .plan-layout, .media-feature, .before-after > div { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gallery-grid img { height: auto; aspect-ratio: 4 / 3; }
  .package-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .configurator-layout { grid-template-columns: 1fr; }
  .configurator-summary { position: static; order: -1; }
  .admin-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-catalogue-section { grid-template-columns: 1fr; }
}

/* Mobile and tablet portrait. */
@media (max-width: 767px) {
  :root {
    --gutter-page: 1.25rem;
    --section-space: clamp(3rem, 12vw, 4rem);
  }
  html { font-size: 16px; }
  .public-header__row { padding: .55rem .65rem .55rem .8rem; gap: .75rem; }
  .brand { width: min(48vw, 190px); }
  .public-header .brand--tagline { width: min(55vw, 210px); margin-left: -.8rem; }
  .public-header__toggle span { display: none; }
  .public-nav { max-height: calc(100dvh - 6rem); }
  .public-footer__lead { margin-top: 2rem; padding: 1.75rem; flex-direction: column; align-items: flex-start; gap: 1.5rem; }
  .public-footer__lead h2 br { display: none; }
  .public-footer__grid { grid-template-columns: 1fr; padding-block: 2.5rem; gap: 2rem; }
  .public-footer__bottom { flex-direction: column; }
  .button-row { align-items: stretch; flex-direction: column; }
  .button-row .button { width: 100%; }
  .section-heading { margin-bottom: 2rem; }
  .home-hero { padding-top: 92px; }
  .home-hero__layout { grid-template-columns: 1fr; gap: 1.25rem; }
  .home-hero__copy { padding-block: 1rem 0; }
  .home-hero h1 { max-width: 11ch; font-size: clamp(2.75rem, 13vw, 4.25rem); }
  .home-hero__description { font-size: 1rem; }
  .home-hero__visual { min-height: clamp(440px, 125vw, 590px); }
  .home-hero__starter { right: .75rem; bottom: .75rem; left: .75rem; grid-template-columns: 1fr; padding: 1rem; }
  .home-hero__starter-actions { grid-template-columns: 1fr; }
  .home-hero__signature { top: 1rem; left: .75rem; }
  .home-hero__facts, .m-benefits > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .home-hero__facts > div, .home-hero__facts > a { padding-inline: .75rem; }
  .m-journeys, .m-models, .projects-grid, .catalogue-models,
  .catalogue-grid, .catalogue-grid--premium, .reform-grid,
  .package-grid, .service-rail { grid-template-columns: 1fr; }
  .m-journey { min-height: 300px; }
  .m-system { min-height: 390px; }
  .m-steps { grid-template-columns: repeat(2, 1fr); }
  .m-steps li:nth-child(2n)::before { display: none; }
  .m-portal-preview__project { grid-template-columns: 1fr; }
  .m-portal-preview__project img { height: auto; aspect-ratio: 16 / 9; }
  .m-press, .m-resources { grid-template-columns: 1fr; }
  .m-press__names { justify-content: flex-start; }
  .page-hero, .page-hero__content, .model-hero, .model-hero__content,
  .catalogue-hero, .catalogue-hero__content, .reforms-hero, .reforms-hero__content { min-height: max(560px, 82svh); }
  .page-hero__content, .model-hero__content, .catalogue-hero__content,
  .reforms-hero__content { padding-top: 7rem; padding-bottom: 3.5rem; }
  .page-hero h1, .model-hero h1, .wood-hero h1,
  .catalogue-hero__content h1, .reforms-hero h1 { font-size: clamp(2.6rem, 12vw, 4rem); }
  .catalogue-hero__facts, .reforms-hero__benefits { position: static; display: grid; width: 100%; margin-top: 1.5rem; grid-template-columns: repeat(2, 1fr); }
  .catalogue-filter-wrap { margin-top: 0; }
  .catalogue-filter, .catalogue-filters { padding: 1.1rem; grid-template-columns: 1fr; }
  .catalogue-filter > *, .catalogue-filters > * { grid-column: auto !important; }
  .catalogue-results__heading, .model-final-cta > div { align-items: flex-start; flex-direction: column; gap: 1rem; }
  .catalogue-intro { padding-top: 7rem; }
  .catalogue-intro__copy h1 { font-size: clamp(2.8rem, 14vw, 4.4rem); }
  .catalogue-intro__media, .model-showcase__media, .catalogue-handoff__media { min-height: 390px; }
  .catalogue-intro__facts { grid-template-columns: 1fr; }
  .catalogue-empty { padding: 2.5rem 1.25rem; }
  .model-plan-grid, .model-gallery, .model-gallery--fallback { grid-template-columns: 1fr; }
  .model-showcase__copy dl, .model-specifications dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .shape-feature__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filter-form { grid-template-columns: 1fr; }
  .filter-form > * { grid-column: auto !important; }
  .trust-strip__grid { grid-template-columns: repeat(2, 1fr); }
  .system-panel { min-height: 390px; }
  .visual-choices { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .finish-choices, .extras-grid { grid-template-columns: 1fr; }
  .configurator-steps { overflow-x: auto; scroll-snap-type: x proximity; }
  .configurator-steps__item { min-width: 108px; scroll-snap-align: start; }
  .configurator-summary { display: block; }
  .configurator-summary dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .configurator-choice-grid--four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .configurator-form, .configurator-final { padding: 1.1rem; }
  .admin-page { padding-top: 2.5rem; padding-bottom: 3rem; }
  .admin-page > header { align-items: flex-start; flex-direction: column; }
  .admin-grid, .admin-catalogue-form { grid-template-columns: 1fr; }
  .admin-filter { overflow-x: auto; padding-bottom: .35rem; }
  .admin-filter a { flex: none; }
  .admin-table { overflow-x: auto; }
  .admin-table__head, .admin-table__row { min-width: 680px; }
  .admin-category-row { grid-template-columns: 1fr; }
  .admin-category-row textarea { grid-column: auto; }
  .admin-catalogue-items article, .configuration-admin-option summary { align-items: flex-start; flex-direction: column; }
  .simple-form-page { padding: 6rem 1rem 2rem; }
}

@media (max-width: 479px) {
  :root { --gutter-page: 1rem; }
  .brand { width: min(52vw, 170px); }
  .public-header .brand--tagline { width: min(58vw, 190px); }
  .public-header__toggle { padding-inline: .65rem; }
  .home-hero h1 { font-size: clamp(2.5rem, 13.5vw, 3.65rem); }
  .home-hero__visual { min-height: 500px; }
  .home-hero__facts, .m-benefits > div { grid-template-columns: 1fr; }
  .m-journey { min-height: 270px; }
  .m-steps { grid-template-columns: 1fr 1fr; }
  .m-portal-preview__links, .partner-names { grid-template-columns: 1fr 1fr; }
  .catalogue-hero__facts, .reforms-hero__benefits { grid-template-columns: 1fr; }
  .model-showcase__copy dl, .model-specifications dl { grid-template-columns: 1fr; }
  .shape-feature__grid, .trust-strip__grid { grid-template-columns: 1fr; }
  .configurator-choice-grid--four { grid-template-columns: 1fr; }
  .configurator-summary dl { grid-template-columns: 1fr 1fr; }
  .preview-notice { right: .75rem; bottom: .75rem; left: .75rem; max-width: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
}
