.uw{
  font-family:Inter,system-ui,-apple-system,'Segoe UI',sans-serif;
  color:#3E5068;background:transparent;padding:26px 0;
}
.uw-wrap{max-width:1240px;margin:0 auto;padding:0 24px;}
.uw-head{max-width:760px;margin:0 auto 18px;text-align:center;}
.uw-eyebrow{
  display:inline-block;margin-bottom:16px;font-size:12.5px;font-weight:700;
  letter-spacing:.11em;text-transform:uppercase;color:#1B6AC9;
  background:#E8F0FB;border-radius:999px;padding:7px 15px;
}
.uw-h1{
  font-size:clamp(30px,4vw,46px);font-weight:800;color:#0B2545;
  letter-spacing:-.025em;line-height:1.12;margin:0 0 16px;
}
.uw-sub{font-size:17px;line-height:1.7;color:#647692;margin:0;}
.uw-pick-hint{
  display:inline-block;width:fit-content;margin:20px 0 0;
  font-size:13.5px;font-weight:700;letter-spacing:.02em;color:#1B6AC9;
  background:#fff;border:1.5px solid #1B6AC9;
  border-radius:999px;padding:10px 22px;
  animation:uw-hint-pulse 2.2s ease-in-out infinite;
}
@keyframes uw-hint-pulse{
  0%,100%{transform:scale(1);}
  50%{transform:scale(1.04);}
}
@media (prefers-reduced-motion:reduce){.uw-pick-hint{animation:none;}}
.uw-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:34px;}
.uw-card{
  position:relative;display:block;padding:0;border:1px solid rgba(11,37,69,.12);
  border-radius:14px;overflow:hidden;cursor:pointer;text-align:left;
  background:#fff;font-family:inherit;
  /* entrance stagger: transform/box-shadow/border-color keep their own hover-speed transitions;
     opacity gets its own duration + a delay driven by style="--i:N" (set per card in the grid),
     so the six cards fade in one after another without any JS timing loop. */
  transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease,border-color .3s ease,
    opacity .5s ease;
  transition-delay:0s,0s,0s,calc(var(--i,0) * 70ms);
}
/* The hidden start state is gated behind .uw-anim, which the script adds only once
   it is running. Previously a single JS error left every card at opacity:0 and the
   whole Work section looked empty — now a broken script just means no fade-in. */
.uw-anim .uw-card{opacity:0;}
.uw-anim .uw-card.is-in{opacity:1;}
.uw-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(11,37,69,.14);}
.uw-card.is-active{border-color:#0B2545;border-width:2px;box-shadow:0 18px 44px rgba(11,37,69,.18);}
.uw-card-img{display:block;height:168px;overflow:hidden;background:#EDF1F7;}
.uw-card-img img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.22,.61,.36,1);}
.uw-card:hover .uw-card-img img{transform:scale(1.05);}
.uw-card-b{display:block;padding:18px 20px 20px;}
.uw-card-kind{display:block;font-size:11.5px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:#94A3B8;margin-bottom:7px;}
.uw-card-name{display:block;font-size:21px;margin-bottom:8px;color:#0B2545;}
/* price/CTA-style cross-fade: note and CTA sit in the same grid cell and swap on hover instead
   of the card growing taller or a CTA pushing the note aside. */
.uw-card-foot{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;}
.uw-card-note,.uw-card-cta{grid-column:1;grid-row:1;min-width:0;
  transition:opacity .35s ease,transform .35s ease;}
.uw-card-note{display:block;font-size:12.5px;color:#647692;opacity:1;transform:translateY(0);}
.uw-card-cta{display:block;font-size:12.5px;font-weight:700;color:#1B6AC9;
  opacity:0;transform:translateY(6px);}
.uw-card:hover .uw-card-note,.uw-card:focus-visible .uw-card-note{opacity:0;transform:translateY(-6px);}
.uw-card:hover .uw-card-cta,.uw-card:focus-visible .uw-card-cta{opacity:1;transform:translateY(0);}
.c-restaurant   .uw-card-name{font-family:'Playfair Display',serif;font-weight:700;font-style:italic;}
.c-law          .uw-card-name{font-family:'Libre Baskerville',serif;font-weight:700;font-size:19px;}
.c-gym          .uw-card-name{font-family:Oswald,sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:.02em;}
.c-construction .uw-card-name{font-family:'Archivo Black',sans-serif;font-size:18px;text-transform:uppercase;}
.c-spa          .uw-card-name{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:25px;font-style:italic;}
.c-coffee       .uw-card-name{font-family:Nunito,sans-serif;font-weight:800;}
.c-plumbing     .uw-card-name{font-family:Inter,sans-serif;font-weight:800;letter-spacing:-.01em;}
.c-realestate   .uw-card-name{font-family:'Playfair Display',serif;font-weight:700;}
.c-autodetail   .uw-card-name{font-family:'Archivo Black',sans-serif;font-size:17px;text-transform:uppercase;letter-spacing:.01em;}
.c-plumbing   .uw-card-img{background:linear-gradient(135deg,#0B2545,#1B6AC9);}
.c-realestate .uw-card-img{background:linear-gradient(135deg,#F3EBDD,#DCC9A3);}
.c-autodetail .uw-card-img{background:linear-gradient(135deg,#0B0B0D,#2B2B30);}
.uw-stage{max-width:1240px;margin:0 auto;padding:0 24px;
  display:none;animation:uw-stage-in .4s cubic-bezier(.22,.61,.36,1);}
.uw-stage.is-open{display:block;}
@keyframes uw-stage-in{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
@media (prefers-reduced-motion:reduce){.uw-stage{animation:none;}}
.uw-frame{
  position:relative;
  border:1px solid rgba(11,37,69,.14);border-radius:16px;overflow:hidden;
  box-shadow:0 8px 20px rgba(11,37,69,.1);background:#fff;
}
.uw-chrome{
  height:46px;display:flex;align-items:center;gap:7px;padding:0 16px;
  background:#EDF1F7;border-bottom:1px solid rgba(11,37,69,.08);
}
.uw-chrome>i{width:10px;height:10px;border-radius:50%;background:#CBD6E4;}
.uw-url{
  margin-left:12px;background:#fff;border:1px solid rgba(11,37,69,.09);border-radius:7px;
  padding:5px 14px;font-size:12.5px;color:#647692;
}
.uw-hint{margin-left:auto;font-size:11.5px;font-weight:600;letter-spacing:.05em;
  text-transform:uppercase;color:#94A3B8;}
/* No scroll-behavior:smooth here — the inertial scroll in work.js drives scrollTop
   itself, and the CSS smoothing fights it (each frame's write restarts the browser's
   own animation, so the pane never actually moves). */
.uw-scroll{height:660px;--pane:660px;overflow-y:auto;overflow-x:hidden;
  -webkit-overflow-scrolling:touch;}
.uw-site{display:none;}
.uw-site.is-on{display:block;animation:uw-in .5s ease;}
@keyframes uw-in{from{opacity:0}to{opacity:1}}
/* ========== scroll engine ==========
   Techniques lifted from the reference captures (Lusion / Lenis-driven sites):
   word-level mask reveal, clip-path wipes, scroll-linked image scale, sticky
   pinned heroes. All library-free — the JS only toggles .is-in / sets --p. */

/* Word mask reveal: each word sits in an overflow:hidden box and slides up from
   below the line. Padding+negative margin keeps descenders (g, y, p) from clipping. */
.uw-w{display:inline-block;overflow:hidden;vertical-align:top;
  padding:.06em .04em .16em;margin:-.06em -.04em -.16em;}
.uw-w>i{display:inline-block;font-style:inherit;font-weight:inherit;color:inherit;
  transition:transform 1s cubic-bezier(.22,1,.36,1);
  transition-delay:calc(var(--i,0) * 55ms);}
/* Every "hidden" start state is gated behind .uw-anim, which JS adds to the root only
   once the reveal engine is live. If the script fails, never loads, or its rAF is
   starved in a background tab, none of these apply and the content just shows. */
.uw-anim .uw-w>i{transform:translateY(115%);}
.uw-anim .is-in .uw-w>i{transform:translateY(0);}

/* Generic scroll-reveal primitives, opted into per element with data-anim="…" */
.uw-anim [data-anim="up"]{opacity:0;transform:translateY(44px);
  transition:opacity .9s ease,transform .9s cubic-bezier(.22,1,.36,1);
  transition-delay:calc(var(--i,0) * 80ms);}
.uw-anim [data-anim="up"].is-in{opacity:1;transform:none;}
/* A plain fade — the clip-path wipe swept a hard edge across the numbered steps,
   which read as a glitch over a photo background rather than as an entrance. */
.uw-anim [data-anim="fade"]{opacity:0;
  transition:opacity 1.1s ease;
  transition-delay:calc(var(--i,0) * 80ms);}
.uw-anim [data-anim="fade"].is-in{opacity:1;}
/* Children fade in one after another so the text arrives, rather than the whole
   block snapping on at once. */
.uw-anim [data-anim="fade"]>*{opacity:0;transform:translateY(10px);
  transition:opacity .8s ease,transform .8s cubic-bezier(.22,1,.36,1);}
.uw-anim [data-anim="fade"]>*:nth-child(1){transition-delay:.10s;}
.uw-anim [data-anim="fade"]>*:nth-child(2){transition-delay:.24s;}
.uw-anim [data-anim="fade"]>*:nth-child(3){transition-delay:.38s;}
.uw-anim [data-anim="fade"]>*:nth-child(4){transition-delay:.52s;}
.uw-anim [data-anim="fade"].is-in>*{opacity:1;transform:none;}
.uw-anim [data-anim="rise"]{clip-path:inset(100% 0 0 0);
  transition:clip-path 1.15s cubic-bezier(.65,0,.35,1);
  transition-delay:calc(var(--i,0) * 80ms);}
.uw-anim [data-anim="rise"].is-in{clip-path:inset(0 0 0 0);}
/* Photo settles out of an over-scale — the "ken burns on entry" every reference site uses */
[data-anim="zoom"]{overflow:hidden;}
.uw-anim [data-anim="zoom"] img{transform:scale(1.28);
  transition:transform 1.6s cubic-bezier(.22,1,.36,1);}
.uw-anim [data-anim="zoom"].is-in img{transform:scale(1);}

/* Page-level fixed backdrop, used only where a big photo is the point of the brand
   (house / car / gym). height:0 keeps it out of the flow while the sticky top pins
   it, so the photo holds still and the whole page scrolls over it. --pane matches
   the preview pane's height, set on .uw-scroll below and in the media queries. */
.uw-bg{position:sticky;top:0;height:0;z-index:0;}
.uw-bg img{position:absolute;top:0;left:0;width:100%;height:var(--pane,660px);
  object-fit:cover;}
.uw-bg::after{content:'';position:absolute;top:0;left:0;right:0;
  height:var(--pane,660px);background:var(--bg-scrim,rgba(0,0,0,.35));}
/* Everything after the backdrop stacks above it. */
.uw-site>section,.uw-site>footer,.uw-site>header,.uw-site>nav{position:relative;z-index:1;}
/* The three photo-led concepts: nav + hero go transparent so the backdrop reads
   through them, and each sets a scrim tuned to its own palette. */
/* Was .72 at the top, which washed the house out to nothing. The hero copy sits on
   the bright sky in the upper third, so a light veil there is enough. */
.s-realestate .uw-bg{--bg-scrim:linear-gradient(180deg,rgba(250,247,242,.12) 0%,rgba(250,247,242,.30) 55%,rgba(250,247,242,.42) 100%);}
/* Lighter than the others — .gy-hero::after already lays a diagonal wash over the
   left side for the headline, so a heavy scrim here would double up. */
.s-gym .uw-bg{--bg-scrim:linear-gradient(180deg,rgba(11,13,16,.24) 0%,rgba(11,13,16,.52) 55%,rgba(11,13,16,.62) 100%);}
.s-autodetail .uw-bg{--bg-scrim:linear-gradient(180deg,rgba(10,10,12,.42) 0%,rgba(10,10,12,.58) 55%,rgba(10,10,12,.66) 100%);}
.s-realestate>nav,.s-realestate>header,
.s-gym>nav,.s-gym>header,
.s-autodetail>nav,.s-autodetail>header{background:transparent;}
/* Below the hero the backdrop must be covered, or body copy ends up sitting on a
   photo and becomes unreadable. Only the hero is allowed to be see-through. */
/* Gym sections stay see-through on purpose — the photo is the point. Legibility is
   handled in the type instead: brighter greys (raised above) plus a soft dark halo,
   which holds up over both the bright body and the dark gym behind it. */
.s-gym>section,.s-gym>footer{text-shadow:0 1px 3px rgba(0,0,0,.85),0 0 14px rgba(0,0,0,.55);}
.s-gym .gy-band,.s-gym .gy-band *{text-shadow:none;}
.s-gym .gy-tr span{font-weight:500;}
/* House stays visible the whole way down, same as the car on auto detailing:
   sheer cream veil over every section instead of an opaque fill. */
.s-realestate>section,.s-realestate>footer{background:rgba(251,248,243,.62);
  /* light halo: the copy here is dark on a bright photo, so the glow is white */
  text-shadow:0 1px 2px rgba(255,255,255,.9),0 0 12px rgba(255,255,255,.7);}
.s-realestate>header{text-shadow:0 1px 2px rgba(255,255,255,.9),0 0 14px rgba(255,255,255,.75);}
.s-realestate .re-contact,.s-realestate .re-contact *,
.s-realestate .re-foot,.s-realestate .re-foot *,
.s-realestate .re-card,.s-realestate .re-card *{text-shadow:none;}
.s-realestate .re-contact,.s-realestate .re-foot{background:rgba(43,36,24,.88);}
/* Auto detailing keeps its car visible the whole way down, same treatment as the
   gym: sheer sections plus a type halo instead of an opaque fill. */
.s-autodetail>section,.s-autodetail>footer{background:rgba(11,11,13,.55);
  text-shadow:0 1px 3px rgba(0,0,0,.9),0 0 14px rgba(0,0,0,.6);}
.s-autodetail .ad-pkg,.s-autodetail .ad-pkg *{text-shadow:none;}
/* A couple of sections stay slightly sheer so the backdrop still reads as the
   page's background rather than only a hero image. Cards on top are solid, so
   nothing that carries text loses contrast. */
/* Photo-led sections stay sheer; text-led ones sit on a denser veil so body copy
   never has to compete with the house behind it. */
.s-realestate .re-listings{background:rgba(251,248,243,.48);}
.s-realestate .re-stats{background:rgba(251,248,243,.62);}
.s-realestate .re-agent{background:rgba(251,248,243,.80);}
.s-realestate .re-how{background:rgba(251,248,243,.88);}
.s-autodetail .ad-showcase{background:rgba(11,11,13,.62);}

/* 3D tilt — JS writes --rx/--ry from pointer position over the card */
.uw-tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition:transform .5s cubic-bezier(.22,1,.36,1);transform-style:preserve-3d;}
.uw-tilt.is-tilting{transition:transform .12s linear;}

@media (prefers-reduced-motion:reduce){
  .uw-w>i{transform:none;transition:none;}
  [data-anim],[data-anim]>*{opacity:1!important;transform:none!important;
    clip-path:none!important;transition:none!important;}
  [data-anim] img{transform:none!important;transition:none!important;}
  .uw-tilt{transform:none;}
}
.uw-3d{position:relative;perspective:1500px;padding:10px 56px 4px;}
.uw-3d-track{position:relative;height:300px;}
/* Hand-rolled deck. Everything here is scoped to :not(.swiper-initialized) so that
   once Swiper takes over the same markup, its own layout wins outright — and if the
   library never loads, this stays as the working fallback. */
.uw-3d:not(.swiper-initialized) .uw-3d-item{position:absolute;top:0;left:50%;
  width:230px;margin-left:-115px;}
.uw-3d-item{border-radius:14px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.28);
  transform-style:preserve-3d;will-change:transform;cursor:pointer;user-select:none;
  transition:transform .55s cubic-bezier(.22,.61,.36,1),opacity .55s ease,filter .55s ease;}
/* Swiper drives transforms itself; our transition would fight its per-frame writes.
   Slides keep a fixed width so 'auto' can centre them, and the deck gets vertical
   breathing room so the raised active card is never cropped by the overflow. */
.uw-3d.swiper-initialized .uw-3d-item{transition:none;width:280px;height:300px;
  opacity:1!important;filter:none!important;}
.uw-3d.swiper-initialized .uw-3d-track{height:auto;display:flex;align-items:center;}
.uw-3d.swiper-initialized{overflow:hidden;padding:22px 0 12px;}
/* Only the centred slide is fully lit; the rest read as context. */
.uw-3d.swiper-initialized .uw-3d-item:not(.swiper-slide-active){
  filter:brightness(.62)!important;}
.uw-3d.swiper-initialized .uw-3d-item.swiper-slide-active{z-index:5;}
.re-listings .uw-3d.swiper-initialized .uw-3d-item{width:290px;height:352px;}
.uw-3d-item img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none;}
.uw-3d-track{transition:transform .35s cubic-bezier(.22,1,.36,1);}
.uw-3d.is-dragging{cursor:grabbing;}
.uw-3d.is-dragging .uw-3d-track{transition:none;}
.uw-3d.is-dragging .uw-3d-item{transition:none;}
.uw-3d:focus-visible{outline:2px solid currentColor;outline-offset:6px;border-radius:8px;}
.uw-3d-cap{position:absolute;left:0;right:0;bottom:0;padding:10px 14px;font-size:12.5px;
  font-weight:700;color:#fff;background:linear-gradient(to top,rgba(0,0,0,.72),transparent);
  pointer-events:none;}
/* Longines-style index + segmented progress rail instead of arrows and dots */
.uw-3d-ui{display:flex;align-items:center;gap:18px;margin:22px 0 0 4px;}
.uw-3d-num{font-size:13px;font-weight:700;letter-spacing:.12em;color:currentColor;
  min-width:52px;font-variant-numeric:tabular-nums;}
.uw-3d-num em{font-style:normal;opacity:.4;}
.uw-3d-rail{display:flex;gap:10px;flex:1;max-width:280px;}
.uw-3d-rail i{flex:1;height:2px;background:currentColor;opacity:.22;cursor:pointer;
  position:relative;transition:opacity .3s ease;}
.uw-3d-rail i::after{content:'';position:absolute;inset:0;background:currentColor;
  transform:scaleX(0);transform-origin:left;
  transition:transform .5s cubic-bezier(.22,1,.36,1);}
.uw-3d-rail i:hover{opacity:.4;}
.uw-3d-rail i.is-on::after{transform:scaleX(1);}
.uw-3d-hint{margin-left:auto;font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  opacity:.45;white-space:nowrap;}
.re-listings .uw-3d-track{height:360px;}
.re-listings .uw-3d:not(.swiper-initialized) .uw-3d-item{width:262px;margin-left:-131px;}
.re-listings .uw-3d-item{box-shadow:none;}
.re-listings .uw-3d-ui{color:#B08B4F;padding:0 48px;}
.ad-showcase{padding:52px 44px 58px;border-top:1px solid rgba(255,255,255,.08);}
.ad-showcase h2{font-size:26px;font-weight:800;color:#fff;margin:0 0 26px;}
.ad-showcase .uw-3d-ui{color:#D4A937;}
@media (prefers-reduced-motion:reduce){.uw-3d-item{transition:none;}}
/* Scroll-progress transforms. JS writes only --progress (0..1) and --is-odd (±1);
   all the motion is computed here, so tuning a curve never means touching the JS. */
[data-prog]{--progress:0;--is-odd:1;will-change:transform;}
[data-prog="settle"]{
  transform:scale(calc(1 - var(--progress) * 0.16))
            rotate(calc(var(--is-odd) * -5deg * var(--progress)));
  border-radius:calc(var(--progress) * 22px);
  opacity:calc(1 - var(--progress) * 0.45);}
/* Photo shrinks as it leaves — "imageScaleDown" from the Casquette capture. */
[data-prog="shrink"] img{transform:scale(calc(1.12 - var(--progress) * 0.22));
  will-change:transform;}
/* Slow vertical drift — "imageParallax". */
[data-prog="drift"] img{transform:translate3d(0,calc(var(--progress) * -46px),0);
  will-change:transform;}
@media (prefers-reduced-motion:reduce){
  [data-prog],[data-prog] img{transform:none!important;opacity:1!important;
    border-radius:0!important;}
}


/* ===== bespoke dialog layouts =====
   Each concept composes its dialog differently — a photo panel, a numbered run of
   fields, a listing header, package cards. Shared primitives live here; the
   per-concept arrangement follows in the skins below. */

/* selectable pills, used instead of dropdowns where the options are few */
.uw-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px;}
.uw-chip{font:inherit;font-size:13px;padding:8px 14px;cursor:pointer;
  background:transparent;color:inherit;border:1px solid var(--m-line);
  border-radius:var(--m-chip-radius,100px);transition:all .18s ease;white-space:nowrap;}
.uw-chip:hover{border-color:var(--m-acc);}
.uw-chip.is-on{background:var(--m-acc);color:var(--m-acc-ink);border-color:var(--m-acc);}
/* Date field: a closed input showing the chosen day, with the actual month grid
   living in a popup underneath it — the standard native-date-input convention,
   built from the concept's own tokens instead of the browser's grey chrome. */
.uw-datefield{position:relative;margin-bottom:16px;}
.uw-date-trigger{width:100%;box-sizing:border-box;text-align:left;cursor:pointer;
  font:inherit;font-size:14px;color:var(--m-ink);background:var(--m-field);
  border:1px solid var(--m-line);border-radius:var(--m-field-radius);
  padding:11px 34px 11px 13px;position:relative;
  transition:border-color .18s ease,box-shadow .18s ease;}
.uw-date-trigger::after{content:'';position:absolute;right:14px;top:50%;
  width:7px;height:7px;margin-top:-5px;
  border-right:1.5px solid var(--m-dim);border-bottom:1.5px solid var(--m-dim);
  transform:rotate(45deg);transition:transform .2s ease;}
.uw-datefield.is-open .uw-date-trigger{border-color:var(--m-acc);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--m-acc) 22%,transparent);}
.uw-datefield.is-open .uw-date-trigger::after{transform:rotate(225deg);margin-top:-2px;}
/* position:absolute, anchored to .uw-datefield — a position:fixed popup would
   escape the preview frame's overflow:hidden entirely and render over the studio's
   real page, which is exactly what every dialog in this widget must not do. JS
   flips it to the right edge (see place() in work.js) if it would otherwise
   overflow the frame. */
.uw-cal-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:40;width:250px;
  max-width:calc(100vw - 40px);
  background:var(--m-bg-solid,#fff);border:1px solid var(--m-line);
  border-radius:var(--m-field-radius);padding:12px;
  box-shadow:0 20px 46px rgba(0,0,0,.3);
  display:none;animation:uw-breathe .18s ease;}
.uw-datefield.is-open .uw-cal-pop{display:block;}
.uw-cal-top{display:flex;align-items:center;justify-content:space-between;
  gap:8px;margin-bottom:10px;}
.uw-cal-top b{font-family:var(--m-title-font);font-size:15px;font-weight:700;
  color:var(--m-ink);letter-spacing:var(--m-title-ls);}
.uw-cal-nav{width:28px;height:28px;padding:0;flex:0 0 28px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  font:inherit;font-size:17px;line-height:1;
  border:1px solid var(--m-line);border-radius:var(--m-chip-radius,50%);
  background:transparent;color:var(--m-ink);
  transition:background .18s ease,color .18s ease,opacity .18s ease;}
.uw-cal-nav:hover:not(:disabled){background:var(--m-acc);color:var(--m-acc-ink);
  border-color:var(--m-acc);}
.uw-cal-nav:disabled{opacity:.28;cursor:default;}
.uw-cal-dow,.uw-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.uw-cal-dow{margin-bottom:4px;}
.uw-cal-dow span{text-align:center;font-size:10px;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;color:var(--m-dim);padding:3px 0;}
.uw-cal-d{aspect-ratio:1;min-height:28px;padding:0;cursor:pointer;font:inherit;
  font-size:12.5px;font-weight:600;
  border:1px solid transparent;border-radius:var(--m-chip-radius,6px);
  background:transparent;color:var(--m-ink);
  transition:background .16s ease,color .16s ease,border-color .16s ease;}
.uw-cal-d:hover:not(:disabled){border-color:var(--m-acc);}
.uw-cal-d.is-on{background:var(--m-acc);color:var(--m-acc-ink);border-color:var(--m-acc);}
.uw-cal-d.is-off{opacity:.26;cursor:default;}
.uw-cal-pad{min-height:28px;}
@media (prefers-reduced-motion:reduce){.uw-cal-pop{animation:none;}}

/* +/- stepper for counts */
.uw-step{display:inline-flex;align-items:center;gap:0;border:1px solid var(--m-line);
  border-radius:var(--m-field-radius);overflow:hidden;margin-bottom:16px;}
.uw-step button{font:inherit;font-size:19px;width:44px;height:44px;cursor:pointer;
  border:none;background:transparent;color:inherit;transition:background .18s ease;}
.uw-step button:hover{background:var(--m-acc);color:var(--m-acc-ink);}
.uw-step b{min-width:52px;text-align:center;font-size:17px;font-weight:800;}
/* radio cards — a visual price list you pick from */
.uw-cards{display:grid;gap:9px;margin-bottom:16px;}
.uw-card-pick{display:flex;align-items:center;gap:12px;cursor:pointer;padding:13px 15px;
  border:1px solid var(--m-line);border-radius:var(--m-field-radius);
  transition:all .18s ease;}
.uw-card-pick:hover{border-color:var(--m-acc);}
.uw-card-pick input{position:absolute;opacity:0;pointer-events:none;}
.uw-card-pick .dot{width:16px;height:16px;border-radius:50%;flex:none;
  border:2px solid var(--m-line);transition:all .18s ease;}
.uw-card-pick.is-on{border-color:var(--m-acc);
  background:color-mix(in srgb,var(--m-acc) 10%,transparent);}
.uw-card-pick.is-on .dot{border-color:var(--m-acc);box-shadow:inset 0 0 0 4px var(--m-acc);}
.uw-card-pick .t{flex:1;min-width:0;font-size:14px;font-weight:700;}
.uw-card-pick .t em{display:block;font-style:normal;font-size:12px;font-weight:400;
  color:var(--m-dim);margin-top:2px;}
.uw-card-pick .p{font-size:15px;font-weight:800;color:var(--m-acc);}
/* two-panel dialog: photo beside the form */
.uw-modal-split{display:grid;grid-template-columns:200px 1fr;}
.uw-modal-aside{position:relative;overflow:hidden;}
.uw-modal-aside img{width:100%;height:100%;object-fit:cover;display:block;}
.uw-modal-aside figcaption{position:absolute;left:0;right:0;bottom:0;padding:16px 15px;
  background:linear-gradient(to top,rgba(0,0,0,.8),transparent);
  color:#fff;font-size:12px;line-height:1.5;}
.uw-modal-main{padding:28px 28px 24px;min-width:0;}
/* photo band across the top */
.uw-modal-band{position:relative;height:132px;overflow:hidden;}
.uw-modal-band img{width:100%;height:100%;object-fit:cover;display:block;}
.uw-modal-band figcaption{position:absolute;inset:0;display:flex;flex-direction:column;
  justify-content:flex-end;padding:16px 26px;
  background:linear-gradient(to top,rgba(0,0,0,.85),rgba(0,0,0,.15));color:#fff;}
/* numbered field run */
.uw-num-f{position:relative;padding-left:34px;margin-bottom:15px;}
.uw-num-f::before{content:attr(data-n);position:absolute;left:0;top:11px;
  font-size:11px;font-weight:800;color:var(--m-acc);letter-spacing:.08em;}
/* fields with only an underline */
.uw-bare input,.uw-bare select,.uw-bare textarea,.uw-bare .uw-date-trigger{
  background:transparent!important;
  border:none!important;border-bottom:1px solid var(--m-line)!important;
  border-radius:0!important;padding-left:0!important;}
.uw-bare input:focus,.uw-bare select:focus,.uw-bare textarea:focus,
.uw-bare .uw-date-trigger:focus{
  border-bottom-color:var(--m-acc)!important;box-shadow:none!important;}
.uw-bare .uw-datefield.is-open .uw-date-trigger{border-bottom-color:var(--m-acc)!important;}
/* two fields side by side */
.uw-two{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.uw-two>div{min-width:0;}
/* listing / person strip with a round photo */
.uw-strip{display:flex;align-items:center;gap:13px;padding:13px 15px;margin-bottom:16px;
  border-radius:var(--m-field-radius);background:var(--m-field);border:1px solid var(--m-line);}
.uw-strip img{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:none;}
.uw-strip .s-t{flex:1;min-width:0;font-size:13.5px;font-weight:700;}
.uw-strip .s-t em{display:block;font-style:normal;font-size:12px;font-weight:400;
  color:var(--m-dim);margin-top:2px;}
/* contact footer with inline icons */
.uw-meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:16px;padding-top:14px;
  border-top:1px solid var(--m-line);}
.uw-meta span{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--m-dim);}
.uw-meta svg{width:14px;height:14px;flex:none;opacity:.75;}
.uw-modal-box.is-wide{max-width:620px;}
.uw-modal-box.is-flush{padding:0;overflow:hidden;}
.uw-mid{text-align:center;}
.uw-ok-tick{display:flex;align-items:center;justify-content:center;
  width:52px;height:52px;margin:0 auto 14px;border-radius:50%;
  background:var(--m-acc);color:var(--m-acc-ink);font-style:normal;font-size:26px;
  animation:uw-tick .45s .1s cubic-bezier(.22,1,.36,1) both;}
.uw-modal-ok{padding:30px 6px 10px;}
/* Concept-specific tuning of the shared primitives */
.uw-modal.uw-modal--restaurant .uw-modal-main{padding:26px 26px 22px;}
.uw-modal.uw-modal--restaurant .uw-modal-aside figcaption{
  font-family:'Playfair Display',serif;font-size:15px;font-style:italic;}
.uw-modal.uw-modal--gym .uw-modal-band figcaption h3{margin:0;}
.uw-modal.uw-modal--gym .uw-chip{text-transform:uppercase;font-size:11.5px;
  font-weight:700;letter-spacing:.06em;}
.uw-modal.uw-modal--gym .uw-modal-send{padding:17px;font-size:15px;}
.uw-modal.uw-modal--spa .uw-chips{justify-content:center;}
.uw-modal.uw-modal--spa .uw-modal-box{text-align:left;}
.uw-modal.uw-modal--autodetail .uw-card-pick .p{font-family:'Archivo Black',sans-serif;}
@media (max-width:560px){
  .uw-modal-split{grid-template-columns:1fr;}
  .uw-modal-aside{height:120px;}
  .uw-two{grid-template-columns:1fr;}
}

/* ===== dialog silhouettes =====
   Each concept's dialog takes a shape that belongs to its trade, so they stop
   reading as one rectangle in five colours. clip-path does the cutting; the extra
   padding on each shell keeps content clear of the angled edges. */

/* Photo layer behind a dialog's content */
.uw-modal-bg{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;}
.uw-modal-bg img{width:100%;height:100%;object-fit:cover;display:block;}
.uw-modal-bg::after{content:'';position:absolute;inset:0;background:var(--m-veil,rgba(0,0,0,.8));}
/* House and gym photos need a stronger veil than a plain accent tint would give,
   since real form fields have to stay legible over the top of them. */
.uw-modal.uw-modal--realestate .uw-modal-bg::after{
  background:linear-gradient(180deg,rgba(250,247,242,.75) 0%,rgba(250,247,242,.97) 40%,#FAF7F2 100%);}
.uw-modal-box>*:not(.uw-modal-bg){position:relative;z-index:1;}

/* HOUSE — a real gable: roof overhangs the walls on both sides (the eave line
   spans the full box while the walls sit narrower beneath it), which is what
   actually reads as "house" instead of a generic pentagon. Straight lines only,
   in percentages, so it scales with the box at any height the form needs. */
.uw-modal.uw-modal--realestate .uw-modal-box{
  clip-path:polygon(50% 0, 100% 15%, 92% 15%, 92% 100%, 8% 100%, 8% 15%, 0 15%);
  /* the walls are inset 8% of the box's own width (40px at the 500px max-width) —
     padding has to clear that inset or field labels get sheared off by the clip,
     which is exactly what was happening at the base 30px padding. */
  padding:106px 46px 26px;max-width:500px;}
.uw-modal.uw-modal--realestate .uw-modal-x{top:78px;right:30px;}
.uw-modal.uw-modal--realestate .uw-modal-kick{text-align:center;display:block;}
.uw-modal.uw-modal--realestate .uw-modal-box>h3{text-align:center;}

/* GYM — same client-supplied mock treatment as the car: the dumbbell (a real flat
   silhouette photo, all shading stripped) fills the whole dialog edge to edge,
   and each field is its own floating card fixed-positioned along the bar and
   plates, not a linear form column. Box is fixed at 880x640 — the picture never
   resizes to fit the content, per the same rule the car dialog follows. */
/* Box is locked to the cutout PNG's own exact pixel aspect (423x314, cropped
   tight to the object — no dead transparent margin) via aspect-ratio, so the
   window really does equal the picture: no letterboxing, no empty strips. */
.uw-modal.uw-modal--gym .uw-modal-box{
  width:100%;max-width:840px;aspect-ratio:900/667;
  background:transparent;box-shadow:none;position:relative;overflow:visible;padding:0;}
/* Client-supplied clean silhouette (replaces the earlier auto-cutout). Same
   image as the black one, just recoloured via mask-image — no second file.
   Centred, same scale as the black layer (no transform), and the box's own
   overflow is visible so this layer is never cropped by the frame. */
.uw-modal.uw-modal--gym .uw-shape-glow{position:absolute;inset:0;z-index:-1;
  background:#D7FF3E;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;
  opacity:.9;}
.uw-modal.uw-modal--gym .uw-shape-cutout{position:absolute;inset:0;
  width:100%;height:100%;object-fit:contain;padding:6px;box-sizing:border-box;
  opacity:1;z-index:0;filter:drop-shadow(0 10px 22px rgba(0,0,0,.55));}
.uw-modal.uw-modal--gym .uw-modal-form{position:absolute;inset:0;z-index:1;}
.uw-gf-title{top:10px;left:55%;transform:translateX(calc(-50% + 140px));width:340px;text-align:center;}
.uw-gf-title h3,.uw-gf-title .uw-modal-kick{
  text-shadow:0 1px 3px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.75);}
.uw-gf-title h3{margin:4px 0 0;font-size:19px;}
/* Two clean rows instead of a loose scatter along the diagonal — easier to scan,
   and every field lines up with at least one neighbour instead of floating at
   its own arbitrary height. */
/* Positions checked against where the plates/bar actually sit in the cropped
   photo (roughly: left plate x2-40% y3-58%, bar x30-68% y35-55%, right plate
   x60-98% y45-98%) — goal was floating over empty background above the right
   plate before, not on the dumbbell at all. */
.uw-gf-name{top:115px;left:215px;width:130px;}
/* gap from name to age now matches the gap between Number and Get you in on */
.uw-gf-age{top:240px;left:170px;width:130px;}
/* moved into the goal block's old spot (right side, over the far plate), one
   above the other, after the "what are you training for" question was removed */
.uw-gf-phone{top:305px;left:553px;width:125px;}
.uw-gf-day{top:410px;left:500px;width:135px;}
.uw-gf-send.uw-car-field{bottom:16px;left:calc(50% - 120px);transform:translateX(-50%);
  width:auto;white-space:nowrap;padding:12px 30px;cursor:pointer;}
.uw-modal.uw-modal--gym .uw-modal-x{top:12px;right:16px;
  background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.25);color:#fff;}
@media (max-width:900px){
  .uw-modal.uw-modal--gym .uw-modal-box{aspect-ratio:auto;height:auto;
    max-height:100%;overflow-y:auto;background:#0E1108;
    padding:18px 0 22px;}
  .uw-modal.uw-modal--gym .uw-gf-media{position:relative;height:180px;
    padding:14px;box-sizing:border-box;overflow:hidden;}
  .uw-modal.uw-modal--gym .uw-shape-glow{display:block;position:absolute;inset:0;}
  .uw-modal.uw-modal--gym .uw-shape-cutout{position:absolute;inset:0;
    width:100%;height:100%;object-fit:contain;padding:14px;box-sizing:border-box;}
  .uw-modal.uw-modal--gym .uw-modal-form{position:static;}
  .uw-modal.uw-modal--gym .uw-car-field{position:static;width:auto!important;
    transform:none!important;margin:0 20px 12px;}
  .uw-gf-send.uw-car-field{margin:16px 20px 20px;}
}

/* AUTO DETAILING — client-supplied Photoshop mock: the car fills the entire
   dialog edge to edge (a real flat-cutout photo, not CSS), and each field group
   is its own floating card sitting directly on the body, positioned in fixed
   pixels against the box's own fixed 880x460 size — not a single form column. */
/* Same rule as gym: aspect-ratio locked to the cropped PNG's own exact pixel
   ratio (860x294 — the real photo, cropped tight, no dead margin), so the box
   is the picture, full stop. This is also why the box is so short and wide:
   that is the car's actual traced proportion once the empty canvas is gone. */
.uw-modal.uw-modal--autodetail .uw-modal-box{
  width:100%;max-width:1040px;box-sizing:border-box;
  background:transparent;box-shadow:none;border:none;
  position:relative;padding:0;}
.uw-modal.uw-modal--autodetail .uw-modal-form{display:block;}
/* The aspect-ratio lock lives here, on its own frame — not on the whole box —
   so the button below can have its own fixed strip of height without adding
   any extra room inside the frame that would stretch the photo out of shape. */
.uw-car-frame{position:relative;width:100%;aspect-ratio:2860/978;overflow:hidden;}
/* The outline is baked into car-cut.png itself now, so .uw-shape-stack just
   holds the one image — no more stacked drop-shadow duplicates. */
.uw-modal.uw-modal--autodetail .uw-shape-stack{position:absolute;inset:0;z-index:0;}
.uw-modal.uw-modal--autodetail .uw-shape-cutout{position:absolute;inset:0;
  width:100%;height:100%;object-fit:contain;padding:4px;box-sizing:border-box;
  transform:scaleX(-1);opacity:1;
  filter:drop-shadow(0 10px 22px rgba(0,0,0,.55));}
/* No panel behind these — just the label and the input's own control chrome,
   floated directly over the picture. Legibility comes from the text-shadow on
   the label, not from a background box. */
.uw-car-field{position:absolute;z-index:1;box-sizing:border-box;}
.uw-car-field label{text-shadow:0 1px 3px rgba(0,0,0,.95),0 0 10px rgba(0,0,0,.7);}
.uw-car-field input,.uw-car-field select{box-shadow:0 1px 4px rgba(0,0,0,.4);}
.uw-cf-title{top:26px;left:50%;transform:translateX(calc(-50% + 20px));width:240px;text-align:center;}
.uw-cf-title h3,.uw-cf-title .uw-modal-kick{
  text-shadow:0 1px 3px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.75);}
.uw-cf-title h3{margin:4px 0 0;font-size:19px;}
/* Shifted right per feedback — was flush against the front bumper edge. */
.uw-cf-pkg{top:150px;left:150px;width:170px;}
.uw-cf-pkg .uw-chips{flex-direction:column;align-items:flex-start;}
.uw-cf-pkg .uw-chip{white-space:nowrap;}
/* Both columns now share the exact same two row positions (top:100 / top:200),
   so left and right edges line up on the same horizontal line and the gap
   between rows is identical in both columns. */
.uw-cf-car{top:100px;left:450px;width:210px;}
.uw-cf-phone{top:200px;left:450px;width:210px;}
.uw-cf-name2{top:100px;left:770px;width:170px;}
.uw-cf-day{top:200px;left:770px;width:170px;}
/* Its own strip below the frame, not floating on the car — a fixed height here
   is fine because it is no longer part of the aspect-ratio-locked area above. */
.uw-cf-send-wrap{text-align:center;padding:20px 0 4px;margin-top:-50px;}
.uw-cf-send-wrap .uw-modal-send{width:auto;white-space:nowrap;padding:12px 32px;}
.uw-modal.uw-modal--autodetail .uw-modal-x{top:14px;right:16px;
  background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);color:#fff;}
@media (max-width:900px){
  .uw-modal.uw-modal--autodetail .uw-modal-box{max-height:100%;overflow-y:auto;
    background:#0A0A0A;padding:16px 0 18px;}
  .uw-car-frame{aspect-ratio:auto;height:auto;}
  .uw-modal.uw-modal--autodetail .uw-shape-stack{position:static;height:160px;}
  .uw-modal.uw-modal--autodetail .uw-shape-cutout{position:static;
    height:160px;padding:14px;}
  .uw-modal.uw-modal--autodetail .uw-car-field{position:static;width:auto!important;
    transform:none!important;margin:0 20px 12px;}
  .uw-cf-send-wrap{padding:14px 0 4px;margin-top:0;}
}

/* SPA — no corners at all; a soft lozenge */
.uw-modal.uw-modal--spa .uw-modal-box{
  border-radius:50% 50% 46% 46% / 16% 16% 14% 14%;
  max-width:520px;padding:52px 56px 46px;}
.uw-modal.uw-modal--spa .uw-modal-x{top:26px;right:30px;}

/* RESTAURANT — an arched window over the photo panel */
.uw-modal.uw-modal--restaurant .uw-modal-box{
  border-radius:180px 180px 4px 4px;overflow-x:hidden;overflow-y:auto;}
.uw-modal.uw-modal--restaurant .uw-modal-split{padding-top:54px;}
.uw-modal.uw-modal--restaurant .uw-modal-x{top:18px;right:20px;}

@media (max-width:600px){
  .uw-modal.uw-modal--gym .uw-modal-box{min-height:400px;}
  .uw-modal.uw-modal--gym .uw-modal-x{top:10px;right:10px;}
  .uw-modal.uw-modal--spa .uw-modal-box{border-radius:32px;padding:32px 26px 28px;}
  .uw-modal.uw-modal--realestate .uw-modal-box{
    clip-path:polygon(50% 0, 100% 8%, 92% 8%, 92% 100%, 8% 100%, 8% 8%, 0 8%);
    padding:56px 40px 22px;}
  .uw-modal.uw-modal--realestate .uw-modal-x{top:38px;right:16px;}
  .uw-modal.uw-modal--restaurant .uw-modal-box{border-radius:90px 90px 4px 4px;}
}

/* ===== per-concept dialog skins =====
   Each one borrows its own site's palette, type and shape, so the dialog reads as
   part of that business rather than a generic studio popup. */
@keyframes uw-slam{from{opacity:0;transform:translateY(-26px) skewY(-2deg)}to{opacity:1;transform:none}}
@keyframes uw-rise{from{opacity:0;transform:translateY(46px)}to{opacity:1;transform:none}}
@keyframes uw-breathe{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@keyframes uw-wipe{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}

/* Restaurant — dark, editorial, gold on near-black, serif display */
.uw-modal.uw-modal--restaurant{
  --m-chip-radius:0;
  /* makes the native time-picker glyph render light on this dark panel */
  color-scheme:dark;
  --m-bg:linear-gradient(165deg,#17130F 0%,#0E0C0B 100%); --m-bg-solid:#120F0C;
  --m-ink:#F3EDE4; --m-dim:#A79C90; --m-acc:#C9A96B; --m-acc-ink:#0E0C0B;
  --m-field:rgba(255,255,255,.05); --m-line:rgba(201,169,107,.35);
  --m-radius:2px; --m-field-radius:0;
  --m-title-font:'Playfair Display',serif; --m-title-size:29px;
  --m-back:rgba(8,6,5,.78); --m-anim:uw-rise .5s cubic-bezier(.22,1,.36,1);
  --m-shadow:0 40px 100px rgba(0,0,0,.6);
}
/* Gym — acid green on black, condensed caps, hard edges, slams in */
.uw-modal.uw-modal--gym{
  --m-chip-radius:0;
  color-scheme:dark;
  --m-bg:#0B0D10; --m-bg-solid:#0B0D10; --m-ink:#fff; --m-dim:#B6C1CD; --m-acc:#D7FF3E; --m-acc-ink:#0B0D10;
  --m-field:rgba(255,255,255,.06); --m-line:rgba(255,255,255,.18);
  --m-radius:0; --m-field-radius:0;
  --m-font:Inter,sans-serif; --m-title-font:Oswald,sans-serif; --m-title-size:32px;
  --m-title-tt:uppercase; --m-title-ls:.03em;
  --m-back:rgba(0,0,0,.8); --m-anim:uw-slam .34s cubic-bezier(.22,1,.36,1);
  --m-shadow:0 30px 80px rgba(0,0,0,.7);
}
.uw-modal.uw-modal--gym .uw-modal-send{text-transform:uppercase;letter-spacing:.08em;}
/* Real estate — cream, warm brown, generous curves, unhurried fade */
.uw-modal.uw-modal--realestate{
  color-scheme:light;
  --m-bg:#FAF7F2; --m-bg-solid:#FAF7F2; --m-ink:#2B2418; --m-dim:#7A6E5A; --m-acc:#B08B4F; --m-acc-ink:#fff;
  --m-field:#fff; --m-line:#E0D6C6;
  --m-radius:22px; --m-field-radius:12px;
  --m-title-font:'Playfair Display',serif; --m-title-size:27px;
  --m-back:rgba(43,36,24,.55); --m-anim:uw-breathe .45s cubic-bezier(.22,1,.36,1);
  --m-shadow:0 40px 90px rgba(43,36,24,.3);
}
/* Auto detailing — carbon black, gold, tight geometry, wipes up */
.uw-modal.uw-modal--autodetail{
  --m-chip-radius:3px;
  color-scheme:dark;
  --m-bg:linear-gradient(180deg,#141416 0%,#0A0A0C 100%); --m-bg-solid:#0F0F11;
  --m-ink:#fff; --m-dim:#9A9A9F; --m-acc:#D4A937; --m-acc-ink:#0A0A0C;
  --m-field:rgba(255,255,255,.05); --m-line:rgba(212,169,55,.3);
  --m-radius:6px; --m-field-radius:4px;
  --m-title-font:'Archivo Black',sans-serif; --m-title-size:24px;
  --m-title-tt:uppercase; --m-title-ls:.01em;
  --m-back:rgba(0,0,0,.8); --m-anim:uw-wipe .5s cubic-bezier(.65,0,.35,1);
  --m-shadow:0 40px 100px rgba(0,0,0,.65);
}
/* Spa — pale sand, soft brown, very round, slowest of the set */
.uw-modal.uw-modal--spa{
  color-scheme:light;
  --m-bg:#F6F1EA; --m-bg-solid:#F6F1EA; --m-ink:#3E342A; --m-dim:#8A7B6B; --m-acc:#B08968; --m-acc-ink:#fff;
  --m-field:#fff; --m-line:#E3D8CA;
  --m-radius:28px; --m-field-radius:16px;
  --m-title-font:'Cormorant Garamond',serif; --m-title-size:32px;
  --m-back:rgba(62,52,42,.45); --m-anim:uw-breathe .7s ease;
  --m-shadow:0 30px 80px rgba(62,52,42,.22);
}
.uw-modal.uw-modal--spa .uw-modal-box h3{font-weight:500;}
@media (prefers-reduced-motion:reduce){.uw-modal-box{animation:none!important;}}

/* ===== cafe panels (menu + map), inside the preview frame ===== */
.uw-panel{position:absolute;inset:0;z-index:60;display:none;align-items:center;
  justify-content:center;padding:22px;font-family:Nunito,Inter,sans-serif;}
.uw-panel.is-open{display:flex;}
.uw-panel-back{position:absolute;inset:0;background:rgba(60,40,24,.55);
  animation:uw-fade .25s ease;}
.uw-panel-box{position:relative;width:100%;max-width:560px;max-height:100%;overflow-y:auto;
  background:#FFFDF8;color:#3B2F23;border-radius:20px;padding:26px 26px 24px;
  box-shadow:0 30px 70px rgba(60,40,24,.35);
  animation:uw-breathe .38s cubic-bezier(.22,1,.36,1);}
.uw-panel-x{position:absolute;top:12px;right:12px;width:32px;height:32px;min-width:32px;
  padding:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;
  border:1px solid #E6DAC6;border-radius:50%;background:#fff;color:#3B2F23;
  font-size:19px;line-height:1;cursor:pointer;transition:background .18s ease,transform .18s ease;}
.uw-panel-x:hover{background:#3B2F23;color:#fff;transform:rotate(90deg);}
.uw-panel-kick{display:block;font-size:11.5px;font-weight:800;letter-spacing:.12em;
  text-transform:uppercase;color:#A8906C;margin-bottom:6px;}
.uw-panel-box h3{font-size:26px;font-weight:800;margin:0 0 18px;color:#3B2F23;}
.uw-panel-box h4{font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:#A8906C;margin:0 0 10px;}
.uw-menu-cols{display:grid;grid-template-columns:1fr 1fr;gap:26px;}
.uw-menu-list{list-style:none;margin:0 0 14px;padding:0;}
.uw-menu-list li{display:flex;align-items:baseline;gap:6px;font-size:14px;
  padding:6px 0;color:#4A3C2E;}
.uw-menu-list i{flex:1;border-bottom:1px dotted #D8C7AC;transform:translateY(-3px);}
.uw-menu-list b{font-weight:800;color:#3B2F23;}
.uw-menu-note{font-size:12.5px;line-height:1.6;color:#8A7A66;margin:0;}
.uw-map{border-radius:14px;overflow:hidden;border:1px solid #EADFCB;margin-bottom:16px;}
.uw-map svg{display:block;width:100%;height:auto;}
.uw-map-info{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.uw-map-info p{font-size:12.5px;line-height:1.6;color:#7A6A56;margin:0;}
.uw-map-info b{color:#3B2F23;font-size:12px;letter-spacing:.04em;text-transform:uppercase;}
@media (max-width:680px){
  .uw-menu-cols,.uw-map-info{grid-template-columns:1fr;}
}
@media (prefers-reduced-motion:reduce){.uw-panel-box{animation:none;}}

/* Brief highlight when a button jumps you to a section that is already on the page
   (construction's enquiry block, the cafe's menu and map) so the move is legible. */
.uw-flash{animation:uw-flash 1.2s ease;}
@keyframes uw-flash{
  0%{box-shadow:0 0 0 0 rgba(255,255,255,0);}
  22%{box-shadow:0 0 0 4px rgba(120,170,255,.55);}
  100%{box-shadow:0 0 0 0 rgba(255,255,255,0);}
}
@media (prefers-reduced-motion:reduce){.uw-flash{animation:none;}}

/* ===== WhatsApp-style chat, used by the plumbing concept =====
   A trades business lives on the phone, so a chat thread fits the niche far better
   than a form. Same shell as the modal, different body. */
/* absolute, not fixed: the chat belongs inside the preview frame's borders */
.uw-wa{position:absolute;inset:0;z-index:60;display:none;align-items:flex-end;
  justify-content:flex-end;padding:20px;}
.uw-wa.is-open{display:flex;}
.uw-wa-box{position:relative;width:100%;max-width:360px;border-radius:16px;overflow:hidden;
  box-shadow:0 30px 70px rgba(0,0,0,.35);background:#ECE5DD;
  animation:uw-pop .3s cubic-bezier(.22,1,.36,1);}
.uw-wa-top{display:flex;align-items:center;gap:11px;padding:12px 14px;background:#075E54;}
.uw-wa-av{width:36px;height:36px;border-radius:50%;background:#25D366;flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;}
.uw-wa-av svg{width:22px;height:22px;}
.uw-wa-fab svg{width:30px;height:30px;}
.uw-wa-who{flex:1;min-width:0;}
.uw-wa-who b{display:block;font-size:14px;color:#fff;font-weight:700;}
.uw-wa-who span{display:block;font-size:11.5px;color:#A7C7C2;}
.uw-wa-x{border:none;background:transparent;color:#fff;font-size:22px;line-height:1;
  cursor:pointer;padding:0 2px;}
.uw-wa-log{height:250px;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px;
  background:#ECE5DD;}
.uw-wa-msg{max-width:78%;padding:8px 11px;border-radius:9px;font-size:13.5px;line-height:1.45;
  color:#111;box-shadow:0 1px 1px rgba(0,0,0,.08);
  animation:uw-wa-in .25s ease;}
@keyframes uw-wa-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.uw-wa-msg.them{align-self:flex-start;background:#fff;border-top-left-radius:2px;}
.uw-wa-msg.me{align-self:flex-end;background:#DCF8C6;border-top-right-radius:2px;}
.uw-wa-msg i{display:block;font-style:normal;font-size:10.5px;color:#7A8A87;text-align:right;
  margin-top:3px;}
.uw-wa-form{display:flex;gap:8px;padding:10px;background:#F0F0F0;}
.uw-wa-form input{flex:1;min-width:0;font:inherit;font-size:14px;padding:10px 14px;
  border:none;border-radius:100px;background:#fff;color:#111;}
.uw-wa-form input:focus{outline:none;box-shadow:0 0 0 2px #25D366;}
.uw-wa-form button{flex:none;width:40px;height:40px;border:none;border-radius:50%;
  background:#25D366;color:#fff;font-size:16px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .2s ease;}
.uw-wa-form button:hover{background:#1EB855;}
/* Floating launcher pinned inside the plumbing preview */
.uw-wa-fab{position:absolute;right:18px;bottom:18px;z-index:30;width:54px;height:54px;
  border:none;border-radius:50%;background:#25D366;color:#fff;font-size:26px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 26px rgba(37,211,102,.45);
  animation:uw-wa-pulse 2.4s ease-in-out infinite;}
@keyframes uw-wa-pulse{0%,100%{box-shadow:0 10px 26px rgba(37,211,102,.45)}
  50%{box-shadow:0 10px 34px rgba(37,211,102,.75)}}
.uw-wa-fab:hover{background:#1EB855;}
@media (prefers-reduced-motion:reduce){
  .uw-wa-fab{animation:none;} .uw-wa-msg{animation:none;} .uw-wa-box{animation:none;}
}

/* WebGL geometric backdrop (three.js), layered over the photo inside .uw-bg. */
.uw-gl{position:absolute;top:0;left:0;width:100%;height:var(--pane,660px);
  display:block;pointer-events:none;opacity:0;transition:opacity 1s ease;}
.uw-gl.is-on{opacity:1;}
/* Matter.js physics strip — the canvas sits over the section it belongs to. */
.uw-phys{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;}
.gy-band{position:relative;overflow:hidden;}
.gy-band>*{position:relative;z-index:2;}

/* ========== request modal ==========
   One dialog reused by every concept — JS retitles it per niche and per button,
   so a "Book a slot" and a "View listing" both land somewhere real. */
/* Tokens. Every concept overrides these below, so no two dialogs share a look. */
.uw-modal{
  --m-bg:#fff; --m-bg-solid:#fff; --m-ink:#0B2545; --m-dim:#647692; --m-acc:#0B2545; --m-acc-ink:#fff;
  --m-field:#FBFCFE; --m-line:#D6DEE9; --m-radius:18px; --m-field-radius:10px;
  --m-font:Inter,sans-serif; --m-title-font:Inter,sans-serif; --m-title-size:21px;
  --m-title-tt:none; --m-title-ls:0; --m-back:rgba(8,12,20,.62);
  --m-anim:uw-pop .32s cubic-bezier(.22,1,.36,1);
  --m-shadow:0 40px 90px rgba(8,12,20,.35);
}
/* absolute, not fixed: the dialog belongs inside the preview frame's borders,
   same convention as the WhatsApp chat and the cafe menu/map panels — a "modal"
   here means it covers the example site, never the real page underneath it. */
.uw-modal{position:absolute;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;
  padding:20px;font-family:var(--m-font);}
.uw-modal.is-open{display:flex;}
.uw-modal-back{position:absolute;inset:0;z-index:-1;background:var(--m-back);
  animation:uw-fade .25s ease;}
@keyframes uw-fade{from{opacity:0}to{opacity:1}}
.uw-modal-box{position:relative;z-index:1;width:100%;max-width:440px;
  max-height:100%;overflow-y:auto;
  background:var(--m-bg);color:var(--m-ink);border-radius:var(--m-radius);
  padding:30px 30px 26px;box-shadow:var(--m-shadow);animation:var(--m-anim);}
@keyframes uw-pop{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.uw-modal-kick{display:block;font-size:11.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--m-dim);margin-bottom:8px;}
.uw-modal-box h3{font-family:var(--m-title-font);font-size:var(--m-title-size);
  font-weight:800;color:var(--m-ink);margin:0 0 6px;line-height:1.25;
  text-transform:var(--m-title-tt);letter-spacing:var(--m-title-ls);}
.uw-modal-box p{font-size:13.5px;line-height:1.6;color:var(--m-dim);margin:0 0 18px;}
.uw-modal-box label{display:block;font-size:12px;font-weight:700;color:var(--m-ink);
  margin:0 0 6px;opacity:.9;}
.uw-modal-box input,.uw-modal-box textarea{width:100%;box-sizing:border-box;font:inherit;
  font-size:14px;padding:11px 13px;border:1px solid var(--m-line);
  margin-bottom:14px;background:var(--m-field);color:var(--m-ink);
  border-radius:var(--m-field-radius);
  transition:border-color .2s ease,box-shadow .2s ease;}
.uw-modal-box input:focus,.uw-modal-box textarea:focus{outline:none;border-color:var(--m-acc);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--m-acc) 22%,transparent);}
.uw-modal-box textarea{min-height:78px;resize:vertical;}
.uw-modal-send{width:100%;font:inherit;font-size:14.5px;font-weight:700;
  background:var(--m-acc);color:var(--m-acc-ink);border:none;
  border-radius:var(--m-field-radius);padding:13px;cursor:pointer;
  transition:background .2s ease,transform .15s ease;}
.uw-modal-send:hover{filter:brightness(1.12);}
.uw-modal-send:active{transform:scale(.985);}
/* Explicit box metrics: the theme's global button rules were padding this out into
   a pale ellipse. flex centring keeps the glyph optically centred at any size. */
.uw-modal-x{position:absolute!important;top:12px;right:12px;z-index:6!important;
  width:34px;height:34px;min-width:34px;flex:0 0 34px;padding:0;box-sizing:border-box;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--m-line);border-radius:50%;background:var(--m-bg);color:var(--m-ink);
  font-family:inherit;font-size:20px;font-weight:400;line-height:1;cursor:pointer;
  transition:background .18s ease,border-color .18s ease,transform .18s ease;}
.uw-modal-x:hover{background:var(--m-acc);border-color:var(--m-acc);color:var(--m-acc-ink);
  transform:rotate(90deg);}
.uw-modal-x:focus-visible{outline:2px solid #0B2545;outline-offset:2px;}
/* two-up rows for date/time style pairs */
.uw-modal-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.uw-modal-row>div{min-width:0;}
.uw-modal-box select{width:100%;box-sizing:border-box;font:inherit;font-size:14px;
  padding:11px 13px;border:1px solid var(--m-line);border-radius:var(--m-field-radius);
  margin-bottom:14px;background:var(--m-field);color:var(--m-ink);cursor:pointer;}
/* color-scheme alone doesn't reliably theme the native <option> list on every
   browser — force it explicitly so the dropdown is never light-on-light or
   dark-on-dark regardless of engine. */
.uw-modal-box select option{background:var(--m-bg-solid,#fff);color:var(--m-ink);}
.uw-modal-box select:focus{outline:none;border-color:var(--m-acc);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--m-acc) 22%,transparent);}
.uw-modal-note{margin:12px 0 0;font-size:11.5px;line-height:1.5;color:var(--m-dim);
  opacity:.75;text-align:center;}
.uw-modal-ok{text-align:center;padding:8px 0 4px;}
.uw-modal-ok b{display:block;font-family:var(--m-title-font);font-size:19px;
  color:var(--m-ink);margin-bottom:6px;}
.uw-modal-ok span{font-size:13.5px;color:var(--m-dim);}
.uw-disclaimer{
  max-width:820px;margin:20px auto 0;text-align:center;
  font-size:12.5px;line-height:1.65;color:#94A3B8;padding:0 24px;
}
.s-restaurant{background:#0E0C0B;color:#CFC7BE;font-family:Inter,sans-serif;}
.rs-nav{display:flex;align-items:center;justify-content:space-between;
  padding:26px 46px;border-bottom:1px solid rgba(255,255,255,.08);}
.rs-logo{font-family:'Playfair Display',serif;font-size:26px;font-weight:700;
  font-style:italic;color:#F3EDE4;letter-spacing:.01em;}
.rs-links{display:flex;gap:30px;}
.rs-links a{font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:#8C8175;}
.rs-hero{position:relative;height:460px;overflow:hidden;display:flex;align-items:center;}
.rs-hero-bg{position:absolute;inset:-12% 0;}
.rs-hero-bg img{width:100%;height:100%;object-fit:cover;opacity:.42;
  will-change:transform;}
.rs-hero::after{content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(14,12,11,.92) 0%,rgba(14,12,11,.45) 62%,transparent);}
.rs-hero-in{position:relative;z-index:2;padding:0 46px;max-width:600px;}
.rs-kick{display:block;font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;
  color:#B79B6E;margin-bottom:20px;}
.rs-hero h1{font-family:'Playfair Display',serif;font-size:clamp(38px,5.4vw,62px);
  font-weight:700;line-height:1.04;color:#F7F2EA;margin:0 0 18px;}
.rs-hero h1 em{font-style:italic;color:#C9A96B;}
.rs-hero p{font-size:15.5px;line-height:1.75;color:#A79C90;max-width:400px;margin:0 0 28px;}
.rs-btn{display:inline-block;border:1px solid #C9A96B;color:#E8D9BC;font-size:12px;
  letter-spacing:.18em;text-transform:uppercase;padding:15px 32px;}
.rs-scroll{position:absolute;right:46px;bottom:26px;z-index:2;font-size:10.5px;
  letter-spacing:.28em;text-transform:uppercase;color:#6E645A;
  writing-mode:vertical-rl;}
.rs-menu{padding:64px 0 70px;}
.rs-menu-head{display:flex;align-items:baseline;justify-content:space-between;
  padding:0 46px;margin-bottom:32px;}
.rs-menu-head h2{font-family:'Playfair Display',serif;font-size:34px;font-weight:700;
  color:#F3EDE4;margin:0;}
.rs-drag{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#6E645A;}
.rs-track{display:flex;gap:26px;padding:0 0 10px;overflow-x:auto;cursor:grab;
  scrollbar-width:none;}
.rs-track::-webkit-scrollbar{display:none;}
.rs-track.is-grab{cursor:grabbing;}
.rs-track-space{flex:0 0 20px;}
.rs-plate{flex:0 0 300px;user-select:none;}
.rs-plate-img{display:block;height:220px;overflow:hidden;margin-bottom:18px;}
.rs-plate-img img{width:100%;height:100%;object-fit:cover;
  transition:transform .7s cubic-bezier(.22,.61,.36,1);}
.rs-plate:hover .rs-plate-img img{transform:scale(1.06);}
.rs-plate h3{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;
  color:#F3EDE4;margin:0 0 8px;}
.rs-plate p{font-size:13.5px;line-height:1.65;color:#8C8175;margin:0 0 12px;}
.rs-plate b{font-family:'Playfair Display',serif;font-size:20px;color:#C9A96B;font-weight:700;}
.rs-foot{display:flex;justify-content:space-between;padding:24px 46px;
  border-top:1px solid rgba(255,255,255,.08);font-size:11.5px;letter-spacing:.14em;
  text-transform:uppercase;color:#6E645A;}
.s-law{background:#FBFAF8;color:#3A3B3E;font-family:'Libre Baskerville',Georgia,serif;}
.lw-nav{display:flex;align-items:center;gap:36px;padding:26px 52px;
  border-bottom:1px solid #DED9D1;}
.lw-logo{font-size:20px;font-weight:700;color:#16233B;letter-spacing:.01em;}
.lw-logo em{font-style:normal;color:#8A6A3B;}
.lw-links{display:flex;gap:30px;margin-left:auto;}
.lw-links a{font-size:12.5px;color:#5E6068;letter-spacing:.02em;}
.lw-est{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#9A9188;}
.lw-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:0;align-items:stretch;}
.lw-hero-l{padding:66px 52px 70px;}
.lw-hero h1{font-size:clamp(28px,3.6vw,42px);font-weight:700;line-height:1.24;
  color:#16233B;margin:0 0 26px;letter-spacing:-.005em;}
.lw-rule{width:64px;height:2px;background:#8A6A3B;margin-bottom:26px;}
.lw-hero p{font-size:15px;line-height:1.9;color:#5E6068;max-width:420px;margin:0 0 32px;}
.lw-btn{display:inline-block;background:#16233B;color:#F5F1EA;font-size:12.5px;
  letter-spacing:.09em;padding:16px 30px;font-family:Inter,sans-serif;font-weight:600;}
.lw-hero-r{position:relative;min-height:400px;}
.lw-hero-r img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.lw-practice{display:grid;grid-template-columns:repeat(3,1fr);
  border-top:1px solid #DED9D1;}
.lw-col{padding:44px 40px 48px;border-right:1px solid #DED9D1;}
.lw-col:last-child{border-right:none;}
.lw-num{display:block;font-family:Inter,sans-serif;font-size:11.5px;font-weight:700;
  letter-spacing:.2em;color:#B0A697;margin-bottom:18px;}
.lw-col h3{font-size:21px;font-weight:700;color:#16233B;margin:0 0 14px;}
.lw-col p{font-size:14px;line-height:1.85;color:#5E6068;margin:0;}
.lw-partner{display:grid;grid-template-columns:280px 1fr;gap:0;align-items:stretch;
  border-top:1px solid #DED9D1;background:#F3F0EA;}
.lw-partner-img{position:relative;min-height:300px;}
.lw-partner-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.lw-partner blockquote{margin:0;padding:58px 52px;align-self:center;}
.lw-partner p{font-size:clamp(20px,2.4vw,27px);line-height:1.55;color:#16233B;
  font-style:italic;margin:0 0 18px;}
.lw-partner cite{font-family:Inter,sans-serif;font-style:normal;font-size:12px;
  letter-spacing:.16em;text-transform:uppercase;color:#9A9188;}
.lw-foot{display:flex;justify-content:space-between;padding:26px 52px;
  border-top:1px solid #DED9D1;font-family:Inter,sans-serif;font-size:12.5px;color:#8A857E;}
.s-gym{background:#0B0D10;color:#CBD4DE;font-family:Oswald,Inter,sans-serif;}
.gy-nav{display:flex;align-items:center;gap:30px;padding:20px 44px;
  border-bottom:1px solid rgba(255,255,255,.08);}
.gy-logo{font-size:23px;font-weight:700;letter-spacing:.06em;color:#fff;}
.gy-links{display:flex;gap:26px;margin-left:auto;}
.gy-links a{font-size:13px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:#B6C1CD;}
.gy-btn{background:#D7FF3E;color:#0B0D10;font-size:12.5px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;padding:12px 22px;}
.gy-hero{position:relative;min-height:440px;display:flex;align-items:center;overflow:hidden;}
.gy-hero-bg{position:absolute;inset:0;}
.gy-hero-bg img{width:100%;height:100%;object-fit:cover;opacity:.5;}
.gy-hero::after{content:'';position:absolute;inset:0;
  background:linear-gradient(75deg,rgba(11,13,16,.95) 22%,rgba(11,13,16,.35) 72%,transparent);}
.gy-hero-in{position:relative;z-index:2;padding:44px 44px;max-width:620px;}
.gy-hero h1{font-size:clamp(48px,7.5vw,86px);font-weight:700;line-height:.9;
  letter-spacing:-.01em;text-transform:uppercase;color:#fff;margin:0 0 22px;}
.gy-hero h1 em{font-style:normal;color:#D7FF3E;}
.gy-hero p{font-family:Inter,sans-serif;font-size:15px;line-height:1.7;
  color:#CBD4DE;max-width:400px;margin:0 0 26px;}
.gy-cta{display:inline-block;background:#D7FF3E;color:#0B0D10;font-size:14px;
  font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:17px 34px;}
.gy-ticker{overflow:hidden;background:#D7FF3E;padding:13px 0;}
.gy-ticker-in{display:flex;width:max-content;animation:gy-run 22s linear infinite;}
.gy-ticker-in span{font-size:17px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:#0B0D10;padding-right:38px;white-space:nowrap;}
@keyframes gy-run{to{transform:translateX(-50%)}}
.gy-stats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid rgba(255,255,255,.08);}
.gy-stat{padding:34px 26px;text-align:center;border-right:1px solid rgba(255,255,255,.08);}
.gy-stat:last-child{border-right:none;}
.gy-stat b{display:block;font-size:44px;font-weight:700;color:#fff;line-height:1;
  letter-spacing:-.02em;margin-bottom:8px;}
.gy-stat span{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.1em;
  text-transform:uppercase;color:#A5B1BE;}
.gy-classes{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.08);}
.gy-class{background:#0B0D10;padding:0 0 28px;}
.gy-class-img{display:block;height:220px;overflow:hidden;margin-bottom:22px;}
.gy-class-img img{width:100%;height:100%;object-fit:cover;filter:grayscale(.4) contrast(1.1);
  transition:filter .5s ease,transform .7s cubic-bezier(.22,.61,.36,1);}
.gy-class:hover .gy-class-img img{filter:none;transform:scale(1.05);}
.gy-class h3{font-size:27px;font-weight:700;letter-spacing:.04em;color:#fff;margin:0 28px 10px;}
.gy-class p{font-family:Inter,sans-serif;font-size:14px;line-height:1.65;color:#B6C1CD;margin:0 28px;}
.gy-foot{display:flex;justify-content:space-between;padding:24px 44px;
  font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:#5E6874;}
.s-construction{background:#F2F2F0;color:#33383D;font-family:Inter,sans-serif;}
.cn-nav{display:flex;align-items:center;gap:30px;padding:20px 44px;background:#17191C;}
.cn-logo{font-family:'Archivo Black',sans-serif;font-size:19px;color:#fff;letter-spacing:-.01em;}
.cn-logo i{font-style:normal;color:#FFC400;}
.cn-links{display:flex;gap:26px;margin-left:auto;}
.cn-links a{font-size:12.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#9BA1A8;}
.cn-hero{display:grid;grid-template-columns:1.1fr .9fr;background:#17191C;}
.cn-hero-in{padding:52px 44px 60px;}
.cn-tag{display:inline-block;background:#FFC400;color:#17191C;font-size:11px;
  font-weight:800;letter-spacing:.12em;text-transform:uppercase;padding:7px 14px;margin-bottom:22px;}
.cn-hero h1{font-family:'Archivo Black',sans-serif;font-size:clamp(36px,5.6vw,60px);
  line-height:.98;letter-spacing:-.02em;color:#fff;margin:0 0 20px;}
.cn-hero p{font-size:15px;line-height:1.7;color:#9BA1A8;max-width:400px;margin:0 0 26px;}
.cn-cta{display:inline-block;background:#FFC400;color:#17191C;font-size:13.5px;
  font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:17px 32px;}
.cn-hero-img{position:relative;min-height:340px;
  clip-path:polygon(14% 0,100% 0,100% 100%,0 100%);}
.cn-hero-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.cn-ba{padding:56px 44px 60px;}
.cn-ba h2{font-family:'Archivo Black',sans-serif;font-size:28px;letter-spacing:-.01em;
  color:#17191C;margin:0 0 24px;}
.cn-ba-frame{--p:50%;position:relative;aspect-ratio:3/2;max-width:820px;overflow:hidden;
  user-select:none;cursor:ew-resize;touch-action:none;background:#DDD;}
.cn-ba-layer{position:absolute;inset:0;}
.cn-ba-layer img{width:100%;height:100%;object-fit:cover;display:block;
  -webkit-user-drag:none;user-drag:none;pointer-events:none;}
.cn-ba-before{clip-path:inset(0 calc(100% - var(--p)) 0 0);}
.cn-ba-handle{position:absolute;top:0;bottom:0;left:var(--p);width:4px;background:#FFC400;
  transform:translateX(-50%);z-index:4;pointer-events:none;}
.cn-ba-handle span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;background:#FFC400;
  clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);}
.cn-ba-tag{position:absolute;top:16px;z-index:3;font-size:11px;font-weight:800;
  letter-spacing:.14em;padding:7px 13px;background:#17191C;color:#FFC400;}
.cn-ba-tag.l{left:16px;}
.cn-ba-tag.r{right:16px;background:#FFC400;color:#17191C;}
.cn-ba-note{font-size:12.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
  color:#7C838A;margin:16px 0 0;}
.cn-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#D8D8D4;
  border-top:1px solid #D8D8D4;}
.cn-step{background:#F2F2F0;padding:38px 32px 42px;}
.cn-step b{display:block;font-family:'Archivo Black',sans-serif;font-size:34px;
  color:#FFC400;line-height:1;margin-bottom:14px;}
.cn-step h3{font-family:'Archivo Black',sans-serif;font-size:17px;letter-spacing:.01em;
  color:#17191C;margin:0 0 10px;}
.cn-step p{font-size:14px;line-height:1.65;color:#5F666D;margin:0;}
.cn-foot{display:flex;justify-content:space-between;padding:24px 44px;background:#17191C;
  font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#7C838A;}
.s-spa{background:#FBF6F2;color:#6E635C;font-family:'Cormorant Garamond',Georgia,serif;}
.sp-nav{display:flex;align-items:center;justify-content:space-between;padding:30px 56px;}
.sp-logo{font-size:28px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:#4A403A;}
.sp-links{display:flex;gap:32px;}
.sp-links a{font-family:Inter,sans-serif;font-size:12px;font-weight:500;
  letter-spacing:.13em;text-transform:uppercase;color:#9C8D83;}
.sp-hero{position:relative;height:440px;overflow:hidden;display:flex;align-items:center;}
.sp-slides{position:absolute;inset:0;}
.sp-slide{position:absolute;inset:0;opacity:0;transition:opacity 2.2s ease;}
.sp-slide.is-on{opacity:1;}
.sp-slide img{width:100%;height:100%;object-fit:cover;
  transform:scale(1.06);transition:transform 9s linear;}
.sp-slide.is-on img{transform:scale(1);}
.sp-hero::after{content:'';position:absolute;inset:0;
  background:linear-gradient(95deg,rgba(251,246,242,.92) 0%,rgba(251,246,242,.55) 52%,rgba(251,246,242,.1));}
.sp-hero-in{position:relative;z-index:2;padding:0 56px;max-width:560px;}
.sp-hero h1{font-size:clamp(36px,5vw,56px);font-weight:300;line-height:1.14;
  color:#4A403A;margin:0 0 20px;letter-spacing:.005em;}
.sp-hero h1 em{font-style:italic;color:#B08968;}
.sp-hero p{font-family:Inter,sans-serif;font-size:14.5px;line-height:1.85;
  color:#8A7C73;max-width:360px;margin:0 0 30px;}
.sp-btn{display:inline-block;font-family:Inter,sans-serif;font-size:12px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:#4A403A;
  border-bottom:1px solid #B08968;padding-bottom:7px;}
.sp-dots{position:absolute;z-index:3;left:56px;bottom:30px;display:flex;gap:9px;}
.sp-dots i{width:7px;height:7px;border-radius:50%;background:rgba(74,64,58,.25);
  transition:background .5s ease;}
.sp-dots i.is-on{background:#B08968;}
.sp-treat{padding:58px 56px 20px;max-width:760px;margin:0 auto;}
.sp-t{display:flex;align-items:baseline;gap:16px;padding:20px 0;
  border-bottom:1px solid rgba(110,99,92,.16);}
.sp-t-n{font-size:24px;font-weight:500;color:#4A403A;}
.sp-t-d{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.1em;
  text-transform:uppercase;color:#A79890;}
.sp-t-p{margin-left:auto;font-size:24px;font-weight:500;color:#B08968;}
.sp-quote{padding:56px 56px 60px;text-align:center;max-width:700px;margin:0 auto;}
.sp-quote p{font-size:clamp(22px,3vw,31px);font-weight:300;font-style:italic;
  line-height:1.5;color:#4A403A;margin:0 0 16px;}
.sp-quote cite{font-family:Inter,sans-serif;font-style:normal;font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;color:#A79890;}
.sp-foot{display:flex;justify-content:space-between;padding:26px 56px;
  border-top:1px solid rgba(110,99,92,.16);font-family:Inter,sans-serif;
  font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#A79890;}
.s-coffee{background:#FFF8EF;color:#6B5B4C;font-family:Nunito,Inter,sans-serif;}
.cf-nav{display:flex;align-items:center;gap:28px;padding:20px 44px;}
.cf-logo{font-size:23px;font-weight:800;color:#3E2B1F;letter-spacing:-.01em;}
.cf-logo i{font-style:normal;}
.cf-links{display:flex;gap:24px;margin-left:auto;}
.cf-links a{font-size:14px;font-weight:600;color:#9A8571;}
.cf-btn{background:#3E2B1F;color:#FFF8EF;font-size:13.5px;font-weight:800;
  padding:11px 20px;border-radius:999px;}
.cf-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:36px;
  padding:44px 44px 52px;align-items:center;}
.cf-sticker{display:inline-block;background:#FF6B35;color:#fff;font-size:12px;
  font-weight:800;padding:8px 16px;border-radius:999px;margin-bottom:20px;
  transform:rotate(-3deg);}
.cf-hero h1{font-size:clamp(34px,4.8vw,52px);font-weight:800;line-height:1.06;
  color:#3E2B1F;margin:0 0 16px;letter-spacing:-.02em;}
.cf-hero p{font-size:15.5px;line-height:1.7;color:#8A7563;max-width:400px;margin:0 0 26px;}
.cf-hero-btns{display:flex;gap:12px;flex-wrap:wrap;}
.cf-cta{background:#3E2B1F;color:#FFF8EF;font-size:14.5px;font-weight:800;
  padding:15px 28px;border-radius:999px;}
.cf-cta2{border:2px solid #E4D3BE;color:#6B5B4C;font-size:14.5px;font-weight:800;
  padding:13px 26px;border-radius:999px;}
.cf-hero-r{position:relative;}
.cf-hero-r img{width:100%;height:300px;object-fit:cover;border-radius:26px;
  position:relative;z-index:2;}
.cf-blob{position:absolute;right:-14px;bottom:-18px;width:150px;height:150px;
  border-radius:50%;background:#FFD9A0;z-index:1;}
.cf-shelf{padding:0 0 48px;}
.cf-shelf-head{display:flex;align-items:baseline;justify-content:space-between;
  padding:0 44px;margin-bottom:20px;}
.cf-shelf-head h2{font-size:28px;font-weight:800;color:#3E2B1F;margin:0;letter-spacing:-.015em;}
.cf-shelf-head span{font-size:13px;font-weight:700;color:#B09A83;}
.cf-row{display:flex;gap:18px;padding:6px 0 14px;overflow-x:auto;
  scroll-snap-type:x mandatory;scrollbar-width:none;}
.cf-row::-webkit-scrollbar{display:none;}
.cf-row-space{flex:0 0 26px;scroll-snap-align:none;}
.cf-item{position:relative;flex:0 0 200px;scroll-snap-align:start;background:#fff;
  border-radius:22px;padding:14px 14px 18px;box-shadow:0 8px 22px rgba(107,91,76,.09);
  transition:transform .3s cubic-bezier(.22,.61,.36,1);}
.cf-item:hover{transform:translateY(-5px) rotate(-1.2deg);}
.cf-item-img{display:block;height:150px;border-radius:16px;overflow:hidden;margin-bottom:14px;}
.cf-item-img img{width:100%;height:100%;object-fit:cover;}
.cf-item h3{font-size:16px;font-weight:800;color:#3E2B1F;margin:0 0 5px;}
.cf-item b{font-size:17px;font-weight:800;color:#FF6B35;}
.cf-badge{position:absolute;top:-9px;right:10px;z-index:3;background:#FF6B35;color:#fff;
  font-size:10.5px;font-weight:800;padding:6px 12px;border-radius:999px;
  transform:rotate(5deg);}
.cf-strip{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;
  background:#3E2B1F;color:#F5E4CE;padding:18px 44px;font-size:14px;font-weight:700;}
.cf-strip i{font-style:normal;color:#B09A83;}
.cf-foot{display:flex;justify-content:space-between;padding:24px 44px;
  font-size:13px;font-weight:700;color:#A08C77;}
.rs-room{display:grid;grid-template-columns:.85fr 1.15fr;gap:0;
  border-top:1px solid rgba(255,255,255,.08);}
.rs-room-img{position:relative;min-height:400px;}
.rs-room-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72;}
.rs-room-txt{padding:60px 46px 64px;}
.rs-room-txt h2{font-family:'Playfair Display',serif;font-size:clamp(28px,3.4vw,40px);
  font-weight:700;color:#F3EDE4;line-height:1.12;margin:0 0 20px;}
.rs-room-txt h2 em{font-style:italic;color:#C9A96B;}
.rs-room-txt p{font-size:14.5px;line-height:1.85;color:#948A7E;max-width:460px;margin:0 0 16px;}
.rs-room-facts{display:flex;gap:34px;margin-top:30px;padding-top:26px;
  border-top:1px solid rgba(255,255,255,.08);}
.rs-room-facts span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#6E645A;}
.rs-room-facts b{display:block;font-family:'Playfair Display',serif;font-size:30px;
  color:#C9A96B;letter-spacing:0;text-transform:none;margin-bottom:5px;}
.rs-cellar{padding:60px 46px 56px;border-top:1px solid rgba(255,255,255,.08);}
.rs-cellar h2{font-family:'Playfair Display',serif;font-size:34px;font-weight:700;
  color:#F3EDE4;margin:0 0 28px;}
.rs-cellar-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 46px;}
.rs-wine{display:flex;align-items:baseline;gap:14px;padding:15px 0;
  border-bottom:1px solid rgba(255,255,255,.08);}
.rs-w-n{font-family:'Playfair Display',serif;font-size:18px;color:#E8E0D4;}
.rs-w-d{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:#6E645A;}
.rs-w-p{margin-left:auto;font-family:'Playfair Display',serif;font-size:18px;color:#C9A96B;}
.rs-cellar-note{margin:24px 0 0;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:#6E645A;}
.rs-press{padding:64px 46px;text-align:center;background:#141110;
  border-top:1px solid rgba(255,255,255,.08);}
.rs-press blockquote{margin:0 auto 14px;max-width:720px;font-family:'Playfair Display',serif;
  font-size:clamp(22px,3vw,32px);font-style:italic;line-height:1.45;color:#F3EDE4;}
.rs-press cite{font-style:normal;font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;color:#6E645A;}
.rs-book{display:grid;grid-template-columns:1fr 1fr;gap:56px;padding:60px 46px 64px;
  border-top:1px solid rgba(255,255,255,.08);}
.rs-book-l h2{font-family:'Playfair Display',serif;font-size:34px;font-weight:700;
  color:#F3EDE4;margin:0 0 16px;}
.rs-book-l p{font-size:14.5px;line-height:1.8;color:#8C8175;margin:0 0 26px;max-width:400px;}
.rs-hours{align-self:center;}
.rs-h-row{display:flex;justify-content:space-between;align-items:baseline;padding:13px 0;
  border-bottom:1px solid rgba(255,255,255,.08);font-size:13.5px;color:#8C8175;}
.rs-h-row b{font-family:'Playfair Display',serif;font-size:16px;color:#E8E0D4;font-weight:700;}
.rs-h-row em{font-style:italic;font-size:11.5px;color:#6E645A;margin-left:5px;}
.rs-h-note b{color:#C9A96B;}
.lw-figures{display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid #DED9D1;background:#F3F0EA;}
.lw-fig{padding:34px 26px;text-align:center;border-right:1px solid #DED9D1;}
.lw-fig:last-child{border-right:none;}
.lw-fig b{display:block;font-size:38px;font-weight:700;color:#16233B;line-height:1;margin-bottom:9px;}
.lw-fig span{font-family:Inter,sans-serif;font-size:11.5px;letter-spacing:.1em;
  text-transform:uppercase;color:#9A9188;}
.lw-how{padding:56px 52px 60px;border-top:1px solid #DED9D1;}
.lw-how h2{font-size:28px;font-weight:700;color:#16233B;margin:0 0 30px;}
.lw-steps{list-style:none;margin:0;padding:0;counter-reset:lw;
  display:grid;grid-template-columns:1fr 1fr;gap:30px 46px;}
.lw-steps li{counter-increment:lw;position:relative;padding-left:46px;}
.lw-steps li::before{content:counter(lw,decimal-leading-zero);position:absolute;left:0;top:2px;
  font-family:Inter,sans-serif;font-size:12px;font-weight:700;letter-spacing:.14em;color:#B0A697;}
.lw-steps b{display:block;font-size:17px;color:#16233B;margin-bottom:8px;}
.lw-steps p{font-size:14px;line-height:1.8;color:#5E6068;margin:0;}
.lw-insights{padding:52px 52px 56px;border-top:1px solid #DED9D1;background:#F3F0EA;}
.lw-insights h2{font-size:26px;font-weight:700;color:#16233B;margin:0 0 22px;}
.lw-item{display:flex;align-items:baseline;gap:20px;padding:18px 0;
  border-bottom:1px solid #DED9D1;cursor:pointer;}
.lw-date{font-family:Inter,sans-serif;font-size:11.5px;letter-spacing:.14em;
  text-transform:uppercase;color:#9A9188;min-width:86px;}
.lw-item b{font-size:16.5px;color:#16233B;font-weight:400;}
.lw-more{margin-left:auto;font-family:Inter,sans-serif;font-size:12px;
  letter-spacing:.1em;color:#8A6A3B;white-space:nowrap;}
.lw-contact{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;
  padding:56px 52px 60px;border-top:1px solid #DED9D1;}
.lw-contact h2{font-size:28px;font-weight:700;color:#16233B;margin:0 0 14px;}
.lw-contact p{font-size:14.5px;line-height:1.85;color:#5E6068;margin:0 0 26px;max-width:400px;}
.lw-c-hours{font-size:13.5px;line-height:1.8;color:#5E6068;margin:22px 0 0;max-width:none;}
.lw-c-hours b{display:block;font-family:Inter,sans-serif;font-size:11px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;color:#9A9188;margin-bottom:4px;}
.lw-c-form{align-self:start;}
.lw-c-f{background:#fff;border:1px solid #DED9D1;padding:0;margin-bottom:12px;
  transition:border-color .2s ease,box-shadow .2s ease;}
.lw-c-f:focus-within{border-color:#8A6A3B;box-shadow:0 0 0 3px rgba(138,106,59,.16);}
.lw-c-f input,.lw-c-f textarea{width:100%;box-sizing:border-box;display:block;
  font-family:Inter,sans-serif;font-size:14px;color:#16233B;
  background:transparent;border:none;padding:14px 16px;}
.lw-c-f input:focus,.lw-c-f textarea:focus{outline:none;}
.lw-c-f input::placeholder,.lw-c-f textarea::placeholder{color:#9A9188;}
.lw-c-tall textarea{min-height:88px;resize:vertical;}
.lw-c-submit{width:100%;background:#16233B;color:#F5F1EA;border:none;cursor:pointer;
  font-family:Inter,sans-serif;font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;
  padding:15px 24px;transition:background .2s ease;}
.lw-c-submit:hover{background:#233450;}
.lw-c-submit:active{transform:translateY(1px);}
.lw-c-done{background:#F5F1EA;border:1px solid #DED9D1;padding:28px 24px;text-align:center;
  font-family:Inter,sans-serif;font-size:14px;color:#16233B;font-weight:700;}
.lw-c-tick{display:flex;align-items:center;justify-content:center;margin:0 auto 12px;
  width:34px;height:34px;border-radius:50%;background:#16233B;color:#F5F1EA;font-size:16px;}
.lw-c-done span{display:block;margin-top:8px;font-size:12.5px;font-weight:400;
  color:#5E6068;line-height:1.6;}
.gy-time{padding:44px 44px 48px;border-top:1px solid rgba(255,255,255,.08);}
.gy-time-head{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:22px;}
.gy-time h2{font-size:32px;font-weight:700;letter-spacing:.04em;color:#fff;margin:0;}
.gy-time-note{font-family:Inter,sans-serif;font-size:12px;color:#A5B1BE;}
.gy-table{border:1px solid rgba(255,255,255,.1);}
.gy-tr{display:grid;grid-template-columns:78px repeat(5,1fr);
  border-bottom:1px solid rgba(255,255,255,.08);}
.gy-tr:last-child{border-bottom:none;}
.gy-tr span{padding:13px 12px;font-family:Inter,sans-serif;font-size:12.5px;color:#CBD4DE;
  border-right:1px solid rgba(255,255,255,.06);}
.gy-tr span:last-child{border-right:none;}
.gy-tr span:first-child{font-family:Oswald,sans-serif;font-size:14px;color:#D7FF3E;font-weight:500;}
.gy-th{background:rgba(255,255,255,.05);}
.gy-th span{font-family:Oswald,sans-serif !important;font-size:12px !important;
  letter-spacing:.14em;text-transform:uppercase;color:#fff !important;font-weight:500;}
.gy-price{padding:48px 44px 52px;border-top:1px solid rgba(255,255,255,.08);}
.gy-price h2{font-size:32px;font-weight:700;letter-spacing:.04em;color:#fff;margin:0 0 26px;}
.gy-plans{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;align-items:stretch;}
.gy-plan{position:relative;display:flex;flex-direction:column;
  border:1px solid rgba(255,255,255,.12);padding:28px 24px 26px;}
.gy-plan-hot{border-color:#D7FF3E;background:rgba(215,255,62,.05);}
.gy-p-flag{position:absolute;top:-11px;left:22px;background:#D7FF3E;color:#0B0D10;
  font-size:10.5px;font-weight:700;letter-spacing:.12em;padding:5px 12px;}
.gy-p-n{display:block;font-size:14px;font-weight:500;letter-spacing:.18em;color:#CBD4DE;margin-bottom:12px;}
.gy-p-v{display:block;font-size:46px;font-weight:700;color:#fff;line-height:1;
  letter-spacing:-.02em;margin-bottom:20px;}
.gy-p-v i{font-style:normal;font-size:15px;font-weight:400;color:#A5B1BE;}
.gy-plan ul{list-style:none;margin:0 0 22px;padding:0;flex:1;}
.gy-plan li{font-family:Inter,sans-serif;font-size:13.5px;color:#CBD4DE;padding:7px 0 7px 20px;
  position:relative;}
.gy-plan li::before{content:'';position:absolute;left:0;top:14px;width:8px;height:2px;background:#D7FF3E;}
.gy-p-btn{display:block;text-align:center;border:1px solid #D7FF3E;color:#D7FF3E;
  font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:13px;
  box-shadow:none;filter:none;}
.gy-plan-hot .gy-p-btn{background:#D7FF3E;color:#0B0D10;}
.gy-band{padding:44px 44px 30px;height:260px;box-sizing:border-box;
  text-align:center;background:#D7FF3E;}
.gy-band h2{font-size:clamp(26px,4vw,42px);font-weight:700;line-height:1.02;
  letter-spacing:-.01em;color:#0B0D10;margin:0 0 24px;}
.gy-band .gy-cta{background:#0B0D10;color:#D7FF3E;}
.cn-serv{padding:52px 44px 56px;background:#E8E8E5;}
.cn-serv h2{font-family:'Archivo Black',sans-serif;font-size:28px;color:#17191C;margin:0 0 26px;}
.cn-serv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:#D0D0CC;
  border:1px solid #D0D0CC;}
.cn-s{background:#F2F2F0;padding:28px 26px 30px;}
.cn-s b{display:block;font-family:'Archivo Black',sans-serif;font-size:15px;color:#FFC400;
  margin-bottom:12px;}
.cn-s h3{font-family:'Archivo Black',sans-serif;font-size:15px;color:#17191C;margin:0 0 9px;}
.cn-s p{font-size:13.5px;line-height:1.65;color:#5F666D;margin:0;}
.cn-log{padding:52px 44px 56px;background:#17191C;}
.cn-log h2{font-family:'Archivo Black',sans-serif;font-size:28px;color:#fff;margin:0 0 22px;}
.cn-log-row{display:flex;align-items:center;gap:18px;padding:16px 0;
  border-bottom:1px solid rgba(255,255,255,.1);}
.cn-l-n{font-size:15px;font-weight:600;color:#E7E9EB;}
.cn-l-d{font-size:12.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#7C838A;}
.cn-l-v{margin-left:auto;font-family:'Archivo Black',sans-serif;font-size:11px;
  letter-spacing:.06em;color:#17191C;background:#FFC400;padding:6px 11px;white-space:nowrap;}
.cn-log-row:nth-child(5) .cn-l-v{background:#5F666D;color:#E7E9EB;}
.cn-quote{display:grid;grid-template-columns:1fr 1fr;gap:46px;padding:54px 44px 58px;}
.cn-q-l h2{font-family:'Archivo Black',sans-serif;font-size:30px;color:#17191C;margin:0 0 16px;}
.cn-q-l p{font-size:15px;line-height:1.7;color:#5F666D;margin:0;max-width:380px;}
.cn-q-f{background:#fff;border:2px solid #17191C;padding:0;margin-bottom:12px;
  transition:border-color .18s ease,box-shadow .18s ease;}
.cn-q-f:focus-within{border-color:#FFC400;box-shadow:0 0 0 3px rgba(255,196,0,.35);}
/* Real controls now, styled to sit flush inside the hard-edged industrial box. */
.cn-q-f input,.cn-q-f textarea{width:100%;box-sizing:border-box;display:block;
  font:inherit;font-family:Inter,sans-serif;font-size:14px;color:#17191C;
  background:transparent;border:none;padding:15px 16px;}
.cn-q-f input:focus,.cn-q-f textarea:focus{outline:none;}
.cn-q-f input::placeholder,.cn-q-f textarea::placeholder{color:#9BA1A8;}
.cn-q-tall textarea{min-height:88px;resize:vertical;}
.cn-q-r .cn-cta{width:100%;text-align:center;border:none;cursor:pointer;
  font-family:inherit;transition:background .18s ease,transform .12s ease;}
.cn-q-r .cn-cta:hover{background:#FFD43B;}
.cn-q-r .cn-cta:active{transform:translateY(1px);}
.cn-q-done{background:#17191C;color:#FFC400;padding:26px 20px;text-align:center;
  font-weight:800;letter-spacing:.04em;text-transform:uppercase;font-size:14px;
  animation:uw-rise .45s cubic-bezier(.22,1,.36,1);}
.cn-q-tick{display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;margin:0 auto 14px;border-radius:50%;
  background:#FFC400;color:#17191C;font-style:normal;font-size:22px;
  animation:uw-tick .45s .12s cubic-bezier(.22,1,.36,1) both;}
@keyframes uw-tick{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){
  .cn-q-done,.cn-q-tick{animation:none;}
}
.cn-q-done span{display:block;margin-top:8px;font-family:Inter,sans-serif;font-size:12.5px;
  font-weight:400;letter-spacing:0;text-transform:none;color:#9BA1A8;}
.sp-approach{display:grid;grid-template-columns:repeat(3,1fr);gap:44px;
  padding:60px 56px 20px;max-width:1000px;margin:0 auto;}
.sp-a-n{display:block;font-size:15px;font-style:italic;letter-spacing:.2em;
  color:#B08968;margin-bottom:14px;}
.sp-a h3{font-size:24px;font-weight:500;color:#4A403A;margin:0 0 10px;}
.sp-a p{font-family:Inter,sans-serif;font-size:13.5px;line-height:1.8;color:#8A7C73;margin:0;}
.sp-h2{font-size:34px;font-weight:300;color:#4A403A;margin:0 0 10px;letter-spacing:.01em;}
.sp-member{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;align-items:center;
  padding:56px 56px 60px;background:#F6EDE6;margin-top:44px;}
.sp-kick{display:block;font-family:Inter,sans-serif;font-size:11px;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:#B08968;margin-bottom:14px;}
.sp-member h2{font-size:clamp(26px,3.4vw,38px);font-weight:300;line-height:1.2;
  color:#4A403A;margin:0 0 16px;}
.sp-member h2 em{font-style:italic;color:#B08968;}
.sp-member p{font-family:Inter,sans-serif;font-size:14px;line-height:1.85;
  color:#8A7C73;max-width:400px;margin:0 0 24px;}
.sp-m-card{background:#FBF6F2;padding:32px 30px 34px;}
.sp-m-p{display:block;font-size:44px;font-weight:300;color:#4A403A;line-height:1;margin-bottom:22px;}
.sp-m-p i{font-style:normal;font-family:Inter,sans-serif;font-size:14px;color:#A79890;}
.sp-m-card ul{list-style:none;margin:0;padding:0;}
.sp-m-card li{font-family:Inter,sans-serif;font-size:13.5px;color:#6E635C;
  padding:9px 0 9px 20px;position:relative;border-bottom:1px solid rgba(110,99,92,.12);}
.sp-m-card li:last-child{border-bottom:none;}
.sp-m-card li::before{content:'';position:absolute;left:0;top:17px;width:8px;height:1px;background:#B08968;}
.sp-visit{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;
  padding:56px 56px 60px;max-width:1000px;margin:0 auto;
  border-top:1px solid rgba(110,99,92,.16);}
.sp-v h3{font-size:21px;font-weight:500;color:#4A403A;margin:0 0 12px;}
.sp-v p{font-family:Inter,sans-serif;font-size:13.5px;line-height:1.9;color:#8A7C73;margin:0;}
.cf-beans{padding:8px 44px 46px;}
.cf-beans h2{font-size:28px;font-weight:800;color:#3E2B1F;margin:0 0 20px;letter-spacing:-.015em;}
.cf-beans-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.cf-bean{background:#fff;border-radius:22px;padding:24px 22px 26px;
  box-shadow:0 8px 22px rgba(107,91,76,.09);}
.cf-b-top{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.cf-b-ic{width:42px;height:42px;border-radius:14px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;}
.cf-b-ic svg{width:23px;height:23px;fill:#fff;}
.cf-b-ic.b1{background:#8A5A32;}
.cf-b-ic.b2{background:#D89A4E;}
.cf-b-ic.b3{background:#5E7C5A;}
.cf-b-roast{display:flex;align-items:center;gap:6px;}
.cf-b-roast i{width:9px;height:9px;border-radius:50%;border:1.5px solid #C9B49B;}
.cf-b-roast i.on{background:#8A5A32;border-color:#8A5A32;}
.cf-b-roast em{font-style:normal;font-size:11.5px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;color:#B09A83;margin-left:3px;}
.cf-bean h3{font-size:19px;font-weight:800;color:#3E2B1F;margin:0 0 8px;}
.cf-bean p{font-size:13.5px;line-height:1.65;color:#8A7563;margin:0 0 14px;}
.cf-b-meta{display:block;font-size:12px;font-weight:700;color:#B09A83;margin-bottom:8px;}
.cf-bean b{font-size:19px;font-weight:800;color:#FF6B35;}
.cf-story{display:grid;grid-template-columns:.9fr 1.1fr;gap:36px;align-items:center;
  padding:10px 44px 48px;}
.cf-story-img img{width:100%;height:300px;object-fit:cover;border-radius:26px;}
.cf-story-txt h2{font-size:clamp(24px,3.2vw,34px);font-weight:800;color:#3E2B1F;
  line-height:1.15;margin:0 0 16px;letter-spacing:-.02em;}
.cf-story-txt p{font-size:15px;line-height:1.75;color:#8A7563;margin:0 0 14px;max-width:460px;}
.cf-loyal{padding:0 44px 48px;}
.cf-l-in{background:#FFD9A0;border-radius:28px;padding:38px 36px 40px;text-align:center;}
.cf-l-in h2{font-size:30px;font-weight:800;color:#3E2B1F;margin:0 0 10px;letter-spacing:-.02em;}
.cf-l-in p{font-size:14.5px;line-height:1.7;color:#7A6250;max-width:460px;margin:0 auto 24px;}
.cf-stamps{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;}
.cf-stamps i{width:42px;height:42px;border-radius:50%;border:2px dashed #C79A5E;
  display:flex;align-items:center;justify-content:center;font-style:normal;}
.cf-stamps i.on{background:#3E2B1F;border-style:solid;border-color:#3E2B1F;}
.cf-stamps i.on::after{content:'☕';font-size:17px;}
.cf-stamps i.free{background:#FF6B35;border-color:#FF6B35;color:#fff;font-size:9.5px;font-weight:800;}
.cf-find{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:46px 44px;}
.cf-f-card{background:#fff;border-radius:24px;padding:30px 28px 32px;
  box-shadow:0 8px 22px rgba(107,91,76,.09);}
.cf-f-alt{background:#3E2B1F;}
.cf-f-card h3{font-size:22px;font-weight:800;color:#3E2B1F;margin:0 0 12px;}
.cf-f-card p{font-size:14.5px;line-height:1.75;color:#8A7563;margin:0 0 14px;}
.cf-f-card b{color:#3E2B1F;}
.cf-f-alt h3{color:#FFF8EF;}
.cf-f-alt p{color:#C5AE96;}
.cf-f-alt .cf-cta2{border-color:#6B5341;color:#FFD9A0;}

/* Unsplash-required photo credit, kept tiny and out of the way in a photo's own corner */
.uw-photo-credit{position:absolute;right:8px;bottom:8px;font-size:10px;line-height:1;
  color:rgba(255,255,255,.75);background:rgba(0,0,0,.35);border-radius:4px;padding:4px 7px;
  text-decoration:none;backdrop-filter:blur(2px);}
.uw-photo-credit:hover{color:#fff;}

/* PLUMBING & HVAC — direct, high-contrast, phone number always visible */
.s-plumbing{background:#F4F7FB;font-family:Inter,sans-serif;}
.pb-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 44px;background:#0B2545;}
.pb-logo{font-size:16px;font-weight:800;color:#fff;letter-spacing:.02em;}
.pb-logo em{font-style:normal;font-weight:500;color:#9DB8DE;}
.pb-links{display:flex;gap:22px;}
.pb-links a{font-size:13.5px;font-weight:600;color:#C7D6EC;cursor:pointer;}
.pb-phone{font-size:14px;font-weight:800;color:#FF6B35;background:#0E2E56;border-radius:999px;padding:9px 16px;}
.pb-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center;
  padding:56px 44px;background:linear-gradient(180deg,#0B2545,#123566);}
.pb-kick{display:inline-block;margin-bottom:16px;font-size:12px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:#FF6B35;background:rgba(255,107,53,.14);border-radius:999px;padding:6px 14px;}
.pb-hero h1{font-size:clamp(28px,3.6vw,42px);font-weight:800;color:#fff;line-height:1.15;margin:0 0 16px;letter-spacing:-.02em;}
.pb-hero p{font-size:15.5px;line-height:1.7;color:#B9CBE7;max-width:480px;margin:0 0 26px;}
.pb-cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:22px;}
.pb-btn{display:inline-flex;align-items:center;gap:9px;
  font-size:14.5px;font-weight:800;color:#0B2545;background:#FF6B35;
  border-radius:10px;padding:14px 26px;cursor:pointer;}
.pb-btn-g{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.3);}
/* WhatsApp is the plumbing concept's primary channel, so the button wears the
   brand's own green rather than the site accent — people recognise it instantly. */
.pb-btn-wa{background:#25D366;color:#0A2E17;
  transition:background .18s ease,transform .12s ease,box-shadow .18s ease;}
.pb-btn-wa:hover{background:#1EB855;box-shadow:0 8px 22px rgba(37,211,102,.4);}
.pb-btn-wa:active{transform:translateY(1px);}
.pb-wa-i{width:20px;height:20px;flex:none;}
.pb-trust{display:flex;gap:18px;flex-wrap:wrap;}
.pb-trust span{font-size:12.5px;font-weight:600;color:#9DB8DE;}
/* scrolling service-area strip — same infinite-marquee technique as the gym ticker (.gy-ticker) */
.pb-ticker{overflow:hidden;background:#FF6B35;padding:11px 0;}
.pb-ticker-in{display:flex;width:max-content;animation:gy-run 24s linear infinite;}
.pb-ticker-in span{font-size:13px;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:#0B2545;padding-right:34px;white-space:nowrap;}
.pb-hero-r{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:4/3;}
.pb-hero-r img{position:absolute;inset:-12% 0;width:100%;height:124%;object-fit:cover;}
.pb-services{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:52px 44px;}
.pb-svc{background:#fff;border-radius:16px;padding:26px 24px 24px;border:1px solid rgba(11,37,69,.08);
  transition:opacity .5s ease,transform .5s ease;transition-delay:calc(var(--i,0) * 80ms);
  opacity:0;transform:translateY(14px);}
.pb-svc.is-in{opacity:1;transform:none;}
.pb-svc b{display:block;font-size:13px;font-weight:800;color:#FF6B35;margin-bottom:10px;}
.pb-svc h3{font-size:18px;font-weight:800;color:#0B2545;margin:0 0 10px;}
.pb-svc p{font-size:14px;line-height:1.65;color:#647692;margin:0 0 14px;}
.pb-svc span{font-size:13px;font-weight:700;color:#0B2545;}
.pb-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:0 44px 52px;text-align:center;}
.pb-stats b{display:block;font-size:26px;font-weight:800;color:#0B2545;}
.pb-stats span{font-size:12px;color:#647692;}
.pb-how{padding:56px 44px 60px;border-top:1px solid rgba(11,37,69,.08);}
.pb-how h2{font-size:26px;font-weight:800;color:#0B2545;margin:0 0 30px;}
.pb-steps{list-style:none;margin:0;padding:0;counter-reset:pb;
  display:grid;grid-template-columns:repeat(4,1fr);gap:28px;}
.pb-steps li{counter-increment:pb;}
.pb-steps li::before{content:counter(pb,decimal-leading-zero);display:block;font-size:13px;
  font-weight:800;color:#FF6B35;margin-bottom:10px;}
.pb-steps b{display:block;font-size:15.5px;color:#0B2545;margin-bottom:8px;}
.pb-steps p{font-size:13.5px;line-height:1.7;color:#647692;margin:0;}
.pb-reviews{padding:0 44px 56px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.pb-review{background:#fff;border-radius:14px;padding:22px 22px 20px;border:1px solid rgba(11,37,69,.08);}
.pb-review-stars{display:block;color:#FF6B35;font-size:14px;letter-spacing:2px;margin-bottom:10px;}
.pb-review p{font-size:14px;line-height:1.65;color:#3A4A61;margin:0 0 12px;}
.pb-review cite{font-style:normal;font-size:12.5px;font-weight:700;color:#647692;}
.pb-contact{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;padding:52px 44px;background:#0B2545;align-items:start;}
.pb-contact h2{font-size:26px;font-weight:800;color:#fff;margin:0 0 12px;}
.pb-contact p{font-size:14.5px;line-height:1.7;color:#B9CBE7;margin:0 0 20px;max-width:420px;}
.pb-c-details p{font-size:13.5px;color:#B9CBE7;line-height:1.6;margin:0 0 16px;}
.pb-c-details b{color:#fff;}
.pb-foot{display:flex;gap:20px;flex-wrap:wrap;padding:22px 44px;background:#081C3A;font-size:12.5px;color:#8FA6C2;}

/* REAL ESTATE — light, airy, generous whitespace */
.s-realestate{background:#FBF8F3;font-family:Inter,sans-serif;}
.re-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px 48px;}
.re-logo{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:#2B2418;}
.re-logo em{font-style:italic;font-weight:400;}
.re-links{display:flex;gap:26px;}
.re-links a{font-size:13px;font-weight:600;color:#5C5140;cursor:pointer;}
.re-hero{padding:36px 48px 56px;text-align:center;}
.re-hero h1{font-family:'Playfair Display',serif;font-size:clamp(30px,4vw,46px);font-weight:700;
  color:#2B2418;line-height:1.2;margin:0 0 16px;}
.re-hero p{font-size:15px;line-height:1.7;color:#7A6E5A;max-width:520px;margin:0 auto 26px;}
.re-search{display:inline-flex;align-items:center;gap:14px;background:#fff;border-radius:999px;
  padding:8px 8px 8px 22px;box-shadow:0 3px 10px rgba(43,36,24,.06);}
.re-search b{font-size:13.5px;font-weight:600;color:#2B2418;}
.re-search i{font-style:normal;font-size:12.5px;font-weight:700;color:#fff;background:#2B2418;
  border-radius:999px;padding:9px 16px;box-shadow:none;filter:none;}
.re-hero-img{position:relative;height:380px;margin:36px 48px 0;border-radius:20px;overflow:hidden;}
.re-hero-img img{position:absolute;inset:-12% 0;width:100%;height:124%;object-fit:cover;}
.re-listings{padding:48px 0 52px;}
.re-card{background:#fff;border-radius:16px;overflow:hidden;cursor:pointer;
  box-shadow:0 8px 22px rgba(43,36,24,.06);
  transition:transform .55s cubic-bezier(.22,.61,.36,1),box-shadow .35s ease,
    opacity .55s ease,filter .55s ease;}
.re-card:hover{box-shadow:0 16px 34px rgba(43,36,24,.13);}
.re-card-img{display:block;height:170px;overflow:hidden;background:#DCC9A3;}
.re-card-img img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.22,.61,.36,1);}
.re-card:hover .re-card-img img{transform:scale(1.06);}
.re-card-b{display:block;padding:18px 20px 20px;}
.re-card-b b{display:block;font-size:19px;font-weight:800;color:#2B2418;margin-bottom:6px;}
.re-card-b span{display:block;font-size:13px;color:#7A6E5A;margin-bottom:4px;}
/* address / CTA cross-fade — same grid-stack swap used on the "Our work" tiles */
.re-card-foot{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;margin-top:4px;}
/* scoped as .re-card-b .re-card-cta (2 classes) so it reliably beats the generic .re-card-b span
   rule above (1 class + 1 tag) regardless of source order */
.re-card-b .re-card-addr,.re-card-b .re-card-cta{grid-column:1;grid-row:1;display:block;margin:0;
  transition:opacity .3s ease,transform .3s ease;}
.re-card-b .re-card-addr{font-style:normal;font-size:12.5px;color:#A79A82;opacity:1;transform:translateY(0);}
.re-card-b .re-card-cta{font-size:12.5px;font-weight:700;color:#2B2418;opacity:0;transform:translateY(6px);}
.re-card:hover .re-card-addr{opacity:0;transform:translateY(-6px);}
.re-card:hover .re-card-cta{opacity:1;transform:translateY(0);}
.re-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:0 48px 52px;text-align:center;}
.re-stats b{display:block;font-family:'Playfair Display',serif;font-size:27px;font-weight:700;color:#2B2418;}
.re-stats span{font-size:12px;color:#7A6E5A;}
.re-agent{padding:56px 44px 60px;border-top:1px solid rgba(43,36,24,.08);
  display:grid;grid-template-columns:220px 1fr;gap:36px;align-items:center;}
.re-agent-img{position:relative;width:220px;height:220px;border-radius:50%;overflow:hidden;}
.re-agent-img img{width:100%;height:100%;object-fit:cover;}
.re-agent-b span{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:#B08B4F;margin-bottom:10px;}
.re-agent-b h2{font-size:24px;font-weight:800;color:#2B2418;margin:0 0 6px;}
.re-agent-b p.re-role{font-size:13.5px;color:#7A6E5A;margin:0 0 14px;}
.re-agent-b p{font-size:14px;line-height:1.7;color:#5C523F;margin:0 0 14px;max-width:520px;}
.re-agent-creds{display:flex;gap:24px;flex-wrap:wrap;list-style:none;margin:0;padding:0;}
.re-agent-creds li{font-size:13px;color:#2B2418;}
.re-agent-creds b{display:block;font-size:19px;font-weight:800;color:#B08B4F;}
.re-how{padding:0 44px 56px;}
.re-how h2{font-size:26px;font-weight:800;color:#2B2418;margin:0 0 30px;}
.re-steps{list-style:none;margin:0;padding:0;counter-reset:re;
  display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
.re-steps li{counter-increment:re;}
.re-steps li::before{content:counter(re,decimal-leading-zero);display:block;font-size:13px;
  font-weight:800;color:#B08B4F;margin-bottom:10px;}
.re-steps b{display:block;font-size:15.5px;color:#2B2418;margin-bottom:8px;}
.re-steps p{font-size:13.5px;line-height:1.7;color:#7A6E5A;margin:0;}
.re-contact{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;padding:52px 48px;background:#2B2418;align-items:start;}
.re-contact h2{font-family:'Playfair Display',serif;font-size:25px;font-weight:700;color:#fff;margin:0 0 12px;}
.re-contact p{font-size:14.5px;line-height:1.7;color:#C9BEA9;margin:0 0 20px;max-width:420px;}
.re-btn{display:inline-block;font-size:14px;font-weight:700;color:#2B2418;background:#DCC9A3;
  border-radius:999px;padding:13px 24px;cursor:pointer;}
.re-c-details p{font-size:13.5px;color:#C9BEA9;line-height:1.6;margin:0 0 16px;}
.re-c-details b{color:#fff;}
.re-foot{display:flex;gap:20px;flex-wrap:wrap;padding:22px 48px;background:#211B12;font-size:12.5px;color:#9C8F78;}

/* AUTO DETAILING — dark, glossy, high contrast */
.s-autodetail{background:#0B0B0D;font-family:Inter,sans-serif;}
.ad-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:22px 44px;border-bottom:1px solid rgba(255,255,255,.08);}
.ad-logo{font-family:'Archivo Black',sans-serif;font-size:15px;color:#fff;letter-spacing:.02em;}
.ad-logo em{font-family:Inter,sans-serif;font-style:normal;font-weight:400;color:#D4A64A;}
.ad-links{display:flex;gap:22px;}
.ad-links a{font-size:13px;font-weight:600;color:#9A9A9F;cursor:pointer;}
/* Photo now comes from the page-level .uw-bg backdrop, so the hero itself is bare. */
.ad-hero{position:relative;padding:64px 44px 52px;text-align:center;background:transparent;}
.ad-kick{display:inline-block;margin-bottom:16px;font-size:12px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:#D4A64A;}
.ad-hero h1{font-family:'Archivo Black',sans-serif;font-size:clamp(30px,4.4vw,48px);color:#fff;
  line-height:1.15;margin:0 0 16px;text-transform:uppercase;letter-spacing:.005em;}
.ad-hero p{font-size:15px;line-height:1.7;color:#9A9A9F;max-width:520px;margin:0 auto 26px;}
.ad-btn{display:inline-block;font-size:14.5px;font-weight:800;color:#0B0B0D;background:#D4A64A;
  border-radius:10px;padding:14px 28px;cursor:pointer;}
.ad-packages{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;padding:52px 44px;}
.ad-pkg{background:#151517;border:1px solid rgba(255,255,255,.08);border-radius:16px;
  padding:28px 24px 26px;position:relative;
  transition:opacity .5s ease,transform .5s ease;transition-delay:calc(var(--i,0) * 80ms);
  opacity:0;transform:translateY(14px);}
.ad-pkg.is-in{opacity:1;transform:none;}
.ad-pkg-hi{border-color:#D4A64A;box-shadow:0 0 0 1px #D4A64A;}
.ad-flag{position:absolute;top:-11px;right:0;background:#D4A64A;color:#0B0B0D;
  font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  border-radius:999px 0 0 999px;padding:5px 13px;}
.ad-pkg h3{font-size:17px;font-weight:800;color:#fff;margin:0 0 6px;}
.ad-pkg b{display:block;font-size:28px;font-weight:800;color:#D4A64A;margin-bottom:16px;}
.ad-pkg ul{list-style:none;margin:0 0 20px;padding:0;}
.ad-pkg li{font-size:13.5px;color:#B7B7BC;padding:6px 0;border-top:1px solid rgba(255,255,255,.06);}
.ad-pkg li:first-child{border-top:none;}
.ad-pkg span{display:inline-block;font-size:13px;font-weight:700;color:#0B0B0D;background:#fff;
  border-radius:8px;padding:10px 18px;cursor:pointer;}
.ad-pkg-hi span{background:#D4A64A;}
.ad-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:0 44px 52px;text-align:center;}
.ad-stats b{display:block;font-size:26px;font-weight:800;color:#D4A64A;}
.ad-stats span{font-size:12px;color:#9A9A9F;}
.ad-gallery{padding:56px 44px 60px;border-top:1px solid rgba(255,255,255,.08);}
.ad-gallery h2{font-size:26px;font-weight:800;color:#fff;margin:0 0 26px;}
.ad-ba{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:3px;
  border-radius:14px;overflow:hidden;}
.ad-ba-item{position:relative;height:280px;overflow:hidden;}
.ad-ba-item img{width:100%;height:100%;object-fit:cover;display:block;}
.ad-ba-tag{position:absolute;left:14px;bottom:14px;padding:6px 14px;border-radius:100px;
  background:rgba(10,10,12,.72);color:#fff;font-size:12px;font-weight:700;
  letter-spacing:.06em;text-transform:uppercase;}
.ad-ba-item.is-after .ad-ba-tag{background:#D4A937;color:#0A0A0C;}
.ad-how{padding:0 44px 56px;}
.ad-how h2{font-size:26px;font-weight:800;color:#fff;margin:0 0 30px;}
.ad-steps{list-style:none;margin:0;padding:0;counter-reset:ad;
  display:grid;grid-template-columns:repeat(4,1fr);gap:28px;}
.ad-steps li{counter-increment:ad;}
.ad-steps li::before{content:counter(ad,decimal-leading-zero);display:block;font-size:13px;
  font-weight:800;color:#D4A937;margin-bottom:10px;}
.ad-steps b{display:block;font-size:15.5px;color:#fff;margin-bottom:8px;}
.ad-steps p{font-size:13.5px;line-height:1.7;color:#9A9A9F;margin:0;}
.ad-contact{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;padding:52px 44px;
  background:#151517;align-items:start;}
.ad-contact h2{font-size:25px;font-weight:800;color:#fff;margin:0 0 12px;}
.ad-contact p{font-size:14.5px;line-height:1.7;color:#B7B7BC;margin:0 0 20px;max-width:420px;}
.ad-c-details p{font-size:13.5px;color:#B7B7BC;line-height:1.6;margin:0 0 16px;}
.ad-c-details b{color:#fff;}
.ad-foot{display:flex;gap:20px;flex-wrap:wrap;padding:22px 44px;font-size:12.5px;color:#77777C;}

@media (max-width:1000px){
  .uw-grid{grid-template-columns:1fr 1fr;}
  .uw-scroll{height:600px;--pane:600px;}
  .lw-hero,.cn-hero,.cf-hero{grid-template-columns:1fr;}
  .lw-hero-r,.cn-hero-img{min-height:240px;}
  .cn-hero-img{clip-path:none;}
  .lw-partner{grid-template-columns:1fr;}
  .lw-partner-img{min-height:220px;}
  .lw-partner-img img{object-position:center top;}
  .gy-classes{grid-template-columns:1fr;}
  .gy-stats,.lw-figures,.pb-stats,.re-stats,.ad-stats{grid-template-columns:1fr 1fr;}
  .rs-room,.rs-book,.rs-cellar-grid,.lw-steps,.lw-contact,
  .cn-quote,.sp-member,.cf-story,.cf-find,
  .pb-contact,.re-contact,.ad-contact,.pb-hero,.re-agent{grid-template-columns:1fr;}
  .pb-hero-r{aspect-ratio:16/9;}
  .re-agent-img{width:140px;height:140px;}
  .rs-room-img{min-height:230px;}
  .gy-plans,.cn-serv-grid,.sp-approach,.sp-visit,.cf-beans-grid,
  .pb-services,.re-listings,.ad-packages,
  .pb-steps,.re-steps,.ad-steps,.pb-reviews{grid-template-columns:1fr 1fr;}
  .rs-book,.lw-contact,.cn-quote,.sp-member,.cf-story,
  .pb-contact,.re-contact,.ad-contact{gap:32px;}
  .lw-c-details{grid-template-columns:1fr 1fr;}
  .gy-table{overflow-x:auto;}
  .gy-tr{grid-template-columns:70px repeat(5,minmax(112px,1fr));min-width:630px;}
}
@media (max-width:680px){
  .uw{padding:18px 0 22px;}
  .uw-wrap,.uw-stage{padding:0 16px;}
  .uw-grid{grid-template-columns:1fr;gap:14px;}
  .uw-scroll{height:480px;--pane:480px;}
  .lw-practice,.cn-steps{grid-template-columns:1fr;}
  .lw-col{border-right:none;border-bottom:1px solid #DED9D1;}
  .rs-nav,.rs-hero-in,.rs-menu-head,.rs-foot{padding-left:22px;padding-right:22px;}
  .gy-nav,.gy-hero-in,.gy-foot{padding-left:22px;padding-right:22px;}
  .cn-nav,.cn-hero-in,.cn-ba,.cn-foot{padding-left:22px;padding-right:22px;}
  .sp-nav,.sp-hero-in,.sp-treat,.sp-quote,.sp-foot{padding-left:22px;padding-right:22px;}
  .cf-nav,.cf-hero,.cf-shelf-head,.cf-strip,.cf-foot{padding-left:22px;padding-right:22px;}
  .rs-track-space{flex-basis:0;}
  .cf-row-space{flex-basis:4px;}
  .rs-links,.lw-links,.gy-links,.cf-links,.sp-links,.cn-links,
  .pb-links,.re-links,.ad-links{display:none;}
  .sp-dots{left:22px;}
  .rs-room-txt,.rs-cellar,.rs-press,.rs-book{padding-left:22px;padding-right:22px;}
  .lw-how,.lw-insights,.lw-contact{padding-left:22px;padding-right:22px;}
  .gy-time,.gy-price,.gy-band{padding-left:22px;padding-right:22px;}
  .cn-serv,.cn-log,.cn-quote{padding-left:22px;padding-right:22px;}
  .sp-approach,.sp-member,.sp-visit{padding-left:22px;padding-right:22px;}
  .cf-beans,.cf-story,.cf-loyal,.cf-find{padding-left:22px;padding-right:22px;}
  .pb-nav,.pb-hero,.pb-services,.pb-stats,.pb-contact,.pb-foot,.pb-how,.pb-reviews,
  .re-nav,.re-hero,.re-listings,.re-stats,.re-contact,.re-foot,.re-agent,.re-how,
  .ad-nav,.ad-hero,.ad-packages,.ad-stats,.ad-contact,.ad-foot,.ad-gallery,.ad-how,
  .ad-showcase{padding-left:22px;padding-right:22px;}
  .uw-3d{padding-left:44px;padding-right:44px;}
  .uw-3d-item{width:190px;margin-left:-95px;}
  .uw-3d-track{height:230px;}
  .re-listings .uw-3d-item{width:210px;margin-left:-105px;}
  .re-listings .uw-3d-track{height:330px;}
  .gy-plans,.cn-serv-grid,.sp-approach,.sp-visit,.cf-beans-grid,
  .lw-figures,.lw-c-details,.gy-stats,
  .pb-services,.pb-stats,.re-listings,.re-stats,.ad-packages,.ad-stats,
  .pb-steps,.re-steps,.ad-steps,.pb-reviews,.ad-ba{grid-template-columns:1fr;}
  .re-agent{grid-template-columns:1fr;text-align:center;}
  .re-agent-img{margin:0 auto;}
  .re-agent-creds{justify-content:center;}
  .ad-ba-item{height:200px;}
  .rs-room-facts{gap:20px;flex-wrap:wrap;}
  .cf-stamps i{width:36px;height:36px;}
}
@media (prefers-reduced-motion:reduce){
  .gy-ticker-in,.pb-ticker-in{animation:none;}
  .sp-slide,.sp-slide img{transition:none;}
  .uw-site.is-on{animation:none;}
}

/* Explicit safety sweep: no glow/shadow on any CTA-style button across every
   concept, regardless of niche. */
.rs-btn,.gy-btn,.gy-cta,.gy-p-btn,.cn-btn,.cn-cta,.sp-btn,
.pb-btn,.re-btn,.re-search i,.ad-btn,.cf-btn,.cf-cta,.cf-cta2{
  box-shadow:none;filter:none;}
