/* Flujo de caja · JC Innovation — línea gráfica Oppermando (tokens Transcript) */
:root {
  --brand-50:#eef2ff; --brand-100:#e0e7ff; --brand-200:#c7d2fe; --brand-300:#a5b4fc;
  --brand-400:#818cf8; --brand-500:#6366f1; --brand-600:#4f46e5; --brand-700:#4338ca;
  --brand-800:#3730a3; --brand-900:#312e81;
  --c-bg:#020617; --c-panel:#0f172a; --c-panel2:#1e293b; --c-panel3:#334155;
  --c-brd:#1e293b; --c-brd2:#334155;
  --c-txt:#e2e8f0; --c-txt2:#94a3b8; --c-txt3:#64748b;
  --c-ok:#10b981; --c-warn:#f59e0b; --c-err:#ef4444; --c-info:#38bdf8;
  --r-card:1rem; --r-ctl:.5rem;
  --font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--c-bg);color:var(--c-txt);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;color:#fff;font-weight:800;letter-spacing:-.01em}
h1{font-size:1.75rem}h2{font-size:1.4rem}h3{font-size:1.18rem}h4{font-size:1rem}
p{margin:0 0 .6rem}
a{color:var(--brand-300)}
button,input,select,textarea{font-family:inherit;font-size:1rem}
[hidden]{display:none!important}

/* topbar */
/* Barra superior fija. Su altura NO es constante: envuelve en dos filas cuando no
   caben el escenario, las acciones y el menú de usuario. `--fc-top-h` la publica
   app.js midiéndola, y la barra de pestañas se ancla ahí (antes usaba un `57px`
   fijo y las pestañas quedaban escondidas debajo). */
.fc-top{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  padding:.7rem 1.1rem;background:#020617;border-bottom:1px solid var(--c-brd)}
.fc-brand{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:1.05rem;color:#fff;white-space:nowrap}
.fc-logo{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-700));box-shadow:0 4px 14px -4px rgba(99,102,241,.7);font-size:1.1rem}
.fc-brand small{display:block;font-weight:500;font-size:.95rem;color:var(--c-txt3);letter-spacing:0}
.fc-top-mid{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.fc-top-actions{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin-left:auto}
.fc-save{display:inline-flex;align-items:center;gap:.35rem;font-size:.95rem;color:var(--c-txt3);white-space:nowrap}
.fc-save.ok{color:#6ee7b7}
.fc-save .dot{width:8px;height:8px;border-radius:50%;background:currentColor;display:inline-block}

/* tabs */
/* Pestañas: pegadas JUSTO debajo de la barra superior, sea cual sea su altura.
   El -1px evita una línea de 1px por redondeo; el fondo es opaco para que el
   contenido no se transparente al pasar por debajo. */
.fc-tabs{display:flex;gap:.4rem;overflow-x:auto;padding:.55rem 1.1rem;border-bottom:1px solid var(--c-brd);
  position:sticky;top:calc(var(--fc-top-h, 64px) - 1px);z-index:36;background:#020617}
.fc-tab{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .9rem;border-radius:.55rem;
  border:1px solid var(--c-brd2);background:var(--c-panel);color:var(--c-txt2);cursor:pointer;
  font-weight:600;white-space:nowrap;transition:.12s}
.fc-tab:hover{color:#fff;border-color:var(--brand-500);background:var(--c-panel2)}
.fc-tab.act{background:var(--brand-600);border-color:var(--brand-600);color:#fff;box-shadow:0 4px 14px -6px rgba(99,102,241,.8)}
.fc-tab .n{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;
  background:rgba(255,255,255,.13);font-size:.85rem;font-weight:800}

/* layout */
.fc-main{max-width:1600px;margin:0 auto;padding:1.1rem 1.1rem 4rem}
.fc-head{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.fc-head p{color:var(--c-txt3);margin:.2rem 0 0;max-width:75ch}
.fc-head-actions{margin-left:auto;display:flex;gap:.5rem;flex-wrap:wrap}
.fc-section{margin:1.1rem 0}
.fc-section-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:0 0 .7rem}
.fc-section-head h2{font-size:1.18rem}
.fc-grid{display:grid;gap:1rem}
.fc-grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.fc-grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.fc-grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1100px){.fc-grid.c3,.fc-grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.fc-grid.c2,.fc-grid.c3,.fc-grid.c4{grid-template-columns:1fr}}

/* cards */
.fc-card{background:var(--c-panel);border:1px solid var(--c-brd);border-radius:var(--r-card);padding:1rem}
.fc-card.pad-lg{padding:1.2rem 1.3rem}
.fc-card-title{display:flex;align-items:center;gap:.5rem;font-weight:800;color:#fff;margin-bottom:.5rem}
.fc-card-sub{color:var(--c-txt3);font-size:.95rem}
.fc-card.tone-ok{border-color:rgba(16,185,129,.45);background:linear-gradient(160deg,rgba(16,185,129,.10),transparent 55%),var(--c-panel)}
.fc-card.tone-warn{border-color:rgba(245,158,11,.45);background:linear-gradient(160deg,rgba(245,158,11,.10),transparent 55%),var(--c-panel)}
.fc-card.tone-err{border-color:rgba(239,68,68,.45);background:linear-gradient(160deg,rgba(239,68,68,.10),transparent 55%),var(--c-panel)}
.fc-card.tone-brand{border-color:rgba(99,102,241,.5);background:linear-gradient(160deg,rgba(99,102,241,.16),transparent 55%),var(--c-panel)}

/* botones / inputs */
.fc-btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.5rem .9rem;
  border-radius:var(--r-ctl);font-weight:600;cursor:pointer;border:1px solid var(--c-brd2);
  background:var(--c-panel2);color:var(--c-txt2);transition:.12s;white-space:nowrap}
.fc-btn:hover{background:var(--c-panel3);color:#fff}
.fc-btn.primary{background:var(--brand-600);border-color:transparent;color:#fff}
.fc-btn.primary:hover{background:var(--brand-700)}
.fc-btn.ok{background:rgba(16,185,129,.16);border-color:rgba(16,185,129,.5);color:#6ee7b7}
.fc-btn.ok:hover{background:rgba(16,185,129,.28);color:#d1fae5}
.fc-btn.warn{background:rgba(245,158,11,.13);border-color:rgba(245,158,11,.5);color:#fcd34d}
.fc-btn.warn:hover{background:rgba(245,158,11,.24);color:#fde68a}
.fc-btn.danger{background:transparent;border-color:rgba(239,68,68,.5);color:#fca5a5}
.fc-btn.danger:hover{background:rgba(239,68,68,.16);color:#fecaca}
.fc-btn.ghost{background:transparent}
.fc-btn.sm{padding:.3rem .6rem;font-size:.95rem}
.fc-btn.xl{padding:.8rem 1.1rem;font-size:1.05rem;border-radius:.7rem}
.fc-btn.block{width:100%}
.fc-btn:disabled,.fc-btn[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.5)}
.fc-icon-btn{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border-radius:.5rem;
  border:1px solid var(--c-brd2);background:var(--c-panel2);color:var(--c-txt2);cursor:pointer;transition:.12s}
.fc-icon-btn:hover{color:#fff;border-color:var(--brand-500);background:var(--c-panel3)}
.fc-icon-btn.danger:hover{color:#fca5a5;border-color:rgba(239,68,68,.6);background:rgba(239,68,68,.12)}
.fc-input,.fc-select,.fc-textarea{width:100%;background:var(--c-panel2);border:1px solid var(--c-brd2);
  color:var(--c-txt);border-radius:var(--r-ctl);padding:.45rem .65rem;outline:none;transition:.12s}
.fc-input:focus,.fc-select:focus,.fc-textarea:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px rgba(99,102,241,.2)}
.fc-input.num{text-align:right;font-variant-numeric:tabular-nums}
.fc-input.sm{padding:.25rem .45rem;font-size:.95rem}
.fc-field{display:flex;flex-direction:column;gap:.3rem}
.fc-field>label{font-size:.92rem;color:var(--c-txt3);font-weight:600}
.fc-inline{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.fc-check{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;color:var(--c-txt2)}
.fc-check input{width:18px;height:18px;accent-color:var(--brand-500)}

/* badges / chips */
.fc-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .6rem;border-radius:999px;
  font-size:.92rem;font-weight:700;white-space:nowrap}
.fc-badge.ok{color:#6ee7b7;background:rgba(16,185,129,.16)}
.fc-badge.warn{color:#fcd34d;background:rgba(245,158,11,.16)}
.fc-badge.err{color:#fca5a5;background:rgba(239,68,68,.16)}
.fc-badge.info{color:#7dd3fc;background:rgba(56,189,248,.14)}
.fc-badge.idle{color:var(--c-txt2);background:rgba(148,163,184,.14)}
.fc-badge.brand{color:var(--brand-200);background:rgba(99,102,241,.2)}
.fc-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.12rem .55rem;border-radius:8px;
  font-size:.92rem;font-weight:600;color:var(--c-txt2);background:var(--c-panel2);border:1px solid var(--c-brd)}
.fc-chip.ok{color:#6ee7b7;border-color:rgba(16,185,129,.4);background:rgba(16,185,129,.08)}
.fc-chip.warn{color:#fcd34d;border-color:rgba(245,158,11,.4);background:rgba(245,158,11,.08)}
.fc-chip.err{color:#fca5a5;border-color:rgba(239,68,68,.4);background:rgba(239,68,68,.08)}
.fc-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 auto}
.fc-dot.green{background:#22c55e}.fc-dot.amber{background:#f59e0b}.fc-dot.red{background:#ef4444}

/* KPI */
.fc-kpi{display:flex;flex-direction:column;gap:.15rem}
.fc-kpi .lbl{font-size:.95rem;color:var(--c-txt3);font-weight:600}
.fc-kpi .val{font-size:1.75rem;font-weight:800;color:#fff;font-variant-numeric:tabular-nums;line-height:1.15}
.fc-kpi .val.err{color:#fca5a5}.fc-kpi .val.ok{color:#6ee7b7}.fc-kpi .val.warn{color:#fcd34d}
.fc-kpi .sub{font-size:.92rem;color:var(--c-txt3)}

/* tables */
.fc-table{width:100%;border-collapse:collapse}
.fc-table th{text-align:left;padding:.55rem .6rem;background:#16233a;color:var(--c-txt3);
  font-size:.88rem;text-transform:uppercase;letter-spacing:.04em;font-weight:700;
  border-bottom:1px solid var(--c-brd);white-space:nowrap;position:sticky;top:0;z-index:2}
.fc-table td{padding:.45rem .6rem;border-bottom:1px solid rgba(30,41,59,.7);vertical-align:middle}
.fc-table tbody tr:hover td{background:rgba(30,41,59,.35)}
.fc-table td.num,.fc-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.fc-table tfoot td{font-weight:800;background:rgba(30,41,59,.55);border-top:2px solid var(--c-brd2)}
.fc-table tr.grp td{background:rgba(99,102,241,.10);font-weight:800;color:#fff;text-transform:uppercase;
  font-size:.85rem;letter-spacing:.05em}
.fc-table tr.total td{background:rgba(99,102,241,.13);font-weight:800;color:#fff;border-top:2px solid var(--c-brd2)}
.fc-table tr.muted td{color:var(--c-txt2)}
.fc-scroll{overflow:auto;max-width:100%;border:1px solid var(--c-brd);border-radius:12px}
.fc-scroll.tall{max-height:72vh}

/* resumen */
.fc-answers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
@media(max-width:900px){.fc-answers{grid-template-columns:1fr}}
.fc-answer{position:relative;border-radius:1rem;padding:1.1rem 1.2rem;border:1px solid var(--c-brd);
  background:var(--c-panel);overflow:hidden}
.fc-answer::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:var(--brand-500)}
.fc-answer.ok::before{background:#22c55e}.fc-answer.warn::before{background:#f59e0b}.fc-answer.err::before{background:#ef4444}
.fc-answer .q{display:flex;align-items:center;gap:.45rem;font-size:.95rem;font-weight:700;color:var(--c-txt3);
  text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}
.fc-answer .a{font-size:1.5rem;font-weight:800;color:#fff;line-height:1.2;font-variant-numeric:tabular-nums}
.fc-answer .a.big{font-size:1.95rem}
.fc-answer .d{color:var(--c-txt2);margin-top:.35rem;font-size:.98rem}
.fc-answer .d b{color:#fff}
.fc-band{display:grid;grid-template-columns:repeat(24,1fr);gap:3px;margin:.6rem 0 0}
.fc-band .b{height:10px;border-radius:3px;background:var(--c-panel3);cursor:pointer}
.fc-band .b.green{background:#22c55e}.fc-band .b.amber{background:#f59e0b}.fc-band .b.red{background:#ef4444}
.fc-band .b:hover{outline:2px solid #fff;outline-offset:1px}
.fc-band-lbl{display:grid;grid-template-columns:repeat(24,1fr);gap:3px;color:var(--c-txt3);font-size:.78rem;text-align:center;margin-top:2px}
.fc-narrative{display:flex;flex-direction:column;gap:.5rem}
.fc-narrative p{margin:0;padding-left:1rem;border-left:3px solid var(--brand-600);color:#cbd5e1}
.fc-narrative p b{color:#fff}

/* calendario */
.fc-cal{overflow-x:auto;border:1px solid var(--c-brd);border-radius:12px;background:var(--c-panel)}
.fc-cal-inner{min-width:1180px;padding:.6rem}
.fc-cal-head{display:grid;grid-template-columns:240px 1fr;gap:.4rem;align-items:end;
  background:var(--c-panel);z-index:5;padding-bottom:.35rem}
.fc-cal-years,.fc-cal-months{display:grid;grid-template-columns:repeat(24,1fr)}
.fc-cal-years>div{grid-column:span 12;text-align:center;font-weight:800;color:#c7d2fe;font-size:.9rem;
  border-bottom:1px solid var(--c-brd2);padding-bottom:.15rem}
.fc-cal-months>div{text-align:center;font-size:.8rem;color:var(--c-txt3);padding-top:.25rem;
  border-left:1px solid rgba(51,65,85,.6)}
.fc-cal-row{display:grid;grid-template-columns:240px 1fr;gap:.4rem;border-top:1px solid rgba(30,41,59,.8);padding:.3rem 0}
.fc-cal-name{min-width:0;padding-right:.3rem}
.fc-cal-name .n{font-size:.95rem;font-weight:700;color:#e2e7f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fc-cal-name .m{font-size:.85rem;color:var(--c-txt3)}
.fc-cal-track{display:grid;grid-template-columns:repeat(24,1fr);align-items:stretch;min-height:44px;position:relative}
.fc-cal-cell{border-left:1px solid rgba(51,65,85,.45);position:relative;display:flex;flex-direction:column;
  justify-content:space-between;padding:1px;cursor:pointer}
.fc-cal-cell:hover{background:rgba(99,102,241,.10)}
.fc-cal-cell .in,.fc-cal-cell .out{height:9px;border-radius:2px;width:100%}
.fc-cal-cell .in{background:linear-gradient(90deg,#10b981,#34d399);align-self:flex-start}
.fc-cal-cell .out{background:linear-gradient(90deg,#ef4444,#f87171);align-self:flex-end}
.fc-cal-mark{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:10px;color:#e2e8f0;
  background:#0b1220;border:1px solid var(--c-brd2);border-radius:50%;width:17px;height:17px;display:grid;place-items:center}
.fc-cal-legend{display:flex;gap:1rem;flex-wrap:wrap;color:var(--c-txt3);font-size:.9rem;margin-top:.5rem}
.fc-cal-legend b{color:#e2e8f0}
.fc-cap{display:grid;grid-template-columns:repeat(24,1fr);gap:3px;margin-top:.4rem}
.fc-cap .c{height:22px;border-radius:4px;background:var(--c-panel2);display:grid;place-items:center;
  font-size:.75rem;color:var(--c-txt2);font-weight:700}
.fc-cap .c.hot{background:rgba(239,68,68,.35);color:#fecaca}
.fc-cap .c.warm{background:rgba(245,158,11,.3);color:#fde68a}

/* curva */
.fc-chart-wrap{position:relative;background:var(--c-panel);border:1px solid var(--c-brd);border-radius:12px;padding:.5rem}
.fc-chart{width:100%;height:auto;display:block}
.fc-chart .grid-l{stroke:rgba(51,65,85,.55);stroke-width:1}
.fc-chart .axis-t{fill:#94a3b8;font-size:11px}
.fc-chart .zero{stroke:#64748b;stroke-width:1.2;stroke-dasharray:4 3}
.fc-chart .colchon{stroke:#f59e0b;stroke-width:1.5;stroke-dasharray:6 4}
.fc-chart .cash{fill:none;stroke:#818cf8;stroke-width:3;stroke-linejoin:round}
.fc-chart .area{fill:url(#cashgrad);opacity:.55}
.fc-chart .pt{cursor:pointer}
.fc-chart .pt:hover{stroke:#fff;stroke-width:2}
.fc-chart .yr{stroke:#6366f1;stroke-width:1.5;stroke-dasharray:3 4;opacity:.8}
.fc-tip{position:absolute;z-index:5;pointer-events:none;background:#0b1220;border:1px solid var(--c-brd2);
  border-radius:10px;padding:.45rem .6rem;font-size:.9rem;color:#e2e8f0;box-shadow:0 8px 22px rgba(0,0,0,.5);max-width:280px}
.fc-tip b{color:#fff}

/* flujo mensual
   Tabla ancha de 24 meses con tres zonas FIJAS: la columna de conceptos (izquierda),
   el encabezado de meses (arriba) y la columna de total (derecha). Todas usan fondo
   OPACO: con transparencia se veía pasar el contenido por debajo al hacer scroll y
   parecía un error de render.
   Ojo: `position: relative` en cualquier `th` anula el `sticky` (misma especificidad,
   gana la regla que va después). Aquí no se declara. */
.fc-month-table{border-collapse:separate;border-spacing:0;min-width:100%}
.fc-month-table th,.fc-month-table td{padding:.36rem .42rem;border-bottom:1px solid #1b2740;
  white-space:nowrap;font-variant-numeric:tabular-nums}
/* Cabecera: UNA fila, fija arriba. */
.fc-month-table thead th{position:sticky;top:0;z-index:6;background:#111c30;color:#94a3b8;
  font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;text-align:right;
  border-bottom:1px solid #334155}
.fc-month-table th.sem{position:sticky;top:0;cursor:pointer}
.fc-month-table th.sem:hover{background:#16233a;color:#fff}
.fc-month-table th .th-mes{display:block;font-weight:700}
.fc-month-table th .th-anio{display:block;font-size:.66rem;color:#64748b;letter-spacing:.06em;font-weight:600}
/* Esquina superior izquierda y superior derecha: las dos son sticky en 2 ejes. */
.fc-month-table thead th.lbl{left:0;z-index:9;text-align:left;min-width:210px;
  box-shadow:8px 0 10px -8px rgba(0,0,0,.85)}
.fc-month-table thead th.tot{right:0;z-index:9;min-width:120px;border-left:1px solid #334155;
  box-shadow:-8px 0 10px -8px rgba(0,0,0,.85)}
/* Columna de conceptos y de total, fijas y opacas. */
/* La columna fija se Pinta por debajo de las celdas de datos salvo en su banda
   (z-index menor) para que la sombra no tape el número del primer mes visible;
   la opacidad es lo que evita ver el contenido debajo. */
.fc-month-table tbody td.lbl{position:sticky;left:0;z-index:5;background:#0f172a;text-align:left;
  font-weight:600;color:#cbd5e1;min-width:210px;max-width:290px;
  border-right:1px solid #334155;
  box-shadow:8px 0 10px -8px rgba(0,0,0,.85)}
.fc-month-table tbody td.tot{position:sticky;right:0;z-index:5;background:#0f172a;font-weight:800;
  color:#fff;border-left:1px solid #334155;min-width:120px;
  box-shadow:-8px 0 10px -8px rgba(0,0,0,.85)}
/* Los rellenos de grupo no son sticky, pero también opacos (nada de ver el fondo). */
.fc-month-table tr.grp td.lbl,.fc-month-table tr.grp td.grp-fill{background:#152140}
.fc-month-table tr.grp td.grp-fill{border-bottom:1px solid #2b3a5c}
.fc-month-table td.num{text-align:right}
.fc-month-table tr.grp td.lbl{color:#c7d2fe;font-weight:800;font-size:.82rem;
  text-transform:uppercase;letter-spacing:.05em}
.fc-month-table tr.sub td{font-weight:800;background:#16233a;color:#fff}
.fc-month-table tr.sub td.lbl,.fc-month-table tr.sub td.tot{background:#16233a}
.fc-month-table tr.total-row td{background:#1b2748;font-weight:800;color:#fff}
.fc-month-table tr.total-row td.lbl,.fc-month-table tr.total-row td.tot{background:#1b2748}
.fc-month-table tr.caja td{background:#0d2b33;font-weight:800;color:#ccfbf1}
.fc-month-table tr.caja td.lbl,.fc-month-table tr.caja td.tot{background:#0d2b33}
.fc-month-table tbody tr:hover td{background:#1a2740}
.fc-month-table tbody tr:hover td.lbl,.fc-month-table tbody tr:hover td.tot{background:#1e2b47}
.fc-month-table td.neg{color:#fca5a5}
.fc-month-table td.pos{color:#6ee7b7}
.fc-month-table .fc-cero{color:#3f4d63}
.fc-month-table th .dotm{position:absolute;left:50%;transform:translateX(-50%);bottom:1px;
  width:6px;height:6px;border-radius:50%}
.fc-month-table th .dotm.green{background:#22c55e}
.fc-month-table th .dotm.amber{background:#f59e0b}
.fc-month-table th .dotm.red{background:#ef4444}

/* ajustes / palancas */
.fc-actions-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem}
@media(max-width:1100px){.fc-actions-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.fc-actions-grid{grid-template-columns:1fr 1fr}}
.fc-action{display:flex;flex-direction:column;gap:.25rem;align-items:flex-start;text-align:left;
  padding:.9rem;border-radius:.8rem;border:1px solid var(--brand-800);
  background:linear-gradient(160deg,rgba(99,102,241,.17),transparent 70%),var(--c-panel);
  color:#e2e8f0;cursor:pointer;transition:.13s}
.fc-action:hover{border-color:var(--brand-500);transform:translateY(-1px);box-shadow:0 8px 22px -12px rgba(99,102,241,.8)}
.fc-action .ic{font-size:1.4rem}
.fc-action .t{font-weight:800;color:#fff}
.fc-action .d{font-size:.88rem;color:var(--c-txt3)}
.fc-impact{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}
@media(max-width:900px){.fc-impact{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fc-impact .i{background:var(--c-panel2);border:1px solid var(--c-brd);border-radius:.7rem;padding:.55rem .7rem}
.fc-impact .i .l{font-size:.85rem;color:var(--c-txt3)}
.fc-impact .i .v{font-size:1.15rem;font-weight:800;color:#fff;font-variant-numeric:tabular-nums}

/* escenarios */
.fc-scn{display:flex;flex-direction:column;gap:.35rem;padding:.8rem;border-radius:.8rem;border:1px solid var(--c-brd);
  background:var(--c-panel)}
.fc-scn.act{border-color:var(--brand-500);box-shadow:0 0 0 2px rgba(99,102,241,.25)}
.fc-scn .h{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.fc-scn .h b{color:#fff}
.fc-scn .meta{font-size:.88rem;color:var(--c-txt3)}
.fc-cmp td:first-child{color:var(--c-txt3);font-weight:600}

/* modales / drawer / toasts */
.fc-modal{position:fixed;inset:0;z-index:80;display:none;background:rgba(2,6,23,.78);padding:1rem}
.fc-modal.open{display:grid;place-items:center;overflow:auto}
.fc-modal-box{width:min(980px,100%);max-height:92vh;display:flex;flex-direction:column;background:var(--c-panel);
  border:1px solid var(--c-brd);border-radius:1rem;box-shadow:0 25px 50px -12px rgba(0,0,0,.6);overflow:hidden}
.fc-modal-box.wide{width:min(1320px,100%)}
.fc-modal-head{display:flex;align-items:center;gap:.75rem;padding:.9rem 1.1rem;border-bottom:1px solid var(--c-brd);
  background:var(--c-panel)}
.fc-modal-head h3{flex:1;min-width:0;font-size:1.12rem}
.fc-modal-x{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:999px;
  border:1px solid var(--c-brd2);background:var(--c-panel2);color:var(--c-txt2);font-size:1.1rem;cursor:pointer;flex:0 0 auto}
.fc-modal-x:hover{color:#fff;border-color:var(--brand-500)}
.fc-modal-body{padding:1rem 1.1rem;overflow:auto}
.fc-modal-foot{display:flex;gap:.6rem;justify-content:flex-end;flex-wrap:wrap;padding:.8rem 1.1rem;
  border-top:1px solid var(--c-brd);background:var(--c-panel2)}
.fc-drawer{position:fixed;top:0;right:0;bottom:0;z-index:85;width:min(820px,100%);background:var(--c-panel);
  border-left:1px solid var(--c-brd2);box-shadow:-20px 0 45px rgba(0,0,0,.45);display:flex;flex-direction:column;
  transform:translateX(102%);transition:transform .18s ease}
.fc-drawer.open{transform:translateX(0)}
.fc-toasts{position:fixed;top:1rem;right:1rem;z-index:120;display:flex;flex-direction:column;gap:.5rem;max-width:380px}
.fc-toast{display:flex;align-items:flex-start;gap:.5rem;padding:.65rem .8rem;border-radius:.7rem;
  background:#0b1220;border:1px solid var(--c-brd2);box-shadow:0 12px 30px rgba(0,0,0,.5);animation:fc-in .18s ease-out}
.fc-toast.ok{border-color:rgba(16,185,129,.55)}.fc-toast.err{border-color:rgba(239,68,68,.55)}
.fc-toast .tt{font-weight:800;color:#fff;font-size:.95rem}
.fc-toast .tm{color:var(--c-txt2);font-size:.9rem}
.fc-toast button{margin-left:auto;background:none;border:0;color:var(--c-txt3);cursor:pointer;font-size:1rem}
@keyframes fc-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}

/* misc */
.fc-empty{padding:2rem;text-align:center;color:var(--c-txt3)}
.fc-divider{height:1px;background:var(--c-brd);margin:1rem 0}
.fc-note{border-left:3px solid var(--brand-600);padding:.4rem .8rem;color:var(--c-txt2);background:rgba(99,102,241,.07);border-radius:0 .5rem .5rem 0}
.fc-note.warn{border-color:#f59e0b;background:rgba(245,158,11,.08)}
.fc-note.err{border-color:#ef4444;background:rgba(239,68,68,.08)}
.fc-mono{font-variant-numeric:tabular-nums}
.fc-muted{color:var(--c-txt3)}
.fc-right{text-align:right}
.fc-nowrap{white-space:nowrap}
.fc-flex{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.fc-mt{margin-top:.7rem}.fc-mb{margin-bottom:.7rem}
.fc-big{font-size:1.25rem;font-weight:800;color:#fff}
.fc-neg{color:#fca5a5}.fc-pos{color:#6ee7b7}
.fc-tag-serv{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:.1rem .4rem;border-radius:5px}
.fc-tag-serv.congreso{background:rgba(99,102,241,.2);color:#c7d2fe}
.fc-tag-serv.streaming{background:rgba(56,189,248,.16);color:#7dd3fc}
.fc-tag-serv.sas{background:rgba(16,185,129,.16);color:#6ee7b7}
.fc-tag-serv.otro{background:rgba(148,163,184,.16);color:#cbd5e1}
.fc-sub-row td{background:rgba(2,6,23,.35)}
.fc-sub-row td:first-child{padding-left:2rem!important}
.fc-mini{font-size:.85rem;color:var(--c-txt3)}
.fc-kv{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;font-size:.95rem}
.fc-kv dt{color:var(--c-txt3)}.fc-kv dd{margin:0;color:#e2e8f0;font-weight:600}
.fc-scroll-x{overflow-x:auto}
.fc-table-actions{display:flex;gap:.3rem}
.fc-w-90{width:90px}.fc-w-110{width:110px}.fc-w-130{width:130px}.fc-w-150{width:150px}
.fc-costos-head{display:grid;grid-template-columns:1.4fr .8fr 1fr auto;gap:.5rem;align-items:center}
body.fc-present .fc-no-present{display:none!important}
body.fc-present .fc-main{max-width:1800px}
body.fc-present .fc-answer .a.big{font-size:2.2rem}

@media print{
  body{background:#fff;color:#111}
  .fc-top,.fc-tabs,.fc-toasts,.fc-btn,.fc-icon-btn{display:none!important}
  .fc-main{max-width:none;padding:0}
  .fc-card,.fc-answer{border-color:#ccc;background:#fff;color:#111;break-inside:avoid}
  .fc-card-title,.fc-answer .a,h1,h2,h3,h4{color:#111}
  .fc-table th{background:#eee;color:#111}
  .fc-table td{border-color:#ddd;color:#111}
  .fc-chart .cash{stroke:#4338ca}
}

/* Iconos SVG en línea (sustituyen a los emojis: el contenedor no trae glifos
   de color y salían como cuadros vacíos). */
.fc-ico{width:1.15em;height:1.15em;flex:0 0 auto;vertical-align:-.2em}
.fc-btn .fc-ico{width:1.05em;height:1.05em}
.fc-tab .fc-ico{width:1.1em;height:1.1em;opacity:.9}
.fc-action .ic .fc-ico{width:26px;height:26px}
.fc-action .ic{display:inline-flex;align-items:center;justify-content:center}
.fc-icobox{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;
  background:rgba(99,102,241,.16);border:1px solid rgba(99,102,241,.35);color:#c7d2fe;flex:0 0 auto}
.fc-icobox .fc-ico{width:17px;height:17px}
.fc-badge .fc-ico{width:.95em;height:.95em}
.fc-toast .fc-ico{width:20px;height:20px;margin-top:2px}
.fc-toast.ok .fc-ico{color:#6ee7b7}
.fc-toast.err .fc-ico{color:#fca5a5}
.fc-cal-mark .fc-ico{width:11px;height:11px}
.fc-cal-legend .fc-ico{width:14px;height:14px;color:#94a3b8}
.fc-note .fc-ico{width:1.1em;height:1.1em;color:#fcd34d}
.fc-legend-dot{display:inline-flex;align-items:center;gap:.35rem}

/* Ficha de contrato (pestaña Datos): rejilla propia en lugar de una fila ancha. */
.fc-grp-title{margin:1.1rem 0 .5rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.06em;
  color:#a5b4fc;border-bottom:1px solid var(--c-brd);padding-bottom:.3rem}
.fc-ficha{background:var(--c-panel);border:1px solid var(--c-brd);border-radius:.85rem;padding:.75rem .9rem;
  margin-bottom:.6rem;transition:border-color .13s}
.fc-ficha:hover{border-color:var(--c-brd2)}
.fc-ficha-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.6rem}
.fc-ficha-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.55rem .8rem}
.fc-ficha-grid .fc-input,.fc-ficha-grid .fc-select{padding:.35rem .55rem;font-size:.96rem}
.fc-fx>span{font-size:.86rem}

/* ============================================================
   Acceso (login, mi cuenta, usuarios) — prefijo au-
   ============================================================ */
.au-body{min-height:100vh;background:
  radial-gradient(1000px 420px at 50% -10%,rgba(99,102,241,.22),transparent 62%),var(--c-bg)}
.au-wrap{min-height:100vh;display:grid;place-items:center;padding:1.2rem}
.au-wrap-wide{display:block;max-width:1180px;margin:0 auto;padding:1.2rem 1.2rem 4rem}
.au-card{width:min(440px,100%);background:var(--c-panel);border:1px solid var(--c-brd);
  border-radius:1rem;padding:1.4rem 1.5rem;box-shadow:0 25px 50px -18px rgba(0,0,0,.6)}
.au-wrap-wide .au-card{width:100%;margin-bottom:1rem}
.au-brand{display:flex;align-items:center;gap:.7rem;margin-bottom:1.1rem}
.au-logo{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;flex:0 0 auto;
  background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;
  box-shadow:0 6px 16px -6px rgba(99,102,241,.8)}
.au-title{font-size:1.45rem;line-height:1.15}
.au-sub{color:var(--c-txt3);font-size:.95rem;margin:.15rem 0 0}
.au-h2{font-size:1.1rem;margin:1.3rem 0 .6rem}
.au-form{display:flex;flex-direction:column;gap:.8rem;margin-top:.4rem}
.au-form .fc-field>span{font-size:.92rem;color:var(--c-txt2);font-weight:600}
.au-submit{margin-top:.4rem;padding:.7rem 1rem;font-size:1.02rem}
.au-foot{margin:1rem 0 0;font-size:.86rem;color:var(--c-txt3);line-height:1.5}
.au-alert{margin:.8rem 0 0}
.au-topbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.au-inline{display:inline-flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin:0}
.au-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem .9rem}
.au-grid2 .au-span2{grid-column:1 / -1}
.au-mt{margin-top:.8rem}
@media(max-width:700px){.au-grid2{grid-template-columns:1fr}.au-wrap-wide{padding:1rem .8rem 3rem}}

/* Menú de usuario en la barra superior de la calculadora */
.fc-user{display:inline-flex;align-items:center;gap:.5rem;padding:.2rem .3rem .2rem .55rem;
  border:1px solid var(--c-brd2);border-radius:999px;background:var(--c-panel2)}
.fc-user .who{display:flex;flex-direction:column;line-height:1.12;min-width:0}
.fc-user .who b{font-size:.9rem;color:#fff;font-weight:700;max-width:190px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.fc-user .who span{font-size:.76rem;color:var(--c-txt3)}
.fc-user .avatar{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;
  background:var(--brand-600);color:#fff;font-weight:800;font-size:.82rem;flex:0 0 auto}
.fc-user a{text-decoration:none}
@media(max-width:900px){.fc-user .who{display:none}}

/* Formulario en línea dentro de la barra superior (Salir). */
.fc-inline-form{display:inline-flex;align-items:center;margin:0}

/* El selector de rol de la tabla necesita ancho para leerse («Administrador»). */
.au-card .fc-table .fc-select.sm{min-width:150px}
.au-topbar{justify-content:flex-start}
.au-topbar form.au-inline{display:inline-flex}

/* Formulario de cambio de contraseña en la tabla: campo arriba, acciones abajo. */
.au-passform{display:flex;flex-direction:column;gap:.35rem;min-width:200px;margin:0}
/* Los botones de acción de la tabla no se estiran a lo ancho de la celda. */
.au-card .fc-table td .fc-btn.sm{justify-self:start;width:auto}
.au-card .fc-table td .fc-btn.sm.danger{margin-left:0}
.au-passform-row{display:flex;align-items:center;gap:.5rem;justify-content:space-between}
.au-card .fc-table td:last-child{padding-right:.9rem}
.au-card .fc-table .fc-flex{gap:.4rem}

/* ============================================================
   Guía de uso (prefijo gc-) y aviso de modelo vacío
   ============================================================ */
.fc-guia-intro{border-left:3px solid var(--brand-600);background:rgba(99,102,241,.09);
  border-radius:0 .7rem .7rem 0;padding:.8rem 1rem;color:#cbd5e1;margin:0 0 1rem;max-width:110ch}
.fc-guia-intro b{color:#fff}
.fc-pasos{display:flex;flex-direction:column;gap:.7rem}
.fc-paso{display:flex;gap:.9rem;background:var(--c-panel);border:1px solid var(--c-brd);
  border-radius:.9rem;padding:.9rem 1rem;transition:border-color .13s}
.fc-paso:hover{border-color:var(--c-brd2)}
.fc-paso-num{flex:0 0 auto;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;
  background:rgba(99,102,241,.18);border:1px solid rgba(99,102,241,.5);color:#c7d2fe;
  font-weight:800;font-size:1.05rem}
.fc-paso-cuerpo{flex:1;min-width:0}
.fc-paso-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.3rem}
.fc-paso-head h3{font-size:1.06rem}
.fc-paso-que{margin:0 0 .35rem;color:#cbd5e1;max-width:105ch}
.fc-paso-por{margin:0;font-size:.93rem;color:var(--c-txt3);max-width:105ch}
.fc-paso-por b{color:#a5b4fc}
.fc-eleccion{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.7rem;margin-top:.5rem}
.fc-eleccion>div{display:flex;flex-direction:column;gap:.35rem;align-items:flex-start;
  background:var(--c-panel2);border:1px solid var(--c-brd);border-radius:.7rem;padding:.75rem .85rem}
.fc-eleccion b{color:#fff}
.fc-eleccion span{font-size:.92rem;color:var(--c-txt3)}
.fc-lista{margin:.2rem 0 0;padding-left:1.15rem;color:#cbd5e1;display:flex;flex-direction:column;gap:.35rem}
.fc-lista li{font-size:.96rem}
.fc-lista b{color:#fff}
@media(max-width:700px){.fc-paso{flex-direction:column;gap:.5rem}
  .fc-paso-head .fc-btn{margin-left:0!important;width:100%}}

/* Aviso de modelo vacío: dice qué falta y lleva al paso 1. */
.fc-vacio-datos{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  border:1px solid rgba(245,158,11,.45);background:rgba(245,158,11,.10);
  border-radius:.8rem;padding:.8rem 1rem;margin:0 0 1rem}
.fc-vacio-datos>div{display:flex;flex-direction:column;gap:.15rem;flex:1;min-width:240px}
.fc-vacio-datos b{color:#fcd34d}
.fc-vacio-datos span{color:#cbd5e1;font-size:.94rem}
