:root {
  --bg:#0f1419; --surface:#1a212b; --surface-2:#232c38; --border:#2e3a48;
  --text:#e6edf3; --muted:#8b97a6; --accent:#4cc2ff; --accent-soft:rgba(76,194,255,.12);
  --radius:12px; --shadow:0 4px 24px rgba(0,0,0,.35);
  --verde:#3fb950; --amber:#d29922; --rojo:#e5534b; --azul:#4cc2ff; --gris:#8b97a6;
}
* { box-sizing:border-box; }
body { margin:0; font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  background:radial-gradient(1200px 600px at 80% -10%,rgba(76,194,255,.08),transparent 60%),var(--bg);
  color:var(--text); line-height:1.5; min-height:100vh; }
a { color:var(--accent); }
.muted { color:var(--muted); }
.small { font-size:.82rem; }
.wrap { max-width:1200px; margin:0 auto; padding:1.5rem 1.25rem 4rem; }

/* Barra superior */
.topnav { background:rgba(26,33,43,.92); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:10; backdrop-filter:blur(6px); }
.topnav-in { max-width:1200px; margin:0 auto; padding:.6rem 1.25rem; display:flex; align-items:center; gap:1.25rem; flex-wrap:wrap; }
.brand { display:flex; align-items:center; gap:.6rem; color:var(--text); text-decoration:none; }
.brand .dot { width:32px; height:32px; border-radius:9px; background:linear-gradient(135deg,var(--accent),#2b7fff); flex-shrink:0; }
.brand strong { display:block; font-size:1rem; line-height:1.1; }
.brand small { display:block; color:var(--muted); font-size:.75rem; }
.menu { display:flex; gap:.25rem; flex-wrap:wrap; flex:1; }
.menu a { color:var(--muted); text-decoration:none; padding:.4rem .75rem; border-radius:8px; font-size:.9rem; font-weight:500; }
.menu a:hover { color:var(--text); background:var(--surface-2); }
.menu a.on { color:var(--accent); background:var(--accent-soft); }
.userbox { display:flex; align-items:center; gap:.6rem; }
.userbox form { margin:0; }
.uname { color:var(--text); text-decoration:none; font-size:.88rem; }
.uname small { color:var(--muted); margin-left:.25rem; }
.uname.on, .uname:hover { color:var(--accent); }

h1.titulo { font-size:1.35rem; margin:.25rem 0 1.25rem; letter-spacing:-.01em; display:flex; align-items:center; gap:.75rem; flex-wrap:wrap; }

/* Botones */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:.45rem; font-size:.9rem; font-weight:600;
  padding:.5rem .9rem; border-radius:8px; border:1px solid var(--border); background:var(--surface);
  color:var(--text); text-decoration:none; cursor:pointer; transition:background .15s,border-color .15s,transform .1s; font-family:inherit; }
.btn:hover { background:var(--surface-2); border-color:var(--accent); }
.btn:active { transform:translateY(1px); }
.btn:disabled { opacity:.55; cursor:wait; }
.btn-primary { background:linear-gradient(135deg,var(--accent),#2b7fff); border:none; color:#06243a; }
.btn-primary:hover { filter:brightness(1.08); background:linear-gradient(135deg,var(--accent),#2b7fff); }
.btn-danger { background:rgba(229,83,75,.15); border-color:rgba(229,83,75,.5); color:#ff9a91; }
.btn-danger:hover { background:rgba(229,83,75,.25); border-color:var(--rojo); }
.btn-gls { background:linear-gradient(135deg,#0a3d9e,#001a4d); border:none; color:#fff; }
.btn-nacex { background:linear-gradient(135deg,#e8a020,#c47a00); border:none; color:#fff; }
.btn-ghost { background:transparent; }
.btn-sm { padding:.3rem .6rem; font-size:.8rem; }

/* Tarjetas */
.card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; }
.card + .card, .grid-2 + .card, .card + .grid-2 { margin-top:1.25rem; }
.card-head { padding:.9rem 1.25rem; border-bottom:1px solid var(--border); font-weight:600; font-size:.95rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.card-body { padding:1.25rem; }
.grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:1.25rem; }
.grid-2 > .card + .card { margin-top:0; }
@media (max-width:860px) { .grid-2 { grid-template-columns:1fr; } }

/* Tablas */
.table-wrap { overflow-x:auto; }
table { width:100%; border-collapse:collapse; font-size:.9rem; }
thead th { text-align:left; font-weight:600; color:var(--muted); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; padding:.6rem 1rem; background:var(--surface-2); border-bottom:1px solid var(--border); white-space:nowrap; }
tbody td { padding:.7rem 1rem; border-bottom:1px solid var(--border); vertical-align:middle; }
tbody tr:last-child td { border-bottom:none; }
tbody tr[data-href] { cursor:pointer; }
tbody tr[data-href]:hover { background:var(--surface-2); }
tr.anulado td { opacity:.55; }
td.num, th.num { text-align:right; font-variant-numeric:tabular-nums; }
td.nowrap { white-space:nowrap; }
.ref { font-family:ui-monospace,"SF Mono",Menlo,monospace; font-size:.85rem; }

/* Badges */
.badge { display:inline-block; padding:.25rem .6rem; border-radius:999px; font-size:.75rem; font-weight:600; line-height:1; white-space:nowrap;
  background:var(--accent-soft); color:var(--accent); border:1px solid rgba(76,194,255,.25); }
.b-verde { background:rgba(63,185,80,.14); color:var(--verde); border-color:rgba(63,185,80,.35); }
.b-amber { background:rgba(210,153,34,.14); color:var(--amber); border-color:rgba(210,153,34,.35); }
.b-rojo  { background:rgba(229,83,75,.14); color:var(--rojo); border-color:rgba(229,83,75,.35); }
.b-azul  { background:rgba(76,194,255,.14); color:var(--azul); border-color:rgba(76,194,255,.35); }
.b-gris  { background:rgba(139,151,166,.14); color:var(--gris); border-color:rgba(139,151,166,.35); }

/* Datos */
.meta-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:1rem 1.5rem; }
.label { font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-bottom:.15rem; }
.value { font-size:.95rem; font-weight:500; word-break:break-word; }
address { font-style:normal; font-size:.92rem; }
.prod { display:flex; align-items:center; gap:.75rem; }
.prod img, .prod .noimg { width:46px; height:46px; object-fit:cover; border-radius:8px; border:1px solid var(--border); background:var(--surface-2); flex-shrink:0; }
.prod .noimg { display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:.62rem; text-align:center; }
.totals { width:100%; max-width:320px; margin-left:auto; }
.totals td { padding:.35rem 0; border:none; font-size:.9rem; }
.totals td:last-child { text-align:right; font-variant-numeric:tabular-nums; }
.totals tr.grand td { padding-top:.7rem; border-top:1px solid var(--border); font-weight:700; font-size:1.05rem; color:var(--accent); }

/* Avisos */
.alert { padding:.9rem 1.25rem; border-radius:var(--radius); font-size:.9rem; margin-bottom:1rem; }
.alert-ok { background:rgba(63,185,80,.12); border:1px solid rgba(63,185,80,.4); color:#7ee787; }
.alert-err { background:rgba(229,83,75,.12); border:1px solid rgba(229,83,75,.4); color:#ff9a91; }
.alert-info { background:rgba(210,153,34,.12); border:1px solid rgba(210,153,34,.4); color:#f0c674; }
.empty { text-align:center; color:var(--muted); padding:2.5rem 1rem; }

/* Formularios */
.field { margin-bottom:1rem; }
.field label, .lbl { display:block; font-size:.75rem; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin-bottom:.3rem; }
input[type=text], input[type=password], input[type=email], input[type=number], input[type=date], input[type=search], select, textarea {
  width:100%; padding:.55rem .75rem; border-radius:8px; border:1px solid var(--border); background:var(--bg); color:var(--text); font-size:.92rem; font-family:inherit; }
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--accent); }
select option { background:var(--surface-2); color:var(--text); }
textarea { min-height:70px; resize:vertical; }
.check { display:inline-flex; align-items:center; gap:.45rem; font-size:.9rem; cursor:pointer; }
.check input { width:auto; accent-color:var(--accent); }
.form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:0 1rem; }
.form-grid .full { grid-column:1/-1; }
.inline-form { display:flex; gap:.6rem; flex-wrap:wrap; align-items:flex-end; margin:0; }
.inline-form > div { min-width:120px; }
.inline-form input, .inline-form select { width:auto; min-width:120px; }
.filtros { padding:.85rem 1.25rem; border-bottom:1px solid var(--border); display:flex; gap:.75rem; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; }
.chips { display:flex; gap:.35rem; flex-wrap:wrap; align-items:center; }
.chip { font-size:.8rem; padding:.3rem .7rem; border-radius:999px; border:1px solid var(--border); background:var(--surface); color:var(--text); text-decoration:none; }
.chip.on { background:var(--accent-soft); border-color:var(--accent); color:var(--accent); }
.acciones { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; }
.acciones form { margin:0; }
.doc-box { display:flex; gap:.75rem; flex-wrap:wrap; align-items:flex-end; padding:1rem; border:1px dashed var(--border); border-radius:10px; background:rgba(255,255,255,.015); }
.doc-box .num-in { width:90px; }
.pager { display:flex; gap:.75rem; align-items:center; justify-content:center; padding:1rem; }
details summary { cursor:pointer; color:var(--accent); font-size:.88rem; }
.timeline { list-style:none; margin:0; padding:0; }
.timeline li { padding:.55rem 0; border-bottom:1px solid var(--border); font-size:.88rem; display:flex; justify-content:space-between; gap:1rem; }
.timeline li:last-child { border-bottom:none; }
.nota { padding:.65rem 0; border-bottom:1px solid var(--border); font-size:.9rem; }
.nota:last-child { border-bottom:none; }
.nota .muted { font-size:.78rem; }
.ok-dot, .ko-dot { display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:.4rem; }
.ok-dot { background:var(--verde); } .ko-dot { background:var(--rojo); }

/* Login */
.login-box { max-width:380px; margin:10vh auto 0; }
.login-box .brand { justify-content:center; margin-bottom:1.5rem; }
.login-box .card-body { padding:1.75rem; }
