/*
  Direction A · Eucalypt. Motion language "Unfold".
  Radius rule: buttons and chips are pills; photo frames carry one leaf-curve corner (top-right); panels are 2px.
  Hover (fine pointers) and scroll-focus (touch) drive the SAME sequence, so phones get the motion too.
*/
:root{
  --ground:#EDEFE9; --surface:#F8F9F5; --ink:#16211D; --muted:#56615B;
  --brand:#1F4A3F; --brand-deep:#173A31; --amber:#E0A43A; --on-brand:#EDEFE9;
  --line:rgba(22,33,29,.14); --tint:rgba(31,74,63,.08);
  --display:"Funnel Display","Avenir Next","Segoe UI",system-ui,sans-serif;
  --text:"Funnel Sans","Avenir Next","Segoe UI",system-ui,sans-serif;
  --ease-out:cubic-bezier(.23,1,.32,1); --ease-in-out:cubic-bezier(.77,0,.175,1);
  --pad:clamp(20px,5vw,56px);
  --wrap:min(1200px, 100% - 2*var(--pad));
  --leaf:2px 160px 2px 2px;
  --logo:var(--brand); --accent-ui:var(--brand); --dirs-bg:var(--ink); --dirs-fg:#EDEFE9;
  --sel-bg:var(--brand); --sel-fg:var(--on-brand); --scroll-thumb:rgba(22,33,29,.35);
  --ft-bg:var(--ink); --ft-fg:#F8F9F5; --ft-muted:#B9C3BE;
  color-scheme:light;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:84px}
body{margin:0;background:var(--ground);color:var(--ink);font:400 17px/1.6 var(--text);-webkit-tap-highlight-color:transparent;overflow-x:clip}
img{display:block;max-width:100%}
a{color:inherit}
h1,h2,h3{font-family:var(--display);font-weight:500;margin:0;text-wrap:balance}
p{margin:0}
.wrap{width:var(--wrap);margin-inline:auto}
:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:4px}

/* Placeholder marker: anything A7 must confirm before launch */
.ph{display:inline-flex;align-items:center;font:600 11px/1 var(--text);letter-spacing:.06em;text-transform:uppercase;color:#6A4B0E;border:1px dashed #B07A1C;background:rgba(224,164,58,.16);padding:4px 7px;border-radius:3px;vertical-align:middle;white-space:nowrap}


/* ---------- Header ---------- */
.sentinel{position:absolute;top:0;height:1px;width:1px}
.hdr{position:sticky;top:0;z-index:20;background:rgba(237,239,233,.88);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 0 transparent;transition:box-shadow .3s ease}
.hdr.stuck{box-shadow:0 1px 0 var(--line)}
.hdr>.wrap{display:flex;align-items:center;gap:20px;height:68px}
.nav{display:flex;gap:2px}
.nav a{text-decoration:none;font-weight:500;font-size:15px;padding:12px;position:relative}
.nav a::after{content:"";position:absolute;left:12px;right:12px;bottom:9px;height:1.5px;background:var(--brand);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease-out)}
.tel{display:inline-flex;align-items:center;gap:8px;font-weight:600;text-decoration:none;font-variant-numeric:tabular-nums;padding:12px 4px;white-space:nowrap}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 22px;border-radius:999px;border:0;background:var(--brand);color:var(--on-brand);font:600 15px/1 var(--text);text-decoration:none;cursor:pointer;overflow:hidden;isolation:isolate;white-space:nowrap;transition:transform .14s var(--ease-out)}
.btn::before{content:"";position:absolute;inset:0;background:var(--ink);clip-path:inset(0 100% 0 0);transition:clip-path .5s var(--ease-out);z-index:-1}
.btn .arr{display:inline-block;transition:transform .5s var(--ease-out)}
.btn:active{transform:scale(.97)}
.btn:active::before{clip-path:inset(0);transition-duration:.18s}
.btn--line{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}
.btn--line::before{background:var(--tint)}
.menu-btn{display:none;width:48px;height:48px;border:0;border-radius:999px;background:transparent;color:var(--ink);cursor:pointer;place-items:center;transition:background .2s ease}
.menu-btn:active{background:var(--tint)}
.menu-btn span{display:block;width:20px;height:1.5px;background:currentColor;position:relative;transition:transform .35s var(--ease-out),background .2s}
.menu-btn span::before,.menu-btn span::after{content:"";position:absolute;left:0;width:20px;height:1.5px;background:var(--ink);transition:transform .35s var(--ease-out)}
.menu-btn span::before{transform:translateY(-6px)} .menu-btn span::after{transform:translateY(6px)}
.menu-btn[aria-expanded="true"] span{background:transparent}
.menu-btn[aria-expanded="true"] span::before{transform:rotate(45deg)}
.menu-btn[aria-expanded="true"] span::after{transform:rotate(-45deg)}
.sheet{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease-out)}
.sheet.open{grid-template-rows:1fr;box-shadow:0 1px 0 var(--line)}
.sheet>div{overflow:hidden}
.sheet nav{display:grid;padding:0 0 20px}
.sheet a{display:flex;align-items:center;justify-content:space-between;text-decoration:none;font:500 28px/1.1 var(--display);min-height:60px;border-top:1px solid var(--line);opacity:0;transform:translateY(10px);transition:opacity .25s ease,transform .45s var(--ease-out),color .2s}
.sheet a::after{content:"→";font-size:20px;color:var(--muted)}
.sheet.open a{opacity:1;transform:none}
.sheet.open a:nth-child(2){transition-delay:.05s}.sheet.open a:nth-child(3){transition-delay:.1s}.sheet.open a:nth-child(4){transition-delay:.15s}
.sheet a:active{color:var(--brand)}
@media (hover:hover) and (pointer:fine){
  .nav a:hover::after{transform:scaleX(1);transform-origin:left}
  .btn:hover::before{clip-path:inset(0)}
  .btn:hover .arr{transform:translateX(4px)}
  .tel:hover{color:var(--brand)}
}
@media (max-width:920px){ .nav,.hdr .tel{display:none} .menu-btn{display:grid} .hdr>.wrap{gap:6px} .hdr .btn{padding:0 18px} }
@media (min-width:921px){ .sheet{display:none} }

/* ---------- Hero ---------- */
.hero{padding:clamp(28px,5vw,64px) 0 clamp(44px,6vw,88px)}
.hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,5vw,80px);align-items:center}
.hero h1{font-size:clamp(46px,7vw,92px);line-height:.96;letter-spacing:-.035em;font-weight:500;margin:20px 0 24px}
.hero h1 b{font-weight:500;color:var(--brand)}
.hero .lede{font-size:clamp(17px,1.5vw,20px);max-width:34ch;color:var(--muted)}
.hero .cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}
.hero figure{margin:0}
.hero .photo{aspect-ratio:4/5;overflow:hidden;border-radius:var(--leaf);background:#DCE1D8}
.hero .photo img{width:100%;height:115%;object-fit:cover;object-position:35% 50%}
.hero figcaption{margin-top:14px;font-size:15px;color:var(--muted);display:flex;justify-content:space-between;gap:12px}
.line{display:block;overflow:hidden;padding-bottom:.08em;margin-bottom:-.08em}
.line>span{display:inline-block}
@media (prefers-reduced-motion:no-preference){
  .hero .photo{animation:unfold-down 1.1s var(--ease-out) both .08s}
  .hero .photo img{animation:settle 1.6s var(--ease-out) both .08s}
  .line>span{animation:rise .95s var(--ease-out) both}
  .line:nth-child(2)>span{animation-delay:.07s}.line:nth-child(3)>span{animation-delay:.14s}
  .hero .lede,.hero .cta{animation:fade-up .8s var(--ease-out) both .32s}
  .hero .cta{animation-delay:.4s}
}
@keyframes unfold-down{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
@keyframes settle{from{transform:scale(1.14)}to{transform:scale(1)}}
@keyframes rise{from{transform:translateY(105%)}to{transform:none}}
@keyframes fade-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (max-width:820px){
  .hero .wrap{grid-template-columns:1fr}
  .hero figure{order:-1}
  .hero .photo{aspect-ratio:6/5;border-radius:2px 110px 2px 2px}
  .hero figcaption{display:none}
  .hero h1{margin-top:16px}
}

/* ---------- Proof ---------- */
.proof{background:var(--surface);box-shadow:0 -1px 0 var(--line),0 1px 0 var(--line)}
.proof ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr)}
.proof li{padding:22px clamp(14px,2vw,28px);display:grid;gap:8px;align-content:start}
.proof li+li{box-shadow:-1px 0 0 var(--line)}
.proof strong{font:500 20px/1.2 var(--display)}
.proof span{font-size:14px;color:var(--muted)}
@media (max-width:820px){ .proof ul{grid-template-columns:1fr 1fr} .proof li:nth-child(3){box-shadow:0 -1px 0 var(--line)} .proof li:nth-child(4){box-shadow:-1px 0 0 var(--line),0 -1px 0 var(--line)} }

section.block{padding:clamp(64px,9vw,128px) 0}
.h2{font-size:clamp(36px,4.8vw,64px);line-height:1;letter-spacing:-.03em;max-width:16ch}
.intro{color:var(--muted);max-width:52ch;margin-top:18px;font-size:18px}

/* ---------- Services: accordion everywhere, hover or scroll-focus drives the unfold ---------- */
.svc{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(32px,5vw,72px);align-items:start;margin-top:clamp(32px,5vw,56px)}
.svc ol{list-style:none;margin:0;padding:0;box-shadow:0 -1px 0 var(--ink)}
.svc li{box-shadow:0 1px 0 var(--line)}
.row-h{margin:0;font:inherit}
.row{appearance:none;border:0;background:transparent;color:inherit;font:inherit;text-align:left;width:100%;display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:16px;padding:18px 4px;min-height:72px;cursor:pointer;position:relative;transition:background .2s ease}
.row:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}
.row .t{font-family:var(--display);font-weight:500;text-wrap:balance;font-size:clamp(24px,2.7vw,34px);line-height:1.08;letter-spacing:-.02em;transition:transform .55s var(--ease-out),color .3s ease}
.row .thumb{display:none;width:52px;height:64px;border-radius:2px 26px 2px 2px;overflow:hidden;clip-path:inset(0 0 100% 0);transition:clip-path .6s var(--ease-out)}
.row .thumb img{width:100%;height:100%;object-fit:cover;transform:scale(1.2);transition:transform .9s var(--ease-out)}
.plus .i{width:16px;height:16px}
.plus{flex:none;width:34px;height:34px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line);display:grid;place-items:center;font:400 20px/1 var(--text);transition:transform .45s var(--ease-out),background .3s ease,color .3s ease,box-shadow .3s ease}
.row::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1.5px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease-out)}
.row:active{background:var(--tint)}
.row[aria-expanded="true"] .plus{transform:rotate(45deg);background:var(--brand);color:var(--on-brand);box-shadow:none}
.row[aria-expanded="true"]::after,.row.focus::after{transform:scaleX(1)}
.row[aria-expanded="true"] .t,.row.focus .t{color:var(--brand)}
.row.focus .t{transform:translateX(10px)}
.row.focus .thumb{clip-path:inset(0)}
.row.focus .thumb img{transform:scale(1)}
.panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease-out)}
.panel.open{grid-template-rows:1fr}
.panel>div{overflow:hidden}
.panel .inner{padding:2px 4px 26px;opacity:0;transform:translateY(-6px);transition:opacity .2s ease,transform .45s var(--ease-out)}
.panel.open .inner{opacity:1;transform:none;transition-delay:.08s}
.panel .tag{display:block;font-size:14px;font-weight:600;color:var(--brand);margin-bottom:6px}
.panel p{color:var(--muted);max-width:48ch;margin-bottom:8px}
.panel .link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:600;color:var(--brand);text-decoration:none}
.panel .link .arr{transition:transform .45s var(--ease-out)}
.panel .link:active{opacity:.65}
.preview{position:sticky;top:100px;margin:0}
.frame{position:relative;aspect-ratio:4/5;overflow:hidden;background:#DCE1D8;border-radius:var(--leaf)}
.frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;clip-path:inset(0 100% 0 0);transform:scale(1.1);transition:clip-path .75s var(--ease-out),transform 1.2s var(--ease-out)}
.frame img.on{clip-path:inset(0);transform:scale(1);z-index:2}
.frame img.under{clip-path:inset(0);transform:scale(1);z-index:1;transition:none}
.preview figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-top:14px;font-size:15px;color:var(--muted)}
.preview figcaption b{font:500 20px/1.2 var(--display);color:var(--ink)}
@media (hover:hover) and (pointer:fine){
  .row:hover::after{transform:scaleX(1)}
  .row:hover .t{transform:translateX(10px);color:var(--brand)}
  .row:hover .plus{background:var(--ink);color:var(--surface);box-shadow:none}
  .panel .link:hover .arr{transform:translateX(4px)}
}
@media (max-width:920px), (hover:none), (pointer:coarse){
  .svc{grid-template-columns:1fr}
  .preview{display:none}
  .row .thumb{display:block}
}

/* ---------- Process: a real sequence, so it is numbered ---------- */
.steps{background:var(--brand);color:var(--on-brand);overflow:clip}
.steps .intro{color:rgba(237,239,233,.8)}
.steps ol{list-style:none;margin:clamp(36px,5vw,64px) 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);position:relative}
.steps ol::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,var(--amber),rgba(224,164,58,.25));transform-origin:left}
.steps li{padding:28px 24px 0 0;display:grid;gap:10px;align-content:start}
.steps li+li{padding-left:24px;box-shadow:-1px 0 0 rgba(237,239,233,.16)}
.steps .n{display:inline-block;justify-self:start;font:300 56px/1 var(--display);color:var(--amber);-webkit-text-stroke:1.2px var(--amber);font-variant-numeric:tabular-nums;transition:transform .5s var(--ease-out)}
.steps h3{font-size:24px;line-height:1.15}
.steps p{color:rgba(237,239,233,.82);font-size:16px}
.steps .ph{color:#FFE2A8;border-color:#E0A43A;background:rgba(224,164,58,.14)}
@media (max-width:820px){
  .steps ol{grid-template-columns:1fr}
  .steps ol::before{display:none}
  .steps li,.steps li+li{padding:22px 0;box-shadow:0 -1px 0 rgba(237,239,233,.2);grid-template-columns:64px 1fr;column-gap:12px}
  .steps .n{grid-row:span 2;font-size:44px}
  .steps li p{grid-column:2}
}

/* ---------- Checklist ---------- */
.check{display:grid;grid-template-columns:280px 1fr;gap:clamp(24px,5vw,72px);align-items:start;margin-top:clamp(32px,5vw,56px)}
.tabs{display:grid;gap:4px;position:sticky;top:100px}
.tab{appearance:none;border:0;background:transparent;color:inherit;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:54px;padding:0 18px;border-radius:999px;font:500 22px/1 var(--display);cursor:pointer;transition:background .25s ease,color .25s ease,transform .14s var(--ease-out)}
.tab small{font:500 13px/1 var(--text);color:var(--muted);font-variant-numeric:tabular-nums;transition:color .25s ease}
.tab:active{transform:scale(.97)}
.tab[aria-selected="true"]{background:var(--ink);color:var(--surface)}
.tab[aria-selected="true"] small{color:rgba(248,249,245,.7)}
.list{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line);border-radius:2px 96px 2px 2px;padding:clamp(24px,4vw,52px)}
.list h3{font-size:clamp(30px,3vw,42px);letter-spacing:-.02em}
.list .note{color:var(--muted);font-size:15px;margin:8px 0 26px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.list ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px 36px}
.list li{display:grid;grid-template-columns:22px 1fr;gap:12px;padding:12px 0}
.tick{display:grid;place-items:center;width:22px;height:22px;border-radius:999px;background:var(--brand);color:var(--on-brand);margin-top:2px}
.tick .i{width:14px;height:14px}
@media (prefers-reduced-motion:no-preference){
  .list.swap li{animation:fade-up .5s var(--ease-out) both;animation-delay:calc(var(--i) * 45ms)}
  .list.swap .tick{animation:pop .45s var(--ease-out) both;animation-delay:calc(var(--i) * 45ms + 120ms)}
}
@keyframes pop{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}
@media (hover:hover) and (pointer:fine){ .tab[aria-selected="false"]:hover{background:var(--tint)} }
@media (max-width:820px){
  .check{grid-template-columns:1fr}
  .tabs{position:static;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;margin-inline:calc(-1*var(--pad));padding:2px var(--pad) 6px;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:none;scroll-snap-align:start;box-shadow:inset 0 0 0 1px var(--line);font-size:18px;min-height:48px}
  .tab[aria-selected="true"]{box-shadow:none}
  .list ul{grid-template-columns:1fr}
  .list{border-radius:2px 56px 2px 2px}
}

/* ---------- Reviews: one real quote leads, placeholders sit beside it ---------- */
.voices{display:grid;grid-template-columns:1.35fr 1fr;gap:clamp(16px,2vw,24px);margin-top:clamp(32px,5vw,56px)}
.voice{margin:0;padding:clamp(24px,3.4vw,44px);display:grid;gap:22px;align-content:space-between}
.voice blockquote{margin:0;font:400 clamp(20px,1.9vw,24px)/1.35 var(--display)}
.voice figcaption{font-size:15px;color:var(--muted);display:grid;gap:8px;justify-items:start}
.voice figcaption b{color:var(--ink);font-weight:600}
.voice--real{background:var(--ink);color:var(--surface);grid-row:span 2;border-radius:2px 96px 2px 2px;padding-right:clamp(40px,6vw,88px)}
.voice--real blockquote{font-size:clamp(32px,3.8vw,52px);line-height:1.12;letter-spacing:-.025em;font-weight:500}
.voice--real figcaption{color:rgba(248,249,245,.7)}
.voice--real figcaption b{color:#fff}
.src{font:600 11px/1 var(--text);letter-spacing:.06em;text-transform:uppercase;box-shadow:inset 0 0 0 1px rgba(248,249,245,.4);padding:5px 7px;border-radius:3px}
.voice--ex{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}
@media (max-width:820px){ .voices{grid-template-columns:1fr} .voice--real{grid-row:auto;border-radius:2px 80px 2px 2px} }

/* ---------- Quote ---------- */
.quote{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:start}
.area{list-style:none;margin:36px 0 0;padding:24px 0 0;box-shadow:0 -1px 0 var(--line);display:grid;gap:14px}
.area li{display:grid;grid-template-columns:22px 1fr;gap:12px;align-items:start;color:var(--muted)}
.area .i{width:22px;height:22px;color:var(--brand);margin-top:2px}
.area b{display:block;font:500 21px/1.2 var(--display);color:var(--ink);margin-bottom:2px}
.area a{display:inline-flex;align-items:center;min-height:44px;margin-top:-10px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
form.qf{background:var(--surface);box-shadow:inset 0 0 0 1px var(--line);padding:clamp(22px,3.6vw,44px);display:grid;gap:26px;border-radius:2px 2px 96px 2px}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{font-weight:600;font-size:15px;margin-bottom:12px;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{position:relative;display:inline-flex}
.chip input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:0 16px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line);font-size:15px;font-weight:500;transition:background .22s ease,color .22s ease,box-shadow .22s ease,transform .14s var(--ease-out)}
.chip input:checked+span{background:var(--brand);color:var(--on-brand);box-shadow:none}
.chip input:active+span{transform:scale(.96)}
.chip input:focus-visible+span{outline:2px solid var(--brand);outline-offset:2px}
@media (hover:hover) and (pointer:fine){ .chip input:not(:checked):hover+span{box-shadow:inset 0 0 0 1px var(--ink)} }
.field{display:grid;gap:8px}
.field label{font-weight:600;font-size:15px}
.field input{font:400 16px/1.2 var(--text);min-height:52px;padding:0 16px;border:1px solid rgba(22,33,29,.28);border-radius:10px;background:var(--ground);color:var(--ink);width:100%;transition:border-color .2s ease,box-shadow .2s ease}
.field input::placeholder{color:#6B756F}
.field input:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(31,74,63,.2)}
.field .help{font-size:14px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.qf .btn{justify-self:start}
.status{font-size:15px;min-height:1.6em;color:var(--brand);font-weight:500}
.status.err{color:#9B2C1F}
@media (max-width:920px){ .quote{grid-template-columns:1fr} .qf .btn{justify-self:stretch} }

/* ---------- Footer ---------- */

/* ---------- Scroll-driven motion: native on iOS Safari 26+ and Android Chrome; JS fallback elsewhere ---------- */
@media (prefers-reduced-motion:no-preference){
  @supports (animation-timeline: view()){
    .sd{animation:sd-rise linear both;animation-timeline:view();animation-range:entry 5% entry 55%}
    .sd-wipe{animation:sd-rise linear both;animation-timeline:view();animation-range:entry 5% entry 60%}
    .hero figure{animation:drift linear both;animation-timeline:scroll(root);animation-range:0 90vh}
    .steps ol::before{animation:draw linear both;animation-timeline:view();animation-range:entry 10% cover 35%}
  }
  html:not(.sdt) .rv{transition:opacity .8s var(--ease-out),transform .9s var(--ease-out)}
  html:not(.sdt) .rv.pre{opacity:.4;transform:translateY(22px)}
}
@keyframes sd-rise{from{opacity:.4;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes unfold-left{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@keyframes drift{to{transform:translateY(-6%)}}
@keyframes draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (prefers-reduced-motion:reduce){ .row.focus .t,.row:hover .t{transform:none} }
@media print{ *,*::before,*::after{animation:none!important} .rv.pre{opacity:1;transform:none} }

/* ---------- Motion pass 2: every section earns one purposeful movement ---------- */
#reviews,#quote{overflow-x:clip}
.voice--ex{transition:transform .5s var(--ease-out),box-shadow .5s var(--ease-out)}
.voice--ex .stars{--star:#C98A1B}
.voice--ex .ex{color:var(--muted)}
.voices .intro{margin-bottom:0}
@media (hover:hover) and (pointer:fine){
  .voice--ex:hover{transform:translateY(-6px);box-shadow:inset 0 0 0 1px var(--line),0 24px 40px -24px rgba(22,33,29,.35)}
  .steps li:hover .n{transform:translateY(-6px)}
}
.voice--ex:active{transform:scale(.99)}
@media (prefers-reduced-motion:no-preference){
  .proof li{animation:fade-up .7s var(--ease-out) both}
  .proof li:nth-child(1){animation-delay:.42s}.proof li:nth-child(2){animation-delay:.5s}.proof li:nth-child(3){animation-delay:.58s}.proof li:nth-child(4){animation-delay:.66s}
  @supports (animation-timeline: view()){
    /* Process: each step lights up as it arrives; the number fills from an outline */
    .steps-list li{animation:step-in linear both;animation-timeline:view();animation-range:entry 10% cover 38%}
    .steps-list .n{animation:num-fill linear both;animation-timeline:view();animation-range:entry 30% cover 45%}
    @media (min-width:821px){
      .steps-list{view-timeline:--proc block}
      .steps-list li,.steps-list .n{animation-timeline:--proc}
    .steps-list li:nth-child(1),.steps-list li:nth-child(1) .n{animation-range:cover 11% cover 27%}
    .steps-list li:nth-child(2),.steps-list li:nth-child(2) .n{animation-range:cover 20% cover 36%}
    .steps-list li:nth-child(3),.steps-list li:nth-child(3) .n{animation-range:cover 29% cover 45%}
    .steps-list li:nth-child(4),.steps-list li:nth-child(4) .n{animation-range:cover 38% cover 54%}
      .steps ol::before{animation-timeline:--proc;animation-range:cover 8% cover 52%}
    }
    /* Checklist panel rises in; tab changes keep their own cascade */
    .check .list{animation:sd-rise linear both;animation-timeline:view();animation-range:entry 0% entry 55%}
    /* Reviews: the real quote unfolds, examples slide in, stars pop in order */
    .voices{view-timeline:--voices block}
    .voice--real{animation:leaf-open linear both;animation-timeline:--voices;animation-range:entry 0% cover 30%}
    .voice--real blockquote{animation:sd-rise linear both;animation-timeline:--voices;animation-range:entry 12% cover 36%}
    .voice--ex{animation:slide-in linear both;animation-timeline:--voices}
    .voice--ex:nth-of-type(2){animation-range:entry 10% cover 34%}
    .voice--ex:nth-of-type(3){animation-range:entry 22% cover 46%}
    .voice--ex .st{animation:star-pop linear both;animation-timeline:--voices}
  .voice--ex:nth-of-type(2) .st:nth-child(1){animation-range:cover 25% cover 31%}
  .voice--ex:nth-of-type(2) .st:nth-child(2){animation-range:cover 28% cover 34%}
  .voice--ex:nth-of-type(2) .st:nth-child(3){animation-range:cover 31% cover 37%}
  .voice--ex:nth-of-type(2) .st:nth-child(4){animation-range:cover 34% cover 40%}
  .voice--ex:nth-of-type(2) .st:nth-child(5){animation-range:cover 37% cover 43%}
  .voice--ex:nth-of-type(3) .st:nth-child(1){animation-range:cover 35% cover 41%}
  .voice--ex:nth-of-type(3) .st:nth-child(2){animation-range:cover 38% cover 44%}
  .voice--ex:nth-of-type(3) .st:nth-child(3){animation-range:cover 41% cover 47%}
  .voice--ex:nth-of-type(3) .st:nth-child(4){animation-range:cover 44% cover 50%}
  .voice--ex:nth-of-type(3) .st:nth-child(5){animation-range:cover 47% cover 53%}
    /* Quote: the form panel opens and the service chips cascade */
    .qf{view-timeline:--qf block;animation:qf-open linear both;animation-timeline:view();animation-range:entry 0% entry 60%}
    .chips .chip{animation:chip-in linear both;animation-timeline:--qf}
  .chips .chip:nth-child(1){animation-range:entry 10% entry 40%}
  .chips .chip:nth-child(2){animation-range:entry 15% entry 45%}
  .chips .chip:nth-child(3){animation-range:entry 20% entry 50%}
  .chips .chip:nth-child(4){animation-range:entry 25% entry 55%}
  .chips .chip:nth-child(5){animation-range:entry 30% entry 60%}
  .chips .chip:nth-child(6){animation-range:entry 35% entry 65%}
  .chips .chip:nth-child(7){animation-range:entry 40% entry 70%}
  .chips .chip:nth-child(8){animation-range:entry 45% entry 75%}
  }
}
@keyframes step-in{from{opacity:.35;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes num-fill{from{color:transparent}to{color:var(--amber)}}
@keyframes leaf-open{from{clip-path:inset(0 0 28% 0 round 2px 96px 2px 2px)}to{clip-path:inset(0 0 0 0 round 2px 96px 2px 2px)}}
@keyframes slide-in{from{opacity:.4;transform:translateX(44px)}to{opacity:1;transform:none}}
@keyframes star-pop{from{opacity:.25;transform:scale(.5)}to{opacity:1;transform:none}}
@keyframes qf-open{from{clip-path:inset(0 0 10% 0 round 2px 2px 96px 2px)}to{clip-path:inset(0 0 0 0 round 2px 2px 96px 2px)}}
@keyframes chip-in{from{opacity:.35;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
