/* ─── NOTIFICATIONS ─── */
.notif-list{padding:0 18px;}

.notif-item{
  display:flex;align-items:flex-start;gap:12px;
  padding:14px 16px;
  background:#ffffff;
  border:1.5px solid var(--border);
  border-radius:18px;
  margin-bottom:10px;
  box-shadow:0 2px 8px rgba(61,26,0,.04);
  transition:all .2s ease;
  animation:fadeIn .3s ease;
}
.notif-item:hover{
  border-color:#ff7a65;
  transform:translateY(-1px);
  box-shadow:0 6px 16px rgba(61,26,0,.08);
}
.notif-item.unread{
  border-left:4px solid #ff7a65;
  background:var(--softer);
}

.notif-dot{width:8px;height:8px;border-radius:50%;background:#ff7a65;flex-shrink:0;margin-top:6px;opacity:0;transition:opacity .2s;}
.notif-icon{
  font-size:26px;width:44px;height:44px;
  background:var(--soft);border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;box-shadow:0 2px 6px rgba(61,26,0,.04);
}
.notif-body{flex:1;}
.notif-title{font-weight:800;font-size:14px;color:var(--accent);margin-bottom:3px;}
.notif-msg{font-size:12px;color:var(--muted);font-weight:600;line-height:1.5;}
.notif-time{font-size:11px;color:var(--muted);font-weight:700;margin-top:4px;}
.notif-action{display:flex;gap:8px;margin-top:8px;}

.notif-toast{
  position:fixed;top:16px;right:16px;left:16px;
  max-width:420px;margin:0 auto;
  background:var(--accent);color:#ffffff;
  border-radius:18px;padding:14px 18px;
  display:flex;align-items:center;gap:12px;
  box-shadow:0 12px 32px rgba(61,26,0,.3);
  z-index:9999;animation:notifSlide .4s ease;
  font-weight:700;font-size:13px;
}
.notif-toast-close{
  margin-left:auto;background:rgba(255,255,255,.2);
  border:none;color:#ffffff;border-radius:50%;
  width:26px;height:26px;cursor:pointer;
  font-size:14px;display:flex;align-items:center;justify-content:center;
  transition:background .18s;
}
.notif-toast-close:hover{background:rgba(255,255,255,.35);}

/* ══════════════════════════════════════════
   MOMENT CHAT — Emotional Interaction Layer
══════════════════════════════════════════ */
@keyframes swipeIn{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes momentIn{0%{opacity:0;transform:translateY(14px) scale(.92)}60%{transform:translateY(-3px) scale(1.02)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes momentOut{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.88)}}
@keyframes charFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes charBounce{0%,100%{transform:translateY(0) scale(1)}25%{transform:translateY(-18px) scale(1.04)}50%{transform:translateY(-8px) scale(1.02)}}
@keyframes charShake{0%,100%{transform:rotate(0) translateX(0)}20%{transform:rotate(-8deg) translateX(-4px)}40%{transform:rotate(6deg) translateX(4px)}60%{transform:rotate(-5deg) translateX(-3px)}80%{transform:rotate(3deg) translateX(2px)}}
@keyframes charBlush{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes charSad{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(5px) rotate(-3deg)}}
@keyframes charLook{0%,100%{transform:rotate(0)}50%{transform:rotate(-8deg) translateX(-5px)}}
@keyframes charJump{0%{transform:translateY(0) scale(1)}20%{transform:translateY(-22px) scale(1.06) rotate(-5deg)}45%{transform:translateY(-10px) scale(1.03) rotate(3deg)}65%{transform:translateY(-16px) scale(1.04) rotate(-2deg)}85%{transform:translateY(-4px) scale(1.01)}100%{transform:translateY(0) scale(1)}}
@keyframes charWide{0%,100%{transform:scale(1)}30%{transform:scale(1.15) translateY(-6px)}60%{transform:scale(1.08) translateY(-3px)}}
@keyframes heartFloat{0%{opacity:1;transform:translateY(0) scale(1) rotate(0deg)}100%{opacity:0;transform:translateY(-60px) scale(1.4) rotate(15deg)}}
@keyframes particleOut{0%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(var(--px),var(--py)) scale(0)}}
@keyframes bgPulse{0%,100%{opacity:1}50%{opacity:.7}}
@keyframes statusBlink{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes inputGlow{0%,100%{box-shadow:0 0 0 0 rgba(196,130,42,0)}50%{box-shadow:0 0 0 8px rgba(196,130,42,.12)}}
@keyframes momentIdle{0%,100%{opacity:.5}50%{opacity:.9}}

/* ══════════════════════════════════════════
   NOTIFICATION PERMISSION POPUP
══════════════════════════════════════════ */
@keyframes npCardIn{
  0%{opacity:0;transform:translateY(40px) scale(.88)}
  60%{transform:translateY(-6px) scale(1.02)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@keyframes npRingPulse{
  0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,122,101,.35)}
  50%{transform:scale(1.07);box-shadow:0 0 0 14px rgba(255,122,101,0)}
}
@keyframes npPawFloat{
  0%,100%{transform:translateY(0) rotate(-10deg)}
  50%{transform:translateY(-8px) rotate(5deg)}
}
@keyframes npBellRing{
  0%,100%{transform:rotate(0)}
  15%{transform:rotate(18deg)}
  30%{transform:rotate(-16deg)}
  45%{transform:rotate(12deg)}
  60%{transform:rotate(-8deg)}
  75%{transform:rotate(4deg)}
}

#sk-notif-popup {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding: 0 12px 24px;
}

.sk-np-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(20, 8, 2, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}

.sk-np-card {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 400px;
  background: #ffffff;
  border-radius: 28px;
  padding: 28px 22px 22px;
  box-shadow: 0 24px 60px rgba(61,26,0,.28), 0 4px 16px rgba(61,26,0,.12);
  text-align: center;
  animation: npCardIn .5s cubic-bezier(0.22, 1, 0.36, 1) both;
  border: 1.5px solid rgba(255,122,101,.15);
}

.sk-np-emoji-wrap {
  position: relative;
  display: flex;
  justify-content: center;
  margin-bottom: 14px;
}

.sk-np-emoji-ring {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: linear-gradient(135deg, #fff3ee 0%, #fde8e0 100%);
  border: 2.5px solid #ff7a6555;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: npRingPulse 2.4s ease-in-out infinite;
  box-shadow: 0 8px 24px rgba(255,122,101,.18);
}

.sk-np-emoji {
  font-size: 38px;
  display: block;
  animation: npBellRing 2s ease-in-out infinite;
  transform-origin: top center;
}

.sk-np-paw1, .sk-np-paw2 {
  position: absolute;
  top: 0;
  font-size: 18px;
  animation: npPawFloat 2.2s ease-in-out infinite;
}

.sk-np-paw1 { left: calc(50% - 60px); animation-delay: 0s; }
.sk-np-paw2 { right: calc(50% - 60px); animation-delay: .7s; }

.sk-np-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  border-radius: 50px;
  background: linear-gradient(135deg, #fff3ee, #fde0d4);
  color: #c0392b;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .6px;
  text-transform: uppercase;
  margin-bottom: 10px;
  border: 1.5px solid #ff7a6530;
}

.sk-np-title {
  font-family: 'Fredoka One', cursive;
  font-size: 24px;
  color: #3d1a00;
  margin: 0 0 8px;
  line-height: 1.2;
}

.sk-np-sub {
  font-size: 13px;
  font-weight: 600;
  color: #6b3a1f;
  line-height: 1.55;
  margin: 0 0 18px;
  opacity: .85;
}

.sk-np-features {
  background: #fdf3e7;
  border-radius: 16px;
  padding: 12px 14px;
  margin-bottom: 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  border: 1.5px solid rgba(196,130,42,.18);
}

.sk-np-feat {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 700;
  color: #3d1a00;
  text-align: left;
}

.sk-np-feat span {
  font-size: 20px;
  width: 28px;
  text-align: center;
  flex-shrink: 0;
}

.sk-np-btn-allow {
  display: block;
  width: 100%;
  padding: 14px;
  border-radius: 18px;
  border: none;
  background: linear-gradient(135deg, #ff7a65 0%, #e8553e 100%);
  color: #ffffff;
  font-family: 'Nunito', sans-serif;
  font-size: 15px;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(255,122,101,.45);
  transition: transform .2s cubic-bezier(.34,1.56,.64,1), box-shadow .2s ease;
  margin-bottom: 10px;
  letter-spacing: .2px;
}

.sk-np-btn-allow:hover {
  transform: translateY(-2px) scale(1.02);
  box-shadow: 0 12px 28px rgba(255,122,101,.55);
}

.sk-np-btn-allow:active {
  transform: translateY(1px) scale(.98);
}

.sk-np-btn-skip {
  display: block;
  width: 100%;
  padding: 10px;
  border-radius: 14px;
  border: 1.5px solid var(--border, #e8d5c4);
  background: transparent;
  color: #6b3a1f;
  font-family: 'Nunito', sans-serif;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: background .18s, border-color .18s;
}

.sk-np-btn-skip:hover {
  background: #fdf3e7;
  border-color: #c4822a;
}

/* Notification toggle button states */
[data-notif-toggle].notif-toggle-on {
  background: linear-gradient(135deg, #2ecc71 0%, #27ae60 100%) !important;
  box-shadow: 0 4px 14px rgba(46,204,113,.35) !important;
}
[data-notif-toggle].notif-toggle-off {
  background: linear-gradient(135deg, #ff7a65 0%, #e8553e 100%) !important;
}

