/* =========================================================
   More menu, Guest Book, Share Memories, RSVP, sheets
   ========================================================= */

.back-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:4px 0 0;
  padding:8px 14px 8px 8px;
  border:0;
  border-radius:999px;
  background:transparent;
  color:var(--gold-deep);
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.06em;
}

.gold-text{ color:var(--gold-deep); }
.page-title--serif{ font-family:"Cormorant Garamond",Georgia,serif; font-size:clamp(2.2rem,9vw,2.8rem); }

/* ---------- menu list ---------- */
.menu-list{ display:grid; gap:12px; margin:16px 0 0; }
.menu-item{
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto;
  align-items:center;
  gap:14px;
  width:100%;
  padding:14px;
  border:1px solid rgba(169,124,44,.16);
  border-radius:16px;
  background:rgba(255,255,255,.78);
  box-shadow:0 8px 20px rgba(112,78,26,.08);
  text-align:left;
  cursor:pointer;
  transition:transform .2s ease, box-shadow .2s ease;
}
.menu-item:active{ transform:scale(.985); }
.menu-icon{
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border-radius:13px;
  font-size:1.35rem;
}
.menu-icon--purple{ background:#efeafd; }
.menu-icon--red{ background:#fdeaea; }
.menu-icon--green{ background:#e8f6ea; }
.menu-icon--gold{ background:#f7ecd8; }
.menu-text{ display:grid; gap:3px; min-width:0; overflow-wrap:anywhere; }
.menu-text strong{ font-size:.92rem; color:#4a3a24; }
.menu-text small{ font-size:.74rem; color:#8b7355; line-height:1.5; }
body.is-admin [data-view="more"] .admin-only{ display:grid !important; }
body.is-admin [data-view="more"] .admin-only.hidden{ display:none !important; }
[data-view="more"] .more-actions{ display:grid; gap:12px; margin-top:20px; }
[data-view="more"] .more-actions .enter-wide{ margin:0; }
#shareActionStatus:empty{ display:none; }
.install-help{ font-size:.85rem; line-height:1.7; margin:14px 0; color:#6b5437; }
.menu-item:focus-visible{ outline:2px solid #a17a35; outline-offset:3px; }
.menu-chev{ color:#b49763; font-size:.9rem; }
.menu-item--wide{ margin-top:16px; }

.notice-card{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:12px;
  align-items:center;
  margin:16px 0 0;
  padding:14px 16px;
  border-radius:14px;
  background:#f9efdd;
  border:1px solid rgba(169,124,44,.2);
}
.notice-icon{ font-size:1.2rem; }
.notice-card p{ margin:0; font-size:.78rem; line-height:1.5; color:#6d5a3d; }

/* ---------- guest book ---------- */
.chips--center{ justify-content:center; }
.gb-list{ display:grid; gap:12px; margin:16px 0 0; }
.gb-card{
  padding:14px 14px 12px;
  border-radius:16px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(169,124,44,.16);
  box-shadow:0 8px 20px rgba(112,78,26,.08);
}
.gb-head{
  display:grid;
  grid-template-columns:44px 1fr auto;
  gap:12px;
  align-items:center;
}
.gb-avatar{
  width:44px;
  height:44px;
  border-radius:50%;
  object-fit:cover;
}
.gb-avatar--initials{
  display:grid;
  place-items:center;
  background:linear-gradient(#b98c33,#8a6220);
  color:#fff6e2;
  font-size:.92rem;
  font-weight:600;
}
.gb-who{ display:grid; gap:1px; }
.gb-who strong{ font-size:.9rem; color:#4a3a24; }
.gb-who small{ font-size:.7rem; color:#9a8767; }
.gb-badge{
  padding:5px 10px;
  border-radius:999px;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.04em;
  border:1px solid;
}
.gb-badge--approved{ color:#8a6220; border-color:rgba(169,124,44,.5); background:#faf1de; }
.gb-badge--pending{ color:#a3722a; border-color:rgba(190,140,60,.4); background:#fdf6e9; }
.gb-msg{
  margin:10px 2px 0;
  font-size:.84rem;
  line-height:1.55;
  color:#5f4d33;
}
.gb-replies{
  margin:10px 0 0;
  padding:8px 12px;
  border-left:2px solid rgba(169,124,44,.3);
  background:rgba(250,243,231,.7);
  border-radius:0 10px 10px 0;
}
.gb-reply{ margin:4px 0; font-size:.76rem; color:#6d5a3d; }
.gb-actions{
  display:flex;
  justify-content:space-between;
  margin:10px 0 0;
  padding-top:10px;
  border-top:1px solid rgba(169,124,44,.14);
}
.gb-like,
.gb-replybtn{
  border:0;
  background:none;
  padding:4px 6px;
  font-size:.76rem;
  font-weight:600;
  color:#7a6340;
}
.gb-like b{ color:var(--gold-deep); }
.gb-like.liked{ color:#b03a2e; }
.gb-replyform{
  display:grid;
  grid-template-columns:1fr 1.4fr auto;
  gap:8px;
  margin-top:10px;
}
.gb-replyform input{
  padding:9px 11px;
  border:1px solid rgba(169,124,44,.26);
  border-radius:10px;
  background:rgba(255,255,255,.9);
  font-family:"Montserrat",sans-serif;
  font-size:.76rem;
}
.gb-replyform button{
  padding:9px 14px;
  border:1px solid #c79c48;
  border-radius:10px;
  background:linear-gradient(#b98c33,#8a6220);
  color:#fff7e4;
  font-size:.72rem;
  font-weight:700;
}
#gbAddBtn{ margin-top:18px; }
.plus-badge{
  display:inline-grid;
  place-items:center;
  width:22px;
  height:22px;
  border-radius:50%;
  background:rgba(255,247,228,.25);
  border:1px solid rgba(255,247,228,.6);
  font-size:.9rem;
}

/* ---------- sheets ---------- */
.sheet{
  position:fixed;
  inset:0;
  z-index:150;
  display:grid;
  align-items:end;
  background:rgba(46,33,14,.5);
  backdrop-filter:blur(4px);
  animation:sheetFade .25s ease both;
}
@keyframes sheetFade{ from{ opacity:0; } to{ opacity:1; } }
.sheet-card{
  max-height:88dvh;
  overflow-y:auto;
  margin:0;
  padding:22px 18px calc(18px + env(safe-area-inset-bottom));
  border-radius:22px 22px 0 0;
  background:linear-gradient(#fdf8f0,#f7eede);
  border-top:1px solid rgba(178,138,78,.3);
  animation:sheetUp .35s cubic-bezier(.2,.8,.3,1) both;
}
@keyframes sheetUp{ from{ transform:translateY(40px); opacity:0; } to{ transform:none; opacity:1; } }
@media(min-width:760px){
  .sheet{ align-items:center; }
  .sheet-card{ width:min(92%,440px); margin:0 auto; border-radius:22px; }
}
.sheet-title{
  margin:0 0 14px;
  text-align:center;
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:1.4rem;
  font-weight:600;
  color:#4a3a24;
}
.sheet-actions{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:10px;
  align-items:center;
  margin-top:6px;
}
.sheet-actions .map-button{ margin:0; width:100%; }
.sheet-cancel{
  padding:14px 18px;
  border:1px solid rgba(169,124,44,.3);
  border-radius:999px;
  background:rgba(255,255,255,.8);
  color:#7a6340;
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.08em;
}

.share-preview{ margin:0 0 12px; }
.share-preview img,
.share-preview video{
  width:100%;
  max-height:230px;
  object-fit:cover;
  border-radius:14px;
}
.share-preview audio{ width:100%; }

/* =========================================================
   Recorder pages
   ========================================================= */
.rec-page-card{
  margin:12px 0 0;
  padding:16px;
  border-radius:18px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(169,124,44,.16);
  box-shadow:0 10px 26px rgba(112,78,26,.08);
}
.rec-page-card--center{ text-align:center; }

.couple-circle{
  position:relative;
  width:120px;
  height:120px;
  margin:4px auto 20px;
  border-radius:50%;
  padding:4px;
  background:linear-gradient(#f3e0bf,#dcbc7b);
}
.couple-circle img{
  width:100%;
  height:100%;
  border-radius:50%;
  object-fit:cover;
  border:3px solid #fff;
}
.couple-circle-heart{
  position:absolute;
  bottom:0;
  left:50%;
  transform:translate(-50%,20%);
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:var(--gold);
  color:#fff;
  font-size:.9rem;
  box-shadow:0 3px 8px rgba(0,0,0,.12);
}

.voice-wave{
  width:100%;
  height:90px;
  margin:4px 0 2px;
}

.rec-timer{
  margin:2px 0 0;
  font-size:.95rem;
  letter-spacing:.08em;
  color:#5a4a30;
}

.mic-button{
  position:relative;
  width:80px;
  height:80px;
  margin:16px auto 0;
  border:0;
  border-radius:50%;
  background:linear-gradient(#b98c33,#8a6220);
  color:#fff;
  display:grid;
  place-items:center;
  box-shadow:0 12px 30px rgba(105,71,22,.3);
  transition:transform .2s ease, box-shadow .2s ease;
}
.mic-button svg{ width:36px; height:36px; stroke:#fff; }
.mic-button.recording{ background:linear-gradient(#c44d45,#a02e26); }
.mic-button.recording::before{
  content:"";
  position:absolute;
  inset:-6px;
  border-radius:50%;
  border:2px solid rgba(176,58,46,.35);
  animation:micPulse 1.4s ease-in-out infinite;
}
@keyframes micPulse{
  0%,100%{ transform:scale(1); opacity:1; }
  50%{ transform:scale(1.12); opacity:.45; }
}

.viewfinder{
  position:relative;
  margin:16px 0 0;
  aspect-ratio:4/3;
  border-radius:18px;
  overflow:hidden;
  background:#1a1208;
}
/* blurred couple photo sits behind the camera preview so the idle
   viewfinder reads as a photo frame, not a black box */
.vf-backdrop{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:blur(18px) brightness(.45) saturate(.9);
  transform:scale(1.3);
}
.viewfinder video{
  position:relative;
  z-index:1;
  width:100%;
  height:100%;
  object-fit:cover;
}
.viewfinder video.mirrored{ transform:scaleX(-1); }
.vf-corner{
  position:absolute;
  z-index:2;
  width:28px;
  height:28px;
  border-color:rgba(255,242,212,.8);
  border-style:solid;
  border-width:0;
}
.vf-corner--tl{ top:16px; left:16px; border-top-width:2px; border-left-width:2px; }
.vf-corner--tr{ top:16px; right:16px; border-top-width:2px; border-right-width:2px; }
.vf-corner--bl{ bottom:16px; left:16px; border-bottom-width:2px; border-left-width:2px; }
.vf-corner--br{ bottom:16px; right:16px; border-bottom-width:2px; border-right-width:2px; }
.vf-overlay{
  position:absolute;
  z-index:2;
  inset:0;
  display:grid;
  place-content:center;
  place-items:center;
  gap:6px;
  text-align:center;
  color:#fff;
  cursor:pointer;
  text-shadow:0 1px 10px rgba(0,0,0,.55);
}
.vf-overlay svg{ width:44px; height:44px; filter:drop-shadow(0 1px 8px rgba(0,0,0,.5)); }
.vf-overlay p{ margin:0; font-size:.92rem; }
.vf-overlay small{ font-size:.74rem; opacity:.85; }
.vf-timer{
  position:absolute;
  z-index:3;
  top:12px;
  left:50%;
  transform:translateX(-50%);
  margin:0;
  padding:5px 12px;
  border-radius:999px;
  background:rgba(0,0,0,.55);
  color:#fff;
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:1rem;
}

.vm-controls{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:10px;
  margin:14px 0 0;
  padding:10px 12px;
  border-radius:18px;
  background:rgba(255,255,255,.9);
  border:1px solid rgba(169,124,44,.12);
}
.vm-side{
  display:grid;
  place-items:center;
  gap:4px;
  padding:8px;
  border:0;
  background:none;
  color:#5f4d33;
  font-size:.7rem;
}
.vm-side svg{ width:24px; height:24px; stroke:var(--gold-deep); }
.vm-record{
  width:70px;
  height:70px;
  border:1px solid rgba(169,124,44,.28);
  border-radius:50%;
  display:grid;
  place-items:center;
  background:#fff;
  box-shadow:0 4px 14px rgba(112,78,26,.12);
}
.vm-record span{
  width:44px;
  height:44px;
  border-radius:50%;
  background:#b03a2e;
  transition:all .2s ease;
}
.vm-record.recording span{ border-radius:8px; transform:scale(.7); }

.rec-review{ margin:14px 0 0; }
.rec-review audio{ width:100%; }
.rec-review video{ width:100%; max-height:260px; border-radius:14px; }

/* ---------- RSVP ---------- */
.rsvp-hero{
  margin:16px 0 0;
  padding:22px 18px;
  border-radius:18px;
  text-align:center;
  background:rgba(255,255,255,.8);
  border:1px solid rgba(169,124,44,.16);
  box-shadow:0 10px 26px rgba(112,78,26,.08);
}
.rsvp-hero-icon{ font-size:1.4rem; }
.rsvp-hero h3{
  margin:8px 0 0;
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:1.6rem;
  font-weight:600;
  color:#4a3a24;
}
.rsvp-hero p{ margin:6px 0 0; font-size:.88rem; line-height:1.5; color:#6d5a3d; }

.rsvp-form{ margin:18px 0 0; }
.field-label{
  margin:16px 0 8px;
  font-size:.8rem;
  font-weight:700;
  color:#4a3a24;
}
.attend-toggle{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.attend-btn{
  padding:14px 10px;
  border:1px solid rgba(169,124,44,.3);
  border-radius:14px;
  background:rgba(255,255,255,.85);
  color:#5f4d33;
  font-size:.8rem;
  font-weight:600;
  transition:all .2s ease;
}
.attend-btn.active{
  background:linear-gradient(#a9832f,#7d5a1c);
  border-color:#c79c48;
  color:#fff7e4;
  box-shadow:0 8px 20px rgba(105,71,22,.28);
}
.stepper{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  align-items:stretch;
  border:1px solid rgba(169,124,44,.26);
  border-radius:14px;
  overflow:hidden;
  background:rgba(255,255,255,.85);
}
.stepper button{
  padding:14px;
  border:0;
  background:transparent;
  font-size:1.2rem;
  color:#7a6340;
}
.stepper button:active{ background:rgba(169,124,44,.12); }
.stepper span{
  display:grid;
  place-items:center;
  font-size:1rem;
  font-weight:600;
  color:#4a3a24;
  border-left:1px solid rgba(169,124,44,.2);
  border-right:1px solid rgba(169,124,44,.2);
}
.rsvp-submit{ margin-top:20px; }

/* =========================================================
   Admin dashboard
   ========================================================= */
.admin-stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  margin:16px 0 0;
  padding:14px;
  border-radius:18px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(169,124,44,.16);
  box-shadow:0 10px 26px rgba(112,78,26,.08);
}
.admin-stat{
  display:grid;
  place-items:center;
  gap:4px;
  padding:10px 0;
  text-align:center;
}
.admin-stat + .admin-stat{ border-left:1px solid rgba(169,124,44,.18); }
.admin-stat-label{ font-size:.64rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#8b7355; }
.admin-stat-num{ font-family:"Cormorant Garamond",Georgia,serif; font-size:1.9rem; color:var(--gold-deep); }

.aq-list{ display:grid; gap:12px; margin:16px 0 0; }
.aq-card{
  display:grid;
  gap:10px;
  padding:12px;
  border-radius:16px;
  background:rgba(255,255,255,.82);
  border:1px solid rgba(169,124,44,.16);
  box-shadow:0 8px 20px rgba(112,78,26,.08);
}
.aq-card .aq-media{ width:100%; max-height:160px; object-fit:cover; border-radius:12px; }
.aq-card audio{ width:100%; }
.aq-card p{ margin:0; font-size:.82rem; color:#5f4d33; }
.aq-card small{ display:block; margin-top:2px; font-size:.7rem; color:#8b7355; }
.aq-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:4px;
}
.aq-approve{
  padding:12px;
  border:0;
  border-radius:12px;
  background:linear-gradient(#6b9e5b,#4f7a42);
  color:#f2fff2;
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.08em;
}
.settings-heading{
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:1.6rem;
  color:var(--gold-deep);
  text-align:center;
  margin:28px 0 2px;
}
.settings-grid{ grid-template-columns:repeat(2,1fr); }
.settings-grid .aq-card .aq-media{ max-height:110px; }
.settings-grid .aq-actions,
.settings-song .aq-actions{ grid-template-columns:1fr; }
.settings-song{ margin-top:12px; }

/* wedding playlist */
.song-list{ display:grid; gap:8px; margin:8px 0; }
.song-row{
  display:grid; grid-template-columns:auto 1fr auto auto;
  align-items:center; gap:8px;
  padding:6px 8px; border:1px solid var(--edge); border-radius:10px;
  background:#fff;
}
.song-num{
  width:22px; height:22px; display:grid; place-items:center;
  background:var(--gold); color:#fff; border-radius:50%;
  font-size:11px; font-weight:700; font-family:Georgia;
}
.song-row audio{ width:100%; min-width:0; height:30px; }
.song-name{
  font-family:Cormorant, Georgia, serif; font-size:14px; color:var(--ink);
  max-width:110px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.song-del{ padding:6px 10px; border-radius:8px; font-size:9px; }
.song-actions{ display:flex; align-items:center; gap:6px; }
.song-order{ display:grid; gap:2px; }
.song-order button{
  width:26px; height:16px; padding:0;
  display:grid; place-items:center;
  border:1px solid rgba(169,124,44,.3); border-radius:5px;
  background:rgba(255,251,244,.9); color:#8a6d34;
  font-size:8px; line-height:1; cursor:pointer;
}
.song-order button:disabled{ opacity:.3; cursor:default; }
.song-order button:not(:disabled):active{ transform:scale(.9); }
.song-first-badge{
  padding:5px 9px; border-radius:8px; font-size:8px; font-weight:700;
  font-family:Montserrat,sans-serif; letter-spacing:.08em;
  color:#8a6d34; background:rgba(232,195,94,.25);
  border:1px solid rgba(169,124,44,.35);
}

.aq-reject{
  padding:12px;
  border:0;
  border-radius:12px;
  background:linear-gradient(#c44d45,#9b2e27);
  color:#fff7f4;
  font-size:.78rem;
  font-weight:700;
  letter-spacing:.08em;
}

/* ---------- Wedding Details form (admin) ---------- */
.settings-fields{
  display:grid;
  gap:10px;
  margin:10px 0;
  text-align:left;
}
.settings-fields .field input,
.settings-fields textarea,
.field textarea{
  width:100%;
  margin-top:4px;
  padding:10px 12px;
  border:1px solid rgba(169,124,44,.3);
  border-radius:10px;
  font:inherit;
  font-size:.85rem;
  background:rgba(255,255,255,.75);
  color:#3d2c14;
  box-sizing:border-box;
}
.wed-event-row{
  display:grid;
  grid-template-columns:88px 1fr;
  gap:8px;
}
.wed-event-row input{
  padding:10px 12px;
  border:1px solid rgba(169,124,44,.3);
  border-radius:10px;
  font:inherit;
  font-size:.85rem;
  background:rgba(255,255,255,.75);
  color:#3d2c14;
}

/* ---------- admin mode & pending badge ---------- */
.admin-mode-pill{
  display:inline-block;
  margin-left:8px;
  padding:3px 10px;
  border-radius:999px;
  background:#a97c2c;
  color:#fff;
  font-size:.58rem;
  font-weight:700;
  letter-spacing:.14em;
  vertical-align:middle;
}
.pending-badge{
  display:inline-block;
  margin-left:6px;
  min-width:20px;
  padding:2px 7px;
  border-radius:999px;
  background:#c0392b;
  color:#fff;
  font-size:.68rem;
  font-weight:700;
  vertical-align:middle;
}

.admin-feed-error{
  margin:10px auto;
  max-width:520px;
  padding:10px 14px;
  border-radius:12px;
  background:rgba(192,57,43,.1);
  border:1px solid rgba(192,57,43,.35);
  color:#96281b;
  font-size:.78rem;
  text-align:center;
}
.admin-refresh{
  display:block;
  margin:0 auto 14px;
  max-width:200px;
}

/* ---------- security log ---------- */
.sec-actions{ display:flex; gap:10px; justify-content:center; margin-bottom:14px; }
.sec-actions .admin-refresh{ display:inline-block; margin:0; }
.sec-card--warn{ border-left:3px solid #c0392b; }
.sec-card--high{ border-left:3px solid #96281b; background:rgba(192,57,43,.07); }
.sec-card--ok{ border-left:3px solid #6a994e; }
.sec-card--info{ border-left:3px solid rgba(169,124,44,.3); }
.sec-detail{
  margin-top:4px;
  font-size:.78rem;
  color:#7a4a1e;
  word-break:break-word;
}
.sec-card small{ line-height:1.5; }

/* ---------- activity toasts — elegant gold notifications ---------- */
.activity-toasts{
  position:fixed;
  top:calc(74px + env(safe-area-inset-top));
  left:50%;
  transform:translateX(-50%);
  z-index:300;
  display:grid;
  gap:8px;
  width:min(92vw, 380px);
  pointer-events:none;
}
.activity-toast{
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 16px 10px 10px;
  border-radius:999px;
  background:rgba(253,249,241,.96);
  border:1px solid rgba(178,134,54,.45);
  box-shadow:0 12px 30px rgba(112,78,26,.25), inset 0 0 0 1px rgba(255,255,255,.6);
  backdrop-filter:blur(10px);
  opacity:0;
  transform:translateY(-14px) scale(.96);
  transition:opacity .3s ease, transform .35s cubic-bezier(.2,.9,.3,1.2);
}
.activity-toast.in{ opacity:1; transform:translateY(0) scale(1); }
.activity-toast img{
  width:38px;
  height:38px;
  object-fit:contain;
  flex:none;
  filter:drop-shadow(0 0 6px rgba(255,200,90,.6));
}
.activity-toast b{
  display:block;
  font-family:"Cormorant Garamond",Georgia,serif;
  font-size:1.02rem;
  font-weight:600;
  color:#6d4d17;
  line-height:1.15;
}
.activity-toast span{
  display:block;
  font-size:.68rem;
  font-weight:500;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#9a7b45;
}
@media (prefers-reduced-motion: reduce){
  .activity-toast{ transition:opacity .2s ease; }
}

/* ---------- admin announcement toast — golden neon, lingers longer ---------- */
.announce-toast{
  align-items:center;
  padding:9px 14px 9px 9px;
  border-radius:16px;
  border:1.5px solid #e8c35e;
  background:linear-gradient(160deg,#fffdf7,#fff6e2);
  animation:annNeon 2.6s ease-in-out infinite;
}
@keyframes annNeon{
  0%,100%{
    border-color:#e4c167;
    box-shadow:0 0 8px rgba(255,196,54,.4), 0 0 18px rgba(255,170,0,.2),
               0 8px 20px rgba(112,78,26,.18);
  }
  50%{
    border-color:#f0d488;
    box-shadow:0 0 14px rgba(255,200,60,.6), 0 0 30px rgba(255,160,0,.3),
               0 8px 22px rgba(112,78,26,.22);
  }
}
.announce-toast .ann-photos{
  display:flex; flex:none; margin-right:2px;
}
.announce-toast .ann-photos img{
  width:32px; height:32px; border-radius:50%;
  object-fit:cover;
  border:1.5px solid #e4c167;
  box-shadow:0 0 6px rgba(255,190,60,.45);
}
.announce-toast .ann-photos img + img{ margin-left:-10px; }
.announce-toast .ann-body b{
  display:block;
  font-family:Montserrat, sans-serif;
  font-size:.56rem; font-weight:700; letter-spacing:.15em;
  color:#b1121f;
  text-shadow:0 0 4px rgba(255,60,60,.25);
  margin-bottom:2px;
}
.announce-toast .ann-body p{
  margin:0;
  font-family:Cormorant, Georgia, serif;
  font-size:.92rem; font-weight:700; line-height:1.25;
  color:#8a5a00;
  text-shadow:0 0 5px rgba(255,190,60,.35);
}
.announce-toast .ann-heart{
  font-style:normal; color:#d21f2c; font-size:.85em;
  text-shadow:0 0 5px rgba(255,60,60,.5);
}
@media (prefers-reduced-motion: reduce){
  .announce-toast{ animation:none; box-shadow:0 0 10px rgba(255,180,0,.35); }
}

/* ---------- announcement photo pickers + live preview (admin) ---------- */
.ann-photo-pick{ display:grid; gap:8px; justify-items:center; }
.ann-preview{
  position:relative;
  width:84px; height:84px; padding:0;
  border-radius:50%; overflow:hidden; cursor:pointer;
  border:2px solid #e4c167;
  background:#fff8ea;
  box-shadow:0 0 12px rgba(255,190,60,.35);
  transition:transform .15s ease;
}
.ann-preview:active{ transform:scale(.95); }
.ann-preview img{ width:100%; height:100%; object-fit:cover; display:block; }
.ann-preview-hint{
  position:absolute; left:0; right:0; bottom:0;
  padding:4px 0 6px;
  font-size:.56rem; font-weight:700; letter-spacing:.08em;
  color:#fff; text-align:center;
  background:linear-gradient(transparent, rgba(70,45,10,.75));
}
.ann-preview.uploading{ animation:annUp 1s ease-in-out infinite; }
.ann-preview.uploading::after{
  content:''; position:absolute; inset:0;
  background:rgba(255,248,234,.45);
}
@keyframes annUp{ 50%{ box-shadow:0 0 22px rgba(255,190,60,.8); } }
.ann-photo-pick select{ width:100%; }
.ann-live-preview{ display:grid; gap:8px; margin-top:6px; }
.ann-live-preview .announce-toast{ opacity:1; transform:none; pointer-events:none; }

/* keep the last button in admin cards clear of the raised Gallery seal */
[data-view="admin"]{ padding-bottom:60px; }

/* ---------- guest + RSVP breakdown (admin dashboard) ---------- */
.guest-breakdown{ margin:16px 0 8px; }
.guest-breakdown-body{ margin-top:8px; }
.guest-breakdown-title{
  margin:14px 0 6px;
  font-size:.64rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#9a7b45;
}
.guest-breakdown-title:first-child{ margin-top:2px; }
.gb-row{
  display:flex;
  align-items:baseline;
  gap:8px;
  padding:7px 0;
  border-bottom:1px solid rgba(178,134,54,.14);
}
.gb-row:last-child{ border-bottom:0; }
.gb-row span{
  flex:1;
  font-size:.84rem;
  color:#4a3a22;
}
.gb-row b{
  font-size:1.05rem;
  font-weight:700;
  color:#8a6a1e;
  min-width:2.2em;
  text-align:right;
}
.gb-row small{
  font-size:.68rem;
  color:#9a8a6a;
  opacity:.85;
}

/* ---------- who-invited-you stats (admin guest list) ---------- */
.invite-stats{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:center;
  margin:6px 0 16px;
}
.invite-stats-title{
  width:100%;
  margin:0 0 2px;
  font-size:.66rem;
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#9a7b45;
  text-align:center;
}
.invite-chip{
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:5px 12px;
  border-radius:999px;
  border:1px solid rgba(178,134,54,.4);
  background:rgba(253,249,241,.85);
  font-size:.74rem;
  font-weight:600;
  color:#6d4d17;
}
.invite-chip b{
  min-width:20px;
  height:20px;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:linear-gradient(#c79c48,#8a6220);
  color:#fff6e2;
  font-size:.68rem;
  padding:0 5px;
}
/* ---------- Gifts (Mobile Money) ---------- */
.admin-section-tabs{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:18px 0 22px;
}
.admin-section-tabs button{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  min-width:0; min-height:74px; padding:10px 5px; border:1px solid rgba(169,124,44,.23);
  border-radius:12px; background:#fffaf2; color:#6a4d28; font-size:.65rem; font-weight:600; line-height:1.3;
}
.admin-section-tabs button > span{ font-size:1.35rem; line-height:1; }
.admin-section-tabs button[aria-selected="true"]{
  color:#fff9ed; border-color:#96702e; background:linear-gradient(135deg,#b58b45,#876020);
  box-shadow:0 4px 12px rgba(126,87,28,.15);
}
.admin-section-tabs button:focus-visible{ outline:2px solid #88601e; outline-offset:3px; }
.admin-section-panel > .settings-heading:first-child{ margin-top:6px; }
.admin-section-panel:focus-visible{ outline:2px solid #b58b45; outline-offset:4px; }
.gift-message-card{ display:grid; gap:14px; margin-top:18px; }
.gift-message-card .page-sub{ margin:0; text-align:left; font-size:.75rem; line-height:1.6; }
.gift-message-card textarea{ font-size:16px; min-height:100px; resize:vertical; }
.gift-message-card .aq-actions{ margin:0; flex-wrap:wrap; }
#giftMessageStatus{ margin:0; }
#giftMessageStatus:empty{ display:none; }
.sj-upload-progress{ display:grid; gap:6px; margin-top:14px; font-size:.7rem; color:#765b30; }
.sj-upload-progress progress{ width:100%; height:12px; accent-color:#a77c32; }
.sj-upload-progress progress::-webkit-progress-bar{ background:#ede2cf; border-radius:10px; }
.sj-upload-progress progress::-webkit-progress-value{ background:linear-gradient(90deg,#c9a35e,#947028); border-radius:10px; }
.sj-upload-progress progress::-moz-progress-bar{ background:#a77c32; border-radius:10px; }
#sjPick:disabled,#sjClear:disabled,.sj-thumb-x:disabled{ opacity:.55; cursor:wait; }

.gifts-title{
  font-family:var(--serif, Georgia, serif);
  font-size:clamp(2.6rem, 12vw, 3.6rem);
  font-style:italic;
  letter-spacing:.02em;
  text-align:center;
  color:#8a6a1e;
  margin:.2em 0 .1em;
}
.gifts-heading{
  margin:26px 0 10px;
  text-align:center;
  font-size:.74rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#9a7b45;
}
.gift-funds{ display:grid; gap:12px; }
@media (min-width:640px){ .gift-funds{ grid-template-columns:repeat(3,1fr); } }
.gift-fund{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  padding:22px 16px 18px;
  border:1px solid rgba(178,134,54,.3);
  border-radius:16px;
  background:rgba(253,249,241,.9);
  box-shadow:0 6px 18px rgba(112,78,26,.08);
  cursor:pointer;
  text-align:center;
  font:inherit;
  color:inherit;
  transition:border-color .2s ease, box-shadow .2s ease, transform .15s ease;
}
.gift-fund:hover{ transform:translateY(-2px); }
.gift-fund.is-on{
  border-color:rgba(196,148,44,.85);
  box-shadow:0 10px 26px rgba(196,148,44,.28);
}
.gift-fund-label{ font-family:var(--serif, Georgia, serif); font-size:1.22rem; color:#6d4d17; }
.gift-fund-desc{ font-size:.78rem; line-height:1.45; color:#7a6a52; }
.gift-radio{
  width:18px; height:18px; margin-top:2px;
  border:2px solid rgba(140,105,30,.5); border-radius:50%;
  background:transparent;
}
.gift-fund.is-on .gift-radio{ background:#b8860b; border-color:#b8860b; box-shadow:inset 0 0 0 3px #fdf9f1; }

.gift-amounts{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
.gift-amount{
  min-width:72px; padding:12px 16px;
  border:1px solid rgba(178,134,54,.3);
  border-radius:10px;
  background:rgba(253,249,241,.9);
  font:inherit; font-weight:600; color:#6d4d17;
  cursor:pointer;
  transition:background .18s ease, color .18s ease, border-color .18s ease;
}
.gift-amount.is-on{ background:#a97c1d; border-color:#a97c1d; color:#fff8e7; }
.gift-other{ margin-top:12px; }
.gift-other input{
  width:100%; padding:12px 14px; text-align:center;
  border:1px solid rgba(178,134,54,.35); border-radius:10px;
  background:rgba(253,249,241,.9); font:inherit; color:inherit;
}

.gift-providers{ display:grid; gap:10px; }
@media (min-width:520px){ .gift-providers{ grid-template-columns:repeat(3,1fr); } }
.gift-provider{
  display:flex; align-items:center; gap:10px;
  padding:12px 14px;
  border:1px solid rgba(178,134,54,.3);
  border-radius:12px;
  background:rgba(253,249,241,.9);
  font:inherit; font-size:.86rem; color:#6d4d17;
  cursor:pointer; text-align:left;
}
.gift-provider.is-on{ border-color:rgba(196,148,44,.9); background:rgba(240,225,190,.55); }
.gift-provider-short{
  flex:0 0 auto;
  width:34px; height:34px; border-radius:8px;
  display:grid; place-items:center;
  font-size:.56rem; font-weight:700; letter-spacing:.02em;
  color:#fff; background:#8a6a1e;
}

.gift-momo{
  margin-top:14px; padding:16px;
  border:1px solid rgba(178,134,54,.3);
  border-radius:14px;
  background:rgba(253,249,241,.9);
}
.gift-momo-row{ display:grid; gap:14px; }
@media (min-width:620px){ .gift-momo-row{ grid-template-columns:1fr 1fr; } }
.gift-field{ display:flex; flex-direction:column; gap:6px; }
.gift-field > span:first-child{ font-size:.72rem; letter-spacing:.04em; color:#8a7a60; }
.gift-input-wrap{ position:relative; display:flex; }
.gift-input-wrap input{
  width:100%; padding:12px 44px 12px 14px;
  border:1px solid rgba(178,134,54,.35); border-radius:10px;
  background:#fffdf8; font:inherit; color:inherit;
}
.gift-paste{
  position:absolute; right:6px; top:50%; transform:translateY(-50%);
  width:32px; height:32px; border:0; border-radius:8px;
  background:rgba(178,134,54,.12); color:#8a6a1e;
  cursor:pointer; font-size:.9rem;
}
.gift-paste.is-ok{ background:rgba(80,150,80,.25); }
.gift-pay-btn{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  margin-top:16px; padding:15px 18px;
  border-radius:12px;
  background:linear-gradient(135deg,#c49a3f,#a87f2c);
  color:#fff8e7; text-decoration:none;
  font-weight:600; font-size:.95rem;
  box-shadow:0 8px 20px rgba(90,60,10,.25);
}

.gift-confirm{
  margin-top:20px; padding:14px 16px;
  border:1px solid rgba(178,134,54,.3);
  border-radius:14px;
  background:rgba(253,249,241,.9);
}
.gift-confirm summary{
  cursor:pointer; font-size:.88rem; color:#6d4d17; line-height:1.5;
}
.gift-confirm form{ margin-top:14px; display:grid; gap:6px; }
.gift-confirm input, .gift-confirm textarea{
  width:100%; padding:11px 13px;
  border:1px solid rgba(178,134,54,.35); border-radius:10px;
  background:#fffdf8; font:inherit; color:inherit;
}
#giftStatus{ display:block; min-height:1.2em; font-size:.78rem; color:#8a6a1e; }

.gift-list{ display:grid; gap:10px; }
.gift-item{
  display:flex; align-items:center; gap:12px;
  padding:12px 14px;
  border:1px solid rgba(178,134,54,.22);
  border-radius:12px;
  background:rgba(253,249,241,.85);
}
.gift-avatar{
  flex:0 0 auto; width:40px; height:40px; border-radius:50%;
  display:grid; place-items:center;
  background:rgba(178,134,54,.18); color:#8a6a1e; font-weight:700;
}
.gift-item-body{ flex:1; min-width:0; }
.gift-item-body p{ margin:0; font-size:.94rem; color:#4a3a22; }
.gift-item-body small{ display:block; font-size:.76rem; color:#8a7a60; }
.gift-msg{ color:#a97c1d !important; }
.gift-item time{ flex:0 0 auto; font-size:.7rem; color:#9a8a6a; white-space:nowrap; }/* ---------- Admin dashboard: separated stat groups ---------- */
.stats-group-label{
  margin:22px 0 10px;
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#9a7b45;
  text-align:center;
}
.admin-stats{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; }
@media (min-width:520px){ .admin-stats{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:820px){ .admin-stats{ grid-template-columns:repeat(6,1fr); } }

.admin-stats--content .admin-stat{ background:rgba(240,228,196,.35); }
.admin-stat-note{ display:block; margin-top:2px; font-size:.62rem; color:#9a8a6a; line-height:1.3; }
.admin-stat-num--good{ color:#4f7a3a; }
.admin-stat-num--gold{ color:#a97c1d; }

/* ---------- Menu group labels + count badges ---------- */
.menu-group-label{
  margin:16px 0 6px;
  padding:0 4px;
  font-size:.66rem;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:#a08e68;
}
.menu-group-label:first-child{ margin-top:4px; }
.menu-badge{
  display:inline-block;
  margin-left:6px;
  min-width:20px;
  padding:1px 7px;
  border-radius:999px;
  background:rgba(140,105,30,.16);
  color:#7a5c18;
  font-size:.68rem;
  font-weight:700;
  vertical-align:middle;
  text-align:center;
}
.menu-badge:empty{ display:none; }

/* ---------- Guest & RSVP search ---------- */
.admin-search{ display:flex; gap:8px; margin:14px 0 8px; }
.admin-search input{
  flex:1; min-width:0;
  padding:12px 14px;
  border:1px solid rgba(178,134,54,.35);
  border-radius:10px;
  background:#fffdf8;
  font:inherit; color:inherit;
}
.admin-search input::-webkit-search-cancel-button{ cursor:pointer; }/* ---------- Guest & RSVP editor ---------- */
.gr-add-row{
  display:flex; gap:10px; margin:14px 0 4px;
}
.gr-add{ flex:1; }
.gr-form{
  margin:12px 0;
  padding:14px 15px;
  border:1px solid rgba(178,134,54,.34);
  border-radius:14px;
  background:rgba(253,249,241,.92);
  display:grid; gap:10px;
}
.gr-form-title{
  margin:0;
  font-size:.72rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:#9a7b45;
}
.gr-field{ display:flex; flex-direction:column; gap:5px; min-width:0; }
.gr-field > span{ font-size:.7rem; letter-spacing:.03em; color:#8a7a60; }
.gr-field input, .gr-field select, .gr-field textarea{
  width:100%; padding:11px 12px;
  border:1px solid rgba(178,134,54,.35);
  border-radius:10px;
  background:#fffdf8;
  font:inherit; color:inherit;
  min-width:0;
}
.gr-field-row{ display:grid; gap:10px; }
@media (min-width:520px){ .gr-field-row{ grid-template-columns:1fr 1fr; } }
.gr-form-status{ display:block; min-height:1.1em; font-size:.76rem; color:#8a6a1e; }
.aq-neutral{
  padding:9px 14px;
  border:0; border-radius:999px;
  background:rgba(178,134,54,.16);
  color:#7a5c18;
  font:inherit; font-size:.74rem; font-weight:700;
  cursor:pointer;
}
.aq-neutral:disabled{ opacity:.5; }/* ---------- Admin-only Gift Funds & MoMo sections ---------- */
.admin-only{
  margin-top:28px;
  padding-top:22px;
  border-top:1px solid rgba(178,134,54,.2);
}
.admin-only h2{ margin-bottom:4px; }
.admin-only .page-sub{ margin-bottom:16px; }

.gf-list{ display:grid; gap:10px; margin-top:14px; }
.gf-row{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:12px 14px;
  border:1px solid rgba(178,134,54,.25);
  border-radius:10px;
  background:rgba(253,249,241,.8);
}
.gf-info b{ color:#6d4d17; }
.gf-info code{
  font-size:.7rem;
  background:rgba(178,134,54,.12);
  padding:2px 6px; border-radius:4px;
  color:#8a6a1e;
}
.gf-info small{ display:block; margin-top:4px; color:#9a8a6a; font-size:.75rem; }
.gf-actions{ display:flex; gap:8px; flex-shrink:0; }

.gr-hint{
  display:block; margin-top:4px;
  font-size:.65rem; color:#9a8a6a;
}
#giftFundEditor, #momoSettingsEditor{
  margin-top:14px;
  padding:14px;
  border:1px solid rgba(178,134,54,.3);
  border-radius:12px;
  background:rgba(253,249,241,.9);
  display:grid; gap:10px;
}

/* read-only MoMo fields for non-admins */
input[readOnly]{ background:rgba(240,228,196,.5) !important; }
.hidden{ display:none !important; }
.sj-order-controls{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0;}
.sj-order-controls .mem-del{font-size:12px;padding:8px 10px;min-height:40px;margin:0;}
.sj-order-controls button:disabled{opacity:.4;cursor:default;}
