/* ==========================================================================
   Editor sections: Príjmy, Náklady (flows.js), Úvery (loans.js), Situácie (situations.js)
   All classes are prefixed .ed2-. Colours only through app.css tokens.
   ========================================================================== */

/* ---------- Shared ---------- */
.ed2 { display: flex; flex-direction: column; gap: 24px; min-width: 0; }
.ed2 > .section-header { margin-bottom: 0; }
.ed2-h3 { margin: 0 0 2px; font-size: 16px; font-weight: 650; line-height: 1.3; }
.ed2-h4 { margin: 0 0 4px; font-size: 13.5px; font-weight: 650; line-height: 1.35; }
.ed2-block { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.ed2-block-head { min-width: 0; }
.ed2-span-2 { grid-column: 1 / -1; }
.ed2-pad { margin: 0; padding: 12px 14px; }
.ed2-note-host:empty { display: none; }

.ed2-chart-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
  gap: 16px;
  min-width: 0;
}
.ed2-chart-grid[hidden] { display: none; }

.ed2-empty-charts {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-lg);
  background: var(--surface);
  color: var(--text-2);
  font-size: 13.5px;
}
.ed2-empty-charts[hidden] { display: none; }
.ed2-empty-charts .icon { flex: none; color: var(--muted); }

/* Note that sums include saved situations */
.ed2-situations-note {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  margin: 0;
  padding: 6px 8px 6px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--accent-soft);
  color: var(--text);
  font-size: 13px;
  line-height: 1.4;
}
.ed2-situations-note > .icon { flex: none; color: var(--link); }
.ed2-situations-note > span { flex: 1 1 220px; min-width: 0; }

/* Footer lines under tables */
.ed2-foot { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px 18px; font-variant-numeric: tabular-nums; }
.ed2-foot strong { color: var(--text); font-weight: 650; }
.ed2-foot .text-bad, .ed2-foot .text-good { font-weight: 650; }

/* Month cell with an explicit "empty" meaning (od začiatku / do konca) */
.ed2-month { display: flex; flex: 1 1 auto; width: 100%; min-width: 0; }
.ed2-month > .month-input { flex: 1 1 auto; min-width: 0; }
.ed2-month.is-empty .month-input-year { display: none; }
.ed2-month.is-empty .month-input-month { color: var(--text-2); }
.ed2 .rt-custom > .input-affix, .ed2 .rt-custom > select, .ed2 .rt-custom > .ed2-month { flex: 1 1 auto; min-width: 0; }

/* Expandable row details (flows + events) */
.ed2-details { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.ed2-sentence-box {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 10px 12px;
  border-radius: var(--radius);
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text);
}
.ed2-sentence-box > .icon { flex: none; margin-top: 2px; color: var(--link); }
.ed2-sentence { margin: 0; font-size: 13.5px; line-height: 1.5; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ed2-details-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap: 16px 20px;
  align-items: start;
  min-width: 0;
}
.ed2-details-block { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ed2-details-block[hidden], .ed2-details .field[hidden], .ed2-details .field-hint[hidden], .ed2-freq-note[hidden] { display: none; }
.ed2-freq-note { margin: 0; }
.ed2-details textarea.input { min-height: 60px; }

/* Plots checklist (perHa flows) */
.ed2-plots-head { gap: 8px; }
.ed2-plot-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr));
  gap: 6px 14px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}
.ed2-plot-check { min-width: 0; }
.ed2-plot-check .checkbox-label { overflow-wrap: anywhere; }
.ed2-plots-sum { font-size: 13px; font-variant-numeric: tabular-nums; }
.ed2-plots > p { margin: 0; }

/* ---------- Príjmy / Náklady ---------- */
.ed2-summary .kpi-value { font-variant-numeric: tabular-nums; }

.ed2-table-block { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.ed2-table-head { align-items: flex-end; gap: 10px 16px; }
.ed2-table-head > div:first-child { flex: 1 1 320px; min-width: 0; }

.ed2-chips { align-items: center; }
.ed2-chips[hidden] { display: none; }
.ed2-chips-label { display: inline-flex; align-items: center; gap: 4px; margin-right: 2px; font-size: 12.5px; font-weight: 600; color: var(--text-2); }
.ed2-chip-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 18px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--surface-3);
  color: var(--text-2);
  font-size: 11.5px;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
}
.chip.is-active .ed2-chip-count { background: var(--surface); color: var(--link); }

.ed2-yearly { display: inline-flex; flex-direction: column; align-items: flex-end; line-height: 1.15; }
.ed2-yearly-from { font-size: 11.5px; font-weight: 500; color: var(--text-2); }
@container rt (max-width: 719px) {
  .ed2-yearly { align-items: flex-start; }
}

.ed2-auto-host:empty { display: none; }
.ed2-auto-card .table-wrap { border-left: 0; border-right: 0; border-bottom: 0; border-radius: 0 0 var(--radius-lg) var(--radius-lg); }
.ed2-auto-card .data-table td:nth-child(2) { white-space: normal; }
.ed2-auto-empty {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0;
  padding: 10px 12px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  color: var(--text-2);
  font-size: 13px;
  line-height: 1.45;
}
.ed2-auto-empty > .icon { flex: none; margin-top: 2px; color: var(--muted); }

/* ---------- Úvery ---------- */
.ed2-add-buttons { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.empty-actions .ed2-add-buttons { justify-content: center; }
.ed2-fin-alerts { display: flex; flex-direction: column; gap: 10px; }
.ed2-fin-alerts:empty { display: none; }
.ed2-fin .chart-card[hidden] { display: none; }

.ed2-loan-list { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.ed2-loan { container: ed2loan / inline-size; }
.ed2-loan.is-off { border-style: dashed; }
.ed2-loan.is-off .ed2-loan-body { opacity: 0.72; }
.ed2-loan-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 16px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--border);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
  background: var(--surface-2);
}
.ed2-loan-heading { display: flex; align-items: center; gap: 12px; min-width: 0; flex: 1 1 260px; }
.ed2-loan-icon {
  display: grid;
  place-items: center;
  flex: none;
  width: 36px;
  height: 36px;
  border-radius: var(--radius);
  background: var(--accent-soft);
  color: var(--link);
}
.ed2-loan-titles { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ed2-loan-title { margin: 0; font-size: 16px; font-weight: 650; line-height: 1.3; overflow-wrap: anywhere; }
.ed2-loan-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.ed2-loan-actions { display: flex; align-items: center; gap: 6px; }
.ed2-loan-actions .toggle { margin-right: 6px; font-size: 13.5px; }

.ed2-loan-body { display: flex; flex-direction: column; gap: 22px; padding: 18px 20px 20px; min-width: 0; }
.ed2-loan-main { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; min-width: 0; }
.ed2-loan-form {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));
  gap: 14px 16px;
  align-content: start;
  min-width: 0;
}
.ed2-loan-preview { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.ed2-loan-kpis { grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); gap: 10px; }
.ed2-loan-kpis:empty { display: none; }
.ed2-loan-kpis .kpi { box-shadow: none; background: var(--surface-2); }
.ed2-loan-kpis .kpi-value { font-size: 19px; font-variant-numeric: tabular-nums; }
.ed2-loan-alerts { display: flex; flex-direction: column; gap: 8px; }
.ed2-loan-alerts:empty { display: none; }
@container ed2loan (min-width: 900px) {
  .ed2-loan-main { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: start; }
  .ed2-loan-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container ed2loan (max-width: 560px) {
  .ed2-loan-body { padding: 14px 14px 16px; }
  .ed2-loan-head { padding: 12px 14px; }
}

.ed2-loan-nested {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
  gap: 20px;
  min-width: 0;
}
.ed2-nested-block { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ed2-nested-block > p { margin: 0 0 4px; }

/* Collapsible blocks (amortization, calculator, glossary) */
.ed2-amort, .ed2-glossary { border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); min-width: 0; }
.ed2-amort-summary,
.ed2-calc-summary,
.ed2-glossary > summary {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
  padding: 10px 14px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  list-style: none;
  border-radius: var(--radius);
}
.ed2-amort-summary::-webkit-details-marker,
.ed2-calc-summary::-webkit-details-marker,
.ed2-glossary > summary::-webkit-details-marker { display: none; }
.ed2-amort-summary::after,
.ed2-calc-summary::after,
.ed2-glossary > summary::after {
  content: "";
  flex: none;
  width: 7px;
  height: 7px;
  margin-left: auto;
  border-right: 2px solid var(--text-2);
  border-bottom: 2px solid var(--text-2);
  transform: translateY(-2px) rotate(45deg);
  transition: transform 0.15s;
}
details[open] > .ed2-amort-summary::after,
details[open] > .ed2-calc-summary::after,
.ed2-glossary[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
.ed2-amort-summary:hover, .ed2-calc-summary:hover, .ed2-glossary > summary:hover { background: var(--surface-2); }
.ed2-amort-summary:focus-visible, .ed2-calc-summary:focus-visible, .ed2-glossary > summary:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--focus-ring); }
.ed2-amort-summary .muted, .ed2-calc-summary .muted { font-weight: 450; }
.ed2-amort-summary > .icon, .ed2-calc-summary > .icon { color: var(--text-2); }

.ed2-amort-wrap { border-left: 0; border-right: 0; border-bottom: 0; border-radius: 0 0 var(--radius) var(--radius); }
.ed2-amort-table td { font-variant-numeric: tabular-nums; }
.ed2-amort-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin: -2px 0;
  padding: 2px 6px 2px 2px;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text);
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
.ed2-amort-toggle:hover { background: var(--surface-3); }
.ed2-amort-toggle:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--focus-ring); }
.ed2-amort-toggle .icon { color: var(--text-2); }
.ed2-amort-month td:first-child { padding-left: 34px; }
.ed2-amort-month td { font-size: 12.5px; }
.ed2-tag {
  display: inline-flex;
  align-items: center;
  height: 18px;
  margin-left: 6px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--warning-soft);
  color: var(--warning-text);
  font-size: 11px;
  font-weight: 600;
  vertical-align: middle;
}
.data-table tr.ed2-horizon-sep td {
  padding-top: 7px;
  padding-bottom: 7px;
  background: var(--surface-2);
  color: var(--text-2);
  font-size: 12.5px;
  text-align: left;
  white-space: normal;
  border-top: 1px dashed var(--border-strong);
}

/* Mortgage calculator */
.ed2-calc > .ed2-calc-summary { border-radius: var(--radius-lg); }
.ed2-calc[open] > .ed2-calc-summary { border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.ed2-calc-summary { padding: 14px 20px; }
.ed2-calc-body { display: flex; flex-direction: column; gap: 14px; padding: 4px 20px 20px; }
.ed2-calc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 190px), 1fr)); gap: 14px 16px; }
.ed2-calc-out { display: flex; flex-wrap: wrap; gap: 10px; }
.ed2-calc-result {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 150px;
  flex: 1 1 150px;
  padding: 10px 14px;
  border-radius: var(--radius);
  background: var(--surface-2);
}
.ed2-calc-result strong { font-size: 18px; font-weight: 650; font-variant-numeric: tabular-nums; }
@media (max-width: 640px) {
  .ed2-calc-summary { padding: 12px 16px; }
  .ed2-calc-body { padding: 4px 16px 16px; }
}

/* ---------- Situácie ---------- */
.ed2-sit { container: ed2sit / inline-size; }
.ed2-sit-top { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.ed2-sit-main { display: contents; }
.ed2-card-globals { order: 1; }
.ed2-sit-aside { order: 2; min-width: 0; }
.ed2-card-presets { order: 3; }
@container ed2sit (min-width: 860px) {
  .ed2-sit-top { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); align-items: start; }
  .ed2-sit-main { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
}

/* Global modifiers */
.ed2-mod-list { display: flex; flex-direction: column; gap: 6px; }
.ed2-mod-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 124px;
  align-items: end;
  gap: 2px 16px;
  padding: 10px 12px;
  border-radius: var(--radius);
  transition: background-color 0.15s, box-shadow 0.15s;
}
.ed2-mod-row .slider-value { display: none; }
.ed2-mod-row .slider-label { font-size: 13.5px; }
.ed2-mod-row.is-changed { background: var(--accent-soft); box-shadow: inset 3px 0 0 var(--accent); }
.ed2-mod-num { padding-bottom: 0; }
.ed2-mod-num .input { height: 34px; }
.ed2-mod-hint { grid-column: 1 / -1; margin: 4px 0 0; font-size: 12.5px; line-height: 1.4; color: var(--text-2); }
@container ed2sit (max-width: 420px) {
  .ed2-mod-row { grid-template-columns: minmax(0, 1fr) 104px; gap: 2px 10px; padding: 8px; }
}

/* Presets */
.ed2-presets { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: 10px; }
.ed2-preset {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  min-width: 0;
  padding: 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background-color 0.15s, border-color 0.15s, box-shadow 0.15s;
}
.ed2-preset:hover:not(:disabled) { background: var(--surface-2); border-color: var(--accent); }
.ed2-preset:focus-visible { outline: none; box-shadow: 0 0 0 3px var(--focus-ring); }
.ed2-preset:disabled { cursor: not-allowed; opacity: 0.65; }
.ed2-preset.is-applied { border-color: var(--accent); background: var(--accent-soft); }
.ed2-preset-icon {
  display: grid;
  place-items: center;
  flex: none;
  width: 32px;
  height: 32px;
  border-radius: var(--radius);
  background: var(--surface-2);
  color: var(--text-2);
}
.ed2-preset.is-applied .ed2-preset-icon { background: var(--surface); color: var(--link); }
.ed2-preset-body { display: flex; flex-direction: column; gap: 3px; flex: 1 1 auto; min-width: 0; }
.ed2-preset-title { font-size: 13.5px; font-weight: 600; line-height: 1.35; }
.ed2-preset-text { font-size: 12.5px; line-height: 1.4; color: var(--text-2); }
.ed2-preset > .badge { flex: none; }

/* Per-category factors */
.ed2-cat-all[hidden] { display: none; }
.ed2-cat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); gap: 20px 28px; }
.ed2-cat-col { container: ed2cat / inline-size; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ed2-cat-col > p { margin: 0; }
.ed2-cat-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 30px;
  align-items: center;
  gap: 6px;
  padding: 6px 4px 6px 10px;
  border-radius: var(--radius);
  transition: background-color 0.15s, box-shadow 0.15s;
}
.ed2-cat-row.is-changed { background: var(--accent-soft); box-shadow: inset 3px 0 0 var(--accent); }
.ed2-cat-row .slider {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(96px, 1.1fr) 64px;
  align-items: center;
  gap: 2px 12px;
}
.ed2-cat-row .slider-head { display: contents; }
.ed2-cat-row .slider-label { order: 1; display: flex; flex-direction: column; gap: 1px; min-width: 0; font-size: 13px; font-weight: 550; }
.ed2-cat-row .slider-input { order: 2; min-width: 0; }
.ed2-cat-row .slider-value { order: 3; text-align: right; font-size: 13px; font-weight: 600; }
.ed2-cat-row:not(.is-changed) .slider-value { color: var(--text-2); font-weight: 500; }
.ed2-cat-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ed2-cat-amount { font-size: 11.5px; font-weight: 450; color: var(--text-2); font-variant-numeric: tabular-nums; }
.ed2-cat-reset.is-invisible { visibility: hidden; }
.ed2-cat-reset-ph { width: 30px; }
@container ed2cat (max-width: 360px) {
  .ed2-cat-row .slider { grid-template-columns: minmax(0, 1fr) auto; }
  .ed2-cat-row .slider-input { order: 3; grid-column: 1 / -1; }
  .ed2-cat-row .slider-value { order: 2; }
}

/* Impact panel */
.ed2-active { display: flex; flex-direction: column; gap: 8px; }
.ed2-active-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.ed2-impact-table .data-table th[scope="row"] { min-width: 118px; font-weight: 550; color: var(--text); white-space: normal; cursor: help; }
.ed2-impact-table .data-table { font-size: 13px; }
.ed2-impact-table .data-table td { font-variant-numeric: tabular-nums; }
.ed2-impact-table .data-table td.text-bad, .ed2-impact-table .data-table td.text-good { font-weight: 650; }
.ed2-card-impact .chart-card { padding: 12px; box-shadow: none; }
.ed2-card-impact .chart-card[hidden] { display: none; }
.ed2-glossary > summary { font-size: 13px; font-weight: 550; color: var(--text-2); }
.ed2-glossary-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; margin: 0; padding: 0 14px 12px; font-size: 12.5px; line-height: 1.45; }
.ed2-glossary-list dt { margin-top: 8px; font-weight: 650; color: var(--text); }
.ed2-glossary-list dd { margin: 0; color: var(--text-2); }

.ed2-card-events .card-body { min-width: 0; }

/* ---------- Print ---------- */
@media print {
  .ed2-add-buttons, .ed2-calc, .ed2-chips, .ed2-presets, .ed2-cat-reset, .ed2-amort-toggle .icon { display: none !important; }
  .ed2-loan { break-inside: avoid; }
}
