:root{--stone:oklch(96.5% 0.009 80);--stone-2:oklch(93% 0.012 80);--stone-3:oklch(86% 0.014 80);--ink:oklch(24% 0.028 190);--ink-2:oklch(42% 0.022 190);--ink-3:oklch(50% 0.018 190);--green:oklch(41% 0.085 140);--green-deep:oklch(33% 0.08 140);--green-tint:oklch(92% 0.03 140);--on-green:oklch(97% 0.01 140);--on-ink:oklch(94% 0.01 80);--display:"Bodoni Moda","Bodoni 72",Didot,"Times New Roman",serif;--text:"Libre Franklin",Franklin Gothic,"Helvetica Neue",Arial,sans-serif;--t-hero:clamp(2.75rem, 1.5rem + 5.4vw, 6rem);--t-1:clamp(2.125rem, 1.4rem + 3vw, 3.5rem);--t-2:clamp(1.625rem, 1.2rem + 1.8vw, 2.5rem);--t-3:clamp(1.25rem, 1.1rem + 0.6vw, 1.5rem);--t-body:clamp(1.0625rem, 1rem + 0.2vw, 1.125rem);--t-small:clamp(0.8125rem, 0.78rem + 0.15vw, 0.875rem);--gutter:20px;--container:1280px;--mark:96px;--mark-hero:clamp(180px, 23vw, 320px);--ease-out:cubic-bezier(0.16, 1, 0.3, 1)}@media (min-width:900px){:root{--gutter:48px}}@media (max-width:719px){:root{--mark:64px;--mark-hero:180px}}*,::after,::before{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--stone);color:var(--ink);font-family:var(--text);font-size:var(--t-body);line-height:1.55;font-weight:400;-webkit-font-smoothing:antialiased}::selection{background:var(--green);color:var(--on-green)}:focus-visible{outline:2px solid var(--green);outline-offset:3px}img{display:block;max-width:100%;height:auto}figure{margin:0}.phone-only{display:none}a{color:inherit;text-decoration:none}li a,p a{text-decoration:underline;text-underline-offset:0.18em;text-decoration-thickness:1px}li a:hover,p a:hover{color:var(--green)}h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.02;margin:0;text-wrap:balance}h1{font-size:var(--t-hero);letter-spacing:-.005em;font-variation-settings:"opsz" 28}h2{font-size:var(--t-1);letter-spacing:-.005em;font-variation-settings:"opsz" 22}h3{font-size:var(--t-2);font-variation-settings:"opsz" 14}p{margin:0}ol,ul{margin:0;padding:0;list-style:none}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--stone-2)}::-webkit-scrollbar-thumb{background:var(--ink-3);border:3px solid var(--stone-2);border-radius:6px}.wrap{width:min(var(--container),100% - var(--gutter) * 2);margin-inline:auto}.grid{display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px}.lede{font-size:var(--t-3);line-height:1.4;color:var(--ink-2);max-width:34ch;text-wrap:pretty}.measure{max-width:62ch;text-wrap:pretty}.muted{color:var(--ink-2)}.small{font-size:var(--t-small)}.num{font-variant-numeric:tabular-nums}.btn{display:inline-flex;align-items:center;gap:12px;height:52px;padding:0 22px;border-radius:2px;font:500 1rem/1 var(--text);letter-spacing:.01em;border:1px solid var(--ink);color:var(--ink);background:0 0;cursor:pointer;transition:background .2s,color .2s,border-color .2s;white-space:nowrap}.btn:hover{background:var(--ink);color:var(--on-ink)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--green);border-color:var(--green);color:var(--on-green)}.btn-primary:hover{background:var(--green-deep);border-color:var(--green-deep);color:var(--on-green)}.btn-primary::after{content:"→";font-family:var(--display);font-size:1.25rem;line-height:0;transition:transform .3s var(--ease-out)}.btn-primary:hover::after{transform:translateX(4px)}.btn:disabled{opacity:.55;cursor:progress}.nav{position:sticky;top:0;z-index:20;background:var(--stone);border-bottom:1px solid var(--stone-3)}.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:76px}.brand{display:flex;align-items:center;gap:12px}.brand svg{width:42px;height:36px}.brand b{display:block;font:600 1.45rem/0.95 var(--display);letter-spacing:.06em;font-variation-settings:"opsz" 24}.brand small{display:block;font:500 0.6875rem/1 var(--text);letter-spacing:.3em;margin-top:4px;padding-left:2px;color:var(--ink-2)}.nav-links{display:flex;gap:32px;font-weight:500;font-size:.95rem}.nav-links .only-mobile{display:none}.nav-links a{position:relative;padding:6px 0}.nav-links a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--green);transition:right .3s var(--ease-out)}.nav-links a:hover::after,.nav-links a[aria-current]::after{right:0}.nav-phone{height:44px;padding:0 18px;font-size:.95rem}.burger{display:none;width:44px;height:44px;border:0;background:0 0;cursor:pointer;padding:10px}.burger span{display:block;height:1.5px;background:var(--ink);margin:6px 0;transition:transform .3s,opacity .3s}@media (max-width:899px){.nav-links{display:none;position:absolute;left:0;right:0;top:76px;flex-direction:column;gap:0;padding:8px var(--gutter) 24px;background:var(--stone);border-bottom:1px solid var(--stone-3)}.nav-links a{font:500 var(--t-2)/1.2 var(--display);padding:14px 0;border-bottom:1px solid var(--stone-3)}.nav-links a::after{display:none}.nav.open .nav-links{display:flex}.nav-links .only-mobile{display:block}.nav.open .burger span:first-child{transform:translateY(7.5px) rotate(45deg)}.nav.open .burger span:nth-child(2){opacity:0}.nav.open .burger span:nth-child(3){transform:translateY(-7.5px) rotate(-45deg)}.burger{display:block}.nav-phone{display:none}}@media (max-width:719px){.brand b{font-size:1.2rem}.brand svg{width:34px;height:29px}}.mark-slot{width:var(--mark);height:var(--mark);flex:none}.mark-slot.hero{width:var(--mark-hero);height:var(--mark-hero)}.mark-static .mark-slot{background:url("assets/mark.svg") center/contain no-repeat}#mark-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:10}.hero{padding:48px 0 0}.hero .grid{row-gap:40px;align-items:start}.hero-copy{grid-column:1/9}.hero h1{max-width:12ch}.hero h1 em{font-style:italic;font-weight:400}.hero .lede{margin-top:28px}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:36px}.hero-side{grid-column:9/13;display:flex;flex-direction:column;align-items:flex-end;gap:24px;margin-top:64px}.schedule{width:100%;border-top:1px solid var(--ink)}.schedule li{border-bottom:1px solid var(--stone-3)}.schedule a{display:grid;grid-template-columns:2.5rem 1fr auto;align-items:baseline;padding:14px 0;font-weight:600;transition:color .2s}.schedule a:hover{color:var(--green)}.schedule a span:first-child{font:500 var(--t-small)/1 var(--text);color:var(--ink-3);font-variant-numeric:tabular-nums}.schedule a span:last-child{font-family:var(--display);font-size:1.25rem;line-height:0;transition:transform .3s var(--ease-out)}.schedule a:hover span:last-child{transform:translateX(4px)}.hero-photo{grid-column:1/13;margin-top:40px;aspect-ratio:21/9;overflow:hidden}.hero-photo img{width:100%;height:100%;object-fit:cover}@media (max-width:899px){.hero{padding-top:32px}.hero .grid{row-gap:32px}.hero-copy,.hero-photo,.hero-side{grid-column:1/-1}.hero-side{margin-top:0;align-items:stretch}.hero-side .mark-slot{align-self:flex-end;margin-right:8px}.hero-photo{margin-top:8px;aspect-ratio:4/3}}.section{position:relative;padding:88px 0 96px}.section-head{display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;row-gap:20px;align-items:end;margin-bottom:40px}.section-head h2{grid-column:1/8}.section-head .lede{grid-column:8/13}.section-head .mark-slot{grid-column:12/13;justify-self:end;grid-row:1}.section-head.slot-l .mark-slot{grid-column:1/2;justify-self:start}.section-head.slot-l h2{grid-column:2/8}.section-head.slot-l .lede{grid-column:8/13}@media (max-width:899px){.grid,.section-head{grid-template-columns:repeat(4,1fr);column-gap:16px}.section{padding:64px 0 72px}.section-head{margin-bottom:32px;row-gap:16px}.section-head h2,.section-head.slot-l h2{grid-column:1/4}.section-head .lede,.section-head.slot-l .lede{grid-column:1/-1}.section-head .mark-slot,.section-head.slot-l .mark-slot{grid-column:4/5;grid-row:1;justify-self:end;align-self:start}.section-head .phone-only{display:block}}.services{padding-bottom:96px}.service{display:grid;grid-template-columns:3rem 3fr 5fr 4fr;column-gap:24px;row-gap:20px;align-items:start;padding:36px 0;border-top:1px solid var(--stone-3)}.service:last-child{border-bottom:1px solid var(--stone-3)}.service>.idx{font:500 var(--t-small)/1.6 var(--text);color:var(--ink-3);font-variant-numeric:tabular-nums;padding-top:.7em}.service .name h3{margin-bottom:12px}.service .name p{color:var(--ink-2);max-width:30ch;text-wrap:pretty}.service .slot-mid{grid-column:2;grid-row:2;width:72px;height:72px;margin-top:8px}.service .slot-end{grid-column:3;grid-row:2;width:72px;height:72px;margin-top:8px}.service .lines{grid-column:3;grid-row:1;columns:2;column-gap:24px}.service .lines li{break-inside:avoid;padding:10px 0;border-bottom:1px solid var(--stone-3);font-weight:500}.service .lines li:first-child{border-top:1px solid var(--stone-3)}@media (max-width:899px){.service{grid-template-columns:2.5rem 1fr;padding:28px 0;row-gap:16px}.service .name p{max-width:none}.service .lines{grid-column:2;grid-row:2;columns:1}.service .mark-slot{display:none}}.service .plan{grid-column:4;grid-row:1/3;width:100%;max-width:420px;height:auto;justify-self:end;overflow:visible}@media (max-width:899px){.service .plan{grid-column:2;grid-row:3;max-width:420px;justify-self:start;margin-top:4px}}.plan circle,.plan line,.plan path,.plan rect{fill:none;stroke:var(--ink-3);stroke-width:1;vector-effect:non-scaling-stroke}.plan rect.wall{stroke:var(--ink);stroke-width:1.5}.plan .door{stroke:var(--ink)}.plan text{font:500 10px var(--text);fill:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.plan pattern rect{fill:var(--green-tint);stroke:none}.plan pattern line{stroke:var(--green);stroke-width:1.25}.plan .hl{stroke:var(--green);fill:var(--green-tint);opacity:0;transition:opacity .6s var(--ease-out)}.plan .hl.line,.plan path.hl{fill:none}.plan .hl.hatch{fill:url(#h-cleaning)}.plan circle.hl{fill:var(--green)}.service.in .plan .hl{opacity:1}.band{background:var(--stone-2);padding:88px 0 72px}.band .grid{row-gap:40px}.band-copy{grid-column:1/8;display:flex;flex-direction:column;gap:16px}.elev{grid-column:1/13;width:100%;height:auto;overflow:visible}.elev line,.elev rect{fill:none;stroke:var(--ink-3);stroke-width:1;vector-effect:non-scaling-stroke}.elev .wall{stroke:var(--ink);stroke-width:1.5}.elev .ground{stroke:var(--ink)}.elev .door{stroke:var(--ink)}.elev text{font:600 13px var(--text);fill:var(--ink)}.elev text.sub{font-weight:400;fill:var(--ink-2)}.elev .notes line{stroke:var(--ink-3);stroke-dasharray:2 3}.elev .floor rect{transition:fill .5s}@supports (animation-timeline:view()){.elev .floor rect{animation:light linear both;animation-timeline:view()}.elev .f0 rect{animation-range:entry 20% entry 30%}.elev .f1 rect{animation-range:entry 30% entry 40%}.elev .f2 rect{animation-range:entry 40% entry 50%}.elev .f3 rect{animation-range:entry 50% entry 60%}.elev .f4 rect{animation-range:entry 60% entry 70%}.elev .f5 rect{animation-range:entry 70% entry 80%}@keyframes light{to{fill:var(--green-tint);stroke:var(--green)}}}@media (max-width:899px){.band{padding:64px 0 56px}.band-copy,.elev,.elev-list{grid-column:1/-1}.elev{max-width:420px;justify-self:center}.elev .notes{display:none}.elev-list{display:block}}.elev-list{display:none;border-top:1px solid var(--ink)}.elev-list li{display:grid;grid-template-columns:4rem 1fr;column-gap:12px;padding:10px 0;border-bottom:1px solid var(--stone-3);font-size:.95rem}.elev-list li span:first-child{font-weight:600}@media (max-width:899px){.elev-list{display:block}}@supports (animation-timeline:view()){.hero-photo img{animation:settle linear both;animation-timeline:view();animation-range:entry 0% entry 70%}@keyframes settle{from{transform:scale(1.08)}to{transform:none}}}.process{background:var(--stone-2);padding:88px 0 104px}.process .grid{row-gap:48px}.ledger{grid-column:1/8}.ledger{position:relative}.ledger::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--green);transform-origin:top;transform:scaleY(0)}@supports (animation-timeline:view()){.ledger::before{animation:fill linear both;animation-timeline:view();animation-range:entry 30% exit 40%}@keyframes fill{to{transform:none}}}.ledger li{display:grid;grid-template-columns:4.5rem 1fr;column-gap:24px;align-items:baseline;padding:28px 0 28px 20px;border-top:1px solid var(--stone-3)}.ledger li:last-child{border-bottom:1px solid var(--stone-3)}.ledger .n{font:600 var(--t-2)/1 var(--display);font-variation-settings:"opsz" 11;color:var(--ink-3);font-variant-numeric:tabular-nums;transition:color .5s}.ledger li.in .n{color:var(--green)}.ledger h3{font-size:var(--t-3);font-family:var(--text);font-weight:600;line-height:1.3;margin-bottom:6px}.ledger p{color:var(--ink-2);max-width:44ch;text-wrap:pretty}.process-aside{grid-column:9/13}.process-aside .sticky{position:sticky;top:108px;display:flex;flex-direction:column;gap:28px}.process-aside p{font:500 var(--t-3)/1.35 var(--display);font-variation-settings:"opsz" 11;text-wrap:pretty}.process-aside .mark-slot{align-self:flex-end}.week{background:var(--stone);border:1px solid var(--stone-3);padding:20px 22px 8px}.week-title{font:600 var(--t-small)/1.3 var(--text);letter-spacing:.02em;color:var(--ink-2);margin-bottom:10px}.week li{display:grid;grid-template-columns:2.6rem 1fr auto;column-gap:14px;padding:9px 0;border-top:1px solid var(--stone-3);font-size:.95rem}.week li span:first-child{font-weight:600}.week li span:last-child{color:var(--ink-2)}@media (max-width:899px){.process{padding:64px 0 72px}.process .grid{row-gap:40px}.ledger,.process-aside{grid-column:1/-1}.ledger li{padding:20px 0 20px 16px}.process-aside .sticky{position:static;gap:20px}.process-aside .mark-slot{display:none}}.promises{background:var(--green-tint);padding:72px 0 88px}.promises .grid{row-gap:32px;align-items:start}.promises h2{grid-column:1/4}.promises .mark-slot{grid-column:4/5;grid-row:1;justify-self:end}.promises ol{grid-column:5/12;border-top:1px solid var(--ink)}.promises li{padding:18px 0;border-bottom:1px solid oklch(from var(--green) l c h / .25);font:500 var(--t-3)/1.35 var(--text);text-wrap:pretty}@media (max-width:899px){.promises{padding:56px 0 64px}.promises h2{grid-column:1/4}.promises .mark-slot{grid-column:4/5;grid-row:1}.promises ol{grid-column:1/-1}.promises li{padding:14px 0}}.trust .grid{row-gap:56px}.recognition{grid-column:1/13;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;row-gap:20px;align-items:baseline}.recognition h2{grid-column:1/4;font-size:var(--t-3);font-family:var(--text);font-weight:600}.recognition ul{grid-column:4/12;display:flex;flex-wrap:wrap}.recognition li{font:500 var(--t-3)/1.2 var(--display);font-variation-settings:"opsz" 11;padding:8px 28px 8px 0;margin-right:28px;border-right:1px solid var(--stone-3)}.recognition li:last-child{border-right:0;margin-right:0}.recognition .mark-slot{grid-column:12/13;justify-self:end;align-self:start}.quotes{grid-column:1/13;display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;row-gap:48px}.quote{display:flex;flex-direction:column;gap:20px}.quote:first-child{grid-column:1/5}.quote:nth-child(2){grid-column:5/9;margin-top:56px}.quote:nth-child(3){grid-column:9/13;margin-top:112px}.quote blockquote{margin:0;font:500 1.125rem/1.45 var(--display);font-variation-settings:"opsz" 11;text-wrap:pretty}.quote blockquote::before{content:"“";display:block;font-size:3em;line-height:.6;color:var(--green);margin-bottom:.2em}.quote cite{font:500 var(--t-small)/1.4 var(--text);font-style:normal;letter-spacing:.02em;color:var(--ink-2)}@media (max-width:899px){.quotes,.recognition{grid-template-columns:repeat(4,1fr);column-gap:16px}.recognition h2{grid-column:1/4}.recognition ul{grid-column:1/-1}.recognition .mark-slot{grid-column:4/5;grid-row:1;justify-self:end}.trust .grid{row-gap:40px}.quotes{row-gap:36px}.recognition li{border-right:0;padding-right:0;margin-right:0;width:100%;border-bottom:1px solid var(--stone-3)}.quote:nth-child(n){grid-column:1/-1;margin-top:0}}.contact{padding:88px 0 104px}.contact .grid{row-gap:48px;align-items:start}.contact-info{grid-column:1/6;display:flex;flex-direction:column;gap:36px}.contact-info h2{margin-bottom:8px}.contact-info dl{display:grid;grid-template-columns:max-content 1fr;column-gap:24px;row-gap:14px;border-top:1px solid var(--ink);padding-top:20px}.contact-info dt{font-weight:500;color:var(--ink-2);font-size:var(--t-small);letter-spacing:.02em;padding-top:.2em}.contact-info dd{margin:0}.contact-info dd a{font-weight:500}.contact-info dd a:hover{color:var(--green)}.contact-info figure{margin:0;aspect-ratio:4/3;overflow:hidden}.contact-info figure img{width:100%;height:100%;object-fit:cover}.contact-info{grid-row:1}.contact-form{grid-column:7/13;grid-row:1}.contact .mark-slot{grid-column:6/7;grid-row:1;justify-self:center;margin-top:8px}@media (max-width:899px){.contact{padding:64px 0 72px}.contact .grid{row-gap:40px}.contact-info{grid-column:1/-1;grid-row:1;gap:28px}.contact-info>div:first-child{padding-right:76px}.contact-form{grid-column:1/-1;grid-row:2}.contact .mark-slot{grid-column:4/5;grid-row:1;justify-self:end;margin:0}.form{gap:20px 16px}}.form{display:grid;grid-template-columns:1fr 1fr;gap:28px 24px}.form .full{grid-column:1/-1}.field{display:flex;flex-direction:column;gap:8px}.field label{font-size:var(--t-small);font-weight:500;letter-spacing:.02em;color:var(--ink-2)}.field input,.field select,.field textarea{font:400 1rem/1.4 var(--text);color:var(--ink);background:var(--stone-2);border:0;border-bottom:1px solid var(--ink);border-radius:2px 2px 0 0;padding:14px 14px 12px;caret-color:var(--green);transition:background .2s;width:100%;min-width:0}.field input:focus,.field select:focus,.field textarea:focus{outline:0;background:oklch(from var(--stone-2) calc(l - .02) c h);border-bottom-color:var(--green);border-bottom-width:2px;padding-bottom:11px}.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}.field textarea{min-height:140px;resize:vertical}.field input[type=file]{padding:10px 14px}.field input[type=file]::file-selector-button{font:500 0.9rem var(--text);border:1px solid var(--ink);background:0 0;color:var(--ink);padding:8px 14px;border-radius:2px;margin-right:14px;cursor:pointer}.check{display:flex;gap:12px;align-items:flex-start;font-size:var(--t-body)}.check input{width:20px;height:20px;margin:3px 0 0;accent-color:var(--green);flex:none}.form .actions{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-top:8px}.form .actions .small{color:var(--ink-2);max-width:36ch}.form-done{border-top:1px solid var(--ink);padding-top:24px;font:400 var(--t-3)/1.4 var(--display);font-variation-settings:"opsz" 24}.field .error{display:none;color:var(--green-deep);font-size:var(--t-small)}.field.invalid .error{display:block}.field.invalid input,.field.invalid textarea{border-bottom-color:var(--green-deep)}@media (max-width:599px){.form{grid-template-columns:1fr}}.footer{background:var(--ink);color:var(--on-ink);padding:64px 0 40px}.footer .grid{row-gap:40px}.footer .brand{grid-column:1/5;align-items:flex-start}.footer .brand svg path{fill:var(--on-ink)}.footer .brand small{color:oklch(from var(--on-ink) l c h / .7)}.footer address{grid-column:5/9;font-style:normal;line-height:1.7}.footer .links{grid-column:9/13;display:flex;flex-direction:column;gap:8px}.footer a{border-bottom:1px solid oklch(from var(--on-ink) l c h / .3);transition:border-color .2s}.footer a:hover{border-color:var(--on-ink)}.footer .group{grid-column:1/13;display:flex;flex-wrap:wrap;gap:8px 32px;padding-top:32px;border-top:1px solid oklch(from var(--on-ink) l c h / .2);font-size:var(--t-small);color:oklch(from var(--on-ink) l c h / .7)}.footer .group span:last-child{margin-left:auto}@media (max-width:899px){.footer{padding:48px 0 32px}.footer .brand,.footer .group,.footer .links,.footer address{grid-column:1/-1}.footer .group span:last-child{margin-left:0;width:100%}}.page-head{padding:64px 0 48px}.page-head .grid{align-items:end;row-gap:24px}.page-head h1{grid-column:1/9;font-size:var(--t-1)}.page-head .lede{grid-column:1/8}.page-head .mark-slot{grid-column:11/13;justify-self:end;grid-row:1/3}@media (max-width:899px){.page-head{padding:40px 0 32px}.page-head h1{grid-column:1/4}.page-head .lede{grid-column:1/-1}.page-head .mark-slot{grid-column:4/5;grid-row:1;justify-self:end;width:var(--mark);height:var(--mark)}}.prose{max-width:62ch}.prose h2{font-size:var(--t-2);margin:48px 0 16px}.prose p+p{margin-top:1em}.reveal{opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}}