@font-face{font-family:DM;src:url('/assets/dm-sans.woff2') format('woff2');font-weight:100 1000;font-style:normal;font-display:swap}
/* 🔴 Space Grotesk is our display face and home-v2.css sets --display to it, but
   nothing ever SHIPPED it: no @font-face, no Google Fonts link. It looked right
   to us only because it is installed on our Macs — every visitor without it got
   generic sans-serif on the big display headings. Self-hosted (SIL OFL), variable
   300-700, subset to Latin, same treatment as DM Sans. Found at go-live, 15 Oct. */
@font-face{font-family:'Space Grotesk';src:url('/assets/space-grotesk.woff2') format('woff2');font-weight:300 700;font-style:normal;font-display:swap}:root{--bg:#101312;--fg:#f6f7f3;--mint:#bdf4d1;--muted:#a7afa9;--line:#ffffff20;--paper:#f6f7f3;font-family:DM,Arial,sans-serif;color:var(--fg);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--mint);outline-offset:6px}.skip{position:fixed;top:-60px;left:16px;z-index:200;background:var(--paper);color:var(--bg);padding:16px}.skip:focus{top:16px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.wrap{width:min(1280px,88%);margin-inline:auto}.narrow{max-width:760px}.nav{height:102px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;gap:28px;border-bottom:1px solid var(--line);position:relative;z-index:20;background:var(--bg)}.wordmark{font-size:29px;font-weight:600;letter-spacing:-1.6px}.wordmark span{color:var(--mint)}.nav nav{display:flex;gap:35px;align-items:center;font-size:14px}.nav nav>a:not(.nav-cta){color:#c6cec8;transition:color .2s}.nav nav>a:hover,.nav nav>a[aria-current]{color:var(--mint)}.nav-cta{background:var(--fg);color:var(--bg);padding:13px 22px;border-radius:30px}.menu-toggle{display:none;color:var(--fg);background:none;border:1px solid var(--line);padding:9px 15px;border-radius:30px}.button{display:inline-flex;justify-content:center;align-items:center;min-height:52px;padding:16px 27px;border:1px solid transparent;border-radius:50px;font-size:15px;font-weight:600;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.light{background:var(--fg);color:var(--bg)}.light:hover{background:var(--mint)}.text-link{font-size:15px;display:inline-block;border-bottom:1px solid currentColor;padding-bottom:5px}.kicker{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;margin:0 0 23px;font-weight:500}.hero{height:calc(100svh - 102px);min-height:650px;max-height:1050px;position:relative;overflow:hidden;background:#101312}.hero video,.hero-poster,.hero-poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-poster{z-index:0}.hero video{z-index:1}.hero-shade{position:absolute;inset:0;z-index:2;background:linear-gradient(90deg,#101312d9 0%,#10131255 45%,transparent 80%),linear-gradient(0deg,#101312aa,transparent 70%)}.hero-content{position:absolute;z-index:3;left:6%;top:50%;transform:translateY(-42%);max-width:88%}.hero h1{font-size:clamp(56px,6.55vw,103px);line-height:1.01;letter-spacing:-.065em;font-weight:500;margin:0 0 24px}.hero h1 span{color:var(--mint)}.hero-content>p:not(.kicker){font-size:18px;color:#e2e8e2;max-width:340px;line-height:1.5;margin-bottom:30px}.hero-bottom{position:absolute;bottom:30px;left:6%;right:6%;display:flex;align-items:center;justify-content:space-between;z-index:4;font-size:12px;letter-spacing:.2px;color:#bdc8c0}.hero-bottom button{color:var(--fg);border:1px solid #ffffff50;background:#10131280;backdrop-filter:blur(12px);border-radius:30px;padding:10px 18px;font-size:13px}.section{padding-block:108px}.section-head{display:flex;align-items:end;justify-content:space-between;gap:32px;margin-bottom:44px}h1,h2,h3,p{overflow-wrap:break-word}h2{font-size:clamp(36px,4.3vw,64px);font-weight:500;line-height:1.07;letter-spacing:-.055em;margin:0 0 24px}h3{font-weight:500}.section-head h2{margin:0}.project-grid{display:grid;grid-template-columns:1.12fr 1fr;gap:35px}.project.wide{grid-row:span 2}.project-image{height:290px;overflow:hidden;padding:30px 12% 0;background:#dfe1d5;position:relative}.project-image.eirconnect{height:647px;padding:65px 9% 0;background:#b7c7bc}.project-image.aintree{height:205px;background:#dedb62;padding:18px 19% 0}.project-image img{width:100%;display:block;box-shadow:0 12px 45px #0004;transition:transform .6s}.project:hover img{transform:translateY(-14px)}.project-caption{display:flex;justify-content:space-between;align-items:center;gap:18px;padding-top:18px}.project-caption h3{font-size:19px;letter-spacing:-.5px;margin:0}.project-caption span{font-size:12px;color:var(--muted)}.mint-section{background:var(--mint);color:#102319;padding-block:100px}.feature-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:10%;align-items:center}.feature-grid>div>p:not(.kicker){font-size:18px;line-height:1.6}.feature-grid .text-link{margin-top:20px}.demo-console{background:#f8faf6;padding:26px;border-radius:12px;box-shadow:0 30px 70px #204c2820;color:#1b3021}.demo-bar{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-bottom:20px;font-size:14px;border-bottom:1px solid #26382922}.demo-bar small{font-size:11px;color:#66766b}.demo-tabs{display:flex;gap:8px;padding-top:18px}.demo-tabs button{background:transparent;border:1px solid #10231933;border-radius:30px;padding:9px 18px;font-size:13px;color:#102319}.demo-tabs button[aria-selected=true]{background:#102319;color:var(--mint);border-color:#102319}.cap-content{min-height:210px;padding-top:26px}.chat{font-size:16px;background:#e9ede6;padding:16px 18px;border-radius:12px;line-height:1.45;max-width:88%;margin:0 0 12px}.customer{background:#d7f1df;margin-left:auto}.demo-label{font-size:12px;color:#58675d;line-height:1.5}.sample-price{font-size:62px;letter-spacing:-3px;margin:5px 0 18px}.sample-options{display:flex;flex-wrap:wrap;gap:10px}.sample-options button{font-size:14px;border:1px solid #10231944;background:white;border-radius:7px;padding:12px;color:#102319}.sample-options button[aria-pressed=true]{background:#bdf4d1;border-color:#102319}.service-pair{display:grid;grid-template-columns:1fr 1fr;gap:50px}.service-pair>a{padding:45px 0 10px;border-top:1px solid var(--line)}.service-pair h3{font-size:clamp(30px,3.3vw,49px);letter-spacing:-2px;line-height:1.1;margin:25px 0}.service-pair p{font-size:17px;color:var(--muted);line-height:1.6}.service-pair .text-link{margin-top:22px}.price-teaser{border-block:1px solid var(--line);padding-block:70px;display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.price-teaser p:not(.kicker){font-size:15px;color:var(--muted)}.price-teaser .teaser-price{font-size:68px!important;letter-spacing:-4px;color:var(--fg)!important;margin:0}.teaser-price span{font-size:19px;letter-spacing:-.5px;color:var(--muted)}.price-teaser .text-link{margin-top:15px}.proof{text-align:center;max-width:940px}.proof blockquote{font-size:clamp(30px,4vw,58px);line-height:1.18;letter-spacing:-2px;margin:35px 0}.proof>p:not(.kicker){font-size:14px;color:var(--muted)}.founder-strip{display:flex;justify-content:center;align-items:center;margin-top:45px}.founder-strip img{width:47px;height:47px;object-fit:cover;border-radius:50%;border:2px solid var(--bg)}.founder-strip img+img{margin-left:-10px}.founder-strip a{font-size:14px;margin-left:16px}.closing{padding-block:100px;border-top:1px solid var(--line)}.closing h2{font-size:clamp(45px,7vw,100px);margin-bottom:35px}.page-head{padding-top:95px;padding-bottom:50px}.page-head h1{font-size:clamp(49px,6.7vw,96px);line-height:1.03;letter-spacing:-.065em;font-weight:500;max-width:1000px;margin:0 0 26px}.lede{font-size:21px;line-height:1.6;color:var(--muted);max-width:670px;margin:0 0 30px}.page-head .button{margin-top:10px}.pricing-page{background:#080909;--bg:#080909}.pricing-shell{max-width:700px;margin:auto;text-align:center;padding:85px 0 60px}.pricing-shell h1{font-size:clamp(47px,5.2vw,72px);line-height:1.04;letter-spacing:-3.5px;font-weight:600;margin:0 0 22px}.pricing-shell .kicker{color:var(--mint)}.pricing-intro{font-size:18px;color:#a9adab;margin:0 0 42px}.plan-toggle{display:grid;grid-template-columns:1fr 1fr;background:#191b1a;padding:5px;border-radius:50px}.plan-toggle button{background:transparent;border:none;border-radius:40px;color:#919693;font-size:17px;font-weight:600;padding:15px 20px}.plan-toggle button[aria-selected=true]{background:#080909;color:#f6f7f3;box-shadow:0 1px 8px #0004}.plan-price{font-size:65px;line-height:1;letter-spacing:-3px;margin:35px 0 13px;font-weight:500}.plan-price>span+span{font-size:19px;letter-spacing:0;margin-left:3px;color:#9da39f}#plan-description{font-size:16px;color:#bdc4be;min-height:25px;margin:0 0 30px}.comparison{border:1px solid #3b413c;border-radius:24px;padding:14px 27px 19px;text-align:left}.comparison table{border-collapse:collapse;width:100%;font-size:17px}.comparison th{text-align:left;font-weight:400}.comparison thead th{font-size:14px;color:#9ca49e;padding:19px 0 20px;font-weight:500}.comparison th:not(:first-child),.comparison td{text-align:center;width:110px}.comparison tbody th,.comparison td{padding:15px 0}.comparison tbody th{padding-right:15px;font-size:16px}.comparison td{color:#89918b;font-size:14px}.comparison .selected-column{color:var(--mint)}.comparison .check{font-size:27px;line-height:1}.comparison .optional{font-size:12px}.plan-action{display:flex;background:var(--fg);color:#080909;font-size:19px;padding:19px;margin-top:35px;min-height:63px}.plan-action:hover{background:var(--mint)}.plan-terms{font-size:14px;color:#ecefed;line-height:1.5;margin:20px 0 8px}.plan-extra{color:#909a93;font-size:13px;line-height:1.6;min-height:22px;margin:0}.store-pricing{font-size:13px;line-height:1.7;color:#949f98;margin:30px 0 0}.store-pricing a{color:#e3eae5;text-decoration:underline;text-underline-offset:4px}.pricing-faq{padding-top:50px}.pricing-faq h2{font-size:37px}.faq{margin-top:35px}.faq details{border-top:1px solid var(--line)}.faq details:last-child{border-bottom:1px solid var(--line)}.faq summary{list-style:none;padding:25px 36px 25px 0;cursor:pointer;font-size:17px;position:relative}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:'+';position:absolute;right:3px;top:23px;font-size:22px;color:var(--mint)}.faq details[open] summary:after{content:'−'}.faq p{color:var(--muted);font-size:16px;line-height:1.75;margin:0 25px 25px 0}.client-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.client-grid>a{display:flex;flex-direction:column;padding:35px 28px;border:1px solid var(--line);min-height:220px;background:#171c18}.client-grid img{object-fit:contain;object-position:left center;width:160px;height:68px;margin-bottom:30px}.client-grid h3{font-size:17px;margin:0 0 10px}.client-grid span{color:var(--muted);font-size:13px}.client-grid .client-type{font-size:28px;letter-spacing:-1px;color:var(--fg);margin-bottom:35px;height:68px}.project-grid+.section-head{margin-top:100px}.founder-grid{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-top:45px}.founder-grid img{width:100%;height:380px;object-fit:cover;object-position:50% 30%;border-radius:2px;filter:saturate(.65);margin-bottom:35px}.founder-grid h2{font-size:39px}.founder-grid article>p:not(.kicker){font-size:17px;line-height:1.7;color:var(--muted);max-width:450px}.founder-grid a{font-size:15px;text-decoration:underline;text-underline-offset:5px}.benefit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:55px 40px}.benefit-grid article{border-top:1px solid var(--line);padding-top:28px}.benefit-grid h2,.benefit-grid h3{font-size:27px;line-height:1.15;letter-spacing:-1px;margin:0 0 18px}.benefit-grid p{font-size:16px;line-height:1.7;color:var(--muted);margin:0}.inline-action{padding-block:55px;border-block:1px solid var(--line);display:flex;justify-content:space-between;gap:25px;font-size:20px}.store-callout{border-top:1px solid var(--line)}.store-callout p:not(.kicker){color:var(--muted);font-size:18px}.store-callout .button{margin-top:20px}.contact-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;padding-top:40px}.contact-main{padding:45px;background:#191e1a;border-radius:12px}.contact-main h2{font-size:43px}.contact-main>p:not(.kicker){font-size:17px;line-height:1.7;color:var(--muted)}.contact-main .button{margin-top:15px}.contact-main .small{font-size:12px!important}.contact-main .text-link{line-height:1.7;font-size:14px;margin-top:20px}.contact-details a{display:block;padding:30px 0;border-top:1px solid var(--line)}.contact-details span{display:block;font-size:13px;color:var(--muted);margin-bottom:13px}.contact-details strong{font-size:24px;font-weight:400;letter-spacing:-.7px}.contact-details p{color:var(--muted);font-size:16px;line-height:1.7;margin-top:25px}.chosen-plan{color:var(--mint)!important}.process-list{padding-top:20px}.process-list article{display:grid;grid-template-columns:1fr 3fr;gap:40px;padding-block:50px;border-top:1px solid var(--line)}.process-list article>span{font-size:18px;color:var(--mint)}.process-list h2{font-size:38px}.process-list p{font-size:18px;color:var(--muted);line-height:1.7;max-width:650px}.demo-page{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;padding-top:30px}.quote-app{background:var(--paper);color:#101312;padding:40px;border-radius:15px}.quote-app h2{font-size:36px}.quote-app fieldset{border:0;padding:0;margin:30px 0}.quote-app legend{font-size:14px;margin-bottom:12px}.quote-app fieldset label{display:flex;align-items:center;gap:10px;font-size:15px;padding:15px 0;border-bottom:1px solid #10131222;cursor:pointer}.quote-app input{width:18px;height:18px;accent-color:#145b35}.quote-app label span{margin-left:auto;font-size:13px;color:#5c6a60}.select-label{font-size:14px;display:block}.select-label select{display:block;width:100%;margin-top:10px;background:white;border:1px solid #b6c2b9;padding:14px;border-radius:7px;color:#101312}.quote-total{display:flex;justify-content:space-between;align-items:center;margin:30px 0;font-size:14px}.quote-total output{font-size:48px;letter-spacing:-2px}.small{font-size:13px;line-height:1.6;color:var(--muted)}.quote-app .small{color:#59645b}.demo-aside{padding-top:35px}.demo-aside p:not(.kicker){font-size:18px;line-height:1.7;color:var(--muted)}.demo-aside .button{margin-top:20px}.audit-action{margin-top:60px}.article-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0 65px;padding-bottom:100px}.article-list>a{padding-block:40px;border-top:1px solid var(--line)}.article-list h2{font-size:34px;line-height:1.2;letter-spacing:-1.1px}.article-list .text-link{margin-top:10px}.prose{max-width:760px;padding-top:30px;padding-bottom:90px;line-height:1.85;font-size:18px;color:#c4cdc6}.prose h2{font-size:34px;margin-top:65px;color:var(--fg);letter-spacing:-1px}.prose h3{font-size:24px;color:var(--fg);margin-top:35px}.prose p{margin-block:22px}.prose a{text-decoration:underline;text-underline-offset:5px;color:var(--mint)}.prose strong{color:var(--fg);font-weight:500}.prose blockquote{border-left:2px solid var(--mint);margin:35px 0;padding-left:28px}.prose ul,.prose ol{padding-left:25px}.prose li{margin:12px 0}.article-page .page-head{max-width:1000px}.article-page .page-head h1{font-size:clamp(44px,5.5vw,78px)}.article-back{padding-bottom:100px}footer{border-top:1px solid var(--line);padding-top:60px;padding-bottom:25px}.footer-top{display:grid;grid-template-columns:1.5fr 1.1fr 1fr;gap:50px;padding-bottom:60px}.footer-top p{font-size:17px;line-height:1.5;color:var(--muted);margin:25px 0}.footer-top>div>a:not(.wordmark){font-size:14px}.footer-links{display:grid;grid-template-columns:1fr;gap:13px}.footer-links a{font-size:13px;color:#b6c1b9}.footer-links a:hover{color:var(--mint)}.footer-bottom{border-top:1px solid var(--line);padding-top:24px;display:flex;gap:25px;font-size:12px;color:#98a59b;align-items:center;flex-wrap:wrap}.footer-bottom span{margin-right:auto}.footer-bottom button{border:0;padding:0;background:none;color:inherit;font-size:12px}.legal-address{font-size:11px;line-height:1.6;margin-top:15px;color:#86938a}dialog{background:#1a211c;color:var(--fg);border:1px solid #8d9c9044;border-radius:20px;padding:40px;max-width:min(520px,90%)}dialog::backdrop{background:#000b;backdrop-filter:blur(5px)}dialog h2{font-size:35px}dialog p{font-size:16px;line-height:1.7;color:var(--muted)}dialog a{text-decoration:underline;display:block;margin-bottom:24px}dialog .button{background:var(--fg);color:var(--bg)}
@media(min-width:1500px){.hero{max-height:900px}.hero-content{left:max(6%,calc((100% - 1320px)/2))}}
@media(max-width:1000px){.nav nav{gap:22px}.hero{min-height:640px}.hero h1{font-size:70px}.project-caption{display:block}.project-caption span{display:block;margin-top:5px}.project-image.eirconnect{height:600px}.project-image{height:260px}.project-image.aintree{height:180px}.feature-grid{gap:5%}.demo-console{padding:22px}.benefit-grid{grid-template-columns:repeat(2,1fr)}.pricing-shell{width:82%}.contact-grid,.demo-page{gap:5%}.contact-main{padding:30px}.contact-details strong{font-size:20px}.client-grid{grid-template-columns:repeat(2,1fr)}.founder-grid img{height:320px}}
@media(max-width:760px){.wrap{width:88%}.nav{height:82px;padding-inline:6%}.wordmark{font-size:25px}.menu-toggle{display:block;font-size:13px}.nav nav{display:none;position:absolute;top:81px;left:0;right:0;background:#101312;padding:25px 6% 35px;flex-direction:column;align-items:stretch;border-bottom:1px solid var(--line);gap:0}.nav nav.open{display:flex}.nav nav a{padding:17px 0;font-size:20px}.nav nav .nav-cta{text-align:center;margin-top:15px;padding:15px}.hero{min-height:680px;height:calc(94svh - 82px);max-height:820px}.hero h1{font-size:clamp(46px,8.5vw,66px)}.hero-content{top:auto;bottom:100px;transform:none}.hero-content .kicker{font-size:10px;letter-spacing:1.25px;max-width:270px;line-height:1.5}.hero-content>p:not(.kicker){font-size:16px;max-width:280px;line-height:1.55}.hero-shade{background:linear-gradient(0deg,#101312f0 0%,#101312bb 35%,#10131211 90%)}.hero-bottom{font-size:10px;bottom:24px}.hero-bottom button{font-size:12px;padding:9px 14px}.section{padding-block:70px}.section-head{align-items:start;flex-direction:column;gap:24px}.section-head h2{font-size:42px}.project-grid{grid-template-columns:1fr;gap:40px}.project.wide{grid-row:auto}.project-image.eirconnect{height:440px;padding:36px 10% 0}.project-image,.project-image.aintree{height:370px;padding:30px 12% 0}.project-caption{display:flex}.project-caption h3{font-size:18px}.project-caption span{font-size:11px}.mint-section{padding-block:65px}.feature-grid{grid-template-columns:1fr;gap:35px}.feature-grid h2{font-size:47px}.feature-grid>div>p:not(.kicker){font-size:17px}.demo-console{padding:24px}.service-pair{grid-template-columns:1fr;gap:35px}.service-pair>a{padding-top:30px}.service-pair h3{font-size:39px}.price-teaser{grid-template-columns:1fr;gap:20px;padding-block:55px}.price-teaser h2{font-size:44px}.price-teaser .teaser-price{font-size:59px!important}.proof blockquote{font-size:37px;letter-spacing:-1.3px}.founder-strip a{font-size:12px}.closing{padding-block:75px}.closing h2{font-size:57px}.page-head{padding-top:65px;padding-bottom:20px}.page-head h1{font-size:54px}.lede{font-size:18px}.pricing-shell{width:88%;padding:60px 0 45px}.pricing-shell h1{font-size:55px;letter-spacing:-2.5px}.pricing-shell .kicker{font-size:10px;letter-spacing:1.2px}.pricing-intro{font-size:16px;margin-bottom:30px}.plan-toggle button{font-size:15px;padding:13px 16px}.plan-price{font-size:58px;margin-top:30px}.plan-price>span+span{font-size:16px}#plan-description{font-size:14px;line-height:1.55;min-height:43px;margin-bottom:20px}.comparison{padding:8px 17px 15px;border-radius:22px}.comparison th:not(:first-child),.comparison td{width:69px}.comparison thead th{font-size:12px;padding-bottom:18px}.comparison tbody th{font-size:14px;padding-right:12px;line-height:1.45}.comparison td{font-size:12px}.comparison tbody th,.comparison td{padding-block:14px}.comparison .check{font-size:25px}.comparison .optional{font-size:10px}.plan-action{font-size:16px;margin-top:28px;padding:18px;min-height:58px}.plan-terms{font-size:12px;line-height:1.6;margin-top:18px}.plan-extra{font-size:12px}.store-pricing{font-size:12px}.pricing-faq{padding-top:20px}.pricing-faq h2{font-size:33px}.faq summary{font-size:16px}.faq p{font-size:15px}.client-grid{gap:16px}.client-grid>a{padding:25px 20px;min-height:210px}.client-grid img{width:100%;height:65px}.client-grid h3{font-size:15px}.client-grid .client-type{font-size:23px}.founder-grid{grid-template-columns:1fr;gap:55px;padding-top:35px}.founder-grid img{height:auto;max-height:420px;aspect-ratio:1.15;object-position:50% 30%}.founder-grid h2{font-size:37px}.benefit-grid{grid-template-columns:1fr;gap:35px}.benefit-grid h2,.benefit-grid h3{font-size:29px}.inline-action{flex-direction:column;align-items:start;font-size:20px}.store-callout h2{font-size:40px}.contact-grid,.demo-page{grid-template-columns:1fr;gap:45px}.contact-main{padding:30px 25px}.contact-main h2{font-size:36px}.contact-main>p:not(.kicker){font-size:16px}.contact-details strong{font-size:24px}.process-list article{grid-template-columns:35px 1fr;gap:20px;padding-block:35px}.process-list h2{font-size:32px}.process-list p{font-size:16px}.quote-app{padding:30px 23px}.quote-app h2{font-size:33px}.quote-app fieldset label{font-size:13px}.quote-app label span{font-size:12px}.demo-aside{padding-top:0}.article-list{grid-template-columns:1fr;padding-top:30px;padding-bottom:70px}.article-list h2{font-size:32px}.prose{font-size:17px;padding-top:0}.prose h2{font-size:30px;margin-top:45px}.article-page .page-head h1{font-size:46px}.footer-top{grid-template-columns:1fr 1fr;gap:45px 25px}.footer-top>div:first-child{grid-column:span 2}.footer-links{gap:14px}.footer-links a{font-size:12px}.footer-bottom{gap:18px;font-size:11px}.footer-bottom span{width:100%}.footer-bottom button{font-size:11px}.legal-address{font-size:10px}.kicker{font-size:11px}h2{font-size:42px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*:not(.stream-card),*:before,*:after{transition:none!important;animation:none!important}.project:hover img{transform:none}.button:hover{transform:none}}

/* Real-build gallery. Native horizontal scrolling is the baseline. */
.scroll-proof{padding-block:64px 35px;overflow:clip;background:#101312}.proof-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:25px}.proof-heading h2{font-size:clamp(35px,3.7vw,56px);margin:0}.proof-heading .kicker{margin-bottom:15px;color:#a5b4a9}.proof-total{display:flex;align-items:center;gap:15px;flex-shrink:0}.proof-total strong{font-size:59px;font-weight:500;line-height:1;letter-spacing:-4px;color:var(--mint)}.proof-total span{font-size:13px;line-height:1.5;color:var(--muted)}.proof-rail{display:flex;gap:24px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;padding:10px max(6vw,calc((100vw - 820px)/2)) 18px;align-items:center}.proof-rail::-webkit-scrollbar{display:none}.proof-card{flex:0 0 min(70vw,820px);scroll-snap-align:center;min-width:0;transform:scale(.94);opacity:.5;transition:transform .35s,opacity .35s}.proof-card.is-active{transform:scale(1);opacity:1}.proof-visit{display:block;border-radius:12px;overflow:hidden;background:#1c241e;border:1px solid #ffffff20}.proof-browser{display:flex;justify-content:space-between;gap:20px;font-size:11px;color:#aebbb1;padding:12px 18px;border-bottom:1px solid #ffffff16}.proof-browser>span:last-child{color:var(--mint)}.proof-image{height:clamp(210px,38vh,410px);background:#27332b;overflow:hidden}.proof-image img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.proof-caption{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:17px 22px}.proof-caption h3{margin:0;font-size:22px;letter-spacing:-.7px}.proof-caption p{font-size:12px;color:var(--muted);margin:4px 0 0}.proof-view{font-size:12px;border-bottom:1px solid #c3d1c7;padding-bottom:4px}.proof-controls{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-top:12px}.proof-stepper{display:flex;align-items:center;gap:14px;font-size:12px;white-space:nowrap}.proof-stepper button{background:none;border:1px solid #ffffff28;color:var(--fg);border-radius:30px;padding:10px 14px;font-size:12px}.proof-stepper button:disabled{opacity:.35;cursor:default}.proof-stepper span{font-variant-numeric:tabular-nums;color:var(--muted)}.proof-thumbnails{display:flex;gap:9px;overflow-x:auto;padding:5px;scrollbar-width:none}.proof-thumbnails button{flex-shrink:0;width:59px;height:43px;padding:0;background:none;border:2px solid transparent;border-radius:6px;opacity:.45;overflow:hidden;transition:opacity .2s,border-color .2s}.proof-thumbnails button[aria-pressed=true]{border-color:var(--mint);opacity:1}.proof-thumbnails img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.proof-controls>.text-link{font-size:13px;white-space:nowrap}.proof-progress{height:2px;background:#ffffff12;margin-top:20px}.proof-progress span{height:100%;display:block;background:var(--mint);width:0;transform-origin:left;transition:width .12s linear}.proof-hint{text-align:center;font-size:11px;color:#8d9b91;margin:15px 0 0}.mobile-hint{display:none}.scroll-proof.is-pinned{height:330vh;padding:0;overflow:visible}.is-pinned .proof-sticky{position:sticky;top:0;height:100svh;padding:32px 0 20px;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.is-pinned .proof-rail{overflow-x:hidden;scroll-snap-type:none;flex-shrink:0}.is-pinned .proof-controls{flex-shrink:0}.is-pinned .proof-progress{flex-shrink:0}
@media(max-width:1050px){.proof-controls{flex-wrap:wrap}.proof-thumbnails{order:3;justify-content:center;width:100%}.proof-image{height:33vh}.proof-heading h2{font-size:38px}.proof-total strong{font-size:49px}.is-pinned .proof-sticky{padding-block:20px}}
@media(max-width:760px){.scroll-proof{padding-block:55px 32px}.proof-heading{align-items:start;gap:18px}.proof-heading h2{font-size:36px;max-width:240px}.proof-total{flex-direction:column;align-items:start;gap:5px}.proof-total strong{font-size:44px}.proof-total span{font-size:10px}.proof-heading .kicker{font-size:10px;letter-spacing:1px}.proof-rail{padding-inline:6vw;gap:12px}.proof-card{flex-basis:88vw;transform:scale(.97)}.proof-image{height:280px}.proof-browser{font-size:10px;padding:11px 13px}.proof-caption{padding:16px}.proof-caption h3{font-size:20px}.proof-caption p{font-size:11px}.proof-view{font-size:11px}.proof-controls{margin-top:8px;gap:15px}.proof-stepper{gap:9px;font-size:11px}.proof-stepper button{padding:9px 12px;font-size:11px}.proof-controls>.text-link{font-size:12px}.proof-thumbnails{justify-content:start;gap:8px}.proof-thumbnails button{width:48px;height:37px}.desktop-hint{display:none}.mobile-hint{display:inline}}
@media(prefers-reduced-motion:reduce){.proof-card{transform:none;opacity:1}.proof-progress span{transition:none}}
/* Real client captures travel along two perspective rails. */
.stream-hero{position:relative;isolation:isolate;container-type:inline-size;height:calc(100svh - 102px);min-height:650px;max-height:1050px;overflow:hidden;background:#101312}.stream-perspective{position:absolute;inset:0;perspective:30cqw;perspective-origin:50% 55%;pointer-events:none}.stream-space{position:absolute;inset:0;transform-style:preserve-3d}.stream-card{position:absolute;left:50%;top:55%;width:18cqw;height:25cqw;margin-left:-9cqw;margin-top:-12.5cqw;border-radius:.4cqw;overflow:hidden;background:#27332b;backface-visibility:hidden;animation-duration:26s;animation-timing-function:linear;animation-iteration-count:infinite;box-shadow:0 0 0 1px #ffffff30}.stream-left{animation-name:stream-left}.stream-right{animation-name:stream-right}.stream-card img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.stream-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#101312 0%,#101312e8 16%,transparent 42%,transparent 62%,#101312ed 89%,#101312),radial-gradient(ellipse at 50% 50%,transparent 25%,#10131244 80%)}.stream-heading{position:relative;z-index:2;text-align:center;padding:45px 20px 0;pointer-events:none}.stream-heading .kicker{font-size:10px;letter-spacing:1.7px;margin-bottom:18px;color:#bcc8bf}.stream-heading h1{font-size:clamp(52px,6.1vw,88px);font-weight:500;line-height:1.03;letter-spacing:-.06em;margin:0}.stream-heading h1 span{color:var(--mint)}.stream-action{position:absolute;z-index:2;bottom:77px;left:0;right:0;text-align:center}.stream-action p{font-size:15px;color:#c0cdc4;margin:0 0 21px}.stream-action>div{display:flex;align-items:center;justify-content:center;gap:25px}.stream-film{background:transparent;border:0;color:var(--fg);font-size:14px;padding:15px 0}.stream-film span{margin-left:10px}.stream-bottom{position:absolute;z-index:2;bottom:25px;left:6%;right:6%;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#acbbb0}.stream-bottom button{color:inherit;border:1px solid #ffffff25;background:#101312bb;border-radius:30px;padding:9px 15px;font-size:11px}.stream-hero.is-paused .stream-card{animation-play-state:paused}.film-dialog{padding:48px 12px 12px;max-width:min(1100px,94vw);width:1100px;max-height:94svh;background:#101312;overflow:hidden}.film-dialog video{display:block;width:100%;max-height:80svh}.film-close{position:absolute;right:18px;top:14px;border:0;background:none;color:white;font-size:14px}.film-dialog::backdrop{background:#000e}
@media(max-width:760px){.stream-hero{height:calc(100svh - 82px);min-height:640px;max-height:900px}.stream-heading{padding-top:37px}.stream-heading h1{font-size:clamp(42px,9vw,65px)}.stream-heading .kicker{font-size:8px;letter-spacing:1.1px}.stream-perspective{left:-65%;right:-65%}.stream-card{width:22cqw;height:32cqw;margin-left:-11cqw;margin-top:-16cqw}.stream-action{bottom:86px}.stream-action p{font-size:13px}.stream-action>div{gap:22px}.stream-action .button{padding:14px 24px;min-height:49px}.stream-bottom{bottom:26px}.stream-vignette{background:linear-gradient(#101312 0%,#101312ee 23%,transparent 43%,transparent 57%,#101312f0 80%,#101312)}}
@media(prefers-reduced-motion:reduce){.stream-card{animation-play-state:paused}}
.proof-image{background:#101713}.proof-image img{object-fit:contain;object-position:center}
@media(min-width:761px){.stream-hero{min-height:610px}}
@media(max-width:760px){.stream-card{width:30cqw;height:45cqw;margin-left:-15cqw;margin-top:-22.5cqw}.proof-image{height:220px}}

@media(prefers-reduced-motion:reduce){#stream-toggle{display:none}}
/* Matched landscape browser panels preserve complete website compositions. */
.stream-card{width:26.6667cqw;height:15cqw;margin-left:-13.3333cqw;margin-top:-7.5cqw;background:#171c19}.stream-card img{object-fit:contain;object-position:center}.stream-action>div{gap:22px}.stream-film{font-size:14px}.capability-intro{max-width:360px;font-size:18px;line-height:1.6;color:var(--muted);margin:0}.capability-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px}.capability-grid article{border-top:1px solid var(--line);padding-top:25px}.capability-grid article>span{font-size:12px;color:var(--mint)}.capability-grid h3{font-size:27px;line-height:1.15;letter-spacing:-1px;margin:30px 0 18px}.capability-grid p,.reputation-grid p{font-size:16px;line-height:1.65;color:var(--muted)}.capability-grid .text-link{margin-top:15px}.reputation-section{background:#191f1b;padding:85px 0}.reputation-grid{display:grid;grid-template-columns:1fr 1fr;gap:8%;margin-top:45px}.reputation-grid article{padding-top:25px;border-top:1px solid var(--line)}.reputation-label{font-size:13px;color:var(--mint)}.reputation-grid h3{font-size:37px;letter-spacing:-1.5px;line-height:1.12;margin:24px 0 20px}.reputation-grid p{max-width:460px}.reputation-grid .text-link{margin-top:12px}.film-dialog{padding:42px 22px 16px;overflow:auto;max-width:min(1100px,94vw)}.film-dialog h2{font-size:27px;margin:0 0 8px}.film-dialog .film-intro{font-size:14px;margin:0 0 18px;line-height:1.5}.film-dialog video{max-height:65svh;background:#101312}.film-dialog .film-note{font-size:12px;margin:12px 0 0;line-height:1.5}.film-dialog .film-note a{display:inline;margin:0;color:var(--mint)}
@media(max-width:1000px){.capability-grid{grid-template-columns:repeat(2,1fr);gap:35px}.capability-intro{max-width:300px}}
@media(max-width:760px){.stream-card{width:48cqw;height:27cqw;margin-left:-24cqw;margin-top:-13.5cqw}.stream-action>div{gap:16px}.stream-film{font-size:13px}.stream-action .button{padding-inline:20px}.capability-grid{grid-template-columns:1fr}.capability-grid h3{margin:18px 0 14px;font-size:29px}.capability-grid .text-link{margin-top:6px}.capability-intro{max-width:none;font-size:17px}.reputation-section{padding:60px 0}.reputation-grid{grid-template-columns:1fr;gap:40px}.reputation-grid h3{font-size:33px}.film-dialog{padding:44px 14px 18px}.film-dialog h2{font-size:24px}.film-dialog video{max-height:60svh}.film-dialog .film-intro{font-size:13px}}
/* Soft coloured ribbons weave behind the work, without covering its content. */
.hero-ribbons{position:absolute;inset:-6% -4%;pointer-events:none;overflow:hidden;opacity:.72}.hero-ribbons svg{display:block;width:100%;height:100%;overflow:visible}.ribbon-wave{transform-origin:center;animation:ribbon-drift 18s ease-in-out infinite alternate}.ribbon-wave-one{opacity:.7}.ribbon-wave-two{opacity:.6;animation-delay:-9s;animation-direction:alternate-reverse}.stream-hero.is-paused .ribbon-wave{animation-play-state:paused}@keyframes ribbon-drift{from{transform:translateY(-18px) rotate(-3deg)}to{transform:translateY(20px) rotate(3deg)}}
@media(max-width:760px){.hero-ribbons{inset:2% -55%;opacity:.6}.ribbon-wave-one{opacity:.75}.ribbon-wave-two{opacity:.7}}
@media(prefers-reduced-motion:reduce){.ribbon-wave{animation:none!important}}
/* Each portfolio entry shows the actual website, keeping the featured trio intact. */
.client-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:42px 30px}.client-grid>a{display:block;padding:0;border:0;min-height:0;background:transparent}.client-thumbnail{aspect-ratio:16/9;overflow:hidden;border-radius:8px;background:#1b221d;border:1px solid var(--line)}.client-grid .client-thumbnail img{display:block;width:100%;height:100%;object-fit:contain;object-position:top;margin:0;transition:transform .45s}.client-grid>a:hover .client-thumbnail img{transform:scale(1.025)}.client-caption{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-top:17px}.client-grid h3{font-size:19px;letter-spacing:-.5px;margin:0}.client-caption>span{font-size:12px;white-space:nowrap}
@media(max-width:760px){.client-grid{grid-template-columns:1fr;gap:32px}.client-grid>a{padding:0;min-height:0}.client-grid .client-thumbnail img{height:100%}.client-grid h3{font-size:18px}.client-caption{padding-top:14px}.client-caption>span{font-size:12px}}
@media(prefers-reduced-motion:reduce){.client-grid>a:hover .client-thumbnail img{transform:none}}
/* Visual customer journey: one real interaction at a time. */
.visual-journey .section-head{align-items:center}.visual-journey h2{max-width:700px}.journey-play{border:1px solid var(--line);background:transparent;color:var(--fg);border-radius:30px;padding:13px 20px;font-size:14px;white-space:nowrap}.journey-stage{display:grid;grid-template-columns:1fr 1.12fr;gap:8%;padding:46px 7%;border:1px solid #ffffff1b;border-radius:20px;background:radial-gradient(ellipse at 90% 25%,#31443a55,transparent 60%),#171e19;align-items:center}.journey-source{font-size:13px;color:var(--muted);margin:0 0 34px}.journey-steps{list-style:none;margin:0 0 35px;padding:0}.journey-steps li{margin:0}.journey-steps button{position:relative;display:flex;align-items:center;gap:22px;text-align:left;width:100%;background:none;color:#849389;border:0;border-bottom:1px solid #ffffff16;padding:26px 0;font-size:clamp(21px,2.3vw,34px);letter-spacing:-.7px;transition:color .25s}.journey-steps button[aria-pressed=true]{color:var(--fg)}.journey-number{font-size:13px;letter-spacing:0;color:var(--muted);font-variant-numeric:tabular-nums}.journey-steps button[aria-pressed=true] .journey-number{color:var(--mint)}.journey-meter{position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--mint);transform:scaleX(0);transform-origin:left}.journey-steps button[aria-pressed=true] .journey-meter{transform:scaleX(var(--tour-progress,0))}.journey-panel{margin:0;max-width:420px;margin-inline:auto}.journey-panel[hidden]{display:none}.journey-capture{position:relative;aspect-ratio:480/620;overflow:hidden;border:1px solid #ffffff30;border-radius:14px;background:#213445;box-shadow:0 24px 65px #0004}.journey-capture img{position:absolute;width:266.6667%;max-width:none;height:auto;left:-152.0833%;top:-11.2903%;display:block}.quote-capture img{width:241.5094%;left:-109.434%;top:-16.129%}.journey-panel figcaption{text-align:center;margin-top:23px;font-size:24px;line-height:1.2;font-weight:500;letter-spacing:-.7px}.journey-panel.is-active .journey-capture{animation:journey-reveal .45s ease both}.journey-note{font-size:12px;text-align:center;color:#89998e;margin-top:20px;line-height:1.6}@keyframes journey-reveal{from{opacity:.25;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){.visual-journey .section-head{align-items:start;gap:20px}.visual-journey h2{font-size:39px}.journey-play{padding:11px 17px;font-size:13px}.journey-stage{display:flex;flex-direction:column;padding:22px 18px;gap:26px;border-radius:16px}.journey-sidebar{width:100%;display:contents}.journey-source{font-size:12px;margin:0;text-align:center;order:0}.journey-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;width:100%;margin:0;order:1}.journey-steps button{display:flex;flex-direction:column;align-items:start;justify-content:start;gap:9px;min-height:78px;padding:0 0 13px;font-size:13px;line-height:1.2;letter-spacing:0}.journey-number{font-size:11px}.journey-screen{width:100%;order:2}.journey-sidebar>.text-link{order:3;font-size:14px}.journey-panel{max-width:320px}.journey-panel figcaption{font-size:23px;margin-top:20px}.journey-note{font-size:11px}}
.mock-journey .journey-stage{display:block;padding:24px;background:#151d18}.mock-journey .journey-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin:0 0 22px}.mock-journey .journey-steps button{font-size:19px;gap:12px;padding:13px 0 18px;min-height:0}.mock-journey video{display:block;width:100%;aspect-ratio:8/5;object-fit:contain;border-radius:12px;background:#101713}.mock-journey .journey-screen{width:100%}
@media(max-width:760px){.mock-journey .journey-stage{padding:14px}.mock-journey .journey-steps{gap:10px;margin-bottom:14px}.mock-journey .journey-steps button{font-size:12px;min-height:74px;gap:8px;padding:6px 0 12px}.mock-journey video{aspect-ratio:9/13}.mock-journey h2{font-size:37px}}

/* Apple-design pass, 4 Oct 2026. Kept as one block so it reviews and reverts cleanly. */
/* --spring is a critically damped spring (damping 1.0) sampled into linear(): no overshoot, settles at .6s. */
:root{--spring:linear(0,.097,.282,.466,.619,.736,.821,.881,.921,.949,.967,.979,.986,.991,.995,.997,.998,.999,1)}
a,button,summary,label{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
/* Response: feedback on press, instantly, on everything tappable. */
.button,.nav-cta,.plan-action,.menu-toggle,.plan-toggle button,.demo-tabs button,.sample-options button,.proof-stepper button,.proof-thumbnails button,.journey-play,.stream-bottom button,.hero-bottom button,.stream-film,.film-close{transition:transform .6s var(--spring),background-color .2s,color .2s,border-color .2s,box-shadow .2s,opacity .2s}
.button:active,.nav-cta:active,.plan-action:active,.menu-toggle:active,.plan-toggle button:active,.demo-tabs button:active,.sample-options button:active,.proof-stepper button:active:not(:disabled),.proof-thumbnails button:active,.journey-play:active,.stream-bottom button:active,.hero-bottom button:active,.stream-film:active,.film-close:active{transform:scale(.97);transition-duration:.1s}
@media(hover:none){.button:hover{transform:none}.project:hover img,.client-grid>a:hover .client-thumbnail img{transform:none}}
/* Springs on the motion that already existed. */
.proof-card{transition:transform .6s var(--spring),opacity .35s ease}
.project-image img,.client-grid .client-thumbnail img{transition-timing-function:var(--spring)}
.proof-progress span{width:100%;transform:scaleX(0);transition:transform .12s linear}
.journey-meter{transition:transform .25s linear}
/* Segmented control: one indicator that slides between plans instead of two backgrounds swapping. */
@supports selector(:has(a)){
 .plan-toggle{position:relative;isolation:isolate;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .plan-toggle:before{content:'';position:absolute;z-index:-1;top:5px;bottom:5px;left:5px;width:calc(50% - 5px);border-radius:40px;background:#080909;box-shadow:0 1px 8px #0004;transition:transform .6s var(--spring)}
 .plan-toggle:has([data-plan=owned][aria-selected=true]):before{transform:translateX(100%)}
 .plan-toggle button[aria-selected=true]{background:transparent;box-shadow:none}
}
/* FAQ: the plus turns into a close mark and the answer opens rather than appearing. */
.faq summary:after{transition:transform .45s var(--spring)}
.faq details[open] summary:after{content:'+';transform:rotate(45deg)}
@supports (interpolate-size:allow-keywords){
 :root{interpolate-size:allow-keywords}
 .faq details::details-content{block-size:0;overflow:clip;transition:block-size .5s var(--spring),content-visibility .5s allow-discrete}
 .faq details[open]::details-content{block-size:auto}
}
/* Dialogs materialise and leave the way they came. */
dialog{opacity:0;transform:scale(.96);transition:opacity .25s ease,transform .5s var(--spring),overlay .5s allow-discrete,display .5s allow-discrete}
dialog[open]{opacity:1;transform:none}
@starting-style{dialog[open]{opacity:0;transform:scale(.96)}}
dialog::backdrop{opacity:0;transition:opacity .3s ease,overlay .3s allow-discrete,display .3s allow-discrete}
dialog[open]::backdrop{opacity:1}
@starting-style{dialog[open]::backdrop{opacity:0}}
/* Tracking in em, not px, so it scales with every clamp() size. Values match the desktop look exactly. */
.wordmark{letter-spacing:-.055em}
.pricing-shell h1{letter-spacing:-.049em}
.plan-price{letter-spacing:-.046em}
.sample-price{letter-spacing:-.048em}
.price-teaser .teaser-price{letter-spacing:-.059em}
.proof-total strong{letter-spacing:-.068em}
.service-pair h3{letter-spacing:-.041em}
.proof blockquote{letter-spacing:-.034em}
.reputation-grid h3{letter-spacing:-.04em}
.capability-grid h3,.benefit-grid h2,.benefit-grid h3{letter-spacing:-.037em}
.quote-total output{letter-spacing:-.042em}
.client-grid .client-type{letter-spacing:-.036em}
.article-list h2{letter-spacing:-.032em}
.prose h2{letter-spacing:-.03em}
.contact-details strong{letter-spacing:-.03em}
@media(max-width:1000px){
 /* Menu drops from the bar it belongs to, as translucent chrome, and returns the same way. */
 .nav nav{background:#101312e0;-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);opacity:0;transform:translateY(-8px);transition:opacity .2s ease,transform .45s var(--spring),display .45s allow-discrete}
 .nav nav.open{opacity:1;transform:none}
 @starting-style{.nav nav.open{opacity:0;transform:translateY(-8px)}}
 /* Legibility floor: nothing below 11px. */
 .stream-heading .kicker,.hero-content .kicker,.pricing-shell .kicker,.proof-heading .kicker{font-size:11px}
 .hero-bottom,.stream-bottom,.proof-total span,.proof-browser,.comparison .optional,.legal-address,.footer-bottom,.footer-bottom button,.journey-number,.proof-caption p,.proof-view,.proof-stepper,.proof-stepper button,.film-dialog .film-note,.journey-note{font-size:11px}
}
/* Reduced motion keeps gentle cross-fades instead of removing all feedback. */
@media(prefers-reduced-motion:reduce){
 *:not(.stream-card),*:before,*:after{transition-property:opacity,color,background-color,border-color!important;transition-duration:.2s!important;transition-timing-function:ease!important}
 .nav nav,dialog,.proof-card{transform:none!important}
}
@media(prefers-reduced-transparency:reduce){
 .nav nav,.hero-bottom button,.stream-bottom button{background:#101312!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
 dialog::backdrop{backdrop-filter:none;background:#000e}
}
@media(prefers-contrast:more){:root{--line:#ffffff66;--muted:#ccd4ce}}

/* Show, don't tell (4 Oct 2026): build types act themselves out; pricing is tapped, not read. */
.build-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px}
.build-card{display:block}
.build-screen{position:relative;margin:0;aspect-ratio:16/9;border-radius:14px;overflow:hidden;background:#1a201c;box-shadow:0 0 0 1px #ffffff1a,0 24px 60px #0006}
.build-screen img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--spring)}
@media(hover:hover){.build-card:hover .build-screen img{transform:scale(1.02)}}
.build-screen figcaption{position:absolute;left:12px;bottom:12px;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#dfe5e0;background:#101312b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:6px 10px;border-radius:20px}
.build-chat,.build-shop{position:absolute;right:4%;bottom:8%;width:min(60%,320px);display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.bub{display:inline-flex;align-items:center;gap:.45em;font-size:clamp(11px,1.15vw,15px);line-height:1.3;padding:.6em .95em;border-radius:16px;background:#101312eb;color:#f6f7f3;box-shadow:0 8px 24px #0007;transform-origin:bottom right;transition:opacity .25s ease,transform .6s var(--spring)}
.bub svg{width:1.15em;height:1.15em;flex:none}
.bub-in,.bub-search{border-bottom-right-radius:5px}
.bub-out{align-self:flex-start;background:var(--mint);color:#102319;border-bottom-left-radius:5px;transform-origin:bottom left}
.bub-done svg,.bub-search svg{color:var(--mint)}
.basket-count{--bc:clamp(17px,1.5vw,20px);position:absolute;left:calc(74.6% - var(--bc)/2);top:calc(4% - var(--bc)/2);display:grid;place-items:center;width:var(--bc);aspect-ratio:1;border-radius:50%;background:var(--mint);color:#102319;font-size:11px;font-weight:700;transition:transform .5s cubic-bezier(.3,1.5,.5,1)}
.build-show.is-live .bub:not(.on){opacity:0;transform:translateY(10px) scale(.96)}
.build-show.is-live .basket-count:not(.on){transform:scale(0)}
.build-card h3{font-size:clamp(24px,2.4vw,34px);font-weight:500;line-height:1.15;letter-spacing:-.035em;margin:24px 0 12px}
.price-show{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:50px;align-items:center;padding-block:80px;border-block:1px solid var(--line)}
.price-panel{min-width:0}
.home-plan{max-width:420px;margin-bottom:30px}
.home-plan button{font-size:15px;padding:13px 16px}
@supports selector(:has(a)){.plan-toggle:has([data-home-plan=owned][aria-selected=true]):before{transform:translateX(100%)}}
.hp-price{font-size:clamp(52px,5vw,68px);font-weight:500;line-height:1;letter-spacing:-.055em;margin:0 0 24px}
.hp-period{font-size:19px;letter-spacing:0;color:var(--muted);margin-left:6px}
.hp-ticks{display:flex;height:26px;max-width:520px;margin-bottom:10px}
.hp-ticks i{flex:1 1 0;margin-right:4px;border-radius:5px;background:var(--mint);transition:flex-grow .6s var(--spring),margin .6s var(--spring),opacity .3s ease}
.hp-ticks i:last-child{margin-right:0}
.hp-panel[data-state=owned] .hp-ticks i{margin-right:0}
.hp-panel[data-state=owned] .hp-ticks i:not(:first-child){flex-grow:0;opacity:0}
.hp-note{font-size:13px;color:var(--muted);margin:0 0 28px}
.hp-panel[data-state=managed] .for-owned,.hp-panel[data-state=owned] .for-managed{display:none}
.hp-includes{list-style:none;padding:0;margin:0 0 30px;max-width:520px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px 18px}
.hp-includes li{display:flex;align-items:center;gap:9px;font-size:14px;color:#dfe5e0;transition:opacity .3s ease}
.hp-includes svg{width:20px;height:20px;flex:none;color:var(--mint)}
.hp-panel[data-state=managed] .inc-owned,.hp-panel[data-state=owned] .inc-managed{opacity:.42}
.hp-panel[data-state=owned][data-care=on] .inc-managed{opacity:1}
.hp-addon{display:none;font-size:19px;letter-spacing:0;color:var(--mint);margin-left:12px;white-space:nowrap}
.hp-panel[data-state=owned][data-care=on] .hp-addon{display:inline}
.for-care,.hp-panel[data-care=on] .for-owned{display:none}
.hp-panel[data-state=owned][data-care=on] .for-care{display:inline}
.hp-care{display:none;align-items:center;gap:14px;max-width:520px;margin:-10px 0 28px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;transition:border-color .3s ease}
.hp-panel[data-state=owned] .hp-care{display:flex}
.hp-panel[data-care=on] .hp-care{border-color:color-mix(in srgb,var(--mint) 45%,transparent)}
.hp-switch{flex:none;position:relative;width:46px;height:26px;padding:0;border:0;border-radius:20px;background:#ffffff26;cursor:pointer;transition:background .3s ease}
.hp-switch:focus-visible{outline:2px solid var(--mint);outline-offset:3px}
.hp-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#f6f7f3;transition:transform .35s var(--spring),background .3s ease}
.hp-switch[aria-checked=true]{background:var(--mint)}
.hp-switch[aria-checked=true] .hp-knob{transform:translateX(20px);background:#0b1f14}
.hp-care label{display:flex;flex-direction:column;gap:3px;font-size:14px;cursor:pointer}
.hp-care label span{font-size:12.5px;color:var(--muted)}
@media(max-width:1000px){
 .build-pair,.price-show{grid-template-columns:minmax(0,1fr)}
 .build-pair{gap:48px}
 .price-show{gap:28px;padding-block:55px}
 .price-show h2{font-size:44px}
 .home-plan{max-width:none}
 .build-chat,.build-shop{width:80%;bottom:6%}
 .build-screen figcaption{top:10px;bottom:auto;left:10px;padding:5px 9px}
}
@media(prefers-reduced-motion:reduce){.basket-count{transform:none!important}}

/* Revisions, 4 Oct 2026 (George's four notes). */
/* 1. Brand tokens: mint-deep is the afullerlifeai brand mint; the ribbons now use only brand colours. */
:root{--mint-deep:#5bd0b0;--mint-hover:#d6f9e3;--on-mint:#0b1f14}
/* 2. One primary CTA: brand mint, same radius, padding, hover and focus everywhere. */
.button-primary.button-primary{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 27px;border:0;border-radius:50px;background:var(--mint);color:var(--on-mint);font-weight:600;text-align:center}
.button-primary.button-primary:hover{background:var(--mint-hover);color:var(--on-mint)}
.button-primary.button-primary:focus-visible{outline:2px solid var(--fg);outline-offset:4px}
.nav nav .nav-cta.button-primary{padding:0 27px}
.plan-action.button-primary{display:flex;width:100%}
@media(max-width:760px){.button-primary.button-primary{min-height:50px;padding:0 24px}.nav nav .nav-cta.button-primary{padding:0 24px}}
/* 3. Hero stream: slower loop, wider front spacing (keyframes are generated in build.py). */
.stream-card{animation-duration:16.8s;animation-delay:calc(var(--i) * -2.4s - var(--lag,0s));will-change:transform,opacity}
.stream-right{--lag:.8s}
.stream-vignette{background:linear-gradient(#101312 0%,#101312e8 14%,transparent 34%,transparent 74%,#101312ed 90%,#101312),radial-gradient(ellipse at 50% 50%,transparent 55%,#10131233 100%)}
@media(max-width:760px){
 .stream-perspective{left:0;right:0;perspective-origin:12% 55%}
 .stream-card{left:12%;width:40cqw;height:22.5cqw;margin-left:-20cqw;margin-top:-11.25cqw}
 .stream-left{display:none}
 .stream-right{animation-name:stream-solo;--lag:0s}
 .stream-vignette{background:linear-gradient(#101312 0%,#101312ee 23%,transparent 40%,transparent 66%,#101312f0 82%,#101312)}
}
/* 4. Story-style progress: finished chapters stay full, the current one fills, the rest wait. */
.mock-journey .journey-steps button .journey-meter{transform:scaleX(var(--tour-progress,0))}

/* Review management, shown as it happens (5 Oct 2026). Without JS or with reduced motion, the full story shows. */
.review-flow{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:20px 56px;align-items:center;margin-top:44px}
.rf-steps{list-style:none;margin:0;padding:0}
.rf-steps button{position:relative;display:flex;gap:18px;width:100%;padding:20px 0;border:0;border-bottom:1px solid #ffffff16;background:none;color:#849389;font:inherit;text-align:left;cursor:pointer;transition:color .25s}
.rf-steps button[aria-pressed=true],.rf-steps button.is-done{color:var(--fg)}
.rf-num{padding-top:4px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.rf-text strong{display:block;font-size:clamp(20px,2vw,26px);font-weight:500;letter-spacing:-.02em}
.rf-text span{display:block;margin-top:4px;font-size:14px;line-height:1.5;color:var(--muted)}
.rf-meter{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--mint);transform:scaleX(0);transform-origin:left}
.rf-steps .is-done .rf-meter{transform:scaleX(1)}
.rf-steps .is-active .rf-meter{transform:scaleX(1);transition:transform var(--rf-dur,2.4s) linear}
.rf-stage{display:flex;flex-direction:column;gap:12px;padding:22px;border-radius:18px;background:#1a201c;box-shadow:0 0 0 1px #ffffff14,0 24px 60px #0006}
.rf-card{padding:14px 16px;border-radius:14px;background:#101312;box-shadow:0 0 0 1px #ffffff10;transition:opacity .3s ease,transform .6s var(--spring)}
.review-flow.is-live .rf-card:not(.on){opacity:0;transform:translateY(12px) scale(.98)}
.rf-card svg{flex:none}
.rf-job{display:flex;align-items:center;gap:12px}
.rf-job>svg{width:22px;height:22px;color:var(--mint)}
.rf-job strong{display:block;font-size:15px;font-weight:500}
.rf-job div span{font-size:13px;color:var(--muted)}
.rf-chip{display:inline-flex;align-items:center;gap:5px;margin-left:auto;padding:5px 10px;border:1px solid var(--line);border-radius:20px;font-size:12px;font-style:normal;color:var(--muted);transition:background-color .3s ease .5s,color .3s ease .5s,border-color .3s ease .5s}
.rf-chip svg{width:14px;height:14px}
.rf-job.on .rf-chip,.review-flow:not(.is-live) .rf-chip{background:var(--mint);border-color:transparent;color:var(--on-mint)}
.rf-from{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.rf-card p{margin:8px 0 0;font-size:15px;line-height:1.45;color:#dfe5e0}
.rf-link{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:7px 12px;border-radius:20px;background:var(--mint);color:var(--on-mint);font-size:13px;font-weight:600}
.rf-link svg,.rf-stars svg{width:14px;height:14px}
.rf-review-head{display:flex;align-items:center;gap:10px}
.rf-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#2c3530;font-weight:600}
.rf-review-head strong{display:block;font-size:14px;font-weight:500}
.rf-stars{display:inline-flex;gap:1px;margin-top:2px;color:#f2c94c}
.rf-review.on .rf-stars svg{animation:rf-star .45s cubic-bezier(.3,1.5,.5,1) both}
.rf-review.on .rf-stars svg:nth-child(2){animation-delay:.08s}.rf-review.on .rf-stars svg:nth-child(3){animation-delay:.16s}.rf-review.on .rf-stars svg:nth-child(4){animation-delay:.24s}.rf-review.on .rf-stars svg:nth-child(5){animation-delay:.32s}
@keyframes rf-star{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
.rf-tag{margin-left:auto;font-size:12px;color:var(--muted)}
.rf-actions{display:flex;align-items:center;gap:14px;margin-top:12px}
.rf-approve{display:inline-flex;align-items:center;min-height:34px;padding:0 16px;border-radius:20px;background:var(--mint);color:var(--on-mint);font-size:13px;font-weight:600;transition:transform .2s var(--spring),opacity .3s ease}
.rf-approve.press{transform:scale(.92)}
.rf-actions:has(.rf-posted.on) .rf-approve{opacity:.35}
.rf-posted{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--mint);transition:opacity .3s ease,transform .5s var(--spring)}
.rf-posted svg{width:16px;height:16px}
.review-flow.is-live .rf-posted:not(.on){opacity:0;transform:translateX(-6px)}
.rf-note{grid-column:2;margin:0;font-size:12px;color:var(--muted)}
.rf-more{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:16px 32px;margin-top:44px;padding-top:28px;border-top:1px solid var(--line);font-size:14px;color:var(--muted)}
.rf-more span a{color:var(--fg);text-decoration:underline;text-underline-offset:4px}
@media(max-width:1000px){
 .review-flow{grid-template-columns:minmax(0,1fr);gap:24px}
 .rf-note{grid-column:1}
 .rf-steps button{padding:14px 0;gap:14px}
 .rf-text span{display:none}
 .rf-stage{padding:14px;gap:10px}
 .rf-card{padding:12px 14px}
 .rf-card p{font-size:14px}
}
@media(prefers-reduced-motion:reduce){.rf-review.on .rf-stars svg{animation:none}}

/* Sticky, translucent nav (5 Oct 2026). Content scrolls under a blurred layer; the hairline appears only once it does. */
:root{--nav-h:102px}
.nav{position:sticky;top:0;z-index:50;background:#101312b8;-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);border-bottom-color:transparent;transition:border-color .3s ease,background-color .3s ease}
.is-scrolled .nav{border-bottom-color:var(--line)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.nav{background:#101312f5}}
[id]{scroll-margin-top:calc(var(--nav-h) + 12px)}
.is-pinned .proof-sticky{top:var(--nav-h);height:calc(100svh - var(--nav-h))}
@media(max-width:1000px){:root{--nav-h:82px}}
@media(prefers-reduced-transparency:reduce){.nav{background:#101312;-webkit-backdrop-filter:none;backdrop-filter:none}}

/* Business websites page (5 Oct 2026): one real build doing four jobs, the build track, real builds. */
.jobs{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.6fr);gap:40px;align-items:center}
.jobs-tabs{display:flex;flex-direction:column}
.jobs-tabs button{position:relative;display:flex;align-items:flex-start;gap:14px;width:100%;padding:18px 0;border:0;border-bottom:1px solid #ffffff16;background:none;color:#849389;font:inherit;text-align:left;cursor:pointer;transition:color .25s}
.jobs-tabs button[aria-selected=true]{color:var(--fg)}
.job-icon{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:#1a201c;color:var(--muted);transition:background-color .3s,color .3s}
.job-icon svg{width:18px;height:18px}
.jobs-tabs [aria-selected=true] .job-icon{background:var(--mint);color:var(--on-mint)}
.job-text strong{display:block;font-size:20px;font-weight:500;letter-spacing:-.02em}
.job-text span{display:block;margin-top:3px;font-size:14px;line-height:1.5;color:var(--muted)}
.jobs-tabs .is-done .rf-meter{transform:scaleX(1)}
.jobs-tabs .is-active .rf-meter{transform:scaleX(1);transition:transform var(--rf-dur,5s) linear}
.jobs-overlay{position:absolute;right:4%;bottom:8%;width:min(56%,340px)}
.job-panel{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.job-panel[hidden]{display:none}
.job-panel .bub-out{align-self:flex-start}
.job-card{align-self:stretch;padding:14px 16px;border-radius:16px;background:#101312eb;box-shadow:0 8px 24px #0007;transform-origin:bottom right;transition:opacity .25s ease,transform .6s var(--spring)}
.job-line{display:block;margin-top:6px;font-size:15px;font-weight:500}
.job-chip{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:5px 10px;border:1px solid var(--line);border-radius:20px;font-size:12px;color:var(--muted);transition:background-color .3s,color .3s,border-color .3s}
.job-chip svg{width:14px;height:14px}
.job-chip.on,.job-slots .job-pick.on{background:var(--mint);border-color:transparent;color:var(--on-mint)}
.job-price{display:block;margin-top:10px;font-size:34px;font-weight:500;letter-spacing:-.04em}
.job-slots{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.job-slots span{padding:7px 11px;border:1px solid var(--line);border-radius:10px;font-size:13px;transition:background-color .3s,color .3s,border-color .3s}
.job-confirm{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:13px;color:var(--mint);transition:opacity .25s ease,transform .6s var(--spring)}
.job-confirm svg{width:16px;height:16px}
.job-card p{margin:8px 0 0;font-size:14px;color:#dfe5e0}
.jobs.is-live .job-panel :is(.bub,.job-card,.job-confirm)[data-s]:not(.on){opacity:0;transform:translateY(10px) scale(.97)}
.jobs-note{margin:16px 0 0;font-size:12px;color:var(--muted)}
.build-track ol{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin:44px 0 0;padding:0;list-style:none}
.build-track ol:before,.build-track ol:after{content:'';position:absolute;left:0;right:0;top:21px;height:2px;background:#ffffff16}
.build-track ol:after{background:var(--mint);transform:scaleX(0);transform-origin:left;transition:transform 1.6s var(--spring)}
.build-track.in-view ol:after,.build-track:not(.is-live) ol:after{transform:scaleX(1)}
.build-track li{position:relative}
.track-dot{position:relative;z-index:1;display:grid;place-items:center;width:44px;height:44px;border:2px solid #ffffff22;border-radius:50%;background:#1a201c;font-size:13px;font-variant-numeric:tabular-nums;transition:background-color .3s,border-color .3s,color .3s}
.build-track.in-view .track-dot,.build-track:not(.is-live) .track-dot{background:var(--mint);border-color:transparent;color:var(--on-mint)}
.build-track li:nth-child(2) .track-dot{transition-delay:.5s}.build-track li:nth-child(3) .track-dot{transition-delay:1s}
.build-track strong{display:block;margin-top:20px;font-size:22px;font-weight:500;letter-spacing:-.02em}
.build-track li p{max-width:300px;margin:8px 0 0;font-size:15px;line-height:1.6;color:var(--muted)}
.site-builds-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.site-builds-grid a{display:block}
.site-builds-grid img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top;border-radius:12px;box-shadow:0 0 0 1px #ffffff14;transition:transform .6s var(--spring)}
@media(hover:hover){.site-builds-grid a:hover img{transform:scale(1.02)}}
.site-builds-grid span{display:flex;flex-direction:column;gap:2px;margin-top:12px;font-size:13px;color:var(--muted)}
.site-builds-grid strong{font-size:16px;font-weight:500;color:var(--fg)}
@media(max-width:1000px){
 .jobs{grid-template-columns:minmax(0,1fr);gap:18px}
 .jobs-tabs{flex-direction:row}
 .jobs-tabs button{flex:1;flex-direction:column;align-items:center;gap:8px;padding:10px 0 12px;text-align:center}
 .job-text strong{font-size:13px;letter-spacing:0}
 .job-text span{display:none}
 .jobs-overlay{width:82%;bottom:6%}
 .jobs-screen{aspect-ratio:4/3}
 .jobs-screen img{object-position:18% top}
 .job-card{padding:10px 12px}
 .job-price{font-size:26px}
 .job-slots span{padding:5px 8px;font-size:12px}
 .build-track ol{grid-template-columns:minmax(0,1fr);gap:26px}
 .build-track ol:before,.build-track ol:after{left:21px;right:auto;top:0;bottom:0;width:2px;height:auto}
 .build-track ol:after{transform:scaleY(0);transform-origin:top}
 .build-track.in-view ol:after,.build-track:not(.is-live) ol:after{transform:scaleY(1)}
 .build-track li{padding-left:64px}
 .track-dot{position:absolute;left:0;top:0}
 .build-track strong{margin-top:8px;font-size:20px}
 .site-builds-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
}
.job-card .rf-stars svg{fill:currentColor;stroke:none}
/* Online stores page (5 Oct 2026): search results inside the job overlay; real-builds grid takes its column count from the page. */
.site-builds-grid{grid-template-columns:repeat(var(--cols,4),minmax(0,1fr))}
.job-results{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.job-results span{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;font-size:13px;transition:background-color .3s,color .3s,border-color .3s}
.job-results svg{width:16px;height:16px;flex:none;color:var(--muted)}
.job-results em{margin-left:auto;font-size:11px;font-style:normal;font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:0;transition:opacity .3s}
.job-results .job-pick.on{background:var(--mint);border-color:transparent;color:var(--on-mint)}
.job-results .job-pick.on svg{color:var(--on-mint)}
.job-results .job-pick.on em{opacity:1}
@media(max-width:1000px){.site-builds-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job-results span{padding:5px 8px;font-size:12px}}
/* Instant quotes page (5 Oct 2026): overlay on the left so J&L's real instant quote stays visible on the right. */
.jobs-left .jobs-overlay{left:4%;right:auto}
.jobs-left .job-panel{align-items:flex-start}
.jobs-left figcaption{top:12px;bottom:auto}
.job-results b{font-weight:400}
.quote-try{margin-top:20px}
/* AI receptionist page (5 Oct 2026): the morning handover card. */
.handover-section{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:56px;align-items:center}
.handover-copy p:not(.kicker){max-width:380px;font-size:17px;line-height:1.6;color:var(--muted)}
.handover{padding:22px;border-radius:18px;background:#1a201c;box-shadow:0 0 0 1px #ffffff14,0 24px 60px #0006}
.handover-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.handover-head span:first-child{display:inline-flex;align-items:center;gap:8px;color:var(--fg)}
.handover-head svg{width:16px;height:16px;color:var(--mint)}
.handover ol{margin:0;padding:0;list-style:none}
.handover li{display:grid;grid-template-columns:44px 34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid #ffffff10;transition:opacity .4s ease,transform .6s var(--spring)}
.handover li:last-child{border-bottom:0}
.handover time{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.handover-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#101312;color:var(--mint)}
.handover-icon svg{width:17px;height:17px}
.handover-text{display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--muted)}
.handover-text strong{font-size:15px;font-weight:500;color:var(--fg)}
.handover em{padding:5px 10px;border-radius:20px;background:var(--mint);color:var(--on-mint);font-size:11px;font-style:normal;font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.handover-note{margin:12px 0 0;font-size:12px;color:var(--muted)}
.handover-section.is-live:not(.in-view) li{opacity:0;transform:translateY(10px)}
.handover-section li:nth-child(2){transition-delay:.15s}.handover-section li:nth-child(3){transition-delay:.3s}
@media(max-width:1000px){
 .handover-section{grid-template-columns:minmax(0,1fr);gap:28px}
 .handover{padding:16px}
 .handover li{grid-template-columns:40px 30px minmax(0,1fr);gap:10px}
 .handover em{grid-column:3;justify-self:start}
 .handover-icon{width:30px;height:30px}
}
/* Industry and location pages (5 Oct 2026): the six points as a compact icon list. */
.points-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 32px;margin:0;padding:0;list-style:none}
.points-grid li{display:flex;gap:14px;align-items:flex-start}
.points-grid .job-icon{background:#1a201c;color:var(--mint)}
.points-grid h2{margin:6px 0 6px;font-size:18px;font-weight:500;line-height:1.3;letter-spacing:-.01em}
.points-grid p{margin:0;font-size:14px;line-height:1.6;color:var(--muted)}
@media(max-width:1000px){.points-grid{grid-template-columns:minmax(0,1fr);gap:22px}}

/* Logo pack on the site (5 Oct 2026): real lockup in the nav and footer, mark only once you scroll, footer watermark. */
.wordmark{position:relative;display:inline-flex;align-items:center}
.wordmark img{display:block;width:auto;transition:opacity .3s ease,transform .45s var(--spring)}
.wordmark-full{height:28px}
.wordmark-mark{position:absolute;left:0;top:50%;height:30px;opacity:0;transform:translateY(-50%) scale(.85);pointer-events:none}
.is-scrolled .nav .wordmark-full{opacity:0;transform:scale(.96);transform-origin:left center}
.is-scrolled .nav .wordmark-mark{opacity:1;transform:translateY(-50%) scale(1)}
footer{position:relative;overflow:hidden}
footer>.wrap{position:relative}
footer .wordmark-full{height:30px}
.footer-watermark{position:absolute;left:-170px;bottom:-230px;width:560px;height:auto;opacity:.07;pointer-events:none;user-select:none}
@media(max-width:1000px){
 .wordmark-full{height:24px}
 .wordmark-mark{height:26px}
 footer .wordmark-full{height:26px}
 .footer-watermark{width:340px;left:auto;right:-110px;bottom:-120px}
}
@media(prefers-reduced-motion:reduce){.wordmark img{transform:none!important}}
/* Five-column footer (10 Oct 2026): brand plus four headed link groups. */
.footer-top{grid-template-columns:1.35fr repeat(4,minmax(0,1fr));gap:40px}
.footer-links{align-content:start}
.footer-head{margin:0 0 6px!important;font-size:11px!important;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#f6f7f3!important}
@media(max-width:1100px){.footer-top{grid-template-columns:repeat(4,minmax(0,1fr));gap:45px 30px}.footer-top>div:first-child{grid-column:1/-1}}
@media(max-width:760px){.footer-top{grid-template-columns:1fr 1fr;gap:40px 25px}}
/* Google reviews carousel (10 Oct 2026): white cards in Google's own format, so it is clear where the reviews come from. */
.g-reviews .section-head{align-items:end}
.g-summary{display:flex;align-items:center;gap:12px;padding:12px 18px;border:1px solid var(--line);border-radius:14px;flex:none}
.g-summary .g-logo{width:30px;height:30px}
.g-summary strong{display:block;font-size:15px;font-weight:600}
.g-summary span{font-size:12.5px;color:var(--muted)}
.g-rail{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 48px)/3);gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;overscroll-behavior-x:contain;scrollbar-width:none;align-items:start}
.g-rail::-webkit-scrollbar{display:none}
.g-rail:focus-visible{outline:2px solid var(--mint);outline-offset:6px}
.g-card{scroll-snap-align:start;display:flex;flex-direction:column;gap:14px;padding:24px;border-radius:16px;background:#fff;color:#202124;font-family:Roboto,DM,Arial,sans-serif}
.g-card header{display:flex;align-items:center;gap:12px}
.g-card .g-avatar{flex:none;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--c);color:#fff;font-size:17px;font-weight:500}
.g-card header strong{display:block;font-size:15px;font-weight:500}
.g-card header div span{display:block;font-size:13px;color:#5f6368}
.g-card header .g-logo{width:22px;height:22px;margin-left:auto;flex:none}
.g-rating{display:flex;gap:2px;color:#fbbc04}
.g-rating svg{width:18px;height:18px}
.g-text{margin:0;font-size:15px;line-height:1.6;color:#3c4043;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.g-card.is-open .g-text{display:block}
.g-more{align-self:flex-start;margin-top:-6px;padding:0;border:0;background:none;color:#1a73e8;font-size:14px;font-weight:500}
.g-more:focus-visible{outline-offset:3px}
.g-foot{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:30px}
.g-foot .founder-strip{margin:0}
.g-controls{display:flex;gap:10px}
.g-controls button{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--fg);font-size:18px;transition:background .2s,border-color .2s,opacity .2s}
.g-controls button:hover{border-color:var(--mint)}
.g-controls button:disabled{opacity:.35;cursor:default}
@media(max-width:1000px){.g-rail{grid-auto-columns:calc((100% - 24px)/2)}}
@media(max-width:760px){.g-reviews .section-head{flex-direction:column;align-items:start;gap:22px}.g-rail{grid-auto-columns:86%;gap:16px}.g-foot{flex-direction:column-reverse;align-items:start}}
/* GuestAgentics page (11 Oct 2026): the working demo is the hero. The screen fills most of the viewport,
   and our messages play inside the site's own chat card, so it reads as the product working. */
.ga-hero{padding-top:28px;padding-bottom:30px}
.ga-hero-head{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:40px;align-items:end;margin-bottom:22px}
.ga-hero .kicker{margin-bottom:12px}
.ga-hero h1{margin:0;font-size:clamp(34px,3.5vw,56px);font-weight:500;line-height:1.02;letter-spacing:-.06em}
.ga-hero-head p:not(.kicker){margin:0 0 14px;font-size:15px;line-height:1.6;color:var(--muted);max-width:480px}
.ga-actions{display:flex;flex-wrap:wrap;align-items:center;gap:22px}
.ga-actions .button{min-height:46px;padding:12px 22px}
.jobs-hero{grid-template-columns:minmax(0,1fr);gap:0}
.jobs-hero .jobs-screen{order:1;width:min(100%,calc((100svh - 330px)*16/9));min-width:min(100%,760px);margin-inline:auto;border-radius:18px;box-shadow:0 0 0 1px #ffffff1a,0 40px 100px #000a}
.jobs-hero .jobs-tabs{order:2;flex-direction:row;width:min(100%,calc((100svh - 330px)*16/9));min-width:min(100%,760px);margin:18px auto 0;gap:24px}
.jobs-hero .jobs-tabs button{flex:1;padding:14px 0}
.jobs-hero .job-text strong{font-size:17px}
.jobs-hero .job-text span{font-size:13px}
.ga-hero .jobs-note{text-align:center}
@media(min-width:1001px){
 .jobs-hero .jobs-overlay{right:5.9%;top:29.3%;bottom:auto;width:38%;height:35.4%;padding:5% 2.5% 0;border-radius:2.4% / 4.3%;background:#18161f;display:flex;flex-direction:column}
 .jobs-hero .job-panel{gap:10px}
 .jobs-hero .job-card{padding:0;background:none;box-shadow:none;border-radius:0}
 .jobs-hero .job-card .rf-from{margin-bottom:4px}
 .jobs-hero .job-panel .bub{font-size:clamp(12px,1vw,15px)}
}
.ga-roles{padding-bottom:0}
.ga-roles h2{margin:0}
@media(max-width:1000px){.ga-hero-head{grid-template-columns:minmax(0,1fr);gap:16px}.jobs-hero .jobs-screen,.jobs-hero .jobs-tabs{width:100%;min-width:0}.jobs-hero .jobs-tabs{gap:0}.jobs-hero .jobs-tabs button{padding:10px 0 12px}}
/* Nav dropdowns (11 Oct 2026), on the Vox4 pattern: a button opens a panel of links with one-line descriptions. */
.dd{position:relative}
.dd__btn{display:inline-flex;align-items:center;gap:6px;padding:10px 0;border:0;background:none;color:#c6cec8;font:inherit;font-size:14px;cursor:pointer;transition:color .2s}
.dd__btn:hover,.dd__btn[aria-expanded=true],.dd__btn.is-current{color:var(--mint)}
.dd__btn svg{width:12px;height:12px;transition:transform .35s var(--spring)}
.dd__btn[aria-expanded=true] svg{transform:rotate(180deg)}
.dd__menu{position:absolute;top:calc(100% + 16px);left:50%;z-index:60;width:620px;display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:10px;border-radius:18px;background:#161b18;box-shadow:0 0 0 1px #ffffff14,0 30px 70px #000b;visibility:hidden;opacity:0;transform:translate(-50%,-6px);transition:opacity .15s ease,transform .15s ease,visibility 0s .15s}
.dd__menu[data-open=true]{visibility:visible;opacity:1;transform:translate(-50%,0);transition:opacity .18s ease,transform .35s var(--spring),visibility 0s}
.dd__menu--narrow{width:400px;grid-template-columns:1fr}
.nav nav .dd__menu a{display:grid;gap:3px;padding:11px 12px;border-radius:12px;color:var(--fg);font-size:14px;font-weight:500;transition:background-color .15s,color .15s}
.nav nav .dd__menu a span{font-size:12.5px;font-weight:400;line-height:1.4;color:var(--muted)}
.nav nav .dd__menu a:hover{background:#ffffff0f}
.nav nav .dd__menu a[aria-current]{color:var(--mint)}
.nav nav .dd__menu .dd__feature{grid-column:1/-1;margin-top:6px;padding-top:14px;border-top:1px solid var(--line);border-radius:0 0 12px 12px}
.dd__areas{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:6px 0 0;padding:14px 12px 6px;border-top:1px solid var(--line)}
.dd__areas>span{font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.nav nav .dd__areas a{display:inline;padding:0;font-size:13.5px;font-weight:400;color:#c6cec8}
.nav nav .dd__areas a:hover{background:none;color:var(--mint)}
@media(max-width:760px){
 .nav nav{max-height:calc(100svh - 82px);overflow-y:auto;background:#101312}
 .nav nav .dd__menu a{color:#c6cec8}
 .dd{width:100%}
 .dd__btn{width:100%;justify-content:space-between;padding:17px 0;font-size:20px;color:var(--fg)}
 .dd__btn svg{width:16px;height:16px}
 .dd__menu,.dd__menu--narrow{position:static;width:auto;display:none;grid-template-columns:1fr;padding:0 0 12px;border-radius:0;background:none;box-shadow:none;visibility:visible;opacity:1;transform:none}
 .dd__menu[data-open=true]{display:grid;transform:none}
 .nav nav .dd__menu a{padding:10px 0;font-size:16px}
 .nav nav .dd__menu a span{display:none}
 .nav nav .dd__menu .dd__feature{padding-top:14px;border-radius:0}
 .dd__areas{padding:14px 0 4px}
}
/* Build tiles (11 Oct 2026): each build in a browser frame with its address, a full 16:9 screenshot and a visit link. */
.build-tiles{display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));gap:28px}
.build-tile{display:flex;flex-direction:column;border-radius:16px;overflow:hidden;background:#161b18;box-shadow:0 0 0 1px #ffffff14;transition:transform .6s var(--spring),box-shadow .3s ease}
.bt-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#1d2320;border-bottom:1px solid #ffffff0f}
.bt-bar i{width:8px;height:8px;border-radius:50%;background:#ffffff24}
.bt-bar em{margin-left:8px;overflow:hidden;font-size:11.5px;font-style:normal;color:#98a59b;white-space:nowrap;text-overflow:ellipsis}
.bt-shot{display:block;aspect-ratio:16/9;overflow:hidden;background:#101312}
.bt-shot img{display:block;width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .8s var(--spring)}
.bt-cap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px 18px}
.bt-cap strong{display:block;font-size:16px;font-weight:500;color:var(--fg)}
.bt-cap small{display:block;margin-top:3px;font-size:13px;color:var(--muted)}
.bt-go{flex:none;font-size:13px;color:var(--mint);white-space:nowrap}
div.build-tile .bt-go{color:var(--muted)}
@media(hover:hover){a.build-tile:hover{transform:translateY(-4px);box-shadow:0 0 0 1px #bdf4d140,0 24px 50px #0008}a.build-tile:hover .bt-shot img{transform:scale(1.03)}}
@media(max-width:1000px){.build-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
@media(max-width:760px){.build-tiles{grid-template-columns:minmax(0,1fr)}}
/* Featured build: a full-width tile that leads the grid, screenshot left and caption right. */
.build-tile--feature{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);grid-template-rows:auto 1fr}
.build-tile--feature .bt-bar{grid-column:1;grid-row:1}
.build-tile--feature .bt-shot{grid-column:1;grid-row:2}
.build-tile--feature .bt-cap{grid-column:2;grid-row:1/3;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:18px;padding:32px}
.build-tile--feature .bt-cap strong{font-size:clamp(26px,2.4vw,36px);letter-spacing:-.03em}
.build-tile--feature .bt-cap small{font-size:15px}
.build-tile--feature .bt-go{font-size:15px}
@media(max-width:760px){.build-tile--feature{display:flex}.build-tile--feature .bt-cap{flex-direction:row;align-items:center;padding:16px 18px 18px}.build-tile--feature .bt-cap strong{font-size:16px}.build-tile--feature .bt-cap small,.build-tile--feature .bt-go{font-size:13px}}
/* Desktop dropdowns open on hover (George, 11 Oct): the button is a label, not a toggle. A bridge covers the gap so the pointer can cross to the menu. */
@media(hover:hover) and (min-width:761px){
 .dd__btn{cursor:default}
 .dd__menu:before{content:'';position:absolute;left:0;right:0;top:-18px;height:18px}
}
/* Curved hero row (11 Oct 2026): port of TiltedGridHero. The band is its own size container, so cqh and cqw follow the hero. */
.tilt-band{position:absolute;inset:0;container-type:size;pointer-events:none;opacity:0;transition:opacity .5s ease}
.tilt-band.is-ready{opacity:1}
.tilt-layer{position:absolute;inset:0}
.tilt-tile{position:absolute;transform-style:preserve-3d}
.tilt-strip{position:absolute;top:0;overflow:hidden;background:#171c19}
.tilt-strip:first-child{border-radius:8px 0 0 8px}
.tilt-strip:last-child{border-radius:0 8px 8px 0}
.tilt-strip img{position:absolute;top:0;max-width:none;object-fit:cover;object-position:top}
.stream-hero.is-paused .tilt-tile{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.tilt-tile{animation-play-state:paused}}
.tilt-hero .stream-vignette{background:linear-gradient(#101312 0%,#101312d9 13%,transparent 30%,transparent 82%,#101312e0 97%)}
.tilt-hero .hero-ribbons{opacity:.4}
/* Our story timeline (11 Oct 2026): pinned section, sideways track, stems and copy revealed by scroll (site.js sets --p, --s, --t). */
.story{position:relative;height:calc(100vh + var(--shift));background:var(--bg)}
.story-pin{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}
.story-slider{display:flex;align-items:center;gap:5vw;height:30vw;padding:0 5vw;will-change:transform}
.story-media{flex:none;display:grid;grid-template-columns:1fr 1fr;width:30vw;height:100%;border-radius:1vw;overflow:hidden}
.story-media img{width:100%;height:100%;object-fit:cover;filter:saturate(.7)}
.story-track{position:relative;flex:none;width:calc(20vw + var(--track));height:100%}
.story-title{position:absolute;left:0;top:2vw;margin:0;font-size:clamp(34px,3vw,56px);line-height:.98}
.story-period{position:absolute;left:0;bottom:2vw;margin:0;font-size:clamp(16px,1.5vw,26px);color:var(--muted)}
.story-axis{position:absolute;left:0;right:0;top:49%;display:flex;align-items:center}
.story-axis i{flex:none;width:.8vw;height:.8vw;border-radius:50%;background:var(--mint)}
.story-line{flex:1;height:1px;background:var(--mint);transform-origin:left;transform:scaleX(var(--p,0))}
.story-items{position:absolute;inset:0 0 0 20vw;margin:0;padding:0;list-style:none}
.story-item{position:absolute;left:var(--x);width:28vw;height:50%;--s:0;--t:0}
.story-item.top{top:0}
.story-item.bottom{top:50%}
.story-stem{position:absolute;left:0;width:1px;height:94%;background:var(--mint);transform:scaleY(var(--s))}
.top .story-stem{bottom:0;transform-origin:bottom}
.bottom .story-stem{top:0;transform-origin:top}
.story-knot{position:absolute;left:0;width:1vw;height:1vw;margin-left:-.5vw;border-radius:50%;background:var(--mint);transform:scale(var(--s))}
.top .story-knot{top:6%;margin-top:-.5vw}
.bottom .story-knot{bottom:6%;margin-bottom:-.5vw}
.story-copy{position:absolute;left:2.4vw;right:0;display:grid;gap:.8vw}
.top .story-copy{top:4%}
.bottom .story-copy{bottom:4%}
.story-copy h3,.story-copy p{margin:0;overflow:hidden}
.story-copy span{display:block;transform:translateY(calc((1 - var(--t)) * 105%))}
.story-copy h3{font-size:clamp(20px,2.1vw,38px);font-weight:500;letter-spacing:-.03em;line-height:1.05}
.story-copy p{font-size:clamp(14px,1.25vw,22px);line-height:1.25;color:var(--muted)}
.story-copy p span{transition-delay:.05s}
@media(prefers-reduced-motion:reduce){.story-item{--s:1!important;--t:1!important}}
@media(max-width:760px){
 .story{height:auto;padding:60px 0}
 .story-pin{position:static;height:auto;display:block;overflow:visible}
 .story-slider{flex-direction:column;align-items:stretch;height:auto;gap:28px;padding:0 6%;transform:none!important}
 .story-media{width:100%;height:auto;aspect-ratio:2/1;border-radius:16px}
 .story-track{width:auto;height:auto}
 .story-title{position:static;font-size:38px}
 .story-period{position:static;margin-top:8px;font-size:15px}
 .story-axis{display:none}
 .story-items{position:static;margin-top:28px;border-left:1px solid var(--mint);padding-left:22px;display:grid;gap:30px}
 .story-item,.story-item.top,.story-item.bottom{position:relative;top:auto;left:auto;width:auto;height:auto;--s:1;--t:1}
 .story-stem{display:none}
 .story-knot,.top .story-knot,.bottom .story-knot{left:-22px;top:6px;bottom:auto;width:11px;height:11px;margin:0 0 0 -6px}
 .story-copy,.top .story-copy,.bottom .story-copy{position:static;gap:6px}
 .story-copy h3{font-size:24px}.story-copy p{font-size:16px}
}


/* Fuller Bars logo (14 Oct 2026). Live text, one weight per letter; weight is the only thing that moves. */
.fl-logo{gap:.34em;line-height:1;font-size:27px;letter-spacing:-.02em}
.fl-logo .fl-bars{height:.72em;width:auto;flex:none;overflow:visible;fill:var(--fg);transition:transform .45s var(--spring);transform-origin:left center}
.fl-logo .fl-bars .fl-full{fill:var(--mint)}
.fl-logo .fl-wm{display:inline-flex;white-space:nowrap;transition:opacity .3s ease}
.fl-logo .fl-wm span{display:inline-block;color:var(--fg)}
.fl-logo .fl-wm .fl-ai{color:var(--mint)}
.is-scrolled .nav .fl-collapsible .fl-wm{opacity:0;pointer-events:none}
.is-scrolled .nav .fl-collapsible .fl-bars{transform:scale(1.3)}
footer .fl-logo{font-size:29px}
svg.footer-watermark{fill:var(--fg);overflow:visible;width:430px;left:-150px;bottom:-250px;opacity:.035}
@media(max-width:760px){svg.footer-watermark{width:260px;left:auto;right:-90px;bottom:-120px}}
@media(max-width:760px){.fl-logo{font-size:24px}footer .fl-logo{font-size:26px}}
@media(prefers-reduced-motion:reduce){.fl-logo .fl-bars,.fl-logo .fl-wm{transition:none}}

/* Enquiry form on /contact. Inherits the page's dark surface; inputs follow the
   same treatment as the quote calculator so the two feel like one system. */
.enquiry-form{display:grid;gap:14px;margin-top:28px;padding-top:24px;border-top:1px solid var(--line,#24272B)}
.enquiry-form label{display:grid;gap:6px;font-size:.82rem;letter-spacing:.02em;color:var(--muted,#9A958C)}
.enquiry-form .opt{opacity:.6;font-weight:400}
.enquiry-form input,.enquiry-form textarea{
  font:inherit;font-size:1rem;color:inherit;background:rgba(255,255,255,.04);
  border:1px solid var(--line,#24272B);border-radius:10px;padding:12px 14px;width:100%}
.enquiry-form input:focus-visible,.enquiry-form textarea:focus-visible{
  outline:2px solid var(--accent,#C9F299);outline-offset:2px;border-color:transparent}
.enquiry-form textarea{resize:vertical;min-height:96px}
.enquiry-form button{justify-self:start;margin-top:4px}
.form-status{margin:0;font-size:.85rem;min-height:1.2em;color:var(--muted,#9A958C)}
.form-status.err{color:#E8A0A0}

/* ── Page prose ──────────────────────────────────────────────────────────────
   Each service/sector page's own body copy, restored from the live site: it
   carries the search terms these pages actually rank for. It had no rule at
   all, so it rendered as unstyled <p>s in a 760px strip with 108px of padding
   above and below — a wall of text in an empty band (Kane, 15 Oct, on
   /ai-for-trades and most of the Who-we-help pages). Two columns across the
   full wrap, so two long paragraphs fill the measure instead of floating. */
.page-prose{border-top:1px solid var(--line);padding-block:74px}
.page-prose>.kicker{color:var(--muted);margin-bottom:34px}
.page-prose-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:28px 64px}
.page-prose-body p{margin:0;font-size:18px;line-height:1.75;color:#c4cdc6}
.page-prose-body p:first-child{font-size:22px;line-height:1.55;letter-spacing:-.3px;color:var(--fg)}
@media(max-width:760px){.page-prose{padding-block:52px}.page-prose-body{grid-template-columns:1fr;gap:20px}.page-prose-body p{font-size:17px}.page-prose-body p:first-child{font-size:19px}}

/* ── Live AI concierge ───────────────────────────────────────────────────────
   Our own site runs the thing we sell. Talks to /api/ask, a separate worker on
   a more-specific Cloudflare route, so it survives the switchover untouched.
   Thinking state = George's Fuller Bars loop (motion/renders/thinking-loop-*). */
.cx-launch{position:fixed;right:22px;bottom:22px;z-index:120;display:flex;align-items:center;gap:11px;
  padding:13px 19px 13px 15px;border:1px solid var(--line);border-radius:50px;background:#171d19;color:var(--fg);
  font-size:14px;font-weight:500;box-shadow:0 14px 40px #0006;transition:transform .2s,background .2s}
.cx-launch:hover{transform:translateY(-2px);background:#1d251f}
.cx-launch .cx-mark{height:19px;width:auto}
.cx-launch[aria-expanded=true]{opacity:0;pointer-events:none}
.cx-mark rect{fill:var(--fg)}
.cx-mark .fl-full{fill:var(--mint)}

.cx{position:fixed;right:22px;bottom:22px;z-index:121;width:min(410px,calc(100vw - 32px));
  max-height:min(660px,calc(100svh - 44px));display:flex;flex-direction:column;overflow:hidden;
  background:#131714;border:1px solid #ffffff22;border-radius:18px;box-shadow:0 30px 80px #0008}
.cx[hidden]{display:none}
.cx-head{display:flex;align-items:center;gap:12px;padding:16px 16px 14px;border-bottom:1px solid var(--line);flex:none}
.cx-head .cx-mark{height:22px;width:auto;flex:none}
.cx-head strong{display:block;font-size:15px;font-weight:600;letter-spacing:-.2px}
.cx-head span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
.cx-head div{flex:1;min-width:0}
.cx-x{background:none;border:0;color:var(--muted);font-size:23px;line-height:1;padding:4px 6px;border-radius:7px}
.cx-x:hover{color:var(--fg);background:#ffffff12}

.cx-log{flex:1;overflow-y:auto;padding:18px 16px;display:flex;flex-direction:column;gap:13px;scroll-behavior:smooth}
.cx-msg{max-width:86%;font-size:15px;line-height:1.55;padding:12px 15px;border-radius:14px;white-space:pre-wrap;overflow-wrap:anywhere}
.cx-you{align-self:flex-end;background:var(--mint);color:#0b1f14;border-bottom-right-radius:5px}
.cx-ai{align-self:flex-start;background:#1c231e;border:1px solid #ffffff14;border-bottom-left-radius:5px}
.cx-ai a{color:var(--mint);text-decoration:underline;text-underline-offset:3px}
.cx-err{align-self:flex-start;background:#2a1d1d;border:1px solid #ff8a8a33;color:#ffd9d9}

.cx-think{align-self:flex-start;display:flex;align-items:center;gap:11px;padding:9px 14px;border-radius:14px;
  background:#1c231e;border:1px solid #ffffff14}
.cx-think video,.cx-think img{width:26px;height:26px;display:block;border-radius:5px}
.cx-think span{font-size:13px;color:var(--muted)}
/* While a reply is still being written, a mint caret sits at the end of it. */
.cx-streaming:after{content:"";display:inline-block;width:2px;height:1.05em;margin-left:2px;vertical-align:-.15em;background:var(--mint);animation:cx-caret 1s steps(1) infinite}
@keyframes cx-caret{50%{opacity:0}}

.cx-chips{display:flex;flex-wrap:wrap;gap:8px;padding:0 16px 12px;flex:none}
.cx-chips:empty{display:none}
.cx-chip{font-size:13px;padding:9px 13px;border-radius:30px;border:1px solid var(--line);background:transparent;color:#cfd8d2;text-align:left}
.cx-chip:hover{border-color:var(--mint);color:var(--mint)}

.cx-slots{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.cx-slot{font-size:13px;padding:9px 12px;border-radius:9px;border:1px solid var(--line);background:#1c231e;color:var(--fg)}
.cx-slot:hover,.cx-slot[aria-pressed=true]{border-color:var(--mint);color:var(--mint)}

.cx-capture{align-self:stretch;display:grid;gap:9px;padding:14px;border:1px solid #ffffff1c;border-radius:14px;background:#1a211c}
.cx-capture p{margin:0;font-size:13px;color:var(--muted);line-height:1.5}
.cx-capture input{background:#101312;border:1px solid var(--line);border-radius:9px;padding:11px 12px;color:var(--fg);font-size:14px;width:100%}
.cx-capture input:focus{outline:2px solid var(--mint);outline-offset:1px}
.cx-capture button{background:var(--mint);color:#0b1f14;border:0;border-radius:9px;padding:11px;font-size:14px;font-weight:600}

.cx-form{display:flex;gap:9px;padding:13px 16px;border-top:1px solid var(--line);flex:none;align-items:center}
.cx-form input{flex:1;min-width:0;background:#101312;border:1px solid var(--line);border-radius:30px;
  padding:13px 16px;color:var(--fg);font-size:15px}
.cx-form input:focus{outline:2px solid var(--mint);outline-offset:1px}
.cx-send{flex:none;width:42px;height:42px;border-radius:50%;border:0;background:var(--mint);color:#0b1f14;font-size:18px;line-height:1}
.cx-send:disabled{opacity:.4}
.cx-foot{margin:0;padding:0 16px 14px;font-size:11px;line-height:1.5;color:#8c968f;flex:none}
.cx-foot a{color:#b9c3bc;text-decoration:underline;text-underline-offset:3px}

@media(max-width:560px){
  .cx{right:8px;left:8px;bottom:8px;width:auto;max-height:calc(100svh - 16px);border-radius:16px}
  .cx-launch{right:14px;bottom:14px;padding:12px 17px 12px 14px;font-size:13px}
  /* 🔴 iOS Safari zooms the whole page when a focused input is under 16px.
     Everything else can scale down; these two cannot. */
  .cx-form input,.cx-capture input{font-size:16px}
}
@media(prefers-reduced-motion:reduce){.cx-launch{transition:none}.cx-launch:hover{transform:none}.cx-log{scroll-behavior:auto}}

/* Short laptop screens (16 Oct 2026): a 1080p Windows laptop at 150% scaling leaves Chrome ~1280x545, and the 610px floor pushed the hero line and both CTAs below the fold. Let the hero follow the window down and scale the heading and gaps by height. */
@media(min-width:761px) and (max-height:820px){.stream-hero{min-height:440px}.stream-heading{padding-top:clamp(18px,4svh,45px)}.stream-heading .kicker{margin-bottom:12px}.stream-heading h1{font-size:clamp(46px,min(6.1vw,10.5svh),88px)}.stream-action{bottom:clamp(22px,5svh,77px)}.stream-action p{margin-bottom:14px}}

/* What management includes (George, 20 Oct 2026): the pricing page's "what your monthly actually pays for" panel */
.mgmt{background:#171c1a;color:#f6f7f3;border:1px solid rgba(246,247,243,.12);border-radius:20px;padding:clamp(22px,3.5vw,40px)}
.mgmt-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px 32px;flex-wrap:wrap;margin-bottom:clamp(20px,3vw,32px)}
.mgmt-kicker{font-family:DM,'DM Sans',sans-serif;font-size:.6875rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#bdf4d1;margin:0 0 10px}
.mgmt-head h2{margin:0;font-size:clamp(26px,3vw,40px);line-height:1.05;letter-spacing:-.03em;color:#f6f7f3}
.mgmt-where{margin:0;font-size:.875rem;line-height:1.4;color:#a7afa9;text-align:right}
.mgmt-where strong{color:#f6f7f3;font-weight:600}
.mgmt-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:22px 40px}
.mgmt-grid li{display:grid;grid-template-columns:22px 1fr;column-gap:12px;row-gap:4px;align-content:start}
.mgmt-grid li::before{content:'';grid-row:1 / span 2;width:18px;height:18px;margin-top:2px;border-radius:50%;background:#bdf4d1 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-5' fill='none' stroke='%230b1f14' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/11px no-repeat}
.mgmt-grid strong{font-size:1rem;font-weight:600;color:#f6f7f3}
.mgmt-grid span{font-size:.875rem;line-height:1.45;color:#a7afa9}
.mgmt-foot{margin:clamp(22px,3vw,30px) 0 0;padding-top:18px;border-top:1px solid rgba(246,247,243,.12);font-size:.9375rem;color:#a7afa9}
.mgmt-foot strong{color:#f6f7f3;font-weight:600}
@media (max-width:720px){.mgmt-grid{grid-template-columns:1fr}.mgmt-where{text-align:left}}
/* Cookie banner (26 Oct 2026). The markup and consent logic shipped on 15 Oct with NO styles, so the
   banner rendered as plain text under the footer and most visitors never saw it. Bottom-left card on
   desktop, a bottom sheet on phones; sits over the concierge launcher until a choice is made. */
.cookie-banner{position:fixed;left:22px;bottom:22px;z-index:130;width:min(420px,calc(100% - 44px));background:#1a211c;color:var(--fg);border:1px solid #8d9c9044;border-radius:20px;padding:22px;box-shadow:0 24px 60px #0008}
.cookie-banner[hidden]{display:none}
.cookie-banner p{margin:0 0 16px;font-size:14px;line-height:1.6;color:var(--muted)}
.cookie-banner p a{color:var(--fg);text-decoration:underline;text-underline-offset:3px}
.cookie-banner .cookie-actions{display:flex;gap:10px;flex-wrap:wrap}
.cookie-banner .button{min-height:44px;padding:11px 18px;font-size:14px;border-radius:50px}
.cookie-banner .button-primary{background:var(--mint);color:#0b1f14}
.cookie-banner .button:not(.button-primary){background:transparent;color:var(--fg);border:1px solid #ffffff33}
@media (max-width:600px){.cookie-banner{left:0;right:0;bottom:0;width:100%;border-radius:20px 20px 0 0;border-width:1px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom))}.cookie-banner .button{flex:1}}
