.birthday-reveal { margin-top:32px; }
.dinner-ticket { width:min(760px,100%); margin:25px auto 12px; display:grid; grid-template-columns:minmax(0,1fr) 190px; color:#79364d; text-align:left; background:#fff4e4; border-radius:12px; box-shadow:0 30px 80px #0d031b45,inset 0 0 0 1px #ffffff7a; position:relative; overflow:hidden; transform-origin:50% 0; animation:ticket-opens .85s cubic-bezier(.18,.8,.2,1) both; scroll-margin:30px; }
.ticket-main { padding:27px 36px 33px; min-width:0; background:radial-gradient(ellipse at 0 0,#f2c9ce70,transparent 70%); }
.ticket-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.ticket-heading>span { font-size:8px; font-weight:700; letter-spacing:.22em; color:#b27c7e; }
.ticket-heading svg { stroke:#b5767f; stroke-width:1.6; fill:none; transform:rotate(9deg); flex-shrink:0; }
.dinner-ticket h3 { font-size:clamp(38px,6vw,70px); color:#883b55; line-height:1.2; margin:5px 0 15px; letter-spacing:-.065em; white-space:nowrap; }
.ticket-venue { font-size:17px; font-weight:600; letter-spacing:-.02em; }
.ticket-location { font-size:11px; color:#aa7680; margin-top:6px; line-height:1.5; }
.ticket-stub { border-left:1px dashed #bc8c8b77; position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:24px; padding:24px 20px; }
.ticket-stub::before,.ticket-stub::after { content:''; position:absolute; width:22px; height:22px; border-radius:50%; background:#301827; left:-11px; }
.ticket-stub::before { top:-11px; }.ticket-stub::after { bottom:-11px; }
.ticket-stub time { display:flex; flex-direction:column; gap:9px; text-align:center; }
.ticket-stub time>span { font-size:9px; font-weight:600; letter-spacing:.17em; color:#a76f7b; }
.ticket-stub strong { font-size:41px; font-weight:400; letter-spacing:-.06em; white-space:nowrap; }
.ticket-stub small { font-size:11px; letter-spacing:.02em; }
.ticket-stub a { display:flex; gap:13px; align-items:center; min-height:44px; padding:5px 0; font-size:7px; letter-spacing:.11em; border-bottom:1px solid #ad7d7b60; }
.ticket-stub a span { font-size:22px; }
.ticket-stub a:hover { color:#b04c74; border-color:currentColor; }
.birthday-reveal #replay-candles { margin-top:8px; }
@keyframes ticket-opens { from { opacity:0; transform:perspective(900px) rotateX(-12deg) translateY(16px); } to { opacity:1; transform:perspective(900px) rotateX(0) translateY(0); } }
@media (max-width:600px) {
 .dinner-ticket { width:min(100%,430px); grid-template-columns:minmax(0,1fr); border-radius:10px; }
 .ticket-main { padding:24px 27px 26px; }
 .dinner-ticket h3 { font-size:clamp(38px,11.5vw,60px); margin-top:8px; }
 .ticket-heading>span { font-size:7px; }
 .ticket-stub { border-left:0; border-top:1px dashed #bc8c8b77; flex-direction:row; justify-content:space-between; gap:16px; padding:22px 27px; }
 .ticket-stub::before { left:-11px; top:-11px; }.ticket-stub::after { left:auto; right:-11px; top:-11px; bottom:auto; }
 .ticket-stub time { text-align:left; gap:6px; }
 .ticket-stub strong { font-size:35px; }.ticket-stub time>span { font-size:8px; }
 .ticket-stub a { font-size:7px; gap:8px; }
}
@media (prefers-reduced-motion:reduce) { .dinner-ticket { animation:none; } }
