:root{
  --paper:#fbfaf7;
  --paper-soft:#f7eee8;
  --warm:#ead9cf;
  --rose:#b45c66;
  --rose-deep:#8f3e4d;
  --rose-soft:#d98a85;
  --sage:#748a70;
  --sage-dark:#3f5541;
  --ink:#3d3330;
  --muted:#756763;
  --line:#dcc9bf;
  --gold:#b08945;
  --shadow:0 24px 70px -42px rgba(61,51,48,.62);
  --shadow-soft:0 18px 46px -38px rgba(61,51,48,.54);
  --shadow-lift:0 28px 72px -48px rgba(61,51,48,.78);
  --ease:cubic-bezier(.2,.72,.18,1);
  --ease-spring:cubic-bezier(.18,1.15,.28,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{
  min-height:100%;
  min-height:-webkit-fill-available;
  scroll-behavior:smooth;
  background:var(--paper);
  -webkit-text-size-adjust:100%;
}
body{
  min-height:100vh;
  min-height:-webkit-fill-available;
  font-family:"Noto Serif SC","Songti SC",serif;
  color:var(--ink);
  background:
    linear-gradient(180deg,rgba(251,250,247,.82),rgba(251,250,247,1) 62%),
    radial-gradient(circle at 12% 12%,rgba(116,138,112,.18),transparent 30%),
    radial-gradient(circle at 88% 16%,rgba(180,92,102,.16),transparent 28%),
    var(--paper);
  line-height:1.9;
  overflow-x:hidden;
}
img{display:block;width:100%;height:100%;object-fit:cover}
button{
  position:relative;
  overflow:hidden;
  font:inherit;
  color:inherit;
  -webkit-appearance:none;
  appearance:none;
}
a{color:inherit;text-decoration:none}
button,a,img{-webkit-tap-highlight-color:transparent}
.script{font-family:"Ma Shan Zheng","Noto Serif SC",serif}
.page{overflow:hidden}
.page::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:1;
  pointer-events:none;
  opacity:.18;
  mix-blend-mode:multiply;
  background:
    linear-gradient(90deg,rgba(61,51,48,.035) 1px,transparent 1px),
    linear-gradient(180deg,rgba(61,51,48,.024) 1px,transparent 1px);
  background-size:46px 46px;
}
.ambient{position:fixed;inset:0;pointer-events:none;z-index:20;overflow:hidden}
.petal{
  position:absolute;
  top:-8vh;
  left:var(--x);
  width:8px;
  height:14px;
  border-radius:70% 30% 70% 30%;
  background:rgba(217,138,133,.55);
  filter:blur(.1px);
  animation:fall var(--d) linear infinite;
  animation-delay:var(--delay);
  transform:rotate(var(--r));
}
@keyframes fall{
  0%{transform:translate3d(0,-8vh,0) rotate(0deg);opacity:0}
  12%{opacity:.72}
  100%{transform:translate3d(var(--drift),108vh,0) rotate(260deg);opacity:0}
}
.memory-nav{
  position:fixed;
  left:50%;
  bottom:16px;
  bottom:max(16px,env(safe-area-inset-bottom));
  transform:translateX(-50%);
  z-index:30;
  width:calc(100% - 32px);
  max-width:360px;
  width:min(360px,calc(100% - 32px));
  min-height:54px;
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:4px;
  padding:6px;
  border:1px solid rgba(255,255,255,.26);
  border-radius:999px;
  background:rgba(48,38,35,.38);
  -webkit-backdrop-filter:blur(22px);
  backdrop-filter:blur(22px);
  box-shadow:0 24px 70px -44px rgba(0,0,0,.82);
  transition:transform .32s var(--ease),background .32s ease,box-shadow .32s ease;
}
.memory-nav a{
  position:relative;
  min-width:0;
  min-height:42px;
  display:grid;
  place-items:center;
  border-radius:999px;
  color:rgba(255,255,255,.84);
  font-size:.9rem;
  white-space:nowrap;
  overflow:hidden;
  transition:background .24s var(--ease),color .24s ease,transform .24s var(--ease);
}
.memory-nav a:hover{background:rgba(255,255,255,.12);color:#fff;transform:translateY(-1px)}
.memory-nav a:active{transform:translateY(0) scale(.97)}
.memory-nav a.active{
  background:rgba(255,255,255,.88);
  color:var(--rose-deep);
  box-shadow:0 14px 30px -24px rgba(0,0,0,.62);
}
.memory-nav a.active::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:5px;
  width:4px;
  height:4px;
  border-radius:50%;
  background:var(--rose-soft);
  transform:translateX(-50%);
}
.hero,.subhero{
  position:relative;
  min-height:92vh;
  min-height:92svh;
  display:grid;
  align-items:end;
  padding:24px;
  color:#fff;
  isolation:isolate;
}
.hero-home{--hero-image:url('portrait-red.jpg');--hero-y:26%}
.hero-her{--hero-image:url('floral-dress.jpg');--hero-y:30%}
.hero-us{--hero-image:url('marriage-day.jpg');--hero-y:38%}
.hero-baby{--hero-image:url('pregnancy-check.jpg');--hero-y:35%}
.hero-letter{--hero-image:url('birthday-cake.jpg');--hero-y:34%}
.subhero{min-height:58vh;min-height:58svh}
.hero::before,.subhero::before{
  content:"";
  position:absolute;
  inset:0;
  background:var(--hero-image) center var(--hero-y,26%)/cover no-repeat;
  z-index:-3;
  transform:scale(1.03);
  animation:heroBreath 14s ease-in-out infinite alternate;
}
.hero::after,.subhero::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(180deg,rgba(25,20,18,.06),rgba(25,20,18,.38) 44%,rgba(25,20,18,.76)),
    radial-gradient(circle at 22% 78%,rgba(180,92,102,.42),transparent 28%);
  z-index:-2;
}
.hero-glow{
  position:absolute;
  inset:auto 0 0;
  height:38vh;
  height:38svh;
  background:linear-gradient(180deg,transparent,rgba(251,250,247,.95));
  z-index:-1;
}
@keyframes heroBreath{
  from{transform:scale(1.03) translateY(0)}
  to{transform:scale(1.08) translateY(-10px)}
}
.hero-inner{width:min(780px,100%);padding:0 0 9vh;padding-bottom:9svh}
.subhero .hero-inner{padding-bottom:6vh;padding-bottom:6svh}
.eyebrow{
  width:max-content;
  max-width:100%;
  color:rgba(255,255,255,.86);
  font-size:.82rem;
  margin-bottom:14px;
  padding:4px 12px;
  border:1px solid rgba(255,255,255,.28);
  border-radius:999px;
  background:rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
}
.hero h1,.subhero h1{
  font-size:clamp(2.35rem,9vw,4.9rem);
  line-height:1.08;
  font-weight:500;
  text-shadow:0 2px 24px rgba(0,0,0,.22);
  letter-spacing:0;
}
.hero .name{
  display:block;
  margin-top:8px;
  font-size:clamp(3.1rem,14vw,6.6rem);
  line-height:.95;
}
.hero p,.subhero p{
  margin-top:22px;
  max-width:600px;
  color:rgba(255,255,255,.9);
  font-size:1.06rem;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.hero-actions a,.page-link{
  position:relative;
  overflow:hidden;
  min-height:42px;
  padding:7px 16px;
  border-radius:999px;
  background:rgba(255,255,255,.9);
  color:var(--rose-deep);
  box-shadow:0 16px 34px -24px rgba(0,0,0,.5);
  transition:transform .28s var(--ease),box-shadow .28s ease,background .28s ease;
}
.hero-actions a:hover,.page-link:hover{transform:translateY(-2px);box-shadow:0 22px 42px -30px rgba(0,0,0,.62)}
.hero-actions a:active,.page-link:active,.surprise-btn:active,.memory-chip:active,.family-tabs button:active,.flip-card:active{transform:scale(.98)}
.hero-actions a.secondary,.page-link.secondary{
  background:rgba(255,255,255,.14);
  color:#fff;
  border:1px solid rgba(255,255,255,.26);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
}
.scroll-hint{margin-top:28px;color:rgba(255,255,255,.78);font-size:.9rem}
section{position:relative;width:min(780px,100%);margin:0 auto;padding:86px 24px}
.wide{width:min(1040px,100%)}
.band{
  width:100%;
  background:
    linear-gradient(180deg,rgba(255,255,255,.58),rgba(247,238,232,.62)),
    radial-gradient(circle at 8% 30%,rgba(116,138,112,.1),transparent 24%);
}
.section-title{margin-bottom:34px}
.section-title .kicker{color:var(--sage-dark);font-size:.86rem;margin-bottom:8px}
.section-title h2{font-size:clamp(1.7rem,6vw,2.2rem);line-height:1.34;font-weight:500;color:var(--rose)}
.lead{color:var(--muted);font-size:1.02rem;max-width:660px}
.love-note{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:18px;
  align-items:end;
  padding:24px;
  border:1px solid rgba(220,201,191,.86);
  border-radius:8px;
  background:
    linear-gradient(135deg,rgba(255,255,255,.78),rgba(247,238,232,.74)),
    radial-gradient(circle at 92% 8%,rgba(180,92,102,.14),transparent 30%);
  box-shadow:var(--shadow);
}
.love-note h2{font-size:clamp(1.55rem,5vw,2.3rem);font-weight:500;line-height:1.35;color:var(--rose-deep)}
.love-note p{margin-top:10px;color:var(--muted);max-width:660px}
.surprise-btn{
  min-height:44px;
  border:0;
  border-radius:999px;
  padding:8px 18px;
  background:var(--rose);
  color:#fff;
  cursor:pointer;
  box-shadow:0 18px 38px -28px rgba(61,51,48,.8);
  transition:transform .25s var(--ease),box-shadow .25s ease,background .25s ease;
}
.surprise-btn:hover{transform:translateY(-2px);box-shadow:0 22px 46px -30px rgba(61,51,48,.86);background:var(--rose-deep)}
.surprise-card{
  grid-column:1 / -1;
  min-height:66px;
  display:flex;
  align-items:center;
  padding:15px 18px;
  border-radius:8px;
  background:rgba(255,255,255,.66);
  color:var(--ink);
  border:1px solid rgba(220,201,191,.78);
  transition:transform .32s var(--ease-spring),background .28s ease,box-shadow .28s ease;
}
.surprise-card.pop{transform:translateY(-4px) scale(1.01);background:rgba(255,255,255,.9);box-shadow:var(--shadow-soft)}
.photo{
  position:relative;
  overflow:hidden;
  border-radius:8px;
  background:var(--warm);
  box-shadow:var(--shadow);
  transform:translateZ(0);
  transition:transform .45s var(--ease),box-shadow .45s ease,filter .45s ease;
}
.photo::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(135deg,rgba(255,255,255,.18),transparent 34%,rgba(61,51,48,.06));
  opacity:.7;
  pointer-events:none;
}
.photo img{transition:opacity .7s ease,transform 1s var(--ease),filter .9s ease}
.motion-ready .photo img{opacity:0;transform:scale(1.025)}
.motion-ready .photo.is-loaded img{opacity:1;transform:scale(1)}
.photo:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift)}
.photo.is-loaded:hover img{transform:scale(1.045);filter:saturate(1.05) contrast(1.02)}
.portrait{aspect-ratio:4/5}
.landscape{aspect-ratio:4/3}
.square{aspect-ratio:1}
.caption{margin-top:12px;color:var(--muted);font-size:.92rem;text-align:center}
.two-col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:center}
.copy p{margin-bottom:14px;color:var(--muted)}
.copy strong{color:var(--ink);font-weight:500}
.quote{
  margin-top:22px;
  padding:15px 18px;
  border-left:3px solid var(--sage);
  border-radius:0 8px 8px 0;
  background:rgba(255,255,255,.54);
  color:var(--ink);
  font-size:1.08rem;
  box-shadow:0 16px 42px -38px rgba(61,51,48,.55);
}
.memory-deck{display:flex;flex-wrap:wrap;gap:10px}
.memory-chip{
  border:1px solid var(--line);
  border-radius:999px;
  min-height:42px;
  padding:7px 15px;
  background:rgba(255,255,255,.62);
  color:var(--rose-deep);
  cursor:pointer;
  transition:transform .24s var(--ease),background .24s ease,color .24s ease,box-shadow .24s ease;
}
.memory-chip:hover,.memory-chip.is-open{transform:translateY(-2px);background:var(--sage);color:#fff;box-shadow:0 18px 36px -30px rgba(63,85,65,.7)}
.memory-message{
  margin-top:18px;
  padding:22px;
  border-radius:8px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.7);
  color:var(--ink);
  font-size:1.08rem;
  box-shadow:0 18px 52px -44px rgba(61,51,48,.65);
  transition:transform .3s var(--ease-spring),background .3s ease,box-shadow .3s ease;
}
.memory-message.is-swapping{transform:translateY(-3px);background:rgba(255,255,255,.88);box-shadow:var(--shadow-soft)}
.entry-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:30px}
.entry{
  min-height:154px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:18px;
  border:1px solid rgba(220,201,191,.9);
  border-radius:8px;
  background:rgba(255,255,255,.64);
  box-shadow:0 18px 52px -44px rgba(61,51,48,.65);
  transition:transform .34s var(--ease),box-shadow .34s ease,background .34s ease,border-color .34s ease;
}
.entry:hover{transform:translateY(-5px);background:rgba(255,255,255,.88);border-color:rgba(180,92,102,.28);box-shadow:var(--shadow-lift)}
.entry .num{color:var(--gold);font-size:.8rem}
.entry h3{font-size:1.16rem;font-weight:500;color:var(--rose-deep);line-height:1.35}
.entry p{color:var(--muted);font-size:.9rem;line-height:1.7}
.story-card{display:grid;grid-template-columns:.95fr 1.05fr;gap:28px;align-items:center;margin-top:28px}
.story-card .story-copy{transition:transform .45s var(--ease),opacity .45s ease}
.story-card:hover .story-copy{transform:translateX(3px)}
.story-card:nth-child(even){grid-template-columns:1.05fr .95fr}
.story-card:nth-child(even) .story-copy{order:-1}
.story-copy{padding:8px 0}
.story-copy .tag{color:var(--gold);font-size:.84rem;margin-bottom:8px}
.story-copy h3{font-size:1.42rem;line-height:1.36;font-weight:500;color:var(--rose-deep);margin-bottom:10px}
.story-copy p{color:var(--muted)}
.timeline{position:relative;padding-left:28px}
.timeline::before{content:"";position:absolute;left:7px;top:7px;bottom:7px;width:1px;background:linear-gradient(var(--line),var(--rose-soft),var(--line))}
.tl-item{position:relative;margin-bottom:28px;padding:2px 0 2px 8px}
.tl-item::before{
  content:"";
  position:absolute;
  left:-26px;
  top:11px;
  width:13px;
  height:13px;
  border-radius:50%;
  background:var(--sage);
  box-shadow:0 0 0 5px var(--paper),0 0 0 8px rgba(116,138,112,.14);
}
.tl-item .when{color:var(--gold);font-size:.9rem;margin-bottom:4px}
.tl-item .what{font-size:1.06rem;color:var(--ink)}
.tl-item .detail{color:var(--muted);font-size:.96rem;margin-top:4px}
.memory-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:16px;margin-top:36px}
.memory-grid .photo:first-child{grid-row:span 2}
.memory-grid .photo:last-child{grid-column:1 / -1}
.soft-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.gallery .photo:nth-child(1),.gallery .photo:nth-child(6){grid-column:span 2}
.story-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:22px}
.story-strip article{
  min-height:178px;
  padding:18px;
  border:1px solid rgba(220,201,191,.86);
  border-radius:8px;
  background:rgba(255,255,255,.68);
  transition:transform .34s var(--ease),box-shadow .34s ease,background .34s ease;
}
.story-strip article:hover{transform:translateY(-4px);background:rgba(255,255,255,.86);box-shadow:var(--shadow-soft)}
.story-strip time{display:block;color:var(--gold);font-size:.84rem;margin-bottom:8px}
.story-strip h3{font-size:1.12rem;line-height:1.35;font-weight:500;color:var(--rose-deep);margin-bottom:8px}
.story-strip p{color:var(--muted);font-size:.92rem;line-height:1.7}
.promise-panel{
  margin-top:28px;
  padding:24px;
  border-radius:8px;
  border:1px solid var(--line);
  background:
    linear-gradient(135deg,rgba(255,255,255,.72),rgba(234,217,207,.58)),
    radial-gradient(circle at 0 0,rgba(116,138,112,.13),transparent 32%);
  box-shadow:0 22px 58px -48px rgba(61,51,48,.68);
}
.promise-panel h2{font-size:1.42rem;font-weight:500;color:var(--rose-deep);margin-bottom:8px}
.promise-panel p{color:var(--muted)}
.baby-title{margin-top:70px}
.baby-moments{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.baby-moments .photo:last-child{grid-column:1 / -1}
.flip-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}
.flip-card{
  min-height:132px;
  text-align:left;
  border:1px solid var(--line);
  border-radius:8px;
  padding:17px;
  background:rgba(255,255,255,.64);
  cursor:pointer;
  transition:transform .28s var(--ease),background .28s ease,box-shadow .28s ease,border-color .28s ease;
}
.flip-card span{display:block;color:var(--gold);font-size:.86rem;margin-bottom:8px}
.flip-card strong{display:block;color:var(--rose-deep);font-weight:500;line-height:1.62}
.flip-card:hover,.flip-card.open{transform:translateY(-4px);border-color:rgba(180,92,102,.32);background:rgba(255,255,255,.9);box-shadow:var(--shadow-soft)}
.flip-card.open strong{color:var(--sage-dark)}
.family-wall{
  margin-top:44px;
  padding:24px;
  border-radius:8px;
  border:1px solid rgba(220,201,191,.86);
  background:
    linear-gradient(135deg,rgba(255,255,255,.62),rgba(247,238,232,.72)),
    radial-gradient(circle at 100% 0,rgba(176,137,69,.16),transparent 36%);
  box-shadow:0 28px 78px -56px rgba(61,51,48,.74);
}
.family-wall-head{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:18px;
  align-items:end;
}
.family-wall h2{font-size:clamp(1.55rem,5vw,2.2rem);line-height:1.34;font-weight:500;color:var(--rose-deep)}
.family-note{max-width:720px;margin-top:10px;color:var(--muted);font-size:.96rem}
.family-tabs{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.family-tabs button{
  min-height:36px;
  border:1px solid rgba(220,201,191,.9);
  border-radius:999px;
  padding:6px 13px;
  background:rgba(255,255,255,.62);
  color:var(--rose-deep);
  cursor:pointer;
  transition:background .22s ease,color .22s ease,transform .22s var(--ease),box-shadow .22s ease;
}
.family-tabs button:hover,.family-tabs button.is-active{background:var(--sage);color:#fff;transform:translateY(-1px);box-shadow:0 16px 34px -30px rgba(63,85,65,.76)}
.family-mosaic{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  grid-auto-flow:dense;
  gap:12px;
  margin-top:22px;
}
.family-card{
  min-height:210px;
  aspect-ratio:1;
  opacity:1;
  transform:translateY(0);
  transition:opacity .3s ease,transform .36s var(--ease),filter .3s ease,box-shadow .36s ease;
}
.family-card.tall{grid-row:span 2;aspect-ratio:4/5}
.family-card.wide-card{grid-column:span 2;aspect-ratio:16/10}
.family-card.is-hidden{opacity:.14;filter:grayscale(.8);transform:scale(.98);pointer-events:none}
.family-card::before{
  content:"";
  position:absolute;
  inset:auto 0 0;
  height:48%;
  background:linear-gradient(180deg,transparent,rgba(38,29,26,.72));
  z-index:1;
  pointer-events:none;
}
.family-caption{
  position:absolute;
  left:14px;
  right:14px;
  bottom:12px;
  z-index:2;
  color:#fff;
  text-shadow:0 1px 18px rgba(0,0,0,.34);
}
.family-caption span{display:block;font-size:.78rem;color:rgba(255,255,255,.78);margin-bottom:2px}
.family-caption strong{display:block;font-size:1rem;font-weight:500;line-height:1.45}
.tap-ripple{
  position:absolute;
  width:12px;
  height:12px;
  left:var(--x);
  top:var(--y);
  border-radius:50%;
  pointer-events:none;
  background:rgba(255,255,255,.46);
  transform:translate(-50%,-50%) scale(1);
  animation:ripple .58s ease-out forwards;
}
.lightbox{
  position:fixed;
  inset:0;
  z-index:80;
  display:none;
  place-items:center;
  padding:24px;
  background:rgba(28,22,20,.84);
  -webkit-backdrop-filter:blur(18px);
  backdrop-filter:blur(18px);
}
.lightbox.open{display:grid}
.lightbox figure{width:min(880px,100%);max-height:86vh;max-height:86svh}
.lightbox img{width:100%;height:auto;max-height:78vh;max-height:78svh;object-fit:contain;border-radius:8px;box-shadow:0 30px 80px -36px rgba(0,0,0,.9)}
.lightbox figcaption{margin-top:10px;text-align:center;color:rgba(255,255,255,.86);font-size:.94rem}
.lightbox button{
  position:absolute;
  top:18px;
  right:18px;
  width:42px;
  height:42px;
  border:1px solid rgba(255,255,255,.24);
  border-radius:50%;
  background:rgba(255,255,255,.14);
  color:#fff;
  cursor:pointer;
}
.heart-pop{
  position:fixed;
  z-index:90;
  left:var(--left);
  top:var(--top);
  color:rgba(180,92,102,.72);
  pointer-events:none;
  animation:heartRise 1s ease-out forwards;
}
body.is-lightbox-open{overflow:hidden;touch-action:none}
@keyframes heartRise{
  from{transform:translate(-50%,-50%) scale(.8);opacity:.9}
  to{transform:translate(-50%,-120px) scale(1.5);opacity:0}
}
@keyframes ripple{
  to{transform:translate(-50%,-50%) scale(18);opacity:0}
}
.letter-wrap{position:relative}
.letter-wrap::before{content:"";position:absolute;inset:-18px 24px auto;height:34px;border-radius:50%;background:rgba(180,92,102,.16);filter:blur(18px)}
.letter{
  position:relative;
  border:1px solid var(--line);
  border-radius:8px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.74),rgba(255,255,255,.56)),
    repeating-linear-gradient(180deg,transparent 0,transparent 35px,rgba(220,201,191,.22) 36px);
  padding:36px 30px;
  box-shadow:var(--shadow);
}
.letter p{margin-bottom:16px;color:var(--ink)}
.sign{text-align:right;color:var(--rose);margin-top:28px}
.archive{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:24px}
.archive-item{padding:18px;border-radius:8px;border:1px solid var(--line);background:rgba(255,255,255,.62)}
.archive-item time{display:block;color:var(--gold);font-size:.84rem;margin-bottom:5px}
.archive-item h3{font-size:1.08rem;font-weight:500;color:var(--rose-deep);margin-bottom:5px}
.archive-item p{color:var(--muted);font-size:.92rem;line-height:1.7}
.next-strip{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.next-strip a{border:1px solid var(--line);background:rgba(255,255,255,.62);color:var(--rose-deep)}
footer{padding:48px 24px 98px;text-align:center;color:var(--muted);font-size:.92rem}
.reveal{opacity:0;transform:translateY(26px) scale(.985);filter:blur(8px);transition:opacity .78s ease var(--delay,0ms),transform .78s var(--ease) var(--delay,0ms),filter .78s ease var(--delay,0ms)}
.reveal.in{opacity:1;transform:none;filter:none}
.hero .reveal,.subhero .reveal{opacity:1;transform:none;filter:none}
.float-slow{animation:floatSlow 7s ease-in-out infinite alternate}
@keyframes floatSlow{
  from{transform:translateY(0) rotate(-.4deg)}
  to{transform:translateY(-8px) rotate(.4deg)}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
  .ambient{display:none}
}
@media (max-width:820px){
  .memory-nav{bottom:12px;bottom:max(12px,env(safe-area-inset-bottom));width:calc(100% - 24px);max-width:352px;width:min(352px,calc(100% - 24px))}
  .hero{padding:20px;min-height:92vh;min-height:92svh}
  .subhero{padding:20px;min-height:56vh;min-height:56svh}
  .hero-inner{padding-bottom:8vh;padding-bottom:8svh}
  section{padding:70px 20px}
  .two-col,.story-card,.story-card:nth-child(even){grid-template-columns:1fr;gap:22px}
  .story-card:nth-child(even) .story-copy{order:0}
  .entry-grid{grid-template-columns:1fr 1fr}
  .memory-grid{grid-template-columns:1fr 1fr}
  .memory-grid .photo:first-child{grid-column:span 2;grid-row:auto}
  .soft-pair{grid-template-columns:1fr 1fr}
  .gallery{grid-template-columns:1fr 1fr}
  .gallery .photo:nth-child(1),.gallery .photo:nth-child(6){grid-column:span 1}
  .story-strip{grid-template-columns:1fr 1fr}
  .love-note{grid-template-columns:1fr}
  .surprise-btn{width:max-content}
  .flip-grid{grid-template-columns:1fr}
  .family-wall{padding:18px}
  .family-wall-head{grid-template-columns:1fr}
  .family-tabs{justify-content:flex-start}
  .family-mosaic{grid-template-columns:1fr 1fr}
  .family-card.tall{grid-row:span 1}
  .letter{padding:30px 22px}
  .archive{grid-template-columns:1fr}
}
@media (hover:none){
  .photo:hover img{transform:none;filter:none}
  .photo:hover,.memory-nav a:hover,.entry:hover,.flip-card:hover,.family-tabs button:hover,.story-strip article:hover{transform:none}
}
@media (max-width:430px){
  .entry-grid{grid-template-columns:1fr}
  .story-strip{grid-template-columns:1fr}
  .baby-moments{grid-template-columns:1fr}
  .baby-moments .photo:last-child{grid-column:auto}
  .family-mosaic{grid-template-columns:1fr}
  .family-card,.family-card.tall,.family-card.wide-card{grid-column:auto;grid-row:auto;aspect-ratio:4/5}
  .hero-actions a{width:100%;justify-content:center;text-align:center}
  .hero p{font-size:1rem}
}
