/* Estilos propios de esta página. La base común está en assets/kalculia-ui.css. */
#tabla-amortizacion .table-scroll { max-height: 440px; overflow-y: auto; }

.itp-reduced-field { margin-top: calc(var(--s-1) * -1); }
#itp-reduced-value-wrap { margin-top: var(--s-2); padding: var(--s-3) var(--s-4); background: var(--surface-2); border-radius: var(--radius); }
#itp-reduced-value-wrap label { font-size: .8rem; font-weight: 600; color: var(--text-muted); display: block; margin-bottom: var(--s-1); }
#itp-reduced-value-wrap input { max-width: 140px; background: var(--surface); }
.income-hint { margin-top: calc(var(--s-2) * -1); margin-bottom: var(--s-4); }

.viability-badge { margin-top: var(--s-3); padding: var(--s-3) var(--s-4); border-radius: var(--radius); font-size: .85rem; font-weight: 600; }
.viability-badge--ok { background: var(--accent-soft); color: var(--accent-dark); }
.viability-badge--warning { background: var(--warning-soft); color: var(--warning); }
.viability-badge--danger { background: var(--warning-soft); color: var(--warning); box-shadow: inset 0 0 0 1.5px var(--warning); }

.block1-result { margin-top: var(--s-5); padding-top: var(--s-5); border-top: 1px solid var(--rule); }

/* Ofertas A y B: dos paneles iguales lado a lado */
.offers-grid { display: grid; grid-template-columns: 1fr; gap: var(--s-4); }
@media (min-width: 960px) { .offers-grid:has(.offer-panel[data-offer="B"]:not([hidden])) { grid-template-columns: 1fr 1fr; } }
.offer-panel { position: relative; padding: var(--s-5) var(--s-4); border-radius: var(--radius-lg); background: var(--surface-2); }
.offer-panel :where(input[type="number"], select) { background: var(--surface); }
.offer-title { display: flex; align-items: center; gap: var(--s-2); font-size: 1.05rem; margin-bottom: var(--s-4); color: var(--opt-a-ink); }
.offer-title::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--opt-a); }
.offer-panel[data-offer="B"] .offer-title { color: var(--opt-b-ink); }
.offer-panel[data-offer="B"] .offer-title::before { background: var(--opt-b); }
.offer-panel .radio-pill { background: var(--surface); }
.offer-panel .radio-pill:has(input:checked) { background: var(--text); }
.rate-fields { margin-top: var(--s-1); }
.bonus-list { display: flex; flex-direction: column; gap: var(--s-2); }
.bonus-list label { display: flex; align-items: center; gap: var(--s-2); font-size: .9rem; font-weight: 500; color: var(--text); cursor: pointer; }
.bonus-list input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; }
.offer-result { margin-top: var(--s-5); padding-top: var(--s-4); border-top: 1px solid var(--border); }
.offer-result .result-stat:not(.result-stat--highlight) { background: var(--surface); }

/* Opciones avanzadas de cada oferta: plegadas para no abrumar */
.offer-advanced { margin-top: var(--s-4); border-radius: var(--radius); background: var(--surface); }
.offer-advanced > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: var(--s-2); padding: var(--s-3) var(--s-4); font-weight: 700; font-size: .9rem; color: var(--text); }
.offer-advanced > summary::-webkit-details-marker { display: none; }
.offer-advanced > summary span { font-weight: 600; font-size: .75rem; color: var(--text-muted); background: var(--surface-2); border-radius: 999px; padding: .15rem .55rem; }
.offer-advanced > summary::after { content: ""; margin-left: auto; width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .2s var(--ease-out); }
.offer-advanced[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
.offer-advanced > .field, .offer-advanced > fieldset { padding-inline: var(--s-4); }
.offer-advanced > fieldset { padding-bottom: var(--s-4); }
.offer-advanced :where(input[type="number"]) { background: var(--surface-2); }

/* Euríbor en directo del BCE */
.euribor-live { width: fit-content; justify-self: start; align-self: flex-start; display: inline-flex; align-items: center; gap: .3rem; margin-top: var(--s-2); padding: .3rem .7rem; border-radius: 999px; background: var(--accent-soft); color: var(--accent-dark); font-size: .78rem; font-weight: 600; cursor: pointer; }
.euribor-live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--opt-a); box-shadow: 0 0 0 3px color-mix(in srgb, var(--opt-a) 25%, transparent); }
.euribor-live strong { font-weight: 800; }

/* Préstamo para la entrada */
.entry-loan { margin-top: var(--s-4); border-radius: var(--radius-lg); background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--rule); }
.entry-loan > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: var(--s-4); padding: var(--s-4) var(--s-5); }
.entry-loan > summary::-webkit-details-marker { display: none; }
.entry-loan > summary::after { content: ""; margin-left: auto; flex-shrink: 0; width: 9px; height: 9px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .2s var(--ease-out); }
.entry-loan[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
.entry-loan-ico { display: grid; place-items: center; flex-shrink: 0; width: 44px; height: 44px; border-radius: 14px; background: var(--surface); font-size: 1.35rem; }
.entry-loan-text { display: flex; flex-direction: column; gap: var(--s-1); }
.entry-loan-text strong { font-size: 1rem; color: var(--text); }
.entry-loan-text span { font-size: .88rem; color: var(--text-muted); line-height: 1.5; }
.entry-loan-body { padding: 0 var(--s-5) var(--s-5); }
.entry-loan-body :where(input[type="number"]) { background: var(--surface); }
@media (min-width: 720px) { .field-row--3 { grid-template-columns: 1fr 1fr 1fr; } }
.entry-loan-result { margin-top: var(--s-2); padding: var(--s-3) var(--s-4); border-radius: var(--radius); background: var(--surface); font-size: .92rem; }
.entry-loan-result[hidden] { display: none; }
.entry-loan-link { display: inline-block; margin-top: var(--s-2); color: var(--accent); font-weight: 700; font-size: .88rem; }

/* Resumen visual */
.mortgage-summary { display: grid; gap: var(--s-4); margin-top: var(--s-5); }
.mortgage-summary[hidden] { display: none; }
@media (min-width: 960px) { .mortgage-summary { grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; } }
.mortgage-summary .cc-hero-card { margin: 0; display: flex; flex-direction: column; justify-content: center; }
.ms-split { position: relative; z-index: 1; margin-top: var(--s-3); color: #fff; font-size: .95rem; font-weight: 600; max-width: 34ch; line-height: 1.5; }
.ms-panel { background: var(--surface-2); border-radius: var(--radius-xl); padding: var(--s-5); display: flex; flex-direction: column; gap: var(--s-4); }
.ms-panel-title { font-family: var(--display); font-weight: 800; font-size: 1.02rem; color: var(--text); }
.ms-bars { display: flex; flex-direction: column; gap: var(--s-4); }
.ms-bar-head { display: flex; justify-content: space-between; gap: var(--s-3); font-size: .88rem; font-weight: 700; color: var(--text-muted); margin-bottom: var(--s-2); }
.ms-bar-head strong { color: var(--text); font-variant-numeric: tabular-nums; }
.ms-bar { display: flex; height: 14px; border-radius: 999px; overflow: hidden; background: var(--surface); gap: 2px; }
.ms-bar span { display: block; height: 100%; transition: width .45s var(--ease-out); }
.seg-cap { background: var(--opt-a); }
.ms-bar-row--B .seg-cap { background: var(--opt-b); }
.ms-bar-row--P .seg-cap { background: #94a3a0; }
.seg-int { background: repeating-linear-gradient(-45deg, var(--loss), var(--loss) 4px, color-mix(in srgb, var(--loss) 75%, #fff) 4px, color-mix(in srgb, var(--loss) 75%, #fff) 8px); }
.seg-fee { background: var(--warning); }
.ms-bar-legend { display: flex; flex-wrap: wrap; gap: var(--s-1) var(--s-4); margin-top: var(--s-2); font-size: .8rem; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.ms-bar-legend span::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: .35rem; vertical-align: 1px; }
.ms-bar-legend .lg-cap::before { background: var(--opt-a); }
.ms-bar-row--B .lg-cap::before { background: var(--opt-b); }
.ms-bar-row--P .lg-cap::before { background: #94a3a0; }
.ms-bar-legend .lg-int::before { background: var(--loss); }
.ms-bar-legend .lg-fee::before { background: var(--warning); }
.ms-effort { padding-top: var(--s-4); border-top: 1px solid var(--rule); display: flex; flex-direction: column; gap: var(--s-3); }
.ms-effort[hidden] { display: none; }
.ms-meter { position: relative; height: 14px; border-radius: 999px; background: var(--surface); }
.ms-meter-fill { position: absolute; inset: 0 auto 0 0; border-radius: 999px; background: var(--opt-a); transition: width .45s var(--ease-out); }
.ms-meter-fill.is-warning { background: var(--warning); }
.ms-meter-fill.is-danger { background: var(--loss); }
.ms-meter-limit { position: absolute; left: 35%; top: -4px; bottom: -4px; width: 2px; background: var(--text); border-radius: 2px; }
.ms-meter-limit::after { content: "35%"; position: absolute; top: -1.35rem; left: 50%; transform: translateX(-50%); font-size: .72rem; font-weight: 700; color: var(--text-muted); }
.ms-effort .ms-meter { margin-top: var(--s-4); }
.ms-effort-text { font-size: .9rem; color: var(--text-muted); line-height: 1.6; }
.ms-effort-text strong { color: var(--text); }

/* Gráfico y tabla de amortización */
.amortization { padding-block: var(--s-7) var(--s-4); }
.amortization h2 { font-size: clamp(1.5rem, 3.6vw, 2.2rem); font-weight: 800; letter-spacing: -0.03em; }
#amort-chart { display: block; width: 100%; cursor: crosshair; }
.amort-table tbody tr:nth-child(12n) td { background: var(--accent-soft); }

@media print {
  .site-header, .site-footer, .ad-slot, .hero, .steps, .faq, .chart-wrap, .table-controls, #calculadora, .block-title-row + .offers-grid, .result-disclaimer, .vat-table-section { display: none !important; }
  .amort-table { min-width: 0; }
}
@media (max-width: 479px) {
  .entry-loan > summary { padding: var(--s-4); gap: var(--s-3); }
  .entry-loan-body { padding: 0 var(--s-4) var(--s-4); }
  .ms-panel { padding: var(--s-4); }
}

/* =============================================================
   Móvil: revisión a 375 px
   ============================================================= */
.hero-sub--short { display: none; }

/* 4) Ingresos y deudas, justo encima del resumen */
.income-block { margin-top: var(--s-5); padding: var(--s-4); border-radius: var(--radius-lg); background: var(--surface-2); }
.income-block :where(input) { background: var(--surface); }
.income-block-title { font-weight: 700; font-size: .95rem; color: var(--text); margin-bottom: var(--s-3); }
.income-block-title span { font-weight: 600; font-size: .75rem; color: var(--text-muted); background: var(--surface); border-radius: 999px; padding: .15rem .55rem; margin-left: var(--s-1); }
.income-block .income-hint { margin: 0; }

@media (max-width: 559px) {
  /* 6) Cabecera compacta */
  .hero h1 { font-size: 1.6rem; }
  .hero .hero-sub--long { display: none; }
  .hero .hero-sub--short { display: block; font-size: .95rem; line-height: 1.5; }
  .hero .byline-top { font-size: .76rem; }
  .hero .hero-art { transform: scale(.62); transform-origin: top right; }

  /* 5) Fijo / Variable / Mixto en una sola línea, tres partes iguales */
  .offer-panel .radio-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .offer-panel .radio-pill { justify-content: center; min-width: 0; gap: var(--s-1); padding-inline: var(--s-2); }

  #errores:not(.is-open) .mistakes-list { display: none; }

  /* 10) Sin la nota a mano tras el resumen */
  .tool-card .cc-note--below { display: none; }
}

/* 2) En móvil, con una sola oferta, la cuota grande vive en el resumen: no se repite en la tarjeta */
@media (max-width: 719px) {
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result .result-stat--highlight { display: none; }
  /* TIN/TAE e interés total como lista compacta de 2 filas */
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result .calc-result-grid { grid-template-columns: 1fr; gap: 0; padding: var(--s-1) var(--s-4); border-radius: var(--radius); background: var(--surface); }
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result .result-stat { flex-direction: row; align-items: baseline; justify-content: space-between; gap: var(--s-3); padding: var(--s-3) 0; min-height: 0; background: none; border-radius: 0; box-shadow: none; }
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result .result-stat + .result-stat:not(.result-stat--highlight) { border-top: 1px solid var(--rule); }
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result .result-value { font-size: 1rem; text-align: right; white-space: nowrap; margin-left: auto; }
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result .result-stat { flex-wrap: wrap; }
}

/* 8) Casillas más grandes y filas de 44 px */
.checkbox-inline input[type="checkbox"], .bonus-list input[type="checkbox"] { width: 22px; height: 22px; }
.checkbox-inline, .bonus-list label { min-height: 44px; align-items: center; }

/* 9) Letra mínima de 13 px */
.field-hint, .tiny-note, .result-note, .result-disclaimer, .ms-bar-legend, .vat-table thead th { font-size: .8125rem; }

/* =============================================================
   Móvil más sencillo
   ============================================================= */
.offer-more-toggle { display: none; }
@media (max-width: 719px) {
  /* TIN/TAE, interés total y coste total, plegados tras un botón (la cuota sigue a la vista con 2 ofertas) */
  .offer-more-toggle { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: var(--s-2); min-height: 44px; padding: var(--s-2) var(--s-4); border-radius: var(--radius); background: var(--surface); font-weight: 700; font-size: .9rem; color: var(--text); }
  .offer-more-toggle::after { content: ""; width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform .2s var(--ease-out); }
  .offer-result.is-open .offer-more-toggle::after { transform: translateY(2px) rotate(-135deg); }
  .offer-result:not(.is-open) > .tiny-note,
  .offer-result:not(.is-open) .result-stat:not(.result-stat--highlight) { display: none; }
  .offers-grid:not(:has(.offer-panel[data-offer="B"]:not([hidden]))) .offer-result:not(.is-open) > .calc-result-grid { display: none; }
  .offer-result.is-open .offer-more-toggle { margin-bottom: var(--s-3); }
  .offers-grid:has(.offer-panel[data-offer="B"]:not([hidden])) .offer-more-toggle { margin-top: var(--s-3); }
  /* El aviso "Cuota + deudas: X %" baja al resumen (medidor del sueldo), justo después de tus ingresos */
  .offer-result > [data-out="viability"] { display: none !important; }
  .income-block .income-hint { display: none; }
  .ms-effort-b { margin-top: var(--s-2); }
}
@media (max-width: 479px) {
  /* Entrada en % e importe en la misma fila */
  .field-row:has(#m-down-pct) { grid-template-columns: 2fr 3fr; align-items: end; }
}
