/* Off the Clock Software: studio site, direction A "Editorial" (2026-10-05). One stylesheet for every page. */
@font-face{font-family:"Newsreader";src:url(/fonts/Newsreader-normal-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Newsreader";src:url(/fonts/Newsreader-italic-400-500.woff2) format("woff2");font-weight:400 500;font-style:italic;font-display:swap}
@font-face{font-family:"Hanken Grotesk";src:url(/fonts/HankenGrotesk-normal-400-700.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
/* size-matched fallbacks: less layout shift while the web fonts load */
@font-face{font-family:"Newsreader Fallback";src:local("Georgia"),local("Times New Roman");size-adjust:92%;ascent-override:96%;descent-override:26%}
@font-face{font-family:"Hanken Fallback";src:local("Arial"),local("Helvetica");size-adjust:97%;ascent-override:98%;descent-override:26%}

:root{
  --paper:#f7f5f0; --band:#efebe3; --white:#fffefb; --ink:#16171b; --ink-2:#4b4d53; --ink-3:#5c5e64;
  --rule:#d8d4cb; --rule-2:#e4e0d6; --accent:#8b2b1d; --field:#87827a;
  --serif:"Newsreader","Newsreader Fallback",Georgia,serif; --sans:"Hanken Grotesk","Hanken Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;
  --wrap:1240px; --gut:clamp(16px,4vw,48px); --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 18px/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
p,li,figcaption,dd{text-wrap:pretty}
h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.015em;margin:0;color:var(--ink);text-wrap:balance}
h2{font-size:clamp(34px,4.4vw,56px);line-height:1.06}
h3{font-size:26px;line-height:1.2}
p{margin:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:10px 14px;z-index:30}
.skip:focus{left:8px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.eyebrow{font:600 13px/1.35 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0}
.lede{font-size:clamp(18px,1.5vw,20px);line-height:1.6;color:var(--ink-2);max-width:36em}
.red{color:var(--accent)}

/* links: underline grows on hover */
.u{text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:2px;transition:background-size .3s var(--ease),color .2s}
.u:hover{color:var(--accent);background-size:100% 2px}

/* wordmark */
.mark{display:inline-flex;align-items:baseline;gap:12px;text-decoration:none;color:var(--ink);white-space:nowrap}
.mark b{font:italic 500 27px/1 var(--serif);letter-spacing:-.01em}
.mark b i{font-style:normal;color:var(--accent)}
.mark span{font:600 11px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2);padding-left:12px;border-left:1px solid var(--rule)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border-radius:2px;font:600 16px/1 var(--sans);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.btn-ink{background:var(--ink);color:#fff;border:1px solid var(--ink)}
.btn-ink:hover{background:var(--accent);border-color:var(--accent)}
.btn-line{background:transparent;border:1px solid var(--ink);color:var(--ink)}
.btn-line:hover{background:var(--ink);color:#fff}

/* header */
.top{position:sticky;top:0;z-index:20;background:rgba(247,245,240,.95);backdrop-filter:saturate(1.2) blur(8px);border-bottom:1px solid var(--rule-2)}
.top .wrap{display:flex;align-items:center;gap:28px;height:76px}
.nav{display:flex;gap:22px;margin-left:auto}
.nav a{white-space:nowrap;font:500 15px/1 var(--sans);text-decoration:none;color:var(--ink-2);padding:10px 0;background:linear-gradient(var(--ink),var(--ink)) 0 100%/0 1px no-repeat;transition:background-size .3s var(--ease),color .2s}
.nav a:hover{color:var(--ink);background-size:100% 1px}
.top .call{font:600 15px/1 var(--sans);text-decoration:none;white-space:nowrap;padding:10px 0}
.top .call:hover{color:var(--accent)}
.top .btn{min-height:44px;padding:0 18px;font-size:15px}
.menu{display:none}

/* hero */
.hero{padding:clamp(28px,4.4vw,64px) 0 0;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);gap:clamp(32px,5vw,72px);align-items:start}
.hero h1{font-size:clamp(46px,6.1vw,84px);line-height:1.0;letter-spacing:-.025em;margin:22px 0 26px}
.hero h1 em{font-style:italic;color:var(--accent);margin-left:-.06em}
.hero .lede{max-width:31em}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px 26px;margin-top:32px}
.cta-phone{display:none}
.cta-note{margin-top:16px;font-size:15px;line-height:1.5;color:var(--ink-2);max-width:34em}
.stage{position:relative;margin:30px calc(-1 * var(--gut)) 0 0}
.stage .desk{border:1px solid var(--rule);border-right:0;background:#fff;box-shadow:0 30px 60px -30px rgba(22,23,27,.35)}
.stage .desk img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top left}
.phone-frame{border:7px solid var(--ink);border-radius:30px;overflow:hidden;background:var(--ink);box-shadow:0 24px 50px -20px rgba(22,23,27,.5)}
.phone-frame img{width:100%;aspect-ratio:390/760;object-fit:cover;object-position:top;border-radius:22px}
.stage .phone-frame{position:absolute;left:-40px;bottom:-60px;width:26%}
.stage-cap{margin-top:80px;font:500 13.5px/1.5 var(--sans);color:var(--ink-2);text-align:right;max-width:none}
.ledger{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--ink);margin-top:clamp(40px,4.8vw,64px)}
.ledger div{padding:22px 24px 26px 0;border-right:1px solid var(--rule)}
.ledger div+div{padding-left:24px}
.ledger div:last-child{border-right:0}
.ledger b{display:block;font:400 clamp(34px,3.4vw,46px)/1 var(--serif);letter-spacing:-.02em}
.ledger span{display:block;margin-top:10px;font-size:15px;line-height:1.4;color:var(--ink-2)}
.ledger small{display:block;margin-top:4px;font-size:13.5px;color:var(--ink-3)}

/* did Tim stop by */
.stopby{margin-top:0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--white)}
.stopby .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px 48px;align-items:center;padding-top:26px;padding-bottom:26px}
.stopby h2{font-size:clamp(24px,2.2vw,30px);line-height:1.2}
.stopby p{margin-top:6px;font-size:16px;color:var(--ink-2)}
.codeform{display:flex;gap:10px;align-items:stretch}
.codeform label{position:absolute;left:-999px}
.codeform input{width:190px;min-height:52px;font:500 20px/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;text-align:center;color:var(--ink);background:var(--paper);border:1px solid var(--field);border-radius:2px;padding:0 12px}
.codeform input::placeholder{color:var(--ink-3);letter-spacing:.24em}
.codeform input:focus{outline:2px solid var(--ink);outline-offset:0}

/* sections */
section{scroll-margin-top:84px}
.sec{padding:clamp(72px,9vw,136px) 0}
.sec.band{background:var(--band)}
.sec.white{background:var(--white);border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2)}
.sec-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,72px);align-items:end;margin-bottom:clamp(40px,5vw,72px)}
.no{font:600 13px/1 var(--sans);letter-spacing:.14em;color:var(--ink-2);text-transform:uppercase;margin-bottom:18px;display:block}
.sec-head .lede{justify-self:end}
.reveal{opacity:1}
.js .reveal{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .reveal.in{opacity:1;transform:none}

/* steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--ink)}
.step{padding:30px 32px 8px 0;border-right:1px solid var(--rule)}
.step+.step{padding-left:32px}
.step:last-child{border-right:0}
.step .n{font:italic 400 64px/1 var(--serif);color:var(--ink-2);display:block;margin-bottom:24px}
.step h3{margin-bottom:12px}
.step p{color:var(--ink-2);font-size:17px}
.step .pay{display:inline-block;margin-top:18px;font:600 13px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
.step .pay.now{color:var(--accent)}

/* work */
.grid-work{display:grid;grid-template-columns:repeat(2,1fr);gap:64px 48px}
.case.feature{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:0 56px;align-items:end}
.case.feature figcaption{margin-top:0}
.case.feature h3{font-size:34px}
.case{margin:0;display:flex;flex-direction:column}
.case a.shot{display:block;text-decoration:none;color:inherit}
.case .frame{border:1px solid var(--rule);overflow:hidden;background:#fff}
.case .frame img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top left;transition:transform .7s var(--ease)}
.case a.shot:hover .frame img{transform:scale(1.025)}
.case .duo{position:relative;padding-right:18%}
.case .duo .phone-frame{position:absolute;right:0;bottom:-26px;width:27%;border-width:5px;border-radius:20px}
.case .duo .phone-frame img{border-radius:15px}
.case figcaption{margin-top:38px;padding-top:16px;border-top:1px solid var(--ink);display:grid;grid-template-columns:1fr auto;gap:6px 16px;align-items:baseline}
.case h3{font-size:24px}
.case .where{grid-column:1/-1;font-size:15.5px;color:var(--ink-2)}
.case .what{grid-column:1/-1;font-size:16px;color:var(--ink-2);margin-top:4px}
.case .view{grid-column:1/-1;margin-top:10px;font:600 15px/1.3 var(--sans);justify-self:start}
.tag{font:600 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:7px 9px;border:1px solid var(--rule);color:var(--ink-2);white-space:nowrap}
.tag.client{border-color:var(--ink);color:var(--ink)}
.note{margin-top:44px;font-size:15px;color:var(--ink-2);max-width:52em}

/* before / after */
.ba{margin-top:clamp(64px,8vw,112px);display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:clamp(28px,4vw,64px);align-items:center}
.ba h3{font-size:clamp(28px,2.8vw,38px);line-height:1.1}
.ba p{margin-top:14px;color:var(--ink-2);font-size:17px}
.slider{position:relative;border:1px solid var(--rule);background:#fff;overflow:hidden;aspect-ratio:16/10;--pos:50%;user-select:none}
.slider img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top left}
.slider .after{clip-path:inset(0 0 0 var(--pos))}
.slider .bar{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;margin-left:-1px;background:var(--ink);pointer-events:none}
.slider .bar::after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 4px rgba(255,255,255,.8)}
.slider .bar::before{content:"\2039\00a0\203A";position:absolute;top:50%;left:50%;transform:translate(-50%,-52%);z-index:1;color:#fff;font:600 20px/1 var(--sans);white-space:nowrap}
.slider input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.slider .lb{position:absolute;top:12px;font:600 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;background:rgba(22,23,27,.85);color:#fff;padding:7px 9px;pointer-events:none}
.slider .lb.l{left:12px}.slider .lb.r{right:12px}

/* price */
.price-hero{text-align:center;max-width:50em;margin:0 auto clamp(48px,6vw,80px)}
.price-hero .big{display:block;font:400 clamp(88px,12vw,168px)/.9 var(--serif);letter-spacing:-.04em;margin:18px 0 10px}
.price-hero h2{font-size:clamp(30px,3.4vw,44px)}
.price-hero p{margin-top:16px;color:var(--ink-2);font-size:clamp(18px,1.5vw,20px)}
.prices{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.price{background:var(--white);border:1px solid var(--rule);padding:34px 36px 30px;display:flex;flex-direction:column}
.price h3{font-size:28px}
.price .amt{display:block;margin:14px 0 6px;font:400 60px/1 var(--serif);letter-spacing:-.03em;white-space:nowrap}
.price .amt small{font:500 15px/1 var(--sans);letter-spacing:0;color:var(--ink-2);margin-right:8px;vertical-align:middle}
.price p.sub{color:var(--ink-2);font-size:17px;max-width:30em}
.price ul{list-style:none;padding:0;margin:22px 0 0}
.price li{padding:12px 0;border-top:1px solid var(--rule-2);font-size:17px;display:flex;gap:14px}
.price li::before{content:"";flex:0 0 14px;height:1px;background:var(--ink);margin-top:.8em}
.incl{display:grid;grid-template-columns:repeat(3,1fr);margin-top:40px;border-top:1px solid var(--ink);border-bottom:1px solid var(--rule)}
.incl div{padding:24px 28px 24px 0}
.incl div+div{padding-left:28px;border-left:1px solid var(--rule)}
.incl b{display:block;font:500 22px/1.25 var(--serif)}
.incl span{display:block;margin-top:6px;color:var(--ink-2);font-size:16px}
.compare{margin-top:40px;display:grid;grid-template-columns:repeat(2,1fr);gap:0;border:1px solid var(--rule);background:var(--white)}
.compare div{padding:22px 24px}
.compare div+div{border-left:1px solid var(--rule)}
.compare span{display:block;font-size:14.5px;color:var(--ink-2)}
.compare b{display:block;margin-top:6px;font:400 32px/1.1 var(--serif)}
.compare .us b{color:var(--accent)}
.fine{margin-top:22px;color:var(--ink-2);font-size:15.5px;max-width:40em}
.fine+.fine{margin-top:10px}

/* why */
.why{background:var(--ink);color:#f3f1ec}
.why h2,.why h3{color:#fff}
.why .no{color:#c9c7c1}
.quote{font:italic 400 clamp(44px,6.4vw,92px)/1.02 var(--serif);letter-spacing:-.025em;color:#fff;margin:0 0 clamp(48px,6vw,88px);max-width:14em;text-wrap:balance}
.quote span{color:#e2a497}
.whys{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(255,255,255,.35)}
.whys div{padding:30px 32px 0 0}
.whys div+div{padding-left:32px;border-left:1px solid rgba(255,255,255,.16)}
.whys h3{font-size:30px;margin-bottom:14px}
.whys p{color:#c9c7c1;font-size:17px}
.trust{margin-top:56px;display:flex;flex-wrap:wrap;gap:12px 40px;padding-top:24px;border-top:1px solid rgba(255,255,255,.16);font:500 15px/1.4 var(--sans);color:#e7e4dd}
.trust li{list-style:none;display:flex;gap:10px;align-items:baseline}
.trust li::before{content:"";width:6px;height:6px;border-radius:50%;background:#e2a497;transform:translateY(-2px)}
.trust{padding-left:0;margin-bottom:0}
.client-quote{margin:56px 0 0;padding-top:28px;border-top:1px solid rgba(255,255,255,.16);font:italic 400 28px/1.35 var(--serif);color:#fff;max-width:30em}
.client-quote cite{display:block;margin-top:12px;font:500 15px/1.4 var(--sans);font-style:normal;color:#c9c7c1}

/* team */
.team-grid{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:clamp(32px,6vw,96px);align-items:start}
.people{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.person{margin:0}
.person img{width:100%;aspect-ratio:1;object-fit:cover;filter:grayscale(.15);border:1px solid var(--rule)}
.person figcaption{padding-top:14px}
.person b{display:block;font:400 24px/1.15 var(--serif)}
.person span{display:block;margin-top:4px;color:var(--ink-2);font-size:15.5px}
.person p{margin-top:12px;font-size:16px;color:var(--ink-2)}
.team-copy p{font:400 clamp(20px,1.8vw,23px)/1.5 var(--serif)}
.team-copy p+p{margin-top:20px}
.team-copy .small{font:400 16.5px/1.6 var(--sans);color:var(--ink-2)}
.towns{margin-top:30px;padding-top:22px;border-top:1px solid var(--rule)}
.towns b{font:600 13px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.towns p{margin-top:10px;font-size:16.5px}

/* faq */
.faq-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(32px,6vw,96px);align-items:start}
.faq-side{position:sticky;top:112px}
.still{margin-top:36px;padding-top:22px;border-top:1px solid var(--rule)}
.still p{font:400 22px/1.3 var(--serif)}
.still .row{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.still .btn{min-height:46px;padding:0 18px;font-size:15px}
.faq{border-top:1px solid var(--ink)}
.faq details{border-bottom:1px solid var(--rule)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;font:400 clamp(21px,2vw,25px)/1.3 var(--serif);transition:color .2s}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";flex:0 0 14px;height:14px;background:linear-gradient(var(--ink),var(--ink)) center/14px 1.5px no-repeat,linear-gradient(var(--ink),var(--ink)) center/1.5px 14px no-repeat;transition:transform .3s var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq summary:hover{color:var(--accent)}
.faq .a{padding:0 0 24px;max-width:44em;color:var(--ink-2);font-size:17px}
.faq .a p+p{margin-top:10px}
.faq details::details-content{block-size:0;overflow:hidden;transition:block-size .35s var(--ease),content-visibility .35s allow-discrete}
.faq details[open]::details-content{block-size:auto}
:root{interpolate-size:allow-keywords}

/* contact */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,6vw,96px);align-items:start}
.bigphone{display:inline-block;margin-top:30px;font:400 clamp(44px,5.4vw,76px)/1 var(--serif);letter-spacing:-.025em;text-decoration:none;white-space:nowrap;border-bottom:1px solid var(--ink);padding-bottom:6px;transition:color .2s,border-color .2s}
.bigphone:hover{color:var(--accent);border-color:var(--accent)}
.contact .alt{margin-top:20px;font-size:17px;color:var(--ink-2);max-width:30em}
.contact .alt a{font-weight:600;color:var(--ink)}
.contact .row{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.clock{margin-top:26px;font:italic 400 20px/1.4 var(--serif);color:var(--ink-2)}
form.ask{border-top:1px solid var(--ink);padding-top:6px}
.field{display:block;padding:16px 0 0}
.field label{display:block;font:600 14.5px/1.3 var(--sans);color:var(--ink);margin-bottom:8px}
.field label small{font-weight:400;color:var(--ink-2)}
.field input,.field textarea{width:100%;font:400 17px/1.4 var(--sans);color:var(--ink);background:var(--paper);border:1px solid var(--field);border-radius:2px;padding:13px 14px}
.field textarea{min-height:120px;resize:vertical}
.field input:focus,.field textarea:focus{outline:2px solid var(--ink);outline-offset:0;border-color:var(--ink)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
form.ask .btn{margin-top:24px;width:100%}
.formnote{margin-top:12px;font-size:14.5px;color:var(--ink-2)}

/* footer */
footer.site{background:var(--ink);color:#d9d6cf;padding:72px 0 40px}
footer.site .mark{color:#fff}
footer.site .mark span{color:#c9c7c1;border-color:#4b4d53}
footer.site .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}
footer.site h4{margin:0 0 14px;font:600 12.5px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#a9a6a0}
footer.site ul{list-style:none;padding:0;margin:0}
footer.site li{margin:0 0 4px}
footer.site li a{display:inline-block;padding:4px 0;text-decoration:none;color:#f3f1ec;font-size:16px}
footer.site li a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}
footer.site p{font-size:15.5px;line-height:1.55}
footer.site .sign{margin-top:18px;font:italic 400 22px/1.3 var(--serif);color:#fff}
footer.site .legal{margin-top:56px;padding-top:22px;border-top:1px solid #34363b;display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 30px;font-size:14px;color:#a9a6a0}
footer.site .legal a{color:#d9d6cf}

/* phone call bar */
.callbar{display:none}

/* simple pages (sent, error, privacy, 404, stopped-by) */
.page{padding:clamp(56px,8vw,112px) 0 clamp(72px,9vw,128px)}
.page .narrow{max-width:760px}
.page h1{font-size:clamp(44px,6vw,76px);line-height:1.02;letter-spacing:-.025em;margin:18px 0 22px}
.page .lede{max-width:34em}
.page .row{display:flex;flex-wrap:wrap;gap:12px 22px;align-items:center;margin-top:32px}
.prose h2{font-size:clamp(26px,2.6vw,32px);margin:44px 0 12px}
.prose p,.prose li{color:var(--ink-2);font-size:17.5px}
.prose p+p{margin-top:12px}
.prose ul{padding-left:20px}
.prose a{font-weight:600;color:var(--ink)}

@media (max-width:1180px){
  .nav{display:none}
  .top .call{display:none}
  .menu{display:block;margin-left:auto;position:relative}
  .menu summary{list-style:none;cursor:pointer;font:600 15px/1 var(--sans);padding:14px 6px;min-height:44px;display:flex;align-items:center}
  .menu summary::-webkit-details-marker{display:none}
  .menu nav{position:absolute;right:0;top:52px;background:var(--white);border:1px solid var(--rule);padding:8px 0;min-width:230px;box-shadow:0 20px 40px -20px rgba(0,0,0,.3)}
  .menu nav a{display:block;padding:13px 20px;text-decoration:none;font:500 16px/1.2 var(--sans)}
  .menu nav a:hover{background:var(--band)}
  footer.site .cols{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  body{font-size:17px}
  .top .wrap{height:62px;gap:12px}
  .top .btn{display:none}
  .mark b{font-size:23px}
  .mark span{font-size:10px;letter-spacing:.2em;padding-left:10px}
  .hero-grid,.sec-head,.team-grid,.faq-grid,.contact-grid,.ba{grid-template-columns:1fr}
  .sec-head .lede{justify-self:start}
  .hero h1{margin:14px 0 16px}
  .hero .lede{font-size:17px;line-height:1.55}
  .cta-desk{display:none}
  .cta-phone{display:flex;gap:10px;margin-top:22px}
  .cta-phone .btn{flex:1 1 0;min-height:52px;padding:0 12px}
  .cta-phone + .cta-note{margin-top:12px}
  .stage{margin:6px calc(-1 * var(--gut)) 0 18%}
  .stage .phone-frame{left:-24%;bottom:-34px;width:30%;border-width:5px;border-radius:20px}
  .stage .phone-frame img{border-radius:15px}
  .stage-cap{margin-top:52px;text-align:left;font-size:13px}
  .ledger{grid-template-columns:1fr 1fr;margin-top:34px}
  .ledger div,.ledger div+div{padding:18px 14px 20px 0;border-right:0}
  .ledger div:nth-child(2n){padding-left:16px;border-left:1px solid var(--rule)}
  .ledger div:nth-child(n+3){border-top:1px solid var(--rule)}
  .stopby .wrap{grid-template-columns:1fr}
  .codeform{flex-wrap:wrap}
  .codeform input{flex:1 1 140px;width:auto;min-width:0}
  .codeform .btn{flex:1 1 auto}
  .case.feature{grid-template-columns:1fr}
  .case.feature figcaption{margin-top:38px}
  .case.feature h3{font-size:26px}
  .people{grid-template-columns:1fr;gap:18px}
  .person{display:grid;grid-template-columns:104px 1fr;gap:18px;align-items:center}
  .person figcaption{padding-top:0}
  .person p{margin-top:6px;font-size:15px}
  .person b{font-size:21px}
  .steps,.whys,.incl,.prices,.compare,.grid-work{grid-template-columns:1fr}
  .step,.step+.step{padding:24px 0;border-right:0;border-top:1px solid var(--rule)}
  .step:first-child{border-top:0}
  .step .n{font-size:46px;margin-bottom:12px}
  .grid-work{gap:44px}
  .whys div,.whys div+div{padding:24px 0;border-left:0;border-top:1px solid rgba(255,255,255,.16)}
  .whys div:first-child{border-top:0}
  .price{padding:26px 22px}
  .price .amt{font-size:52px}
  .incl div,.incl div+div{padding:18px 0;border-left:0}
  .incl div+div{border-top:1px solid var(--rule-2)}
  .compare div+div{border-left:0;border-top:1px solid var(--rule)}
  .two{grid-template-columns:1fr}
  .faq-side{position:static}
  footer.site{padding-bottom:100px}
  .callbar{display:flex;align-items:center;gap:14px;position:fixed;left:0;right:0;bottom:0;z-index:25;padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom));background:rgba(247,245,240,.97);border-top:1px solid var(--rule);transition:transform .3s var(--ease)}
  .callbar .btn{flex:1 1 auto;min-width:0;min-height:48px;padding:0 14px}
  .callbar .small{flex:0 0 auto;font:600 15px/1 var(--sans);padding:14px 4px;white-space:nowrap}
  .js .callbar{transform:translateY(110%)}
  .js .callbar.show{transform:none}
}
@media (max-width:560px){
  footer.site .cols{grid-template-columns:1fr;gap:30px}
}
@media (max-width:380px){
  .hero h1{font-size:40px}
  .bigphone{font-size:36px}
  .mark span{display:none}
  .cta-phone .btn{font-size:15px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
  .js .reveal{opacity:1;transform:none}
}
.sm-only{display:none}
@media (max-width:900px){.lg-only{display:none}.sm-only{display:inline}}
/* shorter headline variant (preview test 2026-10-05) */
.hero h1.h1-short{font-size:clamp(46px,5.1vw,78px);line-height:.98;margin:20px 0 28px}
.hero h1.h1-short span{display:block;white-space:nowrap}
@media (max-width:900px){.hero h1.h1-short{font-size:clamp(38px,11.4vw,60px);margin:14px 0 18px}}

/* custom software (2026-10-05) */
.soft-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,6vw,96px);align-items:start}
.soft .row{display:flex;flex-wrap:wrap;gap:10px;margin-top:30px}
.soft-list{list-style:none;padding:0;margin:0;border-top:1px solid var(--ink)}
.soft-list li{display:flex;gap:16px;padding:18px 0;border-bottom:1px solid var(--rule);font:400 clamp(19px,1.6vw,22px)/1.4 var(--serif)}
.soft-list li::before{content:"";flex:0 0 14px;height:1px;background:var(--ink);margin-top:.75em}
.soft-list li:last-child{color:var(--ink-2);font-style:italic}
@media (max-width:900px){.soft-grid{grid-template-columns:1fr}}
@media (max-width:1320px){.top .call{display:none}}

/* yearly cost + optional extras (2026-10-05) */
.yearly{margin-top:56px}
.yearly-h{font-size:clamp(24px,2.4vw,30px);margin-bottom:18px}
.yearly .compare{display:grid;grid-template-columns:2fr 1fr;gap:16px;border:0;background:none;margin-top:0}
.yearly .col{background:var(--white);border:1px solid var(--rule);padding:26px 28px}

.yearly .who{display:block;font:600 15px/1.35 var(--sans);color:var(--ink-2)}
.yearly .col b{display:block;margin-top:10px;font:400 clamp(36px,3.6vw,48px)/1.05 var(--serif);letter-spacing:-.02em}
.yearly .per{display:block;margin-top:6px;font-size:16px;color:var(--ink-2)}
.yearly .col.us{border:2px solid var(--accent);background:#fff;box-shadow:0 18px 36px -24px rgba(139,43,29,.45)}
.yearly .col.us .who{color:var(--accent)}
.yearly .col.us b{color:var(--accent)}
.yearly .src{margin-top:14px;font-size:13.5px;line-height:1.5;color:var(--ink-2);max-width:62em}
.extras{margin-top:64px;padding-top:28px;border-top:1px solid var(--ink)}
.extras h3{font-size:clamp(24px,2.4vw,30px)}
.extras ul{list-style:none;padding:0;margin:18px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.extras li{background:var(--white);border:1px solid var(--rule);padding:22px 24px}
.extras li b{display:block;font:400 23px/1.2 var(--serif)}
.extras .p{display:block;margin-top:4px;font-weight:600;font-size:16px}
.extras .d{display:block;margin-top:8px;color:var(--ink-2);font-size:16.5px}
.extras > p{margin-top:16px;color:var(--ink-2);font-size:16.5px;max-width:46em}
@media (max-width:900px){.yearly .compare,.extras ul{grid-template-columns:1fr}}
.price-hero .vs{margin-top:14px;font:italic 400 clamp(21px,2vw,26px)/1.3 var(--serif);color:var(--ink)}
.yearly .grp-l{display:block;margin-bottom:10px;font:600 12.5px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.yearly .ours .grp-l{color:var(--accent)}
.yearly .pair{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.yearly .grp{display:flex;flex-direction:column}
.yearly .grp .col{flex:1}
.yearly .others .col{background:transparent;border-color:var(--rule)}
.yearly .others .col b{color:var(--ink-2)}
.yearly .col.us{height:100%}
@media (max-width:900px){.yearly .pair{grid-template-columns:1fr}.yearly .ours{margin-top:14px}}
.yearly .compare .grp,.yearly .compare .pair{padding:0;border:0}
.yearly .compare .col{padding:24px 26px}
.yearly .col b{white-space:nowrap;font-size:clamp(30px,3vw,42px)}

/* yearly cost: others in restrained red, ours in calm green (Tim 2026-10-05) */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.yearly .who small{display:block;margin-top:2px;font:400 14.5px/1.3 var(--sans)}
.yearly .others .col{background:var(--white);border:1px solid var(--rule);border-top:3px solid var(--accent)}
.yearly .others .col b{color:var(--accent)}
.yearly .ours .grp-l{color:#1d6a43}
.yearly .col.us{background:#eef5ef;border:2px solid #1d6a43;box-shadow:0 18px 36px -24px rgba(29,106,67,.45)}
.yearly .col.us .who{color:#1d6a43}
.yearly .col.us b{color:#1d6a43}
.yearly .col.us .per{color:#2f5a42}
/* before/after: clearer handle + hint (2026-10-05) */
.ba{align-items:start;row-gap:0}
.ba > div:first-child{margin-bottom:24px}
.ba > .slider{grid-column:2}
.ba-hint{grid-column:2;margin:12px 0 0;text-align:center;font:600 16px/1.3 var(--sans);color:var(--ink-2)}
.ba-hint .coarse-p{display:none}
@media (pointer:coarse){.ba-hint .fine-p{display:none}.ba-hint .coarse-p{display:inline}}
.slider .bar{width:3px;margin-left:-1.5px;background:#fff;box-shadow:0 0 0 1px rgba(22,23,27,.35)}
.slider .bar::after{width:56px;height:56px;margin:-28px 0 0 -28px;background:var(--ink);box-shadow:0 0 0 4px #fff,0 8px 20px rgba(0,0,0,.35)}
.slider .bar::before{font-size:24px}
.slider:focus-within .bar::after{box-shadow:0 0 0 4px #fff,0 0 0 7px var(--accent)}
.slider .lb{font-size:12.5px;padding:8px 11px}
@media (max-width:900px){.ba > .slider,.ba-hint{grid-column:1}}
.yearly .compare .col.us{border:2px solid #1d6a43}
.yearly .col.us b{font-size:clamp(40px,4vw,54px)}
/* phone call bar only on touch devices; mouse users get "Call or text (number)" and copy-to-clipboard (2026-10-05) */
.callbar .btn{flex:1 1 0;min-width:0}
.callbar .btn-ink{flex-grow:1.5}
@media (pointer:fine){.callbar{display:none!important}footer.site{padding-bottom:40px}}
.mouse a.btn[href^="sms:"]{display:none}
.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);opacity:0;z-index:40;background:var(--ink);color:#fff;font:600 15px/1.3 var(--sans);padding:12px 18px;border-radius:2px;box-shadow:0 12px 30px -12px rgba(0,0,0,.5);transition:opacity .25s,transform .25s;pointer-events:none}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media (max-width:900px){.mouse .cta-phone{display:none}.mouse .cta-desk{display:flex}}
.yearly .col.us{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.yearly .col.us .who{font:400 clamp(22px,2vw,26px)/1.2 var(--serif)}
.yearly .col.us b{margin-top:8px}
.yearly .col.us .net{display:block;margin-top:14px;padding-top:12px;border-top:1px solid rgba(29,106,67,.3);font-size:15px;color:#2f5a42}
.yearly .pair{flex:1}.yearly .col.us{padding:20px 24px}
.yearly .ours .grp-l{text-align:center;font-size:15px;letter-spacing:.16em}

/* After launch: Get Found Locally (SEO) plans (Tim approved 2026-10-06) */
.extras ul{grid-template-columns:1fr}
.extras li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);column-gap:32px;align-items:baseline}
.extras li b{grid-column:1}.extras li .p{grid-column:1;margin-top:4px}
.extras li .d{grid-column:2;grid-row:1 / span 2;margin-top:0;align-self:center}
.afterlaunch{margin-top:64px;padding-top:28px;border-top:1px solid var(--ink)}
.al-head h3{margin-top:8px;font-size:clamp(28px,3vw,38px)}
.al-head .seo{font-size:.62em;color:var(--ink-2)}
.al-sum{margin-top:10px;font-size:clamp(18px,1.5vw,20px);color:var(--ink-2);max-width:36em}
.levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:26px;align-items:start}
.lvl{background:var(--white);border:1px solid var(--rule);border-top:3px solid var(--ink);padding:24px 26px 14px}
.lvl h4{margin:0;font:400 28px/1.15 var(--serif);letter-spacing:-.01em}
.lvl .lp{display:block;margin-top:10px;font:400 clamp(30px,2.8vw,38px)/1.05 var(--serif);letter-spacing:-.02em}
.lvl .ly{display:block;margin-top:4px;font-size:15px;color:var(--ink-2)}
.lvl .lo{margin-top:14px;font-size:17px;color:var(--ink);min-height:3.2em}
.lvl details{margin-top:14px;border-top:1px solid var(--rule)}
.lvl summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;font:600 15.5px/1.3 var(--sans);transition:color .2s}
.lvl summary::-webkit-details-marker{display:none}
.lvl summary::after{content:"";flex:0 0 12px;height:12px;background:linear-gradient(var(--ink),var(--ink)) center/12px 1.5px no-repeat,linear-gradient(var(--ink),var(--ink)) center/1.5px 12px no-repeat;transition:transform .3s var(--ease)}
.lvl details[open] summary::after{transform:rotate(45deg)}
.lvl summary:hover{color:var(--accent)}
.lvl .inc{padding:0 0 12px}
.lvl .plus{margin:0 0 10px;font:600 14px/1.3 var(--sans);color:var(--accent)}
.lvl .inc ul{list-style:none;margin:0;padding:0}
.lvl .inc li{padding:10px 0;border-top:1px solid var(--rule-2)}
.lvl .inc li:first-child{border-top:0;padding-top:0}
.lvl .inc b{display:block;font:600 15.5px/1.3 var(--sans)}
.lvl .inc span{display:block;margin-top:2px;font-size:15.5px;line-height:1.5;color:var(--ink-2)}
.al-facts{list-style:none;margin:26px 0 0;padding:16px 0 0;border-top:1px solid var(--rule);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 32px;color:var(--ink-2);font-size:16.5px}
.al-honest{margin-top:28px;font:400 clamp(20px,1.9vw,24px)/1.35 var(--serif);max-width:34em}
@media (max-width:900px){
  .levels,.al-facts{grid-template-columns:1fr}
  .extras li{display:block}
  .extras li .d{margin-top:8px}
  .lvl .lo{min-height:0}
  .afterlaunch{margin-top:48px}
}
/* Service pages (Tim 2026-10-08): /website-design, /website-redesign, /google-business-profile, /custom-software */
.svc .narrow{max-width:900px}
.svc .ledger{margin-top:clamp(40px,5vw,56px)}
.svc .ledger b{font-size:clamp(30px,3vw,40px)}
.svc h2.sh{font-size:clamp(30px,3.4vw,42px);margin:clamp(56px,7vw,88px) 0 18px}
.svc .sp{color:var(--ink-2);font-size:18px;max-width:40em;margin-bottom:24px}
.svc .prose h2{margin-top:0}
.svc .prose ul{margin:14px 0}
.svc .prose li+li{margin-top:6px}
.svc .price h3{font-size:26px}
.svc .lvl h3{font:400 28px/1.15 var(--serif);letter-spacing:-.01em}
.svc .lvl .inc{margin-top:14px;padding-top:14px;border-top:1px solid var(--rule)}
.svc .levels{margin-top:0;align-items:stretch}
.svc-cta{margin-top:clamp(56px,7vw,88px);padding:clamp(26px,4vw,44px);background:var(--white);border:1px solid var(--rule);border-top:3px solid var(--ink)}
.svc-cta h2{font-size:clamp(28px,3vw,38px)}
.svc-cta p{margin-top:12px;color:var(--ink-2);max-width:36em}
.svc-cta .row{margin-top:24px}
.svc-more{margin-top:clamp(48px,6vw,72px);padding-top:22px;border-top:1px solid var(--ink)}
.svc-more h2{font:600 13px/1.35 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.svc-more ul{list-style:none;padding:0;margin:16px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.svc-more a{display:block;height:100%;padding:18px 20px;background:var(--white);border:1px solid var(--rule);text-decoration:none;transition:border-color .2s}
.svc-more a:hover{border-color:var(--ink)}
.svc-more b{display:block;font:400 22px/1.2 var(--serif)}
.svc-more a:hover b{color:var(--accent)}
.svc-more span{display:block;margin-top:6px;font-size:15.5px;line-height:1.45;color:var(--ink-2)}
.more-link{margin-top:24px;font-weight:600;font-size:17px}
footer.site .based{color:#d9d6cf}
@media (max-width:900px){
  .svc-more ul{grid-template-columns:1fr}
  .svc .row .btn{flex:1 1 0}
  .svc .row .btn-ink{flex-basis:100%}
}
/* Sample sites gallery: /samples (Tim's decision 43, 2026-10-08). Our own made-up businesses only. */
.samples{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:64px 48px;margin-top:clamp(48px,6vw,80px)}
.sample{margin:0;display:flex;flex-direction:column;min-width:0}
.sample a.shot{display:block;text-decoration:none;color:inherit}
.sample .frame{border:1px solid var(--rule);overflow:hidden;background:#fff}
.sample .frame img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;object-position:top left;transition:transform .7s var(--ease)}
.sample a.shot:hover .frame img{transform:scale(1.025)}
.sample figcaption{margin-top:22px;padding-top:16px;border-top:1px solid var(--ink);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;align-items:baseline}
.sample h2{font-size:26px;line-height:1.15}
.sample .where{grid-column:1/-1;font-size:15.5px;color:var(--ink-2)}
.sample .what{grid-column:1/-1;font-size:16px;color:var(--ink-2);margin-top:4px}
.sample .view{grid-column:1/-1;margin-top:10px;font:600 15px/1.3 var(--sans);justify-self:start}
.samples-page .note{margin-top:56px}
@media (max-width:900px){.samples{grid-template-columns:1fr;gap:48px}.sample h2{font-size:24px}}
#work .more-link{margin-top:48px}
