/* ===== Inter Font ===== */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/InterVariable.2bf3d951bf9d.woff2") format('woff2');
}

@font-face {
  font-family: 'Inter';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url("../fonts/InterVariable-Italic.8d1dc86da258.woff2") format('woff2');
}

/* ==========================================================================
   Design System - FTE Tree
   Shared semantic colors and public surface tokens
   ========================================================================== */

:root,
[data-bs-theme="light"] {
  /* Typography */
  --bs-font-sans-serif: 'Inter', system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --bs-body-font-weight: 400;

  /* FTE color set */
  --fte-color-white: #FFFFFF;
  --fte-color-white-rgb: 255, 255, 255;
  --fte-color-black: #000000;
  --fte-color-black-rgb: 0, 0, 0;
  --fte-color-on-bright: #0B1F1A;
  --fte-color-on-bright-rgb: 11, 31, 26;
  --fte-color-body: #212529;
  --fte-color-body-rgb: 33, 37, 41;
  --fte-color-primary: #2C3E50;
  --fte-color-primary-rgb: 44, 62, 80;
  --fte-color-primary-hover: #253544;
  --fte-color-primary-active: #212F3C;
  --fte-color-primary-emphasis: #121920;
  --fte-color-primary-subtle: #D5D8DC;
  --fte-color-primary-border: #ABB2B9;
  --fte-color-secondary: #5D6D6E;
  --fte-color-secondary-rgb: 93, 109, 110;
  --fte-color-secondary-fill: #95A5A6;
  --fte-color-secondary-fill-rgb: 149, 165, 166;
  --fte-color-secondary-emphasis: #3C4242;
  --fte-color-secondary-subtle: #EAEDED;
  --fte-color-secondary-border: #D5DBDB;
  --fte-color-success: #117A65;
  --fte-color-success-rgb: 17, 122, 101;
  --fte-color-success-hover: #0F6A58;
  --fte-color-success-active: #0D5C4D;
  --fte-color-success-subtle: #D1F2EB;
  --fte-color-success-border: #A3E4D7;
  --fte-color-info: #236B9D;
  --fte-color-info-rgb: 35, 107, 157;
  --fte-color-info-hover: #1F5F8C;
  --fte-color-info-active: #1B547B;
  --fte-color-info-subtle: #D6EAF8;
  --fte-color-info-border: #AED6F1;
  --fte-color-warning: #8A5708;
  --fte-color-warning-rgb: 138, 87, 8;
  --fte-color-warning-fill: #F39C12;
  --fte-color-warning-fill-rgb: 243, 156, 18;
  --fte-color-warning-hover: #D4860B;
  --fte-color-warning-active: #C87F0A;
  --fte-color-warning-subtle: #FDEBD0;
  --fte-color-warning-border: #FAD7A0;
  --fte-color-danger: #C0392B;
  --fte-color-danger-rgb: 192, 57, 43;
  --fte-color-danger-hover: #A93226;
  --fte-color-danger-active: #922B21;
  --fte-color-danger-subtle: #FADBD8;
  --fte-color-danger-border: #F5B7B1;
  --fte-color-light: #ECF0F1;
  --fte-color-dark: #7B8A8B;
  --fte-surface-white: #FFFFFF;
  --fte-surface-canvas: #FFFFFF;
  --fte-surface-muted: #FAFAF9;
  --fte-surface-tint: #F7F7F5;
  --fte-surface-active: #F6F6F3;
  --fte-border-neutral: #E1E0DC;
  --fte-border-strong-color: #CAC8C2;
  --fte-control-border: #D6D4CE;
  --fte-control-hover-border-color: #C7CCC8;
  --fte-secondary-nav-surface: #ECEEEA;
  --fte-shadow-color-rgb: 44, 62, 80;
  --fte-dark-body-bg: #101412;
  --fte-dark-body-bg-rgb: 16, 20, 18;
  --fte-dark-body-color: #E5EAE7;
  --fte-dark-body-color-rgb: 229, 234, 231;
  --fte-dark-emphasis-color: #F7FAF8;
  --fte-dark-emphasis-color-rgb: 247, 250, 248;
  --fte-dark-secondary-color: #AEB8B2;
  --fte-dark-secondary-bg: #25302A;
  --fte-dark-secondary-rgb: 196, 211, 203;
  --fte-dark-secondary-emphasis: #C9D4CE;
  --fte-dark-tertiary-color: #8F9B94;
  --fte-dark-tertiary-bg: #1B211E;
  --fte-dark-border-rgb: 205, 219, 212;
  --fte-dark-primary-emphasis: #808B96;
  --fte-dark-primary-subtle: #090C10;
  --fte-dark-primary-border: #1A2530;
  --fte-dark-secondary-subtle: #1E2121;
  --fte-dark-secondary-border: #596364;
  --fte-dark-success: #4FAD9C;
  --fte-dark-success-rgb: 79, 173, 156;
  --fte-dark-success-hover: #58B6A5;
  --fte-dark-success-active: #68C7B6;
  --fte-dark-success-subtle: #05261F;
  --fte-dark-success-border: #0E715E;
  --fte-dark-success-button-bg: var(--fte-color-success);
  --fte-dark-success-button-bg-rgb: var(--fte-color-success-rgb);
  --fte-dark-success-button-hover: #137F69;
  --fte-dark-success-button-active: var(--fte-color-success-hover);
  --fte-dark-info: #85C1E9;
  --fte-dark-info-rgb: 133, 193, 233;
  --fte-dark-info-hover: #AED6F1;
  --fte-dark-info-subtle: #0A1E2C;
  --fte-dark-info-border: #1F5B83;
  --fte-dark-warning: #F8C471;
  --fte-dark-warning-rgb: 248, 196, 113;
  --fte-dark-warning-hover: #FAD7A0;
  --fte-dark-warning-subtle: #311F04;
  --fte-dark-warning-border: #925E0B;
  --fte-dark-danger: #F1948A;
  --fte-dark-danger-rgb: 241, 148, 138;
  --fte-dark-danger-hover: #F5B7B1;
  --fte-dark-danger-subtle: #2E0F0C;
  --fte-dark-danger-border: #8B2E24;
  --fte-dark-canvas-bg: #0D1110;
  --fte-dark-canvas-bg-rgb: 13, 17, 16;
  --fte-dark-shell-bg: #080808;
  --fte-dark-surface-bg: #111816;
  --fte-dark-surface-bg-rgb: 17, 24, 22;
  --fte-dark-surface-raised-bg: #151D1A;
  --fte-dark-surface-muted-bg: #18211E;
  --fte-dark-surface-tint-bg: #1D2A24;
  --fte-dark-secondary-nav-bg: #13201C;
  --fte-dark-control-bg: #171D1A;
  --fte-dark-control-muted-bg: #202820;

  --fte-on-primary: var(--fte-color-white);
  --fte-on-secondary: var(--fte-color-white);
  --fte-on-success: var(--fte-color-white);
  --fte-on-info: var(--fte-color-white);
  --fte-on-warning: var(--fte-color-on-bright);
  --fte-on-danger: var(--fte-color-white);
  --fte-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23FFFFFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");

  --bs-blue: var(--fte-color-primary);
  --bs-red: var(--fte-color-danger);
  --bs-yellow: var(--fte-color-warning-fill);
  --bs-green: var(--fte-color-success);
  --bs-cyan: var(--fte-color-info);
  --bs-gray: var(--fte-color-secondary-fill);
  --bs-gray-200: var(--fte-color-light);
  --bs-gray-500: var(--fte-color-secondary-fill);
  --bs-gray-600: var(--fte-color-secondary-fill);
  --bs-gray-700: var(--fte-color-dark);

  --bs-primary: var(--fte-color-primary);
  --bs-primary-rgb: var(--fte-color-primary-rgb);
  --bs-primary-text-emphasis: var(--fte-color-primary-emphasis);
  --bs-primary-bg-subtle: var(--fte-color-primary-subtle);
  --bs-primary-border-subtle: var(--fte-color-primary-border);

  --bs-success: var(--fte-color-success);
  --bs-success-rgb: var(--fte-color-success-rgb);
  --bs-success-text-emphasis: var(--fte-color-success);
  --bs-success-bg-subtle: var(--fte-color-success-subtle);
  --bs-success-border-subtle: var(--fte-color-success-border);

  --bs-info: var(--fte-color-info);
  --bs-info-rgb: var(--fte-color-info-rgb);
  --bs-info-text-emphasis: var(--fte-color-info);
  --bs-info-bg-subtle: var(--fte-color-info-subtle);
  --bs-info-border-subtle: var(--fte-color-info-border);

  --bs-warning: var(--fte-color-warning);
  --bs-warning-rgb: var(--fte-color-warning-rgb);
  --bs-warning-text-emphasis: var(--fte-color-warning);
  --bs-warning-bg-subtle: var(--fte-color-warning-subtle);
  --bs-warning-border-subtle: var(--fte-color-warning-border);

  --bs-danger: var(--fte-color-danger);
  --bs-danger-rgb: var(--fte-color-danger-rgb);
  --bs-danger-text-emphasis: var(--fte-color-danger);
  --bs-danger-bg-subtle: var(--fte-color-danger-subtle);
  --bs-danger-border-subtle: var(--fte-color-danger-border);

  --bs-secondary: var(--fte-color-secondary);
  --bs-secondary-rgb: var(--fte-color-secondary-rgb);
  --bs-secondary-color: rgba(var(--fte-color-body-rgb), 0.75);
  --bs-secondary-color-rgb: var(--fte-color-body-rgb);
  --bs-secondary-text-emphasis: var(--fte-color-secondary-emphasis);
  --bs-secondary-bg: var(--fte-color-light);
  --bs-secondary-bg-subtle: var(--fte-color-secondary-subtle);
  --bs-secondary-border-subtle: var(--fte-color-secondary-border);
  --bs-light: var(--fte-color-light);
  --bs-light-rgb: 236, 240, 241;
  --bs-dark: var(--fte-color-dark);
  --bs-dark-rgb: 123, 138, 139;
  --bs-tertiary-color: rgba(var(--fte-color-body-rgb), 0.5);
  --bs-tertiary-bg: var(--fte-surface-tint);
  --bs-emphasis-color: var(--fte-color-primary);
  --bs-body-color-rgb: var(--fte-color-body-rgb);
  --bs-border-color-translucent: rgba(var(--fte-color-primary-rgb), 0.14);

  --bs-link-color: var(--fte-color-success);
  --bs-link-color-rgb: var(--fte-color-success-rgb);
  --bs-link-hover-color: var(--fte-color-success-hover);
  --bs-link-hover-color-rgb: 15, 106, 88;

  /* Interactive accent */
  --fte-accent: var(--bs-success);
  --fte-accent-rgb: var(--bs-success-rgb);
  --fte-accent-hover: var(--fte-color-success-hover);
  --fte-accent-active: var(--fte-color-success-active);
  --fte-accent-emphasis: var(--bs-success-text-emphasis);
  --fte-accent-subtle: var(--bs-success-bg-subtle);
  --fte-accent-border: var(--bs-success-border-subtle);
  --fte-focus-ring: rgba(var(--fte-color-success-rgb), 0.16);
  --fte-field-focus-border: color-mix(in srgb, var(--fte-accent) 70%, var(--fte-control-border-color));
  --fte-field-focus-shadow: 0 0 0 2px var(--fte-focus-ring);
  --bs-focus-ring-color: var(--fte-focus-ring);
  --fte-interactive-hover-bg: #F3F5F4;

  /* Workbook surfaces */
  --fte-canvas-bg: var(--fte-surface-canvas);
  --fte-shell-bg: var(--fte-surface-white);
  --fte-shell-hover-bg: var(--fte-interactive-hover-bg);
  --fte-shell-border: var(--fte-border-neutral);
  --fte-surface-bg: var(--fte-surface-white);
  --fte-surface-raised-bg: var(--fte-surface-white);
  --fte-surface-muted-bg: var(--fte-surface-muted);
  --fte-surface-tint-bg: var(--fte-surface-tint);
  --fte-surface-hover-bg: var(--fte-interactive-hover-bg);
  --fte-surface-active-bg: var(--fte-surface-active);
  --fte-border-color: var(--fte-border-neutral);
  --fte-border-strong: var(--fte-border-strong-color);
  --fte-grid-border: var(--fte-border-color);
  --fte-table-border-width: 1px;
  --fte-table-header-bg: var(--fte-surface-muted);
  --fte-table-header-color: var(--bs-secondary-text-emphasis);
  --fte-table-header-border: var(--fte-border-color);
  --fte-table-header-font-size: 0.8125rem;
  --fte-table-header-font-weight: 650;
  --fte-table-header-text-transform: none;
  --fte-table-shadow: 0 1px 2px rgba(var(--fte-shadow-color-rgb), 0.04);
  --fte-panel-shadow: var(--fte-table-shadow);
  --fte-card-header-bg: var(--fte-surface-muted);
  --fte-secondary-nav-bg: var(--fte-secondary-nav-surface);
  --fte-table-stripe-bg: transparent;
  --fte-table-hover-bg: var(--fte-surface-hover-bg);
  --fte-table-active-bg: var(--fte-surface-active-bg);
  --fte-control-bg: var(--fte-surface-white);
  --fte-control-muted-bg: var(--fte-surface-tint);
  --fte-control-color: var(--bs-body-color);
  --fte-control-border-color: var(--fte-control-border);
  --fte-control-hover-color: var(--bs-emphasis-color);
  --fte-control-hover-bg: var(--fte-interactive-hover-bg);
  --fte-control-hover-border: var(--fte-control-hover-border-color);
  --fte-control-active-color: var(--fte-accent-emphasis);
  --fte-control-active-bg: var(--fte-surface-active-bg);
  --fte-control-active-border-color: var(--fte-accent-border);
  --fte-control-shadow: inset 0 1px 0 rgba(var(--fte-color-white-rgb), 0.82);
  --fte-control-hover-shadow: inset 0 1px 0 rgba(var(--fte-color-white-rgb), 0.9), 0 1px 2px rgba(var(--fte-shadow-color-rgb), 0.06);
  --fte-control-focus-shadow: 0 0 0 0.2rem rgba(var(--fte-accent-rgb), 0.14), inset 0 1px 0 rgba(var(--fte-color-white-rgb), 0.9);
  --fte-success-button-bg: var(--fte-accent);
  --fte-success-button-border: var(--fte-accent);
  --fte-success-button-color: var(--fte-on-success);
  --fte-success-button-hover-bg: var(--fte-accent-hover);
  --fte-success-button-hover-border: var(--fte-accent-hover);
  --fte-success-button-active-bg: var(--fte-accent-active);
  --fte-success-button-active-border: var(--fte-accent-active);
  --fte-success-button-focus-shadow-rgb: var(--fte-accent-rgb);
  --fte-tab-color: var(--bs-secondary-color);
  --fte-tab-hover-bg: var(--fte-surface-hover-bg);
  --fte-tab-hover-color: var(--bs-emphasis-color);
  --fte-tab-hover-border: var(--fte-border-color);
  --fte-tab-active-bg: var(--fte-surface-white);
  --fte-tab-active-color: var(--bs-emphasis-color);
  --fte-tab-active-border: var(--fte-control-border-color);
  --fte-tab-active-shadow: none;
  --fte-shell-shadow: 0 1px 2px rgba(var(--fte-shadow-color-rgb), 0.06), 0 10px 28px rgba(var(--fte-shadow-color-rgb), 0.06);
  --fte-surface-shadow: 0 1px 2px rgba(var(--fte-shadow-color-rgb), 0.05), 0 16px 40px rgba(var(--fte-shadow-color-rgb), 0.08);
  --fte-surface-radius: 0.5rem;
  --fte-table-radius: 0.5rem;
  --fte-alert-border-radius: 0.375rem;
  --bs-hover-bg: rgba(var(--fte-color-primary-rgb), 0.06);
  --bs-body-color: var(--fte-color-body);
  --bs-border-color: var(--fte-border-color);

  /* Public site surfaces */
  --fte-public-topbar-bg: var(--fte-color-primary);
  --fte-public-topbar-border: rgba(var(--fte-color-white-rgb), 0.12);
  --fte-public-topbar-shadow: 0 3px 10px rgba(var(--fte-color-primary-rgb), 0.16);
  --fte-public-nav-text: rgba(var(--fte-color-white-rgb), 0.82);
  --fte-public-nav-hover-bg: rgba(var(--fte-color-white-rgb), 0.08);
  --fte-public-nav-active-bg: rgba(var(--fte-color-white-rgb), 0.12);
  --fte-public-nav-active-color: var(--fte-color-white);
  --fte-public-control-bg: rgba(var(--fte-color-white-rgb), 0.06);
  --fte-public-control-border: rgba(var(--fte-color-white-rgb), 0.18);
  --fte-public-muted-text: rgba(var(--fte-color-white-rgb), 0.68);
  --fte-public-subtle-text: rgba(var(--fte-color-white-rgb), 0.78);
  --fte-public-faint-text: rgba(var(--fte-color-white-rgb), 0.42);
  --fte-public-footer-bg: var(--fte-surface-bg);
  --fte-public-footer-border: var(--fte-border-color);
  --fte-public-footer-text: var(--bs-secondary-color);
  --fte-public-footer-heading: var(--bs-emphasis-color);
  --fte-public-footer-link: var(--bs-secondary-color);
  --fte-public-footer-link-hover: var(--fte-accent-hover);
  --fte-public-footer-separator: var(--bs-tertiary-color);
  --fte-public-hero-bg: linear-gradient(180deg, color-mix(in srgb, var(--fte-color-primary) 7%, var(--fte-color-white)) 0%, color-mix(in srgb, var(--fte-color-primary) 3%, var(--fte-color-white)) 48%, var(--fte-canvas-bg) 100%);
  --fte-public-hero-border: var(--fte-border-color);
  --fte-public-hero-title: var(--fte-color-primary-emphasis);
  --fte-public-hero-copy: var(--bs-secondary-color);
  --fte-public-hero-kicker: var(--fte-accent-emphasis);
  --fte-public-hero-outline-color: var(--fte-color-primary);
  --fte-public-hero-outline-bg: var(--fte-surface-bg);
  --fte-public-hero-outline-border: var(--fte-control-border-color);
  --fte-public-hero-outline-hover-color: var(--fte-color-white);
  --fte-public-hero-outline-hover-bg: var(--fte-color-primary);
  --fte-public-hero-outline-hover-border: var(--fte-color-primary);
  --fte-public-cta-bg: linear-gradient(135deg, var(--fte-color-primary) 0%, var(--fte-color-success-hover) 100%);
  --fte-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.86%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");

}

/* ===== Dark Mode ===== */
[data-bs-theme="dark"] {
  --bs-body-bg: var(--fte-dark-body-bg);
  --bs-body-bg-rgb: var(--fte-dark-body-bg-rgb);
  --bs-body-color: var(--fte-dark-body-color);
  --bs-body-color-rgb: var(--fte-dark-body-color-rgb);
  --bs-emphasis-color: var(--fte-dark-emphasis-color);
  --bs-secondary-color: var(--fte-dark-secondary-color);
  --bs-secondary-bg: var(--fte-dark-secondary-bg);
  --bs-secondary-bg-subtle: rgba(var(--fte-dark-secondary-rgb), 0.11);
  --bs-secondary-border-subtle: rgba(var(--fte-dark-secondary-rgb), 0.2);
  --bs-secondary-text-emphasis: var(--fte-dark-secondary-emphasis);
  --bs-tertiary-color: var(--fte-dark-tertiary-color);
  --bs-tertiary-bg: var(--fte-dark-tertiary-bg);
  --bs-border-color: rgba(var(--fte-dark-border-rgb), 0.15);
  --bs-border-color-translucent: rgba(var(--fte-dark-border-rgb), 0.14);
  --bs-primary: var(--fte-color-primary);
  --bs-primary-rgb: var(--fte-color-primary-rgb);
  --bs-primary-text-emphasis: var(--fte-dark-primary-emphasis);
  --bs-primary-bg-subtle: var(--fte-dark-primary-subtle);
  --bs-primary-border-subtle: var(--fte-dark-primary-border);
  --bs-secondary: var(--fte-color-secondary-fill);
  --bs-secondary-rgb: var(--fte-color-secondary-fill-rgb);
  --bs-secondary-text-emphasis: var(--fte-dark-secondary-emphasis);
  --bs-secondary-bg-subtle: var(--fte-dark-secondary-subtle);
  --bs-secondary-border-subtle: var(--fte-dark-secondary-border);
  --bs-success: var(--fte-dark-success);
  --bs-success-rgb: var(--fte-dark-success-rgb);
  --bs-success-text-emphasis: var(--fte-dark-success);
  --bs-success-bg-subtle: var(--fte-dark-success-subtle);
  --bs-success-border-subtle: var(--fte-dark-success-border);
  --bs-info: var(--fte-dark-info);
  --bs-info-rgb: var(--fte-dark-info-rgb);
  --bs-info-text-emphasis: var(--fte-dark-info);
  --bs-info-bg-subtle: var(--fte-dark-info-subtle);
  --bs-info-border-subtle: var(--fte-dark-info-border);
  --bs-warning: var(--fte-dark-warning);
  --bs-warning-rgb: var(--fte-dark-warning-rgb);
  --bs-warning-text-emphasis: var(--fte-dark-warning);
  --bs-warning-bg-subtle: var(--fte-dark-warning-subtle);
  --bs-warning-border-subtle: var(--fte-dark-warning-border);
  --bs-danger: var(--fte-dark-danger);
  --bs-danger-rgb: var(--fte-dark-danger-rgb);
  --bs-danger-text-emphasis: var(--fte-dark-danger);
  --bs-danger-bg-subtle: var(--fte-dark-danger-subtle);
  --bs-danger-border-subtle: var(--fte-dark-danger-border);
  --bs-link-color: var(--fte-dark-success);
  --bs-link-hover-color: var(--fte-dark-success-hover);
  --bs-link-color-rgb: var(--fte-dark-success-rgb);
  --bs-link-hover-color-rgb: 88, 182, 165;
  --fte-on-success: var(--fte-color-on-bright);
  --fte-on-info: var(--fte-color-on-bright);
  --fte-on-warning: var(--fte-color-on-bright);
  --fte-on-danger: var(--fte-color-on-bright);
  --fte-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%230B1F1A' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e");
  --fte-accent: var(--bs-success);
  --fte-accent-rgb: var(--bs-success-rgb);
  --fte-accent-hover: var(--fte-dark-success-hover);
  --fte-accent-active: var(--fte-dark-success-active);
  --fte-accent-emphasis: var(--bs-success-text-emphasis);
  --fte-accent-subtle: var(--bs-success-bg-subtle);
  --fte-accent-border: var(--bs-success-border-subtle);
  --fte-focus-ring: rgba(var(--fte-dark-success-rgb), 0.22);
  --bs-focus-ring-color: var(--fte-focus-ring);
  --fte-interactive-hover-bg: var(--fte-dark-tertiary-bg);
  --fte-canvas-bg: var(--fte-dark-canvas-bg);
  --fte-shell-bg: var(--fte-dark-shell-bg);
  --fte-shell-hover-bg: var(--fte-interactive-hover-bg);
  --fte-shell-border: rgba(var(--fte-dark-border-rgb), 0.16);
  --fte-surface-bg: var(--fte-dark-surface-bg);
  --fte-surface-raised-bg: var(--fte-dark-surface-raised-bg);
  --fte-surface-muted-bg: var(--fte-dark-surface-muted-bg);
  --fte-surface-tint-bg: var(--fte-dark-surface-tint-bg);
  --fte-surface-hover-bg: var(--fte-interactive-hover-bg);
  --fte-surface-active-bg: rgba(var(--fte-accent-rgb), 0.14);
  --fte-border-color: rgba(var(--fte-dark-border-rgb), 0.15);
  --fte-border-strong: rgba(var(--fte-dark-border-rgb), 0.26);
  --fte-grid-border: var(--fte-border-color);
  --fte-table-border-width: 1px;
  --fte-table-header-bg: var(--fte-dark-surface-muted-bg);
  --fte-table-header-color: var(--bs-secondary-text-emphasis);
  --fte-table-header-border: var(--fte-border-color);
  --fte-table-header-font-size: 0.8125rem;
  --fte-table-header-font-weight: 650;
  --fte-table-header-text-transform: none;
  --fte-table-shadow: none;
  --fte-panel-shadow: var(--fte-table-shadow);
  --fte-card-header-bg: var(--fte-surface-bg);
  --fte-secondary-nav-bg: var(--fte-dark-secondary-nav-bg);
  --fte-table-stripe-bg: transparent;
  --fte-table-hover-bg: var(--fte-surface-hover-bg);
  --fte-table-active-bg: var(--fte-surface-active-bg);
  --fte-control-bg: var(--fte-dark-control-bg);
  --fte-control-muted-bg: var(--fte-dark-control-muted-bg);
  --fte-control-border-color: rgba(var(--fte-dark-border-rgb), 0.22);
  --fte-control-hover-border: rgba(var(--fte-dark-border-rgb), 0.38);
  --fte-control-shadow: inset 0 1px 0 rgba(var(--fte-color-white-rgb), 0.04);
  --fte-control-hover-shadow: inset 0 1px 0 rgba(var(--fte-color-white-rgb), 0.06), 0 1px 2px rgba(var(--fte-color-black-rgb), 0.22);
  --fte-control-focus-shadow: 0 0 0 0.2rem rgba(var(--fte-accent-rgb), 0.2), inset 0 1px 0 rgba(var(--fte-color-white-rgb), 0.06);
  --fte-success-button-bg: var(--fte-dark-success-button-bg);
  --fte-success-button-border: var(--fte-dark-success-button-bg);
  --fte-success-button-color: var(--fte-color-white);
  --fte-success-button-hover-bg: var(--fte-dark-success-button-hover);
  --fte-success-button-hover-border: var(--fte-dark-success-button-hover);
  --fte-success-button-active-bg: var(--fte-dark-success-button-active);
  --fte-success-button-active-border: var(--fte-dark-success-button-active);
  --fte-success-button-focus-shadow-rgb: var(--fte-dark-success-button-bg-rgb);
  --fte-tab-color: var(--bs-secondary-color);
  --fte-tab-hover-bg: rgba(var(--fte-color-white-rgb), 0.08);
  --fte-tab-hover-color: var(--bs-emphasis-color);
  --fte-tab-hover-border: rgba(var(--fte-dark-border-rgb), 0.18);
  --fte-tab-active-bg: rgba(var(--fte-color-white-rgb), 0.12);
  --fte-tab-active-color: var(--bs-emphasis-color);
  --fte-tab-active-border: rgba(var(--fte-dark-border-rgb), 0.3);
  --fte-tab-active-shadow: none;
  --fte-shell-shadow: 0 1px 0 rgba(var(--fte-color-white-rgb), 0.03);
  --fte-surface-shadow: 0 1px 2px rgba(var(--fte-color-black-rgb), 0.28);
  --fte-surface-radius: 0.5rem;
  --fte-table-radius: 0.5rem;
  --bs-hover-bg: rgba(var(--fte-dark-body-color-rgb), 0.06);

  /* Public site surfaces */
  --fte-public-topbar-bg: var(--fte-color-primary-emphasis);
  --fte-public-topbar-border: rgba(var(--fte-dark-body-color-rgb), 0.12);
  --fte-public-topbar-shadow: none;
  --fte-public-nav-text: rgba(var(--fte-color-white-rgb), 0.82);
  --fte-public-nav-hover-bg: rgba(var(--fte-color-white-rgb), 0.08);
  --fte-public-nav-active-bg: rgba(var(--fte-dark-success-rgb), 0.13);
  --fte-public-nav-active-color: var(--fte-color-white);
  --fte-public-control-bg: rgba(var(--fte-color-white-rgb), 0.05);
  --fte-public-control-border: rgba(var(--fte-dark-border-rgb), 0.2);
  --fte-public-muted-text: rgba(var(--fte-color-white-rgb), 0.68);
  --fte-public-subtle-text: rgba(var(--fte-dark-body-color-rgb), 0.78);
  --fte-public-faint-text: rgba(var(--fte-color-white-rgb), 0.42);
  --fte-public-footer-bg: var(--fte-surface-bg);
  --fte-public-footer-border: rgba(var(--fte-dark-body-color-rgb), 0.12);
  --fte-public-footer-text: var(--bs-secondary-color);
  --fte-public-footer-heading: var(--bs-emphasis-color);
  --fte-public-footer-link: var(--bs-secondary-color);
  --fte-public-footer-link-hover: var(--fte-accent-hover);
  --fte-public-footer-separator: var(--bs-tertiary-color);
  --fte-public-hero-bg: linear-gradient(180deg, color-mix(in srgb, var(--fte-color-primary) 26%, var(--fte-dark-canvas-bg)) 0%, var(--fte-surface-bg) 100%);
  --fte-public-hero-border: var(--fte-border-color);
  --fte-public-hero-title: var(--bs-emphasis-color);
  --fte-public-hero-copy: var(--bs-secondary-color);
  --fte-public-hero-kicker: var(--fte-accent-emphasis);
  --fte-public-hero-outline-color: var(--bs-emphasis-color);
  --fte-public-hero-outline-bg: transparent;
  --fte-public-hero-outline-border: rgba(var(--fte-dark-border-rgb), 0.34);
  --fte-public-hero-outline-hover-color: var(--fte-color-on-bright);
  --fte-public-hero-outline-hover-bg: var(--fte-accent);
  --fte-public-hero-outline-hover-border: var(--fte-accent);
  --fte-public-cta-bg: linear-gradient(135deg, var(--fte-color-primary) 0%, color-mix(in srgb, var(--fte-accent) 34%, var(--fte-dark-canvas-bg)) 100%);

}

[data-bs-theme="dark"] .form-check-input:not(:checked) {
  background-color: var(--bs-tertiary-bg);
  border-color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .form-check-input:checked {
  background-color: var(--fte-accent);
  border-color: var(--fte-accent);
}

/* ===== Dark Mode Utilities ===== */
[data-bs-theme="dark"] .bg-light {
  color: var(--bs-body-color) !important;
  background-color: var(--bs-tertiary-bg) !important;
}

[data-bs-theme="dark"] .table-light {
  --bs-table-color: var(--bs-body-color);
  --bs-table-bg: rgba(var(--fte-dark-body-color-rgb), 0.04);
  --bs-table-border-color: var(--bs-border-color);
  --bs-table-striped-bg: transparent;
  --bs-table-hover-bg: rgba(var(--fte-dark-body-color-rgb), 0.07);
}

[data-bs-theme="dark"] .text-bg-light {
  color: var(--bs-body-color) !important;
  background-color: var(--bs-tertiary-bg) !important;
}

[data-bs-theme="dark"] .badge.text-bg-primary {
  color: var(--fte-color-on-bright) !important;
  background-color: var(--fte-accent) !important;
}

[data-bs-theme="dark"] .badge.text-bg-success,
[data-bs-theme="dark"] .badge.text-bg-info,
[data-bs-theme="dark"] .badge.text-bg-warning,
[data-bs-theme="dark"] .badge.text-bg-danger {
  color: var(--fte-color-on-bright) !important;
}

[data-bs-theme="dark"] .badge.text-bg-secondary {
  color: var(--bs-body-color) !important;
  background-color: var(--bs-tertiary-bg) !important;
  border: 1px solid var(--bs-border-color);
}

[data-bs-theme="dark"] .border-light {
  border-color: var(--bs-border-color) !important;
}

[data-bs-theme="dark"] .btn-light {
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: var(--bs-tertiary-bg);
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-hover-color: var(--bs-emphasis-color);
  --bs-btn-hover-bg: var(--bs-secondary-bg);
  --bs-btn-hover-border-color: var(--bs-secondary-color);
  --bs-btn-active-color: var(--bs-emphasis-color);
  --bs-btn-active-bg: var(--bs-secondary-bg);
  --bs-btn-active-border-color: var(--bs-secondary-color);
}

[data-bs-theme="dark"] .text-dark:not(.badge) {
  color: var(--bs-emphasis-color) !important;
}

[data-bs-theme="dark"] .badge.bg-primary {
  color: var(--fte-color-on-bright);
  background-color: var(--fte-accent) !important;
}

[data-bs-theme="dark"] .badge.bg-success,
[data-bs-theme="dark"] .badge.bg-info,
[data-bs-theme="dark"] .badge.bg-warning,
[data-bs-theme="dark"] .badge.bg-danger {
  color: var(--fte-color-on-bright) !important;
}

[data-bs-theme="dark"] .badge.bg-secondary {
  color: var(--bs-body-color);
  background-color: var(--bs-tertiary-bg) !important;
  border: 1px solid var(--bs-border-color);
}

/* ===== Brand Logo ===== */
.brand-logo-link {
  display: inline-flex;
  align-items: center;
}

.brand-logo-link img {
  height: auto;
}

.brand-logo-dark {
  display: none;
}

[data-bs-theme="dark"] .brand-logo-light {
  display: none;
}

[data-bs-theme="dark"] .brand-logo-dark {
  display: inline-block;
}

/* ===== Pagination ===== */
.pagination {
  align-items: center;
  gap: 0.125rem;
}

.page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.125rem;
  min-height: 2.125rem;
  padding: 0.35rem 0.6rem;
  color: var(--bs-secondary-color);
  background-color: transparent;
  border: 1px solid transparent;
  font-weight: 650;
  font-size: 0.875rem;
  border-radius: 0.375rem;
  text-align: center;
  text-decoration: none;
  transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
}

.page-link:hover {
  color: var(--fte-accent-hover);
  background-color: var(--fte-surface-hover-bg);
  border-color: var(--fte-accent-border);
}

.page-item.active .page-link {
  color: var(--fte-on-success);
  background-color: var(--fte-accent);
  border-color: var(--fte-accent);
  font-weight: 600;
}

.page-item.disabled .page-link {
  color: var(--bs-secondary-color);
  background-color: transparent;
  border-color: transparent;
  opacity: 0.45;
}

[data-bs-theme="dark"] .page-link:hover {
  color: var(--fte-accent);
  background-color: var(--fte-accent-subtle);
  border-color: var(--fte-accent-border);
}

[data-bs-theme="dark"] .page-item.active .page-link {
  background-color: var(--fte-accent);
  border-color: var(--fte-accent);
  color: var(--fte-on-success);
}

/* ===== Buttons ===== */
.btn {
  font-weight: 500;
  letter-spacing: 0.005em;
  border-radius: 0.5rem;
  padding: 0.4rem 1rem;
  transition: all 0.15s ease;
}

.btn-sm {
  border-radius: 0.375rem;
  padding: 0.3rem 0.75rem;
}

.spinner-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.spinner-button-spinner,
.spinner-button-icon {
  line-height: 1;
}

.btn-lg {
  border-radius: 0.625rem;
}

.btn-outline-secondary {
  --bs-btn-color: var(--fte-control-color);
  --bs-btn-bg: var(--fte-control-bg);
  --bs-btn-border-color: var(--fte-control-border-color);
  --bs-btn-hover-color: var(--fte-control-hover-color);
  --bs-btn-hover-bg: var(--fte-control-hover-bg);
  --bs-btn-hover-border-color: var(--fte-control-hover-border);
  --bs-btn-active-color: var(--fte-control-active-color);
  --bs-btn-active-bg: var(--fte-control-active-bg);
  --bs-btn-active-border-color: var(--fte-control-active-border-color);
  --bs-btn-focus-shadow-rgb: var(--fte-accent-rgb);
  --bs-btn-disabled-color: var(--bs-secondary-color);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: var(--fte-control-border-color);
  box-shadow: var(--fte-control-shadow);
}

.btn-outline-secondary:hover,
.btn-outline-secondary:focus-visible,
.btn-outline-secondary:active,
.btn-outline-secondary.active {
  box-shadow: var(--fte-control-hover-shadow);
}

.btn-outline-secondary:focus-visible {
  box-shadow: var(--fte-control-focus-shadow);
}

.btn-success {
  --bs-btn-color: var(--fte-success-button-color);
  --bs-btn-bg: var(--fte-success-button-bg);
  --bs-btn-border-color: var(--fte-success-button-border);
  --bs-btn-hover-color: var(--fte-success-button-color);
  --bs-btn-hover-bg: var(--fte-success-button-hover-bg);
  --bs-btn-hover-border-color: var(--fte-success-button-hover-border);
  --bs-btn-active-color: var(--fte-success-button-color);
  --bs-btn-active-bg: var(--fte-success-button-active-bg);
  --bs-btn-active-border-color: var(--fte-success-button-active-border);
  --bs-btn-focus-shadow-rgb: var(--fte-success-button-focus-shadow-rgb);
  --bs-btn-disabled-color: var(--fte-success-button-color);
  --bs-btn-disabled-bg: var(--fte-success-button-bg);
  --bs-btn-disabled-border-color: var(--fte-success-button-border);
}

.btn-outline-success {
  --bs-btn-color: var(--fte-accent);
  --bs-btn-border-color: var(--fte-accent);
  --bs-btn-hover-color: var(--fte-on-success);
  --bs-btn-hover-bg: var(--fte-accent);
  --bs-btn-hover-border-color: var(--fte-accent);
  --bs-btn-active-color: var(--fte-on-success);
  --bs-btn-active-bg: var(--fte-accent-hover);
  --bs-btn-active-border-color: var(--fte-accent-hover);
  --bs-btn-focus-shadow-rgb: var(--fte-accent-rgb);
  --bs-btn-disabled-color: var(--fte-accent);
  --bs-btn-disabled-border-color: var(--fte-accent);
}

[data-bs-theme="dark"] .btn-success {
  --bs-btn-bg: var(--fte-success-button-bg);
  --bs-btn-border-color: var(--fte-success-button-border);
  --bs-btn-color: var(--fte-success-button-color);
  --bs-btn-hover-bg: var(--fte-success-button-hover-bg);
  --bs-btn-hover-border-color: var(--fte-success-button-hover-border);
  --bs-btn-hover-color: var(--fte-success-button-color);
  --bs-btn-active-bg: var(--fte-success-button-active-bg);
  --bs-btn-active-border-color: var(--fte-success-button-active-border);
  --bs-btn-active-color: var(--fte-success-button-color);
  --bs-btn-focus-shadow-rgb: var(--fte-success-button-focus-shadow-rgb);
  --bs-btn-disabled-bg: var(--fte-success-button-bg);
  --bs-btn-disabled-border-color: var(--fte-success-button-border);
  --bs-btn-disabled-color: var(--fte-success-button-color);
}

[data-bs-theme="dark"] .btn-outline-success {
  --bs-btn-color: var(--fte-accent);
  --bs-btn-border-color: var(--fte-accent);
  --bs-btn-hover-color: var(--fte-success-button-color);
  --bs-btn-hover-bg: var(--fte-success-button-bg);
  --bs-btn-hover-border-color: var(--fte-success-button-border);
  --bs-btn-active-color: var(--fte-success-button-color);
  --bs-btn-active-bg: var(--fte-success-button-active-bg);
  --bs-btn-active-border-color: var(--fte-success-button-active-border);
  --bs-btn-focus-shadow-rgb: var(--fte-success-button-focus-shadow-rgb);
  --bs-btn-disabled-color: var(--fte-accent);
  --bs-btn-disabled-border-color: var(--fte-accent);
}

.btn-primary {
  --bs-btn-color: var(--fte-on-primary);
  --bs-btn-bg: var(--fte-color-primary);
  --bs-btn-border-color: var(--fte-color-primary);
  --bs-btn-hover-color: var(--fte-on-primary);
  --bs-btn-hover-bg: var(--fte-color-primary-hover);
  --bs-btn-hover-border-color: var(--fte-color-primary-hover);
  --bs-btn-active-color: var(--fte-on-primary);
  --bs-btn-active-bg: var(--fte-color-primary-active);
  --bs-btn-active-border-color: var(--fte-color-primary-active);
  --bs-btn-focus-shadow-rgb: var(--fte-color-primary-rgb);
  --bs-btn-disabled-color: var(--fte-on-primary);
  --bs-btn-disabled-bg: var(--fte-color-primary);
  --bs-btn-disabled-border-color: var(--fte-color-primary);
}

.btn-outline-primary {
  --bs-btn-color: var(--fte-color-primary);
  --bs-btn-border-color: var(--fte-color-primary);
  --bs-btn-hover-color: var(--fte-on-primary);
  --bs-btn-hover-bg: var(--fte-color-primary);
  --bs-btn-hover-border-color: var(--fte-color-primary);
  --bs-btn-active-color: var(--fte-on-primary);
  --bs-btn-active-bg: var(--fte-color-primary-hover);
  --bs-btn-active-border-color: var(--fte-color-primary-hover);
  --bs-btn-focus-shadow-rgb: var(--fte-color-primary-rgb);
  --bs-btn-disabled-color: var(--fte-color-primary);
  --bs-btn-disabled-border-color: var(--fte-color-primary);
}

.btn-danger {
  --bs-btn-color: var(--fte-on-danger);
  --bs-btn-bg: var(--fte-color-danger);
  --bs-btn-border-color: var(--fte-color-danger);
  --bs-btn-hover-color: var(--fte-on-danger);
  --bs-btn-hover-bg: var(--fte-color-danger-hover);
  --bs-btn-hover-border-color: var(--fte-color-danger-hover);
  --bs-btn-active-color: var(--fte-on-danger);
  --bs-btn-active-bg: var(--fte-color-danger-active);
  --bs-btn-active-border-color: var(--fte-color-danger-active);
  --bs-btn-focus-shadow-rgb: var(--fte-color-danger-rgb);
  --bs-btn-disabled-color: var(--fte-on-danger);
  --bs-btn-disabled-bg: var(--fte-color-danger);
  --bs-btn-disabled-border-color: var(--fte-color-danger);
}

.btn-outline-danger {
  --bs-btn-color: var(--fte-color-danger);
  --bs-btn-border-color: var(--fte-color-danger);
  --bs-btn-hover-color: var(--fte-on-danger);
  --bs-btn-hover-bg: var(--fte-color-danger);
  --bs-btn-hover-border-color: var(--fte-color-danger);
  --bs-btn-active-color: var(--fte-on-danger);
  --bs-btn-active-bg: var(--fte-color-danger-hover);
  --bs-btn-active-border-color: var(--fte-color-danger-hover);
  --bs-btn-focus-shadow-rgb: var(--fte-color-danger-rgb);
  --bs-btn-disabled-color: var(--fte-color-danger);
  --bs-btn-disabled-border-color: var(--fte-color-danger);
}

.btn-warning {
  --bs-btn-color: var(--fte-on-warning);
  --bs-btn-bg: var(--fte-color-warning-fill);
  --bs-btn-border-color: var(--fte-color-warning-fill);
  --bs-btn-hover-color: var(--fte-on-warning);
  --bs-btn-hover-bg: var(--fte-color-warning-hover);
  --bs-btn-hover-border-color: var(--fte-color-warning-hover);
  --bs-btn-active-color: var(--fte-on-warning);
  --bs-btn-active-bg: var(--fte-color-warning-active);
  --bs-btn-active-border-color: var(--fte-color-warning-active);
  --bs-btn-focus-shadow-rgb: var(--fte-color-warning-fill-rgb);
  --bs-btn-disabled-color: var(--fte-on-warning);
  --bs-btn-disabled-bg: var(--fte-color-warning-fill);
  --bs-btn-disabled-border-color: var(--fte-color-warning-fill);
}

.btn-outline-warning {
  --bs-btn-color: var(--fte-color-warning);
  --bs-btn-border-color: var(--fte-color-warning);
  --bs-btn-hover-color: var(--fte-on-warning);
  --bs-btn-hover-bg: var(--fte-color-warning-fill);
  --bs-btn-hover-border-color: var(--fte-color-warning-fill);
  --bs-btn-active-color: var(--fte-on-warning);
  --bs-btn-active-bg: var(--fte-color-warning-hover);
  --bs-btn-active-border-color: var(--fte-color-warning-hover);
  --bs-btn-focus-shadow-rgb: var(--fte-color-warning-rgb);
  --bs-btn-disabled-color: var(--fte-color-warning);
  --bs-btn-disabled-border-color: var(--fte-color-warning);
}

[data-bs-theme="dark"] .btn-primary {
  --bs-btn-color: var(--fte-on-primary);
  --bs-btn-bg: var(--fte-color-primary);
  --bs-btn-border-color: var(--fte-color-primary);
  --bs-btn-hover-color: var(--fte-on-primary);
  --bs-btn-hover-bg: var(--fte-color-primary-hover);
  --bs-btn-hover-border-color: var(--fte-color-primary-hover);
  --bs-btn-active-color: var(--fte-on-primary);
  --bs-btn-active-bg: var(--fte-color-primary-active);
  --bs-btn-active-border-color: var(--fte-color-primary-active);
  --bs-btn-focus-shadow-rgb: var(--fte-color-primary-rgb);
  --bs-btn-disabled-color: var(--fte-on-primary);
  --bs-btn-disabled-bg: var(--fte-color-primary);
  --bs-btn-disabled-border-color: var(--fte-color-primary);
}

[data-bs-theme="dark"] .btn-outline-primary {
  --bs-btn-color: var(--bs-primary-text-emphasis);
  --bs-btn-border-color: var(--bs-primary-border-subtle);
  --bs-btn-hover-color: var(--fte-on-primary);
  --bs-btn-hover-bg: var(--fte-color-primary);
  --bs-btn-hover-border-color: var(--fte-color-primary);
  --bs-btn-active-color: var(--fte-on-primary);
  --bs-btn-active-bg: var(--fte-color-primary-hover);
  --bs-btn-active-border-color: var(--fte-color-primary-hover);
  --bs-btn-focus-shadow-rgb: var(--fte-color-primary-rgb);
  --bs-btn-disabled-color: var(--bs-primary-text-emphasis);
  --bs-btn-disabled-border-color: var(--bs-primary-border-subtle);
}

[data-bs-theme="dark"] .btn-danger {
  --bs-btn-color: var(--fte-on-danger);
  --bs-btn-bg: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-color: var(--fte-on-danger);
  --bs-btn-hover-bg: var(--fte-dark-danger-hover);
  --bs-btn-hover-border-color: var(--fte-dark-danger-hover);
  --bs-btn-active-color: var(--fte-on-danger);
  --bs-btn-active-bg: var(--fte-dark-danger-hover);
  --bs-btn-active-border-color: var(--fte-dark-danger-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
  --bs-btn-disabled-color: var(--fte-on-danger);
  --bs-btn-disabled-bg: var(--bs-danger);
  --bs-btn-disabled-border-color: var(--bs-danger);
}

[data-bs-theme="dark"] .btn-outline-danger {
  --bs-btn-color: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-color: var(--fte-on-danger);
  --bs-btn-hover-bg: var(--bs-danger);
  --bs-btn-hover-border-color: var(--bs-danger);
  --bs-btn-active-color: var(--fte-on-danger);
  --bs-btn-active-bg: var(--fte-dark-danger-hover);
  --bs-btn-active-border-color: var(--fte-dark-danger-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
  --bs-btn-disabled-color: var(--bs-danger);
  --bs-btn-disabled-border-color: var(--bs-danger);
}

[data-bs-theme="dark"] .btn-warning {
  --bs-btn-color: var(--fte-on-warning);
  --bs-btn-bg: var(--bs-warning);
  --bs-btn-border-color: var(--bs-warning);
  --bs-btn-hover-color: var(--fte-on-warning);
  --bs-btn-hover-bg: var(--fte-dark-warning-hover);
  --bs-btn-hover-border-color: var(--fte-dark-warning-hover);
  --bs-btn-active-color: var(--fte-on-warning);
  --bs-btn-active-bg: var(--fte-dark-warning-hover);
  --bs-btn-active-border-color: var(--fte-dark-warning-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
  --bs-btn-disabled-color: var(--fte-on-warning);
  --bs-btn-disabled-bg: var(--bs-warning);
  --bs-btn-disabled-border-color: var(--bs-warning);
}

[data-bs-theme="dark"] .btn-outline-warning {
  --bs-btn-color: var(--bs-warning);
  --bs-btn-border-color: var(--bs-warning);
  --bs-btn-hover-color: var(--fte-on-warning);
  --bs-btn-hover-bg: var(--bs-warning);
  --bs-btn-hover-border-color: var(--bs-warning);
  --bs-btn-active-color: var(--fte-on-warning);
  --bs-btn-active-bg: var(--fte-dark-warning-hover);
  --bs-btn-active-border-color: var(--fte-dark-warning-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
  --bs-btn-disabled-color: var(--bs-warning);
  --bs-btn-disabled-border-color: var(--bs-warning);
}

/* ===== Links ===== */
a {
  color: var(--bs-link-color);
  text-decoration: none;
}

p a,
li a {
  font-size: inherit;
  font-weight: inherit;
  text-decoration-line: underline;
  text-decoration-color: currentColor;
  text-decoration-color: color-mix(in srgb, currentColor 55%, transparent);
  text-decoration-thickness: 0.07em;
  text-underline-offset: 0.16em;
  text-decoration-skip-ink: auto;
  transition: color 0.15s ease-in-out, text-decoration-color 0.15s ease-in-out;
}

a:hover {
  color: var(--bs-link-hover-color);
  text-decoration: underline;
}

a.btn:not(.disabled):not(:disabled):hover,
a.btn:not(.disabled):not(:disabled):focus-visible {
  color: var(--bs-btn-hover-color);
}

a.btn:not(.disabled):not(:disabled):active,
a.btn:not(.disabled):not(:disabled).active,
a.btn:not(.disabled):not(:disabled).show {
  color: var(--bs-btn-active-color);
}

p a:hover,
p a:focus-visible,
li a:hover,
li a:focus-visible {
  text-decoration-color: currentColor;
  text-decoration-thickness: 0.08em;
}

.app-new-tab-indicator {
  display: inline-block;
  margin-left: 0.25rem;
  text-decoration: none;
}

.app-new-tab-indicator::before {
  content: "\f08e";
  font-family: "Font Awesome 6 Free";
  font-size: 0.72em;
  font-weight: 900;
  line-height: 1;
  vertical-align: 0.08em;
}

a.btn:hover,
.nav a:hover,
.dropdown-menu a:hover,
.table a:hover,
a.list-group-item-action:hover,
#help-categories a:hover,
a.card:hover,
a.card-link:hover {
  text-decoration: none;
}

/* ===== Dropdown Menus ===== */
.dropdown-menu {
  border-radius: 0.625rem;
  border: 1px solid var(--fte-border-color);
  background-color: var(--fte-surface-bg);
  box-shadow: 0 4px 16px rgba(var(--fte-shadow-color-rgb), 0.08), 0 2px 4px rgba(var(--fte-shadow-color-rgb), 0.04);
  padding: 0.375rem;
  font-size: 0.875rem;
  overflow: hidden;
}

[data-bs-theme="dark"] .dropdown-menu {
  color: var(--bs-body-color);
  background-color: var(--fte-surface-raised-bg);
  border-color: var(--fte-border-strong);
  box-shadow: 0 1rem 2.5rem rgba(var(--fte-color-black-rgb), 0.5), 0 0 0 1px rgba(var(--fte-dark-body-color-rgb), 0.04);
}

.dropdown-item {
  position: relative;
  padding: 0.4rem 0.75rem;
  font-size: 0.875rem;
  border-radius: 0.375rem;
  transition: background-color 0.1s ease;
}

.dropdown-item:hover:not(.active):not(.disabled):not(:disabled):not(.text-danger):not(.text-warning),
.dropdown-item:focus:not(.active):not(.disabled):not(:disabled):not(.text-danger):not(.text-warning) {
  color: var(--fte-control-hover-color);
  background-color: var(--fte-control-hover-bg);
}

.dropdown-item.text-danger:hover,
.dropdown-item.text-danger:focus {
  color: var(--bs-danger-text-emphasis) !important;
  background-color: var(--bs-danger-bg-subtle);
}

.dropdown-item.text-warning:hover,
.dropdown-item.text-warning:focus {
  color: var(--bs-warning-text-emphasis) !important;
  background-color: var(--bs-warning-bg-subtle);
}

.dropdown-item.active {
  color: var(--fte-accent-emphasis);
  background-color: var(--fte-surface-active-bg);
  box-shadow: inset 0 0 0 1px rgba(var(--fte-accent-rgb), 0.12);
  font-weight: 650;
}

.dropdown-item.active:hover,
.dropdown-item.active:focus {
  color: var(--fte-accent-hover);
  background-color: var(--fte-surface-active-bg);
}

.dropdown-item.active::before {
  content: "";
  position: absolute;
  top: 0.45rem;
  bottom: 0.45rem;
  left: 0.35rem;
  width: 0.1875rem;
  background: var(--fte-accent);
  border-radius: 999px;
}

.dropdown-item:active {
  background-color: var(--bs-tertiary-bg);
  color: var(--bs-body-color);
}

[data-bs-theme="dark"] .dropdown-item {
  color: var(--bs-body-color);
}

[data-bs-theme="dark"] .dropdown-item:hover:not(.active):not(.disabled):not(:disabled):not(.text-danger):not(.text-warning),
[data-bs-theme="dark"] .dropdown-item:focus:not(.active):not(.disabled):not(:disabled):not(.text-danger):not(.text-warning) {
  color: var(--fte-control-hover-color);
  background-color: var(--fte-control-hover-bg);
}

[data-bs-theme="dark"] .dropdown-item:active {
  color: var(--fte-color-on-bright);
  background-color: var(--fte-accent);
}

.dropdown-item.active:active {
  color: var(--fte-accent-active);
  background-color: var(--fte-surface-active-bg);
}

[data-bs-theme="dark"] .dropdown-item.active {
  color: var(--fte-accent-emphasis);
  background-color: var(--fte-surface-active-bg);
  box-shadow: inset 0 0 0 1px rgba(var(--fte-accent-rgb), 0.22);
}

[data-bs-theme="dark"] .dropdown-item.active:hover,
[data-bs-theme="dark"] .dropdown-item.active:focus,
[data-bs-theme="dark"] .dropdown-item.active:active {
  color: var(--fte-accent-hover);
  background-color: var(--fte-surface-active-bg);
}

.dropdown-item i {
  width: 1.25rem;
  text-align: center;
  flex-shrink: 0;
}

.dropdown-menu .dropdown-divider {
  border-top-color: var(--bs-border-color-translucent);
  margin: 0.25rem 0;
  opacity: 1;
}

[data-bs-theme="dark"] .dropdown-divider,
[data-bs-theme="dark"] .dropdown-menu .dropdown-divider {
  border-top-color: var(--bs-border-color-translucent);
}

.dropdown-header {
  padding: 0.5rem 0.75rem 0.25rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--bs-secondary-color);
}

/* Shared app dropdown triggers */
.app-dropdown-toggle.btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-warning):not(.btn-info),
.app-dropdown-toggle[role="button"] {
  --bs-btn-color: var(--fte-control-color);
  --bs-btn-bg: var(--fte-control-bg);
  --bs-btn-border-color: var(--fte-control-border-color);
  --bs-btn-hover-color: var(--fte-control-hover-color);
  --bs-btn-hover-bg: var(--fte-control-hover-bg);
  --bs-btn-hover-border-color: var(--fte-control-hover-border);
  --bs-btn-active-color: var(--fte-control-active-color);
  --bs-btn-active-bg: var(--fte-control-active-bg);
  --bs-btn-active-border-color: var(--fte-control-active-border-color);
  --bs-btn-focus-shadow-rgb: var(--fte-accent-rgb);
  min-height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.5rem 0.75rem;
  color: var(--fte-control-color);
  background: var(--fte-control-bg);
  border: 1px solid var(--fte-control-border-color);
  border-radius: 0.375rem;
  box-shadow: var(--fte-control-shadow);
  font-size: 0.875rem;
  font-weight: 650;
  line-height: 1.25;
  text-decoration: none;
  transition: color 0.12s ease, background-color 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
  white-space: nowrap;
}

.app-dropdown-toggle.btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-warning):not(.btn-info):hover,
.app-dropdown-toggle.btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-warning):not(.btn-info):focus-visible,
.app-dropdown-toggle.btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-warning):not(.btn-info).show,
.app-dropdown-toggle[role="button"]:hover,
.app-dropdown-toggle[role="button"]:focus-visible,
.app-dropdown-toggle[role="button"].show {
  color: var(--fte-control-hover-color);
  background: var(--fte-control-hover-bg);
  border-color: var(--fte-control-hover-border);
  box-shadow: var(--fte-control-hover-shadow);
  text-decoration: none;
}

.app-dropdown-toggle.btn:not(.btn-primary):not(.btn-success):not(.btn-danger):not(.btn-warning):not(.btn-info):focus-visible,
.app-dropdown-toggle[role="button"]:focus-visible {
  box-shadow: var(--fte-control-focus-shadow);
}

.app-dropdown-toggle__label {
  color: var(--bs-secondary-color);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.app-dropdown-toggle__value {
  min-width: 0;
  overflow: hidden;
  color: var(--bs-emphasis-color);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-dropdown-menu .dropdown-item.active,
.app-dropdown-menu .dropdown-item.active:hover,
.app-dropdown-menu .dropdown-item.active:focus {
  color: var(--fte-accent-emphasis);
  background: var(--fte-surface-active-bg);
}

.app-icon-dropdown-toggle.btn {
  width: var(--fte-icon-dropdown-toggle-size, 2.375rem);
  min-width: var(--fte-icon-dropdown-toggle-size, 2.375rem);
  height: var(--fte-icon-dropdown-toggle-size, 2.375rem);
  min-height: var(--fte-icon-dropdown-toggle-size, 2.375rem);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  color: var(--fte-control-color);
  background: var(--fte-control-bg);
  border: 1px solid var(--fte-control-border-color);
  border-radius: 0.375rem;
  box-shadow: var(--fte-control-shadow);
  line-height: 1;
  transition: color 0.12s ease, background-color 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
}

.app-icon-dropdown-toggle.btn:hover,
.app-icon-dropdown-toggle.btn:focus-visible,
.app-icon-dropdown-toggle.btn.show {
  color: var(--fte-control-hover-color);
  background: var(--fte-control-hover-bg);
  border-color: var(--fte-control-hover-border);
  box-shadow: var(--fte-control-hover-shadow);
}

.app-icon-dropdown-toggle.btn:focus-visible {
  box-shadow: var(--fte-control-focus-shadow);
}

a.list-group-item-action {
  color: var(--bs-link-color);
}

a.list-group-item-action:hover,
a.list-group-item-action:focus {
  color: var(--bs-link-hover-color);
  --bs-list-group-action-hover-bg: var(--fte-table-hover-bg);
}

[data-bs-theme="dark"] a.list-group-item-action:hover,
[data-bs-theme="dark"] a.list-group-item-action:focus {
  color: var(--bs-emphasis-color);
  --bs-list-group-action-hover-bg: var(--fte-table-hover-bg);
}

a.text-body-secondary {
  color: var(--bs-secondary-color) !important;
}

a.text-body-secondary:hover {
  color: var(--bs-body-color) !important;
}

a.text-white,
a.text-white-50 {
  color: inherit !important;
}

/* ===== Tabular Numerals ===== */
table,
.tabular-nums {
  font-variant-numeric: tabular-nums;
}

/* ===== Layout ===== */
body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  --fte-max-width: 1600px;
  accent-color: var(--fte-accent);
  background-color: var(--fte-canvas-bg, var(--bs-body-bg));
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

[data-bs-theme="dark"] body {
  background-color: var(--fte-canvas-bg, var(--bs-body-bg));
}

.content {
  flex: 1;
  width: 100%;
}

@media (max-width: 767.98px) {
  .footer .container-fluid {
    font-size: 0.75rem;
  }

  .page-title {
    font-size: 1.1rem;
  }

  .page-header > .d-flex .page-title {
    flex: 1 1 100%;
  }

  .page-header > .d-flex .ms-auto {
    flex-wrap: wrap;
    margin-left: 0 !important;
  }

  .page-header > .d-flex .ms-auto .btn {
    font-size: 0.8125rem;
    padding: 0.3rem 0.6rem;
  }
}

.footer .container-fluid {
  font-size: 0.8125rem;
  color: var(--bs-secondary-color);
}

/* ===== Page Header ===== */
.page-header {
  padding-bottom: 1.25rem;
  margin-bottom: 1.5rem;
  border-bottom: 1px solid var(--bs-border-color);
}

.page-header > .d-flex {
  min-height: 38px;
  flex-wrap: wrap;
  row-gap: 0.75rem;
  column-gap: 0.5rem;
}

.page-title {
  font-size: 1.375rem;
  font-weight: 650;
  color: var(--fte-color-primary);
  margin: 0;
  letter-spacing: 0;
}

[data-bs-theme="dark"] .page-title {
  color: var(--bs-emphasis-color);
}

.avatar {
  height: 40px;
  width: 40px;
}

/* ===== Toasts ===== */
.toast-container {
  z-index: 1090;
}

.toast {
  --bs-toast-max-width: min(500px, calc(100vw - 2rem));
  --bs-toast-font-size: 0.875rem;
  --bs-toast-bg: var(--bs-body-bg);
  --bs-toast-border-width: 0;
  --bs-toast-border-radius: 0.75rem;
  --bs-toast-box-shadow: 0 8px 32px rgba(var(--fte-color-black-rgb), 0.1), 0 2px 8px rgba(var(--fte-color-black-rgb), 0.06);
  animation: toast-slide-up 0.3s ease-out;
}

.toast.toast-success { --bs-toast-border-color: var(--bs-success); --bs-toast-border-width: 1px; }
.toast.toast-error { --bs-toast-border-color: var(--bs-danger); --bs-toast-border-width: 1px; }
.toast.toast-warning { --bs-toast-border-color: var(--bs-warning); --bs-toast-border-width: 1px; }
.toast.toast-info { --bs-toast-border-color: var(--bs-info); --bs-toast-border-width: 1px; }

.toast-body {
  font-weight: 500;
}

.toast-progress {
  height: 3px;
  animation: toast-countdown linear forwards;
}

@keyframes toast-slide-up {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes toast-countdown {
  from { width: 100%; }
  to { width: 0%; }
}

/* ===== Misc ===== */
@media print {
  .no-print {
    display: none;
  }
}

/* ===== Forms ===== */
.form-control,
.form-select {
  background-color: var(--fte-control-bg, var(--bs-body-bg));
  border-color: var(--bs-border-color);
  border-radius: 0.375rem;
}

.form-control:hover,
.form-select:hover {
  border-color: var(--fte-border-strong, var(--bs-border-color));
}

.form-control:focus {
  border-color: var(--fte-field-focus-border);
  box-shadow: var(--fte-field-focus-shadow);
}

.form-select:focus {
  border-color: var(--fte-field-focus-border);
  box-shadow: var(--fte-field-focus-shadow);
}

.form-check-input:focus {
  border-color: var(--fte-field-focus-border);
  box-shadow: var(--fte-field-focus-shadow);
}

/* Checked checkboxes and radios */
.form-check-input:checked {
  background-color: var(--fte-accent);
  border-color: var(--fte-accent);
}

.form-range:focus::-webkit-slider-thumb {
  box-shadow: 0 0 0 1px var(--bs-body-bg), var(--fte-field-focus-shadow);
}

.form-range:focus::-moz-range-thumb {
  box-shadow: 0 0 0 1px var(--bs-body-bg), var(--fte-field-focus-shadow);
}

/* Tom Select focus ring */
.focus .ts-control {
  box-shadow: var(--fte-field-focus-shadow) !important;
  border-color: var(--fte-field-focus-border) !important;
}

/* ===== Form Fixes ===== */
form[action="/accounts/password/reset/"] legend.form-label.requiredField {
  font-size: 1em;
}

form[action="/accounts/password/reset/"] img.captcha {
  display: block;
  margin-bottom: 0.5em;
}

[data-bs-theme="dark"] .bg-white,
[data-bs-theme="dark"] .bg-light,
[data-bs-theme="dark"] .text-bg-light {
  background-color: var(--bs-secondary-bg) !important;
}

[data-bs-theme="dark"] .text-bg-light {
  color: var(--bs-body-color) !important;
  border-color: var(--bs-border-color) !important;
}

.table.table-light {
  --bs-table-color: var(--bs-body-color);
  --bs-table-bg: var(--fte-table-header-bg);
  --bs-table-border-color: var(--fte-table-header-border);
}

/* ===== Tabular Numerals ===== */
table,
.tabular-nums {
  font-variant-numeric: tabular-nums;
}

/* Filter pills */
.filter-pills {
  gap: 0.25rem;
  margin-bottom: 0.875rem !important;
}

.filter-pills.mb-0 {
  margin-bottom: 0 !important;
}

.filter-pills .nav-link {
  color: var(--bs-secondary-color);
  border: 1px solid var(--bs-border-color);
  border-radius: 999px;
  padding: 0.25rem 0.65rem;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.25;
  background-color: var(--fte-surface-bg);
  transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
}

.filter-pills .nav-link:hover:not(.active) {
  color: var(--bs-body-color);
  border-color: var(--fte-border-strong);
  background-color: var(--fte-surface-hover-bg);
}

.filter-pills .nav-link.active {
  color: var(--fte-accent-emphasis);
  background-color: var(--fte-accent-subtle);
  border-color: var(--fte-accent-border);
}

[data-bs-theme="dark"] .filter-pills .nav-link {
  color: var(--bs-body-color);
  background-color: var(--fte-surface-bg);
  border-color: var(--fte-border-color);
}

[data-bs-theme="dark"] .filter-pills .nav-link:hover:not(.active) {
  color: var(--bs-emphasis-color);
  background-color: var(--fte-surface-hover-bg);
  border-color: var(--fte-border-strong);
}

[data-bs-theme="dark"] .filter-pills .nav-link.active {
  color: var(--fte-accent);
  background-color: var(--fte-accent-subtle);
  border-color: var(--fte-accent-border);
}

/* ===== Nav Pills ===== */
.nav-pills {
  --bs-nav-pills-link-active-bg: var(--bs-secondary-bg);
  --bs-nav-pills-link-active-color: var(--bs-emphasis-color);
}

/* ===== Nav Tabs ===== */
.nav-tabs {
  --bs-nav-tabs-link-active-color: var(--bs-emphasis-color);
}

/* Fix action dropdowns being clipped by table-responsive overflow */
.table-responsive .dropdown-menu {
  position: fixed !important;
}

/* Remove underlines from sortable django-tables2 headers */
.table thead th a {
  text-decoration: none;
  color: inherit;
}

.table thead th a:hover {
  text-decoration: none;
}

/* ===== Table Styling ===== */
.table {
  --bs-table-bg: transparent;
  --bs-table-striped-bg: var(--fte-table-stripe-bg);
  --bs-table-hover-bg: var(--fte-table-hover-bg);
  --bs-table-active-bg: var(--fte-table-active-bg);
  --bs-table-border-color: var(--fte-grid-border);
  margin-bottom: 0;
  color: var(--bs-body-color);
}

.table td {
  vertical-align: middle;
}

.table:not(.table-sm) > :not(caption) > * > * {
  padding: 0.7rem 0.875rem;
}

.table > thead th {
  background-color: var(--fte-table-header-bg);
  font-weight: var(--fte-table-header-font-weight);
  font-size: var(--fte-table-header-font-size);
  color: var(--fte-table-header-color);
  letter-spacing: 0;
  text-transform: var(--fte-table-header-text-transform);
  border-bottom-width: 1px;
  border-bottom-color: var(--fte-table-header-border);
  padding: 0.625rem 0.875rem;
}

.table-hover > tbody > tr:not(:has(> .app-empty-state)):not(.table-active):not(.is-active):not(.is-selected):hover > *,
.app-table-panel .table > tbody > tr:not(:has(> .app-empty-state)):not(.table-active):not(.is-active):not(.is-selected):hover > * {
  --bs-table-hover-bg: var(--fte-table-hover-bg);
  --bs-table-bg-state: var(--fte-table-hover-bg);
}

.table > tbody > tr.table-active > *,
.table > tbody > tr.is-active > *,
.table > tbody > tr.is-selected > * {
  --bs-table-active-bg: var(--fte-table-active-bg);
  --bs-table-bg-state: var(--fte-table-active-bg);
}

/* ===== Auth Provider Buttons ===== */
.btn-provider {
  background-color: var(--fte-control-bg);
  color: var(--fte-control-color);
  border: 1px solid var(--fte-control-border-color);
  border-radius: 0.375rem;
  box-shadow: var(--fte-control-shadow);
}

.btn-provider:hover {
  background-color: var(--fte-control-hover-bg);
  color: var(--fte-control-hover-color);
  border-color: var(--fte-control-hover-border);
  box-shadow: var(--fte-control-hover-shadow);
}

[data-bs-theme="dark"] .btn-provider {
  background-color: var(--fte-control-bg);
  color: var(--fte-control-color);
  border-color: var(--fte-control-border-color);
}

[data-bs-theme="dark"] .btn-provider:hover {
  background-color: var(--fte-control-hover-bg);
  color: var(--fte-control-hover-color);
  border-color: var(--fte-control-hover-border);
}

/* ===== Card Styling ===== */
.card {
  border: var(--fte-table-border-width) solid var(--fte-grid-border);
  border-radius: 0.5rem;
  background-color: var(--fte-surface-bg);
  box-shadow: var(--fte-panel-shadow, none);
}

.card-header {
  background: var(--fte-card-header-bg, var(--fte-surface-bg));
  border-bottom: var(--fte-table-border-width) solid var(--fte-grid-border);
  font-weight: 650;
  font-size: 0.875rem;
}

.card-header h1,
.card-header h2,
.card-header h3,
.card-header h4,
.card-header h5,
.card-header h6 {
  font-size: inherit;
  font-weight: inherit;
}

/* ===== Modern App Surfaces ===== */
.app-section-card {
  padding: 1rem;
  border: var(--fte-table-border-width) solid var(--fte-grid-border);
  border-radius: 0.5rem;
  background: var(--fte-surface-bg);
  box-shadow: var(--fte-panel-shadow);
}

.app-section-card + .app-section-card {
  margin-top: 0.75rem;
}

.app-section-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 0.875rem;
}

.app-section-title {
  margin: 0;
  color: var(--bs-emphasis-color);
  font-size: 0.95rem;
  font-weight: 700;
}

.app-section-kicker {
  margin: 0.125rem 0 0;
  color: var(--bs-secondary-color);
  font-size: 0.8125rem;
}

.app-table-panel {
  --bs-border-color: var(--fte-grid-border);
  --bs-table-border-color: var(--fte-grid-border);
  border: var(--fte-table-border-width) solid var(--fte-grid-border);
  border-radius: 0.5rem;
  background: var(--fte-surface-bg);
  box-shadow: var(--fte-table-shadow);
  overflow: clip;
}

.app-table-panel.table-responsive {
  overflow-x: auto;
}

.app-table-panel .table {
  margin-bottom: 0;
}

.app-table-panel .table > :not(caption) > * > * {
  padding-left: 0.875rem;
  padding-right: 0.875rem;
}

.app-table-panel .table > :not(caption) > * > * + * {
  border-left: 1px solid var(--fte-grid-border);
}

.app-table-panel .table > :last-child > tr:last-child > * {
  border-bottom-width: 0;
}

.app-section-card .app-table-panel {
  margin: 0 -1rem -1rem;
  border-right: 0;
  border-bottom: 0;
  border-left: 0;
  border-radius: 0;
  background: transparent;
}

.app-stat-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
  gap: 0.75rem;
}

.app-stat-strip {
  margin-bottom: 1rem;
}

.app-stat-tile {
  min-width: 0;
  min-height: 5.25rem;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.875rem;
  color: inherit;
  background: var(--fte-surface-bg);
  border: var(--fte-table-border-width) solid var(--fte-grid-border);
  border-radius: 0.5rem;
  box-shadow: var(--fte-panel-shadow);
  text-decoration: none;
}

.app-stat-tile__label {
  color: var(--bs-secondary-color);
  font-size: 0.75rem;
  font-weight: 650;
  letter-spacing: 0;
  text-transform: uppercase;
}

.app-stat-tile__value {
  color: var(--bs-emphasis-color);
  font-size: 1.5rem;
  font-weight: 750;
  line-height: 1.1;
  overflow-wrap: anywhere;
}

.app-stat-tile__detail {
  color: var(--bs-secondary-color);
  font-size: 0.8125rem;
}

.app-action-card {
  display: block;
  height: 100%;
  padding: 1rem;
  color: inherit;
  border: var(--fte-table-border-width) solid var(--fte-grid-border);
  border-radius: 0.5rem;
  background: var(--fte-surface-bg);
  box-shadow: var(--fte-panel-shadow);
  text-decoration: none;
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.app-action-card:hover,
.app-action-card:focus-visible {
  color: inherit;
  background: var(--fte-surface-hover-bg);
  border-color: var(--fte-accent-border);
  text-decoration: none;
}

.app-action-card__header {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.5rem;
}

.app-action-card__icon {
  width: 1.75rem;
  height: 1.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  color: var(--fte-accent-emphasis);
  background: var(--fte-accent-subtle);
  border-radius: 999px;
  font-size: 0.85rem;
}

.app-action-card__title {
  margin: 0;
  color: var(--bs-emphasis-color);
  font-size: 0.9375rem;
  font-weight: 700;
}

.app-action-card__text {
  margin: 0;
  color: var(--bs-secondary-color);
  font-size: 0.875rem;
}

.legal-policy-table code,
.legal-policy-summary-grid code,
.legal-policy-meta-grid code {
  overflow-wrap: anywhere;
}

.legal-policy-row {
  cursor: pointer;
}

.legal-policy-row__link {
  color: var(--bs-link-color);
  font-weight: 700;
  text-decoration: none;
}

.legal-policy-row:hover .legal-policy-row__link,
.legal-policy-row__link:hover {
  color: var(--bs-link-hover-color);
  text-decoration: underline;
}

.legal-policy-document {
  scroll-margin-top: 5rem;
  padding: 1.5rem;
  border: 1px solid var(--bs-border-color);
  border-radius: 0.375rem;
  background: var(--fte-surface-bg);
}

.legal-policy-summary-card .app-section-header {
  margin-bottom: 1rem;
}

.legal-policy-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 1rem 1.5rem;
  margin: 0 -1rem;
  padding: 1rem 1rem 0;
  border-top: 1px solid var(--bs-border-color);
}

.legal-policy-back-button {
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-hover-color: var(--bs-emphasis-color);
  --bs-btn-hover-bg: var(--fte-surface-hover-bg);
  --bs-btn-hover-border-color: var(--bs-border-color);
  --bs-btn-active-color: var(--bs-emphasis-color);
  --bs-btn-active-bg: var(--bs-tertiary-bg);
  --bs-btn-active-border-color: var(--bs-border-color);
  --bs-btn-focus-shadow-rgb: 108, 117, 125;
}

.legal-policy-summary-item {
  min-width: 0;
}

.legal-policy-summary-item dt {
  margin-bottom: 0.35rem;
  color: var(--bs-secondary-color);
  font-size: 0.75rem;
  font-weight: 650;
  letter-spacing: 0;
  text-transform: uppercase;
}

.legal-policy-summary-item dd {
  margin: 0;
  color: var(--bs-emphasis-color);
  overflow-wrap: anywhere;
}

.legal-policy-summary-item--wide {
  grid-column: span 2;
}

@media (max-width: 767.98px) {
  .legal-policy-summary-item--wide {
    grid-column: auto;
  }

  .legal-policy-document {
    padding: 1.125rem;
  }
}

.legal-policy-revision {
  scroll-margin-top: 5rem;
}

.legal-policy-revision + .legal-policy-revision {
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--bs-border-color);
}

.legal-policy-revision__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}

.legal-policy-revision__title {
  margin: 0;
  color: var(--bs-emphasis-color);
  font-size: 1rem;
  font-weight: 700;
}

.legal-policy-meta-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: 0.75rem;
  margin-bottom: 1rem;
  padding: 0.875rem;
  border: 1px solid var(--bs-border-color);
  border-radius: 0.375rem;
  background: var(--fte-surface-muted-bg);
  font-size: 0.875rem;
}

.legal-policy-meta-grid__wide {
  grid-column: 1 / -1;
}

.legal-policy-meta-label {
  color: var(--bs-secondary-color);
  font-size: 0.75rem;
  font-weight: 650;
  letter-spacing: 0;
  text-transform: uppercase;
}

[data-bs-theme="dark"] .app-stat-tile,
[data-bs-theme="dark"] .app-action-card,
[data-bs-theme="dark"] .app-section-card,
[data-bs-theme="dark"] .app-table-panel {
  background: var(--fte-surface-bg);
  border-color: var(--fte-border-color);
}

[data-bs-theme="dark"] .app-action-card:hover,
[data-bs-theme="dark"] .app-action-card:focus-visible,
[data-bs-theme="dark"] .card-link:hover,
[data-bs-theme="dark"] .card-link:focus-visible {
  background: var(--fte-surface-hover-bg);
  border-color: var(--fte-accent-border);
}

[data-bs-theme="dark"] .app-action-card__icon {
  color: var(--fte-accent-emphasis);
  background: var(--fte-accent-subtle);
}

[data-bs-theme="dark"] .legal-policy-document,
[data-bs-theme="dark"] .legal-policy-meta-grid {
  background: var(--fte-surface-bg);
  border-color: var(--fte-border-color);
}

/* Tables inside cards with no padding need inherited border-radius */
.card > .card-body.p-0 {
  overflow: hidden;
  border-bottom-left-radius: inherit;
  border-bottom-right-radius: inherit;
}

.card > .table-responsive:last-child {
  overflow: clip;
  border-bottom-left-radius: inherit;
  border-bottom-right-radius: inherit;
}

/* Remove double border where the last table row meets the card bottom */
.card > .table-responsive > .table.mb-0 > :last-child > tr:last-child > * {
  border-bottom-width: 0;
}

/* ===== HTMX Indicators ===== */
.htmx-indicator {
  opacity: 0 !important;
  width: 0;
  height: 0;
  overflow: hidden;
  display: inline-block;
}

.htmx-request .htmx-indicator,
.htmx-request.htmx-indicator {
  opacity: 1 !important;
  width: auto;
  height: auto;
  overflow: visible;
}

/* ===== Alert Styling ===== */
.alert {
  border-radius: 0.625rem;
  font-size: 0.875rem;
  box-shadow: 0 1px 2px rgba(var(--fte-color-black-rgb), 0.04);
}

/* ===== Badge ===== */
.badge {
  font-weight: 500;
  letter-spacing: 0.01em;
  border-radius: 2rem;
}

.status-badge {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 1.625rem;
  padding: 0.25rem 0.65rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0;
  vertical-align: middle;
  white-space: nowrap;
}

.status-badge--success {
  color: var(--bs-success-text-emphasis);
  background-color: var(--bs-success-bg-subtle);
  border-color: var(--bs-success-border-subtle);
}

.status-badge--active {
  color: var(--bs-info-text-emphasis);
  background-color: var(--bs-info-bg-subtle);
  border-color: var(--bs-info-border-subtle);
}

.status-badge--neutral {
  color: var(--bs-secondary-text-emphasis);
  background-color: var(--bs-secondary-bg-subtle);
  border-color: var(--bs-secondary-border-subtle);
}

/* ===== Accessibility ===== */
.skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  z-index: 9999;
  padding: 0.75rem 1.5rem;
  background: var(--bs-primary);
  color: var(--fte-color-white);
  text-decoration: none;
  font-weight: 600;
  border-radius: 0 0 0.5rem 0;
}

.skip-link:focus {
  top: 0;
  color: var(--fte-color-white);
}

/* ===== Clickable Card Links ===== */
.card-link {
  color: inherit;
  text-decoration: none;
  transition: box-shadow 0.15s ease-in-out, border-color 0.15s ease-in-out;
}

.card-link:hover,
.card-link:focus-visible {
  border-color: var(--fte-border-strong);
  box-shadow: none;
  text-decoration: none;
}

[data-bs-theme="dark"] .card-link:hover,
[data-bs-theme="dark"] .card-link:focus-visible {
  border-color: var(--bs-secondary-color);
}

/* ===== Flatpage / Legal content typography ===== */
.flatpage-content {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--bs-body-color);
}

.flatpage-content > *:first-child {
  margin-top: 0;
}

.flatpage-content h2 {
  font-size: 1.5rem;
  font-weight: 600;
  margin-top: 2.5rem;
  margin-bottom: 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--bs-border-color-translucent);
}

.flatpage-content h3 {
  font-size: 1.175rem;
  font-weight: 600;
  margin-top: 2rem;
  margin-bottom: 0.75rem;
}

.flatpage-content h4 {
  font-size: 1rem;
  font-weight: 600;
  margin-top: 1.5rem;
  margin-bottom: 0.5rem;
}

.flatpage-content p {
  margin-bottom: 1rem;
}

.flatpage-content p.lead {
  font-size: 1.15rem;
  line-height: 1.6;
  color: var(--bs-body-color);
}

.flatpage-content ul,
.flatpage-content ol {
  margin-bottom: 1rem;
  padding-left: 1.5rem;
}

.flatpage-content li + li {
  margin-top: 0.35rem;
}

.flatpage-content a {
  font-weight: 500;
}

.flatpage-content strong {
  font-weight: 600;
  color: var(--bs-emphasis-color);
}

.flatpage-content hr {
  margin: 2.5rem 0;
  opacity: 0.25;
}

.flatpage-content .effective-date {
  display: inline-block;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--bs-secondary-color);
  background-color: var(--bs-tertiary-bg);
  padding: 0.25rem 0.75rem;
  border-radius: 999px;
  margin-bottom: 1.75rem;
}

/* ===== Reduced Motion ===== */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
