.calc-app{max-width:var(--content-wide);margin:0 auto;padding:var(--sp-5) var(--sp-5) var(--sp-6);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-body);line-height:var(--lh-body)}
.calc-app *{box-sizing:border-box}
.calc-app button,.calc-app input,.calc-app select,.calc-app textarea{font:inherit;color:inherit}
.calc-app button,.calc-app select,.calc-app input,.calc-app textarea{accent-color:var(--accent)}
.calc-app :focus-visible{outline:0;box-shadow:var(--focus-ring)}
.calc-app [hidden]{display:none!important}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* title row */
.topbar{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);padding-bottom:var(--sp-3);border-bottom:1px solid var(--line)}
.title-group{min-width:0}.crumb{display:inline-flex;min-height:calc(var(--ctl-h) + var(--sp-1));align-items:center;color:var(--accent-ink);font-size:var(--fs-label);font-weight:var(--fw-label);text-decoration:none}
.title-group h1{margin:0;font-size:var(--fs-page);line-height:var(--lh-title);font-weight:var(--fw-title);letter-spacing:-.02em}
.lead{margin:var(--sp-1) 0 0;color:var(--muted)}
.case-actions,.button-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}
.case-actions{justify-content:flex-end}
.case-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.case-chips>.case-chip{display:inline-flex;align-items:center;min-height:calc(var(--ctl-h) + var(--sp-1));padding:0 var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);color:var(--ink);font-weight:var(--fw-label);white-space:nowrap}
.case-chips>.case-chip.is-active,.case-chips>.case-chip[aria-current=true]{border:2px solid var(--accent);background:var(--accent-soft);font-weight:var(--fw-title)}
.case-chips>button{cursor:pointer}
.button,.stage-button,.mini-button,.text-button,.solve-intervals button{min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-3);font-weight:var(--fw-label);cursor:pointer;text-decoration:none}
.button:hover,.stage-button:hover,.mini-button:hover,.solve-intervals button:hover{border-color:var(--ink-2)}.button-quiet{background:var(--surface-subtle)}
.calc-app .button-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:var(--fw-title)}.calc-app .button-primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}
.calc-app .button:disabled,.calc-app .button[disabled],.calc-app .solve-intervals button:disabled{background:var(--surface-rail);border-color:var(--line);color:var(--muted);cursor:not-allowed}
.file-button{display:inline-flex;align-items:center}
.case-menu{position:relative}.case-menu>summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:var(--sp-2)}.case-menu>summary::-webkit-details-marker{display:none}
.case-popover{position:absolute;right:0;top:calc(100% + var(--sp-2));z-index:4;width:min(380px,calc(100vw - var(--sp-5)));max-height:60vh;overflow:auto;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-float);padding:var(--sp-2);box-shadow:var(--shadow-float)}
.case-option{display:flex;width:100%;min-height:calc(var(--ctl-h) + var(--sp-1));align-items:center;justify-content:space-between;gap:var(--sp-2);border:0;border-bottom:1px solid var(--line2);background:transparent;padding:var(--sp-2);text-align:left;cursor:pointer}.case-option:last-child{border-bottom:0}.case-option[aria-current=true]{background:var(--accent-soft)}
.case-menu-heading{margin:0;padding:var(--sp-2) var(--sp-2) var(--sp-1);color:var(--muted);font-size:var(--fs-meta);font-weight:var(--fw-label);letter-spacing:.06em}
.case-menu-note{margin:0;padding:var(--sp-2);border-top:1px solid var(--line2);color:var(--ink-2);font-size:var(--fs-meta)}
.notice{margin:var(--sp-3) 0 0;padding:var(--sp-3);border-left:3px solid var(--accent);background:var(--surface-subtle);color:var(--ink-2)}.notice-error{border-color:var(--error);background:var(--error-soft)}
/* tool rows */
.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);margin:var(--sp-3) 0 0;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-float);background:var(--surface)}
.toolbar-actions{display:flex;align-items:center;flex-wrap:wrap;flex:1 1 auto;gap:var(--sp-2) var(--sp-3);min-width:0}
.toolbar-group{display:flex;flex:none;align-items:center;gap:0}
.toolbar-actions>.toolbar-group,.toolbar-actions>.button:first-of-type,.compare-tools>.toolbar-label:first-child{padding-left:var(--sp-3);border-left:1px solid var(--line2)}
.compare-tools>.toolbar-label:first-child{padding-right:var(--sp-2)}
.toolbar-actions>.start-switch{border-left:0;padding-left:0}
.toolbar-label{padding:0 var(--sp-2) 0 0;color:var(--muted);font-size:var(--fs-meta);white-space:nowrap}
.stage-button{margin-left:-1px;border-radius:0;white-space:nowrap}.stage-button:first-of-type{margin-left:0;border-radius:var(--r-ctrl) 0 0 var(--r-ctrl)}.stage-button:last-of-type{border-radius:0 var(--r-ctrl) var(--r-ctrl) 0}
.stage-button.is-active,.stage-button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:var(--fw-title)}
.toolbar-actions .button{white-space:nowrap}
.save-state,.subtle-status{color:var(--muted);font-size:var(--fs-meta)}
.save-state{order:9;flex:0 1 auto;min-width:0;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.toolbar .button[aria-expanded=true]{border:2px solid var(--ink);font-weight:var(--fw-title)}
.compare-tools select{min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-body)}
/* plant definition */
.plant-definition{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-4);margin:var(--sp-3) 0 0;padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-float);background:var(--surface)}
.plant-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.plant-field{position:relative;display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);min-width:0;padding:var(--sp-1) var(--sp-2);color:var(--ink-2);font-size:var(--fs-label)}.plant-field>span:first-child,.plant-field legend{color:var(--muted);font-size:var(--fs-label)}
.plant-field select,.plant-value input{min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-input);font-variant-numeric:tabular-nums}
.plant-value{display:flex;align-items:center;gap:var(--sp-2)}.plant-value input{width:calc(var(--sp-8) + var(--sp-5))}.plant-value .unit{color:var(--muted);font-size:var(--fs-label)}
.plant-field .field-state{font-size:var(--fs-meta)}
.basis-field{display:flex;align-items:center;gap:var(--sp-2);margin:0;padding:0;border:0}.basis-field legend{float:left;margin-right:var(--sp-2)}.basis-field label{display:inline-flex;align-items:center;gap:var(--sp-1);min-height:calc(var(--ctl-h) + var(--sp-1));white-space:nowrap}
.plant-derived{flex:1 1 220px;margin:0;color:var(--ink);font-size:var(--fs-label);font-weight:var(--fw-title)}
.module-row{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--line2);color:var(--ink-2);font-size:var(--fs-label)}.module-row select{min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2)}
/* work area */
.work-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--sp-4);align-items:start;margin-top:var(--sp-4)}
.work-grid.drawer-open{grid-template-columns:300px 372px minmax(0,1fr)}
.input-panel,.drawer-panel,.result-panel{min-width:0;padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-float);background:var(--surface)}
.drawer-panel{max-height:82vh;overflow:auto;border:2px solid var(--ink)}
.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-2)}
.input-panel .panel-heading{align-items:center}.input-panel .panel-heading h2{white-space:nowrap}.input-panel .panel-heading .text-button{font-size:var(--fs-meta);padding:0}.panel-heading h2{margin:0;font-size:var(--fs-body);line-height:var(--lh-title);font-weight:var(--fw-title)}
.result-heading h2{font-size:var(--fs-body)}
.eyebrow{margin:0 0 var(--sp-1);color:var(--muted);font-size:var(--fs-meta);font-weight:var(--fw-label);letter-spacing:.06em}
.calc-app .text-button{border:0;background:transparent;color:var(--accent-ink);text-decoration:underline;padding:0 var(--sp-1)}
.field-note{margin:0 0 var(--sp-2);color:var(--muted);font-size:var(--fs-meta)}
.drawer-panel .panel-heading{position:sticky;top:calc(-1 * var(--sp-3));z-index:1;margin:calc(-1 * var(--sp-3)) 0 var(--sp-2);padding:var(--sp-3) 0 var(--sp-2);background:var(--surface)}
/* basic inputs */
.input-list{border-top:1px solid var(--line2)}
.field-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-1);padding:var(--sp-3);border-bottom:1px solid var(--line2)}
.field-name{padding-right:calc(var(--sp-8) * 2 + var(--sp-3));color:var(--ink-2);font-size:var(--fs-label);font-weight:var(--fw-label)}
.field-control{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-1) var(--sp-2);min-width:0}
.field-control input,.field-control select,.dialog-field input,.dialog-field select,.source-field select{min-width:0;min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-input);font-variant-numeric:tabular-nums}
.field-control input{flex:1 1 0;width:0;min-width:calc(var(--sp-8) + var(--sp-2))}.field-control select{flex:1 1 0;width:0;font-size:var(--fs-body)}
.dialog-field input,.dialog-field select,.source-field select{width:100%}
.field-control .unit{flex:0 1 auto;color:var(--muted);font-size:var(--fs-label);overflow-wrap:normal;word-break:keep-all}
.field-state{flex:none;color:var(--muted);font-size:var(--fs-meta);white-space:nowrap}
.field-control .field-state{position:absolute;top:var(--sp-3);right:var(--sp-3);flex:none}
.field-state::before{content:"\00B7  ";font-weight:var(--fw-title)}
.field-state[data-state=loaded]::before,.field-state[data-kind=loaded]::before{content:"\2713  ";color:var(--accent-ink)}.field-state[data-state=changed]::before,.field-state[data-kind=user]::before{content:"\2022  ";color:var(--ink)}.field-state[data-state=derived]::before{content:"=  ";color:var(--ink-2)}.field-state[data-state=imported]::before{content:"\2193  ";color:var(--ink-2)}.field-state[data-state=missing]::before,.field-state[data-state=unsupported]::before,.field-state[data-kind=missing]::before{content:"!  ";color:var(--error)}
.field-state[data-state=changed],.field-state[data-kind=user]{color:var(--ink);font-weight:var(--fw-title)}
.field-help{margin:0;color:var(--muted);font-size:var(--fs-meta)}
.field-row:not([data-state]):not(:has([data-kind=loaded],[data-kind=user],[data-kind=missing])) .field-control input:not([readonly]),.field-row[data-state=example] .field-control input:not([readonly]){color:var(--faint)}
.field-row[data-state=loaded]::before,.field-row:has([data-kind=loaded])::before,.plant-field[data-state=loaded]::before{content:"";position:absolute;left:0;top:var(--sp-2);bottom:var(--sp-2);width:3px;background:var(--accent)}
.field-row[data-state=changed]::before,.drawer-input[data-state=changed]::before,.plant-field[data-state=changed]::before{content:none}
.field-row[data-state=imported]::before,.drawer-input[data-state=imported]::before,.plant-field[data-state=imported]::before{content:"";position:absolute;left:0;top:var(--sp-2);bottom:var(--sp-2);width:3px;background:var(--ink-2)}
.field-row[data-state=missing]::before,.field-row[data-state=unsupported]::before,.drawer-input[data-state=missing]::before,.drawer-input[data-state=unsupported]::before,.plant-field[data-state=missing]::before,.plant-field[data-state=unsupported]::before{content:"";position:absolute;left:0;top:var(--sp-2);bottom:var(--sp-2);width:3px;background:var(--error)}
.field-row[data-state=changed] .field-name,.field-row:has([data-kind=user]) .field-name{color:var(--ink);font-weight:var(--fw-title)}
[data-state=derived] input,.calc-app input[readonly],.calc-app input[aria-readonly=true]{background:var(--surface-rail);border-style:dashed;color:var(--ink-2)}
.mini-button{min-width:calc(var(--sp-6) + var(--sp-5));padding:0 var(--sp-2);font-size:var(--fs-meta)}
.sheet-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding-top:var(--sp-3);color:var(--muted);font-size:var(--fs-meta)}
.drawer-card-row{display:grid;grid-template-columns:1fr;gap:0;margin-top:var(--sp-3)}
.drawer-card{display:flex;min-height:calc(var(--ctl-h) + var(--sp-3));align-items:center;justify-content:space-between;gap:var(--sp-2);border:0;border-top:1px solid var(--line2);border-radius:0;background:var(--surface);padding:var(--sp-2) 0;text-align:left;cursor:pointer}
.drawer-card span:first-child{font-weight:var(--fw-title)}.drawer-card span:last-child{color:var(--muted);font-size:var(--fs-meta);text-align:right}
.drawer-card[aria-expanded=true]{box-shadow:inset 3px 0 0 var(--ink);padding-left:var(--sp-2)}
/* drawer */
.drawer-tabs{display:flex;flex-wrap:nowrap;overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-ctrl)}
.drawer-tab{flex:1 0 auto;min-height:calc(var(--ctl-h) + var(--sp-1));border:0;border-left:1px solid var(--line);background:var(--surface);padding:0 var(--sp-2);color:var(--ink-2);font-size:var(--fs-label);line-height:var(--lh-title);white-space:nowrap;word-break:keep-all;cursor:pointer}.drawer-tab:first-child{border-left:0}
.drawer-tab[aria-pressed=true],.drawer-tab[aria-selected=true]{background:var(--accent);color:var(--on-accent);font-weight:var(--fw-title)}
.drawer-group button{min-width:44px;min-height:calc(var(--ctl-h) + var(--sp-1));padding:var(--sp-1) var(--sp-2);border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);cursor:pointer}
.drawer-group{margin-top:var(--sp-3)}.drawer-group h3{margin:0 0 var(--sp-1);padding-top:var(--sp-2);border-top:1px solid var(--ink);color:var(--muted);font-size:var(--fs-meta);font-weight:var(--fw-label);letter-spacing:.06em}
.drawer-input{display:grid;grid-template-columns:minmax(0,1fr) 172px;align-items:center;gap:var(--sp-1) var(--sp-2);padding:var(--sp-2) 0 var(--sp-2) var(--sp-3);position:relative;border-bottom:1px solid var(--line2)}
.drawer-input>label{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--sp-1);font-size:var(--fs-label);font-weight:var(--fw-label);color:var(--ink-2)}
.drawer-input .field-control{flex-wrap:wrap;gap:var(--sp-1)}
.drawer-input input,.drawer-input select{flex:none;width:calc(var(--sp-8) + var(--sp-4));min-width:0;min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-input)}
.drawer-input select{width:100%}
.drawer-input p{grid-column:1/-1;margin:0;color:var(--muted);font-size:var(--fs-meta)}
.drawer-input[data-state=example] input:not([readonly]){color:var(--faint)}
.drawer-input[data-state=changed] label{color:var(--ink);font-weight:var(--fw-title)}
.drawer-input[data-state=loaded]::before,.drawer-input:has([data-kind=loaded])::before{content:"";position:absolute;left:0;top:var(--sp-2);bottom:var(--sp-2);width:3px;background:var(--accent)}
.finance-inactive,.finance-inactive label,.finance-inactive .field-state,.finance-inactive p{color:var(--muted)}
.finance-inactive input,.finance-inactive select{background:var(--surface-rail);color:var(--muted)}
.finance-advanced-readonly{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-ctrl);background:var(--surface-subtle)}
/* results */
.contract-state{max-width:48%;padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctrl);color:var(--ink-2);font-size:var(--fs-meta);text-align:right}
.condition-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-2);margin-bottom:var(--sp-2)}
.condition-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1)}
.condition-chips>*{padding:var(--sp-1) var(--sp-2);border:1px solid var(--line);border-radius:var(--r-pill);background:var(--surface-rail);color:var(--ink-2);font-size:var(--fs-meta)}
.basis-trigger{font-weight:var(--fw-title)}
.basis-content{margin:0 0 var(--sp-3);padding:var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--accent-soft);color:var(--ink);font-size:var(--fs-label)}
.result-banner{margin:0 0 var(--sp-3);padding:var(--sp-2) var(--sp-3);border-left:3px solid var(--accent);background:var(--surface-subtle);color:var(--ink-2)}
.result-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--sp-3);padding:var(--sp-2) 0 var(--sp-3);border-bottom:1px solid var(--line)}.result-kicker{margin:0;color:var(--muted);font-size:var(--fs-label)}.result-number{margin:var(--sp-1) 0 0;font-family:var(--font-num);font-size:var(--fs-figure);line-height:var(--lh-title);font-weight:var(--fw-title);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.result-unit{color:var(--muted);font-size:var(--fs-body)}
.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 var(--sp-4);margin-top:var(--sp-2)}.metric{min-width:0;padding:var(--sp-2) 0;border-bottom:1px solid var(--line2)}.metric-label{display:block;color:var(--muted);font-size:var(--fs-meta)}.metric-value{display:block;margin-top:var(--sp-1);font-family:var(--font-num);font-size:var(--fs-section);font-weight:var(--fw-title);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.metric-state{display:block;margin-top:var(--sp-1);color:var(--muted);font-size:var(--fs-meta)}
.result-section>[id$=-body]:empty{display:none}.section-block{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:var(--rule-head)}.section-block h3{margin:0 0 var(--sp-2);font-size:var(--fs-label);font-weight:var(--fw-title)}
.cost-list{width:100%;border-collapse:collapse}.cost-list th,.cost-list td{padding:var(--sp-2) 0;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top}.cost-list th{color:var(--muted);font-size:var(--fs-meta);font-weight:var(--fw-label)}.cost-list td:last-child{text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums}.cost-list .muted-cell{color:var(--muted);font-family:var(--font-ui);font-size:var(--fs-meta)}
.basis-list{display:grid;grid-template-columns:minmax(calc(var(--sp-8) * 2 + var(--sp-3)),calc(var(--sp-8) * 2 + var(--sp-5))) minmax(0,1fr);gap:var(--sp-2) var(--sp-3);margin:0}.basis-list>div{display:contents}.basis-list dt{color:var(--ink-2);font-size:var(--fs-label);font-weight:var(--fw-title)}.basis-list dd{margin:0;color:var(--ink);font-size:var(--fs-body);overflow-wrap:anywhere}
.result-breakdown{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--sp-1) var(--sp-3);margin:var(--sp-2) 0 0}.result-breakdown>div{display:contents}.result-breakdown dt{color:var(--ink-2);font-size:var(--fs-label)}.result-breakdown dd{margin:0;color:var(--ink);font-family:var(--font-num);font-variant-numeric:tabular-nums;text-align:right}
.production-details{margin-top:var(--sp-3);border-top:1px solid var(--line2)}.production-details>summary{display:flex;min-height:calc(var(--ctl-h) + var(--sp-1));align-items:center;cursor:pointer;color:var(--accent-ink);font-size:var(--fs-label);font-weight:var(--fw-label)}.production-table-wrap{max-height:320px;overflow:auto}.production-table{width:100%;border-collapse:collapse}.production-table th,.production-table td{padding:var(--sp-1) var(--sp-2);border-bottom:1px solid var(--line2);text-align:right;font-variant-numeric:tabular-nums}.production-table th:first-child,.production-table td:first-child{text-align:left}.production-table th{position:sticky;top:0;background:var(--surface-subtle);font-size:var(--fs-meta);font-weight:var(--fw-label)}
.production-table tbody th{position:static}
.solve-inline{min-width:0;max-width:100%;margin-top:var(--sp-3);padding:0 var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface-subtle)}
.solve-inline[open]{padding-bottom:var(--sp-3);border:2px solid var(--accent);background:var(--surface)}
.solve-inline>summary{display:flex;align-items:center;min-height:calc(var(--ctl-h) + var(--sp-1));cursor:pointer;font-size:var(--fs-label);font-weight:var(--fw-title)}
.solve-fields{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3)}
.solve-fields label{flex:0 0 auto;min-width:calc(var(--sp-8) + var(--sp-6));color:var(--ink-2);font-size:var(--fs-label);font-weight:var(--fw-label)}
.solve-fields input,.solve-fields select{min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-input)}
.solve-fields input[type=number]{width:calc(var(--sp-8) + var(--sp-6))}.solve-fields input[type=text]{flex:1 1 calc(var(--sp-8) * 2)}
.solve-fields .unit,.solve-fields select+.unit{color:var(--muted);font-size:var(--fs-label)}

.solve-preview{display:grid;gap:var(--sp-2);min-width:0;max-width:100%}
.solve-preview:has(.solve-preview-value:not(:empty)),.solve-preview:has(.solve-intervals:not(:empty)){margin-top:var(--sp-3)}
.solve-preview-row{display:grid;grid-template-columns:minmax(calc(var(--sp-8) + var(--sp-4)),calc(var(--sp-8) * 3)) minmax(0,1fr);gap:var(--sp-2);align-items:start;min-width:0}
.solve-preview-row:has(> .solve-preview-value:empty){display:none}
.solve-preview-label{min-width:0;color:var(--ink-2);font-size:var(--fs-label);font-weight:var(--fw-label);overflow-wrap:anywhere}
.solve-preview-value{min-width:0;overflow-wrap:anywhere}
.solve-intervals{min-width:0;max-width:100%;overflow-x:auto}
.solve-intervals:empty{display:none}
.solve-intervals p{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);min-width:0;max-width:100%;margin:0 0 var(--sp-2);color:var(--ink);font-size:var(--fs-label);overflow-wrap:anywhere}
.solve-intervals button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);font-weight:var(--fw-title)}
#solve-domain-unit:empty{display:none}
.preview-result{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-ctrl);background:var(--surface);overflow-wrap:anywhere}.preview-result:empty{display:none}
.share-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--line2)}.loading-copy{color:var(--muted)}
.business-price-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--line2)}.business-price-row label{font-size:var(--fs-label);font-weight:var(--fw-label)}.business-price-row input{width:calc(var(--sp-8) + var(--sp-8) / 2 + var(--sp-4));min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-input)}.business-price-row .field-state{color:var(--muted);font-size:var(--fs-meta)}
.page-footer{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4);padding-top:var(--sp-3);color:var(--muted);font-size:var(--fs-meta)}.footer-example{margin-left:auto}
/* dialogs and toast */
.sheet-dialog{width:min(760px,calc(100% - var(--sp-4)));max-height:min(88vh,900px);padding:0;border:1px solid var(--line-strong);border-radius:var(--r-float);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-float)}.sheet-dialog::backdrop{background:var(--scrim)}.sheet-dialog-wide{width:min(1180px,calc(100% - var(--sp-4)))}
.dialog-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line);background:var(--surface)}.dialog-head h2{margin:0;font-size:var(--fs-section)}.dialog-body{padding:var(--sp-4);overflow:auto}.dialog-field{display:grid;gap:var(--sp-1);margin-top:var(--sp-3);color:var(--ink-2);font-size:var(--fs-label);font-weight:var(--fw-label)}.dialog-field input,.dialog-field select{font-weight:400}
.source-field{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid var(--line2)}.source-field label{display:block;margin-bottom:var(--sp-1);font-weight:var(--fw-title)}.source-field select{margin-bottom:var(--sp-2)}.source-status{min-height:calc(var(--ctl-h) + var(--sp-1));margin:0;color:var(--muted);font-size:var(--fs-meta)}
.share-link{width:100%;min-height:calc(var(--sp-8) + var(--sp-6));margin-top:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-ctrl);padding:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-meta)}
.calc-app~.toast,.toast{position:fixed;left:50%;bottom:var(--sp-4);z-index:5;max-width:min(600px,calc(100% - var(--sp-4)));transform:translateX(-50%);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--ink);color:var(--on-accent);opacity:0;pointer-events:none;transition:opacity .15s ease}.toast.is-visible{opacity:1}
/* compare */
.compare-screen{margin-top:var(--sp-4);padding:var(--sp-3) var(--sp-4);border:1px solid var(--line);border-radius:var(--r-float);background:var(--surface)}
.compare-case-select{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:calc(var(--ctl-h) + var(--sp-1));margin:0;padding:0 var(--sp-2);border:1px solid var(--line);border-radius:var(--r-ctrl);background:var(--surface);font-size:var(--fs-label);font-weight:var(--fw-label)}.compare-case-select input{width:var(--sp-5);height:var(--sp-5)}.compare-case-select:has(input:checked){border:2px solid var(--accent);background:var(--accent-soft)}
.compare-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-float)}.compare-table{min-width:820px;width:100%;border-collapse:collapse}.compare-table th,.compare-table td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line2);text-align:left;vertical-align:top;font-variant-numeric:tabular-nums}.compare-table th{background:var(--surface);font-size:var(--fs-label);font-weight:var(--fw-title)}.compare-table tbody th{position:sticky;left:0;z-index:1;background:var(--surface);color:var(--ink-2)}.compare-table td{font-size:var(--fs-label)}.compare-table .reference-column{background:var(--accent-soft)}.compare-section-row th{background:var(--surface-rail);color:var(--muted);font-size:var(--fs-meta);letter-spacing:.06em}.delta-blocked{color:var(--muted)}
.readonly-extension{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--line);border-radius:var(--r-ctrl);background:var(--surface-subtle)}.readonly-extension h3{margin:0 0 var(--sp-2);font-size:var(--fs-label)}.extension-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-2);padding:var(--sp-2) 0;border-top:1px solid var(--line2)}.extension-row code{overflow-wrap:anywhere;font-family:var(--font-mono);font-size:var(--fs-meta)}
.business-field{display:none}.stage-business .business-field{display:grid}
.field-row[data-state=loaded],.drawer-input[data-state=loaded],.plant-field[data-state=loaded]{background:var(--accent-soft)}
.field-row[data-state=changed],.drawer-input[data-state=changed],.plant-field[data-state=changed]{background:var(--surface-subtle)}
.field-row[data-state=derived],.drawer-input[data-state=derived],.plant-field[data-state=derived]{background:var(--surface-rail)}
.field-row[data-state=imported],.drawer-input[data-state=imported],.plant-field[data-state=imported]{background:var(--surface-subtle)}
.field-row[data-state=missing],.field-row[data-state=unsupported],.drawer-input[data-state=missing],.drawer-input[data-state=unsupported],.plant-field[data-state=missing],.plant-field[data-state=unsupported]{background:var(--error-soft)}
.field-row:focus-within,.drawer-input:focus-within,.plant-field:focus-within{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.result-panel{container-type:inline-size;container-name:calc-results}
#result-content{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:0 var(--sp-5)}
.result-section{min-width:0}
.result-section>h3{margin:0 0 var(--sp-2);font-size:var(--fs-section);line-height:var(--lh-title);font-weight:var(--fw-title)}
#result-content[data-illustrative] .result-number,#result-content[data-illustrative] .metric-value{color:var(--muted)}
.field-row[data-state=missing]:focus-within,.field-row[data-state=unsupported]:focus-within,.drawer-input[data-state=missing]:focus-within,.drawer-input[data-state=unsupported]:focus-within,.plant-field[data-state=missing]:focus-within,.plant-field[data-state=unsupported]:focus-within{background:var(--error-soft)}
@container calc-results (min-width:820px){#result-content{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
/* >=1200: one tool row, scroll stays inside the bar */
@media(min-width:1200px){.toolbar{flex-wrap:nowrap;gap:var(--sp-2);overflow-x:auto}.toolbar-actions,.compare-tools{flex-wrap:nowrap}.toolbar-actions{gap:var(--sp-2)}.toolbar-actions .button,.toolbar-actions .stage-button{padding:0 var(--sp-2);font-size:var(--fs-label)}.toolbar-actions>.toolbar-group,.toolbar-actions>.button:first-of-type{padding-left:var(--sp-2)}.toolbar-actions>.start-switch{padding-left:0}}
/* 768-1199 */
@media(max-width:1199px){.calc-app{padding-left:var(--sp-4);padding-right:var(--sp-4)}.work-grid,.work-grid.drawer-open{grid-template-columns:280px minmax(0,1fr)}.work-grid.drawer-open .result-panel{grid-column:1/-1}.drawer-panel{max-height:none}.footer-example{margin-left:0}}
/* <768 */
@media(max-width:767px){.calc-app{padding:var(--sp-3) var(--sp-3) var(--sp-4)}.title-group h1{font-size:var(--fs-section)}.topbar{align-items:flex-start;flex-direction:column}.case-actions{justify-content:flex-start;width:100%;min-width:0;max-width:100%}.toolbar{flex-wrap:wrap;padding:var(--sp-2);overflow-x:visible}.toolbar-actions,.compare-tools{flex-wrap:wrap}.toolbar-actions{gap:var(--sp-2)}.toolbar-actions>.toolbar-group,.toolbar-actions>.button:first-of-type{padding-left:0;border-left:0}.toolbar-actions .button{padding:0 var(--sp-2)}.save-state{display:none}.work-grid,.work-grid.drawer-open{grid-template-columns:minmax(0,1fr)}.work-grid.drawer-open .result-panel{grid-column:auto}.input-panel,.drawer-panel,.result-panel,.compare-screen{padding:var(--sp-3)}.drawer-panel{max-height:none}.plant-definition{padding:var(--sp-2)}.plant-field{flex:1 1 calc(50% - var(--sp-4))}.plant-derived,.module-row{flex-basis:100%}.contract-state{max-width:100%;text-align:left}.panel-heading{flex-wrap:wrap}.result-summary{grid-template-columns:1fr}.result-number{font-size:var(--fs-page)}.sheet-footer{align-items:flex-start;flex-direction:column}.dialog-body{padding:var(--sp-3)}.dialog-head{padding:var(--sp-3)}.extension-row{grid-template-columns:1fr}.toast{bottom:var(--sp-2)}.drawer-input{grid-template-columns:minmax(0,1fr) 164px}.basis-list{grid-template-columns:minmax(0,1fr)}.basis-list>div{display:grid;gap:var(--sp-1);padding-bottom:var(--sp-2);border-bottom:1px solid var(--line)}.footer-example{margin-left:0}.compare-tools{flex:1 1 100%;width:100%;min-width:0;max-width:100%}.compare-tools select{flex:1 1 calc(100% - var(--sp-8) - var(--sp-5));width:auto;min-width:0;max-width:100%;field-sizing:fixed}.compare-screen,.compare-screen .panel-heading,.case-chips,.compare-wrap{min-width:0;max-width:100%}.case-chips>.case-chip,.case-chips>.compare-case-select{max-width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere}.compare-case-select>input{flex:none}.compare-case-select>span{min-width:0;overflow-wrap:anywhere}#solve-cost .solve-fields{flex-direction:column;align-items:stretch}#solve-cost .solve-fields label,#solve-cost .solve-fields input,#solve-cost .solve-fields select,#solve-cost .solve-fields .unit{width:100%;min-width:0;max-width:100%}#solve-cost .solve-fields input[type=number]{width:100%}#solve-cost .solve-preview-row{grid-template-columns:minmax(0,1fr)}}

/* F11 waterfall and F16 curve/tornado. Names and amounts stay outside the plot. */
.calc-chart-host,.calc-chart{min-width:0}
#cost-composition:empty,#result-sensitivity:empty{display:none}
#cost-composition:not(:empty){margin-top:var(--sp-4)}
#result-sensitivity{grid-column:1 / -1}
.calc-chart h3,.calc-chart h4{margin:0 0 var(--sp-2);line-height:var(--lh-title);font-weight:var(--fw-title)}
.calc-chart h3{font-size:var(--fs-section)}
.calc-chart h4{font-size:var(--fs-body)}
.calc-chart__basis,.calc-chart__note,.calc-chart__axisnote,.calc-chart__endpoints{margin:0 0 var(--sp-2);color:var(--ink-2);font-size:var(--fs-label);overflow-wrap:break-word}
.calc-chart__base{margin:0 0 var(--sp-3);color:var(--ink);font-family:var(--font-num);font-size:var(--fs-body);font-variant-numeric:tabular-nums;font-weight:var(--fw-title)}
.calc-chart__unavailable{margin:0;padding:var(--sp-3);border-left:3px solid var(--ink);background:var(--surface-subtle);color:var(--ink)}
.calc-chart__plotscroll{display:block;width:100%;max-width:100%;min-width:0;overflow-x:auto;overflow-y:hidden}
.calc-chart__svg{display:block;width:100%;height:auto}
.calc-chart__svg text{fill:var(--ink-2);font-family:var(--font-num);font-size:var(--fs-meta);font-variant-numeric:tabular-nums}
.calc-chart__axis{stroke:var(--line-strong);stroke-width:1}
.calc-chart__baseline{stroke:var(--ink);stroke-width:1.5;stroke-dasharray:4 3;fill:none}
.calc-chart__connector{stroke:var(--ink);stroke-width:2;stroke-dasharray:5 3;fill:none}
.calc-chart__bar[data-sign=positive]{fill:var(--accent)}
.calc-chart__bar[data-sign=total]{fill:var(--ink)}
.calc-chart__bar[data-sign=negative]{fill:var(--error-soft);stroke:var(--error);stroke-width:1}
.calc-chart__hatch{stroke:var(--error);stroke-width:1;fill:none}
.calc-chart__zerostep{stroke:var(--ink);stroke-width:2;stroke-dasharray:2 2;fill:none}
.calc-chart__curve{fill:none;stroke:var(--accent);stroke-width:2}
.calc-chart__point{fill:var(--accent);stroke:var(--surface);stroke-width:1}
.calc-chart__point[data-base=true]{fill:var(--ink)}
.calc-chart__gap{stroke:var(--chart-segment-muted);stroke-width:1;fill:none}
.calc-chart__legend{display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);margin:var(--sp-2) 0;padding:0;list-style:none}
.calc-chart__legend li{display:flex;align-items:center;gap:var(--sp-2);min-height:var(--ctl-h);color:var(--ink);font-size:var(--fs-label)}
.calc-chart__legend li::before{content:"";width:var(--sp-4);height:var(--sp-3);border:1px solid var(--line-strong);background:var(--surface)}
.calc-chart__legend li[data-sign=positive]::before{background:var(--accent);border-color:var(--accent)}
.calc-chart__legend li[data-sign=negative]::before{background:repeating-linear-gradient(135deg,var(--error) 0,var(--error) var(--sp-1),var(--error-soft) var(--sp-1),var(--error-soft) var(--sp-2));border-color:var(--error)}
.calc-chart__legend li[data-sign=zero]::before{background:var(--surface);border-top:2px dashed var(--ink)}
.calc-chart__legend li[data-sign=total]::before{background:var(--ink);border-color:var(--ink)}
.calc-chart__table{width:100%;border-collapse:collapse;margin-top:var(--sp-2);font-variant-numeric:tabular-nums}
.calc-chart__table caption{margin:0 0 var(--sp-2);caption-side:top;text-align:left;color:var(--ink);font-size:var(--fs-label);font-weight:var(--fw-title)}
.calc-chart__table th,.calc-chart__table td{padding:var(--sp-2);border-bottom:1px solid var(--line);vertical-align:top;text-align:left}
.calc-chart__table thead th{color:var(--muted);font-size:var(--fs-meta);font-weight:var(--fw-label)}
.calc-chart__name{overflow-wrap:break-word}
.calc-chart__num{font-family:var(--font-num);text-align:right;white-space:nowrap}
.calc-chart__notes{margin-top:var(--sp-2);border-top:1px solid var(--line)}
.calc-chart__notes>summary{display:block;min-height:calc(var(--ctl-h) + var(--sp-1));padding:var(--sp-2) 0;cursor:pointer;font-size:var(--fs-label);font-weight:var(--fw-title)}
.calc-chart__notes dl{margin:0 0 var(--sp-2)}
.calc-chart__notes dt{font-weight:var(--fw-title)}
.calc-chart__notes dd{margin:0 0 var(--sp-2);color:var(--ink-2)}
.calc-chart__source{color:var(--accent-ink)}
.calc-sensitivity__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4);margin-top:var(--sp-3)}
.calc-driver{min-width:0;padding-top:var(--sp-3);border-top:1px solid var(--line)}
.calc-tornado__track{position:relative;height:var(--sp-4);margin:var(--sp-2) 0;background:var(--surface-rail);border:1px solid var(--line-strong)}
.calc-tornado__bar,.calc-tornado__base{position:absolute;top:0;bottom:0}
.calc-tornado__base{width:2px;margin-left:-1px;background:var(--ink)}
.calc-tornado__bar[data-sign=up]{background:var(--accent)}
.calc-tornado__bar[data-sign=down]{background-color:var(--error-soft);background-image:repeating-linear-gradient(135deg,var(--error) 0,var(--error) var(--sp-1),var(--error-soft) var(--sp-1),var(--error-soft) var(--sp-2))}
.calc-tornado__bar[data-sign=flat]{width:2px;margin-left:-1px;background:var(--ink)}
.calc-chart__gaps{margin:0 0 var(--sp-2);padding-left:var(--sp-4);color:var(--ink-2);font-size:var(--fs-label)}
.calc-chart__gaps li{margin:var(--sp-1) 0;overflow-wrap:break-word}
@container calc-results (min-width:1100px){.calc-sensitivity__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
@media(max-width:767px){
  .calc-chart__table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .calc-chart__table,.calc-chart__table tbody,.calc-chart__table tr,.calc-chart__table th,.calc-chart__table td{display:block;width:auto}
  .calc-chart__table tr{padding:var(--sp-2) 0;border-bottom:1px solid var(--line)}
  .calc-chart__table th,.calc-chart__table td{display:flex;justify-content:space-between;gap:var(--sp-3);border:0;text-align:left}
  .calc-chart__table td::before,.calc-chart__table th[scope=row]::before{content:attr(data-label);color:var(--muted);font-size:var(--fs-meta);font-weight:var(--fw-label)}
  .calc-chart__num{white-space:normal;text-align:right}
}

/* Touch targets measured below 44px in the saved module and comparison views. */
#drawer-content #my-module-name,#drawer-content #my-module-mw{min-height:calc(var(--ctl-h) + var(--sp-1));border:1px solid var(--line-strong);border-radius:var(--r-ctrl);background:var(--surface);padding:0 var(--sp-2);font-size:var(--fs-input)}
.compare-screen #compare-inputs+label{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:calc(var(--ctl-h) + var(--sp-1))}
.compare-screen details>summary{display:flex;align-items:center;min-height:calc(var(--ctl-h) + var(--sp-1))}
