/* B/SP: approved Figma 2035:69, 2026-11-11. PC keeps its existing layout. */
.sp-only{display:none}
.hero-photo-frame>picture,.golf-renewal-photo>picture,.hotel-grid figure>div>picture,.shopping-photo>picture,.destination-photo>picture{display:block;width:100%;height:100%}
.shopping-photo>picture>img{display:block;width:100%;height:100%;object-fit:cover;object-position:inherit}
.destination-photo>picture>img{position:absolute;display:block;max-width:none;object-fit:cover}
.sengataki-photo>picture>img{left:0;top:0;width:calc(1558 * var(--u));min-width:100%;height:calc(490 * var(--u))}
.yagasaki-photo>picture>img{left:-6.33%;top:0;width:124.82%;height:100%}
.renewal-gallery img{height:auto}
.snow-visual{display:contents}
@media(max-width:767px){
  .sp-only{display:initial}
  .hero-ribbons{right:24px}
  .hero-location{left:50%;top:calc(42% + 137px);bottom:auto;transform:translateX(-50%);white-space:nowrap}
  .hero-photo{object-position:center}
  .explore{padding:70px 24px 0}
  .explore-links{margin-top:32.5px;gap:20px}
  .explore-links>a{min-height:23px}
  .rule-explore{margin-top:50px}
  .about{padding:74px 24px 80px}
  .about-ribbons{position:absolute;top:28px;left:auto;right:24px;margin:0}
  .about-copy h2{width:174px;font-size:25px;line-height:1.36;margin-bottom:13px}
  .about-copy>p:first-of-type{width:calc(100% - 118px)}
  .about-copy p+p{margin-top:12px}
  .area-map{padding-top:60px;padding-bottom:38px}
  .area-map .map-image{aspect-ratio:350/284.265625}
  .resort-map .map-image{aspect-ratio:390/234}
  .map-image>img{height:100%;object-fit:contain}
  .resort{padding-top:40px;padding-bottom:80px}
  .resort-ribbons{height:0;overflow:visible}
  .resort-map{width:calc(100% + 48px);margin:66px -24px 0}
  .resort-map .map-image>span{left:62px;top:-12px;font-size:12px}
  .resort-map .open-map{margin-top:15px}
  .experience-heading{height:51px;min-height:51px}
  .experience-heading h2{font-size:51px;line-height:1}
  .shopping{padding-bottom:80px}
  .shopping-photo{margin-top:42px}
  .shopping-ribbons{position:absolute;left:auto;right:20px;top:183.2px;margin:0}
  .shopping-copy{margin-top:88px}
  .shopping-eyebrow{height:38px;margin-bottom:24px}
  .shopping-eyebrow>p{max-width:190px;line-height:1.6}
  .shopping-copy>h3{margin-bottom:24px}
  .shopping-cta{margin-top:30px}
  .stay{padding-bottom:80px}
  .stay-intro{margin:37px 24px 0}
  .stay-feature{width:89%;margin-top:35px}
  .stay-feature figcaption{width:166px;margin:0 61px 0 auto;padding-top:19px;white-space:nowrap}
  .stay figcaption small{margin-top:12px}
  .stay-ribbons{position:absolute;left:20px;top:388px;margin:0}
  .hotel-grid{display:flex;flex-direction:column;width:267px;margin:56px 20px 0 auto;padding:0;gap:35px}
  .hotel-grid>figure:nth-child(2){display:none}
  .hotel-grid figcaption{margin-top:19px}
  .hotel-grid figcaption span{font-size:17px;line-height:1.6;min-height:0}
  .hotel-grid figcaption small{font-size:8px;line-height:12px;margin-top:9px}
  .hotel-grid figure:nth-child(3) img{height:151.45%;top:-25.73%}
  .hotel-grid figure:last-child img{left:-1.87%;top:-51.52%;width:103.37%;height:156.56%}
  .renewal{padding-top:38px;padding-bottom:28px}
  .renewal-heading{flex-direction:column;align-items:center;gap:21px;padding-bottom:30px}
  .renewal-heading>span:not(.rule){line-height:1}
  .renewal-intro{gap:56px;margin-top:60px}
  .villa-logo{height:64px}
  .renewal-intro h2{margin-bottom:24px;text-align:center}
  .renewal-intro dl{margin-top:25px}
  .renewal-gallery{row-gap:25px}
  .renewal-actions{flex-direction:column;gap:24px}
  .plan-button{height:43px;padding:0 20px}
  .renewal-note{margin-top:28px}
  .golf{padding-top:78.3px;padding-bottom:64px}
  .golf-copy{margin:42px 24px 35px}
  .golf-grid{row-gap:34px}
  .golf-grid small{margin-bottom:6px}
  .golf-ribbons{position:absolute;left:16px;top:auto;bottom:-262px;margin:0}
  .golf-renewal{padding-top:51px;padding-bottom:80px}
  .golf-topics{margin-bottom:20px;text-align:right}
  .golf-renewal-label{margin-bottom:42px}
  .golf-renewal-copy .release-link{width:max-content;margin-left:auto}
  .snow{padding-top:78px;padding-bottom:78px}
  .snow-copy{margin-top:42px}
  .snow-visual{display:block;position:relative}
  .snow-ribbons{position:absolute;left:auto;right:22px;top:-55px;margin:0}
  .snow-ribbons .ribbon-back{margin-top:55px}
  .sengataki{margin-top:0;padding-bottom:80px}
  .sengataki::before{display:none}
  .sengataki-photo{margin-top:58px}
  .sengataki-photo>picture>img{width:239.02%;height:105.2%;left:-7.23%}
  .sengataki-ornament{position:absolute;left:auto;right:24px;top:168px;margin:0;z-index:1;pointer-events:none}
  .sengataki-ribbons{position:absolute;left:auto;right:24px;top:442px;margin:0;float:none}
  .sengataki-copy>p:first-of-type{width:calc(100% - 127.2px)}
  .sengataki-gallery{margin-top:40px}
  .yagasaki{margin-top:78px;margin-bottom:123px}
  .yagasaki-ribbons{position:absolute;left:auto;right:24px;top:193.7px;margin:0;float:none}
  .yagasaki-copy>p{width:calc(100% - 127.2px)}
  .yagasaki-photo>picture>img{left:-57.9%;width:225.81%}
  .closing-copy{margin-inline:34px}
  .closing h2{white-space:nowrap;font-synthesis:none}
  .site-footer{height:140px;min-height:140px;padding:28px 24px 0}
}

/* SP ribbon bottoms: include the vertical punctuation's visible bearing.
   Preserve the text/top edge; extend each board to a consistent lower margin. */
@media(max-width:767px){
  .ribbons:not(.hero-ribbons) .ribbon{
    height:calc((46 * var(--ribbon-glyph-count) + 20) * var(--ribbon-unit));
  }
}

/* Updated native area map: use the complete frame width on SP. */
@media(max-width:767px){.area-map .map-image{width:100%;aspect-ratio:1680.772/1314.337}}
