/* Layer the moving texture above the page background, below every control. */
body{isolation:isolate}
.ambient{z-index:0;inset:-8vh 0;transform:translate3d(0,var(--marble-scroll,0px),0)}
main,.footer{position:relative;z-index:1}
.ambient-marble{inset:-12%;background-size:cover;animation:living-marble 38s ease-in-out infinite alternate;will-change:transform}
.ambient-marble--dark{background-image:linear-gradient(90deg,rgba(20,17,15,.48),rgba(20,17,15,.78) 35%,rgba(20,17,15,.75) 65%,rgba(20,17,15,.5)),url('./assets/marble-dark.webp')}
.ambient-marble--light{background-image:linear-gradient(90deg,rgba(250,248,244,.4),rgba(250,248,244,.77) 35%,rgba(250,248,244,.75) 65%,rgba(250,248,244,.45)),url('./assets/marble-light.webp');animation-delay:-12s;animation-direction:alternate-reverse}
.ambient::after{content:"";position:absolute;inset:-20%;background:linear-gradient(120deg,transparent 35%,rgba(211,171,101,.07),transparent 64%);animation:marble-light 24s ease-in-out infinite alternate}
@keyframes living-marble{0%{transform:translate3d(-3%,-2%,0) scale(1.12) rotate(-1deg)}50%{transform:translate3d(2.5%,1%,0) scale(1.17) rotate(.6deg)}100%{transform:translate3d(-.5%,3%,0) scale(1.13) rotate(1.5deg)}}
@keyframes marble-light{from{transform:translateX(-16%);opacity:.25}to{transform:translateX(18%);opacity:1}}

.reveal-word{display:inline-block;white-space:nowrap}
.glyph{display:inline-block;transform-origin:50% 100%}
.js-motion .letter-reveal .glyph{opacity:0;transform:translate3d(0,.65em,0) rotateX(-55deg);filter:blur(4px);transition:opacity .7s var(--ease),transform .95s var(--ease),filter .8s var(--ease);transition-delay:var(--glyph-delay,0ms)}
.js-motion .letter-reveal.is-letter-visible .glyph{opacity:1;transform:translate3d(0,0,0) rotateX(0);filter:blur(0)}
.shimmer-text:has(.glyph){background:none;-webkit-text-fill-color:initial}
.shimmer-text .glyph{background:linear-gradient(110deg,var(--gold) 25%,var(--gold-light) 40%,var(--gold) 55%);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:gold-shimmer 8s ease-in-out infinite}
.js-motion .reveal{transform:translate3d(0,46px,0);transition:opacity .9s var(--ease),transform 1.1s var(--ease)}
.js-motion .service.reveal{transform:translate3d(35px,18px,0)}
.js-motion .offer-copy.reveal{transform:translate3d(-40px,18px,0)}
.js-motion .offer-price.reveal{transform:translate3d(40px,18px,0)}
.js-motion .model-offer--reverse .offer-copy.reveal:not(.is-visible){transform:translate3d(40px,18px,0)}
.js-motion .model-offer--reverse .offer-price.reveal:not(.is-visible){transform:translate3d(-40px,18px,0)}
.js-motion .reveal.is-visible{transform:translate3d(0,0,0)}
.service::after{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:linear-gradient(90deg,var(--gold),transparent);opacity:.6;transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease) .15s;pointer-events:none}
.service.is-visible::after{transform:scaleX(1)}

/* Touch uses scale and a short ripple, never a persistent hover state. */
.button,.theme-toggle,.text-link,.mobile-booking a,.booking-phone,.qr-link,.qr-mode,.qr-action,.qr-download,.back-top,.header-nav a,.dialog-close{transition:scale .2s var(--ease),transform .4s var(--ease),box-shadow .4s,opacity .4s}
.is-pressed{scale:.965}
.service summary{overflow:hidden;transition:background-color .25s,scale .2s}
.service summary.is-pressed{scale:.994;background:rgba(179,140,72,.12)}
.touch-ripple{position:absolute;width:110px;height:110px;margin:-55px;border-radius:50%;background:radial-gradient(circle,rgba(255,239,201,.65),rgba(219,177,102,.3) 45%,transparent 70%);pointer-events:none;animation:touch-ripple .65s var(--ease) both;z-index:3}
@keyframes touch-ripple{from{transform:scale(.05);opacity:.6}to{transform:scale(3);opacity:0}}
.booking-ways{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:32px;margin-top:35px}
.booking-direct{text-align:center}
.booking-direct>.button{margin:0}
.booking-direct .booking-phone{margin-top:23px}
.qr-widget{margin:0;text-align:center}
.qr-card{margin:0;padding:28px 0 0;border-top:1px solid var(--line);text-align:center;width:300px;max-width:100%;flex-shrink:0}
.qr-link{display:inline-flex;position:relative;background:#fff;border:1px solid rgba(161,123,62,.45);box-shadow:0 5px 25px rgba(126,91,44,.08)}
.qr-card .qr-link{width:180px;height:180px}
.bot-qr{display:block;max-width:100%;width:100%;height:auto;aspect-ratio:1;background:#fff}
:root:has(dialog[open]){overflow:hidden}
.qr-status{font-size:18px;line-height:1.25;margin-top:14px;min-height:65px}
.qr-status strong{display:block;font-weight:500;color:var(--ink)}
.qr-status span{display:block;font-size:14px;color:var(--muted);margin-top:6px;line-height:1.35}
.qr-mode-switch{display:grid;grid-template-columns:1fr 1.2fr;gap:4px;border:1px solid var(--line);border-radius:30px;padding:4px;background:var(--surface);margin:12px auto 0;max-width:280px}
.qr-mode{border:0;border-radius:24px;min-height:44px;padding:8px 10px;background:transparent;color:var(--muted);font-size:15px;white-space:nowrap;cursor:pointer;transition:background-color .25s,color .25s,scale .2s}
.qr-mode[aria-pressed="true"]{background:var(--gold);color:var(--bg)}
.qr-mode[aria-pressed="true"]::before{content:"✓";font-size:11px;margin-right:5px}
.qr-mode:focus-visible{outline-offset:2px}
.qr-tools{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:5px;flex-wrap:wrap}
.qr-action,.qr-download{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;color:var(--gold);padding-block:10px;min-height:44px;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}
.qr-toggle{display:inline-flex;border:0;background:none;color:var(--muted);font-size:14px;min-height:44px;cursor:pointer;margin:0 auto;gap:10px;padding:8px 12px}
.qr-toggle svg{width:18px;height:18px}
.qr-toggle::after{display:none}
.qr-dialog{max-width:min(92vw,470px);background:var(--bg);color:var(--ink);border:1px solid var(--line);padding:45px 35px 30px;box-shadow:0 35px 100px #0005;text-align:center}
.qr-dialog::backdrop{background:#080706a6;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.qr-dialog[open]{animation:qr-enter .55s var(--ease)}
.qr-dialog .eyebrow{justify-content:center;margin-top:10px}
.qr-dialog h2{font-size:40px;margin:18px 0 25px}
.qr-dialog .qr-link{width:230px;height:230px}
.qr-dialog .qr-widget{margin-top:22px}
.booking-dialog .qr-widget{margin-top:30px}.booking-dialog .qr-link{width:200px;height:200px}
.booking-dialog{max-height:90svh;overflow:auto}
.qr-dialog>p:not(.eyebrow){font-size:17px;line-height:1.4;color:var(--muted);margin-top:19px}
.qr-dialog .qr-download,.qr-dialog .qr-action{font-size:15px}
.qr-dialog>.button{display:flex;margin-top:15px}
.qr-dialog .booking-phone{font-size:22px;margin-top:12px}
[hidden]{display:none!important}
@keyframes qr-enter{from{opacity:0;transform:translateY(45px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:800px){.js-motion .letter-reveal .glyph{filter:none;transform:translate3d(0,.5em,0) rotateX(-25deg)}.booking-ways{gap:30px}.ambient-marble{background-size:auto 115%;animation-duration:32s}}
@media(max-width:680px){.js-motion .model-offer--reverse .offer-copy.reveal:not(.is-visible),.js-motion .model-offer--reverse .offer-price.reveal:not(.is-visible){transform:translate3d(0,28px,0)}}
@media(max-width:560px){
  .header-nav a,.back-top{min-height:44px;display:inline-flex;align-items:center}
  .header{row-gap:3px}.header.is-scrolled{height:112px}
  .hero-content{padding-top:165px}
  .hero h1{font-size:clamp(74px,17vw,100px)}
  .hero-portrait{top:380px;right:-1%;height:565px;width:100%;transform:translate3d(0,var(--touch-parallax,0px),0)}
  .portrait-caption{bottom:66px;left:24px;right:auto;max-width:200px;font-size:13px;gap:10px;text-shadow:0 1px 5px rgba(var(--bg-rgb),.8)}
  .js-motion .reveal{transform:translate3d(0,28px,0)}
  .js-motion .service.reveal{transform:translate3d(18px,10px,0)}
  .js-motion .offer-copy.reveal,.js-motion .offer-price.reveal{transform:translate3d(0,28px,0)}
  .js-motion .reveal.is-visible{transform:translate3d(0,0,0)}
  .ambient-marble{inset:-10% -40%;background-size:cover;animation:living-marble-mobile 28s ease-in-out infinite alternate;will-change:transform}
  .ambient-marble--light{animation-delay:-9s}
  .booking-ways{display:block;margin-top:28px}.booking-direct>.button{font-size:16px;padding-inline:17px;gap:10px}
  .qr-card{display:block;width:100%;max-width:300px;margin:32px auto 0;padding:28px 0 0;border-left:0;border-top:1px solid var(--line)}.qr-card .qr-link{width:200px;height:200px}.qr-toggle{display:inline-flex}
  .qr-dialog{inset:auto 0 0;margin:0;max-width:none;width:100%;max-height:90svh;padding:38px 25px max(23px,env(safe-area-inset-bottom));border-bottom:0;border-radius:22px 22px 0 0;overflow:auto}
  .qr-dialog[open]{animation:sheet-enter .5s var(--ease)}
  .qr-dialog::before{content:"";width:38px;height:3px;background:var(--line);border-radius:5px;position:absolute;top:12px;left:calc(50% - 19px)}
  .qr-dialog h2{font-size:38px;margin-top:17px;margin-bottom:21px}.qr-dialog .qr-link{width:210px;height:210px}
  .qr-dialog>.button{max-width:330px;margin-inline:auto;min-height:54px}
  .qr-dialog .dialog-close{right:9px;top:13px}
  .service summary{min-height:88px}.service-book{min-height:44px}
  .text-link{min-height:40px}.hero-actions{gap:15px}
}
@media(max-width:360px){.hero h1{font-size:73px}.hero-portrait{top:400px;right:-4%;width:108%}.booking-direct>.button{font-size:15px;gap:9px}}
@keyframes living-marble-mobile{from{transform:translate3d(-2%,-1%,0) scale(1.1)}to{transform:translate3d(5%,3%,0) scale(1.16)}}
@keyframes sheet-enter{from{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}
@media(hover:none){.theme-toggle:hover .orb{transform:none}.button:hover .button-arrow{transform:none}.service summary:hover::before{opacity:0}.service[open] summary::before{opacity:1}.marquee:hover .marquee-track{animation-play-state:running}.qr-link:active{scale:.97}}
@media(prefers-reduced-motion:reduce){.ambient,.hero-portrait{transform:none}.ambient-marble{animation:none;will-change:auto}.js-motion .letter-reveal .glyph{opacity:1;transform:none;filter:none;transition:none}.js-motion .reveal{opacity:1;transform:none}.service::after{transform:scaleX(1)}.touch-ripple{display:none}}
