/* Home page. Loads after system.css. Bright, not all greens (2026-11-01): the hero mixes bright greens with turquoise and no dark teal, the heavy title words carry a deeper cut of the same gradient, the closing section is the bright gradient itself, and the estimate card is white. Lime stays for the form button and the mobile menu button. Type is Inter, the logo typeface, with real Inter italics for "your busy work" and "works with". The page follows the visitor's system setting: paper with navy words by default, navy with light words when the device is in dark mode. Titles mix a light run with one heavy caps word, like the logo. Motion: the hero sets itself letter by letter, titles rise word by word, rules draw, checks tick, numbers count, the hero drifts apart on scroll (home.js); all of it stops under reduced motion. */
@font-face{font-family:'Inter Var';src:url('/assets/fonts/inter-var-latin.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'Inter Var';src:url('/assets/fonts/inter-italic-var-latin.woff2') format('woff2');font-weight:200 400;font-style:italic;font-display:swap}

.sage{font-family:'Inter Var',Inter,system-ui,sans-serif;font-optical-sizing:auto;--paper:#f1f5f9;--ink:#0f172a;--teal:#0f766e;--teal-bright:#14b8a6;--lime:#a3e635;--mint:#75fab2;--mint-tint:#d2f6e7;--glow:linear-gradient(100deg,#00c9a7 0%,#1fd69b 26%,#2ad2c9 46%,#34d98f 66%,#00c9a7 86%,#00c9a7 100%);--glow-ink:linear-gradient(100deg,#008c76 0%,#078f5e 28%,#0a8a99 50%,#078f5e 72%,#008c76 100%);--t-body:clamp(1rem,.96rem + .2vw,1.125rem);--hl:#2ad2c9;--ease:cubic-bezier(.16,1,.3,1);--bg:var(--paper);--fg:var(--ink);--line:rgba(15,23,42,.18);--brand:#0d9488;--soft:linear-gradient(115deg,#d4f7e9,#cff4f2);--block:var(--ink);--bar:rgba(255,255,255,.9);--bar-solid:#fff;--bar-line:rgba(15,23,42,.07);--bar-shadow:0 12px 32px -20px rgba(15,23,42,.4);--chip:var(--mint-tint);--rule:3px solid var(--fg);--gutter:clamp(16px,4vw,64px);background:var(--bg);color:var(--fg)}
html:has(.sage){background:#f1f5f9;scrollbar-color:#14b8a6 #e2e8f0;scroll-padding-top:96px}
@media (prefers-color-scheme:dark){
  .sage{--bg:var(--ink);--fg:#f1f5f9;--line:rgba(241,245,249,.18);--brand:var(--mint);--soft:linear-gradient(115deg,rgba(117,250,178,.06),rgba(42,210,201,.1));--block:#1e293b;--bar:rgba(30,41,59,.8);--bar-solid:#1e293b;--bar-line:rgba(255,255,255,.09);--bar-shadow:0 12px 32px -16px rgba(0,0,0,.7);--chip:rgba(241,245,249,.08)}
  html:has(.sage){background:#0f172a;scrollbar-color:#75fab2 #1e293b}
}
.sage ::selection{background:var(--mint);color:var(--ink)}
.sage :focus-visible{outline:3px solid var(--fg);outline-offset:3px}
.sage .own :focus-visible,.sage .site-footer :focus-visible{outline-color:var(--lime)}
.sage .closer :focus-visible{outline-color:var(--ink)}
.sage .button{border-radius:14px}
.sage .mobile-nav .button{width:fit-content;background:var(--lime);border-color:var(--lime);color:var(--ink)}
.sage .mobile-nav .button:hover{background:var(--fg);border-color:var(--fg);color:var(--bg)}
.sage p,.sage li,.sage dd,.sage summary{text-wrap:pretty}
.display{font-weight:300;letter-spacing:-.04em;line-height:.98}
.display b{display:inline-block;padding:0 .06em;margin:0 -.06em;font-weight:850;text-transform:uppercase;letter-spacing:-.03em;background:var(--glow-ink) 0 50%/220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
@media (prefers-color-scheme:dark){.display b{background:none;color:var(--brand);-webkit-text-fill-color:var(--brand)}}
/* Title words sit in their own clipped line so they can rise into place (home.js wraps them) */
.wm{display:inline-block;vertical-align:top;overflow:hidden;overflow:clip;padding:0 .1em .18em;margin:0 -.1em -.18em}
.wi{display:inline-block}

/* Header: one floating bar, links either side of the logo, one soft pill; it steps aside while scrolling down */
.sage .site-header{padding:12px var(--gutter) 0;background:none;border:0;box-shadow:none;pointer-events:none;transition:transform .6s var(--ease)}
.sage .site-header.is-hidden{transform:translateY(calc(-100% - 32px))}
.sage .site-header__inner{pointer-events:auto;width:100%;height:64px;margin:0 auto;padding:0 10px 0 26px;grid-template-columns:1fr auto 1fr;gap:24px;background:var(--bar);border:1px solid var(--bar-line);border-radius:20px;box-shadow:var(--bar-shadow);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);transition:box-shadow .3s ease}
.sage .site-header.is-scrolled .site-header__inner{box-shadow:0 16px 36px -18px rgba(15,23,42,.45)}
.sage .brand{grid-column:2;grid-row:1;width:170px}
.sage .desktop-nav{grid-column:1;grid-row:1;justify-self:start}
.sage .desktop-nav>ul{gap:30px;align-items:center}
.sage .desktop-nav a,.nav-sub__toggle{font-weight:550;color:var(--fg);text-decoration:none;transition:color .2s ease}
.sage .desktop-nav a:hover,.nav-sub__toggle:hover{color:var(--fg);text-decoration:underline 2px var(--teal-bright);text-underline-offset:6px}
.sage .desktop-nav a[aria-current=page]::after{background:var(--brand)}
.nav-sub{position:relative}
.nav-sub__toggle{display:inline-flex;align-items:center;gap:6px;padding:16px 0;border:0;background:none;font:inherit;font-size:1rem;font-weight:550;cursor:pointer}
.nav-sub__toggle svg{width:12px;height:12px;transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.sage .desktop-nav .nav-sub__menu{position:absolute;left:-14px;top:calc(100% + 8px);z-index:5;display:grid;gap:2px;min-width:270px;padding:8px;background:var(--bar-solid);border:1px solid var(--bar-line);border-radius:18px;box-shadow:0 22px 44px -22px rgba(15,23,42,.45);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s ease,transform .3s cubic-bezier(.2,.8,.2,1),visibility 0s linear .3s}
.nav-sub__menu::before{content:"";position:absolute;left:0;right:0;top:-16px;height:16px}
.no-js .nav-sub:hover .nav-sub__menu,.sage .nav-sub__toggle[aria-expanded=true]+.nav-sub__menu,.no-js .nav-sub:focus-within .nav-sub__menu{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.no-js .nav-sub:hover .nav-sub__toggle svg,.nav-sub__toggle[aria-expanded=true] svg{transform:rotate(180deg)}
.sage .nav-sub__menu a{display:block;padding:10px 14px;border-radius:12px;font-weight:500}
.sage .nav-sub__menu a:hover{background:var(--chip);color:var(--fg)}
.header-end{grid-column:3;grid-row:1;justify-self:end;display:flex;align-items:center;gap:24px}
.sage .desktop-book{min-height:0;padding:6px 0;background:none;border:0;border-radius:0;color:var(--fg);font-weight:550;text-decoration:underline;text-decoration-color:var(--teal-bright);text-decoration-thickness:2px;text-underline-offset:5px;white-space:nowrap;transform:none!important}
.sage .desktop-book:hover{background:none;color:var(--fg);text-decoration-color:var(--fg)}
.nav-pill{--fx-shadow:rgba(15,118,110,.4);display:inline-flex;align-items:center;height:44px;padding:0 22px;background:rgba(210,246,231,.8);color:var(--ink);font-weight:600;text-decoration:none}
.menu-toggle[hidden]{display:none!important}
.sage .nav-pill{border-radius:10px}
.sage .menu-toggle{grid-column:3;grid-row:1;justify-self:end;width:auto;min-height:44px;padding:0 18px;border:0;border-radius:12px;background:var(--chip);color:var(--fg);-webkit-text-fill-color:var(--fg)}
.sage .mobile-nav{left:var(--gutter);right:var(--gutter);top:calc(100% + 8px);padding:8px 22px 22px;pointer-events:auto;background:var(--bar-solid);border:1px solid var(--bar-line);border-radius:20px;box-shadow:0 22px 44px -22px rgba(15,23,42,.5)}
.sage .mobile-nav li+li{border-top-color:var(--line)}
@media (prefers-color-scheme:dark){
  .nav-pill{--fx-shadow:rgba(0,0,0,.6);background:rgba(117,250,178,.2);border-color:rgba(117,250,178,.4);color:#d2f6e7}
  .nav-pill::before{opacity:.3}
  .nav-pill::after{background:radial-gradient(closest-side,rgba(117,250,178,.3),rgba(117,250,178,0))}
  .sage .site-header.is-scrolled .site-header__inner{box-shadow:0 16px 36px -16px rgba(0,0,0,.8)}
}

/* Buttons: liquid glass. A tinted body with a soft top sheen and a light rim; on hover a light follows the pointer, the button lifts and the arrow nudges */
.fx{--fx-shadow:rgba(63,98,18,.55);position:relative;isolation:isolate;overflow:hidden;border-radius:14px;border:1px solid rgba(255,255,255,.55);box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 -1px 0 rgba(15,23,42,.1),0 1px 2px rgba(15,23,42,.08),0 12px 24px -14px var(--fx-shadow);transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s ease}
.fx::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,.08) 55%,rgba(255,255,255,0));pointer-events:none}
.fx::after{content:"";position:absolute;z-index:-1;left:var(--x,50%);top:var(--y,0);width:170px;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.75),rgba(255,255,255,0));transform:translate(-50%,-50%);opacity:0;transition:opacity .35s ease;pointer-events:none}
.fx:hover,.fx:focus-visible{transform:translateY(-2px);box-shadow:inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(15,23,42,.1),0 2px 4px rgba(15,23,42,.08),0 20px 32px -16px var(--fx-shadow)}
.fx:hover::after,.fx:focus-visible::after{opacity:1}
.fx:active{transform:scale(.98);transition-duration:.12s}
.fx svg{flex:none;width:18px;height:18px;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.fx:hover svg,.fx:focus-visible svg{transform:translateX(5px)}

/* Hero */
/* Her cut ends behind the works-with dock, a glass bar the same width and finish as the menu bar, so the two bars frame the hero. --dock-in is how much of her the dock covers */
.cover{position:relative;isolation:isolate;overflow:clip visible;--fs:min(12.6vw,calc((100svh - 90px) / 3.8),270px);--hfs:min(16.4vw,calc(var(--fs) * 1.33));--dock-h:clamp(52px,calc(var(--fs) * .34),64px);--dock-gap:clamp(16px,1.6vw,24px);--dock-in:calc(var(--fs) * .07);min-height:calc(var(--fs) * 3.45 + var(--dock-h) + var(--dock-gap) - var(--dock-in));background:var(--bg)}
.cover__title.display{position:absolute;z-index:2;left:var(--gutter);top:calc(var(--fs) * .3);margin:0;font-size:var(--hfs);line-height:.86;font-weight:850;text-transform:uppercase;letter-spacing:-.03em}
.cover__title>span{display:block}
.cover__title .cover__a{letter-spacing:-.04em}
/* AUTOMATE is set letter by letter (kerning restored with --k); each letter carries its slice of one gradient (--o is its offset, 5.297em the word width) so the color runs unbroken */
.cover__l{display:block;white-space:nowrap}
.cover__l i{display:inline-block;padding:.1em;margin:-.1em;margin-left:calc(var(--k,0em) - .1em);font-style:normal;transform-origin:0 100%;background:var(--glow);background-position:calc(var(--o) * -1em) 50%;background-size:11.653em 100%;background-origin:content-box;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
@media (prefers-color-scheme:dark){.cover__l i{background:none;color:var(--mint);-webkit-text-fill-color:var(--mint)}}
.cover__title .cover__b{margin:.03em 0 0 .05em;font-size:.42em;font-weight:200;font-style:italic;line-height:1;letter-spacing:-.03em;text-transform:none;color:var(--fg)}
.cover__b>span{display:inline-block}
.cover__stage{position:absolute;left:calc(var(--gutter) + var(--hfs) * 4.45 - var(--fs) * 1.29);bottom:calc(var(--dock-gap) + var(--dock-h) - var(--dock-in));width:calc(var(--fs) * 2.75);overflow:clip}
.scrollbar{position:fixed;z-index:1001;top:0;left:0;right:0;height:4px;pointer-events:none}
.scrollbar span{display:block;height:100%;background:#ff6b5a;transform:scaleX(0);transform-origin:left center}
.cover__me{position:relative;z-index:8;display:block;width:100%;height:auto;pointer-events:none}
.cover__band{position:relative;z-index:3;margin-left:var(--gutter);padding:calc(var(--fs) * .3 + var(--hfs) * 1.38 + 20px) 0 0}
.cover__cta{display:inline-flex;align-items:center;gap:14px;padding:13px 20px;background:var(--ink);color:#fff;font-weight:700;text-decoration:none;white-space:nowrap}

/* Platform strip: the systems the work gets built inside, in a glass dock that sits in front of her cut */
.platforms{--pg:clamp(40px,4.5vw,72px);position:absolute;z-index:9;left:var(--gutter);right:var(--gutter);bottom:var(--dock-gap);height:var(--dock-h);display:flex;align-items:center;gap:clamp(18px,2vw,32px);padding:0 10px 0 26px;border:1px solid var(--bar-line);border-radius:20px;background:var(--bar);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);box-shadow:var(--bar-shadow)}
.platforms__label{flex:none;margin:0;font-size:clamp(1rem,1.25vw,1.2rem);font-weight:300;font-style:italic;letter-spacing:-.01em;line-height:1;color:var(--fg)}
@media (prefers-color-scheme:dark){.platforms__label{color:var(--mint)}}
.platforms__window{flex:1;min-width:0;overflow:hidden;padding-left:24px;mask-image:linear-gradient(90deg,transparent,transparent 24px,#000 14%,#000 92%,transparent)}
.platforms__track{display:flex;gap:var(--pg);width:max-content;margin:0;padding:0;list-style:none}
.platforms__track li{display:inline-flex;align-items:center;gap:10px;white-space:nowrap;color:var(--fg);opacity:.72;font-size:clamp(1rem,1.3vw,1.25rem);font-weight:650;letter-spacing:-.01em;line-height:1.2}
.platforms__track svg{flex:none;width:1.15em;height:1.15em;fill:currentColor}
.platforms__track svg.wide{width:2.6em;height:1em}

/* Estimate: who it is for, and a white card that sends the estimate request itself, right under the hero */
.estimate{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;align-items:start;padding:clamp(48px,6vw,96px) var(--gutter) 0}
.cover__foot{grid-column:1/7;grid-row:1;align-self:start;padding:0}
.cover__facts{display:grid;gap:8px;margin:0 0 26px;padding:0;list-style:none}
.cover__facts li{position:relative;padding-left:1.5em;font-size:clamp(1.02rem,1.25vw,1.18rem);line-height:1.35}
.cover__facts li::before{content:"";position:absolute;left:0;top:.5em;width:.7em;height:.32em;border-left:2.5px solid var(--brand);border-bottom:2.5px solid var(--brand);transform:rotate(-45deg)}
/* Every 3px rule is drawn by a pseudo-element so it can draw itself across on scroll */
.steps::before,.faq-list::before,.facts::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--fg);transform-origin:0 50%}
.cover__form{grid-column:7/-1;grid-row:1;align-self:start;width:100%;margin:0;padding:clamp(18px,1.8vw,26px) clamp(20px,2vw,30px);display:grid;grid-template-columns:minmax(0,1.3fr) minmax(9.2rem,.7fr) minmax(0,1.3fr);column-gap:22px;align-items:end;background:#fff;color:var(--ink);z-index:3;border:1px solid rgba(15,23,42,.06);border-radius:20px;box-shadow:0 1px 2px rgba(15,23,42,.05),0 30px 60px -32px rgba(15,23,42,.35)}
.cover__form h2{grid-column:1/-1;margin:0 0 4px;font-weight:400;font-size:clamp(1.5rem,2vw,2.1rem);line-height:1.05;letter-spacing:-.03em}
.cover__form h2 b{font-weight:850;text-transform:uppercase;letter-spacing:-.02em}
.cover__form label{display:block;white-space:nowrap;margin-top:10px;font-size:.86rem;font-weight:700;letter-spacing:.01em}
.cover__form input{display:block;width:100%;margin-top:6px;padding:10px 0 8px;border:0;border-bottom:2px solid rgba(15,23,42,.55);background:transparent;color:inherit;font-size:1.05rem;border-radius:0;transition:border-color .25s ease,box-shadow .25s ease}
.cover__form input::placeholder{color:rgba(15,23,42,.62)}
.cover__form input:focus{outline:none;border-bottom-color:var(--ink);box-shadow:0 2px 0 var(--ink)}
.cover__form button{grid-column:1/-1;justify-self:start;display:flex;justify-content:space-between;align-items:center;gap:16px;width:fit-content;min-width:200px;margin-top:14px;padding:14px 20px;white-space:nowrap;background:var(--lime);color:var(--ink);font-weight:700;font-size:1rem;cursor:pointer}
.cover__form p{grid-column:1/-1;margin:12px 0 0;font-size:.86rem;color:rgba(15,23,42,.72)}
/* The first number arrives while typing: hours a year at 10 minutes each */
.cover__form .cover__calc{min-height:1.45em;margin:14px 0 0;font-size:1.02rem;font-weight:650;letter-spacing:-.01em;color:inherit}
.cover__form .form-status{margin:12px 0 0;font-size:.95rem}
.cover__form .form-status:empty{min-height:0;margin:0}
.cover__form .cover__next{margin:8px 0 0;font-size:.95rem}
.cover__form .cover__next a{color:inherit}
.cover__form a{color:inherit}
@media (prefers-color-scheme:dark){
  .cover__form{background:linear-gradient(150deg,rgba(42,210,201,.16),rgba(117,250,178,.06));color:#f1f5f9;border-color:rgba(117,250,178,.22);box-shadow:0 30px 60px -32px rgba(0,0,0,.8)}
  .cover__form .form-status.is-success{color:var(--mint)}
  .cover__form .form-status.is-error{color:#fca5a5}
  .cover__form input{border-bottom-color:rgba(241,245,249,.4)}
  .cover__form input::placeholder{color:rgba(241,245,249,.66)}
  .cover__form input:focus{border-bottom-color:var(--lime);box-shadow:0 2px 0 var(--lime)}
  .cover__form p{color:rgba(241,245,249,.78)}
  .sage .cover__form :focus-visible{outline-color:var(--lime)}
}

/* Steps and prices */
.feature{padding:clamp(70px,9vw,140px) var(--gutter) clamp(40px,5vw,80px)}
.feature__head{max-width:14ch;margin:0 0 clamp(36px,5vw,72px);font-size:clamp(2.8rem,6.2vw,6.6rem);color:var(--fg)}
.feature__head b{white-space:nowrap}
.steps{position:relative;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr) minmax(0,1fr);gap:0;margin:0;padding:3px 0 0;list-style:none;counter-reset:step}
.steps li{position:relative;counter-increment:step;display:flex;flex-direction:column;align-items:flex-start;padding:22px clamp(18px,2.4vw,40px) 6px}
.steps li>p:not(.price){margin:0 0 18px}
.steps li>a{margin-top:auto}
.steps li:first-child{padding-left:0}
.steps li+li{border-left:3px solid transparent}
.steps li+li::after{content:"";position:absolute;left:-3px;top:0;bottom:0;width:3px;background:var(--fg);transform-origin:50% 0}
.steps li::before{content:counter(step);display:block;width:fit-content;font-variant-numeric:tabular-nums;font-weight:300;font-size:clamp(2.6rem,3.8vw,4rem);line-height:.9;letter-spacing:-.04em;background:var(--glow-ink);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
@media (prefers-color-scheme:dark){.steps li::before{background:none;color:var(--fg);-webkit-text-fill-color:var(--fg)}}
.steps h3{margin:12px 0 6px;font-size:clamp(1.35rem,1.8vw,1.75rem);letter-spacing:-.025em;line-height:1.1}
.steps .price{position:relative;z-index:0;width:fit-content;margin:0 0 12px;font-weight:700;color:var(--fg)}
.steps .price::after{content:"";position:absolute;z-index:-1;left:-4px;right:-6px;top:52%;height:44%;background:var(--mint);transform-origin:0 50%}
@media (prefers-color-scheme:dark){.steps .price{color:var(--mint)}.steps .price::after{opacity:.2}}
.steps p{font-size:1rem;line-height:1.55;max-width:38ch}
.steps li>p:not(.price),.feature__care,.questions details p,.own li,.profile__copy>p:not(.profile__links){font-size:var(--t-body)}
/* Text links: a turquoise line that fills up like a marker on hover */
.steps a,.profile__links a{font-weight:700;color:var(--fg);text-decoration:none;background:linear-gradient(var(--hl),var(--hl)) 0 100%/100% 2px no-repeat;transition:background-size .45s var(--ease),color .3s ease}
.steps a:hover,.steps a:focus-visible,.profile__links a:hover,.profile__links a:focus-visible{background-size:100% 42%}
@media (prefers-color-scheme:dark){.steps a:hover,.steps a:focus-visible,.profile__links a:hover,.profile__links a:focus-visible{background-size:100% 100%;color:var(--ink)}}
.feature__care{margin:clamp(40px,5vw,70px) 0 0;max-width:62ch;font-size:1.05rem;border-left:0;padding-top:16px;border-top:1px solid var(--line)}

/* What you own: navy block pulled across the grid */
.own{position:relative;margin:clamp(70px,9vw,140px) var(--gutter) 0 calc(var(--gutter) + 18%);padding:clamp(34px,4vw,64px);background:var(--block);color:#fff;border-radius:20px}
.own h2{margin:0 0 22px;font-size:clamp(2.3rem,4.2vw,4.4rem);color:#fff}
.own h2 b{background-image:var(--glow)}
@media (prefers-color-scheme:dark){.own h2 b{background:none}}
.own ul{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 40px}
.own li{max-width:none;padding-top:14px;border-top:2px solid rgba(42,210,201,.45);font-size:1.02rem;line-height:1.5;color:#e2e8f0}

/* Ashley */
.profile{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,4vw,70px);align-items:end;padding:clamp(70px,9vw,140px) var(--gutter)}
.profile__photo{position:relative;align-self:stretch;min-height:clamp(380px,46vw,720px)}
.profile__photo::before{content:"";position:absolute;z-index:0;inset:18% 0 0 0;background:var(--mint)}
@media (prefers-color-scheme:dark){.profile__photo::before{background:rgba(117,250,178,.16)}}
.profile__photo img{position:absolute;z-index:3;bottom:0;left:50%;transform:translateX(-50%);height:auto;width:auto;max-height:100%;max-width:100%}
.profile__copy{position:relative;z-index:1;padding-bottom:clamp(30px,4vw,70px)}
.profile__copy h2{position:relative;z-index:1;margin:0 0 20px -15vw;font-size:clamp(2.8rem,6.6vw,6.8rem);color:var(--fg)}
.profile__copy p{font-size:1.08rem;line-height:1.6;max-width:56ch}
.facts{position:relative;margin:26px 0 20px;padding:3px 0 0;list-style:none}
.facts li{max-width:none;display:grid;grid-template-columns:7em minmax(0,1fr);gap:18px;padding:14px 0;border-bottom:1px solid var(--line);font-size:.98rem}
.nw{white-space:nowrap}
.facts b{font-weight:700;font-size:1.2rem;line-height:1.2;letter-spacing:-.015em;color:var(--fg);font-variant-numeric:tabular-nums}
.profile__links a{margin-right:22px}

/* Questions */
.questions{margin-top:clamp(30px,4vw,60px);padding:clamp(56px,7vw,110px) var(--gutter) clamp(50px,6vw,90px);display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(24px,4vw,70px);background:var(--soft)}
.questions h2{margin:0;font-size:clamp(2.8rem,5.4vw,5.6rem);color:var(--fg);position:sticky;top:110px;align-self:start}
.questions .faq-list{position:relative;padding-top:3px}
.questions details{border-bottom:1px solid var(--line)}
.questions summary{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:baseline;padding:20px 0;cursor:pointer;list-style:none;font-size:clamp(1.12rem,1.5vw,1.4rem);font-weight:500;letter-spacing:-.015em;transition:color .25s ease}
.questions summary:hover{color:var(--fg);text-decoration:underline 2px var(--teal-bright);text-underline-offset:5px}
.questions summary::-webkit-details-marker{display:none}
.questions summary::after{content:"";width:12px;height:12px;margin-right:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-3px);transition:transform .4s var(--ease)}
.questions details[open] summary::after{transform:rotate(225deg)}
.questions details p{margin:0;padding-bottom:22px;max-width:60ch;line-height:1.6}

/* Last call: the bright gradient from the headline, slowly moving, with navy words and the navy glass button from the hero */
.closer{position:relative;isolation:isolate;padding:clamp(60px,8vw,130px) var(--gutter);background:#2ad2c9;color:var(--ink);overflow:clip}
.closer::before{content:"";position:absolute;z-index:-1;top:0;bottom:0;left:0;width:220%;background:var(--glow)}
.closer h2{margin:0;max-width:12ch;font-size:clamp(3.4rem,8.4vw,9rem);color:var(--ink)}
.closer h2 b{white-space:nowrap;background:none;color:var(--ink);-webkit-text-fill-color:var(--ink);animation:none}
.closer p{max-width:46ch;margin:22px 0 28px;font-size:clamp(1.05rem,1.4vw,1.3rem);line-height:1.5}
.closer__actions{display:flex;flex-wrap:wrap;gap:16px 28px;align-items:center}
.closer__btn{--fx-shadow:rgba(15,23,42,.5);display:inline-flex;align-items:center;gap:18px;padding:17px 24px;background:var(--ink);color:#fff;font-weight:700;text-decoration:none;border-color:rgba(255,255,255,.16)}
.closer__btn::before{opacity:.3}
.closer__btn::after{background:radial-gradient(closest-side,rgba(42,210,201,.55),rgba(42,210,201,0))}
.closer__btn svg{color:#2ad2c9}
.closer a:not(.closer__btn){padding:2px .12em;margin:0 -.12em;color:var(--ink);font-weight:700;text-decoration:none;background:linear-gradient(var(--ink),var(--ink)) 0 100%/100% 2px no-repeat;border-radius:3px;transition:background-size .45s var(--ease),color .3s ease}
.closer a:not(.closer__btn):hover,.closer a:not(.closer__btn):focus-visible{background-size:100% 100%;color:#fff}
.sage .site-footer{margin-top:0;padding-left:var(--gutter);padding-right:var(--gutter)}
.sage .footer-brand img{width:min(100%,300px);margin-left:-6px}
.sage .footer-brand p{margin-top:16px;max-width:30ch;text-wrap:balance}
/* What SAGE stands for, under the footer logo: small mint caps, dots drawn between the words and not read aloud */
.sage .footer-brand .footer-acronym{display:flex;flex-wrap:wrap;gap:4px 0;max-width:none;margin-top:14px;color:var(--mint);font-size:.78rem;font-weight:650;letter-spacing:.16em;line-height:1.45;text-transform:uppercase}
.footer-acronym span{white-space:nowrap}
.footer-acronym span+span::before{content:"\2022" / "";margin:0 .7em;opacity:.7}
.sage .footer-brand .footer-acronym+p{margin-top:12px}
@media (max-width:420px){.sage .footer-brand .footer-acronym{font-size:.72rem;letter-spacing:.1em}.footer-acronym span+span::before{margin:0 .5em}}
/* Narrowest phones: two words a line, so no line starts with a dot */
@media (max-width:359px),(min-width:721px) and (max-width:1199px){.footer-acronym::after{content:"";flex-basis:100%;order:1}.footer-acronym span:nth-child(n+3){order:2}.footer-acronym span:nth-child(3)::before{content:none}}
/* Dark mode: pages that end without the mint closer still need an edge where the footer starts */
@media (prefers-color-scheme:dark){main:not(:has(.closer))+.site-footer{background:#0a1020;border-top:1px solid rgba(241,245,249,.09)}}
main[tabindex="-1"]:focus{outline:none}
@media (max-width:720px){.sage .site-footer li a{display:inline-block;padding-block:11px}.sage .site-footer li+li{margin-top:0}}
@media (forced-colors:active){.sage .footer-brand img{forced-color-adjust:none;background:#0f172a;border-radius:8px;padding:6px 8px}}
@media (max-height:500px){.sage .site-header{position:relative}}

/* One grid below the hero: the FAQ list and the KEEP text start on column 5, the profile copy on column 7 with the estimate card */
@media (min-width:721px){
  .questions{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px}
  .questions h2{grid-column:1/5}
  .questions .faq-list{grid-column:5/-1}
  .profile{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px}
  .profile__photo{grid-column:1/6}
  .profile__copy{grid-column:7/-1}
  .profile__copy h2{margin-left:calc((100vw - 2 * var(--gutter) - 220px) / -12 - 20px)}
}
@media (min-width:1101px){
  .own{margin-left:calc(var(--gutter) + (100% - 2 * var(--gutter) - 220px) / 3 + 80px - clamp(34px,4vw,64px))}
  .own ul{grid-template-columns:repeat(3,minmax(0,1fr))}
  /* Closing section: title left, words and buttons right, bottom-aligned to the title */
  .closer{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:20px;align-items:end}
  .closer h2{grid-column:1/7;grid-row:1/3;max-width:none}
  .closer p{grid-column:7/-1;grid-row:1;margin:0 0 26px}
  .closer__actions{grid-column:7/-1;grid-row:2;padding-bottom:.12em}
}
/* Tablet: each step is one row, name and price left, words right */
@media (min-width:721px) and (max-width:1000px){
  .steps{grid-template-columns:1fr;padding-top:0}
  .steps::before,.steps li+li::after{display:none}
  .steps li,.steps li:first-child{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:28px;align-items:start;padding:22px 0 26px;border-top:var(--rule);border-left:0}
  .steps li::before{grid-column:1;grid-row:1}
  .steps h3{grid-column:1;grid-row:2}
  .steps .price{grid-column:1;grid-row:3}
  .steps li>p:not(.price){grid-column:2;grid-row:1/4;margin:0;max-width:none}
  .steps li>a{grid-column:2;grid-row:4;margin-top:14px;justify-self:start}
  .steps li+li{border-left:0}
}

/* Narrow desktop: shorter booking link; the form button drops under the two fields */
@media (max-width:1320px){
  .cover__form{grid-template-columns:minmax(0,1.6fr) minmax(8.6rem,.8fr)}
  .cover__email{grid-column:1/-1}
}
@media (max-width:1200px){
  .desktop-book span{display:none}
  .sage .desktop-nav>ul{gap:24px}
  .sage .brand{width:156px}
}
/* Tablet: logo left, menu button right, inside the same bar */
@media (max-width:1100px){
  .cover__foot{grid-column:1/-1}
  .cover__form{grid-column:1/-1;grid-row:2;margin-top:32px}
  .own{margin-left:var(--gutter)}
}
@media (max-width:980px){
  .header-end{display:none}
  .sage .site-header__inner{grid-template-columns:1fr auto;padding:0 8px 0 20px}
  .sage .brand{grid-column:1;justify-self:start}
  .sage .menu-toggle{grid-column:2}
}
/* Phone */
@media (max-width:720px){
  .sage .site-header{padding-top:10px}
  .sage .site-header__inner{height:58px;border-radius:18px}
  .sage .brand{width:150px}
  .cover{--fs:15.4vw;--hfs:var(--fs);--dock-h:52px;--dock-in:7px;min-height:0;padding:18px var(--gutter) var(--dock-gap);display:flex;flex-direction:column}
  .cover__title.display{position:relative;left:auto;top:auto;order:1}
  .cover__title .cover__b{margin:.06em 0 0;font-size:.62em}
  .cover__stage{position:relative;z-index:2;order:3;left:auto;bottom:auto;width:66vw;margin:calc(var(--fs) * -1.55) -11vw 0 auto}
  .cover__cta{padding:12px 16px;gap:10px}
  .cover__band{order:2;width:auto;margin:0;padding:40px 0 0;z-index:9}
  .platforms{position:relative;order:4;left:auto;right:auto;bottom:auto;margin:calc(var(--dock-in) * -1) 0 0;padding:0 12px 0 18px;border-radius:18px}
  .platforms__label{font-size:1rem}
  .estimate{display:flex;flex-direction:column;padding-top:0}
  .cover__form{order:1}
  .cover__foot{order:2;padding-top:32px}
  .cover__form{width:auto;align-self:stretch;margin:0 calc(var(--gutter) * -1);padding:26px var(--gutter);display:block;border-radius:0;border-width:1px 0}
  .cover__form button{margin-top:18px}
  .cover__form{box-shadow:none}
  .steps{padding-top:0}
  .steps::before,.steps li+li::after{display:none}
  .steps{grid-template-columns:1fr}
  .steps li,.steps li:first-child{padding:20px 0 6px;border-top:var(--rule)}
  .steps li+li{border-left:0}
  .profile__copy h2{margin-left:0}
  .own{margin:56px 0 0;padding:34px var(--gutter);border-radius:0}
  .own ul{grid-template-columns:1fr}
  .profile{grid-template-columns:1fr}
  .profile__photo{min-height:440px}
  .questions{grid-template-columns:1fr}
  .questions h2{position:static}
}

/* Hero button: glass in the text color of each theme, so AUTOMATE carries all the color. Navy with a turquoise arrow and glow on light, white with a teal arrow on dark */
.cover__cta{--fx-shadow:rgba(15,23,42,.5);border-color:rgba(255,255,255,.16)}
.cover__cta::before{opacity:.3}
.cover__cta::after{background:radial-gradient(closest-side,rgba(42,210,201,.55),rgba(42,210,201,0))}
.cover__cta svg{color:#2ad2c9}
@media (prefers-color-scheme:dark){
  .cover__cta{--fx-shadow:rgba(0,0,0,.6);background:var(--fg);color:var(--ink);border-color:rgba(255,255,255,.7)}
  .cover__cta::before{opacity:1}
  .cover__cta::after{background:radial-gradient(closest-side,rgba(42,210,201,.35),rgba(42,210,201,0))}
  .cover__cta svg{color:var(--teal)}
}

/* Motion. The hero entrance plays from CSS alone; everything below the hero waits for home.js (html.mo) so a failed script never hides the page */
@media (prefers-reduced-motion:no-preference){
  .sage:has(.cover) .site-header__inner{animation:drop .9s var(--ease) .05s backwards}
  .cover__l{clip-path:inset(-1em -1em 0 -1em)}
  /* The dock is there from the first frame, so she rises out of it and her cut never shows on blank paper.
     The color loops have an end: AUTOMATE flows there and back once, each heavy title word flows once after it rises */
  .cover__l i{animation:rise 1.1s var(--ease) calc(.12s + var(--n) * 55ms) backwards,automate-flow 14s ease-in-out 1.8s 2 alternate}
  .cover__b>span{animation:blur-in 1.1s var(--ease) calc(.62s + var(--n) * 110ms) backwards}
  .cover__me{animation:rise-in 1.2s var(--ease) .1s backwards}
  .cover__cta{animation:fade-up .9s var(--ease) 1s backwards}
  .platforms__track{animation:platforms 34s linear infinite}
  .closer::before{animation:glow-slide 18s ease-in-out infinite alternate}
  html.mo .display.in b{animation:glow-flow 8s ease-in-out .6s 2 alternate}
  html.mo .closer .display b{animation:none}

  /* Questions open and close smoothly where the browser can animate to auto height */
  .questions{interpolate-size:allow-keywords}
  .questions details::details-content{block-size:0;overflow-y:clip;transition:block-size .5s var(--ease),content-visibility .5s allow-discrete}
  .questions details[open]::details-content{block-size:auto}
  .questions details p{opacity:0;translate:0 -8px;transition:opacity .4s ease .08s,translate .5s var(--ease)}
  .questions details[open] p{opacity:1;translate:0 0}

  html.mo .sage .reveal{opacity:1;transform:none}
  html.mo :is(.display,.article-hero h1) .wi{transform:translateY(115%) rotate(4deg);transform-origin:0 100%;transition:transform 1.1s var(--ease) calc(var(--n) * 75ms)}
  html.mo :is(.display,.article-hero h1).in .wi{transform:none}
  html.mo :is(.steps,.faq-list,.facts)::before{transform:scaleX(0);transition:transform 1.3s var(--ease)}
  html.mo :is(.steps,.faq-list,.facts).in::before{transform:none}

  html.mo .cover__facts li{opacity:0;transform:translateX(-16px);transition:opacity .7s var(--ease),transform .9s var(--ease)}
  html.mo .cover__facts li::before{clip-path:inset(0 100% 0 0);transition:clip-path .5s cubic-bezier(.65,0,.35,1) .3s}
  html.mo .cover__facts.in li{opacity:1;transform:none}
  html.mo .cover__facts.in li::before{clip-path:inset(0)}
  html.mo .cover__facts li:nth-child(2){transition-delay:.18s}
  html.mo .cover__facts li:nth-child(2)::before{transition-delay:.48s}
  html.mo .cover__facts li:nth-child(3){transition-delay:.36s}
  html.mo .cover__facts li:nth-child(3)::before{transition-delay:.66s}
  html.mo .facts li{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease) .1s,transform .9s var(--ease) .1s}
  html.mo .facts.in li{opacity:1;transform:none}
  html.mo .facts li:nth-child(2){transition-delay:.2s}
  html.mo .facts li:nth-child(3){transition-delay:.3s}
  html.mo .cover__form{opacity:0;transform:translateY(48px) scale(.96);transition:opacity .9s var(--ease),transform 1.2s var(--ease)}
  html.mo .cover__form.in{opacity:1;transform:none}

  html.mo .steps li{opacity:0;transform:translateY(44px);transition:opacity .9s var(--ease),transform 1.1s var(--ease)}
  html.mo .steps.in li{opacity:1;transform:none}
  html.mo .steps li:nth-child(2){transition-delay:.12s}
  html.mo .steps li:nth-child(3){transition-delay:.24s}
  html.mo .steps li+li::after{transform:scaleY(0);transition:transform 1s var(--ease) .35s}
  html.mo .steps li:nth-child(3)::after{transition-delay:.5s}
  html.mo .steps.in li+li::after{transform:none}
  html.mo .steps .price::after{transform:scaleX(0);transition:transform .7s cubic-bezier(.65,0,.35,1) .65s}
  html.mo .steps li:nth-child(2) .price::after{transition-delay:.8s}
  html.mo .steps li:nth-child(3) .price::after{transition-delay:.95s}
  html.mo .steps.in .price::after{transform:none}

  html.mo .faq-list details{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .9s var(--ease)}
  html.mo .faq-list.in details{opacity:1;transform:none}
  html.mo .faq-list details:nth-child(2){transition-delay:.07s}
  html.mo .faq-list details:nth-child(3){transition-delay:.14s}
  html.mo .faq-list details:nth-child(4){transition-delay:.21s}
  html.mo .faq-list details:nth-child(5){transition-delay:.28s}
  html.mo .faq-list details:nth-child(6){transition-delay:.35s}
  html.mo .faq-list details:nth-child(7){transition-delay:.42s}
  html.mo .faq-list details:nth-child(8){transition-delay:.49s}
  html.mo .faq-list details:nth-child(9){transition-delay:.56s}

  html.mo .own{clip-path:inset(7% 4% 7% 4% round 20px);transition:clip-path 1.4s var(--ease)}
  html.mo .own.in{clip-path:inset(0 round 20px)}
  html.mo .own li{opacity:0;transform:translateY(20px);transition:opacity .8s var(--ease) .35s,transform 1s var(--ease) .35s}
  html.mo .own.in li{opacity:1;transform:none}
  html.mo .own li:nth-child(2){transition-delay:.45s}
  html.mo .own li:nth-child(3){transition-delay:.55s}
  html.mo .own li:nth-child(4){transition-delay:.65s}

  html.mo .profile__photo{clip-path:inset(-50% -20% 0 -20%)}
  html.mo .profile__photo::before{clip-path:inset(100% 0 0);transition:clip-path 1.2s var(--ease)}
  html.mo .profile__photo.in::before{clip-path:inset(0)}
  html.mo .profile__photo img{translate:0 22%;transition:translate 1.5s var(--ease) .2s}
  html.mo .profile__photo.in img{translate:0 0}

  html.mo :is(.feature__care,.profile__copy>p,.closer>p,.closer__actions){opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform 1.1s var(--ease)}
  html.mo :is(.feature__care,.profile__copy>p,.closer>p,.closer__actions).in{opacity:1;transform:none}
  html.mo .closer__actions{transition-delay:.12s}

  /* Anything still looping pauses while it is off screen (home.js sets .is-off) */
  .cover.is-off .cover__l i,html.mo .display.is-off b,.closer.is-off::before{animation-play-state:paused}
}
@media (prefers-reduced-motion:no-preference) and (prefers-color-scheme:dark){
  /* In dark mode these words are flat mint, so a gradient loop would only spend frames */
  .cover__l i{animation-name:rise}
  html.mo .display.in b{animation:none}
}
@media (prefers-reduced-motion:no-preference) and (max-width:720px){
  html.mo .own{clip-path:inset(5% 0)}
  html.mo .own.in{clip-path:inset(0)}
}
/* Reduced motion: the strip stands still, so every platform shows, wrapping onto a second line where needed */
@media (prefers-reduced-motion:reduce){
  .platforms__window{-webkit-mask-image:none;mask-image:none;padding-left:0}
  .platforms__track{flex-wrap:wrap;width:auto;row-gap:8px}
  .platforms__track li[aria-hidden]{display:none}
  .platforms{height:auto;min-height:var(--dock-h);padding-block:10px}
}
html:has(body.menu-open){overflow:hidden}
@keyframes rise{from{transform:translateY(110%) rotate(8deg)}}
@keyframes blur-in{from{opacity:0;filter:blur(14px);transform:translateY(.3em)}}
@keyframes rise-in{from{transform:translateY(24%);opacity:0}30%{opacity:1}}
@keyframes fade-up{from{opacity:0;transform:translateY(18px)}}
@keyframes drop{from{opacity:0;transform:translateY(-28px)}}
@keyframes platforms{to{transform:translateX(calc(-50% - var(--pg) / 2))}}
@keyframes automate-flow{to{background-position:calc(var(--o) * -1em - 6.356em) 50%}}
@keyframes glow-flow{to{background-position:100% 50%}}
@keyframes glow-slide{to{transform:translateX(-54.545%)}}

/* Smooth glide scrolling (Lenis, started in home.js) */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis [data-lenis-prevent]{overscroll-behavior:contain}
.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}

/* Text links and form states live here so the home page (which loads only this file) matches the inner pages */
.text-link{font-weight:700;color:var(--fg);text-decoration:none;background:linear-gradient(var(--hl),var(--hl)) 0 100%/100% 2px no-repeat;transition:background-size .45s var(--ease),color .3s ease}
.text-link:hover,.text-link:focus-visible{background-size:100% 42%}
@media (prefers-color-scheme:dark){.text-link:hover,.text-link:focus-visible{background-size:100% 100%;color:var(--ink)}}
.cover__form .form-status.is-success,.msg-form .form-status.is-success{padding:12px 14px;border-radius:12px;background:var(--mint-tint);color:var(--ink);font-weight:650}
@media (prefers-color-scheme:dark){.cover__form .form-status.is-success,.msg-form .form-status.is-success{background:rgba(117,250,178,.14);color:#f1f5f9}}
.cover__form [aria-invalid=true],.msg-form [aria-invalid=true]{border-bottom-color:#b91c1c}
@media (prefers-color-scheme:dark){.cover__form [aria-invalid=true],.msg-form [aria-invalid=true]{border-bottom-color:#fca5a5}}
/* Moving between pages: the menu bar holds still while the page under it cross-fades (browsers without view transitions just load the page) */
@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}.sage .site-header{view-transition-name:site-header}}
.sage .site-footer .footer-note{margin:14px 0 0;font-size:.8rem;opacity:.6;max-width:none}
/* Accessibility review, 2026-11-03 */
/* Works-with strip: a pause button (WCAG 2.2.2); hover and keyboard focus also hold it still */
.platforms__pause{flex:none;display:grid;place-items:center;width:36px;height:36px;margin-left:4px;padding:0;border:0;border-radius:10px;background:var(--chip);color:var(--fg);cursor:pointer}
.platforms__pause svg{width:14px;height:14px;fill:currentColor}
.platforms__pause[aria-pressed=true] .i-pause,.platforms__pause[aria-pressed=false] .i-play{display:none}
.platforms.is-paused .platforms__track,.platforms:hover .platforms__track,.platforms:focus-within .platforms__track{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.platforms__pause{display:none}}
/* The phone menu scrolls inside itself on short screens and at high zoom */
.sage .mobile-nav{max-height:calc(100dvh - 90px);overflow-y:auto;overscroll-behavior:contain}
/* Dark mode: the Contact pill keeps its contrast on hover and focus */
@media (prefers-color-scheme:dark){.sage .nav-pill::after{background:radial-gradient(closest-side,rgba(117,250,178,.15),rgba(117,250,178,0))}}
/* Wider letter and word spacing (WCAG 1.4.12) wraps headline words instead of cutting them; normal spacing renders as before */
.cover__l{white-space:normal}
.display b{overflow-wrap:anywhere}
.feature__head b,.closer h2 b{white-space:normal}
@media (min-width:721px){.cover{padding-top:calc(var(--fs) * .3);padding-bottom:calc(var(--dock-h) + var(--dock-gap) * 2)}.cover__title.display{position:relative;left:auto;top:auto;margin:0 var(--gutter)}.cover__band{padding-top:calc(var(--hfs) * .0874 + 20px)}}
/* Narrow phones: long button labels wrap instead of clipping */
@media (max-width:420px){.sage .btn,.sage .closer__btn,.sage .cover__cta{white-space:normal}}
@media (prefers-reduced-motion:reduce) and (max-width:420px){.platforms{flex-wrap:wrap;row-gap:6px;padding-block:12px}.platforms__label{flex-basis:100%}}
/* Phones: a glass pill along the bottom when no other button is on screen (ui.js shows it) */
.dock-cta{display:none}
@media (max-width:720px){
  .dock-cta{display:flex;justify-content:center;align-items:center;gap:12px;position:fixed;left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:40;min-height:48px;padding:12px 20px;border-radius:999px;background:var(--ink);color:#fff;font-weight:700;text-decoration:none;box-shadow:0 16px 32px -14px rgba(15,23,42,.6);transform:translateY(160%);transition:transform .3s ease}
  .dock-cta svg{width:18px;height:18px;color:#2ad2c9}
  .dock-cta.is-on{transform:none}
  body.menu-open .dock-cta{display:none}
}
@media (max-width:720px) and (prefers-color-scheme:dark){.dock-cta{background:#f1f5f9;color:var(--ink)}.dock-cta svg{color:var(--teal)}}
@media (prefers-reduced-motion:reduce){.dock-cta{transition:none}}
.msg-form .form-hint{margin:4px 0 0;font-size:.86rem;opacity:.8}
/* Dark mode: the closing band is quieter than the hero (her choice, 2026-11-03); light mode stays bright */
@media (prefers-color-scheme:dark){
  .closer{background:#1e293b;color:#f1f5f9}
  .closer::before{opacity:.16}
  .closer h2{color:#f1f5f9}
  .closer h2 b{color:var(--mint);-webkit-text-fill-color:var(--mint)}
  .closer a:not(.closer__btn){color:#f1f5f9;background-image:linear-gradient(var(--mint),var(--mint))}
  .closer a:not(.closer__btn):hover,.closer a:not(.closer__btn):focus-visible{color:var(--ink)}
  .closer__btn{background:#f1f5f9;color:var(--ink);border-color:rgba(255,255,255,.7)}
  .closer__btn svg{color:var(--teal)}
  .sage .closer :focus-visible{outline-color:var(--lime)}
}
