/* Sistema Memorial · estilos compartidos. Mobile-first, modo oscuro automático, accesible (WCAG 2.1 AA). */
:root{color-scheme:light dark;--bg:#f2f5f9;--card:#fff;--ink:#17202b;--mut:#4d5b6b;--pri:#17497a;--pri-ink:#fff;--link:#17497a;--bd:#cfd7e1;--sec:#e3e8ef;--sec-ink:#17202b;
--ok-bg:#e1f3e6;--ok-ink:#11521f;--err-bg:#fde6e6;--err-ink:#7f1717;--warn-bg:#fff2cc;--warn-ink:#6b4200;--nav:#12253a;--nav-ink:#dce6f1;--nav-mut:#9db3c9;--nav-act:#23486f;--ring:#0b6bcb;--shadow:0 1px 2px rgba(16,32,51,.08)}
@media (prefers-color-scheme:dark){:root{--bg:#0d141d;--card:#16202c;--ink:#e8eef5;--mut:#a3b3c4;--pri:#63a7ea;--pri-ink:#06131f;--link:#8ec2f7;--bd:#2b3a4b;--sec:#243245;--sec-ink:#e8eef5;
--ok-bg:#12351c;--ok-ink:#9fe1b1;--err-bg:#431a1a;--err-ink:#ffb4b4;--warn-bg:#4a3706;--warn-ink:#ffd98a;--nav:#0a121b;--nav-ink:#d6e0ec;--nav-mut:#8fa5bb;--nav-act:#1d3a58;--ring:#7cc0ff;--shadow:none}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.55 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--ink)}
h1{font-size:1.45rem;line-height:1.25;margin:.2em 0 .6em}h2{font-size:1.12rem;margin:1.6em 0 .6em}h3{font-size:1rem}
a{color:var(--link)}code,pre{font-family:ui-monospace,Consolas,monospace;font-size:.88em}pre{white-space:pre-wrap;word-break:break-word}
:focus-visible{outline:3px solid var(--ring);outline-offset:2px;border-radius:4px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:8px;top:-60px;background:var(--pri);color:var(--pri-ink);padding:10px 16px;border-radius:8px;z-index:100;text-decoration:none}.skip:focus{top:8px}
/* ---- estructura ---- */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:var(--nav);color:var(--nav-ink);min-height:56px}
.topbar a{color:var(--nav-ink)}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1.02rem;text-decoration:none;min-width:0;flex:1 1 auto}.brand img{border-radius:7px;flex:none}.brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:10px;background:transparent;color:var(--nav-ink);cursor:pointer}.icon-btn:hover{background:var(--nav-act)}
.icon-btn svg{width:24px;height:24px}.icon-btn svg,.btn svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.btn svg{width:22px;height:22px}
.quick{display:none;flex:1 1 100%;order:5;gap:8px}.topbar.search-open .quick{display:flex}.quick input{margin:0;flex:1;min-width:0}
.userbox{display:none;align-items:center;gap:10px;font-size:.9rem;white-space:nowrap}.userbox small{color:var(--nav-mut)}
.shell{display:block}
.side{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);z-index:60;background:var(--nav);color:var(--nav-ink);overflow-y:auto;padding:12px 10px 28px;transform:translateX(-102%);visibility:hidden;transition:transform .2s ease,visibility 0s linear .2s;overscroll-behavior:contain}
.nav-open .side{transform:none;visibility:visible;transition:transform .2s ease}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:50;display:none}.nav-open .overlay{display:block}.nav-open{overflow:hidden}
.side .side-head{display:flex;justify-content:space-between;align-items:center;padding:0 6px 8px;font-weight:700}
.side a{display:flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:10px;color:var(--nav-ink);text-decoration:none}.side a:hover{background:var(--nav-act)}.side a[aria-current=page]{background:var(--nav-act);font-weight:700;box-shadow:inset 3px 0 0 var(--ring)}
.side details{margin:2px 0}.side summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;min-height:44px;padding:8px 12px;border-radius:10px;color:var(--nav-mut);font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.side summary::-webkit-details-marker{display:none}.side summary::after{content:"▾";font-size:.9rem}.side details:not([open]) summary::after{content:"▸"}.side summary:hover{background:var(--nav-act)}.side details a{padding-left:20px}
.side .me{border-top:1px solid #ffffff22;margin-top:14px;padding-top:12px;font-size:.9rem}.side .me small{display:block;color:var(--nav-mut)}
main{padding:16px 14px 48px;max-width:1240px;outline:0}
/* ---- escritorio ---- */
@media (min-width:900px){.menu-btn,.side-close,.overlay,.search-btn,.side-head{display:none!important}.quick{display:flex;flex:0 1 420px;order:0}.brand{flex:0 0 auto}.userbox{display:flex;margin-left:auto}.topbar{padding:8px 18px}
.side{top:56px;transform:none;visibility:visible;width:262px;z-index:30;transition:none}.shell main{margin-left:262px;padding:24px 28px 56px}.side .me{display:none}}
@media (max-width:899px){.side .me{display:block}}
/* ---- componentes ---- */
.card{background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:16px;box-shadow:var(--shadow)}
.narrow{max-width:460px;width:100%}.center{display:grid;place-items:center;min-height:100vh;padding:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 16px;align-items:end}
label{display:block;margin:0 0 12px;font-size:.92rem;color:var(--mut)}
input,select,textarea{display:block;width:100%;min-height:44px;padding:10px 12px;margin-top:4px;border:1px solid var(--bd);border-radius:10px;font:inherit;color:var(--ink);background:var(--card)}
textarea{min-height:96px}input[type=checkbox],input[type=radio]{width:20px;height:20px;min-height:0;margin:0;accent-color:var(--pri)}input[type=file]{padding:8px}
.chk{display:flex;gap:10px;align-items:center;color:var(--ink);min-height:36px}.chk input{flex:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:10px 18px;border:0;border-radius:10px;background:var(--pri);color:var(--pri-ink);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn.sec{background:var(--sec);color:var(--sec-ink)}.btn:hover{filter:brightness(1.08)}.btn[disabled],.btn.off,.btn[aria-disabled=true]{background:var(--sec);color:var(--mut);pointer-events:none;font-weight:500}
.dim td{color:var(--mut)}.dim td a{color:var(--mut)}
.link{background:none;border:0;color:var(--link);cursor:pointer;padding:8px 4px;min-height:36px;font:inherit;text-decoration:underline}.side .link,.userbox .link{color:var(--nav-ink)}
table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--bd);border-radius:12px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--bd);vertical-align:top}th{background:var(--sec);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:var(--mut)}
tr:last-child td{border-bottom:0}
.msg{padding:12px 16px;border-radius:10px;margin-bottom:14px;background:var(--ok-bg);color:var(--ok-ink)}.msg.err{background:var(--err-bg);color:var(--err-ink)}.msg a{color:inherit}
.muted{color:var(--mut)}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--sec);color:var(--sec-ink)}
.badge.ok{background:var(--ok-bg);color:var(--ok-ink)}.badge.warn{background:var(--warn-bg);color:var(--warn-ink)}.badge.err{background:var(--err-bg);color:var(--err-ink)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.stats .card b,.kpi-v{display:block;font-size:clamp(1.1rem,4.6vw,1.7rem);line-height:1.25;font-weight:700;white-space:nowrap}
.kpi{container-type:inline-size;display:block;background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow)}a.kpi:hover{border-color:var(--pri)}.kpi .kpi-v{font-size:clamp(1rem,13cqw,1.65rem)}.kpi-l{display:block;color:var(--mut);font-size:.88rem}
.kpi.warn{border-left:5px solid #d99100}.kpi.err{border-left:5px solid #c62828}.kpi.ok{border-left:5px solid #2e8b4d}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 18px}
form.inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}form.inline input,form.inline select{margin:0;width:auto;flex:1 1 150px}
.steps{display:flex;gap:6px;margin:0 0 18px;padding:0;list-style:none;font-size:.8rem}.steps li{flex:1;padding:6px;border-radius:6px;background:var(--sec);text-align:center;color:var(--mut)}.steps li.on{background:var(--pri);color:var(--pri-ink)}.steps li.done{background:var(--ok-bg);color:var(--ok-ink)}
.chk-ok{color:var(--ok-ink)}.chk-bad{color:var(--err-ink)}
/* ---- móvil: formularios y botones cómodos para el dedo ---- */
@media (max-width:720px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}form[style*="display:inline"]{display:block!important;margin:8px 0 0!important}.btn{max-width:100%;white-space:normal;text-align:center}.grid{grid-template-columns:1fr}form.inline{flex-direction:column;align-items:stretch}form.inline input,form.inline select,form.inline .btn{width:100%!important;flex:none}
input,select,textarea{font-size:16px}.btn{width:auto}.card form .btn{width:100%}.actions .btn{flex:1 1 140px}h1{font-size:1.3rem}.stats,.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}pre{font-size:.8rem}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
/* Los estilos en línea de los módulos usan colores claros: en modo oscuro se fuerza texto legible sobre ellos */
@media (prefers-color-scheme:dark){[style*="background:#f"],[style*="background:#e"],[style*="background:#d"]{color:#14202e!important}[style*="color:#b71c1c"]{color:#ff9a90!important}[style*="color:#1b5e20"]{color:#8fdc9f!important}[style*="color:#b45309"]{color:#f3b862!important}[style*="color:#1f4e79"]{color:var(--link)!important}}
@media print{.topbar,.side,.overlay,.skip,.actions,.btn,form.inline{display:none!important}.shell main{margin:0;padding:0}body{background:#fff;color:#000}}
