:root{--navy:#09213d;--navy-deep:#061426;--blue:#155b97;--gold:#eab449;--ink:#172534;--muted:#556473;--paper:#fff;--soft:#f2f6f9;--line:#d9e2e8;--radius:18px;--shadow:0 10px 28px rgba(8,31,55,.09)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,Arial,sans-serif;line-height:1.6;font-size:16px}img{max-width:100%;height:auto;display:block}a{color:inherit}.container{width:min(1180px,92%);margin-inline:auto}.narrow{width:min(820px,100%)}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{background:var(--navy-deep);color:#fff;font-size:.91rem}.topbar a{color:#fff;text-decoration:none;font-weight:700}.topbar-inner{display:flex;justify-content:space-between;gap:1rem;padding:.52rem 0}.site-header{position:sticky;top:0;z-index:20;background:#fff;box-shadow:0 2px 14px rgba(8,31,55,.11)}.nav-wrap{min-height:76px;display:flex;align-items:center;gap:1.8rem}.brand{color:var(--navy);font-size:1.1rem;font-weight:850;line-height:1.1;text-decoration:none;letter-spacing:-.02em;margin-right:auto}.brand span{display:block;color:var(--blue);font-size:.77rem;letter-spacing:.02em;margin-top:3px}.main-nav{display:flex;gap:1.25rem;align-items:center}.main-nav a{font-size:.92rem;font-weight:750;text-decoration:none}.main-nav a:hover,.more:hover,.text-link:hover{color:var(--blue)}.call-header{background:var(--gold);color:#17202a;font-weight:800;border-radius:999px;padding:.68rem 1rem;text-decoration:none;font-size:.9rem}.menu-toggle,.menu-button{display:none}.hero{color:#fff;background:linear-gradient(115deg,#061426 10%,#09213de8 53%,#09213d90),url('img/cerrajero-valles-oriental-domicilio.webp') center/cover;min-height:590px;display:flex;align-items:center}.hero-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:3rem;align-items:center;padding:5.8rem 0}.hero-image{display:none}.eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;font-weight:850;color:var(--blue);margin:0 0 .7rem}.eyebrow-gold{color:#f9d27d}.hero h1,.page-hero h1{font-size:clamp(2.45rem,5.7vw,5.1rem);line-height:1.02;letter-spacing:-.045em;margin:0 0 1.25rem}.hero h1 span{color:#f9d27d;display:block}.hero-lead{font-size:clamp(1.07rem,2vw,1.28rem);max-width:730px;margin:0 0 1.65rem;color:#ecf4fa}.hero-actions,.cta-actions{display:flex;flex-wrap:wrap;gap:.75rem}.button{display:inline-block;background:var(--gold);color:#1d242b;text-decoration:none;border:2px solid var(--gold);border-radius:999px;padding:.78rem 1.18rem;font-size:.95rem;font-weight:850;text-align:center}.button:hover{background:#f5cb70;border-color:#f5cb70}.button-light{background:#fff;border-color:#fff}.button-dark{background:var(--navy);color:#fff;border-color:var(--navy)}.hero .button-dark{background:transparent;border-color:#d6e4ee;color:#fff}.hero-points{display:flex;gap:1.2rem;flex-wrap:wrap;padding:0;margin:1.8rem 0 0;list-style:none;font-weight:700;font-size:.92rem}.hero-points li:before{content:'✓';color:#f9d27d;margin-right:.42rem}.section{padding:4.8rem 0}.section-soft{background:var(--soft)}.section-navy{color:#fff;background:var(--navy)}.section-navy h2{color:#fff}.section h2,.footer h2{color:var(--navy);font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.15;letter-spacing:-.025em;margin:.05rem 0 1rem}.section-navy .notice{background:#ffffff12;border:1px solid #ffffff2b;border-radius:var(--radius);padding:1.8rem}.notice h3{margin-top:0}.notice a{color:#f9d27d;font-weight:800}.lead{font-size:1.17rem;max-width:780px;color:#3a4a59}.cards{display:grid;gap:1.2rem;margin-top:2rem}.cards-3{grid-template-columns:repeat(3,1fr)}.card,.contact-card{border:1px solid var(--line);border-radius:var(--radius);padding:1.45rem;background:#fff;box-shadow:0 3px 12px rgba(8,31,55,.04)}.card h3,.contact-card h2{color:var(--navy);font-size:1.2rem;margin:0 0 .6rem}.card p{margin:0 0 1rem;color:var(--muted)}.more,.text-link{font-weight:850;color:var(--blue);text-decoration:none}.section-action{margin-top:1.8rem}.split{display:grid;grid-template-columns:1.15fr .85fr;gap:3rem;align-items:center}.image-card{margin:0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.image-card img{width:100%;aspect-ratio:1.25;object-fit:cover}.zones{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin-top:1.5rem}.zones a{background:#fff;border:1px solid var(--line);border-radius:12px;padding:.85rem .9rem;text-decoration:none;font-size:.93rem;font-weight:750}.zones a:hover{border-color:var(--blue);color:var(--blue)}.page-hero{background:linear-gradient(135deg,#edf4f8,#fff);border-bottom:1px solid var(--line);padding:4.9rem 0 4.3rem}.page-hero h1{color:var(--navy);font-size:clamp(2.2rem,5vw,4.35rem)}.breadcrumbs{padding:1rem 0;font-size:.86rem;color:var(--muted)}.breadcrumbs a{color:inherit;text-decoration:none}.breadcrumbs a:hover{text-decoration:underline}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:3rem}.link-list{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem 2rem;padding-left:1.2rem}.link-list a{color:var(--blue);font-weight:700}.nearby-title{margin-top:3rem!important}.nearby-copy{font-size:1.05rem}.faq details{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem;margin:.7rem 0}.faq summary{color:var(--navy);font-weight:850;cursor:pointer}.faq details p{margin:.8rem 0 0;color:var(--muted)}.cta{display:flex;gap:2rem;align-items:center;justify-content:space-between;padding:2rem 2.2rem;border-radius:var(--radius);background:var(--navy);color:#fff}.cta h2{color:#fff;margin-bottom:.5rem}.cta p{margin:0}.map-section p{max-width:800px}.map-frame{background:var(--soft);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;min-height:380px;margin-top:1.5rem}.map-frame iframe{border:0;width:100%;height:380px}.footer{background:var(--navy-deep);color:#d6e1ea;padding:3.7rem 0 5.4rem}.footer-grid{display:grid;grid-template-columns:1.3fr .8fr .9fr;gap:3rem}.footer h2{color:#fff;font-size:1.05rem}.footer p{font-size:.93rem;margin:.4rem 0}.footer a{color:#fff}.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem}.muted{color:var(--muted)}.mobile-actions{display:none}@media(max-width:960px){.main-nav{gap:.75rem}.call-header{display:none}.cards-3,.zones{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){body{padding-bottom:55px}.topbar-inner{font-size:.78rem}.nav-wrap{min-height:65px;gap:.8rem}.brand{font-size:1rem}.menu-button{display:flex;width:42px;height:42px;align-items:center;justify-content:center;flex-direction:column;gap:4px;cursor:pointer}.menu-button span{width:22px;height:2px;background:var(--navy)}.main-nav{display:none;position:absolute;left:0;right:0;top:65px;padding:.65rem 4%;background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);box-shadow:0 10px 20px rgba(8,31,55,.1);flex-direction:column;align-items:stretch;gap:0}.main-nav a{padding:.82rem 0;border-bottom:1px solid var(--line)}.main-nav a:last-child{border-bottom:0}.menu-toggle:checked~.main-nav{display:flex}.hero{min-height:0;background:linear-gradient(135deg,#061426,#0b3159)}.hero-grid{grid-template-columns:1fr;padding:4rem 0}.hero-image{display:block;margin:0;border-radius:var(--radius);overflow:hidden}.hero-image img{aspect-ratio:1.3;object-fit:cover}.hero h1{font-size:clamp(2.35rem,11vw,3.7rem)}.section{padding:3.5rem 0}.page-hero{padding:3.4rem 0}.split,.two-columns,.footer-grid,.contact-grid{grid-template-columns:1fr;gap:1.7rem}.cards-3,.zones,.link-list{grid-template-columns:1fr}.cta{padding:1.6rem;align-items:flex-start;flex-direction:column}.cta-actions{width:100%}.cta-actions .button{width:100%}.mobile-actions{position:fixed;display:grid;grid-template-columns:1fr 1fr;bottom:0;left:0;right:0;z-index:40;background:var(--navy-deep);box-shadow:0 -4px 18px rgba(0,0,0,.24)}.mobile-actions a{color:#fff;text-align:center;text-decoration:none;font-weight:850;padding:.82rem}.mobile-actions a:first-child{background:var(--gold);color:#1d242b}.footer{padding-bottom:2.4rem}.map-frame,.map-frame iframe{min-height:300px;height:300px}}
/* Fase 2: mejoras de carga sin alterar la identidad visual */
img[loading="lazy"]{content-visibility:auto} .image-card img,.hero-image img{width:100%;height:auto} @media(min-width:721px){.section .cards{content-visibility:auto;contain-intrinsic-size:auto 680px}} @media(max-width:380px){.topbar-inner{gap:.35rem}.button{padding:.72rem .9rem;font-size:.9rem}.hero-actions .button{width:100%}}

@media (max-width:720px){.page-hero .hero-actions{align-items:stretch}.page-hero .hero-actions .button{flex:1;min-width:0}.breadcrumbs{overflow-wrap:anywhere}}


/* AIYellow: directorios y enlazado local */
.cards-3{grid-template-columns:repeat(2,minmax(0,1fr))}
.link-cloud{display:flex;flex-wrap:wrap;gap:.7rem;margin:1rem 0 2rem}
.link-cloud a{display:inline-flex;align-items:center;min-height:42px;padding:.58rem .82rem;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--navy);font-weight:750;text-decoration:none;box-shadow:0 4px 12px rgba(8,31,55,.05)}
.link-cloud a:hover{border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}
.link-cloud-large a{border-radius:12px}
.local-home-link{padding:1rem 1.15rem;border-left:4px solid var(--gold);background:#fff;border-radius:10px}
@media(max-width:760px){.cards-3{grid-template-columns:1fr}.link-cloud a{width:100%;justify-content:center;text-align:center}}

.cards-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.link-cloud{display:flex;flex-wrap:wrap;gap:.7rem}
.link-cloud a{padding:.65rem .85rem;background:#fff;border:1px solid var(--line);border-radius:999px;text-decoration:none;font-weight:700}
.footer-grid nav,.footer-grid>a{display:block}
@media(max-width:760px){.cards-2{grid-template-columns:1fr}.link-cloud a{width:100%;text-align:center}}

/* Granollers visual compatibility */
.footer-grid>div:nth-child(2)>a{display:block;margin:.45rem 0;text-decoration:none}.page-hero .hero-actions{margin-top:1.25rem}.page-hero .button-light{border-color:var(--navy);color:var(--navy)}.section-navy .button-light{color:var(--navy)}


/* AIYellow Framework v2: autoridad, NAP, directorios e interlinking */
.gbp-description{margin:1.2rem 0;padding:1.25rem 1.4rem;border-left:5px solid var(--gold);background:#fff;border-radius:12px;box-shadow:0 8px 24px rgba(8,31,55,.06);font-style:normal;line-height:1.75}
.nap-card{display:block;margin:1.2rem 0;padding:1.2rem 1.35rem;background:var(--navy);color:#fff;border-radius:14px;font-style:normal;line-height:1.8}
.nap-card a{color:#fff;text-decoration:none}
.nap-card .nap-name{font-size:1.2rem;font-weight:900;color:var(--gold)}
.home-keyword-links{display:flex;flex-wrap:wrap;gap:.55rem;align-items:center}
.cards-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.link-cloud{display:flex;flex-wrap:wrap;gap:.65rem;margin:1rem 0}
.link-cloud a{display:inline-flex;align-items:center;min-height:42px;padding:.62rem .85rem;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--navy);font-weight:750;text-decoration:none;box-shadow:0 4px 14px rgba(8,31,55,.05)}
.link-cloud a:hover{border-color:var(--blue);color:var(--blue);transform:translateY(-1px)}
.link-cloud-large a{border-radius:12px}
@media(max-width:760px){.cards-2{grid-template-columns:1fr}.link-cloud a{width:100%;justify-content:center;text-align:center}.home-keyword-links{display:block}.home-keyword-links a{display:inline-block;margin:.25rem 0}}


/* AIYellow v2.1: mapas oficiales y frases clave visibles */
.map-frame{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:16px;background:#e8eef4;box-shadow:0 10px 30px rgba(8,31,55,.08)}
.map-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.map-general-compact{max-width:920px}
.map-frame-small{max-width:760px;aspect-ratio:16/7;margin-inline:auto}
.keyword-summary{padding-top:1.25rem;padding-bottom:1.25rem}
.keyword-summary p{font-size:1.05rem;line-height:1.8}
.keyword-summary strong{color:var(--navy);font-weight:900}
#mapa-oficial-gbp-aiyellow strong a{font-weight:900}
@media(max-width:760px){
  .map-frame,.map-frame-small{aspect-ratio:4/3;border-radius:12px}
  .keyword-summary p{font-size:1rem}
}

/* AIYellow Topical Authority and editorial additions */
.hero-compact{padding:3.5rem 0}.article-narrow{max-width:850px}.article-content h2{margin-top:2rem}.article-content h3{margin-top:1.4rem}.callout{padding:1.25rem;border:1px solid rgba(15,35,64,.18);border-radius:16px;background:#f7f9fc;margin:2rem 0}.official-links-aiyellow a,.article-content a{font-weight:700}.cards a{text-decoration:none;color:inherit}.cards a:hover{text-decoration:underline}.map-frame iframe{width:100%;max-width:100%;border-radius:16px}.main-nav{gap:.9rem}


/* AIYellow local ecosystem */
.aiyellow-local-ecosystem p{max-width:1050px;line-height:1.75}
.aiyellow-local-ecosystem a{font-weight:600;text-underline-offset:3px}
.aiyellow-local-ecosystem strong{font-weight:750}

/* AIYellow: identidad visual oficial y mapa GBP compacto */
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand picture{display:flex;flex:0 0 auto}.brand img{display:block;width:64px;height:64px;object-fit:contain}.brand-copy{display:flex;flex-direction:column;line-height:1.08}.brand-copy strong{font-size:1rem}.brand-copy small{font-size:.82rem;font-weight:700}.footer-logo{display:block;width:112px;height:112px;object-fit:contain;margin:0 0 14px}.map-official-aiyellow .map-frame{max-width:720px;margin:22px auto 0;overflow:hidden;border-radius:18px}.map-official-aiyellow .map-frame iframe{display:block;width:100%!important;height:240px!important;border:0}.map-official-aiyellow{padding-top:42px;padding-bottom:42px}@media(max-width:700px){.brand img{width:48px;height:48px}.brand-copy strong{font-size:.9rem}.brand-copy small{font-size:.72rem}.footer-logo{width:96px;height:96px}.map-official-aiyellow .map-frame iframe{height:210px!important}}

/* AIYellow final incremental corrections: official logo, microformats and compact GBP footer map */
.site-header .brand img{object-fit:contain;display:block;max-width:78px;height:auto}
.footer-logo{object-fit:contain;display:block;max-width:132px;height:auto;margin-bottom:12px}
.map-official-aiyellow .map-frame{max-width:720px;margin-inline:auto;overflow:hidden;border-radius:14px}
.map-official-aiyellow iframe{display:block;width:100%;height:240px!important;border:0}
.microformat-location,.microformat-site-link{display:block;margin-top:.5rem}
@media (max-width:700px){.map-official-aiyellow iframe{height:210px!important}}

/* Galería de trabajos reales - Granollers */
.real-work-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:24px}.real-work-gallery figure{margin:0;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(9,31,55,.10)}.real-work-gallery img{display:block;width:100%;height:260px;object-fit:cover}.real-work-gallery figcaption{padding:12px 14px;font-weight:700;color:#0b2747}@media(max-width:900px){.real-work-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.real-work-gallery{grid-template-columns:1fr}.real-work-gallery img{height:auto;aspect-ratio:4/3}}

/* AIYellow v3: enlazado territorial completo */
.municipality-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.7rem 1rem;list-style:none;margin:1.5rem 0;padding:0}.municipality-grid li{margin:0}.municipality-grid a{display:block;padding:.72rem .85rem;border:1px solid rgba(255,255,255,.14);border-radius:.55rem;text-decoration:none}.municipality-grid a:hover,.municipality-grid a:focus-visible{text-decoration:underline}.entity-links{margin-top:1rem}

/* AIYellow v3: accesibilidad y navegación */
.skip-link{position:fixed;left:1rem;top:-5rem;z-index:9999;background:#fff;color:#111;padding:.75rem 1rem;border-radius:.5rem;box-shadow:0 4px 18px rgba(0,0,0,.2)}
.skip-link:focus{top:1rem}
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:3px solid currentColor;outline-offset:3px}
.menu-button{border:0;background:transparent;cursor:pointer}
@media (max-width:900px){.main-nav[hidden]{display:none!important}.main-nav.is-open{display:flex!important}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
