/* Scoped final refinements: editorial separation, labeled choices, quiet motion. */
.benefits-index li:nth-child(1), #benefits-money { --benefit-ink: #176a9b; --benefit-rule: #6c9fbe; --benefit-wash: #f0f7fc; }
.benefits-index li:nth-child(2), #benefits-support { --benefit-ink: #08786e; --benefit-rule: #72b1a8; --benefit-wash: #eff8f5; }
.benefits-index li:nth-child(3), #benefits-clean { --benefit-ink: #56712e; --benefit-rule: #a3b77e; --benefit-wash: #f6f8ee; }
.benefits-index li { border-bottom-width: 2px; }
.benefits-point dt { color: var(--benefit-ink); }
.benefits-note { border-top-color: var(--benefit-rule); }
.lp-finish .brand { display: flex; flex-direction: column; align-items: flex-start; gap: 0; width: 184px; }
.lp-finish .brand img { height: 39px; max-height: 39px; width: auto; max-width: 100%; }
.brand-pending { font-family: var(--sans); font-size: 10px; line-height: 1.35; letter-spacing: .025em; color: #526874; font-weight: 400; }
.trademark-note { color: #526874; font-size: .75rem; line-height: 1.7; }
/* The chart contains live labels; all alternatives stay adjacent to their picture. */
.renewal-flow { max-width: 960px; margin-inline: auto; }
.renewal-flow-origin { text-align: center; }
.renewal-flow-origin p { display: inline-block; margin: 0 0 .375rem; font-size: .9375rem; color: #365b70; }
.renewal-scene { display: block; width: 100%; height: auto; overflow: hidden; }
.renewal-flow-origin .renewal-scene { width: 112px; margin: 0 auto; }
.renewal-connectors { display: block; width: 100%; height: 38px; overflow: visible; }
.renewal-connectors path { fill: none; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.renewal-connectors .branch-update { stroke: #246c99; }
.renewal-connectors .branch-maintain { stroke: #26746d; }
.renewal-connectors .branch-own { stroke: #686286; }
.renewal-connectors circle.branch-update { fill: #246c99; }
.renewal-connectors circle.branch-maintain { fill: #26746d; }
.renewal-connectors circle.branch-own { fill: #686286; }
.choice-update { --choice-ink: #246c99; --choice-rule: #90b7cf; }
.choice-maintain { --choice-ink: #26746d; --choice-rule: #94bfb8; }
.choice-own { --choice-ink: #686286; --choice-rule: #b5adc9; }
.renewal-map { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); }
.renewal-map-choice { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding: .25rem .5rem .75rem; color: var(--choice-ink); text-decoration: none; text-align: center; min-width: 0; border-radius: 3px; }
.renewal-map-choice .renewal-scene { width: min(100%,172px); }
.renewal-map-choice span { font-size: 1rem; font-weight: 650; line-height: 1.6; margin-top: .25rem; }
.renewal-map-choice:hover { background: rgba(255,255,255,.65); text-decoration: underline; text-underline-offset: .3em; }
.renewal-map-choice:focus-visible { outline: 2px solid var(--choice-ink); outline-offset: 2px; }
.map-mobile-break { display: none; }
.renewal-map-hint { text-align: center; color: #526874; font-size: .8125rem; line-height: 1.8; margin: .75rem 0 2rem; }
.renewal-explanations { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 2rem; }
.renewal-explanation { min-width: 0; padding-top: 1.25rem; border-top: 1px solid var(--choice-rule); scroll-margin-top: 6rem; }
.renewal-explanation:focus { outline: none; }
.renewal-explanation:focus-visible { outline: 2px solid var(--choice-ink); outline-offset: 6px; }
.renewal-explanation h3 { color: var(--choice-ink); font-family: var(--sans); font-size: 1.0625rem; line-height: 1.75; font-weight: 650; margin: 0 0 1rem; }
.renewal-explanation p { color: #344f5e; font-size: 1rem; line-height: 1.9; margin: 0 0 .75rem; }
.renewal-explanation .renewal-explanation-lead { color: #173b4c; font-weight: 600; }
.renewal-explanation small { display: block; color: #536a75; font-size: .875rem; line-height: 1.85; }
.renewal-return-note { max-width: 960px; margin: 1.5rem auto 0; font-size: .8125rem; color: #536a75; line-height: 1.8; }
.lp-finish .renewal-benefit { padding-top: 1.5rem; margin-top: 1.5rem; }
.lp-finish .renewal-benefit strong { font-size: 1rem; font-weight: 600; }
/* Costs can be changed without hiding the assumptions behind a tab. */
.purchase-assumptions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem; border-top: 1px solid #496675; padding: 1.5rem 0; margin-bottom: .5rem; }
.purchase-assumptions label { display: block; color: #edf6fa; font-size: .9375rem; font-weight: 600; min-width: 0; line-height: 1.7; }
.amount-input { display: flex; align-items: center; gap: .75rem; margin: .5rem 0; }
.amount-input input { display: block; width: 100%; min-width: 0; color: #163849; background: #fff; border: 1px solid #b8ced9; border-radius: 4px; padding: .625rem .75rem; font: inherit; font-size: 1rem; font-weight: 500; min-height: 44px; }
.amount-input input:focus-visible { outline: 3px solid #9dd7ec; outline-offset: 2px; }
.purchase-assumptions small { display: block; color: #d0e0e8; font-size: .8125rem; font-weight: 400; line-height: 1.8; }
.lp-finish .sim-result #rentTotalNote { display: block; color: #c4dbe5; font-size: .8125rem; font-weight: 400; line-height: 1.7; margin-top: .25rem; }
.lp-finish .sim-base #rentalBaseNote { margin-top: .25rem; color: #c4dbe5; }
.lp-finish .sim-column .sim-base strong { font-size: clamp(1.5rem,2.8vw,2rem); }
@media (max-width: 800px) {
  .benefits-detail { padding: 2rem 0 2.5rem; }
  .benefits-detail + .benefits-detail { border-top: 2px solid var(--benefit-rule); }
  .benefits-category { margin-bottom: 1.5rem; padding: .6rem .75rem; background: var(--benefit-wash); }
  .benefits-details { padding-top: .5rem; }
  .benefits-note { margin-top: 1.5rem; }
  .benefits-index a { font-size: 1.125rem; }
  .benefits-point dd { font-size: .9375rem; }
  .renewal-explanations { grid-template-columns: 1fr; gap: 1.75rem; }
  .renewal-explanation { padding-top: 1.25rem; }
  .renewal-explanation h3 { font-size: 1.0625rem; margin-bottom: .75rem; }
  .renewal-explanation p { font-size: .9375rem; }
  .renewal-map-choice { padding-inline: .25rem; }
  .renewal-map-choice span { font-size: .875rem; }
  .map-mobile-break { display: initial; }
  .renewal-flow-origin .renewal-scene { width: 96px; }
  .renewal-map-hint { margin: .75rem 0 1.5rem; font-size: .75rem; }
  .purchase-assumptions { grid-template-columns: 1fr; gap: 1.25rem; }
}
@media (max-width: 600px) {
  .lp-finish .brand { width: 145px; }
  .lp-finish .brand img { height: 35px; max-height: 35px; }
  .brand-pending { font-size: 10px; }
  .lp-finish .header-in { height: 64px; }
  .lp-finish .renewal-head .section-title { font-size: 1.5rem; }
  .lp-finish .renewal-head .section-lead { font-size: .9375rem; }
  .lp-finish .simulator { padding: 1.5rem 1rem; }
  .lp-finish .scenario-tabs { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .lp-finish .scenario-tab { white-space: normal; font-size: .8125rem; padding: .6rem .5rem; }
  .lp-finish .scenario-tab:last-child { grid-column: 1 / -1; }
  .lp-finish .floating-cta { font-size: .875rem; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
/* v20: separate groups with space and color instead of repeated rules. */
.benefits-overview { border-bottom: 0; }
.benefits-index li { border-bottom: 0; padding-bottom: .75rem; }
.benefits-note { border-top: 0; padding-top: 0; }
@media (max-width: 800px) {
  .benefits-detail + .benefits-detail { border-top: 0; }
  .benefits-detail { padding-top: 1.75rem; padding-bottom: 2rem; }
}
.renewal-map-choice.choice-update .renewal-scene { transform: scale(1.08); transform-origin: center; }
.renewal-map-choice.choice-update span { font-weight: 700; }
.purchase-estimate { margin: 1.25rem 0 1.75rem; color: #edf6fa; }
.comparison-model { color: #d0e0e8; font-size: .875rem; line-height: 1.8; margin: 0 0 1.125rem; }
.purchase-estimate-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1rem; }
.purchase-estimate-head p { margin: 0; font-size: .9375rem; line-height: 1.7; }
.purchase-estimate-price { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: .25rem; }
.purchase-estimate-price strong { color: #fff; font-size: clamp(1.875rem,4vw,2.5rem); font-weight: 650; line-height: 1.5; font-variant-numeric: tabular-nums; }
.purchase-estimate-price small { font-size: .8125rem; font-weight: 400; color: #d0e0e8; }
#editPurchase { border: 1px solid #698794; background: transparent; color: #edf6fa; padding: .6rem .75rem; min-height: 44px; border-radius: 4px; font: inherit; font-size: .8125rem; }
#editPurchase:hover { background: #284e61; }
#editPurchase:focus-visible { outline: 2px solid #a5dff8; outline-offset: 3px; }
.purchase-estimate-note { margin: .25rem 0 0; color: #d0e0e8; font-size: .8125rem; line-height: 1.8; }
.purchase-editor { margin-top: 1rem; max-width: 28rem; padding: 1rem; background: #24495b; border-radius: 4px; }
.purchase-editor[hidden] { display: none; }
.purchase-editor label { font-size: .9375rem; }
.purchase-editor small { color: #d0e0e8; font-size: .8125rem; line-height: 1.8; }
/* v21: readable scenario assumptions and restrained tactile responses. */
.scenario-explanation { color: #d0e0e8; font-size: .875rem; line-height: 1.8; margin: .5rem 0 1.25rem; }
.sim-result strong { display: inline-block; transform-origin: left center; }
.floating-cta, .scenario-tab, .renewal-map-choice { transition: transform 160ms ease-out, background-color 160ms ease-out; }
.floating-cta:active, .scenario-tab:active { transform: scale(.97); }
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  .renewal-map-choice:hover { transform: translateY(-3px); }
}
@media (prefers-reduced-motion:reduce) {
  .floating-cta:active, .scenario-tab:active { transform: none; }
}
/* v22: deliberate, visible interaction motion, especially the inquiry flow. */
.reading-progress { position: fixed; inset: 0 0 auto; height: 3px; z-index: 90; pointer-events: none; }
.reading-progress span { display: block; width: 100%; height: 100%; background: #1786ba; transform: scaleX(0); transform-origin: left; }
.proof { overflow: clip; }
button, .renewal-map-choice { position: relative; overflow: hidden; }
.tap-wave { position: absolute; width: 24px; height: 24px; margin: -12px; background: currentColor; opacity: 0; border-radius: 50%; pointer-events: none; animation: tapWave 650ms ease-out; }
@keyframes tapWave { from { transform: scale(0); opacity: .22; } to { transform: scale(18); opacity: 0; } }
.floating-cta { isolation: isolate; transition: transform 220ms, box-shadow 220ms; }
.floating-cta::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(110deg, transparent 25%, rgba(255,255,255,.28) 50%, transparent 75%); transform: translateX(-130%); animation: ctaSweep 5s ease-in-out infinite; }
@keyframes ctaSweep { 0%,55% { transform: translateX(-130%); } 85%,100% { transform: translateX(130%); } }
.floating-cta:focus-visible::after { animation-play-state: paused; }
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  .floating-cta:hover { transform: translateY(-5px); box-shadow: 0 15px 32px rgba(22,56,73,.26); }
  .scenario-tab:hover { transform: translateY(-3px); }
}
.modal.open { animation: modalBackdropIn 350ms ease-out both; }
.modal.open .modal-panel { animation: modalPanelIn 540ms cubic-bezier(.16,1,.3,1) both; }
.modal.open.closing { animation: modalBackdropOut 280ms ease-in both; }
.modal.open.closing .modal-panel { animation: modalPanelOut 280ms ease-in both; }
@keyframes modalBackdropIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes modalBackdropOut { from { opacity: 1; } to { opacity: 0; } }
@keyframes modalPanelIn { from { opacity: 0; transform: translateY(85px) scale(.92); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes modalPanelOut { from { opacity: 1; transform: translateY(0) scale(1); } to { opacity: 0; transform: translateY(45px) scale(.97); } }
.modal.open .contact-form > label, .modal.open .contact-choice { animation: formFieldIn 480ms ease-out both; }
.modal.open .contact-form > label:nth-of-type(2) { animation-delay: 45ms; }
.modal.open .contact-choice { animation-delay: 90ms; }
.modal.open .contact-form > label:nth-of-type(3) { animation-delay: 135ms; }
.modal.open .contact-form > label:nth-of-type(4) { animation-delay: 180ms; }
@keyframes formFieldIn { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
.contact-form label { transition: color 220ms; }
.contact-form label:focus-within { color: #147fae; }
.contact-form input, .contact-form textarea, .contact-form select { transition: border-color 220ms, box-shadow 220ms, background-color 220ms; }
.contact-form input:focus, .contact-form textarea:focus, .contact-form select:focus { outline: none; border-color: #268ab2; box-shadow: 0 0 0 4px rgba(38,138,178,.13); background: #fbfeff; }
.contact-form button[type=submit] { transition: background-color 220ms, box-shadow 220ms, transform 180ms; }
.contact-form button.is-sending { opacity: 1; background: #2b637b; cursor: wait; }
.contact-form button.is-sending::before { content: ''; flex: none; width: 18px; height: 18px; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: sendingSpin 750ms linear infinite; }
@keyframes sendingSpin { to { transform: rotate(360deg); } }
.form-status { position: relative; overflow: hidden; font-size: .875rem; line-height: 1.85; }
.form-status.pending { display: block; background: #e9f4fa; color: #244f65; padding-bottom: 20px; }
.form-status.pending::after { content: ''; position: absolute; bottom: 0; left: 0; height: 3px; width: 45%; background: #258ebc; animation: sendingBar 1.5s ease-in-out infinite; }
@keyframes sendingBar { 0% { transform: translateX(-120%); } 100% { transform: translateX(330%); } }
.form-status.info { animation: successArrival 650ms cubic-bezier(.16,1,.3,1); border: 1px solid #a5cbbd; background: #edf8f3; color: #275c48; }
.form-status.error { animation: errorNudge 380ms ease-out; }
@keyframes successArrival { 0% { opacity: 0; transform: translateY(16px) scale(.94); } 75% { opacity: 1; transform: translateY(-3px) scale(1.01); } 100% { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes errorNudge { 0%,100% { transform: translateX(0); } 25% { transform: translateX(-7px); } 50% { transform: translateX(6px); } 75% { transform: translateX(-3px); } }
@media(max-width:600px) {
  .modal { padding: 10px; align-items: end; }
  .modal .modal-panel { width: 100%; max-height: 92vh; max-height: calc(100dvh - 20px); padding: 26px 20px calc(24px + env(safe-area-inset-bottom)); border-radius: 22px; overscroll-behavior: contain; }
  .modal h2 { font-size: 1.5rem; }
  .modal p { font-size: .875rem; line-height: 1.8; }
  .contact-form label { font-size: .875rem; }
  .contact-form input, .contact-form textarea, .contact-form select { font-size: 16px; }
  .contact-form { gap: 16px; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { animation: none !important; transition: none !important; }
  .reading-progress { display: none; }
  .form-status.pending::after { width: 100%; background: #8db6c7; }
}
