/* ===== shared navigation ===== */
.nav{display:flex;align-items:center;gap:clamp(18px,3vw,40px)}
.nav a{font-size:.9rem;text-decoration:none;color:var(--ink);padding:10px 2px;position:relative;font-weight:500}
.nav a:not(.ihead__ig)::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.nav a:hover::after,.nav a[aria-current=page]::after{transform:scaleX(1)}
.nav a[aria-current=page]{color:var(--rasp)}
.nav .ihead__ig{font-size:.78rem;letter-spacing:.06em;text-transform:none}
.navbtn{display:none;width:48px;height:48px;border:0;background:transparent;cursor:pointer;position:relative;z-index:62;margin-right:-10px}
.navbtn span:not(.sr){position:absolute;left:13px;right:13px;height:1.5px;background:var(--ink);transition:transform .45s var(--ease),top .45s var(--ease)}
.navbtn span:nth-child(1){top:19px}.navbtn span:nth-child(2){top:28px}
.navbtn[aria-expanded=true] span:nth-child(1){top:24px;transform:rotate(45deg)}
.navbtn[aria-expanded=true] span:nth-child(2){top:24px;transform:rotate(-45deg)}
.menu{position:fixed;inset:0;z-index:60;background:var(--paper);display:flex;flex-direction:column;justify-content:center;padding:96px var(--gut) calc(40px + env(safe-area-inset-bottom,0px));clip-path:circle(0% at calc(100% - 38px) 38px);transition:clip-path .7s var(--ease)}
.menu.on{clip-path:circle(150% at calc(100% - 38px) 38px)}
.menu a{font-family:var(--serif);font-size:clamp(2.6rem,13vw,4.4rem);line-height:1.08;text-decoration:none;color:var(--ink);padding:6px 0;opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease),color .3s}
.menu.on a{opacity:1;transform:none}.menu.on a:nth-child(2){transition-delay:.08s}.menu.on a:nth-child(3){transition-delay:.16s}
.menu a[aria-current=page]{color:var(--rasp);font-style:italic}
.menu small{margin-top:28px;color:var(--muted);font-size:.9rem}
.menu-open{overflow:hidden}
.rm .menu{transition:opacity .3s;clip-path:none;opacity:0}.rm .menu.on{opacity:1}.rm .menu a{transform:none}
@media(max-width:760px){.nav{display:none}.navbtn{display:block}.ihead{z-index:61}}

/* ===== services page ===== */
.sv-hero{max-width:1280px;margin:0 auto;padding:clamp(118px,16vh,170px) var(--gut) 56px}
.sv-hero h1{font-family:var(--serif);font-weight:400;font-size:clamp(2.4rem,7.2vw,6.8rem);line-height:.95;letter-spacing:-.02em}
.sv-hero h1 span{display:block;overflow:hidden;padding-bottom:.08em}
.sv-hero h1 span>i{display:block;font-style:normal}
.js .sv-hero h1 span>i{transform:translateY(105%);animation:up 1.2s var(--ease) .15s forwards}.js .sv-hero h1 span:nth-child(2)>i{animation-delay:.3s}.js .sv-hero h1 span:nth-child(3)>i{animation-delay:.45s}
.sv-hero p.lead{margin-top:28px;max-width:40em;color:var(--muted);font-size:1.08rem}
.sv-index{display:flex;gap:clamp(10px,2vw,22px);margin-top:48px;align-items:flex-end;overflow-x:auto;padding-bottom:6px;scrollbar-width:none}
.sv-index::-webkit-scrollbar{display:none}
.sv-index a{flex:0 0 clamp(78px,9vw,120px);text-decoration:none;font-size:.84rem;color:var(--ink);display:grid;gap:10px;font-weight:500}
.sv-index .mini{aspect-ratio:3/4;border-radius:999px 999px 8px 8px;overflow:hidden;background:var(--blush);transition:transform .6s var(--ease),box-shadow .6s}
.sv-index img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.sv-index a:hover .mini{transform:translateY(-8px);box-shadow:0 22px 34px -22px rgba(43,26,34,.6)}.sv-index a:hover img{transform:scale(1.07)}
.sv-index a:nth-child(even) .mini{border-radius:8px 8px 999px 999px}
.stages{position:relative}
.stage{position:relative;background:var(--paper);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,6vw,96px);align-items:center;padding:clamp(88px,12vh,120px) max(var(--gut),calc((100vw - 1280px)/2 + var(--gut))) clamp(40px,7vh,72px);border-top:1px solid var(--line)}
.stage:nth-child(even){background:#FADCE9}
@media(min-width:900px){.stage{position:sticky;top:0;min-height:100vh;box-shadow:0 -30px 60px -40px rgba(43,26,34,.35)}}
.stage__txt h2{font-family:var(--serif);font-weight:400;font-size:clamp(2.7rem,6.6vw,6.4rem);line-height:.94;letter-spacing:-.015em;margin-bottom:22px}
.stage__txt p{max-width:30em;color:var(--muted);font-size:1.06rem}
.stage__txt ul{list-style:none;margin:22px 0 30px;display:flex;flex-wrap:wrap;gap:8px}
.stage__txt li{border:1px solid var(--line);border-radius:99px;padding:7px 15px;font-size:.84rem;background:rgba(255,255,255,.6)}
.stage__cta{display:inline-flex;align-items:center;gap:14px;text-decoration:none;font-weight:600;font-size:.95rem;color:var(--rasp);border-bottom:1px solid currentColor;padding:6px 0;transition:gap .4s var(--ease),color .3s}
.stage__cta:hover{gap:22px;color:var(--ink)}
.arch{justify-self:center;width:min(100%,430px);aspect-ratio:3/4;max-height:76vh;border-radius:999px 999px 14px 14px;overflow:hidden;background:var(--blush);box-shadow:0 40px 70px -36px rgba(43,26,34,.55);position:relative}
.stage:nth-child(even) .arch{border-radius:14px 14px 999px 999px}
.arch img{width:100%;height:100%;object-fit:cover;transform-origin:50% 60%}
.js .arch img{clip-path:inset(100% 0 0 0);transition:clip-path 1.5s var(--ease);will-change:transform;backface-visibility:hidden;transform:translateZ(0)}
.js .stage.in .arch img{clip-path:inset(0)}
/* continuous alternating zoom: odd sections zoom in, even sections zoom out */
.js .stage.in:nth-child(odd) .arch img{animation:zIn 18s linear forwards}
.js .stage.in:nth-child(even) .arch img{animation:zOut 18s linear forwards}
@keyframes zIn{from{transform:scale(1) translateZ(0)}to{transform:scale(1.2) translateZ(0)}}
@keyframes zOut{from{transform:scale(1.2) translateZ(0)}to{transform:scale(1) translateZ(0)}}
.js .stage__txt>*{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .stage.in .stage__txt>*{opacity:1;transform:none}.js .stage.in .stage__txt>*:nth-child(2){transition-delay:.12s}.js .stage.in .stage__txt>*:nth-child(3){transition-delay:.22s}.js .stage.in .stage__txt>*:nth-child(4){transition-delay:.3s}
.rm .arch img{transform:none!important;animation:none!important;transition:opacity 1s!important;clip-path:none!important}.rm .stage__txt>*{transform:none!important}
.sv-close{background:#8A1142;color:#FCE7F0;padding:clamp(80px,14vh,150px) var(--gut);position:relative;z-index:2}
.sv-close__in{max-width:1280px;margin:0 auto}
.sv-close h2{font-family:var(--serif);font-weight:400;font-size:clamp(2.8rem,9vw,8.6rem);line-height:.92;letter-spacing:-.02em;max-width:12ch}
.sv-close p{margin:26px 0 36px;max-width:34em;color:#CDBFB7}
.sv-close .btn{background:var(--paper);color:var(--ink);border-color:var(--paper)}.sv-close .btn::before{background:var(--rasp)}.sv-close .btn:hover{color:#fff;border-color:var(--rasp)}
@media(max-width:899px){.stage{grid-template-columns:1fr;gap:30px;padding-top:72px}.arch{order:-1;width:min(100%,360px);max-height:none}.stage__txt h2{font-size:clamp(2.6rem,13vw,4.2rem)}}

/* ===== inquiry: services as photo tiles ===== */
.svcs label img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 1s var(--ease)}.svcs label:hover img{transform:scale(1.06)}
.checks.svcs{display:grid!important;grid-template-columns:repeat(3,1fr);gap:12px!important}
.svcs legend{text-transform:none!important;letter-spacing:0!important;font-size:.92rem!important;color:var(--ink)!important;font-weight:600;grid-column:1/-1;margin-bottom:2px!important}
.svcs label{position:relative!important;display:block;aspect-ratio:5/6;border-radius:999px 999px 10px 10px;overflow:hidden;isolation:isolate;background:var(--blush);transition:transform .5s var(--ease),box-shadow .5s}
.svcs label:nth-child(3n+2){border-radius:10px 10px 999px 999px}
.svcs label::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(43,26,34,0) 45%,rgba(43,26,34,.72));z-index:-1;transition:background .4s}
.svcs label:hover{transform:translateY(-4px);box-shadow:0 20px 30px -20px rgba(43,26,34,.6)}
.svcs span{position:absolute!important;left:0;right:0;bottom:0;border:0!important;background:transparent!important;color:#fff!important;text-align:center;padding:0 8px 16px!important;font:600 .84rem var(--sans);border-radius:0!important}
.svcs label::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 0 var(--rasp);transition:box-shadow .3s;pointer-events:none}
.svcs label:has(input:checked)::after{box-shadow:inset 0 0 0 4px var(--rasp)}
.svcs label:has(input:checked)::before{background:linear-gradient(180deg,rgba(163,23,76,.0) 30%,rgba(124,15,44,.85))}
.svcs input:checked+span{background:transparent!important;border:0!important}
.svcs label:has(input:checked) span::before{content:"✓ ";}
.svcs label:has(input:focus-visible)::after{box-shadow:inset 0 0 0 3px var(--ink)}


/* ===== inquiry: how should we reach you (balloons) ===== */
.reach{border:0;min-width:0;grid-column:1/-1}
.reach legend{float:left;width:100%;font-size:.92rem;font-weight:600;color:var(--ink);margin-bottom:6px}
.reach__sub{font-family:var(--serif);font-style:italic;font-weight:500;font-size:1.1rem;color:var(--rasp);margin-left:6px}
.reach__grid{clear:both;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(4px,2vw,18px);padding-top:26px}
.reach__opt{position:static!important;display:flex;flex-direction:column;align-items:center;cursor:pointer;pointer-events:auto!important;color:var(--ink)!important}
.reach__opt input{position:absolute;opacity:0;width:1px;height:1px}
.bal{position:relative;display:block;width:100%;max-width:92px;aspect-ratio:80/140;transform-origin:50% 100%;transition:transform .8s cubic-bezier(.3,1.5,.5,1),opacity .5s,filter .5s}
.bal__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.bal__b{fill:var(--c)}.bal__h{fill:#fff;opacity:.32}.bal__k{fill:var(--c)}
.bal__s{fill:none;stroke:rgba(43,26,34,.45);stroke-width:1.4;stroke-linecap:round;transform-origin:40px 85px}
.bal__ic{position:absolute;left:0;right:0;top:0;aspect-ratio:1/1.02;display:grid;place-items:center;color:#fff}
.bal__ic svg{width:34%;height:auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.bal__name{font-size:.84rem;font-weight:600;margin-top:8px;text-align:center;transition:color .3s}
.reach__opt:hover .bal{transform:translateY(-6px) rotate(-2deg)}
.reach__opt input:checked+.bal{transform:translateY(-14px) scale(1.12)}
.reach__opt input:checked+.bal .bal__s{animation:sway 2.6s ease-in-out infinite alternate}
.reach__opt input:checked~.bal__name{color:var(--rasp)}
.reach__grid:has(input:checked) .reach__opt:not(:has(input:checked)) .bal{opacity:.5;filter:saturate(.55)}
.reach__grid:has(input:checked) .reach__opt:not(:has(input:checked)):hover .bal{opacity:.9;filter:none}
.reach__opt input:focus-visible+.bal{outline:2px solid var(--ink);outline-offset:6px;border-radius:50% 50% 40% 40%}
.reach__say{margin-top:14px;text-align:center;font-family:var(--serif);font-size:1.2rem;color:var(--ink);min-height:1.6em}
.reach__opt input:checked+.bal.squash{animation:squash .7s cubic-bezier(.2,1.2,.4,1)}
@keyframes sway{from{transform:rotate(-7deg)}to{transform:rotate(7deg)}}
@keyframes squash{0%{transform:translateY(0) scale(.82,.9)}45%{transform:translateY(-22px) scale(1.2,1.14)}100%{transform:translateY(-14px) scale(1.12)}}
.pop-bit{position:fixed;left:0;top:0;width:9px;height:9px;pointer-events:none;z-index:90;border-radius:50%;will-change:transform,opacity}
.pop-bit.r{border-radius:2px;width:7px;height:12px}
.rm .bal{transition:opacity .3s}.rm .reach__opt:hover .bal,.rm .reach__opt input:checked+.bal{transform:none}.rm .reach__opt input:checked+.bal .bal__s{animation:none}.rm .reach__opt input:checked+.bal.squash{animation:none}
@media(max-width:420px){.bal__name{font-size:.78rem}.reach__say{font-size:1.08rem}}
.svlink{display:inline-flex;align-items:center;gap:12px;margin-top:20px;text-decoration:none;font-weight:600;color:var(--rasp);border-bottom:1px solid currentColor;padding:8px 0;min-height:44px;transition:gap .4s var(--ease),color .3s}
.svlink:hover{gap:20px;color:var(--ink)}
@media(max-width:980px){.iside>.svlink{order:0;align-self:flex-start}}

/* 9 service tiles */
.checks.svcs{grid-template-columns:repeat(3,1fr)}
.svcs label{aspect-ratio:1/1.18}
.svcs span{font-size:.76rem!important;line-height:1.2;padding:0 6px 12px!important}
@media(max-width:420px){.svcs span{font-size:.7rem!important}.checks.svcs{gap:8px!important}}
.bar{grid-template-columns:repeat(5,1fr)}
.f input[type=time]{min-height:54px}
.f input[type=time]+label{top:0;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--rasp);font-weight:600}
/* attachments */
.drop{position:relative}
.drop__in{position:absolute;opacity:0;width:1px;height:1px}
.drop__box{position:static!important;display:grid;justify-items:center;gap:6px;text-align:center;border:1.5px dashed rgba(163,23,76,.45);border-radius:18px;background:linear-gradient(180deg,#FFF8F6,#FBEDE8);padding:26px 18px;cursor:pointer;pointer-events:auto!important;color:var(--ink)!important;transition:border-color .3s,background .3s,transform .5s var(--ease)}
.drop__box:hover,.drop__in:focus-visible+.drop__box{border-color:var(--rasp);transform:translateY(-2px)}
.drop__in:focus-visible+.drop__box{outline:2px solid var(--ink);outline-offset:3px}
.drop__ic{width:48px;height:48px;border-radius:50%;background:var(--rasp);color:#fff;display:grid;place-items:center}
.drop__ic svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.drop__box b{font-size:.95rem;font-weight:600;line-height:1.35;max-width:26em}
.drop__box em{font-style:normal;font-size:.82rem;color:var(--muted)}
.drop__list{list-style:none;display:grid;gap:8px;margin-top:12px}
.drop__list li{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 12px 8px 8px}
.drop__list img,.drop__doc{width:44px;height:44px;border-radius:8px;object-fit:cover;flex:none}
.drop__doc{display:grid;place-items:center;background:var(--blush);color:var(--rasp-d);font-size:.7rem;font-weight:700;text-transform:uppercase}
.drop__nm{flex:1;min-width:0;display:grid;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drop__nm em{font-style:normal;color:var(--muted);font-size:.76rem}
.drop__list button{border:0;background:transparent;color:var(--rasp);font:600 .8rem var(--sans);cursor:pointer;padding:10px 4px;min-height:44px}
.drop__err{display:block!important;color:var(--err);font-size:.8rem;margin-top:8px;min-height:1em}
.drop__err:empty{display:none!important}
.checks.svcs{margin-bottom:22px}
.drop__box,.drop__box *{text-transform:none!important;letter-spacing:0!important}
.drop__box b{font-size:.98rem}
@media(min-width:981px){.ititle{font-size:clamp(2.3rem,3.7vw,3.7rem)}}

.sv-hero__cta{margin-top:26px}
