/* The locale picker is a quiet part of the villa header, with a native fallback. */
.language-control{position:relative;display:flex;align-items:center;color:var(--muted)}
.language-control [hidden]{display:none!important}
.language-fallback{display:flex;align-items:center;gap:10px}
.language-fallback label,.language-picker-label{font:11px var(--sans);letter-spacing:.1em;color:var(--muted)}
.language-fallback select{min-height:44px;max-width:150px;padding:8px 26px 8px 8px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:14px var(--sans);border-radius:0}
.language-fallback select:focus-visible,.language-trigger:focus-visible,.language-option:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.language-desktop .language-fallback label,.language-desktop .language-picker-label{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.language-picker{position:relative;min-width:0}
.language-trigger{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;min-width:122px;padding:10px 11px;border:1px solid var(--line);border-radius:3px;background:transparent;color:var(--ink);font:14px/1.4 var(--sans);white-space:nowrap;cursor:pointer;-webkit-appearance:none;appearance:none;transition:border-color .18s ease}
.language-trigger:hover,.language-trigger[aria-expanded="true"]{border-color:var(--brand);background:var(--white);color:var(--brand-deep)}
.language-trigger:active{background:var(--soft)}
.language-trigger[aria-busy="true"]{border-color:var(--brand);cursor:progress}
.language-trigger[aria-busy="true"] .language-globe{opacity:.5}
.language-trigger [data-language-current]{color:inherit;font-weight:500}
.language-globe,.language-chevron,.language-check{display:block;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.language-globe{width:18px;height:18px;color:var(--brand)}
.language-chevron{width:13px;height:13px;margin-left:1px;color:var(--muted);transition:transform .18s var(--ease)}
.language-trigger[aria-expanded="true"] .language-chevron{transform:rotate(180deg)}
.language-panel{position:absolute;top:calc(100% + 10px);right:0;z-index:4;width:286px;max-width:calc(100vw - 32px);padding:8px;border:1px solid var(--line);border-radius:5px;background:var(--white);box-shadow:0 16px 40px #553b301a;animation:language-panel-in .18s var(--ease) both}
.language-options{display:grid;gap:3px;min-width:0}
.language-option{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;gap:12px;min-height:50px;width:100%;padding:11px 13px;border:1px solid transparent;border-radius:2px;background:transparent;color:var(--ink);text-align:left;font-family:var(--sans);cursor:pointer;-webkit-appearance:none;appearance:none;transition:none}
.language-option:hover{background:var(--paper)}
.language-option[aria-pressed="true"]{background:var(--soft);color:var(--brand-deep)}
.language-option:active{background:var(--soft)}
.language-native{font-size:15px;line-height:1.5;font-weight:500;white-space:nowrap}
.language-english{font-family:var(--sans);font-size:11px;line-height:1.45;color:var(--muted);white-space:nowrap}
.language-check{width:16px;height:16px;color:var(--brand);opacity:0}
.language-option[aria-pressed="true"] .language-check{opacity:1}
.language-status:empty{display:none}
.language-status{position:absolute;top:calc(100% + 12px);right:0;z-index:5;width:286px;max-width:calc(100vw - 32px);padding:12px;border:1px solid var(--line);background:var(--white);color:var(--brand-deep);font:12px/1.7 var(--sans);box-shadow:0 12px 24px #553b3010}
.language-mobile{display:none;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:20px}
@keyframes language-panel-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:850px){
 .language-desktop{display:none}
 .language-control.language-mobile{display:block}
 .language-mobile .language-fallback{justify-content:space-between}
 .language-mobile .language-fallback select{font-size:16px;min-width:145px}
 .language-mobile .language-picker{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px}
 .language-mobile .language-picker-label{grid-column:1;grid-row:1;font-size:12px;letter-spacing:.08em}
 .language-mobile .language-trigger{grid-column:2;grid-row:1;min-height:48px;min-width:145px;padding-inline:13px;font-size:16px}
 .language-mobile .language-panel{position:static;grid-column:1/-1;grid-row:2;width:100%;max-width:none;margin-top:12px;padding:8px;border-radius:3px;box-shadow:none}
 .language-mobile .language-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 .language-mobile .language-option{grid-template-columns:minmax(0,1fr) 16px;gap:8px;min-height:52px;padding:11px 12px;border-color:var(--line);border-radius:2px}
 .language-mobile .language-option:last-child{grid-column:1/-1}
 .language-mobile .language-option[aria-pressed="true"]{border-color:var(--brand);background:var(--soft)}
 .language-mobile .language-native{font-size:16px;line-height:1.5}
 .language-mobile .language-english{display:none}
 .language-mobile .language-check{grid-column:2}
 .language-mobile .language-status{position:static;width:auto;max-width:none;margin-top:12px;box-shadow:none}
}
@media(prefers-reduced-motion:reduce){.language-panel{animation:none}.language-trigger,.language-chevron,.language-option{transition:none}}
/* The mobile picker leaves the clipped navigation and opens in the top layer. */
.language-control.has-language-sheet>.language-status{display:none}
.language-sheet{position:fixed;inset:auto 0 0;width:100%;max-width:568px;max-height:calc(100vh - 12px);max-height:min(calc(100dvh - 12px),calc(var(--language-viewport-height,100dvh) - 12px));margin:0 auto;padding:0 20px max(16px,env(safe-area-inset-bottom));border:1px solid var(--line);border-bottom:0;border-radius:24px 24px 0 0;background:var(--white);color:var(--ink);box-sizing:border-box;overflow:hidden;overscroll-behavior:contain;box-shadow:0 -12px 48px #35291f1a}
.language-sheet[open]{display:flex;flex-direction:column;animation:language-sheet-in .24s cubic-bezier(.22,1,.36,1) both}
.language-sheet::backdrop{background:#20181266}
.language-sheet [hidden]{display:none!important}
.language-sheet-header{position:relative;display:flex;flex:none;align-items:center;justify-content:space-between;gap:16px;min-height:84px;padding-top:16px}
.language-sheet-handle{position:absolute;top:10px;left:50%;width:34px;height:4px;border-radius:4px;background:var(--line);transform:translateX(-50%)}
.language-sheet-title{margin:0;font:600 20px/1.4 var(--sans);letter-spacing:-.025em}
.language-sheet-close{flex:none;min-width:44px;min-height:44px;padding:10px 4px;border:0;border-radius:4px;background:transparent;color:var(--muted);font:16px/1.4 var(--sans);cursor:pointer;-webkit-appearance:none;appearance:none}
.language-sheet-close:hover,.language-sheet-close:active{background:var(--soft);color:var(--ink)}
.language-sheet-close:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.language-sheet .language-panel{position:static;flex:0 1 auto;min-height:0;width:100%;max-width:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;animation:none;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}
.language-sheet .language-options{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;padding:3px}
.language-sheet .language-option{grid-template-columns:minmax(0,1fr) 20px;gap:12px;min-height:56px;width:100%;padding:14px 16px;border-radius:10px;font-size:16px}
/* Keep keyboard focus inside each row so the scrolling panel cannot clip it. */
.language-sheet .language-option:focus-visible{outline-offset:-2px}
.language-sheet .language-native{font-size:16px;line-height:1.5;white-space:normal;overflow-wrap:anywhere}
.language-sheet .language-english{display:none}
.language-sheet .language-check{grid-column:2;width:20px;height:20px}
.language-sheet .language-status{font-size:16px;line-height:1.6;overflow-wrap:anywhere}
@keyframes language-sheet-in{from{transform:translateY(100%)}to{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.language-sheet[open]{animation:none}}

html:lang(en){--serif:'Cormorant Garamond',Georgia,serif}
html:lang(ja){--sans:'Hiragino Kaku Gothic ProN','Yu Gothic',Meiryo,sans-serif;--serif:'Hiragino Mincho ProN','Yu Mincho',serif}
html:lang(zh-CN){--sans:'PingFang SC','Microsoft YaHei',sans-serif;--serif:'Songti SC',STSong,serif}
html:lang(zh-TW){--sans:'PingFang TC','Microsoft JhengHei',sans-serif;--serif:'Songti TC','PMingLiU',serif}
html:not(:lang(ko)) h1,html:not(:lang(ko)) h2{letter-spacing:-.025em;word-break:normal;overflow-wrap:break-word;text-wrap:balance}
html:lang(en) .hero h1{font-size:clamp(38px,4.5vw,66px);line-height:1.15;letter-spacing:-.015em}
html:lang(en) .brand-wordmark{font-family:var(--english);font-size:21px;letter-spacing:0}
html:not(:lang(ko)) .header-book{gap:12px}
html:not(:lang(ko)) .desktop-nav{gap:22px}
html:not(:lang(ko)) button,html:not(:lang(ko)) summary{word-break:normal}
@media(max-width:1350px){html:not(:lang(ko)) .desktop-nav{display:none}html:not(:lang(ko)) .menu-toggle{display:flex}}
@media(min-width:851px) and (max-width:1350px){html:not(:lang(ko)) .mobile-nav:not([hidden]){display:block!important}}
@media(max-width:900px){html:not(:lang(ko)) .brand-wordmark{font-size:19px}html:not(:lang(ko)) .site-header{gap:12px}html:not(:lang(ko)) .header-actions{gap:8px}html:lang(en) .hero h1{font-size:clamp(36px,8.5vw,52px)}html:lang(en) .photo-dialog-tools{gap:4px}html:lang(en) .photo-dialog-tools button{font-size:12px;padding-inline:8px}html:lang(en) .gallery-filters button{font-size:12px}html:lang(en) .mobile-nav-links{grid-template-columns:1fr 1fr}html:lang(en) .mobile-nav-links a{font-size:14px;line-height:1.4}html:not(:lang(ko)) .mobile-booking a{min-width:0;white-space:normal}}
@media(max-width:370px){html:not(:lang(ko)) .brand-mark{width:28px;height:28px}html:not(:lang(ko)) .brand{gap:7px}html:not(:lang(ko)) .brand-wordmark{font-size:17px}html:not(:lang(ko)) .brand-wordmark>span{font-size:7px}html:not(:lang(ko)) .header-book{font-size:12px;gap:7px}}
@media(max-width:600px){html:not(:lang(ko)) .stay-glance{display:block}html:not(:lang(ko)) .glance-heading{display:block}html:not(:lang(ko)) .glance-heading p{margin-top:4px;white-space:normal}html:not(:lang(ko)) .mobile-booking{font-size:12px}}
html:lang(en){--current-view-label:"Current view"}html:lang(ja){--current-view-label:"表示中"}html:lang(zh-CN){--current-view-label:"当前页面"}html:lang(zh-TW){--current-view-label:"目前頁面"}
html:not(:lang(ko)) .mobile-nav a[aria-current="location"]::after{content:var(--current-view-label)}
/* Keep a failed request's retry explanation inside the open choices. */
.language-panel .language-status{position:static;display:block;width:auto;max-width:none;margin:12px 4px 0;padding:12px 0 0;border:0;border-top:1px solid var(--line);background:transparent;box-shadow:none}
.language-panel .language-status:empty{display:none}
.language-control:has(.language-panel:not([hidden]))>.language-status{display:none}

/* Translated sentences must be able to shrink inside guide grid and flex rows. */
html:not(:lang(ko)) .guide>div{min-width:0}
html:not(:lang(ko)) .guest-checklist-footer p{min-width:0;word-break:normal;overflow-wrap:anywhere}
html:not(:lang(ko)) .faq-content{word-break:normal;overflow-wrap:anywhere}
html:not(:lang(ko)) :is(p,h3,h4,dt,summary,.guest-checklist-group-title,.guest-essential-rules ul){word-break:normal;overflow-wrap:anywhere}
html:not(:lang(ko)) :is(.guest-checklist-heading>div,.facility-preparation>div){min-width:0}
html:not(:lang(ko)) #stay .stay-summary dd{word-break:normal;overflow-wrap:anywhere}
@media(max-width:600px){html:not(:lang(ko)) .faq-times strong{font-size:clamp(20px,5.6vw,30px)}}
html:not(:lang(ko)) .stay-duration-options button{white-space:normal;overflow-wrap:anywhere}
html:not(:lang(ko)) .inquiry-extra-question label{flex-wrap:wrap;row-gap:4px}
html:not(:lang(ko)) .inquiry-extra-question label span{flex:0 1 auto}
/* Long translated zoom labels still leave a full close target on small phones. */
@media(max-width:370px){
 html:not(:lang(ko)) .photo-dialog-header{gap:8px}
 html:not(:lang(ko)) .photo-dialog-header .photo-dialog-tools{gap:4px}
 html:not(:lang(ko)) .photo-dialog-header #photoZoom{padding-inline:8px}
}

/* Keep villa destinations ahead of appearance preferences in the mobile menu. */
.mobile-nav-settings{display:none}
@media(max-width:850px){
 #mobileNav .mobile-nav-settings{display:grid;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
 #mobileNav .mobile-nav-settings .language-mobile{margin:0;padding:0;border:0}
 #mobileNav .mobile-nav-settings .language-trigger{min-height:44px;font-size:14px}
 #mobileNav .mobile-nav-settings .language-fallback select{min-height:44px}
}

/* Keep the translated inquiry action on one line on the narrowest phones. */
@media(max-width:370px){
 html:not(:lang(ko)) .site-header .brand-wordmark{font-size:15px}
 html:not(:lang(ko)) .site-header .header-book{white-space:nowrap}
}
