:root{
  --ink:#17202e; --ink-2:#2b3648; --paper:#f1f3f7; --line:#dfe3ea; --muted:#667085;
  --blue:#1f4fd8; --blue-d:#173cae; --green:#168a4a; --amber:#b7791f; --red:#c0392b;
  --bs-primary:#1f4fd8; --bs-primary-rgb:31,79,216; --bs-link-color:#1f4fd8; --bs-link-hover-color:#173cae;
  --bs-body-bg:var(--paper); --bs-body-color:var(--ink);
  --bs-body-font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --bs-border-radius:.6rem;
}
html{-webkit-text-size-adjust:100%}
body{font-variant-numeric:tabular-nums;letter-spacing:.005em}
.btn-primary{--bs-btn-bg:var(--blue);--bs-btn-border-color:var(--blue);--bs-btn-hover-bg:var(--blue-d);--bs-btn-hover-border-color:var(--blue-d);--bs-btn-active-bg:var(--blue-d);--bs-btn-active-border-color:var(--blue-d);--bs-btn-disabled-bg:var(--blue);--bs-btn-disabled-border-color:var(--blue)}
.btn-success{--bs-btn-bg:var(--green);--bs-btn-border-color:var(--green);--bs-btn-hover-bg:#0f6e3a;--bs-btn-hover-border-color:#0f6e3a}
.text-bg-primary{background-color:var(--blue)!important}
.card{border:1px solid var(--line);box-shadow:none}
.card-header{background:#fff;font-weight:600}
.table>:not(caption)>*>*{padding:.55rem .7rem}
.table thead th{font-weight:600;color:var(--muted);font-size:.85rem;white-space:nowrap}
:focus-visible{outline:3px solid #8fb0ff;outline-offset:2px}

/* ---------- Panel de administración ---------- */
.shell{display:flex;min-height:100vh}
.side{width:248px;background:var(--ink);color:#cfd6e4;flex:0 0 248px}
.side .brand{padding:1.1rem 1.25rem;font-weight:700;color:#fff;font-size:1.05rem;border-bottom:1px solid #263248}
.side .brand small{display:block;font-weight:400;color:#8b97ad;font-size:.78rem}
.side .nav-link{color:#cfd6e4;padding:.62rem 1.25rem;border-left:3px solid transparent;border-radius:0}
.side .nav-link:hover{background:#1f2a3d;color:#fff}
.side .nav-link.active{background:#1f2a3d;color:#fff;border-left-color:#6f95ff}
.main{flex:1;min-width:0}
.topbar{background:#fff;border-bottom:1px solid var(--line);padding:.6rem 1rem;position:sticky;top:0;z-index:20}
.content{padding:1.25rem;max-width:1280px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:.7rem;padding:.9rem 1rem;height:100%}
.kpi .n{font-size:1.75rem;font-weight:700;line-height:1.1}
.kpi .l{color:var(--muted);font-size:.85rem}
.kpi.warn .n{color:var(--red)}
.bar{height:.55rem;background:#e6eaf2;border-radius:99px;overflow:hidden;min-width:70px}
.bar>i{display:block;height:100%;background:var(--blue)}
.bar.done>i{background:var(--green)}
@media (max-width:991.98px){.side{width:auto}.offcanvas-lg.side{--bs-offcanvas-width:270px;background:var(--ink)}.content{padding:.9rem}}

/* ---------- Experiencia móvil de mesa ---------- */
body.mob{background:var(--paper);padding-bottom:5.2rem}
.mob-top{background:var(--ink);color:#fff;padding:.8rem 1rem;position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.6rem}
.mob-top .t{font-weight:650;font-size:1.05rem;line-height:1.2;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mob-top a{color:#fff}
.mob-wrap{max-width:560px;margin:0 auto;padding:1rem}
.mob-nav{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);display:flex;z-index:40;padding-bottom:env(safe-area-inset-bottom)}
.mob-nav a,.mob-nav button{flex:1;text-align:center;padding:.65rem 0 .55rem;color:var(--muted);text-decoration:none;font-size:.78rem;background:none;border:0;position:relative}
.mob-nav a.active{color:var(--blue);font-weight:600}
.mob-nav .ic{display:block;margin:0 auto .15rem}
.mob-nav .dot{position:absolute;top:.35rem;left:calc(50% + .5rem);background:var(--red);color:#fff;border-radius:99px;font-size:.68rem;min-width:1.1rem;padding:0 .3rem;line-height:1.1rem}
.mcard{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1rem;margin-bottom:.9rem}
.mcard h2{font-size:1.05rem;margin:0}
.tally{text-align:center;padding:1.1rem 1rem 1rem}
.tally .big{font-size:4rem;font-weight:800;line-height:1;letter-spacing:-.02em}
.tally .of{color:var(--muted);font-size:1rem;margin-top:.2rem}
.tally .pc{font-size:1.4rem;font-weight:700;color:var(--blue);margin-top:.3rem}
.track{position:relative;height:1.05rem;background:#e6eaf2;border-radius:.4rem;margin:.9rem 0 .35rem;overflow:hidden;
  background-image:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 2px),#fff calc(10% - 2px),#fff 10%)}
.track>i{position:absolute;inset:0 auto 0 0;background:var(--blue);transition:width .5s ease}
.track.done>i{background:var(--green)}
.seg{display:flex;background:#e3e7ef;border-radius:.8rem;padding:.25rem;gap:.25rem;margin-bottom:.9rem}
.seg button{flex:1;border:0;background:none;padding:.7rem .2rem;border-radius:.6rem;font-weight:600;color:var(--ink-2);font-size:.95rem;position:relative}
.seg button.on{background:#fff;color:var(--blue);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.pane{display:none}.pane.on{display:block}
.mob .btn-xl{width:100%;min-height:3.6rem;font-size:1.15rem;font-weight:650;border-radius:.9rem}
.mob .form-control-xl{font-size:2.2rem;font-weight:700;text-align:center;height:4.4rem;border-radius:.9rem;border:2px solid var(--line)}
.mob .form-control-xl:focus{border-color:var(--blue);box-shadow:0 0 0 .2rem rgba(31,79,216,.2)}
.stepper{display:flex;gap:.5rem;margin:.6rem 0}
.stepper button{flex:1;min-height:3.2rem;border-radius:.8rem;border:1.5px solid var(--line);background:#fff;font-weight:700;font-size:1.05rem;color:var(--ink)}
.stepper button:active{background:#e8edff;border-color:var(--blue)}
.hist{list-style:none;margin:0;padding:0}
.hist li{display:flex;justify-content:space-between;align-items:baseline;padding:.6rem 0;border-bottom:1px solid var(--line)}
.hist li:last-child{border:0}
.hist .v{font-weight:700;font-size:1.1rem}
.chip{display:inline-block;border-radius:99px;padding:.15rem .6rem;font-size:.8rem;font-weight:600}
.chip.sync{background:#fff4d6;color:#7a5200}.chip.ok{background:#dcf5e6;color:#0f6e3a}
.sevtag{border-left:4px solid var(--line);padding-left:.7rem}.sevtag.important{border-color:var(--red)}
.toasts{position:fixed;left:0;right:0;bottom:5.4rem;z-index:60;display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:0 1rem;pointer-events:none}
.toast-m{background:var(--ink);color:#fff;padding:.8rem 1.1rem;border-radius:.8rem;font-weight:550;max-width:520px;width:100%;box-shadow:0 8px 24px rgba(0,0,0,.25);animation:tin .2s ease-out}
.toast-m.ok{background:#0f6e3a}.toast-m.err{background:#a82d20}.toast-m.warn{background:#7a5200}
@keyframes tin{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.track>i,.toast-m{transition:none;animation:none}}
.sc{display:block;text-decoration:none;color:inherit}
.sc:active{background:#f6f8ff}
.res-row{display:flex;align-items:center;gap:.7rem;padding:.65rem 0;border-bottom:1px solid var(--line)}
.res-row:last-child{border:0}
.res-row .name{flex:1;min-width:0}
.res-row input{width:7.2rem;text-align:right;font-size:1.4rem;font-weight:700;height:3.2rem}
.login-bg{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--ink);padding:1rem}
.login-card{width:100%;max-width:400px;background:#fff;border-radius:1rem;padding:1.6rem}
@media print{.side,.topbar,.mob-nav,.no-print,.mob-top{display:none!important}.content{padding:0}body{background:#fff}}
