/*
Theme Name: Freedom Fusion
Theme URI: https://freedomfusionbd.com/
Author: Freedom Fusion
Author URI: https://freedomfusionbd.com/
Description: Custom agency theme for Freedom Fusion - SEO, paid advertising, web design, graphic design and video editing. Brand yellow on ink, light and dark themes, no page builder required.
Version: 2.15.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: freedom-fusion
Tags: agency, business, one-column, custom-menu, custom-logo, featured-images, translation-ready, block-styles
*/


:root{
  --paper:#FFFFFF; --cream:#F6F5F0; --surface:#FFFFFF; --surface-2:#FBFAF7;
  --text:#1A1924; --muted:#5C5969; --line:rgba(26,25,36,.12); --line-soft:rgba(26,25,36,.07);
  --ink:#14131C; --ink-2:#201F2E; --on-ink:#F4F3EF; --on-ink-muted:#A7A4B4;
  --brand:#FFDB11; --brand-deep:#D9B400; --coral:#FF5A3C; --teal:#12A594; --violet:#4B3BE8;
  --shadow:0 18px 44px -24px rgba(20,19,28,.35);
  color-scheme:light;
  --font-display:"Poppins","Segoe UI",system-ui,sans-serif;
  --r-lg:22px; --r-md:16px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--text);font-family:Manrope,"Segoe UI",system-ui,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}
img{max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:800;letter-spacing:-.025em;line-height:1.05;margin:0;text-wrap:balance}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--brand);outline-offset:3px;border-radius:6px}
.wrap{width:min(1180px,100%);margin-inline:auto;padding-inline:20px}
.sec{padding-block:clamp(56px,7.5vw,108px)}
.eyebrow{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--brand);flex:none}
.eyebrow.center{justify-content:center}
.h1{font-size:clamp(2.45rem,5.9vw,4.4rem)}
.h2{font-size:clamp(1.9rem,4vw,3rem)}
.h3{font-size:clamp(1.12rem,1.7vw,1.35rem);letter-spacing:-.015em}
.lead{font-size:1.04rem;color:var(--muted);max-width:62ch}
.mark{position:relative;display:inline-block}
.mark::after{content:"";position:absolute;left:-.05em;right:-.05em;bottom:-.06em;height:.15em;background:var(--brand);border-radius:999px;transform:rotate(-.7deg)}
.mark-solid{background:var(--brand);color:#14131C;padding:0 .16em;border-radius:6px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 25px;border-radius:999px;font-weight:700;font-size:.93rem;border:1.6px solid transparent;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease,border-color .18s ease;font-family:inherit}
.btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.btn-primary{background:var(--brand);color:#14131C;box-shadow:0 10px 24px -14px rgba(217,180,0,.9)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 30px -14px rgba(217,180,0,1)}
.btn-ink{background:var(--ink);color:#fff}
.btn-ink:hover{transform:translateY(-2px)}
.btn-ghost{border-color:var(--line);color:var(--text)}
.btn-ghost:hover{border-color:var(--text);transform:translateY(-2px)}
.btn-onink{border-color:rgba(255,255,255,.28);color:#fff}
.btn-onink:hover{background:var(--brand);color:#14131C;border-color:var(--brand)}
.card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:26px}
.band{background:var(--ink);color:var(--on-ink)}
.band .eyebrow{color:var(--brand)}
.band .lead{color:var(--on-ink-muted)}
.sec-head{display:flex;flex-wrap:wrap;gap:20px 40px;align-items:flex-end;justify-content:space-between;margin-bottom:38px}
.sec-head .h2{margin-top:14px}
.note{font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.06em;color:var(--muted);text-transform:uppercase}

/* ---------- header ---------- */
.topbar{background:var(--ink);color:var(--on-ink-muted);font-size:.8rem}
.topbar .wrap{display:flex;flex-wrap:wrap;gap:8px 22px;align-items:center;justify-content:space-between;padding-block:9px}
.topbar strong{color:var(--brand);font-weight:600;font-family:"IBM Plex Mono",monospace;letter-spacing:.1em;font-size:.68rem;text-transform:uppercase}
.topbar a:hover{color:var(--brand)}
.tb-links{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.soc{display:flex;gap:9px}
.soc a{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;border:1px solid rgba(255,255,255,.2);transition:background .18s ease,color .18s ease,border-color .18s ease}
.soc svg{width:13px;height:13px;fill:currentColor}
.soc a:hover{background:var(--brand);color:#14131C;border-color:var(--brand)}
.nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:60;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft)}
.nav .wrap{display:flex;align-items:center;gap:18px;padding-block:13px}
.logo{display:flex;align-items:center;gap:11px;font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;font-size:1.1rem;line-height:1.05}
.logo-mark{width:38px;height:38px;border-radius:11px;background:var(--brand);display:grid;place-items:center;color:#14131C;font-size:.92rem;flex:none;transform:rotate(-4deg)}
.logo small{display:block;font-family:"IBM Plex Mono",monospace;font-size:.55rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500}
.nav .nav-links{display:flex;gap:25px;margin-left:auto;font-weight:600;font-size:.92rem}
.nav .nav-links a{position:relative;padding-block:4px}
.nav .nav-links a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background:var(--brand);transition:width .22s ease}
.nav .nav-links a:hover::after{width:100%}
/* Eight items since TeamClock joined the menu. Just above the phone menu they
   only fit on one line, with the button beside them, if the gaps close up. */
@media (min-width:1001px) and (max-width:1120px){.nav .nav-links{gap:17px}.nav .nav-links a,.nav-cta .btn{white-space:nowrap}}
.nav-cta{display:flex;align-items:center;gap:10px}
.burger{display:none;width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer;place-items:center}
.burger svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.mobile-panel{border-top:1px solid var(--line-soft);background:var(--paper)}
.mobile-panel ul{display:grid;padding-block:10px}
.mobile-panel a{display:block;padding:11px 4px;font-weight:600;border-bottom:1px solid var(--line-soft)}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;background:radial-gradient(760px 420px at 86% -10%, color-mix(in srgb,var(--brand) 30%,transparent), transparent 62%),linear-gradient(180deg,var(--cream),var(--paper))}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:46px;align-items:center;padding-block:clamp(44px,6vw,84px)}
.hero h1{margin-block:18px 20px}
.hero-actions{display:flex;flex-wrap:wrap;gap:13px;margin-top:26px;align-items:center}
.rating{display:flex;align-items:center;gap:10px;margin-top:24px;font-size:.86rem;color:var(--muted);flex-wrap:wrap}
.stars{color:var(--brand-deep);letter-spacing:2px;font-size:.95rem}
.hero-art{position:relative;aspect-ratio:1/1;max-width:100%}
.hero-art svg{width:100%;height:100%;display:block}
.float-card{position:absolute;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-md);box-shadow:var(--shadow);padding:13px 16px;display:flex;gap:12px;align-items:center;max-width:78%}
.float-card .num{font-family:var(--font-display);font-size:1.45rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.float-card span{font-size:.73rem;color:var(--muted);line-height:1.35;display:block}
.fc-1{left:0;top:12%}
.fc-2{right:0;bottom:10%}
.dot-badge{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;flex:none}
.dot-badge svg{width:17px;height:17px;stroke-width:2;fill:none;stroke:currentColor}

/* ---------- marquee ---------- */
.trust{border-block:1px solid var(--line-soft);background:var(--surface-2);padding-block:24px;overflow:hidden}
.trust-head{font-family:"IBM Plex Mono",monospace;font-size:.67rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);text-align:center;margin-bottom:16px}
.marquee-mask{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee{display:flex;gap:54px;width:max-content;animation:slide 34s linear infinite}
.marquee span{font-family:var(--font-display);font-weight:700;font-size:1.12rem;letter-spacing:-.02em;color:var(--muted);opacity:.8;white-space:nowrap}
@keyframes slide{to{transform:translateX(-50%)}}

/* ---------- about ---------- */
.about .wrap{display:grid;grid-template-columns:.92fr 1.08fr;gap:52px;align-items:center}
.frame{position:relative;border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/4.4;background:linear-gradient(150deg,var(--ink-2),var(--ink));display:grid;place-items:center;border:1px solid var(--line-soft)}
.frame svg{width:100%;height:100%;display:block}
.frame-tag{position:absolute;left:14px;bottom:14px;font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.55);background:rgba(0,0,0,.42);padding:5px 9px;border-radius:7px}
.stat-badge{position:absolute;right:-10px;top:24px;background:var(--brand);color:#14131C;border-radius:18px;padding:18px 20px;box-shadow:var(--shadow);text-align:center}
.stat-badge b{display:block;font-family:var(--font-display);font-size:2.3rem;line-height:1;letter-spacing:-.04em}
.stat-badge span{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;line-height:1.3;display:block;margin-top:6px}
.check-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 22px;margin-top:26px}
.check-list li{display:flex;gap:10px;align-items:flex-start;font-size:.94rem;font-weight:600}
.tick{width:21px;height:21px;border-radius:50%;background:var(--brand);color:#14131C;display:grid;place-items:center;flex:none;margin-top:2px}
.tick svg{width:12px;height:12px;stroke:currentColor;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}
.bars{display:grid;gap:16px;margin-top:30px;max-width:520px}
.bar-row{display:grid;gap:7px}
.bar-top{display:flex;justify-content:space-between;font-size:.84rem;font-weight:700}
.bar-top em{font-style:normal;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;color:var(--muted)}
.bar{height:7px;border-radius:999px;background:var(--line-soft);overflow:hidden}
.bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--brand),var(--brand-deep))}

/* ---------- process band ---------- */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid rgba(255,255,255,.14);border-radius:var(--r-lg);overflow:hidden}
.step{padding:28px 24px 30px;border-right:1px solid rgba(255,255,255,.14);position:relative;transition:background .25s ease}
.step:last-child{border-right:none}
.step:hover{background:rgba(255,255,255,.05)}
.step-n{font-family:var(--font-display);font-size:2.6rem;font-weight:800;letter-spacing:-.05em;line-height:1;color:transparent;-webkit-text-stroke:1.4px var(--brand)}
.step h3{margin-block:14px 9px;color:#fff}
.step p{font-size:.9rem;color:var(--on-ink-muted)}
.step-when{margin-top:16px;font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brand)}
.band-head{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:end;margin-bottom:40px}

/* ---------- services ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.svc{position:relative;overflow:hidden;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;padding:30px}
.svc:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--line)}
.svc-ico{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;margin-bottom:18px}
.svc-ico svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.svc p{margin-top:10px;color:var(--muted);font-size:.94rem}
.svc ul{margin-top:16px;display:grid;gap:7px}
.svc ul li{font-size:.86rem;color:var(--muted);display:flex;gap:9px}
.svc ul li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brand);margin-top:9px;flex:none}
.svc-link{margin-top:20px;display:inline-flex;gap:8px;align-items:center;font-weight:700;font-size:.87rem}
.svc-link svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;transition:transform .2s ease}
.svc:hover .svc-link svg{transform:translateX(4px)}

/* ---------- promise ---------- */
.promise .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:52px;align-items:center}
.promise-art{position:relative}
.promise-art svg{width:100%;height:auto;display:block}
.promise-list{display:grid;gap:14px;margin-top:26px}
.promise-list li{display:flex;gap:14px;padding:16px 18px;border:1px solid var(--line-soft);border-radius:var(--r-md);background:var(--surface-2)}
.promise-list b{display:block;font-family:var(--font-display);font-size:1rem;letter-spacing:-.01em}
.promise-list p{font-size:.88rem;color:var(--muted);margin-top:3px}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:rgba(255,255,255,.14);border-radius:var(--r-lg);overflow:hidden}
.stat{background:var(--ink);padding:30px 24px;text-align:center}
.stat b{display:block;font-family:var(--font-display);font-size:clamp(2rem,3.6vw,2.9rem);letter-spacing:-.04em;line-height:1;color:var(--brand);font-variant-numeric:tabular-nums}
.stat span{display:block;margin-top:9px;font-size:.8rem;color:var(--on-ink-muted);letter-spacing:.02em}

/* ---------- statement ---------- */
.statement{text-align:center}
.statement .h1{font-size:clamp(2.6rem,7.4vw,5.6rem);line-height:.98}
.statement .h1 em{font-style:normal;color:var(--muted)}
.vert{writing-mode:vertical-rl;font-family:"IBM Plex Mono",monospace;font-size:.64rem;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.statement-row{display:flex;gap:30px;align-items:center;justify-content:center}

/* ---------- work ---------- */
.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.work-card{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line-soft);background:var(--surface);transition:transform .22s ease,box-shadow .22s ease}
.work-card:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.work-thumb{aspect-ratio:4/3;position:relative;display:grid;place-items:center;overflow:hidden}
.work-thumb svg{width:100%;height:100%;display:block}
.work-kpi{position:absolute;left:16px;top:16px;background:rgba(20,19,28,.82);color:#fff;border-radius:999px;padding:6px 13px;font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.08em}
.work-body{padding:20px 22px 24px}
.work-body .h3{margin-bottom:7px}
.work-body p{font-size:.89rem;color:var(--muted)}
.tagrow{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}
.tag{font-family:"IBM Plex Mono",monospace;font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:4px 10px;color:var(--muted)}

/* ---------- team ---------- */
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.member{text-align:center}
.member-ph{aspect-ratio:1/1.08;border-radius:var(--r-lg);overflow:hidden;position:relative;display:grid;place-items:center;border:1px solid var(--line-soft)}
.member-ph .initials{font-family:var(--font-display);font-size:2.4rem;font-weight:800;color:rgba(255,255,255,.92);letter-spacing:-.04em}
.member-soc{position:absolute;inset:auto 0 0 0;display:flex;justify-content:center;gap:8px;padding:12px;background:linear-gradient(180deg,transparent,rgba(20,19,28,.72));opacity:0;transform:translateY(8px);transition:opacity .22s ease,transform .22s ease}
.member:hover .member-soc{opacity:1;transform:none}
.member-soc a{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#14131C;display:grid;place-items:center}
.member-soc svg{width:13px;height:13px;fill:currentColor}
.member h4{margin-top:14px;font-size:1rem}
.member span{font-size:.8rem;color:var(--muted);font-family:"IBM Plex Mono",monospace;letter-spacing:.06em}

/* ---------- tools ---------- */
.tools{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden}
.tool{background:var(--surface);padding:24px 20px;display:flex;flex-direction:column;gap:6px;transition:background .2s ease}
.tool:hover{background:var(--surface-2)}
.tool b{font-family:var(--font-display);font-size:1rem;letter-spacing:-.01em}
.tool span{font-size:.79rem;color:var(--muted)}
.tool i{width:26px;height:26px;border-radius:8px;display:block;margin-bottom:6px}

/* ---------- testimonial ---------- */
.testi .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;align-items:center}
.quote{font-family:var(--font-display);font-size:clamp(1.25rem,2.1vw,1.7rem);font-weight:500;line-height:1.38;letter-spacing:-.02em;margin-block:22px 24px}
.who{display:flex;gap:13px;align-items:center}
.who .av{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-weight:800;color:#14131C;background:var(--brand);flex:none}
.who b{display:block;font-size:.95rem}
.who span{font-size:.8rem;color:var(--muted)}
.testi-nav{display:flex;gap:9px;margin-top:26px}
.testi-nav button{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer;display:grid;place-items:center;transition:background .18s ease,color .18s ease,border-color .18s ease}
.testi-nav button:hover{background:var(--brand);color:#14131C;border-color:var(--brand)}
.testi-nav svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.dots{display:flex;gap:7px;align-items:center;margin-left:8px}
.dots i{width:7px;height:7px;border-radius:50%;background:var(--line);display:block;transition:background .2s ease,width .2s ease}
.dots i.on{background:var(--brand);width:22px;border-radius:999px}

/* ---------- blog ---------- */
.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.post{border:1px solid var(--line-soft);border-radius:var(--r-lg);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;transition:transform .22s ease,box-shadow .22s ease}
.post:hover{transform:translateY(-5px);box-shadow:var(--shadow)}
.post-top{aspect-ratio:16/9;position:relative}
.post-top svg{width:100%;height:100%;display:block}
.post-date{position:absolute;left:14px;top:14px;background:var(--brand);color:#14131C;border-radius:10px;padding:7px 11px;text-align:center;font-family:"IBM Plex Mono",monospace;font-size:.62rem;font-weight:600;letter-spacing:.08em;line-height:1.3}
.post-date b{display:block;font-size:1.05rem;font-family:var(--font-display)}
.post-body{padding:20px 22px 24px;display:flex;flex-direction:column;gap:9px;flex:1}
.post-cat{font-family:"IBM Plex Mono",monospace;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--brand-deep)}
.post p{font-size:.88rem;color:var(--muted)}
.read{margin-top:auto;padding-top:14px;font-weight:700;font-size:.85rem;display:inline-flex;gap:8px;align-items:center}
.read svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;transition:transform .2s ease}
.post:hover .read svg{transform:translateX(4px)}

/* ---------- cta + form ---------- */
.cta-box{background:var(--brand);color:#14131C;border-radius:28px;padding:clamp(28px,4vw,52px);display:grid;grid-template-columns:1.05fr .95fr;gap:38px;align-items:center;position:relative;overflow:hidden}
.cta-box .h2{color:#14131C}
.cta-box p{color:rgba(20,19,28,.72);margin-top:12px;font-size:1rem}
.cta-mono{font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(20,19,28,.6)}
form{display:grid;gap:11px;background:#fff;border-radius:20px;padding:22px}
form label{font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#5C5969}
.field{display:grid;gap:5px}
input,textarea,select{font-family:inherit;font-size:.93rem;padding:12px 14px;border-radius:11px;border:1.4px solid rgba(26,25,36,.14);background:#FBFAF7;color:#1A1924;width:100%}
input:focus,textarea:focus,select:focus{outline:none;border-color:#14131C}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.form-msg{font-size:.84rem;font-weight:600;color:#14131C;background:rgba(255,219,17,.35);border-radius:10px;padding:10px 12px}

/* ---------- footer ---------- */
footer{background:var(--ink);color:var(--on-ink-muted);padding-block:clamp(48px,6vw,76px) 0}
.f-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.3fr;gap:36px}
footer h4{color:#fff;font-size:.95rem;margin-bottom:16px;letter-spacing:.01em}
footer a:hover{color:var(--brand)}
.f-links{display:grid;gap:9px;font-size:.9rem}
.f-contact{display:grid;gap:13px;font-size:.9rem}
.f-contact div{display:flex;gap:11px;align-items:flex-start}
.f-contact svg{width:17px;height:17px;flex:none;margin-top:3px;fill:none;stroke:var(--brand);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.f-about p{font-size:.9rem;margin-top:14px;max-width:34ch}
.f-bottom{margin-top:44px;border-top:1px solid rgba(255,255,255,.12);padding-block:20px;display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;font-size:.82rem}
.footer-logo{display:flex;align-items:center;gap:11px;font-family:var(--font-display);font-weight:800;color:#fff;font-size:1.1rem;letter-spacing:-.03em}
.to-top{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));width:44px;height:44px;border-radius:50%;background:var(--brand);color:#14131C;border:none;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;transform:translateY(10px);z-index:70}
.to-top.on{opacity:1;pointer-events:auto;transform:none}
.to-top svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}

/* ---------- reveal ---------- */
.rv{transition:opacity .6s ease,transform .6s ease}
.rv.pending{opacity:.001;transform:translateY(18px)}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .hero .wrap,.about .wrap,.promise .wrap,.testi .wrap{grid-template-columns:1fr}
  .band-head{grid-template-columns:1fr}
  .steps{grid-template-columns:repeat(2,1fr)}
  .step:nth-child(2n){border-right:none}
  .step:nth-child(-n+2){border-bottom:1px solid rgba(255,255,255,.14)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .work-grid,.post-grid{grid-template-columns:repeat(2,1fr)}
  .team-grid,.tools{grid-template-columns:repeat(2,1fr)}
  .cta-box{grid-template-columns:1fr}
  .f-grid{grid-template-columns:1fr 1fr}
  .nav .nav-links{display:none}
  .burger{display:grid}
  .hero-art{max-width:520px;margin-inline:auto}
  .stat-badge{right:0}
}
@media (max-width:640px){
  .svc-grid{grid-template-columns:1fr}
  .work-grid,.post-grid,.team-grid,.tools,.stats{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  .step{border-right:none;border-bottom:1px solid rgba(255,255,255,.14)}
  .step:last-child{border-bottom:none}
  .check-list{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .f-grid{grid-template-columns:1fr}
  .topbar .tb-links .hide-sm{display:none}
  .statement-row .vert{display:none}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .marquee{animation:none;flex-wrap:wrap;width:auto;justify-content:center;gap:26px}
  .rv.pending{opacity:1;transform:none}
}

/* ---------- inner page header ---------- */
.page-hero{background:radial-gradient(700px 360px at 82% -20%, color-mix(in srgb,var(--brand) 26%,transparent), transparent 62%),linear-gradient(180deg,var(--cream),var(--paper));border-bottom:1px solid var(--line-soft)}
.page-hero .wrap{padding-block:clamp(38px,5vw,68px)}
.crumb{font-family:"IBM Plex Mono",monospace;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}
.crumb a:hover{color:var(--text)}
.page-hero .h1{font-size:clamp(2.1rem,4.8vw,3.5rem);max-width:16ch}
.page-hero .lead{margin-top:18px}
.nav .nav-links a.active,.nav .nav-links li.is-current > a{color:var(--text)}
.nav .nav-links a.active::after,.nav .nav-links li.is-current > a::after{width:100%}

/* ---------- story ---------- */
.story{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:start}
.story p + p{margin-top:16px}
.story .lead{max-width:none}
.trusted{display:inline-flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:999px;padding:9px 18px 9px 10px;margin-bottom:22px}
.trusted b{font-family:var(--font-display);font-size:1.05rem;letter-spacing:-.02em}
.trusted span{font-size:.82rem;color:var(--muted)}
.trusted i{width:34px;height:34px;border-radius:50%;background:var(--brand);color:#14131C;display:grid;place-items:center;flex:none}
.trusted i svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* ---------- what we do best ---------- */
.best{display:grid;grid-template-columns:repeat(2,1fr);gap:0;border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden}
.best-row{display:flex;gap:20px;align-items:flex-start;padding:26px 28px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);background:var(--surface);transition:background .2s ease}
.best-row:hover{background:var(--surface-2)}
.best-row:nth-child(2n){border-right:none}
.best-row:nth-last-child(-n+2){border-bottom:none}
.best-n{font-family:"IBM Plex Mono",monospace;font-size:.78rem;font-weight:600;color:var(--brand-deep);padding-top:4px;flex:none}
.best-row h3{margin-bottom:6px}
.best-row p{font-size:.9rem;color:var(--muted)}

/* ---------- why choose us ---------- */
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:30px}
.why-chip{display:flex;align-items:center;gap:12px;border:1px solid var(--line-soft);background:var(--surface);border-radius:var(--r-md);padding:16px 18px;font-weight:700;font-size:.95rem}
.why-chip i{width:9px;height:9px;border-radius:50%;flex:none}
.why-note{margin-top:26px;font-size:1.02rem;color:var(--muted);max-width:56ch}

/* ---------- crew ---------- */
.crew-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px}
.crew-lead{grid-column:span 1}
.member-ph.tall{aspect-ratio:1/1.15}
.role-pill{position:absolute;left:12px;top:12px;font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;background:var(--brand);color:#14131C;border-radius:999px;padding:5px 10px}
.crew-cta{margin-top:44px;border:1px dashed var(--line);border-radius:var(--r-lg);padding:28px;display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between}
.crew-cta p{color:var(--muted);font-size:.95rem;max-width:52ch}

/* ---------- values ---------- */
.val-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.val{padding:28px}
.val i{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;margin-bottom:16px;background:rgba(255,219,17,.22);color:#8A7200}
.val i svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.val p{margin-top:8px;font-size:.92rem;color:var(--muted)}

@media (max-width:1000px){
  .story{grid-template-columns:1fr}
  .why-grid,.val-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .best{grid-template-columns:1fr}
  .best-row{border-right:none}
  .best-row:nth-last-child(-n+2){border-bottom:1px solid var(--line-soft)}
  .best-row:last-child{border-bottom:none}
  .why-grid,.val-grid{grid-template-columns:1fr}
}

/* ---------- service detail ---------- */
.svc-hero{display:grid;grid-template-columns:1.15fr .85fr;gap:42px;align-items:center}
.svc-hero .h1{font-size:clamp(2.1rem,4.6vw,3.4rem);max-width:14ch}
.svc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:34px}
.svc-stat{border:1px solid var(--line-soft);background:var(--surface);border-radius:var(--r-md);padding:20px}
.svc-stat b{display:block;font-family:var(--font-display);font-size:clamp(1.7rem,3vw,2.3rem);letter-spacing:-.04em;line-height:1;color:var(--brand-deep);font-variant-numeric:tabular-nums}
.svc-stat span{display:block;margin-top:8px;font-size:.82rem;color:var(--muted)}
.incl-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.incl{padding:26px}
.incl .best-n{display:block;margin-bottom:12px}
.incl p{margin-top:8px;font-size:.92rem;color:var(--muted)}
.service-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px}
.service-nav a{border:1px solid var(--line);border-radius:999px;padding:9px 17px;font-size:.86rem;font-weight:600;transition:background .18s ease,color .18s ease,border-color .18s ease}
.service-nav a:hover,.service-nav a[aria-current="page"]{background:var(--brand);border-color:var(--brand);color:#14131C}

/* ---------- faq ---------- */
.faq{display:grid;gap:12px;max-width:760px}
.faq details{border:1px solid var(--line-soft);background:var(--surface);border-radius:var(--r-md);padding:2px 20px}
.faq summary{cursor:pointer;list-style:none;padding:17px 0;font-weight:700;font-size:1rem;display:flex;justify-content:space-between;gap:18px;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:"IBM Plex Mono",monospace;font-size:1.25rem;color:var(--brand-deep);line-height:1}
.faq details[open] summary::after{content:"\2212"}
.faq p{padding-bottom:18px;font-size:.93rem;color:var(--muted);max-width:62ch}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:42px;align-items:start}
.info-list{display:grid;gap:14px;margin-top:26px}
.info-card{display:flex;gap:15px;align-items:flex-start;border:1px solid var(--line-soft);background:var(--surface);border-radius:var(--r-md);padding:18px 20px}
.info-card i{width:40px;height:40px;border-radius:12px;background:var(--brand);color:#14131C;display:grid;place-items:center;flex:none}
.info-card i svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.info-card b{display:block;font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-family:"IBM Plex Mono",monospace}
.info-card span{font-size:1rem;font-weight:600;display:block;margin-top:3px}
.contact-form{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:clamp(22px,3vw,32px)}
.contact-form label{color:var(--muted)}
.contact-form input,.contact-form textarea,.contact-form select{background:var(--surface-2);border-color:var(--line);color:var(--text)}
.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus{border-color:var(--brand-deep)}
.map-note{margin-top:22px;border:1px dashed var(--line);border-radius:var(--r-md);padding:18px 20px;font-size:.88rem;color:var(--muted)}

/* ---------- legal prose ---------- */
.prose{max-width:74ch}
.prose h2{font-size:clamp(1.25rem,2.2vw,1.6rem);margin-top:38px;margin-bottom:12px}
.prose h3{font-size:1.02rem;margin-top:24px;margin-bottom:8px}
.prose p{margin-bottom:14px;color:var(--muted)}
.prose ul{margin:0 0 16px;padding-left:0;display:grid;gap:8px}
.prose ul li{display:flex;gap:11px;color:var(--muted);font-size:.95rem}
.prose ul li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--brand);margin-top:9px;flex:none}
.prose .updated{font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:7px 14px;display:inline-block;margin-bottom:8px}
.toc{border:1px solid var(--line-soft);background:var(--surface-2);border-radius:var(--r-md);padding:20px 22px;margin-bottom:34px}
.toc b{font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:12px}
.toc ol{margin:0;padding-left:20px;columns:2;column-gap:28px;font-size:.9rem}
.toc li{margin-bottom:6px}
.toc a:hover{color:var(--brand-deep)}

/* ---------- 404 ---------- */
.nf{text-align:center;padding-block:clamp(60px,10vw,120px)}
.nf .code{font-family:var(--font-display);font-size:clamp(5rem,18vw,11rem);font-weight:800;letter-spacing:-.06em;line-height:.9;color:transparent;-webkit-text-stroke:2px var(--brand-deep)}

@media (max-width:1000px){
  .svc-hero,.contact-grid{grid-template-columns:1fr}
  .incl-grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  .svc-stats{grid-template-columns:1fr}
  .toc ol{columns:1}
}

/* ---------- WordPress core ---------- */
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.screen-reader-text:focus{position:static!important;width:auto;height:auto;margin:0;clip:auto;padding:10px 16px;background:var(--brand);color:#14131C;border-radius:10px}
.alignleft{float:left;margin:6px 24px 16px 0}
.alignright{float:right;margin:6px 0 16px 24px}
.aligncenter{display:block;margin-inline:auto}
.alignwide,.alignfull{max-width:100%}
.wp-caption{max-width:100%}
.wp-caption-text,figcaption{font-size:.82rem;color:var(--muted);margin-top:8px}
.prose img,.prose figure{max-width:100%;height:auto;border-radius:var(--r-md)}
.prose a{text-decoration:underline;text-underline-offset:3px}
.prose blockquote{margin:22px 0;padding:18px 22px;border-left:3px solid var(--brand);background:var(--surface-2);border-radius:0 var(--r-md) var(--r-md) 0}
.prose ol{margin:0 0 16px;padding-left:22px;display:grid;gap:8px;color:var(--muted)}
.prose table{width:100%;border-collapse:collapse;font-size:.92rem;margin-bottom:18px}
.prose th,.prose td{border:1px solid var(--line-soft);padding:10px 12px;text-align:left}
.prose pre{overflow-x:auto;background:var(--ink);color:#F4F3EF;padding:16px 18px;border-radius:var(--r-md);font-size:.86rem}
.prose code{font-family:"IBM Plex Mono",monospace;font-size:.88em}
.post-body .h3 a:hover{color:var(--brand-deep)}
.pagination .nav-links{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.pagination .page-numbers{border:1px solid var(--line);border-radius:999px;padding:9px 17px;font-size:.86rem;font-weight:600;display:inline-block}
.pagination .page-numbers:hover,.pagination .page-numbers.current{background:var(--brand);border-color:var(--brand);color:#14131C}
.comment-list{display:grid;gap:18px;margin:22px 0}
.comment-list li{border:1px solid var(--line-soft);border-radius:var(--r-md);padding:18px 20px;background:var(--surface)}
.comment-form{display:grid;gap:12px;max-width:620px}
.comment-form input[type="submit"]{background:var(--brand);color:#14131C;border:none;border-radius:999px;padding:13px 25px;font-weight:700;cursor:pointer;width:max-content}
.comment-reply-title,.comments-title{font-family:var(--font-display);font-size:1.2rem;font-weight:800;letter-spacing:-.02em}
.nav > .wrap > nav{margin-left:auto}
.nav .nav-links li{display:block}
@media (max-width:1000px){.nav > .wrap > nav{display:none}}

/* ---------- mobile pass ---------- */
html{-webkit-text-size-adjust:100%}
body{overflow-wrap:break-word}
.prose{overflow-wrap:anywhere}
.prose > table{display:block;max-width:100%;overflow-x:auto}

/* Touch devices get no hover, so anything hidden until hover must be visible. */
@media (hover:none){
  .member-soc{opacity:1;transform:none}
  .svc:hover,.work-card:hover,.post:hover{transform:none}
  .btn:hover{transform:none}
}

@media (max-width:1000px){
  /* the desktop menu is replaced by the burger panel */
  .nav > .wrap > nav{display:none}
  .mobile-panel .nav-links{display:block!important;margin-left:0;font-size:1rem}
  .mobile-panel .nav-links li{border-bottom:1px solid var(--line-soft)}
  .mobile-panel .nav-links a{display:block;padding:11px 4px}
  .mobile-panel .nav-links a::after{display:none}
}

@media (max-width:760px){
  .nav .wrap{gap:10px;padding-block:11px}
  .logo{font-size:1rem;gap:9px}
  .logo-mark{width:34px;height:34px;border-radius:10px;font-size:.85rem}
  .nav-cta{gap:8px}
  .nav-cta .btn-primary{display:none}   /* still reachable in the burger menu */
  .topbar{font-size:.74rem}
  .topbar .wrap{gap:6px 14px;padding-block:8px}
  .topbar strong{font-size:.62rem}
  .float-card{padding:10px 12px;gap:9px;max-width:88%}
  .float-card .num{font-size:1.15rem}
  .float-card span{font-size:.68rem}
  .dot-badge{width:28px;height:28px}
  .dot-badge svg{width:14px;height:14px}
  .fc-1{top:6%}
  .fc-2{bottom:4%}
}

@media (max-width:640px){
  .wrap{padding-inline:16px}
  /* iOS zooms the page when a focused field is smaller than 16px */
  input,textarea,select{font-size:16px}
  .btn{padding:12px 20px;font-size:.9rem}
  .hero-actions{gap:10px}
  .hero-actions .btn{flex:1 1 auto;justify-content:center}
  .hero .wrap{gap:34px}
  .hero-art{max-width:100%}
  .rating{font-size:.82rem}
  .sec-head{margin-bottom:28px}
  /* the badge sits over the picture on desktop; on a phone it goes under it */
  .stat-badge{position:static;display:inline-block;margin:-26px 0 0 12px}
  .stat-badge b{font-size:1.9rem}
  .bars{max-width:none}
  .quote{font-size:1.1rem}
  .statement .h1{font-size:clamp(2.1rem,9vw,3rem)}
  .cta-box{border-radius:22px}
  .contact-form{padding:20px}
  .crew-cta{padding:22px}
  .faq summary{font-size:.95rem;gap:12px}
  .toc ol{padding-left:18px}
  .prose h2{margin-top:30px}
  .to-top{right:14px;width:42px;height:42px}
}

@media (max-width:420px){
  .topbar .soc{display:none}
  .topbar .wrap{justify-content:center}
  .logo small{display:none}
  .h1{font-size:2.05rem}
  .page-hero .h1{font-size:1.95rem}
  .h2{font-size:1.65rem}
  .lead{font-size:.98rem}
  .member-ph.tall{aspect-ratio:1/1}
  .work-kpi{font-size:.62rem;left:12px;top:12px}
  .stat b{font-size:2rem}
}

/* ---------- uploaded logo: keep it to the height of the bar ---------- */
.logo .custom-logo-link,.footer-logo .custom-logo-link{display:block;line-height:0}
.logo img,.logo .custom-logo{height:42px;width:auto;max-width:230px;object-fit:contain;display:block}
@media (max-width:1000px){
  .logo img,.logo .custom-logo{height:36px;max-width:190px}
}
@media (max-width:760px){
  .logo img,.logo .custom-logo{height:30px;max-width:160px}
}
@media (max-width:420px){
  .logo img,.logo .custom-logo{height:26px;max-width:132px}
}

/* ---------- team: intro beside the photo grid ---------- */
:root{--label-accent:#8A7200}

.team-layout{display:grid;grid-template-columns:repeat(4,1fr);gap:30px 22px;align-items:start}
.team-intro{grid-column:span 2;position:relative;align-self:center;padding-right:18px}
.team-intro > *{position:relative;z-index:1}
.team-watermark{position:absolute;top:-52px;left:-6px;z-index:0;font-family:var(--font-display);font-size:clamp(3.4rem,6vw,5.4rem);font-weight:800;letter-spacing:-.05em;line-height:1;color:transparent;-webkit-text-stroke:1.5px var(--line);pointer-events:none;user-select:none}
.team-intro .h2{margin:14px 0 16px}
.team-intro .lead{margin-bottom:26px}

/* card: portrait photo, name and role read left to right */
.member{text-align:left}
.member-ph,.member-ph.tall{aspect-ratio:3/3.9;border-radius:18px}
.member h4{margin-top:15px;font-size:1rem;letter-spacing:-.01em}
.member span{display:block;margin-top:4px;font-family:"IBM Plex Mono",monospace;font-size:.68rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--label-accent)}
.member-soc{justify-content:flex-start;padding:12px 14px}
.crew-grid{grid-template-columns:repeat(auto-fit,minmax(176px,1fr))}

@media (max-width:1000px){
  .team-layout{grid-template-columns:repeat(2,1fr)}
  .team-intro{grid-column:span 2;padding-right:0}
  .team-watermark{top:-44px}
}
@media (max-width:640px){
  .team-layout{gap:22px 16px}
  .member-ph,.member-ph.tall{aspect-ratio:3/3.6;border-radius:15px}
  .member h4{margin-top:12px;font-size:.95rem}
  .member span{font-size:.62rem;letter-spacing:.1em}
}
@media (max-width:420px){
  .member-ph,.member-ph.tall{aspect-ratio:3/3.4}
  .member-ph .initials{font-size:1.8rem}
}

/* ---------- team page: four columns, icons under each card ---------- */
.team-mission{display:grid;grid-template-columns:.9fr 1.1fr;gap:34px;align-items:start}
.team-mission .h2{max-width:14ch}
.team-page-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:34px 22px}
.member-stacked .member-soc{position:static;inset:auto;opacity:1;transform:none;background:none;padding:0;margin-top:13px;justify-content:flex-start;gap:8px}
.member-stacked .member-soc a{width:31px;height:31px;border:1px solid var(--line);background:transparent;color:var(--text);transition:background .18s ease,color .18s ease,border-color .18s ease}
.member-stacked .member-soc a:hover{background:var(--brand);border-color:var(--brand);color:#14131C}
.member-stacked .member-soc svg{width:13px;height:13px;fill:currentColor}
@media (max-width:1000px){
  .team-mission{grid-template-columns:1fr;gap:18px}
  .team-page-grid{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:760px){
  .team-page-grid{grid-template-columns:repeat(2,1fr);gap:26px 16px}
}

/* ---------- photo shape: one big curve at the bottom left ---------- */
.member-ph,.member-ph.tall{border-radius:14px 14px 14px 64px}
.member-ph img{object-position:center 22%}

/* on a phone the founder gets the full width to himself */
@media (max-width:760px){
  .member-ph,.member-ph.tall{border-radius:12px 12px 12px 46px}
  .team-layout{grid-template-columns:repeat(2,1fr)}
  .team-intro{grid-column:span 2}
  .team-intro + .member{grid-column:span 2}
  .team-intro + .member .member-ph,.team-intro + .member .member-ph.tall{aspect-ratio:4/3.5;border-radius:16px 16px 16px 64px}
  .team-intro + .member h4{font-size:1.1rem}
}
@media (max-width:420px){
  .member-ph,.member-ph.tall{border-radius:12px 12px 12px 38px}
  .team-intro + .member .member-ph,.team-intro + .member .member-ph.tall{aspect-ratio:4/3.6;border-radius:14px 14px 14px 54px}
}

/* ---------- team card motion ---------- */
.member-soc{z-index:2}
.member-ph img,.member-ph .initials{transition:transform .55s cubic-bezier(.2,.7,.3,1)}
.member-ph::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 58%,rgba(20,19,28,.42));opacity:0;transition:opacity .35s ease;pointer-events:none}
.member:hover .member-ph img,.member:hover .member-ph .initials{transform:scale(1.055)}
.member:hover .member-ph::after{opacity:1}
.member h4{transition:color .25s ease}
.member:hover h4{color:var(--brand-deep)}
/* cards fade in one after another as the row scrolls into view */
.rv{transition-delay:calc(var(--i, 0) * 70ms)}
@media (prefers-reduced-motion:reduce){
  .member-ph img,.member-ph .initials{transition:none}
  .member:hover .member-ph img,.member:hover .member-ph .initials{transform:none}
  .member-ph::after{display:none}
  .rv{transition-delay:0s}
}

/* ---------- team photo: no frame, icons slide in on hover ---------- */
.member-ph,.member-ph.tall{border:none}
.member-soc{position:absolute;right:12px;top:50%;left:auto;bottom:auto;flex-direction:column;justify-content:center;gap:8px;padding:0;background:none;opacity:0;transform:translate(12px,-50%);transition:opacity .3s ease,transform .3s ease;z-index:3}
.member:hover .member-soc,.member:focus-within .member-soc{opacity:1;transform:translate(0,-50%)}
.member-soc a{width:34px;height:34px;border-radius:50%;background:var(--brand);color:#14131C;display:grid;place-items:center;box-shadow:0 8px 18px -10px rgba(20,19,28,.8);transition:background .2s ease,color .2s ease,transform .2s ease}
.member-soc a:hover{background:#14131C;color:var(--brand);transform:translateY(-2px)}
.member-soc svg{width:14px;height:14px;fill:currentColor}
/* icons ride in one after another */
.member-soc a:nth-child(2){transition-delay:.04s}
.member-soc a:nth-child(3){transition-delay:.08s}
.member-soc a:nth-child(4){transition-delay:.12s}
@media (hover:none){
  .member-soc{opacity:1;transform:translate(0,-50%)}
}
@media (max-width:420px){
  .member-soc a{width:30px;height:30px}
  .member-soc{right:8px;gap:6px}
}

/* ---------- breadcrumbs, skip link, linked tags ---------- */
address{font-style:normal}
.crumb ol{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0}
.crumb li{display:flex;align-items:center;gap:8px}
.crumb li+li::before{content:"/";color:var(--muted);opacity:.55}
.crumb a:hover{color:var(--text)}
.crumb [aria-current="page"]{color:var(--text)}
.skip-link{position:absolute;left:-9999px;top:0}
.skip-link:focus{left:16px;top:16px;z-index:200;background:var(--brand);color:#14131C;padding:10px 18px;border-radius:12px;font-weight:700}
a.tag:hover{border-color:var(--text);color:var(--text)}
.tool b{transition:color .2s ease}
.tool:hover b{color:var(--brand-deep)}
.member span a{color:inherit;text-decoration:none}
.member span a:hover{color:var(--text)}

/* the retention badge sits on the picture, so the wrapper has to be its anchor */
.about-figure{position:relative}

/* ---------- pricing ---------- */
.pricing-head{text-align:center;max-width:56ch;margin:0 auto 46px}
.pricing-head .h2{margin-top:14px}
.pricing-head .lead{margin:16px auto 0}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:start}
.plan{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:34px 28px 30px;transition:transform .22s ease,box-shadow .22s ease}
.plan:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.plan-badge{position:absolute;top:-12px;left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--brand);color:#14131C;font-family:"IBM Plex Mono",monospace;font-size:.6rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;padding:6px 14px;border-radius:999px}
.plan-name{text-align:center;font-size:1.05rem}
.plan-price{display:flex;align-items:flex-start;justify-content:center;gap:3px;margin:20px 0 0}
.plan-cur{font-family:var(--font-display);font-weight:700;font-size:1.15rem;margin-top:10px}
.plan-amount{font-family:var(--font-display);font-weight:800;font-size:clamp(2.6rem,4.4vw,3.3rem);letter-spacing:-.04em;line-height:1}
.plan-period{font-size:.85rem;color:var(--muted);align-self:flex-end;margin-bottom:6px}
.plan-note{text-align:center;font-size:.78rem;color:var(--muted);margin-top:8px}
.plan-sep{height:1px;background:var(--line-soft);margin:24px 0}
.plan-features{display:grid;gap:12px;margin-bottom:28px}
.plan-features li{display:flex;gap:11px;align-items:flex-start;font-size:.9rem}
.plan-features svg{width:17px;height:17px;flex:none;margin-top:3px;color:var(--brand-deep)}
.plan-features .off{color:var(--muted);opacity:.7}
.plan-features .off svg{color:var(--muted)}
.plan .btn{margin-top:auto;justify-content:center}
.plan-featured{background:var(--ink);border-color:var(--ink);padding-block:44px 38px}
.plan-featured .plan-name,.plan-featured .plan-amount,.plan-featured .plan-cur,.plan-featured .plan-features li{color:#fff}
.plan-featured .plan-period,.plan-featured .plan-note{color:var(--on-ink-muted)}
.plan-featured .plan-sep{background:rgba(255,255,255,.16)}
.plan-featured .plan-features svg{color:var(--brand)}
.plan-featured .plan-features .off,.plan-featured .plan-features .off svg{color:var(--on-ink-muted);opacity:.6}
.pricing-foot{text-align:center;font-size:.9rem;color:var(--muted);margin-top:30px}
@media (max-width:1000px){
  .plans{grid-template-columns:1fr;max-width:440px;margin-inline:auto;gap:30px}
  .plan-featured{padding-block:38px 34px}
}

/* ---------- hero: oversized type, arch picture ---------- */
.hero-xl{background:radial-gradient(680px 420px at 78% -12%, color-mix(in srgb,var(--brand) 26%,transparent), transparent 62%),linear-gradient(180deg,var(--cream),var(--paper))}
.hero-xl .wrap{display:grid;grid-template-columns:1.12fr .88fr;gap:44px;align-items:center;padding-block:clamp(40px,5.5vw,80px)}
.hero-head{display:flex;align-items:flex-end;gap:20px;margin-top:20px}
.hero-side{flex:none;margin-bottom:.9em;font-family:"IBM Plex Mono",monospace;font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;line-height:1.5;padding-bottom:12px;border-bottom:3px solid var(--brand);max-width:9ch}
.hero-title{font-family:var(--font-display);font-weight:800;text-transform:uppercase;font-size:clamp(2.5rem,7.6vw,5.6rem);line-height:.94;letter-spacing:-.035em;margin:0;text-wrap:balance}
.hero-title .blob{display:inline-block;background:var(--brand);border-radius:999px;padding:0 .26em .06em;transform:rotate(-1.4deg)}
.hero-foot{display:flex;gap:22px;align-items:flex-start;margin-top:36px}
.scroll-dot{flex:none;width:44px;height:66px;border:1px solid var(--line);border-radius:999px;display:grid;place-items:center;color:var(--muted)}
.scroll-dot svg{width:17px;height:17px;animation:nudge 2.2s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translateY(-3px)}50%{transform:translateY(3px)}}
.hero-foot .lead{max-width:46ch}
.hero-link{display:inline-flex;align-items:center;gap:10px;margin-top:20px;font-weight:700;font-size:.82rem;letter-spacing:.1em;text-transform:uppercase;border-bottom:2px solid currentColor;padding-bottom:5px}
.hero-link svg{width:16px;height:16px;transition:transform .2s ease}
.hero-link:hover svg{transform:translateX(5px)}
.hero-facts{display:flex;flex-wrap:wrap;gap:8px 26px;margin-top:26px;font-size:.84rem;color:var(--muted)}
.hero-facts b{font-family:var(--font-display);font-size:1.05rem;color:var(--text);letter-spacing:-.02em}
.hero-xl .rating{margin-top:14px}

.hero-visual{position:relative;display:flex;justify-content:flex-end;gap:16px}
.hero-arch{position:relative;margin:0;width:100%;max-width:380px;aspect-ratio:4/5;border-radius:999px 999px 20px 20px;overflow:hidden;background:var(--ink)}
.hero-arch img,.hero-arch svg{width:100%;height:100%;object-fit:cover;display:block}
.hero-play{position:absolute;left:-34px;bottom:42px;display:flex;align-items:center;gap:11px}
.hero-play i{width:62px;height:62px;border-radius:50%;background:var(--ink);color:var(--brand);display:grid;place-items:center;box-shadow:var(--shadow);transition:transform .2s ease}
.hero-play i svg{width:24px;height:24px}
.hero-play:hover i{transform:scale(1.06)}
.hero-play span{font-family:"IBM Plex Mono",monospace;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;max-width:5ch;line-height:1.4}
.hero-caption{writing-mode:vertical-rl;margin:0;font-family:"IBM Plex Mono",monospace;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);align-self:flex-start;max-height:260px}
.hero-avatars{position:absolute;right:0;bottom:-16px;display:flex;align-items:center;padding-left:12px}
.hero-avatars img,.hero-avatars .more{width:46px;height:46px;border-radius:50%;border:3px solid var(--paper);margin-left:-14px;object-fit:cover;display:block}
.hero-avatars .more{background:var(--ink);color:#fff;display:grid;place-items:center;font-family:var(--font-display);font-weight:700;font-size:1.15rem;text-decoration:none}
.hero-avatars .more:hover{background:var(--brand);color:#14131C}

@media (max-width:1000px){
  .hero-xl .wrap{grid-template-columns:1fr;gap:40px}
  .hero-visual{justify-content:flex-start;max-width:520px}
  .hero-caption{display:none}
  .hero-arch{max-width:100%}
}
@media (max-width:640px){
  .hero-head{gap:14px;margin-top:16px}
  .hero-side{font-size:.62rem;padding-bottom:9px;border-bottom-width:2px;max-width:8ch;margin-bottom:.7em}
  .hero-title{font-size:clamp(2.1rem,10vw,3.2rem)}
  .hero-foot{gap:14px;margin-top:28px}
  .scroll-dot{width:36px;height:54px}
  .hero-arch{aspect-ratio:4/4.6;border-radius:999px 999px 16px 16px}
  .hero-play{left:auto;right:14px;bottom:14px}
  .hero-play i{width:52px;height:52px}
  .hero-play span{display:none}
  .hero-avatars{right:auto;left:0;bottom:-14px}
  .hero-avatars img,.hero-avatars .more{width:40px;height:40px}
}

/* ---------- hero: layered pictures, doodle, rotated pill ---------- */
.hero-xl{position:relative;overflow:hidden}
.hero-xl::before{content:"";position:absolute;left:-160px;bottom:-190px;width:430px;height:430px;border-radius:50%;background:color-mix(in srgb,var(--ink) 5%,transparent);pointer-events:none}
.hero-xl .wrap{position:relative;z-index:1}

.hero-head{position:relative;flex-wrap:nowrap}
.hero-doodle{position:absolute;right:-6%;top:-38px;width:92px;height:auto;color:var(--ink);opacity:.85;pointer-events:none}

/* the rotated word, with a face beside it */
.hero-rot{display:flex;align-items:center;gap:-8px;flex:none;margin-bottom:.35em}
.hero-rot-blob{display:grid;place-items:center;width:64px;height:88px;border-radius:999px;background:var(--brand);position:relative;z-index:1}
.hero-rot-blob span{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--font-display);font-weight:700;font-size:.9rem;letter-spacing:.02em;color:#14131C;text-transform:lowercase}
.hero-rot-face{width:74px;height:74px;border-radius:50%;overflow:hidden;margin-left:-18px;background:var(--ink);flex:none;display:block}
.hero-rot-face img{width:100%;height:100%;object-fit:cover;display:block}

/* two pictures: tinted circle behind, arch in front */
.hero-visual{position:relative}
.hero-arch-back{position:absolute;left:-14%;top:16%;width:62%;aspect-ratio:1/1;margin:0;border-radius:50%;overflow:hidden;z-index:0}
.hero-arch-back img{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(1) contrast(1.08)}
.hero-arch-back::after{content:"";position:absolute;inset:0;background:var(--brand);mix-blend-mode:multiply;opacity:.9}
.hero-arch.has-back{position:relative;z-index:1;margin-left:auto}

@media (max-width:1000px){
  .hero-doodle{display:none}
  .hero-arch-back{left:-8%;width:52%;top:22%}
}
@media (max-width:640px){
  .hero-xl::before{width:280px;height:280px;left:-120px;bottom:-140px}
  .hero-rot{display:none}
  .hero-arch-back{display:none}
}
.hero-arch-back svg{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(1) contrast(1.08)}

/* ---------- hero: left rail, big headline, slanted photo ---------- */
.hero-split{background:var(--cream);position:relative;overflow:hidden}
.hero-split::before{display:none}
.hero-split .wrap{display:grid;grid-template-columns:190px 1.05fr .92fr;gap:44px;align-items:center;padding-block:clamp(44px,6vw,86px)}

.hero-rail{display:flex;flex-direction:column;gap:30px;align-items:flex-start}
.hero-rail-caption{font-size:.98rem;line-height:1.6;color:var(--text);max-width:16ch}
.hero-rail-arrow{width:58px;height:58px;color:color-mix(in srgb,var(--ink) 16%,transparent)}
.hero-stat-card{position:relative;background:var(--surface);border-radius:18px;padding:22px 24px;box-shadow:0 24px 44px -32px rgba(20,19,28,.55);min-width:172px}
.hero-stat-card b{display:block;font-family:var(--font-display);font-weight:800;font-size:2rem;letter-spacing:-.035em;line-height:1}
.hero-stat-card span{display:block;margin-top:7px;font-size:.8rem;color:var(--muted);max-width:18ch;line-height:1.45}
.hero-stat-card i{position:absolute;left:100%;top:50%;width:64px;height:1px;background:var(--line)}

.hero-copy .hero-title{font-family:var(--font-display);font-weight:800;font-size:clamp(2.5rem,6.2vw,4.8rem);line-height:1.02;letter-spacing:-.035em;margin:16px 0 0;text-transform:none}
.hero-copy .hero-title .blob{display:inline-block;background:var(--brand);border-radius:999px;padding:0 .22em .05em;transform:rotate(-1.2deg)}
.hero-copy .lead{margin-top:22px;max-width:42ch}
.hero-copy .hero-actions{margin-top:28px}
.hero-copy .rating{margin-top:24px}
.hero-copy .rating b{color:var(--text);font-family:var(--font-display);letter-spacing:-.01em}

.hero-shot{position:relative}
.hero-slant{margin:0;border-radius:28px;overflow:hidden;aspect-ratio:4/4.5;background:var(--ink);transform:skewX(-6deg)}
.hero-slant img,.hero-slant svg{width:114%;height:100%;object-fit:cover;display:block;transform:skewX(6deg) translateX(-6%)}
.hero-quarter{position:absolute;right:-22px;top:46%;width:42px;height:42px;background:var(--ink);border-radius:42px 42px 0 0}
.hero-half{position:absolute;right:-22px;top:calc(46% + 42px);width:84px;height:42px;background:var(--brand);border-radius:0 0 84px 84px;margin-left:-21px;transform:translateX(-21px)}
.hero-shot .hero-play{left:-30px;bottom:34px}
.hero-shot .hero-avatars{right:auto;left:-16px;bottom:-20px}

@media (max-width:1100px){
  .hero-split .wrap{grid-template-columns:170px 1fr .9fr;gap:30px}
}
@media (max-width:980px){
  .hero-split .wrap{grid-template-columns:1fr .95fr;gap:34px}
  .hero-rail{grid-column:1 / -1;flex-direction:row;align-items:center;gap:26px;flex-wrap:wrap}
  .hero-rail-caption{max-width:22ch}
  .hero-rail-arrow{display:none}
  .hero-stat-card i{display:none}
}
@media (max-width:760px){
  .hero-split .wrap{grid-template-columns:1fr}
  .hero-shot{max-width:460px}
  .hero-quarter,.hero-half{display:none}
  .hero-slant{transform:none;aspect-ratio:4/3.6;border-radius:22px}
  .hero-slant img,.hero-slant svg{width:100%;transform:none}
  .hero-shot .hero-play{left:auto;right:14px;bottom:14px}
  .hero-shot .hero-avatars{left:0;bottom:-16px}
  .hero-copy .hero-actions .btn{flex:1 1 auto;justify-content:center}
}

/* ---------- hero: give the picture real size ---------- */
.hero-split .wrap{width:min(1340px,100%);grid-template-columns:180px 1fr 1.18fr;gap:34px}
.hero-slant{aspect-ratio:auto;min-height:clamp(430px,47vw,680px);border-radius:32px}
.hero-slant img,.hero-slant svg{width:116%;transform:skewX(6deg) translateX(-7%)}
.hero-quarter{right:-38px;top:42%;width:56px;height:56px;border-radius:56px 56px 0 0}
.hero-half{right:-38px;top:calc(42% + 56px);width:112px;height:56px;border-radius:0 0 112px 112px;margin-left:0;transform:none}
.hero-shot .hero-avatars{left:-22px;bottom:-24px}
@media (max-width:1100px){
  .hero-split .wrap{grid-template-columns:160px 1fr 1.05fr;gap:26px}
  .hero-slant{min-height:clamp(380px,46vw,520px)}
}
@media (max-width:980px){
  .hero-split .wrap{grid-template-columns:1fr 1.05fr}
  .hero-slant{min-height:clamp(360px,52vw,520px)}
}
@media (max-width:760px){
  .hero-split .wrap{grid-template-columns:1fr}
  .hero-shot{max-width:none}
  .hero-slant{min-height:clamp(320px,72vw,460px);border-radius:22px}
}

/* the global img{max-width:100%} was clipping the overhang the slant needs */
.hero-slant img,.hero-arch img,.hero-arch-back img{max-width:none}
.hero-slant img,.hero-slant svg{width:126%;height:100%;object-fit:cover;transform:skewX(6deg) translateX(-10%)}
.hero-slant{background:var(--cream)}
@media (max-width:760px){
  .hero-slant img,.hero-slant svg{width:100%;transform:none}
}

/* keep the whole hero inside one screen */
.hero-split .wrap{padding-block:clamp(32px,3.6vw,60px)}
.hero-slant{min-height:clamp(360px,38vw,540px)}
@media (max-width:1100px){
  .hero-slant{min-height:clamp(340px,38vw,460px)}
}
@media (max-width:980px){
  .hero-slant{min-height:clamp(320px,44vw,440px)}
}
@media (max-width:760px){
  .hero-slant{min-height:clamp(280px,62vw,380px)}
}

/* tighter still: the text column drives the height once the picture is short */
.hero-split .wrap{padding-block:clamp(24px,2.6vw,44px)}
.hero-slant{min-height:clamp(300px,31vw,440px)}
.hero-copy .hero-title{font-size:clamp(2.2rem,5vw,3.9rem);margin-top:12px}
.hero-copy .lead{margin-top:16px}
.hero-copy .hero-actions{margin-top:20px}
.hero-copy .rating{margin-top:16px;font-size:.82rem}
.hero-rail{gap:22px}
@media (max-width:1100px){
  .hero-slant{min-height:clamp(290px,32vw,400px)}
}
@media (max-width:980px){
  .hero-slant{min-height:clamp(280px,40vw,380px)}
}
@media (max-width:760px){
  .hero-slant{min-height:clamp(250px,58vw,340px)}
}

/* text back to full size - only the picture shrinks */
.hero-copy .hero-title{font-size:clamp(2.5rem,6.2vw,4.8rem);margin-top:16px}
.hero-copy .lead{margin-top:22px}
.hero-copy .hero-actions{margin-top:28px}
.hero-copy .rating{margin-top:24px;font-size:.86rem}
.hero-rail{gap:30px}

/* a fixed height, so the picture stops following the text column */
.hero-shot{align-self:center}
.hero-slant{min-height:0;height:clamp(280px,26vw,360px)}
@media (max-width:1100px){
  .hero-slant{height:clamp(270px,28vw,340px)}
}
@media (max-width:980px){
  .hero-slant{height:clamp(260px,34vw,320px)}
}
@media (max-width:760px){
  .hero-slant{height:clamp(240px,52vw,300px)}
}

/* hero picture locked to 470 x 750 */
.hero-split .wrap{grid-template-columns:180px 1fr 470px;align-items:center}
.hero-shot{width:470px;max-width:100%;justify-self:end;align-self:center}
.hero-slant{min-height:0;height:auto;aspect-ratio:470/750}
@media (max-width:1240px){
  .hero-split .wrap{grid-template-columns:165px 1fr minmax(0,470px);gap:28px}
}
@media (max-width:1040px){
  .hero-split .wrap{grid-template-columns:1fr minmax(0,470px)}
  .hero-shot{width:100%}
}
@media (max-width:760px){
  .hero-split .wrap{grid-template-columns:1fr}
  .hero-shot{width:min(470px,100%);justify-self:center}
}

/* ---------- service showcase (home, under the hero) ----------
   The band carries a bottom padding of --ovl and the card grid is pulled back
   up by the same amount, so the cards straddle the edge of the dark strip. */
.svc-show{--ovl:clamp(150px,19vw,240px);--band:var(--ink);padding:0;background:var(--paper);overflow:hidden}
.svc-show-band{background:var(--band);color:var(--on-ink);padding-block:clamp(52px,6vw,88px) var(--ovl)}
.svc-show-head{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(24px,4vw,64px);align-items:start}
.svc-show-titlewrap{position:relative}
.svc-show .ghost-word{position:absolute;left:-.03em;top:-.58em;z-index:0;font-family:var(--font-display);font-weight:800;font-size:clamp(3.2rem,6.6vw,5.8rem);line-height:1;letter-spacing:-.045em;color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.16);white-space:nowrap;pointer-events:none;user-select:none}
.svc-show .h2{position:relative;z-index:1;margin:0;color:#fff}
.svc-show-intro{margin:0;max-width:52ch;color:var(--on-ink-muted);line-height:1.8}

.svc-show-body{position:relative;margin-top:calc(var(--ovl) * -1);padding-bottom:clamp(44px,5vw,76px)}
.svc-show-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(14px,1.7vw,26px)}
.svc-tile{min-width:0}
.svc-tile-media{position:relative;display:block;aspect-ratio:4/5;border-radius:22px;overflow:hidden;background:var(--ink);box-shadow:0 18px 40px rgba(20,19,28,.18)}
.svc-tile-media img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;transition:transform .55s cubic-bezier(.2,.7,.3,1)}
.svc-tile-art{position:absolute;inset:0;display:grid;place-items:center;background:var(--ink)}
.svc-tile-art::before{content:"";position:absolute;inset:0;background:radial-gradient(112% 82% at 30% 18%,var(--tile),transparent 70%);opacity:.5}
.svc-tile-art svg{position:relative;width:38%;height:auto;fill:none;stroke:#fff;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
/* the tint washes down over the picture until the card foot is solid colour */
.svc-tile-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,19,28,0) 24%,var(--tile) 97%)}
.svc-tile-num{position:absolute;left:8%;bottom:-.16em;z-index:2;font-family:var(--font-display);font-weight:800;font-size:clamp(3rem,5.2vw,4.8rem);line-height:.82;letter-spacing:-.045em;color:var(--num,#fff);opacity:.96}
.svc-tile h3{margin:20px 0 0;font-size:clamp(1rem,1.2vw,1.18rem)}
.svc-tile h3 a{color:inherit;text-decoration:none}
.svc-tile h3 a:hover{color:var(--brand-deep)}
.svc-tile p{margin:10px 0 0;color:var(--muted);font-size:.93rem;line-height:1.7}
.svc-tile-link{display:inline-flex;align-items:center;gap:7px;margin-top:12px;font-weight:700;font-size:.88rem;color:var(--text);text-decoration:none;border-bottom:1.5px solid var(--line)}
.svc-tile-link svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s ease}
.svc-tile-link:hover{border-bottom-color:var(--brand)}
.svc-tile-link:hover svg{transform:translateX(4px)}
.svc-tile:hover .svc-tile-media img{transform:scale(1.06)}
.svc-show-foot{margin:clamp(30px,3.4vw,48px) 0 0;text-align:center;font-weight:600;color:var(--text)}
.svc-show-foot a{color:var(--violet);text-underline-offset:3px}

@media (max-width:1180px){
  .svc-show{--ovl:clamp(140px,21vw,220px)}
  .svc-show-grid{grid-template-columns:repeat(3,1fr);row-gap:clamp(26px,3vw,40px)}
}
@media (max-width:860px){
  .svc-show{--ovl:clamp(110px,24vw,180px)}
  .svc-show-head{grid-template-columns:1fr;gap:18px}
  .svc-show .ghost-word{top:-.52em;font-size:clamp(2.8rem,12vw,4.2rem)}
  .svc-show-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:520px){
  .svc-show{--ovl:clamp(120px,38vw,190px)}
  .svc-show-grid{grid-template-columns:1fr;max-width:330px;margin-inline:auto}
  .svc-tile-num{font-size:3.4rem}
}
@media (hover:none){
  .svc-tile:hover .svc-tile-media img{transform:none}
}

/* ---------- service showcase: 4 cards of 275 x 380 in an 825-tall band ----------
   The container is widened to 1218 so the four columns land on exactly 275px
   (1100 of card + 3 x 26 of gap = 1178 of content). --ovl is 87% of the card
   height, which is what puts the numbers on the edge of the dark strip. */
.svc-show .wrap{width:min(1218px,100%)}
.svc-show{--ovl:clamp(170px,calc(30vw - 35px),330px)}
.svc-show-band{padding-block:clamp(48px,4.7vw,90px) var(--ovl)}
.svc-show-body{padding-bottom:clamp(30px,3.4vw,46px)}
.svc-show-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:26px}

/* three corners round, bottom-left square, with the number sitting in it */
.svc-tile-media{aspect-ratio:275/380;border-radius:24px 24px 24px 0}
.svc-tile-num{left:6%;bottom:-.14em}
.svc-tile h3{margin-top:18px;font-size:clamp(1rem,1.15vw,1.15rem)}

/* the card that carries two services links to both */
.svc-tile-links{display:flex;flex-wrap:wrap;gap:8px 14px;margin:12px 0 0}
.svc-tile-links a{font-weight:700;font-size:.86rem;color:var(--text);text-decoration:none;border-bottom:1.5px solid var(--line)}
.svc-tile-links a:hover{border-bottom-color:var(--brand)}

@media (min-width:1218px){
  /* the 1920 x 825 frame: at this width the parts add up to the 825 */
  .svc-show{min-height:825px}
}
@media (max-width:1180px){
  .svc-show-grid{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:0}
}
@media (max-width:860px){
  .svc-show{--ovl:clamp(150px,calc(60vw - 40px),330px)}
  .svc-show-grid{grid-template-columns:repeat(2,minmax(0,275px));justify-content:center;row-gap:clamp(24px,3vw,36px)}
}
@media (max-width:520px){
  .svc-show{--ovl:clamp(130px,52vw,250px)}
  .svc-show-grid{grid-template-columns:minmax(0,300px)}
}

/* ---------- about frame: photo instead of the placeholder artwork ---------- */
.frame-photo{width:100%;height:100%;max-width:none;object-fit:cover;display:block}

/* ---------- ROAS calculator ---------- */
.calc{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:clamp(20px,2.6vw,38px);align-items:start}
.calc-inputs{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:clamp(20px,2.2vw,30px)}
.calc-legend{margin:0 0 18px;font-size:1.05rem}
.calc-field+.calc-field{margin-top:18px}
.calc-field label{display:block;font-weight:700;font-size:.9rem;margin-bottom:7px}
.calc-field small{display:block;margin-top:7px;color:var(--muted);font-size:.78rem;line-height:1.55}
.calc-input{display:flex;align-items:center;background:var(--paper);border:1.6px solid var(--line);border-radius:12px;overflow:hidden;transition:border-color .18s ease,box-shadow .18s ease}
.calc-input:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(255,219,17,.3)}
.calc-unit{padding:0 2px 0 14px;font-weight:700;color:var(--muted)}
.calc-unit-end{padding:0 14px 0 2px}
.calc-input input{flex:1;min-width:0;border:0;background:none;padding:13px 14px;font:inherit;font-weight:700;color:var(--text);-moz-appearance:textfield}
.calc-input input:focus{outline:none}
.calc-input input::-webkit-outer-spin-button,.calc-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.calc-note{margin:22px 0 0;padding-top:16px;border-top:1px solid var(--line-soft);color:var(--muted);font-size:.78rem;line-height:1.6}

.calc-results{background:var(--paper);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:clamp(20px,2.4vw,32px);box-shadow:var(--shadow)}
.calc-verdict{border-radius:14px;padding:16px 18px;background:var(--surface-2);border-left:4px solid var(--line)}
.calc-verdict[data-state=good]{background:rgba(18,165,148,.09);border-left-color:var(--teal)}
.calc-verdict[data-state=warn]{background:rgba(255,219,17,.16);border-left-color:var(--brand-deep)}
.calc-verdict[data-state=bad]{background:rgba(255,90,60,.1);border-left-color:var(--coral)}
.calc-verdict-tag{display:block;font-family:"IBM Plex Mono",monospace;font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.calc-verdict-line{margin:7px 0 0;font-size:.95rem;line-height:1.65}

.calc-headline{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}
.calc-big{background:var(--ink);color:#fff;border-radius:16px;padding:18px 20px}
.calc-big span{display:block;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--on-ink-muted)}
.calc-big b{display:block;margin-top:6px;font-family:var(--font-display);font-size:clamp(1.9rem,3.4vw,2.7rem);line-height:1;letter-spacing:-.04em;color:var(--brand)}
.calc-big-alt{background:var(--surface-2);color:var(--text);border:1px solid var(--line-soft)}
.calc-big-alt span{color:var(--muted)}
.calc-big-alt b{color:var(--text)}

.calc-meter{position:relative;height:12px;margin-top:20px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line-soft)}
.calc-meter i{display:block;height:100%;border-radius:999px;background:var(--brand);transition:width .35s ease}
.calc-meter i.is-good{background:var(--teal)}
.calc-meter i.is-bad{background:var(--coral)}
.calc-meter-mark{position:absolute;left:50%;top:-5px;bottom:-5px;width:2px;background:var(--text);opacity:.55}
.calc-meter-mark em{position:absolute;left:50%;top:calc(100% + 6px);transform:translateX(-50%);font-style:normal;font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}

.calc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px;margin:38px 0 0;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:14px;overflow:hidden}
.calc-grid>div{background:var(--paper);padding:14px 16px}
.calc-grid dt{font-size:.78rem;color:var(--muted)}
.calc-grid dd{margin:4px 0 0;font-family:var(--font-display);font-weight:700;font-size:1.15rem;letter-spacing:-.02em}
.calc-grid dd.is-good{color:#0E8377}
.calc-grid dd.is-bad{color:#C93A21}

.calc-fix{margin-top:24px;padding:18px 20px;border:1px dashed var(--line);border-radius:14px}
.calc-fix h3{margin:0 0 12px;font-size:1rem}
.calc-fix ul{margin:0;padding-left:20px}
.calc-fix li{margin-top:8px;font-size:.9rem;line-height:1.65;color:var(--muted)}
.calc-fix li b{color:var(--text)}

.calc-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}

@media (max-width:900px){
  .calc{grid-template-columns:1fr}
}
@media (max-width:480px){
  .calc-headline{grid-template-columns:1fr}
  .calc-grid{grid-template-columns:1fr}
  .calc-actions .btn{flex:1 1 auto;justify-content:center}
}

/* the free-tool banner dropped onto service pages */
.tool-strip{display:grid;grid-template-columns:1fr auto;gap:clamp(18px,2.4vw,34px);align-items:center;background:var(--cream);border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:clamp(20px,2.4vw,32px)}
.tool-strip h2{margin:0}
.tool-strip .btn{white-space:nowrap}
@media (max-width:760px){
  .tool-strip{grid-template-columns:1fr}
  .tool-strip .btn{justify-content:center}
}

/* ---------- footer logo: image if one is uploaded, FF mark if not ---------- */
.footer-logo img,.footer-logo .custom-logo{height:40px;width:auto;max-width:240px;object-fit:contain;display:block}
@media (max-width:560px){
  .footer-logo img,.footer-logo .custom-logo{height:34px;max-width:190px}
}
/* the hero promise line, shown in place of a star rating until reviews exist */
.rating-plain{align-items:flex-start;gap:9px}
.rating-tick{display:grid;place-items:center;width:19px;height:19px;flex:none;margin-top:2px;border-radius:50%;background:var(--brand);color:#14131C}
.rating-tick svg{width:12px;height:12px}

/* ---------- free tools hub ---------- */
.tool-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.tool-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-soft);
  border-top:4px solid var(--accent);border-radius:16px;padding:22px 22px 24px;text-decoration:none;color:inherit;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.tool-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.tool-card-ico{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;color:var(--accent);
  background:color-mix(in srgb,var(--accent) 14%,transparent)}
@supports not (background:color-mix(in srgb,red 10%,transparent)){
  .tool-card-ico{background:var(--surface-2)}
}
.tool-card-ico svg{width:22px;height:22px}
.tool-card-q{display:block;margin-top:16px;font-family:var(--font-display);font-weight:700;font-size:1.08rem;
  line-height:1.3;letter-spacing:-.02em;color:var(--text)}
.tool-card-name{display:block;margin-top:7px;font-family:"IBM Plex Mono",monospace;font-size:.68rem;
  font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.tool-card-blurb{display:block;margin-top:11px;font-size:.89rem;line-height:1.62;color:var(--muted)}

/* the small comparison tables inside a calculator's result panel */
.scroll-x{overflow-x:auto}
.mini-table{border-collapse:collapse;width:100%;min-width:380px;font-size:.86rem}
.mini-table th,.mini-table td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line-soft)}
.mini-table thead th{font-family:"IBM Plex Mono",monospace;font-size:.63rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}
.mini-table tbody tr:last-child td{border-bottom:0}
.mini-table td{font-variant-numeric:tabular-nums}
.mini-table td:first-child{font-variant-numeric:normal;color:var(--text)}
.mini-table .is-good{color:#0E8377;font-weight:700}
.mini-table tr.is-current{background:rgba(255,219,17,.16)}
.mini-table tr.is-current td{font-weight:700;color:var(--text)}
.row-tag{font-family:"IBM Plex Mono",monospace;font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--label-accent,#8A7200);margin-left:5px}
.calc-input select{flex:1;min-width:0;border:0;background:none;padding:13px 14px;font:inherit;font-weight:700;
  color:var(--text);appearance:none;-webkit-appearance:none;cursor:pointer}
.calc-input select:focus{outline:none}

/* ---------- service rail: horizontal accordion under the hero ----------
   Every class here is prefixed ffx- so it cannot collide with the rest of the
   site. Widths are flex-grow values on a fixed-height row, so opening a card
   never moves anything outside the section. */
.ffx{--ffx-open:5.2;--ffx-shut:1;--ffx-ease:cubic-bezier(.22,.72,.24,1);--ffx-dur:560ms;
  padding-block:clamp(48px,6vw,88px)}
.ffx-head{max-width:64ch;margin-bottom:clamp(26px,3.4vw,42px)}
.ffx-head .h2{margin:14px 0 0}
.ffx-intro{margin:16px 0 0;color:var(--muted);line-height:1.75}

.ffx-rail{display:flex;gap:clamp(8px,1vw,14px);height:clamp(400px,44vw,530px);
  align-items:stretch}

.ffx-card{position:relative;flex:0 1 0;flex-grow:var(--ffx-shut);min-width:0;
  border-radius:24px;overflow:hidden;background:var(--ink);isolation:isolate;
  box-shadow:0 14px 34px -22px rgba(20,19,28,.55);
  transition:flex-grow var(--ffx-dur) var(--ffx-ease),box-shadow var(--ffx-dur) var(--ffx-ease)}
.ffx-card.is-open{flex-grow:var(--ffx-open);box-shadow:0 26px 60px -28px rgba(20,19,28,.6)}

/* picture and its veil */
.ffx-bg{position:absolute;inset:0;z-index:0}
.ffx-img{width:100%;height:100%;max-width:none;object-fit:cover;display:block;
  transition:transform var(--ffx-dur) var(--ffx-ease),filter var(--ffx-dur) var(--ffx-ease);
  filter:saturate(.72) brightness(.62)}
.ffx-card.is-open .ffx-img{filter:saturate(1) brightness(.86);transform:scale(1.03)}
.ffx-art{position:absolute;inset:0;display:grid;place-items:center;
  background:radial-gradient(120% 90% at 30% 15%,var(--accent),transparent 68%),var(--ink)}
.ffx-art svg{width:38%;max-width:150px;height:auto;fill:none;stroke:#fff;stroke-width:1.2;
  stroke-linecap:round;stroke-linejoin:round;opacity:.5}
.ffx-bg::after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(to top,rgba(10,9,14,.94) 0%,rgba(10,9,14,.72) 34%,rgba(10,9,14,.34) 66%,rgba(10,9,14,.28) 100%);
  transition:opacity var(--ffx-dur) var(--ffx-ease)}
.ffx-card.is-open .ffx-bg::after{
  background:linear-gradient(to top right,rgba(10,9,14,.95) 4%,rgba(10,9,14,.78) 42%,rgba(10,9,14,.26) 78%,rgba(10,9,14,.16) 100%)}

/* the closed spine */
.ffx-spine{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;
  gap:14px;writing-mode:vertical-rl;padding-block:26px;
  transition:opacity 260ms var(--ffx-ease)}
.ffx-spine-title{font-family:var(--font-display);font-weight:700;font-size:clamp(1rem,1.25vw,1.22rem);
  letter-spacing:-.01em;color:#fff;white-space:nowrap}
.ffx-spine-kicker{font-family:"IBM Plex Mono",monospace;font-size:.64rem;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--light);white-space:nowrap}
.ffx-card.is-open .ffx-spine{opacity:0;pointer-events:none;transition-duration:160ms}

/* the open panel */
.ffx-panel{position:absolute;inset:auto 0 0 0;z-index:3;
  padding:clamp(22px,2.4vw,34px);
  opacity:0;visibility:hidden;transform:translateY(14px);
  transition:opacity 300ms var(--ffx-ease),transform 300ms var(--ffx-ease),visibility 0s linear 320ms}
.ffx-card.is-open .ffx-panel{opacity:1;visibility:visible;transform:none;
  transition:opacity 340ms var(--ffx-ease) 180ms,transform 340ms var(--ffx-ease) 180ms,visibility 0s}
.ffx-panel-in{max-width:46ch;min-width:0}
.ffx-kicker{display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:.64rem;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:#14131C;background:var(--accent);
  padding:6px 12px;border-radius:999px;white-space:nowrap}
.ffx-card[style*="4B3BE8"] .ffx-kicker,
.ffx-card[style*="2E8FD9"] .ffx-kicker{color:#fff}
.ffx-title{margin:14px 0 0;font-family:var(--font-display);font-weight:800;
  font-size:clamp(1.5rem,2.5vw,2.25rem);line-height:1.08;letter-spacing:-.03em;color:#fff}
.ffx-title a{color:inherit;text-decoration:none}
.ffx-title a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}
.ffx-desc{margin:12px 0 0;color:rgba(255,255,255,.84);font-size:.95rem;line-height:1.68}
.ffx-tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;padding:0}
.ffx-tags li{display:inline-flex;align-items:center;gap:7px;font-size:.78rem;font-weight:600;
  color:rgba(255,255,255,.92);background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
  padding:6px 12px;border-radius:999px;backdrop-filter:blur(6px);white-space:nowrap}
.ffx-tags svg{width:13px;height:13px;flex:none;color:var(--light)}
.ffx-cta{display:inline-flex;align-items:center;gap:9px;margin-top:20px;
  padding:12px 22px;border-radius:999px;background:var(--brand);color:#14131C;
  font-family:var(--font-display);font-weight:700;font-size:.9rem;text-decoration:none;
  transition:transform .2s ease,box-shadow .2s ease}
.ffx-cta svg{width:17px;height:17px;transition:transform .22s ease}
.ffx-cta:hover{transform:translateY(-2px);box-shadow:0 14px 26px -14px rgba(255,219,17,.9)}
.ffx-cta:hover svg{transform:translateX(4px)}
.ffx-card :focus-visible{outline:3px solid var(--brand);outline-offset:3px;border-radius:6px}

/* the phone control, hidden on desktop */
.ffx-tap{display:none}

.ffx-foot{margin:clamp(26px,3vw,40px) 0 0;text-align:center;font-weight:600;color:var(--text)}
.ffx-foot a{color:var(--violet);text-underline-offset:3px}

@media (max-width:1100px){
  .ffx{--ffx-open:4.4}
  .ffx-rail{height:clamp(380px,48vw,470px)}
}

/* ---------- phones: the same cards become a vertical accordion ---------- */
@media (max-width:820px){
  .ffx-rail{flex-direction:column;height:auto;gap:12px}
  .ffx-card{flex:0 0 auto;border-radius:20px;min-height:74px;
    transition:min-height var(--ffx-dur) var(--ffx-ease),box-shadow var(--ffx-dur) var(--ffx-ease)}
  .ffx-card.is-open{min-height:clamp(400px,96vw,520px)}
  .ffx-spine{display:none}

  .ffx-tap{display:flex;position:relative;z-index:3;width:100%;align-items:center;gap:12px;
    padding:18px 18px;background:none;border:0;cursor:pointer;text-align:left;font:inherit;color:#fff}
  .ffx-tap-kicker{font-family:"IBM Plex Mono",monospace;font-size:.6rem;font-weight:600;
    letter-spacing:.14em;text-transform:uppercase;color:var(--light);display:block}
  .ffx-tap-title{font-family:var(--font-display);font-weight:700;font-size:1.06rem;
    letter-spacing:-.01em;display:block;margin-top:3px}
  .ffx-tap > span:not(.ffx-tap-icon){flex:1;min-width:0}
  .ffx-tap-icon{display:grid;place-items:center;width:30px;height:30px;flex:none;border-radius:50%;
    background:rgba(255,255,255,.14);transition:transform var(--ffx-dur) var(--ffx-ease)}
  .ffx-tap-icon svg{width:15px;height:15px}
  .ffx-card.is-open .ffx-tap-icon{transform:rotate(180deg)}

  .ffx-panel{position:relative;inset:auto;padding:0 18px 22px}
  .ffx-panel-in{max-width:none}
  .ffx-card:not(.is-open) .ffx-panel{height:0;padding-top:0;padding-bottom:0;overflow:hidden}
  .ffx-title{font-size:1.35rem}
  .ffx-desc{font-size:.92rem}
}

@media (max-width:420px){
  .ffx-tags li{font-size:.74rem;padding:5px 10px}
}

@media (prefers-reduced-motion:reduce){
  .ffx-card,.ffx-img,.ffx-panel,.ffx-spine,.ffx-cta,.ffx-cta svg,.ffx-tap-icon{
    transition-duration:1ms!important;transition-delay:0s!important}
  .ffx-card.is-open .ffx-img{transform:none}
}

/* the phone header row: kicker over title on the left, chevron on the right.
   Flex made the two labels share the row side by side, which is not the shape. */
@media (max-width:820px){
  .ffx-tap{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px}
  .ffx-tap-kicker{grid-column:1;grid-row:1}
  .ffx-tap-title{grid-column:1;grid-row:2}
  .ffx-tap-icon{grid-column:2;grid-row:1 / span 2}
  .ffx-tap > span:not(.ffx-tap-icon){flex:none}
}


/* ---------- the process rail, on a white section ----------
   Same mechanics as before. The veil over each picture is one flat black at a
   single opacity rather than a gradient, so all four stages read identically
   whatever photograph goes behind them. --ffx-veil is the only dial. */
.ffx-process{--ffx-open:4.2;--ffx-veil:.8;background:var(--paper)}
.ffx-process .ffx-rail{height:clamp(340px,34vw,420px)}
.ffx-process .ffx-card{background:var(--ink);box-shadow:0 14px 34px -24px rgba(20,19,28,.5)}
.ffx-process .ffx-card.is-open{box-shadow:0 26px 60px -28px rgba(20,19,28,.55)}

/* flat veil, identical open or closed */
.ffx-process .ffx-bg::after,
.ffx-process .ffx-card.is-open .ffx-bg::after{
  background:rgb(0 0 0 / var(--ffx-veil))}
.ffx-process .ffx-img{filter:none}
.ffx-process .ffx-card.is-open .ffx-img{filter:none;transform:scale(1.03)}

/* no picture yet: the stage colour, still under the same veil */
.ffx-process .ffx-art{background:radial-gradient(130% 100% at 78% 12%,var(--accent),transparent 62%),var(--ink)}
.ffx-process .ffx-art svg{width:34%;max-width:120px;opacity:.55;stroke-width:1}

/* the stage number, hollow so it reads as a marker rather than a heading */
.ffx-spine-num{font-family:var(--font-display);font-weight:800;font-size:1.5rem;line-height:1;
  letter-spacing:-.04em;color:transparent;-webkit-text-stroke:1.4px var(--light);white-space:nowrap}
.ffx-num{display:block;font-family:var(--font-display);font-weight:800;
  font-size:clamp(2.4rem,4vw,3.4rem);line-height:.9;letter-spacing:-.05em;
  color:transparent;-webkit-text-stroke:2px var(--light);margin-bottom:12px}
@supports not ((-webkit-text-stroke:1px red)){
  .ffx-spine-num,.ffx-num{color:var(--light)}
}
.ffx-when{display:inline-block;margin-top:18px;font-family:"IBM Plex Mono",monospace;
  font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--light)}
.ffx-process .ffx-title{font-size:clamp(1.5rem,2.3vw,2rem)}
.ffx-process .ffx-panel{padding:clamp(22px,2.2vw,32px)}

@media (max-width:1100px){
  .ffx-process{--ffx-open:3.6}
  .ffx-process .ffx-rail{height:clamp(330px,42vw,400px)}
}
@media (max-width:820px){
  .ffx-process .ffx-rail{height:auto}
  .ffx-process .ffx-card.is-open{min-height:0}
  .ffx-process .ffx-num{display:none}
  .ffx-process .ffx-panel{padding:0 18px 22px}
}

/* ---------- process rail: fixed height, lighter veil ---------- */
.ffx-process{--ffx-veil:.55}
.ffx-process .ffx-rail{height:485px}

/* the artwork moves out of the middle: centred, it sat behind the vertical
   label on a closed card and behind the copy on an open one */
.ffx-process .ffx-art{place-items:end end;padding:26px}
.ffx-process .ffx-art svg{width:auto;height:34%;max-height:150px;max-width:64%;opacity:.7;stroke-width:1.1}
.ffx-process .ffx-art{background:radial-gradient(125% 100% at 82% 88%,var(--accent),transparent 66%),var(--ink)}

@media (max-width:1100px){
  .ffx-process .ffx-rail{height:485px}
}
@media (max-width:980px){
  .ffx-process .ffx-rail{height:clamp(420px,52vw,485px)}
}
@media (max-width:820px){
  .ffx-process .ffx-rail{height:auto}
  .ffx-process .ffx-art{place-items:end end;padding:16px}
  .ffx-process .ffx-art svg{height:auto;width:34%;max-width:110px}
}

/* ---------- pricing: four plans ---------- */
.plans{grid-template-columns:repeat(auto-fit,minmax(min(245px,100%),1fr))}
.plan{padding:30px 24px 28px}
.plan-features li{font-size:.86rem;line-height:1.55}
.plan-features{gap:11px}
@media (max-width:1140px) and (min-width:1001px){
  .plans{grid-template-columns:repeat(2,1fr);max-width:760px;margin-inline:auto}
}

/* ---------- offices ---------- */
.f-office-city{display:block;color:#fff;font-weight:700;font-size:.88rem;letter-spacing:-.01em;margin-bottom:2px}
.f-contact > div{align-items:flex-start}
.f-contact > div svg{margin-top:3px}

.office-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px;margin-top:16px}
.office{display:flex;gap:13px;background:var(--surface-2);border:1px solid var(--line-soft);
  border-radius:var(--r-md);padding:17px 18px}
.office i{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:10px;
  background:rgba(255,219,17,.22);color:var(--label-accent,#8A7200)}
.office i svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round}
.office b{display:block;font-family:var(--font-display);font-size:1rem;letter-spacing:-.01em;color:var(--text)}
.office-label{display:block;margin-top:2px;font-family:"IBM Plex Mono",monospace;font-size:.62rem;
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.office address{display:block;margin-top:7px;font-style:normal;font-size:.86rem;line-height:1.6;color:var(--muted)}
.office-phone{display:inline-block;margin-top:7px;font-size:.85rem;font-weight:600;color:var(--text);
  text-underline-offset:3px}


/* ---------- sister companies ---------- */
.sister-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:18px;margin-top:8px}
.sister-card{display:flex;flex-direction:column;background:var(--surface);
  border:1px solid var(--line-soft);border-top:4px solid var(--accent);
  border-radius:var(--r-lg);padding:26px 26px 24px;
  transition:transform .22s ease,box-shadow .22s ease}
.sister-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.sister-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;
  background:var(--accent);color:#fff;font-family:var(--font-display);font-weight:800;
  font-size:.95rem;letter-spacing:.02em}
.sister-card .h3{margin:16px 0 0;font-size:1.15rem}
.sister-card p{margin:10px 0 18px;color:var(--muted);font-size:.92rem;line-height:1.7;flex:1}
.sister-link{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;
  font-family:var(--font-display);font-weight:700;font-size:.9rem;color:var(--text);
  text-decoration:none;border-bottom:1.5px solid var(--line);padding-bottom:2px}
.sister-link svg{width:15px;height:15px;transition:transform .22s ease}
.sister-link:hover{border-bottom-color:var(--accent)}
.sister-link:hover svg{transform:translate(2px,-2px)}
.f-sister{margin:18px 0 0;font-size:.86rem;color:var(--on-ink-muted);line-height:1.7}
.f-sister a{color:var(--brand);text-underline-offset:3px}

/* ---------- mobile: the quote button comes back ----------
   It was hidden below 760px with a note saying it was still reachable in the
   burger menu. It was not — the panel only had links. On a phone the one thing
   a visitor is most likely to want should not be two taps behind a hamburger. */
@media (max-width:760px){
  .nav-cta .btn-primary{display:inline-flex;padding:9px 15px;font-size:.8rem;white-space:nowrap}
}
@media (max-width:420px){
  .nav .wrap{gap:8px}
  .nav-cta{gap:6px}
  .nav-cta .btn-primary{padding:8px 12px;font-size:.74rem}
  .burger{width:38px;height:38px;border-radius:10px}
  .logo img,.logo .custom-logo{height:24px;max-width:118px}
}

/* the same action again at the bottom of the open menu, where a thumb is */
.mobile-panel-cta{display:none}
.mobile-panel-tel{display:none}
@media (max-width:1000px){
  .mobile-panel .wrap{padding-bottom:18px}
  .mobile-panel-cta{display:flex;width:100%;justify-content:center;margin-top:14px}
  .mobile-panel-tel{display:flex;align-items:center;justify-content:center;gap:8px;
    margin-top:10px;padding:11px;border:1.6px solid var(--line);border-radius:999px;
    font-weight:700;font-size:.88rem;color:var(--text);text-decoration:none}
  .mobile-panel-tel svg{width:16px;height:16px}
  .mobile-panel ul:last-of-type a{border-bottom:0}
}

/* ---------- mobile: the hero says what we do before it says anything else ----
   The rail is a caption and a stat. Stacked above the headline it pushed the
   thing a visitor came for below the fold, so on phones it moves underneath. */
@media (max-width:760px){
  .hero-split .wrap{display:flex;flex-direction:column}
  .hero-copy{order:1}
  .hero-shot{order:2;margin-top:22px}
  .hero-rail{order:3;margin-top:24px;flex-direction:row;align-items:center;
    justify-content:space-between;gap:16px;width:100%}
  .hero-rail-caption{max-width:19ch;font-size:.88rem}
  .hero-stat-card{flex:none}
}
@media (max-width:420px){
  .hero-rail{flex-direction:column;align-items:flex-start;gap:14px}
  .hero-rail-caption{max-width:none}
}

/* ---------- nothing should scroll sideways ---------- */
@media (max-width:760px){
  html,body{overflow-x:hidden}
  .wrap{padding-inline:16px}
}

/* ================= MOBILE FIXES ================= */

/* 1. The open menu was laid out in a row.
   .nav .wrap sets display:flex for the header bar, and the panel's own .wrap
   sits inside <header class="nav">, so it inherited the rule. With one child
   nobody noticed; with a button and a phone link beside the list it collapsed.
   The panel is a stack, always. */
.mobile-panel .wrap{display:block}
.mobile-panel .nav-links,
.mobile-panel ul{width:100%;margin-left:0}
.mobile-panel li{width:100%}

/* 2. The 85% badge was pulled up with a negative margin and disappeared behind
   the picture's rounded corner. Anchor it to the corner instead. */
@media (max-width:1000px){
  .about-figure{position:relative;margin-bottom:34px}
  .stat-badge{position:absolute;left:16px;right:auto;top:auto;bottom:-24px;
    margin:0;padding:14px 18px;border-radius:16px}
  .stat-badge b{font-size:1.7rem}
  .stat-badge span{font-size:.62rem;margin-top:4px}
}

/* 3. The CTA block on the tool pages used classes that were never styled, so
   those sections rendered as bare text on a white page at every width. */
.cta-card{background:var(--ink);color:var(--on-ink);border-radius:28px;
  padding:clamp(26px,4vw,52px);display:grid;grid-template-columns:1.05fr .95fr;
  gap:clamp(24px,3vw,40px);align-items:center;position:relative;overflow:hidden}
.cta-card .h2{color:#fff}
.cta-card p{color:var(--on-ink-muted)}
.cta-form{margin:0}
@media (max-width:860px){
  .cta-card{grid-template-columns:1fr;border-radius:22px}
}

/* 4. Anything that has to stay wide gets its own scroller, so the page itself
   never moves sideways. */
.prose table,.mini-table{display:block;overflow-x:auto;max-width:100%}
.scroll-x{-webkit-overflow-scrolling:touch}

@media (max-width:560px){
  /* 5. Two columns of form fields is too narrow for a thumb. */
  .form-row{grid-template-columns:1fr}

  /* 6. Grids that still had two columns on a phone. */
  .steps,.stats,.best,.incl-grid,.svc-stats{grid-template-columns:1fr}
  .stats > div{padding-block:18px}

  /* 7. Buttons side by side wrap instead of overflowing. */
  .hero-actions,.sec-head,.calc-actions{flex-wrap:wrap}
  .sec-head{gap:16px}
  .sec-head .btn{width:100%;justify-content:center}

  /* 8. Long words and URLs break instead of pushing the layout out. */
  body{overflow-wrap:break-word}
  .prose a,.office address,.f-contact span{overflow-wrap:anywhere}
}

/* 10. Tap targets: nothing a finger has to hit should be under 40px. */
@media (hover:none){
  .soc a,.f-links a,.crumb a{min-height:40px;display:inline-flex;align-items:center}
  .tb-links a{padding-block:4px}
}

/* The generic ".mobile-panel a" rule is more specific than a single class, so
   it was overriding display and putting a list divider under both buttons.
   Matching its weight puts them back. */
@media (max-width:1000px){
  .mobile-panel a.mobile-panel-cta{display:flex;width:100%;justify-content:center;
    margin-top:16px;padding:14px 20px;border-bottom:0;border-radius:999px}
  .mobile-panel a.mobile-panel-tel{display:flex;align-items:center;justify-content:center;
    gap:8px;width:100%;margin-top:10px;padding:12px 20px;border:1.6px solid var(--line);
    border-radius:999px;font-weight:700;font-size:.88rem;color:var(--text)}
  .mobile-panel a.mobile-panel-tel svg{width:16px;height:16px}
}

/* ---------- phones: the quote button leaves the header for the corner ----------
   Logo, button and burger in one row left none of them any room. On a phone the
   button also wants to be where a thumb already is, not at the top of the
   screen, so it moves to the bottom corner and the header gets its space back. */
.cta-float{display:none}

@media (max-width:760px){
  .nav .wrap{gap:14px;padding-block:14px}
  .nav-cta{margin-left:auto;gap:0}
  .nav-cta .btn-primary{display:none}
  .burger{width:44px;height:44px}
  .logo img,.logo .custom-logo{height:30px;max-width:150px}

  .cta-float{position:fixed;z-index:65;right:14px;
    bottom:calc(14px + env(safe-area-inset-bottom,0px));
    display:inline-flex;align-items:center;gap:8px;
    padding:13px 20px;border-radius:999px;
    background:var(--brand);color:#14131C;
    font-family:var(--font-display);font-weight:700;font-size:.88rem;
    text-decoration:none;box-shadow:0 12px 28px -10px rgba(20,19,28,.55);
    transition:transform .2s ease,opacity .2s ease}
  .cta-float svg{width:17px;height:17px}
  .cta-float:active{transform:scale(.97)}

  /* the two floating controls share the bottom of the screen, not the corner */
  .to-top{left:14px;right:auto}

  /* the menu has its own button in it, so the floating one stands down */
  body:has(.mobile-panel:not([hidden])) .cta-float{opacity:0;pointer-events:none}

  /* and nothing at the very bottom of the page hides underneath it */
  footer{padding-bottom:64px}
}

@media (max-width:400px){
  .cta-float{padding:12px 16px;font-size:.82rem}
  .logo img,.logo .custom-logo{height:27px;max-width:132px}
}
