@import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@500;600;700&display=swap');
/* JBM funnel v10 — proof-led refinement for cold Meta traffic. */
:root {
--jbm-black: #08080a;
--jbm-ink: #151517;
--jbm-paper: #f5f3ee;
--jbm-paper-bright: #fbfaf7;
--jbm-purple: #7c47ef;
--jbm-purple-deep: #5622c8;
--jbm-lilac: #b18dff;
--jbm-line-dark: rgba(255, 255, 255, .13);
--jbm-line-light: rgba(21, 21, 23, .15);
--jbm-ease: cubic-bezier(.22, 1, .36, 1);
--font-geist: "Geist", Arial, sans-serif;
--font-mono: "Geist Mono", "Courier New", monospace;
}
html { scroll-padding-top: 84px; }
body {
font-family: var(--font-geist);
background: var(--jbm-paper);
text-rendering: optimizeLegibility;
}
body::before {
content: "";
position: fixed;
inset: 0;
pointer-events: none;
z-index: 999;
opacity: .14;
mix-blend-mode: soft-light;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");
}
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }
.eyebrow, .case-tab small, .route-type, .case-step, .small-title,
.process-item span, .portfolio-count, .call-note, .jbm-v10-proof-label,
.jbm-v10-proof-item span { font-family: var(--font-mono); }
/* Header: identical dark glass character to the main site. */
.topbar {
background: rgba(8, 8, 10, .9) !important;
border-bottom: 1px solid rgba(255, 255, 255, .13) !important;
box-shadow: 0 14px 44px transparent;
transition: box-shadow .35s ease, background .35s ease;
}
.topbar.is-scrolled {
background: rgba(8, 8, 10, .97) !important;
box-shadow: 0 14px 44px rgba(0, 0, 0, .3);
}
.header-inner { height: 76px !important; }
.header-right .btn {
min-height: 46px;
border-radius: 7px !important;
letter-spacing: -.01em;
}
.reading-progress {
transform-origin: left center;
background: linear-gradient(90deg, var(--jbm-purple), var(--jbm-lilac)) !important;
box-shadow: 0 0 18px rgba(177, 141, 255, .55);
}
/* Hero: message first, real operational media second. */
.hero {
min-height: min(790px, calc(100svh - 76px)) !important;
padding-top: clamp(74px, 8vh, 108px) !important;
padding-bottom: 34px !important;
border-bottom: 1px solid rgba(177, 141, 255, .2) !important;
}
.hero-media::after {
background:
linear-gradient(90deg, rgba(8, 8, 10, .99) 0%, rgba(8, 8, 10, .88) 36%, rgba(8, 8, 10, .34) 73%, rgba(8, 8, 10, .18)),
linear-gradient(0deg, #08080a 0%, rgba(8, 8, 10, .14) 48%, rgba(8, 8, 10, .16)) !important;
}
.hero-copy { max-width: 980px !important; }
.hero .eyebrow {
border-color: rgba(177, 141, 255, .38) !important;
background: rgba(12, 10, 16, .78) !important;
box-shadow: inset 2px 0 0 var(--jbm-lilac);
}
.hero h1 {
max-width: 920px !important;
font-size: clamp(70px, 7.45vw, 108px) !important;
line-height: .89 !important;
}
.hero h1 .hero-line { will-change: transform, opacity; }
.hero h1 .hero-line:nth-child(2) { margin-left: clamp(26px, 4vw, 58px) !important; }
.hero h1 .hero-line:nth-child(3) { margin-left: clamp(52px, 7vw, 102px) !important; }
.hero .body-copy,
.hero-actions,
.hero .jbm-trust-mini,
.jbm-v10-proof-ledger { margin-left: clamp(52px, 7vw, 102px) !important; }
.hero .body-copy {
max-width: 570px !important;
font-size: 16px !important;
line-height: 1.68 !important;
}
.hero-actions .btn {
min-height: 58px !important;
min-width: 285px !important;
border-radius: 7px !important;
font-size: 13px !important;
}
.hero-secondary { min-height: 42px; align-items: center; }
.hero .call-note { font-size: 9px !important; opacity: .94; }
.hero .jbm-trust-mini {
width: fit-content;
border: 1px solid rgba(255, 255, 255, .12);
border-radius: 999px;
padding: 8px 12px !important;
background: rgba(9, 8, 12, .66);
backdrop-filter: blur(10px);
}
.hq-badge {
border: 1px solid rgba(255, 255, 255, .14) !important;
border-left: 2px solid var(--jbm-lilac) !important;
backdrop-filter: blur(14px);
}
.jbm-v10-proof-ledger {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
max-width: 700px;
margin-top: 22px;
border-top: 1px solid rgba(255, 255, 255, .16);
border-bottom: 1px solid rgba(255, 255, 255, .16);
}
.jbm-v10-proof-item {
min-width: 0;
padding: 14px 13px 15px;
border-right: 1px solid rgba(255, 255, 255, .13);
}
.jbm-v10-proof-item:first-child { padding-left: 0; }
.jbm-v10-proof-item:last-child { border-right: 0; }
.jbm-v10-proof-item strong {
display: block;
color: #f4effb;
font-size: 12px;
font-weight: 600;
line-height: 1.35;
}
.jbm-v10-proof-item span {
display: block;
margin-top: 5px;
color: #978ba2;
font-size: 7px;
letter-spacing: .08em;
line-height: 1.45;
text-transform: uppercase;
}
/* Proof ribbon. */
.early-proof {
background: var(--jbm-paper-bright) !important;
border-bottom: 1px solid var(--jbm-line-light) !important;
}
.early-proof-inner { padding-top: 30px !important; padding-bottom: 30px !important; }
.early-proof-label { color: #6f617a !important; }
.early-proof-stars { color: #00a67e !important; }
.early-proof blockquote {
position: relative;
padding-left: 28px;
color: #211c26;
font-size: clamp(19px, 1.65vw, 24px) !important;
}
.early-proof blockquote::before {
content: "“";
position: absolute;
left: 0;
top: -.2em;
color: var(--jbm-purple);
font-size: 38px;
line-height: 1;
}
/* Section rhythm and headings. */
.case-section, .routes, .operation, .portfolio-section, #book, .faq-section {
position: relative;
overflow: clip;
}
.case-section::before, .routes::before, .operation::before,
.portfolio-section::before, #book::before {
content: "" !important;
display: block !important;
position: absolute;
width: 440px;
height: 440px;
border-radius: 50%;
filter: blur(2px);
pointer-events: none;
opacity: .46;
}
.case-section::before { right: -250px; top: -250px; background: radial-gradient(circle, rgba(124, 71, 239, .15), transparent 68%); }
.routes::before { left: -250px; bottom: -250px; background: radial-gradient(circle, rgba(177, 141, 255, .12), transparent 68%); }
.operation::before { right: -220px; top: 18%; background: radial-gradient(circle, rgba(124, 71, 239, .18), transparent 68%); }
.portfolio-section::before { left: -260px; top: -220px; background: radial-gradient(circle, rgba(124, 71, 239, .12), transparent 68%); }
#book::before { right: -260px; top: -180px; background: radial-gradient(circle, rgba(177, 141, 255, .2), transparent 68%); }
.section-heading h2, .why-copy h2, #book h2 { letter-spacing: -.065em !important; }
.section-heading .body-copy { font-size: 14px !important; }
/* Follow the capital: make the evidence feel like a working investment file. */
.case-section { padding-top: 82px !important; padding-bottom: 68px !important; }
.case-heading { margin-bottom: 36px !important; }
.case-tabs {
border: 1px solid #cbc4cf !important;
background: #e8e4e9 !important;
box-shadow: 0 22px 60px rgba(46, 37, 54, .08);
}
.case-tab {
min-height: 112px;
transition: background .28s ease, color .28s ease, transform .28s var(--jbm-ease) !important;
}
.case-tab:hover { transform: translateY(-2px); }
.case-tab[aria-selected="true"] {
background: #e0d2f7 !important;
box-shadow: inset 0 -3px 0 var(--jbm-purple);
}
.case-tab[aria-selected="true"] strong { color: #5d3388 !important; }
.case-panel {
padding: 16px;
border: 1px solid #d0c8d3;
background: rgba(255, 255, 255, .35);
box-shadow: 0 26px 70px rgba(39, 29, 46, .08);
}
.case-image { min-height: 420px; }
.case-details { padding-right: clamp(10px, 2vw, 30px); }
.case-details h3 { max-width: 420px !important; }
.case-evidence {
padding: 16px !important;
border: 1px solid #cfc2db !important;
border-radius: 4px;
background: rgba(255, 255, 255, .48) !important;
}
.capital-detail { box-shadow: 0 24px 70px rgba(21, 12, 29, .15); }
.capital-next-step .btn { min-height: 56px; min-width: 260px; border-radius: 7px !important; }
/* Routes: decisiveness without a sales-template feel. */
.routes { background: #0b0a0e !important; color: #fff !important; padding-top: 78px !important; }
.routes .eyebrow { color: var(--jbm-lilac) !important; }
.routes .section-heading h2 { color: #fff !important; }
.routes .section-heading .body-copy { color: #aaa0b2 !important; }
.route-grid { gap: 1px !important; background: rgba(255, 255, 255, .16); border: 1px solid rgba(255, 255, 255, .16); }
.route-card {
min-height: 300px !important;
border: 0 !important;
border-radius: 0 !important;
background: #111014 !important;
color: #fff !important;
padding: 28px 24px !important;
transition: transform .32s var(--jbm-ease), background .32s ease, box-shadow .32s ease !important;
}
.route-card:hover {
z-index: 2;
transform: translateY(-7px) !important;
background: #18131e !important;
box-shadow: 0 22px 54px rgba(0, 0, 0, .38), inset 0 3px 0 var(--jbm-purple);
}
.route-card[aria-pressed="true"] {
background: linear-gradient(145deg, #21132e, #151018) !important;
box-shadow: inset 0 3px 0 var(--jbm-lilac) !important;
}
.route-card h3 { color: #fff !important; }
.route-card p, .route-type { color: #9e94a7 !important; }
.route-no, .route-choose { color: #c5a5f7 !important; }
.route-icon { color: #aa88df !important; }
.route-call-strip { border-top: 1px solid rgba(255, 255, 255, .15); margin-top: 36px !important; padding-top: 32px !important; }
.route-call-strip .btn { border-radius: 7px !important; }
/* Why JBM and reviews. */
.operation { padding-top: 86px !important; background: #f5f3ee !important; color: var(--jbm-ink) !important; }
.why-copy .eyebrow { color: #7244b4 !important; }
.why-copy h2 { color: #1a171d !important; }
.why-copy .body-copy, .delivery-point p { color: #6f6873 !important; }
.delivery-points { border-top: 1px solid var(--jbm-line-light); }
.delivery-point { padding: 16px 0; border-bottom: 1px solid var(--jbm-line-light); }
.delivery-point strong { color: #28222e !important; }
.film-media {
border-color: rgba(124, 71, 239, .38) !important;
box-shadow: 14px 14px 0 rgba(124, 71, 239, .11) !important;
}
.process-row { border-color: var(--jbm-line-light) !important; }
.process-item { color: #5e5664 !important; }
.jbm-trust-carousel {
border: 1px solid #d7cfdd !important;
background: var(--jbm-paper-bright) !important;
box-shadow: 0 26px 70px rgba(37, 25, 46, .08) !important;
}
.jbm-trust-carousel .tp-slide blockquote { color: #211b28 !important; }
.tp-kicker > span:last-child, .tp-slide time, .tp-curation-note { color: #75697f !important; }
.tp-summary, .tp-nav button { border-color: #d7ccdf !important; }
.tp-nav button { color: #6f3ca4 !important; background: #f4eff8 !important; }
/* Portfolio and close. */
.portfolio-section { border-top: 1px solid #d8d1dc !important; }
.portfolio-card { box-shadow: 0 16px 45px rgba(28, 20, 34, .08); }
.portfolio-card:hover { transform: translateY(-5px); }
.middleton-inner { position: relative; z-index: 1; }
#book { padding-top: 88px !important; }
#book .booking-card {
border-radius: 8px !important;
box-shadow: 0 26px 90px rgba(0, 0, 0, .42) !important;
}
.brief-steps-preview > div { transition: border-color .25s ease, transform .25s var(--jbm-ease); }
.brief-steps-preview > div:hover { border-color: var(--jbm-purple); transform: translateY(-2px); }
.booking-primary { min-height: 60px !important; border-radius: 7px !important; }
.booking-credentials a { padding-left: 13px; border-left: 2px solid #d4c0e7; }
/* Shared CTA interaction. */
.btn {
position: relative;
isolation: isolate;
overflow: hidden;
transition: transform .25s var(--jbm-ease), box-shadow .25s ease, background .25s ease !important;
}
.btn::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
transform: translateX(-115%);
background: linear-gradient(105deg, transparent 20%, rgba(255, 255, 255, .26) 47%, transparent 74%);
transition: transform .7s var(--jbm-ease);
}
.btn:hover::before { transform: translateX(115%); }
.btn:hover { transform: translateY(-2px) !important; box-shadow: inset 0 1px rgba(255,255,255,.75), inset 0 -4px 9px rgba(32,5,83,.48), 0 18px 44px rgba(83,32,191,.42) !important; }
.btn:active { transform: translateY(0) scale(.99) !important; }
.btn .arrow { transition: transform .25s var(--jbm-ease); }
.btn:hover .arrow { transform: translateX(4px); }
.hero-actions .btn.jbm-v10-attention { animation: jbmV10Attention 1s var(--jbm-ease) 1; }
@keyframes jbmV10Attention {
0%, 100% { box-shadow: inset 0 1px rgba(255,255,255,.75), inset 0 -4px 9px rgba(32,5,83,.48), 0 14px 38px rgba(83,32,191,.3); }
50% { box-shadow: inset 0 1px rgba(255,255,255,.85), inset 0 -4px 9px rgba(32,5,83,.45), 0 20px 58px rgba(137,79,255,.62); }
}
/* Motion: reveal structure, never hide content without JS. */
.v10-ready [data-v10-reveal] {
opacity: 0;
transform: translateY(30px);
filter: blur(3px);
transition:
opacity .75s var(--jbm-ease) var(--v10-delay, 0ms),
transform .75s var(--jbm-ease) var(--v10-delay, 0ms),
filter .75s var(--jbm-ease) var(--v10-delay, 0ms);
}
.v10-ready [data-v10-reveal].is-v10-visible {
opacity: 1;
transform: translateY(0);
filter: blur(0);
}
.v10-ready .hero h1 .hero-line {
animation: jbmV10Hero .78s var(--jbm-ease) both;
}
.v10-ready .hero h1 .hero-line:nth-child(2) { animation-delay: .08s; }
.v10-ready .hero h1 .hero-line:nth-child(3) { animation-delay: .16s; }
@keyframes jbmV10Hero {
from { opacity: 0; transform: translateY(26px); }
to { opacity: 1; transform: translateY(0); }
}
/* Form modal: full attention, less visual friction. */
.brief-dialog { border-radius: 10px !important; }
.brief-main { background: #fbfafc; }
.brief-progress li[aria-current="step"] { color: #5c2ea4; }
.brief-choice, .brief-select-row select, .brief-input-row input { border-radius: 6px !important; }
.brief-choice:hover { transform: translateY(-2px); }
.brief-form-actions .btn { min-height: 56px; border-radius: 7px !important; }
/* Mobile conversion view. */
@media (max-width: 800px) {
body::before { display: none; }
.hero { min-height: auto !important; padding: 92px 0 30px !important; }
.hero h1 { font-size: clamp(54px, 11.8vw, 82px) !important; }
.hero .body-copy,
.hero-actions,
.hero .jbm-trust-mini,
.jbm-v10-proof-ledger { margin-left: clamp(24px, 5.5vw, 46px) !important; }
.jbm-v10-proof-ledger { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 560px; }
.jbm-v10-proof-item:nth-child(2) { border-right: 0; }
.jbm-v10-proof-item:nth-child(-n+2) { border-bottom: 1px solid rgba(255, 255, 255, .13); }
.case-panel { padding: 10px; }
.case-image { min-height: 0; }
.route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.route-card { min-height: 285px !important; }
.operation { padding-top: 64px !important; }
}
@media (max-width: 540px) {
html { scroll-padding-top: 68px; }
.preview-note { display: none !important; }
.header-inner { height: 65px !important; }
.header-location { display: none !important; }
.header-right .btn { min-height: 40px; padding: 10px 13px !important; font-size: 10px !important; }
.hero { padding: 83px 0 26px !important; }
.hero-media::after {
background:
linear-gradient(0deg, #08080a 0%, rgba(8,8,10,.9) 42%, rgba(8,8,10,.62) 100%),
linear-gradient(90deg, rgba(8,8,10,.74), rgba(8,8,10,.18)) !important;
}
.hero-media > img, .hero-media > video { object-position: 61% center !important; }
.hero h1 {
font-size: clamp(43px, 12.3vw, 59px) !important;
line-height: .94 !important;
margin-bottom: 24px !important;
}
.hero h1 .hero-line:nth-child(2) { margin-left: 14px !important; }
.hero h1 .hero-line:nth-child(3) { margin-left: 28px !important; }
.hero .body-copy,
.hero-actions,
.hero .jbm-trust-mini,
.jbm-v10-proof-ledger { margin-left: 0 !important; }
.hero .body-copy { font-size: 14px !important; line-height: 1.66 !important; }
.hero-actions { display: grid !important; grid-template-columns: 1fr !important; gap: 8px !important; }
.hero-actions .btn { width: 100%; min-width: 0 !important; }
.hero-secondary { margin-top: 2px !important; width: fit-content; }
.hero .jbm-trust-mini { margin-top: 15px !important; font-size: 9px !important; }
.jbm-v10-proof-ledger { margin-top: 16px !important; }
.jbm-v10-proof-item { padding: 12px 10px; }
.jbm-v10-proof-item:first-child, .jbm-v10-proof-item:nth-child(3) { padding-left: 0; }
.jbm-v10-proof-item strong { font-size: 11px; }
.early-proof-inner { padding-top: 24px !important; padding-bottom: 24px !important; }
.early-proof blockquote { padding-left: 22px; font-size: 19px !important; }
.case-section { padding-top: 48px !important; padding-bottom: 42px !important; }
.case-tabs { margin-right: -18px !important; box-shadow: none; }
.case-tab { min-height: 105px; }
.case-panel { margin-top: 18px; }
.capital-next-step { display: grid !important; gap: 17px !important; }
.capital-next-step .btn { width: 100%; min-width: 0; }
.routes { padding-top: 48px !important; }
.route-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.route-card { min-height: 278px !important; padding: 22px 15px !important; }
.route-card:hover { transform: none !important; box-shadow: inset 0 3px 0 var(--jbm-purple); }
.route-call-strip { display: grid !important; gap: 22px !important; }
.route-call-strip .btn { width: 100%; min-width: 0 !important; }
.operation { padding-top: 48px !important; }
#book { padding-top: 50px !important; }
#book .booking-card { padding: 24px 20px !important; }
.brief-dialog {
width: 100% !important;
max-height: 100dvh !important;
height: 100dvh;
border: 0 !important;
border-radius: 0 !important;
}
.brief-main { padding: 22px 18px 34px !important; }
.brief-dialog-heading { position: sticky; top: 0; z-index: 5; background: rgba(251,250,252,.96); backdrop-filter: blur(10px); padding-top: 4px; }
.brief-choice { min-height: 54px; }
.brief-form-actions { position: sticky; bottom: -1px; z-index: 4; background: linear-gradient(transparent, #fbfafc 20%); padding-top: 20px; padding-bottom: max(4px, env(safe-area-inset-bottom)); }
.mobile-cta { padding-bottom: max(10px, env(safe-area-inset-bottom)); }
.mobile-cta .btn { border-radius: 7px !important; }
.mobile-cta.jbm-v10-suppressed { opacity: 0 !important; pointer-events: none !important; transform: translateY(120%) !important; }
}
@media (max-width: 360px) {
.hero h1 { font-size: 41px !important; }
.route-grid { grid-template-columns: 1fr !important; }
.route-card { min-height: 235px !important; }
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
scroll-behavior: auto !important;
animation-duration: .001ms !important;
animation-iteration-count: 1 !important;
transition-duration: .001ms !important;
}
.v10-ready [data-v10-reveal] { opacity: 1 !important; transform: none !important; filter: none !important; }
}