:root{
  --navy:#121D33; --navy-2:#1B2A47; --navy-3:#0D1527;
  --paper:#F3EEE5; --sand:#E9E1D3; --sand-2:#D9CCB7;
  --ink:#1A2438; --ink-2:#4B5568; --mute:#80838C;
  --gold:#B48E58; --gold-2:#D7B988; --gold-3:#8C6A3B;
  --serif:"Noto Serif TC","Songti TC",serif;
  --latin:"Cormorant Garamond","Noto Serif TC",serif;
  --sans:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;
  --ease:cubic-bezier(.2,.7,.2,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --gut:clamp(16px,4.2vw,64px);
  --hd:80px;
  --sec:clamp(110px,13vw,200px);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:var(--hd)}
body{background:var(--paper);color:var(--ink);font:400 16px/1.85 var(--sans);letter-spacing:.02em;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video,canvas{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
svg{width:1em;height:1em;flex:none}
::selection{background:var(--gold);color:#fff}
.sprite{display:none}
.skip{position:absolute;left:-999px;top:8px;background:var(--navy);color:#fff;padding:8px 14px;z-index:99}
.skip:focus{left:8px}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.wrap{max-width:1280px;margin:0 auto;padding:0 var(--gut)}
.br-m{display:none}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:100;background:var(--navy);color:var(--paper);display:grid;place-content:center;justify-items:center;gap:22px;transition:clip-path 1.1s var(--ease-out),visibility 0s 1.1s;clip-path:inset(0 0 0 0);animation:ld-failsafe .01s 7s forwards}
.loader.is-done{clip-path:inset(0 0 100% 0);visibility:hidden}
@keyframes ld-failsafe{to{clip-path:inset(0 0 100% 0);visibility:hidden}}
.loader__mark{width:120px;height:auto;animation:ld-breathe 2.4s var(--ease) infinite}
@keyframes ld-breathe{50%{opacity:.55;transform:translateY(-3px)}}
.loader__row{display:flex;align-items:baseline;gap:18px;font:500 12px/1 var(--latin);letter-spacing:.4em;text-transform:uppercase;color:var(--gold-2)}
.loader__row b{font:italic 400 44px/1 var(--latin);letter-spacing:0;color:var(--paper);min-width:2ch;text-align:right;font-variant-numeric:tabular-nums}
.loader__bar{width:180px;height:1px;background:rgba(243,238,229,.18);overflow:hidden}
.loader__bar i{display:block;height:100%;background:var(--gold-2);transform-origin:left;transform:scaleX(0);transition:transform .3s var(--ease)}

/* ---------- buttons / headings ---------- */
.btn{display:inline-flex;align-items:center;gap:.7em;padding:.95em 1.7em;border-radius:999px;font:500 15px/1 var(--serif);letter-spacing:.14em;position:relative;overflow:hidden;isolation:isolate;transition:color .45s var(--ease),border-color .45s}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;transform:translateY(101%);transition:transform .55s var(--ease-out)}
.btn:hover::before{transform:none}
.btn svg{width:18px;height:18px;transition:transform .45s var(--ease-out)}
.btn:hover svg:last-child{transform:translateX(4px)}
.btn--light{border:1px solid rgba(243,238,229,.5);color:var(--paper)}
.btn--light::before{background:var(--paper)}
.btn--light:hover{color:var(--navy);border-color:var(--paper)}
.btn--gold{background:var(--gold);color:#fff;border:1px solid var(--gold)}
.btn--gold::before{background:var(--gold-3)}
.btn--ink{border:1px solid var(--sand-2);color:var(--navy)}
.btn--ink::before{background:var(--navy)}
.btn--ink:hover{color:var(--paper);border-color:var(--navy)}

.idx{display:flex;align-items:center;gap:14px;font:500 12.5px/1 var(--latin);letter-spacing:.3em;text-transform:uppercase;color:var(--gold-3)}
.idx span{font:italic 500 15px/1 var(--latin);letter-spacing:.12em;color:var(--navy);padding-right:14px;border-right:1px solid var(--sand-2)}
.idx--light{color:var(--gold-2)}
.idx--light span{color:var(--paper);border-color:rgba(243,238,229,.25)}
.sh{margin-bottom:clamp(48px,6vw,90px)}
.sh--row{display:flex;justify-content:space-between;align-items:flex-end;gap:40px}
.sh--row .sh__p{max-width:380px;padding-bottom:10px}
.sh__t{font:500 clamp(34px,4.6vw,60px)/1.3 var(--serif);letter-spacing:.12em;margin-top:26px;color:var(--navy)}
.sh__p{color:var(--ink-2);font-size:15px}

/* ---------- header ---------- */
.hd{position:fixed;inset:0 0 auto;z-index:50;height:var(--hd);transition:background .5s var(--ease),box-shadow .5s,transform .6s var(--ease-out)}
.hd.is-hidden{transform:translateY(-100%)}
.hd__in{height:100%;max-width:1440px;margin:0 auto;padding:0 var(--gut);display:flex;align-items:center;gap:24px}
.brand{display:flex;align-items:center;gap:12px;margin-right:auto}
.brand__mark{height:44px;width:auto}
.brand__word{height:34px;width:auto}
.nav{display:flex;align-items:center;gap:clamp(18px,2.4vw,38px);font:500 14.5px/1 var(--serif);letter-spacing:.16em;color:var(--paper)}
.nav a{position:relative;padding:8px 0;display:flex;align-items:baseline;gap:7px}
.nav small{font:italic 500 12px/1 var(--latin);letter-spacing:.04em;color:var(--gold-2);opacity:.9}
.nav a:not(.nav__cta)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease-out)}
.nav a:hover::after{transform:scaleX(1);transform-origin:left}
.nav__cta{border:1px solid currentColor;border-radius:999px;padding:11px 22px!important;transition:background .3s,color .3s,border-color .3s}
.hd.is-solid{background:rgba(243,238,229,.9);box-shadow:0 1px 0 rgba(26,36,56,.07);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2)}
.hd.is-solid .nav{color:var(--navy)}
.hd.is-solid .nav small{color:var(--gold-3)}
.hd.is-solid .nav__cta{color:var(--gold-3)}
.hd.is-solid .nav__cta:hover{background:var(--gold);color:#fff;border-color:var(--gold)}
.hd:not(.is-solid) .nav__cta:hover{background:var(--paper);color:var(--navy)}
.burger{display:none;width:44px;height:44px;position:relative}
.burger span{position:absolute;left:11px;right:11px;height:1.5px;background:var(--paper);transition:transform .4s var(--ease),top .4s var(--ease),background .3s}
.burger span:first-child{top:18px}.burger span:last-child{top:26px}
.hd.is-solid .burger span{background:var(--navy)}
.hd.is-open .burger span:first-child{top:22px;transform:rotate(45deg)}
.hd.is-open .burger span:last-child{top:22px;transform:rotate(-45deg)}

/* ---------- line / char masks ---------- */
.ln{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.ln>span{display:block;transform:translateY(105%);transition:transform 1.3s var(--ease-out)}
.is-ready .scene.is-on .ln>span{transform:none}
.scene .ln:nth-child(2)>span{transition-delay:.12s}
.scene__en .ln>span{transition-delay:.3s}
.split .ch{display:inline-block;transform:translateY(100%) rotate(4deg);opacity:0;transition:transform 1.1s var(--ease-out),opacity .8s}
.split{overflow:hidden;padding-bottom:.06em}
.scene.is-on .split .ch{transform:none;opacity:1}

/* ---------- journey ---------- */
.journey{position:relative;height:calc(100svh + 5 * 115svh + 30svh);background:var(--paper)}
.journey__stage{--o:0;position:sticky;top:0;height:100svh;overflow:hidden;isolation:isolate;background:var(--navy);
}
.journey__poster,.journey__cv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.journey__cv{opacity:0;transition:opacity .8s}
.journey.is-live .journey__cv{opacity:1}
.journey__shade{position:absolute;inset:0;pointer-events:none;background:
  radial-gradient(120% 90% at 50% 45%,transparent 40%,rgba(10,17,32,.55) 100%),
  linear-gradient(180deg,rgba(10,17,32,.55) 0%,rgba(10,17,32,0) 22%,rgba(10,17,32,0) 55%,rgba(10,17,32,.7) 100%)}
.journey__grain{position:absolute;inset:-50%;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

.scene{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:var(--hd) calc(var(--gut) + 6vw) 0;color:var(--paper);pointer-events:none;opacity:0;transition:opacity .9s var(--ease)}
.scene.is-on{opacity:1;pointer-events:auto}
.scene[data-ch="0"]{align-items:center;text-align:center;padding-left:var(--gut);padding-right:var(--gut)}
.scene__logo{width:clamp(96px,10vw,140px);height:auto;margin-bottom:30px;filter:drop-shadow(0 6px 24px rgba(0,0,0,.35));opacity:0;transform:translateY(14px);transition:opacity 1.2s var(--ease),transform 1.4s var(--ease-out)}
.is-ready .scene.is-on .scene__logo{opacity:1;transform:none}
.scene__h1{font:500 clamp(32px,5.4vw,76px)/1.42 var(--serif);letter-spacing:.16em;text-shadow:0 2px 30px rgba(8,14,28,.45)}
.scene__en{font:italic 400 clamp(20px,2.3vw,32px)/1.4 var(--latin);letter-spacing:.08em;margin-top:18px;color:#F7EFE2}
.scene__hint{position:absolute;bottom:clamp(28px,6vh,56px);left:0;right:0;font:400 12px/1 var(--serif);letter-spacing:.34em;display:flex;flex-direction:column;align-items:center;gap:14px;opacity:.85}
.scene__mouse{width:22px;height:34px;border:1px solid currentColor;border-radius:12px;position:relative}
.scene__mouse::after{content:"";position:absolute;left:50%;top:7px;width:2px;height:7px;margin-left:-1px;background:currentColor;border-radius:2px;animation:wheel 1.8s infinite var(--ease)}
@keyframes wheel{0%{opacity:0;transform:translateY(-3px)}40%{opacity:1}100%{opacity:0;transform:translateY(9px)}}
.scene--dest{max-width:820px}
.scene--dest::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,rgba(10,17,32,.62) 0%,rgba(10,17,32,.28) 38%,transparent 62%)}
.scene--r{margin-left:auto;align-items:flex-end;text-align:right;right:0;left:auto}
.scene--r::before{background:linear-gradient(270deg,rgba(10,17,32,.62) 0%,rgba(10,17,32,.28) 38%,transparent 62%)}
.scene__k{font:500 14px/1 var(--latin);letter-spacing:.34em;text-transform:uppercase;color:#E6CB98;text-shadow:0 1px 12px rgba(8,14,28,.8);display:flex;align-items:center;gap:14px;opacity:0;transform:translateY(10px);transition:opacity .9s .1s,transform 1.1s .1s var(--ease-out)}
.scene__k span{font:italic 500 22px/1 var(--latin);letter-spacing:.06em;color:var(--paper)}
.scene__k::before{content:"";width:42px;height:1px;background:var(--gold-2);order:1}
.scene--r .scene__k::before{order:-1}
.scene__h2{font:500 clamp(54px,9vw,132px)/1.1 var(--serif);letter-spacing:.18em;margin:22px 0 18px;text-shadow:0 4px 40px rgba(8,14,28,.5)}
.scene__p,.scene__geo{opacity:0;transform:translateY(12px);transition:opacity 1s .35s,transform 1.2s .35s var(--ease-out)}
.scene__p{font:400 clamp(15px,1.4vw,18px)/2 var(--serif);letter-spacing:.12em;text-shadow:0 1px 16px rgba(8,14,28,.6)}
.scene__geo{margin-top:26px;font:500 13px/1 var(--latin);letter-spacing:.3em;text-shadow:0 1px 10px rgba(8,14,28,.8)}
.scene.is-on .scene__k,.scene.is-on .scene__p{opacity:1;transform:none}
.scene.is-on .scene__geo{opacity:.75;transform:none}

.rail{position:absolute;left:var(--gut);top:50%;transform:translateY(-50%);list-style:none;display:flex;flex-direction:column;gap:26px;z-index:2}
.rail li{display:flex;align-items:center;gap:12px;color:rgba(243,238,229,.45);font:400 12px/1 var(--serif);letter-spacing:.24em;transition:color .5s}
.rail i{width:7px;height:7px;border:1px solid currentColor;border-radius:50%;transition:background .5s,transform .5s var(--ease)}
.rail span{opacity:0;transform:translateX(-6px);transition:opacity .5s,transform .5s var(--ease)}
.rail li.is-on{color:var(--gold-2)}
.rail li.is-on i{background:var(--gold-2);transform:scale(1.25)}
.rail li.is-on span{opacity:1;transform:none}
.rail::before{content:"";position:absolute;left:3px;top:4px;bottom:4px;width:1px;background:rgba(243,238,229,.18);z-index:-1}
.alt{position:absolute;right:var(--gut);bottom:clamp(24px,5vh,48px);display:flex;align-items:baseline;gap:8px;color:rgba(243,238,229,.7);font:500 11px/1 var(--latin);letter-spacing:.3em}
.alt b{font:italic 500 22px/1 var(--latin);letter-spacing:.06em;color:var(--paper);min-width:5.2ch;text-align:right;font-variant-numeric:tabular-nums}
.journey__stage .rail,.journey__stage .alt{transition:opacity .4s}
.journey__stage.is-out .rail,.journey__stage.is-out .alt{opacity:0}

/* ---------- manifesto ---------- */
.manifesto{position:relative;overflow:hidden;padding:calc(var(--sec) * .7) 0 var(--sec);text-align:center}
.manifesto .wrap{position:relative;z-index:1;max-width:980px}
.manifesto .idx{justify-content:center}
.manifesto__t{font:400 clamp(26px,3.6vw,48px)/1.8 var(--serif);letter-spacing:.12em;color:var(--navy);margin:40px 0 44px}
.manifesto__t .w{opacity:.16;transition:opacity .35s var(--ease)}
.manifesto__t .w.on{opacity:1}
.manifesto__t .w.em{color:var(--gold-3)}
.manifesto__p{color:var(--ink-2);max-width:620px;margin:0 auto;line-height:2.15;font-size:15.5px}
.globe{position:absolute;width:min(80vw,760px);height:auto;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--gold);opacity:.14;animation:spin 160s linear infinite}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}

/* ---------- services: editorial rows ---------- */
.services{padding:var(--sec) 0;background:var(--sand);position:relative}
.svc{list-style:none;border-top:1px solid var(--sand-2)}
.svc__row{position:relative;display:grid;grid-template-columns:90px minmax(240px,1fr) 1.2fr 150px;align-items:center;gap:clamp(18px,3vw,48px);padding:clamp(34px,4vw,56px) 0;border-bottom:1px solid var(--sand-2);isolation:isolate;cursor:default}
.svc__row::before{content:"";position:absolute;inset:0 calc(-1 * var(--gut));z-index:-1;background:var(--navy);transform:scaleY(0);transform-origin:bottom;transition:transform .7s var(--ease-out)}
.svc__row::after{content:none}
.svc__n{font:italic 400 clamp(46px,5vw,72px)/1 var(--latin);color:var(--gold);transition:color .4s}
.svc__h h3{font:500 clamp(28px,3.4vw,44px)/1.3 var(--serif);letter-spacing:.14em;color:var(--navy);transition:color .4s}
.svc__en{font:italic 400 18px/1 var(--latin);letter-spacing:.08em;color:var(--mute);margin-top:10px;transition:color .4s}
.svc__d{color:var(--ink-2);font-size:15px;max-width:440px;transition:color .4s}
.svc__tags{grid-column:3;font:400 12.5px/1 var(--serif);letter-spacing:.18em;color:var(--gold-3);margin-top:-14px;transition:color .4s}
.svc__tags i{font-style:normal;white-space:nowrap}
.svc__thumb{grid-column:4;grid-row:1/3;width:150px;aspect-ratio:4/5;height:auto;object-fit:cover}
@media (hover:hover) and (pointer:fine){
  .svc__row:hover::before{transform:scaleY(1);transform-origin:top}
  .svc__row:hover .svc__h h3{color:var(--paper)}
  .svc__row:hover .svc__d{color:rgba(243,238,229,.78)}
  .svc__row:hover .svc__en{color:var(--gold-2)}
  .svc__row:hover .svc__tags{color:var(--gold-2)}
}
.svc__float{position:fixed;left:0;top:0;z-index:5;width:clamp(240px,22vw,340px);aspect-ratio:4/5;pointer-events:none;overflow:hidden;border-radius:2px;opacity:0;transform:translate3d(-50%,-50%,0) scale(.85);transition:opacity .4s var(--ease),transform .5s var(--ease-out);box-shadow:0 40px 80px -30px rgba(0,0,0,.55)}
.svc__float.is-on{opacity:1}
.svc__float img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.15);transition:opacity .5s,transform 1.2s var(--ease-out)}
.svc__float img.on{opacity:1;transform:none}

/* ---------- tours ---------- */
.tours{padding:var(--sec) 0;background:var(--paper)}
.tour-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,2.6vw,40px);align-items:start}
.tour{position:relative;display:flex;flex-direction:column}
.tour:nth-child(2){margin-top:clamp(0px,7vw,110px)}
.tour:nth-child(3){margin-top:clamp(0px,3.5vw,55px)}
.tour__hit{position:absolute;inset:0;z-index:3;cursor:pointer}
.tour__img{position:relative;aspect-ratio:4/5;overflow:hidden}
.tour__img img{width:100%;height:100%;object-fit:cover;transition:transform 1.6s var(--ease-out)}
.tour__img::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,29,51,.15),transparent 30%,transparent 60%,rgba(18,29,51,.55))}
.tour__tag{position:absolute;z-index:1;top:18px;left:18px;padding:7px 12px;font:500 12px/1 var(--serif);letter-spacing:.2em;color:var(--paper);background:rgba(18,29,51,.45);border:1px solid rgba(215,185,136,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.tour__code{position:absolute;z-index:1;right:16px;bottom:6px;font:italic 400 clamp(56px,6vw,92px)/1 var(--latin);letter-spacing:.02em;color:rgba(243,238,229,.92);transition:transform .9s var(--ease-out)}
.tour:hover .tour__code{transform:translateY(-6px)}
.tour__b{padding:26px 2px 0;display:flex;flex-direction:column}
.tour__k{font:500 12.5px/1 var(--latin);letter-spacing:.3em;text-transform:uppercase;color:var(--gold-3)}
.tour h3{font:500 clamp(21px,1.9vw,25px)/1.45 var(--serif);letter-spacing:.12em;color:var(--navy);margin:12px 0 8px}
.tour__s{color:var(--ink-2);font-size:14.5px}
.tour__meta{list-style:none;display:flex;margin:22px 0 22px;border-top:1px solid var(--sand-2);border-bottom:1px solid var(--sand-2)}
.tour__meta li{flex:1;text-align:center;padding:14px 4px;font-size:12px;letter-spacing:.12em;color:var(--mute)}
.tour__meta li+li{border-left:1px solid var(--sand-2)}
.tour__meta b{display:block;font:500 24px/1.1 var(--latin);color:var(--navy);letter-spacing:.02em;margin-bottom:4px}
.tour__btn{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;font:500 14.5px/1 var(--serif);letter-spacing:.16em;color:var(--navy);padding:6px 0;position:relative}
.tour__btn::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--gold);transform-origin:left;transition:transform .6s var(--ease-out)}
.tour:hover .tour__btn::after{transform:scaleX(.35)}
.tour__btn svg{width:18px;height:18px;color:var(--gold-3);transition:transform .5s var(--ease-out)}
.tour:hover .tour__btn svg{transform:translateX(6px)}

/* ---------- hotel ---------- */
.hotel{display:grid;grid-template-columns:1.1fr 1fr;background:var(--navy);color:var(--paper);position:relative}
.hotel__media{position:relative;min-height:640px;overflow:hidden}
.hotel__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:42% 50%;transform:scale(1.06);transition:transform 2.4s var(--ease-out)}
.hotel__media.is-in .hotel__img{transform:none}
.hotel__media::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 60%,var(--navy))}
.hotel__b{padding:clamp(70px,8vw,130px) clamp(24px,5vw,100px) clamp(70px,8vw,130px) clamp(24px,3vw,44px);position:relative}
.hotel__t{font:500 clamp(44px,5.4vw,76px)/1.05 var(--latin);letter-spacing:.04em;margin:26px 0 12px}
.hotel__t i{font-style:italic;color:var(--gold-2);font-weight:400}
.hotel__sub{font:500 15px/1.6 var(--serif);letter-spacing:.24em;color:var(--gold-2)}
.hotel__p{margin:26px 0 30px;color:rgba(243,238,229,.8);line-height:2.1;max-width:500px;font-size:15.5px}
.hotel__dl{display:grid;gap:12px;font-size:14px;border-top:1px solid rgba(215,185,136,.22);padding-top:22px;max-width:500px}
.hotel__dl div{display:grid;grid-template-columns:56px 1fr;gap:12px}
.hotel__dl dt{color:var(--gold-2);letter-spacing:.2em}
.hotel__perk{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin-top:26px;max-width:500px}
.hotel__perk li{padding:.55em 1.1em;border:1px solid rgba(215,185,136,.32);border-radius:999px;font:400 13px/1 var(--serif);letter-spacing:.14em;color:var(--gold-2)}
.hotel__cta{margin-top:32px}
.rooms{grid-column:1/-1;background:var(--navy-2);padding:clamp(70px,8vw,120px) var(--gut) clamp(80px,9vw,140px)}
.rooms__hd{margin-bottom:clamp(34px,4vw,56px)}
.rooms__t{font:500 clamp(30px,3.4vw,46px)/1.2 var(--serif);letter-spacing:.16em;color:var(--paper);margin-top:18px}
.rooms__grid{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2vw,30px)}
.room{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto 1fr auto;column-gap:12px;align-content:start}
.room__img{grid-column:1/-1;aspect-ratio:4/5;overflow:hidden;margin-bottom:22px;background:var(--navy)}
.room__img img{width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 1.2s var(--ease-out),filter .6s;filter:saturate(.92)}
.room:hover .room__img img{transform:scale(1.1);filter:saturate(1)}
.room__n{grid-row:2/4;font:italic 400 30px/1 var(--latin);color:var(--gold-2)}
.room__t{font:500 20px/1.3 var(--serif);letter-spacing:.14em;color:var(--paper)}
.room__en{grid-column:2;font:italic 400 14.5px/1.4 var(--latin);letter-spacing:.06em;color:rgba(243,238,229,.5);margin-top:4px}
.room__d{grid-column:1/-1;margin-top:16px;font-size:14px;line-height:1.95;color:rgba(243,238,229,.72)}
.room__meta{grid-column:1/-1;list-style:none;display:flex;margin-top:18px;padding-top:14px;border-top:1px solid rgba(215,185,136,.2);font:400 12.5px/1 var(--serif);letter-spacing:.12em;color:var(--gold-2)}
.room__meta li+li::before{content:"·";margin:0 .7em;opacity:.6}

/* ---------- route ---------- */
.route{padding:var(--sec) 0;background:var(--paper);overflow:hidden}
.route__track{position:relative;max-width:1280px;margin:0 auto;padding:0 var(--gut)}
.route__svg{display:block;width:100%;height:clamp(120px,16vw,220px);overflow:visible}
.route__base{fill:none;stroke:var(--sand-2);stroke-width:1.2;stroke-dasharray:3 7;vector-effect:non-scaling-stroke}
.route__line{fill:none;stroke:var(--gold);stroke-width:1.6;vector-effect:non-scaling-stroke}
.route__plane{position:absolute;left:0;top:0;width:28px;height:28px;color:var(--navy);transform:translate(-50%,-50%);will-change:transform;filter:drop-shadow(0 4px 8px rgba(18,29,51,.25))}
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(20px,3vw,44px);margin-top:clamp(20px,3vw,40px)}
.steps li{position:relative;opacity:.35;transform:translateY(14px);transition:opacity .8s var(--ease),transform 1s var(--ease-out)}
.steps li.on{opacity:1;transform:none}
.steps__dot{display:none}
.steps__n{font:italic 400 clamp(44px,4.4vw,64px)/1 var(--latin);color:var(--gold)}
.steps h3{font:500 20px/1.5 var(--serif);letter-spacing:.14em;color:var(--navy);margin:16px 0 8px}
.steps p{color:var(--ink-2);font-size:14.5px}

/* ---------- contact / boarding pass ---------- */
.contact{background:var(--navy) url("img/poster-sky.jpg") center/cover;position:relative;color:var(--paper);padding:var(--sec) 0}
.contact::before{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(18,29,51,.97) 30%,rgba(18,29,51,.72))}
.contact__in{position:relative;display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(40px,6vw,100px);align-items:center}
.contact__t{font:500 clamp(28px,3.1vw,46px)/1.55 var(--serif);letter-spacing:.1em;margin:26px 0 20px;white-space:nowrap}
.contact__p{color:rgba(243,238,229,.78);max-width:420px}
.social{list-style:none;display:flex;gap:12px;margin-top:34px}
.social a{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:1px solid rgba(215,185,136,.35);color:var(--gold-2);position:relative;overflow:hidden;isolation:isolate;transition:color .4s var(--ease),border-color .4s}
.social a::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--gold-2);border-radius:inherit;transform:scale(0);transition:transform .45s var(--ease-out)}
.social a:hover{color:var(--navy);border-color:var(--gold-2)}
.social a:hover::before{transform:scale(1)}
.social a:focus-visible{outline:1px solid var(--gold-2);outline-offset:3px}
.social svg{width:20px;height:20px}
.pass{--notch:16px;display:grid;grid-template-columns:1fr 168px;color:var(--ink);filter:drop-shadow(0 40px 60px rgba(0,0,0,.45));transform:rotate(-1.2deg);transition:transform .9s var(--ease-out),opacity 1.1s var(--ease)}
.pass.is-in{transform:rotate(-1.2deg)}
.pass:hover{transform:rotate(0)}
.pass__main,.pass__stub{background:var(--paper);position:relative}
.pass__main{padding:clamp(24px,3vw,38px);border-radius:10px 0 0 10px;
  -webkit-mask:radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle var(--notch) at 100% 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle var(--notch) at 100% 100%,#0000 98%,#000) bottom/100% 51% no-repeat}
.pass__stub{border-radius:0 10px 10px 0;padding:clamp(24px,3vw,38px) 22px;display:flex;flex-direction:column;gap:6px;border-left:2px dashed var(--sand-2);
  -webkit-mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) bottom/100% 51% no-repeat;
  mask:radial-gradient(circle var(--notch) at 0 0,#0000 98%,#000) top/100% 51% no-repeat,radial-gradient(circle var(--notch) at 0 100%,#0000 98%,#000) bottom/100% 51% no-repeat}
.pass__hd{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--sand-2)}
.pass__hd img{height:40px;width:auto}
.pass__hd span{font:500 11px/1.5 var(--latin);letter-spacing:.3em;text-transform:uppercase;color:var(--gold-3);text-align:right}
.pass__hd b{font:500 14px/1.6 var(--serif);letter-spacing:.3em;color:var(--navy)}
.pass__route{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:26px 0 22px}
.pass__route div{display:flex;flex-direction:column}
.pass__route small,.pass__grid dt,.pass__stub small{font:500 10.5px/1.4 var(--latin);letter-spacing:.24em;text-transform:uppercase;color:var(--mute)}
.pass__route b{font:500 clamp(40px,4.4vw,58px)/1 var(--latin);letter-spacing:.04em;color:var(--navy);margin:6px 0 4px}
.pass__route span{font:500 13px/1 var(--serif);letter-spacing:.18em;color:var(--ink-2)}
.pass__to{align-items:flex-end;text-align:right}
.pass__to b{color:var(--gold-3);font-style:italic}
.pass__plane{flex:1 1 auto;min-width:40px;width:auto;height:22px;color:var(--gold);background:linear-gradient(90deg,var(--sand-2) 50%,transparent 0) 0 50%/8px 1px repeat-x}
.pass__grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;padding:18px 0 24px;border-top:1px solid var(--sand-2)}
.pass__grid dd{font:500 15px/1.6 var(--serif);letter-spacing:.06em;color:var(--navy);margin-top:4px}
.pass__wide{grid-column:1/-1}
.pass__grid a{background:linear-gradient(var(--gold),var(--gold)) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease-out)}
.pass__grid a:hover{background-size:100% 1px}
.pass__btns{display:flex;flex-wrap:wrap;gap:12px}
.pass__btns .btn{padding:.85em 1.3em;font-size:14px}
.pass__stub b{font:500 18px/1.2 var(--latin);letter-spacing:.06em;color:var(--navy);margin-bottom:14px}
.pass__code{margin-top:auto;height:64px;background:repeating-linear-gradient(90deg,var(--navy) 0 2px,transparent 2px 4px,var(--navy) 4px 5px,transparent 5px 8px,var(--navy) 8px 11px,transparent 11px 13px);opacity:.85}

/* ---------- footer ---------- */
.ft{background:var(--navy-3);color:rgba(243,238,229,.7);padding:clamp(70px,9vw,130px) 0 34px;overflow:hidden}
.ft__sign{display:flex;flex-direction:column;font:italic 400 clamp(52px,11.5vw,184px)/.98 var(--latin);letter-spacing:-.01em;color:var(--paper);margin-bottom:clamp(50px,6vw,90px)}
.ft__sign span:last-child{align-self:flex-end;color:var(--gold-2)}
.ft__in{display:flex;align-items:center;gap:36px;flex-wrap:wrap;padding-top:34px;border-top:1px solid rgba(243,238,229,.1)}
.ft__in img{height:42px;width:auto}
.ft__nav{display:flex;gap:28px;margin-left:auto;font:400 14px/1 var(--serif);letter-spacing:.16em}
.ft__nav a:hover,.ft__top:hover{color:var(--gold-2)}
.ft__top{font:400 14px/1 var(--serif);letter-spacing:.16em}
.ft__info{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:end;margin-top:40px;padding-top:34px;border-top:1px solid rgba(243,238,229,.1)}
.ft__dl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px clamp(20px,3vw,48px);font-size:13.5px;line-height:1.6}
.ft__dl div{display:grid;grid-template-columns:5.2em 1fr;gap:10px}
.ft__dl dt{font:500 12px/1.9 var(--serif);letter-spacing:.2em;color:var(--gold-2);opacity:.85}
.ft__w{grid-column:span 2}
.ft__dl dd{color:rgba(243,238,229,.78);letter-spacing:.04em}
.ft__dl a:hover{color:var(--gold-2)}
.social--ft{margin-top:0}
.social--ft a{width:40px;height:40px}
.social--ft svg{width:18px;height:18px}
.ft__c{margin-top:34px;font-size:12px;letter-spacing:.06em;color:rgba(243,238,229,.4)}

/* ---------- drawer ---------- */
.drawer{position:fixed;inset:0 0 0 auto;margin:0;height:100%;max-height:none;width:min(620px,100%);max-width:100%;border:0;background:var(--paper);color:var(--ink);padding:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;transform:translateX(100%);transition:transform .6s var(--ease-out),display .6s allow-discrete,overlay .6s allow-discrete}
.drawer[open]{transform:none}
@starting-style{.drawer[open]{transform:translateX(100%)}}
.drawer::backdrop{background:rgba(10,17,32,.55);backdrop-filter:blur(3px)}
.drawer__in{padding:0 0 48px}
.drawer__x{position:fixed;top:14px;right:14px;z-index:3;width:44px;height:44px;border-radius:50%;background:rgba(18,29,51,.6);color:#fff;display:grid;place-items:center;backdrop-filter:blur(6px);transition:transform .5s var(--ease-out),background .3s}
.drawer__x:hover{transform:rotate(90deg);background:var(--navy)}
.drawer__x svg{width:20px;height:20px}
.drawer__hero{position:relative;height:300px;overflow:hidden;color:var(--paper)}
.drawer__hero img{width:100%;height:100%;object-fit:cover}
.drawer__hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(18,29,51,.1),rgba(18,29,51,.82))}
.drawer__hero div{position:absolute;left:32px;right:32px;bottom:26px;z-index:1}
.drawer__hero .tour__k{color:var(--gold-2)}
.drawer__hero h2{font:500 30px/1.4 var(--serif);letter-spacing:.14em;margin-top:10px}
.days{list-style:none;padding:36px 32px 6px;position:relative}
.days li{position:relative;padding:0 0 30px 64px;opacity:0;transform:translateY(16px);animation:day-in .8s var(--ease-out) forwards}
.days li::before{content:"";position:absolute;left:21px;top:44px;bottom:0;width:1px;background:var(--sand-2)}
.days li:last-child::before{display:none}
@keyframes day-in{to{opacity:1;transform:none}}
.days__d{position:absolute;left:0;top:0;width:44px;height:44px;border-radius:50%;border:1px solid var(--gold);display:grid;place-items:center;font:italic 500 18px/1 var(--latin);color:var(--gold-3);background:var(--paper)}
.days__d small{display:block;font:500 8px/1 var(--latin);letter-spacing:.2em;font-style:normal;margin-bottom:-6px}
.days h3{font:500 18px/1.6 var(--serif);letter-spacing:.08em;color:var(--navy);padding-top:8px}
.days p{font-size:14.5px;color:var(--ink-2);margin-top:6px}
.days .meal{font-size:13px;color:var(--mute);margin-top:8px}
.drawer__stay,.drawer__note{margin:0 32px;font-size:14px;color:var(--ink-2)}
.drawer__stay{padding:18px 20px;background:var(--sand);border-left:2px solid var(--gold);margin-bottom:14px}
.drawer__note{font-size:12.5px;color:var(--mute);margin-bottom:28px}
.drawer .btn{margin-left:32px}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(30px);transition:opacity 1.1s var(--ease),transform 1.3s var(--ease-out)}
.reveal.is-in{opacity:1;transform:none}
.pass.reveal{transform:translateY(40px) rotate(-3deg)}
.pass.reveal.is-in{transform:rotate(-1.2deg)}
.pass.reveal.is-in:hover{transform:rotate(0)}
.rv-img{clip-path:inset(100% 0 0 0);transition:clip-path 1.5s var(--ease-out)}
.rv-img img,.rv-img video{transform:scale(1.25);transition:transform 2s var(--ease-out)}
.rv-img.is-in{clip-path:inset(0 0 0 0)}
.rv-img.is-in img,.rv-img.is-in video{transform:none}
.tour:hover .rv-img.is-in img{transform:scale(1.06)}
.tour:nth-child(2) .rv-img{transition-delay:.12s}
.tour:nth-child(3) .rv-img{transition-delay:.24s}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  .nav small{display:none}
  .svc__row{grid-template-columns:70px 1fr 1.2fr 120px}
  .svc__thumb{width:120px}
}
@media (max-width:1024px){
  .tour-grid{grid-template-columns:1fr 1fr}
  .tour:nth-child(2){margin-top:80px}
  .tour:nth-child(3){grid-column:1/-1;margin-top:0;display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,2.6vw,40px);align-items:center}
  .tour:nth-child(3) .tour__img{aspect-ratio:4/3}
  .contact__in{grid-template-columns:1fr}
  .pass{max-width:720px}
}
@media (max-width:900px){
  :root{--hd:66px}
  .burger{display:block;z-index:2}
  .brand__mark{height:36px}.brand__word{height:28px}
  .nav{position:fixed;inset:0;flex-direction:column;justify-content:center;gap:28px;font-size:22px;background:var(--navy);color:var(--paper)!important;opacity:0;visibility:hidden;transition:opacity .45s var(--ease),visibility .45s}
  .nav small{display:inline;font-size:14px}
  .nav .nav__cta{color:var(--gold-2)!important}
  .hd.is-open .nav{opacity:1;visibility:visible}
  .hd.is-open .burger span{background:var(--paper)!important}
  .hd.is-open .brand{position:relative;z-index:2}
  .hotel{grid-template-columns:1fr}
  .hotel__media{min-height:62vw}
  .hotel__media::after{background:linear-gradient(180deg,transparent 55%,var(--navy))}
  .hotel__b{padding:24px var(--gut) 70px}
  .sh--row{flex-direction:column;align-items:flex-start;gap:16px}
  .svc__row{grid-template-columns:56px 1fr 120px;grid-template-rows:auto auto auto;align-items:start;row-gap:10px}
  .svc__row::after{display:none}
  .svc__n{grid-row:1/4}
  .svc__h{grid-column:2}
  .svc__d{grid-column:2;grid-row:2}
  .svc__tags{grid-column:2;grid-row:3;margin-top:4px}
  .svc__thumb{display:block;grid-column:3;grid-row:1/4;width:120px;aspect-ratio:3/4;height:auto;object-fit:cover;align-self:center}
  .svc__float{display:none}
  .route__svg,.route__plane{display:none}
  .steps{grid-template-columns:1fr;gap:0;margin-top:0;padding-left:34px;position:relative}
  .steps::before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:1px;background:linear-gradient(var(--gold) var(--rp,0%),var(--sand-2) 0)}
  .steps li{padding-bottom:40px}
  .steps__dot{display:block;position:absolute;left:-34px;top:14px;width:13px;height:13px;border-radius:50%;border:1px solid var(--gold);background:var(--paper);transition:background .5s}
  .steps li.on .steps__dot{background:var(--gold)}
  .steps__n{font-size:40px}
}
@media (max-width:640px){
  body{font-size:15px}
  .br-m{display:inline}
  .tour-grid{grid-template-columns:1fr;gap:56px}
  .tour:nth-child(2){margin-top:0}
  .tour:nth-child(3){display:flex}
  .tour:nth-child(3) .tour__img{aspect-ratio:4/5}
  .brand__word{display:none}
  .scene{padding:var(--hd) var(--gut) 0}
  .scene--dest{justify-content:flex-end;padding-bottom:22svh}
  .scene--dest::before,.scene--r::before{background:linear-gradient(0deg,rgba(10,17,32,.75) 0%,rgba(10,17,32,.35) 45%,transparent 70%)}
  .scene--r{align-items:flex-start;text-align:left}
  .scene--r .scene__k::before{order:1}
  .scene__h1{letter-spacing:.1em}
  .scene__h2{font-size:clamp(40px,11vw,54px);letter-spacing:.12em}
  .scene__p br{display:none}
  .rail{top:auto;bottom:calc(env(safe-area-inset-bottom) + 22px);transform:none;flex-direction:row;gap:14px}
  .rail::before{left:4px;right:4px;top:3px;bottom:auto;width:auto;height:1px}
  .rail span{display:none}
  .alt{bottom:calc(env(safe-area-inset-bottom) + 16px)}
  .svc__row{grid-template-columns:40px 1fr 92px}
  .svc__n{font-size:38px}
  .svc__thumb{width:92px}
  .pass,.pass.reveal.is-in,.pass.reveal.is-in:hover{grid-template-columns:1fr;transform:none}
  .pass__main{border-radius:10px 10px 0 0;-webkit-mask:none;mask:none}
  .pass__stub{border-radius:0 0 10px 10px;border-left:0;border-top:2px dashed var(--sand-2);-webkit-mask:none;mask:none;display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:4px 14px}
  .pass__stub b{margin:0}
  .pass__code{grid-column:1/-1;height:44px;margin-top:10px}
  .pass__grid{grid-template-columns:1fr}
  .ft__sign span:last-child{align-self:flex-start}
  .ft__nav{margin-left:0;flex-wrap:wrap;gap:16px 22px}
  .drawer__hero div{left:22px;right:22px}
  .drawer__hero h2{font-size:24px}
  .days{padding:28px 20px 4px}
  .drawer__stay,.drawer__note{margin-left:20px;margin-right:20px}
  .drawer .btn{margin-left:20px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .reveal,.rv-img,.rv-img img{opacity:1;transform:none;clip-path:none}
  .ln>span,.split .ch{transform:none;opacity:1}
  .loader{display:none}
  .manifesto__t .w{opacity:1}
  .steps li{opacity:1;transform:none}
}
.contact{overflow:hidden}
@media (max-width:640px){.contact__t{white-space:normal}}
@media (max-width:1024px){.contact__in{grid-template-columns:minmax(0,1fr)}.pass,.pass__main{min-width:0}}
@media (max-width:640px){.pass{grid-template-columns:minmax(0,1fr)}.pass__route b{font-size:38px}}
.pass__route span{white-space:nowrap}
@media (max-width:640px){.svc__tags{letter-spacing:.06em;line-height:1.7}.svc__h h3{font-size:clamp(22px,6.6vw,28px);letter-spacing:.08em}}

@media (max-width:1100px){.ft__dl{grid-template-columns:repeat(2,minmax(0,1fr))}.ft__w{grid-column:1/-1}}
@media (max-width:760px){.ft__info{grid-template-columns:1fr;gap:30px}.ft__dl{grid-template-columns:1fr;gap:12px}.ft__w{grid-column:auto}}

@media (max-width:1100px){.rooms__grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:48px}.room__img{aspect-ratio:4/3}}
@media (max-width:640px){.rooms__grid{grid-template-columns:1fr;row-gap:44px}}
