@font-face{font-family:'Manrope';src:url('/fonts/manrope-latin.woff2') format('woff2');font-weight:200 600;font-display:swap;font-style:normal;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--bg:#050505;--bg-elevated:#0c0c0d;--bg-glow:radial-gradient(ellipse 75% 600px at 50% -120px,#13110d 0%,#050505 100%);--accent:#CCB46C;--accent-bright:#E4CC84;--accent-dim:rgba(204,180,108,0.3);--accent-faint:rgba(204,180,108,0.08);--accent-leaf:linear-gradient(168deg,#F6EDCB 0%,#EFDCA0 34%,#D8BE74 70%,#C9AC60 100%);--text-heading:#F6F2E9;--text:#F2F2F2;--text-muted:#A8A8A8;--text-subtle:#949494;--border:rgba(255,255,255,0.12);--border-strong:rgba(255,255,255,0.22);--error:#ff5555;--success:#6ed084;--on-accent:#0A0A0A;--accent-text:var(--accent);--accent-shadow:rgba(204,180,108,0.40);--font-serif:'Cormorant Garamond','Iowan Old Style','Palatino Linotype',Georgia,serif;--font-sans:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;--font-signature:'Signature','Snell Roundhand','Apple Chancery',cursive;--ease-luxury:cubic-bezier(0.19,1,0.22,1);--ease-quick:cubic-bezier(0.4,0,0.2,1);--space-xs:clamp(0.5rem,1vw,0.75rem);--space-sm:clamp(1rem,2vw,1.5rem);--space-md:clamp(2rem,4vw,3rem);--space-lg:clamp(4rem,8vw,6rem);--space-xl:clamp(5rem,10vw,9.5rem);color-scheme:dark;--hero-poster-fallback: url('https://res.cloudinary.com/dl4e3qclg/video/upload/w_1600,f_auto,q_auto:eco,so_auto/Splash_Desktop_bqnjls.webp');}
@font-face{font-family:'Cormorant Garamond';src:url('/fonts/cormorant-latin.woff2') format('woff2');font-weight:200 600;font-display:swap;font-style:normal;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122}
@font-face{font-family:'Cormorant Garamond';src:url('/fonts/cormorant-italic-latin.woff2') format('woff2');font-weight:200 600;font-display:swap;font-style:italic;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122}
@font-face{font-family:'Signature';src:url('/fonts/mr-de-haviland-signature.woff2') format('woff2');font-weight:400;font-display:swap;font-style:normal}

@media (prefers-reduced-motion:reduce){*,::before,::after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}#cursor,#cursor-follower{display:none!important}body{cursor:auto!important}.grain-overlay{animation:none!important}}
@media (prefers-reduced-data:reduce){.hero-video-wrapper video{display:none}.hero-video-wrapper{background-image:var(--hero-poster-fallback);background-size:cover;background-position:center}}
@media print{.grain-overlay,#cursor,#cursor-follower,#preloader,nav,.hero-video-wrapper,.play-btn,.video-facade video,.footer-action,#tcc-cmp,.cmp-reopen{display:none!important}body{background:#fff!important;color:#000!important}.hero{height:auto!important;min-height:unset!important}.hero-content{padding-top:2rem!important}.hero-title em{color:#000!important;background:none!important}a{color:#000!important;text-decoration:underline!important}.section-content{height:auto!important}.section-inner{opacity:1!important;transform:none!important}.capability{opacity:1!important;transform:none!important}}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth;font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-size-adjust:100%;text-rendering:optimizeLegibility;font-variant-ligatures:common-ligatures;font-optical-sizing:auto;font-kerning:normal;-webkit-tap-highlight-color:transparent}
body{background:var(--bg-glow) no-repeat;background-color:var(--bg);color:var(--text);font-family:var(--font-sans);font-weight:300;line-height:1.6;overflow-x:hidden;width:100%;min-height:100vh;min-height:100dvh}
::selection{background:rgba(204,180,108,0.22);color:#F6F2E9}
img,video{max-width:100%;height:auto;display:block;-webkit-user-drag:none;user-select:none;-webkit-user-select:none}
:focus-visible{outline:2px dashed var(--accent);outline-offset:6px;border-radius:2px}
button{font:inherit;color:inherit}
.skip-link{position:absolute;top:-100%;left:1rem;background:var(--accent-leaf);color:var(--on-accent);padding:12px 22px;z-index:999999;font-family:var(--font-sans);font-size:0.85rem;font-weight:600;text-decoration:none;border-radius:0 0 4px 4px;transition:top 0.2s ease}
.skip-link:focus{top:0}
::-webkit-scrollbar{width:8px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:#222;border-radius:4px}
::-webkit-scrollbar-thumb:hover{background:var(--accent)}
.grain-overlay{position:fixed;inset:-50%;width:200%;height:200%;background-image:url("https://res.cloudinary.com/dl4e3qclg/image/upload/w_200,f_auto,q_auto:low/Copilot_20260210_221209_gf05ui.png");opacity:0.045;pointer-events:none;z-index:9999;animation:noise-move 0.3s steps(4) infinite}
@keyframes noise-move{0%{transform:translate3d(0,0,0)}25%{transform:translate3d(-1%,-1%,0)}50%{transform:translate3d(1%,1%,0)}75%{transform:translate3d(-1%,1%,0)}100%{transform:translate3d(0,0,0)}}
#cursor{position:fixed;top:0;left:0;z-index:99999;pointer-events:none;width:6px;height:6px;background:var(--accent);border-radius:50%;transform:translate3d(-100px,-100px,0) translate(-50%,-50%);transition:width 0.3s var(--ease-luxury),height 0.3s var(--ease-luxury),opacity 0.3s var(--ease-luxury);will-change:transform,width,height,opacity}
#cursor-follower{position:fixed;top:0;left:0;z-index:99998;pointer-events:none;width:40px;height:40px;border:1px solid var(--accent-dim);border-radius:50px;transform:translate3d(-100px,-100px,0) translate(-50%,-50%);display:flex;justify-content:center;align-items:center;transition:width 0.3s var(--ease-luxury),height 0.3s var(--ease-luxury),border-color 0.3s var(--ease-luxury),background-color 0.3s var(--ease-luxury),padding 0.3s var(--ease-luxury);white-space:nowrap;will-change:transform,width,height,background-color}
#cursor-follower span{font-size:0.65rem;text-transform:uppercase;letter-spacing:0.1em;color:var(--bg);font-weight:600;opacity:0;transition:opacity 0.3s var(--ease-luxury);pointer-events:none}
body.custom-cursor-active,body.custom-cursor-active a,body.custom-cursor-active button,body.custom-cursor-active input,body.custom-cursor-active select,body.custom-cursor-active textarea,body.custom-cursor-active [data-cursor-text],body.custom-cursor-active .ledger-row{cursor:none!important}
body.is-hovering #cursor{width:40px;height:40px;opacity:0.15}
body.is-hovering #cursor-follower{border-color:var(--accent);width:60px;height:60px}
body.is-hovering.has-text-active #cursor{opacity:0}
body.is-hovering #cursor-follower.has-text{width:auto;height:40px;padding:0 20px;background-color:var(--accent);border-color:var(--accent)}
body.is-hovering #cursor-follower.has-text span{opacity:1}
.magnetic{display:inline-block;will-change:transform;transition:transform 0.4s var(--ease-luxury)}
#preloader{position:fixed;inset:0;z-index:100000;background:var(--bg);display:flex;flex-direction:column;justify-content:center;align-items:center;transition:transform 0.8s var(--ease-luxury);will-change:transform}
#preloader.loaded{transform:translateY(-100%)}
/* Splash / preloader - "quiet Mayfair": warm off-white wordmark, with the brand
   gold pulled back to a single restrained hairline + a faint eyebrow whisper. */
.loader-content{text-align:center;position:relative}
.loader-eyebrow{display:block;font-family:var(--font-sans);font-size:0.6rem;font-weight:500;letter-spacing:0.4em;text-transform:uppercase;color:var(--accent);opacity:0.4;margin-bottom:1.35rem;padding-left:0.4em}
.loader-logo{font-family:var(--font-serif);font-weight:300;font-size:clamp(1.75rem,5.5vw,2.7rem);letter-spacing:-0.015em;line-height:1.05;color:#ECE6D9;margin-bottom:1.9rem}
.loader-logo em{font-style:italic;color:#ECE6D9}
.loader-bar-bg{width:130px;height:1px;background:rgba(255,255,255,0.08);margin:0 auto;position:relative;overflow:hidden}
.loader-bar{position:absolute;inset:0;background:var(--accent);opacity:0.9;transform:scaleX(0);transform-origin:left center;animation:tcc-load 360ms cubic-bezier(.4,0,.2,1) forwards;will-change:transform}
@keyframes tcc-load { to { transform: scaleX(1); } }
#preloader { transition: transform .6s var(--ease-luxury); }
#navbar{position:fixed;top:0;left:0;width:100%;height:90px;display:flex;justify-content:space-between;align-items:center;padding:0 6%;z-index:1000;opacity:0;transition:opacity 1s var(--ease-luxury) 0.5s,background 0.5s var(--ease-quick),backdrop-filter 0.5s var(--ease-quick)}
body.ready #navbar{opacity:1}
#navbar.scrolled{background:rgba(5,5,5,0.85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.logo,.label{user-select:none;-webkit-user-select:none}
.logo{font-size:0.82rem;text-transform:uppercase;letter-spacing:0.2em;font-weight:600;color:#fff;text-decoration:none;transform-origin:left;display:flex;align-items:center;gap:12px;min-height:44px;text-shadow:0 1px 20px rgba(0,0,0,0.3)}
/* Slightly larger, warmer wordmark so the brand carries the top-left corner and draws the eye.
   The 64px crest asset stays crisp at 34px. Hover lifts the wordmark to gold as a home cue. */
.brand-mark{width:34px;height:34px;border-radius:2px}
.logo span{transition:color 0.4s var(--ease-luxury)}
.logo:hover span,.logo:focus-visible span{color:var(--accent-bright)}
.nav-cta{background:none;border:1px solid var(--border);color:var(--accent);text-transform:uppercase;font-size:0.65rem;letter-spacing:0.15em;padding:14px 26px;cursor:pointer;transition:background 0.6s var(--ease-luxury),color 0.6s var(--ease-luxury),border-color 0.6s var(--ease-luxury);position:relative;overflow:hidden;font-family:var(--font-sans);min-height:44px}
.nav-cta:hover,.nav-cta:focus-visible{background:var(--accent-leaf);color:var(--on-accent);border-color:var(--accent)}
.nav-cta::before{content:"";position:absolute;top:0;left:-100%;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(204,180,108,0.2),transparent)}
.nav-cta:hover::before{left:100%;transition:left 0.8s}
/* Liquid-metal primary CTA ("Speak with Nic"): a machined champagne bezel around a deep gilded near-black
   face. Pure CSS, so it is deterministic and light (no WebGL). The gold lives in the RIM (an animated conic
   ring masked to the border) and stays an accent; the face is near-black and hover only brightens the bezel
   and lifts a soft gold glow, never a flat gold fill. Its own class (not .nav-cta/.book-cta) so none of the
   gold-leaf CTA cascade reaches it. Estate-wide via base.njk; hidden below 600px where the menu CTA takes over.
   Falls back to a static bezel where @property is unsupported, and to a plain rounded gold rim without mask. */
@property --lmang{syntax:"<angle>";inherits:false;initial-value:0deg}
.cta-metal{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:13px 26px;min-height:44px;border-radius:13px;isolation:isolate;text-decoration:none;-webkit-tap-highlight-color:transparent;box-shadow:0 14px 34px -16px rgba(0,0,0,0.8);transition:box-shadow 0.5s var(--ease-luxury),transform 0.18s ease}
.cta-metal::before{content:"";position:absolute;inset:0;z-index:-3;border-radius:inherit;padding:2.5px;background:conic-gradient(from var(--lmang),#4b402a,#e6dcc4,#b0a488,#f7f1e4,#6e6146,#d8ccb2,#4b402a,#f7f1e4,#4b402a);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;animation:lmspin 7s linear infinite}
@keyframes lmspin{to{--lmang:360deg}}
.cta-metal::after{content:"";position:absolute;inset:2.5px;z-index:-2;border-radius:10px;background:linear-gradient(160deg,#f7edc6 0%,#ecd693 42%,#d9bd6f 72%,#bd9a44 100%);box-shadow:inset 0 1px 0 rgba(255,251,236,0.75),inset 0 -3px 7px -3px rgba(80,52,12,0.55),inset 0 0 0 1px rgba(58,40,12,0.28);transition:background 0.5s var(--ease-luxury)}
.cta-metal__label{position:relative;z-index:1;color:#2a1c05;font-family:var(--font-sans);font-weight:600;font-size:0.65rem;letter-spacing:0.15em;text-transform:uppercase;text-shadow:0 1px 0 rgba(255,248,224,0.5);white-space:nowrap}
.cta-metal:hover,.cta-metal:focus-visible{box-shadow:0 18px 46px -16px rgba(0,0,0,0.8),0 0 30px -10px rgba(204,180,108,0.45)}
.cta-metal:hover::before,.cta-metal:focus-visible::before{filter:brightness(1.12) saturate(1.05)}
.cta-metal:hover::after,.cta-metal:focus-visible::after{background:linear-gradient(160deg,#fbf3d8 0%,#f0dc9e 42%,#ddc276 72%,#c29d49 100%)}
.cta-metal:focus-visible{outline:2px solid var(--accent-bright);outline-offset:4px}
.cta-metal:active{transform:translateY(1px)}
@media (max-width:600px){.cta-metal{display:none}}
/* Persistent-hamburger nav (Nic, 15 Aug 2026): push the top "Speak with Nic" CTA to the far right, next to the
   hamburger (the section-nav + theme-toggle are hidden, so margin-left:auto absorbs the free space). */
#navbar .cta-metal{margin-left:auto;margin-right:18px}
@media (prefers-reduced-motion:reduce){.cta-metal::before{animation:none}}
/* FOLLOW SUIT: the form submit buttons (Send message + Subscribe, both variants) wear the same machined skin as
   the CTA family so every gold button matches. The label is the button's own text (no __label span), and they
   show on all viewports. Global --lmang/lmspin drive the bezel; !important overrides each button's gold-leaf fill. */
.submit-btn,.brief-btn,.isub-btn{position:relative;isolation:isolate;border:0!important;background:transparent!important;color:#2a1c05!important;-webkit-text-fill-color:#2a1c05!important;border-radius:12px!important;text-shadow:0 1px 0 rgba(255,248,224,0.5);box-shadow:0 14px 34px -16px rgba(0,0,0,0.8);transition:box-shadow 0.5s var(--ease-luxury),transform 0.18s ease,filter 0.3s ease}
.submit-btn::before,.brief-btn::before,.isub-btn::before{content:"";position:absolute;inset:0;z-index:-3;border-radius:inherit;padding:2.5px;background:conic-gradient(from var(--lmang,0deg),#4b402a,#e6dcc4,#b0a488,#f7f1e4,#6e6146,#d8ccb2,#4b402a,#f7f1e4,#4b402a);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;animation:lmspin 7s linear infinite}
/* Restraint (Nic): the living bezel animation is reserved for MACRO conversions. Send message keeps it;
   Subscribe (newsletter is not a macro conversion) wears the same machined skin but the bezel is static. */
.brief-btn::before,.isub-btn::before{animation:none}
.submit-btn::after,.brief-btn::after,.isub-btn::after{content:"";position:absolute;inset:2.5px;z-index:-2;border-radius:9px;background:linear-gradient(160deg,#f7edc6 0%,#ecd693 42%,#d9bd6f 72%,#bd9a44 100%);box-shadow:inset 0 1px 0 rgba(255,251,236,0.75),inset 0 -3px 7px -3px rgba(80,52,12,0.55),inset 0 0 0 1px rgba(58,40,12,0.28)}
.submit-btn:hover,.submit-btn:focus-visible,.brief-btn:hover,.brief-btn:focus-visible,.isub-btn:hover,.isub-btn:focus-visible{filter:none;transform:translateY(-1px);box-shadow:0 18px 46px -16px rgba(0,0,0,0.8),0 0 30px -10px rgba(204,180,108,0.45)}
.submit-btn:hover::before,.submit-btn:focus-visible::before,.brief-btn:hover::before,.brief-btn:focus-visible::before,.isub-btn:hover::before,.isub-btn:focus-visible::before{filter:brightness(1.12) saturate(1.05)}
.submit-btn:disabled,.brief-btn:disabled,.isub-btn:disabled{opacity:0.6;transform:none}
@media (prefers-reduced-motion:reduce){.submit-btn::before,.brief-btn::before,.isub-btn::before{animation:none}}
.section-nav{display:flex;gap:28px;align-items:center}
.section-nav a{font-size:0.6rem;text-transform:uppercase;letter-spacing:0.18em;color:var(--text-muted);text-decoration:none;font-weight:500;transition:color 0.4s var(--ease-luxury);position:relative;padding:6px 0;min-height:32px;display:inline-flex;align-items:center}
.section-nav a:hover,.section-nav a:focus-visible{color:#fff}
.section-nav a::after{content:'';position:absolute;left:0;bottom:0;width:0%;height:1px;background:var(--accent);transition:width 0.4s var(--ease-luxury)}
.section-nav a:hover::after,.section-nav a:focus-visible::after{width:100%}
/* Persistent hamburger (Nic, 14 Aug 2026): the full section-nav is hidden at every width and the menu
   overlay carries every link + Client Login + theme; the bar keeps only the Speak with Nic CTA and the
   hamburger. Revert to a desktop nav by wrapping this in @media (max-width:1360px). */
.section-nav{display:none}
/* Client Login: a live door in the masthead, a real gated product visible to every visitor.
   Its own quiet hover, not the plain underline the menu links share (that ::after is suppressed):
   the gold warms and glows and the signal dot blooms, the client's door lighting up. Restraint,
   for the people who hold a key. The cursor keeps the same elegant ring as the other nav links
   (no data-cursor-text on the link, so no filled text-pill sits over it). */
.section-nav a.nav-login{display:inline-flex;align-items:center;color:var(--accent);font-weight:600;transition:color 0.5s var(--ease-luxury),text-shadow 0.5s var(--ease-luxury)}
.section-nav a.nav-login::after{display:none}
.section-nav a.nav-login:hover,.section-nav a.nav-login:focus-visible{color:var(--accent-bright);text-shadow:0 0 20px rgba(204,180,108,0.5)}
.nav-login-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px rgba(204,180,108,0.16);margin-right:0.55em;flex:none;transition:background 0.5s var(--ease-luxury),box-shadow 0.5s var(--ease-luxury),transform 0.5s var(--ease-luxury)}
.section-nav a.nav-login:hover .nav-login-dot,.section-nav a.nav-login:focus-visible .nav-login-dot{background:var(--accent-bright);box-shadow:0 0 0 4px rgba(204,180,108,0.20),0 0 14px 2px rgba(204,180,108,0.55);transform:scale(1.18);opacity:1;animation:none}
@media (prefers-reduced-motion:no-preference){.nav-login-dot{animation:navLoginPulse 2.6s ease-in-out infinite}}
@keyframes navLoginPulse{0%,100%{opacity:1}50%{opacity:0.4}}
.menu-login{color:var(--accent)}
.container{width:88%;max-width:1200px;margin:0 auto;position:relative;z-index:2}
.section-pad{padding:var(--space-xl) 0}
.hero-title{font-family:var(--font-serif);font-weight:300;font-size:clamp(3.6rem,9.2vw,8.5rem);line-height:1.0;letter-spacing:-0.035em;color:var(--text-heading);margin-top:clamp(1.25rem,2.5vw,2.5rem)}
.hero-title span.line-wrap{display:block;overflow:hidden;padding-bottom:1.25em;margin-bottom:-1.25em}
.line-child{display:inline-block;will-change:transform;transform:translateY(40%);transition:transform 0.7s var(--ease-luxury);padding-bottom:0.1em}
.hero-title em{color:var(--accent-bright);font-style:italic;display:inline-block;padding-right:0.1em;padding-bottom:0.15em;margin-bottom:-0.15em;background:var(--accent-leaf);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.hero-title.active .line-child{transform:translateY(0%)}
.reveal-up.active .line-child{transform:translateY(0%)}
/* LCP safety nets: the hero H1 (LCP) is gated behind JS (.active) + the opaque
   #preloader. Ensure it paints even if JS is absent/stalled or motion is reduced. */
.no-js .line-child{transform:none}
@media (prefers-reduced-motion:reduce){.line-child{transform:none}}
.no-js #preloader{display:none}
.no-js #menu-toggle{display:none}
@media (prefers-reduced-motion:reduce){#preloader{display:none}}
/* CSS-drive the preloader dismissal + hero reveal so LCP does not wait on
   window.load (which, throttled, waits for fonts/video/3rd-parties). The JS
   path still runs and is faster when JS is ready; this is the floor, not a cap. */
@media (prefers-reduced-motion:no-preference){#preloader{animation:tcc-preloader-out .45s var(--ease-luxury) .5s forwards}}
@keyframes tcc-preloader-out{to{transform:translateY(-100%);visibility:hidden}}
@media (prefers-reduced-motion:no-preference){.hero-title .line-child{animation:heroLineUp .55s var(--ease-luxury) .05s both}}
@keyframes heroLineUp{from{transform:translateY(40%)}to{transform:translateY(0)}}
h1,h2,h3{font-family:var(--font-serif);font-weight:300;letter-spacing:-0.03em;color:var(--text-heading);font-optical-sizing:auto;font-feature-settings:"liga" 1,"dlig" 1,"calt" 1}
h2{font-size:clamp(2rem,5vw,4rem);line-height:1.1;margin-bottom:1.5rem;text-wrap:balance}
h3{font-size:clamp(1.5rem,3vw,2.5rem);text-wrap:balance}
p{font-size:clamp(1rem,1.2vw,1.15rem);color:var(--text-muted);font-weight:300;max-width:60ch;text-wrap:pretty}
/* Tabular lining figures wherever numerals carry meaning: the verdict score,
   chapter indices, the client ledger, legal identifiers. A practice that sells
   precision sets its numbers like a ledger, equal-width and aligned, no jitter. */
.chapter-no,.verdict-score,.commitment-num,.arch-counter,.section-index,.legal-line,.mandate-stamp .stamp-ref,.mandate-line{font-variant-numeric:tabular-nums lining-nums}
.label{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.38em;color:var(--accent-bright);margin-top:clamp(2.5rem,6vw,5rem);margin-bottom:2rem;display:block;font-weight:400;opacity:0.92}
.label::before{content:'';display:inline-block;width:26px;height:1px;background:linear-gradient(90deg,var(--accent),transparent);vertical-align:middle;margin-right:1rem;position:relative;top:-0.12em}
.label.tight{margin-bottom:0.5rem}
.chapter-no{display:block;font-family:var(--font-serif);font-weight:300;font-size:clamp(2.75rem,5vw,4.25rem);line-height:1.08;padding-bottom:0.04em;color:var(--accent-bright);background:var(--accent-leaf);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;opacity:1;letter-spacing:-0.01em;margin-top:clamp(2.5rem,6vw,5rem);margin-bottom:1.1rem;user-select:none;-webkit-user-select:none}
.chapter-no+.label{margin-top:0}
.chapter-no--card{margin-top:0;font-size:clamp(2.1rem,3.4vw,2.85rem);opacity:1;margin-bottom:0.8rem}
.hero{position:relative;height:100vh;height:100dvh;min-height:640px;display:flex;align-items:center;overflow:hidden}
.hero-video-wrapper{position:absolute;inset:0;z-index:0;background:#000}
.hero-video-wrapper video{width:100%;height:100%;object-fit:cover;opacity:0.6;transform:translate3d(0,0,0) scale(1.05);transition:transform 0.1s ease-out;will-change:transform}
.hero-video-wrapper .hero-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0.6;transition:opacity .8s var(--ease-luxury)}
body.hero-video-playing .hero-video-wrapper .hero-poster{opacity:0}
.hero-video-wrapper::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(100deg,rgba(5,5,5,0.85) 0%,rgba(5,5,5,0.55) 38%,rgba(5,5,5,0.12) 72%,rgba(5,5,5,0) 100%)}
@media(max-width:768px){.hero-video-wrapper::before{background:linear-gradient(180deg,rgba(5,5,5,0.18) 0%,rgba(5,5,5,0.4) 48%,rgba(5,5,5,0.84) 100%)}}
.hero-video-wrapper::after{content:'';position:absolute;inset:0;z-index:1;background:radial-gradient(circle at center,rgba(5,5,5,0.08) 0%,rgba(5,5,5,0.82) 100%)}
.hero-content{position:relative;z-index:2;padding-top:10vh}
/* The ambient-film pause control exists ONLY while the film is moving (Nic, 1 Aug 2026: with
   autoplay blocked, e.g. iOS Low Power Mode, it read as a random orphaned play button beside the
   hero copy). WCAG 2.2.2 needs a pause mechanism only for motion that plays; a still poster needs
   no control at all. */
.hero-video-toggle{position:absolute;right:22px;bottom:22px;z-index:3;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,0.28);background:rgba(5,5,5,0.35);color:rgba(255,255,255,0.75);display:none;align-items:center;justify-content:center;cursor:pointer;transition:border-color .4s var(--ease-luxury),color .4s var(--ease-luxury)}
body.hero-video-playing .hero-video-toggle{display:flex}
.hero-video-toggle:hover,.hero-video-toggle:focus-visible{border-color:var(--accent);color:var(--accent);outline:none}
.hero-video-toggle svg{width:12px;height:12px;fill:currentColor}
.hero-video-toggle .hvt-pause{display:none}
body.hero-video-playing .hero-video-toggle .hvt-pause{display:block}
body.hero-video-playing .hero-video-toggle .hvt-play{display:none}
/* Hero eyebrow (the PPC/AI-Search/SEO tagline) needs more presence than the generic .label,
   especially on tablet where the section-nav is hidden and it carries the positioning alone. */
#hero-heading{font-size:clamp(0.85rem,1.7vw,1.05rem);letter-spacing:0.24em;opacity:1;margin-bottom:1.4rem}
.hero-subhead{margin-top:2rem;color:var(--text);max-width:54ch;font-size:clamp(1.05rem,1.3vw,1.28rem);line-height:1.5;text-wrap:pretty}
#bespoke-target,[data-bespoke],[data-bespoke-template]{transition:color 1.1s var(--ease-luxury),letter-spacing 1.1s var(--ease-luxury)}
[data-bespoke].is-bespoke,[data-bespoke-template].is-bespoke,#bespoke-target.is-bespoke{color:var(--accent)}
.bespoke-prelude {
  display:none;
  font-size:0.7rem;
  text-transform:uppercase;
  letter-spacing:0.35em;
  color:var(--accent);
  opacity:0;
  transform:translateY(6px);
  transition:opacity 1.2s var(--ease-luxury),transform 1.2s var(--ease-luxury);
  margin-bottom:0.85rem;
  line-height:1.8;
  white-space:pre-line; /* Mobile gets the line break */
}

@media (min-width: 769px) {
  .bespoke-prelude {
    white-space: normal; /* Desktop turns the line break into a single space */
  }
}
.is-personalised .bespoke-prelude{display:block}
.is-personalised .bespoke-prelude.is-revealed{opacity:0.85;transform:translateY(0)}
.mandate-stamp{position:fixed;right:max(2.2vw,18px);bottom:max(2.2vh,18px);z-index:50;font-family:var(--font-sans);font-size:0.55rem;letter-spacing:0.32em;text-transform:uppercase;color:var(--text-subtle);background:rgba(5,5,5,0.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:1px;padding:9px 14px 8px;display:none;opacity:0;transform:translateY(8px);transition:opacity 1.4s var(--ease-luxury),transform 1.4s var(--ease-luxury),color 0.6s var(--ease-luxury),border-color 0.6s var(--ease-luxury);pointer-events:auto;line-height:1.4;max-width:min(78vw,360px);user-select:none;-webkit-user-select:none;cursor:default}
.mandate-stamp .stamp-label{display:block;color:var(--text-subtle);font-weight:500}
.mandate-stamp .stamp-name{display:block;color:var(--accent);margin-top:3px;font-weight:600;letter-spacing:0.2em;font-size:0.6rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px}
.mandate-stamp .stamp-ref{display:block;color:var(--text-muted);margin-top:3px;font-family:'SFMono-Regular',Menlo,Consolas,monospace;letter-spacing:0.18em;font-size:0.5rem}
.mandate-stamp:hover{border-color:var(--accent-dim);color:var(--text-muted)}
.is-personalised .mandate-stamp{display:block}
.is-personalised .mandate-stamp.is-revealed{opacity:1;transform:translateY(0)}
/* Avoid collision with the cookie reopen button when both are visible */
body.cmp-reopen-visible .mandate-stamp{bottom:max(8.5vh,80px)}
@media (max-width:640px){.mandate-stamp{font-size:0.5rem;padding:7px 11px 6px;letter-spacing:0.25em;right:12px;bottom:12px}.mandate-stamp .stamp-name{font-size:0.55rem;max-width:160px}}
@media (max-width:380px){.mandate-stamp{display:none!important}}
.mandate-line{display:none;font-family:'SFMono-Regular',Menlo,Consolas,monospace;font-size:0.55rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--text-subtle);margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--border)}
.mandate-line .mandate-line-sep{margin:0 0.85em;color:var(--text-subtle);opacity:0.6}
.mandate-line .mandate-line-name{color:var(--accent);letter-spacing:0.18em}
.is-personalised .mandate-line{display:block}
.bespoke-print-letterhead{display:none}
@media print{
  .mandate-stamp,.bespoke-prelude{display:none!important}
  .is-personalised .bespoke-print-letterhead{display:block!important;margin:0 0 1.5cm 0;padding-bottom:0.75cm;border-bottom:1px solid #000;font-family:Georgia,serif;color:#000}
  .bespoke-print-letterhead .lh-row{display:flex;justify-content:space-between;align-items:baseline;font-size:9pt;letter-spacing:0.18em;text-transform:uppercase;color:#000}
  .bespoke-print-letterhead .lh-firm{font-family:'Cormorant Garamond',Georgia,serif;font-size:14pt;letter-spacing:0.05em;text-transform:none;font-weight:400;margin:0.4cm 0 0.2cm}
  .bespoke-print-letterhead .lh-recipient{font-family:'Cormorant Garamond',Georgia,serif;font-size:11pt;letter-spacing:0.04em;text-transform:none;font-style:italic;color:#222}
  .bespoke-print-letterhead .lh-meta{font-size:7.5pt;letter-spacing:0.12em;color:#444;margin-top:0.3cm}
}
.accreditations{margin-top:2rem;border-top:1px solid var(--border);padding-top:2.5rem}
.accreditations-label{font-size:0.6rem;text-transform:uppercase;letter-spacing:0.15em;color:rgba(255,255,255,0.65);display:block;margin-bottom:1.25rem}
.acc-links{display:flex;flex-wrap:wrap;gap:12px 30px;align-items:center}
.acc-link{font-size:0.65rem;text-transform:uppercase;letter-spacing:0.12em;color:var(--text-muted);text-decoration:none;transition:color 0.6s var(--ease-luxury);position:relative;padding-bottom:6px;display:inline-flex;align-items:center;min-height:20px}
@media (max-width:768px){.accreditations{margin-top:2.5rem;padding-top:2rem}}
.acc-link::after{content:'';position:absolute;left:0;bottom:0;width:0%;height:1px;background:var(--accent);transition:width 0.5s var(--ease-luxury)}
.acc-link:hover,.acc-link:focus-visible{color:#fff}
.acc-link:hover::after,.acc-link:focus-visible::after{width:100%}
.reveal-up{opacity:0;transform:translateY(10px);transition:opacity 0.7s var(--ease-luxury),transform 0.7s var(--ease-luxury);will-change:opacity,transform}
.reveal-up.active{opacity:1;transform:translateY(0)}
/* Above-the-fold hero is the LCP content: never gate it on JS. It renders
   immediately (the preloader provides the entrance), so it stays visible
   even if main.js is slow or fails to load. */
.hero .reveal-up{opacity:1;transform:none}
.ledger-row{display:flex;flex-direction:column;padding:2.5rem 0;border-bottom:1px solid var(--border);transition:0.6s var(--ease-luxury);cursor:pointer}
.ledger-row:first-child{border-top:1px solid var(--border)}
.ledger-row span{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.15em;color:var(--text-muted);margin-top:0.5rem;transition:color 0.5s var(--ease-luxury)}
/* Touch devices never get the desktop hover that brightens this descriptor, so on tablet/phone
   the sub-line under each client name stayed too faint to read. Give it more size and contrast. */
@media (hover:none){.ledger-row span{color:var(--text);font-size:0.78rem}}
@media (min-width:769px){.ledger-row{flex-direction:row;justify-content:space-between;align-items:baseline}.ledger-row:hover h3,.ledger-row:focus-within h3{color:var(--accent);transform:translateX(10px);transition:0.5s var(--ease-luxury)}.ledger-row:hover span,.ledger-row:focus-within span{color:#fff}}
/* === Confidential client reveal - restored blur effect ===
   Direct h3 styling (no inner span wrapper) so font-size, family, weight
   and letter-spacing inherit identically from sibling ledger row h3s.
   Subtle gold tint while obscured for brand alignment. */
.obfuscate{filter:blur(8px);opacity:0.5;color:rgba(204,180,108,0.7);margin-left: -6px; /* Pulls the blurred text left to visually align it */transition:filter 0.9s var(--ease-luxury),opacity 0.9s var(--ease-luxury),color 0.9s var(--ease-luxury);user-select:none;will-change:filter,opacity}
.obfuscate.revealed{filter:blur(0);margin-left: 0; /* Snaps back to true zero when the hard edge returns */opacity:1;color:inherit}
@media (prefers-reduced-motion:reduce){.obfuscate{transition-duration:0.01ms}}
.impact-visual{width:100%;margin:80px 0;border:1px solid var(--border);position:relative;overflow:hidden;background:#111;aspect-ratio:16/9}
.impact-visual img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;transition:transform 2.5s var(--ease-luxury)}
.lush-bw{filter:grayscale(100%) contrast(1.1)}
.lush-color{opacity:0;transition:opacity 0.5s ease,transform 2.5s var(--ease-luxury);-webkit-mask-image:radial-gradient(circle 250px at var(--x,50%) var(--y,50%),black 30%,transparent 100%);mask-image:radial-gradient(circle 250px at var(--x,50%) var(--y,50%),black 30%,transparent 100%)}
.impact-visual:hover img{transform:scale(1.03)}
.impact-visual:hover .lush-color{opacity:1}
/* Wraps the LUSH credential image with a clarifying footnote: it is the founder's prior
   agency-era track record, not a Crane Consultancy client. Figure keeps the outer rhythm. */
.impact-figure{margin:80px 0}
.impact-figure .impact-visual{margin:0}
.impact-caption{margin-top:0.95rem;font-family:var(--font-sans);font-size:0.8rem;line-height:1.5;color:var(--text-muted);letter-spacing:0.01em;max-width:64ch}
.video-facade{position:relative;width:100%;aspect-ratio:16/9;background:#000;overflow:hidden;cursor:pointer;border:1px solid var(--border);margin-top:40px}
.video-facade img{width:100%;height:100%;object-fit:cover;opacity:0.6;transition:opacity 0.5s ease}
.video-facade:hover img{opacity:0.4}
/* Machined play button (same language as the CTA family + listen/brief buttons): champagne conic bezel +
   gilded near-black face + gold play glyph. Falls back to a static bezel where @property/mask is unsupported
   (--lmang + lmspin are global). Two pseudo-elements carry bezel + face, so the glyph rides the face as a
   centred SVG background layer (no third layer, no markup change). */
.play-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:80px;height:80px;isolation:isolate;border:0;border-radius:50%;display:flex;align-items:center;justify-content:center;background:transparent;box-shadow:0 10px 30px -10px rgba(0,0,0,0.7);transition:transform 0.5s var(--ease-luxury),box-shadow 0.4s ease;z-index:2}
.play-btn::before{content:'';position:absolute;inset:0;z-index:-2;border-radius:50%;padding:2.5px;background:conic-gradient(from var(--lmang,0deg),#4b402a,#e6dcc4,#b0a488,#f7f1e4,#6e6146,#d8ccb2,#4b402a,#f7f1e4,#4b402a);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
.play-btn::after{content:'';position:absolute;inset:2.5px;z-index:-1;border-radius:50%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 5.5v13l10-6.5z' fill='%232E2008'/%3E%3C/svg%3E") 54% center/26px no-repeat,radial-gradient(135% 150% at 30% -20%,#fbf3d8,#e2c887 55%,#b8933f);box-shadow:inset 0 1px 1px rgba(255,251,236,0.6),inset 0 -8px 16px -10px rgba(80,52,12,0.5)}
.video-facade:hover .play-btn{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 12px 34px -10px rgba(0,0,0,0.7),0 0 26px -8px rgba(204,180,108,0.5)}
.video-facade:hover .play-btn::before{filter:brightness(1.12) saturate(1.04)}
.video-facade video{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:3;display:none}
.video-facade.playing video{display:block}
.video-facade.playing{cursor:auto}
.video-facade.playing .play-btn,.video-facade.playing img{display:none}
.competency-grid{display:grid;grid-template-columns:1fr;gap:60px;margin-top:60px;border-top:1px solid var(--border);padding-top:60px}
@media (min-width:769px){.competency-grid{grid-template-columns:repeat(3,1fr);gap:40px}}
@media (min-width:769px){.competency-grid.comp-grid-quad{grid-template-columns:repeat(2,1fr);gap:40px 56px}}
@media (min-width:1240px){.competency-grid.comp-grid-quad{grid-template-columns:repeat(4,1fr);gap:40px}}
.comp-col h3{font-family:var(--font-serif);font-size:1.8rem;color:#fff;margin-bottom:20px;display:flex;align-items:center;gap:10px}
.comp-col h3::before{content:'';display:block;width:20px;height:1px;background:var(--accent)}
.comp-list{list-style:none}
.comp-list li{font-size:0.85rem;color:var(--text-muted);border-bottom:1px solid rgba(255,255,255,0.05);padding:12px 0;display:flex;justify-content:space-between;align-items:center;transition:color 0.4s var(--ease-luxury),padding-left 0.4s var(--ease-luxury);cursor:default}
.comp-list li:last-child{border-bottom:none}
.comp-list li:hover{color:#fff;padding-left:10px}
.comp-list li::after{content:'+';font-size:9px;opacity:0;transition:opacity 0.3s}
.comp-list li:hover::after{opacity:1;color:var(--accent)}
/* Services: one-line discipline descriptor (each card reads as a standalone offer) */
.comp-intro{font-size:0.9rem;color:var(--text-muted);line-height:1.55;margin:-6px 0 20px;max-width:34ch;text-wrap:pretty}
/* Services: Data & Automation presented as the spine beneath the three disciplines */
.service-spine{margin-top:48px;border-top:1px solid var(--border);padding-top:36px}
@media (min-width:769px){.service-spine{display:grid;grid-template-columns:0.85fr 1.15fr;gap:48px;align-items:start}}
.spine-title{font-family:var(--font-serif);font-size:1.5rem;color:#fff;margin-bottom:12px;display:flex;align-items:center;gap:10px}
.spine-title::before{content:'';display:block;width:20px;height:1px;background:var(--accent);flex-shrink:0}
.spine-note{font-size:0.9rem;color:var(--text-muted);line-height:1.55;max-width:44ch;text-wrap:pretty}
.spine-list{list-style:none;display:flex;flex-wrap:wrap;gap:8px 10px;margin-top:22px}
@media (min-width:769px){.spine-list{margin-top:4px}}
.spine-list li{font-size:0.72rem;letter-spacing:0.03em;color:var(--text-muted);border:1px solid var(--border);border-radius:2px;padding:7px 12px;background:rgba(255,255,255,0.01);transition:border-color 0.4s var(--ease-luxury),color 0.4s var(--ease-luxury)}
.spine-list li:hover{border-color:var(--accent-dim);color:var(--text)}
/* ============================================================
   Dedicated service pages (src/services.njk)
   ============================================================ */
/* Hero CTAs sit under the subhead with real breathing room. The compound selector is deliberate:
   the hero button is usually .cta-book too, and .cta-book (later in this file) sets margin-top:0.5rem
   at equal specificity, so a bare .hero-cta rule was silently overridden and every hero CTA sat ~8px
   under the paragraph. .hero-cta.cta-book (0,2,0) wins regardless of source order; the bare .hero-cta
   fallback keeps any non-.cta-book hero button in step. */
.hero-cta,.hero-cta.cta-book{margin-top:2.25rem}
.service-included{list-style:none;margin-top:1.5rem}
@media (min-width:600px){.service-included{display:grid;grid-template-columns:repeat(2,1fr);column-gap:56px}}
.service-included li{font-size:0.92rem;color:var(--text-muted);border-bottom:1px solid rgba(255,255,255,0.06);padding:13px 0;transition:color 0.4s var(--ease-luxury),padding-left 0.4s var(--ease-luxury)}
.service-included li:hover{color:#fff;padding-left:8px}
.proof-line{margin-top:2.25rem;padding-top:1.5rem;border-top:1px solid var(--border);font-size:0.85rem;line-height:1.6;color:var(--accent);letter-spacing:0.01em;max-width:62ch;text-wrap:pretty}
/* "Creator of the AI Search Readiness Scanner" credibility chip (key templates) */
.scanner-cred{display:inline-flex;align-items:center;gap:10px;margin-top:1.5rem;padding:9px 16px;border:1px solid var(--accent-dim);border-radius:2px;background:rgba(204,180,108,0.04);font-family:var(--font-sans);font-size:0.6rem;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--accent-bright);text-decoration:none;transition:background 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury)}
.scanner-cred:hover{background:rgba(204,180,108,0.1);border-color:var(--accent)}
.scanner-cred-mark{width:18px;height:18px;flex:0 0 auto}
/* Consultant vs Agency comparison table. Horizontal scroll on small screens
   keeps the two columns honestly side by side rather than stacking the verdict. */
.vs-wrap{margin-top:2.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:2px}
.vs-table{width:100%;min-width:620px;border-collapse:collapse;font-family:var(--font-sans)}
.vs-table thead th{text-align:left;padding:0 1.2rem 0.9rem;font-size:0.6rem;text-transform:uppercase;letter-spacing:0.2em;font-weight:600;color:var(--text-subtle);border-bottom:1px solid var(--border-strong);vertical-align:bottom}
.vs-table thead th.vs-us{color:var(--accent-bright)}
.vs-table tbody th{text-align:left;font-weight:600;font-size:0.6rem;text-transform:uppercase;letter-spacing:0.16em;color:var(--text-muted);padding:1.05rem 1.2rem;vertical-align:top;width:22%}
.vs-table tbody td{font-size:0.9rem;line-height:1.5;color:var(--text-muted);padding:1.05rem 1.2rem;vertical-align:top;border-bottom:1px solid var(--border);width:39%}
.vs-table td.vs-us{color:var(--text);background:var(--accent-faint);border-left:1px solid var(--accent-dim);border-right:1px solid var(--accent-dim)}
.vs-table tbody tr:last-child td{border-bottom:1px solid var(--border-strong)}
.vs-table tbody tr:last-child td.vs-us{border-bottom:1px solid var(--accent-dim)}
/* Mobile: a 3-column comparison table cannot fit a phone, and horizontal scroll reads
   as a clipped/broken column. Stack each attribute into a card with its two values
   clearly labelled, so nothing is cut off and nothing needs sideways scrolling. */
@media (max-width:640px){
  .vs-wrap{overflow-x:visible}
  .vs-table{display:block;width:100%;min-width:0}
  .vs-table tbody{display:block}
  .vs-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  .vs-table tbody tr{display:block;border:1px solid var(--border);border-radius:4px;margin-bottom:0.9rem;overflow:hidden}
  .vs-table tbody th[scope="row"]{display:block;width:auto;padding:0.85rem 1rem 0.55rem;color:var(--accent-bright);border:0;font-size:0.62rem}
  .vs-table tbody td{display:block;width:auto;padding:0.1rem 1rem 0.85rem;border:0;font-size:0.85rem}
  .vs-table tbody td::before{display:block;font-size:0.55rem;text-transform:uppercase;letter-spacing:0.14em;font-weight:700;margin-bottom:0.15rem;color:var(--text-subtle)}
  .vs-table tbody td.vs-us{background:var(--accent-faint);border-left:2px solid var(--accent-dim)}
  .vs-table tbody td.vs-us::before{content:"Senior Consultant";color:var(--accent-bright)}
  .vs-table tbody td:not(.vs-us)::before{content:"Traditional Agency"}
  .vs-table tbody tr:last-child td{border-bottom:0}
}
/* Case study meta strip (client / sector / discipline) and scope stats. */
.cs-meta{display:flex;flex-wrap:wrap;gap:16px 36px;margin:1.75rem 0 0;padding-top:1.5rem;border-top:1px solid var(--border);font-family:var(--font-sans)}
.cs-meta>div{display:flex;flex-direction:column;gap:5px}
.cs-meta dt{font-size:0.55rem;text-transform:uppercase;letter-spacing:0.2em;color:var(--text-subtle);font-weight:600}
.cs-meta dd{font-size:0.9rem;color:var(--text);margin:0;line-height:1.3}
.cs-note{margin-top:1.25rem;font-size:0.62rem;text-transform:uppercase;letter-spacing:0.16em;color:var(--text-subtle)}
.cs-scope{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border);border:1px solid var(--border);margin-top:2.5rem;border-radius:2px;overflow:hidden}
@media (min-width:769px){.cs-scope{grid-template-columns:repeat(3,1fr)}}
.cs-scope li{background:var(--bg);padding:1.6rem 1.4rem;display:flex;flex-direction:column;gap:8px}
.cs-scope-val{font-family:var(--font-serif);font-size:clamp(1.5rem,2.4vw,2.05rem);color:var(--accent-bright);line-height:1;font-variant-numeric:tabular-nums lining-nums}
.cs-scope-label{font-size:0.62rem;text-transform:uppercase;letter-spacing:0.14em;color:var(--text-muted);line-height:1.45}
.cs-built{list-style:none;margin-top:1.5rem}
.cs-built li{position:relative;padding:0.7rem 0 0.7rem 1.6rem;border-bottom:1px solid var(--border);font-size:0.95rem;color:var(--text-muted);line-height:1.5}
.cs-built li::before{content:"";position:absolute;left:0;top:1.15rem;width:8px;height:8px;border:1px solid var(--accent);border-radius:50%}
/* Experience brand grid (About page). Career brands worked with, set as an
   understated typographic wall rather than a logo soup. */
.brand-wall{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:2px;overflow:hidden;margin-top:2rem}
@media (min-width:600px){.brand-wall{grid-template-columns:repeat(3,1fr)}}
@media (min-width:900px){.brand-wall{grid-template-columns:repeat(4,1fr)}}
.brand-wall li{background:var(--bg);min-height:88px;padding:1.1rem 1rem;display:flex;align-items:center;justify-content:center;text-align:center;text-wrap:balance;font-family:var(--font-serif);font-size:1.05rem;line-height:1.2;color:var(--text-muted);transition:color 0.45s var(--ease-luxury),background 0.45s var(--ease-luxury)}
.brand-wall li:hover{color:var(--accent-bright);background:var(--accent-faint)}
/* Ask-an-AI proof panel: live-verify cards with per-engine deep links. */
.ai-ask-grid{display:grid;grid-template-columns:1fr;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:2px;overflow:hidden;margin-top:2.5rem}
@media (min-width:769px){.ai-ask-grid{grid-template-columns:repeat(3,1fr)}}
.ai-ask-card{background:var(--bg);padding:1.7rem 1.5rem;display:flex;flex-direction:column;gap:1.4rem;justify-content:space-between}
.ai-ask-q{font-family:var(--font-serif);font-size:1.2rem;line-height:1.32;color:#fff;margin:0;text-wrap:pretty}
.ai-ask-engines{display:flex;flex-wrap:wrap;gap:8px}
.ai-ask-engines a{font-family:var(--font-sans);font-size:0.62rem;text-transform:uppercase;letter-spacing:0.14em;font-weight:600;color:var(--accent);text-decoration:none;border:1px solid var(--accent-dim);border-radius:2px;padding:8px 14px;min-height:36px;display:inline-flex;align-items:center;transition:background 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury),color 0.4s var(--ease-luxury)}
.ai-ask-engines a:hover{background:var(--accent-faint);border-color:var(--accent);color:var(--accent-bright)}
/* The Forensic Method: numbered process steps. */
.method-list{list-style:none;margin-top:2rem}
.method-step{display:grid;grid-template-columns:auto 1fr;gap:1rem 1.5rem;padding:1.85rem 0;border-top:1px solid var(--border);align-items:start}
.method-step:last-child{border-bottom:1px solid var(--border)}
.method-num{font-family:var(--font-serif);font-size:clamp(1.9rem,3vw,2.7rem);line-height:0.85;color:var(--accent-bright);font-variant-numeric:tabular-nums lining-nums}
.method-body h3{font-family:var(--font-serif);font-size:clamp(1.3rem,2vw,1.7rem);color:#fff;margin:0 0 0.6rem;line-height:1.15}
.method-body p{margin:0;max-width:60ch;text-wrap:pretty}
.related-services{display:grid;grid-template-columns:1fr;gap:16px;margin-top:2rem}
@media (min-width:769px){.related-services{grid-template-columns:repeat(3,1fr)}}
.related-service{display:flex;flex-direction:column;gap:8px;padding:26px 24px;border:1px solid var(--border);border-radius:2px;text-decoration:none;background:rgba(255,255,255,0.01);transition:border-color 0.45s var(--ease-luxury),transform 0.45s var(--ease-luxury),background 0.45s var(--ease-luxury);box-shadow:inset 0 1px 0 rgba(255,255,255,0.05)}
.related-service:hover,.related-service:focus-visible{border-color:var(--accent-dim);background:var(--accent-faint);transform:translateY(-2px)}
.related-service-name{font-family:var(--font-serif);font-size:1.45rem;color:#fff;line-height:1.1}
.related-service-desc{font-size:0.6rem;text-transform:uppercase;letter-spacing:0.18em;color:var(--text-subtle);line-height:1.5}
.service-cta{border-top:1px solid var(--border);margin-top:1rem}
/* Homepage discipline cards: "Explore" link to the dedicated service page */
.comp-col{display:flex;flex-direction:column}
.comp-link{margin-top:auto;padding-top:22px;display:inline-flex;align-self:flex-start;align-items:center;gap:8px;font-family:var(--font-sans);font-size:0.7rem;text-transform:uppercase;letter-spacing:0.12em;font-weight:600;color:var(--accent);text-decoration:none;transition:color 0.4s var(--ease-luxury)}
.comp-link::after{content:'\2192';font-size:0.95rem;transition:transform 0.4s var(--ease-luxury)}
.comp-link:hover,.comp-link:focus-visible{color:var(--accent-bright)}
.comp-link:hover::after,.comp-link:focus-visible::after{transform:translateX(4px)}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill,textarea:-webkit-autofill:hover,textarea:-webkit-autofill:focus{-webkit-box-shadow:0 0 0px 1000px var(--bg) inset;-webkit-text-fill-color:#fff;transition:background-color 5000s ease-in-out 0s}
::placeholder{color:rgba(255,255,255,0.62);opacity:1}
.field-group{position:relative;margin-bottom:40px}
.field-group:last-of-type{margin-bottom:50px}
.input-field{width:100%;background:transparent;border:none;border-bottom:1px solid var(--border);padding:15px 0;color:#fff;font-family:var(--font-serif);font-size:1.5rem;outline:none;border-radius:0;transition:border-color 0.5s var(--ease-luxury);min-height:48px}
.input-field:focus{border-color:var(--accent)}
.input-field[aria-invalid="true"]{border-color:var(--error)}
.input-field[aria-invalid="false"]:not(:placeholder-shown){border-color:var(--success)}
.field-error{display:block;font-family:var(--font-sans);font-size:0.72rem;color:var(--error);min-height:1.2em;margin-top:6px;opacity:0;transform:translateY(-4px);transition:opacity 0.4s var(--ease-quick),transform 0.4s var(--ease-quick);letter-spacing:0.04em}
.field-error.visible{opacity:1;transform:translateY(0)}
select.input-field{background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:rgba(255,255,255,0.3);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 fill='%23CCB46C' d='M6 8L0 0h12z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 4px center;padding-right:24px}
select.input-field.has-value{color:var(--text)}
select.input-field option{background:var(--bg);color:var(--text)}
textarea.input-field.challenge-textarea{resize:none;height:100px}
.submit-btn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--accent-dim);color:var(--accent);-webkit-text-fill-color:var(--accent);font-family:var(--font-sans);font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;cursor:pointer;width:max-content;opacity:1;transition:background 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury),color 0.4s var(--ease-luxury);min-height:50px;padding:15px 34px;border-radius:2px}
.submit-btn:hover,.submit-btn:focus-visible{background:rgba(204,180,108,0.08);border-color:var(--accent);color:var(--accent)}
.submit-btn:disabled{cursor:wait;opacity:0.6}
.form-status{font-family:var(--font-sans);font-size:0.85rem;color:var(--text-muted);margin-top:1rem;min-height:1.4em;transition:color 0.4s var(--ease-quick)}
.form-status.success{color:var(--success)}
.form-status.error{color:var(--error)}
.contact-image-container{position:relative;top:0;margin-bottom:50px}
@media (min-width:1025px){.contact-image-container{position:sticky;top:120px;margin-bottom:0}}
footer{border-top:1px solid var(--border);padding:clamp(2.75rem,7vw,5rem) 0 clamp(2rem,4vw,2.5rem);margin-top:clamp(3.5rem,9vw,6.25rem);font-size:0.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.15em;content-visibility:auto;contain-intrinsic-block-size:280px;position:relative;z-index:1;background-color:var(--bg)}
.footer-flex{display:flex;justify-content:space-between;flex-wrap:wrap;gap:20px;margin-bottom:40px;align-items:flex-end}
.footer-nav-internal{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:30px;margin-bottom:30px;padding:24px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.footer-nav-internal a{color:var(--text-muted);text-decoration:none;transition:color 0.4s var(--ease-luxury);min-height:32px;display:inline-flex;align-items:center}
.footer-nav-internal a:hover,.footer-nav-internal a:focus-visible{color:var(--accent)}
.social-link{margin-right:20px;color:inherit;text-decoration:none;transition:color 0.4s var(--ease-luxury);transform-origin:center;display:inline-block;padding:8px 0;min-height:44px;line-height:28px}
.social-link:hover,.social-link:focus-visible{color:var(--accent)}
.whatsapp-link{color:var(--accent);text-decoration:none;transition:opacity 0.4s var(--ease-luxury);display:inline-block;transform-origin:center}
.whatsapp-link:hover,.whatsapp-link:focus-visible{opacity:0.7}
.address-link{color:var(--text);text-decoration:underline;text-decoration-color:var(--accent-dim);text-underline-offset:4px;transition:color 0.4s var(--ease-luxury),text-decoration-color 0.4s var(--ease-luxury);display:inline-block}
.address-link:hover,.address-link:focus-visible{color:var(--accent);text-decoration-color:var(--accent)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (max-width:768px){.desktop-br{display:none}}
.architecture-frame{font-family:var(--font-sans);background:rgba(17,17,17,0.4);border:1px solid rgba(204,180,108,0.15);border-radius:0;overflow:hidden;position:relative;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.architecture-frame.spacing-arch{margin-bottom:90px}
.architecture-frame::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(204,180,108,0.4) 50%,transparent);opacity:0.6}
.arch-header{padding:48px 44px 42px;border-bottom:1px solid rgba(255,255,255,0.08);position:relative;background:linear-gradient(180deg,rgba(204,180,108,0.02) 0%,transparent 100%)}
.arch-counter{font-size:10px;text-transform:uppercase;letter-spacing:0.2em;color:rgba(204,180,108,0.6);font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.arch-counter::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,rgba(204,180,108,0.3),transparent)}
.arch-title{font-family:var(--font-serif);font-size:clamp(1.5rem,2.7vw,1.9rem);font-weight:300;font-style:italic;color:#F2F2F2;line-height:1.3;letter-spacing:-0.02em;margin-bottom:12px;text-wrap:balance}
.arch-subtitle{font-size:14px;color:var(--text-muted);line-height:1.65;max-width:560px;font-weight:300}
.arch-section{border-bottom:1px solid rgba(255,255,255,0.06);position:relative}
.arch-section:last-of-type{border-bottom:none}
.arch-section::before{content:'';position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,rgba(204,180,108,0.08),transparent);transition:width 0.6s var(--ease-luxury);pointer-events:none}
.arch-section:hover::before{width:100%}
.arch-section:hover{background:rgba(255,255,255,0.01)}
.section-trigger{appearance:none;-webkit-appearance:none;background:none;border:none;border-radius:0;font-family:var(--font-sans);text-align:left;width:100%;display:flex;align-items:center;gap:20px;padding:28px 44px;cursor:pointer;user-select:none;position:relative;transition:background 0.4s var(--ease-luxury);min-height:48px}
.section-index{font-size:10px;text-transform:uppercase;letter-spacing:0.18em;color:rgba(204,180,108,0.7);font-weight:600;min-width:24px;transition:color 0.4s ease}
.arch-section:hover .section-index,.arch-section.active .section-index{color:var(--accent)}
.section-label{font-size:16px;font-weight:500;color:#F2F2F2;flex:1;transition:transform 0.4s var(--ease-luxury),color 0.4s ease;line-height:1.4}
.arch-section:hover .section-label{transform:translateX(4px)}
.section-category{font-size:10px;text-transform:uppercase;letter-spacing:0.12em;color:rgba(168,168,168,0.85);border:0.5px solid rgba(255,255,255,0.1);padding:6px 16px;border-radius:2px;white-space:nowrap;font-weight:500;transition:all 0.4s ease}
.arch-section:hover .section-category{border-color:rgba(204,180,108,0.3);color:rgba(204,180,108,0.9)}
.section-icon{width:30px;height:30px;border:1px solid rgba(204,180,108,0.25);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;color:rgba(204,180,108,0.6);transition:all 0.5s var(--ease-luxury);flex-shrink:0}
.arch-section.active .section-icon{transform:rotate(45deg);background:rgba(204,180,108,0.1);border-color:rgba(204,180,108,0.5)}
.section-content{height:0;overflow:hidden;transition:height 0.55s var(--ease-luxury)}
.section-inner{padding:0 44px 36px 88px;border-top:1px solid rgba(255,255,255,0.04);opacity:0;transform:translateY(-10px);transition:opacity 0.5s var(--ease-luxury) 0.1s,transform 0.5s var(--ease-luxury) 0.1s}
.arch-section.active .section-inner{opacity:1;transform:translateY(0)}
.section-prose{font-size:14.5px;color:#B8B8B8;line-height:1.7;margin:24px 0 20px;font-weight:300}
.section-prose strong{color:#F2F2F2;font-weight:500}
.section-prose em{color:rgba(204,180,108,0.75);font-style:italic;font-weight:300}
.capabilities{display:flex;flex-wrap:wrap;gap:8px}
.capability{font-size:11.5px;color:var(--text-muted);border:0.5px solid rgba(255,255,255,0.1);padding:7px 14px;border-radius:2px;background:rgba(255,255,255,0.01);transition:all 0.3s var(--ease-luxury);font-weight:400;opacity:0;transform:translateY(8px)}
.arch-section.active .capability{animation:capabilityReveal 0.5s var(--ease-luxury) forwards}
@keyframes capabilityReveal{to{opacity:1;transform:translateY(0)}}
.capability:hover{border-color:var(--accent-dim);color:var(--text);background:var(--accent-faint)}
.capability:nth-child(1){animation-delay:0.05s}
.capability:nth-child(2){animation-delay:0.08s}
.capability:nth-child(3){animation-delay:0.11s}
.capability:nth-child(4){animation-delay:0.14s}
.capability:nth-child(5){animation-delay:0.17s}
.capability:nth-child(6){animation-delay:0.20s}
.capability:nth-child(7){animation-delay:0.23s}
.capability:nth-child(8){animation-delay:0.26s}
.capability:nth-child(9){animation-delay:0.29s}
.capability:nth-child(10){animation-delay:0.32s}
.capability:hover{background:rgba(204,180,108,0.04);border-color:rgba(204,180,108,0.25);color:rgba(204,180,108,0.95);transform:translateY(-1px)}
.capability.premium{color:rgba(204,180,108,0.9);border-color:rgba(204,180,108,0.35);background:rgba(204,180,108,0.08);font-weight:500}
.capability.premium:hover{background:rgba(204,180,108,0.14);border-color:rgba(204,180,108,0.55);color:var(--accent)}
.arch-footer{padding:32px 44px;background:rgba(17,17,17,0.6);border-top:1px solid rgba(255,255,255,0.08);display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap}
.footer-disclaimer{font-size:12.5px;color:rgba(168,168,168,0.9);line-height:1.6;flex:1;min-width:220px;font-weight:300}
.footer-disclaimer strong{color:#F2F2F2;font-weight:500}
.footer-action{appearance:none;-webkit-appearance:none;font-family:var(--font-sans);font-size:11px;text-transform:uppercase;letter-spacing:0.12em;color:var(--accent);border:1px solid rgba(204,180,108,0.4);padding:14px 28px;border-radius:2px;cursor:pointer;background:rgba(204,180,108,0.03);white-space:nowrap;transition:all 0.4s var(--ease-luxury);font-weight:500;position:relative;overflow:hidden;min-height:44px}
.footer-action::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(204,180,108,0.15),transparent);transition:left 0.6s ease}
.footer-action:hover::before,.footer-action:focus-visible::before{left:100%}
.footer-action:hover,.footer-action:focus-visible{background:rgba(204,180,108,0.1);border-color:rgba(204,180,108,0.65);transform:translateY(-1px)}
.footer-action:active{transform:translateY(0)}
body.custom-cursor-active .arch-section,body.custom-cursor-active .section-trigger,body.custom-cursor-active .section-inner,body.custom-cursor-active .capability,body.custom-cursor-active .arch-header,body.custom-cursor-active .arch-footer,body.custom-cursor-active .footer-action{cursor:none!important}
@media (max-width:768px){.arch-header{padding:36px 28px 32px}.arch-subtitle{font-size:13.5px}.section-trigger{padding:24px 28px;gap:16px}.section-label{font-size:15px}.section-inner{padding:0 28px 32px 28px}.section-prose{font-size:14px}.arch-footer{padding:28px 28px;flex-direction:column;align-items:flex-start}.section-category{display:none}.capability{font-size:11px}}
#contact{content-visibility:auto;contain-intrinsic-block-size:700px}
 
/* Utility classes (replacing inline styles for SEO/performance audits) */
.delay-2{transition-delay:0.1s}
.delay-3{transition-delay:0.2s}
.gtm-noscript{display:none;visibility:hidden}
.spaced-md{margin-top:clamp(2.75rem,5vw,5rem)}
.spaced-lg{margin-top:clamp(3.5rem,6vw,6.25rem)}
.spaced-xl{margin-top:clamp(4.5rem,7vw,7.5rem)}
.lede{margin-bottom:1.25rem}
.contact-grid{display:grid;grid-template-columns:1fr;gap:60px;align-items:start}
@media (min-width:1025px){.contact-grid{grid-template-columns:0.8fr 1.2fr;gap:100px}}
.location-frame{border:1px solid var(--border);background:#111;overflow:hidden;aspect-ratio:2/3}
.location-frame img{width:100%;height:100%;object-fit:cover;opacity:0.9}
.location-meta{margin-top:20px}
.fine-print{font-size:0.85rem;color:var(--text-muted)}
.form-container.lazy-reveal{transition-delay:0.2s}
.contact-heading{margin-bottom:40px}
.honeypot{position:absolute;left:-9999px;top:-9999px}
.form-actions{display:flex;flex-direction:column;gap:20px;align-items:flex-start;margin-top:20px}
.form-fallback{font-size:0.85rem;color:var(--text-muted)}
.footer-address{font-style:normal;margin-bottom:30px}
.copyright{color:var(--text-muted)}
.tm{font-size:0.58em;vertical-align:super;letter-spacing:0;margin-left:1px;color:var(--accent)}
.consent-note{margin:0.9rem 0 0;font-size:0.76rem;line-height:1.5;color:var(--text-muted)}
.scn-scope{margin:1rem auto 0;max-width:46ch;font-size:0.8rem;line-height:1.55;color:var(--text-muted);text-align:center}
.consent-note a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:from-font}
.scn-journey{margin:1.9rem auto 0;max-width:470px;text-align:center}
.scn-journey-cap{margin:0 0 1.2rem;font-size:0.78rem;letter-spacing:0.02em;color:var(--text-muted)}
.scn-journey-cap .scn-tm{color:var(--accent)}
.scn-track{display:flex;align-items:flex-start;justify-content:center;list-style:none;margin:0;padding:0}
.scn-tk{position:relative;flex:1 1 0;display:flex;flex-direction:column;align-items:center;gap:9px;text-align:center;min-width:0}
.scn-tk:not(:first-child)::before{content:"";position:absolute;top:17px;right:50%;width:100%;height:1px;background:var(--border-strong,var(--border))}
.scn-tk a{display:flex;flex-direction:column;align-items:center;gap:9px;text-decoration:none;color:inherit}
.scn-tk-dot{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:35px;height:35px;border-radius:50%;border:1px solid var(--border-strong,var(--border));background:var(--bg,#0a0a0a);font-size:0.86rem;font-weight:700;color:var(--text-muted);font-variant-numeric:tabular-nums}
.scn-tk-lb{font-size:0.78rem;letter-spacing:0.03em;color:var(--text-muted)}
.scn-tk.is-on .scn-tk-dot{border-color:var(--accent);background:var(--accent);color:#0a0a0a;box-shadow:0 0 0 4px rgba(204,180,108,0.12)}
.scn-tk.is-on .scn-tk-lb{color:var(--accent-bright,#E4CC84)}
.scn-tk:not(.is-on) a:hover .scn-tk-dot{border-color:var(--accent-dim,var(--accent));color:var(--text)}
.scn-tk:not(.is-on) a:hover .scn-tk-lb{color:var(--text)}
.legal-line{border-top:1px solid var(--border);padding-top:25px;font-size:0.58rem;color:#949494;letter-spacing:0.12em;text-transform:uppercase;line-height:1.9}
.vat-num{unicode-bidi:isolate;white-space:nowrap}
.legal-link{color:inherit;text-decoration:underline;text-underline-offset:4px}
.legal-btn{background:none;border:none;color:inherit;text-decoration:underline;text-underline-offset:4px;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;padding:0}
 
#tcc-cmp{position:fixed;inset:0;pointer-events:none;z-index:99990;font-family:var(--font-sans)}
#tcc-cmp[hidden]{display:none}
.cmp-banner{position:absolute;left:50%;bottom:24px;transform:translateX(-50%) translateY(calc(100% + 48px));width:min(92%,1080px);background:rgba(12,12,13,0.86);border:1px solid rgba(204,180,108,0.18);backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);pointer-events:auto;opacity:0;transition:transform 1.1s var(--ease-luxury),opacity 0.9s var(--ease-luxury);will-change:transform,opacity;box-shadow:0 30px 80px -20px rgba(0,0,0,0.6),0 0 0 1px rgba(0,0,0,0.4)}
.cmp-banner::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(204,180,108,0.55) 50%,transparent)}
#tcc-cmp.is-open .cmp-banner{transform:translateX(-50%) translateY(0);opacity:1}
.cmp-banner-inner{display:grid;grid-template-columns:1fr;gap:28px;padding:36px 40px}
@media (min-width:880px){.cmp-banner-inner{grid-template-columns:1.5fr auto;align-items:center;gap:48px}}
.cmp-eyebrow{font-size:10px;text-transform:uppercase;letter-spacing:0.22em;color:rgba(204,180,108,0.7);font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:10px}
.cmp-eyebrow::after{content:'';flex:1;max-width:80px;height:1px;background:linear-gradient(90deg,rgba(204,180,108,0.35),transparent)}
.cmp-headline{font-family:var(--font-serif);font-style:italic;font-weight:300;font-size:clamp(1.4rem,2.4vw,1.85rem);line-height:1.25;color:#fff;letter-spacing:-0.015em;margin-bottom:10px}
.cmp-headline em{color:var(--accent);font-style:italic}
.cmp-body{font-size:13.5px;color:var(--text-muted);line-height:1.65;font-weight:300;max-width:60ch}
.cmp-body a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-dim);text-underline-offset:4px;transition:text-decoration-color 0.4s var(--ease-luxury)}
.cmp-body a:hover,.cmp-body a:focus-visible{text-decoration-color:var(--accent)}
.cmp-actions{display:flex;flex-direction:column;gap:10px;min-width:0}
@media (min-width:600px){.cmp-actions{flex-direction:row;flex-wrap:wrap}}
@media (min-width:880px){.cmp-actions{flex-direction:column;min-width:200px}}
.cmp-btn{appearance:none;-webkit-appearance:none;font-family:var(--font-sans);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;padding:14px 26px;border-radius:2px;cursor:pointer;white-space:nowrap;position:relative;overflow:hidden;transition:all 0.5s var(--ease-luxury);min-height:44px}
.cmp-btn::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(204,180,108,0.18),transparent);transition:left 0.7s ease}
.cmp-btn:hover::before,.cmp-btn:focus-visible::before{left:100%}
.cmp-btn--primary{background:var(--accent-leaf);color:var(--on-accent);border:1px solid var(--accent)}
.cmp-btn--primary:hover,.cmp-btn--primary:focus-visible{background:var(--accent-bright);border-color:var(--accent-bright);transform:translateY(-1px)}
.cmp-btn--ghost{background:rgba(204,180,108,0.04);color:var(--accent);border:1px solid rgba(204,180,108,0.4)}
.cmp-btn--ghost:hover,.cmp-btn--ghost:focus-visible{background:rgba(204,180,108,0.1);border-color:rgba(204,180,108,0.7);transform:translateY(-1px)}
.cmp-btn--text{background:transparent;color:var(--text-muted);border:1px solid transparent;padding-left:0;padding-right:0;letter-spacing:0.18em}
.cmp-btn--text:hover,.cmp-btn--text:focus-visible{color:#fff}
.cmp-btn--text::before{display:none}
/* Cookie banner (Nic): Accept All + Decline All join the machined family, STATIC (not macro conversions).
   The primary reuses the shimmer ::before as a champagne bezel and ::after as the gilded face; ghost is a quiet
   step down. Customise stays a plain text button. */
.cmp-btn--primary,.cmp-btn--ghost{isolation:isolate;border:0!important;background:transparent!important;color:#2a1c05!important;text-shadow:0 1px 0 rgba(255,248,224,0.5);overflow:visible}
.cmp-btn--primary::before,.cmp-btn--ghost::before{inset:0;left:0;width:auto;z-index:-3;border-radius:inherit;padding:2px;background:conic-gradient(from var(--lmang,0deg),#4b402a,#e6dcc4,#b0a488,#f7f1e4,#6e6146,#d8ccb2,#4b402a,#f7f1e4,#4b402a);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;transition:filter .3s ease;animation:none}
.cmp-btn--primary:hover::before,.cmp-btn--primary:focus-visible::before,.cmp-btn--ghost:hover::before,.cmp-btn--ghost:focus-visible::before{left:0;filter:brightness(1.1) saturate(1.04)}
.cmp-btn--primary::after,.cmp-btn--ghost::after{content:'';position:absolute;inset:2px;z-index:-2;border-radius:1px;background:linear-gradient(160deg,#f7edc6 0%,#ecd693 42%,#d9bd6f 72%,#bd9a44 100%);box-shadow:inset 0 1px 0 rgba(255,251,236,0.75),inset 0 -3px 7px -3px rgba(80,52,12,0.55),inset 0 0 0 1px rgba(58,40,12,0.28)}
.cmp-btn--ghost{color:#3a2a0c!important}
.cmp-btn--ghost::before{opacity:.6;filter:saturate(.82)}
.cmp-btn--ghost::after{background:linear-gradient(160deg,#eeddad 0%,#dcc27b 55%,#b08c3c 100%)}
.cmp-btn--primary:hover,.cmp-btn--primary:focus-visible,.cmp-btn--ghost:hover,.cmp-btn--ghost:focus-visible{background:transparent!important;transform:translateY(-1px)}
.cmp-modal-backdrop{position:absolute;inset:0;background:rgba(5,5,5,0.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity 0.6s var(--ease-luxury)}
#tcc-cmp.modal-open .cmp-modal-backdrop{opacity:1;pointer-events:auto}
.cmp-modal{position:absolute;top:50%;left:50%;transform:translate(-50%,-45%) scale(0.96);width:min(92%,720px);max-height:86vh;background:rgba(12,12,13,0.95);border:1px solid rgba(204,180,108,0.2);backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px);opacity:0;pointer-events:none;transition:opacity 0.7s var(--ease-luxury),transform 0.9s var(--ease-luxury);display:flex;flex-direction:column;box-shadow:0 40px 100px -20px rgba(0,0,0,0.7)}
.cmp-modal::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(204,180,108,0.55) 50%,transparent)}
#tcc-cmp.modal-open .cmp-modal{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}
.cmp-modal-header{padding:38px 40px 28px;border-bottom:1px solid rgba(255,255,255,0.06);background:linear-gradient(180deg,rgba(204,180,108,0.025) 0%,transparent 100%);flex-shrink:0}
.cmp-modal-title{font-family:var(--font-serif);font-style:italic;font-weight:300;font-size:1.75rem;line-height:1.25;color:#fff;letter-spacing:-0.02em;margin-bottom:10px}
.cmp-modal-sub{font-size:13px;color:var(--text-muted);line-height:1.65;font-weight:300;max-width:56ch}
.cmp-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(204,180,108,0.3) transparent}
.cmp-modal-body::-webkit-scrollbar{width:6px}
.cmp-modal-body::-webkit-scrollbar-thumb{background:rgba(204,180,108,0.3);border-radius:3px}
.cmp-cat{padding:22px 40px;border-bottom:1px solid rgba(255,255,255,0.05);display:flex;justify-content:space-between;align-items:flex-start;gap:24px}
.cmp-cat>div:first-child{flex:1 1 0%;min-width:0}
.cmp-cat:last-child{border-bottom:none}
.cmp-cat-name{font-size:14px;font-weight:500;color:#F2F2F2;margin-bottom:6px;display:flex;align-items:center;gap:10px}
.cmp-cat-name .lock{font-size:9px;text-transform:uppercase;letter-spacing:0.15em;color:rgba(204,180,108,0.7);border:0.5px solid rgba(204,180,108,0.3);padding:3px 8px}
.cmp-cat-desc{font-size:12.5px;color:var(--text-muted);line-height:1.65;font-weight:300}
.cmp-toggle{position:relative;width:44px;height:24px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);border-radius:24px;cursor:pointer;flex-shrink:0;transition:all 0.4s var(--ease-luxury)}
.cmp-toggle::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;background:#888;border-radius:50%;transition:all 0.4s var(--ease-luxury)}
.cmp-toggle[aria-checked="true"]{background:rgba(204,180,108,0.25);border-color:rgba(204,180,108,0.5)}
.cmp-toggle[aria-checked="true"]::after{left:calc(100% - 20px);background:var(--accent);box-shadow:0 0 12px rgba(204,180,108,0.4)}
.cmp-toggle[aria-disabled="true"]{cursor:not-allowed;opacity:0.7}
.cmp-toggle:focus-visible{outline:2px dashed var(--accent);outline-offset:4px}
.cmp-modal-footer{padding:24px 40px;flex-shrink:0;border-top:1px solid rgba(255,255,255,0.08);background:rgba(8,8,9,0.6);display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.cmp-reopen{position:fixed;right:24px;bottom:24px;z-index:99980;appearance:none;background:rgba(12,12,13,0.85);border:1px solid rgba(204,180,108,0.3);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;visibility:hidden;opacity:0;pointer-events:none;transition:opacity 0.6s var(--ease-luxury),visibility 0s linear 0.6s,transform 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury)}
.cmp-reopen.visible{visibility:visible;opacity:1;pointer-events:auto;transition:opacity 0.6s var(--ease-luxury),visibility 0s linear 0s,transform 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury)}
.cmp-reopen:hover,.cmp-reopen:focus-visible{transform:scale(1.08);border-color:var(--accent)}
.cmp-reopen svg{width:18px;height:18px;stroke:var(--accent);fill:none;stroke-width:1.4}
.cmp-reopen.near-footer,.cmp-reopen.near-section{opacity:0;visibility:hidden;pointer-events:none;transition:opacity 0.4s var(--ease-luxury),visibility 0s linear 0.4s}
@media (max-width:768px){.cmp-banner-inner{padding:28px 24px}.cmp-modal{top:2dvh;bottom:calc(2dvh + env(safe-area-inset-bottom) + 20px);left:50%;transform:translateX(-50%) scale(0.96);width:min(94%,720px);max-height:none;height:auto;overflow:hidden;display:flex;flex-direction:column}#tcc-cmp.modal-open .cmp-modal{transform:translateX(-50%) scale(1)}.cmp-modal-header{padding:18px 24px 14px;flex:0 0 auto}.cmp-modal-title{font-size:1.3rem;margin-bottom:6px}.cmp-modal-sub{font-size:12px;line-height:1.5}.cmp-modal-body{flex:1 1 0;flex-grow:1;flex-shrink:1;flex-basis:0;min-height:0;height:auto;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;-webkit-mask-image:linear-gradient(to bottom,black 0%,black calc(100% - 8px),transparent 100%);mask-image:linear-gradient(to bottom,black 0%,black calc(100% - 8px),transparent 100%)}.cmp-modal-body .cmp-cat{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;gap:16px;padding:12px 24px;width:100%}.cmp-modal-body .cmp-cat>div:first-child{flex:1 1 auto;min-width:0}.cmp-cat-name{font-size:13px;margin-bottom:3px}.cmp-cat-desc{font-size:11px;line-height:1.45}.cmp-modal-footer{padding:10px 24px 30px;gap:5px;flex:0 0 auto}.cmp-actions{flex-direction:column}.cmp-btn{width:100%;padding:12px 18px;font-size:10px;letter-spacing:0.14em}}
body.custom-cursor-active .cmp-banner,body.custom-cursor-active .cmp-modal,body.custom-cursor-active .cmp-btn,body.custom-cursor-active .cmp-toggle,body.custom-cursor-active .cmp-reopen{cursor:none!important}
@media print{#tcc-cmp,.cmp-reopen{display:none!important}}
 
/* === Yellow latch: Private London Estate stays gold once revealed === */
.ledger-row.revealed h3{color:var(--accent)}
@media (min-width:769px){.ledger-row.revealed:hover h3{transform:translateX(10px)}}
 
/* === Senior Mind / Founder section === */
.founder-section{margin-bottom:120px}
.founder-grid{display:grid;grid-template-columns:1fr;gap:50px;margin-top:60px;align-items:start}
@media (min-width:769px){.founder-grid{grid-template-columns:0.85fr 1fr;gap:80px}}
.founder-portrait{position:relative;aspect-ratio:4/5;overflow:hidden;border:1px solid var(--border);background:#111}
.founder-portrait img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:grayscale(100%) contrast(1.05);transition:filter 1.2s var(--ease-luxury),transform 1.5s var(--ease-luxury);will-change:transform,filter}
.founder-portrait:hover img{filter:grayscale(0%) contrast(1);transform:scale(1.02)}
.founder-portrait::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(5,5,5,0.55) 100%);pointer-events:none}
.founder-tag{position:absolute;bottom:18px;left:18px;right:18px;z-index:2;font-size:0.6rem;text-transform:uppercase;letter-spacing:0.2em;color:var(--text);display:flex;justify-content:space-between;gap:12px;font-family:var(--font-sans)}
.founder-tag span:last-child{color:var(--accent)}
.founder-bio .name-line{font-family:var(--font-sans);font-size:0.7rem;text-transform:uppercase;letter-spacing:0.25em;color:var(--accent);margin-bottom:1.5rem;display:block}
.founder-bio h3{font-size:clamp(1.4rem,2.5vw,2rem);margin-bottom:1.5rem;line-height:1.15}
.founder-bio p+p{margin-top:1.25rem}
.founder-bio .pull-quote{font-family:var(--font-serif);font-style:italic;font-size:clamp(1.05rem,1.5vw,1.35rem);color:#fff;line-height:1.4;max-width:none;padding-top:1.5rem;border-top:1px solid var(--border);margin-top:2rem;text-wrap:pretty}
.founder-signature{display:block;font-family:var(--font-signature);font-size:clamp(3rem,4.6vw,4.6rem);color:var(--accent-bright);line-height:0.9;margin-top:1.8rem}
/* The founder's sign-off outranks client testimonial signatures: grander
   scale, plus a tapered pen-stroke underline (a genuine signed-mark cue)
   that the client .verdict-sig names do not carry. */
.founder-signature::after{content:"";display:block;width:clamp(118px,15vw,176px);height:1px;margin-top:0.5rem;background:linear-gradient(90deg,var(--accent),var(--accent-dim) 55%,transparent);opacity:0.85}
/* The Verdict - client testimonials */
.verdict-rating{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0.5rem 0 3.5rem;padding-bottom:2.5rem;border-bottom:1px solid var(--border)}
.verdict-stars{display:inline-flex;gap:4px;color:var(--accent);font-size:1.05rem;letter-spacing:2px;line-height:1}
.verdict-g{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0}
.verdict-g svg{width:100%;height:100%;display:block}
.verdict-score{font-family:var(--font-serif);font-size:2rem;color:#fff;line-height:1;font-weight:500;letter-spacing:0.01em}
.verdict-source{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.22em;color:var(--text-subtle)}
.verdict-rating a{font-size:0.7rem;text-transform:uppercase;letter-spacing:0.22em;color:var(--text-muted);text-decoration:none;border-bottom:1px solid var(--border-strong);padding-bottom:3px;margin-left:auto;transition:color 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury)}
.verdict-rating a:hover{color:var(--accent);border-color:var(--accent)}
.verdict-grid{display:grid;grid-template-columns:1fr;gap:3rem 4.5rem;align-items:start}
@media (min-width:769px){.verdict-grid{grid-template-columns:repeat(2,1fr)}}
.verdict-quote{margin:0;display:flex;flex-direction:column}
.verdict-quote blockquote{font-family:var(--font-serif);font-style:italic;font-size:clamp(1.15rem,1.6vw,1.4rem);line-height:1.45;color:#fff;margin:0;text-wrap:pretty}
.verdict-quote blockquote::before{content:'';display:block;width:28px;height:1px;background:var(--accent);margin-bottom:1.6rem}
.verdict-quote .verdict-author{margin-top:1.7rem;display:flex;flex-direction:column;gap:0.55rem}
/* The signature font has a leading flourish that overhangs the text origin, so give every client name a
   uniform left inset. Without it the cursive capital sits against the gutter and reads as clipped on mobile
   (body has overflow-x:hidden). One value here replaces the uneven per-name padding nudges. */
.verdict-sig{font-family:var(--font-signature);font-size:clamp(2.1rem,2.6vw,2.55rem);line-height:0.85;color:var(--accent-bright);font-weight:400;letter-spacing:0.01em;padding-left:0.4em}
.verdict-co{font-family:var(--font-sans);font-size:0.66rem;text-transform:uppercase;letter-spacing:0.24em;color:var(--accent);font-weight:600}
@media (min-width:769px){.verdict-quote.is-lead{grid-column:1 / -1;padding-bottom:1rem;border-bottom:1px solid var(--border)}}
.verdict-quote.is-lead blockquote{font-size:clamp(1.5rem,2.3vw,2.05rem);line-height:1.36}
.verdict-quote.is-lead blockquote::before{width:40px;margin-bottom:1.8rem}
 
/* === Operating Standards (commitments) band === */
.commitments-grid{display:grid;grid-template-columns:1fr;gap:1px;margin-top:50px;background:var(--border);border:1px solid var(--border)}
@media (min-width:600px){.commitments-grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:900px){.commitments-grid{grid-template-columns:repeat(4,1fr)}}
.commitment{background:var(--bg);padding:36px 30px 38px;transition:background 0.5s var(--ease-luxury);position:relative;overflow:hidden}
.commitment::after{content:'';position:absolute;top:0;left:0;height:2px;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-dim));transition:width 0.6s var(--ease-luxury)}
.commitment:hover{background:var(--bg-elevated)}
.commitment:hover::after{width:100%}
.commitment-num{font-family:var(--font-serif);font-style:italic;font-size:1.5rem;color:var(--accent);display:block;margin-bottom:18px;opacity:0.9;line-height:1}
.commitment-title{font-family:var(--font-serif);font-weight:300;font-size:1.3rem;color:#fff;margin:0 0 10px 0;line-height:1.2;letter-spacing:-0.01em}
.commitment p{font-size:0.85rem;line-height:1.55;max-width:none;color:var(--text-muted)}
 
/* === Ledger intro spacing === */
.ledger-intro{margin-bottom:60px;max-width:60ch}
.ledger-intro h2{margin-top:0.6rem;margin-bottom:1rem}

/* City page hero - tighter sizing to fit all content above fold */
.city-hero .hero-title{font-size:clamp(2.5rem,6vw,5.5rem)}
.city-hero .hero-content{padding-top:6vh}
.city-hero .hero-subhead{margin-top:1rem;font-size:clamp(0.85rem,1vw,1rem)}
.city-hero .accreditations{margin-top:1.5rem;padding-top:1.5rem}
.city-hero .label{margin-top:2rem;margin-bottom:1rem}
.city-hero .hero-proof{margin-top:1.25rem}
/* Region/city heroes: the subhead runs wider than the homepage's and crosses the
   brighter part of the background video, so add a directional scrim behind the text
   for guaranteed contrast without flattening the image. Scoped to .city-hero, so the
   homepage hero is untouched. Sits above the video, below .hero-content (z-index:2). */
.city-hero .hero-video-wrapper::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(95deg,rgba(5,5,5,0.9) 0%,rgba(5,5,5,0.6) 40%,rgba(5,5,5,0.3) 70%,rgba(5,5,5,0.18) 100%)}
@media (max-width:768px){.city-hero .hero-video-wrapper::before{background:linear-gradient(180deg,rgba(5,5,5,0.4) 0%,rgba(5,5,5,0.62) 55%,rgba(5,5,5,0.82) 100%)}}

/* City tier pill */
.city-tier-pill{display:inline-flex;align-items:center;gap:8px;font-size:0.6rem;text-transform:uppercase;letter-spacing:0.22em;color:var(--accent);border:1px solid var(--accent-dim);padding:7px 16px;margin-bottom:1.5rem;font-family:var(--font-sans);font-weight:500}
.city-tier-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0}
/* Service hero (services.njk): keep the positioning pill as a tight pair with the
   discipline eyebrow rather than stranded above it. Scoped to .service-hero so
   city heroes are untouched. ('Speak with Nic' lives in the nav, so the hero
   leads with the scanner-cred chip rather than duplicating the CTA above the fold.) */
.service-hero .city-tier-pill{margin-bottom:0}
.service-hero .label{margin-top:1.1rem}

.breadcrumb-nav{padding:1.5rem 0 0;margin-bottom:-1rem}
.breadcrumb{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 8px;list-style:none;font-size:0.65rem;text-transform:uppercase;letter-spacing:0.15em;color:var(--text-subtle);line-height:1.5}
.breadcrumb li+li::before{content:"›";margin-right:8px;opacity:0.5}
.breadcrumb a{color:var(--text-muted);text-decoration:none;white-space:nowrap;transition:color 0.4s var(--ease-luxury)}
.breadcrumb a:hover{color:var(--accent)}

/* Hero-less pages (hub, USA): clear the fixed 90px navbar */
.page-top-offset{padding-top:90px}

.container a:not(.acc-link):not(.whatsapp-link):not(.address-link):not(.nav-cta):not(.logo):not(.social-link):not(.footer-nav-internal a):not(.legal-link):not(.breadcrumb a){color:var(--accent-text);text-decoration:underline;text-decoration-color:var(--accent-dim);text-underline-offset:4px;transition:color 0.4s var(--ease-luxury),text-decoration-color 0.4s var(--ease-luxury)}
.container a:not(.acc-link):not(.whatsapp-link):not(.address-link):not(.nav-cta):not(.logo):not(.social-link):not(.footer-nav-internal a):not(.legal-link):not(.breadcrumb a):hover{text-decoration-color:var(--accent)}

.section-pad p+p,.spaced-md p+p,.spaced-lg p+p{margin-top:1.25rem}

/* ── Privacy Policy page ── */
html{scroll-padding-top:110px}
.nav-back{background:none;border:1px solid var(--border);color:var(--accent);text-transform:uppercase;font-size:0.65rem;letter-spacing:0.15em;padding:14px 26px;cursor:pointer;transition:background 0.6s var(--ease-luxury),color 0.6s var(--ease-luxury),border-color 0.6s var(--ease-luxury);text-decoration:none;display:inline-flex;align-items:center;font-family:var(--font-sans);min-height:44px}
.nav-back:hover,.nav-back:focus-visible{background:var(--accent-leaf);color:var(--on-accent);border-color:var(--accent)}
@media (max-width:768px){.nav-back{padding:10px 16px;font-size:0.6rem;letter-spacing:0.1em}}
.page-header{padding:110px 0 60px;border-bottom:1px solid var(--border)}
@media (max-width:768px){.page-header{padding:140px 0 60px}}
.page-header h1{font-family:var(--font-serif);font-weight:300;font-size:clamp(3rem,7vw,6rem);line-height:0.95;letter-spacing:-0.03em;color:#fff;margin-bottom:2rem}
.page-header h1 em{color:var(--accent);font-style:italic;display:inline-block;padding-right:0.05em;padding-bottom:0.2em;margin-bottom:-0.2em}
.page-header .meta{font-size:0.75rem;text-transform:uppercase;letter-spacing:0.2em;color:var(--text-muted)}
.policy-body{display:grid;grid-template-columns:1fr;gap:0;padding:80px 0 120px}
@media (min-width:1025px){.policy-body{grid-template-columns:260px 1fr;gap:80px;align-items:start}}
.policy-nav{position:relative;margin-bottom:60px}
@media (min-width:1025px){.policy-nav{position:sticky;top:110px;margin-bottom:0}}
.policy-nav p{font-size:0.65rem;text-transform:uppercase;letter-spacing:0.2em;color:var(--text-muted);margin-bottom:1.5rem;max-width:none}
.policy-nav ol{list-style:none;counter-reset:nav-counter}
.policy-nav ol li{counter-increment:nav-counter;border-top:1px solid var(--border)}
.policy-nav ol li:last-child{border-bottom:1px solid var(--border)}
.policy-nav ol li a{display:flex;align-items:baseline;gap:12px;padding:12px 0;color:var(--text-muted);text-decoration:none;font-size:0.75rem;letter-spacing:0.05em;transition:color 0.4s var(--ease-luxury)}
.policy-nav ol li a::before{content:counter(nav-counter,decimal-leading-zero);font-size:0.6rem;color:var(--accent);opacity:0.7;flex-shrink:0}
.policy-nav ol li a:hover,.policy-nav ol li a:focus-visible{color:#fff}
.policy-content section{padding:60px 0;border-bottom:1px solid var(--border)}
.policy-content section:first-child{padding-top:0}
.policy-content section:last-child{border-bottom:none}
.policy-content h2{font-family:var(--font-serif);font-weight:300;font-size:clamp(1.8rem,3vw,2.8rem);letter-spacing:-0.03em;color:#fff;margin-bottom:1.5rem;line-height:1.1;display:flex;align-items:baseline;gap:16px}
@media (max-width:768px){.policy-content h2{font-size:1.6rem}}
.section-number{font-family:var(--font-sans);font-size:0.6rem;letter-spacing:0.2em;color:var(--accent);opacity:0.7;text-transform:uppercase;flex-shrink:0;padding-top:0.3em}
.policy-content p{font-size:1rem;color:var(--text-muted);font-weight:300;max-width:68ch;margin-bottom:1.25rem;line-height:1.8}
.policy-content p:last-child{margin-bottom:0}
.policy-content ul,.policy-content ol{margin:1rem 0 1.25rem 0;padding-left:0;list-style:none;max-width:68ch}
.policy-content ul li,.policy-content ol li{font-size:1rem;color:var(--text-muted);font-weight:300;padding:10px 0 10px 26px;border-bottom:1px solid rgba(255,255,255,0.05);position:relative;line-height:1.7}
.policy-content ul li:last-child,.policy-content ol li:last-child{border-bottom:none}
.policy-content ul li::before{content:'·';color:var(--accent);opacity:0.8;font-size:1.2rem;line-height:1;position:absolute;left:2px;top:14px}
.policy-content ol{counter-reset:list-counter}
.policy-content ol li{counter-increment:list-counter}
.policy-content ol li::before{content:counter(list-counter,decimal-leading-zero);color:var(--accent);opacity:0.6;font-size:0.65rem;letter-spacing:0.1em;position:absolute;left:0;top:15px}
.policy-content a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-dim);text-underline-offset:4px;transition:opacity 0.3s var(--ease-luxury)}
.policy-content a:hover,.policy-content a:focus-visible{opacity:0.7}
.policy-content strong{color:#fff;font-weight:500}
.callout{border:1px solid var(--border);background:rgba(204,180,108,0.04);padding:30px 36px;margin:2rem 0;max-width:68ch;position:relative}
.callout::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--accent);opacity:0.5}
.callout p{margin-bottom:0;font-size:0.95rem}
.contact-block{margin-top:2rem;padding:36px;border:1px solid var(--border);max-width:68ch}
.contact-block .label{margin-bottom:1rem}
.contact-block p{margin-bottom:0.5rem}
.contact-block p:last-child{margin-bottom:0}
.nearby-row{text-decoration:none;color:inherit;display:flex} .nearby-row:hover{opacity:.85}
.faq-list{border-top:1px solid var(--border);margin-top:2rem}
.faq-item{border-bottom:1px solid var(--border)}
.faq-item .faq-q{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;padding:1.4rem 0;font-family:var(--font-serif);font-size:1.35rem;color:var(--text);transition:color .3s ease}
.faq-item .faq-q::-webkit-details-marker{display:none}
.faq-item .faq-q::after{content:"+";font-family:var(--font-sans);font-size:1.5rem;color:var(--accent);transition:transform .3s ease;flex-shrink:0;line-height:1}
.faq-item[open] .faq-q,.faq-item .faq-q:hover{color:var(--accent-text)}
.faq-item[open] .faq-q::after{transform:rotate(45deg)}
.faq-a{padding:0 0 1.6rem;max-width:62ch}
.faq-a p{color:var(--text-muted);margin:0;line-height:1.7}
@media (prefers-reduced-motion:reduce){.faq-item .faq-q,.faq-item .faq-q::after{transition:none}}

/* Failsafe: reveal-up sections become visible even if the observer misses them.
   The .js path keeps the animation; this guarantees content can never be
   left permanently invisible on any device. */
.no-js .reveal-up{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  .reveal-up{opacity:1;transform:none}
}
.no-js .reveal-up{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal-up{opacity:1;transform:none}}

/* ============================================================
   INSIGHTS
   Append this block to the END of src/_includes/partials/main.css
   It inherits your Cormorant headings, Manrope body, gold accent
   and dark theme. It sets only spacing, the meta row, the feature
   card and small ledger tweaks. No font-family or colour overrides.
   ============================================================ */

/* ---------- Article ---------- */
.post-article { padding-top: 6rem; padding-bottom: 4rem; }

.post-header { max-width: 46rem; margin: 0 auto; }
.post-title { margin: 0.5rem 0 1.25rem; }
.post-header .lede { margin-bottom: 1.5rem; }
/* Slim gold-leaf hairline closing the masthead — echoes the OG card's accent bar. */
.post-header::after {
  content: "";
  display: block;
  width: 72px;
  height: 2px;
  margin-top: 1.9rem;
  background: var(--accent-leaf, linear-gradient(120deg, #EFDCA0, #D8BE74, #B6984F));
  border-radius: 1px;
}

.post-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.6rem;
  font-size: 0.85rem;
  letter-spacing: 0.02em;
  opacity: 0.78;
}
.post-byline { color: var(--accent, #CCB46C); }
.post-dot {
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.55;
}

.post-hero { margin: 2.5rem auto; max-width: 60rem; }
.post-hero img { width: 100%; height: auto; display: block; border-radius: 4px; }

/* Prose rendered from Markdown */
.post-body { max-width: 46rem; margin: 2.5rem auto 0; }
.post-body > * + * { margin-top: 1.4rem; }
.post-body h2 { margin-top: 2.75rem; }
.post-body h3 { margin-top: 2rem; }
.post-body p { line-height: 1.75; }
:where(.post-body) a {
  color: var(--accent, #CCB46C);
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}
.post-body ul,
.post-body ol { padding-left: 1.25rem; }
.post-body li + li { margin-top: 0.5rem; }
.post-body blockquote {
  margin: 2.25rem 0;
  padding-left: 1.25rem;
  border-left: 2px solid var(--accent, #CCB46C);
  font-style: italic;
  opacity: 0.92;
}
.post-body img { max-width: 100%; height: auto; border-radius: 4px; }

.post-updated {
  max-width: 46rem;
  margin: 2.5rem auto 0;
  font-size: 0.85rem;
  opacity: 0.6;
}

/* Founder close on articles */
.post-founder {
  border-top: 1px solid rgba(204, 180, 108, 0.18);
  padding-top: 3rem;
  margin-top: 4rem;
}

/* ---------- Insights index ---------- */
.insights-hero { padding: 6rem 0 1.5rem; }
.insights-hero .lede { max-width: 40rem; }

/* Promoted latest piece */
.insights-feature {
  display: block;
  text-decoration: none;
  color: inherit;
  border: 1px solid rgba(204, 180, 108, 0.18);
  border-radius: 6px;
  overflow: hidden;
  margin: 2.5rem 0 3.5rem;
  transition: border-color 0.3s ease, transform 0.3s ease;
}
.insights-feature:hover {
  border-color: var(--accent, #CCB46C);
  transform: translateY(-2px);
}
.insights-feature-img img { width: 100%; height: auto; display: block; }
.insights-feature-meta { padding: 2.25rem; }
.insights-feature-meta h2 { margin: 0.5rem 0 1rem; }
.insights-feature-meta .lede { margin-bottom: 1.25rem; }

/* Ledger of remaining pieces (reuses your .ledger-row) */
.insights-ledger { margin-bottom: 2rem; }
.insights-ledger .ledger-row { align-items: center; }
.ledger-row-main { display: flex; flex-direction: column; }
.ledger-cat {
  display: block;
  margin-bottom: 0.35rem;
  font-size: 0.7rem;
}

@media (max-width: 600px) {
  .insights-feature-meta { padding: 1.5rem; }
  .insights-hero { padding-top: 4.5rem; }
}

/* ============================================================
   PRIMARY NAV: mobile menu (toggle + full-screen overlay)
   Ported from the homepage so the navigation is identical on
   every templated page. .section-nav is defined above; this
   block adds the hamburger toggle and the overlay.
   ============================================================ */
.menu-toggle{display:none;position:relative;width:44px;height:44px;background:none;border:none;cursor:pointer;align-items:center;justify-content:center;z-index:1001}
.menu-toggle .bar{position:absolute;left:11px;width:22px;height:1.5px;background:var(--text);transition:transform .5s var(--ease-luxury),background-color .4s var(--ease-luxury)}
.menu-toggle .bar:nth-child(1){transform:translateY(-4px)}
.menu-toggle .bar:nth-child(2){transform:translateY(4px)}
body.menu-open .menu-toggle .bar{background:var(--accent)}
body.menu-open .menu-toggle .bar:nth-child(1){transform:translateY(0) rotate(45deg)}
body.menu-open .menu-toggle .bar:nth-child(2){transform:translateY(0) rotate(-45deg)}
.menu-overlay{position:fixed;inset:0;z-index:999;display:flex;flex-direction:column;justify-content:flex-start;padding:120px 9% 60px;overflow-y:auto;overscroll-behavior:contain;background:rgba(5,5,5,0.96);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .7s var(--ease-luxury),visibility 0s linear .7s}
body.menu-open .menu-overlay{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .7s var(--ease-luxury),visibility 0s linear 0s}
body.menu-open #tcc-cmp,body.menu-open .cmp-reopen{visibility:hidden;pointer-events:none}
.menu-inner{display:flex;flex-direction:column;gap:2px}
.menu-link{display:flex;align-items:baseline;gap:16px;font-family:var(--font-serif);font-weight:300;font-size:clamp(1.55rem,4.4vw,2.3rem);line-height:1.15;letter-spacing:-0.02em;color:var(--text);text-decoration:none;padding:6px 0;opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease-luxury),transform .6s var(--ease-luxury),color .4s var(--ease-luxury)}
body.menu-open .menu-link{opacity:1;transform:translateY(0)}
/* STAGGER BY INDEX, NOT BY HAND (Nic, 21 Aug 2026: "the first 4 nav items are sequential, the others
   beyond that are static"). The cascade was four hardcoded nth-child delays, written when the overlay
   held four links. It has since grown to eight plus a client login, so every item past the fourth had no
   delay at all and snapped in instantly - ahead of the divider and the CTA, which DO carry one, so the
   reveal read backwards. The delay now derives from each item's own --i, set in the markup, so an item
   added later staggers on its own and this cannot drift again. Only opacity and transform are delayed:
   colour stays immediate, so hover no longer sits behind the entrance delay (a wart of the old rules). */
.menu-link,.menu-divider,.menu-cta{--menu-delay:calc(.08s + var(--i,0) * .04s)}
body.menu-open .menu-link{transition:opacity .6s var(--ease-luxury) var(--menu-delay),transform .6s var(--ease-luxury) var(--menu-delay),color .4s var(--ease-luxury)}
body.menu-open .menu-divider{transition:opacity .6s var(--ease-luxury) var(--menu-delay)}
body.menu-open .menu-cta{transition:opacity .6s var(--ease-luxury) var(--menu-delay),transform .6s var(--ease-luxury) var(--menu-delay),background-color .5s var(--ease-luxury),color .5s var(--ease-luxury),border-color .5s var(--ease-luxury)}
.menu-link:hover,.menu-link:focus-visible{color:var(--accent)}
.menu-index{font-family:var(--font-sans);font-size:0.7rem;font-weight:600;letter-spacing:0.15em;color:rgba(204,180,108,0.7);min-width:1.6em}
.menu-divider{height:1px;background:var(--border);margin:30px 0 26px;opacity:0;transition:opacity .6s var(--ease-luxury) .30s}
body.menu-open .menu-divider{opacity:1}
.menu-cta{align-self:flex-start;display:inline-block;background:none;border:1px solid var(--accent-dim);color:var(--accent);text-transform:uppercase;font-family:var(--font-sans);font-size:0.7rem;letter-spacing:0.18em;font-weight:600;padding:18px 40px;border-radius:2px;text-decoration:none;opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease-luxury) .34s,transform .6s var(--ease-luxury) .34s,background-color .5s var(--ease-luxury),color .5s var(--ease-luxury),border-color .5s var(--ease-luxury)}
body.menu-open .menu-cta{opacity:1;transform:translateY(0)}
/* De-dupe (Nic, 15 Aug 2026): the top-nav "Speak with Nic" CTA shows at >=601px, so the overlay's own CTA is
   redundant there. Keep the overlay CTA only on phones (<=600px), where the top CTA is hidden. */
@media (min-width:601px){.menu-cta{display:none}}
.menu-cta:hover,.menu-cta:focus-visible{background:var(--accent-leaf);color:var(--on-accent);border-color:var(--accent)}
.menu-meta{display:flex;justify-content:space-between;align-items:center;margin-top:42px;font-family:var(--font-sans);font-size:0.6rem;text-transform:uppercase;letter-spacing:0.2em;color:var(--text-subtle);opacity:0;transition:opacity .6s var(--ease-luxury) .4s}
body.menu-open .menu-meta{opacity:1}
.menu-whatsapp{color:var(--accent);text-decoration:none}
body.menu-open{overflow:hidden}
.menu-link:focus-visible{outline:2px solid var(--accent);outline-offset:6px;color:var(--accent)}
/* Tablet: swap the section-nav for the hamburger, but keep the "Speak with Nic" CTA up top
   (hiding it here was too aggressive — it left tablet users with no visible booking prompt). */
.menu-toggle{display:flex}
/* Phones: the CTA button crowds the logo, so it collapses into the hamburger menu (which carries its own). */
@media (max-width:600px){.nav-cta{display:none}}
/* The hamburger is PERSISTENT at every width (14 Aug 2026), so the menu overlay must open at every width too.
   The old `@media (min-width:1201px){.menu-overlay{display:none}}` was a leftover from when the hamburger was
   mobile-only: on desktop it left the button clickable but the overlay forced display:none (which beats the
   opacity/visibility reveal), so clicking the hamburger opened nothing. Removed (Nic, 15 Aug 2026). When closed
   the overlay is already opacity:0/visibility:hidden/pointer-events:none, so it stays invisible + inert. */
/* Hero proof line, mid-page diagnostic offer, contact offer (audit additions) */
.hero-proof{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-top:1.75rem}
.hero-proof-stars{color:var(--accent);font-size:0.95rem;letter-spacing:2px;line-height:1}
.hero-proof a{color:var(--text-muted);text-decoration:none;font-size:0.82rem;letter-spacing:0.03em;border-bottom:1px solid var(--border);padding-bottom:3px;transition:color 0.4s var(--ease-luxury),border-color 0.4s var(--ease-luxury)}
.hero-proof a:hover,.hero-proof a:focus-visible{color:var(--accent);border-color:var(--accent-dim)}
.hero-proof a strong{color:var(--text);font-weight:600;letter-spacing:0.02em}
.arch-cta-offer{font-family:var(--font-serif);font-style:italic;font-size:clamp(1.15rem,1.7vw,1.5rem);color:var(--text);line-height:1.4;max-width:34ch;margin:0 auto 2rem}
.contact-offer{color:var(--text-muted);font-size:clamp(0.95rem,1.2vw,1.05rem);line-height:1.55;max-width:46ch;margin:1.25rem 0 2.5rem}
.founder-video{margin-top:clamp(3rem,6vw,5rem)}
.founder-video .label{margin-top:0}
/* Primary booking CTA (main KPI) + secondary form divider */
.cta-book{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--accent-leaf);color:#050505;font-family:var(--font-sans);font-size:0.8rem;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;text-decoration:none;padding:18px 40px;border-radius:2px;border:1px solid var(--accent);transition:filter 0.45s var(--ease-luxury),border-color 0.45s var(--ease-luxury),transform 0.45s var(--ease-luxury);min-height:54px;margin-top:0.5rem}
.cta-book:hover,.cta-book:focus-visible{filter:brightness(1.06);border-color:var(--accent-bright);transform:translateY(-2px)}
.contact-heading + .contact-offer + .cta-book{margin-top:0.75rem}
.form-secondary-intro{margin:2.5rem 0 1.75rem;padding-top:2rem;border-top:1px solid var(--border);font-size:0.9rem;color:var(--text-muted);line-height:1.55;max-width:44ch}
@media print{.cta-book{display:none!important}}
/* Unified primary CTA - gold-leaf fill, dark label; harmonises nav/menu/mid-page/contact and forces the fill colour so the label can never inherit a transparent text-fill. The fill is the bright leaf, not flat gold: the flat #CCB46C read dark and lifeless next to the foil (Nic, 17 Jul 2026). */
.book-cta{background:var(--accent-leaf)!important;border:1px solid var(--accent)!important;color:#0A0A0A!important;-webkit-text-fill-color:#0A0A0A!important;text-decoration:none;font-weight:600}
.book-cta:hover,.book-cta:focus-visible{background:var(--accent-leaf)!important;filter:brightness(1.05);border-color:var(--accent-bright)!important;color:#0A0A0A!important;-webkit-text-fill-color:#0A0A0A!important}

/* ============================================================
   Mobile-first hardening - appended last so it wins the cascade
   without inflating selectors above. Three concerns:
   notch-safe insets, comfortable tap targets, and no sticky
   :hover left behind after a tap on touch devices.
   ============================================================ */

/* Safe-area insets for the viewport-fit=cover layout (notched phones).
   env() resolves to 0 where there is no inset, so these are no-ops elsewhere
   and identical to the previous values on non-notched devices. */
#navbar{padding-left:max(6%,env(safe-area-inset-left));padding-right:max(6%,env(safe-area-inset-right))}
.menu-overlay{padding-top:max(120px,calc(90px + env(safe-area-inset-top)));padding-bottom:calc(60px + env(safe-area-inset-bottom));padding-left:max(9%,env(safe-area-inset-left));padding-right:max(9%,env(safe-area-inset-right))}
.cmp-banner{bottom:calc(24px + env(safe-area-inset-bottom))}
.cmp-reopen{right:calc(24px + env(safe-area-inset-right));bottom:calc(24px + env(safe-area-inset-bottom))}

/* Comfortable footer tap target (WCAG 2.5.5). */
.footer-nav-internal a{min-height:44px}

/* Narrow-screen overflow guards for the content surface: long words/URLs wrap,
   and any future table or code block scrolls rather than breaking the layout. */
.container p,.container li,.container blockquote{overflow-wrap:break-word}
.container pre,.container table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}

/* Touchscreen devices only - a true coarse pointer with no real hover.
   Hybrid laptops (mouse + touch) report hover:hover, so their hovers are kept. */
@media (hover:none) and (pointer:coarse){
  /* Desktop cursor ornaments never apply on touch (the JS also skips them). */
  #cursor,#cursor-follower{display:none!important}
  /* Hold each button at its resting state so a tap doesn't leave a stuck :hover. */
  .book-cta:hover{background:var(--accent)!important;border-color:var(--accent)!important}
  .cta-book:hover{transform:none}
  .nav-back:hover{background:none;color:var(--accent);border-color:var(--border)}
  .footer-action:hover{background:rgba(204,180,108,0.03);border-color:rgba(204,180,108,0.4);transform:none}
  .cmp-btn--primary:hover{background:var(--accent);border-color:var(--accent);transform:none}
  .cmp-btn--ghost:hover{background:rgba(204,180,108,0.04);border-color:rgba(204,180,108,0.4);transform:none}
  .video-facade:hover .play-btn{transform:translate(-50%,-50%);box-shadow:0 10px 30px -10px rgba(0,0,0,0.7)}
  .video-facade:hover .play-btn::before{filter:none}
}

/* ============================================================
   Hero vertical-overflow guard (mobile).
   The hero is display:flex; align-items:center, so when the
   content stack is taller than the viewport - notably city pages,
   which add the .city-tier-pill above the title - the centred
   block overflows EQUALLY top and bottom. That pushed the top of
   the stack UP under the fixed 90px navbar, where the "Based in
   <city>" pill collided with the logo on shorter screens.
   Letting the hero grow to its content height (height:auto +
   min-height:100dvh) removes the upward overflow; padding-top
   reserves the navbar's height so the first line always clears
   it. Content still centres when it fits and scrolls when it
   does not. The 90px keeps the menu hamburger (shown <=900px)
   clear of the hero content too. */
@media (max-width:768px){
  .hero{height:auto;min-height:100dvh;padding-top:calc(90px + env(safe-area-inset-top));padding-bottom:2.5rem}
  .hero-content,.city-hero .hero-content{padding-top:1rem}
}

/* ============================================================
   LIGHT MODE — "letterhead" theme (parchment / brown-ink / gold)
   Purely additive: everything below is scoped to
   :root[data-theme="light"] / [data-theme="light"] …, so the
   default (dark) identity is byte-for-byte unchanged. Palette is
   the console's proven letterhead set (console.css) for one Crane
   identity across the app and the marketing site. The theme is
   chosen once and remembered via the shared 'crane:theme' key.
   The cinematic video hero stays dark in BOTH themes: its token
   scope is re-declared to the dark values so a light page opens
   on a dark hero-band and settles onto parchment below.
   ============================================================ */
:root[data-theme="light"]{
  --bg:#EFE9DB;--bg-elevated:#FDFBF6;
  --bg-glow:radial-gradient(ellipse 75% 600px at 50% -120px,#F6F0E2 0%,#EFE9DB 100%);
  /* Gold as TEXT on parchment must be deep enough to read: #B0933F was ~2.4:1 (fails). --accent is now
     the AA-large antique gold used for both decoration and emphasis text; --accent-text is deeper still
     for small gold text (links, labels). */
  --accent:#7A611B;--accent-bright:#7A611B;--accent-text:#795E1A;
  --accent-dim:rgba(138,109,31,0.42);--accent-faint:rgba(176,147,63,0.12);--accent-shadow:rgba(176,147,63,0.22);
  /* Buttons wear the SAME bright gold leaf in both themes (Nic, 17 Jul 2026: the deep parchment bronze
     read dark and lifeless). Gold as TEXT stays deep (--accent/--accent-text above, and the .chapter-no
     override below) — brightness is for FILLS, legibility rules the type. */
  --accent-leaf:linear-gradient(168deg,#F6EDCB 0%,#EFDCA0 34%,#D8BE74 70%,#C9AC60 100%);
  --text-heading:#1a1712;--text:#3a352b;--text-muted:#6b6456;--text-subtle:#6f6858;
  --border:rgba(176,147,63,0.32);--border-strong:rgba(176,147,63,0.62);
  /* Near-black text/icons on the bright leaf: ~9:1 on the deepest stop #C9AC60 (the old white-on-bronze
     managed only ~4.9:1). Every --on-accent use in this sheet sits on a gold fill. */
  --on-accent:#0A0A0A;
  color-scheme:light;
}
/* Every gold BUTTON fill across the estate is now var(--accent-leaf) at its base rule (Nic, 17 Jul
   2026: all buttons gold leaf, matching) — no theme-scoped fill overrides needed here; the deep gold
   stays on borders as an engraved edge. */
/* Gold as display TEXT (the text-clipped chapter numerals) must stay deep on parchment — the bright
   leaf clips to ~1.5:1 against cream and vanishes. Restate the clip: the background shorthand would
   otherwise reset it. */
[data-theme="light"] .chapter-no{background:linear-gradient(168deg,#B0933F 0%,#8A6D1F 46%,#6E5518 100%);-webkit-background-clip:text;background-clip:text}
/* Browser chrome + system surfaces */
[data-theme="light"] ::selection{background:rgba(176,147,63,0.28);color:#1a1712}
[data-theme="light"] ::-webkit-scrollbar-track{background:var(--bg)}
[data-theme="light"] ::-webkit-scrollbar-thumb{background:#cfc6b0}
[data-theme="light"] ::-webkit-scrollbar-thumb:hover{background:var(--accent)}
/* Film-grain is a dark-canvas texture — nearly disable it on cream */
[data-theme="light"] .grain-overlay{opacity:0.02}
/* The splash stays dark (brief, brand-consistent) so its cream wordmark reads */
[data-theme="light"] #preloader{background:#050505}

/* --- Headings, card titles, strong text (were literal #fff / #F2F2F2 / #B8B8B8) --- */
[data-theme="light"] .comp-col h3,
[data-theme="light"] .spine-title,
[data-theme="light"] .ai-ask-q,
[data-theme="light"] .method-body h3,
[data-theme="light"] .related-service-name,
[data-theme="light"] .cmp-headline,
[data-theme="light"] .cmp-modal-title,
[data-theme="light"] .cmp-cat-name,
[data-theme="light"] .arch-title,
[data-theme="light"] .section-label,
[data-theme="light"] .founder-bio .pull-quote,
[data-theme="light"] .verdict-score,
[data-theme="light"] .verdict-quote blockquote,
[data-theme="light"] .commitment-title,
[data-theme="light"] .page-header h1,
[data-theme="light"] .policy-content h2,
[data-theme="light"] .input-field,
[data-theme="light"] .section-prose strong,
[data-theme="light"] .footer-disclaimer strong,
[data-theme="light"] .policy-content strong{color:var(--text-heading)}
[data-theme="light"] .section-prose{color:var(--text-muted)}
[data-theme="light"] .accreditations-label{color:var(--text-muted)}
/* --- Subscribe / Ask inputs: their dark fill (rgba(0,0,0,.35-.4)) reads as a grey slab on parchment. Give
   them a clean white field with the gold hairline border; typed text is already --text-heading, and the
   placeholder moves to a legible muted brown instead of a near-invisible faint gold. Light theme only. --- */
[data-theme="light"] .askart-input,
[data-theme="light"] .brief-input,
[data-theme="light"] .brief-name-input,
[data-theme="light"] .isub-input{background:#FFFFFF}
[data-theme="light"] .askart-input::placeholder,
[data-theme="light"] .brief-input::placeholder,
[data-theme="light"] .brief-name-input::placeholder,
[data-theme="light"] .isub-input::placeholder{color:var(--text-subtle)}
/* Hover-to-bright states that flipped to #fff */
[data-theme="light"] .acc-link:hover,[data-theme="light"] .acc-link:focus-visible,
[data-theme="light"] .comp-list li:hover,
[data-theme="light"] .service-included li:hover,
[data-theme="light"] .cmp-btn--text:hover,[data-theme="light"] .cmp-btn--text:focus-visible,
[data-theme="light"] .policy-nav ol li a:hover,[data-theme="light"] .policy-nav ol li a:focus-visible{color:var(--text-heading)}
@media (min-width:769px){
  [data-theme="light"] .ledger-row:hover span,[data-theme="light"] .ledger-row:focus-within span{color:var(--text-heading)}
}

/* --- White hairlines / faint fills → warm gold-tinted lines on parchment --- */
[data-theme="light"] .arch-header,
[data-theme="light"] .arch-section,
[data-theme="light"] .arch-footer,
[data-theme="light"] .section-inner,
[data-theme="light"] .section-category,
[data-theme="light"] .capability,
[data-theme="light"] .comp-list li,
[data-theme="light"] .service-included li,
[data-theme="light"] .spine-list li,
[data-theme="light"] .related-service,
[data-theme="light"] .policy-content ul li,[data-theme="light"] .policy-content ol li,
[data-theme="light"] .cmp-modal-header,
[data-theme="light"] .cmp-cat,
[data-theme="light"] .cmp-modal-footer,
[data-theme="light"] .cmp-toggle{border-color:var(--border)}
[data-theme="light"] .spine-list li,
[data-theme="light"] .related-service,
[data-theme="light"] .capability,
[data-theme="light"] .arch-section:hover{background:rgba(176,147,63,0.05)}
[data-theme="light"] .cmp-toggle{background:rgba(176,147,63,0.10)}
[data-theme="light"] .cmp-toggle::after{background:#b8ad92}

/* --- Media placeholder frames (#111 behind photos) → cream --- */
[data-theme="light"] .impact-visual,
[data-theme="light"] .location-frame,
[data-theme="light"] .founder-portrait{background:var(--bg-elevated)}

/* --- Form controls --- */
[data-theme="light"] input:-webkit-autofill,
[data-theme="light"] input:-webkit-autofill:hover,
[data-theme="light"] input:-webkit-autofill:focus,
[data-theme="light"] textarea:-webkit-autofill{-webkit-text-fill-color:var(--text-heading)}
[data-theme="light"] ::placeholder{color:rgba(26,23,18,0.66)}
[data-theme="light"] select.input-field{color:rgba(26,23,18,0.42);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 fill='%238A6D1F' d='M6 8L0 0h12z'/%3E%3C/svg%3E")}

/* --- Glass panels + scrims (were near-black rgba) → warm parchment glass --- */
[data-theme="light"] .architecture-frame{background:rgba(247,243,232,0.55)}
[data-theme="light"] .arch-footer{background:rgba(240,234,220,0.6)}
[data-theme="light"] .mandate-stamp{background:rgba(247,243,232,0.72)}
[data-theme="light"] .cmp-banner,
[data-theme="light"] .cmp-modal,
[data-theme="light"] .cmp-reopen{background:rgba(253,251,246,0.94);border-color:var(--accent-dim)}
[data-theme="light"] .cmp-modal-footer{background:rgba(240,234,220,0.7)}
[data-theme="light"] .cmp-modal-backdrop{background:rgba(40,36,28,0.32)}
[data-theme="light"] .menu-overlay{background:rgba(239,233,219,0.97)}
[data-theme="light"] .menu-cta:hover,[data-theme="light"] .menu-cta:focus-visible{color:var(--on-accent)}

/* --- Navbar: light text over the dark hero (unscrolled), ink over parchment (scrolled) --- */
[data-theme="light"] #navbar.scrolled{background:rgba(253,251,246,0.85);border-bottom-color:var(--border)}
[data-theme="light"] #navbar:not(.scrolled) .logo{color:#F6F2E9}
[data-theme="light"] #navbar:not(.scrolled) .section-nav a{color:rgba(245,240,228,0.82)}
[data-theme="light"] #navbar:not(.scrolled) .section-nav a:hover{color:#fff}
[data-theme="light"] #navbar:not(.scrolled) .menu-toggle .bar{background:#F2F2F2}
[data-theme="light"] #navbar.scrolled .logo{color:var(--text-heading)}
[data-theme="light"] #navbar.scrolled .section-nav a{color:var(--text-muted)}
[data-theme="light"] #navbar.scrolled .section-nav a:hover{color:var(--text-heading)}
[data-theme="light"] #navbar.scrolled .menu-toggle .bar{background:var(--text)}

/* --- The cinematic hero stays dark in light mode: re-scope the dark tokens onto
       the hero content subtree so every token-driven descendant (title, subhead,
       eyebrow, accreditation links, proof, city pill, scanner chip) renders exactly
       as it does in dark mode over the dark video. --- */
[data-theme="light"] .hero-content,
[data-theme="light"] .city-hero .hero-content,
[data-theme="light"] .service-hero .hero-content{
  --text-heading:#F6F2E9;--text:#F2F2F2;--text-muted:#B9B4A6;--text-subtle:#9a9384;
  --accent:#CCB46C;--accent-bright:#E4CC84;--accent-text:#E4CC84;
  --accent-dim:rgba(204,180,108,0.3);--accent-faint:rgba(204,180,108,0.08);
  --accent-leaf:linear-gradient(168deg,#F6EDCB 0%,#EFDCA0 34%,#D8BE74 70%,#C9AC60 100%);
  --border:rgba(255,255,255,0.12);--border-strong:rgba(255,255,255,0.22);
  --on-accent:#0A0A0A;
}
[data-theme="light"] .hero-content .accreditations-label{color:rgba(245,240,228,0.62)}
/* The primary gold CTAs (.book-cta / .cta-book) carry the bright leaf with hardcoded near-black text in
   BOTH themes now — one gold button across hero band and parchment body, so no per-theme text or fill
   overrides remain here. (The old light-mode deep-gold/white unify was retired 17 Jul 2026: it read
   dark and lifeless. The bright leaf reads on the black hero AND the parchment ground, ~9:1 label.) */

/* --- Appearance toggle in the masthead --- */
.theme-toggle{background:none;border:1px solid var(--border);color:var(--accent);width:40px;height:40px;min-height:40px;border-radius:2px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .5s var(--ease-luxury),color .5s var(--ease-luxury),border-color .5s var(--ease-luxury);flex:none;margin-left:6px}
.theme-toggle:hover,.theme-toggle:focus-visible{background:var(--accent-leaf);color:var(--on-accent);border-color:var(--accent)}
.theme-toggle svg{width:17px;height:17px;display:block}
.theme-toggle .ico-sun{display:none}
[data-theme="light"] .theme-toggle .ico-sun{display:block}
[data-theme="light"] .theme-toggle .ico-moon{display:none}
[data-theme="light"] #navbar:not(.scrolled) .theme-toggle{color:#F6F2E9;border-color:rgba(245,240,228,0.3)}
[data-theme="light"] #navbar:not(.scrolled) .theme-toggle:hover{color:var(--on-accent);border-color:var(--accent)}
.menu-theme-toggle{display:inline-flex;align-items:center;gap:10px;background:none;border:1px solid var(--accent-dim);color:var(--accent);font-family:var(--font-sans);font-size:0.62rem;text-transform:uppercase;letter-spacing:0.18em;font-weight:600;padding:12px 18px;border-radius:2px;cursor:pointer;min-height:44px}
.menu-theme-toggle svg{width:15px;height:15px}
.menu-theme-toggle .ico-sun{display:none}
[data-theme="light"] .menu-theme-toggle .ico-sun{display:inline-block}
[data-theme="light"] .menu-theme-toggle .ico-moon{display:none}

/* Desktop toggle hides on mobile (the full-screen menu carries its own) */
.theme-toggle{display:none}
/* Hero-less pages (hub / locations / policy): no dark hero sits behind the nav,
   so its text must be ink over the parchment page at every scroll position.
   Higher specificity (class on <html> + type) so it wins over the hero :not(.scrolled)
   rules regardless of source order. Added by the end-of-body script. */
html[data-theme="light"].page-no-hero #navbar .logo{color:var(--text-heading)}
html[data-theme="light"].page-no-hero #navbar .section-nav a{color:var(--text-muted)}
html[data-theme="light"].page-no-hero #navbar .section-nav a:hover{color:var(--text-heading)}
html[data-theme="light"].page-no-hero #navbar .menu-toggle .bar{background:var(--text)}
html[data-theme="light"].page-no-hero #navbar .theme-toggle{color:var(--accent);border-color:var(--border)}

/* --- Light mode readability: literal golds/greys that never flipped (found via contrast audit) --- */
/* Low-alpha brand golds used as TEXT on parchment (~1.9:1) → the deep readable gold. */
[data-theme="light"] .cmp-eyebrow,
[data-theme="light"] .cmp-cat-name .lock,
[data-theme="light"] .arch-counter,
[data-theme="light"] .section-index,
[data-theme="light"] .arch-section:hover .section-index,
[data-theme="light"] .section-icon,
[data-theme="light"] .section-prose em,
[data-theme="light"] .capability.premium,
[data-theme="light"] .obfuscate{color:var(--accent-text)}
[data-theme="light"] .capability.premium:hover,[data-theme="light"] .arch-section.active .section-index{color:var(--accent-text)}
/* Literal light greys (#949494 / #A8A8A8) used as text on parchment → ink-muted. */
[data-theme="light"] .legal-line,
[data-theme="light"] .legal-line .vat-num,
[data-theme="light"] .legal-line .legal-link,
[data-theme="light"] .legal-line .legal-btn,
[data-theme="light"] .section-category,
[data-theme="light"] .arch-section:hover .section-category,
[data-theme="light"] .footer-disclaimer{color:var(--text-muted)}
[data-theme="light"] .footer-disclaimer strong{color:var(--text-heading)}

/* --- Scanner/readiness pages: content-section headings sit on parchment but were hardcoded #fff.
   The scanner STAGE (.scn-stage / .scn-verdict / .scn-title / gauge) stays dark by design, so only the
   light content sections flip. Higher specificity than the pages' inline `.scn-ev h2` rules, so it wins. --- */
[data-theme="light"] .scn-ev h2,
[data-theme="light"] .scn-cta h2{color:var(--text-heading)}

/* --- Scanner RESULT + capture/founder/error sections use var(--bg) (→ parchment in light) but hardcode
   #fff headings/values and dark form fields. Flip them to ink; the dark STAGE (.scn-title/.scn-console)
   is excluded — it keeps its cinematic video + dark scrim in both themes. --- */
[data-theme="light"] .scn-gauge-num,
[data-theme="light"] .scn-verdict h2,
[data-theme="light"] .scn-lockup-txt b,
[data-theme="light"] .scn-cmp-verdict,
[data-theme="light"] .scn-tile-label,
[data-theme="light"] .scn-tile-brandname,
[data-theme="light"] .scn-founder h2,
[data-theme="light"] .scn-capture h2,
[data-theme="light"] .scn-err-title,
[data-theme="light"] .pr-disc b{color:var(--text-heading)}
[data-theme="light"] .scn-email{color:var(--text-heading);background:rgba(26,23,18,0.03)}
[data-theme="light"] .scn-email::placeholder{color:rgba(26,23,18,0.42)}
[data-theme="light"] .scn-badge-code{color:var(--text);background:rgba(26,23,18,0.05)}
/* Standard signup fields: the base style hardcodes a dark fill + gold text (dark-mode design). On
   parchment that reads as a muddy grey box, so flip to a recessed light field with ink text and a
   readable placeholder — matching the .scn-email treatment. The gold Subscribe button keeps its own
   near-black label on the bright leaf in both themes. The booking form's inputs get the same recessed
   light fill. */
[data-theme="light"] .brief-input,
[data-theme="light"] .brief-name-input{background:rgba(26,23,18,0.03);border-color:var(--border);color:var(--text-heading)}
[data-theme="light"] .brief-input::placeholder,
[data-theme="light"] .brief-name-input::placeholder{color:rgba(26,23,18,0.42)}
[data-theme="light"] .bk-field input,
[data-theme="light"] .bk-field textarea{background:rgba(26,23,18,0.03);color:var(--text)}

/* Badge FINISH picker (Auto / Light / Dark) on the result — lets an installer match the mark to their
   own site. Token-driven gold pills, so it reads on the result section in either theme. */
.scn-badge-theme{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0.2rem 0 1.1rem}
.scn-badge-theme-lb{font-family:var(--font-sans);font-size:0.55rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-subtle);margin-right:2px}
.scn-badge-theme button{appearance:none;-webkit-appearance:none;cursor:pointer;font-family:var(--font-sans);font-size:0.58rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--accent-text,var(--accent));background:transparent;border:1px solid var(--accent-dim);border-radius:100px;padding:6px 14px;min-height:34px;transition:background .3s var(--ease-luxury),color .3s var(--ease-luxury),border-color .3s var(--ease-luxury)}
.scn-badge-theme button:hover{border-color:var(--accent)}
.scn-badge-theme button.is-on{background:var(--accent-leaf);color:var(--on-accent,#0A0A0A);border-color:var(--accent)}

/* Certification plaques — the footer badge on EVERY page and the "Earn the mark" demos — are dark inline
   SVGs (charcoal field, light-on-dark text). In light mode flip them to the light-plaque palette
   (parchment field, ink text, warm metallic frame) so they sit on the page instead of punching a dark
   hole in it — matching the light finish of the real /api/badge mark. */
[data-theme="light"] .footer-badge rect[fill="#070707"],
[data-theme="light"] .air-badge-svg rect[fill="#070707"]{fill:#F4EFE3}
[data-theme="light"] .footer-badge [fill="#e8e4da"],
[data-theme="light"] .air-badge-svg [fill="#e8e4da"]{fill:#2b2720}
[data-theme="light"] .footer-badge [fill="#8a7f5f"],
[data-theme="light"] .air-badge-svg [fill="#8a7f5f"]{fill:#6f6656}
[data-theme="light"] .footer-badge [fill="#8b8478"],
[data-theme="light"] .air-badge-svg [fill="#8b8478"]{fill:#857b68}
[data-theme="light"] .footer-badge [fill="#E4CC84"],
[data-theme="light"] .air-badge-svg [fill="#E4CC84"]{fill:#8A6D1F}
[data-theme="light"] .footer-badge [fill="#EAEEF2"],
[data-theme="light"] .air-badge-svg [fill="#EAEEF2"]{fill:#5b636f}
[data-theme="light"] .footer-badge svg rect,[data-theme="light"] .footer-badge svg line,
[data-theme="light"] .air-badge-svg rect,[data-theme="light"] .air-badge-svg line{stroke:#9a8a5a}

/* Legibility: lift genuine reading copy a touch so it reads comfortably without reading glasses.
   Decorative uppercase micro-labels and the editorial type scale are deliberately left untouched. */
.comp-intro,.spine-note{font-size:0.95rem}
.proof-line{font-size:0.9rem}
.vs-table tbody td{font-size:0.95rem}
.cs-meta dd{font-size:0.95rem}
.hero-subhead{font-size:clamp(1.1rem,1.35vw,1.32rem)}
.legal-line{font-size:0.62rem}
.cs-scope-label{font-size:0.66rem}
.spine-list li{font-size:0.76rem}

/* FOLLOW SUIT (Nic): every gold primary CTA (.book-cta / .cta-book, estate-wide) wears the SAME machined
   champagne bezel + gilded near-black face as the nav .cta-metal button, so the whole CTA family speaks one
   language. The skin is applied over each button's existing size/padding; only the flat gold-leaf fill and
   dark text are replaced (bezel in the rim, ivory label, hover brightens the bezel + lifts a soft glow). */
.book-cta,.cta-book{position:relative;isolation:isolate;overflow:visible;background:transparent!important;background-image:none!important;border:0!important;color:#2a1c05!important;-webkit-text-fill-color:#2a1c05!important;text-shadow:0 1px 0 rgba(255,248,224,0.5);box-shadow:0 14px 34px -16px rgba(0,0,0,0.8)!important;border-radius:12px!important;filter:none!important}
.book-cta::before,.cta-book::before{content:"";position:absolute;inset:0;z-index:-3;border-radius:inherit;padding:2.5px;background:conic-gradient(from var(--lmang),#4b402a,#e6dcc4,#b0a488,#f7f1e4,#6e6146,#d8ccb2,#4b402a,#f7f1e4,#4b402a);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;animation:lmspin 7s linear infinite}
.book-cta::after,.cta-book::after{content:"";position:absolute;inset:2.5px;z-index:-2;border-radius:10px;background:linear-gradient(160deg,#f7edc6 0%,#ecd693 42%,#d9bd6f 72%,#bd9a44 100%);box-shadow:inset 0 1px 0 rgba(255,251,236,0.75),inset 0 -3px 7px -3px rgba(80,52,12,0.55),inset 0 0 0 1px rgba(58,40,12,0.28);transition:background 0.5s var(--ease-luxury)}
.book-cta:hover,.book-cta:focus-visible,.cta-book:hover,.cta-book:focus-visible{box-shadow:0 18px 46px -16px rgba(0,0,0,0.8),0 0 30px -10px rgba(204,180,108,0.45)!important;filter:none!important}
/* left:0 pins the machined border RING under hover. Without it, a partner class's own ::before
   choreography can drag the ring off the button: .footer-action:hover::before{left:100%} (the shine
   sweep) outranks the ring's inset:0 (pseudo-class specificity), so the arch-footer Speak with Nic
   slid its entire border ring off to the right on hover - a detached button-shaped outline beside
   the button (Nic's screenshot, 26 Aug 2026; measured headless: left 0 -> 159.6px, the full button
   width). Pinned here at the same (0,2,0) specificity, winning on source order, for every gold CTA
   whatever class it is combined with. */
.book-cta:hover::before,.book-cta:focus-visible::before,.cta-book:hover::before,.cta-book:focus-visible::before{filter:brightness(1.12) saturate(1.05);left:0}
.book-cta:hover::after,.book-cta:focus-visible::after,.cta-book:hover::after,.cta-book:focus-visible::after{background:linear-gradient(160deg,#fbf3d8 0%,#f0dc9e 42%,#ddc276 72%,#c29d49 100%)}
@media (prefers-reduced-motion:reduce){.book-cta::before,.cta-book::before{animation:none}}

/* LIVING SURFACE (Nic's reference: the Darcy flowing-liquid button, reinterpreted in our champagne gold on
   near-black). main.js injects a WebGL <canvas class="cta-flow"> over the gilded ::after face of every
   machined CTA and flows metal across it. The canvas sits ABOVE the static face (the fallback) and BELOW the
   label. FAIL-SAFE: no WebGL or reduced-motion leaves the CSS machined face untouched, so the button always
   reads right. */
/* A canvas is a REPLACED element, so inset+width:auto would size it to its intrinsic 300x150 and overflow the
   button. Size it explicitly with calc so it fills the face and never overflows. */
.cta-flow{position:absolute;top:2.5px;left:2.5px;width:calc(100% - 5px);height:calc(100% - 5px);z-index:-1;border-radius:11px;pointer-events:none;display:block}
.cta-lbl{position:relative;z-index:1}

/* ============================================================
   ALL GOLD (Nic, 5 Aug 2026): every remaining gold button joins the machined GOLD-face family in one shared
   block - Ask, Follow the research, Search, Request it for next month, Share on LinkedIn / cite row, the
   scanner run/share/report CTAs, the demo chrome pills and the rail/Standard CTAs. STATIC bezels (none are
   macro conversions). !important beats each button's own gold-leaf fill and any inline styling; radius stays
   each button's own (pseudos inherit), so pills stay pills. Excluded by design: .scanner-cred (a credential
   badge, not a button) and the mode/theme toggles (state controls, not CTAs).
   ============================================================ */
.askart-btn,.frf-btn,.rfm-btn,.cidx-go,.cidx-send,.ctr-cap-btn,.scr-cta.is-primary,.crx-report,.crq-li,.scn-submit,.scn-share-btn,.scn-share-btn--primary,.cix-go,.cix-cap-btn,.chrome-cta,.ci-open-cue,.author-rail-cta,.brief-in-btn,.cite-btn,.cite-btn--primary{position:relative;isolation:isolate;border:0!important;background:transparent!important;background-image:none!important;color:#2a1c05!important;-webkit-text-fill-color:#2a1c05!important;text-shadow:0 1px 0 rgba(255,248,224,0.5);box-shadow:0 10px 26px -14px rgba(0,0,0,0.55)}
.askart-btn::before,.frf-btn::before,.rfm-btn::before,.cidx-go::before,.cidx-send::before,.ctr-cap-btn::before,.scr-cta.is-primary::before,.crx-report::before,.crq-li::before,.scn-submit::before,.scn-share-btn::before,.scn-share-btn--primary::before,.cix-go::before,.cix-cap-btn::before,.chrome-cta::before,.ci-open-cue::before,.author-rail-cta::before,.brief-in-btn::before,.cite-btn::before,.cite-btn--primary::before{content:"";position:absolute;inset:0;z-index:-3;border-radius:inherit;padding:2px;background:conic-gradient(from 42deg,#6e561f,#f7f1e4,#b0904a,#fbf5df,#7a5c22,#e6d29a,#6e561f,#fbf5df,#6e561f);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;transition:filter .3s ease}
.askart-btn::after,.frf-btn::after,.rfm-btn::after,.cidx-go::after,.cidx-send::after,.ctr-cap-btn::after,.scr-cta.is-primary::after,.crx-report::after,.crq-li::after,.scn-submit::after,.scn-share-btn::after,.scn-share-btn--primary::after,.cix-go::after,.cix-cap-btn::after,.chrome-cta::after,.ci-open-cue::after,.author-rail-cta::after,.brief-in-btn::after,.cite-btn::after,.cite-btn--primary::after{content:"";position:absolute;inset:2px;z-index:-2;border-radius:inherit;background:linear-gradient(160deg,#f7edc6 0%,#ecd693 42%,#d9bd6f 72%,#bd9a44 100%);box-shadow:inset 0 1px 0 rgba(255,251,236,0.75),inset 0 -3px 7px -3px rgba(80,52,12,0.55),inset 0 0 0 1px rgba(58,40,12,0.28)}
.askart-btn:hover,.frf-btn:hover,.rfm-btn:hover,.cidx-go:hover,.cidx-send:hover,.ctr-cap-btn:hover,.scr-cta.is-primary:hover,.crx-report:hover,.crq-li:hover,.scn-submit:hover,.scn-share-btn:hover,.scn-share-btn--primary:hover,.cix-go:hover,.cix-cap-btn:hover,.chrome-cta:hover,.ci-open-cue:hover,.author-rail-cta:hover,.brief-in-btn:hover,.cite-btn:hover,.cite-btn--primary:hover{transform:translateY(-1px);box-shadow:0 14px 34px -14px rgba(0,0,0,0.55),0 0 22px -8px rgba(204,180,108,0.5)}
.askart-btn:hover::before,.frf-btn:hover::before,.rfm-btn:hover::before,.cidx-go:hover::before,.cidx-send:hover::before,.ctr-cap-btn:hover::before,.scr-cta.is-primary:hover::before,.crx-report:hover::before,.crq-li:hover::before,.scn-submit:hover::before,.scn-share-btn:hover::before,.scn-share-btn--primary:hover::before,.cix-go:hover::before,.cix-cap-btn:hover::before,.chrome-cta:hover::before,.ci-open-cue:hover::before,.author-rail-cta:hover::before,.brief-in-btn:hover::before,.cite-btn:hover::before,.cite-btn--primary:hover::before{filter:brightness(1.1) saturate(1.05)}

/* ============================================================
   QUIET CLIENT LINK (client-link.njk)
   A prose mention of a client that links to their homepage for
   authority but must never read as a clickable link. Screen
   styling is inline armour on the anchor itself; these rules
   win the two cases inline style cannot: the print sheet's
   global a{underline!important} and any future !important
   link treatment. Cursor change on hover is deliberate.
   ============================================================ */
a.client-link,a.client-link:hover,a.client-link:focus-visible{color:inherit!important;text-decoration:none!important;border-bottom:0!important;background:none!important}
@media print{a.client-link{color:inherit!important;text-decoration:none!important}}
