/* Editorial hierarchy: bold Traditional Chinese serif headings, clear sans body. */
@font-face{font-family:VillaHeading;src:url('/assets/fonts/villa-heading-700.woff2') format('woff2');font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:VillaBody;src:url('/assets/fonts/villa-body-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
:root{
 --serif:VillaHeading,'Noto Serif TC','Songti TC','PMingLiU',serif;
 --sans:VillaBody,'Noto Sans TC','PingFang TC','Microsoft JhengHei',sans-serif;
 --muted:#4d5c66;
 --copy-size:17px;
 --intro-size:18px;
 --section-title:clamp(32px,3.2vw,44px);
 --card-title:26px;
}
body{font-size:var(--copy-size);line-height:1.9;line-break:strict;word-break:normal}
:root :is(h1,h2,h3,.hero-title){font-family:var(--serif);font-weight:700;letter-spacing:.02em;line-height:1.45}
:root h2{font-size:var(--section-title)}
:root h3{font-size:var(--card-title)}
:root .hero-title{font-size:clamp(44px,4.8vw,68px);line-height:1.45;letter-spacing:.035em}
:root .page-intro h1{font-size:clamp(38px,4.2vw,58px);line-height:1.45}
:root .explore-title h1{font-size:clamp(36px,3.5vw,48px);line-height:1.5}
.hero-copy p{font-size:var(--intro-size);line-height:1.9;letter-spacing:.035em}
.page-intro>p:not(.eyebrow),.explore-title>p:not(.eyebrow){font-size:var(--intro-size);line-height:1.9;max-width:740px}
.section-head h2+p,.section-head>p,.journal-intro{font-size:var(--copy-size);line-height:1.9;max-width:640px}
.story-copy p:not(.eyebrow),.prose p,.fact-layout p:not(.eyebrow),
.stay-caption p:not(.eyebrow),.room-overview-copy>p:not(.eyebrow),
.night-copy>p:not(.eyebrow),.scene-grid p:not(.eyebrow),
.notice p,.booking-welcome>p:last-child,.faq-page aside p:not(.eyebrow),
.contact-info>p:not(.eyebrow),.address-block p,.inquiry-panel>p:not(.eyebrow),
.arrival p:not(.eyebrow),.closing p:not(.eyebrow){font-family:var(--sans);font-size:var(--copy-size);line-height:1.9;letter-spacing:.01em}
.story-copy .lead{font-family:var(--sans);font-size:19px;line-height:1.9;letter-spacing:.01em}
.prose .signature,.footer-brand>p{font-family:var(--sans);font-weight:400}
.destination-card-copy>p:not(.eyebrow){font-size:var(--copy-size);line-height:1.9;min-height:0}
.experience-card p,.amenity-group p,.local-photo-card p{font-size:15px;line-height:1.85;letter-spacing:.02em}
.amenity-group li,.facts>div,.destination-list>a{font-size:16px;line-height:1.85}
.facts>div{grid-template-columns:110px minmax(0,1fr)}
.journal-grid figcaption{font-family:var(--sans);font-size:17px;line-height:1.85;letter-spacing:.01em}
.faq-answer{font-size:var(--copy-size);line-height:1.95}
.faq-item summary,.faq-page .faq-item summary{font-size:var(--copy-size);font-weight:500;line-height:1.8}
.policy-section p,.policy-section li{font-size:var(--copy-size);line-height:1.95;color:var(--muted)}
.policy-section .policy-key{font-size:var(--copy-size)}
.policy-table{font-size:16px;line-height:1.85}
.policy-table thead th{font-size:14px}
.journey-content strong{font-size:16px;font-weight:500}
.journey-content li span{font-size:14px;line-height:1.8}
.journey-content li:before{top:10px}
.gallery-item>span{font-size:14px;line-height:1.8}
.gallery-status{font-size:13px}
.destination-card-heading>span,.room-facts dt,.explore-facts span{font-size:14px}
.room-facts dd span{font-size:13px}
.inquiry-panel form{font-size:15px}
.inquiry-panel input,.inquiry-panel select,.inquiry-panel textarea{font-size:16px;line-height:1.6}
.text-link,.button,.filter-btn{font-size:14px;letter-spacing:.04em}
.policy-links>a{font-size:14px;line-height:1.8}
.booking-highlights p{font-size:13px}
.at-a-glance h2{font-family:var(--sans);font-size:18px;font-weight:500;letter-spacing:.07em;line-height:1.6}
.at-a-glance p{font-size:12px;letter-spacing:.04em}
:root :is(.stay-caption,.booking-welcome,.policy-navigation,.policy-section,.booking-faq>aside,.contact-info,.inquiry-panel,.notice) h2{font-size:30px;line-height:1.55}
:root .destination-heading h2{font-size:30px}
:root .address-block h3{font-size:23px}
.night-copy h2{font-size:clamp(30px,3vw,40px)}
.night-copy>p:not(.eyebrow),.closing p:not(.eyebrow){color:#dce7ed}
.night-detail figcaption{font-size:12px;line-height:1.8}
.footer-brand>p{font-size:15px;line-height:1.9}
.footer-contact,.footer-links{font-size:13px}
.fine-note,.policy-source,.policy-section .policy-footnote,.form-note,
.inquiry-panel .form-note,.local-photo-section>.fine-note,.destination-disclaimer,
.journey-section .fine-note,.room-section>.fine-note{font-size:13px;line-height:1.85}
.stay-caption .fine-note,.contact-info>.fine-note,.room-overview-copy .fine-note{font-size:13px!important;line-height:1.85}
.hero-kicker{font-family:var(--sans);font-weight:400}

@media(max-width:1100px) and (min-width:641px){
 :root{--copy-size:16px;--intro-size:17px;--card-title:24px}
 :root .night-copy h2{font-size:32px}
 .stay-caption{padding-inline:30px}
 .journey-grid{gap:20px}
 :root .journey-content h3{font-size:23px}
}
@media(max-width:640px){
 :root{--copy-size:16px;--intro-size:17px;--section-title:clamp(28px,8vw,34px);--card-title:25px}
 :root .hero-title{font-size:clamp(34px,10vw,43px);line-height:1.5;letter-spacing:.025em}
 :root .page-intro h1,:root .explore-title h1{font-size:clamp(30px,8.9vw,38px);line-height:1.5;letter-spacing:.01em}
 .hero-copy p{font-size:16px;letter-spacing:.02em}
 .hero-kicker{font-size:11px;letter-spacing:.12em;margin-bottom:24px}
 .section-head h2+p{max-width:none;font-size:16px;line-height:1.9}
 .story-copy .lead{font-size:18px}
 :root .night-copy h2{font-size:var(--section-title)}
 :root :is(.stay-caption,.booking-welcome,.policy-navigation,.policy-section,.booking-faq>aside,.contact-info,.inquiry-panel,.notice) h2{font-size:27px}
 :root .destination-heading h2{font-size:28px}
 .destination-card-copy{padding:24px}
 .scene-grid p:not(.eyebrow),.facility-scenes .section-head>p{font-size:16px}
 .experience-card p,.amenity-group p{font-size:14px}
 .amenity-group li,.facts>div,.destination-list>a{font-size:15px}
 .facts>div{grid-template-columns:90px minmax(0,1fr);gap:18px}
 .faq-answer{padding-left:31px;padding-right:0}
 .policy-table{font-size:14px}
 .policy-table thead th{font-size:13px}
 .policy-table th,.policy-table td{padding-inline:13px}
 .stay-time>div{flex-wrap:wrap;gap:5px;padding-inline:20px}
 .stay-time>div>span{font-size:13px;width:100%}
 .stay-time small{font-size:12px}
 .filter-btn{font-size:13px;padding-inline:17px}
 .gallery-item>span{font-size:13px}
 .at-a-glance h2{font-size:16px}
 .at-a-glance p{font-size:11px}
 .journal-grid figcaption{font-size:17px}
 .fine-note,.policy-source,.policy-section .policy-footnote,.form-note,.inquiry-panel .form-note,
 .local-photo-section>.fine-note,.destination-disclaimer,.journey-section .fine-note,.room-section>.fine-note{font-size:12px}
 .stay-caption .fine-note,.contact-info>.fine-note,.room-overview-copy .fine-note{font-size:12px!important}
 .booking-highlights p{font-size:12px}
 .explore-facts span{font-size:13px}
 .night-detail figcaption{font-size:12px}
}
