/* /Components/Controls/BoatClassSelect.razor.rz.scp.css */
.boat-class-select[b-iqfpi3vxk4] {
    min-width: 0;
}

/* A click anywhere outside the list closes it - above a modal (z-index 1055), below the list. */
.boat-class-select-backdrop[b-iqfpi3vxk4] {
    position: fixed;
    inset: 0;
    z-index: 1060;
    background: transparent;
}

.boat-class-select-panel[b-iqfpi3vxk4] {
    position: fixed;
    z-index: 1061;
    padding: 0.5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.375rem;
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
}

.boat-class-select-list[b-iqfpi3vxk4] {
    max-height: 260px;
    overflow-y: auto;
}

.boat-class-select-item[b-iqfpi3vxk4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.75rem;
    cursor: pointer;
    color: var(--bs-body-color);
}

.boat-class-select-item:hover[b-iqfpi3vxk4] {
    background-color: rgba(13, 110, 253, 0.1);
}

.boat-class-select-item.highlighted[b-iqfpi3vxk4] {
    background-color: rgba(13, 110, 253, 0.2);
}

.boat-class-select-item.current .boat-class-select-name[b-iqfpi3vxk4] {
    font-weight: 600;
}

.boat-class-select-item.none[b-iqfpi3vxk4] {
    color: var(--bs-secondary-color, #6c757d);
}

.boat-class-select-name[b-iqfpi3vxk4] {
    flex: 1;
}

.boat-class-select-type[b-iqfpi3vxk4] {
    color: var(--bs-secondary-color, #6c757d);
    min-width: 5rem;
}

.boat-class-select-yardstick[b-iqfpi3vxk4] {
    min-width: 3.5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* /Components/Controls/DropdownButton.razor.rz.scp.css */
.dropdown-button-backdrop[b-2pd7bwwdih] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}

/* Popper.js isn't loaded (see SplitButton.razor.css), so position the menu under the button ourselves. */
.dropdown-menu[b-2pd7bwwdih] {
    top: 100%;
    left: 0;
    margin-top: 0.125rem;
}

.dropdown-menu-end[b-2pd7bwwdih] {
    left: auto;
    right: 0;
}

/* Hover mode: no gap between button and menu, or the pointer would leave the hover area crossing it. */
.dropdown-hover > .dropdown-menu[b-2pd7bwwdih] {
    margin-top: 0;
}

.dropdown-hover:hover > .dropdown-menu[b-2pd7bwwdih] {
    display: block;
}

/* The page title bar styles every link in it (MainLayout.razor.css: a left margin, underline on hover),
   which would indent and underline the menu items - so put them back to normal menu items. */
.dropdown-button-menu[b-2pd7bwwdih]  .dropdown-item {
    margin-left: 0;
}

.dropdown-button-menu[b-2pd7bwwdih]  .dropdown-item:hover {
    text-decoration: none;
}

/* A long menu (eg: a tick box per section and column) scrolls rather than running off the page. */
.dropdown-button-menu[b-2pd7bwwdih] {
    max-height: 70vh;
    overflow-y: auto;
}
/* /Components/Controls/DropPicker.razor.rz.scp.css */
.drop-picker[b-c18f9jf663] {
    position: relative;
    display: inline-block;
}

/* Bootstrap's own .dropdown-menu has no top/left offset of its own - normally Popper.js
   supplies it at runtime. That's not loaded here, so without this the menu falls back to its
   flex "static position" instead of appearing below the button (see SplitButton.razor.css,
   which does the same thing for its own scope). */
.dropdown-menu[b-c18f9jf663] {
    top: 100%;
    left: 0;
    margin-top: 0.125rem;
}

.drop-picker-backdrop[b-c18f9jf663] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}
/* /Components/Controls/EntrantList.razor.rz.scp.css */
.entrant-list-item[b-nvlsq7ytvr] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.75rem;
    cursor: pointer;
    color: var(--bs-body-color);
}

.entrant-list-item:hover[b-nvlsq7ytvr] {
    background-color: rgba(13, 110, 253, 0.1);
}

.entrant-list-item.highlighted[b-nvlsq7ytvr] {
    background-color: rgba(13, 110, 253, 0.2);
}

.entrant-list-sailno[b-nvlsq7ytvr] {
    font-weight: 600;
    min-width: 3.5rem;
}

.entrant-list-boat[b-nvlsq7ytvr] {
    color: var(--bs-secondary-color, #6c757d);
    min-width: 6rem;
}

.entrant-list-class[b-nvlsq7ytvr] {
    color: var(--bs-secondary-color, #6c757d);
    min-width: 4rem;
}

.entrant-list-name[b-nvlsq7ytvr] {
    flex: 1;
}

.entrant-list-item.marked[b-nvlsq7ytvr] {
    opacity: 0.45;
}

.entrant-list-badge[b-nvlsq7ytvr] {
    font-size: 0.75rem;
    color: #198754;
    white-space: nowrap;
}

.entrant-list-item mark[b-nvlsq7ytvr] {
    background-color: #fff3a0;
    color: #212529;
    padding: 0;
}
/* /Components/Controls/EntrantSelect.razor.rz.scp.css */
.entrant-select[b-f2rf4pil9w] {
    min-width: 0;
}

/* A click anywhere outside the list closes it - above the modal (z-index 1055), below the list. */
.entrant-select-backdrop[b-f2rf4pil9w] {
    position: fixed;
    inset: 0;
    z-index: 1060;
    background: transparent;
}

.entrant-select-panel[b-f2rf4pil9w] {
    position: fixed;
    z-index: 1061;
    padding: 0.5rem;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.375rem;
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
}

.entrant-select-list[b-f2rf4pil9w] {
    max-height: 260px;
    overflow-y: auto;
}

.entrant-select-none[b-f2rf4pil9w] {
    padding: 0.35rem 0.75rem;
    cursor: pointer;
    color: var(--bs-secondary-color, #6c757d);
}

.entrant-select-none:hover[b-f2rf4pil9w] {
    background-color: rgba(13, 110, 253, 0.1);
}
/* /Components/Controls/FormSheet.razor.rz.scp.css */
.form-sheet[b-oxexf4mop5] {
    background: #fff;
    color: #000;
}

.form-sheet-heading[b-oxexf4mop5] {
    margin-bottom: .25rem;
}

.form-sheet-subheading[b-oxexf4mop5] {
    margin-bottom: 1rem;
    font-weight: normal;
}

.form-sheet-text[b-oxexf4mop5] {
    margin-bottom: .75rem;
}

.form-sheet-table[b-oxexf4mop5] {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    margin-bottom: 1rem;
}

.form-sheet-table th[b-oxexf4mop5],
.form-sheet-table td[b-oxexf4mop5] {
    border: 1px solid #444;
    padding: .25rem .4rem;
    height: 2.1rem;
    vertical-align: middle;
    overflow-wrap: anywhere;
}

.form-sheet-table th[b-oxexf4mop5] {
    background: #eee;
    text-align: left;
}

.form-sheet-subheader[b-oxexf4mop5] {
    font-size: .75em;
    font-weight: normal;
    color: #555;
}

.form-sheet-table td.form-sheet-sign[b-oxexf4mop5] {
    height: 2.8rem;
}

.form-sheet-table td.form-sheet-tick[b-oxexf4mop5] {
    text-align: center;
}

.form-sheet-box[b-oxexf4mop5] {
    display: inline-block;
    width: 1.1rem;
    height: 1.1rem;
    border: 1px solid #444;
    vertical-align: middle;
}

.form-sheet-placeholder[b-oxexf4mop5] {
    color: #aaa;
    font-style: italic;
    font-size: .85em;
}

.form-sheet-declaration[b-oxexf4mop5] {
    margin-top: 1rem;
}

.form-sheet-signature[b-oxexf4mop5] {
    display: flex;
    gap: 1.5rem;
    margin-top: 2.5rem;
}

.form-sheet-signature span[b-oxexf4mop5] {
    flex: 1;
    border-top: 1px solid #444;
    font-size: .8em;
    color: #555;
}

@media print {
    .form-sheet-table th[b-oxexf4mop5] {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .form-sheet-table tr[b-oxexf4mop5] {
        break-inside: avoid;
    }

    .form-sheet-table thead[b-oxexf4mop5] {
        display: table-header-group;
    }
}

.form-sheet-group[b-oxexf4mop5] {
    margin: 1rem 0 .4rem;
}

@media print {
    .form-sheet-newpage[b-oxexf4mop5] {
        break-before: page;
        page-break-before: always;
    }
}

.form-sheet-outer[b-oxexf4mop5] {
    width: 100%;
    border-collapse: collapse;
}

.form-sheet-outer > thead > tr > td[b-oxexf4mop5],
.form-sheet-outer > tbody > tr > td[b-oxexf4mop5],
.form-sheet-outer > tfoot > tr > td[b-oxexf4mop5] {
    padding: 0;
    border: 0;
    vertical-align: top;
}

.form-sheet-header[b-oxexf4mop5] {
    display: flex;
    gap: 1.5rem;
    align-items: flex-start;
}

.form-sheet-header-left[b-oxexf4mop5] {
    flex-direction: row-reverse;
}

.form-sheet-header-main[b-oxexf4mop5] {
    flex: 1;
    min-width: 0;
}

.form-sheet-panel[b-oxexf4mop5] {
    flex: none;
    border: 1px solid #444;
    padding: .4rem .6rem;
    margin-bottom: 1rem;
}

.form-sheet-field[b-oxexf4mop5] {
    display: flex;
    align-items: flex-end;
    gap: .5rem;
    min-height: 1.9rem;
}

.form-sheet-field-label[b-oxexf4mop5] {
    flex: none;
    font-weight: 600;
    font-size: .9em;
}

.form-sheet-field-line[b-oxexf4mop5] {
    flex: 1;
    border-bottom: 1px solid #888;
    min-height: 1.4rem;
}

@media print {
    .form-sheet-outer > thead[b-oxexf4mop5] {
        display: table-header-group;
    }

    .form-sheet-outer > tfoot[b-oxexf4mop5] {
        display: table-footer-group;
    }
}

/* A panel with no headings beside it - keeps to its own side. */
.form-sheet-header-alone[b-oxexf4mop5] {
    justify-content: flex-end;
}

.form-sheet-header-alone.form-sheet-header-left[b-oxexf4mop5] {
    flex-direction: row;
    justify-content: flex-start;
}

.form-sheet-header-alone .form-sheet-header-main[b-oxexf4mop5] {
    display: none;
}

/* Sheet padding (the print page turns it into the page margin instead). */
.form-sheet[b-oxexf4mop5] {
    padding: var(--pad, 10mm);
}

/* Per-section font settings arrive as --fw / --fi and a font-size; headings size themselves in em so they scale. */
.form-sheet-block[b-oxexf4mop5] {
    font-weight: var(--fw, inherit);
    font-style: var(--fi, inherit);
}

.form-sheet-heading[b-oxexf4mop5] {
    font-size: 2em;
    font-weight: var(--fw, 700);
}

.form-sheet-subheading[b-oxexf4mop5] {
    font-size: 1.5em;
    font-weight: var(--fw, 400);
}

.form-sheet-group[b-oxexf4mop5] {
    font-size: 1.25em;
}

.form-sheet-table th[b-oxexf4mop5] {
    font-weight: var(--fw, 700);
}

@media print {
    .form-sheet[b-oxexf4mop5] {
        padding: 0;
    }
}

/* Fields section (registration form): a grid of labelled lines. */
.form-sheet-fields[b-oxexf4mop5] {
    margin-bottom: 1rem;
}

.form-sheet-fields-grid[b-oxexf4mop5] {
    display: grid;
    column-gap: 1.5rem;
    row-gap: .25rem;
}

.form-sheet-field-tall[b-oxexf4mop5] {
    flex-direction: column;
    align-items: stretch;
    gap: .15rem;
}

.form-sheet-field-tall .form-sheet-field-line[b-oxexf4mop5] {
    border: 1px solid #888;
    padding: .2rem .4rem;
}

/* Footer items pinned to the bottom of every printed page (FormSheet PinFooter). Not used on screen. */
.form-sheet-footer-fixed[b-oxexf4mop5] {
    display: none;
}

@media print {
    /* The <tfoot> copy stays only to keep that much room free at the bottom of each page. */
    .form-sheet-footer-space[b-oxexf4mop5] {
        visibility: hidden;
    }

    .form-sheet-footer-fixed[b-oxexf4mop5] {
        display: block;
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
    }
}
/* /Components/Controls/HighlightText.razor.rz.scp.css */
mark[b-psy61lhs80] {
    background-color: #fff3a0;
    color: #212529;
    padding: 0;
}
/* /Components/Controls/LoadingOverlay.razor.rz.scp.css */
.loading-overlay[b-cue4qthsqh] {
    position: absolute;
    inset: 0;
    z-index: 50;
    background: color-mix(in srgb, var(--bs-body-bg) 65%, transparent);
    /* Waiting on the server - nothing behind it should be clicked meanwhile. */
    cursor: progress;
}

.loading-overlay-box[b-cue4qthsqh] {
    position: sticky;
    top: 35vh;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: fit-content;
    margin: 0 auto;
    padding: 0.75rem 1.25rem;
    border-radius: 0.5rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--bs-border-color);
    box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.2);
    font-weight: 500;
}

/* Quick loads (an Add Result, a save) finish before this shows, so it only appears when the wait is noticeable. The
   overlay still blocks clicks from the start; only its look is held back. */
.loading-overlay[b-cue4qthsqh] {
    animation: loading-overlay-in-b-cue4qthsqh 0.15s ease-out 0.4s backwards;
}

@keyframes loading-overlay-in-b-cue4qthsqh {
    from { opacity: 0; }
    to { opacity: 1; }
}
/* /Components/Controls/ModifierBadge.razor.rz.scp.css */
/* A plain-text (abbreviation) badge is still just text, which browsers default to an I-beam
   cursor and make selectable - this is an inert hover-for-info label, not editable text. */
.modifier-badge[b-kgd44mgg9r] {
    cursor: default;
    user-select: none;
}
/* /Components/Controls/ModifierBadgeGroup.razor.rz.scp.css */
.modifier-badge-group[b-cviwoh3vgk] {
    position: relative;
    display: inline-block;
}

.modifier-badge-trigger[b-cviwoh3vgk] {
    cursor: default;
    user-select: none;
}

.modifier-badge-popover[b-cviwoh3vgk] {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 20;
    background: var(--bs-body-bg, #fff);
    border: 1px solid rgba(0, 0, 0, 0.15);
    border-radius: 0.375rem;
    padding: 0.35rem 0.5rem;
    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.15);
    white-space: nowrap;
    gap: 0.35rem;
}

.modifier-badge-group:hover .modifier-badge-popover[b-cviwoh3vgk],
.modifier-badge-group:focus-within .modifier-badge-popover[b-cviwoh3vgk] {
    display: flex;
}
/* /Components/Controls/SplitButton.razor.rz.scp.css */
.split-button-backdrop[b-alux5kj7po] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}

/* Bootstrap's own .dropdown-menu has no top/right offset of its own - normally Popper.js
   supplies it at runtime. That's not loaded here, so without this the menu falls back to
   its flex "static position" inside .btn-group, which reads as appearing on/above the
   button instead of below it. */
.dropdown-menu[b-alux5kj7po] {
    top: 100%;
    left: auto;
    right: 0;
    margin-top: 0.125rem;
}

/* OpenOnHover: no gap between button and menu (or the hover would drop in between); the menu shows while the caret or the menu is hovered. */
.split-hover > .dropdown-menu[b-alux5kj7po] {
    margin-top: 0;
}

.split-hover > .dropdown-toggle-split:hover + .dropdown-menu[b-alux5kj7po],
.split-hover > .dropdown-menu:hover[b-alux5kj7po] {
    display: block;
}

/* AlignLeft: hang the menu from the left edge of the button instead. */
.dropdown-menu.menu-start[b-alux5kj7po] {
    left: 0;
    right: auto;
}
/* /Components/Controls/TimeEntry.razor.rz.scp.css */
.time-entry-control[b-8ertr8hicr] {
    position: relative;
    display: flex;
    align-items: stretch;
    gap: 4px;
}

.time-entry-display[b-8ertr8hicr] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: var(--bs-border-radius, 0.375rem);
    padding: 0.25rem 0.5rem;
    background-color: var(--bs-body-bg, #fff);
    outline: none;
}

.time-entry-disabled[b-8ertr8hicr] {
    opacity: 0.65;
    pointer-events: none;
}

.time-entry-disabled .time-entry-display[b-8ertr8hicr] {
    background-color: var(--bs-secondary-bg, #e9ecef);
}

.time-entry-display:focus[b-8ertr8hicr] {
    border-color: #86b7fe;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.time-entry-sep[b-8ertr8hicr] {
    padding: 0 2px;
}

.time-entry-segment[b-8ertr8hicr] {
    padding: 0 2px;
    border-radius: 3px;
    cursor: pointer;
    font-variant-numeric: tabular-nums;
}

.time-entry-segment.active[b-8ertr8hicr] {
    background-color: #0d6efd;
    color: #fff;
}

.time-entry-panel[b-8ertr8hicr] {
    position: absolute;
    z-index: 1050;
    top: 100%;
    left: 0;
    margin-top: 4px;
    display: inline-flex;
}

.time-entry-col[b-8ertr8hicr] {
    max-height: 180px;
    overflow-y: auto;
    overflow-x: hidden;
    width: 56px;
    border-right: 1px solid var(--bs-border-color, #dee2e6);
    border-top: 3px solid transparent;
}

.time-entry-col:last-child[b-8ertr8hicr] {
    border-right: none;
}

.time-entry-col.active-col[b-8ertr8hicr] {
    border-top-color: #0d6efd;
}

.time-entry-item[b-8ertr8hicr] {
    padding: 4px 0;
    text-align: center;
    cursor: pointer;
    user-select: none;
}

.time-entry-item:hover[b-8ertr8hicr] {
    background-color: rgba(13, 110, 253, 0.1);
}

.time-entry-item.selected[b-8ertr8hicr] {
    background-color: #0d6efd;
    color: #fff;
    font-weight: 600;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-i09u2ivuv8] {
  position: relative;
  display: flex;
  flex-direction: column;
}

main[b-i09u2ivuv8] {
  flex: 1;
  /* Flex items default to min-width:auto, which refuses to shrink below content's natural
     width - a wide table inside would grow the whole page instead of scrolling internally
     (e.g. inside .table-responsive) like it's supposed to. */
  min-width: 0;
}

.sidebar[b-i09u2ivuv8] {
  /*    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); */
  background-color: black;
}

.top-row[b-i09u2ivuv8] {
  background-color: black;
  border-bottom: 1px solid #d6d5d5;
  justify-content: space-between;
  height: 3.5rem;
  display: flex;
  align-items: center;
  /* Keep the top bar fixed at the top of the viewport when scrolling */
  position: sticky;
  top: 0;
  z-index: 1000;
}
.top-row-title[b-i09u2ivuv8] {
  color: gray;
}

.top-row-icon[b-i09u2ivuv8] {
  margin-right: 0.5rem;
}

  .top-row[b-i09u2ivuv8]  a, .top-row[b-i09u2ivuv8]  .btn-link {
    white-space: nowrap;
    margin-left: 1.5rem;
    text-decoration: none;
  }

    .top-row[b-i09u2ivuv8]  a:hover, .top-row[b-i09u2ivuv8]  .btn-link:hover {
      text-decoration: underline;
    }

    .top-row[b-i09u2ivuv8]  a:first-child {
      overflow: hidden;
      text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
  .top-row[b-i09u2ivuv8] {
    justify-content: space-between;
  }

    .top-row[b-i09u2ivuv8]  a, .top-row[b-i09u2ivuv8]  .btn-link {
      margin-left: 0;
    }
}

@media (min-width: 641px) {
  .page[b-i09u2ivuv8] {
    flex-direction: row;
  }

  .sidebar[b-i09u2ivuv8] {
    /* rem, not px, so the sidebar scales with the text-size setting (NavMenu.razor) */
    width: 17.1rem;
    /* Allow sidebar to grow with page content so the background continues to the bottom
       Removed fixed viewport height and sticky positioning to avoid internal scrolling */
  }

  .top-row[b-i09u2ivuv8] {
    position: sticky;
    top: 0;
    z-index: 1;
  }

    .top-row.auth[b-i09u2ivuv8]  a:first-child {
      flex: 1;
      text-align: right;
      width: 0;
    }

  .top-row[b-i09u2ivuv8], article[b-i09u2ivuv8] {
    padding-left: 2rem !important;
    padding-right: 1.5rem !important;
  }
}

#blazor-error-ui[b-i09u2ivuv8] {
  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-i09u2ivuv8] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
  }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-htjnhy98fd] {
  appearance: none;
  cursor: pointer;
  width: 3.5rem;
  height: 2.5rem;
  color: white;
  position: absolute;
  top: 0.5rem;
  right: 1rem;
  /* Must sit above the sticky .top-row (z-index 1020), which otherwise covers it and swallows clicks */
  z-index: 1030;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}

.navbar-toggler:checked[b-htjnhy98fd] {
  background-color: rgba(255, 255, 255, 0.5);
}

.top-row[b-htjnhy98fd] {
  min-height: 3.5rem;
  background-color: rgba(0,0,0,0.4);
  /* Keep the small navbar (brand/title) fixed so the app title does not move */
  position: sticky;
  top: 0;
  z-index: 1020;
}

.navbar-brand[b-htjnhy98fd] {
  font-size: 1.1rem;
}

.theme-toggle-button[b-htjnhy98fd] {
  color: #dee2e6;
}

.text-size-control[b-htjnhy98fd] {
  position: relative;
}

.text-size-control .btn[b-htjnhy98fd] {
  color: #dee2e6;
  padding: 0.15rem 0.4rem;
}

.text-size-control .btn:disabled[b-htjnhy98fd] {
  opacity: 0.35;
}

.text-size-reset[b-htjnhy98fd] {
  font-size: 0.75rem;
}

/* Taken out of flow and revealed as a floating overlay on hover/focus, so the
   collapsed control always has a fixed footprint (just the reset icon) and
   never causes the top row to wrap at small text sizes. */
.text-size-button[b-htjnhy98fd] {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background-color: rgba(0, 0, 0, 0.6);
  border-radius: 0.25rem;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.15s ease;
  z-index: 2;
}

.text-size-button-left[b-htjnhy98fd] {
  right: 100%;
}

.text-size-button-right[b-htjnhy98fd] {
  left: 100%;
}

.text-size-control:hover .text-size-button[b-htjnhy98fd],
.text-size-control:focus-within .text-size-button[b-htjnhy98fd] {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.fa-solid[b-htjnhy98fd] {
  display: inline-block;
  margin-right: 0.75rem;
  width: 1.25rem;
  color: inherit;
}
.nomargin[b-htjnhy98fd] {
  margin: 0;
}
.nopadding[b-htjnhy98fd] {
  padding: 0;
}

.nav-item[b-htjnhy98fd] {
  font-size: 0.9rem;
}

  .nav-item:first-of-type[b-htjnhy98fd] {
  }

  .nav-item:last-of-type[b-htjnhy98fd] {
    padding-bottom: 0.2rem;
  }

  .nav-item[b-htjnhy98fd]  .nav-link {
    color: #8f8f8f;
    background: none;
    border: none;
    border-radius: 4px;
    height: 2rem;
    display: flex;
    align-items: center;
    line-height: 3rem;
    width: 100%;
  }

  .nav-item[b-htjnhy98fd]  a.active {
    /* Keep active item visible but don't increase weight */
    color: #ffffff;
    font-weight: normal;
    background-color: rgba(255,255,255,0.06);
  }

  .nav-item[b-htjnhy98fd]  .nav-link:hover {
    background-color: rgba(255,255,255,0.12);
    color: #ffffff;
  }

.nav-scrollable[b-htjnhy98fd] {
  display: none;
}

.folder-toggle[b-htjnhy98fd] {
  padding-bottom: 0.25rem; /* space below the text for border */
  border-bottom: 1px solid #e6e6e6; /* light gray bottom border to indicate folder */
  margin-bottom: 0.25rem; /* small gap to next item */
}

.folder-toggle-button[b-htjnhy98fd] {
  margin-right: 0.1875em; /* smaller gap (~3px) using ems */
  line-height: 1; /* keep button tight */
}

.folder-toggle-link[b-htjnhy98fd] {
  padding-left: 0; /* remove extra padding so border aligns */
}

.navbar-toggler:checked ~ .nav-scrollable[b-htjnhy98fd] {
  display: block;
}

@media (max-width: 640.98px) {
  /* The hamburger is absolutely positioned at the right edge (3.5rem wide, 1rem inset),
     so leave room for it and sit the text-size/theme controls immediately to its left. */
  .top-row-controls[b-htjnhy98fd] {
    margin-right: 4rem;
  }
}

@media (min-width: 641px) {
  .navbar-toggler[b-htjnhy98fd] {
    display: none;
  }

  .nav-scrollable[b-htjnhy98fd] {
    /* Never collapse the sidebar for wide screens */
    display: block;
    /* Let the page handle scrolling; do not set fixed height/overflow so the sidebar
       background stretches with the main content. */
  }
}

.sidebar-mode-button[b-htjnhy98fd] {
  color: #dee2e6;
  padding: 0.15rem 0.4rem;
}

/* The auto-hide option only applies to wide screens; small screens always use the hamburger menu. */
@media (max-width: 640.98px) {
  .sidebar-mode-button[b-htjnhy98fd] {
    display: none;
  }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-ca4yxub6s6],
.components-reconnect-repeated-attempt-visible[b-ca4yxub6s6],
.components-reconnect-failed-visible[b-ca4yxub6s6],
.components-pause-visible[b-ca4yxub6s6],
.components-resume-failed-visible[b-ca4yxub6s6],
.components-rejoining-animation[b-ca4yxub6s6] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-retrying[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-failed[b-ca4yxub6s6],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-ca4yxub6s6] {
    display: block;
}


#components-reconnect-modal[b-ca4yxub6s6] {
    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-ca4yxub6s6 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-ca4yxub6s6 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-ca4yxub6s6 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-ca4yxub6s6]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-ca4yxub6s6 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-ca4yxub6s6 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-ca4yxub6s6 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-ca4yxub6s6 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-ca4yxub6s6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-ca4yxub6s6] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-ca4yxub6s6] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-ca4yxub6s6] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-ca4yxub6s6] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-ca4yxub6s6] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-ca4yxub6s6] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-ca4yxub6s6 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-ca4yxub6s6] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-ca4yxub6s6 {
    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/Club/SeriesResults/BoatPicker.razor.rz.scp.css */
.picker-anchor[b-rehv50u19j] {
    position: relative;
}

/* Floating list (not inline) - same approach as the quick result entry dropdown. */
.picker-panel[b-rehv50u19j] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1000;
    margin-top: 0.125rem;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.picker-scroll[b-rehv50u19j] {
    max-height: 260px;
    overflow-y: auto;
}

.picker-scroll thead th[b-rehv50u19j] {
    position: sticky;
    top: 0;
    background: var(--bs-body-bg, #fff);
}

.picker-backdrop[b-rehv50u19j] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}
/* /Components/Pages/Club/SeriesResults/EntrantEditModal.razor.rz.scp.css */
/* Subtle zebra striping so adjacent attached modifiers are easy to tell apart - a neutral
   semi-transparent overlay (rather than a fixed light-grey) so it reads correctly in both light
   and dark theme without needing to know which is active. */
.modifier-row-even[b-zt9z0ol9z9] {
    background: rgba(127, 127, 127, 0.08);
}

.modifier-row-odd[b-zt9z0ol9z9] {
    background: transparent;
}
/* /Components/Pages/Club/SeriesResults/HandicapsTab.razor.rz.scp.css */
/* Race header colours mirror SeriesGrid.razor.css so a race reads the same on both tabs. */
.race-header[b-0u5o5wsrvt] {
    white-space: nowrap;
    min-width: 40px;
}

.race-header-draft[b-0u5o5wsrvt] {
    background-color: #495057;
    color: #fff;
}

.race-header-draft small[b-0u5o5wsrvt] {
    color: #ced4da !important;
}

.race-header-provisional[b-0u5o5wsrvt] {
    background-color: #b200ff;
}

/* A start handicap with a comment: dotted underline, the comment shows on hover. */
[b-0u5o5wsrvt] .has-comment {
    text-decoration: underline dotted;
    cursor: help;
}

/* Penalty column in Race results. */
.penalty[b-0u5o5wsrvt] {
    color: #dc3545;
}

/* Provisional start handicap, e.g. "0.976 P". ::deep because it is emitted via MarkupString. */
.provisional[b-0u5o5wsrvt],
[b-0u5o5wsrvt] .provisional {
    color: #e8590c;
    font-weight: 600;
}

/* An entrant on more than one boat is one block of rows: every border inside the block is dashed, the
   block's outer border (and the rowspan cells' outer edges) stay solid. Bootstrap draws a bordered table's
   horizontal lines on the rows, so the dashed horizontals go on the rows. */
.boat-group > td[b-0u5o5wsrvt] {
    border-left-style: dashed;
    border-right-style: dashed;
}

.boat-group > td.col-sailno[b-0u5o5wsrvt] { border-left-style: solid; }
.boat-group > td.col-total[b-0u5o5wsrvt] { border-right-style: solid; }

.boat-first[b-0u5o5wsrvt] {
    border-bottom-style: dashed;
}

.boat-next[b-0u5o5wsrvt] {
    border-top-style: dashed;
}

.boat-next:not(.boat-last)[b-0u5o5wsrvt] {
    border-bottom-style: dashed;
}

.col-sailno[b-0u5o5wsrvt] {
    white-space: nowrap;
}
/* /Components/Pages/Club/SeriesResults/QuickResultEntry.razor.rz.scp.css */
.quick-entry-search[b-rc29tws126] {
    position: relative;
}

.quick-entry-dropdown[b-rc29tws126] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 10;
    max-height: 260px;
    overflow-y: auto;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}


/* /Components/Pages/Club/SeriesResults/ResultEditModal.razor.rz.scp.css */
/* Subtle zebra striping so adjacent attached modifiers are easy to tell apart - a neutral
   semi-transparent overlay (rather than a fixed light-grey) so it reads correctly in both light
   and dark theme without needing to know which is active. */
.modifier-row-even[b-hozcsn1vpa] {
    background: rgba(127, 127, 127, 0.08);
}

.modifier-row-odd[b-hozcsn1vpa] {
    background: transparent;
}
/* /Components/Pages/Club/SeriesResults/ResultsGrid.razor.rz.scp.css */
/* CSS for ResultsGrid component */
.division-head[b-1vqaivvrph] {
  background-color: var(--bs-table-bg, var(--bs-body-bg));
  padding: 3px;
  font-weight: bold;
}
.nowrapper td[b-1vqaivvrph] {
  text-wrap: nowrap;
}
/* /Components/Pages/Club/SeriesResults/SailorPicker.razor.rz.scp.css */
.picker-anchor[b-8vy1gt65t3] {
    position: relative;
}

/* Floating list (not inline) - same approach as the quick result entry dropdown. */
.picker-panel[b-8vy1gt65t3] {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1000;
    margin-top: 0.125rem;
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.375rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

.picker-scroll[b-8vy1gt65t3] {
    max-height: 260px;
    overflow-y: auto;
}

.picker-scroll thead th[b-8vy1gt65t3] {
    position: sticky;
    top: 0;
    background: var(--bs-body-bg, #fff);
}

.picker-backdrop[b-8vy1gt65t3] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}
/* /Components/Pages/Club/SeriesResults/SeriesGrid.razor.rz.scp.css */
/* table-bordered sets border-collapse:collapse, which stops position:sticky from working on
   table cells in most browsers - separate borders (with 0 spacing, so nothing visually shifts)
   is what actually lets the sticky columns hold still while the races section scrolls. */
table[b-0x4ittf9un] {
/*    border-collapse: separate;*/    
border-spacing: 0;
}

.race-header[b-0x4ittf9un] {
    cursor: pointer;
    white-space: nowrap;
    min-width: 40px;
/*    max-width: 80px;
*/}

.race-header:hover[b-0x4ittf9un] {
    background-color: rgba(13, 110, 253, 0.15);
}

.race-header-draft[b-0x4ittf9un] {
    background-color: #495057;
    color: #fff;
}

.race-header-draft:hover[b-0x4ittf9un] {
    background-color: #3d4247;
}

.race-header-draft small[b-0x4ittf9un] {
    color: #ced4da !important;
}

.race-header-provisional[b-0x4ittf9un] {
    background-color: #b200ff;
}

.race-header-provisional:hover[b-0x4ittf9un] {
    background-color: #ca5df9;
}

.race-header-icons[b-0x4ittf9un] {
    display: flex;
    justify-content: flex-end;
    gap: 4px;
    margin-bottom: 2px;
}

.race-icon-btn[b-0x4ittf9un] {
    background: none;
    border: none;
    padding: 0 1px;
    font-size: calc(1rem + 3px);
    line-height: 1;
    cursor: pointer;
    opacity: 0.6;
}

/* The eye glyph renders smaller than the clock and megaphone, so it gets another 2px. */
.race-icon-visibility[b-0x4ittf9un] {
    font-size: calc(1rem + 9px);
}

.race-icon-btn:hover:not(:disabled)[b-0x4ittf9un] {
    opacity: 1;
}

.race-icon-btn:disabled[b-0x4ittf9un] {
    cursor: not-allowed;
    opacity: 0.3;
}

.visibility-hidden[b-0x4ittf9un] {
    color: #6c757d;
}

.visibility-members[b-0x4ittf9un] {
    color: #fd7e14;
}

.visibility-public[b-0x4ittf9un] {
    color: #198754;
}

.result-cell[b-0x4ittf9un] {
    cursor: pointer;
}

.result-cell:hover[b-0x4ittf9un] {
    background-color: rgba(13, 110, 253, 0.15);
}

/* Skipper/Boat/Sail No/Yardstick/Total stay pinned via position:sticky so only the races
   section (which can be arbitrarily wide) scrolls, inside the existing .table-responsive
   horizontal scroll container. The table uses auto layout, so real column widths depend on
   content - "left" is measured and set at runtime (see SeriesGrid's JS interop); only
   .col-total's "right:0" is a fixed anchor and doesn't need measuring. */
.col-skipper[b-0x4ittf9un], .col-boat[b-0x4ittf9un], .col-boatclass[b-0x4ittf9un], .col-sailno[b-0x4ittf9un], .col-yardstick[b-0x4ittf9un], .col-total[b-0x4ittf9un], .col-skipper-group[b-0x4ittf9un] {
  /*    position: sticky;
*/ z-index: 2;
  background-color: var(--bs-table-bg, var(--bs-body-bg));
}

.col-skipper-group[b-0x4ittf9un] {
    left: 0;
}

.col-skipper[b-0x4ittf9un], .col-skipper-group[b-0x4ittf9un] {
/*    min-width: 160px;
*/}

.col-boat[b-0x4ittf9un] {
/*    min-width: 140px;
*/}

.col-sailno[b-0x4ittf9un], .col-yardstick[b-0x4ittf9un], .col-total[b-0x4ittf9un] {
/*    min-width: 80px;
*/}

.col-total[b-0x4ittf9un] {
    right: 0;
}

td.Drop[b-0x4ittf9un] {
    color: green !important;
    text-decoration: line-through;
}

td.DUT[b-0x4ittf9un] {
    color: red;
}

td.DNC[b-0x4ittf9un] {
    color: lightblue;
}

td.DNF[b-0x4ittf9un] {
    color: coral;
}

td.DNS[b-0x4ittf9un] {
    color: coral;
}

td.ABN[b-0x4ittf9un] {
    background-color: #3d4247;
    color: grey;
}

/* An entrant on more than one boat is one block of rows: every border inside the block is dashed, the
   block's outer border (and the rowspan cells' outer edges) stay solid. */
.boat-group > td[b-0x4ittf9un] {
    border-left-style: dashed;
    border-right-style: dashed;
}

.boat-group > td.col-sailno[b-0x4ittf9un] { border-left-style: solid; }
.boat-group > td.col-total[b-0x4ittf9un] { border-right-style: solid; }

/* Bootstrap draws a bordered table's horizontal lines on the rows (cells only get left and right borders),
   so the dashed horizontals go on the rows. */
.boat-first[b-0x4ittf9un] {
    border-bottom-style: dashed;
}

.boat-next[b-0x4ittf9un] {
    border-top-style: dashed;
}

.boat-next:not(.boat-last)[b-0x4ittf9un] {
    border-bottom-style: dashed;
}

/* Sail numbers never wrap. */
.col-sailno[b-0x4ittf9un] {
    white-space: nowrap;
}
/* /Components/Pages/Public/RaceResultSection.razor.rz.scp.css */
.race-result-section[b-xg6eljqlkt] {
    position: relative;
    margin-bottom: 2rem;
}

.public-results-table[b-xg6eljqlkt] {
    width: auto;
    table-layout: auto;
}

/* Headers and cells never wrap to a second line, even if that pushes the table wider than the viewport -
   the surrounding .table-responsive wrapper (see RaceResultSection.razor) scrolls horizontally
   instead of every column title squeezing down to fit. */
.public-results-table th[b-xg6eljqlkt],
.public-results-table td[b-xg6eljqlkt] {
    white-space: nowrap;
    /* Tighter than table-sm (.25rem) vertically, and the same on the left and right. */
    padding: 0.15rem 0.3rem;
}

.race-header-draft[b-xg6eljqlkt] {
    background-color: #495057;
    color: #fff;
}

.race-header-draft small[b-xg6eljqlkt] {
    color: #ced4da !important;
}

.race-header-provisional[b-xg6eljqlkt] {
    background-color: #b200ff;
}

/* Tints the whole race section (header, banner and results table alike) so a provisional race
   visually reads as "not final yet" at a glance, on top of the text banner already saying so. */
.provisional-overlay[b-xg6eljqlkt]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background-color: rgba(178, 0, 255, 0.1);
}

/* Same idea for a privileged viewer's early Draft preview - a plain 10% grey wash rather than
   the provisional purple, since nothing is being asserted about the results yet. */
.draft-overlay[b-xg6eljqlkt]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background-color: rgba(128, 128, 128, 0.1);
}

.division-row th[b-xg6eljqlkt] {
    vertical-align: middle;
}

td.DNC[b-xg6eljqlkt] {
    color: lightblue;
}

td.DNF[b-xg6eljqlkt], td.DNS[b-xg6eljqlkt] {
    color: coral;
}

td.DUT[b-xg6eljqlkt] {
    color: red;
}

td.ABN[b-xg6eljqlkt] {
    background-color: #3d4247;
    color: grey;
}
/* /Components/Pages/Public/ScoringComparison.razor.rz.scp.css */
.scoring-compare th[b-k4mk2a3v99] {
    vertical-align: top;
    min-width: 12rem;
}

.scoring-compare th:first-child[b-k4mk2a3v99] {
    min-width: 0;
}

/* Rows where the scoring types disagree. */
.scoring-differs td:not(.scoring-highlight)[b-k4mk2a3v99] {
    background-color: var(--bs-warning-bg-subtle);
}

/* The chosen scoring type's column - wins over the row shading. */
.scoring-compare .scoring-highlight[b-k4mk2a3v99] {
    background-color: var(--bs-primary-bg-subtle);
    border-left: 2px solid var(--bs-primary);
    border-right: 2px solid var(--bs-primary);
    font-weight: 600;
}
/* /Components/Pages/Public/SeriesHandicapResults.razor.rz.scp.css */
/* Mirrors SeriesStandings.razor.css and RaceResultSection.razor.css so the handicap results read
   exactly like the yardstick results. */

.race-result-section[b-jd4e0ncdtv] {
    position: relative;
    margin-bottom: 2rem;
}

.public-results-table[b-jd4e0ncdtv] {
    width: auto;
    table-layout: auto;
}

/* Cells never wrap; the surrounding .table-responsive scrolls horizontally instead. */
.public-results-table th[b-jd4e0ncdtv],
.public-results-table td[b-jd4e0ncdtv] {
    white-space: nowrap;
    /* Tighter than table-sm (.25rem) vertically, and the same on the left and right. */
    padding: 0.15rem 0.3rem;
}

.col-rank[b-jd4e0ncdtv] {
    text-align: center;
}

.race-header-col a[b-jd4e0ncdtv] {
    text-decoration: none;
}

.division-row th[b-jd4e0ncdtv] {
    vertical-align: middle;
}

.division-row .d-flex[b-jd4e0ncdtv] {
    gap: 1rem;
}

.race-header-draft[b-jd4e0ncdtv] {
    background-color: #495057;
    color: #fff;
}

.race-header-draft small[b-jd4e0ncdtv] {
    color: #ced4da !important;
}

.race-header-provisional[b-jd4e0ncdtv] {
    background-color: #b200ff;
}

/* Whole-column tint for a Draft/Provisional race (box-shadow so it composites over cell backgrounds). */
.col-provisional[b-jd4e0ncdtv] {
    box-shadow: inset 0 0 0 999px rgba(178, 0, 255, 0.1);
}

.col-draft[b-jd4e0ncdtv] {
    box-shadow: inset 0 0 0 999px rgba(128, 128, 128, 0.1);
}

.provisional-overlay[b-jd4e0ncdtv]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background-color: rgba(178, 0, 255, 0.1);
}

.draft-overlay[b-jd4e0ncdtv]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background-color: rgba(128, 128, 128, 0.1);
}

td.Drop[b-jd4e0ncdtv] {
    color: green !important;
    text-decoration: line-through;
}

td.DUT[b-jd4e0ncdtv] {
    color: red;
}

td.DNC[b-jd4e0ncdtv] {
    color: lightblue;
}

td.DNF[b-jd4e0ncdtv], td.DNS[b-jd4e0ncdtv] {
    color: coral;
}

td.ABN[b-jd4e0ncdtv] {
    background-color: #3d4247;
    color: grey;
}

/* Handicap-specific. ::deep because the provisional marker is emitted via MarkupString. */
.penalty[b-jd4e0ncdtv] {
    color: #dc3545;
}

.provisional[b-jd4e0ncdtv],
[b-jd4e0ncdtv] .provisional {
    color: #e8590c;
    font-weight: 600;
}

/* A start handicap with a comment (club admins only): dotted underline, comment on hover. */
[b-jd4e0ncdtv] .has-comment {
    text-decoration: underline dotted;
    cursor: help;
}

td.manual[b-jd4e0ncdtv] {
    background-color: rgba(255, 193, 7, 0.25);
}

/* An entrant on more than one boat is one block of rows: every border inside the block is dashed, the
   block's outer border (and the rowspan cells' outer edges) stay solid. Bootstrap draws a bordered table's
   horizontal lines on the rows, so the dashed horizontals go on the rows. */
.boat-group > td[b-jd4e0ncdtv] {
    border-left-style: dashed;
    border-right-style: dashed;
}

.boat-group > td.col-rank[b-jd4e0ncdtv] { border-left-style: solid; }
.boat-group > td.col-total[b-jd4e0ncdtv] { border-right-style: solid; }

.boat-first[b-jd4e0ncdtv] {
    border-bottom-style: dashed;
}

.boat-next[b-jd4e0ncdtv] {
    border-top-style: dashed;
}

.boat-next:not(.boat-last)[b-jd4e0ncdtv] {
    border-bottom-style: dashed;
}

.col-sailno[b-jd4e0ncdtv] {
    white-space: nowrap;
}
/* /Components/Pages/Public/SeriesStandings.razor.rz.scp.css */
.public-results-table[b-w7q9mljk81] {
    width: auto;
    table-layout: auto;
}

/* Headers and cells never wrap to a second line, even if that pushes the table wider than the viewport -
   the surrounding .table-responsive wrapper (see SeriesStandings.razor) scrolls horizontally
   instead of every column title squeezing down to fit. */
.public-results-table th[b-w7q9mljk81],
.public-results-table td[b-w7q9mljk81] {
    white-space: nowrap;
    /* Tighter than table-sm (.25rem) vertically, and the same on the left and right. */
    padding: 0.15rem 0.3rem;
}

.col-rank[b-w7q9mljk81] {
    text-align: center;
}

.race-header-col a[b-w7q9mljk81] {
    text-decoration: none;
}

.division-row th[b-w7q9mljk81] {
    vertical-align: middle;
}

.division-row .d-flex[b-w7q9mljk81] {
    gap: 1rem;
}

/* Tints a whole race column (header, division-row cell, every score cell) for a Draft/Provisional
   race - box-shadow rather than background-color so it composites over whatever background a
   cell already has (e.g. td.ABN's dark background below) instead of replacing it outright. */
.col-provisional[b-w7q9mljk81] {
    box-shadow: inset 0 0 0 999px rgba(178, 0, 255, 0.1);
}

.col-draft[b-w7q9mljk81] {
    box-shadow: inset 0 0 0 999px rgba(128, 128, 128, 0.1);
}

td.Drop[b-w7q9mljk81] {
    color: green !important;
    text-decoration: line-through;
}

td.DUT[b-w7q9mljk81] {
    color: red;
}

td.DNC[b-w7q9mljk81] {
    color: lightblue;
}

td.DNF[b-w7q9mljk81] {
    color: coral;
}

td.DNS[b-w7q9mljk81] {
    color: coral;
}

td.ABN[b-w7q9mljk81] {
    background-color: #3d4247;
    color: grey;
}

/* An entrant on more than one boat is one block of rows: every border inside the block is dashed, the
   block's outer border (and the rowspan cells' outer edges) stay solid. */
.boat-group > td[b-w7q9mljk81] {
    border-left-style: dashed;
    border-right-style: dashed;
}

.boat-group > td.col-rank[b-w7q9mljk81] { border-left-style: solid; }
.boat-group > td.col-total[b-w7q9mljk81] { border-right-style: solid; }

/* Bootstrap draws a bordered table's horizontal lines on the rows (cells only get left and right borders),
   so the dashed horizontals go on the rows. */
.boat-first[b-w7q9mljk81] {
    border-bottom-style: dashed;
}

.boat-next[b-w7q9mljk81] {
    border-top-style: dashed;
}

.boat-next:not(.boat-last)[b-w7q9mljk81] {
    border-bottom-style: dashed;
}

/* Sail numbers never wrap. */
.col-sailno[b-w7q9mljk81] {
    white-space: nowrap;
}
