/* TERRAINVITE · Birthday 06 · Pink Dream
   Original pink-glam / fashion-doll-house inspired invitation. */
.birthday-pink-dream {
  --bpd-bg:#fff1f7;
  --bpd-bg-2:#ffe4f0;
  --bpd-bg-3:#ffd8eb;
  --bpd-pink:#ff3f98;
  --bpd-pink-2:#ff5cad;
  --bpd-rose:#f78bd0;
  --bpd-violet:#d969ff;
  --bpd-blush:#ffb7d8;
  --bpd-gold:#ffe07a;
  --bpd-gold-deep:#e8c15f;
  --bpd-cyan:#7bdfff;
  --bpd-ink:#5a2746;
  --bpd-ink-2:#6c3154;
  --bpd-white:#fff;
  --bpd-shadow:0 24px 70px rgba(133,41,91,.16);
  --bpd-body:'DM Sans','Noto Sans',Arial,sans-serif;
  --bpd-display:'PT Serif','Cormorant Garamond',serif;
  background:var(--bpd-bg);
  color:var(--bpd-ink);
  font-family:var(--bpd-body);
  overflow:hidden;
}
.birthday-pink-dream .invite-body { background:var(--bpd-bg); }
.birthday-pink-dream .invite-section-slot { position:relative; }
.bpd-section { position:relative;padding:clamp(66px,11vw,118px) max(20px,5vw);overflow:hidden; }
.bpd-section h2,.bpd-final h2 { margin:0;font-family:var(--bpd-display);font-weight:600;line-height:.98;letter-spacing:-.035em;text-wrap:balance; }
.bpd-section p,.bpd-final p { margin:0;line-height:1.7; }
.bpd-kicker { display:inline-block;font-size:10px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--bpd-pink); }
.bpd-decor { display:block;pointer-events:none;user-select:none; }
.bpd-section-heading { width:min(820px,100%);margin:0 auto clamp(34px,6vw,64px);text-align:center; }
.bpd-section-heading h2 { margin-top:10px;font-size:clamp(34px,7vw,72px);color:var(--bpd-ink); }

/* Shared gate keeps its structure; Pink Dream adds only a theme accent. */
.birthday-pink-dream .ti-opening { background-color:#f1dce7;background-image:linear-gradient(145deg,rgba(255,63,152,.12),transparent 45%),url('/assets/decor/opening-satin-v9.svg'); }
.birthday-pink-dream .ti-envelope__event { color:#a44a77; }
.birthday-pink-dream .ti-envelope__names em { color:#e3a75b; }
.birthday-pink-dream .ti-envelope .ti-envelope__open { color:#6c3154;border-color:rgba(232,193,95,.65);box-shadow:0 12px 32px rgba(255,63,152,.16),0 0 0 1px rgba(255,92,173,.10) inset; }
.birthday-pink-dream .ti-envelope .ti-envelope__open::after { content:'✦';font-size:.82em;color:#ff5cad;margin-left:.15em; }

/* HERO — fashion poster / glam display window */
.bpd-hero { position:relative;min-height:min(940px,100svh);display:grid;place-items:center;overflow:hidden;background:linear-gradient(152deg,#fff6fa 0%,#ffe4f0 44%,#ffd8eb 100%);isolation:isolate; }
.bpd-hero::before { content:"";position:absolute;inset:-20%;background:radial-gradient(circle at 78% 18%,rgba(255,255,255,.95) 0 8%,transparent 25%),radial-gradient(circle at 15% 62%,rgba(217,105,255,.16),transparent 24%),radial-gradient(circle at 74% 84%,rgba(123,223,255,.16),transparent 18%);z-index:-3; }
.bpd-hero-world { position:relative;width:min(1180px,100%);min-height:min(940px,100svh);display:grid;place-items:center;padding:clamp(72px,8vw,108px) max(18px,4vw) 52px; }
.bpd-hero-glow { position:absolute;width:min(680px,84vw);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 0 15%,rgba(255,255,255,.62) 26%,rgba(255,92,173,.12) 48%,transparent 69%);filter:blur(2px);left:50%;top:48%;transform:translate(-50%,-50%);z-index:-2; }
.bpd-hero-layout { width:min(1100px,100%);display:grid;grid-template-columns:minmax(330px,.95fr) minmax(390px,1.05fr);align-items:center;gap:clamp(22px,4vw,54px);position:relative;z-index:2; }
.bpd-photo-stage { position:relative;width:min(480px,100%);aspect-ratio:.76;justify-self:center;filter:drop-shadow(0 30px 34px rgba(136,45,96,.19)); }
.bpd-photo-shell { position:absolute;inset:7.7% 9.5% 5.8%;overflow:hidden;border-radius:47% 47% 28% 28% / 24% 24% 14% 14%;background:linear-gradient(145deg,#ffb7d8,#f78bd0); }
.bpd-photo-shell img { width:100%;height:100%;object-fit:cover;display:block;will-change:transform; }
.bpd-photo-placeholder { width:100%;height:100%;display:grid;place-items:center;color:#fff;font-family:var(--bpd-display);font-size:clamp(72px,18vw,170px);background:radial-gradient(circle at 50% 30%,#ffddea,#f08abf 58%,#c958a3); }
.bpd-photo-frame { position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:3; }
.bpd-photo-shimmer { position:absolute;z-index:4;inset:6% 8% 5%;overflow:hidden;border-radius:48% 48% 27% 27% / 23% 23% 13% 13%;pointer-events:none; }
.bpd-photo-shimmer::after { content:"";position:absolute;top:-8%;bottom:-8%;width:20%;left:-35%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-16deg);filter:blur(2px); }
.bpd-hero-copy { position:relative;z-index:4;align-self:center;text-align:left;min-width:0; }
.bpd-eyebrow { display:inline-flex;align-items:center;gap:8px;padding:8px 13px;border:1px solid rgba(90,39,70,.16);border-radius:999px;background:rgba(255,255,255,.58);backdrop-filter:blur(8px);font-size:10px;font-weight:800;letter-spacing:.18em;color:var(--bpd-ink-2); }
.bpd-name { margin:18px 0 8px;font-family:var(--bpd-display);font-size:clamp(62px,8vw,110px);font-weight:600;font-style:italic;line-height:.76;letter-spacing:-.07em;color:var(--bpd-pink);text-shadow:0 2px 0 #fff,0 12px 26px rgba(255,63,152,.16);overflow-wrap:anywhere; }
.bpd-name:not(.bpd-name-medium):not(.bpd-name-long):not(.bpd-name-xlong) { white-space:nowrap;overflow-wrap:normal; }
.bpd-name-medium { font-size:clamp(49px,6.7vw,88px); }
.bpd-name-long { font-size:clamp(40px,5.5vw,72px);line-height:.82; }
.bpd-name-xlong { font-size:clamp(34px,4.2vw,56px);line-height:.86;letter-spacing:-.045em; }
.bpd-age { display:inline-flex;align-items:baseline;gap:7px;margin-top:10px;padding:9px 15px 8px;border-radius:18px;background:linear-gradient(145deg,#ff3f98,#ff76b7);color:#fff;box-shadow:0 11px 22px rgba(255,63,152,.22),inset 0 1px rgba(255,255,255,.45);transform:rotate(-2deg); }
.bpd-age strong { font-size:clamp(34px,6vw,56px);line-height:.85;font-weight:800; }
.bpd-age span { font-size:10px;font-weight:900;letter-spacing:.14em; }
.bpd-hero-text { margin-top:20px!important;max-width:490px;font-size:clamp(15px,2.1vw,19px);color:var(--bpd-ink-2); }
.bpd-hero-meta { display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin-top:18px;font-size:13px;color:var(--bpd-ink-2); }
.bpd-hero-meta strong { color:var(--bpd-ink); }
.bpd-hero-meta span::before,.bpd-hero-meta small::before { content:'✦';margin-right:12px;color:var(--bpd-gold-deep);font-size:9px; }
.bpd-hero-meta small { font-size:inherit; }
.bpd-hero-starburst { position:absolute;width:280px;right:-55px;top:70px;opacity:.72;z-index:-1; }
.bpd-hero-ribbon { position:absolute;width:230px;left:-60px;bottom:36px;transform:rotate(-12deg);opacity:.8; }
.bpd-hero-bow { position:absolute;width:126px;left:2.5%;top:12%;z-index:4; }
.bpd-hero-perfume { position:absolute;width:92px;right:4.5%;bottom:12%;z-index:4; }
.bpd-hero-handbag { position:absolute;width:115px;right:1%;top:23%;z-index:4;transform:rotate(5deg); }
.bpd-hero-glasses { position:absolute;width:116px;left:1.5%;bottom:15%;z-index:4;transform:rotate(-8deg); }
.bpd-hero-crown { position:absolute;width:94px;left:45%;top:5%;z-index:4;transform:rotate(-7deg); }
.bpd-hero-heels { position:absolute;width:112px;right:29%;bottom:3%;z-index:3;transform:rotate(8deg); }
.bpd-sparkles { position:absolute;width:106px;z-index:5; }
.bpd-sparkles-a { top:18%;left:33%; }
.bpd-sparkles-b { bottom:18%;right:30%;transform:scale(.8) rotate(20deg); }

/* Hero opening sequence */
@media(prefers-reduced-motion:no-preference) {
  .birthday-pink-dream .invite-body.shown .bpd-hero::before { animation:bpdHeroBg .9s both; }
  .birthday-pink-dream .invite-body.shown .bpd-photo-shell { animation:bpdPhotoIn .75s .12s cubic-bezier(.16,.8,.28,1.08) both; }
  .birthday-pink-dream .invite-body.shown .bpd-photo-frame { animation:bpdFrameClip .78s .22s cubic-bezier(.2,.75,.25,1) both; }
  .birthday-pink-dream .invite-body.shown .bpd-eyebrow { animation:bpdCopyUp .58s .36s both; }
  .birthday-pink-dream .invite-body.shown .bpd-name { animation:bpdCopyUp .68s .44s cubic-bezier(.18,.8,.24,1) both; }
  .birthday-pink-dream .invite-body.shown .bpd-age { animation:bpdAgeSpring .68s .58s cubic-bezier(.16,1.25,.28,1) both; }
  .birthday-pink-dream .invite-body.shown .bpd-hero-text,.birthday-pink-dream .invite-body.shown .bpd-hero-meta { animation:bpdCopyUp .62s .67s both; }
  .birthday-pink-dream .invite-body.shown .bpd-hero-bow { animation:bpdDecorBowIn .72s .32s both,bpdFloatSlow 6.2s 1.2s ease-in-out infinite; }
  .birthday-pink-dream .invite-body.shown .bpd-hero-perfume { animation:bpdDecorRightIn .7s .48s both,bpdFloatRotate 7.4s 1.3s ease-in-out infinite; }
  .birthday-pink-dream .invite-body.shown .bpd-hero-handbag { animation:bpdDecorRightIn .7s .58s both; }
  .birthday-pink-dream .invite-body.shown .bpd-hero-glasses { animation:bpdDecorLeftIn .68s .54s both; }
  .birthday-pink-dream .invite-body.shown .bpd-hero-crown { animation:bpdDecorTopIn .66s .7s both,bpdFloatSoft 5.4s 1.4s ease-in-out infinite; }
  .birthday-pink-dream .invite-body.shown .bpd-sparkles-a { animation:bpdSparkleIn .45s .62s both,bpdSparklePulse 5.3s 1.2s ease-in-out infinite; }
  .birthday-pink-dream .invite-body.shown .bpd-sparkles-b { animation:bpdSparkleInB .45s .76s both,bpdSparklePulseB 6.1s 1.4s ease-in-out infinite; }
  .birthday-pink-dream .invite-body.shown .bpd-photo-shimmer::after { animation:bpdShimmer 7s 1.5s ease-in-out infinite; }
}
@keyframes bpdHeroBg { from{opacity:.35} to{opacity:1} }
@keyframes bpdPhotoIn { from{opacity:0;transform:scale(.94)} to{opacity:1;transform:scale(1)} }
@keyframes bpdFrameClip { from{opacity:0;clip-path:inset(0 50% 0 50%)} to{opacity:1;clip-path:inset(0)} }
@keyframes bpdCopyUp { from{opacity:0;transform:translateY(26px)} to{opacity:1;transform:translateY(0)} }
@keyframes bpdAgeSpring { 0%{opacity:0;transform:scale(.72) rotate(-5deg)}70%{opacity:1;transform:scale(1.07) rotate(-1deg)}100%{opacity:1;transform:scale(1) rotate(-2deg)} }
@keyframes bpdDecorBowIn { from{opacity:0;transform:translate(-24px,-8px) rotate(-18deg) scale(.86)} to{opacity:1;transform:translate(0,0) rotate(0) scale(1)} }
@keyframes bpdDecorRightIn { from{opacity:0;translate:28px 8px} to{opacity:1;translate:0 0} }
@keyframes bpdDecorLeftIn { from{opacity:0;translate:-28px 10px} to{opacity:1;translate:0 0} }
@keyframes bpdDecorTopIn { from{opacity:0;translate:0 -22px;scale:.88} to{opacity:1;translate:0 0;scale:1} }
@keyframes bpdSparkleIn { from{opacity:0;scale:.65;rotate:-12deg} to{opacity:1;scale:1;rotate:0} }
@keyframes bpdSparkleInB { from{opacity:0;scale:.55;rotate:2deg} to{opacity:1;scale:.8;rotate:20deg} }
@keyframes bpdFloatSlow { 0%,100%{translate:0 0;rotate:-1deg}50%{translate:0 -6px;rotate:2deg} }
@keyframes bpdFloatRotate { 0%,100%{translate:0 0;rotate:-1deg}50%{translate:0 -4px;rotate:1.5deg} }
@keyframes bpdFloatSoft { 0%,100%{translate:0 0;scale:1}50%{translate:0 -5px;scale:1.025} }
@keyframes bpdSparklePulse { 0%,100%{opacity:.42;scale:.96;rotate:-3deg}50%{opacity:1;scale:1.05;rotate:5deg} }
@keyframes bpdSparklePulseB { 0%,100%{opacity:.38;scale:.76;rotate:16deg}50%{opacity:.9;scale:.84;rotate:24deg} }
@keyframes bpdShimmer { 0%,73%{transform:translateX(0) skewX(-16deg);opacity:0}78%{opacity:.75}92%{transform:translateX(775%) skewX(-16deg);opacity:.18}100%{transform:translateX(775%) skewX(-16deg);opacity:0} }

/* Invitation note */
.bpd-invite { background:linear-gradient(180deg,#fff9fc,#fff1f7); }
.bpd-note { position:relative;width:min(720px,100%);margin:auto;padding:clamp(42px,7vw,76px) clamp(26px,6vw,74px);border-radius:36px;background:linear-gradient(145deg,rgba(255,255,255,.94),rgba(255,235,245,.96));box-shadow:var(--bpd-shadow),inset 0 0 0 1px rgba(255,255,255,.85);text-align:center;transform-origin:50% 90%; }
.bpd-note-layer { position:absolute;inset:16px -12px -14px 18px;border-radius:34px;background:#f78bd0;opacity:.22;z-index:-1;transform:rotate(2.2deg); }
.bpd-note::before,.bpd-note::after { content:'✦';position:absolute;color:var(--bpd-gold-deep);font-size:18px; }
.bpd-note::before { left:24px;top:22px; }.bpd-note::after { right:26px;bottom:22px; }
.bpd-note h2 { margin:11px 0 20px;font-size:clamp(42px,8vw,76px);color:var(--bpd-ink); }
.bpd-note p { font-size:clamp(16px,2.3vw,20px);color:var(--bpd-ink-2); }
.bpd-note-ribbon { position:absolute;width:150px;right:-25px;top:-42px;transform:rotate(18deg) scaleX(.15);transform-origin:left center; }
.bpd-note-sparkles { position:absolute;width:86px;left:-22px;bottom:-28px; }
.bpd-note.ti-pending { opacity:0;transform:translateY(30px) rotate(-2deg); }
.bpd-note.is-visible { transform:translateY(0) rotate(0);transition-delay:var(--reveal-delay,0ms); }
.bpd-note.is-visible .bpd-note-ribbon { transform:rotate(18deg) scaleX(1);transition:transform .75s .22s cubic-bezier(.18,.8,.24,1); }

/* Fashion ticket date */
.bpd-date { background:linear-gradient(155deg,#ffd8eb,#ffeaf3 46%,#fff8fb); }
.bpd-fashion-ticket { position:relative;width:min(820px,100%);margin:auto;display:grid;grid-template-columns:1fr auto .8fr;align-items:center;gap:clamp(22px,5vw,50px);padding:clamp(32px,5vw,54px);border-radius:24px;background:linear-gradient(120deg,#fff 0%,#fff4f9 64%,#ffe0ef 100%);box-shadow:0 24px 60px rgba(135,48,94,.15);overflow:visible;border:1px solid rgba(255,255,255,.9); }
.bpd-fashion-ticket::before,.bpd-fashion-ticket::after { content:"";position:absolute;width:26px;height:26px;border-radius:50%;background:#ffdceb;top:50%;transform:translateY(-50%); }
.bpd-fashion-ticket::before { left:-13px; }.bpd-fashion-ticket::after { right:-13px; }
.bpd-ticket-kicker { position:absolute;left:34px;top:19px;font-size:9px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;color:var(--bpd-pink); }
.bpd-ticket-date { display:flex;align-items:center;gap:18px;min-width:0; }
.bpd-ticket-date>strong { font-family:var(--bpd-display);font-size:clamp(76px,13vw,138px);font-weight:600;line-height:.78;color:var(--bpd-pink); }
.bpd-ticket-date>div { display:flex;flex-direction:column;text-transform:uppercase;min-width:0; }
.bpd-ticket-date span { font-weight:800;font-size:clamp(18px,3vw,28px);line-height:1;overflow-wrap:anywhere; }
.bpd-ticket-date small { margin-top:8px;font-size:13px;letter-spacing:.18em;color:var(--bpd-ink-2); }
.bpd-ticket-perf { width:1px;height:110px;border-left:2px dotted rgba(90,39,70,.23); }
.bpd-ticket-time { text-align:right; }
.bpd-ticket-time span { display:block;font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--bpd-ink-2); }
.bpd-ticket-time strong { display:block;margin-top:6px;font-size:clamp(34px,6vw,58px);font-weight:700;color:var(--bpd-ink);font-variant-numeric:tabular-nums; }
.bpd-ticket-diamond { position:absolute;width:55px;right:20%;top:-28px;transform:rotate(10deg); }
.bpd-ticket-bow { position:absolute;width:82px;right:-30px;bottom:-28px;transform:rotate(-12deg); }
.bpd-fashion-ticket.ti-pending { opacity:0;transform:translateX(-30px) rotate(-3deg); }
.bpd-fashion-ticket.is-visible { transform:translateX(0) rotate(0); }
.bpd-fashion-ticket.ti-pending .bpd-ticket-time { opacity:0;transform:translateX(28px); }
.bpd-fashion-ticket.is-visible .bpd-ticket-time { opacity:1;transform:none;transition:.7s .18s cubic-bezier(.2,.7,.25,1); }

/* Jewel countdown */
.bpd-countdown-section { background:#fff8fb; }
.bpd-countdown-shell { position:relative;width:min(850px,100%);margin:auto;text-align:center; }
.bpd-countdown-title { margin-bottom:28px;font-family:var(--bpd-display);font-style:italic;font-size:clamp(30px,5vw,52px);color:var(--bpd-ink); }
.bpd-countdown { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(8px,2vw,18px); }
.bpd-jewel { position:relative;display:grid;place-items:center;min-width:0;aspect-ratio:.9;padding:14px 6px 12px;border-radius:34% 34% 28% 28% / 30% 30% 36% 36%;background:linear-gradient(145deg,#fff 0%,#ffdbea 54%,#ffb7d8 100%);box-shadow:0 14px 28px rgba(161,60,112,.16),inset 0 2px 1px rgba(255,255,255,.85),inset 0 -2px 8px rgba(255,63,152,.12);border:1px solid rgba(255,255,255,.95);overflow:hidden; }
.bpd-jewel::before { content:"";position:absolute;inset:8px;border:1px solid rgba(255,255,255,.66);border-radius:inherit;pointer-events:none; }
.bpd-number-stack { position:relative;display:grid;place-items:center;width:100%;height:1.05em;font-family:var(--bpd-display);font-size:clamp(38px,8vw,74px);font-weight:600;line-height:1;color:var(--bpd-pink);font-variant-numeric:tabular-nums; }
.bpd-number { grid-area:1/1;display:block; }
.bpd-unit { position:relative;z-index:2;margin-top:5px;font-size:clamp(8px,1.9vw,11px);font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--bpd-ink-2);overflow-wrap:anywhere; }
.bpd-countdown-sparkles { position:absolute;width:94px;right:-18px;top:-30px; }
.bpd-countdown-shell.ti-pending .bpd-jewel { opacity:0;transform:translateY(18px) scale(.86); }
.bpd-countdown-shell.is-visible .bpd-jewel { opacity:1;transform:none;transition:opacity .5s calc(.08s + var(--bpd-stagger)) ease,transform .64s calc(.08s + var(--bpd-stagger)) cubic-bezier(.16,1.2,.28,1); }
@media(prefers-reduced-motion:no-preference) {
  .bpd-number-old { animation:bpdNumberOld .28s ease both; }
  .bpd-number-new { animation:bpdNumberNew .28s ease both; }
}
@keyframes bpdNumberOld { to{opacity:0;transform:translateY(-9px)} }
@keyframes bpdNumberNew { from{opacity:0;transform:translateY(9px)} to{opacity:1;transform:translateY(0)} }
.bpd-event-day { padding:24px;font-family:var(--bpd-display);font-size:32px;color:var(--bpd-pink); }

/* Location mirror */
.bpd-location { background:linear-gradient(180deg,#fff1f7,#ffe8f2); }
.bpd-mirror-card { position:relative;width:min(760px,100%);min-height:460px;margin:auto;display:grid;place-items:center;padding:70px 40px;isolation:isolate; }
.bpd-location-mirror { position:absolute;inset:0;margin:auto;width:min(650px,100%);height:100%;object-fit:contain;z-index:-1;filter:drop-shadow(0 24px 32px rgba(117,48,84,.14)); }
.bpd-location-copy { width:min(410px,78%);text-align:center;padding:24px 20px; }
.bpd-location-copy h2 { margin:9px 0 16px;font-size:clamp(38px,7vw,66px); }
.bpd-location-copy>strong { display:block;font-size:clamp(20px,3.5vw,30px);color:var(--bpd-pink); }
.bpd-location-copy p { margin-top:8px;color:var(--bpd-ink-2);font-size:15px; }
.bpd-map-button { display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:22px;padding:13px 19px;border-radius:999px;background:linear-gradient(135deg,#ff3f98,#ff76b7);color:#fff;text-decoration:none;font-size:13px;font-weight:800;box-shadow:0 10px 24px rgba(255,63,152,.26);transition:transform .2s ease,box-shadow .2s ease; }
.bpd-map-button:active { transform:scale(.98); }
.bpd-location-perfume { position:absolute;width:90px;right:8%;bottom:9%;transform:rotate(4deg); }
.bpd-location-light { position:absolute;left:50%;top:9%;width:58%;height:8px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.95),transparent);filter:blur(5px);opacity:.8;z-index:1; }
.bpd-mirror-card.ti-pending { opacity:0;transform:scale(.97); }
.bpd-mirror-card.is-visible { transform:scale(1); }
@media(hover:hover) { .bpd-map-button:hover{transform:translateY(-2px);box-shadow:0 15px 28px rgba(255,63,152,.3)} }
@media(prefers-reduced-motion:no-preference) { .bpd-map-button{animation:bpdButtonBreathe 4.8s ease-in-out infinite} }
@keyframes bpdButtonBreathe { 0%,100%{box-shadow:0 10px 24px rgba(255,63,152,.22)}50%{box-shadow:0 14px 32px rgba(255,63,152,.34)} }

/* Runway program */
.bpd-program { background:linear-gradient(180deg,#ffe9f2,#fff8fb); }
.bpd-program-shell { position:relative;width:min(800px,100%);margin:auto; }
.bpd-runway-line-wrap { position:absolute;left:50%;top:125px;bottom:25px;width:60px;height:calc(100% - 150px);transform:translateX(-50%);overflow:visible; }
.bpd-runway-line { display:block;width:100%;height:100%;overflow:visible; }
.bpd-runway-track,.bpd-runway-draw { fill:none;stroke-linecap:round;stroke-width:3;vector-effect:non-scaling-stroke; }
.bpd-runway-track { stroke:rgba(90,39,70,.10); }
.bpd-runway-draw { stroke:var(--bpd-pink);stroke-dasharray:1100;stroke-dashoffset:1100; }
.bpd-runway-line-wrap.is-visible .bpd-runway-draw { stroke-dashoffset:0;transition:stroke-dashoffset 2.1s .18s cubic-bezier(.22,.68,.28,1); }
.bpd-runway-items { position:relative;display:grid;gap:26px;padding-top:6px; }
.bpd-runway-item { position:relative;width:calc(50% - 38px);min-height:112px;padding:22px 24px;border-radius:24px;background:rgba(255,255,255,.82);box-shadow:0 14px 34px rgba(123,45,87,.09);border:1px solid rgba(255,255,255,.95);backdrop-filter:blur(8px); }
.bpd-runway-item-left { justify-self:start;text-align:right; }
.bpd-runway-item-right { justify-self:end;text-align:left; }
.bpd-runway-item strong { display:block;font-family:var(--bpd-display);font-size:30px;color:var(--bpd-pink);font-variant-numeric:tabular-nums; }
.bpd-runway-item p { margin-top:4px;line-height:1.4;color:var(--bpd-ink-2); }
.bpd-runway-dot { position:absolute;top:36px;width:17px;height:17px;background:linear-gradient(145deg,#ffe07a,#e8c15f);transform:rotate(45deg);box-shadow:0 0 0 5px #fff1f7,0 5px 13px rgba(130,76,40,.18); }
.bpd-runway-item-left .bpd-runway-dot { right:-47px; }.bpd-runway-item-right .bpd-runway-dot { left:-47px; }
.bpd-runway-item-left.ti-pending { opacity:0;transform:translateX(-20px); }
.bpd-runway-item-right.ti-pending { opacity:0;transform:translateX(20px); }
.bpd-runway-item.is-visible { transform:translateX(0);transition-delay:var(--reveal-delay,0ms); }
.bpd-runway-item.ti-pending .bpd-runway-dot { transform:rotate(45deg) scale(0); }
.bpd-runway-item.is-visible .bpd-runway-dot { animation:bpdDot .48s calc(.18s + var(--reveal-delay,0ms)) cubic-bezier(.16,1.2,.28,1) both; }
@keyframes bpdDot { 0%{transform:rotate(45deg) scale(0)}70%{transform:rotate(45deg) scale(1.15)}100%{transform:rotate(45deg) scale(1)} }

/* Editorial mirror gallery */
.bpd-gallery { background:#fff8fb; }
.bpd-gallery-shell { width:min(980px,100%);margin:auto; }
.bpd-gallery-wall { position:relative;display:grid;grid-template-columns:1.12fr .88fr;grid-template-rows:auto auto;gap:clamp(14px,2vw,24px);align-items:start; }
.bpd-gallery-frame { position:relative;margin:0;background:#fff;padding:10px;box-shadow:0 18px 42px rgba(108,49,84,.12);overflow:visible; }
.bpd-gallery-frame img { display:block;width:100%;height:100%;object-fit:cover;object-position:center 28%; }
.bpd-gallery-frame-1 { grid-row:1/3;aspect-ratio:.72;border-radius:48% 48% 20px 20px / 20% 20% 20px 20px;overflow:hidden; }
.bpd-gallery-frame-2 { aspect-ratio:1.16;border-radius:32px;transform:rotate(1.3deg); }
.bpd-gallery-frame-3 { aspect-ratio:1;border-radius:50%;padding:12px;justify-self:end;width:78%; }
.bpd-gallery-frame-3 img { border-radius:50%; }
.bpd-gallery-frame-4 { grid-column:1/-1;aspect-ratio:2.05;border-radius:28px;width:82%;justify-self:center;transform:rotate(-1deg); }
.bpd-gallery-1 { display:block;width:min(520px,100%);margin:auto; }.bpd-gallery-1 .bpd-gallery-frame-1{width:100%;aspect-ratio:.76;}
.bpd-gallery-2 { grid-template-columns:1.1fr .9fr;grid-template-rows:1fr; }.bpd-gallery-2 .bpd-gallery-frame-1{grid-row:auto;}.bpd-gallery-2 .bpd-gallery-frame-2{align-self:center;aspect-ratio:.78;border-radius:28px 28px 44% 44%;}
.bpd-gallery-3 .bpd-gallery-frame-3 { align-self:end; }
.bpd-gallery-bow { position:absolute!important;width:104px!important;height:auto!important;right:-25px;top:-35px;z-index:4; }
.bpd-gallery-glasses { position:absolute!important;width:100px!important;height:auto!important;left:-28px;bottom:-34px;z-index:4;transform:rotate(-12deg); }
.bpd-gallery-frame.ti-pending { opacity:0; }
.bpd-gallery-frame-1.ti-pending { clip-path:inset(0 100% 0 0 round 30px);transform:none; }
.bpd-gallery-frame-2.ti-pending { clip-path:inset(100% 0 0 0 round 30px);transform:rotate(1.3deg); }
.bpd-gallery-frame-3.ti-pending { clip-path:none;transform:scale(.95); }
.bpd-gallery-frame-4.ti-pending { clip-path:none;transform:translateY(25px) rotate(-1deg); }
.bpd-gallery-frame.is-visible { opacity:1;clip-path:inset(0 round 0);transition-delay:var(--bpd-gallery-delay,0ms); }
.bpd-gallery-frame-1{--bpd-gallery-delay:0ms}.bpd-gallery-frame-2{--bpd-gallery-delay:120ms}.bpd-gallery-frame-3{--bpd-gallery-delay:240ms}.bpd-gallery-frame-4{--bpd-gallery-delay:360ms}
.bpd-gallery-frame-3.is-visible { transform:scale(1); }.bpd-gallery-frame-4.is-visible{transform:translateY(0) rotate(-1deg)}

/* Dress / hosts / contact */
.bpd-dress,.bpd-hosts,.bpd-contact { background:linear-gradient(180deg,#fff8fb,#fff1f7); }
.bpd-fashion-card,.bpd-contact-card { position:relative;width:min(680px,100%);margin:auto;padding:clamp(34px,6vw,58px);border-radius:30px;background:linear-gradient(145deg,rgba(255,255,255,.9),rgba(255,229,242,.88));box-shadow:0 18px 44px rgba(121,46,87,.1);border:1px solid rgba(255,255,255,.95);text-align:center;overflow:hidden; }
.bpd-fashion-card h2,.bpd-contact-card h2 { margin-top:10px;font-size:clamp(32px,6vw,54px); }
.bpd-fashion-card p { margin-top:14px;color:var(--bpd-ink-2); }
.bpd-fashion-icon { width:90px;margin:0 auto 18px; }
.bpd-hosts-ribbon { position:absolute;width:170px;right:-54px;bottom:-34px;transform:rotate(-14deg);opacity:.8; }
.bpd-contact-card { width:min(520px,100%); }
.bpd-contact-card>svg { color:var(--bpd-pink);margin-bottom:8px; }
.bpd-contact-card a { display:inline-flex;align-items:center;gap:8px;margin-top:18px;padding:11px 16px;border-radius:999px;background:#fff;color:var(--bpd-pink);font-weight:800;text-decoration:none;box-shadow:0 8px 22px rgba(255,63,152,.12); }

/* Finale / one-shot confetti */
.bpd-final { position:relative;min-height:680px;display:grid;place-items:center;padding:100px 22px calc(110px + env(safe-area-inset-bottom));overflow:hidden;background:linear-gradient(145deg,#ff3f98 0%,#ff5cad 46%,#d969ff 120%);color:#fff;isolation:isolate; }
.bpd-final::before { content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 48%,rgba(255,255,255,.23),transparent 31%),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:auto,32px 100%;z-index:-2; }
.bpd-final-inner { position:relative;width:min(830px,100%);min-height:430px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:50px 20px; }
.bpd-final-system { font-size:11px;font-weight:900;letter-spacing:.22em;text-transform:uppercase;color:#fff7d0; }
.bpd-final-accent { display:block;margin-top:20px;font-family:var(--bpd-display);font-style:italic;font-size:clamp(46px,9vw,96px);font-weight:600;line-height:.86;color:#fff;max-width:820px; }
.bpd-final h2 { margin-top:20px;max-width:680px;font-size:clamp(30px,5.8vw,58px);color:#fff; }
.bpd-final .bpd-name { margin-top:34px;font-size:clamp(38px,6vw,72px);color:#fff6fb;text-shadow:none; }
.bpd-final-bow { position:absolute;width:125px;left:3%;top:14%; }
.bpd-final-starburst { position:absolute;width:280px;right:-55px;bottom:-70px;opacity:.32; }
.bpd-final-sparkles { position:absolute;width:125px;right:5%;top:10%; }
.bpd-final-spotlight { position:absolute;top:-10%;width:34%;height:125%;background:linear-gradient(180deg,rgba(255,255,255,.22),transparent 72%);filter:blur(18px);opacity:.5;z-index:-1; }
.bpd-final-spotlight-a { left:12%;transform:rotate(14deg); }.bpd-final-spotlight-b { right:11%;transform:rotate(-14deg); }
.bpd-final-inner.ti-pending { opacity:0;transform:scale(.96); }
.bpd-final-inner.is-visible { transform:scale(1); }
@media(prefers-reduced-motion:no-preference) {
  .bpd-final-inner.is-visible .bpd-final-bow { animation:bpdFinalBow 5.8s .4s ease-in-out infinite; }
  .bpd-final-inner.is-visible .bpd-final-sparkles { animation:bpdSparkleWave 1.25s .3s both; }
  .bpd-final-inner.is-visible .bpd-final-spotlight { animation:bpdSpotlight 1.2s ease both; }
}
@keyframes bpdFinalBow { 0%,100%{rotate:-2deg;translate:0 0}50%{rotate:3deg;translate:0 -5px} }
@keyframes bpdSparkleWave { from{opacity:0;scale:.7;rotate:-16deg}55%{opacity:1;scale:1.08;rotate:5deg}to{opacity:.85;scale:1;rotate:0} }
@keyframes bpdSpotlight { from{opacity:.08}to{opacity:.5} }
.bpd-confetti { position:absolute;inset:0;pointer-events:none;overflow:hidden; }
.bpd-confetti-piece { position:absolute;left:50%;top:44%;width:8px;height:15px;border-radius:3px;background:#ffe07a;opacity:0; }
.bpd-confetti-2,.bpd-confetti-6,.bpd-confetti-10,.bpd-confetti-14 { background:#7bdfff; }
.bpd-confetti-3,.bpd-confetti-7,.bpd-confetti-11 { background:#fff; }
.bpd-confetti-4,.bpd-confetti-8,.bpd-confetti-12 { background:#ffb7d8; }
@media(prefers-reduced-motion:no-preference) {
 .bpd-final-inner.is-visible .bpd-confetti-1{animation:bpdConfetti 1.25s .05s ease-out both;--x:-190px;--y:-165px;--r:160deg}
 .bpd-final-inner.is-visible .bpd-confetti-2{animation:bpdConfetti 1.35s .08s ease-out both;--x:-145px;--y:-205px;--r:-140deg}
 .bpd-final-inner.is-visible .bpd-confetti-3{animation:bpdConfetti 1.15s .12s ease-out both;--x:-98px;--y:-142px;--r:220deg}
 .bpd-final-inner.is-visible .bpd-confetti-4{animation:bpdConfetti 1.3s .03s ease-out both;--x:-48px;--y:-226px;--r:120deg}
 .bpd-final-inner.is-visible .bpd-confetti-5{animation:bpdConfetti 1.25s .14s ease-out both;--x:6px;--y:-176px;--r:-210deg}
 .bpd-final-inner.is-visible .bpd-confetti-6{animation:bpdConfetti 1.35s .06s ease-out both;--x:55px;--y:-220px;--r:180deg}
 .bpd-final-inner.is-visible .bpd-confetti-7{animation:bpdConfetti 1.2s .1s ease-out both;--x:102px;--y:-152px;--r:-170deg}
 .bpd-final-inner.is-visible .bpd-confetti-8{animation:bpdConfetti 1.32s .02s ease-out both;--x:158px;--y:-198px;--r:235deg}
 .bpd-final-inner.is-visible .bpd-confetti-9{animation:bpdConfetti 1.23s .16s ease-out both;--x:204px;--y:-140px;--r:-125deg}
 .bpd-final-inner.is-visible .bpd-confetti-10{animation:bpdConfetti 1.28s .04s ease-out both;--x:-215px;--y:-92px;--r:195deg}
 .bpd-final-inner.is-visible .bpd-confetti-11{animation:bpdConfetti 1.34s .09s ease-out both;--x:-118px;--y:-252px;--r:-240deg}
 .bpd-final-inner.is-visible .bpd-confetti-12{animation:bpdConfetti 1.18s .13s ease-out both;--x:128px;--y:-252px;--r:150deg}
 .bpd-final-inner.is-visible .bpd-confetti-13{animation:bpdConfetti 1.3s .07s ease-out both;--x:220px;--y:-80px;--r:-190deg}
 .bpd-final-inner.is-visible .bpd-confetti-14{animation:bpdConfetti 1.22s .15s ease-out both;--x:38px;--y:-272px;--r:205deg}
}
@keyframes bpdConfetti { 0%{opacity:0;transform:translate(0,0) rotate(0) scale(.7)}12%{opacity:1}72%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--r)) scale(1)} }

/* Hover only for decorative accessories. */
@media(hover:hover) and (pointer:fine) {
 .bpd-hero-handbag,.bpd-hero-glasses,.bpd-hero-bow { transition:transform .28s ease;pointer-events:auto; }
 .bpd-hero-handbag:hover { transform:rotate(7deg); }
 .bpd-hero-glasses:hover { transform:translateY(-2px) rotate(-8deg); }
 .bpd-hero-bow:hover { transform:scale(1.05); }
}

/* Tablet */
@media(max-width:860px) {
 .bpd-hero { min-height:auto; }
 .bpd-hero-world { min-height:900px;padding-top:76px; }
 .bpd-hero-layout { grid-template-columns:1fr;gap:8px;text-align:center; }
 .bpd-photo-stage { width:min(430px,82vw);grid-row:1; }
 .bpd-hero-copy { grid-row:2;text-align:center;margin-top:-28px; }
 .bpd-hero-text { margin-inline:auto; }
 .bpd-hero-meta { justify-content:center; }
 .bpd-hero-bow { left:6%;top:9%;width:105px; }.bpd-hero-perfume{right:7%;bottom:7%;}.bpd-hero-handbag{right:4%;top:33%;width:95px}.bpd-hero-glasses{left:5%;bottom:20%;width:98px}.bpd-hero-crown{left:48%;top:3%;width:76px}.bpd-hero-heels{right:12%;bottom:1%;width:90px}.bpd-sparkles-a{left:13%;top:29%}.bpd-sparkles-b{right:10%;bottom:30%}
 .bpd-fashion-ticket { grid-template-columns:1fr auto .72fr; }
 .bpd-ticket-date>strong{font-size:92px}.bpd-ticket-date span{font-size:21px}
}

/* Mobile-first target 390x844 */
@media(max-width:600px) {
 .bpd-section { padding:64px 18px; }
 .bpd-hero-world { min-height:844px;padding:54px 15px 36px; }
 .bpd-photo-stage { width:min(342px,88vw); }
 .bpd-photo-shell { inset:7.8% 9.4% 5.8%; }
 .bpd-hero-copy { margin-top:-24px;padding-inline:6px; }
 .bpd-eyebrow { font-size:8.5px;letter-spacing:.13em;padding:7px 10px; }
 .bpd-name { font-size:clamp(53px,17vw,72px);line-height:.78;margin-top:13px; }
 .bpd-name-medium { font-size:clamp(43px,13.6vw,56px); }.bpd-name-long{font-size:clamp(35px,11.4vw,46px)}.bpd-name-xlong{font-size:clamp(29px,9vw,38px)}
 .bpd-age { margin-top:7px;padding:8px 12px 7px;border-radius:15px; }.bpd-age strong{font-size:36px}.bpd-age span{font-size:8px}
 .bpd-hero-text { margin-top:14px!important;font-size:14px;line-height:1.55!important;max-width:335px; }
 .bpd-hero-meta { margin-top:12px;gap:4px 10px;font-size:11px; }
 .bpd-hero-meta span::before,.bpd-hero-meta small::before { margin-right:8px; }
 .bpd-hero-bow{width:78px;left:1%;top:8%}.bpd-hero-perfume{width:65px;right:2%;bottom:5%}.bpd-hero-handbag{width:74px;right:-1%;top:32%}.bpd-hero-glasses{width:76px;left:0;bottom:17%}.bpd-hero-crown{width:62px;top:2%;left:45%}.bpd-hero-heels{display:none}.bpd-sparkles{width:70px}.bpd-sparkles-a{top:28%;left:0}.bpd-sparkles-b{right:2%;bottom:29%}.bpd-hero-starburst{width:190px;right:-60px;top:30px}.bpd-hero-ribbon{width:160px;left:-70px;bottom:24px}
 .bpd-note { padding:46px 22px 40px;border-radius:27px; }.bpd-note h2{font-size:43px}.bpd-note p{font-size:15px}.bpd-note-ribbon{width:105px;right:-22px;top:-28px}.bpd-note-sparkles{width:68px}
 .bpd-fashion-ticket { grid-template-columns:1fr auto;grid-template-areas:'date perf' 'time time';gap:20px;padding:48px 25px 28px;border-radius:20px; }
 .bpd-ticket-date{grid-area:date}.bpd-ticket-perf{grid-area:perf;height:92px}.bpd-ticket-time{grid-area:time;text-align:left;display:flex;align-items:baseline;justify-content:space-between;border-top:1px dashed rgba(90,39,70,.16);padding-top:16px}.bpd-ticket-time strong{font-size:38px}.bpd-ticket-date>strong{font-size:82px}.bpd-ticket-date span{font-size:18px}.bpd-ticket-date small{font-size:11px}.bpd-ticket-diamond{right:17%;width:44px}.bpd-ticket-bow{width:70px;right:-20px}
 .bpd-countdown-title { font-size:31px;margin-bottom:22px; }.bpd-countdown{gap:6px}.bpd-jewel{border-radius:25% 25% 24% 24%;padding:10px 3px 8px}.bpd-number-stack{font-size:clamp(32px,10vw,43px)}.bpd-unit{font-size:7.5px;letter-spacing:.02em}.bpd-countdown-sparkles{width:70px;right:-18px;top:-28px}
 .bpd-mirror-card { min-height:400px;padding:58px 10px; }.bpd-location-mirror{width:390px;max-width:108%;}.bpd-location-copy{width:77%;padding:18px 10px}.bpd-location-copy h2{font-size:39px}.bpd-location-copy>strong{font-size:20px}.bpd-location-copy p{font-size:13px;line-height:1.5}.bpd-map-button{padding:11px 14px;font-size:11px}.bpd-location-perfume{width:64px;right:2%;bottom:6%}
 .bpd-program-shell { width:100%; }.bpd-runway-line-wrap{left:22px;top:118px;width:38px;transform:none}.bpd-runway-items{gap:17px;padding-left:48px}.bpd-runway-item{width:100%;justify-self:stretch;text-align:left!important;padding:18px 18px;border-radius:20px;min-height:92px}.bpd-runway-item strong{font-size:25px}.bpd-runway-item p{font-size:14px}.bpd-runway-dot,.bpd-runway-item-left .bpd-runway-dot,.bpd-runway-item-right .bpd-runway-dot{left:-35px;right:auto;top:30px;width:14px;height:14px}.bpd-runway-item-left.ti-pending,.bpd-runway-item-right.ti-pending{transform:translateX(16px)}
 .bpd-gallery-wall,.bpd-gallery-2 { grid-template-columns:1fr 1fr;grid-template-rows:auto;gap:11px; }.bpd-gallery-frame{padding:7px}.bpd-gallery-frame-1{grid-row:1/3}.bpd-gallery-frame-2{aspect-ratio:.82}.bpd-gallery-frame-3{width:94%;}.bpd-gallery-frame-4{grid-column:1/-1;width:92%;aspect-ratio:1.8}.bpd-gallery-1{display:block}.bpd-gallery-2 .bpd-gallery-frame-1,.bpd-gallery-2 .bpd-gallery-frame-2{grid-row:auto;aspect-ratio:.74}.bpd-gallery-bow{width:76px!important;right:-18px;top:-24px}.bpd-gallery-glasses{width:74px!important;left:-20px;bottom:-25px}
 .bpd-fashion-card,.bpd-contact-card { padding:36px 22px;border-radius:25px; }.bpd-fashion-icon{width:70px}.bpd-fashion-card h2,.bpd-contact-card h2{font-size:36px}.bpd-hosts-ribbon{width:120px}
 .bpd-final { min-height:600px;padding-top:76px; }.bpd-final-inner{min-height:390px;padding-inline:6px}.bpd-final-bow{width:86px;left:-5px}.bpd-final-sparkles{width:90px;right:-4px}.bpd-final-starburst{width:210px}.bpd-final-accent{font-size:54px}.bpd-final h2{font-size:35px}.bpd-final .bpd-name{font-size:44px}
}

@media(max-width:370px) {
 .bpd-hero-world{padding-inline:10px}.bpd-photo-stage{width:min(320px,90vw)}.bpd-hero-copy{margin-top:-19px}.bpd-name{font-size:50px}.bpd-name-medium{font-size:43px}.bpd-name-long{font-size:35px}.bpd-name-xlong{font-size:29px}.bpd-hero-text{font-size:13px}.bpd-hero-handbag,.bpd-hero-glasses{width:65px}.bpd-countdown{gap:4px}.bpd-unit{font-size:7px}.bpd-ticket-date>strong{font-size:72px}.bpd-ticket-date span{font-size:16px}
}

@media(min-width:1100px) {
 .bpd-hero-layout { grid-template-columns:.95fr 1.05fr; }
 .bpd-photo-stage { width:500px; }
}

@media(prefers-reduced-motion:reduce) {
 .birthday-pink-dream .bpd-photo-shimmer::after,.birthday-pink-dream .bpd-confetti-piece { display:none!important; }
 .birthday-pink-dream .bpd-runway-draw { stroke-dashoffset:0!important; }
 .birthday-pink-dream .bpd-note-ribbon { transform:rotate(18deg) scaleX(1)!important; }
 .birthday-pink-dream .bpd-jewel { opacity:1!important;transform:none!important; }
}
