/* Public calculators and diagnostics. The v3 shell remains the design authority. */
.v3.tool-page { min-height: 100vh; color-scheme: dark; }
.v3.tool-page .nav__links [aria-current="page"] { color: var(--tx-1); }
.v3.tool-page .nav__links [aria-current="page"]::after { width: 100%; }
.v3 .tool-shell { width: min(var(--container), 92%); margin-inline: auto; }
.v3 .tool-hero { max-width: 900px; padding: clamp(5rem, 11vh, 8rem) 0 clamp(2.8rem, 7vh, 4.8rem); }
.v3 .tool-kicker { margin: 0; color: var(--tx-3); font-size: var(--fs-label); font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.v3 .tool-hero h1,
.v3 .tools-index h1 { max-width: 880px; margin: var(--s4) 0 var(--s5); color: var(--tx-1); font-family: var(--serif); font-size: var(--fs-display); font-weight: 300; line-height: 1.05; letter-spacing: -.017em; text-wrap: balance; }
.v3 .tool-hero h1 em,
.v3 .tools-index h1 em { color: var(--ochre); font-style: normal; font-weight: 560; }
.v3 .tool-deck,
.v3 .tools-index__intro { max-width: 68ch; margin: 0; color: var(--tx-3); font-size: var(--fs-lede); line-height: 1.65; }
.v3 .tool-breadcrumb { margin: 0 0 var(--s5); color: var(--tx-3); font-size: var(--fs-small); }
.v3 .tool-breadcrumb a { color: var(--ochre-hi); }

.v3 .tool-workspace { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(320px, .95fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: start; padding-bottom: var(--rhythm-tight); }
.v3 .tool-workspace:has(> .tool-results[hidden]) { grid-template-columns: minmax(0, 760px); }
.v3 .tool-panel,
.v3 .tool-results,
.v3 .tool-note,
.v3 .tool-card { border: 1px solid var(--e2-edge); border-radius: var(--r-lg); background: var(--e2-bg); box-shadow: var(--e2-shadow), inset 0 1px 0 var(--e2-hi); }
.v3 .tool-panel,
.v3 .tool-results { padding: clamp(1.35rem, 3vw, 2rem); }
.v3 .tool-panel h2,
.v3 .tool-results h2,
.v3 .tool-method h2,
.v3 .tool-cta h2 { margin: 0 0 var(--s3); color: var(--tx-1); font-family: var(--serif); font-size: var(--fs-h3); font-weight: 350; line-height: 1.16; text-wrap: balance; }
.v3 .tool-panel__intro,
.v3 .tool-results__intro { margin: 0 0 var(--s6); color: var(--tx-3); }
.v3 .tool-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s5); }
.v3 .tool-field { display: flex; min-width: 0; flex-direction: column; gap: var(--s2); }
.v3 .tool-field label,
.v3 .tool-field__label { color: var(--tx-1); font-size: var(--fs-small); font-weight: 650; }
.v3 .tool-field small,
.v3 .tool-help { color: var(--tx-2); font-size: var(--fs-xs); line-height: 1.45; }
.v3 .tool-field input,
.v3 .tool-field select,
.v3 .tool-field textarea { width: 100%; min-height: 48px; border: 1px solid var(--hair); border-radius: var(--r-sm); background: rgba(9, 20, 14, .54); color: var(--tx-1); font: inherit; font-size: 1rem; padding: .72rem .82rem; box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
.v3 .tool-field textarea { min-height: 126px; resize: vertical; line-height: 1.5; }
.v3 .tool-field input:hover,
.v3 .tool-field select:hover,
.v3 .tool-field textarea:hover { border-color: rgba(230,190,130,.48); }
.v3 .tool-field input:focus,
.v3 .tool-field select:focus,
.v3 .tool-field textarea:focus { border-color: var(--ochre); outline: 3px solid rgba(183,127,60,.22); outline-offset: 0; }
.v3 .tool-field input::placeholder,
.v3 .tool-field textarea::placeholder { color: var(--tx-4); }
.v3 .tool-field select { appearance: none; padding-right: 2.5rem; background-color: rgba(9, 20, 14, .82); background-image: linear-gradient(45deg, transparent 50%, var(--tx-2) 50%), linear-gradient(135deg, var(--tx-2) 50%, transparent 50%); background-position: calc(100% - 17px) calc(50% - 2px), calc(100% - 12px) calc(50% - 2px); background-repeat: no-repeat; background-size: 5px 5px, 5px 5px; }
.v3 .tool-field--full { grid-column: 1 / -1; }
.v3 .tool-divider { grid-column: 1 / -1; margin: var(--s2) 0 0; padding-top: var(--s5); border-top: 1px solid var(--hair); }
.v3 .tool-divider h3 { margin: 0 0 var(--s2); color: var(--tx-1); font-size: 1rem; }
.v3 .tool-divider p { margin: 0; color: var(--tx-3); font-size: var(--fs-xs); }
.v3 .tool-warning { display: flex; gap: var(--s3); grid-column: 1 / -1; margin: 0; padding: var(--s4); border: 1px solid rgba(230,190,130,.36); border-radius: var(--r-md); background: rgba(183,127,60,.09); color: var(--tx-2); font-size: var(--fs-small); line-height: 1.55; }
.v3 .tool-warning strong { color: var(--ochre-hi); }
.v3 .tool-warning__mark { color: var(--ochre-hi); font-weight: 800; }
.v3 .tool-submit,
.v3 .tool-button { display: inline-flex; min-height: 46px; align-items: center; justify-content: center; gap: var(--s2); border: 0; border-radius: var(--r-pill); background: var(--ochre); color: var(--on-ochre); cursor: pointer; font: inherit; font-size: var(--fs-small); font-weight: 750; padding: .75rem 1.25rem; transition: background .2s, transform .2s; }
.v3 .tool-submit { grid-column: 1 / -1; justify-self: start; margin-top: var(--s2); }
.v3 .tool-submit:hover,
.v3 .tool-button:hover { background: var(--ochre-hi); transform: translateY(-1px); }
.v3 .tool-button--ghost { border: 1px solid var(--hair); background: rgba(9,20,14,.38); color: var(--tx-1); }
.v3 .tool-button--ghost:hover { border-color: rgba(230,190,130,.48); background: rgba(183,127,60,.08); }
.v3 .tool-error { grid-column: 1 / -1; margin: 0; color: #ffd1c9; font-size: var(--fs-small); }
.v3 .tool-error:empty { display: none; }

.v3 .tool-results { position: sticky; top: 92px; }
.v3 .tool-results--long { position: static; }
.v3 .tool-results[hidden] { display: none; }
.v3 .tool-results__status { display: inline-flex; margin-bottom: var(--s4); padding: .35rem .62rem; border: 1px solid rgba(230,190,130,.34); border-radius: var(--r-pill); color: var(--ochre-hi); font-size: var(--fs-micro); font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.v3 .tool-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s3); margin: var(--s5) 0; }
.v3 .tool-metric { min-width: 0; padding: var(--s4); border: 1px solid var(--hair); border-radius: var(--r-md); background: rgba(9,20,14,.34); }
.v3 .tool-metric span { display: block; color: var(--tx-3); font-size: var(--fs-xs); }
.v3 .tool-metric strong { display: block; margin-top: .2rem; color: var(--ochre-hi); font-family: var(--serif); font-size: clamp(1.45rem, 3vw, 2.15rem); font-weight: 480; line-height: 1.05; overflow-wrap: anywhere; }
.v3 .tool-metric small { display: block; margin-top: .35rem; color: var(--tx-3); font-size: var(--fs-micro); }
.v3 .tool-summary { color: var(--tx-2); line-height: 1.65; white-space: pre-line; }
.v3 .tool-result-section { margin-top: var(--s5); padding-top: var(--s5); border-top: 1px solid var(--hair); }
.v3 .tool-result-section h3 { margin: 0 0 var(--s3); color: var(--tx-1); font-size: 1rem; }
.v3 .tool-result-section ul,
.v3 .tool-result-section ol { margin: 0; padding-left: 1.25rem; color: var(--tx-2); }
.v3 .tool-result-section li + li { margin-top: var(--s2); }
.v3 .tool-actions { display: flex; flex-wrap: wrap; gap: var(--s3); margin-top: var(--s5); }
.v3 .tool-disclaimer { margin: var(--s4) 0 0; color: var(--tx-3); font-size: var(--fs-xs); line-height: 1.5; }
.v3 .contract-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s3); margin-top: var(--s5); }
.v3 .contract-grid section { min-width: 0; padding: var(--s4); border: 1px solid var(--hair); border-radius: var(--r-md); background: rgba(9,20,14,.34); }
.v3 .contract-grid h3 { margin: 0 0 var(--s3); color: var(--ochre-hi); font-size: 1rem; }
.v3 .contract-grid ul,
.v3 .contract-grid ol { margin: 0; padding-left: 1.15rem; color: var(--tx-2); font-size: var(--fs-small); line-height: 1.55; }
.v3 .contract-grid li + li { margin-top: var(--s2); }
.v3 .field-contract { display: grid; gap: var(--s3); margin: 0; }
.v3 .field-contract div { padding-bottom: var(--s3); border-bottom: 1px solid var(--hair); }
.v3 .field-contract div:last-child { padding-bottom: 0; border-bottom: 0; }
.v3 .field-contract dt { color: var(--tx-3); font-size: var(--fs-xs); }
.v3 .field-contract dd { margin: .2rem 0 0; color: var(--tx-1); font-size: var(--fs-small); overflow-wrap: anywhere; }

.v3 .diagnostic-fields { display: grid; gap: var(--s5); }
.v3 .diagnostic-question { min-width: 0; margin: 0; padding: 0 0 var(--s5); border: 0; border-bottom: 1px solid var(--hair); }
.v3 .diagnostic-question:last-of-type { border-bottom: 0; }
.v3 .diagnostic-question legend { width: 100%; margin-bottom: var(--s3); padding: 0; color: var(--tx-1); font-size: 1rem; font-weight: 650; line-height: 1.4; }
.v3 .diagnostic-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s2); }
.v3 .diagnostic-option { position: relative; display: flex; min-height: 48px; align-items: center; gap: var(--s3); padding: .7rem .8rem; border: 1px solid var(--hair); border-radius: var(--r-sm); background: rgba(9,20,14,.3); color: var(--tx-2); cursor: pointer; font-size: var(--fs-small); line-height: 1.35; transition: border-color .2s, background .2s; }
.v3 .diagnostic-option:hover { border-color: rgba(230,190,130,.48); }
.v3 .diagnostic-option:focus-within { border-color: var(--ochre-hi); outline: 2px solid var(--ochre-hi); outline-offset: 2px; }
.v3 .diagnostic-option:has(input:checked) { border-color: var(--ochre); background: rgba(183,127,60,.12); color: var(--tx-1); }
.v3 .diagnostic-option input { width: 1rem; height: 1rem; flex: none; accent-color: var(--ochre); }

.v3 .scenario-rates { grid-column: 1 / -1; display: grid; gap: var(--s4); min-width: 0; margin: 0; padding: 0; border: 0; }
.v3 .scenario-rates legend { margin-bottom: var(--s2); padding: 0; color: var(--tx-1); font-size: 1rem; font-weight: 650; }
.v3 .scenario-range { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s3); }
.v3 .scenario-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s3); margin: var(--s5) 0; }
.v3 .scenario-card { min-width: 0; padding: var(--s4); border: 1px solid var(--hair); border-radius: var(--r-md); background: rgba(9,20,14,.34); }
.v3 .scenario-card h3 { margin: 0 0 var(--s3); color: var(--ochre-hi); font-family: var(--serif); font-size: 1.15rem; font-weight: 480; }
.v3 .scenario-card dl { display: grid; gap: var(--s3); margin: 0; }
.v3 .scenario-card dl div { padding-top: var(--s3); border-top: 1px solid var(--hair); }
.v3 .scenario-card dt { color: var(--tx-3); font-size: var(--fs-xs); }
.v3 .scenario-card dd { margin: .15rem 0 0; color: var(--tx-1); font-size: 1.1rem; font-weight: 700; }
.v3 .scenario-sends { display: flex; align-items: baseline; justify-content: space-between; gap: var(--s4); margin: var(--s5) 0 0; padding: var(--s4); border: 1px solid rgba(230,190,130,.3); border-radius: var(--r-md); background: rgba(183,127,60,.08); }
.v3 .scenario-sends span { color: var(--tx-3); font-size: var(--fs-small); }
.v3 .scenario-sends strong { color: var(--ochre-hi); font-family: var(--serif); font-size: 1.6rem; font-weight: 500; }

.v3 .play-brief { display: grid; gap: var(--s5); margin-top: var(--s5); }
.v3 .play-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s2); margin: var(--s4) 0 0; }
.v3 .play-facts div { min-width: 0; padding: var(--s3); border: 1px solid var(--hair); border-radius: var(--r-sm); background: rgba(9,20,14,.3); }
.v3 .play-facts dt { color: var(--tx-3); font-size: var(--fs-micro); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.v3 .play-facts dd { margin: .35rem 0 0; color: var(--tx-1); font-size: var(--fs-xs); line-height: 1.45; }
.v3 .play-block { padding-top: var(--s5); border-top: 1px solid var(--hair); }
.v3 .play-block:first-child { padding-top: 0; border-top: 0; }
.v3 .play-block h3 { margin: 0 0 var(--s3); color: var(--tx-1); font-size: 1rem; }
.v3 .play-block p { margin: 0; color: var(--tx-2); line-height: 1.65; }
.v3 .play-block ul { margin: 0; padding-left: 1.2rem; color: var(--tx-2); }
.v3 .play-block li + li { margin-top: var(--s2); }
.v3 .play-data-note { padding: var(--s4); border: 1px solid var(--hair); border-radius: var(--r-md); background: rgba(9,20,14,.34); color: var(--tx-2); font-size: var(--fs-small); }
.v3 .tool-results[data-status="data-gap"] .play-data-note { border-color: rgba(230,190,130,.44); background: rgba(183,127,60,.1); }

.v3 .tool-method { max-width: 790px; padding: var(--rhythm-tight) 0 var(--rhythm); color: var(--tx-2); }
.v3 .tool-method p,
.v3 .tool-method li { line-height: 1.7; }
.v3 .tool-method h2 { margin-top: var(--s8); font-size: var(--fs-h2); }
.v3 .tool-method h2:first-child { margin-top: 0; }
.v3 .tool-note { margin: var(--s6) 0; padding: var(--s5); }
.v3 .tool-note p { margin: 0; }
.v3 .tool-note p + p { margin-top: var(--s3); }
.v3 .tool-cta { margin-top: var(--s8); padding: clamp(1.5rem, 4vw, 2.5rem); border: 1px solid rgba(183,127,60,.42); border-radius: var(--r-lg); background: linear-gradient(180deg, rgba(183,127,60,.13), rgba(242,239,230,.04)); box-shadow: var(--e2-shadow), inset 0 1px 0 rgba(255,255,255,.16); }
.v3 .tool-cta p { color: var(--tx-3); }

.v3 .tools-index { min-height: 62vh; padding: clamp(5rem, 11vh, 8rem) 0 var(--rhythm); }
.v3 .tool-jumps { display: flex; flex-wrap: wrap; gap: var(--s2); margin-top: var(--s6); }
.v3 .tool-jumps a { display: inline-flex; min-height: 40px; align-items: center; padding: .5rem .85rem; border: 1px solid var(--hair); border-radius: var(--r-pill); background: rgba(9,20,14,.3); color: var(--tx-2); font-size: var(--fs-xs); font-weight: 650; transition: border-color .2s, color .2s, background .2s; }
.v3 .tool-jumps a:hover,
.v3 .tool-jumps a:focus-visible { border-color: var(--ochre); background: rgba(183,127,60,.1); color: var(--ochre-hi); }
.v3 .tools-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s5); margin-top: var(--s8); }
.v3 .tool-category { margin-top: var(--s8); }
.v3 .tool-category + .tool-category { padding-top: var(--s7); border-top: 1px solid var(--hair); }
.v3 .tool-category__head { display: grid; grid-template-columns: minmax(0, .65fr) minmax(0, 1.35fr); gap: var(--s6); align-items: end; }
.v3 .tool-category__head h2 { margin: var(--s3) 0 0; color: var(--tx-1); font-family: var(--serif); font-size: var(--fs-h2); font-weight: 350; line-height: 1.1; }
.v3 .tool-category__head p { max-width: 58ch; margin: 0; color: var(--tx-3); line-height: 1.65; }
.v3 .tool-category .tools-grid { margin-top: var(--s6); }
.v3 .tool-card { display: flex; min-height: 300px; flex-direction: column; padding: clamp(1.5rem, 3vw, 2rem); transition: transform .3s var(--ease), border-color .3s var(--ease), background .3s var(--ease); }
.v3 .tool-card:hover { transform: translateY(-4px); border-color: rgba(183,127,60,.5); background: linear-gradient(180deg,rgba(242,239,230,.13),rgba(242,239,230,.055)); }
.v3 .tool-card h2,
.v3 .tool-card h3 { margin: var(--s4) 0 var(--s3); color: var(--tx-1); font-family: var(--serif); font-size: var(--fs-h3); font-weight: 350; line-height: 1.16; text-wrap: balance; }
.v3 .tool-card p { color: var(--tx-3); }
.v3 .tool-card__detail { display: block; margin-top: auto; padding-top: var(--s5); color: var(--tx-2); font-size: var(--fs-xs); }
.v3 .tool-card__open { display: block; margin-top: var(--s4); color: var(--ochre-hi); font-size: var(--fs-small); font-weight: 700; }

@media (max-width: 900px) {
  .v3 .tool-workspace { grid-template-columns: 1fr; }
  .v3 .tool-results { position: static; }
}

@media (min-width: 681px) {
  .v3 #icp-form .tool-field--full { grid-column: auto; }
}

@media (max-width: 680px) {
  .v3 .tool-hero,
  .v3 .tools-index { padding-top: var(--s8); }
  .v3 .tool-fields,
  .v3 .tool-metrics,
  .v3 .diagnostic-options,
  .v3 .tools-grid,
  .v3 .contract-grid,
  .v3 .tool-category__head { grid-template-columns: 1fr; }
  .v3 .scenario-cards { grid-template-columns: 1fr; }
  .v3 .scenario-range { gap: var(--s2); }
  .v3 .play-facts { grid-template-columns: 1fr; }
  .v3 .tool-card { min-height: 0; }
  .v3 .tool-jumps { flex-wrap: nowrap; width: calc(100vw - 8%); overflow-x: auto; padding-bottom: var(--s2); scrollbar-width: thin; }
  .v3 .tool-jumps a { min-height: 44px; flex: 0 0 auto; font-size: .78rem; }
  .v3 .tool-card__detail { font-size: .82rem; }
  .v3 .tool-submit,
  .v3 .tool-button { width: 100%; }
  .v3 .tool-actions { flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  .v3 .tool-card,
  .v3 .tool-submit,
  .v3 .tool-button { transition: none; }
}

/* ---- tools index: lean cards (title, one line, arrow) --------------------
   The detail and CTA lines live on each tool's own page; the grid only has
   to say what each tool is. The whole card is the link. */
/* columns follow each category's count so no card sits alone on a row:
   4 -> one row of four, 2 -> two halves, 5 -> three over two */
.v3 .tools-index .tools-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s4); }
.v3 .tools-index .tools-grid:has(> :nth-child(2):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v3 .tools-index .tools-grid:has(> :nth-child(5):last-child) { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.v3 .tools-index .tools-grid:has(> :nth-child(5):last-child) > * { grid-column: span 2; }
.v3 .tools-index .tools-grid:has(> :nth-child(5):last-child) > :nth-last-child(-n+2) { grid-column: span 3; }
.v3 .tools-index .tool-card { position: relative; min-height: 0; padding: clamp(1.25rem, 2.2vw, 1.6rem); padding-right: 3rem; }
.v3 .tools-index .tool-card h3 { margin: 0 0 var(--s2); font-size: clamp(1.2rem, 1.6vw, 1.4rem); }
.v3 .tools-index .tool-card p { margin: 0; font-size: var(--fs-small); line-height: 1.5; }
.v3 .tool-card__go { position: absolute; top: clamp(1.25rem, 2.2vw, 1.6rem); right: 1.2rem; color: var(--ochre-hi); font-weight: 700;
  transition: transform .3s var(--ease); }
.v3 .tool-card:hover .tool-card__go,
.v3 .tool-card:focus-visible .tool-card__go { transform: translateX(4px); }
@media (max-width: 1080px) {
  .v3 .tools-index .tools-grid,
  .v3 .tools-index .tools-grid:has(> :nth-child(5):last-child) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v3 .tools-index .tools-grid:has(> :nth-child(5):last-child) > * { grid-column: auto; }
  .v3 .tools-index .tools-grid > :last-child:nth-child(odd) { grid-column: 1 / -1; }
}
@media (max-width: 680px) {
  .v3 .tools-index .tools-grid,
  .v3 .tools-index .tools-grid:has(> :nth-child(5):last-child) { grid-template-columns: 1fr; gap: var(--s3); }
}
