.fld{display:grid}.fld__label{font:var(--type-caption);font-weight:var(--weight-medium);color:var(--text-body);align-items:center;gap:var(--space-1);margin-bottom:var(--space-2);line-height:1;display:inline-flex}.fld__req{color:var(--danger)}.fld__optional{color:var(--text-subtle);font-weight:var(--weight-regular)}.fld__control{align-items:center;display:flex;position:relative}.fld__input{width:100%;height:var(--control-height);padding:0 var(--space-3);font:var(--type-body);color:var(--text-strong);background:var(--bg-inset);border:var(--border-hairline) solid var(--border-default);border-radius:var(--radius-md);transition:var(--transition-control);appearance:none}.fld__input::placeholder{color:var(--text-disabled)}.fld__input:hover:not(:disabled):not(:focus){border-color:var(--border-strong)}.fld__input:focus{border-color:var(--accent);background:var(--bg-surface);box-shadow:var(--ring-accent);outline:none}.fld__input:disabled{background:var(--bg-muted);color:var(--text-disabled);cursor:not-allowed}.fld__input[readonly]{background:var(--bg-subtle);color:var(--text-body)}.fld__msg{font:var(--type-caption);color:var(--text-subtle);align-items:center;gap:var(--space-1);min-height:1em;transition:color var(--duration-fast) var(--ease-standard);display:flex}.fld__msg i{font-size:var(--size-body);flex:none}.fld__msg--enter{animation:fld-msg-in var(--duration-base) var(--ease-entrance)}@keyframes fld-msg-in{0%{opacity:0;transform:translateY(calc(var(--space-px) * -1))}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.fld__msg--enter{animation:none}}.fld .fld__msg{padding-top:var(--space-2)}.fld--sm .fld__input{height:var(--control-height-sm);font-size:var(--size-caption);padding:0 var(--space-2);border-radius:var(--radius-sm)}.fld--lg .fld__input{height:var(--control-height-lg)}.fld__icon{color:var(--text-subtle);pointer-events:none;transition:var(--transition-control);justify-content:center;align-items:center;display:inline-flex;position:absolute}.fld__icon i{font-size:var(--icon-md)}.fld__icon--lead{left:var(--space-3)}.fld__icon--trail{right:var(--space-3)}.fld__control:focus-within .fld__icon{color:var(--text-muted)}.fld--has-lead .fld__input{padding-left:calc(var(--space-3) + var(--icon-md) + var(--space-2))}.fld--has-trail .fld__input{padding-right:calc(var(--space-3) + var(--icon-md) + var(--space-2))}.fld__action{right:var(--space-2);width:var(--control-height-sm);height:var(--control-height-sm);color:var(--text-subtle);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-control);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex;position:absolute}.fld__action i{font-size:var(--icon-sm)}.fld__action:hover{color:var(--text-strong);background:var(--bg-muted)}.fld__action:focus-visible{color:var(--text-strong);box-shadow:var(--ring-accent);outline:none}.fld--has-action .fld__input{padding-right:calc(var(--space-2) + var(--control-height-sm) + var(--space-1))}.fld.is-error .fld__input{border-color:var(--danger)}.fld.is-error .fld__input:hover:not(:disabled):not(:focus){border-color:var(--danger-text)}.fld.is-error .fld__input:focus{box-shadow:var(--ring-danger)}.fld.is-error .fld__msg,.fld.is-error .fld__icon{color:var(--danger-text)}.fld.is-warning .fld__input{border-color:var(--warning)}.fld.is-warning .fld__input:hover:not(:disabled):not(:focus){border-color:var(--warning-text)}.fld.is-warning .fld__input:focus{box-shadow:var(--ring-warning)}.fld.is-warning .fld__msg{color:var(--warning-text)}.fld.is-success .fld__input{border-color:var(--success)}.fld.is-success .fld__input:hover:not(:disabled):not(:focus){border-color:var(--success-text)}.fld.is-success .fld__input:focus{box-shadow:var(--ring-success)}.fld.is-success .fld__msg{color:var(--success-text)}.numf{--numf-stepper-w:var(--space-6)}.numf .fld__input{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";padding-right:calc(var(--numf-stepper-w) + var(--space-2))}.numf--unit .fld__input{padding-right:calc(var(--numf-stepper-w) + var(--numf-unit-w,var(--control-height-lg)) + var(--space-2))}.numf__unit{right:calc(var(--numf-stepper-w) + var(--space-2));color:var(--text-subtle);font:var(--type-caption);pointer-events:none;position:absolute}.numf__steppers{top:var(--border-hairline);right:var(--border-hairline);bottom:var(--border-hairline);width:var(--numf-stepper-w);border-left:var(--border-hairline) solid var(--border-default);border-radius:0 var(--radius-md) var(--radius-md) 0;grid-template-rows:1fr 1fr;display:grid;position:absolute;overflow:hidden}.numf__step{background:var(--bg-surface);color:var(--text-muted);cursor:pointer;transition:var(--transition-control);border:0;place-items:center;padding:0;display:grid}.numf__step i{font-size:var(--size-caption)}.numf__step:hover{background:var(--neutral-wash);color:var(--text-strong)}.numf__step:active{background:var(--bg-muted)}.numf__step:disabled{color:var(--text-disabled);cursor:not-allowed;background:var(--bg-surface)}.numf__step+.numf__step{border-top:var(--border-hairline) solid var(--border-default)}.numf .fld__input:focus~.numf__steppers{border-color:var(--accent)}.otp{align-items:center;gap:var(--space-2);display:inline-flex}.otp__slot{text-align:center;width:44px;height:52px;font-family:var(--font-mono);font-size:var(--size-title);font-weight:var(--weight-medium);color:var(--text-strong);background:var(--bg-inset);border:var(--border-hairline) solid var(--border-default);border-radius:var(--radius-md);transition:var(--transition-control);caret-color:var(--accent);appearance:none}.otp__slot:hover:not(:disabled):not(:focus){border-color:var(--border-strong)}.otp__slot:focus{border-color:var(--accent);background:var(--bg-surface);box-shadow:var(--ring-accent);outline:none}.otp__slot[data-filled=true]{border-color:var(--border-strong)}.otp__slot:disabled{background:var(--bg-muted);color:var(--text-disabled);cursor:not-allowed}.otp__sep{background:var(--border-strong);border-radius:var(--border-hairline);flex:none;width:10px;height:2px}.otp--sm .otp__slot{width:38px;height:44px;font-size:var(--size-heading)}.otp.is-error .otp__slot{border-color:var(--danger)}.otp.is-error .otp__slot:hover:not(:disabled):not(:focus){border-color:var(--danger-text)}.otp.is-error .otp__slot:focus{box-shadow:var(--ring-danger)}
