/* ── HERO ───────────────────────────────── */
#hero {
  position:relative; height:100vh; min-height:100svh; overflow:hidden;
  display:flex; align-items:flex-end;
}
#hero .hero-bg {
  position:absolute; inset:0;
  background:url('../pics/store-hero1.jpg') center/cover no-repeat;
  filter:brightness(.55) saturate(.85);
  will-change:transform;
  transform:translateZ(0);
}
#hero::after {
  content:''; position:absolute; inset:0;
  background:linear-gradient(to bottom, rgba(15,14,12,.75) 0%, rgba(15,14,12,.3) 35%, rgba(15,14,12,.85) 100%);
}
.hero-inner {
  position:relative; z-index:2;
  width:100%; padding:0 6rem 6rem;
  display:flex; justify-content:space-between; align-items:flex-end; gap:4rem;
}
.hero-title-block .hero-furi {
  font-family:'Noto Serif JP',serif; font-weight:300;
  font-size:.7rem; letter-spacing:.6em; color:var(--gold);
  margin-bottom:1.4rem; display:block;
}
.hero-title {
  font-family:'Zen Old Mincho',serif;
  font-weight:200; color:#fff; line-height:1.3;
  font-size:clamp(2.4rem, 4.8vw, 4.4rem);
  letter-spacing:.55em;
  margin-bottom:1rem;
}
body[data-lang="en"] .hero-title {
  font-family:'Libre Baskerville',serif;
  letter-spacing:.08em;
}
.hero-en {
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.9rem; letter-spacing:.5em; color:rgba(255,255,255,.55);
}
body[data-lang="en"] .hero-en { letter-spacing:.08em; }
.hero-meta {
  text-align:right; padding-bottom:.5rem;
  display:flex; flex-direction:column; gap:1.2rem; align-items:flex-end;
  border-right:1px solid rgba(184,151,90,.3); padding-right:2.4rem;
}
.hero-meta-row { display:flex; flex-direction:column; align-items:flex-end; gap:.4rem; }
.hero-meta-label { font-size:.5rem; letter-spacing:.7em; color:var(--gold); }
.hero-meta-val {
  font-family:'Libre Baskerville',serif;
  font-size:1.05rem; letter-spacing:.18em; color:#fff;
}
.hero-meta-val.hero-meta-time { font-size:.8rem; letter-spacing:.3em; }
.hero-meta-note { font-size:.6rem; letter-spacing:.25em; color:rgba(255,255,255,.45); }
body[data-lang="en"] .hero-meta-val.hero-meta-time,
body[data-lang="en"] .hero-meta-note { letter-spacing:.06em; }

/* ── SECTION HEADER (shared) ────────────── */
.sec-head { text-align:center; padding:6rem 2rem 3.5rem; position:relative; z-index:1; }
.sec-furi {
  font-family:'Noto Serif JP',serif; font-weight:300;
  font-size:.62rem; letter-spacing:.55em; color:var(--gold);
  margin-bottom:1.1rem; display:block; opacity:.85;
}
.sec-ttl {
  font-family:'Zen Old Mincho',serif;
  font-weight:200; color:#fff; font-size:clamp(1.6rem, 2.6vw, 2.2rem);
  letter-spacing:.65em;
}
.sec-en {
  display:block; margin-top:1.2rem;
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.7rem; letter-spacing:.55em; color:rgba(255,255,255,.42);
}
.sec-rule {
  width:1px; height:42px; margin:1.6rem auto 0;
  background:linear-gradient(to bottom, var(--gold), transparent);
}

/* ── SECTION 1: 店鋪情報 (washi background) ── */
#info {
  position:relative; padding:8rem 0 9rem;
  background:var(--washi); color:var(--sumi);
  overflow:hidden;
}
#info .bg-kinpaku {
  position:absolute; inset:0; pointer-events:none;
  background:url('../assets/金箔背景.png') right center/cover no-repeat;
  opacity:.55;
}
#info .bg-seigaiha {
  position:absolute; inset:0; pointer-events:none; opacity:.06;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='32'%3E%3Cellipse cx='28' cy='32' rx='28' ry='16' fill='none' stroke='%23704214' stroke-width='0.9'/%3E%3Cellipse cx='0' cy='32' rx='28' ry='16' fill='none' stroke='%23704214' stroke-width='0.9'/%3E%3Cellipse cx='56' cy='32' rx='28' ry='16' fill='none' stroke='%23704214' stroke-width='0.9'/%3E%3Cellipse cx='14' cy='16' rx='28' ry='16' fill='none' stroke='%23704214' stroke-width='0.9'/%3E%3Cellipse cx='42' cy='16' rx='28' ry='16' fill='none' stroke='%23704214' stroke-width='0.9'/%3E%3C/svg%3E");
}
#info .sec-head { position:relative; padding-top:0; }
#info .sec-furi { color:var(--bengala); opacity:.7; }
#info .sec-ttl { color:#1c1208; }
#info .sec-en { color:rgba(58,44,24,.45); }
#info .sec-rule { background:linear-gradient(to bottom, var(--bengala), transparent); opacity:.5; }

.info-stage {
  position:relative; max-width:1180px; margin:0 auto; padding:0 6rem;
  display:grid; grid-template-columns:160px 1fr 160px; gap:3rem; align-items:center;
}
.info-deco {
  display:flex; flex-direction:column; gap:2.5rem; align-items:center; justify-content:center;
}
.info-deco img {
  width:140px; height:140px; object-fit:cover; border-radius:50%;
  border:1px solid rgba(112,66,20,.2);
  filter:saturate(.9) brightness(.95);
}
.info-deco .v-label {
  writing-mode:vertical-rl;
  font-family:'Zen Old Mincho',serif;
  font-size:.55rem; letter-spacing:.7em; color:var(--bengala); opacity:.55;
}

.info-table {
  background:rgba(255,255,255,.58); padding:2.2rem 3.2rem;
  border-top:1px solid rgba(112,66,20,.25);
  border-bottom:1px solid rgba(112,66,20,.25);
  backdrop-filter:blur(2px);
}
.info-row {
  display:grid; grid-template-columns:140px 1fr;
  padding:1.4rem 0;
  border-bottom:1px solid rgba(112,66,20,.18);
  align-items:baseline;
}
.info-row:last-child { border-bottom:none; }
.info-key {
  font-family:'Zen Old Mincho',serif;
  font-size:.85rem; letter-spacing:.4em; color:var(--bengala); font-weight:400;
}
.info-val {
  font-size:.88rem; letter-spacing:.12em; line-height:2.2;
  color:#1c1208; font-weight:300;
}
.info-val .num {
  font-family:'Libre Baskerville',serif; font-size:1.3rem; letter-spacing:.05em;
  color:var(--bengala); display:inline-block; margin-right:.4rem;
}
.info-val .note {
  display:block; font-size:.72rem; color:rgba(58,44,24,.6);
  letter-spacing:.18em; margin-top:.4rem;
}
.info-val .jp-mark {
  display:inline-block; padding:.1rem .55rem;
  border:1px solid rgba(112,66,20,.4);
  font-size:.62rem; letter-spacing:.3em; color:var(--bengala);
  margin-right:.6rem; vertical-align:middle;
}
.info-val a {
  color:var(--bengala); border-bottom:1px solid rgba(112,66,20,.3);
  transition:color .3s, border-color .3s;
}
.info-val a:hover { color:#1c1208; border-color:#1c1208; }

.info-brand-en { color:var(--gold-deep); margin-left:.5rem; }
.info-station-exit { color:var(--bengala); }
.g-seat-note { font-size:.6em; letter-spacing:.3em; color:var(--gold); }

/* ── SECTION 2: GOOGLE MAP (full bleed) ─── */
#map {
  position:relative; min-height:100vh; background:var(--sumi);
  display:flex; flex-direction:column;
}
#map .sec-head { padding:6rem 2rem 3rem; }
.map-wrap {
  position:relative; flex:1;
  margin:0 6rem 6rem; height:62vh; min-height:480px;
  border:1px solid rgba(184,151,90,.3); overflow:hidden;
}
.map-wrap iframe {
  position:absolute; inset:0;
  width:100%; height:100%; border:0;
  filter:invert(.92) hue-rotate(180deg) saturate(.4) brightness(.95);
  transition:filter var(--t);
  will-change:filter;
  transform:translateZ(0);
}
.map-wrap:hover iframe { filter:invert(.92) hue-rotate(180deg) saturate(.6) brightness(1); }
.map-overlay {
  position:absolute; left:2.5rem; bottom:2.5rem; z-index:3;
  background:rgba(15,14,12,.92); backdrop-filter:blur(10px);
  border:1px solid rgba(184,151,90,.4);
  padding:2.2rem 2.6rem;
  max-width:380px;
  pointer-events:auto;
}
.map-overlay::before {
  content:''; position:absolute; top:0; left:0; right:0; height:1px;
  background:linear-gradient(to right, transparent, var(--gold), transparent);
}
.map-overlay-label {
  font-size:.5rem; letter-spacing:.7em; color:var(--gold);
  margin-bottom:1.2rem; display:block;
}
.map-overlay-name {
  font-family:'Zen Old Mincho',serif; font-weight:200;
  font-size:1.4rem; letter-spacing:.4em; color:#fff;
  margin-bottom:.4rem;
}
.map-overlay-en {
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.78rem; letter-spacing:.35em; color:rgba(255,255,255,.45);
  margin-bottom:1.6rem; display:block;
}
.map-overlay-addr {
  font-size:.78rem; letter-spacing:.18em; line-height:2.2;
  color:rgba(255,255,255,.78); font-weight:300;
}
.map-overlay-divider { width:30px; height:1px; background:var(--gold); margin:1.6rem 0; opacity:.6; }
.map-overlay-access {
  font-size:.72rem; letter-spacing:.18em; line-height:2;
  color:rgba(255,255,255,.55);
}
.map-overlay-access strong {
  color:var(--gold); font-weight:400; letter-spacing:.3em;
  font-size:.62rem; display:block; margin-bottom:.4rem;
}
.map-link {
  display:inline-flex; align-items:center; gap:.8rem;
  margin-top:1.8rem;
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.85rem; letter-spacing:.35em; color:var(--gold);
  border-bottom:1px solid var(--gold); padding-bottom:.3rem;
  transition:color var(--tf), border-color var(--tf);
}
.map-link:hover { color:var(--gold2); border-color:var(--gold2); }
.map-link span { font-size:1.1rem; }

/* ── SECTION 3: 平面圖 互動 ────────────── */
/* ── SECTION ──────────────────────────────────── */
#floor {
  position:relative;
  background:var(--sumi);
  padding:5rem 0 4rem;
}

#floor .sec-head { padding:0 2rem 4.5rem; }

/* ── STAGE: two-column ───────────────────────── */
.floor-stage {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:clamp(2rem,3.5vw,4rem);
  max-width:1520px; margin:0 auto;
  padding:0 clamp(2rem,5vw,5rem);
  align-items:start;
}

/* ━━━ LEFT COLUMN ━━━ */
.floor-map-col { display:flex; flex-direction:column; gap:.8rem; }

.floor-plan-wrap {
  position:relative;
  width:100%;
  aspect-ratio:1100/510;
  border:1px solid rgba(184,151,90,.2);
  background:rgba(15,14,12,.6);
}
.floor-plan-wrap::before {
  content:''; position:absolute; inset:8px;
  border:1px solid rgba(184,151,90,.07);
  pointer-events:none; z-index:1;
}
.floor-plan {
  width:100%; height:100%; display:block;
  overflow:visible;
}

/* ── SVG interactive zones ───────────────────── */
.zone { cursor:pointer; }
.zone-shape {
  fill:rgba(184,151,90,.03);
  stroke:none;
  transition:fill var(--tf);
}
.zone:hover .zone-shape,
.zone.active .zone-shape { fill:rgba(184,151,90,.14); }

.zone-label {
  font-family:'Zen Old Mincho','Noto Serif TC',serif;
  font-size:14px; fill:rgba(255,255,255,.52);
  letter-spacing:5px; text-anchor:middle;
  pointer-events:none; transition:fill var(--tf);
}
.zone:hover .zone-label,
.zone.active .zone-label { fill:var(--gold2); }

.zone-label-en {
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:9.5px; fill:rgba(184,151,90,.38);
  letter-spacing:3px; text-anchor:middle;
  pointer-events:none; transition:fill var(--tf);
}
.zone:hover .zone-label-en,
.zone.active .zone-label-en { fill:rgba(184,151,90,.75); }

.zone-badge {
  fill:rgba(184,151,90,.12); stroke:rgba(184,151,90,.3);
  stroke-width:.9; pointer-events:none;
  transition:fill var(--tf), stroke var(--tf);
}
.zone.active .zone-badge { fill:rgba(184,151,90,.3); stroke:var(--gold); }

.zone-badge-num {
  font-family:'Libre Baskerville',serif;
  font-size:10px; fill:rgba(184,151,90,.55);
  text-anchor:middle; dominant-baseline:central;
  pointer-events:none; transition:fill var(--tf);
}
.zone.active .zone-badge-num { fill:var(--gold2); }

/* map footer strip */
.floor-map-foot {
  display:flex; justify-content:space-between; align-items:center;
  padding:.5rem .7rem;
  border:1px solid rgba(184,151,90,.14);
  border-top:none;
  background:rgba(5,4,3,.75);
}
.fmf-label {
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.5rem; letter-spacing:.48em; color:rgba(184,151,90,.4);
}
.fmf-hint { font-size:.47rem; letter-spacing:.38em; color:rgba(255,255,255,.22); }

/* zone chips */
.zone-chips {
  display:grid;
  grid-template-columns:repeat(5, minmax(0,1fr));
  gap:.7rem;
  width:100%;
}
.zone-chip {
  font-family:'Zen Old Mincho',serif;
  min-width:0;
  min-height:54px;
  font-size:.72rem; letter-spacing:.18em;
  padding:.9rem .55rem;
  border:1px solid rgba(184,151,90,.2);
  color:rgba(255,255,255,.38);
  background:transparent; cursor:pointer;
  transition:border-color var(--tf), color var(--tf), background var(--tf);
}
.zone-chip:hover {
  border-color:rgba(184,151,90,.5); color:rgba(255,255,255,.72);
}
.zone-chip.active {
  border-color:var(--gold); color:var(--gold);
  background:rgba(184,151,90,.07);
}

/* ━━━ RIGHT COLUMN ━━━ */
.floor-detail-col {
  display:flex; flex-direction:column; gap:1.5rem;
  position:sticky; top:2.5rem;
}
.floor-detail-head {
  padding-left:1.4rem;
  border-left:1px solid rgba(184,151,90,.28);
}
.fdh-eyebrow {
  font-size:.48rem; letter-spacing:.7em; color:var(--gold);
  display:block; margin-bottom:.9rem;
}
.fdh-title {
  font-family:'Zen Old Mincho',serif; font-weight:200;
  font-size:clamp(1.3rem,2vw,1.8rem); letter-spacing:.48em;
  color:#fff; line-height:1.3; margin-bottom:.5rem;
}
.fdh-sub {
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.65rem; letter-spacing:.42em; color:rgba(255,255,255,.32);
}

/* photo card */
.floor-photo-card {
  position:relative; border:1px solid rgba(184,151,90,.22);
  background:rgba(10,9,8,.9); overflow:hidden; aspect-ratio:3/2;
}
.fpc-photo {
  position:absolute; inset:0;
  background:center/cover no-repeat;
  opacity:0; filter:brightness(.82) saturate(.85);
  transition:opacity .65s var(--t);
}
.fpc-photo.active { opacity:1; }

/* placeholder */
.fpc-placeholder {
  position:absolute; inset:0;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  gap:1.1rem; z-index:1;
  transition:opacity .4s var(--t);
}
.fpc-placeholder.hide { opacity:0; pointer-events:none; }
.fpc-ph-moon {
  font-family:'Zen Old Mincho',serif;
  font-size:2.4rem; color:rgba(184,151,90,.16); letter-spacing:.6em;
}
.fpc-ph-txt {
  font-size:.52rem; letter-spacing:.5em; color:rgba(255,255,255,.16);
}

/* ── RESPONSIVE ───────────────────────────────── */
@media (max-width:960px) {
  .floor-stage { grid-template-columns:1fr; }
  .floor-detail-col { position:static; }
  .floor-photo-card { aspect-ratio:16/10; }
}

/* ── SECTION 4: SPACE GALLERY ───────────── */
#gallery {
  position:relative; padding:7rem 0 9rem;
  background:linear-gradient(to bottom, var(--sumi) 0%, #161310 100%);
}
.gallery-row {
  max-width:1280px; margin:0 auto; padding:0 6rem;
  display:grid; grid-template-columns:1fr 1fr; gap:5rem; align-items:center;
  margin-bottom:7rem;
}
.gallery-row:last-child { margin-bottom:0; }
.gallery-row.reverse { direction:rtl; }
.gallery-row.reverse > * { direction:ltr; }

.g-img {
  aspect-ratio:4/3;
  background:center/cover no-repeat;
  filter:brightness(.92) saturate(.88);
  border:1px solid rgba(184,151,90,.18);
  will-change:transform;
  transform:translateZ(0);
}
.g-text { padding:1rem 0; }
.g-tag { font-size:.5rem; letter-spacing:.7em; color:var(--gold); display:block; margin-bottom:1.4rem; }
.g-h {
  font-family:'Zen Old Mincho',serif; font-weight:200;
  font-size:clamp(1.3rem, 2.2vw, 1.9rem); letter-spacing:.4em;
  color:#fff; line-height:1.4; margin-bottom:.5rem;
}
.g-h-en {
  font-family:'Libre Baskerville',serif; font-style:italic;
  font-size:.75rem; letter-spacing:.4em; color:rgba(255,255,255,.4);
  margin-bottom:2rem; display:block;
}
.g-divider {
  width:32px; height:1px; background:var(--gold); opacity:.55; margin-bottom:2rem;
}
.g-p {
  font-size:.78rem; line-height:2.4; letter-spacing:.18em;
  color:rgba(255,255,255,.6); font-weight:300;
}
.g-p + .g-p { margin-top:1.2rem; }
.g-extra {
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:.7rem;
  margin-top:1.4rem;
}
.g-extra-img {
  aspect-ratio:4/3;
  background:center/cover no-repeat;
  border:1px solid rgba(184,151,90,.16);
  filter:brightness(.9) saturate(.88);
  will-change:transform;
  transform:translateZ(0);
}

/* ── CAROUSEL ───────────────────────────── */
.carousel {
  position:relative; overflow:hidden;
  aspect-ratio:4/3;
  border:1px solid rgba(184,151,90,.18);
}
.carousel-track {
  display:flex; height:100%;
  transition:transform .45s cubic-bezier(.4,0,.2,1);
  will-change:transform;
}
.carousel-slide {
  min-width:100%; height:100%;
  background:center/cover no-repeat;
  flex-shrink:0;
  filter:brightness(.92) saturate(.88);
}
.carousel-btn {
  position:absolute; top:50%; transform:translateY(-50%);
  width:40px; height:40px; cursor:pointer; z-index:3;
  background:rgba(15,14,12,.65); backdrop-filter:blur(4px);
  border:1px solid rgba(184,151,90,.4); color:var(--gold);
  font-size:1.2rem; display:flex; align-items:center; justify-content:center;
  transition:background var(--tf), border-color var(--tf);
}
.carousel-btn:hover { background:rgba(184,151,90,.18); border-color:var(--gold); }
.carousel-btn.prev { left:.8rem; }
.carousel-btn.next { right:.8rem; }
.carousel-dots {
  position:absolute; bottom:.8rem; left:50%; transform:translateX(-50%);
  display:flex; gap:.45rem; z-index:3;
}
.carousel-dot {
  width:5px; height:5px; border-radius:50%;
  background:rgba(184,151,90,.35);
  transition:background var(--tf); cursor:pointer;
}
.carousel-dot.active { background:var(--gold); }

/* ── CTA / Footer ───────────────────────── */
#cta {
  position:relative; padding:7rem 2rem 8rem;
  text-align:center;
  background:var(--sumi);
  border-top:1px solid rgba(184,151,90,.1);
}
#cta::before {
  content:''; position:absolute; top:0; left:50%; transform:translateX(-50%);
  width:200px; height:1px;
  background:linear-gradient(to right, transparent, var(--gold), transparent);
}
.cta-furi {
  font-family:'Noto Serif JP',serif;
  font-size:.6rem; letter-spacing:.6em; color:var(--gold);
  margin-bottom:1.2rem; display:block;
}
.cta-h {
  font-family:'Zen Old Mincho',serif; font-weight:200;
  font-size:clamp(1.4rem, 2.4vw, 2rem); letter-spacing:.55em;
  color:#fff; margin-bottom:1rem;
}
.cta-sub {
  font-size:.7rem; letter-spacing:.3em; color:rgba(255,255,255,.45);
  line-height:2.2; margin-bottom:3.5rem;
}
.btn-circle {
  width:170px; height:170px; border-radius:50%;
  border:1.5px solid rgba(184,151,90,.6);
  display:inline-flex; flex-direction:column; align-items:center; justify-content:center;
  color:#fff; position:relative; overflow:hidden;
  transition:color var(--t);
}
.btn-circle::before {
  content:''; position:absolute; inset:0; border-radius:50%;
  background:var(--gold); transform:scale(0);
  transition:transform .5s cubic-bezier(.4,0,.2,1);
}
.btn-circle:hover::before { transform:scale(1); }
.btn-circle:hover { color:#fff; }
.btn-circle span { position:relative; z-index:1; }
.btn-circle .bcj {
  font-size:1.55rem; letter-spacing:.28em; padding-left:.28em;
  font-family:'Zen Old Mincho',serif;
}
.btn-circle .bce {
  font-size:.5rem; letter-spacing:.5em; opacity:.7;
}


/* ── RESPONSIVE ─────────────────────────── */
@media (max-width:980px) {
  .hero-inner { flex-direction:column; align-items:flex-start; padding:0 2rem 4rem; gap:2rem; }
  .hero-meta { align-items:flex-start; border-right:0; border-left:1px solid rgba(184,151,90,.3); padding-left:1.6rem; padding-right:0; text-align:left; }
  .hero-meta-row { align-items:flex-start; }
  .info-stage { grid-template-columns:1fr; padding:0 1.5rem; }
  .info-deco { display:none; }
  .info-table { padding:1.4rem 1.6rem; }
  .info-row { grid-template-columns:90px 1fr; gap:1rem; }
  .map-wrap { margin:0 1.5rem 4rem; height:70vh; }
  .map-overlay { left:1rem; right:1rem; bottom:1rem; max-width:none; padding:1.4rem 1.6rem; }
  #floor { padding:5rem 0 6rem; }
  .floor-stage { width:auto; margin:0; padding:0 1.5rem; display:flex; flex-direction:column; gap:2rem; }
  .floor-plan-wrap { max-height:none; }
  .floor-info-area { gap:2rem; }
  .floor-preview-card { max-height:none; aspect-ratio:4/3; }
  .gallery-row { grid-template-columns:1fr; gap:2rem; padding:0 1.5rem; margin-bottom:4rem; }
  .gallery-row.reverse { direction:ltr; }
}

/* FAST PERFORMANCE OVERRIDES
   Experimental copy: reduce paint/compositing cost without changing core content. */
html { scroll-behavior:auto !important; }
nav.scrolled,
.map-overlay,
.carousel-btn,
.info-table,
#menu-b.seasonal-hero-stack .mb-course-card {
  backdrop-filter:none !important;
}
.fb-photo,
.about-photo-side,
.person-photo,
.ph-bg,
.ph-thumb,
.p3-left-photo,
.p3-right-photo,
#hero .hero-bg,
.fpc-photo,
.g-img,
.carousel-slide,
.mb-hero-img,
.db-card img,
.sake-visual img,
.info-deco img,
.map-wrap iframe {
  filter:none !important;
  will-change:auto !important;
}
.map-wrap:hover iframe { filter:none !important; }
.washi-layer,
.p3-pattern { display:none !important; }
.shokunin-person.mochizuki .person-photo,
.shokunin-person.doi .person-photo { clip-path:none !important; }
*, *::before, *::after {
  transition-duration:.18s !important;
  animation-duration:.18s !important;
}

/* MOBILE RWD OVERRIDES */
@media(max-width:980px){
  html { font-size:15px; }

  #hero { height:auto; min-height:100svh; align-items:flex-end; }
  #hero .hero-bg { background-position:58% center; }
  .hero-inner {
    padding:0 1.4rem 4.5rem;
    gap:2.2rem;
    transform:none !important;
  }
  .hero-title-block { transform:none !important; }
  .hero-furi { letter-spacing:.3em; line-height:1.8; }
  .hero-title {
    font-size:clamp(2.05rem, 11vw, 3.2rem);
    letter-spacing:.28em;
    line-height:1.45;
  }
  .hero-en { letter-spacing:.25em; }
  .hero-meta {
    width:100%; gap:1rem; padding-left:1.2rem;
  }

  .sec-head { padding:4.8rem 1.4rem 2.8rem; }
  .sec-furi,
  .sec-ttl,
  .sec-en { letter-spacing:.28em; padding-left:.28em; }

  #info { padding:5rem 0 5.5rem; }
  .info-stage { padding:0 1.4rem; }
  .info-table { padding:1.2rem 1.25rem; }
  .info-row { grid-template-columns:6.5rem minmax(0,1fr); gap:.8rem; padding:1.15rem 0; }
  .info-key { font-size:.78rem; letter-spacing:.22em; }
  .info-val { font-size:.84rem; letter-spacing:.06em; line-height:2; }
  .info-val .num { font-size:1.12rem; }

  #map { min-height:auto; }
  #map .sec-head { padding-top:4.8rem; }
  .map-wrap {
    height:78svh; min-height:560px;
    margin:0 1.1rem 3.5rem;
  }
  .map-overlay {
    left:.8rem; right:.8rem; bottom:.8rem; padding:1.25rem 1.2rem;
  }
  .map-overlay-name { font-size:1.15rem; letter-spacing:.28em; }
  .map-overlay-addr,
  .map-overlay-access { font-size:.74rem; letter-spacing:.08em; }
  .map-link { letter-spacing:.18em; }

  #floor { padding:4.8rem 0 5.5rem; }
  #floor .sec-head { padding-bottom:2.8rem; }
  .floor-stage { padding:0 1.1rem; }
  .floor-map-col { gap:.65rem; min-width:0; width:100%; }
  .floor-plan-wrap {
    width:100%;
    max-width:100%;
    aspect-ratio:auto;
    min-height:280px;
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
  }
  .floor-plan { min-width:760px; height:350px; }
  .floor-map-foot {
    display:block;
    padding:.75rem .85rem;
  }
  .fmf-label,
  .fmf-hint { display:block; margin-bottom:.45rem; line-height:1.7; }
  .zone-chips { gap:.5rem; }
  .zone-chip {
    padding:.72rem .5rem;
    letter-spacing:.16em;
  }
  .floor-detail-head { padding-left:1rem; }
  .floor-photo-card { aspect-ratio:4/3; }

  #gallery { padding:5rem 0 5.5rem; }
  .gallery-row { padding:0 1.2rem; gap:1.7rem; margin-bottom:4.5rem; }
  .g-img,
  .carousel { aspect-ratio:4/3; }
  .g-h { letter-spacing:.24em; }
  .g-h-en,
  .g-tag { letter-spacing:.24em; }
  .g-p { font-size:.82rem; letter-spacing:.08em; line-height:2.15; }
  .carousel-btn { width:38px; height:38px; }

  #cta { padding:5.5rem 1.3rem 6rem; }
  .cta-h { letter-spacing:.25em; line-height:1.6; }
  .cta-sub { letter-spacing:.14em; }
  .btn-circle { width:138px; height:138px; }
}

@media(max-width:560px){
  .hero-title { letter-spacing:.18em; }
  .hero-meta-val { font-size:.95rem; letter-spacing:.1em; }
  .info-row { display:block; }
  .info-key { margin-bottom:.35rem; }
  .info-val .jp-mark { margin-bottom:.45rem; }
  .map-wrap { height:82svh; min-height:600px; margin-inline:.8rem; }
  .floor-photo-card { aspect-ratio:3/4; }
  .g-img,
  .carousel { aspect-ratio:3/4; }
  .cta-h { font-size:1.45rem; }
}

/* 0604 floor plan corrections */
@media (max-width:980px) {
  #floor {
    padding:3.8rem 0 3.1rem;
  }
  #floor .sec-head {
    padding:0 1rem 1.45rem;
  }
  #floor .sec-rule {
    height:28px;
    margin-top:1rem;
  }
  .floor-stage {
    display:grid;
    grid-template-columns:1fr;
    gap:.72rem;
    padding:0 .85rem;
  }
  .floor-map-col {
    gap:.45rem;
  }
  .floor-plan-wrap {
    aspect-ratio:1100/510;
    min-height:0;
    overflow:hidden;
  }
  .floor-plan {
    width:100%;
    min-width:0 !important;
    height:auto !important;
    display:block;
  }
  .floor-map-foot {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:.5rem;
    padding:.45rem .55rem;
  }
  .fmf-label,
  .fmf-hint {
    display:block;
    margin:0;
    line-height:1.4;
  }
  .fmf-label {
    font-size:.48rem;
    letter-spacing:.28em;
  }
  .fmf-hint {
    font-size:.46rem;
    letter-spacing:.16em;
  }
  .zone-chips {
    display:grid;
    grid-template-columns:repeat(5, minmax(0,1fr));
    gap:.45rem;
  }
  .zone-chip {
    flex-basis:auto !important;
    min-width:0;
    min-height:44px;
    padding:.62rem .2rem;
    font-size:.62rem;
    letter-spacing:.12em;
    text-align:center;
  }
  .floor-detail-col {
    position:static;
    gap:.65rem;
  }
  .floor-detail-head {
    display:none;
  }
  .floor-photo-card {
    aspect-ratio:16/8.5;
    min-height:0;
  }
  .fpc-placeholder {
    gap:.55rem;
  }
  .fpc-ph-moon {
    font-size:1.6rem;
  }
  .fpc-ph-txt {
    font-size:.48rem;
    letter-spacing:.22em;
  }
}

@media (max-width:560px) {
  #floor {
    padding-top:3.2rem;
    padding-bottom:2.4rem;
  }
  #floor .sec-head {
    padding-bottom:1.1rem;
  }
  .floor-stage {
    gap:.75rem;
    padding:0 .65rem;
  }
  .floor-plan-wrap {
    border-color:rgba(184,151,90,.26);
  }
  .zone-chips {
    grid-template-columns:repeat(3, minmax(0,1fr));
    gap:.38rem;
  }
  .zone-chip {
    min-height:42px;
    padding:.58rem .12rem;
    font-size:.66rem;
    letter-spacing:.06em;
    line-height:1.25;
  }
  .floor-photo-card {
    aspect-ratio:16/10;
  }
}

/* Keep the embedded map usable on mobile by moving the details below it. */
@media (max-width:980px) {
  .map-wrap {
    display:flex;
    flex-direction:column;
    height:auto;
    min-height:0;
    overflow:visible;
  }
  .map-wrap iframe {
    position:relative;
    inset:auto;
    display:block;
    height:auto;
    min-height:420px;
    aspect-ratio:1/1;
    flex:0 0 auto;
  }
  .map-overlay {
    position:relative;
    left:auto;
    right:auto;
    bottom:auto;
    max-width:none;
    border-top:none;
  }
}

@media (max-width:560px) {
  .map-wrap {
    min-height:0;
    margin-inline:.8rem;
  }
  .map-wrap iframe {
    min-height:360px;
    aspect-ratio:4/5;
  }
}

body[data-lang="en"] .hero-title,
body[data-lang="en"] .sec-ttl,
body[data-lang="en"] .map-overlay-name,
body[data-lang="en"] .fdh-title,
body[data-lang="en"] .g-h,
body[data-lang="en"] .cta-h {
  letter-spacing:.08em;
  padding-left:0;
}

body[data-lang="en"] .hero-furi,
body[data-lang="en"] .hero-en,
body[data-lang="en"] .hero-meta-label,
body[data-lang="en"] .hero-meta-note,
body[data-lang="en"] .sec-furi,
body[data-lang="en"] .sec-en,
body[data-lang="en"] .map-overlay-label,
body[data-lang="en"] .map-overlay-en,
body[data-lang="en"] .map-link,
body[data-lang="en"] .fmf-label,
body[data-lang="en"] .fdh-eyebrow,
body[data-lang="en"] .fdh-sub,
body[data-lang="en"] .g-tag,
body[data-lang="en"] .g-h-en,
body[data-lang="en"] .cta-label,
body[data-lang="en"] .cta-sub {
  letter-spacing:.1em;
  padding-left:0;
}
