/* ============================ TEMAS ============================
   CLARO (por defecto) = la neutralidad suiza de la referencia.
   NEGRO+ORO = paleta premium. Negro CÁLIDO (#121211, no negro puro: el puro es duro y barato)
   + oro CHAMPÁN apagado (#C9A96A). El oro saturado tipo #FFD700 abarata; el apagado es el que
   usan las marcas de lujo. El oro se usa con cuentagotas: acentos y CTA, nunca de relleno.
   El tema se cambia con el botón de la nav y se recuerda (localStorage). */
  :root{
    --blanco:#ffffff;
    --gris:#f7f7f7;       /* el gris 247 de la referencia */
    --gris-cta:#ececec;
    --tinta:#2e2e2e;
    --tinta-2:#6b6b6b;    /* texto secundario */
    --tinta-3:#6f6f6f;    /* texto terciario / notas (a #9a9a9a daba 2,6:1) */
    --linea:rgba(0,0,0,.11);
    --placa:#e2e2e2;      /* fondo de hueco de imagen */
    --tarjeta:#ffffff;    /* fondo de tarjeta (stats, porqués) */
    --pie-bg:#2e2e2e;     /* el pie es panel OSCURO en los dos temas (su texto es blanco) */
    --acento:#2e2e2e;     /* en claro el "acento" es la propia tinta (sin color) */
    --acento-txt:#ffffff; /* texto sobre el acento */
    --junta:4px;          /* la junta del mosaico de la referencia */
  }
  :root[data-theme="dark"]{
    --blanco:#0d0d0c;
    --gris:#121211;       /* negro cálido, no puro */
    --gris-cta:#1c1b19;
    --tinta:#EFEAE2;      /* blanco roto cálido */
    --tinta-2:#A29B90;
    --tinta-3:#8E877D;    /* subido: #726C63 daba 3,6:1 sobre el negro (ilegible) */
    --linea:rgba(255,255,255,.12);
    --placa:#26241F;
    --tarjeta:#1E1D1A;    /* elevada sobre el fondo (#121211), NO blanca */
    --pie-bg:#0b0b0a;     /* pie aún más hondo que la página */
    --acento:#C9A96A;     /* oro champán */
    --acento-txt:#121211;
  }
  html{color-scheme:light}
  html[data-theme="dark"]{color-scheme:dark}
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:auto}
  body{
    background:var(--gris);
    font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
    color:var(--tinta);
    -webkit-font-smoothing:antialiased;
  }
  body.intro-lock{overflow:hidden}

  /* ---------- FOTO DEL HERO — clavada (la costura) ---------- */
  .hero-media{position:fixed;inset:0;z-index:0;will-change:transform;overflow:hidden}
  /* multifoto: 3 slides apiladas con crossfade (H2) */
  .hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.5s ease}
  .hero-slide.is-active{opacity:1}
  .hero-slide img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.001);will-change:transform}
  /* Ken Burns (H1): deriva lenta de cámara sobre la foto activa — no toca los píxeles, mueve el encuadre */
  .hero-slide.kb img{animation:kenburns 8s ease-out forwards}
  @keyframes kenburns{from{transform:scale(1.02)}to{transform:scale(1.09) translate(-1.4%, -1.2%)}}
  .hero-overlay{
    position:absolute;inset:0;pointer-events:none;
    /* velo de todo el hero (fiel a la referencia: su hero_video_overlay cubre el vídeo entero) —
       oscurece abajo para el titular y un pelín arriba para que la nav blanca lea sobre foto clara */
    background:linear-gradient(to top, rgba(0,0,0,.44) 0%, rgba(0,0,0,.10) 32%, rgba(0,0,0,0) 52%, rgba(0,0,0,0) 84%, rgba(0,0,0,.22) 100%);
  }

  /* ---------- NAV (fija, se solidifica al salir del hero) ---------- */
  .nav{
    position:fixed;z-index:500;top:0;left:0;right:0;
    display:flex;justify-content:space-between;align-items:center;
    padding:24px 32px;color:#fff;opacity:0;
    transition:background-color .3s cubic-bezier(.4,0,.2,1), color .3s cubic-bezier(.4,0,.2,1), border-color .3s;
    border-bottom:1px solid transparent;
  }
  .nav.solid{
    background:color-mix(in srgb, var(--gris) 90%, transparent);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    color:var(--tinta);border-bottom-color:var(--linea);
  }
  .wordmark{font-size:15px;font-weight:700;letter-spacing:.02em}
  .wordmark span{font-weight:400;opacity:.85}
  .nav-links{display:flex;gap:28px;font-size:14px}
  .nav-links a{color:inherit;text-decoration:none;opacity:.9}
  .nav-links a:hover{opacity:1}

  /* ---------- HERO (bloque de texto, transparente sobre la foto fija) ---------- */
  .hero{position:relative;z-index:2;height:100svh;min-height:600px}
  .hero-wrapper{
    position:absolute;left:0;right:0;bottom:0;
    display:flex;justify-content:space-between;align-items:flex-end;gap:32px;
    padding:0 32px 40px;
  }
  .hero-sub{font-size:18px;font-weight:500;color:#fff;letter-spacing:.15px;margin-bottom:14px}
  h1{
    font-size:clamp(27px, 3.1vw, 42px);
    font-weight:400;line-height:1.14;color:#fff;
    letter-spacing:-.01em;max-width:none;
  }
  .lm{display:block;overflow:hidden}
  .ln{display:block}
  .hero-btns{display:flex;gap:12px;flex-shrink:0}
  .btn{
    display:inline-flex;align-items:center;justify-content:center;
    height:54px;padding:0 28px;border-radius:12px;
    font-size:15px;font-weight:500;text-decoration:none;white-space:nowrap;cursor:pointer;
  }
  .btn-glass{
    color:#fff;background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.35);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  }
  .btn-white{color:var(--tinta);background:#fff;border:1px solid #fff}

  /* ---------- PROYECTOS (el panel que sube y cubre) ---------- */
  .proyectos{position:relative;z-index:2;background:var(--gris);padding:96px var(--junta) var(--junta)}
  .proyectos-h{
    font-size:clamp(34px, 5vw, 64px);font-weight:400;text-align:center;color:var(--tinta);
    letter-spacing:-.01em;margin-bottom:clamp(48px, 8vw, 112px);
  }
  .grid{
    display:grid;grid-template-columns:repeat(6, 1fr);gap:var(--junta);
    max-width:1920px;margin:0 auto;
  }
  .tile{
    position:relative;overflow:hidden;aspect-ratio:1/1;
    text-decoration:none;color:#fff;display:block;background:var(--placa);
  }
  .tile-big{grid-column:span 3;aspect-ratio:4/3}
  .tile-med{grid-column:span 2;aspect-ratio:1/1}
  .tile img{
    position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
    /* el parallax (B) controla transform vía GSAP scrub; sin transition para no arrastrar el frame */
  }
  /* velo inferior por tarjeta: garantiza que el rótulo blanco lea sobre fotos claras */
  .tile::after{
    content:"";position:absolute;left:0;right:0;bottom:0;height:42%;z-index:1;pointer-events:none;
    background:linear-gradient(to top, rgba(0,0,0,.52), rgba(0,0,0,0));
  }
  .tile-overlay{
    position:absolute;inset:0;background:#000;opacity:0;
    transition:opacity .4s cubic-bezier(.16,1,.3,1);pointer-events:none;
  }
  .tile:hover .tile-overlay,.tile:focus-visible .tile-overlay{opacity:.18}
  .tile-info{
    position:absolute;left:0;right:0;bottom:0;z-index:2;
    display:flex;justify-content:space-between;align-items:flex-end;
    padding:20px;color:#fff;
  }
  .tile-name{position:relative;display:inline-block;font-size:18px;font-weight:500;line-height:1.2}
  .tile-name::after{
    content:"";position:absolute;left:0;bottom:-4px;height:2px;width:0;background:#fff;
    transition:width .4s cubic-bezier(.16,1,.3,1);
  }
  .tile:hover .tile-name::after,.tile:focus-visible .tile-name::after{width:100%}
  .tile-place{font-size:18px;font-weight:400;opacity:.85;text-align:right}

  /* tarjeta CTA */
  .tile-cta{
    grid-column:span 2;aspect-ratio:5/6;background:var(--gris-cta);color:var(--tinta);
    display:flex;flex-direction:column;justify-content:space-between;
    padding:40px;text-decoration:none;
  }
  .tile-cta h3{font-size:clamp(22px, 2.4vw, 30px);font-weight:400;line-height:1.2;max-width:11ch}
  .cta-sub{margin-top:14px;font-size:15px;line-height:1.5;opacity:.62;max-width:28ch}
  .tile-cta .btn-white{align-self:flex-start;border-color:var(--linea)}
  .tile-cta:hover .btn-white{background:var(--tinta);color:#fff;border-color:var(--tinta);transition:.3s}
  /* CTA como banda ancha al pie del mosaico (8 fotos + CTA) */
  .tile-cta.wide{grid-column:span 6;aspect-ratio:auto;min-height:210px;flex-direction:row;align-items:center;gap:48px}
  .tile-cta.wide>div{flex:1}
  .tile-cta.wide h3{max-width:22ch}
  .tile-cta.wide .cta-sub{max-width:52ch}

  /* ---------- CORTINA (preloader · concepto A: la firma que se dibuja) ---------- */
  .curtain{
    position:fixed;inset:0;z-index:999;background:#f4f1ec;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;will-change:transform;
  }
  .cwordmark{width:min(44vw,300px);height:auto;overflow:visible}
  .cwordmark .stroke{fill:none;stroke:var(--tinta);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;
    stroke-dasharray:1400;stroke-dashoffset:1400}
  .csub{font-size:clamp(10px,1.6vw,13px);letter-spacing:.34em;text-transform:uppercase;color:#8a8378;opacity:0}
  .cplace{position:absolute;bottom:9%;left:0;right:0;text-align:center;font-size:13px;letter-spacing:.2em;
    color:#a49c8e;font-weight:700;opacity:0}

  /* ---------- RESPONSIVE ---------- */
  @media (max-width:1024px){
    .grid{grid-template-columns:repeat(2, 1fr)}
    .tile-big,.tile-med{grid-column:span 1}
    .tile-cta{grid-column:span 2;aspect-ratio:16/7;flex-direction:row;align-items:center}
    .tile-cta.wide{grid-column:span 2;aspect-ratio:16/7}
  }
  @media (max-width:768px){
    .nav{padding:18px 20px;gap:12px}
    /* multipágina: 5 enlaces no caben junto al wordmark completo en 375px → en móvil el
       wordmark se queda en "ITEK" y los enlaces aprietan. Sin esto hay overflow horizontal. */
    .wordmark span{display:none}
    .nav-links{gap:10px;font-size:11px;flex:0 1 auto;min-width:0}
    .nav-links a{white-space:nowrap}
    .hero-wrapper{flex-direction:column;align-items:flex-start;padding:0 20px 28px;gap:20px}
    .hero-sub{font-size:15px;margin-bottom:10px}
    .btn{height:48px;padding:0 22px;font-size:14px}
    .cplace{bottom:24px;font-size:12px}
    .proyectos{padding:72px var(--junta) var(--junta)}
    .grid{grid-template-columns:1fr}
    .tile-big,.tile-med{grid-column:span 1;aspect-ratio:4/5}
    .tile-cta{grid-column:span 1;aspect-ratio:auto;flex-direction:column;align-items:flex-start;padding:32px;gap:24px}
    .tile-cta.wide{grid-column:span 1;flex-direction:column;align-items:flex-start;gap:24px;min-height:0}
    .tile-info{padding:16px}
    .tile-name,.tile-place{font-size:16px}
  }

  /* ============ SECCIONES INFERIORES · réplica arquitectura la referencia ============ */
  /* Costura entre secciones: mismo gris 247, separadas por hairline (border-top).
     Sobria, sin efectos nuevos — como los paneles apilados de la referencia. */
  .section{position:relative;z-index:2;background:var(--gris)}
  .wrap{max-width:1400px;margin:0 auto;padding:0 32px}
  .eyebrow{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--tinta-2);font-weight:500}
  .lead{font-size:clamp(24px,3.2vw,40px);font-weight:400;line-height:1.22;letter-spacing:-.01em;max-width:22ch}

  /* --- SERVICIOS: lista editorial --- */
  .servicios{padding:clamp(80px,11vw,150px) 0}
  .servicios-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:clamp(48px,7vw,90px);flex-wrap:wrap}
  .servicios-head p{max-width:34ch;font-size:16px;line-height:1.55;color:var(--tinta-2)}
  .srv{display:grid;grid-template-columns:64px 1fr auto;gap:28px;align-items:center;
       padding:26px 0;border-top:1px solid var(--linea);text-decoration:none;color:var(--tinta)}
  .srv:last-of-type{border-bottom:1px solid var(--linea)}
  .srv-idx{font-size:14px;color:var(--tinta-2);font-weight:500}
  .srv-body{display:flex;flex-direction:column;gap:8px}
  .srv-name{font-size:clamp(24px,3vw,38px);font-weight:400;letter-spacing:-.01em;line-height:1.1;
            position:relative;display:inline-block;width:fit-content}
  .srv-name::after{content:"";position:absolute;left:0;bottom:-3px;height:1.5px;width:0;background:var(--tinta);transition:width .45s cubic-bezier(.16,1,.3,1)}
  .srv:hover .srv-name::after,.srv:focus-visible .srv-name::after{width:100%}
  .srv-desc{font-size:15px;line-height:1.5;color:var(--tinta-2);max-width:54ch}
  .srv-thumb{width:128px;height:86px;object-fit:cover;flex-shrink:0;
             transition:transform .6s cubic-bezier(.16,1,.3,1)}
  .srv:hover .srv-thumb{transform:scale(1.03)}

  /* --- ESTUDIO / QUIÉNES SOMOS --- */
  .estudio{padding:clamp(80px,11vw,150px) 0;border-top:1px solid var(--linea)}
  .estudio-top{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,5vw,72px);align-items:center}
  .estudio-txt .lead{margin:16px 0 0}
  .estudio-txt p{margin-top:22px;font-size:16px;line-height:1.62;color:var(--tinta-2);max-width:48ch}
  .estudio-img{aspect-ratio:4/3;overflow:hidden;background:var(--placa)}
  .estudio-img img{width:100%;height:100%;object-fit:cover;display:block}
  .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--junta);margin-top:clamp(56px,8vw,100px)}
  .stat{background:var(--tarjeta);padding:34px 28px;display:flex;flex-direction:column;gap:10px;min-height:154px;justify-content:flex-end}
  .stat-n{font-size:clamp(38px,5vw,58px);font-weight:400;letter-spacing:-.02em;line-height:1}
  .stat-l{font-size:14px;color:var(--tinta-2);line-height:1.4}
  .porque{margin-top:var(--junta);display:grid;grid-template-columns:repeat(4,1fr);gap:var(--junta)}
  .por{background:var(--tarjeta);padding:34px 28px;display:flex;flex-direction:column;gap:12px}
  .por-n{font-size:13px;color:var(--tinta-2);font-weight:500}
  .por-t{font-size:19px;font-weight:400;line-height:1.25;letter-spacing:-.005em}
  .por-d{font-size:14px;line-height:1.55;color:var(--tinta-2)}

  /* --- COCINAS · SCHRÖDER (catálogo declarado) --- */
  .schroder{padding:clamp(80px,11vw,150px) 0;border-top:1px solid var(--linea)}
  .schroder-head{margin-bottom:clamp(40px,6vw,72px)}
  .schroder-head .lead{margin:16px 0 20px}
  .schroder-head p{font-size:15px;line-height:1.62;color:var(--tinta-2);max-width:60ch}
  .badge{display:inline-block;font-size:12px;letter-spacing:.06em;text-transform:uppercase;
         color:var(--tinta-2);border:1px solid var(--linea);border-radius:999px;padding:7px 15px;margin-top:20px}
  .kgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--junta)}
  .kfig{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--placa);margin:0}
  .kfig.big{grid-column:span 3}
  .kfig.sm{grid-column:span 2}
  .kfig img{width:100%;height:100%;object-fit:cover;display:block}
  .kfig::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.42),transparent 42%);z-index:1;pointer-events:none}
  .kfig figcaption{position:absolute;left:15px;bottom:12px;color:#fff;font-size:13px;letter-spacing:.02em;z-index:2}

  /* --- CONTACTO / CTA --- */
  .contacto{padding:clamp(90px,13vw,170px) 0;border-top:1px solid var(--linea);text-align:center}
  .contacto-cta{font-size:clamp(38px,7vw,88px);font-weight:400;letter-spacing:-.02em;line-height:1.03;margin:14px auto 0;max-width:16ch}
  .contacto .lead{margin:22px auto 0;max-width:26ch;color:var(--tinta-2)}
  .btn-dark{display:inline-flex;align-items:center;margin-top:38px;height:58px;padding:0 34px;border-radius:12px;
    background:var(--acento);color:var(--acento-txt);font-size:16px;font-weight:500;text-decoration:none;
    transition:transform .3s cubic-bezier(.16,1,.3,1),opacity .3s}
  .btn-dark:hover{transform:translateY(-2px);opacity:.92}
  .contact-info{margin-top:clamp(48px,7vw,80px);display:flex;justify-content:center;flex-wrap:wrap;gap:14px 46px;font-size:15px;color:var(--tinta-2)}
  .contact-info a{color:var(--tinta);text-decoration:none}
  .contact-info a:hover{text-decoration:underline}
  .contact-info b{font-weight:500;color:var(--tinta)}

  /* --- FOOTER --- */
  .footer{position:relative;z-index:2;background:var(--pie-bg);color:rgba(255,255,255,.72);padding:64px 0 36px}
  .footer .wrap{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:40px}
  .footer h4{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.62);font-weight:500;margin-bottom:16px}
  .footer a{color:rgba(255,255,255,.72);text-decoration:none;display:block;margin-bottom:9px;font-size:14.5px}
  .footer a:hover{color:#fff}
  .fbrand{font-size:20px;font-weight:700;color:#fff;letter-spacing:.02em}
  .fbrand span{font-weight:400;opacity:.7}
  .ftag{margin-top:12px;font-size:14px;line-height:1.6;max-width:32ch;color:rgba(255,255,255,.6)}
  .footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:46px;padding-top:22px}
  .footer-bottom .wrap{grid-template-columns:1fr;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:rgba(255,255,255,.5)}

  /* --- responsive de las secciones nuevas --- */
  @media (max-width:1024px){
    .estudio-top{grid-template-columns:1fr;gap:32px}
    .stats,.porque{grid-template-columns:repeat(2,1fr)}
    .kgrid{grid-template-columns:repeat(2,1fr)}
    .kfig.big,.kfig.sm{grid-column:span 1}
    .footer .wrap{grid-template-columns:1fr 1fr}
  }
  @media (max-width:768px){
    .wrap{padding:0 20px}
    .servicios-head{flex-direction:column;align-items:flex-start;gap:14px}
    .srv{grid-template-columns:32px 1fr;gap:14px}
    .srv-thumb{display:none}
    .srv-desc{max-width:none}
    .stats,.porque{grid-template-columns:1fr 1fr}
    .kgrid{grid-template-columns:1fr}
    .kfig.big,.kfig.sm{grid-column:span 1;aspect-ratio:16/10}
    .contact-info{flex-direction:column;gap:11px}
    .footer .wrap{grid-template-columns:1fr;gap:26px}
    .footer-bottom .wrap{flex-direction:column;gap:8px}
  }

  /* ============ CARRUSEL 3D "A MEDIDA" · TAMBOR CILÍNDRICO (mecánica de referencia) ============
     la referencia no inclina una fila plana: dispone cada tarjeta en la superficie de un cilindro
     (rotateY θ_i · translateZ R) y gira el conjunto con el scroll. Aquí, mismo mecanismo. */
  /* OJO: sin overflow:hidden aquí — rompería el position:sticky del escenario 3D.
     El recorte lo hace .carousel_stage (base: overflow-x:auto · 3D: overflow:hidden). */
  .carousel-sec{padding:0;border-top:1px solid var(--linea);background:var(--gris)}
  /* titular centrado y grande, como la referencia ("We create 3D visuals that elevate…") */
  .carousel_heading{max-width:1000px;margin:0 auto;width:100%;padding:clamp(80px,11vw,150px) 32px clamp(40px,6vw,80px);text-align:center}
  .carousel_heading p.eyebrow{margin-bottom:20px}
  .carousel_heading h2{font-size:clamp(28px,3.6vw,50px);font-weight:400;line-height:1.16;letter-spacing:-.01em;color:var(--tinta)}

  /* ---- BASE = galería de scroll horizontal plano (failsafe + móvil), sin 3D ---- */
  .carousel_container{position:relative;background:var(--gris)}
  .carousel_stage{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .carousel_stage::-webkit-scrollbar{display:none}
  .carousel{display:flex;gap:16px;width:max-content;padding:8px 32px 56px}
  .carousel_card{flex:0 0 min(80vw,440px);aspect-ratio:1/1;position:relative;overflow:hidden;background:var(--placa);
    display:block;text-decoration:none;color:#fff}
  .carousel_card_img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
  .carousel_mask{display:none}
  /* scrim inferior para legibilidad de la etiqueta (mismo recurso que el hero, NO es efecto postizo) */
  .carousel_card::after{content:"";position:absolute;inset:auto 0 0 0;height:45%;z-index:2;pointer-events:none;
    background:linear-gradient(to top,rgba(0,0,0,.55),rgba(0,0,0,0))}
  /* etiqueta = nombre + "Ver" (el services_card de la referencia, que enlaza a su página) */
  .carousel_label{position:absolute;left:22px;bottom:20px;z-index:4;display:flex;flex-direction:column;gap:6px}
  .cl-name{color:#fff;font-weight:500;font-size:clamp(18px,1.5vw,24px);letter-spacing:.005em;line-height:1.15}
  .cl-go{color:rgba(255,255,255,.82);font-size:13px;letter-spacing:.02em;align-self:flex-start;
    position:relative;padding-bottom:3px}
  .cl-go::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:rgba(255,255,255,.9);
    transition:width .4s cubic-bezier(.16,1,.3,1)}
  .carousel_card:hover .cl-go::after,.carousel_card:focus-visible .cl-go::after{width:100%}

  /* ---- 3D ACTIVO (SOLO ≥768px vía JS): ARCO de 5 tarjetas, misma curva que la referencia ---- */
  /* El escenario se queda pegado (sticky) y las 5 tarjetas-servicio se colocan en un ARCO
     (paso 25,714° · R≈1095 — la curva exacta de la referencia) — NO un círculo cerrado: así TODAS pasan
     por el centro y se ven 3-4 a la vez. El tamaño lo fija el JS, CAPADO a la altura de la
     ventana → la tarjeta nunca se sale de pantalla. */
  .carousel_container.is-3d{height:250vh}
  .carousel_container.is-3d .carousel_stage{position:sticky;top:0;height:100vh;overflow:hidden;
    display:block;perspective:5000px;perspective-origin:50% 50%}
  /* grupo anclado al CENTRO exacto del viewport: la tarjeta frontal siempre entera */
  .carousel_container.is-3d .carousel{position:absolute;top:50%;left:50%;width:0;height:0;padding:0;gap:0;
    transform-style:preserve-3d;will-change:transform}
  /* width/height/margin los escribe el JS (capados a la ventana) */
  .carousel_container.is-3d .carousel_card{position:absolute;top:0;left:0;flex:none;aspect-ratio:auto;
    backface-visibility:hidden;transform-style:preserve-3d;will-change:transform}
  .carousel_container.is-3d .carousel_card_img{inset:-100px 0 0 -100px;
    width:calc(100% + 200px);height:calc(100% + 200px);will-change:transform}
  .carousel_container.is-3d .carousel_card::after{height:42%}
  .carousel_container.is-3d .carousel_label{left:26px;bottom:24px}
  .carousel_container.is-3d .cl-name{font-size:30px}
  .carousel_container.is-3d .cl-go{font-size:14px}
  /* SIN máscara/difuminado lateral: la referencia deja los bordes limpios (verificado en vivo) */
  .carousel_container.is-3d .carousel_mask{display:none}

  /* --- animaciones nivel la referencia: reveal de títulos (D) --- */
  /* máscaras que crea el JS al envolver cada título; sin JS no existen (título visible normal) */
  .tmask{display:block;overflow:hidden}
  .tline{display:block;will-change:transform}
  /* las fotos con parallax/reveal solo cambian su estado inicial cuando el JS lo aplica;
     sin JS o con reduced-motion se quedan enteras y visibles (failsafe) */

  /* failsafe: sin JS / GSAP caído / reduced-motion → todo terminado, sin cortina */
  .no-anim .curtain{display:none}
  .no-anim .hero-media{transform:scale(1)}
  .no-anim .nav{opacity:1}
  .no-anim .hero-slide{opacity:0}
  .no-anim .hero-slide:first-child{opacity:1}
  .no-anim .hero-slide img{animation:none;transform:scale(1)}
  @media (prefers-reduced-motion: reduce){
    .curtain{display:none}
    .hero-media{transform:scale(1) !important}
    .nav{opacity:1}
    .hero-slide{opacity:0;transition:none}
    .hero-slide:first-child{opacity:1}
    .hero-slide img{animation:none !important;transform:scale(1) !important}
  }

  /* ============ TEMA OSCURO · dónde entra el ORO (con cuentagotas) ============
     Regla: el oro marca jerarquía (antetítulo, cifra, CTA, firma), nunca rellena superficies.
     Todo esto es SOLO dark → el tema claro queda exactamente igual que estaba. */
  :root[data-theme="dark"] .eyebrow{color:var(--acento)}
  :root[data-theme="dark"] .stat-n{color:var(--acento)}
  :root[data-theme="dark"] .por-n{color:var(--acento)}
  :root[data-theme="dark"] .btn-white{
    background:var(--acento);border-color:var(--acento);color:var(--acento-txt)}
  :root[data-theme="dark"] .tile-cta .btn-white{border-color:var(--acento)}
  :root[data-theme="dark"] .tile-cta:hover .btn-white{
    background:transparent;color:var(--acento);border-color:var(--acento)}
  :root[data-theme="dark"] .footer h4{color:var(--acento)}
  /* preloader en oscuro: la firma se dibuja en oro sobre el negro cálido */
  :root[data-theme="dark"] .curtain{background:var(--gris)}
  :root[data-theme="dark"] .cwordmark .stroke{stroke:var(--acento)}
  :root[data-theme="dark"] .csub{color:var(--tinta-2)}
  :root[data-theme="dark"] .cplace{color:var(--acento)}

  /* ============ BOTÓN DE TEMA ============ */
  .theme-btn{
    display:inline-flex;align-items:center;gap:8px;cursor:pointer;
    background:transparent;border:1px solid currentColor;border-radius:999px;
    padding:7px 13px;font:inherit;font-size:12px;letter-spacing:.06em;text-transform:uppercase;
    color:inherit;opacity:.75;transition:opacity .25s, border-color .25s;
    -webkit-appearance:none;appearance:none;
  }
  .theme-btn:hover,.theme-btn:focus-visible{opacity:1}
  .theme-btn .tb-dot{
    width:9px;height:9px;border-radius:50%;background:currentColor;flex:none;
  }
  :root[data-theme="dark"] .theme-btn{color:var(--acento);opacity:.9}
  .nav .theme-btn{margin-left:22px}
  /* en las páginas interiores la nav es clara: el botón debe tomar la tinta, no el blanco del hero */
  .page-nav .theme-btn{color:var(--tinta)}
  .nav-right{display:flex;align-items:center}
  @media (max-width:768px){
    .theme-btn{padding:5px 7px;font-size:10px;letter-spacing:.04em}
    .theme-btn .tb-txt{display:none}
    .nav .theme-btn{margin-left:8px}
  }

  /* ============ WHATSAPP ============ */
  .contacto-btns{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
  .btn-wa{
    display:inline-flex;align-items:center;gap:9px;
    height:54px;padding:0 24px;border-radius:12px;
    font-size:15px;font-weight:500;text-decoration:none;white-space:nowrap;
    background:#25D366;color:#08260f;border:1px solid #25D366;
    transition:filter .25s;
  }
  .btn-wa:hover{filter:brightness(1.08)}
  .btn-wa svg{flex:none}
  /* en las paginas interiores va junto al CTA principal */
  .page-cta .btn-wa{vertical-align:middle;margin-left:10px}
  @media (max-width:520px){
    .contacto-btns{flex-direction:column;align-items:stretch}
    .btn-wa{justify-content:center}
    .page-cta .btn-wa{display:inline-flex;margin:12px 0 0}
  }
