/* =========================
   Base / Tokens
   ========================= */
[hidden]{ display:none !important; }

:root{
  --bg:#070a10;
  --text:#f5f2ee;
  --muted: rgba(245,242,238,.72);
  --muted2: rgba(245,242,238,.62);
  --line: rgba(255,255,255,.12);

  --brand:#ffb3c7;
  --brand2:#f7e7b4;

  --shadow: 0 18px 50px rgba(0,0,0,.45);
  --radius: 22px;
}

*{ box-sizing: border-box; }

html, body{
  width:100%;
  overflow-x:hidden !important;
}

body{
  margin:0;
  color: var(--text);
  background:
    radial-gradient(1200px 700px at 15% 0%, rgba(255,179,199,.20), transparent 60%),
    radial-gradient(1100px 650px at 85% 10%, rgba(247,231,180,.16), transparent 55%),
    radial-gradient(900px 600px at 50% 100%, rgba(58,160,255,.10), transparent 60%),
    linear-gradient(180deg, #070a10 0%, #06070b 100%);
  position: relative;
  -webkit-text-size-adjust: 100%;
}

/* conteúdo acima do ruído */
.navbar, main, footer{ position: relative; z-index: 1; }

/* Mobile: menos gradientes (evita faixas) */
@media (max-width: 992px){
  body{
    background:
      radial-gradient(980px 560px at 16% 0%, rgba(255,179,199,.18), transparent 62%),
      radial-gradient(920px 540px at 84% 12%, rgba(247,231,180,.14), transparent 60%),
      linear-gradient(180deg, #070a10 0%, #06070b 100%);
  }
}

/* Ruído / banding */
body::after{
  content:"";
  position: fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  opacity:.10;
  mix-blend-mode: soft-light;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  background-size:260px 260px;
}
body::before{
  content:"";
  position: fixed;
  left:0; bottom:0;
  width:100vw;
  height:55vh;
  pointer-events:none;
  z-index:0;
  opacity:.14;
  mix-blend-mode: overlay;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n2'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.05' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n2)' opacity='.55'/%3E%3C/svg%3E");
  background-size:220px 220px;
}

/* =========================
   Tipografia / Links
   ========================= */
a{
  color: rgba(255,255,255,.92);
  text-decoration: none;
}
a:hover{ color: rgba(255,255,255,.98); }

/* =========================
   Bootstrap (dark): compatibilidade
   ========================= */
body, .container, main{ color: var(--text) !important; }

.text-muted,
.text-secondary,
.text-body-secondary,
.text-body-tertiary,
.form-text,
small{
  color: var(--muted) !important;
}

/* hr / borders */
.border, .border-bottom, .border-top, .border-start, .border-end{
  border-color: rgba(255,255,255,.12) !important;
}
.border-white-10{ border-color: rgba(255,255,255,.10) !important; }

.bg-white-05{ background: rgba(255,255,255,.05) !important; }

/* =========================
   Navbar / vidro
   ========================= */
.glass-nav{
  background: rgba(7,10,16,.72) !important;
  backdrop-filter: blur(12px);
}

/* badge */
.brand-badge{
  width:42px; height:42px;
  display:grid; place-items:center;
  border-radius:14px;
  background: linear-gradient(135deg, rgba(255,179,199,.30), rgba(247,231,180,.20));
  border:1px solid rgba(255,255,255,.14);
  box-shadow: 0 10px 28px rgba(0,0,0,.30);
  font-size:20px;
}

/* nav pill */
.nav-pill{
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.04);
  border-radius:999px;
  padding:.45rem .75rem !important;
  transition: transform .12s ease, background .12s ease, border-color .12s ease;
  color: rgba(255,255,255,.92) !important;
}
.nav-pill:hover{ transform: translateY(-1px); }
.nav-pill.is-active{
  border-color: rgba(255,179,199,.55);
  background: linear-gradient(135deg, rgba(255,179,199,.18), rgba(247,231,180,.10));
}

/* =========================
   Cards / componentes
   ========================= */
.card-glass{
  border-radius: var(--radius);
  border:1px solid rgba(255,255,255,.10);
  background: rgba(255,255,255,.07);
  box-shadow: var(--shadow);
}

.kpi-box{
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
  border-radius:16px;
  text-align:center;
  padding:12px 10px;
}
.kpi{
  font-weight:900;
  letter-spacing:.4px;
  font-size:22px;
  color: rgba(255,255,255,.96);
}
.kpi-label{
  font-size:12px;
  color: var(--muted2);
}

.mini-card{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05);
}
.mini-ico{
  width:38px; height:38px;
  border-radius:14px;
  display:grid; place-items:center;
  background: rgba(255,255,255,.05);
  border:1px solid rgba(255,255,255,.12);
}

.photo-card{
  border-radius: calc(var(--radius) + 4px);
  overflow:hidden;
  border:1px solid rgba(255,255,255,.14);
  background: rgba(0,0,0,.18);
  position: relative;
  min-height:280px;
}
.photo-img{
  width:100%;
  height:100%;
  min-height:280px;
  object-fit:cover;
  display:block;
}
.photo-overlay{
  position:absolute;
  left:12px; right:12px; bottom:12px;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(0,0,0,.40);
  backdrop-filter: blur(10px);
}

.info-card{
  border:1px solid rgba(255,255,255,.12);
  border-radius:18px;
  padding:14px;
  background: rgba(255,255,255,.05);
}

/* =========================
   Botões
   ========================= */
.btn-brand{
  border: 1px solid rgba(255,179,199,.55) !important;
  color: rgba(255,255,255,.95) !important;
  background: linear-gradient(135deg, rgba(255,179,199,.22), rgba(247,231,180,.10)) !important;
}
.btn-brand:hover{ filter: brightness(1.06); }

/* =========================
   Forms (glass)
   ========================= */
.form-control-glass,
.form-control,
.form-select,
textarea{
  border-radius:14px !important;
  border:1px solid rgba(255,255,255,.14) !important;
  background: rgba(0,0,0,.28) !important;
  color: rgba(255,255,255,.95) !important;
}
.form-control::placeholder,
textarea::placeholder{
  color: rgba(255,255,255,.58) !important;
  opacity: 1 !important;
}
select option{
  color:#111 !important;
}
.form-control:focus,
.form-select:focus,
textarea:focus{
  box-shadow:none !important;
  border-color: rgba(255,179,199,.55) !important;
}

/* =========================
   RSVP
   ========================= */
.rsvp-item{
  border:1px solid rgba(255,255,255,.12);
  border-radius:16px;
  background: rgba(255,255,255,.05);
  padding:12px 14px;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.badge-pill{
  border-radius:999px;
  padding:6px 10px;
  border:1px solid rgba(255,255,255,.14);
  font-size:12px;
  white-space:nowrap;
  color: rgba(255,255,255,.92);
}
.badge-ok{
  border-color: rgba(255,179,199,.55);
  background: rgba(255,179,199,.10);
}
.badge-no{
  border-color: rgba(255,107,107,.55);
  background: rgba(255,107,107,.10);
}
.rsvp-meta{
  color: var(--muted2);
  font-size:12px;
  margin-top:3px;
}

/* =========================
   Gifts
   ========================= */
.gift-card{
  height:100%;
  border:1px solid rgba(255,255,255,.12);
  border-radius:18px;
  background: rgba(255,255,255,.05);
  padding:14px;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.gift-title{ font-weight:800; color: rgba(255,255,255,.95); }
.gift-price{ font-weight:900; color: rgba(247,231,180,.95); font-size:18px; }
.gift-actions{ display:flex; gap:10px; flex-wrap:wrap; }

/* =========================
   Galeria (thumb cards)
   ========================= */
.thumb-card{
  display:block;
  text-decoration:none;
  color:#fff;
  border:1px solid rgba(255,255,255,.1);
  border-radius:14px;
  overflow:hidden;
  background:#000;
}
.thumb-card img{
  width:100%;
  aspect-ratio:1/1;
  object-fit:cover;
  display:block;
}
.thumb-meta{ padding:10px; }

/* =========================
   FIX FINAL (mínimo) — Bootstrap dark tokens + textos escuros
   Cola isto SEM exageros para não rebentar layout
   ========================= */
:root,
[data-bs-theme="dark"]{
  --bs-body-bg: var(--bg);
  --bs-body-color: rgba(245,242,238,.96);
  --bs-secondary-color: rgba(245,242,238,.72);
  --bs-tertiary-color: rgba(245,242,238,.62);
  --bs-emphasis-color: rgba(255,255,255,.98);
  --bs-border-color: rgba(255,255,255,.12);
  --bs-link-color: rgba(255,255,255,.92);
  --bs-link-hover-color: rgba(255,255,255,.98);
}

/* garante legibilidade se alguma coisa vier “dark” */
.text-dark, .link-dark, .text-black, .text-black-50{
  color: rgba(245,242,238,.92) !important;
}