/*
 * Alpha Portal angular theme
 *
 * This file intentionally loads after every page-level stylesheet. It keeps
 * the portal's existing colors and information density while replacing the
 * mixed rounded-card language with a quiet, near-square geometry.
 */

:root,
[data-bs-theme="dark"] {
  --bs-border-radius: 2px;
  --bs-border-radius-sm: 1px;
  --bs-border-radius-lg: 2px;
  --bs-border-radius-xl: 2px;
  --bs-border-radius-xxl: 2px;
  --bs-border-radius-pill: 1px;
}

/* Catch page-specific surfaces, including cards styled through parent rules. */
:where(body *) {
  border-radius: 2px !important;
}

/* Bootstrap surfaces and controls. */
:where(
  .card,
  .card-img,
  .card-img-top,
  .card-img-bottom,
  .modal-content,
  .offcanvas,
  .toast,
  .popover,
  .tooltip-inner,
  .accordion,
  .accordion-item,
  .accordion-button,
  .list-group,
  .list-group-item,
  .alert,
  .img-thumbnail
) {
  border-radius: 2px !important;
}

:where(
  .btn,
  .btn-close,
  .form-control,
  .form-select,
  .form-check-input,
  .input-group-text,
  .dropdown-menu,
  .dropdown-item,
  .badge,
  .page-link,
  .progress,
  .nav-pills .nav-link,
  .navbar-toggler
) {
  border-radius: 1px !important;
}

.nav-tabs .nav-link {
  border-radius: 2px 2px 0 0 !important;
}

.btn-group > .btn,
.btn-group-vertical > .btn,
.input-group > :not(:first-child),
.input-group > :not(:last-child),
.pagination .page-item:not(:first-child) .page-link,
.pagination .page-item:not(:last-child) .page-link {
  border-radius: 0 !important;
}

.btn-group > .btn:first-child,
.btn-group-vertical > .btn:first-child,
.input-group > :first-child,
.pagination .page-item:first-child .page-link {
  border-top-left-radius: 2px !important;
  border-bottom-left-radius: 2px !important;
}

.btn-group > .btn:last-child,
.btn-group-vertical > .btn:last-child,
.input-group > :last-child,
.pagination .page-item:last-child .page-link {
  border-top-right-radius: 2px !important;
  border-bottom-right-radius: 2px !important;
}

/* Portal navigation had the most visible rounded treatment. */
.portal-nav .navbar-brand,
.portal-nav.navbar-dark .navbar-nav .nav-link,
.portal-nav .navbar-toggler {
  border-radius: 2px !important;
}

.portal-nav .dropdown-menu {
  border-radius: 2px !important;
  box-shadow: 0 8px 18px rgba(3, 7, 11, .28) !important;
}

.portal-nav .dropdown-item {
  border-radius: 1px !important;
}

/*
 * Custom dashboards use consistent suffixes. Applying the same geometry here
 * prevents individual inline styles from reintroducing 8–18px radii.
 */
:where(
  [class*="-hero"],
  [class*="-panel"],
  [class*="-card"],
  [class*="-tile"],
  [class*="-kpi"],
  [class*="-metric"],
  [class*="-callout"],
  [class*="-notice"],
  [class*="-summary"],
  [class*="-browser"],
  [class*="-preview"],
  [class*="-workspace"],
  [class*="-formula"],
  [class*="-runlog"],
  [class*="-frame"]
) {
  border-radius: 2px !important;
}

:where(
  [class*="-chip"],
  [class*="-pill"],
  [class*="-badge"],
  [class*="-tag"],
  [class*="-verdict"],
  [class*="-toggle"],
  [class*="-filter"] input,
  [class*="-filter"] select,
  [class*="-filter"] button,
  [class*="-toolbar"] input,
  [class*="-toolbar"] select,
  [class*="-toolbar"] button
) {
  border-radius: 1px !important;
}

/* Common third-party widgets. */
.dataTables_wrapper :where(input, select),
.select2-container .select2-selection,
.select2-dropdown,
.flatpickr-calendar {
  border-radius: 1px !important;
}

/* Meter tracks also follow the rectilinear system. */
:where(
  [class*="-progress"],
  [class*="-bar-track"],
  [class*="-null-bar"],
  [class*="-meter"] > div,
  [class*="-legend-gradient"]
) {
  border-radius: 1px !important;
}

/* Preserve shapes whose circular form communicates identity or state. */
:where(
  .rounded-circle,
  .spinner-border,
  .spinner-grow,
  .sports-league-logo,
  .sports-participant-logo,
  .entity-list-item img,
  .entity-list-item .entity-initial,
  .oc-empty-mark,
  .oc-loader,
  .kt-loader,
  .mlb-loader,
  .paper-index,
  .pair-composition-chip button,
  input[type="radio"],
  [class$="-dot"],
  [class*="-dot "],
  [class*="-badge"] i,
  [class*="-footer"] i,
  [class*="-status"] i,
  [class*="-state"] i,
  [class*="-legend"] i,
  .oc-eyebrow span
) {
  border-radius: 50% !important;
}

/* Keep focus visible without relying on a rounded glow. */
:where(.btn, .form-control, .form-select, .nav-link, .dropdown-item):focus-visible {
  outline: 2px solid rgba(142, 184, 198, .82);
  outline-offset: 1px;
  box-shadow: none !important;
}

@media (max-width: 767.98px) {
  :where(
    .card,
    .modal-content,
    .offcanvas,
    [class*="-hero"],
    [class*="-panel"],
    [class*="-card"]
  ) {
    border-radius: 1px !important;
  }
}
