/* Safari only accepted backdrop-filter under the -webkit- prefix until Safari
   18, so on every iOS 17-and-earlier device the frosted header simply had no
   blur. The unprefixed declaration stays for everyone else. */
header#site-header.site-header{-webkit-backdrop-filter:blur(16px)!important}

/* overflow-x:clip is Safari 16+. On iOS 15 and below the declaration is
   dropped, and a dropped overflow-x next to overflow-y:visible leaves the
   element in an unpredictable state. State the old-Safari case explicitly. */
@supports not (overflow-x: clip){
 html:root{overflow-x:hidden!important;overflow-y:auto!important}
 html:root > body{overflow-x:hidden!important;overflow-y:visible!important}
}

/* ======================================================================
   PRELOADER
   The word box was a fixed 60px tall with overflow:hidden, holding words set
   at a flat 40px. "BESPOKE REALISM" and "TOPEE • BENGALURU" are wider than a
   phone at that size, so they were clipped horizontally, and the 40px line box
   plus the 30px slide-in offset overflowed 60px vertically — which is why only
   part of each word showed. Fluid size and a box that fits the motion fix
   both. Its rules live in a <style> inside the body, so these need the id in
   the selector to outrank them.
   ====================================================================== */
html body #skiper8Curtain{background:#0E1012!important;color:#FFFFFF!important}
html body #skiper8Curtain .skiper8-word-box{
 height:auto!important;min-height:clamp(72px,14vh,120px)!important;
 width:100%!important;padding:0 20px!important;box-sizing:border-box}
html body #skiper8Curtain .skiper8-word{
 font-size:clamp(20px,5.8vw,40px)!important;line-height:1.25!important;
 color:#FFFFFF!important;white-space:nowrap;max-width:100%;text-align:center}
/* The badge is absolutely positioned with auto left/right, so it sat at its
   static position rather than centred — and hiding the dot shifted it further.
   Spanning the full width and centring the content fixes it at every size. */
html body #skiper8Curtain .skiper8-badge{
 bottom:clamp(24px,5vh,40px)!important;color:rgba(255,255,255,.55)!important;
 left:0!important;right:0!important;
 display:flex!important;justify-content:center!important;align-items:center!important;
 gap:0!important;text-align:center;padding:0 20px;line-height:1.4}
/* The badge read "Trichology Atelier" — Topee is a hair-system studio, not a
   trichology practice, so the claim was wrong as well as off-brand. Replaced
   here rather than by rewriting the 45KB legacy widget; doing it in CSS also
   means it is correct on first paint, with no flash of the old wording. */
html body #skiper8Curtain .skiper8-badge .skiper8-dot{display:none!important}
html body #skiper8Curtain .skiper8-badge span:last-child{font-size:0!important}
html body #skiper8Curtain .skiper8-badge span:last-child:after{
 content:"Topee \00a0—\00a0 Hair Patches";
 font-size:11px;letter-spacing:.2em;text-transform:uppercase}
@media (max-width:600px){
 html body #skiper8Curtain .skiper8-badge span:last-child:after{
  font-size:9.5px;letter-spacing:.16em}
}

/* ======================================================================
   HEADER
   Hidden at rest, revealed on scroll, glass while visible. The reveal is
   driven by a data-attribute set in JS rather than a class on <body>, so the
   theme's own header classes are left alone.
   ====================================================================== */
/* One glass recipe, used by both the bar and the dropdown — they were .62 and
   .78 with different blur radii, which is why the panel read as a different
   material and let body text bleed through it. */
html body header#site-header.site-header{
 background:rgba(255,255,255,.85)!important;
 -webkit-backdrop-filter:blur(22px) saturate(180%)!important;
 backdrop-filter:blur(22px) saturate(180%)!important;
 border-bottom:1px solid rgba(20,22,26,.07)!important;
 box-shadow:0 1px 0 rgba(255,255,255,.65) inset,0 10px 30px -22px rgba(20,22,26,.5)!important;
}

/* ---- nav: more air, less crowding ---- */
html body header#site-header .header-inner{gap:clamp(20px,3vw,52px)}
html body header#site-header nav .menu{gap:clamp(4px,1.1vw,10px)!important;align-items:center}
html body header#site-header nav .menu > li > a{
 font-size:13px!important;letter-spacing:.04em!important;font-weight:500!important;
 color:var(--tp-ink)!important;padding:10px 12px!important;border-radius:9px;
 position:relative;transition:background .18s ease,color .18s ease}
/* No filled hover box — a grey rectangle behind one word looked heavy and
   fought the glass. A gold rule wipes in from the left instead, which is the
   same mark the current page carries, so hover reads as a preview of state. */
html body header#site-header nav .menu > li > a:hover{background:transparent!important}
html body header#site-header nav .menu > li > a:after{
 content:"";position:absolute;left:12px;right:12px;bottom:5px;height:1.5px;
 background:var(--tp-accent);transform:scaleX(0);transform-origin:left center;
 transition:transform .22s cubic-bezier(.22,.61,.36,1);border:0;pointer-events:none}
html body header#site-header nav .menu > li > a:hover:after,
html body header#site-header nav .menu > li > a:focus-visible:after{transform:scaleX(1)}
html body header#site-header nav .menu > li.current-menu-item > a:after,
html body header#site-header nav .menu > li.current_page_item > a:after{transform:scaleX(1)}
/* Home is a custom "/" link, which WordPress does not flag as current, so the
   front page marks it from the body class instead. */
html body.home header#site-header nav .menu > li.tp-nav-home > a:after{transform:scaleX(1)}

/* ---- the nav CTA, matched to the page buttons ---- */
/* Identical to the hero button, declaration for declaration — the header CTA
   was rendering flatter because the theme forced a pill radius and dropped the
   gloss and shadow. Same radius, same gradient, same rim, same lift. */
/* The header template's own rule is `header#site-header .site-navigation
   ul#menu-main-menu > li > a` — two IDs, which outranks a single-ID selector
   no matter how many classes it carries. That is why the CTA kept the theme's
   pill radius and lost the gloss. Naming the menu id here matches it. */
html body header#site-header nav.site-navigation ul#menu-main-menu > li.tp-nav-cta.menu-item > a,
html body header#site-header nav ul#menu-main-menu > li.tp-nav-cta > a,
html body header#site-header nav .menu > li.tp-nav-cta > a{
 position:relative;
 background-color:#14161A!important;
 background-image:linear-gradient(180deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 58%,rgba(0,0,0,.18) 100%)!important;
 color:#FFFFFF!important;border:1px solid rgba(255,255,255,.10)!important;
 border-radius:14px!important;padding:14px 26px!important;
 font-size:11px!important;letter-spacing:.18em!important;text-transform:uppercase;
 margin-left:10px;min-height:46px;display:inline-flex;align-items:center;justify-content:center;
 box-shadow:0 1px 0 rgba(255,255,255,.16) inset,0 8px 20px -8px rgba(20,22,26,.55),0 1px 2px rgba(20,22,26,.20)!important;
 transition:transform .18s cubic-bezier(.22,.61,.36,1),filter .18s ease,box-shadow .18s ease!important}
html body header#site-header nav .menu > li.tp-nav-cta > a:hover{
 transform:translateY(-1px);filter:brightness(1.08);background-color:#14161A!important;
 box-shadow:0 1px 0 rgba(255,255,255,.20) inset,0 14px 26px -10px rgba(20,22,26,.55),0 2px 4px rgba(20,22,26,.22)!important}
html body header#site-header nav .menu > li.tp-nav-cta > a:active{
 transform:translateY(0);filter:brightness(.96);
 box-shadow:0 1px 2px rgba(20,22,26,.28) inset!important}
html body header#site-header nav .menu > li.tp-nav-cta > a:after{display:none!important}

/* ---- submenu: a floating glass card, not a flat grey list ---- */
html body header#site-header nav .menu ul.sub-menu{
 background:rgba(255,255,255,.85)!important;
 -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
 border:1px solid rgba(20,22,26,.08)!important;border-radius:14px!important;
 padding:0!important;overflow:hidden!important;min-width:232px;margin-top:10px!important;
 box-shadow:0 18px 40px -22px rgba(20,22,26,.45),0 1px 0 rgba(255,255,255,.7) inset!important}
/* The 10px offset above the panel is margin — outside the li's box and so not
   hoverable. Crossing it dropped :hover and the menu closed before it could be
   reached. A bridge drawn inside the submenu cannot fix this: the submenu is
   display:none the moment hover is lost, so the bridge disappears with it.
   The fix is a grace period held in JS (see tsq_header_js) — this class keeps
   the panel alive while the pointer is in transit. */
html body header#site-header nav .menu > li.tp-open > ul.sub-menu{
 display:block!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important}
html body header#site-header nav .menu > li:focus-within > ul.sub-menu{
 display:block!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important}
html body header#site-header nav .menu ul.sub-menu li{border:0!important}
/* The hover fill runs the full width of the panel rather than sitting as an
   inset rounded pill: the panel's own padding is dropped and the rounding is
   kept only on the first and last rows, so the highlight meets the panel edge
   instead of floating inside it. */
html body header#site-header nav .menu ul.sub-menu a{
 display:block;padding:12px 16px!important;border-radius:0!important;font-size:13px!important;
 letter-spacing:.02em!important;color:var(--tp-body)!important;text-transform:none!important;
 min-height:44px;display:flex;align-items:center;transition:background .16s ease,color .16s ease}
html body header#site-header nav .menu ul.sub-menu a:hover{
 background:rgba(20,22,26,.06)!important;color:var(--tp-ink)!important}
html body header#site-header nav .menu ul.sub-menu > li:first-child > a{
 border-radius:13px 13px 0 0!important}
html body header#site-header nav .menu ul.sub-menu > li:last-child > a{
 border-radius:0 0 13px 13px!important}
/* The theme already prints a "▾" on li::after — adding a second chevron on the
   link gave every parent item two carets. Keep the theme's, just quieten it. */
/* The caret used to hang off the item on a negative margin, which made the
   gap after "Find a Studio" visibly wider than every other gap. It now sits
   inside the item's own padding, so all the gaps measure the same. */
html body header#site-header nav .menu > li.menu-item-has-children{
 display:flex!important;align-items:center!important}
html body header#site-header nav .menu > li.menu-item-has-children > a{
 padding-right:6px!important}
html body header#site-header nav .menu > li.menu-item-has-children:after{
 font-size:9px!important;opacity:.45;color:var(--tp-ink);
 margin:0 6px 0 0!important;line-height:1!important;
 transition:opacity .18s ease,transform .18s ease}
html body header#site-header nav .menu > li.menu-item-has-children:hover:after{
 opacity:.8;transform:translateY(1px)}

/* ======================================================================
   MOBILE DRAWER
   The theme collapses .site-navigation-dropdown with max-height:0 and leaves
   overflow visible, so when it opened the links painted straight over the page
   with no panel behind them — transparent background, each link only as wide
   as its own text, and the desktop pill/underline styling still attached. The
   sub-menu stayed display:none, which made both studio pages unreachable on a
   phone. This replaces that mechanism outright: a real fixed drawer below the
   header, full width, scrolling on its own.
   ====================================================================== */
@media (max-width:1024px){

 /* The theme opens this panel by animating max-height off 0 while holding it at
    transform:scaleY(0), and its open state is `elementor-active` on the toggle
    HOLDER rather than any class on the panel (the panel's own `.show` is
    static and only means "dropdown enabled at this breakpoint"). Rather than
    fight two collapse mechanisms at once, the drawer is driven from a single
    class this plugin puts on <html>, and shown with `display` — which neither
    a max-height nor a scaleY can override. */
 html body header#site-header .site-navigation-dropdown{
  display:none!important}

 html.tp-nav-open body header#site-header .site-navigation-dropdown{
  display:block!important;
  position:fixed!important;left:0!important;right:0!important;
  top:var(--tp-header-h,76px)!important;
  width:100%!important;max-width:100%!important;
  height:auto!important;max-height:calc(100dvh - var(--tp-header-h,76px))!important;
  transform:none!important;
  overflow-y:auto!important;-webkit-overflow-scrolling:touch;
  background:rgba(255,255,255,.97)!important;
  -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
  border-top:1px solid rgba(20,22,26,.07)!important;
  box-shadow:0 24px 48px -28px rgba(20,22,26,.4)!important;
  animation:tp-drawer-in .28s cubic-bezier(.22,.61,.36,1) both}

@keyframes tp-drawer-in{from{opacity:0;transform:translateY(-8px)!important}to{opacity:1;transform:none!important}}

 /* The theme takes the list out of flow (position:absolute), which is what
    collapsed the panel to 1px and let the links paint over the page with
    nothing behind them. Put it back in flow so the drawer has a height. */
 html body header#site-header .site-navigation-dropdown .menu{
  position:static!important;inset:auto!important;
  display:flex!important;flex-direction:column!important;width:100%!important;
  background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  padding:8px 0 max(20px,env(safe-area-inset-bottom))!important;margin:0!important;list-style:none}

 html body header#site-header .site-navigation-dropdown .menu li{
  width:100%!important;display:block!important;border:0!important;position:relative}

 /* Full-bleed rows. The desktop rules gave these a pill radius, a white fill
    and an inline width, which is what produced the ragged grey boxes. */
 html body header#site-header .site-navigation-dropdown .menu li > a{
  display:flex!important;align-items:center;width:100%!important;
  min-height:54px!important;padding:15px 22px!important;margin:0!important;
  background:transparent!important;background-image:none!important;
  border:0!important;border-radius:0!important;box-shadow:none!important;
  font-size:15.5px!important;letter-spacing:.01em!important;text-transform:none!important;
  color:var(--tp-ink)!important;transform:none!important;
  border-bottom:1px solid rgba(20,22,26,.06)!important}
 html body header#site-header .site-navigation-dropdown .menu li > a:after{display:none!important}
 html body header#site-header .site-navigation-dropdown .menu li > a:active{
  background:rgba(20,22,26,.05)!important}

 /* Current page: a gold rule at the left edge, not a grey block. */
 html body header#site-header .site-navigation-dropdown .menu li.current-menu-item > a,
 html body.home header#site-header .site-navigation-dropdown .menu li.tp-nav-home > a{
  box-shadow:inset 3px 0 0 var(--tp-accent)!important;color:var(--tp-ink)!important;font-weight:500!important}

 /* Sub-menus are collapsed until their parent is tapped. Leaving them open
    made the drawer read as five studio-related rows instead of four sections,
    and buried the CTA below the fold. The parent row carries a caret that
    rotates, so the toggle is visible rather than guessed at. */
 html body header#site-header .site-navigation-dropdown .menu ul.sub-menu{
  display:block!important;position:static!important;opacity:1!important;visibility:visible!important;
  width:100%!important;min-width:0!important;
  max-height:0!important;overflow:hidden!important;
  transition:max-height .3s cubic-bezier(.22,.61,.36,1)!important;
  background:rgba(20,22,26,.025)!important;border:0!important;border-radius:0!important;
  box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  margin:0!important;padding:0!important}
 /* The theme also pins each sub-item at max-height:0, so releasing the panel
    alone left two zero-height rows. */
 html body header#site-header .site-navigation-dropdown .menu ul.sub-menu > li{
  max-height:none!important;height:auto!important;overflow:visible!important;
  transform:none!important;opacity:1!important}
 html body header#site-header .site-navigation-dropdown .menu ul.sub-menu li > a{
  padding-left:44px!important;min-height:48px!important;font-size:14px!important;
  color:var(--tp-body)!important;border-radius:0!important}
 /* Open state, set by the tap handler on the parent row. */
 html body header#site-header .site-navigation-dropdown .menu li.tp-sub-open > ul.sub-menu{
  max-height:340px!important}

 /* The caret is the affordance: it says the row opens rather than navigates. */
 html body header#site-header .site-navigation-dropdown .menu li.menu-item-has-children{position:relative}
 html body header#site-header .site-navigation-dropdown .menu li.menu-item-has-children:after{display:none!important;content:none!important}
 html body header#site-header .site-navigation-dropdown .menu li.tp-sub-open:after{
  transform:rotate(-135deg)!important;top:26px!important}

 /* The CTA keeps the hero button, sized to the drawer. */
 html body header#site-header .site-navigation-dropdown .menu li.tp-nav-cta{padding:16px 22px 0}
 html body header#site-header .site-navigation-dropdown .menu li.tp-nav-cta > a{
  justify-content:center;width:100%!important;min-height:52px!important;
  padding:16px 26px!important;margin:0!important;
  border:1px solid rgba(255,255,255,.10)!important;border-radius:14px!important;
  background-color:#14161A!important;
  background-image:linear-gradient(180deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 58%,rgba(0,0,0,.18) 100%)!important;
  color:#FFFFFF!important;font-size:11.5px!important;letter-spacing:.18em!important;text-transform:uppercase!important;
  box-shadow:0 1px 0 rgba(255,255,255,.16) inset,0 8px 20px -8px rgba(20,22,26,.55)!important}
}

/* header: show the wordmark, retire the text title */
.site-branding .custom-logo-link{display:inline-block;line-height:0}
.site-branding .custom-logo{width:auto;height:48px;max-height:48px;display:block}
header .site-branding.has-logo .site-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* dark grounds: invert the black wordmark to white */
#site-footer .custom-logo,
.elementor-element-8712b46 .custom-logo,
[data-tsq-dark] .custom-logo{filter:brightness(0) invert(1)}
#site-footer .custom-logo{height:42px;max-height:42px;margin-bottom:16px}
#site-footer .site-branding{display:flex;flex-direction:column;align-items:flex-start;gap:2px}
@media (max-width:1024px){
.site-branding .custom-logo{height:42px;max-height:42px}
#site-footer .custom-logo{height:36px;max-height:36px}
}
@media (max-width:600px){
.site-branding .custom-logo{height:34px;max-height:34px}
#site-footer .custom-logo{height:32px;max-height:32px}
}

/* ---- site-wide gutters ----
   Inner pages were authored with one desktop padding (120px / 24px) that never
   scaled. Horizontal only: vertical padding varies by section on purpose (the
   dark CTA band is deliberately 0) so it is not safe to blanket. The hero is
   excluded — it manages its own 40/60 split. */
@media (max-width:1024px){
html body .e-con.e-parent:not(:has(.tsq)){padding-left:32px!important;padding-right:32px!important}
/* same rule without :has() for engines that drop it — the hero is excluded by
   id instead, and re-asserts its own zero padding above either way */
html body .e-con.e-parent:not(.elementor-element-00a5961){padding-left:32px!important;padding-right:32px!important}
html body .elementor-element-9f2a0b1{padding-top:80px!important;padding-bottom:64px!important}
}
@media (max-width:600px){
html body .e-con.e-parent:not(:has(.tsq)){padding-left:22px!important;padding-right:22px!important}
html body .e-con.e-parent:not(.elementor-element-00a5961){padding-left:22px!important;padding-right:22px!important}
html body .elementor-element-9f2a0b1{padding-top:64px!important;padding-bottom:48px!important}
}

/* ---- consultation form ---- */
.elementor-element-b9d12b2 .elementor-field-group > label{font-size:11px!important;letter-spacing:.14em;text-transform:uppercase;color:#6B6659;margin-bottom:8px!important}
.elementor-element-b9d12b2 .elementor-field{border:1px solid #E5E5E5!important;background:transparent!important;padding:11px 12px!important;font-size:14px!important;color:#14161A!important;border-radius:8px!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important}
.elementor-element-b9d12b2 .elementor-field:focus{outline:none!important;background:#FFFFFF!important;border-color:#A8871C!important;box-shadow:0 0 0 3px rgba(168,135,28,.5)!important}
.elementor-element-b9d12b2 .elementor-button{letter-spacing:.18em!important;text-transform:uppercase;font-size:11.5px!important;padding:17px 28px!important;border-radius:0!important}
.elementor-element-b9d12b2 .elementor-message-success{background:transparent!important;color:#14161A!important;border-left:2px solid #A8871C;padding:14px 0 14px 16px!important;font-size:14.5px!important;line-height:1.6}
/* iOS Safari zooms the whole page whenever a focused input is under 16px, so
   tapping "Name" lurched the page and the user had to pinch back out. 16px is
   the threshold — this is the only reason for the size bump. */
@media (max-width:1024px){
.elementor-element-b9d12b2 .elementor-field,
.elementor-element-b9d12b2 select.elementor-field,
.elementor-element-b9d12b2 input.elementor-field,
.elementor-element-b9d12b2 textarea.elementor-field{font-size:16px!important}
}
/* Touch targets: nav, footer and inline links were rendering 30-34px tall.
   Apple asks for 44px, Material for 48. Padding only — nothing moves on desktop. */
@media (max-width:1024px){
header nav .menu > li > a,
#site-footer nav .menu > li > a{display:inline-flex!important;align-items:center;min-height:44px!important}
.tsq-step .tsq-cta,.tp-side-cta,.tp-cost-cta{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
}

/* ======================================================================
   PALETTE
   The old gold #C9A227 measured 2.42:1 on white — it fails WCAG AA for body
   text (4.5:1) and even the 3:1 large-text bar, which is why it read as
   unreadable. The eyebrow grey #8A8477 measured 3.72:1 and failed too.
   Every value below is measured, not guessed:
     ink      #14161A  18.11:1 on white
     body     #4A4F55   8.27:1
     muted    #6E7278   4.84:1  (4.63:1 on the surface tint)
     accent   #A8871C   3.42:1 on white — decorative and large text only
     accent-t #8F7117   4.62:1 on white — any gold under 24px
     accent-d #6B5212   7.39:1 — hover / pressed
   #A8871C also gives 5.3:1 on the dark ground, so one gold works on both.
   ====================================================================== */
/* The legacy homepage already owns the --tp-* namespace and defines its :root
   inside a <style> in the body, which lands after this one — so our --tp-bg was
   silently resolving to its cream #F6F4EF and every "white" rule painted cream.
   Overriding its tokens here is both the fix and the lever: these eight values
   drive the whole legacy homepage, so correcting them recolours it in one move.
   html:root (0,1,1) beats a bare :root (0,1,0), and !important seals it. */
html:root{
 --tp-bg:#FFFFFF!important;
 --tp-card:#FAFAF8!important;
 --tp-border:#E6E4DF!important;
 --tp-charcoal:#14161A!important;
 --tp-gold:#A8871C!important;
 --tp-gold-light:#856812!important;
 --tp-muted:#5A5F66!important;
 /* --tp-dark stays #0E1012: the CTA band and footer are the deliberate
    dark anchors, and dark-on-dark was fixed by recolouring the text. */
}
:root{
 --tp-surface:#FAFAF8;
 --tp-ink:#14161A; --tp-body:#4A4F55;
 /* #8F7117 measured 4.42:1 on the #FAFAF8 card tint — just under the 4.5 bar.
    #856812 clears it on both white and the tint. */
 --tp-accent:#A8871C; --tp-accent-text:#856812; --tp-accent-deep:#6B5212;
 --tp-on-dark:#FFFFFF;
 --tp-radius:14px; --tp-radius-sm:10px;
 /* Global spacing scale used by reusable cards and action groups. */
 --tp-space-xs:6px; --tp-space-sm:10px; --tp-space-md:14px;
 --tp-space-lg:24px; --tp-action-gap:10px; --tp-action-offset:14px;
}

/* ---- white ground everywhere the page body shows through ----
   Elementor generates ".elementor-38 .elementor-element.elementor-element-x"
   (specificity 0,3,0). A plain "html body .elementor-element-x" is 0,1,2 and
   loses even with !important, which is why the cream survived the first pass.
   These match or beat it. */
html body{background:var(--tp-bg)!important}
html body .elementor .e-con.elementor-element,
html body .elementor .e-con-full.elementor-element{background-color:var(--tp-bg)!important}
html body .tp-root,
html body .tp-root .tp-catalog-section,
html body .tp-root .tp-studios-section,
html body .tp-catalog-section,
html body .tp-studios-section,
html body .tp-studio-box,
/* the header's own glass treatment lives in the HEADER block below — this used
   to set a flat rgba here and, sitting later in the sheet, it was overriding
   the blur. Left as a note so it does not get re-added. */
/* the two deliberately dark bands stay dark — they are the contrast anchors,
   and they are readable; everything else is white */
html body .elementor .e-con.elementor-element-8712b46,
html body .elementor .e-con-full.elementor-element-8712b46,
html body .elementor .e-con.elementor-element-e8f39e7,
html body .elementor .e-con-full.elementor-element-e8f39e7{background-color:#0E1012!important}

/* ---- the hero wrapper has to track the hero's own height ----
   The hero widget caps itself at clamp(560px,100svh,820px), but the Elementor
   wrapper around it was pinned to a flat 100svh. On any viewport taller than
   820px the wrapper outran its own content, and that leftover strip painted in
   the page's white ground - which reads as a white gap between the video and
   the reviews bar (80px at a 900px-tall window). Mirror the hero's breakpoints
   exactly so the wrapper never asks for more height than the hero fills.
   Doubling the id class clears the widget's own (0,3,2) rule, which ships
   inline in the body and so would otherwise win on order. */
html body.home .elementor-element.elementor-element-37d1d65.elementor-element-37d1d65{
 min-height:clamp(560px,100svh,820px)!important;
}
@media (min-width:601px) and (max-width:1024px){
 html body.home .elementor-element.elementor-element-37d1d65.elementor-element-37d1d65{min-height:100svh!important}
}
@media (max-width:600px){
 html body.home .elementor-element.elementor-element-37d1d65.elementor-element-37d1d65{min-height:92svh!important}
}
@media (max-width:600px) and (max-height:700px){
 html body.home .elementor-element.elementor-element-37d1d65.elementor-element-37d1d65{min-height:88svh!important}
}

/* Text inside the dark CTA band was rendering rgb(14,16,18) on rgb(14,16,18) —
   the same colour as its own background, so the headline was invisible. */
html body .elementor-element-8712b46 h1,
html body .elementor-element-8712b46 h2,
html body .elementor-element-8712b46 h3,
html body .elementor-element-8712b46 .elementor-heading-title{color:var(--tp-on-dark)!important}
html body .elementor-element-8712b46 p,
html body .elementor-element-8712b46 .elementor-widget-text-editor{color:rgba(255,255,255,.82)!important}
html body #site-footer,html body #site-footer p,html body #site-footer a,
html body #site-footer li,html body #site-footer h1,html body #site-footer h2,
html body #site-footer h3,html body #site-footer span{color:rgba(255,255,255,.86)!important}
html body #site-footer a:hover{color:#FFFFFF!important}
/* cards keep the faintest tint so they still read as objects on white */
html body .tp-cost-card,html body .tp-studio,html body .tp-voice{background:var(--tp-surface)!important}
html body .tp-cost-card--ours{background:var(--tp-dark)!important}

/* ---- gold under 24px must use the darker tone to stay legible ---- */
.tp-voice-stars,.tp-cost-fig span,.tsq-step .tsq-list strong{color:var(--tp-accent-text)!important}
a:not(.tp-side-cta):not(.tp-cost-cta):not(.tsq-cta):not(.elementor-button):not(.tp-sd-ghost):not(.tp-btn-ghost){color:var(--tp-accent-text)}
a:not(.tp-side-cta):not(.tp-cost-cta):not(.tsq-cta):not(.elementor-button):not(.tp-sd-ghost):not(.tp-btn-ghost):hover{color:var(--tp-accent-deep)}
/* gold on the dark card is the one place the brighter tone is correct */
.tp-cost-card--ours .tp-cost-label,.tp-cost-card--ours .tp-cost-fig{color:var(--tp-accent)!important}
.tp-cost-card--ours .tp-cost-fig span{color:#B9BCC0!important}
.tp-cost-card--ours .tp-cost-title{color:var(--tp-on-dark)!important}
.tp-cost-card--ours .tp-cost-list{color:#D5D7DA!important}

/* ======================================================================
   BUTTONS — rounded, with a restrained liquid-glass lift. The gloss is a
   single soft highlight across the top third plus a hairline inner rim;
   enough to catch the light, not enough to look like a 2008 web button.
   ====================================================================== */
/* Global action-button system. New markup should use .tp-btn-primary or
   .tp-btn-secondary; legacy selectors remain mapped here until page markup is
   migrated, so one rule controls every current CTA. */
html body .tsq-step .tsq-cta.tsq-cta.tsq-cta,
html body .tp-side-cta.tp-side-cta.tp-side-cta,
html body .tp-cost-cta.tp-cost-cta.tp-cost-cta,
html body .tp-hero-cta.tp-hero-cta.tp-hero-cta,
html body .tp-base-foot-btn-gold.tp-base-foot-btn-gold.tp-base-foot-btn-gold,
html body a#tp-base-book-btn.tp-base-foot-btn-gold,
html body .tp-modal-submit-btn.tp-modal-submit-btn.tp-modal-submit-btn,
html body a.elementor-button.elementor-button.elementor-button,
html body button.elementor-button.elementor-button.elementor-button,
html body .elementor-button.elementor-button.elementor-button,
html body .tp-btn-primary.tp-btn-primary.tp-btn-primary{
 position:relative!important;
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 min-height:52px!important;height:auto!important;padding:0 28px!important;
 box-sizing:border-box!important;margin:0!important;
 font-family:'Poppins',system-ui,-apple-system,sans-serif!important;
 font-size:11px!important;font-weight:600!important;line-height:1.2!important;
 letter-spacing:.14em!important;text-transform:uppercase!important;
 text-align:center!important;text-decoration:none!important;white-space:normal!important;
 border-radius:14px!important;
 background-color:#14161A!important;
 background-image:linear-gradient(180deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 58%,rgba(0,0,0,.18) 100%)!important;
 color:#FFFFFF!important;border:1px solid rgba(255,255,255,.10)!important;
 box-shadow:0 1px 0 rgba(255,255,255,.16) inset,0 8px 20px -8px rgba(20,22,26,.55),0 1px 2px rgba(20,22,26,.20)!important;
 overflow:hidden!important;isolation:isolate;cursor:pointer!important;
 transition:transform .18s cubic-bezier(.22,.61,.36,1),box-shadow .18s ease,filter .18s ease!important;
 -webkit-backdrop-filter:saturate(1.4);backdrop-filter:saturate(1.4);
}
/* the highlight itself */
.tsq-step .tsq-cta:before,.tp-side-cta:before,.tp-cost-cta:before,
.tp-hero-cta:before,.tp-base-foot-btn-gold:before,.tp-modal-submit-btn:before,
.elementor-button:before,.tp-btn-primary:before{
 content:"";position:absolute;inset:0 0 auto 0;height:52%;pointer-events:none;
 background:linear-gradient(180deg,rgba(255,255,255,.20),rgba(255,255,255,0));
 border-radius:14px 14px 0 0;z-index:-1;
}
.tsq-step .tsq-cta:hover,.tp-side-cta:hover,.tp-cost-cta:hover,
.tp-hero-cta:hover,.tp-base-foot-btn-gold:hover,html body a#tp-base-book-btn.tp-base-foot-btn-gold:hover,.tp-modal-submit-btn:hover,
.elementor-button:hover,.tp-btn-primary:hover{
 transform:translateY(-1px);filter:brightness(1.08);
 box-shadow:0 1px 0 rgba(255,255,255,.20) inset,0 14px 26px -10px rgba(20,22,26,.55),0 2px 4px rgba(20,22,26,.22)!important;
}
.tsq-step .tsq-cta:active,.tp-side-cta:active,.tp-cost-cta:active,
.tp-hero-cta:active,.tp-base-foot-btn-gold:active,html body a#tp-base-book-btn.tp-base-foot-btn-gold:active,.tp-modal-submit-btn:active,
.elementor-button:active,.tp-btn-primary:active{
 transform:translateY(0);filter:brightness(.96);
 box-shadow:0 1px 2px rgba(20,22,26,.28) inset!important;
}
.tsq-step .tsq-cta:focus-visible,.tp-side-cta:focus-visible,.tp-cost-cta:focus-visible,
.tp-hero-cta:focus-visible,.tp-base-foot-btn-gold:focus-visible,html body a#tp-base-book-btn.tp-base-foot-btn-gold:focus-visible,.tp-modal-submit-btn:focus-visible,
.elementor-button:focus-visible,.tp-btn-primary:focus-visible{
 outline:2px solid var(--tp-accent-text);outline-offset:3px;
}
/* Secondary action: the same geometry with a quiet light treatment. */
html body .tp-btn-secondary.tp-btn-secondary.tp-btn-secondary,
html body .tp-btn-ghost.tp-btn-ghost.tp-btn-ghost,
html body .tp-sd-ghost.tp-sd-ghost.tp-sd-ghost{
 position:relative!important;
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 min-height:52px!important;height:auto!important;padding:0 28px!important;
 box-sizing:border-box!important;margin:0!important;
 font-family:'Poppins',system-ui,-apple-system,sans-serif!important;
 font-size:11px!important;font-weight:600!important;line-height:1.2!important;
 letter-spacing:.14em!important;text-transform:uppercase!important;
 text-align:center!important;text-decoration:none!important;white-space:normal!important;
 border-radius:14px!important;background:#FFFFFF!important;
 background-color:#FFFFFF!important;background-image:none!important;
 color:#14161A!important;border:1px solid #E6E4DF!important;
 box-shadow:0 1px 0 rgba(255,255,255,.9) inset,0 6px 16px -10px rgba(20,22,26,.35)!important;
 transition:transform .18s cubic-bezier(.22,.61,.36,1),box-shadow .18s ease,border-color .18s ease,color .18s ease!important;
 cursor:pointer!important;
}
html body .tp-btn-secondary:hover,
html body .tp-btn-ghost:hover,
html body .tp-sd-ghost:hover{
 transform:translateY(-1px)!important;border-color:#D8D4C8!important;
 box-shadow:0 1px 0 rgba(255,255,255,.9) inset,0 12px 22px -12px rgba(20,22,26,.4)!important;
 color:#14161A!important;background:#FFFFFF!important;
}
html body .tp-btn-secondary:active,
html body .tp-btn-ghost:active,
html body .tp-sd-ghost:active{transform:translateY(0)!important;box-shadow:0 1px 2px rgba(20,22,26,.18) inset!important}
html body .tp-btn-secondary:focus-visible,
html body .tp-btn-ghost:focus-visible,
html body .tp-sd-ghost:focus-visible{outline:2px solid var(--tp-accent-text);outline-offset:3px}

/* Global spacing for reusable action groups and studio cards. Both the direct
   single-button card and the two-button wrapper now resolve to the same offset. */
html body .tp-studio-body.tp-studio-body{
 padding:var(--tp-space-lg)!important;
 gap:var(--tp-space-sm)!important;
}
html body .tp-studio-body > .tp-side-cta.tp-side-cta{
 margin-top:var(--tp-action-offset)!important;
}
html body .tp-studio-body > div:has(> .tp-side-cta){
 display:flex!important;flex-wrap:wrap!important;align-items:center!important;
 gap:var(--tp-action-gap)!important;
 margin-top:var(--tp-action-offset)!important;
}
html body .tp-story-actions.tp-story-actions,
html body .tp-sd-actions.tp-sd-actions,
html body .tp-base-foot-btns.tp-base-foot-btns{
 column-gap:var(--tp-action-gap)!important;
}
/* inputs pick up the same radius so the form matches the buttons */
.elementor-element-b9d12b2 .elementor-field{border-radius:8px!important}
/* The select wrapper is itself .elementor-field, so it was picking up the same
   border + fill as the select inside it and rendering a box within a box. */
html body .elementor-field.elementor-select-wrapper,
html body div.elementor-select-wrapper{
 border:0!important;background:transparent!important;padding:0!important;height:auto!important;min-height:0!important}
.tp-cost-card,.tp-studio,.tp-voice{border-radius:var(--tp-radius)!important}

/* Below 1024 the phase heading shrinks under 24px, so it stops counting as
   "large text" and the 3:1 allowance no longer applies — it needs the full
   4.5:1. Swap to the darker gold at every size where that heading is small. */
@media (max-width:1024px){
 .tsq-step .tsq-h em{color:var(--tp-accent-text)!important}
}

/* Theme headings were authored at a desktop size and clipped on phones —
   "CURATED MEMBRANE ARCHITECTURES" ran off the right edge. Cap them and let
   long words wrap rather than overflow. Our own hero/section headings set
   their own sizes and are excluded. */
@media (max-width:600px){
/* Only real headings. This used to hit every .elementor-heading-title, which
   swept up the small uppercase eyebrows too — "Private Consultation" above
   the contact form was set to 11px in the editor and this rule blew it up to
   28px serif, so the eyebrow read as a second headline. */
html body h1.elementor-heading-title:not(.tp-hero-h):not(.tp-h2),
html body h2.elementor-heading-title:not(.tp-hero-h):not(.tp-h2),
html body h3.elementor-heading-title:not(.tp-hero-h):not(.tp-h2){
 font-size:clamp(24px,7.4vw,32px)!important;line-height:1.15!important;overflow-wrap:break-word}
html body .elementor-heading-title{overflow-wrap:break-word}
}

/* ======================================================================
   BUTTON ROWS
   Primary and secondary buttons were written in different places over time,
   so their padding never agreed and any pair sat a few pixels out of line.
   Rather than keep patching each row, every row of buttons on the site is
   normalised here: one height, one baseline, no inherited margins.
   ====================================================================== */
html body .tp-hero-actions,
html body .tp-story-actions,
html body .tp-sd-actions,
html body .tp-footer-cta-actions,
html body .tp-fit-actions{
 display:flex!important;flex-wrap:wrap;align-items:stretch!important}
html body .tp-hero-actions > a,
html body .tp-story-actions > a,
html body .tp-sd-actions > a,
html body .tp-footer-cta-actions > a,
html body .tp-fit-actions > a{
 height:52px!important;min-height:52px!important;margin:0!important;
 padding-top:0!important;padding-bottom:0!important;
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 line-height:1!important;vertical-align:middle}

/* ======================================================================
   FORM FIELDS
   Site-wide, not just the consultation form, so any field added later inherits
   it. Same material language as the buttons: 12px radius, a translucent face
   over a hairline border, an inset top highlight, and the gold accent reserved
   for focus. 16px on touch because iOS Safari zooms the page on any focused
   field under that size.
   ====================================================================== */
html body input[type="text"],html body input[type="email"],html body input[type="tel"],
html body input[type="url"],html body input[type="number"],html body input[type="search"],
html body input[type="date"],html body textarea,html body select,
html body .elementor-field-textual,html body .elementor-field{
 /* Geometry lifted from shadcn's own ui/input, ui/textarea and select-trigger
    (shadcnstudio/shadcn-studio): rounded-md, a 1px border-input hairline, a
    transparent face, shadow-xs, px-3, and a 3px focus ring in the ring colour
    with the border switching to match. The one deviation is height: shadcn
    ships h-9 (36px), which is right inside a dense app UI and too tight for a
    marketing form, so these sit at 44px. Ring colour is the brand gold rather
    than shadcn's generic slate. */
 border-radius:8px!important;
 padding:11px 12px!important;
 min-height:44px!important;
 font-size:14px!important;line-height:1.45!important;
 color:var(--tp-ink)!important;
 box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;
 transition:color .15s ease,border-color .15s ease,box-shadow .15s ease!important}
html body input:hover:not(:focus),html body textarea:hover:not(:focus),html body select:hover:not(:focus),
html body .elementor-field:hover:not(:focus){border-color:#D4D4D4!important}
html body input:focus,html body textarea:focus,html body select:focus,
html body .elementor-field:focus,
html body input:focus-visible,html body textarea:focus-visible,html body select:focus-visible{
 outline:none!important;background:#FFFFFF!important;
 border-color:var(--tp-accent)!important;
 box-shadow:0 0 0 3px rgba(168,135,28,.5)!important}
html body input[aria-invalid="true"],html body textarea[aria-invalid="true"],
html body .elementor-field.elementor-error{
 border-color:#DC2626!important;box-shadow:0 0 0 3px rgba(220,38,38,.2)!important}
html body input:disabled,html body textarea:disabled,html body select:disabled{
 cursor:not-allowed!important;opacity:.5!important}
html body ::placeholder{color:#9AA0A6!important;opacity:1}
/* selects need their own caret once the native one is removed */
html body select,html body select.elementor-field{
 background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%236E7278' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;
 background-repeat:no-repeat!important;background-position:right 16px center!important;
 padding-right:42px!important;cursor:pointer}
html body label,html body .elementor-field-label{
 font-size:11px!important;letter-spacing:.14em;text-transform:uppercase;
 color:var(--tp-muted)!important;margin-bottom:8px!important;display:block}
@media (max-width:1024px){
 html body input,html body textarea,html body select,html body .elementor-field{font-size:16px!important}
}

/* ================= display numerals =================
   Cormorant Garamond defaults to OLD-STYLE figures: the 1 sits at x-height so
   it reads as a capital I, and the 0 is undersized. Its Google Fonts build
   ships no lining set — font-variant-numeric:lining-nums and
   font-feature-settings:'lnum' both measured identical metrics to the default,
   so the fix is a different face rather than an OpenType flag. Plus Jakarta
   Sans is already loaded, has proper lining figures, and its geometry sets off
   the Cormorant headings instead of competing with them. Sizes are stepped
   down because a bold sans carries more weight than a light serif at the same
   px. */
.tp-hero-marks strong,
.tsq-step .tsq-num,
.tp-fact-n,
.tp-stepn{
 font-family:'Plus Jakarta Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif!important;
 font-weight:700!important;
 font-variant-numeric:lining-nums tabular-nums!important;
 font-feature-settings:'lnum' 1,'tnum' 1;
 letter-spacing:-.02em!important;
 font-style:normal!important;
}
.tp-hero-marks strong{font-size:32px!important}
.tp-hero-marks strong i{font-family:inherit!important;font-weight:600!important;
 font-size:14px!important;letter-spacing:0!important;margin-left:3px;
 color:var(--tp-accent-text)!important}
.tsq-step .tsq-num{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:clamp(34px,3.6vw,44px)!important;font-weight:600!important;color:#14161A!important;line-height:1!important;letter-spacing:-0.02em!important;font-style:normal!important;display:inline-block!important;margin-bottom:0!important}
.tp-fact-n{font-size:34px!important}
.tp-stepn{font-size:30px!important}
/* prices and figures line up in columns */
.tp-card-p,.tp-cost-fig{font-variant-numeric:lining-nums tabular-nums;font-feature-settings:'lnum' 1,'tnum' 1}
@media (max-width:1024px){
 .tp-hero-marks strong{font-size:28px!important}
 .tsq-step .tsq-num{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:clamp(34px,3.6vw,44px)!important;font-weight:600!important;color:#14161A!important;line-height:1!important;letter-spacing:-0.02em!important;font-style:normal!important;display:inline-block!important;margin-bottom:0!important}
 .tp-stepn{font-size:26px!important}
}
@media (max-width:600px){
 .tp-hero-marks strong{font-size:26px!important}
 .tsq-step .tsq-num{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:clamp(34px,3.6vw,44px)!important;font-weight:600!important;color:#14161A!important;line-height:1!important;letter-spacing:-0.02em!important;font-style:normal!important;display:inline-block!important;margin-bottom:0!important}
 .tp-fact-n{font-size:30px!important}
}
@media (max-width:400px){
 .tsq-step .tsq-num{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;font-size:clamp(34px,3.6vw,44px)!important;font-weight:600!important;color:#14161A!important;line-height:1!important;letter-spacing:-0.02em!important;font-style:normal!important;display:inline-block!important;margin-bottom:0!important}
}

/* ================= shop grid ================= */
.tp-shop{max-width:1180px;margin:0 auto;padding:56px 0 0}
/* the page already carries its own H1 above this block, so the shop head is
   just a lead-in line — the eyebrow and h2 are hidden to avoid a double title */
.tp-shop-head{text-align:center;max-width:62ch;margin:0 auto 44px}
.tp-shop-head .tp-eyebrow,.tp-shop-head .tp-h2{display:none}
.tp-shop-sub{font-size:15.5px;line-height:1.7;color:var(--tp-body);margin:0}
.tp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.tp-card{display:flex;flex-direction:column;border:1px solid var(--tp-border);
 border-radius:var(--tp-radius);overflow:hidden;background:var(--tp-bg);
 transition:transform .2s cubic-bezier(.22,.61,.36,1),box-shadow .2s ease}
.tp-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px -20px rgba(20,22,26,.4)}
.tp-card-media{background:var(--tp-surface);aspect-ratio:1/1;overflow:hidden}
.tp-card-media img{width:100%;height:100%;object-fit:cover;display:block}
.tp-card-body{padding:24px 22px 26px;display:flex;flex-direction:column;flex:1 1 auto}
.tp-card-tag{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--tp-muted);margin:0 0 10px}
.tp-card-h{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;font-size:23px;
 line-height:1.2;margin:0 0 10px;color:var(--tp-ink)}
.tp-card-d{font-size:14px;line-height:1.6;color:var(--tp-body);margin:0 0 18px;flex:1 1 auto}
.tp-card-p{font-size:19px;font-weight:600;color:var(--tp-ink);margin:0 0 18px;
 font-variant-numeric:tabular-nums;padding-top:16px;border-top:1px solid var(--tp-border)}
.tp-card-cta{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;
 padding:12px 24px;border-radius:var(--tp-radius-sm);border:1px solid var(--tp-border);
 background:rgba(255,255,255,.7);color:var(--tp-ink);font-size:10.5px;letter-spacing:.18em;
 text-transform:uppercase;text-decoration:none;min-height:44px;
 -webkit-backdrop-filter:blur(10px) saturate(1.3);backdrop-filter:blur(10px) saturate(1.3);
 box-shadow:0 1px 0 rgba(255,255,255,.9) inset;transition:background .18s ease,color .18s ease}
.tp-card-cta:hover{background:var(--tp-ink)!important;color:#FFFFFF!important}
.tp-card--top{border-color:var(--tp-accent)}

/* options strip */
.tp-spec{margin-top:64px;padding-top:44px;border-top:1px solid var(--tp-border)}
.tp-spec-row{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:22px}
.tp-spec-row h4{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;font-size:20px;
 margin:0 0 8px;color:var(--tp-ink)}
.tp-spec-row p{font-size:13.5px;line-height:1.65;color:var(--tp-body);margin:0}
.tp-spec-cta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px;
 margin-top:40px;padding-top:30px;border-top:1px solid var(--tp-border)}
.tp-spec-cta p{font-size:15px;color:var(--tp-body);margin:0}
@media (max-width:1024px){
 .tp-shop{padding-top:52px}
 .tp-grid{grid-template-columns:repeat(2,1fr);gap:20px}
 .tp-spec-row{grid-template-columns:1fr;gap:22px}
 .tp-shop-head{margin-bottom:34px}
}
@media (max-width:600px){
 .tp-grid{grid-template-columns:1fr;gap:18px}
 .tp-spec-cta{flex-direction:column;align-items:stretch;text-align:center}
 .tp-card-cta{align-self:stretch}
}

/* ================= marquee =================
   Travels left to right. Two identical tracks sit side by side and the pair is
   translated by exactly -50%, so the moment the animation loops the second copy
   is already where the first began and the seam never shows. Reversing the
   direction is what makes it read left-to-right rather than the usual drift. */
.tp-marquee{overflow:hidden;padding:20px 0;position:relative;background:#14161A;
 -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
 mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
/* Plays -50% -> 0, so the translate increases and the text travels rightward.
   ("reverse" here would flip it back to the usual right-to-left drift.) */
.tp-marquee-track{display:flex;width:max-content;animation:tp-mq 38s linear infinite;will-change:transform}
.tp-mq{display:flex;align-items:center;flex:0 0 auto;white-space:nowrap}
.tp-mq b{font-weight:500;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:#FFFFFF;padding:0 26px}
.tp-mq i{font-style:normal;color:var(--tp-accent);font-size:11px}
@keyframes tp-mq{from{transform:translate3d(-50%,0,0)}to{transform:translate3d(0,0,0)}}
.tp-marquee:hover .tp-marquee-track{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){
 .tp-marquee-track{animation:none;transform:none;justify-content:center}
 .tp-mq:last-child{display:none}
 .tp-marquee{-webkit-mask-image:none;mask-image:none}
 .tp-mq{white-space:normal;flex-wrap:wrap;justify-content:center}
}
@media (max-width:600px){
 .tp-marquee{padding:22px 0}
 .tp-mq b{font-size:10px;padding:0 16px;letter-spacing:.16em}
}

/* ================= hero ================= */

/* Refined Hero Desktop Padding: 25% reduction in top space */
html body .elementor-element-37d1d65 {
  padding-top: 110px !important;
  padding-bottom: 72px !important;
}

.tp-hero{max-width:920px;margin:0 auto;text-align:center}
.tp-hero-eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--tp-muted);margin:0 0 26px}
.tp-hero-h{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;
 font-size:clamp(40px,6.4vw,80px);line-height:1.04;letter-spacing:-.01em;
 margin:0 0 18px;color:var(--tp-ink);text-wrap:balance}
.tp-hero-h em{font-style:normal!important;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif!important;color:#8E7037!important;font-size:0.88em!important;font-weight:550!important;display:block!important;margin-top:6px!important;opacity:1!important}
.tp-hero-sub{font-size:17px;line-height:1.7;color:var(--tp-body);margin:0 auto 24px;max-width:60ch}
.tp-hero-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:center}
.tp-hero-cta{padding:17px 34px!important;font-size:11.5px!important}
.tp-hero-ghost{display:inline-flex;align-items:center;justify-content:center;
 padding:17px 30px;font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;text-decoration:none;
 min-height:44px}
.tp-hero-note{font-size:12px;color:var(--tp-muted);margin:12px 0 0}
/* no border here: the stats wrapper around this list already draws one, and
   the two together read as a double rule under the headline */
.tp-hero-marks{list-style:none;padding:24px 0 0;margin:24px auto 0;
 display:grid;grid-template-columns:repeat(4,1fr);gap:28px;max-width:820px}
.tp-hero-marks li{display:flex;flex-direction:column;gap:8px;align-items:center}
.tp-hero-marks strong{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif!important;font-weight:600!important;font-size:38px;line-height:1;color:#8E7037!important;font-variant-numeric:tabular-nums}
.tp-hero-marks strong i{font-style:normal;font-size:15px;margin-left:2px;color:var(--tp-accent-text)}
.tp-hero-marks span{font-size:12.5px;line-height:1.5;color:var(--tp-muted);max-width:18ch}
@media (max-width:1024px){
 html body .elementor-element-37d1d65{padding:90px 32px 60px!important}
 .tp-hero-sub{font-size:16px}
 .tp-hero-marks{grid-template-columns:repeat(2,1fr);gap:26px;padding-top:34px;margin-top:34px}
}
@media (max-width:767px){
 html body .elementor-element-37d1d65{padding:78px 20px 44px!important}
 .tp-hero-h{font-size:clamp(42px,12.5vw,54px)!important;line-height:1.06!important;letter-spacing:-.02em!important;margin:0 0 20px 0!important;font-weight:500!important}
 .tp-hero-h em{font-style:normal!important;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif!important;color:#8E7037!important;font-size:0.88em!important;font-weight:550!important;display:block!important;margin-top:6px!important;opacity:1!important}
 .tp-hero-eyebrow{font-size:10px!important;letter-spacing:.22em!important;margin-bottom:18px!important}
 .tp-hero-sub{font-size:15px!important;line-height:1.55!important;margin-bottom:24px!important}
 .tp-hero-actions{flex-direction:column;align-items:stretch}
 .tp-hero-cta{padding:16px 36px!important;font-size:11.5px!important;letter-spacing:.16em!important;min-height:52px!important;width:100%!important;max-width:340px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;text-align:center}
 .tp-hero-ghost{padding:14px 28px!important;font-size:11px!important;min-height:48px!important;width:100%!important;max-width:340px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;text-align:center}
 .tp-hero-marks strong{font-size:30px}
}

/* ================= shared editorial blocks ================= */
.tp-eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:#6E7278;margin:0 0 14px}
/* The section eyebrows authored in Elementor were left at the body serif and
   no letter-spacing, so at 11px they read as a shrunken headline rather than
   a label — nothing like the coded .tp-eyebrow beside them. Every heading
   widget on the site that renders as a DIV is one of these eyebrows (the real
   headings are h1/h2), so they are brought onto the same treatment. */
html body div.elementor-heading-title{
 font-family:'Plus Jakarta Sans',system-ui,-apple-system,sans-serif!important;
 font-size:11px!important;font-weight:500!important;
 letter-spacing:.22em!important;text-transform:uppercase!important;
 line-height:1.3!important;color:#6E7278!important}
.tp-h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(28px,3.6vw,46px);line-height:1.12;text-transform:uppercase;letter-spacing:.02em;margin:0 0 22px;color:#14161A}
.tp-h2 em{font-style:normal!important;font-family:inherit!important;text-transform:none;color:#8E7037!important;font-weight:550!important}
.tp-lede{font-size:18px;line-height:1.65;color:#14161A;margin:0 0 20px;max-width:56ch}
.tp-body{font-size:15.5px;line-height:1.8;color:#4A4F55;margin:0 0 18px;max-width:60ch}
.tp-quote{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;line-height:1.5;font-style:italic;color:#14161A;border-left:2px solid #A8871C;padding:4px 0 4px 24px;margin:32px 0 0;max-width:54ch}

/* testimonials */
.tp-voices{max-width:1180px;margin:0 auto}
.tp-voices-head{text-align:center;max-width:60ch;margin:0 auto 48px}
.tp-voices-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.tp-voice{background:#FFFFFF;border:1px solid #E6E4DF;padding:32px 28px;display:flex;flex-direction:column}
.tp-voice-stars{color:#A8871C;font-size:13px;letter-spacing:3px;margin:0 0 16px}
.tp-voice-q{font-family:'Cormorant Garamond',Georgia,serif;font-size:20px;line-height:1.5;color:#14161A;margin:0 0 20px;flex:1 1 auto}
.tp-voice-n{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#6E7278;margin:0;padding-top:18px;border-top:1px solid #E6E4DF}
@media (max-width:1024px){
.tp-voices-grid{grid-template-columns:1fr;gap:18px}
.tp-voices-head{margin-bottom:32px}
.tp-lede{font-size:16.5px}
}

/* ================= About: Editorial Story & Milestones ================= */
.tp-story,
body.page-id-34 .tp-story {
  display: block !important;
  max-width: 760px !important;
  width: 100% !important;
  margin-inline: auto !important;
  padding: 0 !important;
  grid-template-columns: none !important;
}
.tp-story > *,
body.page-id-34 .tp-story > * {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  float: none !important;
  clear: both !important;
  grid-column: auto !important;
}
.tp-story-open,
body.page-id-34 .tp-story-open {
  margin-bottom: clamp(24px, 3vw, 34px) !important;
}
.tp-story-open .tp-eyebrow,
.tp-story-open .tp-h2,
body.page-id-34 .tp-story-open .tp-eyebrow,
body.page-id-34 .tp-story-open .tp-h2 {
  margin: 0 !important;
}
.tp-story-open .tp-h2,
body.page-id-34 .tp-story-open .tp-h2 {
  margin-top: 8px !important;
}
.tp-story-body,
body.page-id-34 .tp-story-body {
  display: block !important;
  width: 100% !important;
}
.tp-story-body p,
body.page-id-34 .tp-story-body p {
  font-size: 16.5px !important;
  line-height: 1.75 !important;
  color: #3F444A !important;
  margin: 0 0 20px !important;
  max-width: 68ch !important;
}
.tp-story-body .tp-lede,
body.page-id-34 .tp-story-body .tp-lede {
  font-size: clamp(19px, 2.2vw, 22px) !important;
  line-height: 1.55 !important;
  color: #14161A !important;
  margin-bottom: 26px !important;
}
.tp-pull,
body.page-id-34 .tp-pull {
  margin: 32px 0 !important;
  padding: 0 0 0 22px !important;
  border-left: 2px solid #A8871C !important;
  font-family: 'Poppins', sans-serif !important;
  font-size: clamp(22px, 2.8vw, 28px) !important;
  line-height: 1.35 !important;
  color: #14161A !important;
  font-style: italic !important;
}
.tp-topee-profile,
body.page-id-34 .tp-topee-profile {
  display: block !important;
  width: 100% !important;
  margin-top: clamp(40px, 5vw, 60px) !important;
  padding-top: clamp(28px, 3.5vw, 36px) !important;
  border-top: 1px solid #E6E4DF !important;
}
.tp-topee-profile .tp-timeline-h3,
body.page-id-34 .tp-topee-profile .tp-timeline-h3 {
  font-size: clamp(22px, 2.6vw, 28px) !important;
  margin: 8px 0 16px !important;
  color: #14161A !important;
}
.tp-topee-profile p,
body.page-id-34 .tp-topee-profile p {
  font-size: 15.5px !important;
  line-height: 1.7 !important;
  color: #4A4F55 !important;
  margin: 0 0 14px !important;
  max-width: 68ch !important;
}
.tp-timeline-section,
body.page-id-34 .tp-timeline-section {
  display: block !important;
  width: 100% !important;
  max-width: 760px !important;
  margin: clamp(48px, 6vw, 72px) auto 0 !important;
  padding-top: clamp(36px, 4.5vw, 48px) !important;
  border-top: 1px solid #E6E4DF !important;
  cursor: default !important;
  user-select: none !important;
}
.tp-timeline-header,
body.page-id-34 .tp-timeline-header {
  margin-bottom: clamp(28px, 4vw, 36px) !important;
  text-align: center !important;
}
.tp-timeline-header .tp-eyebrow,
body.page-id-34 .tp-timeline-header .tp-eyebrow {
  margin: 0 0 8px !important;
}
.tp-timeline-h3,
body.page-id-34 .tp-timeline-h3 {
  font-family: 'Poppins', sans-serif !important;
  font-size: clamp(28px, 3.5vw, 36px) !important;
  font-weight: 600 !important;
  line-height: 1.2 !important;
  color: #14161A !important;
  margin: 0 !important;
}
.tp-timeline-track,
body.page-id-34 .tp-timeline-track {
  position: relative !important;
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: clamp(14px, 2vw, 22px) !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
.tp-timeline-spine,
body.page-id-34 .tp-timeline-spine {
  position: absolute !important;
  top: 19px !important;
  left: 16.66% !important;
  right: 16.66% !important;
  height: 2px !important;
  background: linear-gradient(90deg, #8E7037 0%, #D4AF37 50%, #8E7037 100%) !important;
  z-index: 1 !important;
  display: block !important;
}
.tp-timeline-item,
body.page-id-34 .tp-timeline-item {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  z-index: 2 !important;
  height: 100% !important;
  min-width: 0 !important;
  width: 100% !important;
}
.tp-timeline-node-wrap,
body.page-id-34 .tp-timeline-node-wrap {
  width: 100% !important;
  display: flex !important;
  justify-content: center !important;
  margin-bottom: 20px !important;
}
.tp-timeline-node,
body.page-id-34 .tp-timeline-node {
  width: 40px !important;
  height: 40px !important;
  min-width: 40px !important;
  max-width: 40px !important;
  border-radius: 50% !important;
  background: #FFFFFF !important;
  border: 2px solid #8E7037 !important;
  box-shadow: 0 0 0 5px rgba(142, 112, 55, 0.12), 0 4px 12px rgba(20, 22, 26, 0.06) !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}
.tp-timeline-dot,
body.page-id-34 .tp-timeline-dot {
  width: 10px !important;
  height: 10px !important;
  border-radius: 50% !important;
  background: #8E7037 !important;
}
.tp-timeline-card,
body.page-id-34 .tp-timeline-card {
  width: 100% !important;
  max-width: 100% !important;
  background: #FAFAF8 !important;
  border: 1px solid #E6E4DF !important;
  border-radius: 18px !important;
  padding: 22px 14px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: space-between !important;
  flex: 1 !important;
  box-shadow: 0 2px 12px rgba(20, 22, 26, 0.03) !important;
  box-sizing: border-box !important;
  text-align: center !important;
  min-width: 0 !important;
}
.tp-timeline-card-top,
body.page-id-34 .tp-timeline-card-top {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-bottom: 16px !important;
}
.tp-timeline-badge-pill,
body.page-id-34 .tp-timeline-badge-pill {
  display: inline-flex !important;
  align-items: center !important;
  padding: 4px 9px !important;
  background: #FFFFFF !important;
  border: 1px solid #E6E4DF !important;
  border-radius: 999px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  color: #8E7037 !important;
}
.tp-timeline-tag,
body.page-id-34 .tp-timeline-tag {
  font-size: 9.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.14em !important;
  text-transform: uppercase !important;
  color: #8A8F96 !important;
}
.tp-timeline-graphic,
body.page-id-34 .tp-timeline-graphic {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 auto 16px !important;
  width: 64px !important;
  height: 64px !important;
  max-width: 64px !important;
  max-height: 64px !important;
  min-width: 64px !important;
  min-height: 64px !important;
  border-radius: 16px !important;
  background: #FFFFFF !important;
  border: 1px solid #EDEAE2 !important;
  box-shadow: 0 3px 10px rgba(20, 22, 26, 0.03) !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}
.tp-timeline-icon,
body.page-id-34 .tp-timeline-icon,
.tp-timeline-graphic svg,
body.page-id-34 .tp-timeline-graphic svg {
  width: 34px !important;
  height: 34px !important;
  max-width: 34px !important;
  max-height: 34px !important;
  display: block !important;
  margin: 0 auto !important;
  flex-shrink: 0 !important;
}
.tp-timeline-stat-wrap,
body.page-id-34 .tp-timeline-stat-wrap {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  width: 120px !important;
  min-height: 72px !important;
  padding: 10px 18px !important;
  box-sizing: border-box !important;
  border: 1px solid #EDEAE2 !important;
  border-radius: 14px !important;
  background: #FFFFFF !important;
  box-shadow: 0 3px 10px rgba(20,22,26,.05) !important;
  overflow: visible !important;
}
.tp-timeline-stat-num,
body.page-id-34 .tp-timeline-stat-num {
  font-family: 'Poppins', sans-serif !important;
  font-size: 26px !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  color: #8E7037 !important;
  letter-spacing: -0.01em !important;
}
/* The milestone graphic is wider than the icon slot. Without resizing its
   parent, the 120px stat card is clipped back to the inherited 64px square. */
.tp-timeline-graphic:has(.tp-timeline-stat-wrap),
body.page-id-34 .tp-timeline-graphic:has(.tp-timeline-stat-wrap){
 width:120px!important;
 height:72px!important;
 min-width:120px!important;
 min-height:72px!important;
 max-width:120px!important;
 max-height:72px!important;
 overflow:visible!important;
}
.tp-timeline-content,
body.page-id-34 .tp-timeline-content {
  flex-grow: 1 !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
}
.tp-timeline-title,
body.page-id-34 .tp-timeline-title {
  font-family: 'Poppins', sans-serif !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  color: #14161A !important;
  margin: 0 0 6px !important;
  line-height: 1.3 !important;
}
.tp-timeline-desc,
body.page-id-34 .tp-timeline-desc {
  font-size: 12.5px !important;
  line-height: 1.5 !important;
  color: #5A6065 !important;
  margin: 0 !important;
}

@media (max-width: 768px) {
  .tp-timeline-header,
  body.page-id-34 .tp-timeline-header { text-align: left !important; }
  .tp-timeline-track,
  body.page-id-34 .tp-timeline-track { grid-template-columns: 1fr !important; gap: 20px !important; padding-left: 36px !important; }
  .tp-timeline-spine,
  body.page-id-34 .tp-timeline-spine { display: none !important; }
  .tp-timeline-item,
  body.page-id-34 .tp-timeline-item { flex-direction: row !important; align-items: flex-start !important; }
  .tp-timeline-item:not(:last-child)::after,
  body.page-id-34 .tp-timeline-item:not(:last-child)::after {
    content: '' !important;
    position: absolute !important;
    top: 36px !important;
    bottom: -20px !important;
    left: -19px !important;
    width: 2px !important;
    background: linear-gradient(180deg, #8E7037 0%, #D4AF37 50%, #8E7037 100%) !important;
    z-index: 1 !important;
  }
  .tp-timeline-node-wrap,
  body.page-id-34 .tp-timeline-node-wrap {
    width: auto !important;
    margin-bottom: 0 !important;
    margin-left: -36px !important;
    margin-right: 18px !important;
    padding-top: 18px !important;
  }
  .tp-timeline-node,
  body.page-id-34 .tp-timeline-node { width: 36px !important; height: 36px !important; }
  .tp-timeline-dot,
  body.page-id-34 .tp-timeline-dot { width: 9px !important; height: 9px !important; }
  .tp-timeline-card,
  body.page-id-34 .tp-timeline-card { padding: 18px 16px !important; text-align: left !important; flex-direction: column !important; }
  .tp-timeline-card-top,
  body.page-id-34 .tp-timeline-card-top { margin-bottom: 12px !important; }
  .tp-timeline-graphic,
  body.page-id-34 .tp-timeline-graphic { margin: 0 0 14px 0 !important; width: 52px !important; height: 52px !important; }
  .tp-timeline-stat-num,
  body.page-id-34 .tp-timeline-stat-num { font-size: 22px !important; }
  .tp-timeline-content,
  body.page-id-34 .tp-timeline-content { text-align: left !important; }
}

.tp-story-sign,
body.page-id-34 .tp-story-sign {
  margin-top: clamp(40px, 5vw, 60px) !important;
  padding: clamp(26px, 3.5vw, 36px) !important;
  border: 1px solid #E6E4DF !important;
  border-radius: 16px !important;
  background: #FAFAF8 !important;
}
.tp-story-sign p,
body.page-id-34 .tp-story-sign p {
  margin: 0 0 20px !important;
  font-size: 15px !important;
  line-height: 1.7 !important;
  color: #4A4F55 !important;
  max-width: 60ch !important;
}
.tp-story-actions,
body.page-id-34 .tp-story-actions {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 12px !important;
  align-items: center !important;
  justify-content: center !important;
}
.tp-story-actions > a,
body.page-id-34 .tp-story-actions > a {
  min-height: 50px !important;
  height: 50px !important;
  margin: 0 !important;
  padding: 14px 28px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* ================= How It Works: Interactive Timeline ================= */
.tp-proc,
body.page-id-36 .tp-proc { max-width: 1180px !important; margin: 0 auto !important; padding: 0 !important; }

.tp-proc-split,
body.page-id-36 .tp-proc-split {
  display: grid !important;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr) !important;
  gap: clamp(32px, 5vw, 64px) !important;
  align-items: start !important;
  margin-top: clamp(32px, 4vw, 48px) !important;
}
.tp-steps,
body.page-id-36 .tp-steps,
.tp-proc-split .tp-steps {
  display: block !important;
  list-style: none !important;
  margin: 0 !important;
  padding: 0 !important;
  position: relative !important;
  grid-template-columns: none !important;
}
.tp-steps:before {
  content: "" !important;
  position: absolute !important;
  left: 19px !important;
  top: 14px !important;
  bottom: 14px !important;
  width: 1px !important;
  background: #E6E4DF !important;
}
.tp-stepc,
body.page-id-36 .tp-stepc {
  position: relative !important;
  display: grid !important;
  grid-template-columns: 40px minmax(0, 1fr) !important;
  gap: 20px !important;
  padding-bottom: clamp(32px, 4vw, 48px) !important;
  border: 0 !important;
  cursor: pointer !important;
}
.tp-stepc:last-child { padding-bottom: 0 !important; }
.tp-stepn,
body.page-id-36 .tp-stepn {
  position: relative !important;
  z-index: 1 !important;
  width: 40px !important;
  height: 40px !important;
  min-width: 40px !important;
  max-width: 40px !important;
  aspect-ratio: 1/1 !important;
  border-radius: 50% !important;
  align-self: start !important;
  justify-self: start !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  background: #FFFFFF !important;
  border: 1px solid #E6E4DF !important;
  font-family: 'Poppins', sans-serif !important;
  font-weight: 700 !important;
  font-size: 12px !important;
  font-variant-numeric: lining-nums tabular-nums !important;
  color: #14161A !important;
  letter-spacing: -0.01em !important;
  transition: all 0.28s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
.tp-stepc > div { min-width: 0 !important; }
.tp-stepc:hover .tp-stepn { border-color: #A8871C !important; color: #856812 !important; }
.tp-steph { margin: 8px 0 8px !important; font-size: clamp(19px, 2.2vw, 23px) !important; line-height: 1.25 !important; color: #14161A !important; transition: color 0.25s ease !important; }
.tp-stept { margin: 0 0 12px !important; font-size: 15px !important; line-height: 1.7 !important; color: #4A4F55 !important; max-width: 62ch !important; }
.tp-stepm { margin: 0 !important; display: inline-flex !important; align-items: center !important; padding: 6px 12px !important; border-radius: 999px !important; background: #FAFAF8 !important; border: 1px solid #E6E4DF !important; font-size: 10.5px !important; letter-spacing: 0.12em !important; text-transform: uppercase !important; color: #5A5F66 !important; transition: all 0.25s ease !important; }
.tp-proc-cta { display: flex !important; flex-wrap: wrap !important; align-items: center !important; justify-content: space-between !important; gap: 18px !important; margin-top: clamp(40px, 5vw, 60px) !important; padding-top: clamp(28px, 3.5vw, 36px) !important; border-top: 1px solid #E6E4DF !important; }
.tp-proc-cta p { font-size: 15px !important; color: #4A4F55 !important; }

@media (min-width: 1025px) {
  .tp-stepc { min-height: 360px !important; padding-bottom: 70px !important; opacity: 0.38 !important; transform: none !important; transition: opacity 0.35s cubic-bezier(0.16, 1, 0.3, 1), transform 0.35s cubic-bezier(0.16, 1, 0.3, 1) !important; }
  .tp-stepc:hover { opacity: 0.75 !important; }
  .tp-stepc.is-current { opacity: 1 !important; transform: translateX(4px) !important; }
  .tp-stepc.is-current .tp-stepn { background: #14161A !important; color: #FFFFFF !important; border-color: #A8871C !important; box-shadow: 0 0 0 4px rgba(168, 135, 28, 0.2), 0 4px 12px rgba(0, 0, 0, 0.12) !important; transform: scale(1.08) !important; }
  .tp-stepc.is-current .tp-steph { color: #14161A !important; font-weight: 500 !important; }
  .tp-stepc.is-current .tp-stepm { border-color: rgba(168, 135, 28, 0.35) !important; background: rgba(168, 135, 28, 0.06) !important; color: #856812 !important; }
  .tp-step-shot,
  body.page-id-36 .tp-step-shot { display: none !important; }
}

.tp-proc-media,
body.page-id-36 .tp-proc-media { position: sticky !important; top: calc(var(--tp-header-h, 76px) + 32px) !important; display: block !important; }
.tp-proc-stage,
body.page-id-36 .tp-proc-stage { position: relative !important; width: 100% !important; aspect-ratio: 4/5 !important; border-radius: 16px !important; overflow: hidden !important; background: #F3F1EC !important; border: 1px solid #E6E4DF !important; }
.tp-proc-stage img,
body.page-id-36 .tp-proc-stage img { position: absolute !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; inset: 0 !important; width: 100% !important; height: 100% !important; object-fit: cover !important; display: block !important; opacity: 0 !important; transform: scale(1.025) !important; pointer-events: none !important; transition: opacity 0.32s cubic-bezier(0.16, 1, 0.3, 1), transform 0.4s cubic-bezier(0.16, 1, 0.3, 1) !important; }
.tp-proc-stage img.is-on,
body.page-id-36 .tp-proc-stage img.is-on { opacity: 1 !important; transform: none !important; pointer-events: auto !important; }
.tp-proc-cap,
body.page-id-36 .tp-proc-cap { margin: 12px 0 0 !important; font-size: 12.5px !important; line-height: 1.5 !important; color: #5A6065 !important; min-height: 19px !important; transition: opacity 0.25s ease !important; }

.tp-step-shot { margin: 0 0 14px !important; border-radius: 12px !important; overflow: hidden !important; background: #F3F1EC !important; border: 1px solid #E6E4DF !important; aspect-ratio: 4/3 !important; }
.tp-step-shot img { width: 100% !important; height: 100% !important; object-fit: cover !important; object-position: 50% 38% !important; display: block !important; }
@media (max-width: 600px) { .tp-step-shot { aspect-ratio: 3/4 !important; } }

@media (max-width: 1024px) {
  .tp-proc-split,
  body.page-id-36 .tp-proc-split { display: block !important; grid-template-columns: none !important; gap: 0 !important; }
  .tp-proc-media,
  body.page-id-36 .tp-proc-media { display: none !important; }
  .tp-step-shot,
  body.page-id-36 .tp-step-shot { display: block !important; }
}

/* ================= cost comparison ================= */
.tp-cost{max-width:1180px;margin:0 auto}
.tp-cost-head{text-align:center;max-width:62ch;margin:0 auto 52px}
.tp-cost-eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:#6E7278;margin:0 0 14px}
.tp-cost-h{font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(28px,3.6vw,46px);line-height:1.12;text-transform:uppercase;letter-spacing:.02em;margin:0 0 16px;color:#14161A}
.tp-cost-h em{font-style:normal!important;font-family:inherit!important;text-transform:none;color:#8E7037!important;font-weight:550!important}
.tp-cost-sub{font-size:15px;line-height:1.7;color:#4A4F55;margin:0}
.tp-cost-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:stretch}
.tp-cost-card{display:flex;flex-direction:column;border:1px solid #E6E4DF;background:#FAFAF8;padding:32px 28px}
.tp-cost-card--ours{background:#14161A;border-color:#14161A}
/* Primary action on a dark surface: same global button geometry, inverted fill. */
html body .tp-cost-card.tp-cost-card--ours a.tp-cost-card-cta.tp-cost-card-cta{
 position:relative!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;
 align-self:flex-start!important;width:auto!important;min-height:52px!important;height:auto!important;
 margin:22px 0 0!important;padding:0 24px!important;box-sizing:border-box!important;
 border:1px solid #A8871C!important;border-radius:14px!important;
 background:#A8871C!important;background-image:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0) 58%)!important;
 color:#14161A!important;font-family:'Poppins',system-ui,-apple-system,sans-serif!important;
 font-size:11px!important;font-weight:600!important;line-height:1.2!important;letter-spacing:.14em!important;
 text-transform:uppercase!important;text-align:center!important;text-decoration:none!important;
 box-shadow:0 1px 0 rgba(255,255,255,.22) inset,0 8px 20px -10px rgba(0,0,0,.7)!important;
 transition:transform .18s ease,filter .18s ease,box-shadow .18s ease!important;cursor:pointer!important;
}
html body .tp-cost-card--ours .tp-cost-card-cta:hover{transform:translateY(-1px)!important;filter:brightness(1.12)}
html body .tp-cost-card--ours .tp-cost-card-cta:active{transform:translateY(0)!important;filter:brightness(.96)}
html body .tp-cost-card--ours .tp-cost-card-cta:focus-visible{outline:2px solid #FFFFFF!important;outline-offset:3px!important}
.tp-cost-tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:6px 12px;border-radius:4px;margin-bottom:14px;align-self:flex-start}
html body .tp-cost-tag--other{background:#FEECEB!important;color:#C53030!important;border:1px solid #FCD2D0!important}
html body .tp-cost-tag--topee{background:#8E7037!important;color:#FFFFFF!important;border:1px solid #A8871C!important}
.tp-cost-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#6E7278;margin:0 0 14px}
.tp-cost-card--ours .tp-cost-label{color:#A8871C}
.tp-cost-title{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;line-height:1.2;margin:0 0 18px;color:#14161A;font-weight:400}
.tp-cost-card--ours .tp-cost-title{color:#F6F4EF}
.tp-cost-fig{font-size:19px;font-weight:600;color:#14161A;margin:0 0 20px;padding-bottom:20px;border-bottom:1px solid #E6E4DF;font-variant-numeric:tabular-nums;line-height:1.3}
.tp-cost-card--ours .tp-cost-fig{color:#A8871C;border-bottom-color:#333}
.tp-cost-fig span{display:block;font-size:12px;font-weight:400;color:#6E7278;letter-spacing:.02em;margin-top:6px}
.tp-cost-list{list-style:none;padding:0;margin:0;font-size:14px;line-height:1.6;color:#4A4F55;display:flex;flex-direction:column;gap:12px}
.tp-cost-card--ours .tp-cost-list{color:#D8D4C8}
.tp-cost-list li{padding-left:26px;position:relative}
.tp-cost-list li:before{display:none!important}
html body .tp-cost-icon-cross{position:absolute!important;left:0!important;top:3px!important;display:inline-block!important;color:#D93829!important;font-size:16px!important;font-weight:700!important;line-height:1!important}
html body .tp-cost-icon-check{position:absolute!important;left:0!important;top:3px!important;display:inline-block!important;color:#3FA66A!important;font-size:16px!important;font-weight:700!important;line-height:1!important}
.tp-cost-verdict{margin-top:auto;padding-top:16px;border-top:1px dashed #E0DED8;font-size:13px;line-height:1.45;font-weight:600}
html body .tp-cost-verdict--warn{color:#B91C1C!important;display:flex;align-items:flex-start;gap:7px}
html body .tp-cost-card--ours .tp-cost-verdict--win{color:#66C68A!important;border-top-color:#34383C;display:flex;align-items:flex-start;gap:7px}
.tp-cost-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;margin-top:44px;padding-top:32px;border-top:1px solid #E6E4DF}
.tp-cost-foot-p{font-size:15px;line-height:1.7;color:#4A4F55;margin:0;max-width:60ch}
.tp-cost-foot-p strong{color:#14161A}
.tp-cost-cta{flex:0 0 auto;display:inline-block;padding:16px 32px;background:#14161A;color:#F6F4EF;font-size:11px;letter-spacing:.18em;text-transform:uppercase;text-decoration:none;transition:background .2s ease,color .2s ease}
.tp-cost-cta:hover{background:#A8871C;color:#14161A}
@media (max-width:1024px){
html body .elementor-element-4217308,html body .elementor-element-18e1699{padding:76px 32px!important}
.tp-cost-grid{grid-template-columns:1fr;gap:18px}
.tp-cost-head{margin-bottom:36px}
.tp-cost-card{padding:26px 24px}
.tp-cost-foot{margin-top:32px;padding-top:26px}
}
@media (max-width:600px){
html body .elementor-element-4217308,html body .elementor-element-18e1699{padding:56px 22px!important}
.tp-cost-foot{flex-direction:column;align-items:stretch}
.tp-cost-cta{text-align:center}
html body .tp-cost-card--ours{padding:28px 24px!important}
html body .tp-cost-card--ours .tp-cost-list{gap:14px!important}
html body .tp-cost-card--ours .tp-cost-list li{line-height:1.55!important}
html body .tp-cost-card--ours .tp-cost-verdict{margin:20px 0 0!important;padding-top:18px!important}
html body .tp-cost-card.tp-cost-card--ours .tp-cost-card-cta{width:100%!important;margin-top:20px!important}
}