:root { --sidebar: #0f2a44; --sidebar-hover: #17406a; --acento: #1f7ae0; }
body { background: #f3f5f8; font-size: .92rem; }
.layout { display: flex; min-height: 100vh; }
.sidebar { width: 250px; background: var(--sidebar); color: #cfd8e3; flex-shrink: 0; overflow-y: auto; }
.sidebar .marca { padding: .9rem 1.2rem; border-bottom: 1px solid #ffffff14; }
.sidebar .marca img { height: 30px; display: block; }
.sidebar a { color: #cfd8e3; text-decoration: none; display: block; padding: .35rem 1.2rem .35rem 2.6rem; font-size: .86rem; }
.sidebar a:hover, .sidebar a.activo { background: var(--sidebar-hover); color: #fff; }
.sidebar .grupo { padding: .6rem 1.2rem; color: #fff; cursor: pointer; display: flex; align-items: center; gap: .6rem; font-weight: 600; }
.sidebar .grupo:hover { background: var(--sidebar-hover); }
.sidebar a.raiz { padding-left: 1.2rem; font-weight: 600; color: #fff; }
.contenido { flex: 1; min-width: 0; }
.topbar { background: #fff; border-bottom: 1px solid #e3e7ee; padding: .5rem 1.2rem; display: flex; align-items: center; gap: 1rem; }
main { padding: 1.2rem; }
.card { border: 0; box-shadow: 0 1px 3px #0000000f; }
.kpi .valor { font-size: 1.5rem; font-weight: 700; }
.kpi .etiqueta { color: #6c7a8c; font-size: .8rem; text-transform: uppercase; letter-spacing: .03em; }
.table td.num, .table th.num { text-align: right; white-space: nowrap; }
.table thead th { background: #f0f3f7; font-weight: 600; font-size: .8rem; text-transform: uppercase; color: #4a5568; }
.formset td { vertical-align: top; }
.formset .form-select-sm, .formset .form-control-sm { min-width: 90px; }
.formset td:first-child .form-select-sm { min-width: 220px; }
@media (max-width: 900px) { .sidebar { display: none; } .sidebar.abierto { display: block; position: fixed; z-index: 1000; height: 100vh; } }
@media print {
  .sidebar, .topbar, .no-print, .alert { display: none !important; }
  body { background: #fff; } main { padding: 0; } .card { box-shadow: none; }
}

/* Portada pública */
.navbar { position: sticky; top: 0; z-index: 1020; }
html { scroll-padding-top: 76px; scroll-behavior: smooth; }
.pub-nav { gap: 1.5rem; }
.pub-nav a { color: #33475b; text-decoration: none; font-weight: 500; }
.pub-nav a:hover { color: var(--acento); }
.pub-hero { background: radial-gradient(circle at 85% 10%, #1b4d80 0, var(--sidebar) 55%); color: #fff; padding: 4.5rem 0; }
.pub-hero h1 { font-size: clamp(2.1rem, 4vw, 3.1rem); font-weight: 700; line-height: 1.12; margin-bottom: 1.1rem; }
.pub-hero .lead { color: #c6d4e3; margin-bottom: 1.8rem; }
.pub-etiqueta { color: #ef8159; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; font-size: .8rem; margin-bottom: .8rem; }
.pub-captura img { border-radius: 10px; box-shadow: 0 24px 60px #00000066; }
.pub-captura figcaption { color: #9fb2c6; font-size: .78rem; margin-top: .7rem; text-align: center; }
.pub-cifras { background: #fff; border-bottom: 1px solid #e3e7ee; padding: 1.8rem 0; }
.pub-cifras strong { display: block; font-size: 1.9rem; color: var(--sidebar); line-height: 1.2; }
.pub-cifras span { color: #6c7a8c; font-size: .86rem; }
.pub-seccion { padding: 4.5rem 0; }
.pub-seccion h3, .pub-plan h3 { font-size: 1.08rem; font-weight: 600; }
.pub-claro { background: #fff; }
.pub-oscuro { background: var(--sidebar); color: #d6e0ea; }
.pub-oscuro h2, .pub-oscuro h3 { color: #fff; }
.pub-oscuro ul { padding-left: 1.1rem; font-size: .88rem; }
.pub-oscuro li { margin-bottom: .45rem; }
.pub-oscuro .pub-titulo p { color: #b4c4d4; }
.pub-icono { color: #ef8159; font-size: 1.6rem; display: block; margin-bottom: .6rem; }
.pub-titulo { max-width: 680px; margin: 0 auto 3rem; text-align: center; }
.pub-titulo h2 { font-weight: 700; font-size: clamp(1.6rem, 3vw, 2.2rem); }
.pub-titulo p { color: #5c6c7e; font-size: 1.05rem; margin-bottom: 0; }
.pub-flujo { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1rem; }
.pub-flujo .paso { background: #fff; border-radius: 10px; padding: 1.2rem; box-shadow: 0 1px 3px #0000000f; border-top: 3px solid var(--acento); }
.pub-flujo .paso:last-child { border-top-color: #d9653b; }
.pub-flujo i { color: var(--acento); font-size: 1.5rem; }
.pub-flujo h3 { margin: .6rem 0 .3rem; font-size: 1rem; }
.pub-flujo p { color: #5c6c7e; font-size: .85rem; margin: 0; }
.pub-modulo { height: 100%; padding: 1.4rem; border: 1px solid #e3e7ee; border-radius: 10px; transition: border-color .15s, box-shadow .15s; }
.pub-modulo:hover { border-color: var(--acento); box-shadow: 0 8px 22px #0f2a4414; }
.pub-modulo > i { color: #d9653b; font-size: 1.6rem; }
.pub-modulo h3 { margin: .6rem 0 .3rem; }
.pub-modulo p { color: #5c6c7e; font-size: .88rem; }
.pub-modulo ul { padding-left: 1.05rem; margin: 0; font-size: .85rem; }
.pub-modulo li { margin-bottom: .3rem; }
.pub-nota { color: #5c6c7e; font-size: .85rem; text-align: center; margin: 2rem 0 0; }
.pub-rubro { display: flex; gap: .9rem; height: 100%; padding: 1rem 1.1rem; background: #fff; border-radius: 10px; color: inherit; text-decoration: none; box-shadow: 0 1px 3px #0000000f; }
.pub-rubro:hover { box-shadow: 0 8px 22px #0f2a4418; }
.pub-rubro i { color: var(--acento); font-size: 1.5rem; }
.pub-rubro strong, .pub-rubro small { display: block; }
.pub-rubro small { color: #5c6c7e; margin-top: .15rem; }
.pub-punto { display: flex; gap: .9rem; }
.pub-punto i { color: var(--acento); font-size: 1.4rem; }
.pub-punto h3 { margin-bottom: .2rem; }
.pub-punto p { color: #5c6c7e; margin: 0; font-size: .88rem; }
.pub-plan { border: 1px solid #e3e7ee; }
.pub-plan.destacado { border: 2px solid var(--acento); }
.pub-angosto { max-width: 800px; }
.pub-cierre { background: var(--sidebar); color: #fff; padding: 4rem 0; }
.pub-cierre h2 { font-weight: 700; margin-top: 1rem; }
.pub-cierre p { color: #c6d4e3; }
@media (max-width: 991px) { .pub-flujo { grid-template-columns: 1fr 1fr; } }
@media (max-width: 575px) { .pub-flujo { grid-template-columns: 1fr; } .pub-seccion { padding: 3rem 0; } }
