:root{--brand:#6d28d9;--brand-2:#4f46e5;--sb:#14122b;--bg:#f4f5fb}
body{background:var(--bg);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.login-bg{background:radial-gradient(1200px 600px at 10% 0%,#6d28d9 0%,transparent 60%),radial-gradient(900px 500px at 100% 100%,#4f46e5 0%,transparent 55%),#14122b}
.brand-icon{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;font-size:1.6rem;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-2))}
.btn-primary{--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:#5b21b6;--bs-btn-hover-border-color:#5b21b6;--bs-btn-active-bg:#4c1d95;--bs-btn-active-border-color:#4c1d95}
.btn-outline-primary{--bs-btn-color:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:var(--brand);--bs-btn-hover-border-color:var(--brand)}
.text-brand{color:var(--brand)}

/* layout admin */
.sidebar{width:260px;background:var(--sb);color:#cbd0e8;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;z-index:1040;transition:transform .2s}
.sidebar .brand{padding:1.1rem 1.25rem;display:flex;gap:.75rem;align-items:center;color:#fff;font-weight:700;text-decoration:none}
.sidebar .brand .brand-icon{width:38px;height:38px;font-size:1.1rem;border-radius:11px}
.sidebar .evt{margin:0 1rem 1rem;padding:.6rem .75rem;background:rgba(255,255,255,.07);border-radius:.75rem}
.sidebar .evt select{background:transparent;color:#fff;border:0;font-weight:600;padding:0;box-shadow:none}
.sidebar .evt option{color:#000}
.sidebar nav{overflow:auto;flex:1;padding:0 .75rem}
.sidebar .sec{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:#7c82a8;padding:1rem .75rem .35rem}
.sidebar a.nav-l{display:flex;align-items:center;gap:.7rem;padding:.55rem .75rem;border-radius:.65rem;color:#cbd0e8;text-decoration:none;font-size:.93rem;margin-bottom:2px}
.sidebar a.nav-l:hover{background:rgba(255,255,255,.07);color:#fff}
.sidebar a.nav-l.active{background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;box-shadow:0 6px 16px rgba(79,70,229,.35)}
.sidebar .foot{padding:1rem;border-top:1px solid rgba(255,255,255,.08);font-size:.85rem}
.main{margin-left:260px;min-height:100vh}
.topbar{display:none}
@media(max-width:991px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none}.main{margin-left:0}.topbar{display:flex}}

/* componentes */
.card{border:0;border-radius:1rem;box-shadow:0 1px 2px rgba(20,18,43,.05),0 8px 24px rgba(20,18,43,.04)}
.card-header{background:transparent;border-bottom:1px solid #eef0f6;font-weight:600}
.stat{display:flex;gap:.9rem;align-items:center}
.stat .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:1.3rem;flex:none}
.stat .lbl{font-size:.78rem;color:#6b7194;text-transform:uppercase;letter-spacing:.04em}
.stat .v{font-size:1.45rem;font-weight:700;line-height:1.1}
.ic-p{background:#ede9fe;color:#6d28d9}.ic-g{background:#dcfce7;color:#15803d}.ic-o{background:#ffedd5;color:#c2410c}.ic-b{background:#dbeafe;color:#1d4ed8}.ic-r{background:#fee2e2;color:#b91c1c}
.table>:not(caption)>*>*{padding:.7rem .75rem}
.table thead th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:#6b7194;border-bottom-width:1px;background:#fafbff}
.progress{height:.6rem;border-radius:1rem;background:#eceefa}
.progress-bar{background:linear-gradient(90deg,var(--brand),var(--brand-2))}
.page-title{font-weight:700;margin:0}
.badge-soft{font-weight:600;padding:.4em .7em;border-radius:2rem}
.bs-g{background:#dcfce7;color:#166534}.bs-o{background:#ffedd5;color:#9a3412}.bs-b{background:#dbeafe;color:#1e40af}.bs-x{background:#e5e7eb;color:#374151}.bs-r{background:#fee2e2;color:#991b1b}.bs-p{background:#ede9fe;color:#5b21b6}
.form-control,.form-select{border-radius:.65rem}
.modal-content{border:0;border-radius:1rem}

/* sitio público */
.hero{color:#fff;padding:5rem 0 4rem;background:linear-gradient(135deg,var(--ev),#111827 130%);background-size:cover;background-position:center;position:relative}
.hero .overlay{position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,0,0,.35),rgba(0,0,0,.65))}
.hero .container{position:relative}
.pub-card{border:0;border-radius:1rem;box-shadow:0 6px 24px rgba(0,0,0,.07)}
.tl-item{border-left:3px solid var(--ev);padding:.25rem 0 1.1rem 1rem;position:relative}
.tl-item:before{content:"";position:absolute;left:-8px;top:.45rem;width:13px;height:13px;border-radius:50%;background:var(--ev)}
.btn-ev{background:var(--ev);border-color:var(--ev);color:#fff}.btn-ev:hover{filter:brightness(.9);color:#fff}
@media print{.sidebar,.topbar,.no-print{display:none!important}.main{margin:0}}

/* ===== Móvil primero (panel) ===== */
.topbar{position:sticky;top:0;z-index:1030;box-shadow:0 2px 10px rgba(20,18,43,.06)}
.topbar .t-title{font-weight:700;font-size:1.05rem;line-height:1.15;min-width:0}
.topbar .t-title small{display:block;font-weight:500;color:#6b7194;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-backdrop{position:fixed;inset:0;background:rgba(10,8,30,.55);z-index:1035;opacity:0;pointer-events:none;transition:opacity .2s}
.sb-backdrop.on{opacity:1;pointer-events:auto}
.sidebar{z-index:1040;max-width:86vw}
.bottom-nav{display:none}
.main .container-fluid{max-width:100%}
.main h1,.main h2,.main h3,.main h4,.main h5{overflow-wrap:anywhere}
.main .d-flex.justify-content-between{flex-wrap:wrap;gap:.5rem}

@media (max-width:991.98px){
  .main{padding-bottom:84px}
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:1030;background:#fff;border-top:1px solid #e6e8f2;box-shadow:0 -4px 18px rgba(20,18,43,.08);padding:.3rem .25rem calc(.3rem + env(safe-area-inset-bottom))}
  .bottom-nav a,.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:.35rem .1rem;border:0;background:none;color:#6b7194;text-decoration:none;font-size:.68rem;font-weight:600;border-radius:.7rem;min-width:0}
  .bottom-nav i{font-size:1.35rem;line-height:1}
  .bottom-nav .on{color:var(--brand);background:#f1ecff}
  .bottom-nav span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
@media (max-width:767.98px){
  html{-webkit-text-size-adjust:100%}
  .form-control,.form-select{font-size:16px;min-height:44px}   /* 16px evita el zoom automático en iPhone */
  .btn{min-height:42px}.btn-sm{min-height:38px;padding-left:.7rem;padding-right:.7rem}
  .main .container-fluid{padding:.85rem!important}
  .page-title{font-size:1.45rem}
  .modal-footer .btn{flex:1}
  .stat .v{font-size:1.3rem}
}

/* Tablas → tarjetas en pantallas angostas (sin scroll horizontal). Al imprimir/PDF se mantienen como tabla. */
@media screen and (max-width:767.98px){
  .table-responsive{overflow:visible}
  table.table:not(.no-cards){display:block;width:100%;border:0}
  table.table:not(.no-cards) thead{display:none}
  table.table:not(.no-cards) tbody{display:block}
  table.table:not(.no-cards) tr{display:block;margin:.6rem .6rem;padding:.35rem .85rem;background:#fff;border:1px solid #eceefa;border-radius:.9rem;box-shadow:0 1px 3px rgba(20,18,43,.05)}
  table.table:not(.no-cards) td{display:flex;justify-content:space-between;align-items:center;gap:.9rem;width:auto;padding:.42rem 0!important;border:0;border-bottom:1px dashed #eef0f6;text-align:right;overflow-wrap:anywhere}
  table.table:not(.no-cards) td:last-child{border-bottom:0}
  table.table:not(.no-cards) td:before{content:attr(data-label);flex:none;max-width:42%;text-align:left;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#6b7194}
  table.table:not(.no-cards) td[data-label=""]:before,table.table:not(.no-cards) td:first-child:before{display:none}
  table.table:not(.no-cards) td:first-child{display:block;font-weight:700;font-size:1.02rem;text-align:left;padding-top:.6rem!important}
  table.table:not(.no-cards) td[colspan]{justify-content:center;text-align:center;color:#6b7194;font-weight:400;font-size:.95rem}
  table.table:not(.no-cards) td:empty{display:none}
  table.table:not(.no-cards) td .btn,table.table:not(.no-cards) td form{margin:0}
  table.table:not(.no-cards) td:has(.btn):not(:first-child){justify-content:flex-end;flex-wrap:wrap}
  table.table:not(.no-cards) tfoot{display:block}
}
@media (max-width:767.98px){.row>[class*="col"]>.card:not(.h-100){height:100%}}
.brand-icon img{width:100%;height:100%;border-radius:inherit;object-fit:cover;display:block}

/* Sugerencia para instalar la webapp (dentro del panel) */
.inst-banner{position:fixed;z-index:1032;left:.6rem;right:.6rem;bottom:calc(76px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:.7rem;padding:.65rem .8rem;background:#fff;border:1px solid #e6e8f2;border-radius:1rem;box-shadow:0 10px 30px rgba(20,18,43,.22);line-height:1.2}
.inst-banner[hidden]{display:none}
.inst-banner img{border-radius:12px;flex:none}
@media (min-width:992px){.inst-banner{left:auto;right:1.2rem;bottom:1.2rem;max-width:420px}}
