/* ============================================================
   SARS · Liquid Glass UI
   ============================================================ */
:root{
  --bg-0:#070b16;
  --bg-1:#0b1220;
  --glass: rgba(255,255,255,.08);
  --glass-strong: rgba(255,255,255,.14);
  --glass-soft: rgba(255,255,255,.05);
  --stroke: rgba(255,255,255,.18);
  --stroke-soft: rgba(255,255,255,.10);
  --txt:#eaf0ff;
  --txt-dim:#9fb0d4;
  --accent:#5b8cff;
  --accent-2:#9b6bff;
  --good:#39d98a;
  --warn:#ffcc66;
  --bad:#ff6b81;
  --radius:20px;
  --radius-sm:14px;
  --shadow:0 18px 50px rgba(0,0,0,.45);
  --blur: blur(22px) saturate(160%);
  font-synthesis:none;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  color:var(--txt);
  background:var(--bg-0);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* ---------- Fondo aurora animado ---------- */
.bg-aurora{
  position:fixed; inset:-20%; z-index:-2;
  background:
    radial-gradient(40% 50% at 15% 20%, rgba(91,140,255,.45), transparent 60%),
    radial-gradient(45% 55% at 85% 15%, rgba(155,107,255,.40), transparent 60%),
    radial-gradient(50% 60% at 75% 90%, rgba(57,217,138,.28), transparent 60%),
    radial-gradient(45% 55% at 20% 85%, rgba(255,107,129,.28), transparent 62%);
  filter:blur(40px);
  animation:drift 22s ease-in-out infinite alternate;
}
body::before{
  content:""; position:fixed; inset:0; z-index:-1;
  background:linear-gradient(160deg,var(--bg-0),var(--bg-1));
  opacity:.72;
}
@keyframes drift{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(2%,-2%,0) scale(1.06)}
  100%{transform:translate3d(-2%,2%,0) scale(1.03)}
}

/* ---------- Cristal ---------- */
.glass{
  background:var(--glass);
  -webkit-backdrop-filter:var(--blur);
  backdrop-filter:var(--blur);
  border:1px solid var(--stroke);
  box-shadow:var(--shadow);
}
.glass-soft{
  background:var(--glass-soft);
  -webkit-backdrop-filter:blur(12px) saturate(140%);
  backdrop-filter:blur(12px) saturate(140%);
  border:1px solid var(--stroke-soft);
}

/* ============================================================
   AUTH (login / registro)
   ============================================================ */
.auth-wrap{
  min-height:100dvh; display:grid; place-items:center; padding:24px;
}
.auth-card{
  width:100%; max-width:420px; border-radius:28px; padding:38px 32px;
  position:relative; overflow:hidden;
}
.auth-card::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:linear-gradient(120deg,rgba(255,255,255,.20),transparent 40%);
  mix-blend-mode:overlay;
}
.auth-logo{
  width:66px;height:66px;border-radius:20px;display:grid;place-items:center;
  margin:0 auto 14px; font-size:30px; font-weight:800; color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  box-shadow:0 10px 30px rgba(91,140,255,.5);
}
.auth-card h1{margin:.2em 0 .1em;text-align:center;font-size:1.7rem;letter-spacing:.5px}
.auth-card .sub{text-align:center;color:var(--txt-dim);margin:0 0 22px;font-size:.92rem}

/* ============================================================
   FORM
   ============================================================ */
.field{margin-bottom:16px}
.field label{display:block;font-size:.82rem;color:var(--txt-dim);margin-bottom:6px}
input,select,textarea{
  width:100%; padding:13px 14px; border-radius:var(--radius-sm);
  background:rgba(255,255,255,.06); border:1px solid var(--stroke-soft);
  color:var(--txt); font-size:1rem; outline:none; transition:.2s;
}
input::placeholder{color:rgba(159,176,212,.6)}
input:focus,select:focus,textarea:focus{
  border-color:var(--accent); background:rgba(91,140,255,.10);
  box-shadow:0 0 0 4px rgba(91,140,255,.18);
}
select option{color:#000}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:100%; padding:13px 18px; border:none; border-radius:var(--radius-sm);
  font-size:1rem;font-weight:600;cursor:pointer;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  box-shadow:0 10px 26px rgba(91,140,255,.42); transition:.18s;
}
.btn:hover{transform:translateY(-2px);box-shadow:0 14px 32px rgba(91,140,255,.55)}
.btn:active{transform:translateY(0)}
.btn-lg{padding:16px;font-size:1.05rem}
.btn-ghost{
  background:transparent;border:1px solid var(--stroke);color:var(--txt);
  width:auto;padding:9px 12px;border-radius:12px;text-decoration:none;
  display:inline-flex;align-items:center;cursor:pointer;transition:.18s;
}
.btn-ghost:hover{background:var(--glass-strong)}
.btn-sec{background:rgba(255,255,255,.10);box-shadow:none;border:1px solid var(--stroke)}
.btn-sec:hover{box-shadow:none;background:var(--glass-strong)}
.btn-danger{background:linear-gradient(135deg,#ff6b81,#c0392b);box-shadow:0 10px 26px rgba(255,107,129,.4)}
.btn-good{background:linear-gradient(135deg,#39d98a,#1f9e63);box-shadow:0 10px 26px rgba(57,217,138,.4)}
.btn-row{display:flex;gap:10px}
.btn-row .btn{width:auto;flex:1}

.alt-link{text-align:center;margin-top:18px;color:var(--txt-dim);font-size:.9rem}
.alt-link a{color:var(--accent);text-decoration:none;font-weight:600}

.flash{padding:12px 14px;border-radius:12px;margin-bottom:16px;font-size:.92rem;border:1px solid}
.flash.error{background:rgba(255,107,129,.12);border-color:rgba(255,107,129,.4);color:#ffd0d8}
.flash.ok{background:rgba(57,217,138,.12);border-color:rgba(57,217,138,.4);color:#c6f7df}
.flash.info{background:rgba(91,140,255,.12);border-color:rgba(91,140,255,.4);color:#d6e2ff}

/* ============================================================
   APP SHELL
   ============================================================ */
.app{display:block}
.topbar{
  position:fixed;top:0;left:0;right:0;height:64px;z-index:40;
  display:flex;align-items:center;gap:12px;padding:0 16px;border-radius:0;
  border-left:none;border-right:none;border-top:none;
}
.hamburger{display:none;background:none;border:none;color:var(--txt);font-size:1.4rem;cursor:pointer}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--txt)}
.brand-mark{
  width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:800;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));box-shadow:0 6px 18px rgba(91,140,255,.5);
}
.brand-text{display:flex;flex-direction:column;line-height:1.05}
.brand-text small{color:var(--txt-dim);font-size:.72rem}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.user-chip{display:flex;flex-direction:column;line-height:1.1;padding:7px 14px;border-radius:14px;position:relative;padding-left:26px}
.user-chip .uc-role{color:var(--txt-dim);font-size:.7rem}
.role-dot{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:9px;height:9px;border-radius:50%}
.role-admin{background:var(--accent-2);box-shadow:0 0 10px var(--accent-2)}
.role-cajero{background:var(--good);box-shadow:0 0 10px var(--good)}

.sidebar{
  position:fixed;top:64px;bottom:0;left:0;width:248px;z-index:35;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:18px 14px;border-radius:0;border-top:none;border-left:none;border-bottom:none;
}
.sidebar nav{display:flex;flex-direction:column;gap:5px}
.nav-link{
  display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:14px;
  text-decoration:none;color:var(--txt-dim);font-weight:500;transition:.16s;border:1px solid transparent;
}
.nav-link:hover{background:var(--glass-soft);color:var(--txt)}
.nav-link.active{
  background:linear-gradient(120deg,rgba(91,140,255,.22),rgba(155,107,255,.18));
  color:#fff;border-color:var(--stroke);
}
.nav-ic{width:24px;text-align:center;font-size:1.05rem}
.sidebar-foot{color:var(--txt-dim);text-align:center;font-size:.75rem}

.scrim{display:none}
.content{margin-left:248px;padding:88px 28px 40px;min-height:100dvh;max-width:1200px}

/* ============================================================
   CARDS / GRID
   ============================================================ */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.page-head h1{margin:0;font-size:1.6rem}
.page-head p{margin:4px 0 0;color:var(--txt-dim)}

.grid{display:grid;gap:18px}
.grid.cols-2{grid-template-columns:repeat(2,1fr)}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-4{grid-template-columns:repeat(4,1fr)}

.card{border-radius:var(--radius);padding:22px}
.card h2,.card h3{margin-top:0}
.card-pad{padding:22px}

.stat{position:relative;overflow:hidden}
.stat .stat-ic{position:absolute;right:16px;top:14px;font-size:1.6rem;opacity:.5}
.stat .stat-label{color:var(--txt-dim);font-size:.85rem;margin-bottom:6px}
.stat .stat-value{font-size:2rem;font-weight:800;letter-spacing:.5px}
.stat .stat-sub{color:var(--txt-dim);font-size:.8rem;margin-top:4px}
.stat.accent{background:linear-gradient(135deg,rgba(91,140,255,.25),rgba(155,107,255,.18))}
.stat.good{background:linear-gradient(135deg,rgba(57,217,138,.22),rgba(57,217,138,.08))}
.stat.warn{background:linear-gradient(135deg,rgba(255,204,102,.20),rgba(255,204,102,.06))}

/* ============================================================
   TABLES
   ============================================================ */
.table-wrap{overflow:auto;border-radius:var(--radius)}
table.tbl{width:100%;border-collapse:collapse;font-size:.92rem;min-width:520px}
table.tbl th,table.tbl td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--stroke-soft)}
table.tbl th{color:var(--txt-dim);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}
table.tbl tbody tr:hover{background:var(--glass-soft)}
table.tbl td.num,table.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}

.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.74rem;font-weight:600;border:1px solid}
.badge.open{background:rgba(255,204,102,.14);color:var(--warn);border-color:rgba(255,204,102,.4)}
.badge.paid{background:rgba(57,217,138,.14);color:var(--good);border-color:rgba(57,217,138,.4)}
.badge.pension{background:rgba(155,107,255,.14);color:#c7b3ff;border-color:rgba(155,107,255,.4)}
.badge.off{background:rgba(255,107,129,.14);color:var(--bad);border-color:rgba(255,107,129,.4)}

/* ============================================================
   COBRO / SCANNER
   ============================================================ */
.scan-box{display:flex;gap:12px;align-items:center}
.scan-box input{font-size:1.3rem;font-family:monospace;letter-spacing:3px;text-align:center}
.scan-hint{color:var(--txt-dim);font-size:.85rem;margin-top:10px;text-align:center}
.result-amount{font-size:3.2rem;font-weight:800;text-align:center;letter-spacing:1px;
  background:linear-gradient(135deg,var(--good),#7CF5C2);-webkit-background-clip:text;background-clip:text;color:transparent}
.result-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:18px 0}
.result-meta .rm{background:var(--glass-soft);border:1px solid var(--stroke-soft);border-radius:14px;padding:12px 14px}
.result-meta .rm small{color:var(--txt-dim);display:block;margin-bottom:3px}

/* ---------- Ticket / Pase impreso ---------- */
.print-ticket{background:#fff;color:#000;width:320px;margin:0 auto;border-radius:12px;padding:22px;text-align:center}
.print-ticket h2{margin:.2em 0;color:#000}
.print-ticket .pt-row{display:flex;justify-content:space-between;font-size:.85rem;margin:4px 0}
.print-ticket .pt-bc{margin:14px 0 6px}
.print-ticket small{color:#444}
.qr-holder{background:#fff;padding:14px;border-radius:14px;display:inline-block}

.spaced{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.muted{color:var(--txt-dim)}
.right{text-align:right}
.mt{margin-top:18px}.mt2{margin-top:28px}.mb{margin-bottom:18px}
.hr{height:1px;background:var(--stroke-soft);border:0;margin:18px 0}
.kpi-inline{display:flex;gap:8px;align-items:baseline}
.kpi-inline b{font-size:1.4rem}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1000px){
  .grid.cols-4{grid-template-columns:repeat(2,1fr)}
  .grid.cols-3{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:820px){
  .hamburger{display:block}
  .sidebar{transform:translateX(-100%);transition:transform .25s ease}
  body.nav-open .sidebar{transform:translateX(0)}
  body.nav-open .scrim{display:block;position:fixed;inset:64px 0 0 0;z-index:30;background:rgba(0,0,0,.45)}
  .content{margin-left:0;padding:84px 16px 36px}
  .user-chip .uc-name{display:none}
}
@media (max-width:560px){
  .grid.cols-4,.grid.cols-3,.grid.cols-2{grid-template-columns:1fr}
  .result-amount{font-size:2.6rem}
  .page-head h1{font-size:1.35rem}
}

/* ============================================================
   PRINT
   ============================================================ */
@media print{
  .topbar,.sidebar,.scrim,.bg-aurora,.no-print{display:none!important}
  body,body::before{background:#fff!important}
  .content{margin:0;padding:0}
  .print-ticket{box-shadow:none}
}
