.elementor-kit-17{--e-global-color-primary:#2E5E6E;--e-global-color-secondary:#244956;--e-global-color-text:#23211D;--e-global-color-accent:#C9962E;--e-global-typography-primary-font-family:"Bodoni Moda";--e-global-typography-primary-font-size:68px;--e-global-typography-primary-font-weight:800;--e-global-typography-primary-line-height:0.96em;--e-global-typography-secondary-font-family:"Bodoni Moda";--e-global-typography-secondary-font-size:44px;--e-global-typography-secondary-font-weight:800;--e-global-typography-secondary-line-height:1em;--e-global-typography-text-font-family:"Space Grotesk";--e-global-typography-text-font-size:17px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.6em;--e-global-typography-accent-font-family:"Space Grotesk";--e-global-typography-accent-font-size:14px;--e-global-typography-accent-font-weight:700;--e-global-typography-accent-text-transform:uppercase;--e-global-typography-accent-letter-spacing:0.1em;background-color:#101014;font-family:"Space Grotesk", Sans-serif;font-size:17px;font-weight:400;line-height:1.6em;}.elementor-kit-17 button,.elementor-kit-17 input[type="button"],.elementor-kit-17 input[type="submit"],.elementor-kit-17 .elementor-button{background-color:#2E5E6E;font-family:"Space Grotesk", Sans-serif;font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:0.1em;color:#FFFFFF;border-radius:0px 0px 0px 0px;padding:17px 28px 17px 28px;}.elementor-kit-17 button:hover,.elementor-kit-17 button:focus,.elementor-kit-17 input[type="button"]:hover,.elementor-kit-17 input[type="button"]:focus,.elementor-kit-17 input[type="submit"]:hover,.elementor-kit-17 input[type="submit"]:focus,.elementor-kit-17 .elementor-button:hover,.elementor-kit-17 .elementor-button:focus{background-color:#4E8BA0;color:#FFFFFF;}.elementor-kit-17 e-page-transition{background-color:#FFBC7D;}.elementor-kit-17 input:not([type="button"]):not([type="submit"]),.elementor-kit-17 textarea,.elementor-kit-17 .elementor-field-textual{background-color:#FFFFFF;border-style:solid;border-width:1px 1px 1px 1px;border-color:#CFCABE;padding:14px 16px 14px 16px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1320px;}.e-con{--container-max-width:1320px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-17{font-size:16.5px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --intact-border-on-dark:#F0EDE638; --intact-ink:#101014; --intact-ink-soft:#1B1B22; --intact-paper:#EFECE5; --intact-paper-deep:#E7E2D6; --intact-gray:#DCD9D2; --intact-teal:#2E5E6E; --intact-teal-bright:#4E8BA0; --intact-teal-deep:#244956; --intact-gold:#C9962E; --intact-gold-deep:#8A6414; --intact-violet:#75629B; --intact-text:#23211D; --intact-muted:#5D5952; --intact-text-on-dark:#F0EDE6; --intact-muted-on-dark:#A6A29B; --intact-border:#CFCABE; --intact-font-display:Bodoni Moda; --intact-font-grotesk:Space Grotesk; --intact-width-site:1320px; --intact-width-reading:720px; --intact-space-section:clamp(80px, 9vw, 150px); --intact-space-section-tight:clamp(56px, 6vw, 96px); --intact-gutter:clamp(20px, 3vw, 48px); --intact-gap-major:clamp(32px, 6vw, 88px); --intact-gap:32px; --intact-radius:0px; --intact-type-hero:min(132px, 9.2vw); --intact-type-hero-mobile:21vw; }
/* Start custom CSS *//* ============================================================
   INTACT Kit custom CSS - blocks CSS-01..CSS-04
   Registered in CUSTOM-CODE-REGISTER.md. Source of truth: this file
   in the project repository; deployed to Elementor Kit 17 custom_css.
   Tokens are Elementor V4 Variables emitted as :root custom
   properties (--intact-*). Never hard-code a colour that has a token.
   Blocks CSS-05..CSS-11 are added in later phases per the register.
   ============================================================ */

/* ---------- CSS-01: Base and reset ---------- */
body { font-family: var(--intact-font-grotesk), "Helvetica Neue", sans-serif; }
img { display: block; max-width: 100%; }
p { margin: 0 0 1.15em; }
/* Scoped away from the editor: inside the canvas every paragraph is an
   only child of its own wrapper, so this would zero the spacing on all of
   them and make copy look like it had none. */
body:not(.elementor-editor-active) p:last-child { margin-bottom: 0; }
ul { margin: 0; padding: 0; list-style: none; }
figure { margin: 0; }
section[id], div[id] { scroll-margin-top: 96px; }
.intact-skip-link { position: absolute; top: -60px; left: 16px; z-index: 400; background: var(--intact-paper); color: var(--intact-ink); padding: 12px 18px; font-weight: 700; text-decoration: none; transition: top 0.15s ease; }
.intact-skip-link:focus { top: 12px; }
:focus-visible { outline: 2px solid var(--intact-paper); outline-offset: 2px; box-shadow: 0 0 0 5px rgba(16, 16, 20, 0.92); }
.intact-btn:focus-visible, .intact-header-cta:focus-visible { outline: none; box-shadow: inset 0 0 0 3px currentColor; }
.intact-input:focus-visible, .intact-select:focus-visible, .intact-textarea:focus-visible { outline: 2px solid var(--intact-teal); outline-offset: 0; border-color: var(--intact-teal); box-shadow: none; }
.intact-title { align-items: baseline; }
.intact-press-link { align-items: baseline; }
.intact-footer-top { align-items: baseline; }
.intact-video-caption { align-items: baseline; }
.intact-textarea { resize: vertical; }
.intact-preview-tag { vertical-align: middle; }
.intact-qa:last-of-type { border-bottom: 1px solid var(--intact-border); }
.intact-h2 em, .intact-h2-utility em { font-style: italic; color: var(--intact-teal); }
.intact-h2-gold-em em { color: var(--intact-gold); }
.intact-h1-page em, .intact-h1-bleed em { font-style: italic; color: var(--intact-teal-bright); }
.intact-tagline em { font-style: italic; color: var(--intact-gold); }
.intact-support strong { color: var(--intact-text-on-dark); font-weight: 700; }
.intact-check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--intact-teal); flex: none; }

/* Shared hover/interaction transitions (V4 transition prop has no custom
   easing, so all transitions live here, zeroed by CSS-03 under reduced motion) */
.intact-btn, .intact-header-cta, .intact-play, .intact-press-link, .intact-path, .intact-qa-q, .intact-header-link, .intact-footer-nav a, .intact-input, .intact-select, .intact-textarea { transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease; }
.intact-path { transition: background-color 0.25s ease; }
.intact-qa-mark, .intact-step-diamond { transition: transform 0.3s ease, background-color 0.3s ease; }
.intact-press-link-arrow, .intact-path-arrow { display: inline-block; transition: transform 0.2s ease; }
.intact-play-diamond, .intact-play-tri { transition: transform 0.2s ease; }
.intact-press-link:hover .intact-press-link-arrow { transform: translateX(6px); }
.intact-path:hover .intact-path-arrow { transform: translateX(8px); }
.intact-play:hover .intact-play-diamond { transform: rotate(90deg) scale(1.06); }
.intact-play:hover .intact-play-tri { transform: rotate(-90deg); }
.intact-seam-link:hover { background-size: 100% 3px; }
.intact-path-fracture { pointer-events: none; }

/* ---------- CSS-02: intact-js motion gate ----------
   Initial fractured states and assembly transitions. The intact-js class
   is added to <html> by the ASE behaviour layer ONLY when
   prefers-reduced-motion is not set. Without it every rule here is inert
   and each page renders fully assembled. Nothing is hidden outside this scope. */
html.intact-js .intact-title-half, html.intact-js .intact-fracture { transition: transform 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.35s, opacity 0.7s ease 1.1s, width 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.35s, margin 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.35s; }
html.intact-js .intact-hero:not(.intact-set) .intact-title-in { transform: translateX(-34px) rotate(-1.6deg); }
html.intact-js .intact-hero:not(.intact-set) .intact-title-tact { transform: translateX(34px) rotate(1.1deg); }
html.intact-js .intact-hero:not(.intact-set) .intact-fracture { opacity: 1; width: 3px; margin: 6px 10px 2px; }
html.intact-js .intact-shard-unit { transition: transform 1.2s cubic-bezier(0.2, 0.8, 0.2, 1); }
html.intact-js .intact-u1 { transition-delay: 0.25s; }
html.intact-js .intact-u2 { transition-delay: 0.4s; }
html.intact-js .intact-u3 { transition-delay: 0.55s; }
html.intact-js .intact-u4 { transition-delay: 0.7s; }
html.intact-js .intact-u5 { transition-delay: 0.85s; }
html.intact-js .intact-hero:not(.intact-set) .intact-u1 { transform: translate(-44px, -34px) rotate(-5deg); }
html.intact-js .intact-hero:not(.intact-set) .intact-u2 { transform: translate(52px, -46px) rotate(4deg); }
html.intact-js .intact-hero:not(.intact-set) .intact-u3 { transform: translate(-60px, 26px) rotate(-3deg); }
html.intact-js .intact-hero:not(.intact-set) .intact-u4 { transform: translate(48px, 38px) rotate(2.5deg); }
html.intact-js .intact-hero:not(.intact-set) .intact-u5 { transform: translate(6px, 64px) rotate(1.5deg); }
html.intact-js .intact-statement-piece { transition: transform 1s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.8s ease; }
html.intact-js .intact-statement:not(.intact-set) .intact-sp1 { transform: translateX(-70px) rotate(-2deg); opacity: 0.28; }
html.intact-js .intact-statement:not(.intact-set) .intact-sp2 { transform: translateX(84px) rotate(1.4deg); opacity: 0.28; }
html.intact-js .intact-statement:not(.intact-set) .intact-sp3 { transform: translateX(-48px) rotate(-1deg); opacity: 0.28; }
.intact-statement.intact-set .intact-sp2 { transition-delay: 0.12s; }
.intact-statement.intact-set .intact-sp3 { transition-delay: 0.24s; }
@media (max-width: 767px) {
  html.intact-js .intact-hero:not(.intact-set) .intact-title-in { transform: translateX(-16px) rotate(-1.6deg); }
  html.intact-js .intact-hero:not(.intact-set) .intact-title-tact { transform: translateX(16px) rotate(1.1deg); }
  html.intact-js .intact-hero:not(.intact-set) .intact-u1 { transform: translate(-18px, -14px) rotate(-5deg); }
  html.intact-js .intact-hero:not(.intact-set) .intact-u2 { transform: translate(20px, -18px) rotate(4deg); }
  html.intact-js .intact-hero:not(.intact-set) .intact-u3 { transform: translate(-22px, 10px) rotate(-3deg); }
  html.intact-js .intact-hero:not(.intact-set) .intact-u4 { transform: translate(18px, 14px) rotate(2.5deg); }
  html.intact-js .intact-hero:not(.intact-set) .intact-u5 { transform: translate(2px, 24px) rotate(1.5deg); }
  html.intact-js .intact-statement:not(.intact-set) .intact-sp1 { transform: translateX(-26px) rotate(-2deg); }
  html.intact-js .intact-statement:not(.intact-set) .intact-sp2 { transform: translateX(30px) rotate(1.4deg); }
  html.intact-js .intact-statement:not(.intact-set) .intact-sp3 { transform: translateX(-18px) rotate(-1deg); }
}

/* ---------- CSS-03: Reduced-motion guard ----------
   Belt-and-braces beside the gate: zero movement for reduced-motion visitors. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* ---------- CSS-04: Seam pseudo-elements and decorations ----------
   Decorative rules the V4 Style Schema cannot express (no pseudo-elements
   in Global Classes). All colours reference the token custom properties. */
.intact-eyebrow::before { content: ""; width: 34px; height: 3px; background: linear-gradient(90deg, var(--intact-teal), var(--intact-violet)); transform: skewX(-18deg); flex: none; }
.intact-seam-rail::before { content: ""; position: absolute; left: 0; top: 3px; bottom: 3px; width: 3px; background: var(--intact-teal); transform: skewX(-18deg); }
.intact-seam-line::after { content: ""; position: absolute; left: 2px; bottom: 0; width: 120px; height: 3px; transform: skewX(-18deg); background: var(--intact-teal); }
.intact-seam-line-2::after { background: var(--intact-gold); left: auto; right: 2px; }
.intact-seam-line-3::after { background: var(--intact-violet); }
@media (max-width: 767px) {
  .intact-seam-line-2::after { left: 2px; right: auto; }
}
.intact-portrait::after { content: ""; position: absolute; top: -12px; right: 18%; width: 3px; height: 34%; background: linear-gradient(170deg, var(--intact-gold), var(--intact-violet)); transform: rotate(14deg); }
.intact-quote::before { content: ""; position: absolute; left: 0; top: 4px; bottom: 4px; width: 3px; background: linear-gradient(170deg, var(--intact-teal), var(--intact-violet)); transform: skewX(-18deg); }
.intact-form-success::before { content: ""; position: absolute; left: 0; top: 2px; bottom: 2px; width: 3px; background: var(--intact-teal); transform: skewX(-18deg); }
.intact-copyblock::before { content: ""; position: absolute; left: 0; top: 3px; bottom: 3px; width: 3px; background: var(--intact-border); transform: skewX(-18deg); }
.intact-seam-link { color: inherit; background-image: linear-gradient(90deg, var(--intact-teal), var(--intact-violet)); background-repeat: no-repeat; background-size: 100% 2px; background-position: 0 100%; }


/* ---------- Page-build addendum (Phase 5) ----------
   Split-title spans carry ids (inline HTML in heading content cannot carry
   classes), contextual seam links, and container-scoped rules. */
#intact-title-in, #intact-title-tact { display: inline-block; }
#intact-fracture-bar { align-self: stretch; width: 0; opacity: 0; margin: 0; background: linear-gradient(170deg, var(--intact-gold), var(--intact-violet)); }
html.intact-js #intact-title-in, html.intact-js #intact-title-tact, html.intact-js #intact-fracture-bar { transition: transform 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.35s, opacity 0.7s ease 1.1s, width 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.35s, margin 1.1s cubic-bezier(0.2, 0.8, 0.2, 1) 0.35s; }
html.intact-js .intact-hero:not(.intact-set) #intact-title-in { transform: translateX(-34px) rotate(-1.6deg); }
html.intact-js .intact-hero:not(.intact-set) #intact-title-tact { transform: translateX(34px) rotate(1.1deg); }
html.intact-js .intact-hero:not(.intact-set) #intact-fracture-bar { opacity: 1; width: 3px; margin: 6px 10px 2px; }
@media (max-width: 767px) {
  html.intact-js .intact-hero:not(.intact-set) #intact-title-in { transform: translateX(-16px) rotate(-1.6deg); }
  html.intact-js .intact-hero:not(.intact-set) #intact-title-tact { transform: translateX(16px) rotate(1.1deg); }
}
.intact-room p { font-size: 17px; color: var(--intact-muted); }
.intact-qa-a a, .intact-quote-footer a { color: inherit; font-weight: 500; text-decoration: none; background-image: linear-gradient(90deg, var(--intact-teal), var(--intact-violet)); background-repeat: no-repeat; background-size: 100% 2px; background-position: 0 100%; padding-bottom: 3px; }
.intact-qa-a a:hover, .intact-quote-footer a:hover { background-size: 100% 3px; }
.intact-path-line > span { display: inline-block; transition: transform 0.2s ease; }
.intact-path:hover .intact-path-line > span { transform: translateX(8px); }
@media (max-width: 767px) {
  .intact-hero-ctas a { width: 100%; text-align: center; }
}


/* Class-stacking overrides: modifier classes stacked on a base class lose
   the emission-order race, so these compound .elementor-kit-17s settle the ties. */
.elementor .intact-statement.intact-statement-ink { color: var(--intact-ink); }
.elementor .intact-statement-accent.intact-accent-teal { color: var(--intact-teal); }
.elementor .intact-seam-line.intact-seam-line-2 { margin: 0 0 44px auto; text-align: right; }
.elementor .intact-seam-line.intact-seam-line-3 { margin: 0 0 0 120px; }
@media (max-width: 1024px) {
  .elementor .intact-seam-line.intact-seam-line-3 { margin-left: 60px; }
}
@media (max-width: 767px) {
  .elementor .intact-seam-line.intact-seam-line-2 { margin: 0 0 34px 0; text-align: left; }
  .elementor .intact-seam-line.intact-seam-line-3 { margin-left: 0; }
}


/* Booking and Media page contextual rules (mirror the static's scoped rules) */
.intact-bookhero .intact-support { max-width: 520px; }
.intact-pad-mediahero .intact-support { max-width: 560px; }
.intact-snapshot-grid .intact-facts-list { border-top: none; }
.intact-edge-media .intact-snapshot-grid { margin-top: 40px; }
.intact-press-section .intact-proof-grid { margin-top: 40px; margin-block-end: 0; }
.intact-press-section .intact-press-links { margin-top: 56px; }
.intact-heading-row + .intact-section-sub, .intact-heading-row + .intact-faq-sub { margin-top: 16px; }
.intact-fact-value.intact-fs-17 { font-size: 17px; }
.intact-dl-thumb.intact-dl-thumb-contain { object-fit: contain; background: #FFFFFF; }
.intact-p-contact a { color: inherit; font-weight: 500; text-decoration: none; background-image: linear-gradient(90deg, var(--intact-teal), var(--intact-violet)); background-repeat: no-repeat; background-size: 100% 2px; background-position: 0 100%; padding-bottom: 3px; }
.intact-p-contact a:hover { background-size: 100% 3px; }


/* Form-phase rules: required marker, on-light ghost buttons, stepper heading */
.intact-label em { font-style: normal; color: var(--intact-teal); font-weight: 700; margin-left: 2px; }
.intact-btn-ghost.intact-btn-ghost-ink { color: var(--intact-text); box-shadow: inset 0 0 0 1.5px var(--intact-text); }
.intact-btn-ghost.intact-btn-ghost-ink:hover { background: rgba(35, 33, 29, 0.08); }
.intact-step-panel-heading { margin-bottom: 18px; }
.intact-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }


/* ---------- CSS-07: Video mask transition ---------- */
.intact-video-shard { transition: clip-path 0.9s cubic-bezier(0.3, 0, 0.2, 1); }
.intact-video-shard.intact-open { clip-path: polygon(0% 0%, 100% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 100%); }

/* ---------- CSS-08: Stepper marker states ---------- */
.intact-step-marker[aria-current="step"] { color: var(--intact-text-on-dark); }
.intact-step-marker[aria-current="step"] .intact-step-diamond { background: var(--intact-gold); box-shadow: none; transform: rotate(0deg); }
.intact-step-marker.intact-step-done { color: var(--intact-text-on-dark); }
.intact-step-marker.intact-step-done .intact-step-diamond { background: var(--intact-teal-bright); box-shadow: none; transform: rotate(0deg); }

/* ---------- CSS-09: Form error styling (success rail lives in CSS-04) ---------- */
.intact-form-card [data-element_type="e-form-error-message"] { margin-top: 20px; padding: 14px 16px; background: rgba(138, 100, 20, 0.08); color: var(--intact-teal-deep); font-weight: 500; }

/* ---------- CSS-10: FAQ disclosure states ---------- */
.intact-qa.intact-open .intact-qa-mark { background: var(--intact-teal); transform: rotate(0deg); }
.intact-qa-a[hidden] { display: none; }

/* OI-024 interim: the sourceless video widget renders a poster placeholder div; force cover inside the shard until the production source is set. */
.intact-video-shard > div[style] { background-size: cover !important; height: 100%; }

/* Button-based containers must wrap long text (buttons inherit white-space: nowrap from the button styling chain) */
.intact-qa-q, .intact-step-marker { white-space: normal; }
.intact-qa-q .e-heading-base { min-width: 0; }

/* FAQ questions are buttons; neutralize the Kit button-theme text treatment */
.elementor .intact-qa-q { text-transform: none; letter-spacing: normal; font-style: italic; }


/* Animation kill-switch used by JS-02 when resetting bfcache restores. */
.intact-noanim, .intact-noanim * { transition: none !important; }


/* ============================================================
   CSS-12: as-built corrections (polish round, 2026-07-28)
   Kit CSS loads BEFORE base-*.css and the global-*-frontend-*.css
   class files, and those use ".elementor .intact-x" (0,2,0), so every
   rule here is written at (0,3,0) or stronger to win the tie.
   ============================================================ */

/* C12-01 Leading. The Kit typography control emits "line-height:1.6em",
   which inherits as a fixed 27.2px (26.4px mobile) rather than as a
   ratio, so everything smaller than body type carried body-sized
   leading. The contract uses unitless 1.6. This single rule restores
   labels, download names and meta, the footer title, and the mobile
   nav site-wide. */
body.elementor-kit-17 { line-height: 1.6; }

/* C12-02 The hidden attribute is inert on atomic blocks:
   ".elementor .e-div-block-base" sets display:block (0,2,0) and
   outranks the theme's "[hidden]" (0,1,0), so the booking stepper
   rendered all three steps stacked. */
.elementor .e-div-block-base[hidden],
.elementor .e-flexbox-base[hidden],
.elementor .e-con[hidden] { display: none; }

/* C12-03 Ghost button on light surfaces: the -ink modifier lost to the
   base ghost class, printing cream text on the cream form card. */
.elementor .intact-btn-ghost.intact-btn-ghost-ink {
  color: var(--intact-text);
  box-shadow: inset 0 0 0 1.5px var(--intact-text);
}
.elementor .intact-btn-ghost.intact-btn-ghost-ink:hover { background: rgba(35, 33, 29, 0.08); }

/* C12-04 Booking subhead on the deep-teal band. */
.elementor .intact-section-sub.intact-sub-on-teal { color: #F0EDE6BF; }

/* C12-05 Buttons: the class emits line-height 1em; the contract lets
   them inherit the body ratio. Doubled class .elementor-kit-17 because the class
   rule is itself ".elementor .intact-btn" and loads later. */
.elementor .intact-btn.intact-btn { line-height: 1.6; }

/* C12-06 Atomic blocks default to width:100%, so shrink-to-fit elements
   stretched: the award shard filled its grid column, and the step
   markers grew until the seam connectors between them collapsed. */
.elementor .intact-award-shard { width: fit-content; }
.elementor .intact-step-marker { width: auto; flex: 0 0 auto; }

/* C12-07 Stepper state colours (modifiers lost to the base class). */
.elementor .intact-step-marker[aria-current="step"],
.elementor .intact-step-marker.intact-step-done { color: var(--intact-text-on-dark); }

/* C12-08 Contextual overrides that lost to the shared component class. */
.elementor .intact-bookhero .intact-support { max-width: 520px; }
.elementor .intact-pad-mediahero .intact-support { max-width: 560px; }
.elementor .intact-pad-mediahero .intact-support { margin-block-end: 0; }
.elementor .intact-press-section .intact-proof-grid { margin-top: 40px; margin-block-end: 0; }
.elementor .intact-press-section .intact-press-links { margin-top: 56px; }
.elementor .intact-fact-value.intact-fs-17 { font-size: 17px; }

/* C12-09 Leading for elements whose contract value came from a nested
   context the rebuild flattened (the tag sat inside its heading, the
   note inside its fact value). */
.elementor .intact-fact-note { line-height: 1.25; }
.elementor .intact-preview-tag { line-height: 0.96; font-family: var(--intact-font-display); }

/* C12-10 Copyblock rhythm: the atomic paragraph reset zeroed the gaps
   between body paragraphs, and the trailing block kept its own margin. */

/* C12-11 Ink pairing on the booking page: the zone classes swapped the
   two dark tokens the contract pairs with these backgrounds. */
.elementor .intact-zone-gray.intact-pad-snapshot { color: var(--intact-text); }
.elementor .intact-zone-paper-deep.intact-pad-fracture { color: var(--intact-ink); }

/* C12-12 Atomic form base styles leak past the component classes:
   field labels take Elementor's near-black and 1em leading, and the
   success message keeps Elementor's small centred green. The element
   .elementor-kit-17 and the doubled class lift these past ".elementor .e-*-base". */
.elementor label.intact-label { color: var(--intact-text); line-height: 1.6; }
.elementor .e-form-success-message-base.intact-form-success {
  color: var(--intact-text);
  font-size: 17px;
  font-weight: 500;
  text-align: start;
  background-color: rgba(46, 94, 110, 0.1);
}

/* C12-13 The shattered hero portrait is a grid item, so it stretches to
   the full column and its 4/5 aspect ratio breaks against the 76vh
   height cap. Capping the width at the same ratio restores the
   contract's proportions at every viewport height. */
.elementor .intact-shatter.intact-shatter { max-width: calc(76vh * 4 / 5); }

/* ============================================================
   CSS-14: client polish round (2026-07-28)
   ============================================================ */

/* C14-01 The Kit's global button hover paints every <button> with the
   bright-teal fill. Our buttons carry their own hover treatments, so
   the ones that should only change text colour need it cancelled. */
.elementor .intact-qa-q:hover,
.elementor .intact-qa-q:focus,
.elementor .intact-qa-q:focus-visible,
.elementor .intact-step-marker:hover,
.elementor .intact-step-marker:focus,
.elementor .intact-step-marker:focus-visible,
.elementor .intact-menu-toggle:hover,
.elementor .intact-menu-toggle:focus,
.elementor .intact-menu-toggle:focus-visible { background-color: transparent; }

/* Hover reads as a colour shift on the question itself. */
.elementor .intact-qa-q:hover { color: var(--intact-teal); }
.elementor .intact-qa:hover .intact-qa-mark { border-color: var(--intact-teal); }

/* C14-02 The consent checkbox rendered with appearance:none and no
   custom control, so checked and unchecked looked identical. Restore
   the native control at the contract's size and brand accent. */
.elementor .intact-check input[type="checkbox"],
.elementor input[type="checkbox"] {
  appearance: auto;
  -webkit-appearance: checkbox;
  width: 20px;
  height: 20px;
  min-height: 0;
  padding: 0;
  margin: 2px 0 0;
  flex: none;
  accent-color: var(--intact-teal);
  background-color: transparent;
  border: 0;
  border-radius: 0;
}

/* C14-03 Body copy that runs to more than one paragraph needs the
   contract's inter-paragraph gap; the atomic paragraph reset zeroes it.
   Listed per class so components with deliberate rhythm keep theirs. */
/* Paragraph spacing for .intact-copy-560, .intact-p-city,
   .intact-footer-credits and .intact-copyblock now lives on those Global
   Classes, so it is visible and editable in Elementor. */

/* Footer credits sit as two separate lines. */

/* ============================================================
   CSS-15: footage grid (media page) + video frames
   ============================================================ */

/* Every thumbnail crops to the same 16:9 window so mixed source
   ratios (stage stills, a portrait headshot) still read as one row. */
.elementor .intact-clip-thumb img {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  object-position: center 30%;
}

/* The whole thumbnail is the control, so it earns a hover state. */
.elementor .intact-clip-thumb { overflow: hidden; }
.elementor .intact-clip-thumb img { transition: transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1); }
.elementor .intact-clip-thumb:hover img { transform: scale(1.03); }
.elementor .intact-clip-thumb:focus-visible { outline: 2px solid var(--intact-teal); outline-offset: 3px; }

/* The play diamond sits centred over the crop. */
.elementor .intact-clip-thumb .intact-play {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}

/* The ambient loops and the shard frame are pointer targets. */
.elementor [data-intact-video] { cursor: pointer; }
.elementor [data-intact-video] video { display: block; }

@media (prefers-reduced-motion: reduce) {
  .elementor .intact-clip-thumb img,
  .elementor .intact-clip-thumb:hover img { transition: none; transform: none; }
}
/* C15-04 Gap for the footage grid, set here because the class prop did
   not survive a hand-authored shape. Doubled class to outrank the
   generated class rule. */
.elementor .intact-clip-grid.intact-clip-grid { gap: 56px 40px; }
@media (max-width: 767px) {
  .elementor .intact-clip-grid.intact-clip-grid { gap: 40px; }
}

/* ============================================================
   CSS-16: legibility scrim over the booking hero video
   A still poster could be checked once for contrast; a looping clip
   changes every frame, so the type needs a guaranteed dark base.
   ============================================================ */
.elementor .intact-bookhero-media { position: absolute; }
.elementor .intact-bookhero-media::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(100deg, var(--intact-ink) 0%, rgba(16, 16, 20, 0.55) 30%, rgba(16, 16, 20, 0) 58%);
}
@media (max-width: 1024px) {
  .elementor .intact-bookhero-media::after {
    background: linear-gradient(to bottom, rgba(16, 16, 20, 0) 22%, rgba(16, 16, 20, 0.72) 72%, var(--intact-ink) 100%);
  }
}

/* ============================================================
   CSS-17: client polish round 2 (2026-07-28)
   ============================================================ */

/* C17-01 Four paper-toned sections ran together. A flat colour band cut a
   hard horizontal edge across a design built on angled fractures, so the
   middle section instead pools very slightly deeper in its centre and
   resolves back to the base tone at both edges. No visible seam, no tint. */
.elementor .intact-zone-paper.elementor-element-learned {
  background-image: linear-gradient(
    to bottom,
    var(--intact-paper) 0%,
    var(--intact-paper-deep) 160px,
    var(--intact-paper-deep) calc(100% - 160px),
    var(--intact-paper) 100%
  );
}
/* C17-02 The copyblock seam is skewed, so on tall blocks it swept across
   the paragraphs. A gentler angle keeps it inside the gutter, and the
   stacking context puts it behind the text either way. */
/* The seam leans by a fixed distance rather than a fixed angle. A skew
   drifts in proportion to height, so the same angle that suited a
   three-line block threw the rail 39px off centre on the full bio and
   pushed it into the text. A clip-path keeps the lean constant at any
   length. */
.elementor .intact-copyblock { position: relative; isolation: isolate; }
.elementor .intact-copyblock::before {
  width: 12px;
  transform: none;
  z-index: -1;
  background: var(--intact-border);
  clip-path: polygon(9px 0, 12px 0, 3px 100%, 0 100%);
}

/* C17-03 On the deep-teal band the accent word sat too close to the
   background; gold carries the emphasis instead. */
.elementor .elementor-element-inquiry .intact-h2 em { color: var(--intact-gold); }

/* C17-04 Mobile: the scroll cue is redundant on a touch device, the
   header wordmark repeats the hero on the home page, and the award
   block reads better centred. */
@media (max-width: 767px) {
  .elementor .intact-scroll-cue { display: none; }
  body.home .intact-wordmark { display: none; }
  /* The shard is inline-flex, which auto margins cannot centre, so it
     becomes a flex block sized to its content first. */
  .elementor .elementor-element-proof .intact-award-shard.intact-award-shard {
    display: flex;
    width: fit-content;
    margin-left: auto;
    margin-right: auto;
  }
  .elementor .elementor-element-proof .intact-award-shard ~ p { text-align: center; }
}

/* C17-05 Reveal-on-scroll. Applied by the behaviour layer, gated behind
   the motion class, and fully neutral when motion is not wanted. */
html.intact-js .intact-reveal {
  opacity: 0;
  transform: translate3d(0, 20px, 0);
  transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1);
  transition-delay: var(--intact-reveal-delay, 0s);
}
html.intact-js .intact-reveal.intact-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html.intact-js .intact-reveal { opacity: 1; transform: none; transition: none; }
}

/* C17-06 Dates bar: a small standing note that Robin is actively booking. */
.elementor .intact-datesbar.intact-datesbar {
  position: fixed;
  z-index: 40;
  right: clamp(16px, 3vw, 32px);
  bottom: clamp(16px, 3vw, 32px);
  max-width: min(420px, calc(100vw - 32px));
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 16px 18px 16px 22px;
  background: var(--intact-ink-soft);
  color: var(--intact-text-on-dark);
  box-shadow: 0 18px 40px rgba(16, 16, 20, 0.34);
  clip-path: polygon(0 6px, calc(100% - 14px) 0, 100% calc(100% - 6px), 14px 100%);
  transform: translate3d(0, 140%, 0);
  opacity: 0;
  transition: transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.5s ease;
}
.elementor .intact-datesbar.intact-datesbar.intact-in { transform: none; opacity: 1; }
.elementor .intact-datesbar.intact-datesbar[hidden] { display: none; }
.elementor .intact-datesbar-text.intact-datesbar-text { font-size: 14px; line-height: 1.45; margin: 0; color: var(--intact-text-on-dark); }
.elementor .intact-datesbar-text.intact-datesbar-text strong { color: var(--intact-gold); font-weight: 700; }
.elementor .intact-datesbar-link.intact-datesbar-link {
  flex: none;
  font-family: var(--intact-font-grotesk);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--intact-ink);
  background: var(--intact-paper);
  padding: 11px 16px;
  text-decoration: none;
  transition: background-color 0.2s ease;
}
.elementor .intact-datesbar-link.intact-datesbar-link:hover { background: var(--intact-gold); }
/* Kept in the flow: the bar's angled clip would cut off an
   absolutely-positioned corner button. */
.elementor .intact-datesbar-close.intact-datesbar-close {
  flex: none;
  width: 24px;
  height: 24px;
  margin-inline-start: -4px;
  border: 0;
  background: transparent;
  color: var(--intact-muted-on-dark);
  font-size: 19px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
}
.elementor .intact-datesbar-close.intact-datesbar-close:hover { color: var(--intact-paper); background: transparent; }
@media (max-width: 767px) {
  .elementor .intact-datesbar.intact-datesbar {
    left: 12px;
    right: 12px;
    bottom: 12px;
    max-width: none;
    gap: 12px;
    padding: 14px 14px 14px 16px;
  }
  .elementor .intact-datesbar-text.intact-datesbar-text { font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) {
  .elementor .intact-datesbar.intact-datesbar { transition: none; }
}
/* C17-07 The footer sits above the floating note, so scrolling to the end
   tucks the note behind it rather than leaving it hovering over the
   credits. */
.elementor .intact-footer { position: relative; z-index: 50; }
/* C17-08 The floating note is footer furniture, not page content, so it
   stays out of the way inside the editor canvas. */
body.elementor-editor-active .intact-datesbar.intact-datesbar { display: none; }

/* ---- C17-09  Inline links in small copy --------------------------------
   Consent and privacy links are inline HTML inside a paragraph's own content,
   so no Global Class can reach the anchor. Left alone it inherits the muted
   note colour with no underline and does not read as a link at all. */
.elementor .intact-fact-note a,
.elementor .intact-form-note a,
.elementor .intact-copyblock-body a {
	color: var(--intact-teal);
	text-decoration: underline;
	text-underline-offset: 2px;
}

.elementor .intact-fact-note a:hover,
.elementor .intact-fact-note a:focus-visible,
.elementor .intact-form-note a:hover,
.elementor .intact-form-note a:focus-visible,
.elementor .intact-copyblock-body a:hover,
.elementor .intact-copyblock-body a:focus-visible {
	color: var(--intact-teal-deep);
}/* End custom CSS */