/*
Theme Name: Vayper Investigación
Theme URI: https://vayper-investigacion.es
Author: Vayper Investigación
Description: Tema a medida para Vayper Investigación, peritaje forense de incendios, inundaciones, fugas de agua y vehículos.
Version: 1.7
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: vayper
*/


  :root{
    --white:#FFFFFF;
    --offwhite:#F4F7FC;
    --tint:#EAF0FE;
    --ink:#10182B;
    --ink-soft:#4B5568;
    --blue:#1D4ED8;
    --blue-2:#2F6BFF;
    --blue-dark:#0F2A6B;
    --navy:#0B1730;
    --sky:#3B82F6;
    --line:rgba(16,24,40,0.10);
    --line-soft:rgba(16,24,40,0.07);
    --line-navy:rgba(255,255,255,0.12);
    --grad-blue:linear-gradient(135deg, var(--blue), var(--sky));
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--white);
    color:var(--ink);
    font-family:'IBM Plex Sans',sans-serif;
    font-size:16px;
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.display{
    font-family:'Space Grotesk',sans-serif;
    font-weight:600;
    letter-spacing:-0.01em;
  }
  .mono{
    font-family:'IBM Plex Mono',monospace;
    letter-spacing:0.02em;
  }
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;display:block;}
  .wrap{max-width:1180px;margin:0 auto;padding:0 32px;}
  @media (max-width:640px){.wrap{padding:0 20px;}}

  /* ---------- Evidence marker signature element ---------- */
  .tag{
    position:relative;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:34px;
    height:34px;
    padding:0 8px;
    background:var(--grad-blue);
    color:#FFFFFF;
    font-family:'IBM Plex Mono',monospace;
    font-weight:600;
    font-size:14px;
    clip-path:polygon(0 0, 100% 0, 100% 70%, 50% 100%, 0 70%);
    flex-shrink:0;
    box-shadow:0 0 0 rgba(29,78,216,0);
    transition:box-shadow .25s ease, transform .25s ease;
  }
  .tag--glow{box-shadow:0 4px 18px -2px rgba(29,78,216,0.4);}
  .tag--ghost{
    background:transparent;
    border:1.5px solid var(--blue);
    color:var(--blue);
    box-shadow:none;
  }
  .tag--teal{background:linear-gradient(135deg, var(--sky), #7DB6FF);color:#0B1730;}

  /* ---------- Nav ---------- */
  header.nav{
    position:sticky;top:18px;z-index:50;
    margin:0 auto;
    max-width:1180px;
    padding:0 32px;
  }
  @media (max-width:640px){header.nav{padding:0 16px;}}
  .nav-inner{
    display:flex;align-items:center;justify-content:space-between;
    height:68px;
    background:rgba(255,255,255,0.75);
    backdrop-filter:blur(18px) saturate(160%);
    -webkit-backdrop-filter:blur(18px) saturate(160%);
    border:1px solid var(--line);
    border-radius:999px;
    padding:0 12px 0 26px;
    box-shadow:0 20px 45px -22px rgba(16,24,60,0.35);
  }
  .brand{
    display:flex;align-items:center;gap:10px;
    font-family:'Space Grotesk',sans-serif;
    font-weight:600;font-size:18px;letter-spacing:0.01em;
    color:var(--ink);
  }
  .brand .mark{
    width:10px;height:10px;background:var(--grad-blue);
    clip-path:polygon(50% 0%, 100% 100%, 0% 100%);
  }
  nav.links{display:flex;gap:36px;font-size:14px;}
  nav.links a{opacity:0.7;transition:opacity .2s;color:var(--ink);}
  nav.links a:hover{opacity:1;}
  .btn{
    display:inline-flex;align-items:center;gap:8px;
    padding:13px 24px;
    background:var(--grad-blue);
    color:#FFFFFF;
    font-weight:600;font-size:14px;
    border:none;cursor:pointer;border-radius:999px;
    box-shadow:0 6px 20px -4px rgba(29,78,216,0.4);
    transition:transform .18s ease, box-shadow .18s ease, filter .18s ease;
  }
  .btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px -4px rgba(29,78,216,0.5);filter:brightness(1.05);}
  .btn--ghost{
    background:rgba(16,24,43,0.04);border:1px solid var(--line);color:var(--ink);
    box-shadow:none;
  }
  .btn--ghost:hover{background:rgba(16,24,43,0.08);transform:translateY(-2px);box-shadow:none;}
  .btn--sm{padding:10px 20px;font-size:13px;}
  .nav-cta{display:flex;align-items:center;gap:14px;}
  .menu-toggle{display:none;background:none;border:none;color:var(--ink);font-size:24px;cursor:pointer;line-height:1;padding:6px;}
  @media (max-width:860px){
    nav.links{display:none;}
    .menu-toggle{display:block;}
  }
  .mobile-menu{
    display:none;
    position:absolute;top:calc(100% + 10px);left:0;right:0;
    background:rgba(255,255,255,0.96);
    backdrop-filter:blur(18px) saturate(160%);
    -webkit-backdrop-filter:blur(18px) saturate(160%);
    border:1px solid var(--line);
    border-radius:20px;
    padding:14px;
    box-shadow:0 20px 45px -22px rgba(16,24,60,0.35);
    flex-direction:column;
    gap:4px;
  }
  .mobile-menu.is-open{display:flex;}
  .mobile-menu a{
    padding:12px 14px;border-radius:10px;font-size:15px;color:var(--ink);
  }
  .mobile-menu a:hover{background:var(--tint);}
  @media (min-width:861px){.mobile-menu{display:none !important;}}

  /* ---------- Hero ---------- */
  .hero{
    position:relative;
    padding:64px 0 110px;
    overflow:hidden;
    background:var(--white);
  }
  .blob{
    position:absolute;border-radius:50%;
    filter:blur(90px);
    opacity:0.55;
    pointer-events:none;
    animation:drift 16s ease-in-out infinite alternate;
  }
  .blob-1{width:520px;height:520px;top:-220px;right:-140px;background:radial-gradient(circle, rgba(29,78,216,0.18), transparent 70%);}
  .blob-2{width:420px;height:420px;bottom:-200px;left:-120px;background:radial-gradient(circle, rgba(59,130,246,0.14), transparent 70%);animation-delay:-8s;}
  @keyframes drift{
    from{transform:translate(0,0) scale(1);}
    to{transform:translate(30px,-24px) scale(1.08);}
  }
  @media (prefers-reduced-motion: reduce){.blob{animation:none;}}
  .hero-grid{
    display:grid;grid-template-columns:1.05fr 0.95fr;gap:64px;align-items:center;
  }
  @media (max-width:900px){.hero-grid{grid-template-columns:1fr;gap:56px;}}
  .eyebrow{
    display:inline-flex;align-items:center;gap:10px;
    font-family:'IBM Plex Mono',monospace;
    font-size:12.5px;letter-spacing:0.08em;text-transform:uppercase;
    color:var(--blue);
    margin-bottom:22px;
  }
  .eyebrow::before{content:"";width:22px;height:1px;background:var(--blue);}
  .hero h1{
    font-size:clamp(2.6rem,5.6vw,4.4rem);
    line-height:1.02;
    letter-spacing:-0.02em;
    color:var(--ink);
    margin-bottom:26px;
  }
  .hero h1 em{
    font-style:normal;
    background:var(--grad-blue);
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
  }
  .hero p.lead{
    font-size:17px;color:var(--ink-soft);
    max-width:46ch;margin-bottom:36px;
  }
  .hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:44px;}
  .hero-stats{
    display:flex;gap:36px;flex-wrap:wrap;
    padding-top:28px;border-top:1px solid var(--line);
  }
  .stat .num{font-family:'Space Grotesk',sans-serif;font-size:26px;font-weight:600;color:var(--ink);}
  .stat .lbl{font-size:12.5px;color:var(--ink-soft);margin-top:2px;}

  /* hero visual: scene board */
  .scene{
    position:relative;
    aspect-ratio:4/5;
    background:
      linear-gradient(var(--line) 1px, transparent 1px) 0 0/28px 28px,
      linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0/28px 28px,
      var(--offwhite);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
    border:1px solid var(--line);
    border-radius:24px;
    overflow:hidden;
    box-shadow:0 40px 90px -35px rgba(16,24,60,0.35);
    transform:rotate(0.4deg);
  }
  .scene::before{
    content:"";position:absolute;inset:0;
    background:
      radial-gradient(circle at 30% 20%, rgba(29,78,216,0.14), transparent 55%),
      radial-gradient(circle at 80% 85%, rgba(59,130,246,0.12), transparent 55%);
  }
  .scene-marker{
    position:absolute;
    display:flex;flex-direction:column;gap:6px;
    font-family:'IBM Plex Mono',monospace;
  }
  .scene-marker .tag{margin-bottom:2px;}
  .scene-marker .cap{font-size:11px;color:var(--ink-soft);max-width:130px;}
  .m1{top:10%;left:10%;}
  .m2{top:34%;right:8%;}
  .m3{bottom:26%;left:16%;}
  .m4{bottom:8%;right:16%;}
  .scene-caption{
    position:absolute;bottom:18px;left:18px;right:18px;
    font-family:'IBM Plex Mono',monospace;font-size:11px;
    color:var(--ink-soft);
    border-top:1px solid var(--line);padding-top:10px;
  }

  /* ---------- Section shell ---------- */
  section{padding:104px 0;}
  .section-head{
    display:flex;flex-direction:column;
    gap:14px;margin-bottom:56px;
  }
  .section-head .eyebrow{margin-bottom:0;}
  .section-head h2{font-size:clamp(1.7rem,3vw,2.3rem);max-width:36ch;color:var(--ink);}
  .section-head p{color:var(--ink-soft);max-width:52ch;font-size:15px;}

  /* ---------- Services ---------- */
  .services{background:var(--white);color:var(--ink);}
  .svc-grid{
    display:grid;
    grid-template-columns:1.3fr 1fr 1fr;
    grid-auto-rows:minmax(150px,auto);
    gap:16px;
  }
  @media (max-width:760px){.svc-grid{grid-template-columns:1fr;}}
  .svc-a{grid-column:1/2;grid-row:1/3;}
  .svc-b{grid-column:2/3;grid-row:1/2;}
  .svc-c{grid-column:3/4;grid-row:1/2;}
  .svc-d{grid-column:2/4;grid-row:2/3;}
  @media (max-width:760px){.svc-a,.svc-b,.svc-c,.svc-d{grid-column:auto;grid-row:auto;}}
  .svc{
    background:var(--white);padding:36px 32px;
    display:flex;flex-direction:column;gap:14px;
    border:1px solid var(--line);border-radius:20px;
    transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  }
  .svc:hover{
    transform:translateY(-4px);
    box-shadow:0 24px 46px -24px rgba(16,24,60,0.25);
    border-color:rgba(29,78,216,0.3);
  }
  .svc-a{justify-content:center;background:linear-gradient(160deg, var(--white), var(--tint));}
  .svc-a h3{font-size:26px;}
  .svc-a p{font-size:15px;max-width:32ch;}
  .svc-d{flex-direction:row;align-items:center;gap:28px;}
  .svc-d .svc-top{flex-shrink:0;}
  .svc-top{display:flex;align-items:center;gap:14px;}
  .svc h3{font-size:20px;color:var(--ink);}
  .svc p{font-size:14.5px;color:var(--ink-soft);}
  .svc-scope{
    margin-top:auto;padding-top:14px;border-top:1px solid var(--line);
    display:flex;flex-wrap:wrap;gap:8px;
  }
  .chip{
    font-family:'IBM Plex Mono',monospace;font-size:11.5px;
    padding:5px 10px;border:1px solid var(--line);color:var(--ink-soft);
    background:var(--tint);
    border-radius:20px;
  }

  /* ---------- Methodology (chain of custody) — zigzag ---------- */
  .method{background:var(--offwhite);}
  .chain{position:relative;margin-top:20px;}
  .chain::before{
    content:"";position:absolute;top:0;bottom:0;left:50%;
    width:1px;background:var(--line);transform:translateX(-50%);
  }
  .step{
    position:relative;display:grid;grid-template-columns:1fr 56px 1fr;align-items:start;
    padding-bottom:52px;
  }
  .step:last-child{padding-bottom:0;}
  .step .tag{position:relative;z-index:2;}
  .step-marker{grid-column:2;display:flex;justify-content:center;}
  .step-card{grid-column:3;padding-left:32px;}
  .step--l .step-card{grid-column:1;grid-row:1;padding-left:0;padding-right:32px;}
  .step h3{font-size:19px;margin-bottom:8px;color:var(--ink);}
  .step p{font-size:14.5px;color:var(--ink-soft);}

  @media (max-width:760px){
    .chain::before{left:23px;transform:none;}
    .step{grid-template-columns:46px 1fr;}
    .step-marker{grid-column:1;justify-content:flex-start;}
    .step-card,.step--l .step-card{grid-column:2;grid-row:auto;padding-left:22px;padding-right:0;}
  }

  /* ---------- Credibility band ---------- */
  .band{
    background:var(--white);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
    padding:64px 0;
  }
  .band-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
  @media (max-width:760px){.band-grid{grid-template-columns:repeat(2,1fr);}}
  .band-item{background:var(--tint);padding:28px 30px;border-radius:16px;border:1px solid var(--line);}
  .band-item .num{
    font-family:'Space Grotesk',sans-serif;font-size:30px;font-weight:600;
    background:var(--grad-blue);-webkit-background-clip:text;background-clip:text;color:transparent;
  }
  .band-item .lbl{font-size:13px;color:var(--ink-soft);margin-top:6px;}

  /* ---------- Clients ---------- */
  .clients{background:var(--white);color:var(--ink);}
  .client-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
  @media (max-width:760px){.client-grid{grid-template-columns:repeat(2,1fr);}}
  .client-card{
    border:1px solid var(--line);padding:26px 22px;border-radius:16px;
    display:flex;flex-direction:column;gap:10px;
    transition:transform .2s ease, border-color .2s ease;
  }
  .client-card:hover{transform:translateY(-3px);border-color:rgba(29,78,216,0.35);}
  .client-card .mono{font-size:12px;color:var(--blue);font-weight:600;}
  .client-card h3{font-size:16px;color:var(--ink);}
  .client-card p{font-size:13.5px;color:var(--ink-soft);}

  /* ---------- Quote ---------- */
  .quote{padding:100px 0;background:var(--tint);}
  .quote blockquote{
    font-family:'Space Grotesk',sans-serif;
    font-size:clamp(1.4rem,2.6vw,2rem);
    font-weight:500;line-height:1.35;max-width:26ch;color:var(--ink);
  }
  .quote cite{
    display:block;margin-top:28px;font-style:normal;
    font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--ink-soft);
  }

  /* ---------- Contact ---------- */
  .contact{background:var(--white);color:var(--ink);border-top:1px solid var(--line);}
  .contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;}
  @media (max-width:860px){.contact-grid{grid-template-columns:1fr;gap:48px;}}
  .contact h2{font-size:clamp(1.7rem,3vw,2.2rem);margin-bottom:18px;max-width:16ch;color:var(--ink);}
  .contact-grid--solo{
    grid-template-columns:1fr;
    max-width:640px;
    margin:0 auto;
  }
  .contact p.lead{color:var(--ink-soft);max-width:42ch;margin-bottom:30px;font-size:15px;}
  .info-row{
    display:flex;gap:16px;padding:16px 0;border-top:1px solid var(--line);
  }
  .info-row:last-child{border-bottom:1px solid var(--line);}
  .info-row .k{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--blue);min-width:110px;text-transform:uppercase;letter-spacing:0.06em;padding-top:2px;}
  .info-row .v{font-size:15px;}
  form{display:flex;flex-direction:column;gap:16px;}
  .field{display:flex;flex-direction:column;gap:8px;}
  .field label{font-family:'IBM Plex Mono',monospace;font-size:11.5px;text-transform:uppercase;letter-spacing:0.06em;color:var(--ink-soft);}
  .field input,.field select,.field textarea{
    background:var(--white);border:1px solid var(--line);border-radius:10px;
    padding:13px 14px;font-family:'IBM Plex Sans',sans-serif;font-size:14.5px;color:var(--ink);
  }
  .field input:focus,.field select:focus,.field textarea:focus{
    outline:2px solid var(--blue);outline-offset:1px;
  }
  .field textarea{resize:vertical;min-height:100px;}
  .row2{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
  @media (max-width:480px){.row2{grid-template-columns:1fr;}}

  /* ---------- Footer ---------- */
  footer{background:var(--navy);color:#EAF0FE;padding:44px 0;}
  .foot-inner{
    display:flex;justify-content:space-between;align-items:center;
    flex-wrap:wrap;gap:20px;
  }
  .foot-inner .mono{font-size:12px;color:rgba(234,240,254,0.5);}
  .foot-links{display:flex;gap:24px;font-size:13px;color:rgba(234,240,254,0.75);}
  .foot-links a:hover{color:#FFFFFF;}

  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    .btn,.svc,a{transition:none;}
  }

  /* ---------- Contact Form 7 ---------- */
  .cf7-wrap .wpcf7-form{display:flex;flex-direction:column;gap:16px;}
  .cf7-wrap .wpcf7-form p{margin:0;}
  .cf7-wrap .wpcf7-form label{
    display:flex;flex-direction:column;gap:8px;
    font-family:'IBM Plex Mono',monospace;font-size:11.5px;
    text-transform:uppercase;letter-spacing:0.06em;color:var(--ink-soft);
  }
  .cf7-wrap .wpcf7-form-control{
    background:var(--white);border:1px solid var(--line);border-radius:10px;
    padding:13px 14px;font-family:'IBM Plex Sans',sans-serif;font-size:14.5px;color:var(--ink);
    width:100%;
  }
  .cf7-wrap textarea.wpcf7-form-control{min-height:100px;resize:vertical;}
  .cf7-wrap .wpcf7-form-control:focus{outline:2px solid var(--blue);outline-offset:1px;}
  .cf7-wrap input[type="submit"].wpcf7-form-control{
    width:auto;align-self:flex-start;
    background:var(--grad-blue);color:#FFFFFF;border:none;cursor:pointer;
    padding:13px 24px;font-weight:600;font-size:14px;border-radius:999px;
    box-shadow:0 6px 20px -4px rgba(29,78,216,0.4);
    transition:transform .18s ease, box-shadow .18s ease;
  }
  .cf7-wrap input[type="submit"].wpcf7-form-control:hover{
    transform:translateY(-2px);box-shadow:0 10px 26px -4px rgba(29,78,216,0.5);
  }
  .cf7-wrap .wpcf7-spinner{margin-left:12px;}
  .cf7-wrap .wpcf7-not-valid-tip{
    font-family:'IBM Plex Mono',monospace;font-size:12px;color:#DC2626;margin-top:6px;
  }
  .cf7-wrap .wpcf7-response-output{
    border-radius:10px;margin:0;font-size:14px;
  }

  /* ---------- Inner page hero ---------- */
  .page-hero{
    padding:150px 0 64px;
    background:
      radial-gradient(500px 320px at 90% -10%, rgba(29,78,216,0.10), transparent 60%),
      var(--offwhite);
  }
  .page-hero h1{
    font-size:clamp(2.1rem,4vw,3.1rem);
    line-height:1.05;color:var(--ink);margin-bottom:16px;
  }
  .page-hero p.lead{color:var(--ink-soft);font-size:16px;max-width:60ch;}
  .page-hero--light{
    background:var(--offwhite);
  }

  .page-extra{margin-top:56px;padding-top:40px;border-top:1px solid var(--line);max-width:70ch;}
  .page-extra p{color:var(--ink-soft);margin-bottom:16px;}

  /* ---------- Hub (portada) ---------- */
  .hub{background:var(--white);color:var(--ink);}
  .hub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
  @media (max-width:860px){.hub-grid{grid-template-columns:repeat(2,1fr);}}
  @media (max-width:560px){.hub-grid{grid-template-columns:1fr;}}
  .hub-card{
    position:relative;
    display:flex;flex-direction:column;gap:12px;
    padding:32px 28px;border:1px solid var(--line);border-radius:18px;
    background:var(--white);color:var(--ink);
    transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  }
  .hub-card:hover{
    transform:translateY(-4px);
    box-shadow:0 22px 44px -22px rgba(16,24,60,0.22);
    border-color:rgba(29,78,216,0.3);
  }
  .hub-card h3{font-size:19px;}
  .hub-card p{font-size:14px;color:var(--ink-soft);}
  .hub-arrow{
    position:absolute;top:28px;right:26px;
    font-size:18px;color:var(--blue);
    transition:transform .2s ease;
  }
  .hub-card:hover .hub-arrow{transform:translate(3px,-3px);}

  /* ---------- Galería ---------- */
  .gallery-section{background:var(--white);color:var(--ink);padding-top:64px;}
  .vayper-gallery-content{max-width:1180px;margin:0 auto;}
  .vayper-gallery-content .wp-block-gallery,
  .vayper-gallery-content .gallery{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;
  }
  .vayper-gallery-content figure,
  .vayper-gallery-content .gallery-item{margin:0;}
  .vayper-gallery-content img{
    width:100%;height:220px;object-fit:cover;border-radius:14px;
    cursor:zoom-in;transition:transform .3s ease, filter .3s ease;
    display:block;
  }
  .vayper-gallery-content img:hover{transform:scale(1.02);filter:brightness(0.96);}
  .vayper-gallery-content figcaption{
    font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink-soft);margin-top:8px;
  }
  .vayper-lightbox{
    position:fixed;inset:0;z-index:200;
    background:rgba(10,16,32,0.92);
    display:flex;align-items:center;justify-content:center;
    padding:40px;
  }
  .vayper-lightbox img{max-width:100%;max-height:100%;border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,0.5);}
  .vayper-lightbox-close{
    position:absolute;top:24px;right:28px;
    background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.25);
    color:#FFFFFF;width:40px;height:40px;border-radius:50%;
    font-size:22px;line-height:1;cursor:pointer;
  }

  /* ---------- Legal content ---------- */
  .legal-content{background:var(--white);color:var(--ink);}
  .legal-content .entry-content{max-width:72ch;font-size:15px;line-height:1.75;color:var(--ink-soft);}
  .legal-content .entry-content h2{color:var(--ink);margin:36px 0 12px;font-size:20px;}
  .legal-content .entry-content p{margin-bottom:16px;}
  .legal-content .entry-content ul{margin:0 0 16px 20px;}

  /* El límite de 72ch es para texto legal en prosa. Si una página todavía
     no se ha abierto/guardado con Elementor, su contenido (aunque sea una
     de nuestras secciones con maquetado propio: servicios, galería,
     contacto...) pasa por este mismo envoltorio y se queda encogido y
     descentrado respecto a como se ve en la portada. Anulamos el límite
     cuando el contenido no es prosa, sino una de nuestras secciones. */
  .legal-content .entry-content:has(.hero),
  .legal-content .entry-content:has(.services),
  .legal-content .entry-content:has(.method),
  .legal-content .entry-content:has(.clients),
  .legal-content .entry-content:has(.contact),
  .legal-content .entry-content:has(.gallery-section),
  .legal-content .entry-content:has(.hub){
    max-width:none;
  }

  /* ---------- Cookie banner ---------- */
  .vy-notice-bar{
    position:fixed !important;left:20px !important;right:20px !important;bottom:20px !important;z-index:150 !important;
    max-width:640px !important;margin:0 auto !important;
    background:var(--navy);
    border:1px solid var(--line-navy);
    border-radius:18px !important;
    padding:22px 24px;
    box-shadow:0 30px 60px -20px rgba(0,0,0,0.45);
    display:flex;flex-direction:column;gap:14px;
  }
  .vy-notice-bar p{font-size:13.5px;color:rgba(234,240,254,0.85);line-height:1.55;}
  .vy-notice-bar p a{color:#7DB6FF;text-decoration:underline;}
  .vy-notice-actions{display:flex;gap:10px;}
  .vy-notice-bar .btn--ghost{background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.2);color:#FFFFFF;}
  .vy-notice-bar .btn--ghost:hover{background:rgba(255,255,255,0.14);}
  @media (max-width:480px){.vy-notice-bar{left:12px;right:12px;bottom:12px;padding:18px;}}

  /* ---------- Compatibilidad con Elementor ---------- */
  /* Elementor envuelve el contenido importado en su propia Sección, con
     ancho limitado y su propio padding. Esto anula ese contenedor SOLO
     cuando envuelve a una de nuestras secciones (identificadas por su
     clase), para no afectar a secciones nuevas que añadas tú mismo con
     Elementor, que deben seguir comportándose con normalidad. */
  .elementor-section:has(.hero),
  .elementor-section:has(.services),
  .elementor-section:has(.method),
  .elementor-section:has(.clients),
  .elementor-section:has(.quote),
  .elementor-section:has(.contact),
  .elementor-section:has(.band),
  .elementor-section:has(.page-hero),
  .elementor-section:has(.legal-content),
  .elementor-section:has(.gallery-section),
  .elementor-section:has(.hub){
    padding-top:0 !important;
    padding-bottom:0 !important;
    margin:0 !important;
  }
  .elementor-section.elementor-section-boxed:has(.hero) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.services) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.method) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.clients) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.quote) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.contact) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.band) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.page-hero) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.legal-content) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.gallery-section) > .elementor-container,
  .elementor-section.elementor-section-boxed:has(.hub) > .elementor-container{
    max-width:none !important;
    width:100% !important;
    padding-left:0 !important;
    padding-right:0 !important;
  }
  .elementor-widget-wrap:has(> .elementor-element > .elementor-widget-container > .hero),
  .elementor-widget-text-editor:has(.hero) .elementor-widget-container,
  .elementor-widget-text-editor:has(.services) .elementor-widget-container,
  .elementor-widget-text-editor:has(.method) .elementor-widget-container,
  .elementor-widget-text-editor:has(.clients) .elementor-widget-container,
  .elementor-widget-text-editor:has(.quote) .elementor-widget-container,
  .elementor-widget-text-editor:has(.contact) .elementor-widget-container,
  .elementor-widget-text-editor:has(.page-hero) .elementor-widget-container,
  .elementor-widget-text-editor:has(.legal-content) .elementor-widget-container,
  .elementor-widget-text-editor:has(.gallery-section) .elementor-widget-container,
  .elementor-widget-text-editor:has(.hub) .elementor-widget-container{
    padding:0 !important;
    margin:0 !important;
  }

  /* Elementor "Contenedor" (motor moderno, por defecto desde Elementor 3.6+):
     usa .e-con en vez de .elementor-section/.elementor-container. Sin esta
     regla equivalente, el ancho y padding por defecto de Elementor se
     quedan puestos y descuadran el maquetado (contenido estrecho,
     descentrado o con zigzag roto) en cualquier página/sección editada
     con el Contenedor en vez de con la Sección clásica. */
  .e-con:has(.hero),
  .e-con:has(.services),
  .e-con:has(.method),
  .e-con:has(.clients),
  .e-con:has(.quote),
  .e-con:has(.contact),
  .e-con:has(.band),
  .e-con:has(.page-hero),
  .e-con:has(.legal-content),
  .e-con:has(.gallery-section),
  .e-con:has(.hub){
    max-width:none !important;
    width:100% !important;
    padding:0 !important;
    margin:0 !important;
  }
