/* Generator-only architecture derived from the read-only reference:
   bounded title/price row, matched form/preview columns, consistent field components. */
body.generator-page [hidden] { display:none!important; }
body.generator-page .generator-header { padding:28px 24px; background:var(--psc-surface); }
body.generator-page .generator-header-inner { max-width:1232px; gap:24px; }
body.generator-page .generator-title-group { min-width:0; }
body.generator-page :is(.generator-body,.agreement-generator-body,.pgp-layout,.advanced-shell,.expense-grid) {
  max-width:1280px; margin-inline:auto; padding:28px 24px 56px;
  display:grid; grid-template-columns:minmax(0,1.04fr) minmax(0,1fr); gap:32px; align-items:start;
}
body.generator-page :is(.form-panel,.preview-panel,.pgp-form-panel,.pgp-preview-panel,
    .advanced-form,.advanced-panel,.advanced-preview,.expense-form-panel,.expense-side,.ca-form-panel,
    .sc-form-column,.sc-preview-column) { min-width:0; }
body.generator-page :is(.preview-panel,.pgp-preview-panel,.advanced-preview,.advanced-preview-panel,.expense-side,.pgp-preview-col) {
  position:sticky; top:94px; align-self:start;
}
body.generator-page :is(.form-section,.advanced-step,.expense-step) {
  border-color:var(--psc-line); border-radius:18px; background:var(--psc-surface); padding:24px;
}
body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2) {
  grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:16px; align-items:start;
}
body.generator-page :is(.form-row.full,.form-grid.full) { grid-template-columns:minmax(0,1fr); }
body.generator-page :is(.form-row.third,.form-grid.three,.expense-fields.three,.pgp-grid-3) { grid-template-columns:repeat(3,minmax(0,1fr)); }
body.generator-page :is(.form-group,.expense-field,.ca-field,.sc-field,.pr-field,.form-field) { min-width:0; }
body.generator-page :is(.form-label,.expense-field>label,.ca-field>span,.sc-field>span,.form-field>label) {
  display:block; overflow-wrap:break-word;
}
body.generator-page :is(.form-input,.form-select,.sc-field input,.sc-field select,
    .expense-field input,.expense-field select,.ca-field input,.ca-field select,.form-field input,.form-field select):where(:not([type="checkbox"]):not([type="radio"])) {
  box-sizing:border-box; width:100%; min-width:0; max-width:100%; min-height:46px;
  border-radius:9px; border-color:var(--psc-control-line); background:#fff; color:var(--psc-ink);
  padding-block:11px; padding-inline:12px;
}
body.generator-page :is(textarea.form-input,.sc-field textarea,.expense-field textarea,.form-field textarea) {
  width:100%; min-height:96px; resize:vertical; padding:11px 12px; border-radius:9px;
}
/* Modifier rules follow base controls; no shorthand may erase the prefix inset. */
body.generator-page .input-prefix-wrap { position:relative; width:100%; min-width:0; }
body.generator-page .input-prefix-wrap .input-prefix {
  left:14px; top:50%; transform:translateY(-50%); pointer-events:none; z-index:1;
}
body.generator-page .input-prefix-wrap .form-input { padding-inline-start:40px; }
body.generator-page .form-select-wrap :is(.form-select,.form-input) { padding-inline-end:36px; }
body.generator-page :is(select.form-input,.sc-field select,.expense-field select,.ca-field select) {
  padding-inline-end:32px;
}
/* Native date indicator is the sole calendar icon; remove the old CSS background icon. */
body.generator-page input[type="date"] {
  background-image:none; padding-inline-end:12px; appearance:auto; -webkit-appearance:auto;
}
body.generator-page input[type="date"]::-webkit-calendar-picker-indicator {
  position:static; opacity:1; width:18px; height:18px; margin-inline-start:6px; cursor:pointer;
}
/* Native choices are compact controls, never full-width text fields. */
body.generator-page input:is([type="checkbox"],[type="radio"]) {
  box-sizing:border-box; width:14px; height:14px; min-width:14px; min-height:14px; max-width:14px;
  padding:0; margin:0; border:initial; border-radius:initial; background:initial;
  appearance:auto; -webkit-appearance:auto; accent-color:var(--psc-action); flex:0 0 14px;
}
body.generator-page .form-field > input:is([type="checkbox"],[type="radio"]) { align-self:center; }
/* Shared label/control tracks align before the first paint. No measurement or
   font-ready callback rewrites field heights after the page has appeared. */
@supports (grid-template-rows:subgrid) {
  body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) {
    row-gap:6px;
  }
  body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) >
    :is(.form-group,.pr-field,.sc-field,.expense-field,.ca-field,.pgp-field,.form-field):not(:has(> input[type="checkbox"])):not(:has(> input[type="radio"])):not(:has(> input ~ input)) {
    display:grid; grid-template-rows:subgrid; grid-row:span 4; row-gap:6px; align-content:start;
  }
  body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) >
    :is(.form-group,.pr-field,.sc-field,.expense-field,.ca-field,.pgp-field,.form-field):not(:has(> input[type="checkbox"])):not(:has(> input[type="radio"])):not(:has(> input ~ input)) > :is(label,span:first-child) {
    grid-row:1; margin-block:0; align-self:end;
  }
  body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) >
    :is(.form-group,.pr-field,.sc-field,.expense-field,.ca-field,.pgp-field,.form-field):not(:has(> input[type="checkbox"])):not(:has(> input[type="radio"])):not(:has(> input ~ input)) > :is(input,select,textarea,.input-prefix-wrap,.form-select-wrap,.radio-group,.generated-amount) {
    grid-row:2; align-self:start;
  }
  body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) >
    :is(.form-group,.pr-field,.sc-field,.expense-field,.ca-field,.pgp-field,.form-field) > :is(.form-hint,.field-hint,small) { grid-row:3; }
  body.generator-page :is(.form-row,.form-grid,.ag-field-grid,.sc-grid,.expense-fields,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) >
    :is(.form-group,.pr-field,.sc-field,.expense-field,.ca-field,.pgp-field,.form-field) > .form-error { grid-row:4; }
}
body.generator-page .sc-page .generator-header { background:#fff; }
body.sc-page .generator-header { background:#fff; color:var(--psc-ink); }
body.sc-page .sc-source-banner { max-width:1232px; }
body.sc-page #generator-form { border-color:var(--psc-line); border-radius:18px; }
body.sc-page .sc-steps { background:var(--psc-mint); border-color:var(--psc-line); }
body.sc-page .sc-steps button[aria-current=true] span { background:var(--psc-action); color:#fff; border-color:var(--psc-action); }
body.sc-page .sc-step { padding:24px; }
body.sc-page .sc-field { gap:6px; }
body.sc-page .sc-step-actions { padding:18px 24px; }
body.sc-page .generator-header :is(.generator-title,.generator-back,.generator-subtitle) { color:var(--psc-ink); }
body.sc-page :is(.sc-eyebrow,.sc-price,.sc-source-banner a) { color:var(--psc-action-hover); }
/* The existing preview/document renderer, its palette, and mobile preview controls stay independent. */
body.generator-page :is(.psc-generator-info,.agreement-info,.schedule-info) .psc-seo-grid { align-items:stretch; }
.psc-next-step { margin-top:38px; padding:28px; background:var(--psc-mint); border:1px solid var(--psc-line); border-radius:22px; }
.psc-next-step .psc-seo-kicker { margin-bottom:10px; }
.psc-next-step h2 { font-size:clamp(24px,3vw,36px); }
.psc-next-step-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:24px; }
.psc-next-step-card { display:grid; grid-template-columns:38px minmax(0,1fr); gap:14px; padding:22px; border:1px solid var(--psc-line); border-radius:16px; background:#fff; }
.psc-next-step-card h3 { margin:0 0 10px; color:var(--psc-ink); font-size:18px; }
.psc-next-step-card p, .psc-next-step-card ul { color:var(--psc-muted); font-size:14px; line-height:1.65; }
.psc-next-step-card ul { margin:12px 0 16px; padding-left:18px; }
.psc-next-step-card a { color:var(--psc-action-hover); font-weight:700; }
.psc-next-step-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:10px; background:var(--psc-mint); color:var(--psc-action-hover); }
.psc-next-step-icon svg { width:23px; height:23px; }
@media(max-width:1023px) {
  body.generator-page :is(.generator-body,.agreement-generator-body,.pgp-layout,.advanced-shell,.expense-grid) { gap:20px; padding-inline:18px; }
  body.generator-page :is(.form-section,.advanced-step,.expense-step) { padding:20px; }
}
@media(max-width:900px) {
  body.generator-page :is(.generator-body,.agreement-generator-body,.pgp-layout,.advanced-shell,.expense-grid) { grid-template-columns:minmax(0,1fr); }
  body.generator-page :is(.preview-panel,.pgp-preview-panel,.advanced-preview,.advanced-preview-panel,.expense-side,.pgp-preview-col) { position:static; }
}
@media(max-width:600px) {
  body.generator-page :is(.generator-header,.generator-body,.agreement-generator-body,.pgp-layout,.advanced-shell,.expense-grid) { padding-inline:16px; }
  body.generator-page .generator-header-inner { align-items:flex-start; gap:16px; }
  body.generator-page :is(.form-row,.form-grid,.form-row.third,.form-grid.three,.ag-field-grid,.sc-grid,.expense-fields,.expense-fields.three,.ca-fields-grid,.pgp-grid-2,.pgp-grid-3) { grid-template-columns:minmax(0,1fr); }
  body.generator-page :is(.form-label,.expense-field>label,.ca-field>span,.sc-field>span,.form-field>label) { min-block-size:auto; }
  body.generator-page .form-progress { gap:6px; }
  body.generator-page .progress-step-label { white-space:normal; }
  .psc-next-step { padding:20px; }
  .psc-next-step-grid { grid-template-columns:minmax(0,1fr); }
  .psc-next-step-card { padding:18px; }
}
