.fact-eyebrow{font-size:12px;letter-spacing:.08em;font-weight:600;line-height:1.5;margin:0 0 11px;color:var(--muted)}
.fact-source{font-size:12px;line-height:1.7;color:var(--muted);margin:20px 0 0}.fact-source a{color:inherit}
.fact-tabs{display:flex;flex-wrap:wrap;gap:5px;margin:20px 0}.fact-tabs button{font-size:14px;padding:9px 12px;min-height:40px;border:0;border-radius:9px;background:transparent;color:var(--muted)}
.fact-tabs button[aria-pressed=true]{background:var(--ink);color:var(--white)}
.rare-birthday{text-align:left;background:var(--rose);border:0;border-radius:20px;padding:26px;overflow:hidden}
.rare-heading{display:flex;justify-content:space-between;gap:15px;align-items:center}.rare-heading h2{font:600 clamp(25px,3vw,33px)/1.1 var(--sans);letter-spacing:-.045em;margin:0}
.rare-heading>div{min-width:0}.rare-spark{display:block;width:70px;height:70px;object-fit:contain;flex:none;transform:none;user-select:none}
.rare-reveal{width:100%;min-height:45px;display:flex;justify-content:space-between;gap:15px;margin-top:20px;padding:12px 15px;border:0;border-radius:10px;background:#fffdf580;font-size:13px;text-align:left}.rare-reveal:hover{background:var(--white)}
.rare-answer{animation:fact-in .3s ease-out}.rare-date{font:600 clamp(36px,4.3vw,48px)/1.08 var(--sans);letter-spacing:-.055em;margin:23px 0 12px}
.rare-odds{font-size:13px;line-height:1.7;margin:0 0 13px}.rare-odds strong{display:block;font-size:26px;line-height:1.3;font-weight:600;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.rare-detail{font-size:14px;line-height:1.7;color:#765d67;margin:0}
.target-rewind{margin-top:23px;padding-top:2px;border-top:1px solid #dabfc9}.target-rewind summary{list-style:none;font-size:13px;font-weight:550;min-height:48px;padding:15px 0;display:flex;justify-content:space-between;gap:15px;cursor:pointer}.target-rewind summary::-webkit-details-marker{display:none}.target-rewind summary span{font-size:20px;line-height:1}.target-rewind[open] summary span{transform:rotate(-90deg)}
.target-label{font-size:11px;color:#765d67;margin:13px 0 10px}.target-year{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fffdf580;border-radius:12px;padding:4px;max-width:230px}.target-year button{height:42px;width:48px;border:0;border-radius:9px;background:transparent;font-size:23px}.target-year button:hover:not(:disabled){background:var(--white)}.target-year strong{font-size:23px;letter-spacing:-1px;font-weight:550;font-variant-numeric:tabular-nums}
.rewind-timeline{padding-left:19px;position:relative;margin:23px 0}.rewind-timeline:before{content:'';position:absolute;left:3px;top:7px;bottom:12px;width:1px;background:#be92a3}.rewind-timeline div{position:relative}.rewind-timeline div:before{content:'';position:absolute;left:-20px;top:4px;width:8px;height:8px;border:2px solid var(--rose);border-radius:50%;background:#976377}.rewind-timeline span{display:block;font-size:10px;color:#765d67;margin-bottom:7px}.rewind-timeline strong{display:block;font-size:19px;line-height:1.3;font-weight:550;letter-spacing:-.5px}.rewind-timeline i{display:block;height:25px}
.target-center,.target-caveat{font-size:12px;line-height:1.7;color:#765d67;margin:12px 0 0}
.share-result{margin-top:23px;text-align:left;min-width:0;max-width:100%}.share-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:14px}.share-actions>a,.share-actions>button{display:flex;align-items:center;justify-content:center;min-width:0;min-height:48px;border:0;border-radius:11px;padding:12px 7px;font-size:14px;font-weight:500;line-height:1.3;text-align:center;text-decoration:none;white-space:nowrap;background:#fffdf580;color:var(--ink)}.share-actions .share-x{background:var(--ink);color:var(--white)}.share-actions a:hover,.share-actions button:hover:not(:disabled){filter:brightness(.96)}.share-actions a:focus-visible,.share-actions button:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.share-preview{margin:0;min-width:0;max-width:100%}.share-preview>summary{font-size:15px;font-weight:500;min-height:52px;display:flex;justify-content:center;gap:12px;align-items:center;cursor:pointer;list-style:none;color:var(--white);background:var(--ink);border-radius:11px;padding:12px 14px;margin:0}.share-preview>summary::-webkit-details-marker,.share-extras>summary::-webkit-details-marker{display:none}.share-preview>summary .card-close{display:none}.share-preview[open]>summary{justify-content:space-between;min-height:44px;background:transparent;color:var(--muted);padding:0 2px;margin-bottom:8px;font-size:12px;font-weight:400}.share-preview[open]>summary .card-close{display:inline;text-decoration:underline;text-underline-offset:3px}.share-preview>summary:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.share-preview canvas{display:block;max-width:100%;width:100%;height:auto;aspect-ratio:1200/630;border-radius:10px;margin:4px 0 8px}.share-extras{margin-top:5px}.share-extras>summary{display:flex;align-items:center;justify-content:center;list-style:none;min-height:44px;font-size:11px;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.share-extras[hidden]{display:none}.share-options{display:flex;justify-content:center;flex-wrap:wrap;gap:0 18px}.share-options button{min-height:44px;padding:8px 0;border:0;background:transparent;font-size:12px;color:var(--muted);text-decoration:underline}.share-options button[hidden]{display:none}.share-status{font-size:12px;line-height:1.6;margin:10px 0 0;color:var(--muted);overflow-wrap:anywhere}.share-status:empty{display:none}
@media(max-width:650px){.share-actions{gap:6px}.share-actions>a,.share-actions>button{font-size:clamp(12px,3.25vw,14px);padding:12px 4px}}

.rarity-scale{position:relative;height:7px;border-radius:5px;background:linear-gradient(90deg,#9cc3b3,#d6c5e8,#c985a0);margin:25px 3px 10px}.rarity-scale i{position:absolute;top:-4px;transform:translateX(-50%);width:15px;height:15px;border-radius:50%;border:3px solid var(--lilac);background:var(--ink);transition:left .25s ease}.rarity-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}
@keyframes fact-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.rare-answer{animation:none}}
@media(max-width:650px){.rare-birthday{padding:23px 21px}.rare-heading h2{font-size:27px}.rare-date{font-size:40px}}

#birthday-link-fallback{padding:0 20px;overflow-wrap:anywhere}

/* The unopened letter waits in view before its 3.6-second choreography. */
.share-preview{scroll-margin-top:24px}
.birthday-envelope{position:relative;isolation:isolate;overflow:hidden;perspective:1400px;aspect-ratio:100/76;padding:0;border-radius:4px}
.birthday-envelope>canvas{position:absolute;z-index:2;top:0;left:4%;width:92%;height:auto;margin:0!important;border-radius:4px;transform-origin:center center;transform:translateY(50%);opacity:0;box-shadow:0 2px 4px #443b2b15}
.envelope-back,.envelope-front,.envelope-flap{position:absolute;pointer-events:none;inset:27% 0 0;border-radius:4px}
.envelope-back{z-index:1;background:linear-gradient(170deg,#e8dfcb,#cbbfa6);box-shadow:inset 0 1px 3px #84755535,0 3px 6px #443b2b18}
.envelope-front{z-index:3;overflow:hidden;filter:drop-shadow(0 -1px 1px #85765d25)}
.envelope-front i{position:absolute;inset:0}
.paper-left{clip-path:polygon(0 0,64% 60%,0 100%);background:linear-gradient(120deg,#f5efdf,#e8dfcb)}
.paper-right{clip-path:polygon(100% 0,37% 60%,100% 100%);background:linear-gradient(230deg,#faf6eb,#e9e0ce)}
.paper-bottom{clip-path:polygon(0 100%,0 97%,50% 39%,100% 97%,100% 100%);background:linear-gradient(180deg,#f9f4e7,#ece3d0);filter:drop-shadow(0 -1px 1px #8b7d6630)}
.envelope-flap{z-index:4;transform-origin:center top;backface-visibility:visible;clip-path:polygon(0 0,100% 0,50% 48%);background:linear-gradient(180deg,#faf6eb,#e9dfca);filter:drop-shadow(0 2px 2px #85755e35)}
.share-preview.is-opening .envelope-flap{animation:open-paper-flap var(--envelope-duration,3600ms) cubic-bezier(.4,0,.2,1) both}
.share-preview.is-opening .envelope-front,.share-preview.is-opening .envelope-back{animation:slide-envelope-away var(--envelope-duration,3600ms) cubic-bezier(.2,.6,.2,1) both}
.share-preview.is-opening .birthday-envelope>canvas{animation:lift-birthday-card var(--envelope-duration,3600ms) cubic-bezier(.2,.6,.2,1) both}
.share-preview.is-opening .share-actions,.share-preview.is-opening .share-extras{animation:card-actions-in var(--envelope-duration,3600ms) ease both}
.share-preview.is-opening .birthday-envelope{animation:envelope-space var(--envelope-duration,3600ms) cubic-bezier(.2,.6,.2,1) both}
.share-preview.is-settled .birthday-envelope{aspect-ratio:100/48.3}
.share-preview.is-settled .birthday-envelope>canvas{transform:none;opacity:1}
.share-preview.is-settled .envelope-front,.share-preview.is-settled .envelope-back,.share-preview.is-settled .envelope-flap{display:none}
.share-preview.is-unavailable .birthday-envelope{display:none}
@keyframes open-paper-flap{0%,20%{transform:rotateX(0);opacity:1;z-index:4}41%{z-index:4}42%,68%{transform:rotateX(168deg);opacity:1;z-index:1}90%,100%{transform:rotateX(168deg) translateY(-55%);opacity:0;z-index:1}}
@keyframes slide-envelope-away{0%,64%{transform:translateY(0);opacity:1}82%{opacity:1}96%,100%{transform:translateY(115%);opacity:0}}
/* The card fits inside the pocket at every phase; it never changes scale. */
@keyframes lift-birthday-card{0%,30%{transform:translateY(50%);opacity:0}38%{transform:translateY(50%);opacity:1}70%{transform:translateY(3%);opacity:1;box-shadow:0 12px 20px #443b2b18}86%{transform:translateY(.6%)}100%{transform:none;opacity:1;box-shadow:0 2px 4px #443b2b15}}
@keyframes envelope-space{0%,82%{aspect-ratio:100/76}100%{aspect-ratio:100/48.3}}
@keyframes card-actions-in{0%,72%{opacity:0;transform:translateY(5px)}100%{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.share-preview.is-opening .birthday-envelope{animation:none;aspect-ratio:100/48.3}.share-preview.is-opening .birthday-envelope>canvas{animation:none;transform:none;opacity:1}.envelope-front,.envelope-back,.envelope-flap{display:none}.share-preview.is-opening .share-actions,.share-preview.is-opening .share-extras{animation:none}}
