/* Chameleon UI · form layer */
.cui-field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:var(--cui-sp-3)}
.cui-field > label{font-size:var(--cui-fs-sm);font-weight:600;color:var(--cui-text)}
.cui-req{color:var(--cui-danger-text);margin-left:.15rem}
.cui-field input,.cui-field select,.cui-field textarea{width:100%;background:var(--cui-bg);color:var(--cui-text);
  border:1px solid var(--cui-line);border-radius:var(--cui-radius);padding:.6rem .8rem;min-height:44px;
  font-size:max(16px,1rem)}
.cui-field textarea{min-height:6rem}
.cui-hint{font-size:var(--cui-fs-xs);color:var(--cui-muted)}
.cui-error-text{font-size:var(--cui-fs-xs);color:var(--cui-danger-text);display:none}
.cui-error-text.is-shown{display:block}
[aria-invalid=true]{border-color:var(--cui-danger)!important}
[aria-invalid=true]:focus-visible{outline-color:var(--cui-danger)}
/* checkbox / radio: custom-drawn so the HIT BOX is a real 44px while the painted mark stays ~22px */
.cui-check{display:flex;align-items:center;gap:.35rem;min-height:44px}
.cui-check input[type=checkbox],.cui-check input[type=radio]{appearance:none;-webkit-appearance:none;margin:0;
  flex:none;position:relative;cursor:pointer;width:44px;height:44px;min-height:44px;background:transparent;
  border:0;display:grid;place-content:center}
.cui-check input[type=checkbox]::before,.cui-check input[type=radio]::before{content:"";width:1.4rem;
  height:1.4rem;box-sizing:border-box;border:2px solid var(--cui-muted);background:var(--cui-bg);border-radius:6px}
.cui-check input[type=radio]::before{border-radius:50%}
.cui-check input:checked::before{background:var(--cui-primary);border-color:var(--cui-primary)}
.cui-check input[type=checkbox]:checked::after{content:"";position:absolute;left:50%;top:46%;width:.34rem;
  height:.62rem;border:solid var(--cui-bg);border-width:0 2px 2px 0;transform:translate(-50%,-55%) rotate(45deg)}
.cui-check input[type=radio]:checked::after{content:"";position:absolute;left:50%;top:50%;width:.55rem;
  height:.55rem;border-radius:50%;background:var(--cui-bg);transform:translate(-50%,-50%)}
.cui-check input:focus-visible{outline:2px solid var(--cui-focus,var(--cui-primary));outline-offset:1px;border-radius:8px}
.cui-check label{font-size:var(--cui-fs-base);font-weight:400}
fieldset.cui-group{border:1px solid var(--cui-line);border-radius:var(--cui-radius);padding:var(--cui-sp-3)}
fieldset.cui-group > legend{padding:0 .4rem;font-weight:600;font-size:var(--cui-fs-sm)}
/* error summary — injected at the top of the form on a failed submit, focus lands here */
.cui-error-summary{border:1px solid var(--cui-danger);border-radius:var(--cui-radius);
  background:color-mix(in srgb,var(--cui-danger) 12%,var(--cui-surface));padding:var(--cui-sp-3);margin-bottom:var(--cui-sp-4)}
.cui-error-summary[hidden]{display:none}
.cui-error-summary > h2{font-size:var(--cui-fs-base);margin-bottom:.4rem}
.cui-error-summary ul{margin:0;padding-left:1.1rem}
.cui-error-summary a{color:var(--cui-danger-text);font-weight:600}
