/* CalcShed Concrete Slab Cost staging vNext. Scoped under .cs-vn. */
.cs-vn { --cs-ink:#18251f; --cs-muted:#44564d; --cs-green:#14623f; --cs-green-dark:#0c4c30; --cs-border:#d5e1da; --cs-wash:#f5faf6; --cs-paper:#fff; --cs-warn:#fff6e2; --cs-warn-border:#a66b10; max-width:1040px; min-width:0; padding:16px 18px 74px; margin:0 auto; font-size:16px; line-height:1.56; font-family:var(--cs-ff,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif); color:var(--cs-ink); }
.cs-vn *, .cs-vn *::before,.cs-vn *::after { box-sizing:border-box; }
.cs-vn h1,.cs-vn h2,.cs-vn h3 {color:var(--cs-ink); line-height:1.25; margin:0 0 .65rem; font-weight:700;}
.cs-vn h1 {font-size:clamp(1.85rem,3vw,2.4rem); margin:.2rem 0 .65rem;}
.cs-vn h2 {font-size:clamp(1.35rem,2.25vw,1.65rem); scroll-margin-top:92px;}
.cs-vn h3 {font-size:1.1rem;}
.cs-vn p {margin:.6rem 0 1rem;}
.cs-vn a {color:var(--cs-green-dark);text-underline-offset:.18em;}
.cs-vn a:focus-visible,.cs-vn button:focus-visible,.cs-vn input:focus-visible,.cs-vn select:focus-visible,.cs-vn textarea:focus-visible,.cs-vn summary:focus-visible {outline:3px solid #0a6b45;outline-offset:3px;}
.cs-vn-byline,.cs-vn-small,.cs-vn-formnote,.cs-vn-footer-note {font-size:.88rem; color:var(--cs-muted);}
.cs-vn-intro {margin:0 0 1.2rem;}.cs-vn-lede {font-size:1.08rem;max-width:880px;}
.cs-vn-section {padding:1.7rem 0 .8rem; border-bottom:1px solid var(--cs-border);scroll-margin-top:90px;}
.cs-vn-section > p,.cs-vn-section > ul,.cs-vn-section > ol {max-width:880px;}
.cs-vn-section ul,.cs-vn-section ol {padding-left:1.3rem;}
.cs-vn-primary {margin-top:.5rem; padding:1.2rem 1.1rem 1.3rem; background:var(--cs-wash); border:1px solid var(--cs-border); border-radius:16px;}
.cs-vn-js-only[hidden],.cs-vn-print-document[hidden],.cs-vn-result[hidden] {display:none !important;}
.cs-vn-estimator {display:grid; grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:1rem;align-items:stretch;}
.cs-vn-form,.cs-vn-result {background:var(--cs-paper);padding:1.1rem;border-radius:12px;border:1px solid var(--cs-border);min-width:0;}
.cs-vn-fieldgrid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;}
.cs-vn-field {display:flex;flex-direction:column;gap:.3rem;min-width:0;}.cs-vn-field-wide {grid-column:1/-1;}
.cs-vn-field label {font-size:.88rem;font-weight:700;}.cs-vn-field label span {font-size:.79rem;color:var(--cs-muted);font-weight:400;}
.cs-vn-field input,.cs-vn-field select,.cs-vn-field textarea {background:#fff;color:#17261e;border:1px solid #849a8e;border-radius:8px;padding:.7rem .72rem;min-height:44px;width:100%;max-width:100%;font:inherit;}
.cs-vn-field input[aria-invalid="true"] {border:2px solid #a42a2a;}.cs-vn-error {color:#992525;min-height:.3em;font-size:.83rem;}
.cs-vn-formnote {margin:1rem 0;line-height:1.5;}.cs-vn-formactions,.cs-vn-resultactions {display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;}
.cs-vn button {cursor:pointer;font:inherit;line-height:1.3;min-height:44px;border-radius:8px;padding:.64rem .88rem;font-weight:650;max-width:100%;}
.cs-vn button:disabled {opacity:.52;cursor:not-allowed;}
.cs-vn-mainbutton {background:var(--cs-green-dark);color:#fff;border:1px solid var(--cs-green-dark);}.cs-vn-mainbutton:hover {background:#093a26;}
.cs-vn-outlinebutton {background:#fff;color:var(--cs-green-dark);border:1px solid var(--cs-green-dark);}
.cs-vn-textbutton {background:transparent;color:var(--cs-green-dark);border:1px solid transparent;text-decoration:underline;}
.cs-vn-result {border:2px solid #bfd7c8;display:flex;flex-direction:column;justify-content:flex-start;}
.cs-vn-overline {font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--cs-green-dark);font-weight:750;margin:.1rem 0 .3rem!important;}
.cs-vn-result h3 {font-size:1.12rem;margin-bottom:.35rem;}
.cs-vn-bigprice {font-size:clamp(1.65rem,3vw,2.25rem);font-weight:750;line-height:1.2;letter-spacing:-.025em;overflow-wrap:anywhere;margin:.3rem 0!important;}
.cs-vn-resultline {margin:.15rem 0!important;font-weight:600;}.cs-vn-explanation {font-size:.92rem;background:var(--cs-warn);border-left:4px solid var(--cs-warn-border);padding:.7rem .8rem;border-radius:5px;line-height:1.48;margin:1rem 0!important;}
.cs-vn-resultactions {margin-top:auto;}.cs-vn-copy-status,.cs-vn-pending {font-size:.88rem;min-height:1.3em;color:var(--cs-green-dark);}
.cs-vn-presets {display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin:.9rem 0 0;}.cs-vn-presets strong {font-size:.88rem;}
.cs-vn-presets button {min-height:40px;padding:.4rem .65rem;background:#fff;border:1px solid var(--cs-border);color:var(--cs-green-dark);}
.cs-vn-nav {background:var(--cs-wash);border:1px solid var(--cs-border);border-radius:10px;padding:1rem 1.2rem;margin:1.4rem 0 .4rem;}
.cs-vn-nav strong {font-size:.84rem;display:block;margin:0 0 .45rem;}.cs-vn-nav>div {display:flex;flex-wrap:wrap;gap:.3rem 1.05rem;}.cs-vn-nav a {font-size:.87rem;}
.cs-vn-columns {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem;}
.cs-vn-tablewrap {overflow-x:auto;border:1px solid var(--cs-border);border-radius:10px;margin:1.2rem 0;}
.cs-vn-tablewrap table {width:100%;border-collapse:collapse;min-width:600px;text-align:left;font-size:.91rem;}
.cs-vn-tablewrap th,.cs-vn-tablewrap td {padding:.8rem .72rem;border-bottom:1px solid var(--cs-border);white-space:normal;}
.cs-vn-tablewrap thead th {background:var(--cs-wash);color:var(--cs-ink);}.cs-vn-tablewrap tr:last-child>* {border-bottom:0;}
.cs-vn-faq details {background:#fff;border:1px solid var(--cs-border);border-radius:9px;margin:.65rem 0;padding:.7rem 1rem;}
.cs-vn-faq summary {font-weight:650;cursor:pointer;}.cs-vn-faq details p {margin:.55rem 0;}
.cs-vn-checkgroup {border:1px solid var(--cs-border);padding:.8rem 1rem 1rem;margin:.8rem 0;border-radius:9px;}
.cs-vn-checkgroup legend {padding:0 .3rem;font-weight:700;}
.cs-vn-checkrow {display:grid;grid-template-columns:minmax(0,1fr) 135px;gap:.75rem;align-items:center;padding:.3rem 0;border-bottom:1px solid #ecf2ee;}
.cs-vn-checkrow:last-child {border-bottom:0;}.cs-vn-checkrow label {font-size:.91rem;line-height:1.35;}.cs-vn-checkrow select {padding:.4rem;background:#fff;color:var(--cs-ink);border:1px solid #849a8e;border-radius:6px;min-height:38px;max-width:100%;}
.cs-vn-notefield {max-width:740px;}.cs-vn-footer-note {margin-top:1.5rem;}
.cs-vn-print-document {display:none;}
@media(max-width:760px) {.cs-vn-estimator,.cs-vn-columns {grid-template-columns:1fr;}.cs-vn {padding:12px 14px 60px;}.cs-vn-primary {padding:1rem .7rem;}.cs-vn-form,.cs-vn-result {padding:.9rem;}.cs-vn-section {padding-top:1.4rem;}}
@media(max-width:390px) {.cs-vn-fieldgrid {grid-template-columns:1fr;}.cs-vn-field-wide {grid-column:auto;}.cs-vn-bigprice {font-size:1.6rem;}.cs-vn-formactions>* {flex:1;}.cs-vn-checkrow {grid-template-columns:1fr;gap:.3rem;}.cs-vn-checkrow select {width:100%;}}
@media(prefers-reduced-motion:reduce) {.cs-vn * {scroll-behavior:auto!important;transition:none!important;}}
[data-theme="dark"] .cs-vn,.dark-mode .cs-vn {--cs-ink:#e6f5ec;--cs-muted:#bacdc0;--cs-green:#86efb4;--cs-green-dark:#9ceac3;--cs-border:#385b49;--cs-wash:#172b21;--cs-paper:#20352a;--cs-warn:#463721;--cs-warn-border:#e0a34c;}
[data-theme="dark"] .cs-vn .cs-vn-field input,[data-theme="dark"] .cs-vn .cs-vn-field select,[data-theme="dark"] .cs-vn .cs-vn-field textarea,[data-theme="dark"] .cs-vn .cs-vn-checkrow select,.dark-mode .cs-vn .cs-vn-field input,.dark-mode .cs-vn .cs-vn-field select {background:#243c2e;color:#eef8f1;border-color:#8ca69a;}
[data-theme="dark"] .cs-vn .cs-vn-outlinebutton,[data-theme="dark"] .cs-vn .cs-vn-presets button,[data-theme="dark"] .cs-vn .cs-vn-faq details {background:#20352a;color:#e6f5ec;}
[data-theme="dark"] .cs-vn .cs-vn-mainbutton {background:#12492f;color:white;border-color:#92d8ad;}
@media print {
  @page {size:auto;margin:12mm;}
  body.cs-vn-printing>*:not(#cs-vn-print-document) {display:none!important;}
  body.cs-vn-printing #cs-vn-print-document {display:block!important;position:static;visibility:visible;max-width:100%;font-family:Arial,sans-serif;font-size:10pt;color:#000;line-height:1.32;background:#fff;}
  body.cs-vn-printing #cs-vn-print-document[hidden] {display:block!important;}
  #cs-vn-print-document h1 {font-size:17pt;margin:0 0 8pt;}
  #cs-vn-print-document h2 {font-size:11pt;margin:9pt 0 4pt;}
  #cs-vn-print-document p {margin:4pt 0;}
  #cs-vn-print-document table {width:100%;border-collapse:collapse;font-size:9pt;}
  #cs-vn-print-document th,#cs-vn-print-document td {text-align:left;border-bottom:1px solid #b8b8b8;padding:3pt 5pt;}
  #cs-vn-print-document tr {break-inside:avoid;}
  #cs-vn-print-document .cs-vn-print-warning {border:1px solid #444;padding:5pt;}
}

/* Production parity: preserve both October 13 Angi sponsored placements. */
.cs-vn-affiliate{border:1px solid var(--cs-border);border-radius:12px;padding:1rem 1.2rem;margin:1.2rem 0;background:var(--cs-wash);position:relative;}
.cs-vn-affiliate h3{margin:0 7rem .4rem 0;font-size:1.06rem;}
.cs-vn-affiliate p{margin:.35rem 0 .85rem;}
.cs-vn-aff-label{position:absolute;top:1rem;right:1rem;color:var(--cs-muted);font-size:.78rem;}
.cs-vn .cs-vn-aff-action{display:inline-flex;min-height:44px;align-items:center;gap:.45rem;padding:.65rem 1rem;border-radius:8px;background:#0c4c30;color:#fff;text-decoration:none;font-weight:700;}
.cs-vn .cs-vn-aff-action:hover{background:#073723;color:#fff;}
.cs-vn .cs-vn-aff-action:focus-visible{outline:3px solid #a4eac5;outline-offset:3px;}
.cs-vn-aff-inline-label{color:var(--cs-muted);font-size:.85rem;}
[data-theme="dark"] .cs-vn .cs-vn-aff-action,.dark-mode .cs-vn .cs-vn-aff-action{background:#12492f;color:#fff;}
@media(max-width:390px){.cs-vn-affiliate h3{margin-right:0;padding-top:1.3rem;}.cs-vn-aff-label{top:.65rem;right:.75rem;}}
@media print{.cs-vn-affiliate,.cs-vn-aff-inline-label{display:none!important;}}

/* October 14 integrated review: responsive, accessible data visuals and brief disclosure. */
.cs-vn-anchor-alias{display:block;position:relative;top:-85px;visibility:hidden;}
.cs-vn-brief-details{border:1px solid var(--cs-border);border-radius:10px;padding:.8rem 1rem;background:var(--cs-wash);margin:1rem 0;}
.cs-vn-brief-details>summary{cursor:pointer;font-weight:700;min-height:44px;padding:.45rem 0;}
.cs-vn-brief-details[open]{background:var(--cs-paper);}
.cs-vn-compare{margin:1.1rem 0;border:1px solid var(--cs-border);padding:1rem;border-radius:12px;background:var(--cs-wash);max-width:750px;}
.cs-vn-compare figcaption,.cs-vn-trend-figure figcaption{margin:0 0 .75rem;}
.cs-vn-compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}
.cs-vn-compare-grid>div{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:.8rem;background:var(--cs-paper);border-radius:8px;text-align:center;}
.cs-vn-compare-grid span{color:var(--cs-muted);font-size:.85rem;}
.cs-vn-shape{background:#bedccc;border:2px solid #176946;max-width:100%;margin:1rem 0 .5rem;}
.cs-vn-shape-square{width:110px;height:110px;}
.cs-vn-shape-rectangle{width:180px;height:55px;}
.cs-vn-factor-list li{margin:.75rem 0;}
.cs-vn-trend-figure{border:1px solid var(--cs-border);border-radius:12px;background:var(--cs-wash);padding:1rem;max-width:820px;}
.cs-vn-trend-bars{height:250px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;align-items:end;}
.cs-vn-trend-col{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:.2rem;min-width:0;}
.cs-vn-trend-col span{font-size:.72rem;font-variant-numeric:tabular-nums;}
.cs-vn-trend-bar{min-height:2px;background:#28734e;border-radius:5px 5px 0 0;width:100%;max-width:75px;}
.cs-vn-trend-col small{font-size:.74rem;}
.cs-vn-compact{margin:.35rem 0 .75rem!important;}
@media(max-width:540px){.cs-vn-compare-grid{grid-template-columns:1fr 1fr;gap:.35rem;}.cs-vn-compare-grid>div{padding:.5rem .2rem;}.cs-vn-shape-square{width:80px;height:80px;}.cs-vn-shape-rectangle{width:125px;height:40px;}.cs-vn-trend-bars{height:195px;gap:3px;}.cs-vn-trend-col span{font-size:.6rem;}.cs-vn-trend-col small{font-size:.64rem;}}
@media print{.cs-vn-compare,.cs-vn-trend-figure{break-inside:avoid;}}
/* Astra red-team corrections: validation, scope controls, quotes and readable fallbacks. */
.cs-vn-enhancement[hidden], .cs-vn-js-only[hidden], .cs-vn-quote-card[hidden], .cs-vn-error-summary[hidden], .cs-vn-copy-fallback[hidden]{display:none!important;}
.cs-vn-error-summary{padding:.65rem .85rem;background:#fff0ed;color:#7c1f19;border-left:4px solid #b22a1c;margin:.65rem 0;border-radius:6px;font-size:.94rem;}
.cs-vn-hint{font-size:.81rem;color:var(--cs-muted);line-height:1.35;}
.cs-vn-field input[aria-invalid="true"],.cs-vn-field select[aria-invalid="true"]{border:2px solid #ac2924;}
.cs-vn-condition-field{grid-column:1/-1;margin:.3rem 0 0;padding:.8rem 1rem;border-radius:10px;border:1px solid var(--cs-border);min-width:0;}
.cs-vn-condition-field legend{font-size:.88rem;font-weight:700;padding:0 .3rem;}
.cs-vn-checkbox-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem .75rem;}
.cs-vn-checkbox-grid label{font-size:.86rem;display:flex;align-items:flex-start;gap:.45rem;line-height:1.4;cursor:pointer;}
.cs-vn-checkbox-grid input{width:18px;height:18px;flex:none;accent-color:#0c4c30;}
.cs-vn-copy-fallback{display:block;width:100%;max-width:100%;padding:.65rem;background:var(--cs-paper);color:var(--cs-ink);border:1px solid var(--cs-border);border-radius:8px;white-space:pre-wrap;}
.cs-vn-row-note{display:block;font-size:.76rem;color:var(--cs-muted);line-height:1.3;margin-top:.25rem;font-weight:400;max-width:20rem;}
.cs-vn-quote-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;}
.cs-vn-quote-card{min-width:0;border:1px solid var(--cs-border);border-radius:12px;padding:1rem;margin:.3rem 0 1rem;background:var(--cs-wash);}
.cs-vn-quote-card legend{font-weight:750;padding:0 .35rem;}
.cs-vn-quote-fields{display:grid;grid-template-columns:1fr;gap:.65rem;}
.cs-vn-quote-fields label{font-size:.85rem;font-weight:650;display:flex;flex-direction:column;gap:.23rem;}
.cs-vn-quote-fields input,.cs-vn-quote-fields select{border:1px solid #849a8e;border-radius:7px;min-height:44px;padding:.6rem;width:100%;min-width:0;background:#fff;color:#162c20;font:inherit;}
.cs-vn-quote-output{margin-top:1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;}
.cs-vn-quote-summary{padding:.85rem;background:var(--cs-wash);border:1px solid var(--cs-border);border-radius:10px;min-width:0;}
.cs-vn-quote-summary h3{margin:0 0 .5rem;font-size:1rem;overflow-wrap:anywhere;}
.cs-vn-quote-summary p{margin:0;overflow-wrap:anywhere;}
.cs-vn-quote-verdict{grid-column:1/-1;background:var(--cs-warn);border-left:4px solid var(--cs-warn-border);padding:.7rem .8rem;font-weight:650;border-radius:4px;}
/* Correct relative geometry: equal area means proportional drawn side lengths. */
.cs-vn-shape-square{width:90px;height:90px;}.cs-vn-shape-rectangle{width:180px;height:45px;}
@media(max-width:760px){.cs-vn-quote-cards,.cs-vn-quote-output{grid-template-columns:1fr;}}
@media(max-width:540px){.cs-vn-checkbox-grid{grid-template-columns:1fr;}.cs-vn-fieldgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;}.cs-vn-field-wide,.cs-vn-condition-field{grid-column:1/-1;}.cs-vn-shape-square{width:70px;height:70px;}.cs-vn-shape-rectangle{width:140px;height:35px;}}
@media(max-width:340px){.cs-vn-fieldgrid{grid-template-columns:repeat(2,minmax(0,1fr));}.cs-vn-field input{padding:.55rem .45rem;font-size:.98rem;}}
/* The production theme has both data-theme and dark-mode variants. */
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-mainbutton{background:#12492f;color:#fff;border-color:#92d8ad;}
:is([data-theme="dark"],.dark-mode) .cs-vn :is(.cs-vn-field input,.cs-vn-field select,.cs-vn-field textarea,.cs-vn-checkrow select,.cs-vn-quote-fields input,.cs-vn-quote-fields select,.cs-vn-copy-fallback){background:#243c2e;color:#eef8f1;border-color:#8ca69a;}
:is([data-theme="dark"],.dark-mode) .cs-vn :is(.cs-vn-outlinebutton,.cs-vn-presets button,.cs-vn-faq details,.cs-vn-quote-card,.cs-vn-quote-summary){background:#20352a;color:#e6f5ec;border-color:#547563;}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-quote-verdict{background:#463721;color:#f7eed8;}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-error-summary{background:#492c2a;color:#fff0ec;border-color:#f0a094;}
@media print{
  .cs-vn-print-body{font:9.5pt/1.4 Arial,sans-serif;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;margin:0;}
  .cs-vn-brief-details{break-inside:auto;}
  .cs-vn-brief-details:not([open])>div{display:block!important;}
  .cs-vn-js-only,.cs-vn-formactions,.cs-vn-mainbutton,.cs-vn-outlinebutton{display:none!important;}
}

/* Independently printable server-rendered checklist: closed <details> is not reliably printable. */
.cs-vn-brief-print-fallback{display:none;}
@media print{
  body:not(.cs-vn-printing) .cs-vn-brief-print-fallback{display:block!important;}
  .cs-vn-brief-print-fallback ul{columns:2;column-gap:1.2rem;}
  .cs-vn-brief-print-fallback li{break-inside:avoid;}
  .cs-vn-brief-print-fallback h4{margin:.65rem 0 .25rem;break-after:avoid;}
}

/* V4 independently verified mobile issue: primary size prices must be visible without sideways table scrolling. */
.cs-vn-mobile-area{display:none;}
@media(max-width:600px){
  .cs-vn .cs-vn-size-table{min-width:0;width:100%;table-layout:fixed;font-size:.82rem;}
  .cs-vn .cs-vn-size-table :is(th,td){padding:.6rem .3rem;overflow-wrap:anywhere;vertical-align:top;}
  .cs-vn .cs-vn-size-table :is(th,td):nth-child(2){display:none;}
  .cs-vn .cs-vn-size-table :is(th,td):nth-child(1){width:24%;}
  .cs-vn .cs-vn-size-table :is(th,td):nth-child(3){width:49%;}
  .cs-vn .cs-vn-size-table :is(th,td):nth-child(4){width:27%;}
  .cs-vn .cs-vn-mobile-area{display:block;font-size:.76rem;font-weight:400;color:var(--cs-muted);margin-top:.15rem;line-height:1.3;}
  .cs-vn .cs-vn-size-table .cs-vn-row-note{font-size:.74rem;}
}

/* V4 mobile task flow: secondary site-complication controls no longer bury the result. */
.cs-vn-advanced{border:1px solid var(--cs-border);border-radius:8px;padding:.3rem .7rem;background:var(--cs-paper);min-width:0;}
.cs-vn-advanced>summary{font-weight:700;font-size:.88rem;cursor:pointer;padding:.45rem .15rem;min-height:40px;}
.cs-vn-advanced[open]{padding-bottom:.75rem;}
.cs-vn-advanced .cs-vn-condition-field{margin:.5rem 0 .1rem;}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-advanced{background:#20352a;border-color:#547563;color:#e6f5ec;}

/* When a phone user submits the form, the result is focused and scrolled just below the sticky header. */
.cs-vn-result{scroll-margin-top:94px;}
.cs-vn-result:focus{outline:3px solid #0a6b45;outline-offset:2px;}
/* V4 dark mode: visible keyboard focus and input errors, not near-black on dark paper. */
:is([data-theme="dark"],.dark-mode) .cs-vn :is(a,button,input,select,textarea,summary):focus-visible,
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-result:focus{outline:3px solid #a8f5c9;outline-offset:3px;}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-error{color:#ffb8b0;}

/* V4.1 independent phone review: long project-purpose choices must be legible. */
@media(max-width:540px){
  .cs-vn .cs-vn-purpose-field,.cs-vn .cs-vn-depth-field{grid-column:1/-1;}
}
/* Progressive disclosure for contractor-exclusion lines, not extra features. */
.cs-vn .cs-vn-exclusion-fields[hidden]{display:none!important;}
.cs-vn-exclusion-fields{display:grid;gap:.65rem;padding:.75rem;border:1px solid var(--cs-border);background:var(--cs-paper);border-radius:8px;}
.cs-vn-exclusion-fields>p{margin:0;}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-exclusion-fields{background:#20352a;color:#e6f5ec;}

/* Historical #index links now jump to quote-planning guidance, not a retired pricing dataset. */
.cs-vn .cs-vn-legacy-anchor { display:block; height:0; scroll-margin-top:90px; }

/* V4.11: visibly focus and reveal a completed quote result after submit. */
.cs-vn-quote-output{scroll-margin-top:94px;}
.cs-vn-quote-output:focus{outline:3px solid #0a6b45;outline-offset:3px;}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-quote-output:focus{outline-color:#a8f5c9;}

/* V4.17.2: match the published CalcShed theme palette, without overriding theme files.
   Site tokens are captured on body BEFORE the main content's historical local --cs-* tokens.
   This avoids recursive custom-property references inside .cs-vn. */
body {
  --slab-site-ink: var(--cs-ink);
  --slab-site-muted: var(--cs-ink-4);
  --slab-site-border: var(--cs-border);
  --slab-site-border-2: var(--cs-border-2);
  --slab-site-card: var(--cs-card-bg);
  --slab-site-raised: var(--cs-raised);
  --slab-site-link: var(--cs-green-deep);
  --slab-site-button: var(--cs-green-deep);
  --slab-site-warn: var(--cs-green-bg);
}
[data-theme="dark"] body { --slab-site-link:var(--cs-green-text); }
.cs-vn {
  width:100%; max-width:1040px; min-width:0;
  --cs-ink:var(--slab-site-ink,#0f172a);
  --cs-muted:var(--slab-site-muted,#475569);
  --cs-border:var(--slab-site-border,#dfe1e8);
  --cs-wash:var(--slab-site-raised,#f8f9fb);
  --cs-paper:var(--slab-site-card,#fff);
  --cs-green-dark:var(--slab-site-button,#166534);
  --cs-warn:var(--slab-site-warn,#f8f9fb);
  overflow-wrap:break-word;
}
.cs-vn a,.cs-vn .cs-vn-textbutton {color:var(--slab-site-link,#166534);}
.cs-vn .cs-vn-mainbutton,.cs-vn .cs-vn-aff-action {
  background:var(--slab-site-button,#166534); color:#fff; border-color:var(--slab-site-button,#166534);
}
.cs-vn .cs-vn-mainbutton:hover,.cs-vn .cs-vn-aff-action:hover {background:var(--cs-green-dark,#166534);color:#fff;}
.cs-vn .cs-vn-outlinebutton {background:var(--cs-paper);color:var(--slab-site-link,#166534);border-color:var(--slab-site-link,#166534);}
.cs-vn .cs-vn-presets button {background:var(--cs-paper);color:var(--slab-site-link,#166534);}
.cs-vn .cs-vn-result {border-color:var(--slab-site-border-2,#cdd0d9);}
.cs-vn .cs-vn-checkrow {border-bottom-color:var(--cs-border);}
.cs-vn .cs-vn-overline,.cs-vn .cs-vn-copy-status,.cs-vn .cs-vn-pending {color:var(--slab-site-link,#166534);}

/* The historical dark override is more specific than .cs-vn alone. Rebind it here. */
:is([data-theme="dark"],.dark-mode) .cs-vn {
  --cs-ink:var(--slab-site-ink,#f8fafc);
  --cs-muted:var(--slab-site-muted,#94a3b8);
  --cs-border:var(--slab-site-border,#262737);
  --cs-wash:var(--slab-site-raised,#1c1d28);
  --cs-paper:var(--slab-site-card,#15161e);
  --cs-green-dark:var(--slab-site-button,#15803d);
  --cs-warn:var(--slab-site-warn,#1c1d28);
}
/* Dark-specific declarations from older releases had hard-coded green surfaces.
   Override them using the site's actual card/raised/input palette. */
:is([data-theme="dark"],.dark-mode) .cs-vn :is(.cs-vn-advanced,.cs-vn-exclusion-fields,.cs-vn-quote-card,.cs-vn-quote-summary,.cs-vn-faq details,.cs-vn-presets button,.cs-vn-outlinebutton) {
  background:var(--cs-paper);color:var(--cs-ink);border-color:var(--cs-border);
}
:is([data-theme="dark"],.dark-mode) .cs-vn :is(.cs-vn-field input,.cs-vn-field select,.cs-vn-field textarea,.cs-vn-checkrow select,.cs-vn-quote-fields input,.cs-vn-quote-fields select,.cs-vn-copy-fallback) {
  background:var(--slab-site-raised,#1c1d28);color:var(--cs-ink);border-color:var(--cs-border);
}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-mainbutton {background:var(--slab-site-button,#15803d);color:#fff;border-color:var(--slab-site-button,#15803d);}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-outlinebutton {color:var(--slab-site-link,#4ade80);border-color:var(--slab-site-link,#4ade80);}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-presets button {color:var(--slab-site-link,#4ade80);}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-quote-verdict {background:var(--cs-wash);color:var(--cs-ink);border-left-color:var(--slab-site-link);}
:is([data-theme="dark"],.dark-mode) .cs-vn .cs-vn-advanced {color:var(--cs-ink);}
/* Desktop: no narrow hard stop on the comparison figure, trend figure or data tables. */
.cs-vn .cs-vn-compare,.cs-vn .cs-vn-trend-figure {width:100%;max-width:none;min-width:0;}
.cs-vn .cs-vn-tablewrap {width:100%;max-width:100%;min-width:0;}
.cs-vn .cs-vn-tablewrap table {width:100%;min-width:0;max-width:100%;table-layout:fixed;}
.cs-vn .cs-vn-tablewrap th,.cs-vn .cs-vn-tablewrap td {overflow-wrap:anywhere;}
.cs-vn .cs-vn-compare-grid {min-width:0;}
@media (min-width:761px) {
  .cs-vn .cs-vn-shape-square {width:160px;height:160px;}
  .cs-vn .cs-vn-shape-rectangle {width:320px;height:80px;}
}
/* Phones: keep ALL columns readable rather than a 600px table that demands zooming.
   Real header cells remain in the document for assistive technology; CSS labels mirror them. */
@media (max-width:640px) {
  .cs-vn {width:100%;max-width:100%;min-width:0;padding:12px 12px 48px;}
  .cs-vn :is(.cs-vn-section,.cs-vn-primary,.cs-vn-estimator,.cs-vn-form,.cs-vn-result,.cs-vn-quote-cards,.cs-vn-quote-card,.cs-vn-compare,.cs-vn-trend-figure) {min-width:0;max-width:100%;}
  .cs-vn .cs-vn-tablewrap {border:0;background:transparent;overflow:visible;}
  .cs-vn .cs-vn-tablewrap table {display:block;min-width:0;width:100%;table-layout:auto;font-size:.91rem;}
  .cs-vn .cs-vn-tablewrap thead {position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;border:0!important;overflow:hidden!important;white-space:nowrap!important;clip-path:inset(50%)!important;}
  .cs-vn .cs-vn-tablewrap tbody {display:grid;grid-template-columns:minmax(0,1fr);gap:.65rem;}
  .cs-vn .cs-vn-tablewrap tbody tr {display:block;min-width:0;max-width:100%;padding:.75rem .85rem;background:var(--cs-paper);border:1px solid var(--cs-border);border-radius:10px;overflow-wrap:anywhere;}
  .cs-vn .cs-vn-tablewrap tbody tr > th {display:block;width:auto!important;max-width:100%;font-weight:750;font-size:.97rem;padding:0 0 .45rem;margin-bottom:.25rem;border-bottom:1px solid var(--cs-border);}
  .cs-vn .cs-vn-tablewrap tbody tr > td {display:block;width:auto!important;max-width:100%;padding:.3rem 0 .35rem;border:0;overflow-wrap:anywhere;}
  .cs-vn .cs-vn-tablewrap tbody tr > td::before {display:block;font-weight:650;font-size:.75rem;line-height:1.35;color:var(--cs-muted);margin-bottom:.1rem;}
  .cs-vn .cs-vn-size-table .cs-vn-mobile-area {display:none;}
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table :is(th,td):nth-child(2) {display:block;}
  .cs-vn .cs-vn-compare-grid {grid-template-columns:1fr;gap:.7rem;}
  .cs-vn .cs-vn-compare-grid > div {padding:.85rem;}
  .cs-vn .cs-vn-shape-square {width:112px;height:112px;}
  .cs-vn .cs-vn-shape-rectangle {width:224px;height:56px;}
  .cs-vn .cs-vn-trend-figure,.cs-vn .cs-vn-compare {padding:.75rem;}
  .cs-vn .cs-vn-trend-svg {display:block;max-width:100%;height:auto;}
}
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Local January 2026 ready-mix supplier price lists"] tbody tr > td:nth-child(2)::before {content:"Published per yd³";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Local January 2026 ready-mix supplier price lists"] tbody tr > td:nth-child(3)::before {content:"Important quote limitation";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Slab size and reference price table"] tbody tr > td:nth-child(2)::before {content:"Area";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Slab size and reference price table"] tbody tr > td:nth-child(3)::before {content:"Reference arithmetic";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Slab size and reference price table"] tbody tr > td:nth-child(4)::before {content:"Raw concrete, 4 in";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="80-pound bag workload comparison"] tbody tr > td:nth-child(2)::before {content:"Bags before allowance";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="80-pound bag workload comparison"] tbody tr > td:nth-child(3)::before {content:"Dry bag weight";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Work scope to compare across slab quotes"] tbody tr > td:nth-child(2)::before {content:"What your quote should specify";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Hypothetical contractor quote comparison"] tbody tr > td:nth-child(2)::before {content:"Initial quote";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Hypothetical contractor quote comparison"] tbody tr > td:nth-child(3)::before {content:"Excluded required work";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Hypothetical contractor quote comparison"] tbody tr > td:nth-child(4)::before {content:"Illustrative subtotal";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="BLS producer price index August observations"] tbody tr > td:nth-child(2)::before {content:"Index (1982=100)";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="BLS producer price index August observations"] tbody tr > td:nth-child(3)::before {content:"Change vs previous August";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Published installed slab cost comparison with scope limitations"] tbody tr > td:nth-child(2)::before {content:"Published range / sq ft";} }
@media (max-width:640px) { .cs-vn .cs-vn-tablewrap[aria-label="Published installed slab cost comparison with scope limitations"] tbody tr > td:nth-child(3)::before {content:"Scope and comparability";} }


/* V4.17.4: compact phone-first data presentation; keep all values and notes. */
.cs-vn .cs-vn-bid-details > summary{display:none;}
@media (max-width:640px) {
  .cs-vn .cs-vn-tablewrap tbody {gap:.42rem;}
  .cs-vn .cs-vn-tablewrap tbody tr {
    display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    column-gap:.6rem;row-gap:.2rem;padding:.56rem .72rem;
    align-items:start;
  }
  .cs-vn .cs-vn-tablewrap tbody tr > th {
    grid-column:1;grid-row:1;min-width:0;
    padding:0;margin:0;border:0;font-size:.89rem;line-height:1.3;
  }
  .cs-vn .cs-vn-tablewrap tbody tr > td {padding:0;min-width:0;font-size:.81rem;line-height:1.4;}
  .cs-vn .cs-vn-tablewrap tbody tr > td:nth-child(2) {
    grid-column:2;grid-row:1;text-align:right;font-weight:700;
  }
  .cs-vn .cs-vn-tablewrap tbody tr > td:nth-child(2)::before {display:none;}
  .cs-vn .cs-vn-tablewrap tbody tr > td:nth-child(3) {
    grid-column:1/-1;grid-row:2;
  }
  .cs-vn .cs-vn-tablewrap tbody tr > td:nth-child(3)::before {
    display:inline;font-size:.76rem;margin-right:.35rem;
  }
  .cs-vn .cs-vn-tablewrap tbody tr > td:nth-child(4) {
    grid-column:1/-1;grid-row:3;
  }
  .cs-vn .cs-vn-tablewrap tbody tr > td:nth-child(4)::before {
    display:inline;font-size:.76rem;margin-right:.35rem;
  }
  /* Size examples use a dedicated, concise two-column information hierarchy. */
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr {
    grid-template-columns:minmax(0, .86fr) minmax(0,1.4fr);
    column-gap:.5rem;row-gap:.24rem;padding:.54rem .68rem;
  }
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > th {
    grid-column:1;grid-row:1;font-size:.92rem;
  }
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > td:nth-child(2) {
    grid-column:1;grid-row:2;text-align:left;font-weight:400;
    color:var(--cs-muted);font-size:.79rem;
  }
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > td:nth-child(2)::before{display:none;}
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > td:nth-child(3){
    grid-column:2;grid-row:1 / span 3;font-weight:750;
    text-align:right;font-size:.92rem;line-height:1.3;
  }
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > td:nth-child(3)::before{display:none;}
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table .cs-vn-row-note{
    display:block;font-weight:400;color:var(--cs-muted);
    font-size:.74rem;line-height:1.35;margin-top:.2rem;
  }
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > td:nth-child(4) {
    grid-column:1;grid-row:3;text-align:left;
    color:var(--cs-muted);font-weight:400;font-size:.79rem;
  }
  .cs-vn .cs-vn-tablewrap .cs-vn-size-table tbody tr > td:nth-child(4)::before {
    content:'4 in: ';display:inline;margin-right:.2rem;color:var(--cs-muted);
  }
  /* Quotes remain fully functional; only secondary bid inputs fold initially. */
  .cs-vn .cs-vn-quote-card {padding:.7rem .8rem;margin:.35rem 0 .5rem;}
  .cs-vn .cs-vn-bid-details > summary{
    display:list-item;cursor:pointer;list-style:revert;
    padding:.45rem .4rem;min-height:44px;line-height:1.4;
    font-size:.85rem;font-weight:700;color:var(--cs-ink);
  }
  .cs-vn .cs-vn-bid-details > summary:focus-visible {outline:3px solid var(--slab-site-link, #246e4c);outline-offset:2px;border-radius:4px;}
  .cs-vn .cs-vn-bid-details[open] > summary {margin-bottom:.55rem;border-bottom:1px solid var(--cs-border);}
}
@media print{
  .cs-vn .cs-vn-bid-details>summary{display:none!important;}
  .cs-vn .cs-vn-bid-details:not([open])>.cs-vn-quote-fields{display:grid!important;}
}
/* The page root itself must also use border-box; earlier selectors only covered descendants. */
@media(max-width:900px){
  .cs-vn {box-sizing:border-box;}
  /* Browser figure side margins can push narrow tablet/phone viewports wider. */
  .cs-vn .cs-vn-trend-figure {margin-inline:0;}
}

/* Keep the disclosure explanation out of the desktop two-column form. */
.cs-vn .cs-vn-mobile-bid-hint{display:none;}
@media(max-width:640px){
  .cs-vn .cs-vn-mobile-bid-hint{display:block;font-size:.85rem;color:var(--cs-muted);margin:.65rem 0;}
  .cs-vn .cs-vn-size-table .cs-vn-row-note{font-size:.78rem;}
}
