/* --------------------------------------------------------------------------- customer-grid / FormInterface.css ⭐ WAVE-29 R7 — the FORM builder's own stylesheet. Its own file rather than `index.css` for two reasons, and only one of them is this wave's fence: a mode's surface that ships with its component can be read, moved or retired in one place (`RecordDetail.css` and `ImportDialog.css` set the precedent), and `index.css` is already the app's largest single file. Every colour, radius and type size is a `--lp-*` token. Nothing here invents a hue: the token parity gate compares `index.css` against `theme.ts`, and a raw hex would be invisible to it. --------------------------------------------------------------------------- */ .cg-form-build { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; overflow: auto; padding: 20px 24px 32px; height: 100%; background: var(--lp-surface); color: var(--lp-ink); font-size: var(--lp-fs-xs); } .cg-form-pane { flex: 1 1 320px; min-width: 300px; max-width: 560px; } .cg-form-h { margin: 0 0 12px; font-size: var(--lp-fs-lg); font-weight: 600; } .cg-form-sub { margin: 22px 0 8px; font-size: var(--lp-fs-2xs); font-weight: 600; letter-spacing: 0.02em; color: var(--lp-muted); } /* The first `.cg-form-sub` in a pane sits under no heading of its own. */ .cg-form-pane > .cg-form-sub:first-child { margin-top: 0; } .cg-form-note { margin: 6px 0; color: var(--lp-muted); font-size: var(--lp-fs-2xs); line-height: 1.5; } /* An honest warning, not an alarm: it is a state the reader can fix, so it is tinted rather than shouted. Red is reserved for a refusal that has already cost something. */ .cg-form-warn { margin: 8px 0; padding: 8px 10px; border: 1px solid var(--lp-red); border-radius: var(--lp-r-sm); background: var(--lp-red-tint); color: var(--lp-red-deep); font-size: var(--lp-fs-2xs); line-height: 1.5; } .cg-form-empty { display: grid; place-items: center; height: 100%; padding: 40px; color: var(--lp-muted); font-size: var(--lp-fs-xs); text-align: center; } /* --- the spec fields ------------------------------------------------------------------- */ .cg-form-row { display: block; margin: 0 0 12px; } .cg-form-row > span { display: block; margin-bottom: 4px; color: var(--lp-muted); font-size: var(--lp-fs-3xs); font-weight: 600; } .cg-form-row input[type="text"], .cg-form-row textarea, .cg-form-addmail input { width: 100%; padding: 7px 9px; border: 1px solid var(--lp-line); border-radius: var(--lp-r-sm); background: var(--lp-surface); color: var(--lp-ink); font-family: inherit; font-size: var(--lp-fs-xs); resize: vertical; } .cg-form-row input:disabled, .cg-form-row textarea:disabled { background: var(--lp-wash); color: var(--lp-muted); } /* --- the question list ----------------------------------------------------------------- */ .cg-form-fields { margin: 0; padding: 0; list-style: none; border: 1px solid var(--lp-line); border-radius: var(--lp-r-md); overflow: hidden; } .cg-form-field { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 10px; border-bottom: 1px solid var(--lp-line); } .cg-form-field:last-child { border-bottom: 0; } .cg-form-field.on { background: var(--lp-blue-tint); } .cg-form-pick { display: flex; align-items: center; gap: 8px; min-width: 0; cursor: pointer; } .cg-form-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cg-form-type { color: var(--lp-muted); font-size: var(--lp-fs-3xs); } .cg-form-req { display: flex; align-items: center; gap: 5px; flex: none; color: var(--lp-muted); font-size: var(--lp-fs-3xs); cursor: pointer; } /* --- who can submit -------------------------------------------------------------------- */ .cg-form-radio { display: flex; align-items: flex-start; gap: 9px; margin-bottom: 10px; cursor: pointer; } .cg-form-radio strong { display: block; font-weight: 600; } .cg-form-radio em { display: block; margin-top: 2px; color: var(--lp-muted); font-size: var(--lp-fs-3xs); font-style: normal; line-height: 1.5; } .cg-form-emails ul { margin: 0 0 8px; padding: 0; list-style: none; } .cg-form-emails li { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--lp-line); } .cg-form-emails li:last-child { border-bottom: 0; } .cg-form-addmail { display: flex; gap: 8px; } /* --- the share link -------------------------------------------------------------------- */ .cg-form-link { padding: 10px 12px; border: 1px solid var(--lp-line); border-radius: var(--lp-r-md); background: var(--lp-surface-2); } .cg-form-link code { display: block; margin-bottom: 8px; overflow-wrap: anywhere; color: var(--lp-blue-deep); font-size: var(--lp-fs-2xs); } .cg-form-actions { display: flex; flex-wrap: wrap; gap: 8px; } .cg-form-build button { padding: 5px 11px; border: 1px solid var(--lp-line); border-radius: var(--lp-r-pill); background: var(--lp-surface); color: var(--lp-ink); font-family: inherit; font-size: var(--lp-fs-2xs); cursor: pointer; } .cg-form-build button:hover:not(:disabled) { border-color: var(--lp-blue-solid); color: var(--lp-blue-deep); } .cg-form-build button:disabled { color: var(--lp-muted); cursor: default; } .cg-form-emails button { padding: 2px 8px; font-size: var(--lp-fs-3xs); }