/* =====================================================================
   Budget Xperience · componentes del presupuesto (lo que el prototipo
   Presupuesto 2027 resolvía en app.css), sobre los tokens del diseño DNT:
   captura de premisas, avisos del auditor, indicadores, tablas del ER,
   gráficas SVG, seguimiento, archivos y planeación. Día y noche.
   ===================================================================== */

/* Tonos por sección (navegación) */
:root{--tono-planeacion:#9D8CF6;--tono-premisas:#38C7A8;--tono-resultados:#5B9BF5;--tono-auditoria:#D6B47A;--tono-seguimiento:#56C1E8;--tono-archivos:#A9B3C2;--tono-presupuesto:#7FA2FF}
.app[data-sec="planeacion"]{--sec:var(--tono-planeacion)} .app[data-sec="premisas"]{--sec:var(--tono-premisas)} .app[data-sec="resultados"]{--sec:var(--tono-resultados)}
.app[data-sec="auditoria"]{--sec:var(--tono-auditoria)} .app[data-sec="seguimiento"]{--sec:var(--tono-seguimiento)} .app[data-sec="archivos"]{--sec:var(--tono-archivos)} .app[data-sec="presupuesto"]{--sec:var(--tono-presupuesto)}
[data-sec="planeacion"]{--tono:var(--tono-planeacion)} [data-sec="premisas"]{--tono:var(--tono-premisas)} [data-sec="resultados"]{--tono:var(--tono-resultados)}
[data-sec="auditoria"]{--tono:var(--tono-auditoria)} [data-sec="seguimiento"]{--tono:var(--tono-seguimiento)} [data-sec="archivos"]{--tono:var(--tono-archivos)} [data-sec="presupuesto"]{--tono:var(--tono-presupuesto)}

/* Contexto en la barra lateral: empresa y ejercicio en captura */
.app .rail a.side-ppto,.app .rail .side-ppto,.side-ppto{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;text-align:left;gap:6px;min-height:0;margin:10px 0 0;padding:10px 12px;border:1px solid var(--marino-borde);border-radius:8px;background:rgba(255,255,255,.025);font-size:11.5px;color:var(--marino-tenue)}
.side-ppto b{color:var(--marino-tinta);font-weight:500;font-size:12.5px}
.side-ppto .pill{align-self:flex-start}.app .rail a.side-ppto:hover{background:var(--marino-2);color:var(--marino-tenue)}.rail .side-ppto .btn{align-self:flex-start;margin-top:4px}
.side-ppto .barra{height:4px;background:var(--marino-2);border-radius:99px;overflow:hidden}
.side-ppto .barra i{display:block;height:100%;background:linear-gradient(90deg,var(--marca-azul),var(--ic-2));border-radius:99px}

/* Semáforo del encabezado */
.chip-estado{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;padding:4px 10px;border-radius:99px;background:var(--superficie-2);color:var(--tinta-suave);white-space:nowrap;border:1px solid var(--borde)}
.chip-estado .pt{width:7px;height:7px;border-radius:99px;background:var(--verde)}
.chip-estado.revisar{background:var(--oro-suave);color:var(--oro);border-color:transparent}.chip-estado.revisar .pt{background:var(--oro-marca)}
.chip-estado.duro{background:var(--critico-suave);color:var(--critico);border-color:transparent}.chip-estado.duro .pt{background:var(--critico)}

/* Barra de avance de captura */
.avance{display:flex;align-items:center;gap:14px;font-size:12.5px;color:var(--tinta-suave);padding:10px 16px;background:var(--superficie);border:1px solid var(--borde);border-radius:var(--r-md)}
.avance .barra{flex:1;height:6px;background:var(--hundido);border-radius:99px;overflow:hidden;min-width:90px}
.avance .barra i{display:block;height:100%;background:linear-gradient(90deg,var(--rojo),var(--ic-2));border-radius:99px;transition:width .3s}
.avance b{color:var(--tinta);font-weight:500;font-variant-numeric:tabular-nums}

/* Dos columnas: contenido y panel */
.cols{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--e5);align-items:start}
.cols>*{min-width:0}
aside.panel{position:sticky;top:12px;display:flex;flex-direction:column;gap:var(--e4)}
@media (max-width:1240px){.cols{grid-template-columns:minmax(0,1fr)}aside.panel{position:static}}

/* Tarjetas del presupuesto (h2 con etiqueta, cuerpo, nota, fuente) */
.card>h2{margin:0;padding:14px 20px 12px;font-size:15px;font-weight:400;font-family:var(--fuente-titulo);color:var(--tinta);border-bottom:1px solid var(--borde-suave);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.card>h2::before{content:"";display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--sec);flex:0 0 8px}
.card>h2 .et{font-family:var(--fuente-texto);font-weight:400;font-size:11px;color:var(--tinta-tenue);text-transform:uppercase;letter-spacing:.06em;margin-left:auto}
.card .cuerpo{padding:var(--e4) var(--e5)}
.card .cuerpo.cenido{padding:0}
.nota{font-size:13px;color:var(--tinta-suave);margin:0 0 12px;line-height:1.55}
.nota:last-child{margin-bottom:0}
.nota b{color:var(--tinta)}
.fuente{font-size:11.5px;color:var(--tinta-tenue);padding:10px 20px;background:var(--superficie-2);border-top:1px solid var(--borde-suave);line-height:1.5}
.fuente b{color:var(--tinta-suave);font-weight:500}
.mini{font-size:11px;color:var(--tinta-tenue)}
.panel .card>h2{font-size:13.5px}
.panel .card .cuerpo{padding:var(--e3) var(--e4)}

/* Indicadores grandes */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--borde-suave);border-bottom:1px solid var(--borde-suave)}
.kpi{background:var(--superficie);padding:14px 16px 15px;min-width:0}
.kpi .et{font-size:10.5px;color:var(--tinta-tenue);text-transform:uppercase;letter-spacing:.06em;font-weight:500;display:block;margin-bottom:6px}
.kpi .v{font-family:var(--fuente-titulo);font-size:23px;font-weight:300;color:var(--tinta);letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1.1}
.kpi .v small{font-size:12px;font-weight:500;color:var(--tinta-tenue);margin-left:3px}
.kpi .d{font-size:11.5px;font-weight:500;margin-top:5px;font-variant-numeric:tabular-nums;color:var(--tinta-tenue)}
.kpi .d span{color:var(--tinta-tenue);font-weight:400}
.dl{font-style:normal;font-weight:500}
.dl.sube,.sube{color:var(--verde)} .dl.baja,.baja{color:var(--critico)} .dl.igual,.igual{color:var(--tinta-tenue)}
.kpi .d .dl{margin-right:2px}

/* Tablas del presupuesto (ER, balance, mezclas) */
.tabla-env{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
table.p{width:100%;border-collapse:collapse;font-size:12.5px}
table.p th,table.p td{padding:6px 9px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--borde-suave)}
table.p th{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--tinta-tenue);font-weight:500;background:var(--superficie-2);position:sticky;top:0;z-index:2}
table.p th:first-child,table.p td:first-child{text-align:left;position:sticky;left:0;background:var(--superficie);z-index:1}
table.p th:first-child{z-index:3;background:var(--superficie-2)}
table.p td{font-variant-numeric:tabular-nums}
table.p tr.fuerte td{font-weight:500;color:var(--tinta);background:var(--superficie-2)}
table.p tr.sep td{border-top:1.5px solid var(--borde);padding-top:8px}
table.p tbody tr:hover td{background:color-mix(in srgb,var(--superficie-2) 70%,transparent)}
table.p td.pos{color:var(--verde)} table.p td.neg{color:var(--critico)} table.p td.nulo{color:var(--tinta-tenue)}
table.p td.sangria{padding-left:26px;color:var(--tinta-suave)}
table.p td.izq,table.p th.izq{text-align:left;white-space:normal}
table.p input{width:70px;text-align:right;padding:4px 6px;border:1px solid var(--borde);border-radius:6px;background:var(--superficie);color:var(--tinta);font-size:12.5px;font-variant-numeric:tabular-nums}
table.p input:focus{outline:none;border-color:var(--rojo);box-shadow:0 0 0 3px var(--rojo-suave)}
table.p input.w92{width:92px} table.p input.w58{width:58px}
table.p input.tocado{border-color:var(--rojo-tinta)}
table.p input[readonly]{opacity:.7;background:var(--hundido)}

/* Captura de premisas */
.bloque{border-bottom:1px solid var(--borde-suave)}
.bloque:last-child{border-bottom:none}
.bloque>summary{padding:12px 20px;cursor:pointer;font-weight:500;font-size:13.5px;color:var(--tinta);display:flex;align-items:center;gap:10px;list-style:none;user-select:none}
.bloque>summary::-webkit-details-marker{display:none}
.bloque>summary:hover{background:var(--superficie-2)}
.bloque>summary .fl{font-size:10px;color:var(--tinta-tenue);transition:transform .15s;width:9px}
.bloque[open]>summary .fl{transform:rotate(90deg)}
.bloque>summary .pr{margin-left:auto;font-size:11px;font-weight:400;color:var(--tinta-tenue);white-space:nowrap}
.bloque>summary .pr b{color:var(--verde);font-weight:500}
.bloque>summary .ale{background:var(--oro-suave);color:var(--oro);border-radius:99px;padding:1px 8px;font-size:10.5px;font-weight:500}
.bloque>summary .ale:empty{display:none}
.bloque .campos{padding:4px 20px 16px}
.bloque .acciones{display:flex;justify-content:flex-end;padding:0 20px 12px}
.campo{display:grid;grid-template-columns:minmax(0,1fr) 150px 100px;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--borde-suave)}
.campo:last-child{border-bottom:none}
.campo .lab{font-size:13px;line-height:1.35;min-width:0}
.campo .lab b{font-weight:500;color:var(--tinta)}
.campo .lab .ln{display:block;font-size:10.5px;color:var(--tinta-tenue);margin-top:1px}
.campo .lab .ay{display:block;font-size:11.5px;color:var(--tinta-suave);margin-top:2px;font-style:italic}
.campo .inp{display:flex;align-items:center;gap:4px}
.campo input{width:100%;text-align:right;padding:6px 8px;border:1px solid var(--borde);border-radius:6px;font-variant-numeric:tabular-nums;background:var(--superficie);color:var(--tinta);font-size:13px;min-width:0}
.campo input:focus{outline:none;border-color:var(--rojo);box-shadow:0 0 0 3px var(--rojo-suave)}
.campo input.tocado{border-color:var(--rojo-tinta);background:color-mix(in srgb,var(--rojo-suave) 40%,var(--superficie))}
.campo input[readonly]{background:var(--hundido);color:var(--tinta-suave);cursor:not-allowed}
.campo.derivado input{border-style:dashed}
.campo .uni{font-size:10.5px;color:var(--tinta-tenue);flex:0 0 auto;min-width:14px}
.campo .delta{font-size:11.5px;font-weight:500;text-align:right;font-variant-numeric:tabular-nums}
.campo .delta.sube{color:var(--verde)} .campo .delta.baja{color:var(--critico)} .campo .delta.igual{color:var(--tinta-tenue)}
.campo .delta .base{display:block;font-size:10px;font-weight:400;color:var(--tinta-tenue)}
.campo.mensual{grid-template-columns:minmax(0,1fr)}
.campo .meses{display:grid;grid-template-columns:repeat(12,1fr);gap:3px;margin-top:6px}
.campo .meses label{font-size:9.5px;color:var(--tinta-tenue);text-align:center;display:block}
.campo .meses input{padding:5px 2px;text-align:center;font-size:11px}
.campo.alertado input{border-color:var(--oro-marca)}
.campo .lab .delta{display:inline;font-style:normal;margin-left:6px}
.est .meses{grid-template-columns:repeat(12,1fr);gap:3px;display:grid}
.est .meses label{font-size:9.5px;color:var(--tinta-tenue);text-align:center;display:block}
.est .meses input{width:100%;padding:5px 2px;text-align:center;font-size:11px;border:1px solid var(--borde);border-radius:6px;background:var(--superficie);color:var(--tinta)}
@media (max-width:760px){
  .campo{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
  .campo .lab{grid-column:1/3}
  .campo .delta{text-align:right;white-space:nowrap}
  .campo .delta .base{display:inline;margin-left:7px}
  .campo .meses,.est .meses{grid-template-columns:repeat(4,1fr);gap:5px}
  .campo .meses label,.est .meses label{font-size:10px}
  .kpis{grid-template-columns:repeat(2,1fr)}
}

/* Avisos del auditor */
.aviso{border-left:3px solid var(--tinta-tenue);background:var(--superficie-2);border-radius:0 var(--r-md) var(--r-md) 0;padding:11px 14px;margin-bottom:9px}
.aviso.duro{border-left-color:var(--critico);background:var(--critico-suave)}
.aviso.alto{border-left-color:var(--oro-marca);background:var(--oro-suave)}
.aviso.bajo{border-left-color:var(--oro-marca);background:color-mix(in srgb,var(--oro-suave) 60%,var(--superficie-2))}
.aviso.info{border-left-color:var(--rojo);background:var(--rojo-suave)}
.aviso .cab{display:flex;align-items:center;gap:7px;margin-bottom:4px;flex-wrap:wrap}
.aviso .sev{font-size:9.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.aviso.duro .sev{color:var(--critico)} .aviso.alto .sev,.aviso.bajo .sev{color:var(--oro)} .aviso.info .sev{color:var(--rojo-tinta)}
.aviso .fte{font-size:9.5px;color:var(--tinta-tenue);text-transform:uppercase;letter-spacing:.06em;font-weight:500}
.aviso h4{margin:0 0 3px;font-size:13px;font-weight:500;color:var(--tinta);line-height:1.35;font-family:var(--fuente-texto)}
.aviso p{margin:0 0 4px;font-size:12.5px;line-height:1.5;color:var(--tinta-suave)}
.aviso p:last-child{margin-bottom:0}
.aviso .pre{color:var(--tinta-suave)} .aviso .pre b{font-weight:500;color:var(--tinta)}
.aviso .pg{color:var(--tinta);font-weight:500}
.aviso .ir{display:inline-block;color:var(--rojo-tinta);font-size:11.5px;padding:3px 0 0;font-weight:500;text-decoration:underline;text-underline-offset:3px}
.aviso.chico{padding:8px 12px;margin-bottom:6px} .aviso.chico h4{font-size:12.5px}

/* Gráficas */
.graf{width:100%;height:auto;display:block;overflow:visible}
.graf text{font-family:var(--fuente-texto);fill:var(--tinta-suave)}
.graf .ejeT{font-size:9.5px} .graf .valT{font-size:9px;fill:var(--tinta-tenue)}
.graf .rejilla{stroke:var(--borde-suave);stroke-width:1} .graf .cero{stroke:var(--borde);stroke-width:1.2}
.graf .liga{stroke:var(--borde)} .graf .pt{fill:var(--superficie)}
.graf .apT{font-size:9.5px;fill:#fff;font-weight:600} .graf .legT{font-size:9.5px}
.graf.dona .pista{stroke:var(--hundido)} .graf .donaV{font-size:25px;font-weight:300;fill:var(--tinta);font-family:var(--fuente-titulo)} .graf .donaE{font-size:9.5px;fill:var(--tinta-tenue)}
.grid2g{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:1px;background:var(--borde-suave)}
.grid2g>div{background:var(--superficie);padding:14px 18px 16px;min-width:0}
.grid2g h3{margin:0 0 3px;font-size:13px;font-weight:500;color:var(--tinta);font-family:var(--fuente-texto)}
.grid2g .sub{font-size:11.5px;color:var(--tinta-tenue);margin:0 0 11px}
.leyenda{display:flex;gap:13px;flex-wrap:wrap;font-size:11.5px;color:var(--tinta-suave);margin-top:9px}
.leyenda i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:4px;vertical-align:-1px}

/* Líneas del panel */
.erlin{display:flex;justify-content:space-between;gap:10px;padding:5px 0;font-size:12.5px;border-bottom:1px solid var(--borde-suave)}
.erlin:last-child{border-bottom:none}
.erlin.f{font-weight:500;color:var(--tinta);border-top:1.5px solid var(--borde);border-bottom:none;padding-top:7px;margin-top:3px}
.erlin .n{color:var(--tinta-suave);min-width:0} .erlin.f .n{color:var(--tinta)}
.erlin .n .mini{display:block}
.erlin .v{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tinta)}
.erlin .v em{font-style:normal;font-size:10.5px;color:var(--tinta-tenue);margin-left:5px}
.erlin .v em.sube{color:var(--verde)} .erlin .v em.baja{color:var(--critico)}

/* Seguimiento: qué revisar */
.rev{border-left:3px solid var(--tinta-tenue);padding:11px 14px;margin-bottom:9px;border-radius:0 var(--r-md) var(--r-md) 0;background:var(--superficie-2)}
.rev.critico{border-left-color:var(--critico);background:var(--critico-suave)}
.rev.revisar{border-left-color:var(--oro-marca);background:var(--oro-suave)}
.rev.favorable,.rev.ok{border-left-color:var(--verde);background:var(--verde-suave)}
.rev.señal{border-left-color:var(--rojo);background:var(--rojo-suave)}
.rev h4{margin:0 0 3px;font-size:13px;font-weight:500;color:var(--tinta);line-height:1.38;font-family:var(--fuente-texto)}
.rev p{margin:0 0 3px;font-size:12.5px;line-height:1.5;color:var(--tinta-suave)}
.rev .ac{color:var(--tinta);font-weight:500}
.rev .pz{font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--tinta-tenue);display:block;margin-bottom:3px}
.rev.critico .pz{color:var(--critico)} .rev.revisar .pz{color:var(--oro)} .rev.favorable .pz,.rev.ok .pz{color:var(--verde)} .rev.señal .pz{color:var(--rojo-tinta)}
.rev .ir{display:inline-block;color:var(--rojo-tinta);font-size:11.5px;padding:3px 0 0;font-weight:500;text-decoration:underline;text-underline-offset:3px}

/* Archivos */
.suelta{border:1.5px dashed var(--borde);border-radius:var(--r-lg);padding:22px 18px;text-align:center;background:var(--superficie-2);cursor:pointer;transition:.15s;position:relative}
.suelta:hover,.suelta.sobre{border-color:var(--rojo);background:var(--rojo-suave)}
.suelta b{display:block;font-size:13.5px;color:var(--tinta);margin-bottom:3px}
.suelta span{font-size:12px;color:var(--tinta-suave)}
.suelta input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.lista-arch{list-style:none;margin:12px 0 0;padding:0}
.lista-arch li{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--borde-suave);font-size:13px}
.lista-arch li:last-child{border-bottom:none}
.lista-arch li.inactivo{opacity:.6}
.lista-arch .ico{width:34px;height:34px;border-radius:8px;background:var(--rojo-suave);color:var(--rojo-tinta);display:grid;place-items:center;font-size:9.5px;font-weight:600;flex-shrink:0;letter-spacing:.04em}
.lista-arch .nom{flex:1;min-width:0}
.lista-arch .nom b{display:block;font-weight:500;color:var(--tinta);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lista-arch .nom span{font-size:11.5px;color:var(--tinta-tenue)}
.lista-arch .acc{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.tag{display:inline-block;font-size:10.5px;font-weight:500;padding:1.5px 8px;border-radius:99px;background:var(--hundido);color:var(--tinta-suave);white-space:nowrap}
.tag.v{background:var(--verde-suave);color:var(--verde)} .tag.r{background:var(--critico-suave);color:var(--critico)} .tag.a{background:var(--oro-suave);color:var(--oro)} .tag.b{background:var(--rojo-suave);color:var(--rojo-tinta)}
.vacio{text-align:center;padding:30px 20px;color:var(--tinta-tenue);font-size:13px}

/* Planeación */
.form-lin{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--borde-suave)}
.form-lin:last-child{border-bottom:none}
.form-lin .lab b{display:block;font-weight:500;color:var(--tinta);font-size:13px}
.form-lin .lab span{display:block;font-size:11.5px;color:var(--tinta-tenue);margin-top:1px;line-height:1.4}
.form-lin .input,.form-lin .select{min-height:40px;font-size:14px}
@media (max-width:760px){.form-lin{grid-template-columns:minmax(0,1fr)}}
.tabla-env table.p td .mini{display:block;white-space:normal}

/* Tablero del grupo */
.tabla-grupo td .barra{height:5px;width:90px;background:var(--hundido);border-radius:99px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:6px}
.tabla-grupo td .barra i{display:block;height:100%;background:var(--rojo);border-radius:99px}
.sel-emp{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.sel-emp a.card{display:flex;flex-direction:column;gap:6px;padding:16px 18px;text-decoration:none;color:inherit}
.sel-emp a.card:hover{border-color:var(--rojo)}
.sel-emp .nombre{font-family:var(--fuente-titulo);font-size:17px;font-weight:400}
.sel-emp .sub{font-size:12.5px;color:var(--tinta-tenue)}

/* Informe para el consejo (impresión) */
.informe{max-width:1100px;margin:0 auto;padding:32px;font-size:12.5px;color:var(--tinta)}
.informe h1{font-family:var(--fuente-titulo);font-weight:300;font-size:28px;margin:0 0 4px}
.informe h2{font-family:var(--fuente-titulo);font-weight:400;font-size:17px;margin:28px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--borde)}
.informe .portada{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;border-bottom:2px solid var(--tinta);padding-bottom:14px}
.informe table.p{font-size:11.5px}
.informe .aviso{break-inside:avoid}
@media print{
  html[data-theme]{--papel:#fff;--superficie:#fff;--superficie-2:#f4f6f9;--tinta:#111;--tinta-suave:#444;--tinta-tenue:#777;--borde:#ccc;--borde-suave:#e2e2e2;--hundido:#eee}
  body{background:#fff!important;color:#111}
  .topbar,.rail,.toast,.alerts-panel,.no-print,.btn,.btn-row{display:none!important}
  .app{display:block} main{overflow:visible} .page{padding:0;max-width:none}
  .card{box-shadow:none;break-inside:avoid;border-color:#ccc} .cols{grid-template-columns:1fr} aside.panel{position:static}
  .informe{padding:0}
  table.p th{position:static} table.p td:first-child,table.p th:first-child{position:static}
  .bux-ambient{display:none!important}
}
