:root { --brand: #0b3d5c; --brand-accent: #f39c12; }
body { background: #f4f6f9; }
.bg-brand { background: var(--brand); }
.bg-orange { background: #fd7e14 !important; }
.btn-brand { background: var(--brand-accent); color: #fff; border: 0; }
.btn-brand:hover { background: #d68910; color: #fff; }
.card { border: 0; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.stat .num { font-size: 1.8rem; font-weight: 700; color: var(--brand); }
.stat .lbl { color: #6c757d; font-size: .85rem; }
.barra { height: 8px; background: #e9ecef; border-radius: 4px; overflow: hidden; }
.barra > span { display: block; height: 100%; background: var(--brand); }
.tabla-contratistas td, .tabla-contratistas th { white-space: nowrap; vertical-align: middle; }
.tabla-contratistas th a { color: inherit; text-decoration: none; }
.filtros .form-label { font-size: .8rem; margin-bottom: .1rem; color: #6c757d; }
.puntaje { display: inline-block; min-width: 2.4rem; text-align: center; font-weight: 600; border-radius: 4px; padding: 0 .3rem; }
.puntaje.alto { background: #d1e7dd; color: #0f5132; }
.puntaje.medio { background: #fff3cd; color: #664d03; }
.puntaje.bajo { background: #f8d7da; color: #842029; }
.kanban { display: flex; gap: .75rem; overflow-x: auto; padding-bottom: 1rem; }
.kanban .col-k { min-width: 260px; flex: 1; }
.kanban .item { background: #fff; border-radius: 6px; padding: .5rem .6rem; margin-bottom: .5rem; box-shadow: 0 1px 2px rgba(0,0,0,.08); font-size: .85rem; }
.timeline .act { border-left: 3px solid var(--brand); padding: .25rem .75rem; margin-bottom: .75rem; background: #fff; }
.tema { font-size: .75rem; }
.login-box { max-width: 380px; margin: 10vh auto; }
