:root{
  --bg:#0f1419; --panel:#171e26; --panel-2:#1f2832; --borde:#2c3845;
  --texto:#e6edf3; --texto-2:#9fb0c0; --tenue:#6b7d8f;
  --acento:#4fb3ff;
  --serie-2:#f0883e;     /* segunda serie de la gráfica comparativa */
  --ok:#3fb950; --alerta:#d29922; --falla:#f85149;
  --mono:'JetBrains Mono','Consolas',monospace;
  --sans:'Inter','Segoe UI',system-ui,sans-serif;
  --radio:10px;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--texto);font:15px/1.55 var(--sans);}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;}
i{font-family:var(--mono);font-style:italic;}

/* ---------- Encabezado ---------- */
.encabezado{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:flex-end;
  padding:20px 24px 16px;border-bottom:1px solid var(--borde);}
.encabezado h1{margin:0;font-size:26px;letter-spacing:.5px;}
.norma{font:12px var(--mono);color:var(--acento);border:1px solid var(--borde);border-radius:999px;
  padding:3px 10px;margin-left:10px;vertical-align:middle;white-space:nowrap;}
.subtitulo{margin:2px 0 0;color:var(--texto-2);}
.resumen{margin:2px 0 0;color:var(--tenue);font-size:14px;max-width:70ch;}
.acciones{display:flex;flex-wrap:wrap;gap:8px;}

/* ---------- Distribución ---------- */
.rejilla{display:grid;grid-template-columns:minmax(300px,35fr) 65fr;gap:16px;padding:16px 24px 32px;align-items:start;}
.entradas,.salidas{display:flex;flex-direction:column;gap:16px;min-width:0;}
.entradas{position:sticky;top:16px;}
@media (max-width:900px){
  .rejilla{grid-template-columns:1fr;padding:12px 16px 24px;}
  .entradas{position:static;}
  .encabezado{padding:16px;}
}

.tarjeta{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);padding:16px 20px;min-width:0;}
.tarjeta h2{margin:0 0 10px;font-size:15px;font-weight:600;color:var(--texto);}
.destacada{border-color:var(--acento);}
.tarjeta-mapa{padding:0;overflow:hidden;}
#mapa{height:460px;width:100%;cursor:crosshair;background:var(--panel-2);}
@media (max-width:900px){#mapa{height:340px;}}

/* ---------- Formularios ---------- */
label{display:block;margin:12px 0 4px;color:var(--texto-2);font-size:13px;}
.tarjeta h2 + label{margin-top:0;}
.unidad{color:var(--tenue);font-family:var(--mono);font-size:12px;}
select,input[type=text]{width:100%;background:var(--panel-2);color:var(--texto);border:1px solid var(--borde);
  border-radius:6px;padding:7px 10px;font:14px var(--sans);}
select{font-family:var(--mono);}
select:focus,input:focus,button:focus-visible{outline:2px solid var(--acento);outline-offset:1px;}
.fila{display:flex;gap:8px;}
.fila input{flex:1;min-width:0;}
button{background:var(--acento);color:#06121c;border:1px solid var(--acento);border-radius:6px;padding:7px 14px;
  font:600 14px var(--sans);cursor:pointer;white-space:nowrap;}
button.secundario{background:transparent;color:var(--acento);border-color:var(--borde);}
button:disabled{background:var(--panel-2);color:var(--tenue);border-color:var(--borde);cursor:not-allowed;}
.ayuda{margin:10px 0 0;color:var(--tenue);font-size:13px;}
.mensaje{margin:10px 0 0;font-size:13.5px;color:var(--texto-2);}
.mensaje.error{color:var(--falla);}
.salidas > .mensaje{margin:0;padding:0 4px;}

.datos{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0;}
.datos dt{color:var(--texto-2);font-size:13px;}
.datos dd{margin:0;text-align:right;}

/* ---------- Resultados ---------- */
.cifras{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;}
.cifra{background:var(--panel-2);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;}
.cifra-titulo{color:var(--texto-2);font-size:13px;}
.cifra-valor{font-size:30px;font-weight:600;line-height:1.25;color:var(--texto);}
.cifra-valor small{font-size:15px;color:var(--texto-2);font-weight:400;}
.cifra-nota{color:var(--tenue);font:12px var(--mono);}

/* ---------- Gráficas ---------- */
.grafica{position:relative;width:100%;}
.grafica svg{display:block;width:100%;height:auto;}
.g-rejilla{stroke:var(--borde);stroke-width:1;}
.g-eje{stroke:var(--tenue);stroke-width:1;}
.g-trazo{stroke:var(--acento);fill:none;stroke-linejoin:round;stroke-linecap:round;}
.g-trazo2{stroke:var(--serie-2);stroke-dasharray:7 4;}
.g-punto2{fill:var(--serie-2);}
.leyenda{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0 0 6px;color:var(--texto-2);font-size:13px;}
.leyenda svg{display:inline-block;width:26px;height:8px;vertical-align:middle;margin-right:4px;}
.etiqueta-sector{background:#171e26;color:#e6edf3;border:1px solid #4fb3ff;border-radius:4px;padding:1px 6px;
  font:600 11px 'Consolas',monospace;box-shadow:none;}
.etiqueta-sector::before{display:none;}
.g-texto{fill:var(--texto-2);font:11px var(--mono);}
.g-titulo-eje{fill:var(--texto-2);font:12px var(--sans);}
.g-vacio{fill:var(--tenue);font:13px var(--sans);}
.g-punto{fill:var(--acento);stroke:var(--panel);stroke-width:2;}
.g-etiqueta{fill:var(--texto);font:11px var(--mono);}
.g-cursor{stroke:var(--texto-2);stroke-width:1;stroke-dasharray:3 3;}
.g-tooltip{position:absolute;pointer-events:none;background:var(--panel-2);border:1px solid var(--borde);
  border-radius:6px;padding:4px 8px;font:12px var(--mono);color:var(--texto);white-space:nowrap;z-index:5;}

/* ---------- Pasos ---------- */
.paso{border-left:2px solid var(--borde);padding:2px 0 2px 14px;margin:0 0 16px;}
.paso:last-child{margin-bottom:0;}
.paso-titulo{color:var(--texto-2);font-size:13.5px;margin:0 0 4px;}
.paso p.f{margin:0;font-family:var(--mono);font-size:13.5px;overflow-wrap:anywhere;}
.paso p.res{color:var(--acento);font-weight:600;}
.paso p.nota{margin:4px 0 0;color:var(--tenue);font-size:13px;}

/* ---------- Tablas ---------- */
summary{cursor:pointer;font-weight:600;}
.tabla-scroll{overflow-x:auto;margin-top:10px;}
table{border-collapse:collapse;width:100%;font:13px var(--mono);font-variant-numeric:tabular-nums;}
th,td{padding:4px 10px;text-align:right;border-bottom:1px solid var(--borde);}
th{color:var(--texto-2);font-weight:600;}
table.parametros{width:auto;margin:6px 0;}
table.parametros th,table.parametros td{text-align:center;}

.supuestos{margin:0;padding-left:18px;color:var(--texto-2);font-size:14px;}
.supuestos li{margin-bottom:4px;}

/* Controles de Leaflet acordes al tema */
.leaflet-container{font-family:var(--sans);}

/* ---------- Impresión: memoria de cálculo en fondo blanco ---------- */
@media print{
  :root{--bg:#fff;--panel:#fff;--panel-2:#f3f5f7;--borde:#c5ccd3;--texto:#000;--texto-2:#333;--tenue:#555;--acento:#0b5cad;--serie-2:#b8500f;}
  .no-imprimir,.leaflet-control-container{display:none !important;}
  body{font-size:11pt;}
  .encabezado{padding:0 0 8px;}
  .rejilla{display:block;padding:8px 0 0;}
  .entradas{position:static;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;}
  .salidas{display:block;}
  .tarjeta{break-inside:avoid;margin-bottom:10px;padding:10px 14px;}
  #mapa{height:300px;}
  #estado{display:none;}
  select{border:none;padding:0;appearance:none;-webkit-appearance:none;background:none;}
  .g-punto{stroke:#fff;}
  .tabla-scroll{overflow:visible;}
}
