:root{
  --navy:#0F1F4F; --blue:#1E3A8A; --orange:#F08C2C; --ink:#111827; --muted:#6B7280;
  --bg:#F3F5F9; --card:#FFFFFF; --line:#E5E7EB; --ok:#15803D; --ok-bg:#DCFCE7; --warn:#B45309; --warn-bg:#FEF3C7;
  --danger:#B91C1C; --danger-bg:#FEE2E2; --info:#1D4ED8; --info-bg:#DBEAFE; --hl:#FFF7E6;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;padding:0}
body{font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:24px;margin:0 0 4px;letter-spacing:-.01em}h2{font-size:16px;margin:0 0 10px;color:var(--navy)}h3{font-size:17px;margin:0 0 6px;color:var(--navy)}
h3 small{display:block;font-weight:400;font-size:13px}
code{background:#EEF1F7;padding:1px 5px;border-radius:4px;font-size:.92em}
.wrap{max-width:1180px;margin:0 auto;padding-inline:16px}
.main{padding-block:18px 30px}
.muted{color:var(--muted)}.small{font-size:13px}.r{text-align:right}.nowrap{white-space:nowrap}.mt{margin-top:10px}
.upper{text-transform:uppercase}.upper::placeholder{text-transform:none}

/* header */
.top{background:var(--navy);color:#fff;padding-bottom:12px}
.top-in{display:flex;align-items:center;gap:18px;padding-block:10px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:800;letter-spacing:-.02em}
.brand:hover{text-decoration:none}
.brand-mark{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:9px;background:var(--orange);color:var(--navy);font-weight:900;font-size:14px}
.brand-txt{line-height:1.05;font-size:15px}.brand-txt small{display:block;font-weight:500;font-size:11px;opacity:.75}
.brand-big{color:var(--navy);margin-bottom:18px}.brand-big .brand-txt{font-size:18px}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav a{color:#fff;opacity:.8;padding:7px 11px;border-radius:7px;font-weight:600;font-size:14px}
.nav a.on,.nav a:hover{opacity:1;background:rgba(255,255,255,.12);text-decoration:none}
.who{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:13px}
.who-name{opacity:.9}
.search{display:flex;gap:8px}
.search input{flex:1;min-width:0;padding:11px 14px;border-radius:9px;border:1px solid rgba(255,255,255,.2);font-size:16px;background:#fff}
.demo-bar{background:var(--warn-bg);color:var(--warn);border:1px solid #FDE68A;padding:6px 12px;border-radius:8px;font-size:13px;margin-bottom:12px;text-align:center}
.foot{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:12px;padding-block:14px 24px;border-top:1px solid var(--line)}

/* layout */
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:14px}
.card-narrow{max-width:640px}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.card-head h2{margin-bottom:6px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.page-head{margin-bottom:14px}
.empty{text-align:center;padding:30px}
.crumbs{font-size:13px;color:var(--muted);margin-bottom:4px}
@media (max-width:820px){.grid-2,.grid-3{grid-template-columns:1fr}.who{margin-left:0}}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:8px;padding:9px 14px;font-weight:600;font-size:14px;cursor:pointer;background:#EEF1F7;color:var(--ink);line-height:1.1}
.btn:hover{text-decoration:none;filter:brightness(.97)}
.btn-primary{background:var(--navy);color:#fff}.btn-block{width:100%;justify-content:center}
.btn-ghost{background:transparent;border-color:var(--line)}.top .btn-ghost{color:#fff;border-color:rgba(255,255,255,.3)}
.btn-danger{background:var(--danger);color:#fff}.btn-danger-ghost{background:transparent;border-color:#FCA5A5;color:var(--danger)}
.btn-sm{padding:6px 11px;font-size:13px}.btn-xs{padding:4px 8px;font-size:12px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.inline{display:inline}.row-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.chip{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 13px;font-size:13px;font-weight:600;color:var(--navy)}
.chip.on,.chip:hover{background:var(--navy);color:#fff;text-decoration:none}

/* badges */
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;background:#EEF1F7;color:var(--ink);white-space:nowrap}
.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-warn{background:var(--warn-bg);color:var(--warn)}
.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-info{background:var(--info-bg);color:var(--info)}
.badge-gray{background:#E5E7EB;color:#4B5563}.badge-rol{background:var(--orange);color:var(--navy)}
.badge-stk{border-left:6px solid #94A3B8;border-radius:6px;padding-left:7px}
.badge-stk[data-color="Azul"]{border-color:#2563EB}.badge-stk[data-color="Verde"]{border-color:#16A34A}.badge-stk[data-color="Amarillo"]{border-color:#EAB308}
.badge-stk[data-color="Rojo"]{border-color:#DC2626}.badge-stk[data-color="Naranja"]{border-color:#EA580C}.badge-stk[data-color="Blanco"]{border-color:#CBD5E1}
.badge-mov{background:#EEF1F7}.mov-intercambio{background:var(--info-bg);color:var(--info)}.mov-baja_alta,.mov-baja{background:var(--warn-bg);color:var(--warn)}
.mov-registro_inicial,.mov-alta{background:var(--ok-bg);color:var(--ok)}.mov-prestamo{background:#F3E8FF;color:#6D28D9}.mov-pago{background:#ECFDF5;color:#047857}
.placa{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}

/* stats */
.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:14px}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}
.stat-n{font-size:30px;font-weight:800;color:var(--navy);line-height:1}.stat-l{font-weight:600;margin-top:6px}.stat-s{font-size:12px;color:var(--muted);margin-top:3px}
.stat-warn .stat-n{color:var(--warn)}.stat-danger .stat-n{color:var(--danger)}
@media (max-width:1000px){.stats{grid-template-columns:repeat(3,1fr)}}@media (max-width:560px){.stats{grid-template-columns:1fr 1fr}}

/* ficha */
.ficha-head{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.ficha-sub{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:4px}.tel{font-size:14px}
.ficha-badges{display:flex;gap:8px;flex-wrap:wrap;align-items:center;align-content:flex-start}
.cupo-l{font-size:13px;color:var(--muted);font-weight:600}.cupo-n{font-size:28px;font-weight:800;color:var(--navy)}.cupo-s{font-size:12px;color:var(--muted)}
.cupo-excede{border-color:#FCD34D;background:#FFFBEB}.cupo-excede .cupo-n,.cupo-excede .cupo-s{color:var(--warn)}
.acciones-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media (max-width:900px){.acciones-grid{grid-template-columns:1fr 1fr}}@media (max-width:520px){.acciones-grid{grid-template-columns:1fr}}
.accion{text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;cursor:pointer;display:grid;gap:3px;font:inherit}
.accion:hover{border-color:var(--navy);box-shadow:0 2px 10px rgba(15,31,79,.08)}
.accion[disabled]{opacity:.5;cursor:not-allowed}
.accion-k{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:6px;background:var(--navy);color:#fff;font-weight:800;font-size:13px}
.accion-t{font-weight:700;color:var(--navy)}.accion-d{font-size:12px;color:var(--muted)}
.row-hl td{background:var(--hl)}.row-baja td{color:var(--muted)}
.stk-list,.tel-list{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.hist{margin-top:10px}.hist summary{cursor:pointer;color:var(--blue);font-size:14px}
.comentario p{margin:0 0 6px;white-space:pre-wrap}
.pago-estado{margin-bottom:8px}
.roles-help{margin-top:12px;font-size:13px;color:var(--muted)}.roles-help p{margin:4px 0}

/* timeline */
.timeline{list-style:none;padding:0;margin:0;border-left:2px solid var(--line);margin-left:8px}
.timeline li{display:grid;grid-template-columns:96px 1fr;gap:10px;padding:8px 0 8px 14px;position:relative}
.timeline li::before{content:"";position:absolute;left:-6px;top:15px;width:10px;height:10px;border-radius:50%;background:var(--orange);border:2px solid #fff}
.tl-date{font-weight:700;color:var(--navy);font-size:13px}.tl-body{display:grid;gap:2px}
.timeline-compact li{padding:5px 0 5px 14px}
@media (max-width:560px){.timeline li{grid-template-columns:1fr}}

/* tables */
.table-wrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:9px 10px;border-bottom:1px solid #F1F3F7;vertical-align:middle}
.tbl-compact td{padding:6px 10px}.tbl tr:hover td{background:#FAFBFD}

/* forms */
.form label{display:block;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:10px}
.form input,.form select,.form textarea{display:block;width:100%;margin-top:4px;padding:9px 11px;border:1px solid #D1D5DB;border-radius:8px;font:inherit;font-size:15px;color:var(--ink);background:#fff}
.form input:focus,.form select:focus,.form textarea:focus{outline:2px solid #C7D2FE;border-color:var(--blue)}
.form .check{display:flex;align-items:center;gap:8px;font-weight:500}.form .check input{width:auto;margin:0}
.form-inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.form-inline input,.form-inline select{width:auto;margin:0;padding:7px 10px;font-size:14px}.form-inline label{margin:0;display:flex;align-items:center;gap:6px}
.filtros{margin-bottom:10px}
.reg-fila{display:grid;grid-template-columns:1.2fr .9fr 1fr .8fr 1fr .8fr;gap:6px;margin-bottom:6px}
.reg-fila input,.reg-fila select{margin:0}
@media (max-width:820px){.reg-fila{grid-template-columns:1fr 1fr}}

/* login */
.login{display:grid;place-items:center;min-height:70vh}.login-card{width:100%;max-width:420px}
.hint{margin-top:14px;font-size:13px;color:var(--muted)}.hint summary{cursor:pointer}.hint ul{padding-left:18px}

/* flash */
.flash{padding:10px 14px;border-radius:9px;margin-bottom:14px;font-weight:600;font-size:14px}
.flash-ok{background:var(--ok-bg);color:var(--ok)}.flash-error{background:var(--danger-bg);color:var(--danger)}

/* modal */
.modal{position:fixed;inset:0;background:rgba(15,31,79,.45);display:grid;place-items:start center;padding:24px 12px;overflow:auto;z-index:50}
.modal-box{background:#fff;border-radius:14px;padding:20px 22px;width:100%;max-width:640px;box-shadow:0 20px 60px rgba(0,0,0,.25);margin-top:20px}
.modal-wide{max-width:960px}
