/* ==========================================================================
   VENTUREITALICA — INTERACTIVE ENGINES
   IDONEITÀ eligibility wizard, CAPITALE STACK builder, TERRA territory
   matcher, PRONTEZZA readiness checklist, SOPRAVVIVENZA score,
   DOMANDA demand index, revenue modeller, repayment simulator.
   ========================================================================== */

.vi-tool {
  border: 1px solid var(--vi-rule);
  background: var(--vi-paper);
  box-shadow: var(--vi-shadow-1);
}
.vi-tool__head {
  padding: var(--vi-s6);
  border-bottom: 1px solid var(--vi-rule);
  background: var(--vi-linen);
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: var(--vi-s5); flex-wrap: wrap;
}
.vi-tool__mark {
  font-family: var(--vi-font-text);
  font-size: var(--vi-size-micro);
  text-transform: uppercase; letter-spacing: var(--vi-track-eyebrow);
  color: var(--vi-verdigris); display: block; margin-bottom: var(--vi-s2);
}
.vi-tool__title {
  font-family: var(--vi-font-heading);
  font-size: var(--vi-size-h3); font-weight: 700;
  letter-spacing: -0.018em; margin: 0;
}
.vi-tool__title sup { font-size: .42em; vertical-align: super; color: var(--vi-gold-700); font-family: var(--vi-font-text); }
.vi-tool__body { padding: var(--vi-s7) var(--vi-s6); }
.vi-tool__foot {
  padding: var(--vi-s5) var(--vi-s6);
  border-top: 1px solid var(--vi-rule);
  background: var(--vi-linen);
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--vi-s4); flex-wrap: wrap;
}

/* --------------------------------------------------------------------------
   PROGRESS RAIL
   -------------------------------------------------------------------------- */
.vi-wizard-rail {
  display: flex; gap: var(--vi-s1);
  margin-bottom: var(--vi-s7);
}
.vi-wizard-rail__seg {
  flex: 1; height: 4px; background: var(--vi-linen-deep);
  position: relative; overflow: hidden;
}
.vi-wizard-rail__seg.is-done { background: var(--vi-verdigris); }
.vi-wizard-rail__seg.is-current { background: var(--vi-verdigris-300); }
.vi-wizard-step-label {
  font-family: var(--vi-font-text);
  font-size: var(--vi-size-micro);
  text-transform: uppercase; letter-spacing: .14em;
  color: var(--vi-ink-400);
  display: flex; justify-content: space-between;
  margin-bottom: var(--vi-s3);
}

/* --------------------------------------------------------------------------
   WIZARD STEPS
   -------------------------------------------------------------------------- */
.vi-wizard__step { display: none; }
.vi-wizard__step.is-active { display: block; animation: vi-fade-up var(--vi-dur-3) var(--vi-ease-out) both; }
.vi-wizard__question {
  font-family: var(--vi-font-heading);
  font-size: var(--vi-size-h3);
  font-weight: 700; letter-spacing: -0.018em;
  line-height: 1.24;
  margin: 0 0 var(--vi-s3);
  max-width: 26ch;
}
.vi-wizard__hint { font-size: var(--vi-size-body-sm); color: var(--vi-ink-500); margin: 0 0 var(--vi-s6); max-width: 56ch; }

/* Option cards */
.vi-options { display: grid; gap: var(--vi-s3); }
.vi-options--2 { grid-template-columns: repeat(2, minmax(0,1fr)); }
.vi-options--3 { grid-template-columns: repeat(3, minmax(0,1fr)); }
@media (max-width: 720px) { .vi-options--2, .vi-options--3 { grid-template-columns: 1fr; } }

.vi-option {
  position: relative;
  display: flex; align-items: flex-start; gap: var(--vi-s4);
  padding: var(--vi-s5);
  border: 1px solid var(--vi-rule);
  background: var(--vi-paper);
  cursor: pointer; text-align: left;
  transition: all var(--vi-dur-2) var(--vi-ease);
  width: 100%;
}
.vi-option:hover { border-color: var(--vi-verdigris-300); background: var(--vi-verdigris-050); }
.vi-option.is-selected { border-color: var(--vi-verdigris); background: var(--vi-verdigris-050); box-shadow: inset 0 0 0 1px var(--vi-verdigris); }
.vi-option__mark {
  width: 20px; height: 20px; flex: none; margin-top: .12em;
  border: 1.5px solid var(--vi-rule); border-radius: 50%;
  display: grid; place-items: center;
  transition: all var(--vi-dur-1) var(--vi-ease);
}
.vi-option.is-selected .vi-option__mark { border-color: var(--vi-verdigris); background: var(--vi-verdigris); }
.vi-option__mark::after {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: #fff; opacity: 0; transition: opacity var(--vi-dur-1);
}
.vi-option.is-selected .vi-option__mark::after { opacity: 1; }
.vi-option--check .vi-option__mark { border-radius: var(--vi-radius-1); }
.vi-option--check.is-selected .vi-option__mark::after {
  width: 9px; height: 5px; border-radius: 0; background: none;
  border-left: 2px solid #fff; border-bottom: 2px solid #fff;
  transform: rotate(-45deg) translateY(-1px);
}
.vi-option__label { font-weight: 650; font-size: var(--vi-size-body-sm); color: var(--vi-ink); display: block; margin-bottom: 2px; }
.vi-option__desc { font-size: var(--vi-size-caption); color: var(--vi-ink-500); line-height: 1.5; margin: 0; }
.vi-option__flag {
  margin-left: auto; flex: none;
  font-family: var(--vi-font-text); font-size: var(--vi-size-micro);
  text-transform: uppercase; letter-spacing: var(--vi-track-caps); color: var(--vi-ink-300);
}

/* Wizard nav */
.vi-wizard__nav { display: flex; align-items: center; justify-content: space-between; gap: var(--vi-s4); }
.vi-wizard__count { font-family: var(--vi-font-text); font-size: var(--vi-size-caption); color: var(--vi-ink-400); letter-spacing: .06em; }

/* --------------------------------------------------------------------------
   RESULT PANEL
   -------------------------------------------------------------------------- */
.vi-result { display: none; }
.vi-result.is-active { display: block; animation: vi-fade-up var(--vi-dur-3) var(--vi-ease-out) both; }
.vi-result__score {
  display: flex; align-items: center; gap: var(--vi-s6);
  padding: var(--vi-s6);
  background: var(--vi-verdigris-050);
  border-left: 3px solid var(--vi-verdigris);
  margin-bottom: var(--vi-s7);
  flex-wrap: wrap;
}
.vi-result__score-num {
  font-family: var(--vi-font-heading);
  font-size: 3.4rem; font-weight: 700; line-height: 1;
  letter-spacing: -0.04em; color: var(--vi-verdigris);
  font-variant-numeric: lining-nums;
}
.vi-result__score-num small { font-size: .36em; color: var(--vi-ink-400); font-family: var(--vi-font-text); }
.vi-result__band {
  font-family: var(--vi-font-text); font-size: var(--vi-size-micro);
  text-transform: uppercase; letter-spacing: .14em;
  padding: .22rem .6rem; border-radius: var(--vi-radius-1);
  background: var(--vi-verdigris); color: #fff; display: inline-block; margin-bottom: var(--vi-s2);
}
.vi-result__band--caution { background: var(--vi-caution); }
.vi-result__band--critical { background: var(--vi-rust); }
.vi-result__band--strong { background: var(--vi-positive); }
.vi-result__verdict { font-family: var(--vi-font-heading); font-size: var(--vi-size-h4); font-weight: 700; margin: 0 0 var(--vi-s2); letter-spacing: -0.014em; }
.vi-result__note { font-size: var(--vi-size-body-sm); color: var(--vi-ink-500); margin: 0; max-width: 48ch; line-height: 1.55; }

.vi-result__section { margin-bottom: var(--vi-s7); }
.vi-result__section h4 {
  font-family: var(--vi-font-text); font-size: var(--vi-size-caption);
  font-weight: 700; text-transform: uppercase; letter-spacing: var(--vi-track-eyebrow);
  color: var(--vi-ink-400); padding-bottom: var(--vi-s2);
  border-bottom: 1px solid var(--vi-rule); margin: 0 0 var(--vi-s4);
}

/* --------------------------------------------------------------------------
   CAPITAL STACK BUILDER
   -------------------------------------------------------------------------- */
.vi-stack-viz { border: 1px solid var(--vi-rule); overflow: hidden; }
.vi-stack-layer {
  display: grid; grid-template-columns: 1fr auto;
  gap: var(--vi-s4); align-items: center;
  padding: var(--vi-s4) var(--vi-s5);
  border-bottom: 1px solid var(--vi-rule-light);
  position: relative;
  transition: background var(--vi-dur-1) var(--vi-ease);
}
.vi-stack-layer:last-child { border-bottom: 0; }
.vi-stack-layer:hover { background: var(--vi-linen); }
.vi-stack-layer::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: var(--vi-verdigris);
}
.vi-stack-layer[data-kind="grant"]::before   { background: var(--vi-gold); }
.vi-stack-layer[data-kind="loan"]::before    { background: var(--vi-verdigris); }
.vi-stack-layer[data-kind="guarantee"]::before { background: var(--vi-lapis); }
.vi-stack-layer[data-kind="equity"]::before  { background: var(--vi-plum); }
.vi-stack-layer[data-kind="own"]::before     { background: var(--vi-ink-300); }
.vi-stack-layer[data-kind="relief"]::before  { background: var(--vi-olive); }
.vi-stack-layer__name { font-weight: 650; font-size: var(--vi-size-body-sm); margin: 0 0 2px; }
.vi-stack-layer__meta { font-size: var(--vi-size-caption); color: var(--vi-ink-500); margin: 0; }
.vi-stack-layer__amt {
  font-family: var(--vi-font-text); font-size: 1.05rem;
  font-variant-numeric: tabular-nums; color: var(--vi-ink);
  white-space: nowrap; font-weight: 500;
}
.vi-stack-total {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: var(--vi-s4);
  padding: var(--vi-s5);
  background: var(--vi-verdigris); color: #fff;
}
.vi-stack-total__label { font-family: var(--vi-font-text); font-size: var(--vi-size-caption); text-transform: uppercase; letter-spacing: .14em; opacity: .82; }
.vi-stack-total__amt { font-family: var(--vi-font-heading); font-size: 2rem; font-weight: 700; letter-spacing: -0.03em; font-variant-numeric: lining-nums; }

/* Composition bar */
.vi-comp-bar { display: flex; height: 34px; overflow: hidden; margin-bottom: var(--vi-s3); }
.vi-comp-bar__seg { position: relative; transition: flex var(--vi-dur-4) var(--vi-ease-out); min-width: 2px; }
.vi-comp-legend { display: flex; flex-wrap: wrap; gap: var(--vi-s3) var(--vi-s5); font-size: var(--vi-size-caption); }
.vi-comp-legend__item { display: inline-flex; align-items: center; gap: .45em; color: var(--vi-ink-500); }
.vi-comp-legend__swatch { width: 10px; height: 10px; flex: none; }

/* --------------------------------------------------------------------------
   CHECKLIST (PRONTEZZA)
   -------------------------------------------------------------------------- */
.vi-checklist { border-top: 1px solid var(--vi-rule); }
.vi-check-item {
  display: flex; align-items: flex-start; gap: var(--vi-s4);
  padding: var(--vi-s4) 0;
  border-bottom: 1px solid var(--vi-rule-light);
}
.vi-check-item__box {
  width: 20px; height: 20px; flex: none; margin-top: .14em;
  border: 1.5px solid var(--vi-rule); border-radius: var(--vi-radius-2);
  background: none; cursor: pointer; display: grid; place-items: center;
  transition: all var(--vi-dur-1) var(--vi-ease);
}
.vi-check-item__box:hover { border-color: var(--vi-verdigris); }
.vi-check-item.is-done .vi-check-item__box { background: var(--vi-verdigris); border-color: var(--vi-verdigris); }
.vi-check-item__box::after {
  content: ""; width: 9px; height: 5px;
  border-left: 2px solid #fff; border-bottom: 2px solid #fff;
  transform: rotate(-45deg) translateY(-1px);
  opacity: 0; transition: opacity var(--vi-dur-1);
}
.vi-check-item.is-done .vi-check-item__box::after { opacity: 1; }
.vi-check-item__label { font-size: var(--vi-size-body-sm); font-weight: 600; margin: 0 0 2px; line-height: 1.42; }
.vi-check-item.is-done .vi-check-item__label { color: var(--vi-ink-400); text-decoration: line-through; }
.vi-check-item__meta { font-size: var(--vi-size-caption); color: var(--vi-ink-500); margin: 0; }
.vi-check-item__phase {
  margin-left: auto; flex: none;
  font-family: var(--vi-font-text); font-size: var(--vi-size-micro);
  text-transform: uppercase; letter-spacing: var(--vi-track-caps); color: var(--vi-ink-300);
  white-space: nowrap;
}
.vi-check-group__head {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--vi-s4);
  padding: var(--vi-s5) 0 var(--vi-s3);
  border-bottom: 2px solid var(--vi-ink);
  margin-top: var(--vi-s6);
}
.vi-check-group__title { font-family: var(--vi-font-heading); font-size: var(--vi-size-h4); font-weight: 700; margin: 0; }
.vi-check-group__count { font-family: var(--vi-font-text); font-size: var(--vi-size-caption); color: var(--vi-ink-400); }

/* --------------------------------------------------------------------------
   REVENUE / REPAYMENT MODELLER
   -------------------------------------------------------------------------- */
.vi-model-grid { display: grid; grid-template-columns: 340px minmax(0,1fr); gap: var(--vi-s8); align-items: start; }
@media (max-width: 900px) { .vi-model-grid { grid-template-columns: 1fr; } }

.vi-slider-field { margin-bottom: var(--vi-s5); }
.vi-slider-field__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--vi-s3); margin-bottom: var(--vi-s2); }
.vi-slider-field__label { font-size: var(--vi-size-caption); font-weight: 700; text-transform: uppercase; letter-spacing: var(--vi-track-caps); color: var(--vi-ink-700); }
.vi-slider-field__value { font-family: var(--vi-font-text); font-size: var(--vi-size-body-sm); color: var(--vi-verdigris); font-variant-numeric: tabular-nums; font-weight: 500; }
input[type="range"] {
  width: 100%; height: 4px; appearance: none; background: var(--vi-linen-deep);
  border-radius: 2px; outline: none; cursor: pointer; padding: 0; border: 0;
}
input[type="range"]::-webkit-slider-thumb {
  appearance: none; width: 18px; height: 18px; border-radius: 50%;
  background: var(--vi-verdigris); cursor: pointer; border: 2px solid #fff;
  box-shadow: var(--vi-shadow-1);
}
input[type="range"]::-moz-range-thumb {
  width: 18px; height: 18px; border-radius: 50%;
  background: var(--vi-verdigris); cursor: pointer; border: 2px solid #fff;
}
input[type="range"]:focus { box-shadow: none; }

.vi-outcome-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px,1fr)); gap: 1px; background: var(--vi-rule); border: 1px solid var(--vi-rule); }
.vi-outcome { background: var(--vi-paper); padding: var(--vi-s5); }
.vi-outcome__label { font-family: var(--vi-font-text); font-size: var(--vi-size-micro); text-transform: uppercase; letter-spacing: .12em; color: var(--vi-ink-400); display: block; margin-bottom: var(--vi-s2); }
.vi-outcome__value { font-family: var(--vi-font-heading); font-size: 1.66rem; font-weight: 700; letter-spacing: -0.028em; color: var(--vi-ink); line-height: 1; font-variant-numeric: lining-nums; }
.vi-outcome__value.is-positive { color: var(--vi-positive); }
.vi-outcome__value.is-negative { color: var(--vi-rust); }
.vi-outcome__sub { font-size: var(--vi-size-caption); color: var(--vi-ink-400); margin-top: var(--vi-s2); }

/* Year-by-year chart */
.vi-chart { display: flex; align-items: flex-end; gap: 4px; height: 200px; padding-top: var(--vi-s5); border-bottom: 1px solid var(--vi-rule); }
.vi-chart__col { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px; position: relative; min-width: 0; }
.vi-chart__bar { background: var(--vi-verdigris); transition: height var(--vi-dur-4) var(--vi-ease-out); min-height: 2px; }
.vi-chart__bar--gold { background: var(--vi-gold); }
.vi-chart__bar--rust { background: var(--vi-rust); }
.vi-chart__bar--muted { background: var(--vi-verdigris-100); }
.vi-chart__labels { display: flex; gap: 4px; margin-top: var(--vi-s2); }
.vi-chart__labels span { flex: 1; text-align: center; font-family: var(--vi-font-text); font-size: var(--vi-size-micro); color: var(--vi-ink-400); min-width: 0; }

/* --------------------------------------------------------------------------
   COMPARISON MATRIX
   -------------------------------------------------------------------------- */
.vi-matrix { width: 100%; border-collapse: collapse; font-size: var(--vi-size-body-sm); }
.vi-matrix th:first-child, .vi-matrix td:first-child { position: sticky; left: 0; background: var(--vi-paper); z-index: 1; font-weight: 650; }
.vi-matrix thead th { background: var(--vi-linen); }
.vi-matrix .vi-yes { color: var(--vi-positive); font-weight: 700; }
.vi-matrix .vi-no  { color: var(--vi-ink-300); }
.vi-matrix .vi-partial { color: var(--vi-caution); font-weight: 600; }

/* --------------------------------------------------------------------------
   MAP / TERRITORY PICKER
   -------------------------------------------------------------------------- */
.vi-region-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%,180px),1fr)); gap: var(--vi-s3); }
.vi-region-tile {
  padding: var(--vi-s4);
  border: 1px solid var(--vi-rule);
  background: var(--vi-paper);
  cursor: pointer; text-align: left;
  transition: all var(--vi-dur-2) var(--vi-ease);
}
.vi-region-tile:hover { border-color: var(--vi-verdigris); background: var(--vi-verdigris-050); text-decoration: none; }
.vi-region-tile.is-selected { border-color: var(--vi-verdigris); background: var(--vi-verdigris); color: #fff; }
.vi-region-tile__name { font-family: var(--vi-font-heading); font-size: 1.02rem; font-weight: 700; margin: 0 0 2px; letter-spacing: -0.012em; }
.vi-region-tile__score { font-family: var(--vi-font-text); font-size: var(--vi-size-micro); letter-spacing: var(--vi-track-caps); text-transform: uppercase; color: var(--vi-ink-400); }
.vi-region-tile.is-selected .vi-region-tile__score { color: rgba(255,255,255,.72); }

/* --------------------------------------------------------------------------
   PRINT / EXPORT ACTION
   -------------------------------------------------------------------------- */
.vi-tool__export { display: flex; gap: var(--vi-s3); flex-wrap: wrap; }
