/* Responsive photo frames and full-image galleries. */
.responsive-photo { display: contents; }
picture > source { display:none; }
.page-hero-media, .banner-media { display: none; }
.inner-card > img, .inner-card > .responsive-photo > img,
.value-card > img, .value-card > .responsive-photo > img {
  display:block;
  width:100%;
  height:auto;
  aspect-ratio:16/10;
  object-fit:cover;
}
.inner-card > img, .inner-card > .responsive-photo > img { border-radius:5px; }
.intro-mosaic { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.intro-mosaic img { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:8px; }
.intro-mosaic img:first-child { grid-column:1/-1; aspect-ratio:4/3; }
.photo-stack { padding-bottom:0; min-width:0; }
.feature-band { position:relative; left:auto; bottom:auto; width:100%; margin-top:16px; border-radius:6px; }
.split > *, .inner-split > *, .form-grid > * { min-width:0; }

@media (max-width:1100px), (max-width:1366px) and (pointer:coarse) {
  .wrap { width:min(1200px,calc(100% - 48px)); }
  .split, .inner-split { grid-template-columns:minmax(0,1fr); gap:32px; }
  .intro-mosaic { max-width:760px; margin-inline:auto; }
  .photo-stack { max-width:760px; width:100%; margin-inline:auto; }
  .intro > div:last-child { max-width:760px; }
  .feature-band { padding:22px 12px; }
  .feature-band b { font-size:15px; }
  .feature-band i { font-size:32px; }

  /* Both slides participate in one grid cell, so their height follows the content. */
  .hero { display:grid; height:auto; min-height:0; padding-bottom:64px; }
  .hero-slide { position:relative; inset:auto; grid-area:1/1; display:flex; flex-direction:column; min-width:0; }
  .hero-slide > picture { display:block; width:100%; background:#dce6df; }
  .hero-slide img { position:static; display:block; width:100%; height:auto; object-fit:contain; object-position:center; }
  .hero-slide.current img { animation:none; transform:none; }
  .hero-tint { display:none; }
  .hero-copy { height:auto; flex:1; padding:32px 0 18px; }
  .hero-copy h1, .hero-copy h2 { font-size:clamp(42px,7.4vw,78px); line-height:1.02; }
  .hero-copy p { max-width:640px; font-size:17px; }
  .hero-label { margin-bottom:18px; }
  .hero-base { bottom:14px; }
  .scrollcue { display:none; }

  /* Never compress a landscape original into a portrait container. */
  .photo, .inner-photo img {
    display:block; width:100%; height:auto; aspect-ratio:auto; object-fit:contain;
  }
  .digital .split > div { order:1; }
  .digital .split > .responsive-photo { display:block; order:2; }
  .digital .photo { max-width:800px; margin-inline:auto; }
  .inner-card-body { margin:0; padding:24px; border-radius:0 0 6px 6px; }
  .inner-card > img, .inner-card > .responsive-photo > img { border-radius:6px 6px 0 0; }
  .inner-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .values-grid { gap:22px; }

  .work-grid { grid-template-columns:repeat(2,minmax(0,1fr)); align-items:stretch; }
  .work-card { display:flex; flex-direction:column; background:#fff; border-radius:6px; overflow:hidden; }
  .work-picture { border-radius:0; }
  .work-text { margin:0; padding:24px; border-radius:0; }

  .inner-hero { display:block; min-height:0; background:#123c2d!important; }
  .page-hero-media, .banner-media { display:block; }
  .page-hero-media img, .banner-media img { display:block; width:100%; height:auto; object-fit:contain; }
  .inner-hero-content { padding-block:30px; }
  .inner-hero h1 { font-size:clamp(38px,6vw,64px); overflow-wrap:anywhere; }
  .contact-banner { display:block; padding:0; min-height:0; background:#123c2d!important; }
  .contact-banner .banner-content { margin:auto; padding:30px 20px 36px; }
  .contact-banner h2 { font-size:clamp(19px,4.8vw,58px); }
  .contact-banner .banner-kicker { font-size:14px; }
  .request-panel { width:min(820px,calc(100% - 48px)); }
  .home-page .request-band .request-panel { width:100%; }
}

@media (min-width:901px) and (max-width:1100px), (min-width:901px) and (max-width:1366px) and (pointer:coarse) {
  .hero-slide { display:grid; grid-template-columns:1.1fr 1fr; align-items:center; min-height:510px; }
  .hero-slide > picture { height:auto; background:none; padding:24px; }
  .hero-slide img { border-radius:8px; }
  .hero-copy { width:calc(100% - 48px); margin-inline:24px; padding-block:32px; }
  .hero-copy h1, .hero-copy h2 { font-size:clamp(44px,4.8vw,64px); }
}

@media (max-width:1000px) {
  .head-inner { min-height:72px; gap:18px; }
  .brand { width:180px; }
  .head-phone { margin-left:auto; border:0; padding-left:0; }
  .head-phone span { display:none; }
  .menu-toggle { display:grid; align-content:center; gap:6px; width:44px; height:44px; border:0; border-radius:5px; background:var(--pale); padding:11px; }
  .menu-toggle span { height:2px; background:var(--ink); }
  .header nav { position:absolute; top:100%; left:0; right:0; background:#fff; display:none; box-shadow:0 15px 20px #1232; padding:14px 24px 24px; }
  .header nav.open { display:grid; gap:0; }
  .header nav a { padding:12px 0; }
  .header nav a:after { display:none; }
}

@media (max-width:850px) {
  .inner-docs { grid-template-columns:1fr; }
  .team-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .person:last-child { grid-column:1/-1; width:calc(50% - 9px); justify-self:center; }
}

@media (max-width:600px) {
  .wrap { width:calc(100% - 40px); }
  .inner-grid, .values-grid { grid-template-columns:minmax(0,1fr); }
  .hero-copy p { font-size:16px; max-width:100%; }
  .feature-band { padding:18px 10px; display:grid; gap:0; grid-template-columns:1fr; }
  .feature-band > div { display:flex; align-items:center; gap:16px; text-align:left; padding:14px 12px; }
  .feature-band > div + div { border-left:0; border-top:1px solid #d9e2db; }
  .feature-band i { flex:0 0 34px; text-align:center; margin:0; font-size:30px; }
  .feature-band b { font-size:15px; line-height:1.35; }
  .work-grid { grid-template-columns:minmax(0,1fr); }
  .work-text { padding:22px; }
  .inner-call .btn { max-width:100%; }
  .inner-map > div { position:static; max-width:none; }
  .contact-locations .inner-map iframe { height:300px; }
  .inner-hero h1 { font-size:clamp(34px,8.5vw,48px); }
  .request-panel { width:calc(100% - 40px); }
  .foot-grid { grid-template-columns:1fr 1fr; gap:28px 18px; }
  .foot-grid > div:first-child, .foot-grid > div:nth-child(3) { grid-column:1/-1; }
  .foot-grid > div:nth-child(2) { grid-column:1; grid-row:2; }
  .foot-grid > div:nth-child(4) { grid-column:2; grid-row:2; }
}

/* Shared image frames and equal card heights for services and process steps. */
.home-page .work-grid { grid-auto-rows:1fr; }
.home-page .service-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.home-page .work-card {
  display:flex;
  flex-direction:column;
  background:#fff;
  border-radius:8px;
  overflow:hidden;
}
.home-page .work-picture {
  flex:none;
  aspect-ratio:16/10;
  background:#edf2e9;
  border-radius:0;
}
.home-page .work-picture img {
  width:100%;
  height:100%;
  min-height:0;
  aspect-ratio:auto;
  object-fit:cover;
  transform:none;
}
.home-page .work-card:hover img { transform:none; }
.working .work-picture img[src$="analisi-telefono.webp"] ~ span { left:auto; right:12px; }
.home-page .work-text {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  margin:0;
  border-radius:0;
  padding:clamp(18px,2vw,28px);
}
.service-grid .inner-icon { color:var(--green); }
.service-grid .work-text h3 { margin:13px 0 18px; }
.service-grid .text-link { margin-top:auto; font-size:14px; }
.gallery-link { margin-top:24px; }
.gallery-full { scroll-margin-top:12px; }
.gallery .gallery-grid, .gallery .gallery-lead {
  grid-template-columns:repeat(3,minmax(0,1fr));
  grid-template-rows:none;
  gap:20px;
  align-items:stretch;
}
.gallery .gallery-lead figure:first-child { grid-row:auto; grid-column:auto; }
.gallery .gallery-lead { align-items:start; }
.gallery figure { height:auto; display:flex; flex-direction:column; background:#edf2e9; }
.gallery img { height:auto; aspect-ratio:4/3; object-fit:contain; }
.gallery-lead img { aspect-ratio:auto; }
.gallery figure:hover img { transform:none; }
.gallery figcaption {
  position:static;
  flex:1;
  padding:13px 15px;
  background:#14392c;
  font-size:14px;
  line-height:1.4;
}

@media (max-width:900px) {
  .home-page .service-grid, .gallery .gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:600px) {
  .home-page .service-grid, .gallery .gallery-lead { grid-template-columns:minmax(0,1fr); }
  .gallery .gallery-grid, .gallery .gallery-lead { gap:12px; }
  .gallery figcaption { padding:10px 12px; font-size:13px; }
}
@media (max-width:360px) {
  .gallery .gallery-grid { grid-template-columns:minmax(0,1fr); }
}

@media (max-width:540px) {
  .head-inner { min-height:68px; padding-inline:20px; gap:14px; }
  .brand { width:clamp(145px,43vw,180px); }
  .contact-locations .inner-offices { grid-template-columns:minmax(0,1fr); }
  .inner-office { padding:20px; }
}

@media (max-width:380px) {
  .team-grid { grid-template-columns:minmax(0,1fr); }
  .person:last-child { grid-column:auto; width:100%; }
  .person { width:100%; max-width:300px; margin-inline:auto; }
  .portrait img { aspect-ratio:4/5; }
  .contact-locations .inner-offices { grid-template-columns:minmax(0,1fr); }
  .credential { overflow-wrap:anywhere; }
  .inner-doc.credential { grid-template-columns:55px minmax(0,1fr) auto; gap:10px; padding:14px; }
  .doc-content strong { font-size:1rem; }
  .credential-mark { height:60px; }
}
