/* Forms: field shell, input, textarea, select, checkbox, switch */
.lab-field{display:flex;flex-direction:column;gap:var(--space-3)}
.lab-field__label{font-family:var(--font-sans);font-size:var(--fs-label);font-weight:var(--fw-medium);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--blue-deep)}
.lab-field__hint{font:var(--type-body-s);font-size:var(--fs-label);color:var(--text-muted)}
.lab-field__hint--error{color:var(--feedback-error)}

.lab-input{box-sizing:border-box;width:100%;padding:14px 16px;font-family:var(--font-sans);font-size:var(--fs-body);color:var(--text-body);background:var(--white);border:1px solid var(--border-hairline);border-radius:var(--radius-sm);transition:border-color var(--dur-fast) var(--ease-editorial),background-color var(--dur-fast) var(--ease-editorial)}
.lab-input::placeholder{color:var(--text-muted);opacity:.8}
.lab-input:hover{border-color:rgba(3,55,142,.32)}
.lab-input:focus{outline:none;border-color:var(--blue-bright);box-shadow:0 0 0 3px rgba(7,96,207,.14)}
.lab-input--soft{background:var(--blue-pale);border-color:transparent}
.lab-input--error{border-color:var(--feedback-error)}
.lab-input[disabled]{background:var(--cream);color:var(--text-muted);cursor:not-allowed}
textarea.lab-input{min-height:132px;resize:vertical;line-height:var(--lh-body)}

.lab-select{position:relative;display:block}
.lab-select>select{appearance:none;-webkit-appearance:none;box-sizing:border-box;width:100%;padding:14px 44px 14px 16px;font-family:var(--font-sans);font-size:var(--fs-body);color:var(--text-body);background:var(--white);border:1px solid var(--border-hairline);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-editorial)}
.lab-select>select:hover{border-color:rgba(3,55,142,.32)}
.lab-select>select:focus{outline:none;border-color:var(--blue-bright);box-shadow:0 0 0 3px rgba(7,96,207,.14)}
.lab-select__mark{position:absolute;top:50%;right:16px;transform:translateY(-50%);pointer-events:none;font-size:16px;color:var(--blue-deep)}
.lab-select--soft>select{background:var(--blue-pale);border-color:transparent}

.lab-check{position:relative;display:inline-flex;align-items:flex-start;gap:var(--space-4);cursor:pointer;font:var(--type-body-s);color:var(--text-body)}
/* PORT: the real input stays invisible but keeps the footprint of the painted box
   instead of collapsing to 0x0. A required checkbox with no layout box cannot be
   focused, so the browser blocks submit and silently swallows its own validation
   message. Same appearance, same keyboard behaviour, message now shows. */
.lab-check>input{position:absolute;top:1px;left:0;opacity:0;width:20px;height:20px;margin:0}
.lab-check__box{display:grid;place-items:center;flex:none;width:20px;height:20px;margin-top:1px;border:1px solid var(--blue-deep);border-radius:var(--radius-xs);background:var(--white);color:transparent;font-size:13px;transition:background-color var(--dur-fast) var(--ease-editorial),color var(--dur-fast) var(--ease-editorial),border-color var(--dur-fast) var(--ease-editorial)}
.lab-check--radio .lab-check__box{border-radius:var(--radius-circle)}
.lab-check>input:checked+.lab-check__box{background:var(--blue-bright);border-color:var(--blue-bright);color:var(--white)}
.lab-check>input:focus-visible+.lab-check__box{outline:2px solid var(--focus-ring);outline-offset:2px}
.lab-check>input:disabled+.lab-check__box{border-color:var(--border-hairline);background:var(--cream)}
.lab-check:hover>input:not(:disabled)+.lab-check__box{border-color:var(--blue-bright)}

.lab-switch{display:inline-flex;align-items:center;gap:var(--space-4);cursor:pointer;font:var(--type-body-s);color:var(--text-body)}
.lab-switch>input{position:absolute;opacity:0;width:0;height:0}
.lab-switch__track{position:relative;flex:none;width:44px;height:24px;border-radius:var(--radius-pill);background:var(--blue-light);transition:background-color var(--dur-fast) var(--ease-editorial)}
.lab-switch__knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:var(--radius-circle);background:var(--white);box-shadow:var(--shadow-hairline);transition:transform var(--dur-base) var(--ease-editorial)}
.lab-switch>input:checked+.lab-switch__track{background:var(--blue-bright)}
.lab-switch>input:checked+.lab-switch__track .lab-switch__knob{transform:translateX(20px)}
.lab-switch>input:focus-visible+.lab-switch__track{outline:2px solid var(--focus-ring);outline-offset:2px}
.lab-switch>input:disabled+.lab-switch__track{background:var(--cream-deep)}
