.location-affinities{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;margin:10px 0 24px;padding:14px 20px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.location-affinities>div{display:flex;justify-content:space-between;gap:12px;padding:9px 0;font-size:13px}
.location-affinities dt{font-weight:700}.location-affinities dd{margin:0;color:var(--muted)}
.confession-sequence{position:fixed;inset:0;z-index:120;background:#19131c;color:#fff;overflow:hidden}
.confession-frames,.confession-frame{position:absolute;inset:0;margin:0}
.confession-frame{opacity:0;transition:opacity .85s ease;pointer-events:none}.confession-frame.is-current{opacity:1}
.confession-frame img{width:100%;height:100%;object-fit:contain;background:#19131c}
.confession-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#17121d94,transparent 27%,transparent 65%,#17121dd9)}
.confession-frame figcaption{position:absolute;z-index:1;left:24px;right:24px;bottom:70px;text-align:center;text-shadow:0 2px 12px #0009}
.confession-frame figcaption span{font-size:12px;letter-spacing:.18em;color:#f7c2cb}
.confession-frame figcaption h2{font-size:clamp(24px,3vw,42px);margin:12px 0 6px;font-weight:600}
.confession-frame figcaption p{font-size:15px;margin:0;color:#fff4f6}
.confession-heading{position:absolute;top:30px;left:30px;text-shadow:0 2px 8px #0008}
.confession-heading>span{font-size:11px;letter-spacing:.22em;color:#ffcbd5}.confession-heading h1{font-size:16px;font-weight:500;margin-top:9px}
.confession-finish{position:absolute;right:24px;bottom:22px;display:flex;align-items:center;gap:9px;padding:11px 17px;border:1px solid #ffffff55;border-radius:30px;color:#fff;background:#251c2ab3;cursor:pointer}
.confession-finish svg{width:17px;height:17px}
.confession-dots{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);display:flex;gap:8px}
.confession-dots i{width:6px;height:6px;border-radius:10px;background:#ffffff50;transition:width .4s,background .4s}.confession-dots i.is-current{width:24px;background:#f5bac6}
.finale-chosen{position:relative;isolation:isolate;width:230px;margin:28px auto 24px;animation:finale-arrive 1s cubic-bezier(.18,.8,.3,1) both}
.finale-halo{position:absolute;z-index:-1;inset:-42px;background:radial-gradient(ellipse,#f2b0c245,transparent 70%);border-radius:50%;animation:finale-breathe 4s ease-in-out infinite}
.finale-chosen:before,.finale-chosen:after{content:"✦";position:absolute;z-index:2;color:#e9a8bb;text-shadow:0 0 18px #f8c8d4;font-size:26px;animation:finale-twinkle 3s ease-in-out infinite}
.finale-chosen:before{top:14%;left:-18px}.finale-chosen:after{bottom:22%;right:-16px;animation-delay:1s;font-size:18px}
.finale-album{margin:18px auto 6px}.love-finale>h1,.love-finale>p,.love-finale>.finale-stats{animation:finale-arrive 1s .2s both}.finale-roster{animation:finale-arrive 1s .35s both}
@keyframes finale-arrive{from{opacity:0;transform:translateY(22px) scale(.97)}to{opacity:1;transform:none}}
@keyframes finale-breathe{50%{transform:scale(1.1);opacity:.6}}
@keyframes finale-twinkle{50%{opacity:.3;transform:scale(.7) rotate(20deg)}}
@media(max-width:600px){.location-affinities{grid-template-columns:1fr}.confession-heading{top:20px;left:20px}.confession-frame figcaption{bottom:95px}.confession-finish{bottom:18px;right:16px}.confession-dots{left:24px;bottom:38px;transform:none}.finale-chosen{width:205px}}
