/* /Components/Layout/AdminLayout.razor.rz.scp.css */
/* Solid, opaque backend surface so text no longer competes with the
   marketing watercolor background that bleeds through from site.css. */
.admin-shell[b-3mmy3ipf6o] {
    min-height: 100vh;
    padding-top: 72px;
    background: #eef3f7;
    color: #1f3b47;
    font-size: 1.15rem;
}

.admin-content[b-3mmy3ipf6o] {
    padding-top: 0.5rem;
    padding-bottom: 3rem;
}

/* ::deep reaches the markup each admin page renders into @Body. */

/* Headings: dark navy, clearly readable. */
.admin-content[b-3mmy3ipf6o]  h2 {
    color: #0b2a3c;
    font-weight: 600;
}

.admin-content[b-3mmy3ipf6o]  h3,
.admin-content[b-3mmy3ipf6o]  h4,
.admin-content[b-3mmy3ipf6o]  h5,
.admin-content[b-3mmy3ipf6o]  h6 {
    color: #143a4e;
    font-weight: 600;
}

/* Bootstrap's muted text is too light on the pale panel — darken it. */
.admin-content[b-3mmy3ipf6o]  .text-muted {
    color: #566b78 !important;
}

/* Small helper text is used a lot; keep it small but legible. */
.admin-content[b-3mmy3ipf6o]  .small,
.admin-content[b-3mmy3ipf6o]  small {
    font-size: 0.9rem;
}

/* Tables sit on solid white for maximum contrast. */
.admin-content[b-3mmy3ipf6o]  .table {
    background: #fff;
}

/* Form labels: readable weight and color. */
.admin-content[b-3mmy3ipf6o]  label,
.admin-content[b-3mmy3ipf6o]  .form-label {
    color: #2c4a58;
    font-weight: 500;
}

/* ---- Card theme: match the dashboard cards across every backend page ----
   Same rounded corners, soft navy border, and subtle shadow the dashboard
   tiles use, applied to all Bootstrap .card elements the editors render. */
.admin-content[b-3mmy3ipf6o]  .card {
    --bs-card-border-radius: 14px;
    --bs-card-inner-border-radius: 13px;
    --bs-card-border-color: rgba(11, 42, 60, 0.12);
    --bs-card-bg: #fff;
    box-shadow: 0 1px 3px rgba(11, 42, 60, 0.08);
}

/* Brand-navy card headers (matches the nav bar and dashboard accents). */
.admin-content[b-3mmy3ipf6o]  .card-header {
    background-color: #0b2a3c;
    border-bottom-color: rgba(11, 42, 60, 0.15);
}

/* Primary actions in brand navy so the buttons match the theme too. */
.admin-content[b-3mmy3ipf6o]  .btn-primary {
    --bs-btn-bg: #0b2a3c;
    --bs-btn-border-color: #0b2a3c;
    --bs-btn-hover-bg: #10384f;
    --bs-btn-hover-border-color: #10384f;
    --bs-btn-active-bg: #082130;
    --bs-btn-active-border-color: #082130;
}

.admin-content[b-3mmy3ipf6o]  .btn-outline-primary {
    --bs-btn-color: #0b2a3c;
    --bs-btn-border-color: #0b2a3c;
    --bs-btn-hover-bg: #0b2a3c;
    --bs-btn-hover-border-color: #0b2a3c;
    --bs-btn-active-bg: #0b2a3c;
    --bs-btn-active-border-color: #0b2a3c;
}

/* ---- Zebra striping for the data tables (Links, Sponsors) ----
   Cells are almost entirely covered by full-width form inputs, so shading the
   cell alone is barely visible. We shade the striped cells with a brand tint
   AND make the inputs on those rows transparent (unless focused or disabled)
   so the whole row reads as one alternating band. */
.admin-content[b-3mmy3ipf6o]  .table-striped {
    --bs-table-striped-bg: rgba(11, 42, 60, 0.07);
}

.admin-content[b-3mmy3ipf6o]  .table-striped > tbody > tr:nth-of-type(odd) .form-control:not(:focus):not(:disabled) {
    background-color: transparent;
}

/* Row hover: a stronger tint than the stripe, also read through the inputs so
   the whole hovered row highlights (not just the padding gutters). */
.admin-content[b-3mmy3ipf6o]  .table-hover {
    --bs-table-hover-bg: rgba(11, 42, 60, 0.13);
}

.admin-content[b-3mmy3ipf6o]  .table-hover > tbody > tr:hover .form-control:not(:focus):not(:disabled) {
    background-color: transparent;
}

/* Header row: brand navy with white text so it stands out from the body. */
.admin-content[b-3mmy3ipf6o]  .table > thead th {
    background-color: #0b2a3c;
    color: #fff;
    border-color: #0b2a3c;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-wn9a11c7de] {
  color-scheme: light only;
  background: lightyellow;
  bottom: 0;
  box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
  box-sizing: border-box;
  display: none;
  left: 0;
  padding: 0.6rem 1.25rem 0.7rem 1.25rem;
  position: fixed;
  width: 100%;
  z-index: 1000;
}

  #blazor-error-ui .dismiss[b-wn9a11c7de] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
  }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-2bp8klm5g2],
.components-reconnect-repeated-attempt-visible[b-2bp8klm5g2],
.components-reconnect-failed-visible[b-2bp8klm5g2],
.components-pause-visible[b-2bp8klm5g2],
.components-resume-failed-visible[b-2bp8klm5g2],
.components-rejoining-animation[b-2bp8klm5g2] {
  display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-retrying[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-failed[b-2bp8klm5g2],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-2bp8klm5g2] {
  display: block;
}


#components-reconnect-modal[b-2bp8klm5g2] {
  background-color: white;
  width: 20rem;
  margin: 20vh auto;
  padding: 2rem;
  border: 0;
  border-radius: 0.5rem;
  box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
  opacity: 0;
  transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
  animation: components-reconnect-modal-fadeOutOpacity-b-2bp8klm5g2 0.5s both;

  &[open] {
    animation: components-reconnect-modal-slideUp-b-2bp8klm5g2 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-2bp8klm5g2 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
  }
}

  #components-reconnect-modal[b-2bp8klm5g2]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-2bp8klm5g2 0.5s ease-in-out;
    opacity: 1;
  }

@keyframes components-reconnect-modal-slideUp-b-2bp8klm5g2 {
  0% {
    transform: translateY(30px) scale(0.95);
  }

  100% {
    transform: translateY(0);
  }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-2bp8klm5g2 {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-2bp8klm5g2 {
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
}

.components-reconnect-container[b-2bp8klm5g2] {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
}

#components-reconnect-modal p[b-2bp8klm5g2] {
  margin: 0;
  text-align: center;
}

#components-reconnect-modal button[b-2bp8klm5g2] {
  border: 0;
  background-color: #6b9ed2;
  color: white;
  padding: 4px 24px;
  border-radius: 4px;
}

  #components-reconnect-modal button:hover[b-2bp8klm5g2] {
    background-color: #3b6ea2;
  }

  #components-reconnect-modal button:active[b-2bp8klm5g2] {
    background-color: #6b9ed2;
  }

.components-rejoining-animation[b-2bp8klm5g2] {
  position: relative;
  width: 80px;
  height: 80px;
}

  .components-rejoining-animation div[b-2bp8klm5g2] {
    position: absolute;
    border: 3px solid #0087ff;
    opacity: 1;
    border-radius: 50%;
    animation: components-rejoining-animation-b-2bp8klm5g2 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
  }

    .components-rejoining-animation div:nth-child(2)[b-2bp8klm5g2] {
      animation-delay: -0.5s;
    }

@keyframes components-rejoining-animation-b-2bp8klm5g2 {
  0% {
    top: 40px;
    left: 40px;
    width: 0;
    height: 0;
    opacity: 0;
  }

  4.9% {
    top: 40px;
    left: 40px;
    width: 0;
    height: 0;
    opacity: 0;
  }

  5% {
    top: 40px;
    left: 40px;
    width: 0;
    height: 0;
    opacity: 1;
  }

  100% {
    top: 0px;
    left: 0px;
    width: 80px;
    height: 80px;
    opacity: 0;
  }
}
/* /Components/Pages/Admin/ContentEditor.razor.rz.scp.css */
.summit-card-header[b-v3gjrgunco] {
  background-color: #0b2a3c;
}

/* Darker, more visible tab borders against the light background */
.nav-tabs[b-v3gjrgunco] {
  border-bottom-color: #0b2a3c;
}

  .nav-tabs .nav-link[b-v3gjrgunco] {
    border-color: transparent;
  }

    .nav-tabs .nav-link:hover[b-v3gjrgunco] {
      border-color: #adb5bd #adb5bd #0b2a3c;
    }

    .nav-tabs .nav-link.active[b-v3gjrgunco] {
      border-color: #0b2a3c #0b2a3c #fff;
      font-weight: 600;
    }

/* Flex column that fills from just below the fixed nav to just above the fixed
   save bar. The heading and tab strip size themselves; the tab panel takes the
   rest, so its bottom stays anchored to the screen no matter how tall the
   heading/tabs are. 80px = nav (72) + content top padding (8); 64px ≈ save bar. */
.content-fill[b-v3gjrgunco] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 80px - 64px);
}

/* Bordered panel below the tabs (left/right/bottom), connecting to the tab strip.
   Flexes to fill the remaining height; long content scrolls inside the panel
   (min-height:0 lets a flex child shrink below its content so it can scroll). */
.tab-panel[b-v3gjrgunco] {
    border: 1px solid #0b2a3c;
    border-top: none;
    padding: 1.25rem;
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* Tab reorder arrows */
.tab-move[b-v3gjrgunco] {
  color: #6c757d;
  font-size: 0.85rem;
  text-decoration: none;
}

  .tab-move:hover:not(:disabled)[b-v3gjrgunco] {
    color: #0b2a3c;
  }

  .tab-move:disabled[b-v3gjrgunco] {
    opacity: 0.25;
  }

.nav-link.active .tab-move[b-v3gjrgunco] {
  color: #0b2a3c;
}

/* Card reorder arrows (on the dark header) */
.card-move[b-v3gjrgunco] {
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.8rem;
  text-decoration: none;
}

  .card-move:hover:not(:disabled)[b-v3gjrgunco] {
    color: #fff;
  }

  .card-move:disabled[b-v3gjrgunco] {
    opacity: 0.3;
  }

/* Card delete button (on the dark header) */
.card-delete[b-v3gjrgunco] {
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.95rem;
  text-decoration: none;
}

  .card-delete:hover[b-v3gjrgunco] {
    color: #ff8787;
  }

/* Add-section input */
.add-section-input[b-v3gjrgunco] {
  max-width: 320px;
}

/* Save bar (mirrors /admin/sponsors) */
.save-bar[b-v3gjrgunco] {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1050;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
  border-top: 1px solid #dee2e6;
  padding: 0.6rem 1.5rem;
}

.save-bar-spacer[b-v3gjrgunco] {
  height: 60px;
}

/* Rich text editor sizing (Quill) */
[b-v3gjrgunco] .richtext-editor .ql-container {
  min-height: 140px;
  font-size: 1rem;
}

.link-token-bar[b-v3gjrgunco] {
  background: #f8f9fa;
  border: 1px solid #dee2e6;
  border-radius: 4px;
  padding: 0.5rem;
}

  .link-token-bar .btn[b-v3gjrgunco] {
    max-width: 100%;
    overflow-wrap: anywhere;
  }

.protected-section-card[b-v3gjrgunco] {
  border-color: #0dcaf0 !important;
}
/* /Components/Pages/Admin/Dashboard.razor.rz.scp.css */
/* ---- Header ---- */
.dash-header[b-y8rsos4lyz] {
    margin-bottom: 1.75rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid rgba(11, 42, 60, 0.12);
}

.dash-title[b-y8rsos4lyz] {
    color: #0b2a3c;
    font-size: 2.6rem;
    letter-spacing: 0.03em;
    line-height: 1;
    margin: 0;
}

.dash-subtitle[b-y8rsos4lyz] {
    color: #5a7385;
    font-size: 1rem;
    margin: 0.4rem 0 0;
}

/* ---- Grid ---- */
.dash-grid[b-y8rsos4lyz] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1.25rem;
}

/* ---- Card ---- */
.dash-card[b-y8rsos4lyz] {
    position: relative;
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem;
    background: #fff;
    border: 1px solid rgba(11, 42, 60, 0.10);
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 1px 3px rgba(11, 42, 60, 0.06);
    overflow: hidden;
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

/* Colored accent bar down the left edge */
.dash-card[b-y8rsos4lyz]::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 5px;
    background: var(--accent, #0b2a3c);
    transition: width 0.18s ease;
}

.dash-card:hover[b-y8rsos4lyz],
.dash-card:focus-visible[b-y8rsos4lyz] {
    transform: translateY(-4px);
    box-shadow: 0 12px 24px rgba(11, 42, 60, 0.16);
    border-color: var(--accent, #0b2a3c);
    outline: none;
}

.dash-card:hover[b-y8rsos4lyz]::before,
.dash-card:focus-visible[b-y8rsos4lyz]::before {
    width: 8px;
}

/* ---- Icon ---- */
.dash-icon[b-y8rsos4lyz] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 12px;
    color: var(--accent, #0b2a3c);
    background: var(--accent-soft, rgba(11, 42, 60, 0.08));
    transition: background 0.18s ease, color 0.18s ease;
}

.dash-icon svg[b-y8rsos4lyz] {
    width: 26px;
    height: 26px;
}

.dash-card:hover .dash-icon[b-y8rsos4lyz],
.dash-card:focus-visible .dash-icon[b-y8rsos4lyz] {
    background: var(--accent, #0b2a3c);
    color: #fff;
}

/* ---- Text ---- */
.dash-card-body[b-y8rsos4lyz] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}

.dash-card-title[b-y8rsos4lyz] {
    color: #0b2a3c;
    font-size: 1.2rem;
    font-weight: 600;
    line-height: 1.2;
}

.dash-card-text[b-y8rsos4lyz] {
    color: #6b7f8c;
    font-size: 0.9rem;
    line-height: 1.35;
}

/* ---- Arrow ---- */
.dash-arrow[b-y8rsos4lyz] {
    flex: 0 0 auto;
    margin-left: auto;
    color: var(--accent, #0b2a3c);
    font-size: 1.4rem;
    opacity: 0;
    transform: translateX(-6px);
    transition: opacity 0.18s ease, transform 0.18s ease;
}

.dash-card:hover .dash-arrow[b-y8rsos4lyz],
.dash-card:focus-visible .dash-arrow[b-y8rsos4lyz] {
    opacity: 1;
    transform: translateX(0);
}

/* ---- Per-card accent colors (brand palette) ---- */
.dash-card--event[b-y8rsos4lyz] {
    --accent: #0b2a3c;
    --accent-soft: rgba(11, 42, 60, 0.08);
}

.dash-card--sponsors[b-y8rsos4lyz] {
    --accent: #c98727;
    --accent-soft: rgba(201, 135, 39, 0.12);
}

.dash-card--content[b-y8rsos4lyz] {
    --accent: #4c8a8e;
    --accent-soft: rgba(76, 138, 142, 0.12);
}

.dash-card--links[b-y8rsos4lyz] {
    --accent: #004773;
    --accent-soft: rgba(0, 71, 115, 0.10);
}
/* /Components/Pages/Admin/EventEditor.razor.rz.scp.css */
/* Theme image preview in the Page Header chooser */
.header-preview[b-p8pylpnxop] {
  display: block;
  max-width: 100%;
  max-height: 120px;
  object-fit: contain;
  border: 1px solid #dee2e6;
  border-radius: 4px;
  background: #f8f9fa;
}

/* Save bar (mirrors /admin/sponsors) */
.save-bar[b-p8pylpnxop] {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1050;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
  border-top: 1px solid #dee2e6;
  padding: 0.6rem 1.5rem;
}

.save-bar-spacer[b-p8pylpnxop] {
  height: 60px;
}
/* /Components/Pages/Admin/LinksEditor.razor.rz.scp.css */
/* Round the table's corners (including the navy header) so it matches the
   card-wrapped tables on the Sponsors page. border-collapse:collapse ignores
   corner radius on cells, so we clip the whole table with a rounded wrapper. */
.links-table-wrap[b-q799di6uef] {
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(11, 42, 60, 0.08);
}

/* Column widths */
.col-key[b-q799di6uef] {
  width: 160px;
}

.col-token[b-q799di6uef] {
  width: 210px;
}

.col-btntext[b-q799di6uef] {
  width: 130px;
}

.col-btncss[b-q799di6uef] {
  width: 160px;
}

.col-linkdelete[b-q799di6uef] {
  width: 56px;
}

/* The confirm spans the whole table, so drop the zebra tint behind it. */
.link-delete-row > td[b-q799di6uef] {
  background: #fff;
}

/* Add-link form: give each field a sensible width but let them wrap on narrow
   screens rather than squeezing. */
.add-link-key[b-q799di6uef] {
  width: 200px;
}

.add-link-label[b-q799di6uef] {
  width: 220px;
}

.add-link-url[b-q799di6uef] {
  flex: 1 1 280px;
  min-width: 240px;
}

/* Save bar (mirrors /admin/sponsors) */
.save-bar[b-q799di6uef] {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1050;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
  border-top: 1px solid #dee2e6;
  padding: 0.6rem 1.5rem;
}

.save-bar-spacer[b-q799di6uef] {
  height: 60px;
}
/* /Components/Pages/Admin/SponsorsEditor.razor.rz.scp.css */
/* Tier header */
.tier-label-input[b-9piv1rxsvz] {
  max-width: 320px;
}

/* Sponsor table column widths */
.col-reorder[b-9piv1rxsvz] {
  width: 58px;
}

/* Tier reorder controls occupy the same leading column as the sponsor rows,
   so the grip + chevrons line up vertically with the ones in the table. */
.tier-reorder[b-9piv1rxsvz] {
  width: 58px;
}

.col-logoheight[b-9piv1rxsvz] {
  width: 82px;
}

.col-cssclass[b-9piv1rxsvz] {
  width: 110px;
}

.col-active[b-9piv1rxsvz] {
  width: 62px;
}

.col-delete[b-9piv1rxsvz] {
  width: 52px;
}

/* Logo path cell */
.logo-thumb[b-9piv1rxsvz] {
  height: 32px;
  max-width: 80px;
  object-fit: contain;
  border: 1px solid #dee2e6;
  border-radius: 3px;
  background: #f8f9fa;
  flex-shrink: 0;
}

/* Hidden-on-site tier */
.tier-hidden[b-9piv1rxsvz] {
  opacity: 0.65;
}

/* Add sponsor level input */
.add-tier-input[b-9piv1rxsvz] {
  max-width: 320px;
}

/* Sortable column header */
.sort-header[b-9piv1rxsvz] {
  color: inherit;
}

  .sort-header:hover[b-9piv1rxsvz] {
    color: #0d6efd;
  }

  .sort-header .bi[b-9piv1rxsvz] {
    font-size: 0.85em;
    opacity: 0.6;
  }

/* Per-tier content token in the header */
.tier-token-input[b-9piv1rxsvz] {
  max-width: 220px;
  background: rgba(255,255,255,0.15);
  color: #fff;
  border-color: rgba(255,255,255,0.4);
}

/* Drag & drop reorder */
.drag-handle[b-9piv1rxsvz] {
  cursor: grab;
  color: #6c757d;
  line-height: 1;
  font-size: 1.5rem;
}

  .drag-handle:active[b-9piv1rxsvz] {
    cursor: grabbing;
  }

tr.drag-over td[b-9piv1rxsvz] {
  border-top: 2px solid #0d6efd;
  background-color: #e7f1ff;
}

/* Tier (sponsor level) drag & drop */
.tier-drag-handle[b-9piv1rxsvz] {
  cursor: grab;
  color: rgba(255, 255, 255, 0.75);
  line-height: 1;
  font-size: 1.5rem;
}

  .tier-drag-handle:active[b-9piv1rxsvz] {
    cursor: grabbing;
  }

.tier-drag-over[b-9piv1rxsvz] {
  outline: 2px solid #0d6efd;
  outline-offset: 2px;
}

/* Unsaved change indicator */
.cell-changed[b-9piv1rxsvz] {
  background-color: #fff3b0 !important;
}

/* Save bar */
.save-bar[b-9piv1rxsvz] {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 1050;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(4px);
  border-top: 1px solid #dee2e6;
  padding: 0.6rem 1.5rem;
}

.save-bar-spacer[b-9piv1rxsvz] {
  height: 60px;
}

/* Image picker modal */
.picker-overlay[b-9piv1rxsvz] {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  z-index: 2000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 2rem;
  overflow-y: auto;
}

.picker-modal[b-9piv1rxsvz] {
  background: #fff;
  border-radius: 8px;
  width: min(1400px, 96vw);
  /* Fill the viewport apart from the overlay's 2rem padding top and bottom.
     This used to be min(92vh, 900px); the 900px cap wasted most of a tall
     monitor, which is where the image grid benefits most. */
  height: calc(100vh - 4rem);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.picker-filter[b-9piv1rxsvz] {
  max-width: 220px;
}

.upload-file-input[b-9piv1rxsvz] {
  max-width: 260px;
}

.upload-folder-input[b-9piv1rxsvz] {
  max-width: 200px;
}

.picker-folder-tree[b-9piv1rxsvz] {
  width: 210px;
  flex-shrink: 0;
  border-right: 1px solid #dee2e6;
  overflow-y: auto;
  background: #f8f9fa;
}

.picker-folder-tree-header[b-9piv1rxsvz] {
  border-bottom: 1px solid #dee2e6;
  padding: 0.5rem;
}

.picker-new-folder-hint[b-9piv1rxsvz] {
  font-size: 0.72rem;
  margin-bottom: 0.25rem;
  word-break: break-all;
}

.picker-delete-confirm[b-9piv1rxsvz] {
  background: #fff3cd;
  border-bottom: 1px solid #ffc107;
  padding: 0.5rem;
}

.picker-delete-path[b-9piv1rxsvz] {
  word-break: break-all;
}

.picker-folder-label[b-9piv1rxsvz] {
  flex-grow: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}

.picker-folder-actions[b-9piv1rxsvz] {
  opacity: 0;
  transition: opacity 0.15s;
  line-height: 1;
}

.picker-folder-item:hover .picker-folder-actions[b-9piv1rxsvz] {
  opacity: 1;
}

.picker-folder-new[b-9piv1rxsvz],
.picker-folder-delete[b-9piv1rxsvz] {
  line-height: 1;
  font-size: 1rem;
}


.picker-folder-item[b-9piv1rxsvz] {
  cursor: pointer;
  font-size: 0.92rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.picker-image-grid[b-9piv1rxsvz] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 0.75rem;
}

.picker-image-tile[b-9piv1rxsvz] {
  cursor: pointer;
}

.picker-tile-check[b-9piv1rxsvz] {
  position: absolute;
  top: 4px;
  left: 4px;
  font-size: 1.1rem;
  line-height: 1;
  pointer-events: none;
}

.picker-thumb[b-9piv1rxsvz] {
  height: 60px;
  max-width: 100%;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}

.picker-thumb-label[b-9piv1rxsvz] {
  font-size: 0.65rem;
  word-break: break-all;
  line-height: 1.2;
}

/* Cap the in-use list so the confirm buttons stay reachable. */
.picker-warning-list[b-9piv1rxsvz] {
  max-height: 9rem;
  overflow-y: auto;
  word-break: break-all;
}
/* /Components/Shared/AdminPageHeading.razor.rz.scp.css */
/* Wraps tightly to the title so the hover highlight fits the title, not the
   whole page width. Negative left margin keeps the icon aligned with the
   page content below despite the pill's padding. */
.page-heading[b-2wd1fxhhgf] {
    display: inline-flex;
    align-items: center;
    gap: 1rem;
    padding: 0.55rem 0.9rem;
    margin-left: -0.9rem;
    border-radius: 14px;
    transition: background-color 0.2s ease;
}

/* Icon tile — mirrors the dashboard card's .dash-icon. */
.page-heading-icon[b-2wd1fxhhgf] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 12px;
    color: var(--accent, #0b2a3c);
    background: var(--accent-soft, rgba(11, 42, 60, 0.08));
    transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.page-heading-icon svg[b-2wd1fxhhgf] {
    width: 26px;
    height: 26px;
}

.page-heading-title[b-2wd1fxhhgf] {
    margin: 0;
    color: #0b2a3c;
    font-weight: 600;
}

/* Pizzaz: hovering the heading highlights the whole title with a soft accent
   pill and fills the icon tile (straight — no tilt). */
.page-heading:hover[b-2wd1fxhhgf] {
    background-color: var(--accent-soft, rgba(11, 42, 60, 0.08));
}

.page-heading:hover .page-heading-icon[b-2wd1fxhhgf] {
    background: var(--accent, #0b2a3c);
    color: #fff;
    transform: scale(1.05);
}

/* Per-page accent palette (identical to the dashboard cards). */
.page-heading--event[b-2wd1fxhhgf] {
    --accent: #0b2a3c;
    --accent-soft: rgba(11, 42, 60, 0.08);
}

.page-heading--sponsors[b-2wd1fxhhgf] {
    --accent: #c98727;
    --accent-soft: rgba(201, 135, 39, 0.12);
}

.page-heading--content[b-2wd1fxhhgf] {
    --accent: #4c8a8e;
    --accent-soft: rgba(76, 138, 142, 0.12);
}

.page-heading--links[b-2wd1fxhhgf] {
    --accent: #004773;
    --accent-soft: rgba(0, 71, 115, 0.10);
}
/* /Components/Shared/FilePicker.razor.rz.scp.css */
/* Mirrors ImagePicker's modal so the two browsers feel the same. */
.picker-overlay[b-kxighclrgm] {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  z-index: 2000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 2rem;
  overflow-y: auto;
}

.picker-modal[b-kxighclrgm] {
  background: #fff;
  border-radius: 8px;
  width: min(1400px, 96vw);
  /* Fill the viewport apart from the overlay's 2rem padding top and bottom.
     This used to be min(92vh, 900px); the 900px cap wasted most of a tall
     monitor, which is where the file grid benefits most. */
  height: calc(100vh - 4rem);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.picker-filter[b-kxighclrgm] {
  max-width: 220px;
}

.picker-folder-tree[b-kxighclrgm] {
  width: 230px;
  flex-shrink: 0;
  border-right: 1px solid #dee2e6;
  overflow-y: auto;
  background: #f8f9fa;
}

.picker-folder-item[b-kxighclrgm] {
  cursor: pointer;
  font-size: 0.92rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding: 0.35rem 0.5rem;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.picker-folder-label[b-kxighclrgm] {
  flex-grow: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}

.picker-folder-tree-header[b-kxighclrgm] {
  border-bottom: 1px solid #dee2e6;
  padding: 0.5rem;
}

.picker-new-folder-hint[b-kxighclrgm] {
  font-size: 0.72rem;
  margin-bottom: 0.25rem;
  word-break: break-all;
}

/* Folder actions stay hidden until the row is hovered, as on the Sponsors
   picker — keeps the tree readable. */
.picker-folder-actions[b-kxighclrgm] {
  opacity: 0;
  transition: opacity 0.15s;
  line-height: 1;
}

.picker-folder-item:hover .picker-folder-actions[b-kxighclrgm] {
  opacity: 1;
}

.upload-file-input[b-kxighclrgm] {
  max-width: 260px;
}

/* The folder tree is narrow, so cap the in-use list and let it scroll rather
   than pushing the confirm buttons out of reach. */
.picker-warning-list[b-kxighclrgm] {
  max-height: 9rem;
  overflow-y: auto;
  word-break: break-all;
}

.picker-image-grid[b-kxighclrgm] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 0.75rem;
}

.picker-image-tile[b-kxighclrgm] {
  cursor: pointer;
}

.picker-thumb[b-kxighclrgm] {
  height: 60px;
  max-width: 100%;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}

/* Stand-in for formats the browser can't preview (PDFs). */
.picker-file-icon[b-kxighclrgm] {
  color: #0b2a3c;
  font-size: 2rem;
}

.picker-thumb-label[b-kxighclrgm] {
  font-size: 0.65rem;
  word-break: break-all;
  line-height: 1.2;
}
/* /Components/Shared/ImagePicker.razor.rz.scp.css */
.picker-overlay[b-n0evbt5cnx] {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  z-index: 2000;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 2rem;
  overflow-y: auto;
}

.picker-modal[b-n0evbt5cnx] {
  background: #fff;
  border-radius: 8px;
  width: min(1400px, 96vw);
  /* Fill the viewport apart from the overlay's 2rem padding top and bottom;
     matches the Sponsors and file pickers. */
  height: calc(100vh - 4rem);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.picker-filter[b-n0evbt5cnx] {
  max-width: 220px;
}

.upload-file-input[b-n0evbt5cnx] {
  max-width: 260px;
}

.upload-folder-input[b-n0evbt5cnx] {
  max-width: 200px;
}

.picker-folder-tree[b-n0evbt5cnx] {
  width: 210px;
  flex-shrink: 0;
  border-right: 1px solid #dee2e6;
  overflow-y: auto;
  background: #f8f9fa;
}

.picker-folder-tree-header[b-n0evbt5cnx] {
  border-bottom: 1px solid #dee2e6;
  padding: 0.5rem;
}

.picker-new-folder-hint[b-n0evbt5cnx] {
  font-size: 0.72rem;
  margin-bottom: 0.25rem;
  word-break: break-all;
}

.picker-folder-label[b-n0evbt5cnx] {
  flex-grow: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}

.picker-folder-actions[b-n0evbt5cnx] {
  opacity: 0;
  transition: opacity 0.15s;
  line-height: 1;
}

.picker-folder-item:hover .picker-folder-actions[b-n0evbt5cnx] {
  opacity: 1;
}

.picker-folder-new[b-n0evbt5cnx] {
  line-height: 1;
  font-size: 1rem;
}

.picker-folder-item[b-n0evbt5cnx] {
  cursor: pointer;
  font-size: 0.92rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-top: 0.35rem;
  padding-bottom: 0.35rem;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.picker-image-grid[b-n0evbt5cnx] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 0.75rem;
}

.picker-image-tile[b-n0evbt5cnx] {
  cursor: pointer;
}

.picker-thumb[b-n0evbt5cnx] {
  height: 60px;
  max-width: 100%;
  object-fit: contain;
  display: block;
  margin: 0 auto;
}

.picker-thumb-label[b-n0evbt5cnx] {
  font-size: 0.65rem;
  word-break: break-all;
  line-height: 1.2;
}
