/* Galería y contacto: una extensión de la dirección vigente. */
.service-card-actions { display:flex; flex-direction:column; align-items:flex-start; gap:12px; margin-top:auto; }
.home-services .card-content .service-card-actions .action { margin-top:0; }
.service-detail-link { font-size:14px; color:#c7cdd1; }
.services-directory-action { margin-top:30px; display:flex; justify-content:flex-end; }
.gallery-filters:has([data-gallery-filter=espacios][aria-pressed=true])::before { transform:translateX(100%); }
.gallery-filters button[aria-pressed=true] { color:#fff; }
.project-carousel { overflow:hidden; --gallery-columns:2; --gallery-gap:28px; border-radius:24px; touch-action:pan-y; }
.project-track { display:flex; gap:var(--gallery-gap); align-items:stretch; will-change:transform; }
.project-track .project-card { flex:0 0 calc((100% - var(--gallery-gap)) / 2); min-width:0; }
.project-card { min-width:0; }
.project-image { position:relative; display:block; padding:0; width:100%; overflow:hidden; border-radius:24px; aspect-ratio:1.3; background:#272b2e; }
.project-image:focus-visible { outline-offset:-6px; }
.project-image > img { width:100%; height:100%; object-fit:cover; object-position:50% 55%; filter:saturate(.78); transition:filter 420ms var(--ease); }
.project-expand { position:absolute; right:20px; bottom:20px; width:44px; height:44px; display:grid; place-items:center; border:1px solid #ffffff4d; border-radius:50%; background:#161b20b3; backdrop-filter:blur(10px); }
.project-expand > .icon { width:20px; height:20px; }
.project-caption { padding:22px 2px 0; }
.project-caption h3 { font-size:26px; letter-spacing:-.025em; line-height:1.15; }
.project-caption p { font-size:14px; color:#aeb8c0; margin-top:10px; }
.gallery-bottom { display:flex; align-items:center; justify-content:space-between; gap:28px; margin-top:32px; }
.carousel-controls { display:flex; align-items:center; gap:12px; }
.carousel-count { min-width:70px; margin-right:6px; text-align:right; font-size:14px; color:#a9b3bb; font-variant-numeric:tabular-nums; }
.carousel-controls .icon-button { width:52px; height:52px; border-color:#bfc6cc80; background:transparent; }
.carousel-controls .icon-button:hover { background:#ffffff0c; }
.carousel-controls .icon-button .icon { transition:transform 380ms var(--ease); }
.carousel-controls [data-carousel-next]:hover .icon { transform:translateX(2px); }
.carousel-controls [data-carousel-prev]:hover .icon { transform:translateX(-2px); }
.gallery-directory { padding-bottom:90px; }
.gallery-directory-heading { display:flex; align-items:center; justify-content:space-between; gap:30px; margin-bottom:36px; }
.gallery-result { color:#aab5bd; font-size:14px; }
.project-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:48px 26px; }
.project-grid .project-image { aspect-ratio:1; }
.project-grid .project-caption h3 { font-size:23px; }
.project-dialog { display:none; max-width:min(1180px,94vw); width:1180px; padding:18px; max-height:92dvh; gap:30px; overflow:auto; }
.project-dialog[open] { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(240px,1fr); }
.project-dialog-photo { display:flex; align-items:center; justify-content:center; border-radius:16px; min-height:350px; background:#16191c; overflow:hidden; }
.project-dialog #gallery-image { width:100%; max-height:82dvh; height:auto; object-fit:contain; }
.project-dialog .gallery-close { top:30px; right:30px; }
.project-dialog-info { align-self:center; min-width:0; padding:58px 16px 24px 0; }
.project-tag { font-size:14px; color:#aab6c0; margin-bottom:18px; }
.project-dialog #gallery-caption { font-size:36px; line-height:1.1; letter-spacing:-.035em; margin-bottom:20px; }
.project-dialog #gallery-description { font-size:16px; color:#bcc6cd; line-height:1.7; }
.project-dialog #gallery-service { margin-top:24px; font-size:14px; }
.project-dialog .gallery-navigation { margin-top:38px; }
.location-section { display:grid; grid-template-columns:.85fr 1.35fr; border:1px solid #ffffff21; border-radius:28px; overflow:hidden; background:#202426; }
.location-copy { padding:42px; align-self:center; }
.location-copy > .social-icon { width:27px; height:27px; margin-bottom:28px; color:#c9d0d4; }
.location-copy h2 { font-size:44px; line-height:1.1; letter-spacing:-.035em; margin-bottom:26px; }
.location-copy p { font-size:15px; max-width:34ch; color:#aeb8c0; }
.location-copy .location-address { font-size:19px; color:#e0e5e8; margin-bottom:12px; }
.location-copy .action { margin-top:26px; }
.location-map { min-height:440px; background:#292f33; }
.location-map iframe { width:100%; height:100%; min-height:440px; display:block; border:0; filter:grayscale(1) invert(.9) contrast(.86); }
html.lenis.lenis-smooth .location-map iframe { pointer-events:auto; }
.closing.closing-feature { position:relative; isolation:isolate; min-height:360px; display:flex; align-items:center; padding:56px; overflow:hidden; border-radius:28px; background:#252a2d; }
.closing-feature > img { position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; object-position:70% 56%; filter:saturate(.6); }
.closing-feature::before { content:''; position:absolute; inset:0; z-index:-1; background:linear-gradient(90deg,#11191bf2 0%,#171e21e0 42%,#11191b24 100%); }
.closing-feature-copy { max-width:580px; }
.closing.closing-feature h2 { font-size:clamp(38px,4vw,56px); line-height:1.08; max-width:14ch; letter-spacing:-.04em; }
.closing-feature-copy p { max-width:35ch; color:#bdc7ce; margin-block:20px 28px; }
.site-footer { grid-template-columns:1.1fr 1fr 1fr 1.05fr; gap:32px; padding-bottom:100px; }
.footer-contact h2 { font-size:18px; font-weight:400; margin-bottom:20px; }
.footer-phone { display:inline-flex; align-items:center; gap:12px; min-height:44px; font-size:17px; white-space:nowrap; }
.footer-phone .social-icon { width:21px; height:21px; color:#bbc6cd; }
.social-links { display:flex; align-items:center; gap:10px; margin-top:20px; }
.social-link { width:46px; height:46px; display:grid; place-items:center; border-radius:50%; border:1px solid #ffffff29; background:linear-gradient(145deg,#ffffff08,#ffffff01); color:#d5dce1; box-shadow:inset 0 1px #ffffff16; transition:background-color 300ms var(--ease),border-color 300ms var(--ease); }
.social-link .social-icon { width:20px; height:20px; }
.social-link:hover { background-color:#ffffff0c; border-color:#ffffff4d; }
.footer-bottom { align-items:start; line-height:1.6; }
.floating-quote { position:fixed; z-index:30; right:24px; bottom:max(24px,env(safe-area-inset-bottom)); display:inline-flex; align-items:center; gap:11px; min-height:54px; padding:12px 20px; border:1px solid #cfd9df4d; border-radius:999px; background:linear-gradient(145deg,#3c4548c9,#1d2527e8); color:#eef4f3; font-size:14px; box-shadow:inset 0 1px #ffffff59,0 6px 24px #0007; backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px); transition:opacity 250ms var(--ease),background-color 250ms var(--ease); }
.floating-quote .social-icon { width:24px; height:24px; }
.floating-quote:hover { background-color:#3e514b; }
.dialog-open .floating-quote,.menu-open .floating-quote,.float-suppressed .floating-quote { opacity:0; visibility:hidden; pointer-events:none; }
html.lenis { scroll-behavior:auto!important; }
@media(hover:hover) and (pointer:fine) { .project-image:hover > img { filter:saturate(.9) brightness(1.04); } }
@media(max-width:1100px) {
  .site-footer { grid-template-columns:1fr 1fr; gap:40px; }
  .site-footer .footer-brand { grid-column:auto; }
  .location-copy { padding:32px; }
  .location-copy h2 { font-size:38px; }
  .project-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:800px) {
  .project-carousel { --gallery-gap:20px; }
  .project-caption h3 { font-size:24px; }
  .location-section { grid-template-columns:1fr; }
  .location-copy { padding:34px; }
  .location-copy h2 br { display:none; }
  .location-copy p { max-width:50ch; }
  .location-map,.location-map iframe { min-height:330px; height:330px; }
  .project-dialog[open] { grid-template-columns:1fr; gap:0; }
  .project-dialog { padding:14px; }
  .project-dialog-photo { min-height:0; }
  .project-dialog #gallery-image { max-height:55dvh; }
  .project-dialog-info { padding:26px 14px 18px; }
  .project-dialog #gallery-caption { font-size:30px; }
  .project-dialog .gallery-navigation { margin-top:24px; }
  .closing.closing-feature { padding:42px; min-height:340px; }
}
@media(max-width:700px) {
  .project-carousel { --gallery-columns:1; }
  .project-track .project-card { flex-basis:100%; }
  .project-image { aspect-ratio:1.15; }
  .gallery-bottom { flex-wrap:wrap; gap:26px; }
  .carousel-controls { margin-left:auto; }
  .project-grid { grid-template-columns:1fr; gap:34px; }
}
@media(max-width:520px) {
  .service-card-actions { gap:9px; }
  .services-directory-action { justify-content:flex-start; }
  .project-image { border-radius:22px; }
  .project-expand { right:17px; bottom:17px; }
  .project-caption { padding-top:19px; }
  .project-caption h3 { font-size:25px; }
  .carousel-controls .icon-button { width:48px; height:48px; }
  .gallery-directory-heading { flex-direction:column; align-items:flex-start; gap:18px; }
  .gallery-directory { padding-bottom:60px; }
  .location-section { border-radius:24px; }
  .location-copy { padding:30px 26px; }
  .location-copy > .social-icon { margin-bottom:24px; }
  .location-copy h2 { font-size:36px; }
  .location-map,.location-map iframe { height:300px; min-height:300px; }
  .closing.closing-feature { padding:36px 28px; min-height:350px; border-radius:24px; }
  .closing-feature::before { background:linear-gradient(90deg,#101719eb,#11191bc9 65%,#11191b70); }
  .closing.closing-feature h2 { font-size:39px; }
  .closing-feature-copy p { font-size:15px; }
  .site-footer { grid-template-columns:1fr; gap:32px; }
  .site-footer .footer-brand { grid-column:1/-1; }
  .social-links { margin-top:15px; }
  .floating-quote { right:16px; bottom:max(16px,env(safe-area-inset-bottom)); padding:11px 17px; min-height:50px; font-size:13px; }
  .floating-quote .social-icon { width:22px; height:22px; }
}
@media(prefers-reduced-motion:reduce) {
  .project-track { transition:none!important; }
  .carousel-controls .icon-button:hover .icon { transform:none; }
  .project-image > img,.social-link,.floating-quote { transition:none; }
}
