:root { --paper:#f3f1ec; --ink:#0d0d0d; --cyan:#00a7d9; --magenta:#ec007f; --yellow:#ffd800; }
html { scroll-behavior:smooth; background:var(--paper); }
body.home-page { min-height:100%; margin:0; color:var(--ink); background:var(--paper); font-family:Arial,Helvetica,sans-serif; overflow-x:hidden; }
body.home-page.is-loading { overflow:hidden; }
.home-page * { box-sizing:border-box; }
.home-page a { color:inherit; text-decoration:none; }
.home-page figure,.home-page p,.home-page h1,.home-page h2,.home-page h3,.home-page ul { margin:0; }
.home-page main { min-height:0; overflow:hidden; }

.loader { position:fixed; inset:0; z-index:300; display:grid; color:#fff; background:var(--ink); overflow:hidden; place-items:center; }
.loader__panel { position:absolute; inset:0 50% 0 0; background:var(--cyan); }
.loader__panel--magenta { inset:0 0 0 50%; background:var(--magenta); }
.loader__word { position:relative; z-index:2; display:flex; overflow:hidden; font-size:clamp(2.2rem,7.2vw,7rem); font-weight:900; letter-spacing:-.08em; }
.loader__word span { display:block; }
.loader__word .loader__space { width:.3em; flex:0 0 .3em; }
.loader__number { position:absolute; z-index:2; right:2vw; bottom:2vw; font-size:.72rem; font-weight:700; }

.hero { position:relative; isolation:isolate; min-height:1450px; padding:32px 2.1vw 0; color:#fff; background:#171717; overflow:hidden; }
.hero-video { position:absolute; z-index:0; top:-96px; left:0; width:100%; height:calc(100% + 96px); object-fit:cover; object-position:center center; background:#171717; }
.hero-video-shade { position:absolute; z-index:1; inset:0; background:linear-gradient(180deg,rgba(4,6,8,.55) 0%,rgba(4,6,8,.28) 38%,rgba(4,6,8,.68) 100%); pointer-events:none; }
.shape { position:absolute; z-index:2; border-radius:50%; transform-origin:center; mix-blend-mode:screen; }
.shape--cyan { width:68vw; aspect-ratio:1; top:-34vw; left:16vw; background:rgba(0,167,217,.26); }
.shape--magenta { width:39vw; aspect-ratio:1; top:19vw; right:7vw; background:rgba(236,0,127,.62); }
.shape--yellow { width:19vw; aspect-ratio:1; top:10vw; left:58vw; background:rgba(255,216,0,.72); }
.hero__title { position:relative; z-index:3; font-size:clamp(5.2rem,12.7vw,13.4rem); line-height:.78; font-weight:400; letter-spacing:-.075em; text-shadow:0 5px 35px rgba(0,0,0,.25); }
.hero__line { display:block; overflow:hidden; padding:.1em 0; }
.hero__line > span { display:block; }
.hero__line--right { padding-left:31vw; border-top:1px solid rgba(255,255,255,.75); }
html[lang="ca"] .hero__title { font-size:clamp(4.9rem,10.2vw,11.2rem); line-height:.82; }
html[lang="ca"] .hero__line--right { padding-left:24vw; }
.hero__meta { position:absolute; z-index:4; top:200px; font-size:.66rem; line-height:1.2; text-transform:uppercase; font-weight:800; text-shadow:0 2px 12px #000; }
.hero__meta--right { right:2.1vw; text-align:right; }
.hero__meta--left { left:2.1vw; top:390px; }
.hero__intro { position:relative; z-index:4; width:min(1120px,88%); margin-top:90px; font-size:clamp(1.65rem,2.75vw,3.15rem); line-height:1.08; letter-spacing:-.04em; text-shadow:0 3px 28px rgba(0,0,0,.65); }
.hero-shot { position:absolute; z-index:4; overflow:hidden; border:5px solid rgba(255,255,255,.94); background:#222; box-shadow:0 28px 80px rgba(0,0,0,.34); }
.hero-shot img,.gallery figure img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .7s cubic-bezier(.2,.8,.2,1); }
.hero-shot:hover img,.gallery figure:hover img { transform:scale(1.045); }
.hero-shot--one { width:38vw; height:28vw; left:4vw; top:970px; }
.hero-shot--two { width:24vw; height:19vw; right:4vw; top:850px; }
.hero-shot--three { width:25vw; height:20vw; right:22vw; top:1160px; }
.hero-shot--four { width:19vw; height:24vw; left:45vw; top:890px; }

.capabilities { position:relative; padding:125px max(24px,calc((100vw - 1320px)/2)) 135px; background:var(--paper); }
.split-title { display:flex; overflow:hidden; font-size:clamp(4.5rem,8.2vw,9rem); line-height:.95; font-weight:400; letter-spacing:-.065em; }
.split-title span { display:block; }
.capability-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:88px; }
.capability { position:relative; min-height:430px; padding:40px 72px 42px 66px; border:1px solid rgba(13,13,13,.28); background:rgba(255,255,255,.24); transition:color .25s ease,background .25s ease,transform .25s ease,box-shadow .25s ease; }
.capability:nth-child(1) { border-top:5px solid var(--cyan); }
.capability:nth-child(2) { border-top:5px solid var(--magenta); }
.capability:nth-child(3) { border-top:5px solid var(--yellow); }
.capability:nth-child(4) { border-top:5px solid var(--ink); }
.capability:hover,.capability:focus-visible { color:#fff; background:var(--ink); outline:none; transform:translateY(-6px); box-shadow:0 24px 55px rgba(13,13,13,.13); }
.capability small { position:absolute; top:45px; left:28px; color:var(--magenta); font-size:.68rem; font-weight:900; }
.capability h3 { margin-bottom:30px; font-size:clamp(2rem,3vw,3.5rem); line-height:1; font-weight:500; letter-spacing:-.045em; }
.capability ul { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px 24px; padding:0; list-style:none; font-size:clamp(.84rem,1vw,1rem); line-height:1.45; }
.capability li::before { content:"/ "; color:var(--cyan); font-weight:900; }
.capability p { max-width:410px; font-size:clamp(1.05rem,1.5vw,1.45rem); line-height:1.55; }
.capability__arrow { position:absolute; right:28px; bottom:26px; display:grid; width:42px; height:42px; border:1px solid currentColor; border-radius:50%; font-size:1.2rem; place-items:center; transition:transform .25s ease; }
.capability:hover .capability__arrow,.capability:focus-visible .capability__arrow { transform:rotate(45deg); }

.gallery { height:min(76vh,760px); padding:7px 0; background:var(--ink); overflow:hidden; }
.gallery__track { display:flex; gap:6px; width:max-content; height:100%; will-change:transform; animation:home-gallery-marquee 150s linear infinite; }
.gallery__group { display:flex; gap:6px; height:100%; flex:none; }
.gallery figure { position:relative; width:clamp(290px,31vw,520px); height:100%; overflow:hidden; background:#222; flex:none; }
.gallery figure:nth-child(3n+2) { width:clamp(250px,25vw,430px); }
.gallery:hover .gallery__track,.gallery:focus-within .gallery__track,.gallery.is-manual .gallery__track { animation-play-state:paused; }
@keyframes home-gallery-marquee { to { transform:translateX(calc(-50% - 3px)); } }
.hero-gallery { position:absolute; z-index:4; top:850px; right:0; left:0; height:clamp(430px,36vw,620px); padding:6px 0; border-top:5px solid var(--ink); border-bottom:5px solid var(--ink); overflow:hidden; }
.hero-gallery__viewport { height:100%; overflow-x:auto; overflow-y:hidden; scroll-behavior:smooth; scrollbar-width:none; }
.hero-gallery__viewport::-webkit-scrollbar { display:none; }
.hero-gallery figure { width:clamp(390px,31vw,640px); }
.hero-gallery figure:nth-child(3n+2) { width:clamp(360px,31vw,620px); }
.hero-gallery__button { position:absolute; z-index:6; top:50%; display:grid; width:54px; height:54px; border:1px solid rgba(255,255,255,.82); border-radius:50%; color:#fff; background:rgba(13,13,13,.62); box-shadow:0 12px 36px rgba(0,0,0,.28); font:inherit; font-size:1.65rem; line-height:1; cursor:pointer; place-items:center; backdrop-filter:blur(8px); transition:background .18s ease,transform .18s ease,border-color .18s ease; }
.hero-gallery__button:hover,.hero-gallery__button:focus-visible { background:rgba(13,13,13,.9); border-color:#fff; outline:none; transform:scale(1.06); }
.hero-gallery__button--prev { left:22px; transform:translateY(-50%); }
.hero-gallery__button--next { right:22px; transform:translateY(-50%); }
.hero-gallery__button--prev:hover,.hero-gallery__button--prev:focus-visible,.hero-gallery__button--next:hover,.hero-gallery__button--next:focus-visible { transform:translateY(-50%) scale(1.06); }

.google-reviews { display:grid; grid-template-columns:minmax(260px,.7fr) minmax(0,1.3fr); gap:clamp(50px,8vw,130px); padding:clamp(90px,10vw,150px) max(24px,calc((100vw - 1280px)/2)); border-bottom:1px solid var(--ink); background:var(--paper); }
.eyebrow { width:240px; font-size:.68rem; line-height:1.15; text-transform:uppercase; font-weight:800; }
.google-reviews__heading h2 { max-width:560px; margin-top:24px; font-size:clamp(3.7rem,7vw,7.8rem); line-height:.86; font-weight:400; letter-spacing:-.07em; }
.google-reviews__body { align-self:end; }
.google-reviews__empty { display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:start; padding:34px; border:1px solid rgba(13,13,13,.25); background:rgba(255,255,255,.38); }
.google-reviews__g { display:grid; width:62px; height:62px; border-radius:50%; color:#fff; background:linear-gradient(135deg,var(--cyan),var(--magenta),var(--yellow)); font-size:2rem; font-weight:900; place-items:center; }
.google-reviews__empty h3 { margin:0 0 12px; font-size:clamp(1.35rem,2.1vw,2.1rem); line-height:1.05; letter-spacing:-.035em; }
.google-reviews__empty p { max-width:610px; color:#535862; font-size:1rem; line-height:1.65; }
.google-reviews__link { display:inline-flex; gap:20px; align-items:center; margin-top:28px; padding-bottom:7px; border-bottom:2px solid var(--magenta); font-size:.78rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.google-reviews__summary { gap:16px; align-items:center; margin-bottom:28px; }
.google-reviews__list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.google-review-card { padding:24px; border:1px solid rgba(13,13,13,.2); background:rgba(255,255,255,.48); }
.google-review-card h3 { margin:0 0 10px; font-size:1rem; }
.google-review-card p { color:#535862; line-height:1.6; }

@media (max-width:900px) {
  .hero { min-height:1430px; padding:36px 14px 0; }
  .hero-video { top:-72px; height:calc(100% + 72px); }
  .shape--cyan { width:120vw; top:-55vw; left:0; }
  .shape--magenta { width:78vw; top:52vw; right:-22vw; }
  .shape--yellow { width:38vw; top:34vw; left:52vw; }
  .hero__title { font-size:22vw; line-height:.87; }
  html[lang="ca"] .hero__title { font-size:18vw; line-height:.9; }
  .hero__line--right { padding-left:10vw; }
  html[lang="ca"] .hero__line--right { padding-left:6vw; }
  .hero__meta { top:315px; font-size:.55rem; }
  .hero__meta--left { top:390px; }
  .hero__intro { width:92%; margin-top:140px; font-size:clamp(1.55rem,6.4vw,2.15rem); }
  .hero-shot--one { width:70vw; height:58vw; left:3vw; top:860px; }
  .hero-shot--two { width:43vw; height:38vw; right:2vw; top:1060px; }
  .hero-shot--three { width:47vw; height:39vw; right:41vw; top:1250px; }
  .hero-shot--four { width:35vw; height:44vw; left:8vw; top:1080px; }
  .hero-gallery { top:840px; height:500px; }
  .hero-gallery figure,.hero-gallery figure:nth-child(3n+2) { width:78vw; }
  .capabilities { padding:100px 20px; }
  .split-title { font-size:17vw; }
  .capability-grid { grid-template-columns:1fr; margin-top:62px; }
  .capability { min-height:0; }
  .google-reviews { grid-template-columns:1fr; gap:60px; padding:90px 24px; }
}

@media (max-width:560px) {
  .hero { min-height:1360px; }
  html[lang="ca"] .hero__title { font-size:17vw; }
  .hero__intro { width:96%; font-size:clamp(1.4rem,6.8vw,1.85rem); }
  .hero-shot { border-width:3px; }
  .hero-shot--one { width:78vw; height:62vw; left:0; top:850px; }
  .hero-shot--two { width:46vw; height:43vw; right:0; top:1050px; }
  .hero-shot--three { width:49vw; height:44vw; right:38vw; top:1210px; }
  .hero-shot--four { width:38vw; height:46vw; left:3vw; top:1055px; }
  .hero-gallery { top:835px; height:440px; }
  .capability { padding:34px 54px 36px 48px; }
  .capability small { top:39px; left:19px; }
  .capability ul { grid-template-columns:1fr; }
  .gallery { height:60vh; min-height:480px; }
  .gallery figure,.gallery figure:nth-child(3n+2) { width:78vw; }
  .google-reviews__empty { grid-template-columns:1fr; padding:25px; }
  .google-reviews__g { width:52px; height:52px; }
}

@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  .loader { display:none; }
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; }
  .gallery { overflow-x:auto; }
  .gallery__track { animation:none; }
}
/* Contenido real de las reseñas conectado mediante window.TARRACO_GOOGLE_REVIEWS */
.google-reviews__summary { display:flex; flex-wrap:wrap; }
.google-reviews__summary[hidden] { display:none; }
.google-reviews__logo,
.google-reviews__maps-logo { display:grid; width:58px; height:58px; border:1px solid rgba(13,13,13,.16); border-radius:50%; background:#fff; box-shadow:0 10px 30px rgba(13,13,13,.08); place-items:center; transition:transform 180ms ease, box-shadow 180ms ease; }
.google-reviews__logo:hover,
.google-reviews__logo:focus-visible,
.google-reviews__maps-logo:hover,
.google-reviews__maps-logo:focus-visible { transform:translateY(-2px); box-shadow:0 14px 34px rgba(13,13,13,.14); outline:none; }
.google-reviews__logo svg,
.google-reviews__maps-logo svg { display:block; width:38px; height:38px; }
.google-reviews__summary [data-review-stars],
.google-review-card__stars { color:#f4b400; letter-spacing:.08em; }
.google-review-card { display:flex; align-items:flex-start; flex-direction:column; }
.google-review-card header { display:grid; grid-template-columns:1fr auto; gap:7px 16px; align-items:center; width:100%; margin-bottom:16px; }
.google-review-card header h3 { margin:0; }
.google-review-card header time { grid-column:1 / -1; color:#777d86; font-size:.72rem; }
.google-review-card__text { margin:0; white-space:pre-line; }
.google-review-card__text.is-collapsed { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:5; }
.google-review-card__toggle { margin-top:12px; padding:0 0 4px; border:0; border-bottom:1px solid var(--magenta); color:var(--ink); background:transparent; font:inherit; font-size:.72rem; font-weight:800; cursor:pointer; }
.google-review-card > a { position:relative; z-index:2; display:inline-flex; align-items:center; align-self:flex-start; margin-top:16px; padding:10px 12px; border:1px solid rgba(0,167,217,.22); color:var(--ink); background:rgba(255,255,255,.72); font-size:.72rem; font-weight:800; text-decoration:underline; text-underline-offset:4px; cursor:pointer; }
.google-review-card__toggle:focus-visible,
.google-review-card > a:focus-visible { outline:3px solid rgba(0,167,217,.25); outline-offset:4px; }
@media (max-width:560px) { .google-reviews__list { grid-template-columns:1fr; } }
/* Carrusel horizontal de reseñas reales */
.google-reviews__carousel { min-width: 0; }
.google-reviews__list {
  display: flex;
  gap: 18px;
  overflow-x: auto;
  padding: 4px 4px 18px;
  scroll-behavior: smooth;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  touch-action: pan-x pan-y;
  cursor: grab;
}
.google-reviews__list::-webkit-scrollbar { display: none; }
.google-reviews__list.is-dragging { cursor: grabbing; scroll-behavior: auto; user-select: none; }
.google-review-card {
  flex: 0 0 clamp(310px, 37vw, 430px);
  min-height: 330px;
  padding: 28px;
  border-radius: 18px;
  scroll-snap-align: start;
  box-shadow: 0 16px 42px rgba(13, 13, 13, 0.08);
}
.google-review-card__identity { display: grid; grid-template-columns: 50px 1fr; gap: 14px; align-items: center; width: 100%; }
.google-review-card__avatar { display: grid; width: 50px; height: 50px; overflow: hidden; border-radius: 50%; color: #fff; background: linear-gradient(135deg, var(--cyan), var(--magenta)); font-size: 1.2rem; font-weight: 900; object-fit: cover; place-items: center; }
.google-review-card__identity h3 { margin: 0 0 4px; font-size: 1.02rem; }
.google-review-card__source { display: inline-flex; gap: 6px; align-items: center; color: #747b85; font-size: .72rem; }
.google-review-card__source b { color: #4285f4; font-size: .95rem; }
.google-review-card__meta { display: flex; gap: 12px; align-items: center; width: 100%; margin: 20px 0 16px; }
.google-review-card__meta time { color: #777d86; font-size: .72rem; }
.google-review-card__photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; width: 100%; margin-top: 18px; }
.google-review-card__photos img { width: 100%; height: 92px; border-radius: 8px; object-fit: cover; }
.google-reviews__controls { display: grid; grid-template-columns: 46px 1fr 46px; gap: 18px; align-items: center; margin-top: 18px; }
.google-reviews__controls[hidden] { display: none; }
.google-reviews__controls > button { display: grid; width: 46px; height: 46px; border: 1px solid var(--ink); border-radius: 50%; color: var(--ink); background: transparent; font-size: 1.25rem; cursor: pointer; place-items: center; transition: color 180ms ease, background 180ms ease, opacity 180ms ease; }
.google-reviews__controls > button:hover,
.google-reviews__controls > button:focus-visible { color: #fff; background: var(--ink); outline: none; }
.google-reviews__controls > button:disabled { opacity: .28; cursor: default; }
.google-reviews__dots { display: flex; gap: 8px; justify-content: center; }
.google-reviews__dots button { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%; background: #b8bdc3; cursor: pointer; }
.google-reviews__dots button[aria-current="true"] { width: 24px; border-radius: 999px; background: var(--magenta); }
@media (max-width: 560px) {
  .google-review-card { flex-basis: 86vw; min-height: 0; padding: 22px; }
  .google-reviews__controls { grid-template-columns: 42px 1fr 42px; gap: 12px; }
  .google-reviews__controls > button { width: 42px; height: 42px; }
}
@media (prefers-reduced-motion: reduce) {
  .google-reviews__list { scroll-behavior: auto; }
  .google-reviews__controls > button { transition: none; }
}
/* Vídeo principal ampliado sobre un lienzo blanco */
.hero { background: #ffffff; }
.hero-video {
  top: 0;
  left: 50%;
  width: 132%;
  height: 100%;
  max-width: none;
  background: #ffffff;
  object-fit: cover;
  transform: translateX(-50%) scale(1.08);
}
.hero-video-shade { background: linear-gradient(180deg, rgba(4,6,8,.42) 0%, rgba(4,6,8,.18) 38%, rgba(4,6,8,.56) 100%); }
@media (max-width: 900px) {
  .hero-video { top: 0; width: 150%; height: 100%; transform: translateX(-50%) scale(1.04); }
}
/* Encuadre del vídeo recortado proporcionado */
.hero-video {
  left: 50%;
  width: 100%;
  height: 100%;
  background: #ffffff;
  object-fit: cover;
  object-position: center center;
  transform: translateX(-50%);
}
@media (max-width: 900px) {
  .hero-video { width: 100%; height: 100%; transform: translateX(-50%); }
}

/* Acabado visual de las reseñas destacadas */
.google-reviews__summary { padding-bottom:20px; border-bottom:1px solid rgba(13,13,13,.16); }
.google-reviews__summary strong { letter-spacing:-.05em; }
.google-review-card { position:relative; border-top:4px solid var(--magenta); }
.google-review-card:nth-child(3n + 1) { border-top-color:var(--cyan); }
.google-review-card:nth-child(3n + 2) { border-top-color:var(--magenta); }
.google-review-card:nth-child(3n) { border-top-color:var(--yellow); }

/* Reseñas grandes, una por paso del carrusel */
.google-reviews { grid-template-columns:minmax(210px,.42fr) minmax(0,1.58fr); gap:clamp(36px,5vw,78px); }
.google-reviews__body { align-self:center; min-width:0; }
.google-reviews__list { gap:24px; padding:8px 6px 24px; }
.google-review-card {
  flex:0 0 calc(100% - 4px);
  min-height:430px;
  padding:clamp(32px,4vw,50px);
  border-radius:24px;
  box-shadow:0 24px 68px rgba(13,13,13,.11);
}
.google-review-card__identity { grid-template-columns:60px 1fr; gap:18px; }
.google-review-card__avatar { width:60px; height:60px; font-size:1.4rem; }
.google-review-card__identity h3 { font-size:clamp(1.15rem,1.5vw,1.4rem); }
.google-review-card__source { font-size:.78rem; }
.google-review-card__meta { margin:28px 0 22px; }
.google-review-card__stars { font-size:1.2rem; }
.google-review-card__meta time { font-size:.82rem; }
.google-review-card__text { max-width:68ch; font-size:clamp(1.08rem,1.35vw,1.3rem); line-height:1.7; }
.google-review-card > a { margin-top:auto; padding-top:28px; font-size:.78rem; }
.google-reviews__controls { grid-template-columns:54px 1fr 54px; margin-top:24px; }
.google-reviews__controls > button { width:54px; height:54px; font-size:1.45rem; }
@media (max-width:900px) { .google-reviews { grid-template-columns:1fr; gap:48px; } .google-review-card { min-height:390px; } }
@media (max-width:560px) { .google-review-card { flex-basis:88vw; min-height:370px; padding:28px 24px; border-radius:20px; } .google-review-card__text { font-size:1rem; line-height:1.62; } }

/* Composición definitiva: título separado y varias reseñas visibles */
.google-reviews {
  grid-template-columns:1fr;
  gap:clamp(38px,5vw,72px);
}
.google-reviews__heading { min-width:0; }
.google-reviews__heading h2 {
  max-width:none;
  font-size:clamp(3.8rem,7vw,7.4rem);
  line-height:.9;
}
.google-reviews__body { width:100%; min-width:0; }
.google-reviews__summary { justify-content:center; }
.google-reviews__list { gap:20px; scroll-padding-inline:6px; }
.google-review-card {
  flex:0 0 calc((100% - 40px) / 3);
  min-width:0;
  min-height:330px;
  padding:28px;
  border-radius:20px;
}
.google-review-card__identity { grid-template-columns:50px minmax(0,1fr); gap:14px; }
.google-review-card__avatar { width:50px; height:50px; font-size:1.2rem; }
.google-review-card__identity h3 { font-size:1.02rem; overflow-wrap:anywhere; }
.google-review-card__meta { flex-wrap:wrap; margin:20px 0 16px; }
.google-review-card__stars { font-size:1rem; }
.google-review-card__text { font-size:.96rem; line-height:1.58; }
.google-review-card > a { padding-top:20px; }

@media (max-width:1100px) {
  .google-review-card { flex-basis:calc((100% - 20px) / 2); min-height:340px; }
}
@media (max-width:680px) {
  .google-reviews__heading h2 { font-size:clamp(3.1rem,16vw,5rem); }
  .google-review-card { flex-basis:calc(100% - 4px); min-height:350px; padding:26px 22px; }
}
