:root {
  --rose-50:#FDF6F4; --rose-100:#FAEAE6; --rose-200:#F5D5CE; --rose-300:#EDBDB2;
  --rose-400:#E6AB9F; --rose-500:#E0A194; --rose-600:#C98679; --rose-700:#9C5F54;
  --rose-800:#7A473F; --rose-900:#573029;
  --peach-50:#FFF9F3; --peach-100:#FFF0E1; --peach-200:#FEE4CC; --peach-300:#FDDABC;
  --peach-400:#FCD2AE; --peach-500:#F5B98A; --peach-600:#E39A63; --peach-700:#B5713F;
  --ivory:#FFFBF8; --white:#FFFFFF; --blush:#FDF3F0; --sand:#F8EBE4;
  --line:#F0DDD6; --line-strong:#E3C9C0;
  --ink:#3A2826; --ink-deep:#2A1B1A; --ink-muted:#7A6460; --ink-subtle:#A48D87;
  --bg:var(--ivory); --bg-alt:var(--blush); --surface:var(--white);
  --brand:var(--rose-500); --brand-strong:var(--rose-700);
  --grad-glow:linear-gradient(135deg,#FCD2AE 0%,#E0A194 100%);
  --grad-blush:linear-gradient(180deg,#FFFBF8 0%,#FDF3F0 100%);
  --font-display:"Cormorant Garamond",Georgia,serif;
  --font-body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-script:"Pinyon Script",cursive;
  --r-sm:12px; --r-md:16px; --r-lg:24px; --r-xl:32px; --r-pill:999px;
  --sh-xs:0 1px 2px rgba(122,71,63,.06);
  --sh-sm:0 2px 8px rgba(122,71,63,.08);
  --sh-md:0 8px 24px -4px rgba(122,71,63,.12);
  --sh-lg:0 16px 40px -8px rgba(122,71,63,.16);
  --sh-glow:0 10px 30px -6px rgba(224,161,148,.55);
  --ease-soft:cubic-bezier(.22,.61,.36,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --container:1200px;
  --gutter:clamp(16px,4.5vw,32px);
  --header-h:120px;
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-top:env(safe-area-inset-top,0px);
}

@media (min-width:768px){
  :root{ --header-h:132px; }
}

*,*::before,*::after{box-sizing:border-box}
html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--header-h) + var(--safe-top) + 8px);
}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-body);
  font-size:1rem;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
  padding-bottom:var(--safe-bottom);
}
img,svg,video{max-width:100%; height:auto; display:block}
a{color:var(--rose-700); text-underline-offset:4px}
a:hover{color:var(--rose-800)}
h1,h2,h3{font-family:var(--font-display); font-weight:600; color:var(--ink); text-wrap:balance; margin:0}
p{text-wrap:pretty; margin:0}
::selection{background:var(--peach-200); color:var(--ink-deep)}
:focus-visible{
  outline:3px solid color-mix(in srgb,var(--rose-500) 55%,transparent);
  outline-offset:3px;
  border-radius:var(--r-sm);
}

.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:max(var(--gutter), env(safe-area-inset-left,0px));
  padding-inline-end:max(var(--gutter), env(safe-area-inset-right,0px));
}
.skip-link{position:absolute; left:-999px; top:0; background:var(--rose-700); color:#fff; padding:.75rem 1rem; z-index:100}
.skip-link:focus{left:1rem; top:calc(1rem + var(--safe-top))}

.text-script{font-family:var(--font-script); font-weight:400}
.text-accent{font-family:var(--font-display); font-style:italic; color:var(--rose-600); font-weight:500}
.overline{font-size:.7rem; letter-spacing:.16em; text-transform:uppercase; font-weight:600; color:var(--rose-700)}
@media (min-width:480px){.overline{font-size:.75rem; letter-spacing:.18em}}
.muted{color:var(--ink-muted)}
.display{
  font-family:var(--font-display);
  font-weight:500;
  font-size:clamp(2.15rem,9vw,4rem);
  line-height:1.05;
  letter-spacing:-.015em;
}
.h2{font-size:clamp(1.65rem,5.5vw,2.5rem); line-height:1.15}
.h3{font-size:clamp(1.35rem,4vw,1.875rem); line-height:1.2}
.lead{
  font-size:clamp(1rem,2.8vw,1.125rem);
  line-height:1.7;
  color:var(--ink-muted);
  max-width:65ch;
}

.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  min-height:44px; height:auto; padding:.7rem 1.35rem; border-radius:var(--r-pill); border:0;
  font-family:var(--font-body); font-size:.9375rem; font-weight:600; letter-spacing:.01em;
  text-decoration:none; cursor:pointer; touch-action:manipulation;
  transition:all .25s var(--ease-soft);
  -webkit-tap-highlight-color:transparent;
}
.btn:active{transform:scale(.98)}
.btn-sm{min-height:40px; padding:.55rem 1rem; font-size:.875rem}
.btn-lg{min-height:52px; padding:.85rem 1.75rem}
.btn-primary{background:var(--rose-700); color:#fff}
.btn-primary:hover{background:var(--rose-800); color:#fff; box-shadow:var(--sh-md); transform:translateY(-1px)}
.btn-glow{background-image:var(--grad-glow); color:var(--ink-deep); box-shadow:var(--sh-glow); position:relative; overflow:hidden}
.btn-glow:hover{filter:brightness(1.03); color:var(--ink-deep)}
.btn-outline{background:transparent; color:var(--rose-700); border:1.5px solid var(--rose-400)}
.btn-outline:hover{background:var(--rose-50); border-color:var(--rose-600); color:var(--rose-800)}
.btn-soft{background:var(--rose-100); color:var(--rose-800)}
.btn-soft:hover{background:var(--rose-200); color:var(--rose-800)}

.shine-wrap{position:relative; overflow:hidden}
.shine-wrap::after{
  content:""; position:absolute; inset:-20% -40%; width:40%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);
  transform:translateX(-120%) rotate(20deg); pointer-events:none;
}
.shine-wrap:hover::after{animation:shine .7s var(--ease-soft)}
@keyframes shine{to{transform:translateX(220%) rotate(20deg)}}

.lift{transition:transform .25s var(--ease-soft), box-shadow .25s var(--ease-soft), border-color .25s var(--ease-soft)}
@media (hover:hover){
  .lift:hover{transform:translateY(-4px); box-shadow:var(--sh-md)}
}

.reveal{opacity:0; transform:translateY(20px); transition:opacity .7s var(--ease-soft), transform .7s var(--ease-soft)}
.reveal.is-visible{opacity:1; transform:none}

@keyframes fade-up{from{opacity:0; transform:translateY(20px)} to{opacity:1; transform:none}}
@keyframes soft-scale{from{opacity:0; transform:scale(.97)} to{opacity:1; transform:scale(1)}}
@keyframes float{0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)}}
@keyframes marquee{from{transform:translateX(0)} to{transform:translateX(-50%)}}
@keyframes blob{0%,100%{transform:translate(0,0) scale(1)} 33%{transform:translate(16px,-12px) scale(1.04)} 66%{transform:translate(-10px,8px) scale(.97)}}

.anim-fade-up{animation:fade-up .75s var(--ease-soft) both}
.anim-soft-scale{animation:soft-scale .9s var(--ease-soft) both}
.anim-float{animation:float 5.5s var(--ease-soft) infinite}
.anim-blob{animation:blob 14s var(--ease-soft) infinite}
.d1{animation-delay:.08s}.d2{animation-delay:.16s}.d3{animation-delay:.28s}.d4{animation-delay:.4s}.d5{animation-delay:.52s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; scroll-behavior:auto!important}
  .reveal{opacity:1; transform:none}
}
