
/* Tooltips responsivos para evitar desbordes */
.group .absolute {
    max-width: 90vw;
    white-space: normal !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    z-index: 30;
}
@media (max-width: 600px) {
    .group .absolute {
        left: 0 !important;
        right: auto !important;
        max-width: 98vw !important;
        font-size: 0.98rem !important;
        padding: 0.7em 0.8em !important;
    }
}
/* Evitar desbordamiento de texto y contenido en el formulario */
.form-viabilidad-container, .bg-white.rounded-3xl.p-8.border.shadow-xl, #form-viabilidad {
    overflow-x: hidden !important;
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    max-width: 100vw !important;
    box-sizing: border-box !important;
}

#solicitud {
    scroll-margin-top: 180px;
    background-color: #f3f4f6; /* Fondo gris claro para que el formulario blanco destaque */
}

@media (max-width: 768px) {
    #solicitud {
        padding: 1.5rem 1.2rem !important; /* Más espacio lateral como pidió el usuario */
    }
    #solicitud h2 {
        text-align: left !important;
        font-size: 2.2rem !important;
    }
}

#form-feedback {
    word-break: break-word !important;
    overflow-wrap: break-word !important;
    max-width: 100%;
    box-sizing: border-box;
}
/* --- Responsive para formulario y secciones principales --- */
@media (max-width: 768px) {
    .max-w-7xl, .max-w-4xl {
        max-width: 100vw !important;
        padding-left: 1.25rem !important;
        padding-right: 1.25rem !important;
    }
    .py-24 {
        padding-top: 2.5rem !important;
        padding-bottom: 2.5rem !important;
    }
    .px-6 {
        padding-left: 1.25rem !important;
        padding-right: 1.25rem !important;
    }
    .rounded-3xl, .rounded-2xl, .rounded-xl {
        border-radius: 1rem !important;
    }
    .text-4xl {
        font-size: 2rem !important;
    }
    .text-3xl {
        font-size: 1.5rem !important;
    }
    .text-2xl {
        font-size: 1.2rem !important;
    }
    .grid-cols-1, .md\:grid-cols-2, .md\:grid-cols-3, .md\:grid-cols-4 {
        grid-template-columns: 1fr !important;
    }
    .gap-12, .gap-14, .gap-16, .gap-8, .gap-10, .gap-4 {
        gap: 1rem !important;
    }
    .h-screen, .min-h-screen {
        height: auto !important;
        min-height: 100vh !important;
    }
    .w-full {
        width: 100% !important;
    }
    .p-8, .p-10, .p-12 {
        padding: 1rem !important;
    }
    .mb-14 {
        margin-bottom: 1.5rem !important;
    }
    .mb-6 {
        margin-bottom: 1rem !important;
    }
    /* Regla eliminada por ser demasiado genérica y romper el logo */
    .items-center, .justify-center {
        align-items: center !important;
        justify-content: center !important;
    }
    .input {
        font-size: 1rem !important;
        padding: 0.6rem 0.8rem !important;
    }
    .shadow-xl, .shadow-2xl, .shadow-lg {
        box-shadow: 0 2px 8px rgba(16,185,129,0.10) !important;
    }
    .h-72, .h-50, .h-[340px] {
        height: 180px !important;
        min-height: 120px !important;
    }
    .w-350 {
        width: 100% !important;
        max-width: 320px !important;
    }
    .aspect-video, .md\:aspect-square {
        aspect-ratio: 16/9 !important;
        height: auto !important;
    }
    .text-lg, .font-bold {
        font-size: 1rem !important;
    }
    .text-sm {
        font-size: 0.95rem !important;
    }
    .p-4, .p-5, .p-6 {
        padding: 0.7rem !important;
    }
    .mb-4 {
        margin-bottom: 0.7rem !important;
    }
    .mb-8 {
        margin-bottom: 1rem !important;
    }
    .rounded-b-3xl {
        border-radius: 0.7rem !important;
    }
    .border, .border-emerald-200, .border-gray-200, .border-brand-orange {
        border-width: 1px !important;
    }
    .space-y-6 > * + * {
        margin-top: 1.2rem !important;
    }
    /* Fix header on mobile */
    .header-nav-container {
        flex-direction: row !important;
        display: flex !important;
        justify-content: space-between !important;
        align-items: center !important;
        flex-wrap: nowrap !important;
    }
    /* Hero title size on mobile */
    .h1-movil-grande {
        font-size: 2.6rem !important;
        line-height: 1.1 !important;
        text-align: center !important;
    }
}
@media (max-width: 480px) {
    .text-4xl {
        font-size: 1.3rem !important;
    }
    .text-3xl {
        font-size: 1.1rem !important;
    }
    .text-2xl {
        font-size: 1rem !important;
    }
    .input {
        font-size: 0.95rem !important;
        padding: 0.8rem 1rem !important;
    }
    .w-350 {
        max-width: 98vw !important;
    }
    .h1-movil-grande {
        font-size: 2.2rem !important;
    }
}
/* Selects personalizados y visibles */
/* Menú hamburguesa mejorado */
/* Menú hamburguesa mejorado */
#mobile-menu { display: none; }
#mobile-menu.active {
    display: flex !important;
    flex-direction: column;
    position: fixed;
    inset: 0;
    z-index: 50;
    background: rgba(255,255,255,0.97);
    align-items: center;
    justify-content: center;
    gap: 2.5rem;
}
#mobile-menu a {
    font-size: 1.5rem;
    font-weight: bold;
    color: var(--brand-emerald-deep);
    text-transform: uppercase;
    text-decoration: none;
    letter-spacing: 0.08em;
    transition: color 0.2s;
    padding: 0.7em 1.5em;
    border-radius: 0.7em;
    background: none !important;
}
#mobile-menu a:hover {
    color: var(--brand-orange);
    background: none !important;
}
#mobile-menu .presupuesto-btn {
    background: var(--brand-orange);
    color: #fff;
    padding: 0.9rem 2.7rem;
    border-radius: 9999px;
    font-size: 1.3rem;
    font-weight: bold;
    box-shadow: 0 10px 30px rgba(16,185,129,0.18);
    transition: background 0.2s, color 0.2s;
}
#mobile-menu .presupuesto-btn:hover {
    background: var(--brand-orange-deep);
    color: #fff;
}
@media (max-width: 600px) {
    #mobile-menu a {
        font-size: 1.1rem;
        padding: 0.7em 1em;
    }
    #mobile-menu .presupuesto-btn {
        font-size: 1rem;
        padding: 0.8rem 1.5rem;
    }
}

:root {
    --brand-emerald: #199c70;
    --brand-emerald-dark: #047857;
    --brand-emerald-deep: #065F46;
    --brand-emerald-soft: #ECFDF5;
    --brand-orange: #FF8C00;
    --brand-orange-deep: #EA7A00;
}

body {
    font-family: 'Montserrat', sans-serif;
    background-image: radial-gradient(circle at 20% -20%, rgba(16, 185, 129, 0.16), transparent 45%), radial-gradient(circle at 90% 0%, rgba(255, 140, 0, 0.12), transparent 42%);
}
p{
    line-height: 1.6;
    font-size: 1.2rem !important;
}
.bg-brand-orange { background-color: var(--brand-orange); }
.text-brand-orange { color: var(--brand-orange); }
.bg-brand-emerald { background-color: var(--brand-emerald); }
.bg-brand-emerald-dark { background-color: var(--brand-emerald-dark); }
.text-brand-emerald { color: var(--brand-emerald); }
.bg-brand-dark { background-color: var(--brand-emerald-deep); }
.text-brand-dark { color: var(--brand-emerald-deep); }
.border-brand-orange { border-color: var(--brand-orange); }
.border-brand-emerald { border-color: var(--brand-emerald); }

.animated-gradient {
    background: linear-gradient(120deg, rgba(16, 185, 129, 0.35), rgba(4, 120, 87, 0.65), rgba(255, 140, 0, 0.35));
    background-size: 220% 220%;
    animation: gradientShift 12s ease infinite;
}

.reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

.reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.float-soft {
    animation: floatSoft 6s ease-in-out infinite;
}

.animate-fade-up p {
    opacity: 0;
    transform: translateY(18px);
    animation: fadeUp 0.8s ease forwards;
    font-size: 2.2rem !important;
}

.delay-1 { animation-delay: 0.15s; }
.delay-2 { animation-delay: 0.3s; }

@keyframes gradientShift {
    0% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

@keyframes floatSoft {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-8px); }
}
@keyframes fadeUp {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.sistema-btn {
    border-color: #e5e7eb;
    background: #f9fafb;
    transition: border 0.2s, background 0.2s;
    cursor: pointer;
}
.sistema-btn.selected, .sistema-btn:focus {
    border-color: var(--brand-emerald);
    background: #fff;
    outline: none;
}
.input {
    width: 100%;
    padding: 0.75rem 1rem;
    border-radius: 0.5rem;
    border: 1px solid #e5e7eb;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    background: #ffffff;
    transition: border 0.2s;
}

.input:focus {
    border-color: var(--brand-emerald);
    outline: none;
    background: #fff;
}
.hamburger-bar {
    display: block;
    width: 30px;
    height: 4px;
    margin: 4px 0;
    background: var(--brand-emerald-deep);
    border-radius: 3px;
    transition: all 0.3s cubic-bezier(.4,2,.3,1);
}
#mobile-menu {
    display: none;
}
#mobile-menu.active {
    display: flex !important;
    flex-direction: column;
    position: fixed;
    inset: 0;
    z-index: 50;
    background: rgba(255,255,255,0.97);
    align-items: center;
    justify-content: center;
    gap: 2.5rem;
}
#mobile-menu a {
    font-size: 1.5rem;
    font-weight: bold;
    color: var(--brand-emerald-deep);
    text-transform: uppercase;
    text-decoration: none;
    transition: color 0.2s;
}
#mobile-menu a:hover,
#mobile-menu .presupuesto-btn {
    color: var(--brand-orange);
}
#mobile-menu .presupuesto-btn {
    background: var(--brand-orange) !important;
    color: #000 !important;
    padding: 0.75rem 2.5rem;
    border-radius: 9999px;
    font-size: 1.2rem;
    font-weight: bold;
    box-shadow: 0 10px 30px rgba(16,185,129,0.15);
}
@media (max-width: 1024px) {
    #nav-toggle { display: flex !important; }
    #mobile-menu { display: none; }
    #mobile-menu.active { display: flex !important; }
    .md\:flex { display: none !important; }
    .md\:inline-block { display: none !important; }
}
