/* ========================================================================
   CHUVA DE ARROZ - Responsive hardening
   Shared mobile rules loaded after every page-specific stylesheet.
   ======================================================================== */

html {
    width: 100%;
    overflow-x: clip;
    text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
}

body {
    width: 100%;
    min-width: 0;
    overflow-x: clip;
}

main,
section,
header,
footer,
nav,
form,
fieldset,
div,
article,
figure {
    min-width: 0;
}

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

button,
input,
select,
textarea {
    max-width: 100%;
    font: inherit;
}

h1,
h2,
h3,
p,
a,
button,
label,
summary {
    overflow-wrap: break-word;
}

body.menu-open {
    overflow: hidden;
    overscroll-behavior: none;
}

.mobile-nav {
    height: 100vh;
    min-height: 100vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    pointer-events: none;
}

.mobile-nav.open {
    pointer-events: auto;
}

@supports (height: 100dvh) {
    .mobile-nav {
        height: 100dvh;
        min-height: 100dvh;
    }
}

@media (max-width: 767px) {
    :root {
        --mobile-gutter: clamp(1rem, 5vw, 1.5rem);
        --section-padding: 4.5rem 0;
    }

    .container,
    .container-wide {
        padding-inline: var(--mobile-gutter);
    }

    .site-header {
        top: max(0.75rem, env(safe-area-inset-top));
        width: calc(100% - 1.5rem);
        padding: 0.4rem 1rem;
    }

    .site-header.scrolled {
        padding: 0.35rem 1rem;
    }

    .header-inner {
        gap: 0.5rem;
        padding-inline: 0;
    }

    .logo {
        max-width: calc(100% - 3.75rem);
    }

    .logo img {
        width: 2.5rem;
        height: 2.5rem;
        flex: 0 0 2.5rem;
        object-fit: cover;
    }

    .logo-text {
        min-width: 0;
        font-size: clamp(0.7rem, 3.7vw, 0.875rem);
        letter-spacing: 0.075em;
        white-space: nowrap;
    }

    .mobile-menu-btn {
        width: 2.75rem;
        height: 2.75rem;
        min-width: 2.75rem;
        min-height: 2.75rem;
        flex: 0 0 2.75rem;
    }

    .mobile-nav {
        justify-content: center;
        gap: 0.25rem;
        padding: calc(5.5rem + env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) calc(2rem + env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
    }

    .mobile-nav-link {
        width: min(100%, 22rem);
        min-height: 2.75rem;
        padding: 0.55rem 1rem;
        font-size: clamp(1.15rem, 6vw, 1.45rem);
    }

    .mobile-nav .btn-cta {
        width: min(100%, 20rem);
        min-height: 3rem;
        margin-top: 1rem;
        padding: 0.8rem 1.25rem;
        white-space: normal;
    }

    .btn-cta,
    .btn-outline,
    .home-button,
    .about-button,
    .service-primary-action,
    .service-secondary-action,
    .dep-cta__btn {
        min-height: 2.75rem;
        text-align: center;
        white-space: normal;
    }

    input,
    select,
    textarea,
    .form-input-clean {
        min-width: 0;
        font-size: 16px !important;
    }

    .site-footer {
        padding-right: max(1rem, env(safe-area-inset-right));
        padding-bottom: max(2rem, env(safe-area-inset-bottom));
        padding-left: max(1rem, env(safe-area-inset-left));
    }

    .site-footer__inner {
        gap: 1.4rem;
    }

    .site-footer__brand {
        white-space: normal;
        text-align: center;
    }

    .site-footer__nav {
        gap: 0.75rem 1rem;
    }

    .site-footer__nav a,
    .site-footer__social a {
        min-height: 2.75rem;
        display: inline-flex;
        align-items: center;
    }

    .back-to-top,
    .quick-whatsapp {
        right: max(0.875rem, env(safe-area-inset-right));
    }

    .back-to-top {
        bottom: max(0.875rem, env(safe-area-inset-bottom));
    }

    .quick-whatsapp {
        bottom: calc(max(0.875rem, env(safe-area-inset-bottom)) + 3.75rem);
    }

    /* Home */
    .home-container,
    .home-hero__content {
        width: calc(100% - (2 * var(--mobile-gutter)));
    }

    .home-hero,
    .about-hero {
        height: auto;
        min-height: 100svh;
    }

    .home-hero__content {
        padding-top: calc(7rem + env(safe-area-inset-top));
        padding-bottom: max(3rem, calc(2rem + env(safe-area-inset-bottom)));
    }

    .home-hero h1 {
        font-size: clamp(3.05rem, 15vw, 4.85rem);
        line-height: 0.9;
    }

    .home-hero__actions,
    .home-cta__actions {
        align-items: stretch;
    }

    .home-hero__actions .home-button,
    .home-cta__actions .home-button {
        width: 100%;
    }

    .home-manifesto__collage {
        min-height: clamp(27rem, 145vw, 36.875rem);
    }

    .home-collage__main {
        height: clamp(25rem, 130vw, 32.5rem);
    }

    .home-method__visual {
        min-height: clamp(28rem, 145vw, 36.25rem);
    }

    .home-method__image {
        height: clamp(26rem, 132vw, 33.125rem);
    }

    .home-project,
    .home-project--portrait,
    .home-project:last-child {
        width: min(84vw, 23rem);
        height: clamp(25rem, 128vw, 32rem);
    }

    /* About */
    .about-shell,
    .about-hero__inner {
        width: calc(100% - (2 * var(--mobile-gutter)));
    }

    .about-hero__inner {
        padding-top: calc(7rem + env(safe-area-inset-top));
        padding-bottom: max(3rem, calc(2rem + env(safe-area-inset-bottom)));
    }

    .about-hero h1,
    .about-cta h2 {
        font-size: clamp(3rem, 14.5vw, 5rem);
    }

    .about-hero__actions,
    .about-cta__actions {
        align-items: stretch;
    }

    .about-hero__actions .about-button,
    .about-cta__actions .about-button {
        width: 100%;
    }

    .about-story__moment figcaption {
        right: 1.25rem;
        bottom: 1.5rem;
        left: 1.25rem;
    }

    /* Services */
    .service-hero {
        height: auto;
        min-height: 100svh;
    }

    .service-hero__content {
        width: min(100%, 44rem);
        padding: calc(7rem + env(safe-area-inset-top)) var(--mobile-gutter) max(3rem, calc(2rem + env(safe-area-inset-bottom)));
    }

    .service-hero__title {
        font-size: clamp(2.65rem, 13.5vw, 4.25rem);
        line-height: 1;
    }

    .service-hero__actions {
        width: 100%;
        align-items: stretch;
    }

    .service-primary-action,
    .service-secondary-action {
        padding-inline: 1rem;
    }

    .service-hero__assurance {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.65rem;
    }

    .service-fit,
    .service-faq {
        padding-inline: var(--mobile-gutter);
    }

    .service-fit__card {
        min-height: 0;
        padding: clamp(1.4rem, 7vw, 2rem);
    }

    .service-faq summary {
        min-height: 3.25rem;
        padding-inline: 1rem;
    }

    /* Portfolio */
    .portfolio-featured__header h2,
    .portfolio-gallery__intro h2 {
        font-size: clamp(2.45rem, 12.5vw, 4rem);
    }

    .portfolio-photo-motion .gallery-overlay {
        padding: 1rem;
    }

    /* Testimonials */
    .testimonials-page .dep-hero {
        height: auto;
        min-height: 100svh;
    }

    .testimonials-page .dep-hero__content {
        width: 100%;
        padding: calc(7rem + env(safe-area-inset-top)) var(--mobile-gutter) max(3rem, calc(2rem + env(safe-area-inset-bottom)));
    }

    .testimonials-page .dep-hero__title,
    .testimonials-page.testimonials-gsap .dep-hero__title {
        max-width: 100%;
        font-size: clamp(2.8rem, 14vw, 4.25rem);
    }

    .testimonials-page .dep-showcase,
    .testimonials-page .dep-cards-section,
    .testimonials-page .dep-cta__content {
        padding-inline: var(--mobile-gutter);
    }

    .testimonials-page .dep-showcase-item__content,
    .testimonials-page .dep-card__surface {
        min-width: 0;
    }

    .testimonials-page .dep-cta__btn {
        width: 100%;
    }

    /* Budget form */
    .orcamento-steps-refined .orc-content {
        width: 100%;
        padding-right: var(--mobile-gutter) !important;
        padding-bottom: max(4rem, calc(3rem + env(safe-area-inset-bottom))) !important;
        padding-left: var(--mobile-gutter) !important;
    }

    .orcamento-steps-refined #header-text {
        width: 100%;
        padding-inline: 0;
    }

    .orcamento-steps-refined #header-text h1 {
        font-size: clamp(2.15rem, 11vw, 3.25rem);
    }

    .orcamento-steps-refined .orc-project-layout,
    .orcamento-steps-refined .orc-form-card,
    .orcamento-steps-refined .step-content {
        width: 100%;
        min-width: 0;
    }

    .orcamento-steps-refined .orc-form-card {
        padding: clamp(1rem, 5vw, 1.4rem) !important;
    }

    .orc-step-pair,
    .orc-contact-fields,
    .orc-date-field__controls {
        grid-template-columns: minmax(0, 1fr) !important;
    }

    .orc-date-field__controls {
        gap: 0.75rem;
    }

    .orc-trust-badges {
        width: 100%;
        align-items: stretch;
        flex-direction: column;
    }

    .orc-trust-badges > div {
        min-width: 0;
        justify-content: flex-start;
    }

    .step-indicator {
        width: 100%;
    }

    .step-connector {
        min-width: 0;
    }

    .step-nav-row {
        align-items: stretch !important;
        flex-direction: column-reverse !important;
    }

    .step-nav-row .btn-next,
    .step-nav-row .btn-back {
        width: 100% !important;
        min-height: 2.75rem;
        justify-content: center !important;
        text-align: center !important;
    }
}

@media (max-width: 380px) {
    :root {
        --mobile-gutter: 0.875rem;
    }

    .logo-text {
        font-size: 0.68rem;
        letter-spacing: 0.055em;
    }

    .mobile-nav-link {
        font-size: 1.12rem;
    }

    .home-hero h1,
    .about-hero h1,
    .service-hero__title,
    .testimonials-page .dep-hero__title,
    .testimonials-page.testimonials-gsap .dep-hero__title {
        font-size: clamp(2.75rem, 14.5vw, 3.45rem);
    }

    .home-service {
        grid-template-columns: 1.75rem minmax(0, 1fr) auto;
        gap: 0.55rem;
    }

    .home-service h3 {
        font-size: 1.35rem;
    }

    .about-stat {
        padding-inline: 0.4rem;
    }

    .service-fit__card,
    .orcamento-steps-refined .orc-form-card {
        border-radius: 0.85rem !important;
    }
}

@media (max-width: 767px) and (max-height: 560px) and (orientation: landscape) {
    .mobile-nav {
        justify-content: flex-start;
        gap: 0;
        padding-top: calc(4.5rem + env(safe-area-inset-top));
    }

    .mobile-nav-link {
        min-height: 2.25rem;
        padding-block: 0.25rem;
        font-size: 1rem;
    }

    .mobile-nav .btn-cta {
        min-height: 2.5rem;
        margin-top: 0.4rem;
        padding-block: 0.55rem;
    }

    .home-hero,
    .about-hero,
    .service-hero,
    .testimonials-page .dep-hero {
        height: auto;
        min-height: 100svh;
    }
}

@media (hover: none) and (pointer: coarse) {
    a,
    button,
    summary,
    input,
    select,
    textarea {
        touch-action: manipulation;
    }

    button,
    summary,
    [role="button"],
    .mobile-nav-link,
    .site-footer__nav a,
    .site-footer__social a {
        min-height: 44px;
    }

    .home-service:hover,
    .service-fit__card:hover {
        transform: none;
    }
}

/* Mobile menu hardening: close control and budget CTA stay visible in every state. */
@media (max-width: 959px) {
    body:not(.portfolio-page) .site-header.menu-open,
    body:not(.portfolio-page) .site-header.scrolled.menu-open {
        overflow: visible;
    }

    body:not(.portfolio-page) .site-header.menu-open .header-actions,
    body:not(.portfolio-page) .site-header.menu-open .mobile-menu-btn,
    body:not(.portfolio-page) .site-header.scrolled.menu-open .mobile-menu-btn {
        display: flex;
        visibility: visible;
        opacity: 1;
    }

    body:not(.portfolio-page) .site-header.menu-open .mobile-menu-btn {
        position: relative;
        z-index: 310;
    }

    body:not(.portfolio-page) .mobile-menu-btn.open::before,
    body:not(.portfolio-page) .mobile-menu-btn.open::after {
        z-index: 2;
        display: block;
        visibility: visible;
        opacity: 1;
        background: #fff;
        transition: none;
    }

    body:not(.portfolio-page) .mobile-menu-btn.open::before {
        transform: rotate(45deg) scaleX(1);
    }

    body:not(.portfolio-page) .mobile-menu-btn.open::after {
        transform: rotate(-45deg) scaleX(1);
    }

    body:not(.portfolio-page) .mobile-nav.open .btn-cta {
        display: inline-flex;
        visibility: visible;
        opacity: 1;
        transform: none;
        pointer-events: auto;
        transition: none;
        transition-delay: 0s;
    }
}

/* Desktop: mantém a navbar no topo após a rolagem, sem menu lateral. */
@media (min-width: 960px) {
    body:not(.portfolio-page) .site-header.scrolled,
    body:not(.portfolio-page) .site-header.scrolled.nav-expanded {
        top: 1.25rem;
        right: auto;
        left: 50%;
        width: calc(100% - 2rem);
        max-width: 960px;
        height: 54px;
        padding: 0.5rem 1.25rem;
        overflow: visible;
        border: 1px solid rgba(255, 255, 255, 0.14);
        border-radius: 9999px;
        background: rgba(22, 7, 12, 0.88);
        box-shadow: 0 10px 32px rgba(12, 3, 7, 0.24);
        backdrop-filter: blur(20px) saturate(160%);
        -webkit-backdrop-filter: blur(20px) saturate(160%);
        transform: translateX(-50%);
        animation: none;
        pointer-events: auto;
    }

    body:not(.portfolio-page) .site-header.nav-returning {
        animation: none;
    }

    body:not(.portfolio-page) .site-header.scrolled .header-inner,
    body:not(.portfolio-page) .site-header.scrolled.nav-expanded .header-inner {
        position: static;
        display: flex;
        width: 100%;
        height: 100%;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
    }

    body:not(.portfolio-page) .site-header.scrolled .logo,
    body:not(.portfolio-page) .site-header.scrolled.nav-expanded .logo {
        display: flex;
        width: auto;
        height: auto;
        padding: 0;
        flex: 0 0 auto;
        gap: 0.75rem;
        justify-content: flex-start;
        overflow: visible;
        border: 0;
        pointer-events: auto;
    }

    body:not(.portfolio-page) .site-header.scrolled .logo img {
        width: 2.25rem;
        height: 2.25rem;
        flex: 0 0 2.25rem;
        border-radius: 50%;
        object-fit: cover;
    }

    body:not(.portfolio-page) .site-header.scrolled .logo-text,
    body:not(.portfolio-page) .site-header.scrolled.nav-expanded .logo-text {
        display: block;
        max-width: none;
        overflow: visible;
        opacity: 1;
        transform: none;
        pointer-events: auto;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-desktop,
    body:not(.portfolio-page) .site-header.scrolled:hover .nav-desktop,
    body:not(.portfolio-page) .site-header.scrolled:focus-within .nav-desktop,
    body:not(.portfolio-page) .site-header.scrolled.nav-expanded .nav-desktop {
        position: static;
        display: flex;
        width: auto;
        max-height: none;
        padding: 0;
        flex-direction: row;
        align-items: center;
        gap: 1.5rem;
        overflow: visible;
        visibility: visible;
        opacity: 1;
        transform: none;
        pointer-events: auto;
        transition: none;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link {
        display: inline-block;
        width: auto;
        min-height: 0;
        height: 1.25rem;
        padding: 0;
        overflow: hidden;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
        text-align: left;
        text-shadow: none;
        transform: none;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link-slide {
        display: flex;
        width: auto;
        height: auto;
        flex-direction: column;
        align-items: stretch;
        transform: none;
        transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1) !important;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link:hover .nav-link-slide {
        transform: translateY(-50%);
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link-slide > span:nth-child(1),
    body:not(.portfolio-page) .site-header.scrolled .nav-link-slide > span:nth-child(2) {
        display: block;
        width: auto;
        height: 1.25rem;
        padding: 0;
        border-radius: 0;
        background: transparent;
        box-shadow: none;
        font-size: 0.8125rem;
        line-height: 1.25rem;
        text-align: left;
        text-shadow: none;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link-slide > span:nth-child(1) {
        color: rgba(255, 255, 255, 0.72);
        font-weight: 500;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link-slide > span:nth-child(2) {
        color: #fff;
        font-weight: 700;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-link.active .nav-link-slide > span {
        color: #f23665;
        font-weight: 700;
    }

    body:not(.portfolio-page) .site-header.scrolled .header-actions {
        display: flex;
        width: auto;
        align-items: center;
    }

    body:not(.portfolio-page) .site-header.scrolled .nav-cta-wrap,
    body:not(.portfolio-page) .site-header.scrolled:hover .nav-cta-wrap,
    body:not(.portfolio-page) .site-header.scrolled.nav-expanded .nav-cta-wrap {
        display: inline-flex;
        width: auto;
        max-height: none;
        overflow: visible;
        opacity: 1;
        transform: none;
        pointer-events: auto;
    }

    body:not(.portfolio-page) .site-header.scrolled .header-cta {
        display: inline-flex;
        width: auto;
        padding: 0.45rem 1.25rem;
    }
}
