.ws-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.ws-label{font:var(--type-label);font-size:var(--text-md);color:var(--text-strong)}
.ws-label__req{font-weight:var(--weight-regular);color:var(--text-secondary)}
.ws-hint{font:var(--type-body-sm);color:var(--text-secondary)}
.ws-error{display:flex;gap:6px;align-items:flex-start;font:var(--type-body-sm);font-weight:var(--weight-semibold);color:var(--error-fg)}
.ws-error .ws-icon{font-size:18px;margin-top:1px}
.ws-control{position:relative;display:flex;align-items:center;gap:10px;min-height:var(--control-md);padding:0 14px;background:var(--surface-card);border:1px solid var(--border-control);border-radius:var(--radius-md);color:var(--text-secondary);transition:border-color var(--duration-fast) var(--ease-standard)}
.ws-control:hover{border-color:var(--border-strong)}
.ws-control:focus-within{outline:var(--focus-width) solid var(--focus-ring);outline-offset:1px;border-color:var(--border-strong)}
.ws-control--invalid,.ws-control--invalid:hover{border-color:var(--error-fg);box-shadow:inset 0 0 0 1px var(--error-fg)}
.ws-control--disabled{background:var(--surface-muted);border-color:var(--border-default)}
.ws-control .ws-icon{font-size:18px}
.ws-control input,.ws-control textarea,.ws-control select{flex:1;min-width:0;border:0;outline:0;background:transparent;font:var(--type-body);color:var(--text-body);padding:9px 0;margin:0}
.ws-control textarea{resize:vertical;min-height:104px;padding:10px 0}
.ws-control--multiline{align-items:flex-start}
.ws-control ::placeholder{color:var(--text-muted);opacity:1}
.ws-control select{appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:28px}
.ws-control__chev{position:absolute;right:12px;pointer-events:none;color:var(--text-secondary)}
.ws-control :disabled{cursor:not-allowed;color:var(--text-muted)}
.ws-check{display:flex;gap:12px;align-items:flex-start;cursor:pointer;color:var(--text-body);font:var(--type-body)}
.ws-check__box{appearance:none;-webkit-appearance:none;width:22px;height:22px;margin:2px 0 0;flex:none;display:grid;place-content:center;background:var(--surface-card);border:2px solid var(--border-strong);border-radius:5px;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard)}
.ws-check__box::after{content:"";width:6px;height:11px;border:solid var(--text-on-primary);border-width:0 2.5px 2.5px 0;transform:translateY(-1px) rotate(45deg);opacity:0}
.ws-check__box:checked{background:var(--action-primary);border-color:var(--action-primary)}
.ws-check__box:checked::after{opacity:1}
.ws-check__box:hover{border-color:var(--sage-600)}
.ws-check__box:focus-visible,.ws-radio__dot:focus-visible{outline:var(--focus-width) solid var(--focus-ring);outline-offset:2px}
.ws-check__text{display:flex;flex-direction:column;gap:2px}
.ws-check__desc{font:var(--type-body-sm);color:var(--text-secondary)}
.ws-check--disabled{cursor:not-allowed;color:var(--text-muted)}
.ws-check--disabled .ws-check__box{background:var(--surface-muted);border-color:var(--border-default)}
.ws-radiogroup{border:0;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;min-width:0}
.ws-radiogroup--row{flex-direction:row;flex-wrap:wrap;gap:12px 24px}
.ws-radiogroup legend{padding:0;margin-bottom:10px}
.ws-radio__dot{appearance:none;-webkit-appearance:none;width:22px;height:22px;margin:2px 0 0;flex:none;border-radius:50%;background:var(--surface-card);border:2px solid var(--border-strong);cursor:pointer}
.ws-radio__dot:checked{border-color:var(--action-primary);background:var(--action-primary);box-shadow:inset 0 0 0 4px var(--surface-card)}
.ws-switch{display:inline-flex;align-items:center;gap:12px;cursor:pointer;background:none;border:0;padding:0;font:var(--type-body);color:var(--text-body);text-align:left}
.ws-switch__track{position:relative;width:46px;height:28px;flex:none;border-radius:var(--radius-pill);background:var(--stone-400);transition:background-color var(--duration-base) var(--ease-standard)}
.ws-switch__thumb{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-standard)}
.ws-switch[aria-checked="true"] .ws-switch__track{background:var(--action-primary)}
.ws-switch[aria-checked="true"] .ws-switch__thumb{transform:translateX(18px)}
.ws-switch__state{font:var(--type-label);color:var(--text-secondary);min-width:24px}
.ws-switch:focus-visible{outline:none}
.ws-switch:focus-visible .ws-switch__track{outline:var(--focus-width) solid var(--focus-ring);outline-offset:2px}
.ws-switch:disabled{cursor:not-allowed;opacity:.55}
