@font-face{font-family:'Figtree';font-style:normal;font-weight:300 900;font-display:swap;src:url(/assets/figtree-latin.woff2) format('woff2')}

/* Layout: logo-derived "footings" — huge lowercase wordmark-style type on white, full-bleed navy/emerald blocks, the logo's emerald square as the only ornament. Single brand look (light only, by choice). */
:root{
  --navy:#0f172a;
  --emerald:#10b981;
  --emerald-ink:#047857;
  --paper:#ffffff;
  --tint:#f8fafc;
  --ink-2:#334155;
  --muted:#475569;
  --rule:#e2e8f0;
  --on-navy:#ffffff;
  --on-navy-body:#cbd5e1;
  --on-navy-muted:#94a3b8;
  --on-navy-rule:#334155;
  --display:'Figtree',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --gutter:clamp(20px,4.5vw,64px);
  --max:1312px;
  --ease-out:cubic-bezier(.2,.8,.2,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--navy);font-family:var(--display);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--emerald-ink);text-decoration:none}
a:hover{color:var(--navy)}
:focus-visible{outline:3px solid var(--emerald);outline-offset:3px}
img{max-width:100%;display:block}
h1,h2,h3{margin:0;font-weight:900;letter-spacing:-.045em;text-wrap:balance}
p{margin:0}
.wrap{width:100%;max-width:calc(var(--max) + 2*var(--gutter));margin-inline:auto;padding-inline:var(--gutter)}
.sq{display:block;background:var(--emerald)}
.sq.navy{background:var(--navy)}
.arrow{display:inline-block;transition:transform 200ms var(--ease-out)}
a:hover .arrow,button:hover .arrow{transform:translateX(5px)}

/* Header */
.site-head{position:relative;z-index:5;background:var(--paper)}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;min-height:96px;gap:24px}
.logo img{width:220px;height:auto}
.nav{display:flex;align-items:center;gap:clamp(20px,2.5vw,36px);font-weight:600;font-size:17px}
.nav a{color:var(--navy)}
.nav a:hover{color:var(--emerald-ink)}
.nav .nav-cta{display:inline-flex;align-items:center;min-height:52px;padding-inline:26px;background:var(--navy);color:var(--paper)}
.nav .nav-cta:hover{background:#1e293b;color:var(--paper)}
.menu-btn{display:none;width:48px;height:48px;border:0;background:var(--navy);cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:5px}
.menu-btn span{width:20px;height:3px;background:var(--paper);transition:transform 200ms var(--ease-out),opacity 200ms}
.menu-btn span:last-child{background:var(--emerald)}
.menu-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.menu-btn[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg);background:var(--paper)}

/* Hero */
.hero{padding-block:clamp(40px,6vw,72px) clamp(64px,8vw,104px)}
.eyebrow{font-size:clamp(15px,1.3vw,18px);font-weight:700;color:var(--emerald-ink);margin-bottom:clamp(18px,2vw,28px)}
.hero h1{font-size:clamp(3.4rem,10.25vw,9.25rem);line-height:.86;letter-spacing:-.055em;text-wrap:initial}
.h-line{display:block;overflow:hidden;padding-block:.04em .16em;margin-block:-.04em -.16em}
.h-line>span{display:block;text-wrap:pretty}
.footings{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:clamp(28px,3.2vw,44px);height:clamp(32px,3.9vw,56px)}
.footings .sq{transform-origin:50% 100%}
.footings .f1{grid-column:1}.footings .f2{grid-column:4}.footings .f3{grid-column:7}.footings .f4{grid-column:12}
.hero-foot{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:clamp(32px,3.4vw,48px);align-items:start}
.hero-intro{grid-column:1/span 6;font-size:clamp(19px,1.7vw,24px);line-height:1.5;font-weight:500;color:var(--ink-2);max-width:36ch}
.hero-cta{grid-column:8/span 5;display:flex;flex-direction:column;gap:14px}
.btn{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:72px;padding-inline:28px;background:var(--emerald);color:var(--navy);font-weight:800;font-size:clamp(18px,1.45vw,20px);border:0;font-family:inherit;cursor:pointer}
.btn:hover{background:#0ea371;color:var(--navy)}
.aside{font-size:16px;color:var(--muted)}

/* Service blocks */
.blocks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden}
.block{will-change:transform;min-height:clamp(520px,50vw,720px);padding:clamp(48px,5vw,72px) var(--gutter);display:flex;flex-direction:column;justify-content:space-between;gap:48px}
.block.dark{background:var(--navy);color:var(--on-navy)}
.block.green{background:var(--emerald);color:var(--navy)}
.block-top{display:flex;justify-content:space-between;align-items:start}
.block-top .sq{width:clamp(32px,3.3vw,48px);height:clamp(32px,3.3vw,48px);transform-origin:50% 100%}
.block.green .block-top .sq{background:var(--navy)}
.block-num{font-weight:700;font-size:18px}
.block.dark .block-num{color:var(--on-navy-muted)}
.block-body{display:flex;flex-direction:column;gap:24px;min-width:0}
.art{align-self:flex-end;width:min(100%,340px)}
/* website: a page assembling */
.mini{border:2px solid var(--on-navy-rule);background:#131d33}
.mini-bar{display:flex;gap:6px;padding:9px 10px;border-bottom:2px solid var(--on-navy-rule)}
.mini-bar i{width:9px;height:9px;background:var(--on-navy-rule)}
.mini-body{padding:14px;display:flex;flex-direction:column;gap:12px}
.mini-nav{display:flex;justify-content:space-between;align-items:center}
.mini-logo{width:46px;height:12px;background:var(--emerald)}
.mini-links{display:flex;gap:8px}
.mini-links i{width:22px;height:6px;background:#475569}
.mini-h{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.mini-h i{height:14px;background:#e2e8f0}
.mini-btn{width:84px;height:18px;background:var(--emerald)}
.mini-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:4px}
.mini-cards i{height:40px;border:2px solid var(--on-navy-rule);background:var(--navy)}
.mini [style*="--i"]{transform-origin:50% 100%}
/* systems: a workflow linking up */
.flow{position:relative;display:flex;align-items:flex-start}
.node{display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0;width:72px}
.node b{display:block;width:44px;height:44px;background:var(--navy);position:relative;transform-origin:50% 100%}
.node b::after{content:"";position:absolute;inset:14px;background:var(--emerald);transform:scale(0);transition:transform 300ms var(--ease-out)}
.node span{font-size:14px;font-weight:800;color:var(--navy);white-space:nowrap}
.link{flex:1;height:3px;margin-top:20.5px;background:var(--navy);transform-origin:0 50%}
.packet{display:none;position:absolute;top:16px;left:30px;width:12px;height:12px;background:var(--paper)}
.node.done b::after{transform:scale(1)}
@keyframes travel{0%{left:30px;opacity:0}6%{opacity:1}40%{left:calc(100% - 42px);opacity:1}46%{opacity:0}100%{left:calc(100% - 42px);opacity:0}}
.block h2{font-size:clamp(3.25rem,6.6vw,6rem);line-height:.9}
.block p{font-size:clamp(17px,1.4vw,20px);line-height:1.55;max-width:34ch}
.block.dark p{color:var(--on-navy-body)}
.block.dark a{color:var(--emerald);font-weight:700;font-size:18px}
.block.dark a:hover{color:var(--paper)}
.block.green a{color:var(--navy);font-weight:800;font-size:18px;text-decoration:underline;text-underline-offset:5px}
.block a{min-height:44px;display:inline-flex;align-items:center;align-self:start}

/* Proof */
.proof{padding-block:clamp(72px,8vw,120px)}
.proof-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:clamp(40px,4vw,56px)}
.kicker{font-size:18px;font-weight:700;color:var(--emerald-ink)}
.proof h2{font-size:clamp(3.25rem,5vw,4.5rem);line-height:.95;margin-block:10px}
.proof-sub{font-size:20px;font-weight:600;color:var(--muted)}
.proof-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}
.shot{grid-column:1/span 7;display:flex;flex-direction:column;gap:28px;min-width:0}
.frame{position:relative;aspect-ratio:16/10;max-width:100%;border:10px solid var(--navy);background:var(--tint);margin-right:clamp(28px,4vw,56px)}
.screen{position:absolute;inset:0;overflow-y:auto;overscroll-behavior:contain;background:var(--paper)}
.screen img{width:100%;height:auto;will-change:transform}
.phone{position:absolute;right:calc(-1 * clamp(28px,4vw,56px));bottom:calc(-1 * clamp(40px,4.5vw,64px));width:clamp(92px,24%,176px);aspect-ratio:9/19.5;border:6px solid var(--navy);border-radius:20px;background:var(--paper);overflow:hidden;box-shadow:10px 10px 0 var(--emerald)}
.phone .screen{border-radius:13px}
.frame .foot{position:absolute;bottom:-34px;width:24px;height:24px;background:var(--emerald)}
.frame .foot.l{left:-10px}
.screen:focus-visible{outline:3px solid var(--emerald);outline-offset:-3px}
html.motion .screen{overflow:hidden}
.shot p{margin-top:clamp(52px,6vw,84px);font-size:19px;line-height:1.6;color:var(--ink-2);max-width:60ch}
.result{grid-column:9/span 4;display:flex;flex-direction:column;gap:20px;min-width:0}
.big{display:flex;align-items:flex-start;font-weight:900;letter-spacing:-.07em;line-height:.78}
.big .n{font-size:clamp(10rem,18vw,16.25rem)}
.big .s{font-size:clamp(3rem,4.4vw,4rem);letter-spacing:-.03em;margin-left:6px;line-height:1}
.result-line{font-size:22px;line-height:1.35;font-weight:700}
.queries{list-style:none;margin:0;padding:0;font-size:16px}
.queries li{display:flex;align-items:center;gap:12px;padding-block:12px;border-bottom:2px solid var(--navy)}
.tick{position:relative;width:14px;height:14px;flex-shrink:0;box-shadow:inset 0 0 0 2px var(--emerald)}
.tick::after{content:"";position:absolute;inset:0;background:var(--emerald)}
.note{font-size:14px;line-height:1.55;color:var(--muted)}

/* Process */
.process{background:var(--tint);padding-block:clamp(72px,8vw,112px)}
.process-head{display:flex;justify-content:space-between;align-items:end;gap:32px 64px;flex-wrap:wrap;margin-bottom:clamp(32px,4vw,56px)}
.process h2{font-size:clamp(2.75rem,5vw,4.5rem);line-height:.95;max-width:14ch}
.process-head p{font-size:19px;color:var(--muted);max-width:34ch}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.step{position:relative;background:var(--paper);border:2px solid var(--navy);min-height:280px;padding:28px;display:flex;flex-direction:column;justify-content:space-between;gap:24px;overflow:hidden}
.step .num{font-weight:800;color:var(--emerald-ink)}
.step h3{font-size:clamp(28px,2.4vw,34px);letter-spacing:-.03em;margin-bottom:10px}
.step p{font-size:16px;line-height:1.55;color:var(--ink-2)}
.step.last{color:var(--on-navy)}
.step.last::before{content:"";position:absolute;inset:0;background:var(--navy);z-index:0;transform-origin:50% 100%}
.step.last>*{position:relative;z-index:1}
.step.last .sq{width:28px;height:28px}
.step.last p{color:var(--on-navy-body)}

/* About */
.about{padding-block:clamp(72px,8vw,112px)}
.about .wrap{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:end}
.about h2{grid-column:1/span 6;font-size:clamp(2.75rem,5vw,4.5rem);line-height:.95}
.about h2 .g{color:var(--emerald-ink)}
.about-body{grid-column:8/span 5;display:flex;flex-direction:column;gap:20px}
.about-body p{font-size:19px;line-height:1.6;color:var(--ink-2)}
.about-body a{font-weight:700;min-height:44px;display:inline-flex;align-items:center;align-self:start}

/* Close + intake */
.close{will-change:clip-path;background:var(--navy);color:var(--on-navy);padding-block:clamp(72px,8vw,120px) 48px}
.close h2{font-size:clamp(3.25rem,9vw,8.25rem);line-height:.86;letter-spacing:-.055em;text-wrap:initial}
.intake{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:clamp(40px,5vw,64px);align-items:start}
.choices{grid-column:1/span 5;border:0;margin:0;padding:0;min-width:0}
.choices legend{font-size:18px;font-weight:700;color:var(--emerald);margin-bottom:20px;padding:0}
.choice{position:relative;display:flex;align-items:center;gap:20px;min-height:76px;border-bottom:2px solid var(--on-navy-rule);cursor:pointer;font-size:clamp(19px,1.7vw,24px);font-weight:800;letter-spacing:-.02em;color:var(--on-navy-muted);transition:color 200ms}
.choice:first-of-type{border-top:2px solid var(--on-navy-rule)}
.choice input{position:absolute;opacity:0;width:1px;height:1px}
.box{position:relative;width:26px;height:26px;flex-shrink:0;border:3px solid var(--emerald)}
.box::after{content:"";position:absolute;inset:-1px;background:var(--emerald);transform:scale(0);transition:transform 260ms var(--ease-out)}
.choice:has(input:checked){color:var(--on-navy)}
.choice:has(input:checked) .box::after{transform:scale(1)}
.choice:has(input:focus-visible) .box{outline:3px solid var(--paper);outline-offset:3px}
.choice:hover{color:var(--on-navy)}
.start{margin-top:28px;display:flex;flex-direction:column;gap:8px}
.start span{font-size:15px;font-weight:700;color:var(--on-navy-muted)}
.start p{font-size:20px;line-height:1.5;color:#e2e8f0;max-width:40ch}
.form{grid-column:7/span 6;background:var(--paper);color:var(--navy);padding:clamp(24px,3vw,40px);display:flex;flex-direction:column;gap:20px;min-width:0}
.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.field{display:flex;flex-direction:column;gap:8px;font-size:15px;font-weight:700;min-width:0}
.field input,.field textarea{width:100%;min-height:52px;border:2px solid var(--navy);border-radius:0;padding:12px 14px;font:inherit;font-size:17px;font-weight:400;color:var(--navy);background:var(--paper)}
.field textarea{resize:vertical;line-height:1.5}
.field input:focus,.field textarea:focus{outline:none;box-shadow:0 0 0 3px var(--emerald)}
.form-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.form .btn{min-height:60px}
.form-status{font-size:15px;color:var(--emerald-ink);font-weight:600}
.site-foot{margin-top:clamp(56px,7vw,96px);border-top:1px solid var(--on-navy-rule);padding-top:32px;display:flex;flex-direction:column;gap:28px}
.site-foot img{width:220px;height:auto}
.site-foot span{font-size:15px;color:var(--on-navy-muted)}


[hidden]{display:none!important}

/* Current page in the nav */
.nav a[aria-current="page"]{display:inline-flex;align-items:center;gap:8px}
.nav a[aria-current="page"]::before{content:"";width:9px;height:9px;background:var(--emerald);flex-shrink:0}

/* Inner-page hero bands (continue the homepage service blocks) */
.band{padding-block:clamp(56px,7vw,104px)}
.band.dark{background:var(--navy);color:var(--on-navy)}
.band.green{background:var(--emerald);color:var(--navy)}
.band-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:end}
.band-copy{grid-column:1/span 8;min-width:0}
.band .art{grid-column:9/span 4;align-self:end;justify-self:end}
.band h1{font-size:clamp(3rem,5.9vw,6rem);line-height:.88;letter-spacing:-.05em;text-wrap:initial}
.band.dark .eyebrow{color:var(--emerald)}
.band.green .eyebrow{color:var(--navy)}
.band .hero-foot{display:flex;flex-direction:column;gap:28px;margin-top:clamp(28px,3vw,40px)}
.band .hero-intro{max-width:40ch}
.band.dark .hero-intro{color:var(--on-navy-body)}
.band.green .hero-intro{color:var(--navy)}
.band .hero-cta{max-width:440px}
.btn.navy{background:var(--navy);color:var(--paper)}
.btn.navy:hover{background:#1e293b;color:var(--paper)}
.art-lg{width:min(100%,380px)}
.art-lg .flow{zoom:1.3}
.hero.plain h1{font-size:clamp(3.2rem,8.4vw,7.75rem)}
.hero-side{grid-column:8/span 5;font-size:18px;line-height:1.6;color:var(--ink-2)}

/* Inner-page sections */
.section{padding-block:clamp(64px,7vw,104px)}
.section.tint{background:var(--tint)}
.section.flush{padding-top:0}
.section .footings{margin-top:0;margin-bottom:clamp(56px,6vw,88px)}
.split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:end;margin-bottom:clamp(36px,4vw,56px)}
.split>h2{grid-column:1/span 6}
.split>.split-body{grid-column:8/span 5;display:flex;flex-direction:column;gap:16px}
.split-body p{font-size:19px;line-height:1.6;color:var(--ink-2)}
.split.solo{margin-bottom:0}
.h2{font-size:clamp(2.6rem,4.8vw,4.25rem);line-height:.95}
.tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:16px}
.tile{border:2px solid var(--navy);background:var(--paper);padding:24px;min-height:170px;display:flex;flex-direction:column;justify-content:space-between;gap:24px}
.tile .sq{width:20px;height:20px}
.tile h3{font-size:clamp(22px,2vw,28px);letter-spacing:-.03em;line-height:1.05}
.tile p{font-size:16px;line-height:1.55;color:var(--ink-2);margin-top:8px}
.tiles-note{margin-top:16px;font-size:14px;color:var(--muted)}
.after{margin-top:clamp(28px,3vw,40px);font-size:19px;line-height:1.6;color:var(--ink-2);max-width:62ch}

/* Scope lists: filled square = every project, outline = when scoped */
.scope{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,4vw,64px)}
.scope h3{font-size:clamp(24px,2.2vw,30px);letter-spacing:-.03em;padding-bottom:14px;border-bottom:3px solid var(--navy);display:flex;align-items:center;gap:12px}
.scope .queries li{border-bottom:1px solid #cbd5e1;font-size:17px}
.tick.hollow::after{display:none}
.scope-legend{grid-column:1/-1;display:flex;gap:28px;flex-wrap:wrap;font-size:14px;color:var(--muted)}
.scope-legend span{display:inline-flex;align-items:center;gap:10px}

/* Two ways to begin */
.fork{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding-top:72px}
.fork-top{position:absolute;top:0;left:50%;width:28px;height:28px;margin-left:-14px;background:var(--navy);transform-origin:50% 100%}
.fork-stem{position:absolute;top:28px;left:50%;width:3px;height:20px;margin-left:-1.5px;background:var(--navy)}
.fork-bar{position:absolute;top:48px;left:25%;right:25%;height:3px;background:var(--navy)}
.path{position:relative;border:2px solid var(--navy);padding:clamp(24px,3vw,40px);display:flex;flex-direction:column;gap:16px;background:var(--paper)}
.path::before{content:"";position:absolute;top:-23px;left:50%;width:3px;height:21px;margin-left:-1.5px;background:var(--navy)}
.path .label{font-size:15px;font-weight:700;color:var(--emerald-ink)}
.path h3{font-size:clamp(28px,2.6vw,36px);letter-spacing:-.035em;line-height:1}
.path p{font-size:17px;line-height:1.55;color:var(--ink-2)}
.path.dark{background:var(--navy);color:var(--on-navy)}
.path.dark .label{color:var(--emerald)}
.path.dark p{color:var(--on-navy-body)}
.path.dark .queries li{border-bottom:1px solid var(--on-navy-rule);font-size:16px}

/* About: place */
.place{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:center}
.place-copy{grid-column:1/span 5;display:flex;flex-direction:column;gap:20px}
.place-copy p{font-size:19px;line-height:1.6;color:var(--ink-2)}
.photo-wrap{grid-column:7/span 6;padding:0 14px 14px 0}
.photo{position:relative;aspect-ratio:4/3;background:var(--navy);color:var(--on-navy-muted);display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;font-size:15px;box-shadow:14px 14px 0 var(--emerald)}

/* Closing band on inner pages */
.close-cta{margin-top:clamp(32px,4vw,56px);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:end}
.close-cta p{grid-column:1/span 6;font-size:clamp(18px,1.5vw,21px);line-height:1.55;color:var(--on-navy-body);max-width:44ch}
.close-cta .btn{grid-column:8/span 5}

/* Contact page: form beside the headline */
.contact-hero{padding-block:clamp(32px,4vw,56px) clamp(64px,7vw,96px)}
.contact-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;align-items:start}
.contact-intro{grid-column:1/span 5;display:flex;flex-direction:column;gap:24px;min-width:0}
.contact-hero h1{font-size:clamp(3rem,6vw,5.75rem)}
.contact-intro .eyebrow{margin-bottom:0}
.contact-intro .hero-intro{max-width:34ch}
.contact-hero .form{grid-column:7/span 6;border:2px solid var(--navy);gap:24px}
.direct{border-top:2px solid var(--navy);padding-top:24px;display:flex;flex-direction:column;gap:18px}
.direct h2{font-size:26px;letter-spacing:-.035em}
.direct dl{margin:0;display:flex;flex-direction:column;gap:16px}
.direct dt{font-size:14px;font-weight:700;color:var(--emerald-ink)}
.direct dd{margin:4px 0 0;font-size:19px;font-weight:700;overflow-wrap:anywhere}

/* Inquiry panel: opens in place from any "tell us about…" button */
.ask{position:fixed;inset:0 0 0 auto;margin:0;width:min(620px,100vw);height:100%;max-width:none;max-height:none;border:0;padding:0;background:var(--navy);color:var(--on-navy);overflow-y:auto;overscroll-behavior:contain}
.ask::backdrop{background:rgba(15,23,42,.5)}
.ask:focus{outline:none}
.ask-inner{min-height:100%;padding:calc(28px + env(safe-area-inset-top,0px)) clamp(20px,3vw,40px) calc(40px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:18px}
.ask-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.ask-head h2{font-size:clamp(2.25rem,4vw,3.25rem);line-height:.9;letter-spacing:-.05em;color:var(--on-navy)}
.ask-close{position:relative;width:48px;height:48px;flex-shrink:0;border:2px solid var(--on-navy-rule);background:transparent;cursor:pointer}
.ask-close::before,.ask-close::after{content:"";position:absolute;left:11px;right:11px;top:50%;height:3px;margin-top:-1.5px;background:var(--on-navy)}
.ask-close::before{transform:rotate(45deg)}
.ask-close::after{transform:rotate(-45deg);background:var(--emerald)}
.ask-close:hover{border-color:var(--on-navy)}
.ask-close:focus-visible{outline:3px solid var(--emerald);outline-offset:2px}
.ask-sub{font-size:17px;color:var(--on-navy-body)}
.ask .form{grid-column:auto;border:0;padding:clamp(20px,2.5vw,28px);gap:20px;margin-top:0}
.ask-ghost{position:fixed;z-index:60;background:var(--navy);pointer-events:none}
html:has(.ask[open]){overflow:hidden}
@keyframes askIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
html.motion .ask[open] .ask-inner{animation:askIn 320ms var(--ease-out) both}
.req{color:var(--emerald-ink)}
.help{font-size:14px;font-weight:500;color:var(--muted)}
.err{font-size:14px;font-weight:600;color:#b91c1c}
.field [aria-invalid="true"]{border-color:#b91c1c}
.choices.light{grid-column:auto}
.choices.light legend{font-size:15px;font-weight:700;color:var(--navy);margin-bottom:10px}
.choices.light .choice{min-height:60px;font-size:19px;color:var(--muted);border-bottom-color:#cbd5e1}
.choices.light .choice:first-of-type{border-top-color:#cbd5e1}
.choices.light .choice:has(input:checked),.choices.light .choice:hover{color:var(--navy)}
.choices.light .box{border-color:var(--emerald-ink)}
.choices.light .choice:has(input:focus-visible) .box{outline-color:var(--navy)}
.foot-band{background:var(--navy);color:var(--on-navy);padding-block:48px}
.foot-band .site-foot{margin-top:0;border-top:0;padding-top:0}


/* Links inside small print */
.aside a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.aside a:hover{color:var(--navy)}
.rating{display:inline-flex;align-items:center;gap:10px;align-self:start;font-size:16px;font-weight:700;color:var(--navy)}
.rating .sq{width:10px;height:10px}
.rating:hover{color:var(--emerald-ink)}
.close .aside a:hover,.close-cta a:not(.btn):hover{color:var(--on-navy)}
.close-cta p a{color:var(--on-navy);text-decoration:underline;text-underline-offset:3px}

/* Footer */
.foot-top,.foot-bottom{display:flex;justify-content:space-between;align-items:center;gap:16px 28px;flex-wrap:wrap}
.foot-nav{display:flex;flex-wrap:wrap;gap:8px 28px;font-size:16px;font-weight:700}
.foot-nav a{color:var(--on-navy-body);min-height:44px;display:inline-flex;align-items:center}
.foot-nav a:hover{color:var(--on-navy)}
.site-foot .foot-bottom a{color:var(--on-navy-body)}
.site-foot .foot-bottom a:hover{color:var(--on-navy)}
.site-foot .foot-tag{font-weight:800;color:var(--on-navy)}

/* FAQ: question left, answer right, all visible (readable by people and answer engines) */
.faq-sec .h2{margin-bottom:clamp(32px,4vw,48px)}
.faq{border-top:2px solid var(--navy)}
.faq-row{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px 16px;padding-block:24px;border-bottom:1px solid #cbd5e1}
.faq-row h3{grid-column:1/span 5;display:flex;gap:14px;align-items:baseline;font-size:clamp(20px,1.7vw,24px);font-weight:800;letter-spacing:-.02em;line-height:1.25}
.faq-row h3::before{content:"";width:12px;height:12px;flex-shrink:0;background:var(--emerald);transform:translateY(-2px)}
.faq-row p{grid-column:7/span 6;font-size:18px;line-height:1.6;color:var(--ink-2)}

/* About: the short version */
.facts-title{margin-bottom:clamp(24px,3vw,36px)}
.facts{margin:0;border-top:2px solid var(--navy)}
.facts>div{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px 16px;padding-block:18px;border-bottom:1px solid #cbd5e1}
.facts dt{grid-column:1/span 3;font-size:15px;font-weight:700;color:var(--emerald-ink);padding-top:4px}
.facts dd{grid-column:4/span 9;margin:0;font-size:clamp(19px,1.6vw,22px);font-weight:700;line-height:1.4}
.facts dd a{color:var(--navy);text-decoration:underline;text-underline-offset:4px}

.direct dd a{color:var(--navy)}


/* Contact forms: sending state, result messages, spam checks */
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.ts:empty{display:none}
.form-status{margin:0}
.form-status.is-error{color:#b91c1c}
.form.is-sending button[type="submit"]{opacity:.6;cursor:progress}
.form.is-sent>*:not(.form-status){display:none}
.form.is-sent .form-status{font-size:20px;line-height:1.5;font-weight:700;color:var(--navy)}
.form-status a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.place.no-photo .place-copy{grid-column:1/span 8}
img.photo{width:100%;height:auto;object-fit:cover;padding:0}
.place.wide .place-copy{grid-column:1/span 8}
.place.wide .photo-wrap{grid-column:1/-1;margin-top:clamp(16px,2vw,28px)}
.place.wide img.photo{aspect-ratio:auto}
/* ---------- Motion (only when JS confirms it and the viewer allows motion) ---------- */
@keyframes set{
  0%{transform:translateY(-220%);opacity:0}
  52%{transform:translateY(0) scaleY(1);opacity:1}
  68%{transform:translateY(0) scaleY(.8)}
  100%{transform:none;opacity:1}
}
/* hero */
html.motion .hero:not(.in) .h-line>span{transform:translateY(108%)}
html.motion .hero.in .h-line>span{transition:transform 820ms var(--ease-out) calc(var(--i)*95ms)}
html.motion .hero:not(.in) .eyebrow,
html.motion .hero:not(.in) .hero-foot>*{opacity:0;transform:translateY(16px)}
html.motion .hero.in .eyebrow{transition:opacity 500ms,transform 600ms var(--ease-out)}
html.motion .hero.in .hero-foot>*{transition:opacity 600ms 1000ms,transform 700ms var(--ease-out) 1000ms}
html.motion .hero.in .hero-foot>*+*{transition-delay:1100ms}
html.motion .hero:not(.in) .footings .sq{opacity:0}
html.motion .hero.in .footings .sq{animation:set 640ms cubic-bezier(.45,.05,.3,1) both;animation-delay:calc(560ms + var(--i)*120ms)}
html.motion .hero.in .footings .f4{animation-delay:1080ms}
/* generic scroll reveals */
html.motion [data-reveal="rise"]:not(.in){opacity:0;transform:translateY(28px)}
html.motion [data-reveal="rise"].in{transition:opacity 700ms var(--ease-out) var(--d,0ms),transform 800ms var(--ease-out) var(--d,0ms)}
/* service blocks wipe up, then their title lines and square follow */
html.motion .blocks:not(.in) .block .h-line>span{transform:translateY(108%)}
html.motion .blocks.in .block .h-line>span{transition:transform 800ms var(--ease-out) calc(var(--d,0ms) + 380ms + var(--i)*90ms)}
html.motion .blocks:not(.in) .block .block-top .sq{opacity:0}
html.motion .blocks.in .block .block-top .sq{animation:set 600ms cubic-bezier(.45,.05,.3,1) both;animation-delay:calc(var(--d,0ms) + 620ms)}
/* illustrations assemble when they come into view (--ad = start delay) */
html.motion .art:not(.in) .mini [style*="--i"],
html.motion .art:not(.in) .node b{opacity:0}
html.motion .art.in .mini [style*="--i"]{animation:set 560ms cubic-bezier(.45,.05,.3,1) both;animation-delay:calc(var(--ad,0ms) + var(--i)*85ms)}
html.motion .art:not(.in) .mini{border-color:transparent;background:transparent}
html.motion .art.in .mini{transition:border-color 400ms var(--ad,0ms),background-color 400ms var(--ad,0ms)}
html.motion .art.in .node b{animation:set 560ms cubic-bezier(.45,.05,.3,1) both;animation-delay:calc(var(--ad,0ms) + var(--i)*420ms)}
html.motion .art:not(.in) .link{transform:scaleX(0)}
html.motion .art.in .link{transition:transform 380ms var(--ease-io) calc(var(--ad,0ms) + 280ms + var(--i)*420ms)}
html.motion .art:not(.in) .node span{opacity:0}
html.motion .art.in .node span{transition:opacity 400ms calc(var(--ad,0ms) + 200ms + var(--i)*420ms)}
html.motion .art.in .packet{display:block;animation:travel 4.2s linear calc(var(--ad,0ms) + 1900ms) infinite}
html.motion .blocks:not(.in) .block .block-body p,
html.motion .blocks:not(.in) .block .block-body a{opacity:0}
html.motion .blocks.in .block .block-body p,
html.motion .blocks.in .block .block-body a{transition:opacity 600ms calc(var(--d,0ms) + 700ms)}
/* proof: the ticks fill one at a time */
html.motion .queries:not(.in) .tick::after{transform:scale(0)}
html.motion .queries.in .tick::after{transition:transform 320ms var(--ease-out) calc(250ms + var(--i)*160ms)}
html.motion .big:not(.in) .n,html.motion .big:not(.in) .s{transform:translateY(40%);opacity:0}
html.motion .big.in .n,html.motion .big.in .s{transition:transform 900ms var(--ease-out),opacity 500ms}
html.motion .big.in .s{transition-delay:120ms}
html.motion .frame:not(.in) .foot{opacity:0}
html.motion .frame.in .foot{animation:set 560ms cubic-bezier(.45,.05,.3,1) both;animation-delay:450ms}
html.motion .frame:not(.in) .phone{opacity:0;transform:translateY(40px)}
html.motion .frame.in .phone{transition:opacity 500ms 250ms,transform 800ms var(--ease-out) 250ms}
/* process: last tile fills navy after the others land */
html.motion .steps:not(.in) .step{opacity:0;transform:translateY(32px)}
html.motion .steps.in .step{transition:opacity 600ms calc(var(--i)*110ms),transform 750ms var(--ease-out) calc(var(--i)*110ms)}
html.motion .steps:not(.in) .step.last{color:var(--navy)}
html.motion .steps:not(.in) .step.last::before{transform:scaleY(0)}
html.motion .steps:not(.in) .step.last p{color:var(--ink-2)}
html.motion .steps.in .step.last::before{transition:transform 700ms var(--ease-io) 700ms}
html.motion .steps.in .step.last,html.motion .steps.in .step.last p{transition:color 300ms 1000ms,opacity 600ms 330ms,transform 750ms var(--ease-out) 330ms}
/* close heading lines */
html.motion .close:not(.in) .h-line>span{transform:translateY(108%)}
html.motion .close.in .h-line>span{transition:transform 820ms var(--ease-out) calc(var(--i)*95ms)}

/* inner pages */
html.motion [data-reveal="feet"]:not(.in) .sq{opacity:0}
html.motion [data-reveal="feet"].in .sq{animation:set 620ms cubic-bezier(.45,.05,.3,1) both;animation-delay:calc(var(--i)*120ms)}
html.motion [data-reveal="feet"].in .f4{animation-delay:480ms}
html.motion .tiles:not(.in) .tile{opacity:0;transform:translateY(28px)}
html.motion .tiles.in .tile{transition:opacity 600ms calc(var(--i)*100ms),transform 700ms var(--ease-out) calc(var(--i)*100ms)}
html.motion .fork:not(.in) .fork-top{opacity:0}
html.motion .fork.in .fork-top{animation:set 560ms cubic-bezier(.45,.05,.3,1) both}
html.motion .fork:not(.in) .fork-stem{transform:scaleY(0)}
html.motion .fork.in .fork-stem{transform-origin:50% 0;transition:transform 250ms var(--ease-io) 450ms}
html.motion .fork:not(.in) .fork-bar{transform:scaleX(0)}
html.motion .fork.in .fork-bar{transition:transform 450ms var(--ease-io) 650ms}
html.motion .fork:not(.in) .path{opacity:0;transform:translateY(24px)}
html.motion .fork.in .path{transition:opacity 500ms calc(950ms + var(--i)*140ms),transform 700ms var(--ease-out) calc(950ms + var(--i)*140ms)}
html.motion .photo-wrap:not(.in) .photo{clip-path:inset(100% 0 0 0)}
html.motion .photo-wrap.in .photo{transition:clip-path 900ms var(--ease-io) 150ms}

/* page-to-page transitions (browsers without support simply navigate) */
@view-transition{navigation:auto}
.site-head{view-transition-name:site-head}
::view-transition-group(web-band),::view-transition-group(sys-band){animation-duration:.7s;animation-timing-function:cubic-bezier(.65,0,.35,1)}
::view-transition-old(root),::view-transition-new(root){animation-duration:.35s}
/* ---------- Responsive ---------- */
@media (max-width:980px){
  .blocks{grid-template-columns:1fr}
  .block{will-change:transform;min-height:0}
  .proof-grid>*{grid-column:1/-1}
  .result{margin-top:48px}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .about .wrap>*{grid-column:1/-1}
  .about-body{margin-top:12px}
  .intake>*{grid-column:1/-1}
  .form{margin-top:24px}
}
@media (max-width:760px){
  .art{align-self:flex-start}
  .menu-btn{display:flex}
  .nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--paper);border-bottom:2px solid var(--navy);padding:8px var(--gutter) 20px}
  .nav.open{display:flex}
  .nav a{min-height:52px;display:flex;align-items:center;border-bottom:1px solid var(--rule)}
  .nav .nav-cta{margin-top:12px;justify-content:center;border-bottom:0}
  .site-head .wrap{min-height:76px}
  .logo img{width:200px}
  .footings{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
  .footings .f1{grid-column:1}.footings .f2{grid-column:3}.footings .f3{grid-column:5}.footings .f4{grid-column:6}
  .hero-foot>*{grid-column:1/-1}
  .hero-cta{margin-top:12px}
  .btn{min-height:64px;padding-inline:22px}
  .row2{grid-template-columns:1fr}
  .site-foot img{width:200px}
}
@media (max-width:520px){
  .steps{gap:10px}
  .step{min-height:200px;padding:16px}
  .step h3{font-size:24px}
  .step p{font-size:14px}
  .frame{border-width:6px}
  .frame .foot{display:none}
  .phone{border-width:4px;border-radius:14px;box-shadow:6px 6px 0 var(--emerald)}
  .phone .screen{border-radius:10px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .arrow,.box::after{transition:none}
}
@media (max-width:980px){
  .band-grid>*,.band .art{grid-column:1/-1}
  .band .art{justify-self:start;margin-top:40px}
  .hero-side{grid-column:1/-1;margin-top:8px}
  .split>h2,.split>.split-body{grid-column:1/-1}
  .split>.split-body{margin-top:12px}
  .tiles{grid-template-columns:repeat(2,minmax(0,1fr))}
  .scope{grid-template-columns:1fr}
  .fork{grid-template-columns:1fr;padding-top:0}
  .fork-top,.fork-stem,.fork-bar,.path::before{display:none}
  .place-copy,.photo-wrap,.place.wide .place-copy{grid-column:1/-1}
  .place.wide img.photo{aspect-ratio:2/1}
  .photo-wrap{margin-top:24px}
  .close-cta p,.close-cta .btn{grid-column:1/-1}
  .contact-intro{display:contents}
  .contact-intro>*,.contact-hero .form{grid-column:1/-1}
  .contact-hero .form{order:1;margin-top:16px}
  .direct{order:2;margin-top:32px}
}
@media (max-width:520px){
  .contact-hero .form{padding:20px 16px}
  .tiles{grid-template-columns:1fr}
  .tile{min-height:0}
}
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
}
@media (max-width:760px){
  .faq-row h3,.faq-row p{grid-column:1/-1}
  .facts dt,.facts dd{grid-column:1/-1}
  .foot-top,.foot-bottom{flex-direction:column;align-items:flex-start}
}
