:root {--bs-body-font-family: var(--font-family);--bs-body-color: var(--text);--bs-body-bg: var(--background);--bs-border-color: var(--border);--bs-primary: var(--primary);--bs-primary-rgb: var(--primary-rgb);--bs-link-color: var(--primary);--bs-link-hover-color: var(--primary-hover);--bs-border-radius: var(--radius);--bs-border-radius-lg: var(--radius-lg);}
.btn {min-height: var(--control-height);padding: var(--space-2) var(--space-3);border-radius: var(--radius);font-size: var(--font-size-control);font-weight: var(--font-weight-control);letter-spacing: 0;--bs-btn-focus-box-shadow: 0 0 0 3px var(--focus-soft);}
.btn i {margin-right: 6px;}
.btn-sm {min-height: var(--control-height-compact);padding: 5px 10px;font-size: var(--font-size-small);}
.btn-lg {min-height: 48px;padding: 10px var(--space-4);font-size: 1rem;}
.btn-icon {width: var(--control-height);min-width: var(--control-height);padding: 0;display: inline-flex;align-items: center;justify-content: center;}
.btn-icon i {margin-right: 0;}
.btn-primary {--bs-btn-color: var(--button-ink);--bs-btn-bg: var(--button-fill);--bs-btn-border-color: var(--button-fill);--bs-btn-hover-color: var(--button-ink);--bs-btn-hover-bg: var(--primary-hover);--bs-btn-hover-border-color: var(--primary-hover);--bs-btn-active-color: var(--button-ink);--bs-btn-active-bg: var(--primary-hover);--bs-btn-active-border-color: var(--primary-hover);}
.btn-outline-primary,
.btn-outline-secondary,
.btn-secondary,
.btn-light {--bs-btn-color: var(--primary-hover);--bs-btn-bg: var(--surface);--bs-btn-border-color: var(--border-strong);--bs-btn-hover-color: var(--text);--bs-btn-hover-bg: var(--primary-light);--bs-btn-hover-border-color: var(--primary);--bs-btn-active-color: var(--text);--bs-btn-active-bg: var(--primary-light);--bs-btn-active-border-color: var(--primary);}
.btn-success,
.btn-outline-success {--ds-state: var(--success);--ds-state-ink: var(--semantic-ink);}
.btn-danger,
.btn-outline-danger {--ds-state: var(--danger);--ds-state-ink: var(--danger-ink);}
.btn-warning,
.btn-outline-warning {--ds-state: var(--warning);--ds-state-ink: var(--semantic-ink);}
.btn-info,
.btn-outline-info {--ds-state: var(--cyan);--ds-state-ink: var(--button-ink);}
.btn-success,
.btn-danger,
.btn-warning,
.btn-info {--bs-btn-color: var(--ds-state-ink);--bs-btn-bg: var(--ds-state);--bs-btn-border-color: var(--ds-state);--bs-btn-hover-color: var(--ds-state-ink);--bs-btn-hover-bg: var(--ds-state);--bs-btn-hover-border-color: var(--ds-state);--bs-btn-active-color: var(--ds-state-ink);--bs-btn-active-bg: var(--ds-state);--bs-btn-active-border-color: var(--ds-state);}
.btn-outline-success,
.btn-outline-danger,
.btn-outline-warning,
.btn-outline-info {--bs-btn-color: var(--ds-state);--bs-btn-bg: transparent;--bs-btn-border-color: var(--ds-state);--bs-btn-hover-color: var(--ds-state-ink);--bs-btn-hover-bg: var(--ds-state);--bs-btn-hover-border-color: var(--ds-state);--bs-btn-active-color: var(--ds-state-ink);--bs-btn-active-bg: var(--ds-state);--bs-btn-active-border-color: var(--ds-state);}
.btn:disabled,
.btn.disabled,
.btn[aria-disabled="true"] {color: var(--text-muted);background: var(--surface-muted);border-color: var(--border);opacity: 1;border-style: dashed;}
.btn[aria-busy="true"] {cursor: progress;}
.btn.is-active {color: var(--bs-btn-active-color);background-color: var(--bs-btn-active-bg);border-color: var(--bs-btn-active-border-color);}
.btn:focus-visible {outline: 3px solid var(--focus);outline-offset: 3px;}
.btn-close {filter: var(--close-filter);opacity: 1;}
.form-label,
.settings-form .form-label {margin-bottom: 6px;color: var(--text-secondary);font-weight: var(--font-weight-control);font-size: var(--font-size-label);}
.form-control,
.form-select,
.ft-form :is(.form-control,.form-select),
.settings-form :is(.form-control,.form-select) {min-height: var(--control-height);min-width: 0;max-width: 100%;border-color: var(--border-strong);border-radius: var(--radius);color: var(--text);background-color: var(--surface);font-family: var(--font-family);font-size: var(--font-size-control);font-weight: var(--font-weight-body);}
.form-control-lg,
.form-select-lg,
.ft-form .form-control-lg,
.ft-form .form-select-lg,
.settings-form .form-control-lg,
.settings-form .form-select-lg {min-height: 48px;padding: 10px 12px;font-size: 1rem;}
.form-control:focus,
.form-select:focus,
.form-check-input:focus {color: var(--text);background-color: var(--surface);border-color: var(--focus);box-shadow: 0 0 0 3px var(--focus-soft);}
.form-control:focus-visible,
.form-select:focus-visible,
.form-check-input:focus-visible {outline: 3px solid var(--focus);outline-offset: 3px;}
.form-control::placeholder {color: var(--text-muted);opacity: 1;}
.form-control:disabled,
.form-control[readonly],
.form-select:disabled {color: var(--text-muted);background-color: var(--surface-muted);opacity: 1;}
.form-check-input {background-color: var(--surface);border-color: var(--border-strong);}
.form-check-input:checked {background-color: var(--check-fill);border-color: var(--primary);}
.form-select {background-image: var(--select-arrow);}
.input-group-text {min-height: var(--control-height);font-size: var(--font-size-control);background: var(--surface-secondary);color: var(--text-secondary);border-color: var(--border-strong);}
.form-text,
.invalid-feedback,
.field-validation-error {font-size: var(--font-size-small);}
.form-text {color: var(--text-muted);}
.field-validation-error {display: block;margin-top: 5px;}
.field-validation-error,
.validation-summary-errors,
.invalid-feedback {color: var(--danger);}
.input-validation-error,
.form-control.input-validation-error,
.form-select.input-validation-error,
.form-control.is-invalid,
.form-select.is-invalid,
.training-multicheck-button.is-invalid,
[aria-invalid="true"] {border-color: var(--danger);box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger) 15%, transparent);}
.table {margin-bottom: 0;color: var(--text);border-color: var(--border);--bs-table-bg: var(--surface);--bs-table-color: var(--text);--bs-table-border-color: var(--border);--bs-table-striped-bg: var(--surface-secondary);--bs-table-striped-color: var(--text);--bs-table-hover-bg: var(--surface-muted);--bs-table-hover-color: var(--text);--bs-table-active-bg: var(--primary-light);--bs-table-active-color: var(--text);}
.table-light {--bs-table-bg: var(--surface-secondary);--bs-table-color: var(--text);}
.table thead th {padding: 10px 12px;color: var(--text-muted);background: var(--surface-secondary);border-bottom: 1px solid var(--border);font-size: var(--font-size-small);font-weight: var(--font-weight-heading);}
.table tbody td {padding: var(--space-3);border-color: var(--border);vertical-align: middle;font-size: var(--font-size-control);}
.table tbody tr:hover {background: var(--surface-secondary);}
.modal-content,
.dropdown-menu,
.offcanvas,
.popover,
.card,
.list-group-item,
.toast,
.accordion-item,
.accordion-button {color: var(--text);background-color: var(--surface);border-color: var(--border);}
.modal-content {border-radius: var(--radius-dialog);}
.modal-header,
.modal-footer,
.dropdown-divider {border-color: var(--border);}
.dropdown-item {color: var(--text);}
.dropdown-item:hover,
.dropdown-item:focus,
.dropdown-item.active,
.list-group-item.active,
.accordion-button:not(.collapsed) {color: var(--primary-hover);background: var(--primary-light);}
.dropdown-item.disabled {color: var(--text-muted);}
.navbar-toggler {border-color: var(--border-strong);}
.soft-alert,
.alert {border-radius: var(--radius);border-width: 1px;font-weight: var(--font-weight-control);}
.alert-primary,
.alert-info {color: var(--primary-hover);background: var(--primary-light);border-color: var(--primary);}
.alert-success {color: var(--success);background: var(--success-light);border-color: var(--success);}
.alert-warning {color: var(--warning);background: var(--warning-light);border-color: var(--warning);}
.alert-danger {color: var(--danger);background: var(--danger-light);border-color: var(--danger);}
.alert-secondary,
.alert-light {color: var(--text-secondary);background: var(--surface-muted);border-color: var(--border);}
.page-link {color: var(--primary-hover);background: var(--surface);border-color: var(--border);}
.page-item.active .page-link {color: var(--button-ink);background: var(--primary);border-color: var(--primary);}
.page-item.disabled .page-link {color: var(--text-muted);background: var(--surface-muted);border-color: var(--border);}
.progress {background: var(--surface-muted);}
.progress-bar {color: var(--button-ink);background: var(--primary);}
.text-danger {color: var(--danger) !important;}
.text-dark,
.text-body,
.text-black {color: var(--text) !important;}
.text-muted,
.text-secondary {color: var(--text-muted) !important;}
.text-primary {color: var(--primary) !important;}
.text-success {color: var(--success) !important;}
.text-warning {color: var(--warning) !important;}
.text-info {color: var(--cyan) !important;}
.bg-white,
.bg-light {background-color: var(--surface) !important;}
@media screen and (any-pointer: coarse) {
.btn,
.btn-sm,
.btn-lg,
.btn-icon {min-height: var(--touch-target);min-width: var(--touch-target);}
.form-control,
.form-select,
.ft-form :is(.form-control,.form-select),
.settings-form :is(.form-control,.form-select) {font-size: 1rem;}
}

/* Existing touch protections moved from mobile-usability.css; retain specificity during migration. */
@media screen and (max-width: 1199.98px), screen and (any-pointer: coarse) {
.app-shell :is(.btn, .btn-close, .navbar-toggler, .sidebar-toggle, .sidebar-icon-action,
        .nav-favorite-toggle, .session-favorite, .post-match-event-help, .workspace-toolbar-icon-label),
.app-shell .library-quick-actions button,
.app-shell .ft-notification__close,
.app-shell .attendance-month-navigation .btn,
.exercise-editor-shell .btn,
.exercise-editor-shell .ft-notification__close {min-width: var(--touch-target) !important;min-height: var(--touch-target) !important;width: auto !important;height: auto !important;flex-shrink: 0;}
.app-shell .btn-close {width: var(--touch-target) !important;height: var(--touch-target) !important;padding: 0 !important;background-size: 16px 16px;}
.app-shell :is(.btn, .form-control, .form-select, .form-label, .form-text, .status-pill,
        .code-pill, .availability-pill, .availability-reason, .availability-source),
.app-shell small {font-size: .875rem !important;line-height: 1.4 !important;}
.app-shell .btn,
.exercise-editor-shell .btn {padding: 8px 12px !important;white-space: normal !important;overflow-wrap: anywhere;max-width: 100%;}
.app-shell :is(.status-pill, .availability-pill, .code-pill) {max-width: 100%;white-space: normal;overflow-wrap: anywhere;}
.app-shell .btn-icon,
.app-shell .match-quick-actions .btn,
.exercise-editor-shell .btn-icon {padding: 8px !important;}
.app-shell .btn i {flex-shrink: 0;font-size: 1rem;}
.app-shell :is(.form-control, .form-select) {min-height: var(--touch-target);min-width: 0;max-width: 100%;}

}
.attendance-period-form .input-icon .form-control {padding-left: 32px;}
.training-session-filters .input-icon .form-control {padding-left: 32px;}
.input-icon .form-control {padding-left: 38px;}
