@font-face{font-family:Nunito;src:url('/assets/nunito-regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Nunito;src:url('/assets/nunito-extrabold.ttf') format('truetype');font-weight:800;font-display:swap}
@font-face{font-family:Caveat;src:url('/assets/caveat.ttf') format('truetype');font-weight:400 700;font-display:swap}
:root{color-scheme:light;--forest:#143d2b;--green:#2d7a52;--ink:#1c2621;--muted:#56615b;--ground:#f1f3ee;--cream:#fff8e8;--gold:#e3a21a;--rust:#b8402f;--you:#6d3fa0;--her:#d49a14;--line:#d2dacd}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;background:var(--ground);color:var(--ink);font-family:Nunito,system-ui,sans-serif;line-height:1.6;overflow-x:hidden}
a{color:inherit}img{max-width:100%;display:block}h1,h2,h3,p,ul,ol,figure{margin:0}ul,ol{padding:0;list-style:none}
h1,h2,h3,.brand{font-weight:800}h1,h2,h3{line-height:1.08;letter-spacing:-.035em}
h1{font-size:clamp(46px,6vw,84px);line-height:1.02}h2{font-size:clamp(32px,4vw,52px)}
.wrap{width:min(1160px,calc(100% - 80px));margin-inline:auto}
.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:11px;font-weight:800;color:var(--green);margin-bottom:18px}
.handwritten{font-family:Caveat,cursive;font-size:30px;line-height:1.2;color:var(--forest)}
a:focus-visible,summary:focus-visible,.carousel:focus-visible{outline:3px solid #a5461c;outline-offset:4px;border-radius:6px}
.skip{position:absolute;left:20px;top:-100px;background:#fff;padding:12px;z-index:30}.skip:focus{top:12px}

/* progress + header */
.progress{position:fixed;inset:0 0 auto;height:4px;z-index:25;background:transparent}
.progress i{display:block;height:100%;width:calc(var(--p,0)*100%);background:linear-gradient(90deg,var(--green),var(--gold));border-radius:0 4px 4px 0}
.top{position:sticky;top:0;z-index:20;backdrop-filter:blur(14px);background:#f1f3eecc;transition:box-shadow .3s}
.top.scrolled{box-shadow:0 1px 0 var(--line)}
.bar{display:flex;align-items:center;gap:32px;padding:14px 0}
.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-size:23px;letter-spacing:-.035em}
.brand img{border-radius:12px;width:40px;height:40px}
.bar nav{display:flex;gap:28px;margin-left:auto;font-size:14px;font-weight:800}
.bar nav a{text-decoration:none;color:var(--muted)}.bar nav a:hover{color:var(--forest)}
.pill{background:var(--forest);color:#fff;text-decoration:none;font-weight:800;font-size:14px;padding:10px 20px;border-radius:99px;transition:transform .2s,background .2s}
.pill:hover{background:#245b40;transform:translateY(-1px)}

/* reveal */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
.intro .reveal:nth-child(2){transition-delay:.08s}.intro .reveal:nth-child(3){transition-delay:.16s}.intro .reveal:nth-child(4){transition-delay:.24s}

/* hero */
.hero{display:grid;grid-template-columns:1.05fr .95fr;gap:40px;align-items:center;padding:48px 0 70px;min-height:min(780px,calc(100svh - 70px))}
.lede{max-width:500px;font-size:19px;color:var(--muted);margin:26px 0 32px}
.scribble{color:var(--forest);position:relative;white-space:nowrap}
.scribble::after{content:"";position:absolute;left:-2%;right:-2%;bottom:.1em;height:.28em;background:var(--gold);opacity:.55;z-index:-1;border-radius:6px;transform:scaleX(0);transform-origin:left;animation:underline .9s .7s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes underline{to{transform:scaleX(1)}}
h1{position:relative;isolation:isolate}
.cta-row{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.fine{font-size:13px;color:var(--muted);line-height:1.45}.fine strong{color:var(--forest)}
.store{display:inline-flex;align-items:center;gap:12px;background:#111;color:#fff;text-decoration:none;padding:11px 24px 11px 20px;border-radius:14px;transition:transform .25s,box-shadow .25s}
.store:hover{transform:translateY(-3px) rotate(-1deg);box-shadow:0 14px 30px #143d2b33}
.store span{display:flex;flex-direction:column;line-height:1.1;text-align:left}.store small{font-size:11px;opacity:.85}.store strong{font-size:22px;letter-spacing:-.02em}
.store.light{background:#fff;color:#111;margin-top:28px}

.stage{position:relative;height:640px;max-width:560px;width:100%;margin-inline:auto}
.stage-trail{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.stage-trail path{fill:none;stroke:var(--green);stroke-width:4;stroke-linecap:round;stroke-dasharray:2 14;opacity:.55;animation:march 30s linear infinite}
@keyframes march{to{stroke-dashoffset:-400}}
.phone{position:relative;border-radius:40px;background:#16201b;padding:9px;box-shadow:0 30px 60px #143d2b33,0 0 0 1px #0003 inset;width:100%;max-width:290px}
.phone img{border-radius:32px;width:100%;height:auto;background:var(--cream)}
.phone-main{position:absolute;right:20px;top:20px;width:280px;transform:rotate(2.5deg)}
.phone-main.reveal.in{transform:rotate(2.5deg)}
.p-back{position:absolute;left:-10px;top:60px;width:260px}
.polaroid{background:#fdfcf8;padding:12px 12px 0;box-shadow:0 20px 40px #143d2b25;transform:rotate(-6deg)}
.polaroid.reveal.in{transform:rotate(-6deg)}
.polaroid img{aspect-ratio:1/1;object-fit:cover;width:100%;height:auto}
.polaroid figcaption{font-family:Caveat,cursive;font-size:24px;padding:10px 4px 14px;text-align:center}
.tape{position:absolute;top:-14px;left:calc(50% - 40px);width:80px;height:28px;background:#e3a21a77;transform:rotate(-5deg)}
.float{position:absolute;width:96px;height:96px;filter:drop-shadow(0 12px 14px #143d2b30);animation:bob 5s ease-in-out infinite}
.f1{left:30px;bottom:50px}.f2{right:-6px;bottom:20px;width:78px;height:78px;animation-delay:-2s}
@keyframes bob{50%{translate:0 -14px}}
.note{position:absolute;left:12px;top:10px;background:var(--gold);color:var(--forest);font-family:Caveat,cursive;font-size:26px;padding:4px 16px;border-radius:6px;transform:rotate(-6deg);box-shadow:0 8px 16px #143d2b25;animation:wobble 6s ease-in-out infinite}
@keyframes wobble{50%{transform:rotate(-2deg) translateY(-4px)}}

/* ribbon */
.ribbon{background:var(--forest);color:var(--cream);overflow:hidden;padding:15px 0;transform:rotate(-1deg) scale(1.03);margin:10px 0 30px}
.ribbon-track{display:flex;gap:28px;white-space:nowrap;width:max-content;animation:slide 60s linear infinite;font-weight:800;font-size:17px;letter-spacing:-.01em}
.ribbon i{font-style:normal;color:var(--gold)}
@keyframes slide{to{transform:translateX(-50%)}}

/* together */
.together{display:grid;grid-template-columns:.9fr 1.1fr;gap:64px;align-items:center;padding:70px 0 90px}
.together-copy h2{margin-bottom:22px}.together-copy p:last-child{color:var(--muted);font-size:18px;max-width:470px}
.tracker{background:var(--cream);border-radius:28px;padding:30px 28px 18px;box-shadow:0 24px 60px #143d2b1a;border:1px solid #efe5cc}
.tracker-sums{display:grid;grid-template-columns:1fr auto 1fr auto 1.2fr;align-items:center;gap:10px;text-align:center}
.sum{display:flex;flex-direction:column;align-items:center;gap:2px}
.sum b{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:16px}
.sum.you b{background:var(--you)}.sum.her b{background:var(--her)}
.sum span{font-size:12px;color:var(--muted);font-weight:800}
.sum strong{font-size:clamp(20px,2.4vw,28px);letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.sum.all{background:var(--forest);color:#fff;border-radius:16px;padding:10px 8px}.sum.all span{color:#cfe0d5}
.plus{font-size:24px;font-weight:800;color:var(--muted)}
.tracker-map{width:100%;height:auto;margin-top:18px;overflow:visible}
.route-base{fill:none;stroke:#d9cfb4;stroke-width:6;stroke-linecap:round;stroke-dasharray:1 12}
.route-done{fill:none;stroke:var(--green);stroke-width:6;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}
.wp circle{fill:var(--cream);stroke:var(--green);stroke-width:3}
.flag path:first-child{stroke:var(--forest);stroke-width:3;fill:none}.flag path:last-child{fill:var(--rust)}
.marker circle{stroke:#fff;stroke-width:3;filter:drop-shadow(0 4px 4px #0003)}.marker text{fill:#fff;font:800 15px Nunito,sans-serif}
.marker.you circle{fill:var(--you)}.marker.her circle{fill:var(--her)}

/* showcase rows */
.row{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center;padding:56px 0}
.row.flip .row-art{order:2}
.row-art{position:relative;display:flex;justify-content:center}
.row-art .phone{max-width:290px;transition:transform .5s}
.row-art:hover .phone{transform:rotate(-1.5deg) translateY(-6px)}
.row-art.duo{gap:0}.duo .phone{max-width:240px}.duo .phone.low{margin-top:70px;margin-left:-30px;transform:rotate(3deg)}.duo .phone:first-child{transform:rotate(-3deg)}
.row-art.duo:hover .phone{transform:none}
.row-copy .eyebrow{margin-bottom:14px}.row-copy h2{margin-bottom:18px}
.row-copy>p:not(.eyebrow){color:var(--muted);font-size:18px;max-width:470px}
.aside{margin-top:18px;font-size:16px!important;border-left:4px solid var(--gold);padding-left:14px}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 4px}
.chips li{background:var(--cream);border:1px dashed #cdb97a;padding:8px 16px;border-radius:99px;font-family:Caveat,cursive;font-size:23px;line-height:1.1;color:var(--forest);transition:transform .25s}
.chips li:nth-child(odd){transform:rotate(-1.5deg)}.chips li:nth-child(even){transform:rotate(1.5deg)}.chips li:hover{transform:rotate(0) scale(1.06)}
.f3{width:100px;height:100px;right:2%;bottom:6%}

/* celebrate */
.celebrate{background:var(--forest);color:var(--cream);padding:90px 0;overflow:hidden;margin-top:30px}
.celebrate-in{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center}
.celebrate .eyebrow{color:var(--gold)}.celebrate h2{margin-bottom:20px}.celebrate p:not(.eyebrow){color:#cfe0d5;font-size:19px;max-width:480px}
.celebrate .phone{margin-inline:auto}.phone.tilt{transform:rotate(4deg)}.phone.tilt.reveal.in{transform:rotate(4deg)}

/* trails */
.trails{padding:90px 0 80px}
.section-heading{display:flex;justify-content:space-between;align-items:end;gap:40px}
.section-heading>p{max-width:380px;color:var(--muted);font-size:16px}
.carousel{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;padding:36px max(40px,calc((100vw - 1160px)/2)) 24px;scrollbar-width:thin;scrollbar-color:var(--green) transparent}
.carousel li{flex:0 0 min(300px,72vw);scroll-snap-align:start;transition:transform .35s}
.carousel li:hover{transform:translateY(-8px) rotate(-1deg)}
.carousel img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:18px;box-shadow:0 18px 36px #143d2b22}
.carousel p{margin-top:16px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:800}
.carousel h3{font-size:23px;margin:4px 0}
.carousel span{font-family:Caveat,cursive;font-size:24px;color:var(--green)}

/* steps */
.steps{padding:30px 0 80px;text-align:center}
.steps ol{display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin-top:44px;text-align:left}
.number{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--gold);color:var(--forest);font-family:Caveat,cursive;font-size:34px;font-weight:700;margin-bottom:16px}
.steps h3{font-size:22px;margin-bottom:8px}.steps p{color:var(--muted)}
.steps li:nth-child(2){transition-delay:.12s}.steps li:nth-child(3){transition-delay:.24s}

/* faq */
.faq{max-width:820px;padding:20px 0 90px}
.faq h2{text-align:center;margin-bottom:34px}
details{border-bottom:1px solid var(--line)}
summary{cursor:pointer;list-style:none;padding:20px 40px 20px 0;font-weight:800;font-size:19px;letter-spacing:-.02em;position:relative}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";position:absolute;right:6px;top:50%;translate:0 -50%;font-size:28px;color:var(--green);transition:rotate .3s}
details[open] summary::after{rotate:45deg}
details p{padding:0 40px 22px 0;color:var(--muted);font-size:17px}
details p a{color:var(--forest)}

/* outro */
.outro{background:#e6ebe3;padding:90px 0}
.outro-in{display:grid;grid-template-columns:.8fr 1fr;gap:60px;align-items:center}
.outro-art{border-radius:24px;box-shadow:0 24px 50px #143d2b2b;transform:rotate(-3deg);max-width:380px;height:auto}
.outro h2{margin:10px 0 14px}.outro-in p:not(.handwritten){color:var(--muted);font-size:18px}
.button{display:inline-flex;gap:24px;background:var(--forest);color:#fff;padding:15px 24px;border-radius:12px;margin-top:27px;text-decoration:none;font-weight:800;font-size:14px}
.button:hover{background:#245b40}
/* 404 */
main.nf{text-align:center;padding:90px 0}main.nf h1{margin:10px 0}main.nf p{color:var(--muted)}

footer{display:flex;align-items:center;gap:32px;flex-wrap:wrap;padding:30px 0 40px}
footer .brand{font-size:19px}footer nav{display:flex;gap:24px;margin-left:auto;font-size:13px}footer p{font-size:11px;color:var(--muted);width:100%}

@media(max-width:900px){
  .wrap{width:calc(100% - 48px)}.bar nav{display:none}.bar{justify-content:space-between}
  .hero{grid-template-columns:1fr;min-height:0;padding-top:28px}
  .stage{height:600px;margin-top:10px}
  .together,.row,.celebrate-in,.outro-in{grid-template-columns:1fr;gap:36px}
  .row.flip .row-art{order:0}.row{padding:36px 0}
  .section-heading{display:block}.section-heading>p{margin-top:14px}
  .steps ol{grid-template-columns:1fr;gap:30px}
  .carousel{padding-inline:24px}
  .outro-art{margin-inline:auto}
}
@media(max-width:520px){
  .stage{height:560px}.phone-main{width:240px;right:4px}.p-back{width:200px;left:-4px}
  .store strong{font-size:20px}.tracker{padding:22px 14px 12px}.tracker-sums{gap:4px}.plus{font-size:18px}
  .duo .phone{max-width:44vw}.duo .phone.low{margin-left:-14px}
  .scribble{white-space:normal}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}.scribble::after{transform:none}
  .phone-main.reveal,.polaroid.reveal{transform:rotate(2.5deg)}.polaroid.reveal{transform:rotate(-6deg)}
}
.brand,.pill{white-space:nowrap}
html{overflow-x:clip}
.outro-in>*,.celebrate-in>*,.row>*,.together>*,.hero>*{min-width:0}
@media(max-width:520px){.brand{font-size:20px;gap:9px}.brand img{width:34px;height:34px}.pill{font-size:13px;padding:9px 16px}.outro-art{max-width:80%}.handwritten{font-size:26px}}
.row-art{align-items:flex-start}
