:root{
  --white:#FFFFFF;
  --paper:#FBFAF7;
  --offwhite:#F4F2EC;
  --line:#E3E0D7;
  --line-soft:#EFEDE6;
  --ink:#1A1A1A;
  --ink-2:#3A3A36;
  --ink-3:#7A7A74;
  --ink-4:#B4B2AB;
  --brass:#957C58;
  --serif:'Cormorant Garamond','Noto Serif JP', serif;
  --jp:'Noto Serif JP', serif;
  --sans:'Inter', system-ui, sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;}
html,body{background:var(--white);color:var(--ink);font-family:var(--sans);overflow-x:hidden;-webkit-font-smoothing:antialiased;font-weight:300;}
a{color:inherit;text-decoration:none;}
img{display:block;max-width:100%;}

/* ============ Cursor ============ */
.cursor, .cursor-ring { display: none; }
body { cursor: auto; }

/* ============ Topbar ============ */
.topbar{position:fixed;top:0;left:0;right:0;z-index:50;padding:20px 24px;
  display:flex;align-items:center;justify-content:space-between;color:var(--ink);
  transition:color .4s, background .4s, border .4s;}
.topbar.on-dark{color:#FFF;}
.topbar .logo{font-family:var(--serif);font-weight:300;font-size:26px;letter-spacing:.32em;text-transform:lowercase;z-index:100;}
.topbar .nav{display:none;}
.topbar .right{display:flex;align-items:center;gap:20px;}
.topbar .right span{display:none;}
.topbar .booknow{display:none;}

/* Hamburger Toggle Button */
.menu-toggle {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 24px;
  height: 12px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  z-index: 100;
  color: inherit;
}
.menu-toggle span {
  width: 100%;
  height: 1px;
  background-color: currentColor;
  transition: transform .3s ease, background-color .3s ease;
}
.menu-active .menu-toggle span:first-child {
  transform: translateY(5.5px) rotate(45deg);
}
.menu-active .menu-toggle span:last-child {
  transform: translateY(-5.5px) rotate(-45deg);
}

/* ============ Mobile Navigation Drawer ============ */
.mobile-drawer {
  position: fixed;
  inset: 0;
  z-index: 45;
  background: rgba(251, 250, 247, 0.96);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 80px 32px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.menu-active .mobile-drawer {
  opacity: 1;
  pointer-events: auto;
}
.drawer-nav {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-bottom: 48px;
}
.drawer-nav a {
  font-family: var(--serif);
  font-size: 32px;
  font-weight: 300;
  letter-spacing: 0.1em;
  color: var(--ink);
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}
.menu-active .drawer-nav a {
  opacity: 1;
  transform: translateY(0);
}
.menu-active .drawer-nav a:nth-child(1) { transition-delay: 0.05s; }
.menu-active .drawer-nav a:nth-child(2) { transition-delay: 0.1s; }
.menu-active .drawer-nav a:nth-child(3) { transition-delay: 0.15s; }
.menu-active .drawer-nav a:nth-child(4) { transition-delay: 0.2s; }
.menu-active .drawer-nav a:nth-child(5) { transition-delay: 0.25s; }
.menu-active .drawer-nav a:nth-child(6) { transition-delay: 0.3s; }

.drawer-foot {
  display: flex;
  flex-direction: column;
  gap: 20px;
  border-top: 0.5px solid var(--line);
  padding-top: 24px;
}
.drawer-foot span {
  font-size: 10px;
  letter-spacing: 0.3em;
  color: var(--ink-3);
}
.drawer-book {
  display: inline-block;
  padding: 14px 28px;
  border: 0.5px solid var(--ink);
  font-size: 10px;
  letter-spacing: 0.3em;
  text-align: center;
  font-weight: 300;
  color: var(--ink);
  transition: background 0.4s, color 0.4s;
}

/* ============ Hero ============ */
.hero{position:relative;height:100vh;min-height:640px;overflow:hidden;color:#fff;background:#000;}
.hero .img{position:absolute;inset:0;
  background:url('assets/art-14.webp') no-repeat center center/cover;}
.hero .img::before{display:none;}
.hero .img::after{display:none;}
.hero .ripple{position:absolute;left:0;right:0;top:62%;bottom:0;
  background:repeating-linear-gradient(180deg,rgba(255,255,255,0) 0 16px,rgba(255,255,255,.04) 16px 17px);
  mask-image:linear-gradient(180deg,#000,transparent 90%);}
.hero .vignette{position:absolute;inset:0;
  background:radial-gradient(ellipse at center,rgba(0,0,0,0) 50%,rgba(0,0,0,.18) 100%);}

.hero-top{position:absolute;top:100px;left:24px;right:24px;display:flex;flex-direction:column;gap:12px;}
.hero-top .meta{font-family:var(--serif);font-style:italic;font-weight:300;font-size:12px;letter-spacing:.04em;opacity:.9;}
.hero-top .stamp{font-size:9px;letter-spacing:.3em;line-height:1.6;text-align:left;opacity:.85;font-weight:300;}

.hero-mid{position:absolute;left:24px;right:24px;top:48%;transform:translateY(-50%);text-align:center;}
.hero-mid .eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:9px;letter-spacing:.4em;font-weight:300;}
.hero-mid .eyebrow::before,.hero-mid .eyebrow::after{content:"";width:20px;height:0.5px;background:currentColor;}
.hero-mid h1{font-family:var(--serif);font-weight:300;font-size:42px;line-height:1.15;letter-spacing:.005em;margin-top:24px;}
.hero-mid h1 em{font-style:italic;font-weight:300;}
.hero-mid h1 .word{display:inline-block;overflow:hidden;}
.hero-mid h1 .word > span{display:inline-block;transform:translateY(110%);
  animation:rise 1.8s cubic-bezier(.2,.8,.2,1) forwards;}
.hero-mid h1 .l2 > span{animation-delay:.25s;}
@keyframes rise{to{transform:translateY(0);}}
.hero-mid .jp{margin-top:24px;font-family:var(--jp);font-weight:300;font-size:11px;letter-spacing:.3em;opacity:.9;}

.hero-bot{position:absolute;left:24px;right:24px;bottom:32px;display:flex;align-items:end;justify-content:space-between;gap:20px;}
.hero-bot .scroll{display:none;}
.hero-bot .right{font-size:9px;letter-spacing:.3em;font-weight:300;opacity:.85;text-align:left;}
.hero-bot .right:last-child{text-align:right;}

/* ============ Intro ============ */
.intro{padding:100px 24px 80px;text-align:center;background:var(--white);}
.intro .eyebrow{display:inline-flex;align-items:center;gap:14px;font-size:10px;letter-spacing:.5em;color:var(--ink-3);}
.intro .eyebrow::before,.intro .eyebrow::after{content:"";width:24px;height:0.5px;background:currentColor;}
.intro h2{font-family:var(--serif);font-weight:300;font-size:36px;line-height:1.2;margin-top:24px;letter-spacing:.005em;color:var(--ink);}
.intro h2 em{font-style:italic;}
.intro .jp{margin-top:32px;font-family:var(--jp);font-weight:300;font-size:14px;line-height:1.8;letter-spacing:.12em;color:var(--ink-2);}
.intro p{margin-top:32px;font-family:var(--jp);font-weight:300;font-size:13px;line-height:2.2;color:var(--ink-3);letter-spacing:.04em;}
.intro .divider{width:1px;height:60px;background:var(--line);margin:60px auto 0;}

/* ============ Section header style ============ */
.sec-head{display:flex;flex-direction:column;gap:20px;padding:0 0 40px;}
.sec-head .l-side .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:12px;}
.sec-head .l-side h2{font-family:var(--serif);font-weight:300;font-size:36px;line-height:1.1;color:var(--ink);letter-spacing:.005em;}
.sec-head .l-side h2 em{font-style:italic;}
.sec-head .l-side .jp{margin-top:12px;font-family:var(--jp);font-size:13px;letter-spacing:.12em;color:var(--ink-3);}
.sec-head .r-side p{font-family:var(--jp);font-weight:300;font-size:13px;line-height:2.0;color:var(--ink-3);letter-spacing:.04em;}
.sec-head .r-side .more{margin-top:16px;font-family:var(--serif);font-style:italic;font-size:13px;color:var(--ink);display:inline-flex;align-items:center;gap:8px;border-bottom:0.5px solid var(--ink);padding-bottom:4px;}

/* ============ Stay ============ */
.stay{padding:100px 24px;background:var(--white);}
.villa-grid{display:flex;flex-direction:column;gap:56px;}
.villa{position:relative;display:block;}
.villa .ph{aspect-ratio:5/3.6;overflow:hidden;position:relative;}
.villa .ph .inner{position:absolute;inset:0;transition:transform 1.4s cubic-bezier(.2,.8,.2,1);}
.villa-a .ph .inner{background:url('assets/art-4.webp') no-repeat center center/cover;}
.villa-a .ph .inner::before{display:none;}
.villa-a .ph .inner::after{display:none;}
.villa-b .ph .inner{background:url('assets/art-8.webp') no-repeat center center/cover;}
.villa-b .ph .inner::before{display:none;}
.villa-b .ph .inner::after{display:none;}

.villa-meta{display:flex;justify-content:space-between;align-items:end;padding:20px 0 0 0;border-bottom:0.5px solid var(--line);padding-bottom:12px;}
.villa-meta .info .no{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.3em;color:var(--brass);margin-bottom:6px;}
.villa-meta .info .name{font-family:var(--jp);font-weight:300;font-size:24px;color:var(--ink);letter-spacing:.06em;}
.villa-meta .info .name em{font-family:var(--serif);font-style:italic;font-weight:300;font-size:18px;color:var(--ink-3);display:block;margin-top:4px;letter-spacing:.04em;}
.villa-meta .arrow{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--ink);}
.villa-desc{margin-top:16px;font-family:var(--jp);font-size:13px;line-height:2.0;color:var(--ink-3);letter-spacing:.04em;}

.bath-amenities{margin-top:72px;padding:40px 0;border-top:0.5px solid var(--line-soft);border-bottom:0.5px solid var(--line-soft);display:flex;flex-direction:column;gap:32px;}
.amenity-head .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:16px;}
.amenity-head h3{font-family:var(--serif);font-weight:300;font-size:38px;line-height:1.1;color:var(--ink);letter-spacing:.005em;}
.amenity-head h3 em{font-style:italic;}
.amenity-head .jp{margin-top:18px;font-family:var(--jp);font-size:13px;line-height:1.9;letter-spacing:.12em;color:var(--ink-3);}
.amenity-list{padding-top:22px;border-top:0.5px solid var(--line);}
.amenity-list span{display:block;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);margin-bottom:16px;}
.amenity-list ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;}
.amenity-list li{font-family:var(--jp);font-size:13px;line-height:1.6;color:var(--ink-3);letter-spacing:.04em;display:flex;gap:10px;}
.amenity-list li::before{content:"";flex:none;width:10px;height:0.5px;background:var(--brass);margin-top:.8em;}

.bed-space{margin-top:88px;padding-top:56px;border-top:0.5px solid var(--line-soft);display:flex;flex-direction:column;gap:36px;}
.bed-gallery{display:grid;grid-template-columns:1fr;gap:18px;}
.bed-card{display:block;}
.bed-photo{position:relative;aspect-ratio:5/3.6;overflow:hidden;background:no-repeat center center/cover;}
.bed-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(15,12,8,.28));}
.bed-photo-01{background-image:url('assets/dsc05241.webp');}
.bed-photo-02{background-image:url('assets/art-15.webp');}
.bed-photo-03{background-image:url('assets/cc39790-1920.webp');}
.bed-card figcaption{padding:14px 0 0;border-bottom:0.5px solid var(--line);padding-bottom:12px;}
.bed-card figcaption span{display:block;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);margin-bottom:6px;}
.bed-card figcaption strong{display:block;font-family:var(--jp);font-weight:300;font-size:15px;line-height:1.6;color:var(--ink);letter-spacing:.04em;}
.bed-body .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:18px;}
.bed-body h3{font-family:var(--serif);font-weight:300;font-size:42px;line-height:1.1;color:var(--ink);letter-spacing:.005em;}
.bed-body h3 em{font-style:italic;}
.bed-body .jp{margin-top:20px;font-family:var(--jp);font-size:13px;line-height:1.9;letter-spacing:.12em;color:var(--ink-3);}
.bed-body p{margin-top:22px;font-family:var(--jp);font-size:13px;line-height:2.05;color:var(--ink-3);letter-spacing:.04em;}
.bed-specs{margin-top:32px;border-top:0.5px solid var(--line);border-bottom:0.5px solid var(--line);display:flex;flex-direction:column;}
.bed-specs div{padding:18px 0;border-bottom:0.5px solid var(--line-soft);}
.bed-specs div:last-child{border-bottom:0;}
.bed-specs span{display:block;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);margin-bottom:8px;}
.bed-specs strong{display:block;font-family:var(--serif);font-weight:300;font-size:24px;line-height:1.2;color:var(--ink);letter-spacing:.03em;}
.bed-specs em{display:block;margin-top:6px;font-family:var(--jp);font-style:normal;font-size:12px;line-height:1.7;color:var(--ink-3);letter-spacing:.04em;}

.kitchen-space{margin-top:88px;padding-top:56px;border-top:0.5px solid var(--line-soft);display:flex;flex-direction:column;gap:36px;}
.kitchen-body .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:18px;}
.kitchen-body h3{font-family:var(--serif);font-weight:300;font-size:42px;line-height:1.1;color:var(--ink);letter-spacing:.005em;}
.kitchen-body h3 em{font-style:italic;}
.kitchen-body .jp{margin-top:20px;font-family:var(--jp);font-size:13px;line-height:1.9;letter-spacing:.12em;color:var(--ink-3);}
.kitchen-body p{margin-top:22px;font-family:var(--jp);font-size:13px;line-height:2.05;color:var(--ink-3);letter-spacing:.04em;}
.kitchen-specs{margin-top:32px;padding-top:22px;border-top:0.5px solid var(--line);border-bottom:0.5px solid var(--line);padding-bottom:22px;}
.kitchen-specs span{display:block;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);margin-bottom:14px;}
.kitchen-specs ul{list-style:none;display:flex;flex-direction:column;gap:12px;}
.kitchen-specs li{font-family:var(--jp);font-size:13px;line-height:1.75;color:var(--ink-3);letter-spacing:.04em;display:flex;gap:10px;}
.kitchen-specs li::before{content:"";flex:none;width:10px;height:0.5px;background:var(--brass);margin-top:.85em;}
.kitchen-gallery{display:grid;grid-template-columns:1fr;gap:18px;}
.kitchen-card{display:block;}
.kitchen-photo{position:relative;aspect-ratio:5/3.6;overflow:hidden;background:no-repeat center center/cover;}
.kitchen-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(15,12,8,.28));}
.kitchen-photo-01{background-image:url('assets/art-6.webp');}
.kitchen-photo-02{background-image:url('assets/dsc05289.webp');}
.kitchen-card figcaption{padding:14px 0 0;border-bottom:0.5px solid var(--line);padding-bottom:12px;}
.kitchen-card figcaption span{display:block;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);margin-bottom:6px;}
.kitchen-card figcaption strong{display:block;font-family:var(--jp);font-weight:300;font-size:15px;line-height:1.6;color:var(--ink);letter-spacing:.04em;}

/* ============ Quote ============ */
.quote{padding:100px 24px;background:var(--white);text-align:center;border-top:0.5px solid var(--line-soft);border-bottom:0.5px solid var(--line-soft);}
.quote .ql{font-family:var(--serif);font-weight:300;font-style:italic;font-size:26px;line-height:1.4;color:var(--ink);}
.quote .ql .stroke{-webkit-text-stroke:0.4px var(--ink);color:transparent;font-style:normal;}
.quote .jp{margin-top:24px;font-family:var(--jp);font-size:12px;letter-spacing:.4em;color:var(--ink-3);}

/* ============ Sauna ============ */
.sauna{background:#101010;color:#FBFAF7;position:relative;overflow:hidden;}
.sauna-wrap{display:flex;flex-direction:column;}
.sauna-img{height:320px;background:url('assets/art-1.webp') no-repeat center center/cover;position:relative;overflow:hidden;}
.sauna-img::before{display:none;}
.sauna-img::after{display:none;}
.sauna-img .glow{position:absolute;left:50%;top:55%;transform:translateX(-50%);width:200px;height:120px;
  border-radius:50% / 80% 80% 20% 20%;background:radial-gradient(closest-side,#FFB063,rgba(255,176,99,0));filter:blur(10px);
  animation:emberPulse 4.5s ease-in-out infinite;}
@keyframes emberPulse{50%{opacity:.55;}}
.sauna-img .steam{position:absolute;inset:0;
  background:radial-gradient(40% 30% at 30% 60%,rgba(255,230,200,.09),transparent 80%),
             radial-gradient(40% 30% at 70% 80%,rgba(255,230,200,.06),transparent 80%);
  animation:smoke 16s ease-in-out infinite;}
@keyframes smoke{50%{transform:translateY(-12px);}}

.sauna-body{padding:80px 24px;display:flex;flex-direction:column;justify-content:center;}
.sauna-body .num{font-family:var(--serif);font-style:italic;font-size:12px;color:#B89773;letter-spacing:.3em;margin-bottom:24px;}
.sauna-body h2{font-family:var(--serif);font-weight:300;font-size:48px;line-height:1.15;}
.sauna-body h2 em{font-style:italic;}
.sauna-body h2 .stroke{-webkit-text-stroke:0.5px #FBFAF7;color:transparent;}
.sauna-body .jp{margin-top:24px;font-family:var(--jp);font-weight:300;font-size:13px;letter-spacing:.12em;color:#E8E4D9;opacity:.9;}
.sauna-body p{margin-top:20px;font-family:var(--jp);font-size:13px;line-height:2.0;color:#D0CCC0;letter-spacing:.04em;}
.sauna-body ul{margin-top:36px;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;padding-top:20px;border-top:0.5px solid rgba(255,250,232,.18);}
.sauna-body li{font-family:var(--jp);font-size:12px;color:#E8E4D9;display:flex;flex-direction:column;gap:4px;letter-spacing:.04em;}
.sauna-body li em{font-family:var(--serif);font-style:italic;font-size:13px;color:#B89773;font-weight:300;letter-spacing:.04em;}

/* Sauna schedule */
.sauna-schedule{background:#0A0A0A;color:#FBFAF7;padding:80px 24px;border-top:0.5px solid rgba(255,250,232,.12);}
.sched-head{text-align:center;margin-bottom:60px;}
.sched-head .num{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.3em;color:#B89773;margin-bottom:12px;}
.sched-head h3{font-family:var(--serif);font-weight:300;font-style:italic;font-size:42px;line-height:1.1;color:#FBFAF7;letter-spacing:.005em;}
.sched-head .jp{margin-top:16px;font-family:var(--jp);font-size:12px;letter-spacing:.4em;color:#D7D0BD;}

.sched-grid{display:flex;flex-direction:column;gap:48px;}
.sched-divider{display:none;}
.sched-col{padding:0;}
.sched-villa{display:flex;align-items:baseline;gap:12px;padding-bottom:20px;border-bottom:0.5px solid rgba(255,250,232,.18);margin-bottom:32px;}
.sched-villa .lbl{font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:#B89773;}
.sched-villa .big{font-family:var(--serif);font-weight:300;font-style:italic;font-size:54px;line-height:.85;color:#FBFAF7;}
.sched-villa .name{font-family:var(--jp);font-weight:300;font-size:14px;letter-spacing:0.1em;color:#D7D0BD;margin-left:auto;text-align:right;}
.sched-villa .name em{font-family:var(--serif);font-style:italic;font-size:11px;color:#9B947F;display:block;margin-top:2px;letter-spacing:.04em;}

.sched-block{margin-bottom:32px;}
.sched-block:last-child{margin-bottom:0;}
.sched-block .block-head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:10px;margin-bottom:14px;border-bottom:0.5px solid rgba(255,250,232,.12);}
.sched-block .kind{font-family:var(--serif);font-weight:300;font-style:italic;font-size:20px;color:#FBFAF7;letter-spacing:.04em;}
.sched-block .dur{font-family:var(--sans);font-size:9px;letter-spacing:.2em;color:#9B947F;font-weight:300;}
.sched-block ul{list-style:none;display:flex;flex-direction:column;gap:12px;}
.sched-block li{display:grid;grid-template-columns:24px 1fr;align-items:baseline;gap:12px;}
.sched-block .i{font-family:var(--serif);font-style:italic;font-size:13px;color:#B89773;letter-spacing:.04em;}
.sched-block .t{font-family:var(--serif);font-weight:300;font-size:20px;letter-spacing:.04em;color:#FBFAF7;font-variant-numeric:tabular-nums;}
.sched-block .t .sep{color:#7A7464;margin:0: 6px;font-style:italic;font-weight:300;}

.sched-notes{margin:60px auto 0;padding-top:36px;border-top:0.5px solid rgba(255,250,232,.16);}
.sched-notes h4{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.3em;color:#B89773;margin-bottom:16px;}
.sched-notes ul{list-style:none;display:flex;flex-direction:column;gap:14px;}
.sched-notes li{font-family:var(--jp);font-size:13px;line-height:1.8;color:#C9C2AE;letter-spacing:.04em;display:flex;gap:10px;}
.sched-notes li::before{content:"";flex:none;width:10px;height:0.5px;background:#7A7464;margin-top:.85em;}

/* ============ Dining ============ */
.dining{padding:100px 24px;background:var(--white);}
.meal-grid{display:grid;grid-template-columns:1fr;gap:42px;}
.meal-card{display:flex;flex-direction:column;gap:20px;}
.meal-photo{aspect-ratio:5/3.6;overflow:hidden;background:no-repeat center center/cover;position:relative;}
.meal-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(15,12,8,.18));}
.meal-photo-bbq{background-image:url('assets/dining-13.webp');}
.meal-copy{border-top:0.5px solid var(--line);padding-top:18px;}
.meal-copy .no{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.3em;color:var(--brass);margin-bottom:10px;}
.meal-copy h3{font-family:var(--jp);font-weight:300;font-size:22px;line-height:1.4;color:var(--ink);letter-spacing:.06em;}
.meal-copy h3 em{display:block;font-family:var(--serif);font-style:italic;font-weight:300;font-size:15px;color:var(--ink-3);letter-spacing:.04em;margin-top:2px;}
.meal-copy p{margin-top:14px;font-family:var(--jp);font-size:13px;line-height:2;color:var(--ink-3);letter-spacing:.04em;}
.breakfast-note{border-top:0.5px solid var(--line);border-bottom:0.5px solid var(--line-soft);padding:24px 0;}
.breakfast-note .no{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.3em;color:var(--brass);margin-bottom:10px;}
.breakfast-note h3{font-family:var(--jp);font-weight:300;font-size:22px;line-height:1.4;color:var(--ink);letter-spacing:.06em;}
.breakfast-note h3 em{display:block;font-family:var(--serif);font-style:italic;font-weight:300;font-size:15px;color:var(--ink-3);letter-spacing:.04em;margin-top:2px;}
.breakfast-note p{margin-top:14px;font-family:var(--jp);font-size:13px;line-height:2;color:var(--ink-3);letter-spacing:.04em;}

/* ============ Experience ============ */
.exp{background:var(--paper);padding:100px 24px;border-top:0.5px solid var(--line-soft);border-bottom:0.5px solid var(--line-soft);}
.exp-head{text-align:center;margin-bottom:60px;}
.exp-head .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:12px;}
.exp-head h2{font-family:var(--serif);font-weight:300;font-style:italic;font-size:42px;line-height:1.1;color:var(--ink);}
.exp-head .jp{margin-top:16px;font-family:var(--jp);font-size:13px;letter-spacing:.12em;color:var(--ink-3);}

.exp-row{display:flex;flex-direction:column;gap:40px;}
.exp-item{display:block;}
.exp-item .ph{aspect-ratio:4/5;overflow:hidden;position:relative;}
.exp-item .ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s cubic-bezier(.2,.8,.2,1);}
.exp-item:hover .ph img{transform:scale(1.04);}
.exp-item:nth-child(2){transform:none;}
.exp-item .meta{margin-top:20px;padding-bottom:10px;border-bottom:0.5px solid var(--line);display:flex;justify-content:space-between;align-items:end;}
.exp-item .no{font-family:var(--serif);font-style:italic;font-size:11px;color:var(--brass);letter-spacing:.3em;}
.exp-item h3{font-family:var(--jp);font-weight:300;font-size:18px;letter-spacing:.04em;color:var(--ink);}
.exp-item h3 em{display:block;font-family:var(--serif);font-style:italic;font-weight:300;font-size:13px;color:var(--ink-3);margin-bottom:2px;letter-spacing:.04em;}
.exp-item .arrow{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--ink);}
.exp-item p{margin-top:16px;font-family:var(--jp);font-size:13px;line-height:2.0;color:var(--ink-3);letter-spacing:.04em;}

/* ============ MORE SPOTS list ============ */
.exp-more{margin-top:80px;padding-top:40px;border-top:0.5px solid var(--line);}
.exp-more-head{display:flex;flex-direction:column;gap:12px;align-items:flex-start;margin-bottom:32px;}
.exp-more-head .num{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.3em;color:var(--brass);}
.exp-more-head h3{font-family:var(--serif);font-weight:300;font-size:28px;line-height:1.1;color:var(--ink);letter-spacing:.005em;}
.exp-more-head h3 em{font-style:italic;}
.exp-more-list{list-style:none;}
.exp-more-list li{border-top:0.5px solid var(--line);}
.exp-more-list li:last-child{border-bottom:0.5px solid var(--line);}
.exp-more-list li a{display:flex;flex-direction:column;gap:12px;padding:20px 0;color:var(--ink);}
.exp-more-list .no{font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);}
.exp-more-list .nm{font-family:var(--jp);font-weight:300;font-size:18px;letter-spacing:.04em;display:flex;justify-content:space-between;align-items:center;width:100%;}
.exp-more-list .nm em{font-family:var(--serif);font-style:italic;font-weight:300;font-size:13px;color:var(--ink-3);margin-left:8px;}
.exp-more-list .desc{font-family:var(--jp);font-size:13px;color:var(--ink-3);line-height:1.8;letter-spacing:.04em;}
.exp-more-list .arr{display:none;}
.exp-source{margin-top:32px;font-family:var(--serif);font-style:italic;font-size:11px;color:var(--ink-4);text-align:right;letter-spacing:.04em;}
.exp-source a{border-bottom:0.5px solid var(--ink-4);padding-bottom:2px;}

/* ============ NEWS ============ */
.news{padding:100px 24px;background:var(--white);border-top:0.5px solid var(--line-soft);}
.news-grid{display:flex;flex-direction:column;gap:60px;}
.instagram-btn{margin-top:24px;display:inline-flex;align-items:center;gap:14px;padding:14px 18px;border:0.5px solid var(--ink);color:var(--ink);transition:background .35s,color .35s,border-color .35s;}
.instagram-btn .icon{font-family:var(--serif);font-size:20px;line-height:1;color:var(--brass);}
.instagram-btn strong{display:block;font-family:var(--serif);font-style:italic;font-weight:300;font-size:18px;line-height:1.1;letter-spacing:.04em;}
.instagram-btn em{display:block;margin-top:3px;font-family:var(--sans);font-style:normal;font-size:10px;letter-spacing:.18em;color:var(--ink-3);transition:color .35s;}
.instagram-btn .arr{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--brass);transition:transform .35s,color .35s;}
.instagram-btn:hover{background:var(--ink);color:#fff;border-color:var(--ink);}
.instagram-btn:hover em,.instagram-btn:hover .icon,.instagram-btn:hover .arr{color:#D9CFB8;}
.instagram-btn:hover .arr{transform:translate(3px,-3px);}
.instagram-inline{font-weight:400;}

.news-feature{display:block;}
.news-feature .ph{aspect-ratio:5/4;overflow:hidden;position:relative;}
.news-feature .ph div{position:absolute;inset:0;transition:transform 1.4s cubic-bezier(.2,.8,.2,1);
  background:url('assets/cc39790-scaled.webp') no-repeat center center/cover;}
.news-feature .ph div::before{display:none;}
.news-feature .ph div::after{display:none;}
.news-feature:hover .ph div{transform:scale(1.04);}
.news-feature .meta{display:flex;gap:16px;align-items:baseline;margin-top:20px;padding-bottom:10px;border-bottom:0.5px solid var(--line);}
.news-feature .meta .date{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.2em;color:var(--brass);}
.news-feature .meta .cat{font-family:var(--jp);font-size:11px;letter-spacing:.12em;color:var(--ink-3);}
.news-feature .meta .feat{margin-left:auto;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.2em;color:var(--ink-3);}
.news-feature h3{margin-top:16px;font-family:var(--jp);font-weight:300;font-size:20px;line-height:1.5;color:var(--ink);letter-spacing:.04em;}
.news-feature h3 em{display:block;font-family:var(--serif);font-style:italic;font-weight:300;font-size:15px;color:var(--ink-3);margin-bottom:4px;letter-spacing:.04em;}
.news-feature p{margin-top:12px;font-family:var(--jp);font-size:13px;line-height:1.8;color:var(--ink-3);letter-spacing:.04em;}
.news-feature .feature-arrow{margin-top:16px;display:inline-flex;align-items:center;gap:8px;font-family:var(--serif);font-style:italic;font-size:13px;color:var(--ink);border-bottom:0.5px solid var(--ink);padding-bottom:4px;transition:color .35s,border-color .35s;}
.news-feature:hover .feature-arrow{color:var(--brass);border-color:var(--brass);}

.news-list{display:flex;flex-direction:column;padding-top:0;}
.news-list .news-list-head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:12px;margin-bottom:12px;}
.news-list .news-list-head .ttl{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--ink-3);letter-spacing:.04em;}
.news-list .news-list-head .all{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--ink);border-bottom:0.5px solid var(--ink);padding-bottom:4px;}
.news-item{display:flex;flex-direction:column;gap:10px;padding:20px 0;border-top:0.5px solid var(--line);color:var(--ink);}
.news-list .news-item:last-child{border-bottom:0.5px solid var(--line);}
.news-item .left{display:flex;gap:12px;align-items:baseline;}
.news-item .date{font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.2em;color:var(--brass);}
.news-item .cat{font-family:var(--jp);font-size:11px;letter-spacing:.12em;color:var(--ink-3);font-weight:400;}
.news-item .title{font-family:var(--jp);font-weight:300;font-size:15px;line-height:1.6;letter-spacing:.04em;color:inherit;}
.news-item .title em{font-family:var(--serif);font-style:italic;font-weight:300;font-size:12px;color:var(--ink-3);margin-left:8px;letter-spacing:.04em;}
.news-item .arr{display:none;}

/* ============ CTA ============ */
.cta{padding:100px 24px;background:var(--white);text-align:center;border-top:0.5px solid var(--line-soft);}
.cta .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;}
.cta h2{font-family:var(--serif);font-weight:300;font-size:42px;line-height:1.15;margin-top:24px;color:var(--ink);letter-spacing:.005em;}
.cta h2 em{font-style:italic;}
.cta h2 .stroke{-webkit-text-stroke:0.4px var(--ink);color:transparent;}
.cta .jp{margin-top:24px;font-family:var(--jp);font-size:13px;letter-spacing:.12em;color:var(--ink-3);}
.cta .btn-wrap{margin-top:40px;display:flex;flex-direction:column;align-items:center;gap:14px;}
.cta .btn{display:inline-flex;align-items:center;justify-content:center;gap:14px;padding:16px 32px;border:0.5px solid var(--ink);
  font-size:10px;letter-spacing:.3em;color:var(--ink);transition:background .4s,color .4s;}
.cta .btn:hover{background:var(--ink);color:#FFF;}
.cta .btn .arrow{font-family:var(--serif);font-style:italic;font-size:13px;letter-spacing:0;}
/* OTA reservation buttons */
.cta .btn-ota{min-width:260px;}
.cta .btn-ota .ota-name{font-family:var(--jp);font-weight:400;font-size:12px;letter-spacing:.18em;}
.cta .btn-ota .ota-name em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:.04em;color:var(--brass);margin-right:8px;transition:color .4s;}
.cta .btn-ota:hover .ota-name em{color:#E3CFA6;}
/* booking.com = primary (filled) */
.cta .btn-ota.is-primary{background:var(--ink);color:#FFF;}
.cta .btn-ota.is-primary .ota-name em{color:#E3CFA6;}
.cta .btn-ota.is-primary:hover{background:var(--brass);border-color:var(--brass);}
.cta .btn-ota.is-primary:hover .ota-name em{color:#FFF;}

/* ============ FAQ ============ */
.faq{padding:100px 24px;background:var(--white);border-top:0.5px solid var(--line-soft);}
.faq-head{text-align:center;margin-bottom:56px;}
.faq-head .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:16px;}
.faq-head h2{font-family:var(--serif);font-weight:300;font-size:42px;line-height:1.12;color:var(--ink);letter-spacing:.005em;}
.faq-head h2 em{font-style:italic;}
.faq-head .jp{margin-top:20px;font-family:var(--jp);font-size:13px;letter-spacing:.12em;color:var(--ink-3);}
.faq-list{border-top:0.5px solid var(--line);}
.faq-item{border-bottom:0.5px solid var(--line);padding:0;}
.faq-item summary{list-style:none;cursor:pointer;padding:22px 0;font-family:var(--jp);font-size:15px;line-height:1.7;color:var(--ink);letter-spacing:.04em;display:flex;justify-content:space-between;gap:24px;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"+";flex:none;font-family:var(--serif);font-style:italic;color:var(--brass);font-size:20px;line-height:1.2;}
.faq-item[open] summary::after{content:"−";}
.faq-item p{padding:0 0 24px;font-family:var(--jp);font-size:13px;line-height:2;color:var(--ink-3);letter-spacing:.04em;}

/* ============ Access ============ */
.access{padding:100px 24px;background:var(--paper);border-top:0.5px solid var(--line-soft);}
.access-head{text-align:center;margin-bottom:56px;}
.access-head .num{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--brass);letter-spacing:.3em;margin-bottom:16px;}
.access-head h2{font-family:var(--serif);font-weight:300;font-size:42px;line-height:1.12;color:var(--ink);letter-spacing:.005em;}
.access-head h2 em{font-style:italic;}
.access-head .jp{margin-top:20px;font-family:var(--jp);font-size:13px;letter-spacing:.12em;color:var(--ink-3);}
.access-wrap{display:flex;flex-direction:column;gap:36px;}
.access-info{display:grid;grid-template-columns:1fr;gap:22px;}
.access-block{padding-bottom:18px;border-bottom:0.5px solid var(--line);}
.access-block span{display:block;font-family:var(--serif);font-style:italic;font-size:11px;letter-spacing:.3em;color:var(--brass);margin-bottom:10px;}
.access-block p{font-family:var(--jp);font-size:13px;line-height:1.95;color:var(--ink-3);letter-spacing:.04em;}
.access-block small{font-size:12px;color:var(--ink-4);letter-spacing:.04em;}
.map-link{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 22px;border:0.5px solid var(--ink);font-family:var(--jp);font-size:12px;letter-spacing:.16em;color:var(--ink);transition:background .35s,color .35s;}
.map-link:hover{background:var(--ink);color:#fff;}
.map-link span{font-family:var(--serif);font-style:italic;letter-spacing:0;}
.access-map{aspect-ratio:4/3;min-height:320px;background:var(--line-soft);overflow:hidden;}
.access-map iframe{width:100%;height:100%;border:0;filter:saturate(.75) contrast(.95);}

/* ============ Footer ============ */
footer{background:var(--white);color:var(--ink);padding:80px 24px 40px;border-top:0.5px solid var(--line);}
.ftr{display:flex;flex-direction:column;gap:48px;}
.ftr .logo{font-family:var(--serif);font-weight:300;font-size:48px;letter-spacing:.32em;text-transform:lowercase;}
.ftr .logo small{display:block;font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.2em;color:var(--brass);margin-top:12px;}
.ftr .info{margin-top:24px;font-family:var(--jp);font-size:13px;line-height:2.0;color:var(--ink-3);letter-spacing:.04em;}
.ftr .col h4{font-size:10px;letter-spacing:.3em;color:var(--ink-3);margin-bottom:16px;font-weight:400;}
.ftr .col li{list-style:none;margin-bottom:10px;font-family:var(--sans);font-size:13px;font-weight:300;color:var(--ink-2);}
.ftr .col a:hover{color:var(--brass);}
.ftr-bot{display:flex;flex-direction:column;gap:16px;align-items:flex-start;margin-top:60px;padding-top:20px;border-top:0.5px solid var(--line);font-size:9px;letter-spacing:.3em;color:var(--ink-4);}

/* ============ Reveal ============ */
.reveal{opacity:0;transform:translateY(24px);transition:opacity 1.2s ease,transform 1.4s cubic-bezier(.2,.8,.2,1);}
.reveal.in{opacity:1;transform:translateY(0);}

/* ============ Fixed Reservation FAB ============ */
.reserve-fab{position:fixed;right:16px;bottom:16px;z-index:60;
  display:inline-flex;align-items:center;gap:12px;
  padding:14px 20px;background:var(--ink);color:#FFF;
  border-radius:60px;font-family:var(--jp);font-size:11px;font-weight:400;letter-spacing:.18em;
  box-shadow:0 8px 24px -8px rgba(0,0,0,.35);
  opacity:0;transform:translateY(20px);pointer-events:none;
  transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1),background .4s,color .4s,padding .35s;}
.reserve-fab.show{opacity:1;transform:translateY(0);pointer-events:auto;}
.reserve-fab .pulse{position:relative;width:6px;height:6px;border-radius:50%;background:var(--brass);
  box-shadow:0 0 0 0 rgba(157,132,88,.6);animation:pulse 2.4s infinite;}
@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(157,132,88,.55);}
  70%{box-shadow:0 0 0 8px rgba(157,132,88,0);}
  100%{box-shadow:0 0 0 0 rgba(157,132,88,0);}
}
.reserve-fab .label{display:inline-flex;flex-direction:column;line-height:1.15;gap:2px;}
.reserve-fab .label .jp{font-family:var(--jp);font-size:11px;font-weight:400;letter-spacing:.18em;color:#FFF;}
.reserve-fab .label .en{font-family:var(--serif);font-style:italic;font-size:9.5px;letter-spacing:.22em;color:#D9CFB8;font-weight:300;}
.reserve-fab .arrow{font-family:var(--serif);font-style:italic;font-size:13px;letter-spacing:0;color:#D9CFB8;}


/* ==========================================================================
   DESKTOP MEDIA QUERIES (DESKTOP OVERRIDES)
   ========================================================================== */
@media (min-width: 1024px) {
  /* Restore Cursor */
  .cursor { display: block; position: fixed; width: 5px; height: 5px; border-radius: 50%; background: var(--ink); top: 0; left: 0; transform: translate(-50%, -50%); pointer-events: none; z-index: 999; transition: width .4s ease, height .4s ease, background .25s, opacity .25s; }
  .cursor.big { width: 48px; height: 48px; background: var(--ink); opacity: .85; mix-blend-mode: difference; }
  .cursor-ring { display: block; position: fixed; width: 24px; height: 24px; border: 0.5px solid var(--ink); border-radius: 50%; top: 0; left: 0; transform: translate(-50%, -50%); pointer-events: none; z-index: 998; opacity: .35; }
  body { cursor: none; }

  /* Restore Topbar */
  .topbar { padding: 32px 56px; }
  .topbar .nav { display: flex; gap: 42px; font-size: 11px; letter-spacing: .32em; font-weight: 300; }
  .topbar .nav a { position: relative; }
  .topbar .nav a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -6px; height: 0.5px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .8s cubic-bezier(.7, 0, .15, 1); }
  .topbar .nav a:hover::after { transform: scaleX(1); transform-origin: left; }
  .topbar .right { gap: 32px; font-size: 11px; letter-spacing: .32em; }
  .topbar .right span { display: inline; }
  .topbar .booknow { display: inline-block; padding: 10px 22px; border: 0.5px solid currentColor; font-weight: 300; transition: background .4s, color .4s; }
  .menu-toggle { display: none; }

  /* Hide Drawer elements in Desktop */
  .mobile-drawer { display: none; }

  /* Restore Hero Desktop sizes */
  .hero-top { top: 130px; left: 56px; right: 56px; flex-direction: row; justify-content: space-between; align-items: start; }
  .hero-top .meta { font-size: 14px; }
  .hero-top .stamp { font-size: 10px; letter-spacing: .4em; line-height: 2; text-align: right; }
  .hero-mid { left: 56px; right: 56px; }
  .hero-mid .eyebrow { font-size: 10px; letter-spacing: .5em; }
  .hero-mid .eyebrow::before, .hero-mid .eyebrow::after { width: 32px; }
  .hero-mid h1 { font-size: 110px; line-height: 1.06; margin-top: 38px; }
  .hero-mid .jp { margin-top: 36px; font-size: 13px; letter-spacing: .5em; }
  .hero-bot { left: 56px; right: 56px; bottom: 48px; }
  .hero-bot .scroll { display: flex; flex-direction: column; align-items: center; gap: 10px; font-size: 10px; letter-spacing: .4em; opacity: .85; }
  .hero-bot .scroll .line { width: 1px; height: 44px; background: currentColor; overflow: hidden; position: relative; opacity: .4; }
  .hero-bot .scroll .line::after { content: ""; position: absolute; inset: 0; background: #fff; animation: drip 2.8s ease-in-out infinite; }
  @keyframes drip { 0% { transform: translateY(-100%); } 55% { transform: translateY(0); } 100% { transform: translateY(100%); } }
  .hero-bot .right { font-size: 11px; letter-spacing: .4em; }

  /* Restore Intro Desktop sizes */
  .intro { padding: 200px 56px 200px; }
  .intro .eyebrow::before, .intro .eyebrow::after { width: 32px; }
  .intro h2 { font-size: 84px; line-height: 1.15; margin-top: 38px; max-width: 1000px; margin-left: auto; margin-right: auto; }
  .intro .jp { margin-top: 48px; font-size: 18px; line-height: 2.2; letter-spacing: .16em; }
  .intro p { margin-top: 42px; font-size: 13px; line-height: 2.4; max-width: 680px; margin-left: auto; margin-right: auto; letter-spacing: .06em; }
  .intro .divider { height: 100px; margin: 80px auto 0; }

  /* Restore Section Header Desktop */
  .sec-head { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: end; padding: 0 0 60px; }
  .sec-head .l-side .num { font-size: 14px; letter-spacing: .4em; margin-bottom: 18px; }
  .sec-head .l-side h2 { font-size: 84px; }
  .sec-head .l-side .jp { margin-top: 18px; font-size: 14px; letter-spacing: .16em; }
  .sec-head .r-side { padding-bottom: 12px; }
  .sec-head .r-side p { font-size: 13px; line-height: 2.3; max-width: 380px; letter-spacing: .06em; }
  .sec-head .r-side .more { margin-top: 24px; font-size: 14px; gap: 12px; }

  /* Restore Stay Desktop layout */
  .stay { padding: 200px 56px 200px; }
  .villa-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; }
  .villa-a { grid-column: 1/8; }
  .villa-b { grid-column: 6/13; margin-top: 240px; }
  .villa-meta { padding: 28px 0 0 0; padding-bottom: 14px; }
  .villa-meta .info .no { font-size: 13px; letter-spacing: .4em; margin-bottom: 10px; }
  .villa-meta .info .name { font-size: 32px; }
  .villa-meta .info .name em { font-size: 24px; margin-top: 6px; }
  .villa-meta .arrow { font-size: 15px; }
  .villa-desc { margin-top: 20px; line-height: 2.2; max-width: 440px; letter-spacing: .06em; }
  .bath-amenities { margin-top: 120px; padding: 64px 0; display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; align-items: start; }
  .amenity-head { grid-column: 1/5; }
  .amenity-head .num { font-size: 13px; letter-spacing: .4em; margin-bottom: 22px; }
  .amenity-head h3 { font-size: 56px; }
  .amenity-head .jp { margin-top: 24px; font-size: 14px; line-height: 2.1; letter-spacing: .16em; }
  .amenity-list { grid-column: 6/13; padding-top: 0; border-top: 0; }
  .amenity-list span { font-size: 12px; letter-spacing: .4em; margin-bottom: 22px; }
  .amenity-list ul { grid-template-columns: repeat(3, 1fr); gap: 18px 28px; }
  .bed-space { margin-top: 160px; padding-top: 96px; display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; align-items: center; }
  .bed-gallery { grid-column: 1/8; display: grid; grid-template-columns: 1.15fr .85fr; grid-template-rows: 1fr 1fr; gap: 24px; align-items: stretch; }
  .bed-card-main { grid-row: 1/3; }
  .bed-card-main .bed-photo { aspect-ratio: auto; height: 640px; }
  .bed-gallery .bed-card:not(.bed-card-main) .bed-photo { aspect-ratio: auto; height: 260px; }
  .bed-card figcaption { padding-top: 18px; padding-bottom: 14px; }
  .bed-card figcaption span { font-size: 12px; letter-spacing: .4em; margin-bottom: 8px; }
  .bed-card figcaption strong { font-size: 17px; letter-spacing: .06em; }
  .bed-body { grid-column: 9/13; padding-bottom: 40px; }
  .bed-body .num { font-size: 13px; letter-spacing: .4em; margin-bottom: 24px; }
  .bed-body h3 { font-size: 66px; }
  .bed-body .jp { margin-top: 28px; font-size: 14px; line-height: 2.1; letter-spacing: .16em; }
  .bed-body p { margin-top: 28px; line-height: 2.25; letter-spacing: .06em; }
  .bed-specs { margin-top: 42px; }
  .bed-specs div { padding: 22px 0; }
  .bed-specs span { font-size: 12px; letter-spacing: .4em; }
  .bed-specs strong { font-size: 28px; }
  .kitchen-space { margin-top: 140px; padding-top: 96px; display: grid; grid-template-columns: repeat(12, 1fr); gap: 24px; align-items: center; }
  .kitchen-body { grid-column: 1/5; padding-bottom: 40px; }
  .kitchen-body .num { font-size: 13px; letter-spacing: .4em; margin-bottom: 24px; }
  .kitchen-body h3 { font-size: 62px; }
  .kitchen-body .jp { margin-top: 28px; font-size: 14px; line-height: 2.1; letter-spacing: .16em; }
  .kitchen-body p { margin-top: 28px; line-height: 2.25; letter-spacing: .06em; }
  .kitchen-specs { margin-top: 42px; padding-top: 26px; padding-bottom: 26px; }
  .kitchen-specs span { font-size: 12px; letter-spacing: .4em; margin-bottom: 18px; }
  .kitchen-specs ul { gap: 14px; }
  .kitchen-gallery { grid-column: 6/13; display: grid; grid-template-columns: .9fr 1.1fr; gap: 24px; align-items: end; }
  .kitchen-card-main { margin-bottom: 96px; }
  .kitchen-card-main .kitchen-photo { aspect-ratio: auto; height: 420px; }
  .kitchen-gallery .kitchen-card:not(.kitchen-card-main) .kitchen-photo { aspect-ratio: auto; height: 620px; }
  .kitchen-card figcaption { padding-top: 18px; padding-bottom: 14px; }
  .kitchen-card figcaption span { font-size: 12px; letter-spacing: .4em; margin-bottom: 8px; }
  .kitchen-card figcaption strong { font-size: 17px; letter-spacing: .06em; }

  /* Restore Quote Desktop */
  .quote { padding: 180px 56px; }
  .quote .ql { font-size: 54px; max-width: 1000px; margin: 0 auto; }
  .quote .ql .stroke { -webkit-text-stroke: 0.6px var(--ink); }
  .quote .jp { margin-top: 32px; font-size: 13px; letter-spacing: .5em; }

  /* Restore Sauna Desktop */
  .sauna-wrap { display: grid; grid-template-columns: 6fr 6fr; min-height: 780px; }
  .sauna-img { height: auto; }
  .sauna-img .glow { width: 280px; height: 160px; }
  .sauna-body { padding: 160px 80px; }
  .sauna-body .num { font-size: 14px; letter-spacing: .4em; margin-bottom: 32px; }
  .sauna-body h2 { font-size: 96px; line-height: 1.0; }
  .sauna-body h2 .stroke { -webkit-text-stroke: 0.6px #FBFAF7; }
  .sauna-body .jp { margin-top: 36px; font-size: 14px; letter-spacing: .16em; }
  .sauna-body p { margin-top: 24px; line-height: 2.2; letter-spacing: .06em; max-width: 460px; }
  .sauna-body ul { margin-top: 48px; gap: 14px 32px; padding-top: 24px; max-width: 460px; }
  .sauna-body li { font-size: 13px; flex-direction: row; justify-content: space-between; gap: 16px; }
  .sauna-body li em { font-size: 14px; }

  /* Restore Sauna Schedule Desktop */
  .sauna-schedule { padding: 140px 56px 160px; }
  .sched-head { margin-bottom: 96px; }
  .sched-head .num { font-size: 13px; letter-spacing: .4em; margin-bottom: 18px; }
  .sched-head h3 { font-size: 72px; }
  .sched-head .jp { margin-top: 22px; font-size: 13px; letter-spacing: .5em; }
  .sched-grid { display: grid; grid-template-columns: 1fr 1px 1fr; }
  .sched-divider { display: block; background: rgba(255, 250, 232, .16); }
  .sched-col { padding: 0 56px; }
  .sched-villa { padding-bottom: 32px; margin-bottom: 48px; }
  .sched-villa .lbl { font-size: 13px; letter-spacing: .4em; }
  .sched-villa .big { font-size: 86px; }
  .sched-villa .name { font-size: 16px; letter-spacing: .12em; margin-left: auto; text-align: left; }
  .sched-villa .name em { font-size: 13px; margin-top: 4px; }
  .sched-block { margin-bottom: 42px; }
  .sched-block .block-head { padding-bottom: 14px; margin-bottom: 18px; }
  .sched-block .kind { font-size: 24px; }
  .sched-block .dur { font-size: 10px; letter-spacing: .3em; }
  .sched-block ul { gap: 14px; }
  .sched-block li { grid-template-columns: 32px 1fr; gap: 14px; }
  .sched-block .i { font-size: 14px; }
  .sched-block .t { font-size: 26px; }
  .sched-block .t .sep { margin: 0 10px; }
  .sched-notes { margin: 96px auto 0; padding-top: 48px; }
  .sched-notes h4 { font-size: 13px; letter-spacing: .4em; margin-bottom: 24px; }
  .sched-notes ul { grid-template-columns: 1fr 1fr; gap: 18px 64px; }
  .sched-notes li { font-size: 13px; line-height: 1.95; letter-spacing: .06em; gap: 14px; }
  .sched-notes li::before { width: 14px; margin-top: .95em; }

  /* Restore Dining Desktop */
  .dining { padding: 200px 56px; }
  .meal-grid { grid-template-columns: repeat(12, 1fr); gap: 48px; align-items: start; }
  .meal-card { grid-column: 2/12; gap: 28px; }
  .meal-photo { aspect-ratio: 16/9; }
  .meal-copy { padding-top: 24px; }
  .meal-copy .no { font-size: 13px; letter-spacing: .4em; margin-bottom: 12px; }
  .meal-copy h3 { font-size: 28px; letter-spacing: .08em; }
  .meal-copy h3 em { font-size: 17px; margin-top: 4px; }
  .meal-copy p { margin-top: 18px; line-height: 2.15; letter-spacing: .06em; max-width: 520px; }
  .breakfast-note { grid-column: 3/11; padding: 36px 0; }
  .breakfast-note .no { font-size: 13px; letter-spacing: .4em; margin-bottom: 12px; }
  .breakfast-note h3 { font-size: 28px; letter-spacing: .08em; }
  .breakfast-note h3 em { font-size: 17px; margin-top: 4px; }
  .breakfast-note p { margin-top: 18px; line-height: 2.15; letter-spacing: .06em; max-width: 720px; }

  /* Restore Experience Desktop */
  .exp { padding: 200px 56px; }
  .exp-head { margin-bottom: 120px; }
  .exp-head .num { font-size: 14px; letter-spacing: .4em; margin-bottom: 18px; }
  .exp-head h2 { font-size: 96px; }
  .exp-head .jp { font-size: 14px; letter-spacing: .16em; }
  .exp-row { grid-template-columns: repeat(3, 1fr); gap: 48px; }
  .exp-item:nth-child(2) { transform: translateY(80px); }
  .exp-item .meta { margin-top: 28px; padding-bottom: 14px; }
  .exp-item .no { font-size: 12px; letter-spacing: .4em; }
  .exp-item h3 { font-size: 22px; letter-spacing: .06em; }
  .exp-item h3 em { font-size: 14px; margin-bottom: 4px; }
  .exp-item .arrow { font-size: 14px; }
  .exp-item p { margin-top: 20px; line-height: 2.2; letter-spacing: .06em; }
  .exp-more { margin-top: 200px; padding-top: 80px; }
  .exp-more-head { flex-direction: row; align-items: end; justify-content: space-between; gap: 40px; margin-bottom: 48px; }
  .exp-more-head .num { font-size: 13px; letter-spacing: .4em; }
  .exp-more-head h3 { font-size: 54px; }
  .exp-more-list li a { grid-template-columns: 80px 1fr 2fr 32px; gap: 32px; align-items: baseline; padding: 28px 0; transition: color .35s ease, padding .5s cubic-bezier(.2, .8, .2, 1); }
  .exp-more-list li a:hover { padding-left: 18px; color: var(--brass); }
  .exp-more-list .no { font-size: 13px; letter-spacing: .4em; }
  .exp-more-list .nm { font-size: 24px; letter-spacing: .06em; display: inline; }
  .exp-more-list .nm em { font-size: 15px; margin-left: 14px; }
  .exp-more-list .desc { font-size: 13px; line-height: 1.9; letter-spacing: .06em; }
  .exp-more-list .arr { display: block; font-family: var(--serif); font-style: italic; font-size: 14px; text-align: right; transition: transform .35s ease; }
  .exp-more-list li a:hover .arr { transform: translateX(6px); }
  .exp-source { margin-top: 40px; font-size: 12px; }

  /* Restore News Desktop */
  .news { padding: 200px 56px 200px; }
  .news-grid { grid-template-columns: repeat(12, 1fr); gap: 96px; }
  .news-list { grid-column: 3/11; }
  .instagram-btn { margin-top: 32px; padding: 16px 22px; gap: 16px; }
  .instagram-btn .icon { font-size: 22px; }
  .instagram-btn strong { font-size: 20px; }
  .instagram-btn em { font-size: 10.5px; letter-spacing: .22em; }
  .news-feature .meta { margin-top: 28px; padding-bottom: 14px; }
  .news-feature .meta .date { font-size: 14px; letter-spacing: .3em; }
  .news-feature .meta .cat { font-size: 11px; letter-spacing: .3em; }
  .news-feature .meta .feat { font-size: 12px; letter-spacing: .3em; }
  .news-feature h3 { margin-top: 20px; font-size: 26px; line-height: 1.65; }
  .news-feature h3 em { font-size: 18px; margin-bottom: 6px; }
  .news-feature p { margin-top: 16px; line-height: 2.0; }
  .news-feature .feature-arrow { margin-top: 24px; font-size: 14px; padding-bottom: 4px; }
  .news-list .news-list-head { padding-bottom: 18px; margin-bottom: 0; }
  .news-list .news-list-head .ttl { font-size: 14px; letter-spacing: .06em; }
  .news-list .news-list-head .all { font-size: 14px; padding-bottom: 4px; }
  .news-item { grid-template-columns: 160px 1fr 32px; gap: 32px; align-items: center; padding: 30px 0; transition: color .35s ease, padding .5s cubic-bezier(.2, .8, .2, 1); }
  .news-item:hover { padding-left: 18px; color: var(--brass); }
  .news-item .left { flex-direction: column; gap: 6px; }
  .news-item .date { font-size: 13px; letter-spacing: .3em; }
  .news-item .cat { font-size: 11px; letter-spacing: .3em; }
  .news-item .title { font-size: 18px; line-height: 1.7; }
  .news-item .title em { font-size: 13px; margin-left: 10px; }
  .news-item .arr { display: block; font-family: var(--serif); font-style: italic; font-size: 14px; text-align: right; transition: transform .35s; }
  .news-item:hover .arr { transform: translateX(6px); }

  /* Restore CTA Desktop */
  .cta { padding: 220px 56px; }
  .cta .num { font-size: 14px; letter-spacing: .4em; }
  .cta h2 { font-size: 128px; line-height: 1.04; margin-top: 32px; }
  .cta h2 .stroke { -webkit-text-stroke: 0.6px var(--ink); }
  .cta .jp { margin-top: 42px; font-size: 14px; letter-spacing: .16em; }
  .cta .btn-wrap { margin-top: 64px; flex-direction: row; justify-content: center; gap: 20px; }
  .cta .btn { padding: 22px 48px; font-size: 11px; letter-spacing: .4em; }
  .cta .btn .arrow { font-size: 14px; }
  .cta .btn-ota { min-width: 300px; }
  .cta .btn-ota .ota-name { font-size: 13px; letter-spacing: .22em; }

  /* Restore FAQ Desktop */
  .faq { padding: 180px 56px; }
  .faq-head { margin-bottom: 96px; }
  .faq-head .num { font-size: 14px; letter-spacing: .4em; margin-bottom: 18px; }
  .faq-head h2 { font-size: 96px; }
  .faq-head .jp { margin-top: 28px; font-size: 14px; letter-spacing: .16em; }
  .faq-list { max-width: 960px; margin: 0 auto; }
  .faq-item summary { padding: 28px 0; font-size: 17px; letter-spacing: .06em; }
  .faq-item summary::after { font-size: 24px; }
  .faq-item p { max-width: 760px; padding-bottom: 32px; line-height: 2.15; letter-spacing: .06em; }

  /* Restore Access Desktop */
  .access { padding: 180px 56px; }
  .access-head { margin-bottom: 96px; }
  .access-head .num { font-size: 14px; letter-spacing: .4em; margin-bottom: 18px; }
  .access-head h2 { font-size: 96px; }
  .access-head .jp { margin-top: 28px; font-size: 14px; letter-spacing: .16em; }
  .access-wrap { display: grid; grid-template-columns: repeat(12, 1fr); gap: 48px; align-items: stretch; }
  .access-info { grid-column: 1/5; align-content: start; gap: 28px; }
  .access-block { padding-bottom: 24px; }
  .access-block span { font-size: 12px; letter-spacing: .4em; margin-bottom: 12px; }
  .access-block p { line-height: 2.1; letter-spacing: .06em; }
  .map-link { margin-top: 8px; justify-self: start; padding: 17px 28px; font-size: 12px; letter-spacing: .22em; }
  .access-map { grid-column: 5/13; aspect-ratio:16/10; min-height:560px; }

  /* Restore Footer Desktop */
  footer { padding: 140px 56px 48px; }
  .ftr { grid-template-columns: 1.6fr 1fr 1fr; gap: 64px; }
  .ftr .logo { font-size: 60px; }
  .ftr .logo small { font-size: 14px; letter-spacing: .2em; margin-top: 18px; }
  .ftr .info { margin-top: 32px; line-height: 2.2; }
  .ftr .col h4 { font-size: 10px; letter-spacing: .4em; margin-bottom: 24px; }
  .ftr .col li { margin-bottom: 12px; font-size: 13px; }
  .ftr-bot { flex-direction: row; justify-content: space-between; align-items: center; margin-top: 120px; padding-top: 24px; font-size: 10px; letter-spacing: .4em; }

  /* Restore FAB Desktop */
  .reserve-fab { right: 28px; bottom: 28px; padding: 18px 26px 18px 22px; font-size: 12px; letter-spacing: .22em; }
  .reserve-fab .pulse { width: 8px; height: 8px; }
  @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(157, 132, 88, .55); } 70% { box-shadow: 0 0 0 10px rgba(157, 132, 88, 0); } 100% { box-shadow: 0 0 0 0 rgba(157, 132, 88, 0); } }
  .reserve-fab .label .jp { font-size: 13px; letter-spacing: .22em; }
  .reserve-fab .label .en { font-size: 10.5px; letter-spacing: .28em; }
  .reserve-fab .arrow { font-size: 15px; transition: transform .35s ease; }
  .reserve-fab:hover { background: var(--brass); padding: 18px 32px 18px 22px; }
  .reserve-fab:hover .arrow { transform: translate(3px, -3px); color: #FFF; }
  .reserve-fab:hover .label .en { color: #FFF; }
  .reserve-fab:hover .pulse { background: #FFF; box-shadow: none; animation: none; }
}

/* ==========================================================================
   RICH MOTION LAYER  (added — refined, brand-appropriate animation)
   ========================================================================== */

/* Scroll progress — hairline brass bar at the very top */
.scroll-progress{position:fixed;top:0;left:0;height:2px;width:0;z-index:80;
  background:linear-gradient(90deg,var(--brass),#c7ac80);
  box-shadow:0 0 8px -1px rgba(149,124,88,.5);
  transform-origin:left;pointer-events:none;transition:opacity .4s ease;}

/* ---- Hero entrance: gentle fade-up on load (h1 keeps its own rise) ---- */
.hero .hero-top .meta,
.hero .hero-top .stamp,
.hero .hero-mid .eyebrow,
.hero .hero-mid .jp,
.hero .hero-bot > *{
  opacity:0;transform:translateY(16px);
  animation:heroIn 1.4s cubic-bezier(.2,.8,.2,1) forwards;}
.hero .hero-mid .eyebrow{animation-delay:.25s;}
.hero .hero-top .meta{animation-delay:.5s;}
.hero .hero-top .stamp{animation-delay:.65s;}
.hero .hero-mid .jp{animation-delay:1.05s;}
.hero .hero-bot > *{animation-delay:1.3s;}
@keyframes heroIn{to{opacity:1;transform:translateY(0);}}
/* hero video: slow settle on load */
.hero .img video{animation:heroMedia 2.6s cubic-bezier(.2,.8,.2,1) forwards;}
@keyframes heroMedia{from{transform:scale(1.08);}to{transform:scale(1);}}

/* ---- Staggered children inside a revealed block ---- */
.reveal .stagger-child,
.reveal.stagger > *{
  opacity:0;transform:translateY(22px);
  transition:opacity 1s ease,transform 1.1s cubic-bezier(.2,.8,.2,1);
  transition-delay:calc(var(--d,0) * 90ms);}
.reveal.in .stagger-child,
.reveal.in.stagger > *{opacity:1;transform:translateY(0);}

/* list items (amenities / kitchen / schedule / faq / exp-more / access)
   FAIL-OPEN: visible by default; animate only when .in is added */
.js-stagger.in > *{animation:staggerUp .9s cubic-bezier(.2,.8,.2,1) both;
  animation-delay:calc(var(--d,0) * 70ms);}
@keyframes staggerUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:translateY(0);}}

/* ---- Image wipe-in reveal (photos uncover + slow zoom out)
   FAIL-OPEN: image is fully visible by default; the wipe plays as a
   one-shot animation when .in is added, so it can never get stuck hidden ---- */
.media-reveal.in{animation:mediaWipe 1.3s cubic-bezier(.7,0,.15,1) both;}
@keyframes mediaWipe{from{clip-path:inset(0 100% 0 0);}to{clip-path:inset(0 0 0 0);}}
.media-reveal.in > img,
.media-reveal.in .inner{animation:mediaZoom 1.8s cubic-bezier(.2,.8,.2,1) both;}
@keyframes mediaZoom{from{transform:scale(1.12);}to{transform:scale(1);}}

/* ---- Heading italic gets an under-stroke that draws in on reveal ---- */
.sec-head h2 em,.exp-head h2 em,.faq-head h2 em,.access-head h2 em,
.intro h2 em,.cta h2 em{position:relative;display:inline-block;}
.sec-head.in h2 em::after,.exp-head.in h2 em::after,.faq-head.in h2 em::after,
.access-head.in h2 em::after,.intro.in h2 em::after,.cta.in h2 em::after{
  content:"";position:absolute;left:0;right:0;bottom:.04em;height:1px;
  background:var(--brass);transform:scaleX(0);transform-origin:left;
  animation:drawLine 1.1s .55s cubic-bezier(.7,0,.15,1) forwards;}
@keyframes drawLine{to{transform:scaleX(1);}}

/* ---- Card hover lift ---- */
@media (min-width:1024px){
  .villa,.meal-card,.exp-item,.bed-card,.kitchen-card{
    transition:transform .6s cubic-bezier(.2,.8,.2,1),box-shadow .6s ease;}
  .villa:hover,.meal-card:hover,.exp-item:hover{
    transform:translateY(-6px);}
  .bed-card,.kitchen-card{will-change:transform;}
  .bed-card:hover,.kitchen-card:hover{transform:translateY(-5px) scale(1.012);
    box-shadow:0 24px 50px -24px rgba(0,0,0,.28);}
  /* magnetic buttons follow the cursor a touch */
  .btn,.map-link,.instagram-btn,.more{transition:transform .25s cubic-bezier(.2,.8,.2,1),background .35s,color .35s,border-color .35s;}
}

/* ---- Smooth FAQ accordion ---- */
.faq-item{overflow:hidden;}
.faq-item > p{transition:opacity .5s ease;}
.faq-item summary{transition:color .35s ease;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item[open] summary{color:var(--brass);}

/* ---- Quote: soft float of the brushed stroke ---- */
.quote .stroke{display:inline-block;animation:floatY 7s ease-in-out infinite;}
@keyframes floatY{50%{transform:translateY(-5px);}}

/* ---- Section reveal: also nudge non-reveal sections via in-view fade ---- */
.fade-section{opacity:0;transform:translateY(28px);
  transition:opacity 1.1s ease,transform 1.3s cubic-bezier(.2,.8,.2,1);}
.fade-section.in{opacity:1;transform:translateY(0);}

/* ==========================================================================
   SIGNATURE MOTION  (water ripple / tide reveal / heat haze / GPS type)
   ========================================================================== */

/* 1. Hero water-ripple canvas */
.hero .ripple-canvas{position:absolute;inset:0;z-index:2;pointer-events:none;}
.hero .hero-top,.hero .hero-mid,.hero .hero-bot{z-index:4;}
.hero .vignette{z-index:3;}

/* 2. Venus Road — tide recedes on hover to reveal the sand path */
.exp-item.tide .ph{position:relative;}
.exp-item.tide .tide-water{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(36,74,86,.10),rgba(28,82,96,.34) 55%,rgba(20,66,80,.5)),
    repeating-linear-gradient(180deg,rgba(255,255,255,0) 0 9px,rgba(255,255,255,.07) 9px 10px);
  background-size:100% 100%, 100% 22px;
  backdrop-filter:saturate(1.1) brightness(.94);
  clip-path:inset(0 0 0 0);
  transition:clip-path 1.5s cubic-bezier(.7,0,.15,1);
  animation:tideShimmer 5s ease-in-out infinite;}
@keyframes tideShimmer{50%{background-position:0 0, 0 11px;}}
.exp-item.tide:hover .tide-water{clip-path:inset(100% 0 0 0);}
.exp-item.tide .tide-hint{position:absolute;left:14px;bottom:14px;z-index:3;
  font-family:var(--serif);font-style:italic;font-size:12px;letter-spacing:.12em;
  color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.4);opacity:.92;
  transition:opacity .6s ease;pointer-events:none;}
.exp-item.tide:hover .tide-hint{opacity:0;}

/* 3. Sauna heat haze (filter applied via JS-injected SVG) */
.sauna-img.heat-on{will-change:filter;}
.svg-defs{position:absolute;width:0;height:0;overflow:hidden;}

/* 4. GPS typewriter coordinates */
.hero-top .stamp .gps-line{display:inline-block;white-space:pre;}
.hero-top .stamp .gps-caret{display:inline-block;margin-left:1px;
  color:var(--brass);animation:gpsBlink 1s steps(1) infinite;}
.hero-top .stamp .gps-caret.done{animation:none;opacity:0;}
@keyframes gpsBlink{50%{opacity:0;}}

/* ---- Respect reduced-motion ---- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;}
  .media-reveal{clip-path:none!important;}
  .scroll-progress{display:none;}
  .hero .ripple-canvas{display:none;}
  .sauna-img.heat-on{filter:none!important;}
  .exp-item.tide .tide-water{animation:none;}
  .hero .hero-top .meta,.hero .hero-top .stamp,.hero .hero-mid .eyebrow,
  .hero .hero-mid .jp,.hero .hero-bot > *,.reveal .stagger-child,
  .reveal.stagger > *,.js-stagger > *,.fade-section{opacity:1;transform:none;}
}
