/* Public opt-in boundary. Use one wrapper, not nested wrappers. */
.app-styles {
  --as-font: system-ui, -apple-system, "Segoe UI", sans-serif;
  --as-text: #212529;
  --as-muted: #495057;
  --as-surface: #ffffff;
  --as-background: #f8f9fa;
  --as-border: #6c757d;
  --as-primary: #343a40;
  --as-primary-hover: #212529;
  --as-on-primary: #ffffff;
  --as-link: #343a40;
  --as-header: #212529;
  --as-on-header: #ffffff;
  --as-focus: #212529;
  --as-radius: .375rem;
  --as-panel-radius: var(--as-radius);
  --as-panel-border: var(--as-border);
  --as-panel-shadow: none;
  --as-field-background: var(--as-surface);
  --as-table-header-background: var(--as-surface);
  --as-table-header-color: var(--as-text);
  --as-table-striped-background: rgb(0 0 0 / 5%);
  --as-space-1: .25rem;
  --as-space-2: .5rem;
  --as-space-3: .75rem;
  --as-space-4: 1rem;
  --as-space-6: 1.5rem;
  --as-space-8: 2rem;
  --as-content-width: 72rem;
  --as-logo-width: 72px;
  --as-danger: #a51d2d;
  --as-success: #146c43;
  --as-bs-body-font-family: var(--as-font);
  --as-bs-body-color: var(--as-text);
  --as-bs-body-bg: var(--as-surface);
  --as-bs-border-color: var(--as-border);
  --as-bs-border-radius: var(--as-radius);
  --as-bs-secondary-color: var(--as-muted);
  --as-bs-emphasis-color: var(--as-text);
  --as-bs-form-invalid-color: var(--as-danger);
  --as-bs-form-invalid-border-color: var(--as-danger);
  --as-bs-form-valid-color: var(--as-success);
  --as-bs-form-valid-border-color: var(--as-success);
  color: var(--as-text);
  background: var(--as-background);
  font-family: var(--as-font);
  font-size: 1rem;
  line-height: 1.5;
  text-align: start;
  overflow-wrap: anywhere;
  isolation: isolate;
  position: relative;
  box-sizing: border-box;
}
.app-styles [hidden] { display: none !important; }
.app-styles a { color: var(--as-link); text-underline-offset: .18em; }
.app-styles a:hover { color: var(--as-primary-hover); }
.app-styles .as-container { width: 100%; max-width: var(--as-content-width); margin-inline: auto; padding: var(--as-space-6) var(--as-space-4); }
.app-styles .as-header { background: var(--as-header); color: var(--as-on-header); }
.app-styles .as-header .as-container { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--as-space-4); }
.app-styles .as-brand { display: inline-flex; flex-wrap: wrap; align-items: center; gap: var(--as-space-3); max-width: 100%; color: var(--as-on-header); font-size: 1.25rem; font-weight: 700; text-decoration: none; }
.app-styles .as-brand-logo { display: block; flex-shrink: 0; width: var(--as-logo-width); max-width: 100%; height: auto; }
.app-styles .as-header a, .app-styles .as-header a:hover { color: var(--as-on-header); }
.app-styles .as-header .nav { gap: var(--as-space-2); }
.app-styles .as-header .nav-link { border-radius: var(--as-radius); padding: var(--as-space-2) var(--as-space-3); }
.app-styles .as-header .nav-link[aria-current="page"] { outline: 1px solid currentColor; text-decoration: underline; font-weight: 700; }
.app-styles .as-stack { display: grid; gap: var(--as-space-6); }
.app-styles .as-stack > *, .app-styles .as-form-grid > * { min-width: 0; }
.app-styles .as-panel { padding: var(--as-space-6); border: 1px solid var(--as-panel-border); border-radius: var(--as-panel-radius); background: var(--as-surface); box-shadow: var(--as-panel-shadow); }
.app-styles .as-form-grid { display: grid; gap: var(--as-space-4); grid-template-columns: minmax(0, 1fr); }
.app-styles .as-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--as-space-3); }
.app-styles .as-help, .app-styles .form-text { color: var(--as-muted); }
.app-styles .form-label { font-weight: 600; }
.app-styles .form-control, .app-styles .form-select { min-height: 2.75rem; border-radius: var(--as-radius); }
.app-styles .form-control:not(:disabled), .app-styles .form-select:not(:disabled) { background-color: var(--as-field-background); }
.app-styles .form-check { min-height: 2.75rem; padding-top: var(--as-space-2); }
.app-styles .form-check-input { border-color: var(--as-border); }
.app-styles .form-check-input:checked { background-color: var(--as-primary); border-color: var(--as-primary); }
.app-styles .form-check-input:focus { border-color: var(--as-primary); }
.app-styles .btn { min-height: 2.75rem; border-radius: var(--as-radius); }
.app-styles .btn-primary {
  --as-bs-btn-color: var(--as-on-primary);
  --as-bs-btn-bg: var(--as-primary);
  --as-bs-btn-border-color: var(--as-primary);
  --as-bs-btn-hover-color: var(--as-on-primary);
  --as-bs-btn-hover-bg: var(--as-primary-hover);
  --as-bs-btn-hover-border-color: var(--as-primary-hover);
  --as-bs-btn-active-color: var(--as-on-primary);
  --as-bs-btn-active-bg: var(--as-primary-hover);
  --as-bs-btn-active-border-color: var(--as-primary-hover);
  --as-bs-btn-disabled-color: var(--as-on-primary);
  --as-bs-btn-disabled-bg: var(--as-primary);
  --as-bs-btn-disabled-border-color: var(--as-primary);
}
.app-styles .btn-outline-primary {
  --as-bs-btn-color: var(--as-primary);
  --as-bs-btn-border-color: var(--as-primary);
  --as-bs-btn-hover-color: var(--as-on-primary);
  --as-bs-btn-hover-bg: var(--as-primary);
  --as-bs-btn-hover-border-color: var(--as-primary);
  --as-bs-btn-active-color: var(--as-on-primary);
  --as-bs-btn-active-bg: var(--as-primary-hover);
  --as-bs-btn-active-border-color: var(--as-primary-hover);
  --as-bs-btn-disabled-color: var(--as-primary);
  --as-bs-btn-disabled-border-color: var(--as-primary);
}
.app-styles .btn:disabled { opacity: 1; color: #495057; background: #e9ecef; border-color: #6c757d; }
.app-styles .as-table-scroll { overflow-x: auto; max-width: 100%; border: 1px solid var(--as-panel-border); border-radius: var(--as-panel-radius); }
.app-styles .as-table-scroll .table { min-width: 36rem; margin-bottom: 0; }
.app-styles .table { --as-bs-table-color: var(--as-text); --as-bs-table-bg: var(--as-surface); --as-bs-table-striped-color: var(--as-text); --as-bs-table-striped-bg: var(--as-table-striped-background); }
.app-styles .table thead { --as-bs-table-bg: var(--as-table-header-background); --as-bs-table-color: var(--as-table-header-color); }
.app-styles .table > :not(caption) > * > * { padding: var(--as-space-3) var(--as-space-4); }
.app-styles caption { caption-side: top; padding: var(--as-space-4); color: var(--as-text); font-weight: 600; }
.app-styles .as-empty { border: 1px dashed var(--as-border); border-radius: var(--as-panel-radius); padding: var(--as-space-6); background: var(--as-surface); }
.app-styles .as-loading { display: flex; gap: var(--as-space-3); align-items: center; color: var(--as-muted); }
/* Text remains available; no animation is needed to communicate loading. */
.app-styles .as-loading::before { content: ""; width: 1rem; height: 1rem; border: .2rem solid var(--as-border); border-top-color: transparent; border-radius: 50%; flex-shrink: 0; }
.app-styles .invalid-feedback, .app-styles .field-validation-error { color: var(--as-danger); font-size: .875rem; }
.app-styles [aria-invalid="true"], .app-styles .input-validation-error { border-color: var(--as-danger); border-width: 2px; }
.app-styles .field-validation-valid, .app-styles .validation-summary-valid { display: none; }
.app-styles .validation-summary-errors { border: 1px solid var(--as-danger); padding: var(--as-space-4); color: #58151c; background: #f8d7da; border-radius: var(--as-radius); }
/* Two-tone focus stays visible on both the dark header and light surfaces. */
.app-styles :focus-visible, .app-styles [tabindex="-1"]:focus {
  outline: 3px solid var(--as-focus) !important;
  outline-offset: 3px;
  box-shadow: 0 0 0 3px #ffffff !important;
}
.app-styles .as-skip-link { position: absolute; left: var(--as-space-4); top: var(--as-space-4); width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; background: #ffffff; color: #212529; z-index: 10; }
.app-styles .as-skip-link:focus { width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal; padding: var(--as-space-3); }
@media (min-width: 48rem) {
  .app-styles .as-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .app-styles *, .app-styles *::before, .app-styles *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  .app-styles :focus-visible { outline-color: Highlight !important; }
  .app-styles .form-check-input { appearance: auto; }
}
