:root{
  --app-primary:#7c3aed;
  --app-primary-dark:#5b21b6;
  --app-bg:#f6f7fb;
  --app-card:#ffffff;
  --app-text:#111827;
}
body{background:var(--app-bg);color:var(--app-text);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;}
.app-navbar{background:linear-gradient(135deg,#6d28d9,#db2777);box-shadow:0 6px 20px rgba(88,28,135,.18);}
.brand-dot{width:42px;height:42px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f59e0b,#ec4899);color:#fff;font-size:1.3rem;box-shadow:0 10px 25px rgba(219,39,119,.25);}
.page-title{font-weight:800;letter-spacing:-.03em;margin-bottom:.2rem;display:flex;gap:.65rem;align-items:center;}
.app-card{border:0;border-radius:1.35rem;overflow:hidden;}
.event-banner{border-radius:1.5rem;padding:1.5rem;display:flex;gap:1rem;justify-content:space-between;align-items:center;color:#fff;background:radial-gradient(circle at top left,#f59e0b,transparent 28%),linear-gradient(135deg,#7c3aed,#db2777);}
.metric-card{height:100%;background:#fff;border-radius:1.25rem;padding:1.15rem;border:1px solid rgba(17,24,39,.06);box-shadow:0 10px 30px rgba(17,24,39,.06);display:flex;flex-direction:column;gap:.25rem;}
.metric-card i{font-size:1.7rem;color:var(--app-primary);}
.metric-card span{color:#6b7280;font-size:.85rem;}
.metric-card strong{font-size:1.35rem;letter-spacing:-.03em;}
.metric-card.success i,.text-success-soft{color:#059669!important;}.metric-card.warning i{color:#d97706;}
.quick-card{display:flex;flex-direction:column;gap:.35rem;min-height:150px;text-decoration:none;color:#111827;background:#fff;border-radius:1.35rem;padding:1.4rem;border:1px solid rgba(17,24,39,.06);box-shadow:0 10px 30px rgba(17,24,39,.06);transition:.18s ease;}
.quick-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(17,24,39,.1);color:#111827;}
.quick-card i{font-size:2rem;color:var(--app-primary);}.quick-card span{font-weight:800;font-size:1.1rem;}.quick-card small{color:#6b7280;}
.btn-primary{--bs-btn-bg:var(--app-primary);--bs-btn-border-color:var(--app-primary);--bs-btn-hover-bg:var(--app-primary-dark);--bs-btn-hover-border-color:var(--app-primary-dark);}
.badge-soft{background:#ede9fe;color:#5b21b6;border-radius:999px;padding:.35rem .6rem;font-weight:700;}
.table thead th{color:#6b7280;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;}
.invitados-table .badge{max-width:100%;white-space:normal;text-align:left;}
.pagos-table .badge{max-width:100%;white-space:normal;text-align:left;}
.action-btn{border:0;background:#f3f4f6;width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;margin-left:.25rem;}
.action-btn:hover{background:#e5e7eb;}.action-btn.danger:hover{background:#fee2e2;color:#dc2626;}.action-btn.success:hover{background:#dcfce7;color:#16a34a;}
.global-loader{position:fixed;inset:0;background:rgba(255,255,255,.55);backdrop-filter:blur(3px);z-index:1090;display:flex;align-items:center;justify-content:center;}
.loader-card{background:#fff;border-radius:1rem;padding:1rem 1.25rem;display:flex;align-items:center;gap:.75rem;font-weight:700;}
.login-body{min-height:100vh;background:linear-gradient(135deg,#312e81,#7c3aed 45%,#ec4899);}
.login-wrapper{min-height:100vh;display:grid;grid-template-columns:1.15fr .85fr;}
.login-hero{color:#fff;padding:4rem;align-items:center;}.login-hero h1{font-size:3.5rem;line-height:1;font-weight:900;letter-spacing:-.06em;max-width:720px;}.login-hero p{font-size:1.25rem;color:rgba(255,255,255,.8);max-width:620px;}.brand-big{font-size:4rem;margin-bottom:2rem;}
.login-panel{margin:auto;width:min(440px,calc(100vw - 2rem));display:flex;flex-direction:column;gap:1rem;}
.login-card{background:#fff;width:100%;border-radius:2rem;padding:2rem;}
.login-register-cta{width:100%;border:1px solid rgba(255,255,255,.34);border-radius:1.35rem;background:rgba(255,255,255,.16);backdrop-filter:blur(8px);padding:1rem 1.2rem;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:.75rem;}
.login-register-cta span{color:rgba(255,255,255,.86);}
.login-register-cta a{color:#fff;font-weight:800;text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;white-space:nowrap;}
.login-register-cta a:hover{text-decoration:underline;}
.password-rules{display:grid;grid-template-columns:1fr 1fr;gap:.4rem .75rem;color:#6b7280;font-size:.86rem;}
.password-rules div{display:flex;align-items:center;gap:.35rem;}
.password-rules .is-valid{color:#059669;font-weight:700;}
.progress-thin{height:.55rem;border-radius:999px;overflow:hidden;background:#f3f4f6;}.progress-thin div{height:100%;background:linear-gradient(90deg,#7c3aed,#ec4899);}
@media(max-width:991px){.login-wrapper{grid-template-columns:1fr}.login-panel{margin:2rem auto}.event-banner{flex-direction:column;align-items:flex-start}.table{min-width:850px}}
@media(max-width:480px){.password-rules{grid-template-columns:1fr}.login-register-cta{align-items:flex-start;flex-direction:column}}
@media(max-width:767px){
  .invitados-card{border-radius:1.15rem;}
  .invitados-card .card-body{padding:1rem;}
  .invitados-toolbar .col-md-6{width:100%;}
  .invitados-toolbar .input-group{width:100%;}
  .invitados-table-responsive{overflow:visible;}
  .invitados-table{min-width:0!important;border-collapse:separate;border-spacing:0 .85rem;margin-bottom:0;}
  .invitados-table thead{display:none;}
  .invitados-table tbody{display:block;}
  .invitados-table tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.8rem 1rem;background:#fff;border:1px solid #e5e7eb;border-radius:1rem;padding:1rem;box-shadow:0 8px 22px rgba(17,24,39,.06);}
  .invitados-table td{display:flex;min-width:0;flex-direction:column;align-items:flex-start;border:0!important;padding:0!important;overflow-wrap:anywhere;}
  .invitados-table td::before{content:attr(data-label);margin-bottom:.25rem;color:#6b7280;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;}
  .invitados-table .invitado-cell-main{grid-column:1/-1;border-bottom:1px solid #eef0f4!important;padding-bottom:.75rem!important;}
  .invitados-table .invitado-cell-main::before,.invitados-table .invitado-cell-actions::before{display:none;}
  .invitados-table .invitado-cell-main strong{font-size:1.05rem;}
  .invitados-table .invitado-cell-actions{grid-column:1/-1;flex-direction:row;justify-content:flex-end;gap:.5rem;border-top:1px solid #eef0f4!important;padding-top:.75rem!important;}
  .invitados-table .invitado-cell-actions .action-btn{margin-left:0;}
  .invitados-table .invitado-empty-row{display:block;text-align:center;}
  .invitados-table .invitado-empty-row td{display:block;padding:1rem!important;}
  .invitados-table .invitado-empty-row td::before{display:none;}
  .pagos-card{border-radius:1.15rem;}
  .pagos-card .card-body{padding:1rem;}
  .pagos-table-responsive{overflow:visible;}
  .pagos-table{min-width:0!important;border-collapse:separate;border-spacing:0 .85rem;margin-bottom:0;}
  .pagos-table thead{display:none;}
  .pagos-table tbody{display:block;}
  .pagos-table tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.8rem 1rem;background:#fff;border:1px solid #e5e7eb;border-radius:1rem;padding:1rem;box-shadow:0 8px 22px rgba(17,24,39,.06);}
  .pagos-table td{display:flex;min-width:0;flex-direction:column;align-items:flex-start;border:0!important;padding:0!important;overflow-wrap:anywhere;}
  .pagos-table td::before{content:attr(data-label);margin-bottom:.25rem;color:#6b7280;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;}
  .pagos-table .pago-cell-main{grid-column:1/-1;border-bottom:1px solid #eef0f4!important;padding-bottom:.75rem!important;}
  .pagos-table .pago-cell-main::before,.pagos-table .pago-cell-actions::before{display:none;}
  .pagos-table .pago-cell-main strong{font-size:1.05rem;}
  .pagos-table .pago-cell-amount strong{font-size:1.05rem;color:#059669;}
  .pagos-table .pago-cell-actions{grid-column:1/-1;flex-direction:row;justify-content:flex-end;border-top:1px solid #eef0f4!important;padding-top:.75rem!important;}
  .pagos-table .pago-cell-actions .action-btn{margin-left:0;}
  .pagos-table .pago-empty-row{display:block;text-align:center;}
  .pagos-table .pago-empty-row td{display:block;padding:1rem!important;}
  .pagos-table .pago-empty-row td::before{display:none;}
}
