/* NTIS form controls. Fields are 40px (44 on touch), 8px radius, hairline
   border on --control-bg. Focus = focus-coloured border + 3px ring, never a
   glow. Validation: error (wine), warning (amber), success (green) — each is a
   border, an icon and a message, never colour alone. */
.ntis-field{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.ntis-field__label{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-1);font:var(--type-label);color:var(--text-strong)}
.ntis-field__req{color:var(--status-danger-fg)}
.ntis-field__optional{font:var(--type-caption);color:var(--text-subtle)}
.ntis-field__hint{font:var(--type-caption);color:var(--text-muted)}
.ntis-field__msg,.ntis-field__error{display:flex;align-items:center;gap:var(--space-2);font:var(--type-caption)}
.ntis-field__error,.ntis-field__msg--error{color:var(--status-danger-fg)}
.ntis-field__msg--warning{color:var(--status-warning-fg)}
.ntis-field__msg--success{color:var(--status-success-fg)}

/* The shared control box: input, textarea, select, search */
.ntis-input,.ntis-textarea,.ntis-select__el,.ntis-search{width:100%;background:var(--control-bg);border:var(--border-hairline) solid var(--control-border);border-radius:var(--radius-md);font-family:var(--font-core);font-size:15px;color:var(--control-ink);transition:var(--t-color),var(--t-shadow)}
.ntis-input:hover,.ntis-textarea:hover,.ntis-select__el:hover,.ntis-search:hover,.ntis-input.is-hover,.ntis-textarea.is-hover,.ntis-select__el.is-hover,.ntis-search.is-hover{border-color:var(--control-border-hover)}
.ntis-input:focus-within,.ntis-textarea:focus,.ntis-select__el:focus-visible,.ntis-search:focus-within,.ntis-input.is-focus,.ntis-textarea.is-focus,.ntis-select__el.is-focus,.ntis-search.is-focus{border-color:var(--border-focus);box-shadow:var(--focus-ring);outline:none}
.ntis-input--invalid,.ntis-textarea--invalid,.ntis-select__el--invalid,.ntis-input--invalid:hover,.ntis-textarea--invalid:hover,.ntis-select__el--invalid:hover{border-color:var(--control-border-invalid)}
.ntis-input--invalid:focus-within,.ntis-textarea--invalid:focus,.ntis-select__el--invalid:focus-visible{border-color:var(--control-border-invalid);box-shadow:var(--focus-ring-danger)}
.ntis-input--warning,.ntis-textarea--warning,.ntis-select__el--warning{border-color:var(--control-border-warning)}
.ntis-input--success,.ntis-textarea--success,.ntis-select__el--success{border-color:var(--control-border-success)}
.ntis-input--disabled,.ntis-input:has(.ntis-input__el:disabled),.ntis-textarea:disabled,.ntis-select__el:disabled,.ntis-input--disabled:hover,.ntis-textarea:disabled:hover,.ntis-select__el:disabled:hover{background:var(--control-bg-disabled);border-color:var(--border-subtle);color:var(--text-disabled);box-shadow:none;cursor:not-allowed}
.ntis-input--readonly,.ntis-textarea[readonly]{background:var(--fill-subtle);border-color:var(--border-subtle)}

.ntis-input{display:flex;align-items:center;gap:var(--space-3);min-height:var(--field-h);padding-inline:var(--space-4)}
.ntis-input__el{flex:1;min-width:0;align-self:stretch;border:0;outline:none;background:transparent;font:inherit;color:inherit;padding:0}
.ntis-input__el:disabled{cursor:not-allowed}
.ntis-input__el::placeholder,.ntis-textarea::placeholder,.ntis-search input::placeholder{color:var(--control-placeholder);opacity:1}
.ntis-input--sm{min-height:var(--field-h-sm);padding-inline:var(--space-3);font-size:var(--fs-body-sm)}
.ntis-input--lg{min-height:var(--field-h-lg);font-size:var(--fs-body-lg)}
.ntis-input__affix{flex:none;color:var(--text-subtle);font-size:var(--fs-body-sm);direction:ltr;unicode-bidi:isolate}
.ntis-input__icon{flex:none;color:var(--text-muted)}
.ntis-input__status{flex:none}
.ntis-input__status--error{color:var(--status-danger-fg)}
.ntis-input__status--warning{color:var(--status-warning-fg)}
.ntis-input__status--success{color:var(--status-success-fg)}
.ntis-textarea{display:block;min-height:96px;padding:var(--space-3) var(--space-4);line-height:var(--lh-body);resize:vertical}

/* Select — the native element restyled; chevron pinned to the inline end */
.ntis-select{position:relative;display:block;width:100%}
.ntis-select__el{appearance:none;-webkit-appearance:none;display:block;min-height:var(--field-h);padding-inline:var(--space-4) var(--space-9);cursor:pointer}
.ntis-select__el option{background:var(--surface-raised);color:var(--text-strong)}
.ntis-select__chevron{position:absolute;inset-inline-end:var(--space-4);inset-block-start:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}
.ntis-select--sm .ntis-select__el{min-height:var(--field-h-sm);padding-inline:var(--space-3) var(--space-8);font-size:var(--fs-body-sm)}
.ntis-select--sm .ntis-select__chevron{inset-inline-end:var(--space-3)}

/* Checkbox & radio */
.ntis-choice{position:relative;display:inline-flex;align-items:flex-start;gap:var(--space-3);min-height:24px;cursor:pointer;font:var(--type-body-sm);color:var(--text-body)}
.ntis-choice__input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.ntis-choice__box{display:inline-flex;align-items:center;justify-content:center;flex:none;width:18px;height:18px;margin-block-start:1px;background:var(--control-bg);border:var(--border-hairline) solid var(--control-border);border-radius:var(--radius-sm);color:var(--control-check-ink);transition:var(--t-color),var(--t-shadow)}
.ntis-choice__box>*{opacity:0;transition:opacity var(--dur-instant) var(--ease-standard)}
.ntis-choice--radio .ntis-choice__box{border-radius:var(--radius-circle)}
.ntis-choice:not(.ntis-choice--disabled):hover .ntis-choice__box,.ntis-choice.is-hover .ntis-choice__box{border-color:var(--brand-primary)}
.ntis-choice__input:checked+.ntis-choice__box,.ntis-choice__input:indeterminate+.ntis-choice__box{background:var(--control-checked);border-color:var(--control-checked)}
.ntis-choice__input:checked+.ntis-choice__box>*,.ntis-choice__input:indeterminate+.ntis-choice__box>*{opacity:1}
.ntis-choice:not(.ntis-choice--disabled):hover .ntis-choice__input:checked+.ntis-choice__box{background:var(--control-checked-hover);border-color:var(--control-checked-hover)}
.ntis-choice__input:focus-visible+.ntis-choice__box,.ntis-choice.is-focus .ntis-choice__box{box-shadow:var(--focus-ring)}
.ntis-choice--invalid .ntis-choice__box{border-color:var(--control-border-invalid)}
.ntis-choice--disabled{color:var(--text-disabled);cursor:not-allowed}
.ntis-choice__input:disabled+.ntis-choice__box{background:var(--control-bg-disabled);border-color:var(--border-default)}
.ntis-choice__input:disabled:checked+.ntis-choice__box{background:var(--fill-disabled);border-color:transparent;color:var(--text-disabled)}
.ntis-choice__dot{width:8px;height:8px;border-radius:var(--radius-circle);background:currentColor}
.ntis-choice__text{display:flex;flex-direction:column;gap:var(--space-1)}
.ntis-choice__desc{font:var(--type-caption);color:var(--text-muted)}
.ntis-choice--disabled .ntis-choice__desc{color:var(--text-disabled)}
.ntis-choice--card{width:100%;padding:var(--space-4);background:var(--surface-card);border:var(--border-hairline) solid var(--border-default);border-radius:var(--radius-md);transition:var(--t-color),var(--t-shadow)}
.ntis-choice--card:not(.ntis-choice--disabled):hover{background:var(--surface-card-hover);border-color:var(--border-strong)}
.ntis-choice--card:has(.ntis-choice__input:checked){background:var(--fill-selected);border-color:var(--border-selected)}
.ntis-choice--card:has(.ntis-choice__input:focus-visible){box-shadow:var(--focus-ring)}
.ntis-choice-group{display:flex;flex-direction:column;gap:var(--space-3);margin:0;padding:0;border:0;min-width:0}
.ntis-choice-group--row{flex-direction:row;flex-wrap:wrap;gap:var(--space-3) var(--space-6)}

/* Switch — the knob travels to the inline end (logical inset), so it mirrors in RTL with no override */
.ntis-switch{position:relative;display:inline-flex;align-items:center;gap:var(--space-3);min-height:24px;cursor:pointer;font:var(--type-body-sm);color:var(--text-body)}
.ntis-switch__input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.ntis-switch__track{position:relative;flex:none;width:40px;height:22px;background:var(--switch-track);border-radius:var(--radius-pill);transition:background-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}
.ntis-switch__knob{position:absolute;inset-block-start:2px;inset-inline-start:2px;width:18px;height:18px;background:var(--switch-knob);border-radius:var(--radius-circle);box-shadow:var(--elev-1);transition:inset-inline-start var(--dur-fast) var(--ease-standard)}
.ntis-switch:not(.ntis-switch--disabled):hover .ntis-switch__track,.ntis-switch.is-hover .ntis-switch__track{box-shadow:0 0 0 4px var(--fill-hover)}
.ntis-switch__input:checked+.ntis-switch__track{background:var(--control-checked)}
.ntis-switch__input:checked+.ntis-switch__track .ntis-switch__knob{inset-inline-start:20px}
.ntis-switch__input:focus-visible+.ntis-switch__track,.ntis-switch.is-focus .ntis-switch__track{box-shadow:var(--focus-ring)}
.ntis-switch--disabled{color:var(--text-disabled);cursor:not-allowed}
.ntis-switch__input:disabled+.ntis-switch__track{opacity:.45}
.ntis-switch--sm .ntis-switch__track{width:32px;height:18px}
.ntis-switch--sm .ntis-switch__knob{width:14px;height:14px}
.ntis-switch--sm .ntis-switch__input:checked+.ntis-switch__track .ntis-switch__knob{inset-inline-start:16px}

/* Search field */
.ntis-search{display:flex;align-items:center;gap:var(--space-3);height:var(--field-h);padding-inline:var(--space-4);color:var(--text-muted)}
.ntis-search input{flex:1;min-width:0;height:100%;border:0;outline:none;background:transparent;font-family:var(--font-core);font-size:15px;color:var(--control-ink)}
.ntis-search input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}
.ntis-search--pill{border-radius:var(--radius-pill);padding-inline:var(--space-5)}
.ntis-search--lg{height:var(--field-h-lg)}
.ntis-search--sm{height:var(--field-h-sm);padding-inline:var(--space-3)}
.ntis-search--sm input{font-size:var(--fs-body-sm)}
.ntis-search__clear{display:inline-flex;align-items:center;justify-content:center;flex:none;width:20px;height:20px;border:0;padding:0;border-radius:var(--radius-circle);background:var(--fill-hover);color:var(--text-muted);cursor:pointer}
.ntis-search__clear:hover{background:var(--fill-pressed);color:var(--text-strong)}
.ntis-search__kbd{flex:none;padding:1px 6px;border:var(--border-hairline) solid var(--border-subtle);border-radius:var(--radius-xs);font:var(--type-caption);color:var(--text-subtle)}

/* Filter bar */
.ntis-filterbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--surface-card);border:var(--border-hairline) solid var(--border-subtle);border-radius:var(--radius-md)}
.ntis-filterbar--sunken{background:var(--surface-sunken);border-color:transparent}
.ntis-filterbar__label{display:flex;align-items:center;gap:var(--space-2);font:var(--type-label);color:var(--text-muted)}
.ntis-filterbar__divider{width:var(--border-hairline);align-self:stretch;background:var(--border-subtle);margin-inline:var(--space-2)}
.ntis-filterbar__spacer{flex:1}
.ntis-filterbar__count{font:var(--type-caption);color:var(--text-muted);font-variant-numeric:tabular-nums}

/* Form layout — groups 24 apart, rows collapse to one column below ~480px */
.ntis-form{display:flex;flex-direction:column;gap:var(--gap-group)}
.ntis-form__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:var(--gap-group) var(--space-5)}
.ntis-form__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}
