:root{--primario: #1e3a5f;--primario-2: #2c5282;--acento: #e8a33d;--fondo: #f3f5f9;--panel: #ffffff;--texto: #1f2937;--suave: #6b7280;--borde: #e2e6ee;--ok: #16794c;--ok-bg: #e5f5ec;--error: #b42318;--error-bg: #fdecea;--radio: 10px;--sombra: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);--boton: #E48257;--boton-hover: #CF6B40}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;font-size:14px;color:var(--texto);background:var(--fondo)}h1,h2,h3{margin:0 0 .5rem;color:var(--primario)}h1{font-size:1.5rem}h2{font-size:1.2rem}a{color:var(--primario-2)}.card{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra);padding:1.25rem;margin-bottom:1rem}.page-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.page-header p{margin:0;color:var(--suave)}.acciones{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.hero .nota{font-size:.85rem;opacity:.85;margin-bottom:1.25rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.9rem 1rem}.col-2{grid-column:span 2}.col-full{grid-column:1 / -1}@media (max-width: 560px){.col-2{grid-column:1 / -1}}.campo{display:flex;flex-direction:column;gap:.3rem}.campo label{font-weight:500;font-size:.85rem;color:#374151}.campo .req:after{content:" *";color:var(--error)}input,select,textarea{font:inherit;padding:.55rem .7rem;border:1px solid #cfd5df;border-radius:8px;background:#fff;color:var(--texto);width:100%}input:focus,select:focus,textarea:focus{outline:2px solid rgba(44,82,130,.25);border-color:var(--primario-2)}input:disabled,select:disabled{background:#f1f3f6;color:var(--suave)}input.ng-invalid.ng-touched,select.ng-invalid.ng-touched,textarea.ng-invalid.ng-touched{border-color:var(--error)}.hint{font-size:.78rem;color:var(--suave)}.err{font-size:.78rem;color:var(--error)}.btn{font:inherit;font-weight:700;text-transform:uppercase;letter-spacing:.06em;display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.2rem;border-radius:8px;border:1px solid transparent;cursor:pointer;background:var(--boton);color:#fff;white-space:nowrap}.btn:hover:not(:disabled){background:var(--boton-hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.sec{background:#fff;color:var(--primario);border-color:#cfd5df}.btn.sec:hover:not(:disabled){background:#f4f6fa}.btn.peligro{background:#fff;color:var(--error);border-color:#f1b8b2}.btn.peligro:hover:not(:disabled){background:var(--error-bg)}.btn.acento{background:var(--acento);color:#1f2937}.btn.sm{padding:.3rem .65rem;font-size:.82rem}.btn.link{background:none;color:var(--primario-2);padding:0;border:0;text-decoration:underline}.tabla-wrap{overflow-x:auto}table.tabla{width:100%;border-collapse:collapse}.tabla th{text-align:left;font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em;color:var(--suave);padding:.6rem .7rem;border-bottom:1px solid var(--borde);background:#fafbfd}.tabla td{padding:.65rem .7rem;border-bottom:1px solid var(--borde);vertical-align:top}.tabla tr:hover td{background:#fafbfd}.vacio{text-align:center;color:var(--suave);padding:2rem 1rem}.badge{display:inline-block;padding:.15rem .55rem;border-radius:999px;font-size:.75rem;font-weight:600;background:#eef2f7;color:var(--primario)}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.off{background:#f1f1f1;color:#6b7280}.alerta{padding:.7rem .9rem;border-radius:8px;margin-bottom:1rem}.alerta.ok{background:var(--ok-bg);color:var(--ok)}.alerta.error{background:var(--error-bg);color:var(--error)}.alerta.info{background:#eaf1fb;color:var(--primario-2)}.modal-fondo{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:flex-start;justify-content:center;padding:4vh 1rem;z-index:50;overflow-y:auto}.modal{background:#fff;border-radius:12px;width:100%;max-width:760px;box-shadow:0 20px 40px #0003}.modal header{padding:1rem 1.25rem;border-bottom:1px solid var(--borde);display:flex;justify-content:space-between;align-items:center}.modal header h2{margin:0}.modal .cuerpo{padding:1.25rem}.modal footer{padding:.9rem 1.25rem;border-top:1px solid var(--borde);display:flex;justify-content:flex-end;gap:.5rem}.cerrar{background:none;border:0;font-size:1.4rem;cursor:pointer;color:var(--suave)}
