.contact-scene { background:#c6dfec; }
.contact-background { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.contact-layout {
  position:absolute;
  z-index:2;
  inset:max(80px,10svh) clamp(28px,4vw,80px) 64px;
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  gap:clamp(24px,4svh,52px);
  container-type:inline-size;
}
.contact-copy { text-align:center; color:#000; }
.contact-hello, .contact-address { font-weight:850; letter-spacing:-.055em; line-height:1.05; }
.contact-hello { margin:0 0 12px; font-size:clamp(48px,7.2cqi,132px); }
.contact-link { display:inline-block; max-width:100%; color:inherit; text-decoration:none; pointer-events:none; }
.contact-address { display:block; white-space:nowrap; font-size:clamp(25px,7.1cqi,130px); }
.contact-link:hover { text-decoration:underline; text-decoration-thickness:.035em; text-underline-offset:.1em; }
.contact-link:focus-visible { outline-offset:10px; border-radius:4px; }
.contact-gallery {
  display:grid;
  grid-template-rows:minmax(0,1fr) 44px;
  gap:10px;
  min-width:0;
  min-height:0;
  pointer-events:none;
}
.contact-gallery-stage {
  position:relative;
  min-width:0;
  min-height:0;
  container-type:size;
  isolation:isolate;
  touch-action:pan-y pinch-zoom;
  user-select:none;
  -webkit-user-select:none;
  cursor:grab;
}
.contact-gallery-stage.is-dragging { cursor:grabbing; }
.contact-card {
  position:absolute;
  top:50%;
  left:50%;
  width:min(60cqw,188cqh);
  aspect-ratio:2 / 1;
  padding:0;
  overflow:hidden;
  border:0;
  border-radius:clamp(16px,2vw,34px);
  background:#c6d7df;
  box-shadow:0 12px 36px #1a394518;
  visibility:hidden;
  opacity:0;
  transform:translate(-50%,-50%) scale(.66);
  transition:transform 520ms cubic-bezier(.22,.68,.15,1), opacity 420ms ease, visibility 520ms;
  cursor:inherit;
}
.contact-card[data-offset="0"] { z-index:3; visibility:visible; opacity:1; transform:translate(-50%,-50%); }
.contact-card[data-offset="-1"] { z-index:2; visibility:visible; opacity:.86; transform:translate(-78%,-50%) scale(.84); }
.contact-card[data-offset="1"] { z-index:2; visibility:visible; opacity:.86; transform:translate(-22%,-50%) scale(.84); }
.contact-card[data-offset="-2"] { z-index:1; visibility:visible; opacity:.6; transform:translate(-94%,-50%) scale(.72); }
.contact-card[data-offset="2"] { z-index:1; visibility:visible; opacity:.6; transform:translate(-6%,-50%) scale(.72); }
.contact-card:focus-visible { outline:3px solid #7862e8; outline-offset:5px; }
.contact-photo {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  pointer-events:none;
  animation:contact-photo-pan 8s ease-in-out infinite alternate paused;
}
.contact-gallery[data-running="true"] .contact-card[data-offset="0"] .contact-photo { animation-play-state:running; }
@keyframes contact-photo-pan {
  from { transform:translateX(-1.6%) scale(1.06); }
  to { transform:translateX(1.6%) scale(1.06); }
}
.contact-gallery-controls { display:flex; justify-content:center; align-items:center; gap:6px; min-width:0; color:#6d7c85; }
.contact-gallery-controls[hidden], .contact-gallery-controls button[hidden] { display:none; }
.contact-gallery-controls button {
  display:grid;
  flex:0 0 40px;
  place-items:center;
  width:40px;
  height:40px;
  padding:9px;
  border:0;
  border-radius:50%;
  color:inherit;
  background:transparent;
  cursor:pointer;
  font-size:17px;
  touch-action:manipulation;
}
.contact-gallery-controls button:hover { color:#3e4652; background:#ffffff40; }
.contact-gallery-controls button:focus-visible { outline:2px solid #7862e8; outline-offset:1px; }
.contact-gallery-controls button:disabled { opacity:.35; cursor:default; }
.contact-gallery-controls svg { width:18px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.contact-gallery-dots { display:flex; align-items:center; min-width:0; max-width:320px; overflow-x:auto; scrollbar-width:none; }
.contact-gallery-dots::-webkit-scrollbar { display:none; }
.contact-gallery-dots button { flex-basis:16px; width:16px; padding:0; }
.contact-gallery-dots button::before { content:""; width:5px; height:5px; border-radius:50%; background:currentColor; opacity:.35; transition:transform 200ms ease, opacity 200ms ease; }
.contact-gallery-dots button[aria-current="true"]::before { color:#8266f2; opacity:1; transform:scale(1.35); }
.opening-stage[data-active-section="contact"] .contact-gallery,
.opening-stage[data-active-section="contact"] .contact-link { pointer-events:auto; }
.contact-scene .site-copyright { left:clamp(28px,4vw,80px); }

@media (max-width: 1023px), (max-height: 680px), (max-aspect-ratio: 4/3), (min-aspect-ratio: 5/2) {
  .contact-scene {
    min-height:calc(100svh - var(--mobile-clearance));
    padding:116px var(--mobile-gutter) 30px;
    background:#c6dfec var(--mobile-sky) center / cover;
  }
  .contact-background { display:none; }
  .contact-layout { position:relative; inset:auto; max-width:1400px; margin:0 auto; gap:32px; }
  .contact-hello { font-size:9cqi; }
  .contact-address { font-size:7.1cqi; }
  .contact-gallery { grid-template-rows:auto 44px; }
  .contact-gallery-stage { height:clamp(220px,34vw,460px); }
  .contact-gallery, .contact-link { pointer-events:auto; }
  .contact-scene .site-copyright { position:relative; inset:auto; max-width:1400px; margin:36px auto 0; font-size:11px; }
}
@media (max-width:700px) {
  .contact-layout { gap:28px; }
  .contact-hello { margin-bottom:14px; font-size:14cqi; }
  .contact-gallery-stage { height:clamp(200px,62vw,370px); }
  .contact-card { width:78cqw; aspect-ratio:4 / 3; border-radius:18px; }
  .contact-card[data-offset="-1"] { transform:translate(-72%,-50%) scale(.84); }
  .contact-card[data-offset="1"] { transform:translate(-28%,-50%) scale(.84); }
  .contact-card[data-offset="-2"] { transform:translate(-84%,-50%) scale(.72); }
  .contact-card[data-offset="2"] { transform:translate(-16%,-50%) scale(.72); }
  .contact-gallery-controls { gap:2px; }
  .contact-gallery-controls > button { flex-basis:44px; width:44px; height:44px; }
  .contact-gallery-dots button { flex-basis:22px; width:22px; }
}
@media (prefers-reduced-motion:reduce) {
  .contact-card, .contact-gallery-dots button::before { transition:none; }
  .contact-photo { animation:none; transform:none; }
}
