/* Form field groups — semantic clusters within modals */ .form-fieldset { > :not([hidden]) ~ :not([hidden]) { margin-top: 0.75rem; } } .form-fieldset-label { font-size: 0.75rem; line-height: 1rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.25rem; color: var(--text-muted); } .form-divider { border-top: 1px solid var(--surface-border); margin-top: 0.5rem; margin-bottom: 0.5rem; } .form-optional-hint { font-size: 0.75rem; line-height: 1rem; color: var(--text-faint); } /* Form validation errors */ .form-error { font-size: 0.75rem; line-height: 1rem; margin-top: 0.25rem; display: block; color: #b91c1c; } :root[data-theme="dark"] .form-error, .dark .form-error { color: #fca5a5; } .form-input-error { border-color: #b91c1c; } .form-input-error:focus { border-color: #b91c1c; box-shadow: 0 0 0 2px rgba(185, 28, 28, 0.15); } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; border-radius: 0.5rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; } .btn-primary { display: inline-flex; align-items: center; justify-content: center; padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; border-radius: 0.5rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; color: var(--btn-primary-text); background: var(--btn-primary-bg); } .btn-primary:hover { background: var(--btn-primary-bg-hover); } .btn-secondary { display: inline-flex; align-items: center; justify-content: center; padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; border-radius: 0.5rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; background: var(--btn-secondary-bg); color: var(--btn-secondary-text); border: 1px solid var(--btn-secondary-border); } .btn-secondary:hover { background: var(--btn-secondary-bg-hover); } .btn-tertiary { display: inline-flex; align-items: center; justify-content: center; padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; border-radius: 0.5rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; color: var(--btn-primary-text); background: var(--btn-primary-bg); } .btn-tertiary:hover { background: var(--btn-primary-bg-hover); } .btn-link { color: var(--text-muted); font-weight: 500; text-decoration-line: underline; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; } .btn-link:hover { color: var(--text-primary); } .btn-danger { color: var(--brand-red-600); font-weight: 500; text-decoration-line: underline; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; } /* Forms */ .form-label { display: block; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; margin-bottom: 0.5rem; color: var(--text-primary); } .form-input { border-radius: 0.5rem; font-size: 1rem; line-height: 1.5rem; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 0.75rem; padding-right: 0.75rem; background: var(--input-bg); border: 1px solid var(--input-border); color: var(--text-primary); transition: border-color 150ms ease, box-shadow 150ms ease, background-color 150ms ease; } .form-input:focus { border-color: var(--input-border-focus); box-shadow: 0 0 0 2px var(--input-ring-focus); background: var(--input-bg-focus); outline: none; } /* Hide number input spinners */ input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } input[type="number"] { -moz-appearance: textfield; } .form-input::placeholder { color: var(--text-placeholder); } /* Select/option dark mode fix — native