/*
Theme Name: Weld Solutions
Theme URI: https://weldsolutions.es/
Author: Weld Solutions S.L.
Author URI: https://weldsolutions.es/
Description: Tema a medida para Weld Solutions (Alzira, Valencia): soldadura manual y robotizada, corte láser de tubo, puertas correderas, vallados y pérgolas. Incluye SEO técnico, datos estructurados Schema.org, llms.txt para buscadores de IA y animaciones.
Version: 1.1.1
Requires at least: 6.0
Requires PHP: 7.4
License: Propietaria
Text Domain: weldsolutions
*/
  :root{
    --graphite-950:#141517;
    --graphite-900:#1b1d20;
    --graphite-800:#232629;
    --graphite-700:#2f3236;
    --line:#3c4045;
    --text:#eef0f1;
    --text-muted:#a3aab1;
    --molten:#ff6a2b;
    --molten-dim:#7a3a1c;
    --arc:#49d3ec;
    --arc-dim:#245b66;
    --radius:3px;

    /* ---- Identidad de movimiento: "metal rígido" (premium industrial, sin rebote) ---- */
    --ease:cubic-bezier(.2,0,0,1);          /* curva firma: 80% de las animaciones */
    --ease-in:cubic-bezier(.05,.7,.1,1);    /* entradas enfáticas */
    --ease-out:cubic-bezier(.3,0,1,1);      /* salidas */
    --ease-amb:cubic-bezier(.45,0,.55,1);   /* bucles ambientales (seno) */
    --t-quick:160ms;
    --t-std:420ms;
    --t-slow:760ms;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;scroll-padding-top:80px;}
  body{
    margin:0;background:var(--graphite-950);color:var(--text);
    font-family:'Inter',system-ui,sans-serif;line-height:1.6;-webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  h1,h2,h3,.eyebrow,.btn,.stat-num{font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.02em;}
  .mono{font-family:'IBM Plex Mono',monospace;}
  a{color:inherit;}
  img,video{max-width:100%;display:block;}
  .wrap{max-width:1180px;margin:0 auto;padding:0 24px;}
  @media (max-width:600px){.wrap{padding:0 16px;}}
  .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  .skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--molten);color:#151516;padding:10px 16px;border-radius:var(--radius);font-weight:600;text-decoration:none;transition:top var(--t-quick) var(--ease);}
  .skip:focus{top:12px;}
  :focus-visible{outline:2px solid var(--arc);outline-offset:3px;}

  /* ---------- BARRA DE PROGRESO (capa ambiental) ---------- */
  .progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:70;transform-origin:0 50%;transform:scaleX(0);
    background:linear-gradient(90deg,var(--molten),var(--arc));pointer-events:none;}

  /* ---------- NAV ---------- */
  header.site{
    position:fixed;top:0;left:0;right:0;z-index:60;
    background:rgba(20,21,23,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
    transition:transform var(--t-std) var(--ease), background var(--t-std) var(--ease);
  }
  header.site.hide{transform:translateY(-100%);transition:transform 300ms var(--ease-out);}
  header.site.scrolled{background:rgba(20,21,23,.96);}
  .nav{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;max-width:1180px;margin:0 auto;transition:padding var(--t-std) var(--ease);}
  header.scrolled .nav{padding:8px 24px;}
  .nav-logo{display:flex;align-items:center;gap:10px;text-decoration:none;}
  .nav-logo img{height:38px;width:auto;}
  .nav-links{display:flex;gap:28px;list-style:none;margin:0;padding:0;font-size:.8rem;font-family:'Oswald',sans-serif;letter-spacing:.08em;text-transform:uppercase;}
  .nav-links a{text-decoration:none;color:var(--text-muted);padding-bottom:4px;position:relative;transition:color var(--t-quick) var(--ease);}
  .nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--molten);transform:scaleX(0);transform-origin:right;transition:transform 300ms var(--ease);}
  .nav-links a:hover{color:var(--text);}
  .nav-links a:hover::after{transform:scaleX(1);transform-origin:left;}
  .nav-cta{font-size:.78rem;font-family:'Oswald',sans-serif;letter-spacing:.08em;text-transform:uppercase;background:var(--molten);color:#151516;padding:9px 18px;border-radius:var(--radius);text-decoration:none;white-space:nowrap;}
  .burger{display:none;background:none;border:1px solid var(--line);color:var(--text);width:40px;height:40px;border-radius:var(--radius);cursor:pointer;font-size:1.1rem;}
  @media (max-width:960px){
    .nav-links{display:none;}
    .nav-cta{display:none;}
    .burger{display:block;}
    .nav-links.open{display:flex;flex-direction:column;gap:0;position:fixed;top:62px;left:0;right:0;background:var(--graphite-900);border-bottom:1px solid var(--line);padding:8px 24px 20px;animation:dropIn var(--t-std) var(--ease-in);}
    .nav-links.open a{display:block;padding:14px 0;border-bottom:1px solid var(--graphite-700);width:100%;}
  }
  @keyframes dropIn{from{opacity:0;transform:translateY(-12px);}to{opacity:1;transform:none;}}

  /* ---------- HERO ---------- */
  .hero{position:relative;overflow:hidden;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:150px 0 60px;}
  .hero-media{position:absolute;inset:-6% 0 0 0;z-index:0;will-change:transform;}
  .hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 30%;filter:saturate(1.05) contrast(1.05);
    animation:kenburns 24s var(--ease-amb) infinite alternate;}
  @keyframes kenburns{from{transform:scale(1.04);}to{transform:scale(1.12) translate(-1%,-1%);}}
  .hero-shade{position:absolute;inset:0;z-index:0;
    background:
      linear-gradient(180deg, rgba(14,15,16,.55) 0%, rgba(14,15,16,.88) 62%, var(--graphite-950) 100%),
      radial-gradient(ellipse 900px 500px at 12% 10%, rgba(255,106,43,.22), transparent 60%),
      radial-gradient(ellipse 800px 500px at 90% 5%, rgba(73,211,236,.20), transparent 60%);}
  #sparkCanvas{position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:screen;width:100%;height:100%;}
  .hero-inner{position:relative;z-index:2;}
  .eyebrow{font-size:.78rem;color:var(--text-muted);letter-spacing:.18em;display:flex;align-items:center;gap:10px;margin:0 0 22px;font-weight:500;}
  .eyebrow::before{content:"";width:26px;height:1px;background:var(--molten);}
  h1{font-size:clamp(2.3rem,5.6vw,4.6rem);line-height:1.04;font-weight:700;margin:0 0 26px;max-width:18ch;text-shadow:0 4px 40px rgba(0,0,0,.4);}
  h1 .line{display:block;overflow:hidden;padding-bottom:.04em;}
  h1 .line > span{display:inline-block;}
  .accent{color:var(--molten);}
  .accent2{color:var(--arc);}
  .tagline{font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--text);font-size:1.05rem;margin:0 0 12px;}
  .hero p.lede{font-size:1.1rem;color:#dfe2e4;max-width:56ch;margin:0 0 40px;}
  .hero-ctas{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:70px;}

  /* Coreografía del hero: el titular manda, el resto sigue (stagger dramático < 600ms) */
  html.js .hero [data-in]{opacity:0;transform:translateY(18px);}
  html.js .hero h1 .line > span{transform:translateY(105%);}
  html.js.loaded .hero [data-in]{opacity:1;transform:none;transition:opacity var(--t-slow) var(--ease-in), transform var(--t-slow) var(--ease-in);transition-delay:calc(var(--d,0) * 1ms);}
  html.js.loaded .hero h1 .line > span{transform:none;transition:transform 900ms var(--ease-in);transition-delay:calc(var(--d,0) * 1ms);}

  /* ---------- BOTONES ---------- */
  .btn{font-size:.85rem;padding:15px 28px;border-radius:var(--radius);text-decoration:none;display:inline-flex;align-items:center;gap:10px;letter-spacing:.06em;position:relative;overflow:hidden;
    transition:transform var(--t-quick) var(--ease), box-shadow var(--t-std) var(--ease), background var(--t-quick) var(--ease), border-color var(--t-quick) var(--ease), color var(--t-quick) var(--ease);}
  .btn::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;transform:skewX(-20deg) translateX(0);
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);opacity:0;}
  .btn:hover::after{opacity:1;transform:skewX(-20deg) translateX(420%);transition:transform 700ms var(--ease), opacity 100ms;}
  .btn:hover{transform:translateY(-2px);}
  .btn:active{transform:translateY(0) scale(.97);transition-duration:90ms;}
  .btn-primary{background:var(--molten);color:#151516;box-shadow:0 8px 30px -6px rgba(255,106,43,.55);}
  .btn-primary:hover{background:#ff7f47;box-shadow:0 14px 36px -8px rgba(255,106,43,.75);}
  .btn-ghost{border:1px solid rgba(255,255,255,.35);color:var(--text);backdrop-filter:blur(6px);background:rgba(255,255,255,.05);}
  .btn-ghost:hover{border-color:var(--arc);color:var(--arc);}
  .btn .arrow{transition:transform var(--t-quick) var(--ease);}
  .btn:hover .arrow{transform:translateX(4px);}

  /* firma: cordón de soldadura */
  .seam{position:relative;height:2px;background:var(--line);margin:0 0 40px;}
  .seam::before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(100deg, transparent 0 10px, var(--graphite-950) 10px 12px);}
  .seam .bead{position:absolute;top:50%;left:0;width:14px;height:14px;margin-top:-7px;border-radius:50%;
    background:radial-gradient(circle at 35% 30%, #fff, var(--molten) 40%, var(--molten-dim) 75%);
    box-shadow:0 0 16px 3px rgba(255,106,43,.55);animation:travel 6s var(--ease-amb) infinite;}
  @keyframes travel{
    0%{left:0;}
    48%{left:calc(100% - 14px);background:radial-gradient(circle at 35% 30%, #fff, var(--molten) 40%, var(--molten-dim) 75%);box-shadow:0 0 16px 3px rgba(255,106,43,.55);}
    52%{left:calc(100% - 14px);background:radial-gradient(circle at 35% 30%, #fff, var(--arc) 40%, var(--arc-dim) 75%);box-shadow:0 0 16px 3px rgba(73,211,236,.55);}
    100%{left:0;background:radial-gradient(circle at 35% 30%, #fff, var(--arc) 40%, var(--arc-dim) 75%);box-shadow:0 0 16px 3px rgba(73,211,236,.55);}
  }

  .stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);overflow:hidden;backdrop-filter:blur(10px);margin:0;}
  .stat{background:rgba(27,29,32,.55);padding:22px 20px;margin:0;display:flex;flex-direction:column-reverse;justify-content:flex-end;}
  .stat-num{font-size:1.5rem;color:var(--arc);margin:0 0 4px;}
  .stat-label{font-size:.8rem;color:var(--text-muted);font-family:'Inter',sans-serif;margin:0;}
  @media (max-width:760px){.stat-row{grid-template-columns:repeat(2,1fr);}}

  /* ---------- MARQUEE ---------- */
  .marquee{border-top:1px solid var(--graphite-800);border-bottom:1px solid var(--graphite-800);background:var(--graphite-900);padding:16px 0;overflow:hidden;white-space:nowrap;}
  .marquee-track{display:inline-flex;gap:48px;animation:scroll 30s linear infinite;}
  .marquee:hover .marquee-track{animation-play-state:paused;}
  .marquee span{font-family:'Oswald',sans-serif;letter-spacing:.14em;font-size:.85rem;color:var(--text-muted);display:inline-flex;align-items:center;gap:14px;}
  .marquee span::after{content:"◆";color:var(--molten);font-size:.6rem;}
  @keyframes scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}

  /* ---------- SECCIONES ---------- */
  section{padding:100px 0;border-top:1px solid var(--graphite-800);}
  @media (max-width:600px){section{padding:72px 0;}}
  .section-head{max-width:680px;margin-bottom:56px;}
  .section-head .eyebrow{margin-bottom:16px;}
  h2{font-size:clamp(1.8rem,3.6vw,2.6rem);font-weight:600;margin:0 0 16px;line-height:1.12;}
  .section-head p,.muted{color:var(--text-muted);font-size:1rem;margin:0;}
  .spacer{height:80px;}

  /* Revelado al hacer scroll — entrada desde abajo, 20px, curva enfática, stagger de 70ms */
  html.js .reveal{opacity:0;transform:translateY(24px);}
  html.js .reveal.in{opacity:1;transform:none;transition:opacity 640ms var(--ease-in), transform 640ms var(--ease-in);transition-delay:calc(var(--i,0) * 70ms);}

  /* ---------- TARJETAS DE FOTO ---------- */
  .grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
  @media (max-width:900px){.grid3{grid-template-columns:1fr;}}
  .photo-card{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:4/5;border:1px solid var(--line);background:var(--graphite-900);margin:0;
    transition:transform var(--t-std) var(--ease), border-color var(--t-std) var(--ease), box-shadow var(--t-std) var(--ease);}
  @media (max-width:900px){.photo-card{aspect-ratio:4/3;}}
  .photo-card:hover{transform:translateY(-4px);border-color:var(--molten-dim);box-shadow:0 24px 50px -24px rgba(0,0,0,.8), 0 0 0 1px rgba(255,106,43,.15);}
  .photo-card img{width:100%;height:100%;object-fit:cover;transition:transform 900ms var(--ease), filter 600ms var(--ease);filter:grayscale(.15) brightness(.92);}
  .photo-card:hover img{transform:scale(1.07);filter:grayscale(0) brightness(1);}
  /* barrido láser al pasar el ratón (capa secundaria) */
  .photo-card::before{content:"";position:absolute;z-index:2;left:0;right:0;top:-10%;height:2px;opacity:0;pointer-events:none;
    background:linear-gradient(90deg,transparent,var(--arc),transparent);box-shadow:0 0 14px 2px rgba(73,211,236,.7);}
  .photo-card:hover::before{animation:scan 900ms var(--ease) forwards;}
  @keyframes scan{0%{top:-2%;opacity:0;}15%{opacity:1;}85%{opacity:1;}100%{top:102%;opacity:0;}}
  .photo-card .tag{position:absolute;z-index:3;top:16px;left:16px;font-family:'IBM Plex Mono',monospace;font-size:.68rem;color:var(--molten);border:1px solid var(--molten-dim);padding:3px 8px;border-radius:20px;letter-spacing:.04em;background:rgba(20,21,23,.6);backdrop-filter:blur(4px);}
  .photo-card.arc .tag{color:var(--arc);border-color:var(--arc-dim);}
  .photo-card figcaption{position:absolute;z-index:3;left:0;right:0;bottom:0;padding:22px 20px 18px;background:linear-gradient(0deg, rgba(10,11,12,.94) 25%, transparent 100%);transform:translateY(8px);transition:transform var(--t-std) var(--ease);}
  .photo-card:hover figcaption{transform:none;}
  .photo-card h3{font-size:1.05rem;font-weight:600;margin:0 0 6px;text-transform:none;letter-spacing:0;font-family:'Inter',sans-serif;color:#fff;}
  .photo-card figcaption p{color:#c7ccd0;font-size:.86rem;margin:0;}

  /* ---------- BLOQUES SPLIT ---------- */
  .split{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;}
  .split.flip > :first-child{order:2;}
  @media (max-width:900px){.split{grid-template-columns:1fr;gap:36px;}.split.flip > :first-child{order:0;}}
  .glow-frame{position:relative;border-radius:var(--radius);padding:2px;background:linear-gradient(135deg, var(--molten), transparent 40%, var(--arc));}
  .glow-frame .inner{background:var(--graphite-900);border-radius:calc(var(--radius) - 1px);padding:26px;}
  .badge-new{display:inline-flex;align-items:center;gap:8px;font-size:.72rem;letter-spacing:.12em;color:var(--molten);border:1px solid var(--molten-dim);padding:5px 12px;border-radius:20px;margin-bottom:18px;font-family:'Oswald',sans-serif;}
  .badge-new::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--molten);animation:pulse 2.4s var(--ease-amb) infinite;}
  .badge-new.arc{color:var(--arc);border-color:var(--arc-dim);}
  .badge-new.arc::before{background:var(--arc);}
  @keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(255,106,43,.6);}50%{box-shadow:0 0 0 6px rgba(255,106,43,0);}}
  ul.feature-list{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:14px;}
  ul.feature-list li{display:flex;gap:12px;font-size:.95rem;color:var(--text);}
  ul.feature-list li::before{content:"—";color:var(--molten);flex-shrink:0;}

  /* Marco de imagen generada con hueco de reserva (evita CLS si aún no existe el archivo) */
  .media-frame{position:relative;border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3;background:
    repeating-linear-gradient(135deg, var(--graphite-900) 0 14px, var(--graphite-800) 14px 15px);border:1px solid var(--line);}
  .media-frame::after{content:attr(data-fallback);position:absolute;inset:auto 0 0 0;padding:14px 16px;font-family:'IBM Plex Mono',monospace;font-size:.72rem;color:var(--text-muted);}
  .media-frame img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
  .media-frame:hover img{transform:scale(1.04);}

  /* Revelado "corte láser": la imagen aparece tras una línea de láser que la recorre */
  html.js .cut{clip-path:inset(0 100% 0 0);}
  html.js .cut.in{clip-path:inset(0 0 0 0);transition:clip-path 1100ms var(--ease-in);transition-delay:calc(var(--i,0) * 90ms);}
  .cut-wrap{position:relative;}
  .cut-wrap::after{content:"";position:absolute;z-index:4;top:-4px;bottom:-4px;left:0;width:2px;opacity:0;pointer-events:none;
    background:linear-gradient(180deg,transparent,#fff 20%,var(--arc) 50%,#fff 80%,transparent);
    box-shadow:0 0 18px 4px rgba(73,211,236,.75), 0 0 4px 1px #fff;}
  html.js .cut-wrap.in::after{animation:laserline 1100ms var(--ease-in) forwards;animation-delay:calc(var(--i,0) * 90ms);}
  @keyframes laserline{0%{left:0;opacity:1;}90%{opacity:1;}100%{left:100%;opacity:0;}}

  /* ---------- LÁSER DE TUBO ---------- */
  .laser-wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center;}
  @media (max-width:900px){.laser-wrap{grid-template-columns:1fr;gap:40px;}}
  .spec-table{width:100%;border-collapse:collapse;font-family:'IBM Plex Mono',monospace;font-size:.85rem;margin-top:24px;}
  .spec-table th,.spec-table td{padding:10px 0;border-top:1px solid var(--graphite-700);color:var(--text-muted);text-align:left;font-weight:400;}
  .spec-table td{color:var(--arc);text-align:right;}
  .spec-table tr:first-child th,.spec-table tr:first-child td{border-top:none;}
  .video-shell{position:relative;max-width:380px;margin:0 auto;width:100%;}
  .video-shell .glow-frame .inner{padding:8px;}
  .video-shell video{width:100%;aspect-ratio:9/16;object-fit:cover;border-radius:2px;background:#000;}
  .video-shell .halo{position:absolute;inset:-40px;z-index:-1;filter:blur(40px);opacity:.55;
    background:radial-gradient(circle at 30% 30%, rgba(255,106,43,.45), transparent 55%), radial-gradient(circle at 70% 75%, rgba(73,211,236,.4), transparent 55%);
    animation:breathe 7s var(--ease-amb) infinite alternate;}
  @keyframes breathe{from{transform:scale(.94);opacity:.4;}to{transform:scale(1.04);opacity:.65;}}
  .video-hud{position:absolute;z-index:3;left:18px;right:18px;top:18px;display:flex;justify-content:space-between;align-items:center;pointer-events:none;}
  .rec{font-family:'IBM Plex Mono',monospace;font-size:.68rem;letter-spacing:.08em;color:#fff;background:rgba(10,11,12,.6);padding:4px 9px;border-radius:20px;display:inline-flex;align-items:center;gap:7px;backdrop-filter:blur(4px);}
  .rec::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--molten);animation:blink 1.6s var(--ease-amb) infinite;}
  @keyframes blink{50%{opacity:.25;}}
  .vbtn{pointer-events:auto;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(10,11,12,.6);color:#fff;cursor:pointer;backdrop-filter:blur(4px);display:grid;place-items:center;transition:transform var(--t-quick) var(--ease), border-color var(--t-quick) var(--ease);}
  .vbtn:hover{border-color:var(--arc);transform:scale(1.06);}
  .vbtn:active{transform:scale(.94);}
  .vbtn svg{width:14px;height:14px;fill:currentColor;}

  .gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:64px;}
  @media (max-width:900px){.gallery{grid-template-columns:repeat(2,1fr);}}
  @media (max-width:480px){.gallery{grid-template-columns:1fr;}}
  .gallery figure{margin:0;}
  .gallery a{display:block;position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);aspect-ratio:3/2;background:var(--graphite-900);}
  .gallery img{width:100%;height:100%;object-fit:cover;transition:transform 900ms var(--ease), filter 600ms var(--ease);filter:brightness(.92);}
  .gallery a:hover img{transform:scale(1.06);filter:brightness(1.05);}
  .gallery a .zoom{position:absolute;z-index:3;right:10px;bottom:10px;width:30px;height:30px;border-radius:50%;background:rgba(10,11,12,.7);color:#fff;display:grid;place-items:center;font-size:.9rem;opacity:0;transform:scale(.8);transition:opacity var(--t-quick) var(--ease), transform var(--t-quick) var(--ease);}
  .gallery a:hover .zoom,.gallery a:focus-visible .zoom{opacity:1;transform:none;}
  .gallery figcaption{font-size:.8rem;color:var(--text-muted);margin-top:10px;}

  dialog.lightbox{border:none;padding:0;background:transparent;max-width:min(92vw,1200px);max-height:90vh;overflow:visible;}
  dialog.lightbox::backdrop{background:rgba(8,9,10,.88);backdrop-filter:blur(6px);}
  dialog.lightbox[open]{animation:lbIn var(--t-std) var(--ease-in);}
  @keyframes lbIn{from{opacity:0;transform:scale(.96);}to{opacity:1;transform:none;}}
  dialog.lightbox img{max-width:100%;max-height:82vh;border-radius:var(--radius);border:1px solid var(--line);}
  dialog.lightbox p{color:var(--text-muted);font-size:.9rem;margin:10px 0 0;}
  dialog.lightbox button{position:absolute;top:-46px;right:0;background:none;border:1px solid var(--line);color:#fff;width:38px;height:38px;border-radius:50%;cursor:pointer;font-size:1.1rem;}

  /* ---------- CTA ---------- */
  .cta-band{position:relative;overflow:hidden;border-radius:var(--radius);padding:60px 44px;display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;background:linear-gradient(120deg, var(--graphite-900), var(--graphite-800));border:1px solid var(--line);}
  @media (max-width:600px){.cta-band{padding:40px 22px;}}
  .cta-band::before{content:"";position:absolute;inset:0;background:url('https://weldsolutions.es/wp-content/uploads/2025/05/YASKAWA-2.png') right -40px center/contain no-repeat;opacity:.18;}
  .cta-band::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,rgba(255,106,43,.08) 50%,transparent 70%);background-size:250% 100%;animation:sheen 8s var(--ease-amb) infinite;}
  @keyframes sheen{from{background-position:120% 0;}to{background-position:-120% 0;}}
  .cta-band > *{position:relative;z-index:1;}
  .cta-band h3{font-size:1.6rem;margin:0 0 8px;font-family:'Oswald',sans-serif;text-transform:none;letter-spacing:0;font-weight:600;}
  .cta-band p{color:var(--text-muted);margin:0;max-width:46ch;font-size:.95rem;}

  /* ---------- FAQ ---------- */
  .faq{max-width:860px;}
  .faq details{border-top:1px solid var(--graphite-700);}
  .faq details:last-child{border-bottom:1px solid var(--graphite-700);}
  .faq summary{list-style:none;cursor:pointer;padding:22px 44px 22px 0;position:relative;font-weight:600;font-size:1.02rem;transition:color var(--t-quick) var(--ease);}
  .faq summary::-webkit-details-marker{display:none;}
  .faq summary:hover{color:var(--molten);}
  .faq summary::after{content:"";position:absolute;right:6px;top:50%;width:12px;height:12px;margin-top:-8px;border-right:2px solid var(--molten);border-bottom:2px solid var(--molten);transform:rotate(45deg);transition:transform var(--t-std) var(--ease);}
  .faq details[open] summary::after{transform:rotate(225deg);margin-top:-2px;}
  .faq .answer{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--t-std) var(--ease);}
  .faq details[open] .answer{grid-template-rows:1fr;}
  .faq .answer > div{overflow:hidden;}
  .faq .answer p{color:var(--text-muted);margin:0 0 22px;max-width:70ch;}

  /* ---------- CONTACTO / FOOTER ---------- */
  .contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
  @media (max-width:860px){.contact-grid{grid-template-columns:1fr;}}
  .contact-card{display:block;text-decoration:none;padding:28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--graphite-900);transition:transform var(--t-std) var(--ease), border-color var(--t-std) var(--ease);}
  .contact-card:hover{transform:translateY(-4px);border-color:var(--molten);}
  .contact-card .k{font-family:'Oswald',sans-serif;letter-spacing:.12em;font-size:.75rem;color:var(--text-muted);text-transform:uppercase;}
  .contact-card .v{font-size:1.25rem;font-weight:600;margin-top:6px;word-break:break-word;}
  .contact-card .s{font-size:.85rem;color:var(--text-muted);margin-top:4px;}

  footer{background:var(--graphite-900);border-top:1px solid var(--line);padding:56px 0 32px;}
  .foot-top{display:flex;align-items:center;gap:14px;margin-bottom:36px;}
  .foot-top img{height:34px;width:auto;}
  .foot-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:40px;margin-bottom:40px;}
  @media (max-width:860px){.foot-grid{grid-template-columns:1fr 1fr;gap:28px;}}
  @media (max-width:520px){.foot-grid{grid-template-columns:1fr;}}
  .foot-grid h2{font-size:.78rem;letter-spacing:.12em;color:var(--text-muted);margin:0 0 14px;font-weight:500;}
  .foot-grid p,.foot-grid a,.foot-grid address{font-size:.92rem;color:var(--text);text-decoration:none;display:block;margin:0 0 8px;font-style:normal;}
  .foot-grid a:hover{color:var(--molten);}
  .foot-bottom{border-top:1px solid var(--graphite-700);padding-top:24px;font-size:.8rem;color:var(--text-muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}

  .wa-float{position:fixed;right:18px;bottom:18px;z-index:55;width:56px;height:56px;border-radius:50%;background:#25d366;display:grid;place-items:center;box-shadow:0 10px 30px -8px rgba(0,0,0,.6);
    transform:translateY(90px);transition:transform var(--t-std) var(--ease-in);}
  .wa-float.show{transform:none;}
  .wa-float:hover{transform:scale(1.06);}
  .wa-float svg{width:28px;height:28px;fill:#fff;}

  /* ---------- MOVIMIENTO REDUCIDO ---------- */
  @media (prefers-reduced-motion:reduce){
    *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;transition-delay:0ms !important;}
    html{scroll-behavior:auto;}
    .seam .bead{left:50%;}
    html.js .cut{clip-path:none;}
    html.js .reveal,html.js .hero [data-in]{opacity:1;transform:none;}
    html.js .hero h1 .line > span{transform:none;}
  }

/* ---------- Páginas interiores y entradas ---------- */
.ws-page{padding:140px 0 90px;min-height:70vh;}
.ws-page article{max-width:820px;}
.ws-page article + article{margin-top:60px;padding-top:60px;border-top:1px solid var(--graphite-800);}
.ws-page h1{font-size:clamp(2rem,4.4vw,3.2rem);max-width:none;text-shadow:none;}
.ws-page h2 a{text-decoration:none;}
.ws-content{color:#d6dadd;font-size:1.02rem;}
.ws-content a{color:var(--molten);}
.ws-content h2,.ws-content h3{margin-top:1.6em;}
.ws-content img,.ws-thumb{height:auto;border-radius:var(--radius);}
.ws-thumb{margin-bottom:24px;}
.ws-meta{font-family:'IBM Plex Mono',monospace;font-size:.78rem;color:var(--text-muted);margin:-12px 0 24px;}
.nav-links li{list-style:none;}
.nav-links .current-menu-item > a{color:var(--text);}
/* Imágenes de la Biblioteca de medios dentro de los marcos */
.photo-card img,.media-frame img,.gallery img{height:100%;}

/* =====================================================================
   ADAPTACIÓN A DISPOSITIVOS (móvil · tablet · portátil · pantallas grandes)
   ===================================================================== */
html{overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
@supports (overflow:clip){html,body{overflow-x:clip;}}
img,video{height:auto;}
a,button,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation;}

/* Cabecera: evita que el menú se parta en portátiles pequeños */
.nav-links a{white-space:nowrap;}
@media (min-width:961px) and (max-width:1180px){
  .nav-links{gap:18px;font-size:.74rem;}
  .nav-cta{padding:8px 14px;}
}
.burger{width:44px;height:44px;}
@media (max-width:960px){
  .nav-links.open{top:var(--header-h,62px);max-height:calc(100svh - var(--header-h,62px));overflow-y:auto;}
}

/* Tablet (601–900 px): rejillas a 2 columnas, la tarjeta impar ocupa todo el ancho */
@media (min-width:601px) and (max-width:900px){
  .grid3{grid-template-columns:repeat(2,1fr);}
  .grid3 > :last-child:nth-child(odd){grid-column:1 / -1;aspect-ratio:16/9;}
  .photo-card{aspect-ratio:4/5;}
  .contact-grid{grid-template-columns:repeat(2,1fr);}
  .contact-grid > :last-child:nth-child(odd){grid-column:1 / -1;}
}

/* Móvil (≤ 600 px) */
@media (max-width:600px){
  .hero{padding:110px 0 48px;}
  h1{font-size:clamp(2rem,9.6vw,2.6rem);}
  .hero p.lede{font-size:1rem;margin-bottom:28px;}
  .hero-ctas{margin-bottom:44px;gap:12px;}
  .hero-ctas .btn{flex:1 1 100%;justify-content:center;}
  .stat{padding:16px 14px;}
  .stat-num{font-size:1.2rem;}
  .section-head{margin-bottom:36px;}
  .spacer{height:56px;}
  .photo-card{aspect-ratio:4/3;}
  .photo-card figcaption{transform:none;}
  .cta-band::before{opacity:.08;background-position:right -80px bottom -20px;background-size:70%;}
  .cta-band .btn{width:100%;justify-content:center;}
  .spec-table{font-size:.78rem;}
  .spec-table th{padding-right:12px;white-space:nowrap;}
  .gallery{gap:12px;margin-top:44px;}
  .contact-card{padding:22px;}
  .contact-card .v{font-size:1.1rem;}
  .foot-bottom{flex-direction:column;}
}
/* Teléfonos muy estrechos (≤ 360 px) */
@media (max-width:340px){
  .stat-row{grid-template-columns:1fr;}
  .nav-logo img{height:32px;}
}

/* Vídeo vertical: tamaño cómodo en cada pantalla */
.video-shell{max-width:min(380px, 78vw);}
@media (max-width:900px) and (orientation:landscape){ .video-shell{max-width:min(300px, 40vh);} }

/* Teléfono en horizontal: el hero no fuerza toda la altura */
@media (max-height:520px) and (orientation:landscape){
  .hero{min-height:auto;padding:100px 0 40px;}
}

/* Pantallas táctiles: sin efectos que dependen del ratón */
@media (hover:none){
  .photo-card:hover{transform:none;}
  .photo-card figcaption{transform:none;}
  .gallery a .zoom{opacity:1;transform:none;}
  .btn:hover{transform:none;}
  .btn:hover::after{opacity:0;}
}

/* Lightbox usable en móvil */
dialog.lightbox{max-width:96vw;}
dialog.lightbox button{top:8px;right:8px;z-index:2;background:rgba(10,11,12,.75);width:44px;height:44px;}

/* Botón de WhatsApp respetando la zona segura del iPhone */
.wa-float{right:calc(16px + env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));}

/* Pantallas grandes (≥ 1600 px) */
@media (min-width:1600px){
  .wrap,.nav{max-width:1320px;}
  body{font-size:17px;}
}

/* Impresión */
@media print{
  header.site,.wa-float,.marquee,#sparkCanvas,.progress,.video-shell,.burger{display:none!important;}
  body{background:#fff;color:#000;}
  .reveal,.cut,[data-in]{opacity:1!important;transform:none!important;clip-path:none!important;}
}

/* =====================================================================
   AJUSTES ESTRUCTURALES (HIG) — escala, espaciado, jerarquía, contraste
   y movimiento. Colores y marca sin cambios. Para revertir, borra este
   bloque completo.
   ===================================================================== */

/* [10] Escala única de radios + [7] tiempos más cortos */
:root{
  --radius:6px;            /* controles, etiquetas, botones */
  --radius-lg:12px;        /* superficies: tarjetas, marcos, banda CTA */
  --t-quick:140ms;
  --t-std:280ms;
  --t-slow:400ms;
}
.photo-card,.media-frame,.gallery a,.contact-card,.cta-band,.glow-frame{border-radius:var(--radius-lg);}
.glow-frame .inner{border-radius:calc(var(--radius-lg) - 1px);}
.photo-card .tag,.badge-new,.rec{border-radius:var(--radius);}
dialog.lightbox img{border-radius:var(--radius-lg);}

/* [10] Separar con espacio, no con líneas */
section{border-top:none;padding:96px 0;}
@media (max-width:600px){section{padding:72px 0;}}
.marquee{border-top:none;border-bottom:none;}
header.site{border-bottom-color:transparent;transition:transform var(--t-std) var(--ease), background var(--t-std) var(--ease), border-color var(--t-std) var(--ease);}
header.site.scrolled{border-bottom-color:var(--line);}

/* [1] Sin marcador de archivo ni rayado mientras falta una imagen */
.media-frame{background:var(--graphite-900);}
.media-frame::after{content:none;}

/* [2] Movimiento ambiental fuera: se conserva solo el revelado "corte láser" */
#sparkCanvas,.progress,.seam{display:none;}
.hero-media img{animation:none;transform:scale(1.04);}
#heroMedia{transform:none !important;}
.marquee-track{animation:none;display:flex;flex-wrap:wrap;justify-content:center;gap:10px 32px;white-space:normal;}
.marquee .marquee-track > span:nth-child(n+9){display:none;}  /* la cinta ya no se desplaza: fuera el duplicado */
.photo-card::before,.photo-card:hover::before{animation:none;display:none;}
.cta-band::after{animation:none;display:none;}
.video-shell .halo{display:none;}
.badge-new::before{animation:none;}
.rec::before{animation:none;}
.btn::after,.btn:hover::after{display:none;}

/* [3] Contraste por jerarquía, no por resplandor (mismos colores) */
.hero-shade{background:linear-gradient(180deg, rgba(14,15,16,.55) 0%, rgba(14,15,16,.88) 62%, var(--graphite-950) 100%);}
.glow-frame{background:var(--line);padding:1px;}
.btn-primary,.btn-primary:hover{box-shadow:none;}
.photo-card:hover{box-shadow:none;}

/* [4] Portada: un solo acento en el titular y jerarquía clara debajo */
.hero h1 .accent2{color:inherit;}
.hero .tagline{font-size:.85rem;letter-spacing:.08em;color:var(--text-muted);margin:0 0 16px;}
.hero p.lede{max-width:52ch;margin:0 0 32px;}
.hero-ctas{margin-bottom:56px;}
.stat-row{backdrop-filter:none;-webkit-backdrop-filter:none;}
.stat{background:rgba(27,29,32,.85);}
@media (max-width:600px){.hero-ctas{margin-bottom:40px;}}

/* [5] Cifras: misma familia que la marca, números tabulares, sin disfraz técnico */
.stat-num,.stat-num.mono{font-family:'Oswald',sans-serif;font-variant-numeric:tabular-nums;font-size:1.375rem;line-height:1.2;}
.stat-label{line-height:1.4;}

/* [6] Tipografía: tracking según tamaño, h2 en caja normal, dos familias */
h1{letter-spacing:-0.01em;line-height:1.05;}
h2{text-transform:none;letter-spacing:-0.01em;line-height:1.15;}
.cta-band h3{letter-spacing:-0.005em;}
.eyebrow{letter-spacing:.1em;}
.marquee span{letter-spacing:.08em;}
.mono,.photo-card .tag,.spec-table,.rec,.ws-meta{font-family:'Inter',system-ui,sans-serif;font-variant-numeric:tabular-nums;}
.photo-card .tag,.rec{font-size:.72rem;font-weight:500;letter-spacing:.02em;}
.spec-table{font-size:.9rem;}

/* [7] El contenido aparece antes: retrasos y recorridos más cortos */
html.js.loaded .hero [data-in]{transition:opacity var(--t-slow) var(--ease), transform var(--t-slow) var(--ease);transition-delay:calc(var(--d,0) * .35ms);}
html.js.loaded .hero h1 .line > span{transition:transform 480ms var(--ease);transition-delay:calc(var(--d,0) * .35ms);}
html.js .hero [data-in]{transform:translateY(8px);}
html.js .reveal{transform:translateY(12px);}
html.js .reveal.in{transition:opacity 360ms var(--ease), transform 360ms var(--ease);transition-delay:calc(var(--i,0) * 40ms);}
html.js .cut.in{transition:clip-path 600ms var(--ease);transition-delay:calc(var(--i,0) * 40ms);}
html.js .cut-wrap.in::after{animation-duration:600ms;animation-delay:calc(var(--i,0) * 40ms);}

/* [8] Menos fórmula: un único distintivo "Nuevo", sin latido, viñetas sobrias */
.badge-new:has(+ .eyebrow){display:none;}           /* no repetir etiqueta + antetítulo */
.section-head .eyebrow::before{display:none;}         /* la raya solo en la portada */
ul.feature-list li::before{content:"";width:5px;height:5px;margin-top:.62em;border-radius:50%;background:var(--molten);}
.marquee span::after{content:none;}

/* [9] Respuesta al pulsar, no decorado al pasar el ratón */
.btn:hover,.photo-card:hover,.contact-card:hover{transform:none;}
.btn:active{transform:scale(.97);transition-duration:90ms;}
.contact-card:active,.photo-card:active{transform:scale(.99);transition:transform 90ms var(--ease);}
.photo-card img,.gallery img,.media-frame img{transition:transform var(--t-std) var(--ease), filter var(--t-std) var(--ease);}
.photo-card:hover img{transform:scale(1.02);}
.gallery a:hover img,.media-frame:hover img{transform:scale(1.02);}
.photo-card figcaption{transform:none;}

/* ---------- Selector de idioma (ES · EN · FR) ---------- */
.nav-actions{display:flex;align-items:center;gap:12px;margin-left:24px;}
.lang-switch{display:flex;gap:2px;padding:2px;border:1px solid var(--line);border-radius:var(--radius);}
.lang-switch a{font-family:'Oswald',sans-serif;font-size:.72rem;letter-spacing:.08em;line-height:1;text-decoration:none;color:var(--text-muted);padding:6px 8px;border-radius:4px;transition:color var(--t-quick) var(--ease),background var(--t-quick) var(--ease);}
.lang-switch a:hover{color:var(--text);}
.lang-switch a:active{background:var(--graphite-800);}
.lang-switch a[aria-current="true"]{background:var(--graphite-700);color:var(--text);}
@media (min-width:961px) and (max-width:1180px){.nav-actions{gap:8px;}.lang-switch a{padding:6px 6px;}}
@media (hover:none){.lang-switch a{padding:10px 9px;}}
@media (max-width:340px){.lang-switch a{padding:10px 6px;}}
/* Portátiles: el menú y el selector de idioma tienen prioridad; el botón de presupuesto ya está en el menú (Contacto) y en la portada. */
@media (min-width:961px) and (max-width:1599px){.nav-cta{display:none;}}
@media (min-width:961px) and (max-width:1060px){.nav{padding-left:16px;padding-right:16px;}.nav-links{gap:14px;font-size:.72rem;letter-spacing:.06em;}}
