/* Shared structure for JLuxeAi sample sites. Each page sets its own colours and fonts in :root and adds its own hero. */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--body);background:var(--bg);color:var(--ink);line-height:1.6;font-size:17px;overflow-x:hidden;padding-bottom:76px}
img{max-width:100%;display:block;background:var(--panel)}
a{color:inherit}
.wrap{max-width:1100px;margin-inline:auto;padding-inline:20px}
h1,h2,h3{font-family:var(--display);font-weight:var(--dw,600);line-height:1.06;text-wrap:balance}
h2{font-size:clamp(32px,5vw,54px)}
.eyebrow{font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--accent);font-weight:700}
.band{padding-block:clamp(56px,8vw,100px)}
.band.tight{padding-top:0}
.sub{color:var(--mut);max-width:36em;margin-top:12px}
.alt{background:var(--alt);color:var(--alt-ink)}
.alt .sub{color:var(--alt-mut)}.alt .eyebrow{color:var(--alt-accent)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:15px 26px;border-radius:var(--br,999px);font-weight:700;text-decoration:none;font-size:16px;border:0;cursor:pointer;font-family:inherit;transition:transform .2s}
.btn:hover{transform:translateY(-2px)}
.btn-wa{background:#1FAF57;color:#fff}
.btn-line{border:1.5px solid currentColor;background:transparent;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}

.ribbon{background:#16213E;color:#fff;font-size:13.5px;text-align:center;padding:9px 16px}
.ribbon a{color:#FFD86B;font-weight:700}
.site-head{position:sticky;top:0;z-index:20;background:var(--head,var(--bg));border-bottom:1px solid transparent;transition:border-color .3s}
.site-head.stuck{border-color:var(--line)}
.site-head .wrap{display:flex;justify-content:space-between;align-items:center;height:64px;gap:16px}
.brand{font-family:var(--display);font-size:23px;font-weight:var(--dw,600);text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.nav{display:flex;gap:24px;align-items:center;font-size:15px;flex:none}
.nav a{text-decoration:none}
.nav .btn{padding:10px 18px;font-size:15px}
@media(max-width:760px){.nav a:not(.btn){display:none}}

.pill{display:inline-block;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:7px 14px;font-size:14px;margin-bottom:18px}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.rating{display:flex;gap:10px;align-items:center;margin-top:22px;font-size:15px}
.rating b{font-family:var(--display);font-size:30px}
.stars{color:#D9A036;letter-spacing:2px}

.js [data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease;transition-delay:calc(var(--d,0)*110ms)}
.js [data-reveal].in{opacity:1;transform:none}
.js [data-words] .w{display:inline-block;opacity:0;transform:translateY(.4em);animation:word .8s ease forwards;animation-delay:calc(var(--i)*80ms + 100ms)}
@keyframes word{to{opacity:1;transform:none}}
@keyframes slow{to{transform:scale(1.12)}}

.facts3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.facts3 div{border-top:1px solid var(--line);padding-top:16px}
.facts3 b{display:block;font-family:var(--display);font-size:26px;line-height:1.15;font-weight:var(--dw,600)}
.facts3 span{color:var(--mut);font-size:15px}
@media(max-width:700px){.facts3{grid-template-columns:1fr}}

.cards{display:grid;grid-template-columns:repeat(var(--cols,3),1fr);gap:18px;margin-top:36px}
.card{background:var(--card);color:var(--card-ink);border-radius:var(--r,20px);overflow:hidden;display:flex;flex-direction:column;transition:transform .3s;border:1px solid var(--card-line,transparent)}
.card:hover{transform:translateY(-6px)}
.card .im{aspect-ratio:4/3;overflow:hidden}
.card img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.card:hover img{transform:scale(1.07)}
.card .tx{padding:20px;display:flex;flex-direction:column;gap:8px;flex:1}
.card h3{font-size:25px}
.card p{font-size:15px;opacity:.85}
.card ul{list-style:none;font-size:14px;opacity:.8;display:grid;gap:3px}
.card li:before{content:"·";margin-right:8px}
.card .price{margin-top:auto;padding-top:10px;font-size:14px}.card .price b{font-family:var(--display);font-size:27px;margin-left:4px}
.card .btn{padding:11px 16px;font-size:15px;margin-top:6px}
@media(max-width:900px){.cards{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.cards{grid-template-columns:1fr}}

.rows{margin-top:30px;border-top:1px solid var(--line)}
.row{display:grid;grid-template-columns:1fr auto auto;gap:6px 24px;align-items:center;padding:20px 0;border-bottom:1px solid var(--line)}
.row h3{font-size:26px}
.row p{grid-column:1;color:var(--mut);font-size:15px}
.row .pr{grid-row:1/3;grid-column:2;font-family:var(--display);font-size:28px;font-variant-numeric:tabular-nums;white-space:nowrap}
.row .pr small{font-family:var(--body);font-size:13px;color:var(--mut);margin-right:6px}
.row .btn{grid-row:1/3;grid-column:3;padding:10px 18px;font-size:15px}
@media(max-width:640px){.row{grid-template-columns:1fr auto}.row .btn{grid-column:1/3;grid-row:auto;justify-self:start}}

.cmp{--pos:50%;position:relative;border-radius:var(--r,24px);overflow:hidden;margin-top:32px;aspect-ratio:16/9;max-width:860px}
.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cmp .b{filter:grayscale(.75) contrast(.85) brightness(1.06)}
.cmp .a{clip-path:inset(0 0 0 var(--pos))}
.cmp .handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;background:#fff;pointer-events:none}
.cmp .handle:after{content:"◂ ▸";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;color:#222;border-radius:999px;padding:8px 12px;font-size:14px;white-space:nowrap}
.cmp input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize}
.cmp .t{position:absolute;top:14px;background:rgba(0,0,0,.6);color:#fff;font-size:12px;letter-spacing:.16em;padding:5px 10px;border-radius:999px;pointer-events:none}
.cmp .t.l{left:14px}.cmp .t.r{right:14px}
@media(max-width:600px){.cmp{aspect-ratio:4/3}}
.fine{font-size:13.5px;color:var(--mut);margin-top:12px}
.alt .fine{color:var(--alt-mut)}

.rail{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;margin-top:30px;padding-bottom:10px;scrollbar-width:thin}
.rail figure{flex:0 0 min(72vw,300px);scroll-snap-align:start;border-radius:var(--r,18px);overflow:hidden;aspect-ratio:3/4}
.rail figure:nth-child(even){aspect-ratio:3/3.4;align-self:end}
.rail img{width:100%;height:100%;object-fit:cover}
.arrows{display:flex;gap:8px;margin-top:10px}
.arrows button{width:46px;height:46px;border-radius:50%;border:1.5px solid currentColor;background:transparent;font-size:18px;cursor:pointer;color:inherit}

.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:30px}
.rev{background:var(--card);color:var(--card-ink);border-radius:var(--r,20px);padding:24px;border:1px solid var(--card-line,var(--line))}
.rev p{font-family:var(--display);font-size:22px;line-height:1.25;margin:8px 0 14px}
.rev small{opacity:.7}
@media(max-width:820px){.reviews{grid-template-columns:1fr}}

.book{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:start}
.how{list-style:none;counter-reset:h;display:grid;gap:18px;margin-top:26px}
.how li{counter-increment:h;display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:start}
.how li:before{content:counter(h);width:44px;height:44px;border-radius:50%;border:1.5px solid var(--alt-accent,var(--accent));display:grid;place-items:center;font-family:var(--display);font-size:22px;color:var(--alt-accent,var(--accent))}
.how b{display:block}.how span{opacity:.75;font-size:15px}
form{background:var(--form,var(--paper));color:var(--form-ink,#222);border-radius:24px;padding:24px;display:grid;gap:12px}
label{font-size:13px;font-weight:700;display:grid;gap:5px;letter-spacing:.03em}
input,select{font:inherit;font-size:16px;padding:12px 14px;border-radius:12px;border:1.5px solid #d9d4cf;background:#fff;color:#222;width:100%}
form .btn{width:100%}
form small{opacity:.7;font-size:13px}
@media(max-width:820px){.book{grid-template-columns:1fr}}

.cols{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.pol{list-style:none;display:grid;gap:14px;margin-top:20px}
.pol li{padding-left:18px;border-left:2px solid var(--accent)}
.pol b{display:block}
details{border-bottom:1px solid var(--line);padding:16px 0}
summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:12px}
summary:after{content:"+";color:var(--accent);font-size:22px;line-height:1}
details[open] summary:after{content:"–"}
details p{color:var(--mut);margin-top:8px}
@media(max-width:820px){.cols{grid-template-columns:1fr}}

.find{display:grid;grid-template-columns:1.1fr .9fr;gap:24px;margin-top:30px}
.map{position:relative;border-radius:var(--r,22px);overflow:hidden;min-height:280px;background:
  linear-gradient(90deg,transparent 48%,var(--road,#fff) 48% 52%,transparent 52%) 0 0/160px 100%,
  linear-gradient(0deg,transparent 46%,var(--road,#fff) 46% 54%,transparent 54%) 0 0/100% 120px,var(--panel)}
.pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);background:var(--accent);color:var(--pin-ink,#fff);padding:9px 14px;border-radius:14px 14px 14px 2px;font-weight:700;font-size:14px;animation:pin 2.4s ease-in-out infinite;white-space:nowrap;max-width:80%;overflow:hidden;text-overflow:ellipsis}
@keyframes pin{50%{transform:translate(-50%,-112%)}}
.boxes{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.box{background:var(--card);color:var(--card-ink);border:1px solid var(--card-line,var(--line));border-radius:18px;padding:18px;font-size:15px}
.box h3{font-size:23px;margin-bottom:6px}
.box table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.box td{padding:2px 0}.box td:last-child{text-align:right}
.inside{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.inside img{border-radius:18px;aspect-ratio:4/3;object-fit:cover;width:100%}
@media(max-width:820px){.find{grid-template-columns:1fr}}
@media(max-width:420px){.boxes{grid-template-columns:1fr}}
.find>*,.book>*,.cols>*,.split>*{min-width:0}

.yours{background:#123D2C;color:#fff;text-align:center}
.yours h2{color:#fff;font-family:Georgia,serif;font-weight:700}.yours p{color:#CFE3D6;margin:12px auto 24px;max-width:34em}
.yours .btn{background:#E2B869;color:#1B2A20;border-radius:999px}
footer{padding-block:30px;font-size:14px;color:var(--mut);text-align:center}
.bookbar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--bar,var(--bg));border-top:1px solid var(--line);padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));display:flex;gap:12px;align-items:center;justify-content:center;transform:translateY(110%);transition:transform .35s}
.bookbar.up{transform:none}
.bookbar span{font-size:14.5px}.bookbar .btn{padding:12px 22px}
@media(max-width:520px){.bookbar span{display:none}.bookbar .btn{width:100%}}
.embed .bookbar,.embed .ribbon,.framed .ribbon{display:none}.embed body{padding-bottom:0}.embed .site-head{position:static}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.js [data-reveal],.js [data-words] .w{opacity:1;transform:none}}
