*{box-sizing:border-box;margin:0;padding:0}
:root{
  --blue:#3f73c4;
  --blue-deep:#0d2b5c;
  --blue-night:#081a36;
  --blue-pale:#e2efff;
  --pink:#ffb8d0;
  --pink-soft:#ffe0eb;
  --gold:#d39b28;
  --gold-soft:#f5d477;
  --cream:#fffdf9;
  --ink:#17233a;
  --muted:#728097;
  --line:rgba(22,47,85,.13);
  --shadow:0 18px 45px rgba(22,47,85,.12);
  --serif:"Playfair Display",Georgia,serif;
  --sans:"DM Sans",Arial,sans-serif;
}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:linear-gradient(135deg,#e2efff 0%,#f6e7f0 52%,#fff8df 100%)}
button,a{font:inherit}
a{text-decoration:none;color:inherit}
button{border:0;cursor:pointer}
img{display:block;max-width:100%}
section,header{position:relative}
.page-shell{max-width:100%;overflow:hidden}
.content{width:min(1120px,88vw);margin:auto}
.content.narrow{max-width:820px}
.center{text-align:center}
.section-light{background:var(--cream)}
.section-pink{background:linear-gradient(135deg,#ffe8f0 0%,#ffd0e0 52%,#fff1d0 100%)}
.kicker{font-size:9px;letter-spacing:2.8px;font-weight:700;color:#9b6272;margin-bottom:18px;text-transform:uppercase}
.kicker span{color:var(--gold);margin:0 4px}
.kicker.light{color:#e8cfda}
h1,h2{font-family:var(--serif);font-weight:500;line-height:.95;letter-spacing:-1.8px}
h1{font-size:clamp(58px,7vw,106px);color:var(--blue-deep)}
h2{font-size:clamp(43px,5vw,72px);color:var(--blue-deep)}
h1 em,h2 em{display:inline-block;font-style:italic;color:#d71958;font-weight:400;animation:title-word-pulse 3.2s ease-in-out infinite;transform-origin:center}
.subtext{font-size:12px;line-height:1.7;color:#6d7483;max-width:520px;margin:20px auto}
.hero{min-height:580px;background:linear-gradient(115deg,#fff8fb 0%,#ffd3e2 56%,#fff8df 100%)}
.hero-decorations{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.hero-decorations span{position:absolute;display:block;line-height:1}
.heart{font-size:19px;color:#d71958;opacity:.72;animation:heart-float 4s ease-in-out infinite}
.heart-one{top:23%;left:45%;animation-delay:-1s}.heart-two{top:15%;right:27%;font-size:25px;animation-delay:-2.2s}.heart-three{bottom:18%;left:11%;font-size:14px;animation-delay:-3.2s}
.heart-four{top:42%;right:4%;font-size:13px;animation-delay:-.5s}.heart-five{bottom:28%;right:46%;font-size:11px;animation-delay:-2.8s}.heart-six{top:63%;left:38%;font-size:16px;animation-delay:-1.8s}
.hero-inner{width:min(1120px,88vw);margin:auto;min-height:580px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:80px}
.hero-description{font-size:12px;line-height:1.7;color:#6c6570;margin:24px 0}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap}
.pill{display:inline-flex;align-items:center;gap:14px;border-radius:999px;padding:12px 18px;font-size:10px;font-weight:700;transition:.25s}
.pill span{font-size:13px}
.pill-primary{background:linear-gradient(135deg,#d71958,#ad164a);color:#fff}
.pill-primary:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(193,39,89,.2)}
.pill-dark{background:linear-gradient(135deg,#16478f,#10234c);color:#fff}
.pill-note{background:linear-gradient(135deg,#f5d477,#d39b28);color:#102e61}
.pill:active{transform:scale(.96)}
.surprise-note{max-width:500px;margin:22px 0 0;padding:16px 18px;border-left:3px solid var(--gold);background:rgba(255,255,255,.62);color:#5c5260;font-family:var(--serif);font-size:15px;line-height:1.5;animation:note-reveal .45s ease}
.surprise-note span{color:#d71958}
.hero-photo-wrap{position:relative;justify-self:center}
.hero-photo{width:min(390px,37vw);aspect-ratio:.82;overflow:hidden;border-radius:48% 48% 18% 18%}
.hero-photo img{width:100%;height:100%;object-fit:cover}
.hero-photo{overflow:hidden}
.hero-photo img{transition:filter .35s ease,box-shadow .35s ease}
.frame{border:7px solid rgba(255,255,255,.85);box-shadow:var(--shadow)}
.hero-tag{position:absolute;bottom:8px;left:-28px;background:#311321;color:#fff;padding:10px 18px;border-radius:999px;font-size:9px;box-shadow:0 8px 20px rgba(49,19,33,.2)}
.hero-tag span{color:#f0a5ba;margin-left:5px}
.intro{padding:95px 0 75px}
.intro h2{font-size:clamp(45px,6vw,78px)}
.five-photo-row{width:min(900px,86vw);margin:48px auto 0;display:grid;grid-template-columns:repeat(5,1fr);gap:14px;align-items:end}
.small-polaroid{background:#fff;border-radius:7px;padding:7px 7px 12px;box-shadow:0 10px 25px rgba(75,36,52,.14);transform:rotate(-2deg)}
.small-polaroid:nth-child(2){transform:rotate(2deg)}
.small-polaroid:nth-child(4){transform:rotate(-1deg)}
.small-polaroid:nth-child(5){transform:rotate(2deg)}
.small-polaroid.offset-down{transform:translateY(24px) rotate(2deg)}
.small-polaroid.featured{transform:translateY(-15px);padding:8px 8px 14px}
.small-polaroid img{width:100%;aspect-ratio:.78;object-fit:cover;border-radius:4px}
.small-polaroid,.polaroid-card,.memory-wall img{position:relative;overflow:hidden}
.small-polaroid img,.polaroid-card img,.memory-wall img{transition:filter .35s ease,box-shadow .35s ease}
.small-polaroid figcaption{font-size:7px;margin-top:7px;color:#6d6570;letter-spacing:1px}
.reasons{padding:82px 0}
.reasons h2{font-size:clamp(40px,5vw,67px);margin-bottom:42px}
.reason-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:65px}
.reason{display:grid;grid-template-columns:55px 1fr;gap:12px;padding:22px 0;border-bottom:1px solid var(--line);border-radius:5px;transition:transform .25s ease,background .25s ease,box-shadow .25s ease}
.reason:hover{transform:scale(1.015);background:linear-gradient(90deg,rgba(255,184,208,.62),rgba(255,224,235,.18));box-shadow:0 7px 16px rgba(193,39,89,.1)}
.reason span{font-family:var(--serif);font-style:italic;color:#bb7186;font-size:18px}
.reason p{font-size:11px;line-height:1.55;color:#49546a}
.section-hearts{position:absolute;inset:0;pointer-events:none;overflow:hidden;color:#d71958;opacity:.6}
.section-hearts span{position:absolute;font-size:18px;animation:heart-float 4.5s ease-in-out infinite}
.section-hearts span:nth-child(1){top:18%;right:6%;animation-delay:-1s}.section-hearts span:nth-child(2){top:52%;left:4%;font-size:13px;animation-delay:-2.4s}.section-hearts span:nth-child(3){bottom:14%;right:14%;font-size:12px;animation-delay:-3.5s}
.section-hearts-pink span:nth-child(1){top:12%;left:5%;font-size:14px}.section-hearts-pink span:nth-child(2){bottom:10%;right:5%;font-size:22px}
.gallery-block{padding:70px 0}
.section-title-row{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:34px}
.section-title-row h2{font-size:clamp(45px,5vw,68px)}
.tiny-label{font-size:8px;letter-spacing:2px;color:#9c8790;text-transform:uppercase}
.polaroid-grid.three{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:930px;margin:auto}
.polaroid-card{background:#fff;padding:9px 9px 20px;box-shadow:0 12px 30px rgba(60,27,41,.14)}
.polaroid-card img{width:100%;aspect-ratio:1;object-fit:cover}
.polaroid-card figcaption{font-family:var(--serif);font-style:italic;font-size:12px;margin-top:10px;color:#4c3540}
.rotate-left{transform:rotate(-1.5deg)}
.rotate-right{transform:rotate(1.5deg)}
.memory-wall{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:930px;margin:auto;align-items:start}
.memory-wall img{width:100%;height:230px;object-fit:cover;border-radius:8px;box-shadow:0 6px 18px rgba(22,47,85,.12)}
.memory-wall img:nth-child(1),.memory-wall img:nth-child(5),.memory-wall img:nth-child(9){height:300px}
.memory-wall img:nth-child(3),.memory-wall img:nth-child(7),.memory-wall img:nth-child(11){height:340px}
.memory-wall img:nth-child(4),.memory-wall img:nth-child(8),.memory-wall img:nth-child(12){height:280px}
.memory-wall{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:930px;margin:auto;align-items:start}
.memory-wall img{width:100%;height:230px;object-fit:cover;border-radius:8px;box-shadow:0 6px 18px rgba(22,47,85,.12)}
.memory-wall img:nth-child(1),.memory-wall img:nth-child(5),.memory-wall img:nth-child(9),.memory-wall img:nth-child(13),.memory-wall img:nth-child(17),.memory-wall img:nth-child(21),.memory-wall img:nth-child(25),.memory-wall img:nth-child(29),.memory-wall img:nth-child(33),.memory-wall img:nth-child(37),.memory-wall img:nth-child(41),.memory-wall img:nth-child(45){height:300px}
.memory-wall img:nth-child(3),.memory-wall img:nth-child(7),.memory-wall img:nth-child(11),.memory-wall img:nth-child(15),.memory-wall img:nth-child(19),.memory-wall img:nth-child(23),.memory-wall img:nth-child(27),.memory-wall img:nth-child(31),.memory-wall img:nth-child(35),.memory-wall img:nth-child(39),.memory-wall img:nth-child(43),.memory-wall img:nth-child(47){height:340px}
.memory-wall img:nth-child(4),.memory-wall img:nth-child(8),.memory-wall img:nth-child(12),.memory-wall img:nth-child(16),.memory-wall img:nth-child(20),.memory-wall img:nth-child(24),.memory-wall img:nth-child(28),.memory-wall img:nth-child(32),.memory-wall img:nth-child(36),.memory-wall img:nth-child(40),.memory-wall img:nth-child(44),.memory-wall img:nth-child(48){height:280px}
.searching{background:linear-gradient(135deg,#260719 0%,#681033 52%,#3d0b22 100%);color:#fff;padding:85px 0}
@media(max-width:520px){
  .memory-wall{grid-template-columns:1fr 1fr}
}
.searching h2{color:#fff;font-size:clamp(47px,5.5vw,76px)}
.searching h2 em{color:#e69bb3}
.search-bar{width:min(580px,100%);margin:30px 0 25px;padding:11px 16px;border-radius:999px;background:linear-gradient(100deg,#43152a,#72203f);border:1px solid rgba(231,165,186,.18);font-size:10px;color:#f0cdd8;display:flex;justify-content:space-between}
.search-layout{display:grid;grid-template-columns:1fr 260px;gap:40px;align-items:start}
.wish-row{display:flex;justify-content:space-between;gap:20px;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.10);font-size:10px;color:#e8d7dd}
.wish-row small{font-size:7px;letter-spacing:1px;color:#cf91a7;white-space:nowrap}
.found-card{background:linear-gradient(145deg,#5a1c38,#351021);border:1px solid rgba(234,174,193,.16);padding:20px;border-radius:5px}
.found-card p{font-size:7px;letter-spacing:2px;color:#bc879b}
.found-card strong{display:block;font-family:var(--serif);font-weight:400;font-size:46px;color:#f4dfe5;margin:10px 0}
.found-card span{font-size:9px;line-height:1.6;color:#d9bcc7}
.playlist{padding:75px 0}
.playlist-head{display:grid;grid-template-columns:1fr 270px;gap:50px;align-items:center;margin-bottom:35px}
.playlist-head h2{font-size:clamp(46px,5vw,72px)}
.cassette{height:145px;background:linear-gradient(145deg,#4c1832,#24101d);border:7px solid #f6e6ee;border-radius:8px;box-shadow:var(--shadow);position:relative;padding:16px;color:#f8dce5}
.cassette-label{font-size:8px;letter-spacing:2px;display:flex;justify-content:space-between}
.reel{position:absolute;top:56px;width:38px;height:38px;border:7px dotted #b26a81;border-radius:50%}
.reel-left{left:55px}.reel-right{right:55px}
.cassette-line{position:absolute;left:42px;right:42px;bottom:30px;border-top:1px solid #a2546c}
.cassette small{position:absolute;bottom:12px;left:16px;font-size:6px;letter-spacing:1.5px}
.tracks{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.track{display:grid;grid-template-columns:35px 1fr 28px 45px;align-items:center;gap:10px;text-align:left;padding:18px 18px;background:#fff;border-radius:5px;border:1px solid #e5dbe0;box-shadow:0 5px 18px rgba(57,24,39,.05)}
.track.active{background:linear-gradient(135deg,#4c1832,#24101d);color:#fff;border-color:#351323}
.track-no{font-family:var(--serif);font-style:italic;font-size:18px;color:#b26880}
.track.active .track-no{color:#efafc2}
.track-info b{display:block;font-size:11px;font-weight:600}
.track-info small{display:block;font-size:8px;color:#8490a0;margin-top:4px}
.track.active .track-info small{color:#d7bdc7}
.track-play{font-size:9px;color:#bd647e}
.track-time{font-size:8px;color:#8b8e99;text-align:right}
.playlist-status{margin:14px 0 0;font-size:9px;letter-spacing:.4px;color:#8b5268;text-align:center}
.chat-section{padding:85px 0}
.chat-layout{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}
.chat-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ffd9e7,#f29fbd);color:#9b506a;font-size:24px;margin-bottom:20px}
.chat-copy h2{font-size:clamp(43px,5vw,68px)}
.chat-window{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.chat-bubble{max-width:88%;padding:10px 15px;border-radius:16px;background:#fff;border:1px solid #eadfe3;font-size:10px;line-height:1.4;box-shadow:0 5px 18px rgba(40,22,30,.06)}
.chat-bubble.sent{align-self:flex-end;background:linear-gradient(135deg,#e783a4,#c94d77);color:#fff;border-color:#d76f91}
.chat-bubble.wide{max-width:95%}
.typing{padding:7px 13px;background:#fff;border-radius:15px;color:#9e7e8a;letter-spacing:3px}
.lockscreen{padding:80px 0}
.lock-layout{display:grid;grid-template-columns:1fr 350px;gap:80px;align-items:center}
.lock-copy h2{font-size:clamp(45px,5vw,68px)}
.phone{width:300px;height:590px;margin:auto;border-radius:38px;background:#17131a;padding:11px;box-shadow:0 25px 65px rgba(20,13,18,.28);position:relative;overflow:hidden}
.phone:before{content:"";position:absolute;inset:10px;border-radius:29px;background:linear-gradient(160deg,#1e1d28,#6f4550);z-index:0}
.phone-notch{position:absolute;z-index:4;top:10px;left:50%;transform:translateX(-50%);width:100px;height:23px;background:#17131a;border-radius:0 0 18px 18px}
.phone-status,.phone-time,.phone-date,.phone>img,.notifications,.phone-home{position:relative;z-index:2}
.phone-status{display:flex;justify-content:space-between;color:#fff;padding:25px 18px 0;font-size:8px}
.phone-time{text-align:center;color:#fff;font-family:var(--serif);font-size:58px;line-height:1;margin-top:18px}
.phone-date{text-align:center;color:#fff;font-size:9px;margin-top:5px}
.phone>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;opacity:.65}
.notifications{margin:35px 10px 0;display:grid;gap:8px}
.notification{background:rgba(83,35,49,.84);backdrop-filter:blur(8px);border-radius:11px;padding:10px 11px;color:#fff;box-shadow:0 5px 12px rgba(0,0,0,.12)}
.notification b{display:block;font-size:8px;color:#f0b4c7;margin-bottom:3px}
.notification span{display:block;font-size:8px;line-height:1.4}
.notification.highlighted{background:rgba(244,184,201,.88);color:#4a1e2c}
.notification.highlighted b{color:#7f304a}
.phone-home{position:absolute;bottom:9px;left:50%;transform:translateX(-50%);width:90px;height:4px;background:#fff;border-radius:5px}
.ticket-section{padding:65px 0}
.ticket{width:min(980px,88vw);margin:auto;display:grid;grid-template-columns:1fr 190px;background:#fff;border-radius:8px;box-shadow:var(--shadow);overflow:hidden}
.ticket-main{padding:38px 42px}
.ticket-main h2{font-size:clamp(36px,4vw,55px);margin-bottom:12px}
.ticket-main>p:not(.kicker){font-size:10px;line-height:1.7;color:#687386;max-width:650px;margin-bottom:20px}
.ticket-note{font-size:8px;letter-spacing:1.5px;color:#a2848e;margin-left:12px}
.ticket-side{background:linear-gradient(145deg,#fff3f7,#ffd9e7);border-left:1px dashed #dcb7c5;display:grid;place-items:center;text-align:center}
.ticket-side span{font-family:var(--serif);font-size:48px;color:#a44e6a}
.ticket-side small{font-size:7px;letter-spacing:1.5px;color:#9a7e89}
.final{background:linear-gradient(135deg,#a70f46,#e02d69 55%,#b81752);color:#fff;padding:70px 20px;text-align:center}
.final>p{font-size:8px;letter-spacing:2.5px;color:#efcad6;margin-bottom:25px}
.final h2{color:#fff;font-size:clamp(38px,4.5vw,62px)}
.final h2 em{color:#f6c0d0}
.final-mark{display:block;margin-top:32px;color:#f4d3dc;font-size:20px}
.floating-player{position:fixed;z-index:50;right:17px;bottom:17px;background:linear-gradient(135deg,#421126,#210912);color:#fff;padding:7px 12px 7px 7px;border-radius:999px;display:flex;align-items:center;gap:8px;box-shadow:0 8px 25px rgba(40,13,25,.25);border:1px solid rgba(247,202,217,.25);text-align:left}
.floating-disc{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#ffd0df,#e77d9e);color:#6c2540;display:grid;place-items:center;font-size:8px}
.floating-player b,.floating-player small{display:block}
.floating-player b{font-size:8px}.floating-player small{font-size:7px;color:#d8b8c4;margin-top:2px}
.lightbox{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:30px;background:rgba(8,26,54,.88);backdrop-filter:blur(8px);cursor:zoom-out;animation:lightbox-in .25s ease}
.lightbox[hidden]{display:none}
.lightbox img{max-width:min(92vw,1100px);max-height:88vh;width:auto;height:auto;object-fit:contain;border:8px solid #fff;border-radius:6px;box-shadow:0 25px 70px rgba(0,0,0,.35);cursor:default;animation:image-in .3s ease}
.lightbox-close{position:absolute;top:18px;right:22px;width:42px;height:42px;border:1px solid rgba(255,255,255,.55);border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:28px;line-height:1;cursor:pointer;transition:background .2s ease,transform .2s ease}
.lightbox-close:hover{background:rgba(255,255,255,.28);transform:rotate(90deg)}
body.lightbox-open{overflow:hidden}
.reveal{opacity:0;transform:translateY(18px);transition:opacity .8s ease,transform .8s ease}
.reveal.visible{opacity:1;transform:none}
.delay-1{transition-delay:.12s}
@keyframes lightbox-in{from{opacity:0}to{opacity:1}}
@keyframes image-in{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes heart-float{0%,100%{transform:translateY(0) scale(1);opacity:.45}50%{transform:translateY(-12px) scale(1.12);opacity:.85}}
@keyframes note-reveal{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes title-word-pulse{0%,100%{transform:translateY(0) scale(1);text-shadow:0 0 0 rgba(215,25,88,0)}50%{transform:translateY(-3px) scale(1.025);text-shadow:0 5px 16px rgba(215,25,88,.22)}}
@media(max-width:520px){.heart-two{right:12%}}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
@media(max-width:850px){
  .hero-inner,.playlist-head,.chat-layout,.lock-layout{grid-template-columns:1fr;gap:45px}
  .hero{padding:65px 0}.hero-inner{min-height:auto}.hero-copy{text-align:center}.hero-actions{justify-content:center}
  .hero-photo{width:min(360px,70vw)}
  .five-photo-row{grid-template-columns:repeat(5,minmax(85px,1fr));gap:7px;overflow-x:auto;padding-bottom:15px}
  .reason-grid,.tracks{grid-template-columns:1fr}
  .search-layout{grid-template-columns:1fr}
  .searching .content{width:min(90vw,700px)}
  .cassette{width:min(330px,90vw);margin:auto}
  .ticket{grid-template-columns:1fr}.ticket-side{min-height:120px;border-left:0;border-top:1px dashed #dcb7c5}
}
@media(max-width:520px){
  .content,.hero-inner{width:90vw}
  .hero h1{font-size:58px}
  .five-photo-row{grid-template-columns:repeat(5,110px)}
  .polaroid-grid.three{grid-template-columns:1fr}
  .memory-wall{grid-template-columns:1fr 1fr}
  .memory-wall img,.memory-wall img:nth-child(n){height:220px}
  .phone{width:280px;height:550px}
  .ticket-main{padding:30px 25px}
}
