@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; } }