/* PTSEA Design System — Federal Ministry of Education */
:root, [data-bs-theme="light"] {
  --ptsea-green: #248454;
  --ptsea-green-deep: #1c6842;
  --ptsea-green-soft: #E6F4EC;
  --ptsea-gold: #C9A227;
  --ptsea-navy: #0D1B4C;
  --ptsea-bg: #f4f6f8;
  --ptsea-surface: #ffffff;
  --ptsea-surface-2: #f8fafb;
  --ptsea-border: #e5e9ef;
  --ptsea-border-strong: #d0d7e2;
  --ptsea-text: #1a2332;
  --ptsea-text-muted: #595c5f;
  --ptsea-text-heading: #1c6842;
  --ptsea-navbar: #248454;
  --ptsea-navbar-text: #ffffff;
  --ptsea-sidebar: #0f1f17;
  --ptsea-sidebar-text: #c8d9d0;
  --ptsea-sidebar-active: #2dd4a0;
  --ptsea-focus-ring: rgba(36, 132, 84, 0.25);
  --ptsea-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.06);
  --ptsea-shadow-md: 0 4px 16px rgba(16, 24, 40, 0.08), 0 2px 6px rgba(16, 24, 40, 0.04);
  --ptsea-shadow-lg: 0 12px 40px rgba(16, 24, 40, 0.12);
  --ptsea-radius: 0.75rem;
  --ptsea-radius-sm: 0.5rem;
  --ptsea-font: "Segoe UI", "Inter", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  --ptsea-font-display: "Segoe UI", "Inter", system-ui, sans-serif;
  --ptsea-input-bg: #ffffff;
  --ptsea-input-border: #ced4da;
  --ptsea-danger: #c62828;
  --ptsea-warning: #ed6c02;
  --ptsea-info: #0277bd;
  --ptsea-sidebar-width: 260px;
  --ptsea-navbar-height: 76px;
  --ptsea-shell-header-height: var(--ptsea-navbar-height);
  color-scheme: light;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-bs-theme="light"]) { color-scheme: dark; }
}
[data-bs-theme="dark"] {
  --ptsea-green: #2dd4a0;
  --ptsea-green-deep: #5eecc0;
  --ptsea-green-soft: #0d2818;
  --ptsea-gold: #e0c15a;
  --ptsea-navy: #8fa4d8;
  --ptsea-bg: #0b1016;
  --ptsea-surface: #151c27;
  --ptsea-surface-2: #1c2636;
  --ptsea-border: #2a3548;
  --ptsea-border-strong: #3a4a63;
  --ptsea-text: #e8eef4;
  --ptsea-text-muted: #9aa8b8;
  --ptsea-text-heading: #5eecc0;
  --ptsea-navbar: #0d2818;
  --ptsea-navbar-text: #e8eef4;
  --ptsea-sidebar: #0a1210;
  --ptsea-sidebar-text: #a8bdb4;
  --ptsea-sidebar-active: #2dd4a0;
  --ptsea-focus-ring: rgba(45, 212, 160, 0.28);
  --ptsea-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
  --ptsea-shadow-md: 0 8px 24px rgba(0, 0, 0, 0.45);
  --ptsea-input-bg: #151c27;
  --ptsea-input-border: #3a4a63;
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--ptsea-font, "Segoe UI", system-ui, sans-serif);
  background: var(--ptsea-bg);
  color: var(--ptsea-text);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.55;
  min-height: 100vh;
  font-size: 0.9375rem;
  letter-spacing: -0.005em;
}
a { color: var(--ptsea-green); text-decoration: none; }
a:hover { color: var(--ptsea-green-deep); text-decoration: underline; }
img { max-width: 100%; height: auto; }

/* Layout shell */
.ptsea-shell { display: flex; min-height: 100vh; }
.ptsea-sidebar {
  width: var(--ptsea-sidebar-width);
  background: var(--ptsea-sidebar);
  color: var(--ptsea-sidebar-text);
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  position: fixed;
  inset: 0 auto 0 0;
  z-index: 1040;
  transition: transform 0.25s ease;
}
.ptsea-sidebar__brand {
  display: flex; align-items: center; gap: 0.75rem;
  padding: 1.15rem 1.25rem;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.ptsea-sidebar__mark {
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg, var(--ptsea-green), #1c6842);
  display: grid; place-items: center;
  color: #fff; font-weight: 800; font-size: 0.75rem;
  box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.45);
}
.ptsea-sidebar__title { font-weight: 700; color: #fff; font-size: 0.95rem; line-height: 1.2; }
.ptsea-sidebar__sub { font-size: 0.7rem; opacity: 0.7; }
.ptsea-nav { padding: 1rem 0.75rem; flex: 1; overflow-y: auto; }
.ptsea-nav__label {
  font-size: 0.65rem; letter-spacing: 0.08em; text-transform: uppercase;
  opacity: 0.5; padding: 0.75rem 0.75rem 0.35rem; font-weight: 600;
}
.ptsea-nav__link {
  display: flex; align-items: center; gap: 0.65rem;
  padding: 0.6rem 0.75rem; border-radius: 0.5rem;
  color: var(--ptsea-sidebar-text); text-decoration: none;
  font-size: 0.875rem; font-weight: 500;
  transition: background 0.15s, color 0.15s;
}
.ptsea-nav__link:hover { background: rgba(255,255,255,0.06); color: #fff; text-decoration: none; }
.ptsea-nav__link.active {
  background: rgba(45, 212, 160, 0.12);
  color: var(--ptsea-sidebar-active);
}
.ptsea-nav__icon { width: 1.15rem; text-align: center; opacity: 0.9; }

.ptsea-main-wrap {
  flex: 1;
  margin-left: var(--ptsea-sidebar-width);
  min-width: 0;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
.ptsea-topbar {
  position: sticky; top: 0; z-index: 1030;
  background: color-mix(in srgb, var(--ptsea-surface) 92%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--ptsea-border);
  padding: 0.65rem 1.25rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
.ptsea-content { padding: 1.25rem 1.25rem 2.5rem; flex: 1; }

/* Cards & surfaces */
.ptsea-card {
  background: var(--ptsea-surface);
  border: 1px solid var(--ptsea-border);
  border-radius: var(--ptsea-radius);
  box-shadow: var(--ptsea-shadow);
}
.ptsea-card__header {
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--ptsea-border);
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
}
.ptsea-card__body { padding: 1.25rem; }

/* Stat tiles */
.ptsea-stat {
  background: var(--ptsea-surface);
  border: 1px solid var(--ptsea-border);
  border-radius: var(--ptsea-radius);
  padding: 1.15rem 1.25rem;
  box-shadow: var(--ptsea-shadow);
  height: 100%;
  transition: transform 0.15s, box-shadow 0.15s;
}
.ptsea-stat:hover { box-shadow: var(--ptsea-shadow-md); transform: translateY(-1px); }
.ptsea-stat__label {
  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--ptsea-text-muted); margin-bottom: 0.35rem;
}
.ptsea-stat__value {
  font-size: 1.75rem; font-weight: 700; color: var(--ptsea-text-heading); line-height: 1.2;
}
.ptsea-stat__hint { font-size: 0.8rem; color: var(--ptsea-text-muted); margin-top: 0.35rem; }

/* Page header */
.ptsea-page-header { margin-bottom: 1.5rem; }
.ptsea-page-header h1 {
  font-size: 1.5rem; font-weight: 700; color: var(--ptsea-text);
  margin: 0 0 0.25rem; letter-spacing: -0.01em;
}
.ptsea-page-header p { margin: 0; color: var(--ptsea-text-muted); font-size: 0.925rem; }

/* Buttons */
.btn-ptsea {
  background: var(--ptsea-green); border-color: var(--ptsea-green); color: #fff;
  font-weight: 600; border-radius: 0.5rem;
}
.btn-ptsea:hover { background: var(--ptsea-green-deep); border-color: var(--ptsea-green-deep); color: #fff; }
[data-bs-theme="dark"] .btn-ptsea { color: #0b1016; }
.btn-ptsea-outline {
  border: 1px solid var(--ptsea-border-strong); color: var(--ptsea-text);
  background: transparent; border-radius: 0.5rem; font-weight: 500;
}
.btn-ptsea-outline:hover { background: var(--ptsea-surface-2); color: var(--ptsea-text); }

/* Forms (shared with crispy) */
.ptsea-form .form-label { font-size: 0.8125rem; font-weight: 600; color: var(--ptsea-text); }
.ptsea-form .form-control, .ptsea-form .form-select {
  background: var(--ptsea-input-bg); border-color: var(--ptsea-input-border);
  color: var(--ptsea-text); border-radius: 0.5rem;
}
.ptsea-form .form-control:focus, .ptsea-form .form-select:focus {
  border-color: var(--ptsea-green); box-shadow: 0 0 0 0.2rem var(--ptsea-focus-ring);
  background: var(--ptsea-input-bg); color: var(--ptsea-text);
}
.ptsea-section-title {
  margin: 0; font-size: 0.95rem; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--ptsea-text-heading);
}
.ptsea-step-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 1.75rem; height: 1.75rem; border-radius: 999px;
  background: var(--ptsea-green); color: #fff; font-size: 0.75rem; font-weight: 700;
}
[data-bs-theme="dark"] .ptsea-step-badge { color: #0b1016; }

/* Landing */
.ptsea-hero {
  background:
    radial-gradient(ellipse 80% 60% at 70% -10%, rgba(36,132,84, 0.18), transparent),
    radial-gradient(ellipse 50% 40% at 10% 80%, rgba(201, 162, 39, 0.12), transparent),
    var(--ptsea-bg);
  padding: 4rem 0 3.5rem;
}
.ptsea-hero__badge {
  display: inline-flex; align-items: center; gap: 0.4rem;
  padding: 0.35rem 0.75rem; border-radius: 999px;
  background: var(--ptsea-green-soft); color: var(--ptsea-green-deep);
  font-size: 0.75rem; font-weight: 600; letter-spacing: 0.03em;
  border: 1px solid color-mix(in srgb, var(--ptsea-green) 25%, transparent);
  margin-bottom: 1.25rem;
}
.ptsea-hero h1 {
  font-size: clamp(1.85rem, 4vw, 2.75rem);
  font-weight: 800; letter-spacing: -0.03em; line-height: 1.15;
  color: var(--ptsea-text); margin-bottom: 1rem;
}
.ptsea-hero h1 span { color: var(--ptsea-green); }
.ptsea-hero__lead {
  font-size: 1.05rem; color: var(--ptsea-text-muted); max-width: 36rem;
  margin-bottom: 1.75rem;
}
.ptsea-feature {
  padding: 1.35rem; height: 100%;
  background: var(--ptsea-surface); border: 1px solid var(--ptsea-border);
  border-radius: var(--ptsea-radius); box-shadow: var(--ptsea-shadow);
}
.ptsea-feature__icon {
  width: 42px; height: 42px; border-radius: 10px;
  background: var(--ptsea-green-soft); color: var(--ptsea-green);
  display: grid; place-items: center; font-size: 1.15rem; margin-bottom: 0.85rem;
}
.ptsea-footer {
  border-top: 1px solid var(--ptsea-border);
  padding: 2rem 0; color: var(--ptsea-text-muted); font-size: 0.85rem;
  background: var(--ptsea-surface);
}

/* Tables */
.ptsea-table { width: 100%; font-size: 0.875rem; }
.ptsea-table th {
  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--ptsea-text-muted); font-weight: 600;
  border-bottom: 1px solid var(--ptsea-border); padding: 0.65rem 0.85rem;
}
.ptsea-table td {
  padding: 0.75rem 0.85rem; border-bottom: 1px solid var(--ptsea-border);
  vertical-align: middle;
}
.ptsea-table tr:hover td { background: var(--ptsea-surface-2); }
.ptsea-sort-button { display: inline-flex; align-items: center; gap: .38rem; width: 100%; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: inherit; letter-spacing: inherit; text-align: inherit; text-transform: inherit; cursor: pointer; }
.ptsea-sort-button:hover .ptsea-sort-label, .ptsea-sort-button:focus-visible .ptsea-sort-label { color: var(--ptsea-primary); }
.ptsea-sort-button:focus-visible { outline: 2px solid var(--ptsea-primary); outline-offset: 3px; border-radius: .15rem; }
.ptsea-sort-caret { display: inline-flex; flex: 0 0 auto; color: #8a9690; line-height: 1; }
.ptsea-sort-caret svg { display: block; overflow: visible; }
.ptsea-sort-caret path { fill: none; stroke: currentColor; stroke-width: 1.45; stroke-linecap: round; stroke-linejoin: round; opacity: .52; }
th[aria-sort="ascending"] .ptsea-sort-caret-up, th[aria-sort="descending"] .ptsea-sort-caret-down { color: var(--ptsea-primary); stroke-width: 1.9; opacity: 1; }
th[aria-sort="ascending"] .ptsea-sort-caret-down, th[aria-sort="descending"] .ptsea-sort-caret-up { opacity: .2; }
.text-end .ptsea-sort-button { justify-content: flex-end; }
.ptsea-table-pagination { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem 1rem; border-top: 1px solid var(--ptsea-border); color: var(--ptsea-text-muted); font-size: .82rem; }
.ptsea-table-pagination__actions, .ptsea-table-pagination__actions label { display: flex; align-items: center; gap: .6rem; margin: 0; }
.ptsea-table-pagination__actions select { width: auto; min-width: 4.5rem; }
.ptsea-table-pagination__page { min-width: 6.5rem; text-align: center; }
@media (max-width: 640px) { .ptsea-table-pagination { align-items: stretch; flex-direction: column; }.ptsea-table-pagination__actions { flex-wrap: wrap; justify-content: center; }.ptsea-table-pagination__summary { text-align: center; } }

/* Badges */
.ptsea-badge {
  display: inline-flex; align-items: center; padding: 0.2rem 0.55rem;
  border-radius: 999px; font-size: 0.7rem; font-weight: 600;
}
.ptsea-badge--success { background: var(--ptsea-green-soft); color: var(--ptsea-green-deep); }
.ptsea-badge--warning { background: #fff3e0; color: #e65100; }
.ptsea-badge--info { background: #e3f2fd; color: #01579b; }
.ptsea-badge--muted { background: var(--ptsea-surface-2); color: var(--ptsea-text-muted); border: 1px solid var(--ptsea-border); }
[data-bs-theme="dark"] .ptsea-badge--warning { background: #3d2a12; color: #ffb74d; }
[data-bs-theme="dark"] .ptsea-badge--info { background: #0d2a3d; color: #64b5f6; }

/* Empty state */
.ptsea-empty {
  text-align: center; padding: 3rem 1.5rem; color: var(--ptsea-text-muted);
}
.ptsea-empty__icon { font-size: 2rem; margin-bottom: 0.75rem; opacity: 0.5; }

/* Theme toggle */

.ptsea-theme-toggle:hover { background: var(--ptsea-surface-2); }

/* Mobile sidebar + shell conflict resolution */
.ptsea-sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  z-index: 1035;
}
.ptsea-sidebar-backdrop:not([hidden]) {
  display: block;
}
.ptsea-sidebar-backdrop.show { display: block; }

/* Desktop: sidebar always visible, never translated off-canvas */
@media (min-width: 992px) {
  .ptsea-shell {
    display: flex;
    min-height: 100vh;
  }
  .ptsea-sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--ptsea-sidebar-width, 260px);
    transform: none !important;
  }
  .ptsea-main-wrap {
    flex: 1;
    margin-left: var(--ptsea-sidebar-width, 260px);
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
  }
  .ptsea-menu-btn { display: none !important; }
}

/* Mobile: off-canvas sidebar */
@media (max-width: 991.98px) {
  .ptsea-shell {
    display: flex;
    min-height: 100vh;
  }
  .ptsea-sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: var(--ptsea-sidebar-width, 260px);
    transform: translateX(-100%);
    transition: transform 0.25s ease;
  }
  .ptsea-sidebar.open {
    transform: translateX(0);
  }
  .ptsea-main-wrap {
    margin-left: 0 !important;
    width: 100%;
    min-width: 0;
  }
}


/* Utilities already partially in form template; keep critical */
.ptsea-hide-mobile { }
@media (max-width: 767.98px) {
  .ptsea-hide-mobile { display: none !important; }
  .ptsea-content { padding: 1rem 0.85rem 2rem; }
  .ptsea-stat__value { font-size: 1.45rem; }
}
@media (min-width: 768px) {
  .ptsea-hide-desktop { display: none !important; }
}


/* ── Section headers (forms & long pages) ───────────────────────── */
.ptsea-section-header {
  margin: 1.85rem 0 1.15rem;
}
.ptsea-section-header:first-child,
.ptsea-form .ptsea-section-header:first-of-type {
  margin-top: 0.15rem;
}
.ptsea-section-header__row {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}
.ptsea-section-header__text {
  flex: 1;
  min-width: 0;
}
.ptsea-section-eyebrow {
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ptsea-green);
  margin-bottom: 0.2rem;
}
.ptsea-section-title {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--ptsea-text-heading, var(--ptsea-green-deep));
  letter-spacing: -0.01em;
}
.ptsea-section-subtitle {
  margin: 0.35rem 0 0;
  font-size: 0.875rem;
  line-height: 1.45;
  color: var(--ptsea-text-muted);
  max-width: 42rem;
}
.ptsea-step-badge {
  flex-shrink: 0;
  display: inline-grid;
  place-items: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 999px;
  background: var(--ptsea-green);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 1px 2px rgba(36, 132, 84, 0.25);
}
.ptsea-section-rule {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  margin-top: 0.65rem;
}
.ptsea-section-rule__line {
  flex: 1;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--ptsea-green), color-mix(in srgb, var(--ptsea-green) 30%, var(--ptsea-gold)));
}
.ptsea-section-rule__line--short {
  flex: 0 0 1.75rem;
  background: var(--ptsea-gold);
}
.ptsea-section-rule__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ptsea-gold);
  flex-shrink: 0;
}


/* ── Award-level UI polish ─────────────────────────────────────── */
.ptsea-page-header {
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--ptsea-border);
}
.ptsea-page-header h1 {
  font-family: var(--ptsea-font-display, inherit);
  font-size: clamp(1.35rem, 2vw, 1.65rem);
  font-weight: 750;
  letter-spacing: -0.02em;
  color: var(--ptsea-text-heading);
  margin: 0 0 0.35rem;
  line-height: 1.25;
}
.ptsea-page-header p {
  margin: 0;
  color: var(--ptsea-text-muted);
  max-width: 40rem;
  font-size: 0.92rem;
}
.ptsea-eyebrow {
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ptsea-green);
  margin-bottom: 0.35rem;
}

.ptsea-card {
  background: var(--ptsea-surface);
  border: 1px solid var(--ptsea-border);
  border-radius: var(--ptsea-radius);
  box-shadow: var(--ptsea-shadow);
  overflow: hidden;
}
.ptsea-card__header {
  padding: 0.9rem 1.15rem;
  border-bottom: 1px solid var(--ptsea-border);
  background: var(--ptsea-surface-2);
  font-weight: 650;
  font-size: 0.9rem;
}
.ptsea-card__body { padding: 1.15rem 1.25rem; }

.ptsea-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}
.ptsea-table th {
  text-align: left;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ptsea-text-muted);
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--ptsea-border);
  background: var(--ptsea-surface-2);
}
.ptsea-table td {
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--ptsea-border);
  vertical-align: middle;
}
.ptsea-table tbody tr {
  transition: background 0.12s ease;
}
.ptsea-table tbody tr:hover {
  background: color-mix(in srgb, var(--ptsea-green) 4%, var(--ptsea-surface));
}

.btn-ptsea {
  background: var(--ptsea-green);
  border: 1px solid var(--ptsea-green);
  color: #fff;
  font-weight: 650;
  border-radius: var(--ptsea-radius-sm, 0.5rem);
  padding: 0.5rem 1.1rem;
  transition: background 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease;
}
.btn-ptsea:hover {
  background: var(--ptsea-green-deep);
  border-color: var(--ptsea-green-deep);
  color: #fff;
  box-shadow: 0 2px 8px rgba(36, 132, 84, 0.3);
}
.btn-ptsea:active { transform: translateY(1px); }
.btn-ptsea-outline {
  background: transparent;
  border: 1px solid var(--ptsea-border-strong);
  color: var(--ptsea-text);
  font-weight: 600;
  border-radius: var(--ptsea-radius-sm, 0.5rem);
}
.btn-ptsea-outline:hover {
  border-color: var(--ptsea-green);
  color: var(--ptsea-green);
  background: var(--ptsea-green-soft);
}

.ptsea-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.ptsea-badge--success {
  background: var(--ptsea-green-soft);
  color: var(--ptsea-green-deep);
  border: 1px solid color-mix(in srgb, var(--ptsea-green) 20%, transparent);
}
.ptsea-badge--muted {
  background: var(--ptsea-surface-2);
  color: var(--ptsea-text-muted);
  border: 1px solid var(--ptsea-border);
}

.nav-tabs {
  border-bottom: 1px solid var(--ptsea-border);
  gap: 0.15rem;
}
.nav-tabs .nav-link {
  border: none;
  border-bottom: 2px solid transparent;
  color: var(--ptsea-text-muted);
  font-weight: 600;
  font-size: 0.82rem;
  padding: 0.65rem 0.85rem;
  border-radius: 0;
  white-space: nowrap;
}
.nav-tabs .nav-link:hover {
  color: var(--ptsea-green);
  border-bottom-color: color-mix(in srgb, var(--ptsea-green) 35%, transparent);
}
.nav-tabs .nav-link.active {
  color: var(--ptsea-green-deep);
  background: transparent;
  border-bottom-color: var(--ptsea-green);
  font-weight: 700;
}

.ptsea-tabs-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}

.form-control, .form-select {
  border-radius: var(--ptsea-radius-sm, 0.5rem);
  border-color: var(--ptsea-input-border);
  background: var(--ptsea-input-bg);
  color: var(--ptsea-text);
  font-size: 0.9rem;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.form-control:focus, .form-select:focus {
  border-color: var(--ptsea-green);
  box-shadow: 0 0 0 0.2rem var(--ptsea-focus-ring);
}

.ptsea-empty {
  text-align: center;
  padding: 2.5rem 1.5rem;
  color: var(--ptsea-text-muted);
}

.ptsea-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.ptsea-content {
  padding: 1.25rem 1.35rem 2.5rem;
  max-width: 1200px;
  width: 100%;
  margin: 0 auto;
}
@media (min-width: 992px) {
  .ptsea-content { padding: 1.5rem 1.75rem 3rem; }
}

/* Focus visibility (WCAG) */
:focus-visible {
  outline: 2px solid var(--ptsea-green);
  outline-offset: 2px;
}
.btn:focus-visible, .nav-link:focus-visible {
  outline-offset: 3px;
}

/* ── Icons ─────────────────────────────────────────────────────── */
.ptsea-icon {
  display: block;
  width: 1.15rem;
  height: 1.15rem;
  flex-shrink: 0;
}
.ptsea-nav__icon {
  display: inline-flex;
  width: 1.25rem;
  height: 1.25rem;
  align-items: center;
  justify-content: center;
  color: inherit;
  opacity: 0.9;
}
.ptsea-nav__link {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  min-height: 44px;
  padding: 0.55rem 0.85rem;
  border-radius: var(--ptsea-radius-sm, 0.5rem);
  color: var(--ptsea-sidebar-text);
  text-decoration: none;
  font-weight: 550;
  font-size: 0.875rem;
  transition: background 0.12s ease, color 0.12s ease;
}
.ptsea-nav__link:hover {
  background: rgba(255,255,255,0.06);
  color: #fff;
  text-decoration: none;
}
.ptsea-nav__link.is-active,
.ptsea-nav__link.active {
  background: rgba(45, 212, 160, 0.12);
  color: var(--ptsea-sidebar-active);
  font-weight: 700;
}
.ptsea-nav__label {
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(200, 217, 208, 0.55);
  padding: 1rem 0.85rem 0.35rem;
}

.ptsea-skip-link {
  position: absolute;
  left: -999px;
  top: 0;
  background: var(--ptsea-green);
  color: #fff;
  padding: 0.5rem 1rem;
  z-index: 10000;
  border-radius: 0 0 0.35rem 0;
  font-weight: 700;
}
.ptsea-skip-link:focus { left: 0; outline: 2px solid #fff; outline-offset: 2px; }

.ptsea-empty-state {
  text-align: center;
  padding: 2.75rem 1.5rem;
  color: var(--ptsea-text-muted);
}
.ptsea-empty-state__visual {
  color: var(--ptsea-green);
  margin-bottom: 1rem;
  display: flex;
  justify-content: center;
}
.ptsea-empty-state__title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--ptsea-text);
  margin: 0 0 0.35rem;
}
.ptsea-empty-state__text {
  margin: 0 auto;
  max-width: 22rem;
  font-size: 0.9rem;
  line-height: 1.5;
}

@keyframes ptsea-shimmer {
  0% { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}
.ptsea-skeleton {
  display: block;
  height: 0.85rem;
  border-radius: 0.35rem;
  background: linear-gradient(
    90deg,
    var(--ptsea-surface-2) 0%,
    color-mix(in srgb, var(--ptsea-border) 80%, var(--ptsea-surface)) 40%,
    var(--ptsea-surface-2) 80%
  );
  background-size: 800px 100%;
  animation: ptsea-shimmer 1.4s ease-in-out infinite;
}
.ptsea-skeleton--lg { width: 55%; }
.ptsea-skeleton--sm { width: 25%; }
.ptsea-skeleton-row {
  display: grid;
  grid-template-columns: 2fr 1.2fr 0.8fr;
  gap: 1rem;
  padding: 0.95rem 1rem;
  border-bottom: 1px solid var(--ptsea-border);
}

.ptsea-mobile-nav {
  display: none;
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1040;
  background: var(--ptsea-surface);
  border-top: 1px solid var(--ptsea-border);
  padding: 0.35rem 0.25rem calc(0.35rem + env(safe-area-inset-bottom));
  box-shadow: 0 -4px 20px rgba(16, 24, 40, 0.08);
}
.ptsea-mobile-nav__item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.15rem;
  min-height: 48px;
  min-width: 44px;
  padding: 0.25rem;
  font-size: 0.65rem;
  font-weight: 650;
  color: var(--ptsea-text-muted);
  text-decoration: none;
  border-radius: var(--ptsea-radius-sm, 0.5rem);
}
.ptsea-mobile-nav__item .ptsea-icon { width: 1.25rem; height: 1.25rem; }
.ptsea-mobile-nav__item.is-active,
.ptsea-mobile-nav__item:hover {
  color: var(--ptsea-green);
  text-decoration: none;
}
.ptsea-mobile-nav__item:hover { background: var(--ptsea-green-soft); }

@media (max-width: 991.98px) {
  .ptsea-mobile-nav { display: flex; }
  .ptsea-content { padding-bottom: 5.5rem; }
}

.invalid-feedback, .errorlist {
  color: var(--ptsea-danger);
  font-size: 0.82rem;
  font-weight: 600;
  margin-top: 0.25rem;
}
.errorlist { list-style: none; padding: 0; margin: 0.25rem 0 0; }
.form-control.is-invalid, .form-select.is-invalid {
  border-color: var(--ptsea-danger);
}
.alert-error, .alert-danger {
  background: #fdecea;
  color: #8b1a1a;
  border-color: #f5c2c0;
}
[data-bs-theme="dark"] .alert-error,
[data-bs-theme="dark"] .alert-danger {
  background: #3b1515;
  color: #ffc9c9;
  border-color: #5c2020;
}
.btn { min-height: 40px; }
.btn-sm { min-height: 36px; }


/* ── Dark mode toggle ──────────────────────────────────────────── */
.ptsea-theme-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 40px;
  padding: 0.25rem 0.55rem 0.25rem 0.35rem;
  border: 1px solid var(--ptsea-border-strong);
  border-radius: 999px;
  background: var(--ptsea-surface);
  color: var(--ptsea-text);
  font-size: 0.78rem;
  font-weight: 650;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.ptsea-theme-toggle:hover {
  border-color: var(--ptsea-green);
  background: var(--ptsea-green-soft);
  color: var(--ptsea-green-deep);
}
.ptsea-theme-toggle:focus-visible {
  outline: 2px solid var(--ptsea-green);
  outline-offset: 2px;
}
.ptsea-theme-toggle__track {
  position: relative;
  width: 2.35rem;
  height: 1.25rem;
  border-radius: 999px;
  background: var(--ptsea-border-strong);
  transition: background 0.2s ease;
  flex-shrink: 0;
}
.ptsea-theme-toggle.is-dark .ptsea-theme-toggle__track {
  background: var(--ptsea-green);
}
.ptsea-theme-toggle__thumb {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 0.95rem;
  height: 0.95rem;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2);
  transition: transform 0.2s ease;
}
.ptsea-theme-toggle.is-dark .ptsea-theme-toggle__thumb {
  transform: translateX(1.05rem);
}
.ptsea-theme-toggle__label {
  padding-right: 0.25rem;
  user-select: none;
}


/* ── Theme switch: Light | System | Dark ───────────────────────── */
.ptsea-theme-switch {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  padding: 0.2rem;
  border: 1px solid var(--ptsea-border-strong);
  border-radius: 999px;
  background: var(--ptsea-surface-2);
}
.ptsea-theme-switch__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.3rem;
  min-height: 32px;
  min-width: 32px;
  padding: 0.2rem 0.55rem;
  border: none;
  border-radius: 999px;
  background: transparent;
  color: var(--ptsea-text-muted);
  font-size: 0.72rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.ptsea-theme-switch__btn:hover {
  color: var(--ptsea-text);
  background: color-mix(in srgb, var(--ptsea-surface) 80%, transparent);
}
.ptsea-theme-switch__btn.is-active {
  background: var(--ptsea-surface);
  color: var(--ptsea-green-deep);
  box-shadow: var(--ptsea-shadow);
}
[data-bs-theme="dark"] .ptsea-theme-switch__btn.is-active {
  color: var(--ptsea-green);
}
.ptsea-theme-switch__btn:focus-visible {
  outline: 2px solid var(--ptsea-green);
  outline-offset: 2px;
}


/* ——— Institutional polish pass ——— */
.btn-ptsea {
  --bs-btn-bg: #248454;
  --bs-btn-border-color: #248454;
  --bs-btn-hover-bg: #1a6b42;
  --bs-btn-hover-border-color: #1a6b42;
  --bs-btn-color: #fff;
  --bs-btn-hover-color: #fff;
  font-weight: 600;
  border-radius: 0.5rem;
  letter-spacing: 0.01em;
}
.btn-ptsea-outline {
  --bs-btn-color: #1a6b42;
  --bs-btn-border-color: #248454;
  --bs-btn-hover-bg: #248454;
  --bs-btn-hover-border-color: #248454;
  --bs-btn-hover-color: #fff;
  font-weight: 600;
  border-radius: 0.5rem;
}
.ptsea-page-header h1 {
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--ptsea-text-heading, #1c6842);
}
.ptsea-eyebrow {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ptsea-green, #248454);
  margin-bottom: 0.35rem;
}
.ptsea-card {
  background: var(--ptsea-surface, #fff);
  border: 1px solid var(--ptsea-border, #e5e9ef);
  border-radius: var(--ptsea-radius, 0.75rem);
  box-shadow: var(--ptsea-shadow, 0 1px 3px rgba(16,24,40,.06));
}
.ptsea-card__header {
  padding: 0.85rem 1.15rem;
  border-bottom: 1px solid var(--ptsea-border, #e5e9ef);
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}
.ptsea-card__body { padding: 1.15rem; }
.ptsea-stat {
  background: var(--ptsea-surface, #fff);
  border: 1px solid var(--ptsea-border, #e5e9ef);
  border-radius: var(--ptsea-radius, 0.75rem);
  padding: 1.1rem 1.2rem;
  height: 100%;
}
.ptsea-stat__label {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--ptsea-text-muted, #595c5f);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.ptsea-stat__value {
  font-size: 1.75rem;
  font-weight: 800;
  color: var(--ptsea-green-deep, #1c6842);
  line-height: 1.2;
  margin: 0.2rem 0;
}
.ptsea-stat__hint { font-size: 0.8rem; color: var(--ptsea-text-muted, #595c5f); }
.ptsea-table { width: 100%; font-size: 0.9rem; }
.ptsea-table th {
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--ptsea-text-muted, #595c5f);
  font-weight: 700;
  border-bottom: 1px solid var(--ptsea-border, #e5e9ef);
  padding: 0.65rem 1rem;
}
.ptsea-table td {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--ptsea-border, #e5e9ef);
  vertical-align: middle;
}
.ptsea-badge {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
}
.ptsea-badge--muted {
  background: var(--ptsea-green-soft, #E6F4EC);
  color: var(--ptsea-green-deep, #1c6842);
}


/* ==========================================================================
   PTSEA Motion System — institutional, purposeful, accessible
   ========================================================================== */

/* Duration / easing tokens */
:root {
  --ptsea-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ptsea-ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
  --ptsea-dur-1: 150ms;
  --ptsea-dur-2: 280ms;
  --ptsea-dur-3: 450ms;
  --ptsea-dur-4: 700ms;
}

/* ----- Keyframes ----- */
@keyframes ptsea-fade-up {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ptsea-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes ptsea-scale-in {
  from { opacity: 0; transform: scale(0.96); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes ptsea-slide-in-left {
  from { opacity: 0; transform: translateX(-16px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes ptsea-draw-line {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
@keyframes ptsea-pulse-soft {
  0%, 100% { box-shadow: 0 0 0 0 rgba(36, 132, 84, 0.35); }
  50%      { box-shadow: 0 0 0 8px rgba(36, 132, 84, 0); }
}
@keyframes ptsea-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
@keyframes ptsea-gradient-shift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes ptsea-spin {
  to { transform: rotate(360deg); }
}

/* ----- Utility classes ----- */
.ptsea-anim-fade-up {
  animation: ptsea-fade-up var(--ptsea-dur-3) var(--ptsea-ease-out) both;
}
.ptsea-anim-fade-in {
  animation: ptsea-fade-in var(--ptsea-dur-2) var(--ptsea-ease-soft) both;
}
.ptsea-anim-scale-in {
  animation: ptsea-scale-in var(--ptsea-dur-3) var(--ptsea-ease-out) both;
}
.ptsea-anim-slide-left {
  animation: ptsea-slide-in-left var(--ptsea-dur-3) var(--ptsea-ease-out) both;
}

/* Stagger delays (apply to children) */
.ptsea-stagger > *:nth-child(1) { animation-delay: 0ms; }
.ptsea-stagger > *:nth-child(2) { animation-delay: 60ms; }
.ptsea-stagger > *:nth-child(3) { animation-delay: 120ms; }
.ptsea-stagger > *:nth-child(4) { animation-delay: 180ms; }
.ptsea-stagger > *:nth-child(5) { animation-delay: 240ms; }
.ptsea-stagger > *:nth-child(6) { animation-delay: 300ms; }
.ptsea-stagger > * {
  animation: ptsea-fade-up var(--ptsea-dur-3) var(--ptsea-ease-out) both;
}

/* Hover elevation (cards, sponsors, winners) */
.ptsea-lift {
  transition:
    transform var(--ptsea-dur-2) var(--ptsea-ease-out),
    box-shadow var(--ptsea-dur-2) var(--ptsea-ease-soft),
    border-color var(--ptsea-dur-1) ease;
}
.ptsea-lift:hover {
  transform: translateY(-3px);
  box-shadow: var(--ptsea-shadow-md, 0 8px 24px rgba(16, 24, 40, 0.1));
}
.ptsea-lift:active {
  transform: translateY(-1px);
  transition-duration: var(--ptsea-dur-1);
}

/* Interactive controls */
.ptsea-press {
  transition: transform var(--ptsea-dur-1) ease, box-shadow var(--ptsea-dur-1) ease;
}
.ptsea-press:hover { transform: translateY(-1px); }
.ptsea-press:active { transform: translateY(1px) scale(0.98); }

/* Focus ring motion */
.ptsea-focus-ring:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--ptsea-focus-ring, rgba(36, 132, 84, 0.28));
  transition: box-shadow var(--ptsea-dur-1) ease;
}

/* Hero ambient gradient (subtle, not distracting) */
.ptsea-hero-glow {
  background: linear-gradient(120deg, #248454, #1a6b42, #C9A227, #248454);
  background-size: 300% 300%;
  animation: ptsea-gradient-shift 14s ease infinite;
}

/* Soft attention pulse (e.g. open nomination badge) */
.ptsea-pulse {
  animation: ptsea-pulse-soft 2.4s var(--ptsea-ease-soft) infinite;
}

/* Loading spinner */
.ptsea-spinner {
  width: 1.25rem;
  height: 1.25rem;
  border: 2px solid rgba(36, 132, 84, 0.2);
  border-top-color: #248454;
  border-radius: 50%;
  animation: ptsea-spin 0.7s linear infinite;
}

/* Underline grow on nav links */
.ptsea-link-underline {
  position: relative;
  text-decoration: none;
}
.ptsea-link-underline::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -2px;
  height: 2px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--ptsea-dur-2) var(--ptsea-ease-out);
}
.ptsea-link-underline:hover::after,
.ptsea-link-underline:focus-visible::after {
  transform: scaleX(1);
}

/* Scroll-driven reveal (progressive enhancement) */
@supports (animation-timeline: view()) {
  .ptsea-reveal-scroll {
    animation: ptsea-fade-up var(--ptsea-dur-4) var(--ptsea-ease-out) both;
    animation-timeline: view();
    animation-range: entry 0% cover 30%;
  }
}

/* ----- Reduced motion: strip decorative animation ----- */
@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;
  }
  .ptsea-lift:hover,
  .ptsea-press:hover,
  .ptsea-press:active {
    transform: none;
  }
  .ptsea-hero-glow {
    animation: none;
    background: #248454;
  }
}


/* ==========================================================================
   Scroll-driven animations (CSS Scroll-Driven Animations)
   Progressive enhancement — see also static/js/ptsea-scroll.js fallback
   ========================================================================== */

/* Shared reveal states (work with CSS timeline OR JS .is-inview) */
.ptsea-reveal {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity var(--ptsea-dur-3, 450ms) var(--ptsea-ease-out, ease),
    transform var(--ptsea-dur-3, 450ms) var(--ptsea-ease-out, ease);
  will-change: opacity, transform;
}
.ptsea-reveal.is-inview,
.ptsea-reveal.ptsea-reveal--visible {
  opacity: 1;
  transform: translateY(0);
}

.ptsea-reveal--left {
  opacity: 0;
  transform: translateX(-24px);
  transition:
    opacity var(--ptsea-dur-3, 450ms) var(--ptsea-ease-out, ease),
    transform var(--ptsea-dur-3, 450ms) var(--ptsea-ease-out, ease);
}
.ptsea-reveal--left.is-inview { opacity: 1; transform: translateX(0); }

.ptsea-reveal--scale {
  opacity: 0;
  transform: scale(0.94);
  transition:
    opacity var(--ptsea-dur-3, 450ms) var(--ptsea-ease-out, ease),
    transform var(--ptsea-dur-3, 450ms) var(--ptsea-ease-out, ease);
}
.ptsea-reveal--scale.is-inview { opacity: 1; transform: scale(1); }

/* Native scroll-driven (Chrome 115+, Edge 115+; Safari gradual) */
@supports (animation-timeline: view()) {
  .ptsea-reveal-scroll,
  .ptsea-reveal[data-scroll="view"] {
    opacity: 0;
    transform: translateY(20px);
    animation: ptsea-fade-up linear both;
    animation-timeline: view();
    animation-range: entry 5% cover 35%;
    transition: none; /* native timeline owns the motion */
  }

  .ptsea-reveal-scroll--slow {
    animation-range: entry 0% cover 50%;
  }

  /* Parallax-ish opacity on hero decorations */
  .ptsea-scroll-fade {
    animation: ptsea-fade-in linear both;
    animation-timeline: view();
    animation-range: entry 0% exit 100%;
  }

  /* Progress line that fills as section enters */
  .ptsea-scroll-progress {
    transform-origin: left center;
    transform: scaleX(0);
    animation: ptsea-draw-line linear both;
    animation-timeline: view();
    animation-range: entry 0% cover 40%;
  }

  /* Sticky section opacity scrub (optional) */
  .ptsea-scroll-scrub-opacity {
    animation: ptsea-fade-in linear both;
    animation-timeline: view(nearest);
    animation-range: cover 10% cover 90%;
  }
}

/* Named timeline example for horizontal scroll areas */
@supports (animation-timeline: scroll()) {
  .ptsea-scroll-track {
    scroll-timeline-name: --ptsea-track;
    scroll-timeline-axis: block;
  }
  .ptsea-scroll-track .ptsea-scroll-indicator {
    animation: ptsea-draw-line linear both;
    animation-timeline: --ptsea-track;
    animation-range: 0% 100%;
    transform-origin: left center;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ptsea-reveal,
  .ptsea-reveal--left,
  .ptsea-reveal--scale,
  .ptsea-reveal-scroll,
  .ptsea-reveal[data-scroll="view"],
  .ptsea-scroll-fade,
  .ptsea-scroll-progress {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}


/* ==========================================================================
   Scroll-linked parallax (subtle, institutional)
   Prefer transform + will-change; honour prefers-reduced-motion
   ========================================================================== */

.ptsea-parallax-root {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

/* Decorative layers sit behind content */
.ptsea-parallax-layer {
  position: absolute;
  inset: -12% -8%;
  pointer-events: none;
  z-index: 0;
  will-change: transform;
  background:
    radial-gradient(ellipse 55% 45% at 85% 15%, rgba(201, 162, 39, 0.14), transparent 60%),
    radial-gradient(ellipse 50% 40% at 10% 90%, rgba(36, 132, 84, 0.12), transparent 55%);
}

.ptsea-parallax-layer--deep {
  inset: -18% -12%;
  opacity: 0.85;
  background:
    radial-gradient(ellipse 40% 35% at 70% 30%, rgba(36, 132, 84, 0.1), transparent 65%),
    radial-gradient(ellipse 35% 30% at 20% 20%, rgba(201, 162, 39, 0.08), transparent 60%);
}

.ptsea-parallax-content {
  position: relative;
  z-index: 1;
}

/* CSS-only approximate parallax via view timeline (where supported) */
@supports (animation-timeline: view()) {
  @keyframes ptsea-parallax-y {
    from { transform: translate3d(0, -6%, 0); }
    to   { transform: translate3d(0, 6%, 0); }
  }
  @keyframes ptsea-parallax-y-slow {
    from { transform: translate3d(0, -3%, 0); }
    to   { transform: translate3d(0, 3%, 0); }
  }
  @keyframes ptsea-parallax-fade {
    from { opacity: 0.55; }
    to   { opacity: 1; }
  }

  .ptsea-parallax-layer[data-speed="0.25"] {
    animation: ptsea-parallax-y linear both;
    animation-timeline: view();
    animation-range: entry 0% exit 100%;
  }
  .ptsea-parallax-layer[data-speed="0.12"] {
    animation: ptsea-parallax-y-slow linear both;
    animation-timeline: view();
    animation-range: entry 0% exit 100%;
  }
  .ptsea-parallax-content[data-parallax-fade] {
    animation: ptsea-parallax-fade linear both;
    animation-timeline: view();
    animation-range: entry 0% cover 40%;
  }
}

/* JS-driven fine control sets --ptsea-parallax-y on layers */
.ptsea-parallax-layer.is-js-parallax {
  transform: translate3d(0, var(--ptsea-parallax-y, 0px), 0);
  transition: none;
}

@media (prefers-reduced-motion: reduce) {
  .ptsea-parallax-layer,
  .ptsea-parallax-layer.is-js-parallax,
  .ptsea-parallax-content[data-parallax-fade] {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}


/* ==========================================================================
   PTSEA scroll-linked CSS animations (primary)
   Uses CSS Scroll-Driven Animations when available.
   Pair with static/js/ptsea-view-timeline-fallback.js for other browsers.
   ========================================================================== */

/* Base state for JS fallback path */
.ptsea-reveal,
.ptsea-reveal--left,
.ptsea-reveal--scale {
  opacity: 0;
  will-change: opacity, transform;
}
.ptsea-reveal { transform: translateY(18px); }
.ptsea-reveal--left { transform: translateX(-24px); }
.ptsea-reveal--scale { transform: scale(0.94); }
.ptsea-reveal.is-inview,
.ptsea-reveal--left.is-inview,
.ptsea-reveal--scale.is-inview,
.ptsea-reveal.ptsea-reveal--visible {
  opacity: 1;
  transform: none;
  transition:
    opacity 0.45s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

@supports (animation-timeline: view()) {
  /* Entry reveal linked to viewport intersection */
  .ptsea-reveal-scroll,
  [data-scroll="view"] {
    opacity: 0;
    transform: translateY(20px);
    animation-name: ptsea-fade-up;
    animation-timing-function: linear;
    animation-fill-mode: both;
    animation-timeline: view();
    animation-range: entry 5% cover 35%;
    transition: none;
  }

  .ptsea-reveal-scroll--late {
    animation-range: entry 15% cover 45%;
  }

  .ptsea-reveal-scroll--wide {
    animation-range: entry 0% cover 55%;
  }

  /* Horizontal entrance */
  @keyframes ptsea-scroll-left {
    from { opacity: 0; transform: translateX(-28px); }
    to   { opacity: 1; transform: translateX(0); }
  }
  .ptsea-reveal-scroll--left {
    opacity: 0;
    animation-name: ptsea-scroll-left;
    animation-timing-function: linear;
    animation-fill-mode: both;
    animation-timeline: view();
    animation-range: entry 5% cover 35%;
  }

  /* Scale entrance */
  @keyframes ptsea-scroll-scale {
    from { opacity: 0; transform: scale(0.92); }
    to   { opacity: 1; transform: scale(1); }
  }
  .ptsea-reveal-scroll--scale {
    opacity: 0;
    animation-name: ptsea-scroll-scale;
    animation-timing-function: linear;
    animation-fill-mode: both;
    animation-timeline: view();
    animation-range: entry 5% cover 35%;
  }

  /* Section rule / progress bar fills as section enters */
  .ptsea-scroll-progress {
    display: block;
    height: 2px;
    width: 100%;
    max-width: 8rem;
    background: linear-gradient(90deg, #248454, #C9A227);
    transform: scaleX(0);
    transform-origin: left center;
    animation-name: ptsea-draw-line;
    animation-timing-function: linear;
    animation-fill-mode: both;
    animation-timeline: view();
    animation-range: entry 0% cover 40%;
  }

  /* Soft opacity scrub across element lifetime in view */
  .ptsea-scroll-fade {
    animation-name: ptsea-fade-in;
    animation-timing-function: linear;
    animation-fill-mode: both;
    animation-timeline: view();
    animation-range: entry 0% exit 100%;
  }

  /* Staggered children with view timeline */
  .ptsea-scroll-stagger > * {
    opacity: 0;
    transform: translateY(16px);
    animation-name: ptsea-fade-up;
    animation-timing-function: linear;
    animation-fill-mode: both;
    animation-timeline: view();
    animation-range: entry 5% cover 40%;
  }
  .ptsea-scroll-stagger > *:nth-child(1) { animation-range: entry 5% cover 35%; }
  .ptsea-scroll-stagger > *:nth-child(2) { animation-range: entry 10% cover 40%; }
  .ptsea-scroll-stagger > *:nth-child(3) { animation-range: entry 15% cover 45%; }
  .ptsea-scroll-stagger > *:nth-child(4) { animation-range: entry 20% cover 50%; }
  .ptsea-scroll-stagger > *:nth-child(5) { animation-range: entry 25% cover 55%; }
  .ptsea-scroll-stagger > *:nth-child(6) { animation-range: entry 30% cover 60%; }
}

@media (prefers-reduced-motion: reduce) {
  .ptsea-reveal,
  .ptsea-reveal--left,
  .ptsea-reveal--scale,
  .ptsea-reveal-scroll,
  .ptsea-reveal-scroll--left,
  .ptsea-reveal-scroll--scale,
  .ptsea-reveal-scroll--late,
  .ptsea-reveal-scroll--wide,
  [data-scroll="view"],
  .ptsea-scroll-progress,
  .ptsea-scroll-fade,
  .ptsea-scroll-stagger > * {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
  }
}


/* ---- Dashboard institutional spacing ---- */
.ptsea-content {
  padding: 1.75rem 1.75rem 3rem !important;
  max-width: 1400px;
}
.ptsea-page-header {
  margin-bottom: 1.75rem !important;
  padding: 0.25rem 0 1rem;
  border-bottom: 1px solid rgba(36, 132, 84, 0.12);
  gap: 1rem;
}
.ptsea-page-header h1 {
  margin: 0.15rem 0 0.35rem !important;
  font-size: 1.65rem !important;
  line-height: 1.25 !important;
  letter-spacing: -0.02em;
  color: var(--ptsea-ink, #0f2418);
}
.ptsea-page-header p {
  margin: 0 !important;
  max-width: 42rem;
  line-height: 1.5;
}
.ptsea-eyebrow {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #248454;
  margin-bottom: 0.25rem;
}
.ptsea-stat {
  background: #fff;
  border: 1px solid rgba(36, 132, 84, 0.12);
  border-radius: 12px;
  padding: 1.15rem 1.25rem !important;
  height: 100%;
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
}
.ptsea-stat__label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: #5a6b60;
  margin-bottom: 0.35rem;
  line-height: 1.3;
}
.ptsea-stat__value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.15;
  color: #0f2418;
  margin-bottom: 0.25rem;
}
.ptsea-stat__hint {
  font-size: 0.8rem;
  color: #6b7c72;
}
.ptsea-card {
  margin-bottom: 1.25rem;
}
.ptsea-card__body {
  padding: 1.25rem 1.35rem !important;
}
.ptsea-card__header {
  padding: 0.9rem 1.35rem !important;
  border-bottom: 1px solid rgba(16, 24, 40, 0.06);
}
@media (max-width: 767.98px) {
  .ptsea-content { padding: 1.15rem 1rem 2.5rem !important; }
  .ptsea-page-header h1 { font-size: 1.35rem !important; }
  .ptsea-stat { padding: 1rem !important; }
}


/* ============================================================
   Canonical dashboard / form / landing (no shell conflicts)
   ============================================================ */

.ptsea-content {
  padding: 1.5rem 1.35rem 2.5rem;
  flex: 1;
  width: 100%;
  max-width: 1200px;
}
@media (min-width: 992px) {
  .ptsea-content {
    padding: 1.75rem 2rem 3rem;
  }
}

.ptsea-dashboard {
  display: grid;
  gap: 1.25rem;
  color: #1d1d1f;
}

.dash-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1.25rem 1.5rem;
  align-items: center;
  padding: clamp(1.35rem, 3vw, 2rem);
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 22px;
  background: linear-gradient(145deg, #fbfbfd, #f2f2f7);
  color: #1d1d1f;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
}
@media (max-width: 767.98px) {
  .dash-hero { grid-template-columns: minmax(0, 1fr); }
}
.dash-hero__eyebrow {
  display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem;
  align-items: center; margin-bottom: 0.5rem;
}
.dash-hero__pill {
  display: inline-flex; padding: 0.2rem 0.65rem; border-radius: 999px;
  background: rgba(0, 0, 0, 0.055); border: 1px solid rgba(0, 0, 0, 0.07);
  font-size: 0.7rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
}
.dash-hero__year { font-size: 0.8rem; color: #6e6e73; }
.dash-hero__title {
  font-size: clamp(1.6rem, 2.5vw, 2rem); font-weight: 700;
  letter-spacing: -0.035em; margin: 0; color: #1d1d1f; line-height: 1.15;
}
.dash-hero__sub {
  margin: 0; max-width: 36rem; font-size: 0.92rem;
  line-height: 1.5; color: #6e6e73;
}
.dash-hero__actions { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: flex-end; }
.dash-hero .btn-ptsea {
  background: #0071e3 !important; border-color: #0071e3 !important;
  color: #fff !important; font-weight: 600; border-radius: 999px !important;
  padding-inline: 1rem;
}
.dash-hero .btn-ptsea-outline {
  background: rgba(255, 255, 255, 0.72) !important;
  border: 1px solid rgba(0, 0, 0, 0.12) !important;
  color: #1d1d1f !important; font-weight: 600; border-radius: 999px !important;
  padding-inline: 1rem;
}

.dash-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
  gap: 0.9rem;
}
.dash-kpi {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.85rem;
  padding: 1.15rem 1.2rem;
  border-radius: 18px;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.07);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.035);
}
.dash-kpi__icon {
  width: 44px; height: 44px; border-radius: 12px;
  display: grid; place-items: center;
}
.dash-kpi__icon { background: #f5f5f7; color: #424245; }
.dash-kpi__label {
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; color: #6e6e73;
}
.dash-kpi__value {
  font-size: 1.65rem; font-weight: 800; letter-spacing: -0.03em;
  line-height: 1.1; color: #1d1d1f;
}
.dash-kpi__hint { font-size: 0.75rem; color: #86868b; }

.dash-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(240px, 320px);
  gap: 1.25rem;
  align-items: start;
}
@media (max-width: 991.98px) {
  .dash-body { grid-template-columns: minmax(0, 1fr); }
}
.dash-body__aside { display: grid; gap: 1rem; }

.dash-card {
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.07);
  border-radius: 18px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.035);
  overflow: hidden;
}
.dash-card__head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem;
  padding: 1.15rem 1.25rem 0.85rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.07);
}
.dash-card__title { font-size: 1.05rem; font-weight: 700; letter-spacing: -0.02em; margin: 0; }
.dash-card__sub { margin: 0.15rem 0 0; font-size: 0.8rem; color: #6e6e73; }
.dash-card__body { padding: 1.15rem 1.25rem 1.25rem; }
.dash-table { width: 100%; margin: 0; font-size: 0.9rem; border-collapse: collapse; }
.dash-table th {
  text-align: left; font-size: 0.7rem; text-transform: uppercase;
  letter-spacing: 0.05em; color: #6e6e73;
  font-weight: 700; padding: 0.75rem 1.25rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  background: #fafafa;
}
.dash-table td {
  padding: 0.85rem 1.25rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
}
.dash-mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 600; font-size: 0.85rem;
}
.dash-chip {
  display: inline-block; padding: 0.15rem 0.5rem; border-radius: 6px;
  background: #f2f2f7; color: #424245;
  font-size: 0.75rem; font-weight: 700;
}
.dash-actions { display: grid; gap: 0.35rem; }
.dash-action {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: 0.65rem; align-items: center;
  padding: 0.7rem 0.85rem; border-radius: 10px;
  text-decoration: none; color: var(--ptsea-ink, #0f2418);
  font-weight: 600; font-size: 0.9rem; border: 1px solid transparent;
}
.dash-action:hover {
  background: #f5f5f7;
  border-color: rgba(0, 0, 0, 0.08);
  color: #1d1d1f;
}
.dash-action__ic {
  width: 28px; height: 28px; border-radius: 8px;
  display: grid; place-items: center;
  background: #f2f2f7; color: #424245;
}
.dash-empty {
  text-align: center; padding: 2.5rem 1.5rem;
  display: grid; gap: 0.5rem; justify-items: center;
}
.dash-empty__icon {
  width: 64px; height: 64px; border-radius: 16px;
  display: grid; place-items: center;
  background: #f2f2f7; color: #6e6e73;
}
.dash-card--seal {
  background: linear-gradient(160deg, #0f3d28 0%, #1a6b42 100%);
  border: none; color: #fff;
}
.dash-seal {
  display: grid; grid-template-columns: auto minmax(0, 1fr);
  gap: 0.85rem; align-items: center; margin-bottom: 0.85rem;
}
.dash-seal__mark {
  width: 48px; height: 48px; border-radius: 12px;
  background: linear-gradient(145deg, #c9a227, #a68520);
  color: #1a1200; font-weight: 800; font-size: 0.85rem;
  display: grid; place-items: center;
  box-shadow: 0 0 0 3px rgba(201,162,39,.35);
}
.dash-seal__title { font-weight: 800; font-size: 1.05rem; }
.dash-seal__sub { font-size: 0.78rem; opacity: 0.8; }
.dash-seal__note { font-size: 0.85rem; line-height: 1.5; opacity: 0.88; margin: 0; }

.dash-panels { display: grid; gap: 0.75rem; }
.dash-panel {
  display: grid; grid-template-columns: 5px minmax(0, 1fr);
  border-radius: 14px; overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.07);
  background: #fff;
}
.dash-panel__bar { background: #0071e3; }
.dash-panel__body { padding: 1rem 1.15rem; }
.dash-panel__title { font-size: 0.95rem; font-weight: 700; margin: 0 0 0.25rem; }
.dash-panel__text { margin: 0; font-size: 0.88rem; color: #6e6e73; }

@media (prefers-color-scheme: dark) {
  [data-bs-theme="dark"] .ptsea-dashboard { color: #f5f5f7; }
  [data-bs-theme="dark"] .dash-hero { background: linear-gradient(145deg, #2c2c2e, #1c1c1e); border-color: rgba(255,255,255,.1); color: #f5f5f7; }
  [data-bs-theme="dark"] .dash-hero__title { color: #f5f5f7; }
  [data-bs-theme="dark"] .dash-hero__year, [data-bs-theme="dark"] .dash-hero__sub { color: #a1a1a6; }
  [data-bs-theme="dark"] .dash-hero__pill { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.12); }
  [data-bs-theme="dark"] .dash-hero .btn-ptsea-outline { background: rgba(255,255,255,.1) !important; border-color: rgba(255,255,255,.18) !important; color: #f5f5f7 !important; }
  [data-bs-theme="dark"] .dash-kpi, [data-bs-theme="dark"] .dash-card, [data-bs-theme="dark"] .dash-panel { background: #1c1c1e; border-color: rgba(255,255,255,.1); }
  [data-bs-theme="dark"] .dash-kpi__icon, [data-bs-theme="dark"] .dash-empty__icon, [data-bs-theme="dark"] .dash-chip { background: #2c2c2e; color: #d1d1d6; }
  [data-bs-theme="dark"] .dash-kpi__value { color: #f5f5f7; }
  [data-bs-theme="dark"] .dash-kpi__label, [data-bs-theme="dark"] .dash-kpi__hint, [data-bs-theme="dark"] .dash-card__sub, [data-bs-theme="dark"] .dash-panel__text, [data-bs-theme="dark"] .dash-table th { color: #a1a1a6; }
  [data-bs-theme="dark"] .dash-card__head, [data-bs-theme="dark"] .dash-table th, [data-bs-theme="dark"] .dash-table td { border-color: rgba(255,255,255,.08); }
  [data-bs-theme="dark"] .dash-table th { background: #2c2c2e; }
}

.form-page-header,
.ptsea-page-header {
  margin-bottom: 1.5rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--ptsea-border, #e5ebe7);
}
.form-page-header h1,
.ptsea-page-header h1 {
  font-size: clamp(1.35rem, 2vw, 1.65rem);
  font-weight: 800; letter-spacing: -0.02em;
  margin: 0.15rem 0 0.35rem;
}
.form-card {
  border-radius: 16px !important;
  border: 1px solid var(--ptsea-border, #e5ebe7) !important;
  box-shadow: 0 4px 20px rgba(15, 36, 24, 0.05) !important;
}
.form-card .ptsea-card__body {
  padding: 1.5rem 1.5rem 1.75rem !important;
}

.lp-infographic {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr));
  gap: 1rem;
}
.lp-info-card {
  display: grid; justify-items: center; text-align: center;
  padding: 1.5rem 1rem; border-radius: 16px;
  background: var(--ptsea-surface, #fff);
  border: 1px solid var(--ptsea-border, #e5ebe7);
  box-shadow: 0 6px 24px rgba(15, 36, 24, 0.05);
}
.lp-info-card__num {
  font-size: 2rem; font-weight: 800; color: #248454; letter-spacing: -0.03em;
}
.lp-info-card__label {
  font-size: 0.8rem; font-weight: 600;
  color: var(--ptsea-text-muted, #5a6b60); margin-top: 0.35rem;
}
.lp-info-card__icon {
  width: 48px; height: 48px; margin-bottom: 0.75rem; border-radius: 14px;
  display: grid; place-items: center;
  background: rgba(36,132,84,.1); color: #248454;
}

.dash-body--single {
  grid-template-columns: minmax(0, 1fr) !important;
}
.ptsea-shell--no-footer .ptsea-footer { display: none !important; }

.ptsea-sidebar__logo {
  width: 36px;
  height: 36px;
  object-fit: contain;
  border-radius: 8px;
  flex-shrink: 0;
  background: rgba(255,255,255,0.08);
}

/* Neutral application shell — intentionally separate from public PTSEA branding. */
.ptsea-sidebar {
  background: #f5f5f7;
  color: #424245;
  border-right: 1px solid rgba(0, 0, 0, 0.08);
}
.ptsea-sidebar__brand {
  box-sizing: border-box;
  min-height: var(--ptsea-shell-header-height);
  padding: .85rem 1.15rem;
  border-bottom-color: rgba(0, 0, 0, 0.08);
}
.ptsea-sidebar__title { color: #1d1d1f; letter-spacing: -0.02em; }
.ptsea-sidebar__sub { color: #6e6e73; opacity: 1; }
.ptsea-sidebar__logo {
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.ptsea-nav { padding: 0.9rem 0.65rem 1.25rem; }
.ptsea-nav__label {
  color: #86868b;
  opacity: 1;
  padding: 1.1rem 0.85rem 0.35rem;
}
.ptsea-nav__link {
  color: #424245;
  border-radius: 10px;
}
.ptsea-nav__link:hover {
  background: rgba(0, 0, 0, 0.045);
  color: #1d1d1f;
}
.ptsea-nav__link.is-active,
.ptsea-nav__link.active {
  background: #e8e8ed;
  color: #1d1d1f;
  font-weight: 650;
}
.ptsea-topbar {
  box-sizing: border-box;
  min-height: var(--ptsea-shell-header-height);
  padding: .75rem 1.5rem;
  background: rgba(255, 255, 255, 0.78);
  border-bottom-color: rgba(0, 0, 0, 0.08);
  backdrop-filter: saturate(180%) blur(18px);
}

[data-bs-theme="dark"] .ptsea-sidebar {
  background: #1c1c1e;
  color: #d1d1d6;
  border-right-color: rgba(255, 255, 255, 0.1);
}
[data-bs-theme="dark"] .ptsea-sidebar__brand { border-bottom-color: rgba(255, 255, 255, 0.1); }
[data-bs-theme="dark"] .ptsea-sidebar__title { color: #f5f5f7; }
[data-bs-theme="dark"] .ptsea-sidebar__sub, [data-bs-theme="dark"] .ptsea-nav__label { color: #a1a1a6; }
[data-bs-theme="dark"] .ptsea-sidebar__logo { background: #2c2c2e; box-shadow: none; }
[data-bs-theme="dark"] .ptsea-nav__link { color: #d1d1d6; }
[data-bs-theme="dark"] .ptsea-nav__link:hover { background: rgba(255, 255, 255, 0.08); color: #fff; }
[data-bs-theme="dark"] .ptsea-nav__link.is-active,
[data-bs-theme="dark"] .ptsea-nav__link.active { background: #3a3a3c; color: #fff; }
[data-bs-theme="dark"] .ptsea-topbar { background: rgba(28, 28, 30, 0.78); border-bottom-color: rgba(255, 255, 255, 0.1); }

@media (min-width: 992px) {
  .ptsea-nav { padding-top: 1.25rem; }
  .ptsea-content { padding-top: 1.5rem; }
}

/* =============================================================================
   Executive dashboard workspace
   ============================================================================= */
.dashboard-workspace { gap: 1.5rem; max-width: 1160px; }
.workspace-hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  min-height: 210px;
  padding: clamp(1.75rem, 4vw, 3rem);
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, .07);
  border-radius: 24px;
  background: #fff;
  box-shadow: 0 12px 34px rgba(0, 0, 0, .045);
}
.workspace-hero::before, .workspace-hero::after { content: ""; position: absolute; border-radius: 50%; pointer-events: none; }
.workspace-hero::before { width: 320px; height: 320px; right: -155px; top: -210px; background: #f1f1f4; }
.workspace-hero::after { width: 180px; height: 180px; right: 105px; bottom: -145px; background: #f7f7f8; }
.workspace-hero__copy, .workspace-hero__actions { position: relative; z-index: 1; }
.workspace-hero__copy { max-width: 620px; }
.workspace-hero__meta { display: flex; align-items: center; gap: .5rem; margin-bottom: .9rem; color: #6e6e73; font-size: .78rem; font-weight: 650; letter-spacing: .015em; }
.workspace-hero__dot { width: 7px; height: 7px; border-radius: 50%; background: #1d1d1f; }
.workspace-hero__separator { color: #c7c7cc; }
.workspace-hero h1 { margin: 0; color: #1d1d1f; font-size: clamp(2rem, 4vw, 2.75rem); font-weight: 720; letter-spacing: -.05em; line-height: 1.05; }
.workspace-hero p { margin: .85rem 0 0; color: #6e6e73; font-size: 1rem; line-height: 1.55; }
.workspace-hero__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .65rem; }
.workspace-button { display: inline-flex; align-items: center; gap: .55rem; min-height: 42px; padding: .625rem 1rem; border-radius: 999px; font-size: .86rem; font-weight: 650; text-decoration: none; transition: transform .18s ease, background .18s ease, box-shadow .18s ease; }
.workspace-button svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.workspace-button:hover { text-decoration: none; transform: translateY(-1px); }
.workspace-button--primary { color: #fff; background: #1d1d1f; box-shadow: 0 4px 12px rgba(0,0,0,.14); }
.workspace-button--primary:hover { color: #fff; background: #353538; }
.workspace-button--secondary { color: #1d1d1f; background: rgba(255,255,255,.82); border: 1px solid rgba(0,0,0,.12); }
.workspace-button--secondary:hover { color: #1d1d1f; background: #f5f5f7; }

.workspace-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.workspace-metrics--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 52rem; }
.workspace-metrics--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.workspace-metric { min-height: 150px; padding: 1.1rem 1.2rem; border: 1px solid rgba(0,0,0,.07); border-radius: 18px; background: #fff; box-shadow: 0 3px 14px rgba(0,0,0,.025); }
.workspace-metric__top { display: flex; align-items: center; justify-content: space-between; gap: .5rem; color: #6e6e73; font-size: .76rem; font-weight: 700; letter-spacing: .02em; text-transform: uppercase; }
.workspace-metric__icon { display: grid; width: 31px; height: 31px; place-items: center; border-radius: 9px; color: #515154; background: #f5f5f7; }
.workspace-metric__icon svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.55; stroke-linecap: round; stroke-linejoin: round; }
.workspace-metric strong { display: block; margin-top: .9rem; color: #1d1d1f; font-size: 2rem; font-weight: 720; letter-spacing: -.05em; line-height: 1; }
.workspace-metric p { margin: .48rem 0 0; color: #86868b; font-size: .79rem; }

.workspace-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(260px, 330px); align-items: start; gap: 1.25rem; }
.workspace-grid--single { grid-template-columns: minmax(0, 1fr); }
.workspace-sidebar { display: grid; gap: 1.25rem; }
.workspace-card { overflow: hidden; border: 1px solid rgba(0,0,0,.07); border-radius: 20px; background: #fff; box-shadow: 0 4px 18px rgba(0,0,0,.03); }
.workspace-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1.4rem 1.45rem 1.2rem; border-bottom: 1px solid rgba(0,0,0,.065); }
.workspace-card__compact-head { padding: 1.25rem 1.25rem .8rem; }
.workspace-card__eyebrow { margin: 0 0 .35rem; color: #86868b; font-size: .66rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }
.workspace-card h2 { margin: 0; color: #1d1d1f; font-size: 1.1rem; font-weight: 700; letter-spacing: -.025em; }
.workspace-card__head p:not(.workspace-card__eyebrow) { margin: .3rem 0 0; color: #6e6e73; font-size: .84rem; }
.workspace-text-link { flex: 0 0 auto; margin-top: .25rem; color: #0071e3; font-size: .84rem; font-weight: 650; text-decoration: none; }
.workspace-text-link:hover { color: #0071e3; text-decoration: none; }
.workspace-text-link span { padding-left: .15rem; }
.workspace-table { width: 100%; border-collapse: collapse; color: #424245; font-size: .86rem; }
.workspace-table th { padding: .8rem 1.45rem; color: #86868b; background: #fafafa; border-bottom: 1px solid rgba(0,0,0,.06); font-size: .67rem; font-weight: 750; letter-spacing: .065em; text-align: left; text-transform: uppercase; }
.workspace-table td { padding: 1rem 1.45rem; border-bottom: 1px solid rgba(0,0,0,.055); white-space: nowrap; }
.workspace-table tbody tr:last-child td { border-bottom: 0; }
.workspace-table tbody tr { transition: background .15s ease; }
.workspace-table tbody tr:hover { background: #fafafa; }
.workspace-table__number { color: #1d1d1f; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .8rem; font-weight: 650; }
.workspace-category, .workspace-status { display: inline-flex; align-items: center; min-height: 25px; padding: .18rem .55rem; border-radius: 999px; color: #515154; background: #f2f2f7; font-size: .73rem; font-weight: 650; }
.workspace-status { background: #f7f7f8; border: 1px solid rgba(0,0,0,.06); }
.workspace-empty { display: grid; justify-items: center; padding: 4rem 1.5rem; text-align: center; }
.workspace-empty__icon { display: grid; width: 54px; height: 54px; place-items: center; border-radius: 16px; color: #6e6e73; background: #f5f5f7; }
.workspace-empty__icon svg { width: 26px; height: 26px; fill: none; stroke: currentColor; stroke-width: 1.45; stroke-linejoin: round; }
.workspace-empty h3 { margin: 1rem 0 .25rem; color: #1d1d1f; font-size: 1rem; font-weight: 700; }.workspace-empty p { margin: 0; color: #86868b; font-size: .85rem; }
.workspace-notices__list { display: grid; gap: .1rem; padding: .2rem .65rem .8rem; }.workspace-notice { display: grid; grid-template-columns: 8px minmax(0,1fr); gap: .75rem; padding: .85rem .6rem; }.workspace-notice__mark { width: 7px; height: 7px; margin-top: .42rem; border-radius: 50%; background: #86868b; }.workspace-notice h3 { margin: 0; color: #343437; font-size: .86rem; font-weight: 680; }.workspace-notice p { margin: .25rem 0 0; color: #6e6e73; font-size: .78rem; line-height: 1.5; }
.workspace-actions nav { padding: .1rem .75rem .8rem; }.workspace-actions a { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .8rem .55rem; color: #424245; border-bottom: 1px solid rgba(0,0,0,.055); font-size: .85rem; font-weight: 600; text-decoration: none; }.workspace-actions a:last-child { border-bottom: 0; }.workspace-actions a:hover { color: #0071e3; text-decoration: none; }.workspace-actions a span:last-child { color: #86868b; }

@media (max-width: 991.98px) { .workspace-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }.workspace-grid { grid-template-columns: minmax(0,1fr); }.workspace-sidebar { grid-template-columns: repeat(2, minmax(0, 1fr)); }.workspace-hero { min-height: 0; } }
@media (max-width: 640px) { .dashboard-workspace { gap: 1rem; }.workspace-hero { display: grid; gap: 1.4rem; padding: 1.5rem; border-radius: 20px; }.workspace-hero__actions { justify-content: flex-start; }.workspace-hero h1 { font-size: 2rem; }.workspace-hero::after { display: none; }.workspace-metrics, .workspace-sidebar { grid-template-columns: minmax(0,1fr); }.workspace-metric { min-height: 132px; }.workspace-card { border-radius: 18px; }.workspace-card__head { padding: 1.2rem; }.workspace-table th, .workspace-table td { padding-left: 1.2rem; padding-right: 1.2rem; } }
[data-bs-theme="dark"] .workspace-hero, [data-bs-theme="dark"] .workspace-metric, [data-bs-theme="dark"] .workspace-card { background: #1c1c1e; border-color: rgba(255,255,255,.1); box-shadow: none; }[data-bs-theme="dark"] .workspace-hero::before { background: #2c2c2e; }[data-bs-theme="dark"] .workspace-hero::after { background: #252527; }[data-bs-theme="dark"] .workspace-hero h1, [data-bs-theme="dark"] .workspace-metric strong, [data-bs-theme="dark"] .workspace-card h2, [data-bs-theme="dark"] .workspace-empty h3, [data-bs-theme="dark"] .workspace-table__number { color: #f5f5f7; }[data-bs-theme="dark"] .workspace-hero__meta, [data-bs-theme="dark"] .workspace-hero p, [data-bs-theme="dark"] .workspace-metric__top, [data-bs-theme="dark"] .workspace-card__head p:not(.workspace-card__eyebrow), [data-bs-theme="dark"] .workspace-notice p { color: #a1a1a6; }[data-bs-theme="dark"] .workspace-metric__icon, [data-bs-theme="dark"] .workspace-category, [data-bs-theme="dark"] .workspace-empty__icon { color: #d1d1d6; background: #2c2c2e; }[data-bs-theme="dark"] .workspace-card__head, [data-bs-theme="dark"] .workspace-table th, [data-bs-theme="dark"] .workspace-table td, [data-bs-theme="dark"] .workspace-actions a { border-color: rgba(255,255,255,.08); }[data-bs-theme="dark"] .workspace-table { color: #d1d1d6; }[data-bs-theme="dark"] .workspace-table th, [data-bs-theme="dark"] .workspace-table tbody tr:hover { background: #2c2c2e; }[data-bs-theme="dark"] .workspace-status { color: #d1d1d6; background: #252527; border-color: rgba(255,255,255,.1); }[data-bs-theme="dark"] .workspace-notice h3, [data-bs-theme="dark"] .workspace-actions a { color: #e5e5ea; }[data-bs-theme="dark"] .workspace-button--secondary { color: #fff; background: #2c2c2e; border-color: rgba(255,255,255,.15); }

/* Application typography: legible, resilient, and deliberately institutional. */
:root {
  --ptsea-font: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --ptsea-font-display: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --ptsea-body-leading: 1.6;
  --ptsea-copy: #424245;
  --ptsea-copy-muted: #5f6368;
  --ptsea-link: #005fcc;
}
body { font-size: 1rem; line-height: var(--ptsea-body-leading); letter-spacing: 0; }
:focus-visible { outline-color: #005fcc; outline-width: 3px; }
.ptsea-sidebar__title { font-size: .9375rem; font-weight: 720; line-height: 1.25; }
.ptsea-sidebar__sub { margin-top: .1rem; font-size: .75rem; line-height: 1.35; }
.ptsea-nav__label { font-size: .6875rem; letter-spacing: .1em; line-height: 1.35; }
.ptsea-nav__link { font-size: .9375rem; line-height: 1.35; letter-spacing: -.005em; }
.ptsea-topbar__identity { flex-direction: column; min-width: 0; line-height: 1.25; }
.ptsea-topbar__identity span:first-child { color: #343437; font-size: .8125rem; font-weight: 700; letter-spacing: -.005em; }
.ptsea-topbar__identity span:last-child { margin-top: .12rem; color: #5f6368; font-size: .75rem; font-weight: 550; }
.ptsea-topbar .badge, .ptsea-topbar .btn { line-height: 1.35; }

.workspace-hero__meta { color: #515154; font-size: .8125rem; font-weight: 700; line-height: 1.4; }
.workspace-hero__copy { max-width: 68ch; }
.workspace-hero h1 { font-weight: 750; line-height: 1.12; }
.workspace-hero p { max-width: 62ch; color: var(--ptsea-copy); font-size: 1rem; line-height: 1.6; }
.workspace-button { min-height: 44px; font-size: .875rem; line-height: 1.35; }
.workspace-metric__top { color: #515154; font-size: .75rem; line-height: 1.35; }
.workspace-metric p { color: var(--ptsea-copy-muted); font-size: .8125rem; line-height: 1.45; }
.workspace-card__eyebrow { color: #5f6368; font-size: .6875rem; line-height: 1.35; }
.workspace-card h2 { font-size: 1.125rem; line-height: 1.3; }
.workspace-card__head p:not(.workspace-card__eyebrow) { color: var(--ptsea-copy-muted); font-size: .875rem; line-height: 1.5; }
.workspace-text-link { font-size: .875rem; line-height: 1.35; }
.workspace-table { font-size: .875rem; line-height: 1.5; }
.workspace-table th { color: #515154; font-size: .75rem; line-height: 1.35; }
.workspace-category, .workspace-status { color: #343437; font-size: .75rem; line-height: 1.35; }
.workspace-empty p, .workspace-notice p { color: var(--ptsea-copy-muted); font-size: .875rem; line-height: 1.55; }
.workspace-notice h3 { font-size: .9375rem; line-height: 1.35; }
.workspace-actions a { font-size: .875rem; line-height: 1.4; }
[data-bs-theme="dark"] .ptsea-topbar__identity span:first-child { color: #f5f5f7; }
[data-bs-theme="dark"] .ptsea-topbar__identity span:last-child { color: #a1a1a6; }
[data-bs-theme="dark"] .workspace-hero__meta { color: #d1d1d6; }
[data-bs-theme="dark"] .workspace-hero p, [data-bs-theme="dark"] .workspace-metric p, [data-bs-theme="dark"] .workspace-card__head p:not(.workspace-card__eyebrow), [data-bs-theme="dark"] .workspace-empty p, [data-bs-theme="dark"] .workspace-notice p { color: #c7c7cc; }
[data-bs-theme="dark"] .workspace-card__eyebrow, [data-bs-theme="dark"] .workspace-metric__top, [data-bs-theme="dark"] .workspace-table th { color: #d1d1d6; }

/* Compact utility controls for the authenticated application shell. */
.ptsea-topbar .ptsea-theme-toggle--icon,
.ptsea-account-toggle {
  display: inline-grid;
  width: 40px;
  min-width: 40px;
  height: 40px;
  min-height: 40px;
  padding: 0;
  place-items: center;
  border: 1px solid rgba(0, 0, 0, .12);
  border-radius: 50%;
  background: rgba(255, 255, 255, .68);
  color: #424245;
  box-shadow: none;
}
.ptsea-topbar .ptsea-theme-toggle--icon:hover,
.ptsea-account-toggle:hover { border-color: rgba(0, 0, 0, .2); background: #f5f5f7; color: #1d1d1f; }
.ptsea-topbar .ptsea-theme-toggle__icon { padding: 0; font-size: 1.1rem; line-height: 1; }
.ptsea-account-toggle { cursor: pointer; }
.ptsea-account-toggle svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }
.ptsea-account-menu { min-width: 250px; margin-top: .55rem !important; padding: .45rem; border: 1px solid rgba(0, 0, 0, .1); border-radius: 14px; background: #fff; box-shadow: 0 12px 32px rgba(0, 0, 0, .14); }
.ptsea-account-menu__summary { display: grid; gap: .12rem; padding: .7rem .75rem .8rem; border-bottom: 1px solid rgba(0, 0, 0, .08); }
.ptsea-account-menu__name { overflow: hidden; color: #1d1d1f; font-size: .875rem; font-weight: 700; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.ptsea-account-menu__role { width: fit-content; max-width: 100%; overflow: hidden; margin-top: .18rem; padding: .16rem .48rem; border-radius: 999px; background: #eef5f0; color: #386047; font-size: .7rem; font-weight: 600; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.ptsea-account-menu .dropdown-item { margin-top: .2rem; padding: .6rem .75rem; border-radius: 9px; color: #343437; font-size: .875rem; font-weight: 600; }
.ptsea-account-menu .dropdown-item:hover, .ptsea-account-menu .dropdown-item:focus { color: #1d1d1f; background: #f2f2f7; }
.ptsea-account-menu__signout { color: #a12622 !important; }
.ptsea-account-menu__signout:hover, .ptsea-account-menu__signout:focus { color: #7d1b18 !important; background: #fff4f3 !important; }
.workspace-hero h1 { font-size: clamp(1.625rem, 3vw, 2.25rem); }
.workspace-hero__copy { max-width: 58ch; }
[data-bs-theme="dark"] .ptsea-topbar .ptsea-theme-toggle--icon, [data-bs-theme="dark"] .ptsea-account-toggle { border-color: rgba(255, 255, 255, .15); background: #2c2c2e; color: #f5f5f7; }
[data-bs-theme="dark"] .ptsea-topbar .ptsea-theme-toggle--icon:hover, [data-bs-theme="dark"] .ptsea-account-toggle:hover { border-color: rgba(255, 255, 255, .25); background: #3a3a3c; }
[data-bs-theme="dark"] .ptsea-account-menu { border-color: rgba(255, 255, 255, .12); background: #2c2c2e; box-shadow: 0 12px 32px rgba(0, 0, 0, .45); }
[data-bs-theme="dark"] .ptsea-account-menu__summary { border-bottom-color: rgba(255, 255, 255, .1); }
[data-bs-theme="dark"] .ptsea-account-menu__name { color: #f5f5f7; }
[data-bs-theme="dark"] .ptsea-account-menu__role { background: rgba(103, 188, 133, .14); color: #b8dcc4; }
[data-bs-theme="dark"] .ptsea-account-menu .dropdown-item { color: #f5f5f7; }
[data-bs-theme="dark"] .ptsea-account-menu .dropdown-item:hover, [data-bs-theme="dark"] .ptsea-account-menu .dropdown-item:focus { color: #fff; background: #3a3a3c; }

/* Dashboard-specific context replaces transient global navigation notices. */
.workspace-context {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  margin: 1.15rem 0 0;
}
.workspace-context > div {
  min-width: 122px;
  padding: .56rem .75rem .6rem;
  border: 1px solid rgba(0, 0, 0, .08);
  border-radius: 10px;
  background: rgba(255, 255, 255, .65);
}
.workspace-context dt { margin: 0; color: #5f6368; font-size: .67rem; font-weight: 700; letter-spacing: .06em; line-height: 1.3; text-transform: uppercase; }
.workspace-context dd { margin: .16rem 0 0; color: #1d1d1f; font-size: .82rem; font-weight: 700; line-height: 1.35; }
.workspace-context__status { background: #f2f2f7 !important; }
.workspace-context__status dd::before { content: ""; display: inline-block; width: 6px; height: 6px; margin: 0 .38rem .08rem 0; border-radius: 50%; background: #515154; }
[data-bs-theme="dark"] .workspace-context > div { border-color: rgba(255,255,255,.12); background: rgba(44,44,46,.72); }
[data-bs-theme="dark"] .workspace-context dt { color: #c7c7cc; }
[data-bs-theme="dark"] .workspace-context dd { color: #f5f5f7; }
[data-bs-theme="dark"] .workspace-context__status { background: #3a3a3c !important; }
@media (max-width: 640px) { .workspace-context { gap: .5rem; }.workspace-context > div { min-width: 0; flex: 1 1 130px; } }

/* Sidebar information architecture: a section label is visually bound to its links. */
.ptsea-nav {
  display: grid;
  align-content: start;
  gap: .75rem;
}
.ptsea-nav__group {
  display: grid;
  gap: .1rem;
  padding: .35rem;
  border: 1px solid rgba(0, 0, 0, .07);
  border-radius: 14px;
  background: rgba(255, 255, 255, .58);
}
.ptsea-nav__group .ptsea-nav__label {
  padding: .45rem .55rem .4rem;
  color: #5f6368;
  font-size: .65rem;
  font-weight: 750;
  letter-spacing: .09em;
}
.ptsea-nav__group .ptsea-nav__link {
  padding: .6rem .65rem;
  border-radius: 9px;
}
.ptsea-nav__group .ptsea-nav__link.is-active,
.ptsea-nav__group .ptsea-nav__link.active { background: #e5e5ea; }
[data-bs-theme="dark"] .ptsea-nav__group { border-color: rgba(255,255,255,.1); background: rgba(44,44,46,.7); }
[data-bs-theme="dark"] .ptsea-nav__group .ptsea-nav__label { color: #c7c7cc; }
[data-bs-theme="dark"] .ptsea-nav__group .ptsea-nav__link.is-active,
[data-bs-theme="dark"] .ptsea-nav__group .ptsea-nav__link.active { background: #48484a; }

/* Institutional palette — restrained authority for the authenticated portal. */
.ptsea-main-wrap { background: #f5f7f8; }
.ptsea-sidebar { background: #eef2f1; color: #31424a; border-right-color: rgba(22, 32, 42, .1); }
.ptsea-sidebar__title { color: #16202a; }
.ptsea-nav__group { border-color: rgba(22, 32, 42, .09); background: rgba(255, 255, 255, .72); }
.ptsea-nav__group .ptsea-nav__label { color: #53606c; }
.ptsea-nav__link { color: #31424a; }
.ptsea-nav__link:hover { background: #e2ebe6; color: #0f5b3b; }
.ptsea-nav__group .ptsea-nav__link.is-active,
.ptsea-nav__group .ptsea-nav__link.active { background: #dcebe3; color: #0f5b3b; }
.ptsea-topbar { background: #eef2f1; border-bottom-color: rgba(22, 32, 42, .1); }
.dashboard-workspace { color: #31424a; }
.workspace-hero { border-color: rgba(22, 32, 42, .09); background: linear-gradient(135deg, #ffffff 0%, #fafcfb 100%); box-shadow: 0 12px 34px rgba(22, 32, 42, .055); }
.workspace-hero::before { background: #e7efeb; }
.workspace-hero::after { background: #f5efe1; }
.workspace-hero h1, .workspace-metric strong, .workspace-card h2, .workspace-empty h3, .workspace-table__number { color: #16202a; }
.workspace-button--primary { background: #0f5b3b; box-shadow: 0 4px 12px rgba(15, 91, 59, .2); }
.workspace-button--primary:hover { background: #0b472e; }
.workspace-button--secondary { color: #16202a; border-color: rgba(22, 32, 42, .14); }
.workspace-metric, .workspace-card { border-color: rgba(22, 32, 42, .09); box-shadow: 0 4px 18px rgba(22, 32, 42, .035); }
.workspace-metric__icon { color: #0f5b3b; background: #e6f0eb; }
.workspace-text-link { color: #005ea8; }
.workspace-text-link:hover { color: #004d89; }
.workspace-category { color: #0f5b3b; background: #e6f0eb; }
.workspace-status { color: #31424a; background: #f5f7f8; border-color: rgba(22, 32, 42, .09); }
.workspace-table th, .workspace-table tbody tr:hover { background: #f7f9f8; }
.workspace-context > div { border-color: rgba(22, 32, 42, .1); background: rgba(255, 255, 255, .8); }
.workspace-context dd { color: #16202a; }
.workspace-context__status { background: #e6f0eb !important; }
.workspace-context__status dd { color: #0f5b3b; }
.workspace-context__status dd::before { background: #0f5b3b; }
.ptsea-topbar .ptsea-theme-toggle--icon, .ptsea-account-toggle { border-color: rgba(22, 32, 42, .14); color: #31424a; }
.ptsea-topbar .ptsea-theme-toggle--icon:hover, .ptsea-account-toggle:hover { border-color: rgba(15, 91, 59, .28); background: #e6f0eb; color: #0f5b3b; }
.ptsea-account-menu { border-color: rgba(22, 32, 42, .12); box-shadow: 0 12px 32px rgba(22, 32, 42, .14); }

[data-bs-theme="dark"] .ptsea-main-wrap { background: #111b1d; }
[data-bs-theme="dark"] .ptsea-sidebar { background: #132421; border-right-color: rgba(255,255,255,.1); }
[data-bs-theme="dark"] .ptsea-nav__group { background: rgba(25, 47, 42, .85); border-color: rgba(255,255,255,.1); }
[data-bs-theme="dark"] .ptsea-nav__link:hover { background: #244438; color: #d8f0e4; }
[data-bs-theme="dark"] .ptsea-nav__group .ptsea-nav__link.is-active,
[data-bs-theme="dark"] .ptsea-nav__group .ptsea-nav__link.active { background: #28513f; color: #fff; }
[data-bs-theme="dark"] .ptsea-topbar { background: #132421; }
[data-bs-theme="dark"] .workspace-hero, [data-bs-theme="dark"] .workspace-metric, [data-bs-theme="dark"] .workspace-card { background: #192724; border-color: rgba(255,255,255,.1); }
[data-bs-theme="dark"] .workspace-hero::before { background: #244438; } [data-bs-theme="dark"] .workspace-hero::after { background: #332e20; }
[data-bs-theme="dark"] .workspace-metric__icon, [data-bs-theme="dark"] .workspace-category { background: #244438; color: #d8f0e4; }
[data-bs-theme="dark"] .workspace-context > div { background: rgba(25, 47, 42, .9); border-color: rgba(255,255,255,.12); }
[data-bs-theme="dark"] .workspace-context__status { background: #244438 !important; }
[data-bs-theme="dark"] .workspace-context__status dd { color: #d8f0e4; }
[data-bs-theme="dark"] .workspace-context__status dd::before { background: #d8f0e4; }

/* Nomination states: do not rely on colour alone; every state keeps its text label. */
.workspace-status--draft,
.workspace-status--submitted { color: #394a54; background: #e9eef0; border-color: #b9c7cc; }
.workspace-status--under_review,
.workspace-status--in_review,
.workspace-status--pending,
.workspace-status--assigned,
.workspace-status--moderation,
.workspace-status--authorization,
.workspace-status--awaiting_moderation,
.workspace-status--awaiting_authorization { color: #694b0c; background: #fbf1d9; border-color: #dcc386; }
.workspace-status--published,
.workspace-status--approved,
.workspace-status--authorized { color: #0c4b31; background: #e1f1e8; border-color: #9fcab0; }
.workspace-status--rejected,
.workspace-status--declined { color: #8a2421; background: #fbe8e7; border-color: #e8aaa7; }
[data-bs-theme="dark"] .workspace-status--draft,
[data-bs-theme="dark"] .workspace-status--submitted { color: #d2dfe3; background: #26383e; border-color: #4c6870; }
[data-bs-theme="dark"] .workspace-status--under_review,
[data-bs-theme="dark"] .workspace-status--in_review,
[data-bs-theme="dark"] .workspace-status--pending,
[data-bs-theme="dark"] .workspace-status--assigned,
[data-bs-theme="dark"] .workspace-status--moderation,
[data-bs-theme="dark"] .workspace-status--authorization,
[data-bs-theme="dark"] .workspace-status--awaiting_moderation,
[data-bs-theme="dark"] .workspace-status--awaiting_authorization { color: #f3d58e; background: #46391e; border-color: #896e32; }
[data-bs-theme="dark"] .workspace-status--published,
[data-bs-theme="dark"] .workspace-status--approved,
[data-bs-theme="dark"] .workspace-status--authorized { color: #b9e5ca; background: #1d432f; border-color: #477b5b; }
[data-bs-theme="dark"] .workspace-status--rejected,
[data-bs-theme="dark"] .workspace-status--declined { color: #ffc3c0; background: #4b2928; border-color: #8f514e; }

/* Final interaction and responsive-quality layer for the portal workspace. */
.ptsea-nav__link:focus-visible,
.workspace-button:focus-visible,
.workspace-text-link:focus-visible,
.ptsea-account-toggle:focus-visible,
.ptsea-theme-toggle--icon:focus-visible {
  outline: 3px solid #005ea8;
  outline-offset: 2px;
}
.ptsea-nav__link { min-height: 44px; }
.workspace-hero__actions { align-items: center; }
.workspace-button { justify-content: center; min-height: 44px; }
.workspace-metric { position: relative; overflow: hidden; }
.workspace-metric::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 3px; background: #d7e6de; }
.workspace-metric:nth-child(2)::after { background: #ead8a7; }
.workspace-metric:nth-child(3)::after { background: #bddcc9; }
.workspace-metric:nth-child(4)::after { background: #cbd6d9; }
.workspace-table th { position: sticky; top: 0; z-index: 1; }
.workspace-table td:last-child, .workspace-table th:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.workspace-status { white-space: nowrap; }
.workspace-empty__action { margin-top: 1.2rem; }
.workspace-empty__action svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.workspace-card:has(.workspace-empty) { min-height: 360px; }
.workspace-card:has(.workspace-empty) .workspace-empty { min-height: 290px; align-content: center; }

@media (max-width: 767.98px) {
  .ptsea-topbar { padding-right: 1rem; padding-left: 1rem; }
  .workspace-hero { padding: 1.4rem; }
  .workspace-hero__actions { width: 100%; }
  .workspace-hero__actions .workspace-button { flex: 1 1 auto; }
  .workspace-metrics { gap: .75rem; }
  .workspace-metric { min-height: 138px; padding: 1rem; }
  .workspace-table th, .workspace-table td { padding-top: .9rem; padding-bottom: .9rem; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
[data-bs-theme="dark"] .workspace-metric::after { background: #315744; }
[data-bs-theme="dark"] .workspace-metric:nth-child(2)::after { background: #806d37; }
[data-bs-theme="dark"] .workspace-metric:nth-child(3)::after { background: #487a5d; }
[data-bs-theme="dark"] .workspace-metric:nth-child(4)::after { background: #526d75; }

/* =============================================================================
   Portal form system
   Purposeful hierarchy, clear validation, and touch-friendly controls across
   registration, review, approval, notification, and search workflows.
   ============================================================================= */
.ptsea-form,
.ptsea-content form:not(.d-inline) { --form-ink: #16202a; --form-muted: #53606c; --form-border: #b8c4c2; --form-surface: #fff; --form-focus: #248454; --form-success: #248454; }
.ptsea-form .form-label,
.ptsea-content form:not(.d-inline) .form-label { display: block; margin-bottom: .42rem; }
/* Crispy's checkbox legends use Bootstrap's fs-6 utility. Keep field labels uniform. */
.ptsea-form legend.form-label,
.ptsea-content form:not(.d-inline) legend.form-label { font-size: .875rem !important; }
/* Shared typography for generated fields, manual fields and checkbox labels. */
.ptsea-form :is(.form-label, .form-check-label),
.ptsea-content form:not(.d-inline) :is(.form-label, .form-check-label) {
  font-family: inherit;
  color: var(--form-ink);
  font-size: .875rem;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: normal;
  text-transform: none;
}
.ptsea-form .form-control,
.ptsea-form .form-select,
.ptsea-content form:not(.d-inline) .form-control,
.ptsea-content form:not(.d-inline) .form-select {
  min-height: 44px;
  padding: .6rem .75rem;
  border: 1px solid var(--form-border);
  border-radius: 10px;
  background-color: var(--form-surface);
  color: var(--form-ink);
  font-size: .9375rem;
  line-height: 1.45;
  box-shadow: 0 1px 1px rgba(22, 32, 42, .02);
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.ptsea-form textarea.form-control,
.ptsea-content form:not(.d-inline) textarea.form-control { min-height: 108px; resize: vertical; }
.ptsea-form .form-control::placeholder,
.ptsea-content form:not(.d-inline) .form-control::placeholder { color: #6e7b84; opacity: 1; }
.ptsea-form .form-control:hover,
.ptsea-form .form-select:hover,
.ptsea-content form:not(.d-inline) .form-control:hover,
.ptsea-content form:not(.d-inline) .form-select:hover { border-color: #879b97; }
.ptsea-form .form-control:focus,
.ptsea-form .form-select:focus,
.ptsea-content form:not(.d-inline) .form-control:focus,
.ptsea-content form:not(.d-inline) .form-select:focus { border-color: var(--form-focus); box-shadow: 0 0 0 3px rgba(36, 132, 84, .18); }
.ptsea-content form:not(.d-inline) .form-control:focus-visible,
.ptsea-content form:not(.d-inline) .form-select:focus-visible { outline: 0; }
.ptsea-content form:not(.d-inline) .form-check-input:focus {
  border-color: var(--form-focus);
  box-shadow: 0 0 0 3px rgba(36, 132, 84, .18);
}
.ptsea-content form:not(.d-inline) .form-check-input:checked {
  border-color: var(--form-focus);
  background-color: var(--form-focus);
}
.ptsea-form .form-control.is-invalid,
.ptsea-form .form-select.is-invalid,
.ptsea-content form:not(.d-inline) .form-control.is-invalid,
.ptsea-content form:not(.d-inline) .form-select.is-invalid { border-color: #b3261e; background-image: none; }
.ptsea-form .invalid-feedback,
.ptsea-form .text-danger,
.ptsea-content form:not(.d-inline) .invalid-feedback,
.ptsea-content form:not(.d-inline) .text-danger { color: #9f231d !important; font-size: .8125rem; font-weight: 600; line-height: 1.45; }
.ptsea-form .form-text,
.ptsea-content form:not(.d-inline) .form-text { margin-top: .38rem; color: var(--form-muted); font-size: .8125rem; line-height: 1.5; }
.ptsea-form .row,
.ptsea-content form:not(.d-inline) .row { --bs-gutter-x: 1rem; --bs-gutter-y: 1rem; }
.ptsea-form .form-check,
.ptsea-content form:not(.d-inline) .form-check { display: flex; align-items: flex-start; gap: .6rem; min-height: 42px; margin: 0; padding: .6rem .7rem .6rem 2.15rem; border: 1px solid transparent; border-radius: 10px; color: var(--form-ink); line-height: 1.45; }
.ptsea-form .form-check:hover,
.ptsea-content form:not(.d-inline) .form-check:hover { border-color: rgba(15, 91, 59, .2); background: #f0f6f2; }
.ptsea-form .form-check-input,
.ptsea-content form:not(.d-inline) .form-check-input { width: 1.05rem; height: 1.05rem; margin-top: .19rem; margin-left: -1.45rem; border-color: #738780; }
.ptsea-form .form-check-input:checked,
.ptsea-content form:not(.d-inline) .form-check-input:checked { border-color: var(--form-success); background-color: var(--form-success); }
.ptsea-form fieldset,
.ptsea-content form:not(.d-inline) fieldset { min-width: 0; padding: 1.15rem; border: 1px solid rgba(22, 32, 42, .1); border-radius: 14px; }
.ptsea-form legend,
.ptsea-content form:not(.d-inline) legend { float: none; width: auto; margin: 0; padding: 0 .35rem; color: var(--form-ink); font-size: .9375rem; font-weight: 750; line-height: 1.35; }
.ptsea-form .btn,
.ptsea-content form:not(.d-inline) .btn { min-height: 44px; padding: .6rem 1rem; border-radius: 10px; font-size: .875rem; font-weight: 700; line-height: 1.35; }
.ptsea-form .btn-ptsea,
.ptsea-content form:not(.d-inline) .btn-ptsea { border-color: #0f5b3b; background: #0f5b3b; color: #fff; }
.ptsea-form .btn-ptsea:hover,
.ptsea-content form:not(.d-inline) .btn-ptsea:hover { border-color: #0b472e; background: #0b472e; color: #fff; }
.ptsea-form .btn-ptsea-outline,
.ptsea-content form:not(.d-inline) .btn-ptsea-outline { border-color: #0f5b3b; color: #0f5b3b; }
.ptsea-form .btn-ptsea-outline:hover,
.ptsea-content form:not(.d-inline) .btn-ptsea-outline:hover { background: #e6f0eb; color: #0b472e; }
.ptsea-form--stack > * + *,
.ptsea-form--stack .mb-3 + .mb-3 { margin-top: 1.25rem; }
.ptsea-form--compact { padding: 1.15rem; }
.ptsea-form--compact .form-control,
.ptsea-form--compact .form-select { min-height: 40px; font-size: .875rem; }

/* The nominee wizard is a high-complexity form: make progress and sections explicit. */
#nominee-wizard .ptsea-tabs-scroll { position: relative; z-index: 1; margin-inline: -.2rem; padding: .2rem; border-radius: 12px; background: #fff; box-shadow: 0 6px 18px rgba(22, 32, 42, .08); }
#nominee-wizard .nav-tabs { gap: .35rem; padding: .3rem; border-bottom: 0; }
#nominee-wizard .nav-tabs .nav-link { min-height: 40px; padding: .5rem .75rem; border: 1px solid transparent; border-radius: 9px; color: #53606c; font-size: .8125rem; font-weight: 700; white-space: nowrap; }
#nominee-wizard .nav-tabs .nav-link:hover { border-color: #c8d5d1; color: #0f5b3b; background: #f0f6f2; }
#nominee-wizard .nav-tabs .nav-link.active { border-color: #b5d5c4; color: #0f5b3b; background: #e6f0eb; }
#nominee-wizard .nav-tabs .nav-link.has-errors { border-color: #c94b42; color: #8f2f28; background: #fff4f3; }
#nominee-wizard .nav-tabs .nav-link.has-errors::after { display: inline-block; width: .45rem; height: .45rem; margin-left: .4rem; border-radius: 50%; background: #c94b42; content: ""; vertical-align: middle; }
#nominee-wizard .nav-tabs .nav-link.is-complete:not(.has-errors)::after { display: inline-block; width: .45rem; height: .45rem; margin-left: .4rem; border-radius: 50%; background: #278454; content: ""; vertical-align: middle; }
#nominee-wizard .nav-tabs .nav-link.is-incomplete:not(.has-errors):not(.is-complete)::after { display: inline-block; width: .45rem; height: .45rem; margin-left: .4rem; border: 1px solid #9aa4aa; border-radius: 50%; background: transparent; content: ""; vertical-align: middle; }
#nominee-wizard #step-elig .form-check .invalid-feedback,
#nominee-wizard #step-elig .form-check .errorlist { display: none !important; }
#nominee-wizard #step-elig .form-check-input.is-invalid { border-color: #c94b42; box-shadow: 0 0 0 .12rem rgba(201, 75, 66, .12); }
#nominee-wizard .tab-content { padding-top: 1.15rem; }
#nominee-wizard .tab-pane { padding-top: 0; }
#nominee-wizard .tab-pane .ptsea-section-header:first-child { margin-top: 0; }
#nominee-wizard .credential-block { border-color: rgba(22, 32, 42, .1) !important; border-radius: 14px !important; background: #fbfcfc; }
#nominee-wizard .js-formset-row { border-color: rgba(22, 32, 42, .09) !important; border-radius: 11px !important; background: #fff !important; }
#nominee-wizard .border-top.mt-3 { position: sticky; bottom: 0; z-index: 9; margin-inline: -1.5rem; padding: 1rem 1.5rem !important; border-color: rgba(22, 32, 42, .1) !important; background: rgba(255,255,255,.94); box-shadow: 0 -8px 18px rgba(22,32,42,.045); }
#nominee-wizard .border-top.mt-3 > div { margin-left: auto; }
.ptsea-form input[type="file"],
.ptsea-content form:not(.d-inline) input[type="file"] { display: block; width: 100%; max-width: none; min-height: 46px; padding: .45rem .55rem; }
.ptsea-form input[type="file"]::file-selector-button,
.ptsea-content form:not(.d-inline) input[type="file"]::file-selector-button {
  height: 32px;
  margin: -.2rem .7rem -.2rem -.3rem;
  padding: 0 .8rem;
  border: 0;
  border-radius: 7px;
  background: #e6f0eb;
  color: #0f5b3b;
  font: inherit;
  font-size: .8125rem;
  font-weight: 700;
  cursor: pointer;
}
.ptsea-form input[type="file"]::-webkit-file-upload-button,
.ptsea-content form:not(.d-inline) input[type="file"]::-webkit-file-upload-button {
  height: 32px;
  margin: -.2rem .7rem -.2rem -.3rem;
  padding: 0 .8rem;
  border: 0;
  border-radius: 7px;
  background: #e6f0eb;
  color: #0f5b3b;
  font: inherit;
  font-size: .8125rem;
  font-weight: 700;
  cursor: pointer;
}
.ptsea-form input[type="file"]:hover::file-selector-button,
.ptsea-content form:not(.d-inline) input[type="file"]:hover::file-selector-button { background: #d7e8de; }
.ptsea-form .row > [class*="col"]:has(input[type="file"]),
.ptsea-content form:not(.d-inline) .row > [class*="col"]:has(input[type="file"]) { flex: 0 0 100%; width: 100%; max-width: 100%; }

[data-bs-theme="dark"] .ptsea-form,
[data-bs-theme="dark"] .ptsea-content form:not(.d-inline) { --form-ink: #f3f6f5; --form-muted: #c1cbc8; --form-border: #60726d; --form-surface: #1b2d29; --form-focus: #65b98b; --form-success: #65b98b; }
[data-bs-theme="dark"] .ptsea-form .form-control::placeholder,
[data-bs-theme="dark"] .ptsea-content form:not(.d-inline) .form-control::placeholder { color: #b7c5c0; }
[data-bs-theme="dark"] .ptsea-form .form-check:hover,
[data-bs-theme="dark"] .ptsea-content form:not(.d-inline) .form-check:hover { border-color: rgba(117, 189, 149, .4); background: #203b33; }
[data-bs-theme="dark"] .ptsea-form .btn-ptsea,
[data-bs-theme="dark"] .ptsea-content form:not(.d-inline) .btn-ptsea { border-color: #75bd95; background: #75bd95; color: #10211c; }
[data-bs-theme="dark"] .ptsea-form .btn-ptsea-outline,
[data-bs-theme="dark"] .ptsea-content form:not(.d-inline) .btn-ptsea-outline { border-color: #75bd95; color: #bce7cf; }
[data-bs-theme="dark"] #nominee-wizard .ptsea-tabs-scroll,
[data-bs-theme="dark"] #nominee-wizard .border-top.mt-3 { background: rgba(25,39,36,.96); }
[data-bs-theme="dark"] #nominee-wizard .nav-tabs .nav-link { color: #c1cbc8; }
[data-bs-theme="dark"] #nominee-wizard .nav-tabs .nav-link.active { border-color: #487d61; color: #d9f1e3; background: #244438; }
[data-bs-theme="dark"] #nominee-wizard .credential-block { background: #1b2d29; }
[data-bs-theme="dark"] #nominee-wizard .js-formset-row { background: #20332f !important; }

@media (max-width: 767.98px) {
  .ptsea-form fieldset,
  .ptsea-content form:not(.d-inline) fieldset { padding: 1rem; }
  #nominee-wizard .border-top.mt-3 { margin-inline: -1.25rem; padding: .85rem 1.25rem !important; }
  #nominee-wizard .border-top.mt-3 .btn { flex: 1 1 auto; }
}


/* =============================================================================
   Responsive grid system — Bootstrap 5–aligned breakpoints
   xs <576 | sm ≥576 | md ≥768 | lg ≥992 | xl ≥1200 | xxl ≥1400
   ============================================================================= */
:root {
  --ptsea-bp-sm: 576px;
  --ptsea-bp-md: 768px;
  --ptsea-bp-lg: 992px;
  --ptsea-bp-xl: 1200px;
  --ptsea-bp-xxl: 1400px;
  --ptsea-gutter: 1rem;
  --ptsea-gutter-lg: 1.25rem;
}

/* Utility grid */
.ptsea-grid {
  display: grid;
  gap: var(--ptsea-gutter);
  grid-template-columns: minmax(0, 1fr);
}
.ptsea-grid--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.ptsea-grid--auto {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
}
.ptsea-grid--cards {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}

@media (min-width: 576px) {
  .ptsea-grid-sm-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ptsea-grid-sm-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 768px) {
  .ptsea-grid-md-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ptsea-grid-md-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ptsea-grid-md-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 992px) {
  .ptsea-grid-lg-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ptsea-grid-lg-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ptsea-grid-lg-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ptsea-grid-lg-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (min-width: 1200px) {
  .ptsea-grid-xl-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ptsea-grid-xl-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .ptsea-grid-xl-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

/* —— Dashboard KPIs —— */
.dash-kpis {
  display: grid;
  gap: var(--ptsea-gutter);
  grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 576px) {
  .dash-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 992px) {
  .dash-kpis {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--ptsea-gutter-lg);
  }
}

/* —— Dashboard body (main + aside when present) —— */
.dash-body {
  display: grid;
  gap: 1.25rem;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
}
.dash-body--single {
  grid-template-columns: minmax(0, 1fr) !important;
}
@media (min-width: 992px) {
  .dash-body:not(.dash-body--single) {
    grid-template-columns: minmax(0, 1fr) minmax(16rem, 20rem);
  }
}

/* —— Dashboard hero —— */
.dash-hero {
  display: grid;
  gap: 1.25rem;
  align-items: center;
  grid-template-columns: minmax(0, 1fr);
}
@media (min-width: 768px) {
  .dash-hero {
    grid-template-columns: minmax(0, 1fr) auto;
  }
}

/* —— Landing institutional partners strip —— */
.lp-sponsor-strip {
  display: grid;
  gap: 0.85rem;
  max-width: 920px;
  margin-inline: auto;
  /* Mobile: 2 cols */
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 576px) {
  .lp-sponsor-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
  }
}
@media (min-width: 768px) {
  .lp-sponsor-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 992px) {
  .lp-sponsor-strip {
    /* 6 partners → one row on large screens; auto-fit if count changes */
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 1rem;
  }
}
@media (min-width: 1200px) {
  .lp-sponsor-strip {
    grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));
    max-width: 980px;
  }
}

/* Legacy lp-sponsor-grid (tiered layout) */
.lp-sponsor-grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: stretch;
}
@media (min-width: 576px) {
  .lp-sponsor-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 992px) {
  .lp-sponsor-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1.25rem;
  }
}
@media (min-width: 1200px) {
  .lp-sponsor-grid {
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  }
}

/* —— Form credential rows —— */
.credential-block .row {
  --bs-gutter-x: 0.85rem;
}
@media (max-width: 575.98px) {
  .credential-block .row > [class*="col-"] {
    flex: 0 0 100%;
    max-width: 100%;
  }
}

/* —— Landing content containers —— */
.lp-container,
.lp-section .container {
  width: 100%;
  margin-inline: auto;
  padding-inline: 1rem;
  max-width: 1140px;
}
@media (min-width: 576px) {
  .lp-container,
  .lp-section .container { padding-inline: 1.25rem; }
}
@media (min-width: 1200px) {
  .lp-container,
  .lp-section .container { max-width: 1140px; }
}
@media (min-width: 1400px) {
  .lp-container,
  .lp-section .container { max-width: 1320px; }
}



/* —— File upload: preview (eye) + clear (×) —— */
.ptsea-file-control {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.ptsea-file-control__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.ptsea-file-control__row input[type="file"] {
  flex: 1 1 12rem;
  min-width: 0;
}
.ptsea-file-control__actions {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.ptsea-file-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border-radius: 0.5rem;
  border: 1px solid var(--ptsea-border, #d5ddd8);
  background: var(--ptsea-surface, #fff);
  color: var(--ptsea-ink, #0f2418);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
}
.ptsea-file-btn:hover:not(:disabled) {
  border-color: #248454;
  color: #248454;
  background: rgba(36, 132, 84, 0.06);
}
.ptsea-file-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.ptsea-file-btn--danger:hover:not(:disabled) {
  border-color: #c62828;
  color: #c62828;
  background: rgba(198, 40, 40, 0.06);
}
.ptsea-file-btn svg {
  width: 1.1rem;
  height: 1.1rem;
  pointer-events: none;
}
.ptsea-file-control__meta {
  font-size: 0.8rem;
  color: var(--ptsea-text-muted, #5a6b60);
  word-break: break-all;
}
.ptsea-file-control__thumb {
  display: none;
  max-height: 120px;
  max-width: 160px;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: 0.5rem;
  border: 1px solid var(--ptsea-border, #e5ebe7);
  background: #fff;
}
.ptsea-file-control__thumb.is-visible {
  display: block;
}
.ptsea-file-lightbox {
  position: fixed;
  inset: 0;
  z-index: 1080;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: rgba(15, 24, 18, 0.72);
  backdrop-filter: blur(4px);
}
.ptsea-file-lightbox.is-open {
  display: flex;
}
.ptsea-file-lightbox__panel {
  position: relative;
  max-width: min(92vw, 720px);
  max-height: 90vh;
  background: #fff;
  border-radius: 0.75rem;
  padding: 0.75rem;
  box-shadow: 0 20px 50px rgba(0,0,0,0.25);
}
.ptsea-file-lightbox__panel img {
  display: block;
  max-width: 100%;
  max-height: calc(90vh - 3rem);
  margin: 0 auto;
  object-fit: contain;
}
.ptsea-file-lightbox__close {
  position: absolute;
  top: 0.35rem;
  right: 0.35rem;
  z-index: 1;
}
[data-bs-theme="dark"] .ptsea-file-lightbox__panel {
  background: #1a2420;
}


/* —— Drag-and-drop zone —— */
.ptsea-file-dropzone {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.85rem 1rem;
  border: 1.5px dashed color-mix(in srgb, #248454 45%, var(--ptsea-border, #c5d0c9));
  border-radius: 0.75rem;
  background:
    linear-gradient(180deg, rgba(36, 132, 84, 0.04), transparent 70%),
    var(--ptsea-surface, #fff);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
  user-select: none;
}
.ptsea-file-dropzone:hover,
.ptsea-file-dropzone:focus-visible {
  border-color: #248454;
  outline: none;
  box-shadow: 0 0 0 3px rgba(36, 132, 84, 0.12);
}
.ptsea-file-dropzone.is-dragover {
  border-color: #248454;
  border-style: solid;
  background: rgba(36, 132, 84, 0.1);
  box-shadow: 0 0 0 3px rgba(36, 132, 84, 0.18);
}
.ptsea-file-dropzone.has-file {
  border-style: solid;
  border-color: color-mix(in srgb, #248454 35%, var(--ptsea-border, #c5d0c9));
}
.ptsea-file-dropzone__icon {
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  display: grid;
  place-items: center;
  border-radius: 0.5rem;
  background: rgba(36, 132, 84, 0.1);
  color: #1a6b42;
}
.ptsea-file-dropzone__icon svg {
  width: 1.15rem;
  height: 1.15rem;
}
.ptsea-file-dropzone__text {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  min-width: 0;
}
.ptsea-file-dropzone__title {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--ptsea-ink, #0f2418);
}
.ptsea-file-dropzone__sub {
  font-size: 0.78rem;
  color: var(--ptsea-text-muted, #5a6b60);
}
.ptsea-file-control__error {
  font-size: 0.8rem;
  color: #c62828;
  font-weight: 500;
}
.ptsea-file-control .ptsea-file-control__row input[type="file"] {
  font-size: 0.85rem;
}
@media (max-width: 575.98px) {
  .ptsea-file-dropzone {
    flex-direction: column;
    text-align: center;
    padding: 1rem 0.75rem;
  }
}
[data-bs-theme="dark"] .ptsea-file-dropzone {
  background: color-mix(in srgb, var(--ptsea-surface) 100%, #000);
}
[data-bs-theme="dark"] .ptsea-file-dropzone.is-dragover {
  background: rgba(36, 132, 84, 0.18);
}


.ptsea-file-dropzone.is-invalid {
  border-color: #c62828;
  border-style: solid;
  background: rgba(198, 40, 40, 0.06);
}
.ptsea-file-dropzone.is-invalid .ptsea-file-dropzone__icon {
  background: rgba(198, 40, 40, 0.12);
  color: #c62828;
}

/* Approved-subject groups: one visual panel per education level. */
#id_current_subjects,
#id_past_subjects {
  display: grid;
  gap: 1rem;
}
#id_current_subjects > div,
#id_past_subjects > div {
  padding: 1rem;
  border: 1px solid var(--ptsea-border, #d7e0da);
  border-radius: 0.75rem;
  background: var(--ptsea-surface, #fff);
}

#id_current_subjects > div > label:first-child,
#id_past_subjects > div > label:first-child {
  display: block;
  margin-bottom: 0.75rem;
  padding-bottom: 0.55rem;
  border-bottom: 1px solid var(--ptsea-border, #d7e0da);
  color: var(--ptsea-ink, #163b27);
  font-weight: 700;
}
#id_current_subjects > div > div,
#id_past_subjects > div > div {
  display: block;
  padding: 0.3rem 0.5rem 0.3rem 0;
}
#id_current_subjects input[type="checkbox"],
#id_past_subjects input[type="checkbox"] {
  margin-right: 0.4rem;
}

/* Preserve intentional casing in labels (for example, Subject(s) and IPPIS). */
form .form-label,
form legend {
  text-transform: none;
}

.settings-user-select { width: 2.5rem; }
.settings-check-list { max-height: 20rem; overflow: auto; }
.settings-check-list > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .45rem 1rem; }
.settings-check-list label { display: flex; align-items: flex-start; gap: .45rem; cursor: pointer; font-size: .875rem; }
.settings-check-list input[type="checkbox"] { flex: 0 0 auto; margin-top: .2rem; }
#role-checks label { min-width: 0; padding-left: 0; }
#role-checks .form-check-input { float: none; margin-left: 0; }
@media (max-width: 575.98px) { .settings-check-list > div { grid-template-columns: 1fr; } }

/* Keep landing-page anchor targets clear of the sticky public navbar. */
.lp-page #about,
.lp-page #categories,
.lp-page #cycle,
.lp-page #process,
.lp-page #sponsors {
  scroll-margin-top: 4.75rem;
}

/* --------------------------------------------------------------------------
   PTSEA institutional portal theme
   Shared final layer for every authenticated dashboard and operational page.
   -------------------------------------------------------------------------- */
:root,
[data-bs-theme="light"] {
  --ptsea-bg: #f3f7f4;
  --ptsea-surface-2: #f7faf8;
  --ptsea-border: #dce7df;
  --ptsea-border-strong: #c5d5ca;
  --ptsea-text: #17261d;
  --ptsea-text-muted: #5c6f64;
  --ptsea-text-heading: #0a3d24;
  --ptsea-sidebar: #0a2e1a;
  --ptsea-sidebar-text: rgba(239, 247, 242, 0.76);
  --ptsea-sidebar-active: #ffffff;
  --ptsea-shadow: 0 2px 8px rgba(10, 46, 26, 0.045);
  --ptsea-shadow-md: 0 12px 30px rgba(10, 46, 26, 0.085);
  --ptsea-radius: 0.875rem;
  --ptsea-radius-sm: 0.55rem;
}

body {
  background:
    radial-gradient(circle at 92% 4%, rgba(201, 162, 39, 0.07), transparent 22rem),
    linear-gradient(180deg, #f7faf8 0, var(--ptsea-bg) 18rem);
}

.ptsea-sidebar {
  background: var(--ptsea-green-deep);
  border-right: 1px solid rgba(93, 182, 132, 0.2);
  box-shadow: 8px 0 28px rgba(4, 28, 16, 0.12);
}
.ptsea-sidebar::after {
  content: none;
}
.ptsea-sidebar__brand {
  min-height: var(--ptsea-shell-header-height);
  padding: 1rem 1.15rem;
  background: var(--ptsea-green-deep);
  border-bottom-color: rgba(255, 255, 255, 0.1);
}
.ptsea-brand--sidebar,
.ptsea-brand--sidebar:hover { color: #fff; }
.ptsea-brand--sidebar .ptsea-brand__title { color: #0a2e1a; font-size: 1.05rem; font-weight: 800; }
.ptsea-brand--sidebar .ptsea-brand__subtitle { color: #5c6f66; }
.ptsea-brand--sidebar .ptsea-brand__copy::before {
  background: linear-gradient(180deg, #248454 0 64%, #d4a017 64% 100%);
}
.ptsea-nav { padding: 0.8rem 0.7rem 1.5rem; }
.ptsea-sidebar .ptsea-nav {
  scrollbar-width: thin;
  scrollbar-color: rgba(36, 132, 84, 0.82) transparent;
}
.ptsea-sidebar .ptsea-nav::-webkit-scrollbar { width: 5px; }
.ptsea-sidebar .ptsea-nav::-webkit-scrollbar-track { background: transparent; }
.ptsea-sidebar .ptsea-nav::-webkit-scrollbar-thumb {
  border: 1px solid transparent;
  border-radius: 999px;
  background: rgba(36, 132, 84, 0.82);
  background-clip: padding-box;
}
.ptsea-sidebar .ptsea-nav::-webkit-scrollbar-thumb:hover {
  background: rgba(26, 107, 60, 0.96);
  background-clip: padding-box;
}
.ptsea-sidebar .ptsea-nav__group {
  gap: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.ptsea-nav__label {
  color: rgba(213, 235, 222, 0.62);
  opacity: 1;
  padding-top: 1.15rem;
}
.ptsea-nav__link {
  position: relative;
  min-height: 42px;
  border: 1px solid transparent;
  color: var(--ptsea-sidebar-text);
  font-weight: 500;
}
.ptsea-nav__link:hover {
  color: #fff;
  background: rgba(36, 132, 84, 0.28);
  border-color: rgba(126, 205, 159, 0.14);
}
.ptsea-nav__group .ptsea-nav__label {
  padding: 0.45rem 0.55rem 0.18rem;
  color: rgba(213, 235, 222, 0.62);
}
.ptsea-nav__group .ptsea-nav__link { color: var(--ptsea-sidebar-text); }
.ptsea-sidebar .ptsea-nav__group .ptsea-nav__link {
  min-height: 36px;
  padding: 0.4rem 0.65rem;
}
.ptsea-nav__group .ptsea-nav__link:hover {
  color: #fff;
  background: rgba(36, 132, 84, 0.28);
}
.ptsea-nav__link.is-active,
.ptsea-nav__link.active,
.ptsea-nav__group .ptsea-nav__link.is-active,
.ptsea-nav__group .ptsea-nav__link.active {
  color: #fff;
  font-weight: 400;
  background: linear-gradient(90deg, rgba(36, 132, 84, 0.42), rgba(93, 182, 132, 0.14));
  border-color: rgba(126, 205, 159, 0.22);
  box-shadow: none;
}

/* Sidebar navigation stays regular-weight in every interaction state. */
.ptsea-sidebar .ptsea-nav__link,
.ptsea-sidebar .ptsea-nav__link:hover,
.ptsea-sidebar .ptsea-nav__link:focus,
.ptsea-sidebar .ptsea-nav__link.is-active,
.ptsea-sidebar .ptsea-nav__link.active {
  font-size: 0.84375rem;
  font-weight: 400 !important;
  line-height: 1.35;
}

.school-picker { position: relative; }
.school-picker__results {
  position: absolute;
  z-index: 1050;
  top: calc(100% - 1.35rem);
  right: 0;
  left: 0;
  max-height: 19rem;
  overflow-y: auto;
  padding: 0.35rem;
  border: 1px solid var(--ptsea-border-strong);
  border-radius: var(--ptsea-radius-sm);
  background: var(--ptsea-surface);
  box-shadow: var(--ptsea-shadow-md);
}
.school-picker__option {
  display: grid;
  width: 100%;
  gap: 0.15rem;
  padding: 0.65rem 0.75rem;
  border: 0;
  border-radius: 0.4rem;
  color: var(--ptsea-text);
  background: transparent;
  text-align: left;
}
.school-picker__option:hover,
.school-picker__option:focus { background: var(--ptsea-green-soft); outline: 0; }
.school-picker__option strong { font-size: 0.875rem; font-weight: 600; }
.school-picker__option small,
.school-picker__empty { color: var(--ptsea-text-muted); font-size: 0.78rem; }
.school-picker__empty { padding: 0.7rem 0.75rem; }

.ptsea-topbar {
  min-height: var(--ptsea-shell-header-height);
  padding: 0.75rem 1.75rem;
  background: color-mix(in srgb, var(--ptsea-surface) 94%, transparent);
  border-bottom-color: var(--ptsea-border);
  box-shadow: 0 3px 14px rgba(10, 46, 26, 0.035);
  backdrop-filter: blur(16px) saturate(140%);
}
.ptsea-topbar__identity { align-items: center; gap: 0.7rem; color: var(--ptsea-text-heading); }
.ptsea-topbar__identity > span:last-child { display: grid; line-height: 1.15; }
.ptsea-topbar__identity strong { font-size: 0.84rem; letter-spacing: 0.015em; }
.ptsea-topbar__identity small { margin-top: 0.2rem; color: var(--ptsea-text-muted); font-size: 0.68rem; }
.ptsea-topbar__seal {
  width: 8px;
  height: 32px;
  border-radius: 999px;
  background: linear-gradient(180deg, var(--ptsea-green) 0 68%, var(--ptsea-gold) 68%);
}
.ptsea-content {
  max-width: 1440px;
  padding: 1.75rem 2rem 3rem;
}

.ptsea-page-header {
  position: relative;
  min-height: 210px;
  overflow: hidden;
  padding: clamp(1.75rem, 4vw, 3rem);
  border: 1px solid color-mix(in srgb, var(--ptsea-green) 20%, var(--ptsea-border));
  border-radius: 1rem;
  background: #fafdfe;
  box-shadow: 0 12px 34px rgba(10, 46, 26, 0.07);
}
.ptsea-page-header::before,
.ptsea-page-header::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}
.ptsea-page-header::before { width: 320px; height: 320px; right: -155px; top: -210px; background: rgba(36, 132, 84, 0.08); }
.ptsea-page-header::after { width: 180px; height: 180px; right: 105px; bottom: -145px; background: rgba(201, 162, 39, 0.09); }
.ptsea-page-header > * { position: relative; z-index: 1; }
.ptsea-page-header h1 {
  margin: 0;
  color: var(--ptsea-text-heading);
  font-size: clamp(2rem, 4vw, 2.75rem);
  font-weight: 750;
  letter-spacing: -0.05em;
  line-height: 1.12;
}
.ptsea-page-header p { max-width: 56rem; margin: 0.85rem 0 0; color: var(--ptsea-text-muted); font-size: 1rem; line-height: 1.55; }

[data-bs-theme="dark"] .ptsea-page-header {
  background: #192724;
  border-color: var(--ptsea-border);
  box-shadow: none;
}
[data-bs-theme="dark"] .ptsea-page-header::before { background: rgba(36, 132, 84, 0.16); }
[data-bs-theme="dark"] .ptsea-page-header::after { background: rgba(201, 162, 39, 0.08); }

.ptsea-card,
.ptsea-stat,
.workspace-card,
.workspace-metric {
  border-color: var(--ptsea-border);
  border-radius: var(--ptsea-radius);
  background: color-mix(in srgb, var(--ptsea-surface) 97%, var(--ptsea-green-soft));
  box-shadow: var(--ptsea-shadow);
}
.ptsea-card { overflow: hidden; }
.ptsea-card__header,
.workspace-card__head {
  background: linear-gradient(180deg, var(--ptsea-surface) 0%, var(--ptsea-surface-2) 100%);
  border-bottom-color: var(--ptsea-border);
}
.ptsea-stat { position: relative; overflow: hidden; }
.ptsea-stat::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: linear-gradient(180deg, var(--ptsea-green), var(--ptsea-gold));
}
.ptsea-stat:hover,
.ptsea-card:hover { box-shadow: var(--ptsea-shadow-md); }

.form-control,
.form-select {
  min-height: 44px;
  border-color: var(--ptsea-border-strong);
  background-color: var(--ptsea-input-bg);
}
.form-control:hover,
.form-select:hover { border-color: color-mix(in srgb, var(--ptsea-green) 55%, var(--ptsea-border-strong)); }
.form-label,
form legend { color: var(--ptsea-text-heading); font-weight: 650; }
.asteriskField { margin-left: 0.15rem; color: #a72d25; font-weight: 800; }
.ptsea-form .bg-white,
.ptsea-form .bg-light { background-color: var(--ptsea-surface) !important; }
.ptsea-form .border { border-color: var(--ptsea-border) !important; }

.btn-ptsea {
  background: linear-gradient(180deg, #2a915f, var(--ptsea-green));
  border-color: var(--ptsea-green-deep);
  box-shadow: 0 3px 9px rgba(36, 132, 84, 0.16);
}
.btn-ptsea:hover {
  background: linear-gradient(180deg, var(--ptsea-green), var(--ptsea-green-deep));
  box-shadow: 0 5px 14px rgba(36, 132, 84, 0.24);
}
.btn-outline-secondary {
  color: var(--ptsea-text-muted);
  border-color: var(--ptsea-border-strong);
}
.btn-outline-secondary:hover {
  color: var(--ptsea-text-heading);
  background: var(--ptsea-green-soft);
  border-color: var(--ptsea-green);
}

.ptsea-table th,
.workspace-table th {
  color: var(--ptsea-text-heading);
  background: #f0f6f2;
  border-bottom-color: var(--ptsea-border-strong);
}
.ptsea-table td,
.workspace-table td { border-bottom-color: var(--ptsea-border); }
.ptsea-table tbody tr:hover,
.workspace-table tbody tr:hover { background: rgba(36, 132, 84, 0.045); }
.pagination .page-link { color: var(--ptsea-green-deep); border-color: var(--ptsea-border); }
.pagination .page-link:hover { color: var(--ptsea-text-heading); background: var(--ptsea-green-soft); }

/* Role dashboard: same visual language, with higher information density. */
.dashboard-workspace { color: var(--ptsea-text); max-width: none; }
.workspace-hero {
  border: 1px solid color-mix(in srgb, var(--ptsea-green) 20%, var(--ptsea-border));
  border-radius: 1rem;
  background: #fafdfe;
  box-shadow: 0 12px 34px rgba(10, 46, 26, 0.07);
}
.workspace-hero::before { background: rgba(36, 132, 84, 0.08); }
.workspace-hero::after { background: rgba(201, 162, 39, 0.09); }
.workspace-hero h1,
.workspace-metric strong,
.workspace-card h2,
.workspace-empty h3,
.workspace-table__number { color: var(--ptsea-text-heading); }
.workspace-context dt,
.workspace-metric__top,
.workspace-card__eyebrow { color: var(--ptsea-green-deep); }
.workspace-context dd,
.workspace-metric p { color: var(--ptsea-text-muted); }
.workspace-text-link { color: var(--ptsea-green-deep); }
.workspace-text-link:hover { color: var(--ptsea-green); }
.workspace-text-link:focus-visible { color: var(--ptsea-green-deep); }
.workspace-context__status { background: rgba(255, 255, 255, .8) !important; }
.workspace-button { border-radius: var(--ptsea-radius-sm); }
.workspace-button--primary {
  color: #fff;
  background: linear-gradient(180deg, #2a915f, var(--ptsea-green-deep));
  box-shadow: 0 5px 14px rgba(10, 74, 42, 0.2);
}
.workspace-button--primary:hover { color: #fff; background: #145f3b; }
.workspace-button--secondary {
  color: var(--ptsea-text-heading);
  background: rgba(255, 255, 255, 0.82);
  border-color: var(--ptsea-border-strong);
}
.workspace-metric { border-radius: 0.9rem; }
.workspace-metric__icon { color: var(--ptsea-green-deep); background: var(--ptsea-green-soft); }
.workspace-metric::after { background: var(--ptsea-green); }
.workspace-metric:nth-child(2)::after { background: var(--ptsea-gold); }
.workspace-metric:nth-child(3)::after { background: #69aa7f; }
.workspace-metric:nth-child(4)::after { background: linear-gradient(90deg, var(--ptsea-green), var(--ptsea-gold)); }

.ptsea-app-footer {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 1rem;
  margin-top: auto;
  padding: 1rem 2rem;
  color: var(--ptsea-text-muted);
  border-top: 1px solid var(--ptsea-border);
  background: color-mix(in srgb, var(--ptsea-surface) 92%, transparent);
  font-size: 0.76rem;
}

[data-bs-theme="dark"] body {
  background:
    radial-gradient(circle at 92% 4%, rgba(201, 162, 39, 0.055), transparent 22rem),
    var(--ptsea-bg);
}
[data-bs-theme="dark"] .ptsea-topbar,
[data-bs-theme="dark"] .ptsea-app-footer { background: rgba(21, 28, 39, 0.94); }
[data-bs-theme="dark"] .ptsea-card,
[data-bs-theme="dark"] .ptsea-stat,
[data-bs-theme="dark"] .workspace-card,
[data-bs-theme="dark"] .workspace-metric { background: var(--ptsea-surface); border-color: var(--ptsea-border); }
[data-bs-theme="dark"] .workspace-text-link,
[data-bs-theme="dark"] .workspace-text-link:focus-visible { color: #76c99b; }
[data-bs-theme="dark"] .workspace-text-link:hover { color: #9bdbb7; }
[data-bs-theme="dark"] .workspace-context__status { background: rgba(25, 47, 42, .9) !important; }
[data-bs-theme="dark"] .workspace-hero {
  background: #16241e;
  border-color: #315443;
}
[data-bs-theme="dark"] .workspace-hero h1,
[data-bs-theme="dark"] .workspace-metric strong,
[data-bs-theme="dark"] .workspace-card h2,
[data-bs-theme="dark"] .workspace-table__number { color: #edf7f1; }
[data-bs-theme="dark"] .workspace-button--secondary { color: #edf7f1; background: #203129; border-color: #3a5547; }
[data-bs-theme="dark"] .ptsea-table th,
[data-bs-theme="dark"] .workspace-table th { color: #bde2ca; background: #1b2b24; }
[data-bs-theme="dark"] .ptsea-form .bg-white,
[data-bs-theme="dark"] .ptsea-form .bg-light { background-color: var(--ptsea-surface) !important; }

@media (max-width: 991.98px) {
  .ptsea-topbar { min-height: 64px; padding: 0.65rem 0.9rem; }
  .ptsea-content { padding: 1.25rem 1rem 5.75rem; }
  .ptsea-app-footer { padding: 0.9rem 1rem 5rem; }
}
@media (max-width: 575.98px) {
  .ptsea-page-header { min-height: 0; padding: 1.4rem; }
  .ptsea-page-header::after { display: none; }
  .ptsea-page-header h1 { font-size: 1.45rem; }
  .ptsea-card__body { padding: 1rem; }
  .ptsea-app-footer { flex-direction: column; align-items: center; justify-content: center; text-align: center; font-size: 0.7rem; }
}

/* Compact controls across every portal form. Kept last to override legacy sizes. */
body input.form-control:not([type="file"]),
body select.form-select:not([multiple]) {
  min-height: 38px !important;
  height: 38px;
  padding: 0.32rem 0.6rem !important;
  border-radius: 5px !important;
  font-size: 0.875rem !important;
  line-height: 1.25 !important;
}
body textarea.form-control {
  min-height: 68px !important;
  padding: 0.45rem 0.6rem !important;
  border-radius: 5px !important;
  font-size: 0.875rem !important;
  line-height: 1.35 !important;
}
body form .btn,
.ptsea-content .btn {
  min-height: 36px !important;
  padding: 0.34rem 0.72rem !important;
  border-radius: 5px !important;
  font-size: 0.8125rem !important;
  line-height: 1.2 !important;
}
body form .btn-sm,
.ptsea-content .btn-sm {
  min-height: 32px !important;
  padding: 0.25rem 0.58rem !important;
  font-size: 0.75rem !important;
}
body form .form-check {
  min-height: 30px !important;
  padding-top: 0.28rem !important;
  padding-bottom: 0.28rem !important;
  border-radius: 5px !important;
}
body input[type="file"].form-control {
  min-height: 40px !important;
  padding-block: 0.22rem !important;
}
.ptsea-form .row,
.ptsea-content form:not(.d-inline) .row { --bs-gutter-y: 0.75rem; }
.ptsea-form .mb-3,
.ptsea-content form:not(.d-inline) .mb-3 { margin-bottom: 0.75rem !important; }
@media (max-width: 575.98px) {
  body input.form-control:not([type="file"]),
  body select.form-select:not([multiple]) { min-height: 44px !important; height: 44px; }
  body input[type="file"].form-control { min-height: 44px !important; }
  body form .btn,
  .ptsea-content .btn { min-height: 44px !important; }
  body form .btn-sm,
  .ptsea-content .btn-sm { min-height: 44px !important; }
}

/* Reporting dates share the form's typography and theme colours. */
.ptsea-reporting-dates {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
}
.ptsea-reporting-dates > div { min-width: 0; }
.ptsea-reporting-dates > div:first-child { padding-right: 1.25rem; }
.ptsea-reporting-dates > div + div {
  padding-left: 1.25rem;
  border-left: 1px solid var(--ptsea-border);
}
.ptsea-reporting-dates dt {
  margin-bottom: .3rem;
  font-size: .8125rem;
  font-weight: 400;
  color: var(--ptsea-text-muted);
}
.ptsea-reporting-dates dd {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--ptsea-text);
}
@media (max-width: 575.98px) {
  .ptsea-reporting-dates { grid-template-columns: 1fr; }
  .ptsea-reporting-dates > div:first-child { padding: 0 0 .875rem; }
  .ptsea-reporting-dates > div + div {
    padding: .875rem 0 0;
    border-left: 0;
    border-top: 1px solid var(--ptsea-border);
  }
}
/* Shared alignment for radio and checkbox option groups. */
.ptsea-choice-options { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; }
.ptsea-choice-option { display: flex; align-items: center; gap: .5rem; min-height: 2.5rem; }
.ptsea-form .ptsea-choice-option .form-check-input,
.ptsea-content form .ptsea-choice-option .form-check-input { float: none; flex-shrink: 0; margin: 0; }
.ptsea-choice-option .form-check-label { margin: 0; cursor: pointer; }
