/* Shared operation-form foundations. Page adapters own behavior, not a separate visual system. */
:root{--form-section-gap:16px;--form-column-gap:24px;--form-preview-controls:340px}
.ui-form-crumb{border:0;background:none;padding:0;font:inherit;cursor:pointer}
[data-form-family]{min-width:0}
[data-form-family] .ui-field{min-width:0}
[data-form-family="configuration"] .ui-launchers-group{gap:var(--form-section-gap);padding-top:20px}
.ui-launchers-gh,.ui-form-section-title,
[data-form-family="preview"] :is(.ui-tools-step,.ui-prep-step)>header h2{
  margin:0;font:600 15px/1.3 var(--sans);letter-spacing:normal;text-transform:none;color:var(--ink)
}
[data-form-family] .ui-launchers-group>header .ui-note{margin:4px 0 0}
[data-form-family="configuration"] .ui-panel-s{min-width:0}
.ui-preview-grid{display:grid;grid-template-columns:var(--form-preview-controls) minmax(0,1fr);gap:var(--form-column-gap);align-items:start}
[data-form-family="preview"] :is(.ui-tools-step,.ui-prep-step){gap:var(--form-section-gap);padding:18px}
[data-form-family="preview"] :is(.ui-tools-step,.ui-prep-step):first-child{border-top:0}
/* Shared preview surface for every narrow-controls/preview tool. */
.ui-preview-surface{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r-card)}
.ui-preview-actions{display:flex;gap:12px;justify-content:flex-end;align-items:center;flex-wrap:wrap}
.ui-preview-actions>.ui-btn{min-height:40px;min-width:112px}
[data-form-family="preview"] .ui-tools-go>.ui-btn{min-width:112px}
[data-form-family="preview"] .ui-noise-settings [data-run]{width:auto}
[data-form-family="workspace"] .ui-input{max-width:100%;min-width:0;min-height:36px;padding:7px 10px;border:1px solid var(--line2);border-radius:var(--pill);background:var(--surface);color:var(--ink);font:14px/1.3 var(--sans)}
[data-form-family="workspace"] .seg-panel{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface)}
[data-form-family="workspace"] .seg-panel>h2{font:600 15px/1.3 var(--sans)}
[data-form-family="workspace"] .ui-input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:1100px){.ui-preview-grid{grid-template-columns:300px minmax(0,1fr);gap:20px}}
@media(max-width:900px){.ui-preview-grid{grid-template-columns:minmax(0,1fr)}[data-form-family="preview"] .ui-tools-stagewrap{position:static}[data-form-family="preview"] .ui-noise-preview{grid-row:auto}}
@media(max-width:560px){[data-form-family="preview"] :is(.ui-tools-step,.ui-prep-step){padding:16px}.ui-preview-actions>.ui-btn{min-width:0;flex:1}.ui-launch-foot{flex-wrap:wrap}.ui-launch-foot>.ui-btn{min-width:0;flex:1}}
.ui-hist .ui-form-recent-run{grid-template-columns:minmax(0,1fr) auto}
.ui-form-recent-run>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-form-all-runs{display:inline-block;margin-top:10px;font-size:13.5px}

[data-resize-estimate]:empty{display:none}
[data-form-family] .ui-help{font-size:13px;line-height:1.45;color:var(--ink3)}
[data-form-family="transfer"] .ui-secthead h2{font:600 15px/1.3 var(--sans)}
[data-form-family="workspace"] .seg-toolbar input[type="number"]{width:7em}
/* Native arrows remain visible after component resets, including unclassed Django selects. */
html[data-ui="porestore"] select:not([multiple]):not([size]){appearance:auto;background-image:none}
.ui-save-mode{flex-wrap:nowrap}
.ui-field-manifest{margin-bottom:16px}
.ui-estimate-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13.5px}
.ui-estimate-table caption{text-align:left;color:var(--ink2);padding-bottom:10px}
.ui-estimate-table th,.ui-estimate-table td{padding:7px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere}
.ui-estimate-table th{font-weight:400;color:var(--ink3)}
.ui-estimate-table td{font:13px/1.5 var(--mono)}

.ui-form-recent-runs{margin-top:var(--form-column-gap)}
.ui-tools-sheet,.ui-transform-controls{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card)}
.ui-transform-controls{display:flex;flex-direction:column;gap:0;min-width:0;overflow:hidden}
.ui-transform-controls>.ui-tools-step{background:transparent;border:0;border-top:1px solid var(--line);border-radius:0}
.ui-resize-estimate .ui-kv{margin:0}
.ui-resize-estimate .ui-kv>div{flex-direction:column;gap:3px}
.ui-resize-estimate .ui-kv dd{text-align:left}
[data-resize-cost]:empty{display:none}

.ui-launch-grid:not(:has(>.ui-facts>*)){grid-template-columns:minmax(0,1fr)}
.ui-launch-grid>.ui-facts:not(:has(*)){display:none}
