/*
Theme Name: Hello Lakeart
Template: hello-elementor
Author: Álvaro Lago
Version: 2.0
*/

/* ==========================================================================
   LAKEART — DESIGN SYSTEM
   Estudio creativo multidisciplinar. Sin negro, sin humo, sin neón.
   Crema pastel + azul petróleo + naranja cálido. Aire, luz, espacio.

   Estructura del archivo (cascade layers, en orden de prioridad ascendente):
     1. tokens      -> variables de diseño
     2. reset       -> normalización básica
     3. base        -> tipografía y elementos por defecto
     4. layout      -> contenedores, header, footer
     5. components  -> hero, tarjetas, marquee, botones, etc.
   Las reglas responsive viven junto a cada componente, no al final.
   ========================================================================== */

@layer tokens, reset, base, layout, components;

/* ==========================================================================
   1. TOKENS
   ========================================================================== */

@layer tokens {
    :root {
        /* --- Color: base de marca --- */
        --color-cream:        #FAF3E6;
        --color-cream-soft:   #F2E7D2;
        --color-cream-deep:   #E9DBBE;
        --color-paper:        #FFFDF8;

        --color-petrol:       #0F3B45;
        --color-petrol-mid:   #1F5C67;
        --color-petrol-soft:  rgba(15, 59, 69, 0.08);

        --color-orange:       #E2712E;
        --color-orange-soft:  rgba(226, 113, 46, 0.14);

        --color-red:          #C6523F;
        --color-cyan:         #3FA6BE;

        /* Color de error legible sobre el fondo petróleo oscuro del
           formulario de contacto (el rojo de marca de arriba es
           demasiado oscuro sobre petróleo para cumplir AA). */
        --color-danger:       #FFB199;

        /* --- Color: semántico --- */
        --color-text:         var(--color-petrol);
        --color-text-muted:   #4E6266;
        --color-border:       rgba(15, 59, 69, 0.12);
        --color-shadow:       15, 59, 69;

        /* --- Tipografía ---
           Sin webfonts: cero peticiones externas, cero riesgo de RGPD,
           máxima velocidad. El contraste serif/sans aporta el carácter
           editorial en vez de una tipografía de marca todavía inexistente. */
        --font-display: ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, "URW Palladio", Georgia, serif;
        --font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

        --font-hero:    clamp(2.75rem, 1.6rem + 4.6vw, 5.75rem);
        --font-section: clamp(2.1rem, 1.55rem + 2.2vw, 3.4rem);
        --font-contact: clamp(2.25rem, 1.6rem + 2.6vw, 4rem);
        --font-card-h:  1.85rem;

        /* --- Espaciado --- */
        --space-3xs: 0.25rem;
        --space-2xs: 0.5rem;
        --space-xs:  0.75rem;
        --space-sm:  1rem;
        --space-md:  1.5rem;
        --space-lg:  2rem;
        --space-xl:  3rem;
        --space-2xl: 4.5rem;
        --space-3xl: 6rem;
        --space-4xl: 9rem;

        /* --- Radios --- */
        --radius-sm:   14px;
        --radius-md:   22px;
        --radius-lg:   32px;
        --radius-xl:   44px;
        --radius-full: 999px;

        /* --- Sombras (tintadas con petróleo, nunca negro puro) --- */
        --shadow-sm: 0 10px 24px rgba(var(--color-shadow), 0.08);
        --shadow-md: 0 22px 50px rgba(var(--color-shadow), 0.10);
        --shadow-lg: 0 36px 80px rgba(var(--color-shadow), 0.14);

        /* --- Movimiento ---
           Easing tipo Apple: arranque rápido, llegada muy suave. */
        --ease-premium: cubic-bezier(0.22, 1, 0.36, 1);
        --duration-fast: 180ms;
        --duration-base: 320ms;
        --duration-slow: 640ms;
        --duration-marquee: 36s;

        /* --- Layout --- */
        --container-max: 1320px;
        --container-pad: 40px;
        --header-offset: 128px;

        /* --- Tamaño de la marca abstracta (placeholder de logo) --- */
        --mark-size-brand: 34px;
        --mark-size-hero: clamp(280px, 22vw + 140px, 460px);
    }
}

/* ==========================================================================
   2. RESET
   ========================================================================== */

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

    html,
    body {
        margin: 0;
        padding: 0;
    }

    ul,
    dl,
    dd {
        margin: 0;
        padding: 0;
        list-style: none;
    }

    a {
        text-decoration: none;
        color: inherit;
    }

    button {
        font: inherit;
        color: inherit;
        background: none;
        border: none;
        padding: 0;
        cursor: pointer;
    }

    img,
    svg {
        max-width: 100%;
        display: block;
    }
}

/* ==========================================================================
   3. BASE
   ========================================================================== */

@layer base {
    html {
        font-size: 100%;
    }

    body {
        background: var(--color-cream);
        color: var(--color-text);
        font-family: var(--font-body);
        line-height: 1.5;
        -webkit-font-smoothing: antialiased;
    }

    body.lakeart-body {
        background:
            radial-gradient(circle at 16% 18%, var(--color-orange-soft), transparent 30%),
            radial-gradient(circle at 90% 26%, rgba(63, 166, 190, 0.14), transparent 32%),
            var(--color-cream);
    }

    ::selection {
        background: var(--color-orange);
        color: var(--color-paper);
    }

    /* El scroll suave solo se activa si el usuario no ha pedido menos movimiento */
    @media (prefers-reduced-motion: no-preference) {
        html {
            scroll-behavior: smooth;
        }
    }

    /* Anclas de sección no deben quedar tapadas por el header flotante */
    .lakeart-home [id] {
        scroll-margin-top: var(--header-offset);
    }

    /* Foco de teclado visible y consistente en toda la web */
    a:focus-visible,
    button:focus-visible {
        outline: 3px solid var(--color-orange);
        outline-offset: 3px;
        border-radius: var(--radius-sm);
    }

    /* Enlace de salto para navegación por teclado */
    .lakeart-skip-link {
        position: fixed;
        top: -60px;
        left: 24px;
        z-index: 999;
        padding: 14px 22px;
        background: var(--color-petrol);
        color: var(--color-paper);
        font-weight: 700;
        border-radius: var(--radius-sm);
        transition: top var(--duration-base) var(--ease-premium);
    }

    .lakeart-skip-link:focus {
        top: 16px;
    }
}

/* ==========================================================================
   4. LAYOUT
   ========================================================================== */

@layer layout {
    .lakeart-home {
        width: 100%;
        overflow: hidden;
    }

    .lakeart-container {
        width: 100%;
        max-width: var(--container-max);
        margin: 0 auto;
        padding-left: var(--container-pad);
        padding-right: var(--container-pad);
    }

    /* --- Header --- */

    .lakeart-header {
        position: fixed;
        top: 22px;
        left: 0;
        width: 100%;
        z-index: 50;
        pointer-events: none;
    }

    .lakeart-header-inner {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 16px;
        pointer-events: auto;
    }

    .lakeart-brand {
        display: inline-flex;
        align-items: center;
        gap: 10px;
        min-height: 46px;
        padding: 0 20px;
        border: 2px solid var(--color-border);
        border-radius: var(--radius-full);
        background: rgba(255, 253, 248, 0.72);
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
        color: var(--color-petrol);
        box-shadow: var(--shadow-sm);
        transition: box-shadow var(--duration-base) var(--ease-premium);
    }

    .lakeart-brand-word {
        font-family: var(--font-display);
        font-weight: 600;
        font-size: 19px;
        letter-spacing: -0.02em;
    }

    .lakeart-nav {
        display: flex;
        align-items: center;
        gap: 4px;
        padding: 6px;
        border: 2px solid var(--color-border);
        border-radius: var(--radius-full);
        background: rgba(255, 253, 248, 0.72);
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
        box-shadow: var(--shadow-sm);
    }

    .lakeart-nav a {
        display: inline-flex;
        align-items: center;
        min-height: 34px;
        padding: 0 14px;
        border-radius: var(--radius-full);
        color: var(--color-petrol);
        font-size: 14px;
        font-weight: 600;
        transition: background var(--duration-fast) var(--ease-premium), color var(--duration-fast) var(--ease-premium);
    }

    .lakeart-nav a:hover {
        background: var(--color-petrol);
        color: var(--color-paper);
    }

    .lakeart-header-cta {
        display: inline-flex;
        align-items: center;
        min-height: 46px;
        padding: 0 22px;
        border-radius: var(--radius-full);
        background: var(--color-petrol);
        color: var(--color-paper);
        font-size: 14px;
        font-weight: 700;
        box-shadow: var(--shadow-sm);
        transition: background var(--duration-fast) var(--ease-premium), transform var(--duration-fast) var(--ease-premium);
    }

    .lakeart-header-cta:hover {
        background: var(--color-orange);
        transform: translateY(-2px);
    }

    /* Estado al hacer scroll (activado por JS) */
    .lakeart-header.is-scrolled .lakeart-brand,
    .lakeart-header.is-scrolled .lakeart-nav {
        box-shadow: var(--shadow-md);
        background: rgba(255, 253, 248, 0.92);
    }

    @media (max-width: 900px) {
        .lakeart-nav {
            display: none;
        }
    }

    @media (max-width: 640px) {
        .lakeart-header {
            top: 14px;
        }

        .lakeart-container {
            padding-left: 22px;
            padding-right: 22px;
        }

        .lakeart-header-cta {
            padding: 0 18px;
            font-size: 13px;
        }
    }

    /* --- Footer --- */

    .lakeart-footer {
        padding: var(--space-xl) 0 var(--space-2xl);
        border-top: 2px solid var(--color-border);
    }

    .lakeart-footer-inner {
        display: flex;
        align-items: center;
        justify-content: space-between;
        flex-wrap: wrap;
        gap: var(--space-md);
    }

    .lakeart-brand--footer {
        border: none;
        background: none;
        box-shadow: none;
        backdrop-filter: none;
        padding: 0;
    }

    .lakeart-footer-copy {
        margin: 0;
        color: var(--color-text-muted);
        font-size: 14px;
    }

    .lakeart-footer-nav {
        display: flex;
        gap: var(--space-lg);
    }

    .lakeart-footer-nav a {
        font-size: 14px;
        font-weight: 700;
        color: var(--color-petrol);
        border-bottom: 2px solid transparent;
        transition: border-color var(--duration-fast) var(--ease-premium), color var(--duration-fast) var(--ease-premium);
    }

    .lakeart-footer-nav a:hover {
        color: var(--color-orange);
        border-color: var(--color-orange);
    }

    @media (max-width: 640px) {
        .lakeart-footer-inner {
            flex-direction: column;
            align-items: flex-start;
            text-align: left;
        }
    }
}

/* ==========================================================================
   5. COMPONENTS
   ========================================================================== */

@layer components {

    /* --- Marca abstracta (placeholder de logo) ---
       Composición geométrica provisional: cuadrado redondeado + anillo
       orbital + círculo. Pensada para sustituirse entera por el SVG (o
       canvas Three.js) definitivo sin tocar el resto del layout: basta
       con reemplazar el contenido de .lakeart-mark manteniendo el
       contenedor y sus variables de tamaño. */

    .lakeart-mark {
        display: inline-flex;
        flex-shrink: 0;
    }

    .lakeart-mark--brand {
        width: var(--mark-size-brand);
        height: var(--mark-size-brand);
    }

    .lakeart-mark--hero {
        width: var(--mark-size-hero);
        height: var(--mark-size-hero);
        filter: drop-shadow(0 30px 60px rgba(var(--color-shadow), 0.18));
    }

    .lakeart-mark-svg {
        overflow: visible;
    }

    .lakeart-mark-shape--square {
        fill: var(--color-petrol);
    }

    .lakeart-mark-shape--ring {
        fill: none;
        stroke: var(--color-petrol);
        stroke-width: 2;
        stroke-dasharray: 3 12;
        opacity: 0.5;
    }

    .lakeart-mark-shape--dot-orbit {
        fill: var(--color-orange);
    }

    .lakeart-mark-shape--accent {
        fill: var(--color-orange);
        opacity: 0.94;
    }

    .lakeart-mark-shape--paper-dot {
        fill: var(--color-paper);
    }

    /* Movimiento muy lento y sutil, únicamente en la versión grande del hero */
    @media (prefers-reduced-motion: no-preference) {
        .lakeart-mark--hero .lakeart-mark-group--square {
            transform-origin: 180px 180px;
            animation: lakeartFloatSquare 13s var(--ease-premium) infinite;
        }

        .lakeart-mark--hero .lakeart-mark-group--ring {
            transform-origin: 230px 230px;
            animation: lakeartRotateRing 40s linear infinite;
        }

        .lakeart-mark--hero .lakeart-mark-group--circle {
            animation: lakeartFloatCircle 9s var(--ease-premium) infinite alternate;
        }
    }

    @keyframes lakeartFloatSquare {
        0%, 100% { transform: rotate(-4deg) translateY(0); }
        50%      { transform: rotate(2deg) translateY(-12px); }
    }

    @keyframes lakeartRotateRing {
        to { transform: rotate(360deg); }
    }

    @keyframes lakeartFloatCircle {
        from { transform: translateY(0); }
        to   { transform: translateY(-16px); }
    }

    /* --- Tipografía compartida --- */

    .lakeart-kicker {
        margin: 0 0 var(--space-sm);
        color: var(--color-orange);
        font-size: 13px;
        letter-spacing: 0.16em;
        text-transform: uppercase;
        font-weight: 700;
    }

    .lakeart-section-title {
        max-width: 900px;
        margin: 0;
        color: var(--color-petrol);
        font-family: var(--font-display);
        font-weight: 600;
        font-size: var(--font-section);
        line-height: 1.04;
        letter-spacing: -0.01em;
    }

    /* --- Botones y enlaces --- */

    .lakeart-button {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 56px;
        padding: 0 28px;
        border: 2px solid var(--color-petrol);
        border-radius: var(--radius-full);
        background: var(--color-petrol);
        color: var(--color-paper);
        font-size: 15px;
        font-weight: 700;
        box-shadow: var(--shadow-md);
        transition: transform var(--duration-base) var(--ease-premium),
                    box-shadow var(--duration-base) var(--ease-premium),
                    background var(--duration-base) var(--ease-premium);
    }

    .lakeart-button:hover {
        transform: translateY(-3px);
        background: var(--color-orange);
        border-color: var(--color-orange);
        box-shadow: var(--shadow-lg);
    }

    .lakeart-button--light {
        border-color: var(--color-paper);
        background: var(--color-paper);
        color: var(--color-petrol);
    }

    .lakeart-button--light:hover {
        background: var(--color-orange);
        border-color: var(--color-orange);
        color: var(--color-paper);
    }

    .lakeart-link {
        display: inline-flex;
        align-items: center;
        min-height: 56px;
        color: var(--color-petrol);
        font-size: 15px;
        font-weight: 700;
        border-bottom: 2px solid rgba(15, 59, 69, 0.28);
        transition: color var(--duration-fast) var(--ease-premium), border-color var(--duration-fast) var(--ease-premium);
    }

    .lakeart-link:hover {
        color: var(--color-orange);
        border-color: var(--color-orange);
    }

    /* --- Hero --- */

    .lakeart-hero {
        padding: 168px 0 var(--space-lg);
    }

    .lakeart-hero-grid {
        display: grid;
        grid-template-columns: 1.15fr 0.85fr;
        gap: var(--space-3xl);
        align-items: center;
    }

    .lakeart-hero-copy {
        max-width: 700px;
    }

    .lakeart-hero-title {
        margin: 0;
        color: var(--color-petrol);
        font-family: var(--font-display);
        font-weight: 600;
        font-size: var(--font-hero);
        line-height: 0.98;
        letter-spacing: -0.015em;
    }

    .lakeart-hero-title-accent {
        display: block;
        color: var(--color-petrol-mid);
        font-style: italic;
        font-weight: 400;
    }

    .lakeart-hero-subtitle {
        max-width: 560px;
        margin: var(--space-lg) 0 0;
        color: var(--color-text-muted);
        font-size: 1.2rem;
        line-height: 1.55;
    }

    .lakeart-hero-actions {
        display: flex;
        align-items: center;
        gap: var(--space-md);
        flex-wrap: wrap;
        margin-top: var(--space-xl);
    }

    /* --- Visual del hero: composición editorial, no una tarjeta vacía --- */

    .lakeart-hero-visual {
        position: relative;
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 460px;
    }

    .lakeart-hero-chip {
        position: absolute;
        padding: 12px 18px;
        border: 2px solid var(--color-border);
        border-radius: var(--radius-full);
        background: rgba(255, 253, 248, 0.86);
        backdrop-filter: blur(10px);
        -webkit-backdrop-filter: blur(10px);
        box-shadow: var(--shadow-sm);
        color: var(--color-petrol);
        font-size: 13px;
        font-weight: 700;
        white-space: nowrap;
    }

    .lakeart-hero-chip--1 {
        top: 6%;
        left: -4%;
        --rot: -4deg;
        transform: rotate(var(--rot));
    }

    .lakeart-hero-chip--2 {
        bottom: 18%;
        right: -8%;
        --rot: 3deg;
        transform: rotate(var(--rot));
    }

    .lakeart-hero-chip--3 {
        bottom: -2%;
        left: 12%;
        --rot: -2deg;
        transform: rotate(var(--rot));
    }

    @media (prefers-reduced-motion: no-preference) {
        .lakeart-hero-chip {
            opacity: 0;
            animation: lakeartChipIn 0.9s var(--ease-premium) forwards;
        }

        .lakeart-hero-chip--1 { animation-delay: 0.15s; }
        .lakeart-hero-chip--2 { animation-delay: 0.32s; }
        .lakeart-hero-chip--3 { animation-delay: 0.48s; }
    }

    /* La rotación final se conserva en el keyframe "to" vía --rot,
       para que forwards no la borre al terminar la animación. */
    @keyframes lakeartChipIn {
        from { opacity: 0; transform: translateY(14px) scale(0.96) rotate(var(--rot, 0deg)); }
        to   { opacity: 1; transform: translateY(0) scale(1) rotate(var(--rot, 0deg)); }
    }

    /* --- Marquee de disciplinas ---
       Cinta continua y silenciosa (aria-hidden): un detalle de ritmo, no
       un titular. Se detiene por completo si el usuario pide menos
       movimiento. */

    .lakeart-marquee {
        margin-top: var(--space-3xl);
        padding: var(--space-md) 0;
        border-top: 2px solid var(--color-border);
        border-bottom: 2px solid var(--color-border);
        overflow: hidden;
        -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
                mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
    }

    .lakeart-marquee-track {
        display: flex;
        width: max-content;
        gap: var(--space-2xl);
    }

    .lakeart-marquee-track li {
        font-family: var(--font-display);
        font-style: italic;
        font-size: 1.4rem;
        color: var(--color-petrol-mid);
        opacity: 0.6;
    }

    @media (prefers-reduced-motion: no-preference) {
        .lakeart-marquee-track {
            animation: lakeartMarquee var(--duration-marquee) linear infinite;
        }

        .lakeart-marquee:hover .lakeart-marquee-track,
        .lakeart-marquee:focus-within .lakeart-marquee-track {
            animation-play-state: paused;
        }
    }

    @media (prefers-reduced-motion: reduce) {
        /* Sin animación: se oculta la copia duplicada para no repetir la lista */
        .lakeart-marquee-track li:nth-child(n+8) {
            display: none;
        }
    }

    @keyframes lakeartMarquee {
        to { transform: translateX(-50%); }
    }

    @media (max-width: 1100px) {
        .lakeart-hero-grid {
            grid-template-columns: 1fr;
            gap: var(--space-2xl);
        }

        .lakeart-hero-visual {
            min-height: 380px;
        }
    }

    @media (max-width: 640px) {
        .lakeart-hero {
            padding: 128px 0 var(--space-lg);
        }

        .lakeart-hero-subtitle {
            font-size: 1.05rem;
        }

        .lakeart-hero-visual {
            min-height: 320px;
        }

        .lakeart-mark--hero {
            --mark-size-hero: 260px;
        }

        .lakeart-hero-chip {
            font-size: 12px;
            padding: 10px 14px;
        }

        .lakeart-marquee-track li {
            font-size: 1.1rem;
        }
    }

    /* --- Reveal al hacer scroll (progressive enhancement vía IntersectionObserver) --- */

    @media (prefers-reduced-motion: no-preference) {
        [data-reveal] {
            opacity: 0;
            transform: translateY(28px);
            transition: opacity var(--duration-slow) var(--ease-premium),
                        transform var(--duration-slow) var(--ease-premium);
        }

        [data-reveal].is-visible {
            opacity: 1;
            transform: none;
        }
    }

    /* --- Secciones genéricas --- */

    .lakeart-section {
        padding: var(--space-3xl) 0;
    }

    .lakeart-section-head {
        margin-bottom: var(--space-2xl);
    }

    @media (max-width: 640px) {
        .lakeart-section {
            padding: var(--space-2xl) 0;
        }
    }

    /* Nota: la cuadrícula de trabajo (antes 3 tarjetas fijas aquí) ahora
       es dinámica y sus estilos viven en assets/css/portfolio.css,
       junto al resto del sistema del portfolio (filtros + modal). Ver
       inc/portfolio.php. */

    .lakeart-service-card {
        border: 2px solid var(--color-border);
        border-radius: var(--radius-lg);
        background: var(--color-paper);
        box-shadow: var(--shadow-sm);
        overflow: hidden;
    }

    /* --- About / Estudio --- */

    .lakeart-about {
        background: var(--color-cream-soft);
        border-radius: var(--radius-xl);
    }

    .lakeart-about-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--space-3xl);
        align-items: start;
    }

    .lakeart-stat-list {
        display: flex;
        gap: var(--space-xl);
        margin-top: var(--space-xl);
    }

    .lakeart-stat dt {
        margin: 0 0 var(--space-2xs);
        color: var(--color-text-muted);
        font-size: 12px;
        letter-spacing: 0.1em;
        text-transform: uppercase;
        font-weight: 700;
    }

    .lakeart-stat dd {
        margin: 0;
        color: var(--color-petrol);
        font-family: var(--font-display);
        font-size: 2rem;
        font-weight: 600;
    }

    .lakeart-about-right p {
        margin: 0 0 var(--space-md);
        color: var(--color-text-muted);
        font-size: 1.1rem;
        line-height: 1.6;
    }

    @media (max-width: 1100px) {
        .lakeart-about-grid {
            grid-template-columns: 1fr;
            gap: var(--space-xl);
        }
    }

    @media (max-width: 640px) {
        .lakeart-stat-list {
            gap: var(--space-lg);
            flex-wrap: wrap;
        }
    }

    /* --- Services / Capacidades --- */

    .lakeart-service-grid {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: var(--space-lg);
    }

    .lakeart-service-card {
        padding: var(--space-lg);
        transition: border-color var(--duration-base) var(--ease-premium);
    }

    .lakeart-service-card:hover {
        border-color: var(--color-orange);
    }

    .lakeart-service-icon {
        display: inline-flex;
        width: 44px;
        height: 44px;
        margin-bottom: var(--space-md);
        color: var(--color-petrol);
        transition: color var(--duration-base) var(--ease-premium);
    }

    .lakeart-service-card:hover .lakeart-service-icon {
        color: var(--color-orange);
    }

    .lakeart-service-icon svg {
        width: 100%;
        height: 100%;
    }

    .lakeart-service-card h3 {
        margin: 0 0 var(--space-sm);
        color: var(--color-petrol);
        font-family: var(--font-display);
        font-weight: 600;
        font-size: var(--font-card-h);
        line-height: 1.05;
    }

    .lakeart-service-card p {
        margin: 0;
        color: var(--color-text-muted);
        font-size: 1rem;
        line-height: 1.55;
    }

    @media (max-width: 1100px) {
        .lakeart-service-grid {
            grid-template-columns: repeat(2, minmax(0, 1fr));
        }
    }

    @media (max-width: 640px) {
        .lakeart-service-grid {
            grid-template-columns: 1fr;
        }
    }

    /* --- Contact --- */

    .lakeart-contact {
        padding: var(--space-4xl) 0;
        background: var(--color-petrol);
        color: var(--color-paper);
        border-radius: var(--radius-xl);
    }

    .lakeart-contact-inner {
        position: relative;
    }

    .lakeart-contact .lakeart-kicker {
        color: var(--color-orange);
    }

    .lakeart-contact-title {
        max-width: 820px;
        margin: 0 0 var(--space-xl);
        color: var(--color-paper);
        font-family: var(--font-display);
        font-weight: 600;
        font-size: var(--font-contact);
        line-height: 1;
        letter-spacing: -0.01em;
    }

    .lakeart-contact-subtitle {
        max-width: 520px;
        margin: 0 0 var(--space-xl);
        color: rgba(255, 253, 248, 0.72);
        font-size: 1.05rem;
        line-height: 1.55;
    }

    @media (max-width: 640px) {
        .lakeart-contact {
            padding: var(--space-3xl) 0;
        }
    }

    /* --- Formulario de contacto ---
       Campos con fondo claro sobre la sección oscura: máximo contraste
       y coherencia con "fondo crema + detalles naranja" en vez de
       inputs translúcidos difíciles de leer. */

    .lakeart-contact-form {
        max-width: 720px;
    }

    /* Honeypot: presente en el DOM (algunos bots evitan display:none)
       pero recortado visualmente y fuera del flujo de tabulación. */
    .lakeart-form-hp {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
        left: -9999px;
    }

    .lakeart-form-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--space-md);
    }

    .lakeart-field {
        display: flex;
        flex-direction: column;
        gap: 8px;
        text-align: left;
    }

    .lakeart-field--full {
        grid-column: 1 / -1;
    }

    .lakeart-field label {
        color: rgba(255, 253, 248, 0.82);
        font-size: 13px;
        font-weight: 700;
        letter-spacing: 0.02em;
    }

    .lakeart-field-optional {
        color: rgba(255, 253, 248, 0.55);
        font-weight: 400;
    }

    .lakeart-field input,
    .lakeart-field textarea {
        width: 100%;
        padding: 14px 18px;
        border: 2px solid transparent;
        border-radius: var(--radius-md);
        background: var(--color-paper);
        color: var(--color-petrol);
        font: inherit;
        font-size: 15px;
        box-shadow: var(--shadow-sm);
        transition: border-color var(--duration-fast) var(--ease-premium),
                    box-shadow var(--duration-fast) var(--ease-premium);
    }

    .lakeart-field textarea {
        min-height: 140px;
        resize: vertical;
    }

    .lakeart-field input::placeholder,
    .lakeart-field textarea::placeholder {
        color: rgba(15, 59, 69, 0.4);
    }

    .lakeart-field input:focus,
    .lakeart-field textarea:focus {
        outline: none;
        border-color: var(--color-orange);
        box-shadow: 0 0 0 4px var(--color-orange-soft);
    }

    .lakeart-field.has-error input,
    .lakeart-field.has-error textarea {
        border-color: var(--color-danger);
    }

    .lakeart-field-error {
        margin: 0;
        min-height: 16px;
        color: var(--color-danger);
        font-size: 12.5px;
        font-weight: 600;
        line-height: 1.3;
    }

    .lakeart-form-footer {
        display: flex;
        align-items: center;
        gap: var(--space-lg);
        flex-wrap: wrap;
        margin-top: var(--space-lg);
    }

    .lakeart-form-status {
        margin: 0;
        min-height: 20px;
        color: rgba(255, 253, 248, 0.8);
        font-size: 14px;
        font-weight: 700;
    }

    .lakeart-form-status.is-success {
        color: var(--color-orange);
    }

    .lakeart-form-status.is-error {
        color: var(--color-danger);
    }

    /* Estado de carga del botón: anillo giratorio en currentColor, así
       funciona igual sobre cualquier variante de .lakeart-button. */
    .lakeart-button.is-loading {
        position: relative;
        padding-right: 52px;
        pointer-events: none;
        opacity: 0.85;
    }

    .lakeart-button.is-loading::after {
        content: "";
        position: absolute;
        top: 50%;
        right: 20px;
        width: 16px;
        height: 16px;
        margin-top: -8px;
        border: 2px solid currentColor;
        border-top-color: transparent;
        border-radius: 50%;
        opacity: 0.7;
    }

    @media (prefers-reduced-motion: no-preference) {
        .lakeart-button.is-loading::after {
            animation: lakeartSpin 0.7s linear infinite;
        }
    }

    @keyframes lakeartSpin {
        to { transform: rotate(360deg); }
    }

    @media (max-width: 640px) {
        .lakeart-form-grid {
            grid-template-columns: 1fr;
        }

        .lakeart-form-footer {
            flex-direction: column;
            align-items: flex-start;
        }
    }
}
