/* Trayo · estilos compartidos (panel, acceso y app del conductor) */
:root{
  --bg-1:#070D18; --bg-2:#0E1A2C; --bg-3:#1B2A44;
  --glass:rgba(255,255,255,.06); --glass-2:rgba(255,255,255,.10); --glass-strong:rgba(18,26,42,.92);
  --line:rgba(255,255,255,.09); --line-2:rgba(255,255,255,.16);
  --fg:#F4F6FA; --fg-2:rgba(244,246,250,.80); --muted:rgba(244,246,250,.56);
  --primary:#5B93FF; --primary-2:#8CBBFF; --primary-soft:rgba(91,147,255,.16); --accent:#5EEAD4;
  --ok:#4ADE80; --warn:#FBBF24; --bad:#F87171; --violet:#A78BFA; --cyan:#22D3EE;
  --shadow:0 1px 1px rgba(0,0,0,.25),0 14px 34px -14px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.07);
  --font:'Geist',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'Geist Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --r:20px; --r-sm:12px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{
  font-family:var(--font); color:var(--fg); background:var(--bg-1);
  -webkit-font-smoothing:antialiased; font-size:15px; line-height:1.45;
}
/* fondo en su propia capa fija: no se vuelve a pintar al desplazar */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(1200px 700px at 85% -10%,#22355A 0%,transparent 60%),
    radial-gradient(900px 600px at -10% 110%,#103A44 0%,transparent 55%),
    linear-gradient(180deg,var(--bg-2),var(--bg-1))}
a{color:var(--primary-2)}
h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.02em}
h1{font-size:26px} h2{font-size:17px} h3{font-size:15px}
p{margin:0}
.muted{color:var(--muted)} .sm{font-size:13px} .xs{font-size:12px} .mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.hide{display:none!important}
.row{display:flex;gap:10px;align-items:center} .row.wrap{flex-wrap:wrap} .grow{flex:1;min-width:0}
.stack{display:grid;gap:12px}
.between{justify-content:space-between}

/* tarjetas de vidrio: un solo blur por capa para que no se trabe */
.card{background:var(--glass);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px}
.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}
.glass-blur{backdrop-filter:blur(22px) saturate(1.4);-webkit-backdrop-filter:blur(22px) saturate(1.4)}

/* botones */
.btn{appearance:none;border:1px solid var(--line-2);background:var(--glass-2);color:var(--fg);font:inherit;font-weight:550;
  padding:10px 16px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  transition:transform .15s ease,background .15s ease,opacity .15s;min-height:42px;text-decoration:none;white-space:nowrap}
.btn:hover{background:rgba(255,255,255,.15)} .btn:active{transform:scale(.97)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:linear-gradient(180deg,#6FA2FF,#4A80F0);border-color:rgba(255,255,255,.22);color:#fff;box-shadow:0 8px 24px -10px rgba(91,147,255,.8)}
.btn-primary:hover{background:linear-gradient(180deg,#80AEFF,#5A8CF5)}
.btn-ok{background:linear-gradient(180deg,#4ADE80,#22B35E);color:#062814;border-color:transparent}
.btn-bad{background:rgba(248,113,113,.14);border-color:rgba(248,113,113,.4);color:#FCA5A5}
.btn-ghost{background:transparent;border-color:transparent}
.btn-sm{min-height:34px;padding:6px 12px;font-size:13px}
.btn-lg{min-height:54px;font-size:16px;padding:14px 22px}
.btn-block{width:100%}

/* formularios */
label.f{display:grid;gap:6px;font-size:13px;color:var(--fg-2)}
.in,select.in,textarea.in{width:100%;font:inherit;color:var(--fg);background:rgba(0,0,0,.25);border:1px solid var(--line-2);border-radius:var(--r-sm);
  padding:11px 13px;outline:none;transition:border-color .15s,box-shadow .15s}
.in:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
select.in option{background:#111A2B}
textarea.in{min-height:76px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:640px){.grid2,.grid3{grid-template-columns:1fr}}
.seg{display:inline-flex;background:rgba(0,0,0,.25);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;color:var(--muted);font:inherit;font-weight:550;padding:7px 14px;border-radius:999px;cursor:pointer}
.seg button[aria-pressed=true]{background:var(--glass-2);color:var(--fg);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}

/* insignias */
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;
  background:color-mix(in srgb,var(--c,var(--primary)) 16%,transparent);color:color-mix(in srgb,var(--c,var(--primary)) 80%,white);
  border:1px solid color-mix(in srgb,var(--c,var(--primary)) 30%,transparent)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--c,var(--primary))}

/* tablas */
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-weight:550;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:11px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl-wrap{overflow-x:auto;margin:0 -6px}
.empty{padding:28px 10px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--fg);margin-bottom:4px;font-size:15px}

/* diálogos */
dialog{border:1px solid var(--line-2);border-radius:24px;background:var(--glass-strong);color:var(--fg);padding:0;width:min(560px,calc(100vw - 24px));
  box-shadow:0 40px 100px -20px rgba(0,0,0,.8);max-height:calc(100dvh - 24px)}
dialog::backdrop{background:rgba(3,7,14,.72)}
dialog[open]{animation:pop .22s cubic-bezier(.2,.9,.3,1.2)}
.dlg-h{display:flex;justify-content:space-between;align-items:center;padding:18px 20px 0}
.dlg-b{padding:16px 20px;display:grid;gap:12px;overflow:auto;max-height:calc(100dvh - 160px)}
.dlg-f{display:flex;gap:10px;justify-content:flex-end;padding:0 20px 18px;flex-wrap:wrap}
@keyframes pop{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}

/* avisos */
#toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:99;display:grid;gap:8px;width:min(440px,calc(100vw - 32px));pointer-events:none}
.toast{background:var(--glass-strong);border:1px solid var(--line-2);padding:12px 16px;border-radius:14px;box-shadow:var(--shadow);font-size:14px;animation:pop .2s}
.toast.err{border-color:rgba(248,113,113,.5)} .toast.ok{border-color:rgba(74,222,128,.45)}
.err-box{background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.35);color:#FECACA;padding:10px 12px;border-radius:12px;font-size:14px}
.ok-box{background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.35);color:#BBF7D0;padding:10px 12px;border-radius:12px;font-size:14px}

/* marca */
.brand{display:flex;align-items:center;gap:10px;font-weight:650;font-size:19px;letter-spacing:-.03em}
.brand-mark{width:34px;height:34px;border-radius:11px;background:linear-gradient(140deg,#7FB0FF,#4A7BEA 55%,#2DD4BF);display:grid;place-items:center;
  box-shadow:0 6px 18px -6px rgba(91,147,255,.9),inset 0 1px 0 rgba(255,255,255,.4)}
.brand-mark svg{width:19px;height:19px}

.spin{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.rise{animation:rise .45s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0)*45ms)}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.thumb{width:56px;height:56px;border-radius:10px;object-fit:cover;border:1px solid var(--line-2);cursor:zoom-in;background:#0b1220}
