/* ==========================================================================
   Friendse — Birthday celebration
   Loaded only on a profile page that is celebrating a real birthday.
   ========================================================================== */

.fp-bday-confetti{
  position:fixed; inset:0; width:100%; height:100%;
  pointer-events:none; z-index:2147483000;
}

/* ── Festive banner (stays visible the whole birthday) ─────────────────── */
.fp-bday-banner{
  position:relative; overflow:hidden;
  border-radius:16px; padding:16px 18px; margin:0 0 14px;
  color:#fff;
  background:linear-gradient(120deg,#ff5f9e 0%,#ff8a3d 35%,#ffd23f 65%,#5b8cff 100%);
  background-size:220% 220%;
  animation:fpBdayShift 12s ease-in-out infinite;
  box-shadow:0 10px 30px rgba(255,95,158,.28);
}
.fp-bday-banner__row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.fp-bday-banner__cake{
  font-size:34px; line-height:1;
  animation:fpBdayPop 2.4s ease-in-out infinite;
  filter:drop-shadow(0 3px 6px rgba(0,0,0,.25));
}
.fp-bday-banner__text{flex:1 1 240px;min-width:200px;}
.fp-bday-banner__title{margin:0;font-size:1.05rem;font-weight:800;letter-spacing:.2px;}
.fp-bday-banner__sub{margin:3px 0 0;font-size:.85rem;opacity:.95;}
.fp-bday-banner__age{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 12px;border-radius:999px;font-size:.8rem;font-weight:700;
  background:rgba(255,255,255,.22);
  border:1px solid rgba(255,255,255,.35);
  backdrop-filter:blur(3px);
}
.fp-bday-banner__btn{
  appearance:none;border:0;cursor:pointer;
  padding:9px 16px;border-radius:999px;
  font-size:.85rem;font-weight:800;color:#b3145c;background:#fff;
  box-shadow:0 6px 16px rgba(0,0,0,.18);
  transition:transform .15s ease, box-shadow .15s ease;
}
.fp-bday-banner__btn:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(0,0,0,.22);}

/* Floating balloons inside the banner */
.fp-bday-balloon{
  position:absolute;bottom:-30px;font-size:22px;opacity:.9;
  animation:fpBdayFloat 9s linear infinite;
}
.fp-bday-balloon:nth-child(1){left:6%;animation-delay:0s;}
.fp-bday-balloon:nth-child(2){left:26%;animation-delay:1.6s;}
.fp-bday-balloon:nth-child(3){left:52%;animation-delay:3.1s;}
.fp-bday-balloon:nth-child(4){left:74%;animation-delay:4.4s;}
.fp-bday-balloon:nth-child(5){left:90%;animation-delay:5.8s;}

/* ── Popup ────────────────────────────────────────────────────────────── */
.fp-bday-modal{
  position:fixed;inset:0;z-index:2147483100;
  display:flex;align-items:center;justify-content:center;padding:18px;
  background:rgba(9,10,20,.62);
  backdrop-filter:blur(6px);
  animation:fpBdayFade .25s ease-out both;
}
.fp-bday-modal[hidden]{display:none;}
.fp-bday-card{
  position:relative;width:100%;max-width:420px;
  border-radius:22px;padding:26px 22px 22px;text-align:center;color:#fff;
  background:linear-gradient(160deg,#2b1055 0%,#6d28d9 42%,#ff5f9e 100%);
  box-shadow:0 24px 60px rgba(0,0,0,.45);
  animation:fpBdayIn .35s cubic-bezier(.2,.9,.25,1.2) both;
  overflow:hidden;
}
.fp-bday-card::after{
  content:"";position:absolute;inset:-40% -10% auto -10%;height:70%;
  background:radial-gradient(closest-side,rgba(255,255,255,.28),transparent);
  pointer-events:none;
}
.fp-bday-card__cake{font-size:56px;line-height:1;animation:fpBdayPop 2.2s ease-in-out infinite;}
.fp-bday-card__title{margin:10px 0 0;font-size:1.4rem;font-weight:900;}
.fp-bday-card__age{
  display:inline-block;margin:12px 0 0;padding:7px 16px;border-radius:999px;
  font-weight:800;font-size:.9rem;
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);
}
.fp-bday-card__msg{margin:12px 4px 0;font-size:.92rem;line-height:1.55;opacity:.95;}
.fp-bday-card__actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:18px;}
.fp-bday-card__primary,
.fp-bday-card__ghost{
  appearance:none;border:0;cursor:pointer;text-decoration:none;
  padding:10px 18px;border-radius:999px;font-weight:800;font-size:.88rem;
  transition:transform .15s ease,opacity .15s ease;
}
.fp-bday-card__primary{background:#fff;color:#7c1d5f;}
.fp-bday-card__ghost{background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.32);}
.fp-bday-card__primary:hover,.fp-bday-card__ghost:hover{transform:translateY(-1px);}
.fp-bday-card__close{
  position:absolute;top:10px;right:12px;
  appearance:none;background:transparent;border:0;cursor:pointer;
  color:rgba(255,255,255,.85);font-size:22px;line-height:1;padding:4px 8px;
}

/* ── Friends' birthdays widget ─────────────────────────────────────────── */
.fp-bday-list{list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.fp-bday-list__row{display:flex;align-items:center;gap:10px;}
.fp-bday-list__avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:0 0 auto;}
.fp-bday-list__name{font-size:.88rem;font-weight:700;}
.fp-bday-list__when{font-size:.76rem;opacity:.75;}

@keyframes fpBdayShift{0%,100%{background-position:0% 50%;}50%{background-position:100% 50%;}}
@keyframes fpBdayPop{0%,100%{transform:translateY(0) rotate(-3deg);}50%{transform:translateY(-6px) rotate(3deg);}}
@keyframes fpBdayFloat{0%{transform:translateY(0) rotate(0);opacity:0;}12%{opacity:.9;}100%{transform:translateY(-160px) rotate(12deg);opacity:0;}}
@keyframes fpBdayIn{from{transform:translateY(22px) scale(.94);opacity:0;}to{transform:none;opacity:1;}}
@keyframes fpBdayFade{from{opacity:0;}to{opacity:1;}}

@media (prefers-reduced-motion: reduce){
  .fp-bday-banner,.fp-bday-banner__cake,.fp-bday-card,.fp-bday-card__cake,.fp-bday-balloon{animation:none !important;}
  .fp-bday-confetti{display:none;}
}

/* ── FIX: birthday popup always above menus / widgets / bottom nav ── */
.fp-bday-modal{position:fixed !important;inset:0 !important;z-index:2147483000 !important;display:flex;align-items:center;justify-content:center;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));overflow-y:auto;}
.fp-bday-modal[hidden]{display:none !important;}
.fp-bday-card{position:relative;z-index:1;max-height:calc(100dvh - 32px);overflow-y:auto;margin:auto;}
.fp-bday-confetti{z-index:2147483001 !important;pointer-events:none !important;}
*:has(.fp-bday-modal:not([hidden])):not(html):not(body){transform:none !important;filter:none !important;backdrop-filter:none !important;contain:none !important;z-index:auto !important;isolation:auto !important;will-change:auto !important;}
body:has(.fp-bday-modal:not([hidden])){overflow:hidden !important;}


/* FIX_BDAY_MOBILE_SHARE — neat, equal buttons on mobile + real share sheet */
.fp-bday-banner__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;line-height:1.2;text-decoration:none;white-space:nowrap;font-family:inherit;}
@media (max-width:640px){
  .fp-bday-banner{padding:14px;}
  .fp-bday-banner__row{gap:10px;}
  .fp-bday-banner__cake{flex:0 0 auto;}
  .fp-bday-banner__text{flex:1 1 calc(100% - 50px);min-width:0;}
  .fp-bday-banner__age{flex:1 1 100%;justify-content:center;}
  .fp-bday-banner__btn{flex:1 1 calc(50% - 5px);min-height:42px;padding:10px 12px;}
  .fp-bday-card__actions{flex-direction:column;align-items:stretch;}
  .fp-bday-card__primary,.fp-bday-card__ghost{width:100%;text-align:center;box-sizing:border-box;}
}

.fp-bday-sheet{position:fixed;inset:0;z-index:2147483200;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(9,10,20,.55);backdrop-filter:blur(3px);animation:fpBdayFade .2s ease-out both;}
.fp-bday-sheet[hidden]{display:none;}
.fp-bday-sheet__panel{width:100%;max-width:380px;max-height:88vh;overflow-y:auto;overscroll-behavior:contain;background:var(--c-surface,var(--fp-surface,#fff));color:var(--c-text,var(--fp-text,#111));border-radius:20px;box-shadow:0 24px 60px rgba(0,0,0,.4);padding:14px 0 10px;animation:fpBdayIn .3s cubic-bezier(.2,.9,.25,1.1) both;}
.fp-bday-sheet__head{display:flex;align-items:center;justify-content:space-between;padding:0 16px 8px;}
.fp-bday-sheet__title{font-size:16px;font-weight:800;}
.fp-bday-sheet__x{appearance:none;border:0;background:transparent;cursor:pointer;font-size:24px;line-height:1;color:inherit;opacity:.7;padding:2px 6px;}
.fp-bday-sheet__box{margin:0 16px 8px;}
.fp-bday-sheet__ta{width:100%;box-sizing:border-box;min-height:74px;resize:vertical;border-radius:12px;padding:10px 12px;font:inherit;font-size:14px;border:1px solid var(--c-border,var(--fp-border,#e5e7eb));background:var(--c-surface-2,var(--fp-bg,#f7f8fa));color:inherit;}
.fp-bday-sheet__item{display:flex;align-items:center;gap:12px;width:100%;box-sizing:border-box;padding:10px 16px;border:0;background:transparent;cursor:pointer;font:inherit;font-size:14px;color:inherit;text-align:left;}
.fp-bday-sheet__item:hover{background:var(--c-surface-2,rgba(0,0,0,.05));}
.fp-bday-sheet__item[disabled]{opacity:.55;cursor:default;}
.fp-bday-sheet__ico{font-size:20px;width:26px;text-align:center;flex:0 0 auto;}
.fp-bday-sheet__item b{display:block;font-weight:700;}
.fp-bday-sheet__item small{display:block;font-size:12px;opacity:.65;margin-top:1px;}
.fp-bday-sheet__sep{height:1px;background:var(--c-border,var(--fp-border,#e5e7eb));margin:6px 0;}
.fp-bday-sheet__msg{margin:6px 16px 2px;font-size:12.5px;font-weight:600;color:#16a34a;min-height:16px;}
.fp-bday-sheet__msg.is-err{color:#dc2626;}
@media (max-width:640px){
  .fp-bday-sheet{align-items:flex-end;padding:0;}
  .fp-bday-sheet__panel{max-width:none;border-radius:20px 20px 0 0;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 10px);}
}
