/** CHANGED v2026-05-15.28 - Renamed CSS variables with consistent color/function prefixes, grouped by purpose, and documented each variable. */
:root {
    /* Base colour palette */
    --color-white: #fff;                         /* Base white used for page elements, table backgrounds, and foreground contrast. */
    --color-black: #000;                         /* Base black used for borders and high-contrast neutral accents. */
    --color-red: #f00;                           /* Strong red used by generic colour classes and debug/commented references. */
    --color-green: #0f0;                         /* Strong green used by generic colour classes. */
    --color-blue: #00f;                          /* Strong blue used by generic colour classes. */
    --color-yellow: #ff0;                        /* Strong yellow used by generic colour classes and highlights. */
    --color-transparent: transparent;            /* Transparent fill used when an element needs no visible background. */

    /* Soft colour palette */
    --color-pastel-red: #ffb3ba;                 /* Soft red used for warning/status backgrounds. */
    --color-pastel-green: #baffc9;               /* Soft green used for success/status backgrounds. */
    --color-game-win-bg: var(--color-pastel-green); /* Winning game-score highlight background. */
    --color-pastel-blue: #bae1ff;                /* Soft blue used for focus/selection highlights. */
    --color-pastel-yellow: #ffdf00;              /* Yellow highlight used for active/current indicators. */

    /* Page and layout colours */
    --color-primary: #2f8f4f;                    /* Primary brand/header background colour. */
    --color-accent: #afa;                        /* Accent colour used for section markers and legacy button background references. */
    --color-page-bg: #f4f4f4;                    /* Main page background colour. */
    --color-table-header-bg: #d5d5d5;            /* Default table-header background colour. */
    --color-table-border: #bfbfbf;               /* Default border colour for tables and form controls. */
    --color-border: var(--color-table-border);   /* General border alias for components that should follow table borders. */

    /* Button and form colours */
    --color-button-bg: #339955;                  /* Primary button background colour. */
    --color-button-hover-bg: #297a44;            /* Button hover background colour. */
    --color-button-text: var(--color-white);     /* Button foreground/text colour. */
    --color-button-border: var(--color-table-border); /* Button border colour for bordered button variants. */

    --color-status-available-bg: #cfc;           /* Available status background colour. */
    --color-status-unavailable-bg: #fcc;         /* Unavailable status background colour. */
    --color-status-dissolution-request-bg: #fff8b8;  /* Pale yellow for pending Team Dissolve requests. */
    --color-status-withdrawn-bg: var(--color-status-dissolution-request-bg);        /* Legacy withdrawn alias; ordinary unavailable/dissolution-requested display should not use yellow. */
    --color-status-inactive-bg: #e5e7eb;              /* Dissolved/inactive historical status background colour. */
    --color-status-substitute-bg: #cfc;          /* Substitute indicator background colour. */
    --color-status-forfeit-bg: #6dc5ee;          /* Forfeit status background colour. */
    --color-status-void-bg: #f96;                /* Void/cancelled status background colour. */
    --color-status-single-bg: #ccf;              /* Single-player/team marker background colour. */
    --color-status-partner-bg: #ffffcc;          /* Partner marker background colour. */
    --color-status-pending-change-bg: #ffe6a6;   /* Pending score-change request background colour. */

    /* Message and alert colours */
    --color-message-warning: #f60;               /* Warning message colour. */
    --color-message-info: #06c;                  /* Informational message colour. */
    --color-message-error: #f30;                 /* Error message colour. */
    --color-message-failure: #f00;               /* Failure message colour. */


    /* Generated colour literals migrated from component rules; use var() outside :root. */
    --css-color-111: #111;
    --css-color-111418: #111418;
    --css-color-175cd3: #175cd3;
    --css-color-1849a9: #1849a9;
    --css-color-195c2e: #195c2e;
    --css-color-1f6feb: #1f6feb;
    --css-color-222: #222;
    --css-color-2271b1: #2271b1;
    --css-color-2563eb: #2563eb;
    --css-color-2f5d9f: #2f5d9f;
    --css-color-2f6f9f: #2f6f9f;
    --css-color-333: #333;
    --css-color-555: #555;
    --css-color-57606a: #57606a;
    --css-color-586069: #586069;
    --css-color-5f4b00: #5f4b00;
    --css-color-7a0016: #7a0016;
    --css-color-7a271a: #7a271a;
    --css-color-7a3b00: #7a3b00;
    --css-color-7a3d00: #7a3d00;
    --css-color-7f8a96: #7f8a96;
    --css-color-8a1f11: #8a1f11;
    --css-color-999: #999;
    --css-color-9a6700: #9a6700;
    --css-color-9a6a00: #9a6a00;
    --css-color-b00020: #b00020;
    --css-color-b26b00: #b26b00;
    --css-color-b42318: #b42318;
    --css-color-b54708: #b54708;
    --css-color-b76e00: #b76e00;
    --css-color-b7791f: #b7791f;
    --css-color-c77: #c77;
    --css-color-ccc: #ccc;
    --css-color-d0d5dd: #d0d5dd;
    --css-color-d0d7de: #d0d7de;
    --css-color-d6d6d6: #d6d6d6;
    --css-color-d7d7d7: #d7d7d7;
    --css-color-d7dce2: #d7dce2;
    --css-color-d8d8d8: #d8d8d8;
    --css-color-d99a00: #d99a00;
    --css-color-d9d9d9: #d9d9d9;
    --css-color-ddd: #ddd;
    --css-color-ead678: #ead678;
    --css-color-eef1f4: #eef1f4;
    --css-color-eef7ff: #eef7ff;
    --css-color-eef8ee: #eef8ee;
    --css-color-eff8ff: #eff8ff;
    --css-color-f0f0f0: #f0f0f0;
    --css-color-fde8e8: #fde8e8;
    --css-color-fdecea: #fdecea;
    --css-color-ffb4a8: #ffb4a8;
    --css-color-ffecec: #ffecec;
    --css-color-fff0f0: #fff0f0;
    --css-color-fff1f0: #fff1f0;
    --css-color-fff7d6: #fff7d6;
    --css-color-fff8db: #fff8db;
    --css-color-fff8e1: #fff8e1;
    --css-color-fff8e5: #fff8e5;
    --css-color-fff8e6: #fff8e6;
    --css-color-rgba-0-0-0-0-12: rgba(0, 0, 0, 0.12);
    --css-color-rgba-0-0-0-03: rgba(0,0,0,.03);
    --css-color-rgba-0-0-0-16: rgba(0,0,0,.16);
    --css-color-rgba-0-0-0-0-06: rgba(0,0,0,0.06);
    --css-color-rgba-0-0-0-0-07: rgba(0,0,0,0.07);
    --css-color-rgba-0-0-0-0-08: rgba(0,0,0,0.08);
    --css-color-rgba-127-138-150-0-16: rgba(127, 138, 150, 0.16);
    --css-color-rgba-176-0-32-035: rgba(176,0,32,.035);
    --css-color-rgba-176-0-32-08: rgba(176,0,32,.08);
    --css-color-rgba-22-27-34-0-72: rgba(22,27,34,0.72);
    --css-color-rgba-255-255-255-0-4: rgba(255,255,255,0.4);
    --css-color-rgba-255-255-255-0-55: rgba(255,255,255,0.55);
    --css-color-rgba-255-255-255-0-72: rgba(255,255,255,0.72);
    --css-color-rgba-47-93-159-0-08: rgba(47, 93, 159, 0.08);
    --css-color-rgba-47-93-159-0-10: rgba(47, 93, 159, 0.10);
    --css-color-rgba-74-74-74-0-45: rgba(74, 74, 74, 0.45);
    --css-color-rgba-9-105-218-0-12: rgba(9, 105, 218, 0.12);
    --css-color-rgba-95-99-104-0-65: rgba(95, 99, 104, 0.65);
}

/* ADDED v11629: Utilities court availability page and Scheduler availability panel. */
.utilities-page {
    max-width: 1080px;
    margin: 0 auto;
    padding: 1rem;
}

.utilities-page-header,
.court-availability-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.utilities-page-header h1,
.court-availability-heading h2 {
    margin: 0;
}

.utilities-page-header p,
.court-availability-heading p {
    margin: 0.25rem 0 0;
}

.utilities-quick-links,
.court-availability-slot-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.utilities-quick-links a,
.court-availability-slot-meta a,
.match-scheduler-court-availability-row a {
    border: 1px solid #2563eb;
    color: #1d4ed8;
    background: #ffffff;
    border-radius: 6px;
    padding: 0.45rem 0.65rem;
    text-decoration: none;
    font-weight: 700;
}

.court-availability-tool {
    border-top: 1px solid #d8dee8;
    padding-top: 1rem;
}

.site-front-court-availability-page.utilities-page {
    box-sizing: border-box;
    width: min(100% - 32px, 1120px);
    max-width: 1120px;
    margin-left: auto;
    margin-right: auto;
    float: none;
    position: relative;
    left: auto;
    right: auto;
    transform: none;
    padding: 0 0 56px !important;
}

.site-front-court-availability-page .court-availability-hero {
    margin-bottom: 1.25rem;
}

.site-front-court-availability-page .court-availability-tool {
    border: 1px solid var(--site-front-border, #d9e0ec);
    border-radius: 18px;
    background: var(--site-front-surface, #ffffff);
    box-shadow: 0 12px 32px rgba(23, 32, 51, 0.08);
}

.site-front-court-availability-page .court-availability-page-header {
    padding: 1rem 1.15rem;
}

.site-front-court-availability-page .court-availability-page-header h2 {
    margin: 0;
}

.site-front-court-availability-page .court-availability-page-header p {
    color: var(--site-front-muted, #5d6678);
}

.site-front-court-availability-page .court-availability-tool {
    padding: 1rem 1.15rem 1.15rem;
}

.court-availability-count {
    min-width: 7rem;
    border: 1px solid #d8dee8;
    border-radius: 6px;
    padding: 0.65rem;
    text-align: center;
    background: #f8fafc;
}

.court-availability-count strong {
    display: block;
    font-size: 1.5rem;
    line-height: 1.1;
}

.court-availability-count span,
.court-availability-slot-main p,
.court-availability-empty,
.court-availability-refresh,
.match-scheduler-court-availability-row span,
.match-scheduler-court-availability-row small,
.match-scheduler-court-availability-empty {
    color: #475569;
}

.court-availability-filters {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
    align-items: start;
    margin-bottom: 1rem;
}

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.court-availability-filters label,
.court-availability-filter-group {
    display: grid;
    gap: 0.25rem;
    color: #334155;
    font-weight: 700;
}

.court-availability-filters input[type="date"],
.court-availability-filters select {
    width: 100%;
    min-height: 2.35rem;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    padding: 0.35rem 0.5rem;
    background: #ffffff;
}

.court-availability-filter-group {
    grid-column: span 2;
    align-items: start;
    justify-content: start;
}

.court-availability-filter-menu-group {
    display: flex;
    gap: 0.35rem;
    position: relative;
    z-index: 1;
}

.court-availability-filter-menu-group--open {
    z-index: 40;
}

.court-availability-filter-menu {
    position: relative;
    min-width: 11rem;
}

.court-availability-filters > .court-availability-filter-menu {
    min-width: 0;
    width: 100%;
}

.court-availability-filter-menu[open] {
    z-index: 30;
}

.court-availability-filter-menu > summary {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.55rem;
    width: 100%;
    min-height: 2.35rem;
    box-sizing: border-box;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    padding: 0.35rem 0.5rem;
    background: #ffffff;
    color: #334155;
    cursor: pointer;
    font-weight: 800;
    list-style: none;
}

.court-availability-tool .court-availability-filter-menu > summary,
.court-availability-tool .court-availability-filter-menu > summary span {
    color: #000 !important;
    font-weight: 400 !important;
}

.court-availability-filter-menu > summary::-webkit-details-marker {
    display: none;
}

.court-availability-filter-menu > summary::after {
    content: "";
    flex: 0 0 auto;
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 5px solid currentColor;
}

.court-availability-filter-menu[open] > summary::after {
    transform: rotate(180deg);
}

.court-availability-filter-menu-panel {
    position: absolute;
    z-index: 10000;
    top: calc(100% + 0.25rem);
    left: 0;
    min-width: 100%;
    max-height: min(18rem, 70vh);
    overflow: auto;
    box-sizing: border-box;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #ffffff;
    box-shadow: 0 12px 24px rgba(15, 23, 42, 0.16);
    padding: 0.35rem;
}

.court-availability-filter-option {
    display: flex !important;
    align-items: center;
    gap: 0.45rem;
    min-height: 2rem;
    padding: 0.25rem 0.35rem;
    border-radius: 4px;
    white-space: nowrap;
    cursor: pointer;
}

.court-availability-filter-option:hover {
    background: #f1f5f9;
}

.court-availability-filter-option input {
    flex: 0 0 auto;
    width: 1rem;
    height: 1rem;
    margin: 0;
    accent-color: #0d6efd;
}

.court-availability-results {
    display: grid;
    gap: 0.65rem;
}

.court-availability-slot {
    display: grid;
    grid-template-columns: 16rem minmax(0, 1fr) auto;
    gap: 0.75rem;
    align-items: center;
    border: 1px solid #d8dee8;
    border-radius: 6px;
    padding: 0.55rem 0.7rem;
    background: #ffffff;
    color: inherit;
    text-decoration: none;
    transition: background-color 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
}

.court-availability-slot:hover,
.court-availability-slot:focus-visible {
    border-color: #93c5fd;
    background: #f8fbff;
    box-shadow: 0 6px 18px rgba(23, 32, 51, 0.08);
    outline: none;
}

.court-availability-slot-time strong,
.court-availability-slot-time span,
.court-availability-slot-time a,
.court-availability-slot-meta span,
.match-scheduler-court-availability-row strong,
.match-scheduler-court-availability-row span,
.match-scheduler-court-availability-row small {
    display: block;
}

.court-availability-slot-time span {
    color: #64748b;
}

.court-availability-slot-time a {
    color: #00358f;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 0.12em;
}

.court-availability-slot-time a:hover {
    color: #001f5f;
}

.court-availability-slot-meta {
    justify-content: flex-end;
}

.court-availability-slot-meta span {
    border: 0;
    border-radius: 4px;
    padding: 0.2rem 0.45rem;
    background: #eef2f7;
    color: #475569;
    font-size: 0.86rem;
    font-weight: 600;
    white-space: nowrap;
    pointer-events: none;
}

.court-availability-slot-main h3 {
    margin: 0;
    font-size: 1rem;
}

.court-availability-slot-main h3 a,
.court-availability-map-link {
    color: #00358f;
    text-decoration: underline;
    text-underline-offset: 0.12em;
}

.court-availability-slot-main h3 a:hover,
.court-availability-map-link:hover {
    color: #001f5f;
}

.court-availability-slot-no-times .court-availability-slot-time,
.court-availability-slot-no-times .court-availability-slot-main {
    align-self: start;
}

.court-availability-slot-no-times .court-availability-slot-time strong {
    color: #334155;
}

.court-availability-slot-main span:before {
    content: ", ";
}

.court-availability-slot-main p,
.court-availability-empty,
.match-scheduler-court-availability-empty {
    margin: 0.15rem 0 0;
}

.match-scheduler-court-availability {
    border: 1px solid #d8dee8;
    border-radius: 6px;
    padding: 0.65rem;
    background: #f8fafc;
}

.match-scheduler-court-availability-title {
    font-weight: 800;
    margin-bottom: 0.35rem;
}

.match-scheduler-court-availability-list {
    display: grid;
    gap: 0.45rem;
}

.match-scheduler-court-availability-row {
    display: grid;
    grid-template-columns: minmax(6rem, 0.75fr) minmax(0, 1.4fr) auto;
    gap: 0.5rem;
    align-items: center;
    border-top: 1px solid #e2e8f0;
    padding-top: 0.45rem;
    text-align: left;
}

@media (max-width: 760px) {
    .utilities-page-header,
    .court-availability-heading {
        display: grid;
        grid-template-columns: 1fr;
    }

    .court-availability-filters,
    .court-availability-slot,
    .match-scheduler-court-availability-row {
        grid-template-columns: 1fr;
    }

    .court-availability-filter-group {
        grid-column: auto;
    }

    .court-availability-filter-menu,
    .court-availability-filter-menu-group {
        width: 100%;
    }

    .court-availability-slot-meta {
        justify-content: flex-start;
    }
}


/** CHANGED v2026-05-20.404
 *  Test deployments intentionally use the same production colour theme.
 *  The body.deployment-test class remains available for non-colour behavior,
 *  but it must not override brand/status colours. The visible environment cue
 *  is now the header title suffix added by header.php.
 */


/** CHANGED v2026-05-15.29 - Added functional purpose comments to class-based CSS rules while preserving cascade order. */

/* Overall */
body {
    font-family: 'Raleway', sans-serif;
    background-color: var(--color-page-bg);
    margin: 0;
    max-width: 800px;
}

header {
    background: var(--color-primary);
    color: var(--color-white);
    padding: 1rem;
    border-radius: 8px;
}

h1, h2, h3, h4, h5, h6 {
    margin: 1px;
    padding: 1px;
}

h1 {
    font-size: 1.5rem;
}

h2 {
    border-left: 5px solid var(--color-accent);
    padding-left: 10px;
}

table {
    border-collapse: collapse;
    background: var(--color-white);
    overflow: hidden;
    table-layout: fixed;
}

/* sortable tables */
.sortable thead {
    cursor: pointer;
}

.table-container {
    width: 100%;

}

a {
    text-decoration: none;
}

table td, table th {
    border: 1px solid var(--color-table-border);
    padding: 4px;
}

table td {
    white-space: nowrap;
}

/** CHANGED v2026-05-15.04
 *  Allows table header labels to wrap before widening a column. Body cells keep
 *  their previous no-wrap behavior so short data values do not force oversized
 *  columns just because the corresponding header is longer than the cell data.
 */
table th {
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    line-height: 1.15;
}

th {
    background: var(--color-table-header-bg);
}

tr {
    display: table-row !important;
}

textarea {
    width: 100%;
    min-height: 50px;
    resize: vertical;
}

button {
    background: var(--color-accent);
    padding: 5px 15px;
    border-radius: 8px;
    width: 100%;
    background-color: var(--color-button-bg);
    color: var(--color-white);
    border: none;
    font-size: 1rem;
    font-weight: bold;
    cursor: pointer;
    transition: background-color 0.3s;
}

button:hover {
    background-color: var(--color-button-hover-bg);
}

input {
    border: 1px solid var(--color-table-border);
}

input:focus {
    outline: none;
    border-color: var(--color-button-bg);
}

.largetext {
    padding: 12px;
    font-size: 1.1rem; /* Prevents iOS auto-zoom on focus */
}

input[type="number"] {
    text-align: center;
    font: inherit;
}

summary {

    font-weight: bold;
}

select {
    font-size: 1.1rem;
    text-align-last: center;
    text-align: center;
}

/* specific styling for the dropdown items */
option {
    font-size: 1.1rem;
    text-align-last: center;
    text-align: center;
}

.divborder {
    border: 1px solid var(--color-black);
    padding: 5px;
}
/* Overall */

.mainbody {
    padding: 0 5px;
    /* x_border: 1px solid var(--color-red); */
}

.floatr {
    float: right;
}

.align-left {
    text-align: left;
}

.align-right {
    text-align: right;
}

.align-middle {
    text-align: center;
    vertical-align: middle;
}

.align-photo {
    display: flex;
    align-items: center;
    gap: 5px;
    width: fit-content;
    height: fit-content;
}

.profile-photo {
    background: var(--color-page-bg);
    border: none;
}

/** ADDED v2026-05-14.96
 *  Phase 3 player-profile photo polish.
 *
 *  Purpose:
 *  The profile form now shows the current photo/avatar, previews selected files,
 *  and can remove a photo while preserving the existing circular photo style.
 */
.profile-initials-avatar {
    align-items: center;
    background: var(--color-button-bg);
    border: 1px solid var(--color-border);
    border-radius: 50%;
    box-sizing: border-box;
    color: var(--color-button-text);
    display: inline-flex;
    font-weight: bold;
    justify-content: center;
    line-height: 1;
    text-transform: uppercase;
}

.profile-initials-avatar-profile {
    font-size: 3rem;
    height: 160px;
    width: 160px;
}

.profile-initials-avatar-card {
    font-size: 1.75rem;
    height: 88px;
    width: 88px;
}

.profile-initials-avatar-small {
    font-size: 0.75rem;
    height: 32px;
    width: 32px;
}

.profile-photo-editor {
    align-items: flex-start;
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin: 0.5rem 0 1rem 0;
}

.profile-photo-preview-frame {
    height: 160px;
    position: relative;
    width: 160px;
}

.profile-photo-preview-frame > * {
    left: 0;
    position: absolute;
    top: 0;
}

.profile-photo-preview {
    display: block;
    object-fit: cover;
}


.profile-photo-empty-text {
    align-items: center;
    border: 1px dashed var(--css-color-ccc);
    border-radius: 50%;
    box-sizing: border-box;
    display: flex;
    height: 160px;
    justify-content: center;
    padding: 1rem;
    text-align: center;
    width: 160px;
}

.profile-photo-remove-detail {
    margin-top: 0.5rem;
    max-width: 34rem;
}

.profile-photo-controls {
    flex: 1 1 18rem;
    min-width: 15rem;
}


/** CHANGED v2026-07-04.10408: Keep profile-photo removal checkbox inline with its label. */
.profile-photo-remove {
    align-items: center;
    display: flex;
    gap: 0.5rem;
    justify-content: flex-start;
    margin-top: 0.5rem;
}

.profile-photo-remove input[type="checkbox"] {
    flex: 0 0 auto;
    margin: 0;
    width: auto;
}

/* hide by default */
.mobileonly {
    display: none;
}

/** CHANGED v2026-05-17.090: Desktop-only labels support nav text alternatives for app links. */
.desktoponly {
    display: inline;
}

.image-oval {
    border-radius: 50%;
}

.indented {
    margin-left: 20px;
}

/** ADDED v2026-05-18.104: About page structured indentation; replaces inline padding styles. */
.about-indent {
    padding-left: 20px;
}

.partner {
    background: var(--color-status-partner-bg);
}

/* media query for mobile devices (screen width 768px or less) */
@media screen {
/* Purpose: Controls visibility of mobile-only content. */
    .mobileonly {
        display: inline;
    }
}

/* available team */
.available {
    background-color: var(--color-status-available-bg);
}

/* unavailable team */
.unavailable {
    background-color: var(--color-status-unavailable-bg);
}

/* disabled availability */
.availability-disabled {
    pointer-events: none;
    filter: grayscale(1);
}

/* withdrawn team */
.withdrawn {
    background-color: var(--color-status-withdrawn-bg);
}

/* forfeited game */
.forfeit-score {
    background-color: var(--color-status-forfeit-bg) !important;
    border-color: var(--color-pastel-blue) !important;
    -webkit-print-color-adjust: exact;
}

/* Purpose: Applies visual status styling for availability, match, team, or player states. */
input.forfeit-score {
    background-color: var(--color-status-forfeit-bg) !important;
}

/* Purpose: Applies visual status styling for availability, match, team, or player states. */
span.forfeit-score {
    display: inline-block;
    width: 100%;
    box-sizing: border-box;
    background-color: var(--color-status-forfeit-bg) !important;
}
/* forfeited game */


/** CHANGED v2026-05-15.549
 *  Highlights scores that have a pending void/forfeit request so players know
 *  the displayed value is provisional until approval is completed.
 */
.pending-game-change-score {
    background-color: #fef3c7 !important; /** CHANGED v2026-06-08.8033: unique pending amber avoids forfeit/void/single-player colour confusion. */
    /* CHANGED v2026-06-08.8049: pending score state is shown by the orange cell, without the former corner marker. */
    border-color: transparent !important;
    box-shadow: none !important;
    outline: none !important;
    -webkit-print-color-adjust: exact;
}

/** CHANGED v2026-05-17.705
 *  Shows pending void/forfeit workflow state as a compact corner marker on the
 *  score cell so the table does not widen with long status text.
 */
.pending-game-change-cell {
    position: relative;
}

.pending-game-change-cell::after {
    content: "";
    position: absolute;
    top: 0.2rem;
    right: 0.2rem;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 999px;
    background-color: var(--color-message-warning);
    box-shadow: 0 0 0 1px var(--color-background), 0 0 0 2px var(--color-message-warning);
    pointer-events: none;
}

/** CHANGED v2026-05-17.920
 *  Use the same visual colour language for pending requests as final
 *  void/forfeit states, while retaining the compact corner-marker cue.
 */
.pending-game-change-cell.pending-game-change-forfeit::after {
    background-color: var(--color-status-forfeit-bg);
    box-shadow: 0 0 0 1px var(--color-background), 0 0 0 2px var(--color-status-forfeit-bg);
}

.pending-game-change-cell.pending-game-change-void::after {
    background-color: var(--color-status-void-bg);
    box-shadow: 0 0 0 1px var(--color-background), 0 0 0 2px var(--color-status-void-bg);
}

/* void game */
.void {
    background-color: var(--color-status-void-bg);
    padding: 5px;   
    border-radius: 5px;
}

/* single player */
.single {
    background-color: var(--color-status-single-bg);
}

/* hidden element */
.hidden {
    visibility: hidden;
}

/* explain stats */
.explainstats {
    cursor: pointer;
    color: var(--color-white);
    background: var(--color-primary);
    border-radius: 50%;
    padding: 0 5px;
}

/* Navigation */
/* Purpose: Styles navigation links and active/hover navigation states. */
nav .nav-link {
    color: var(--color-white);
    text-decoration: none;
    margin: 0 5px;
    font-weight: bold;
    transition: color 0.3s;
}

/* Purpose: Styles navigation links and active/hover navigation states. */
nav .nav-link:hover {
    color: var(--color-accent);
}

/** CHANGED v2026-05-15.469
 *  Purpose: Highlights the Approvals nav link when pending workflow actions
 *  require the logged-in player's attention.
 */
nav .nav-link-attention {
    color: #000000 !important; /** CHANGED v2026-06-08.8046: make Approvals attention text black on light-orange pill. */
    background: #fef3c7; /** CHANGED v2026-06-08.8045: match normal pending-game score light-orange background. */
    border: 1px solid #fcd34d;
    border-radius: 999px;
    padding: 2px 7px;
}

/** CHANGED v2026-05-15.470
 *  Purpose: Displays a compact pending-approval count inside the Approvals nav
 *  link without making the main navigation taller.
 */
nav .nav-approval-count {
    display: inline-block;
    min-width: 1.2em;
    margin-left: 3px;
    padding: 0 4px;
    color: #000000 !important; /** CHANGED v2026-06-08.8046: keep count readable inside the light-orange attention pill. */
    background: var(--color-white);
    border: 1px solid #fcd34d;
    border-radius: 999px;
    font-size: 0.8em;
    line-height: 1.2;

}


/** CHANGED v2026-05-16.993
 *  Purpose: Keeps the logged-in player/logout controls on a second navigation
 *  row aligned to the right, below the primary links/icons/Admin link row.
 */
nav .nav-user-row {

    flex-basis: 100%;
    justify-content: flex-end;



}

/** CHANGED v2026-05-16.994 */
nav .nav-logout-link {
    opacity: 0.9;
}
/* Navigation */

/* Login */
/* Hide the default browser eye icon in Edge/Chrome/Safari */
input[type="password"]::-ms-reveal,
input[type="password"]::-ms-clear {
    display: none;
}

/* Container to keep the icon inside the box */
.login-field {
    position: relative;
    width: 100%;
}

.login-largetext {
    padding: 12px;
    font-size: 1.1rem; /* Prevents iOS auto-zoom on focus */
    width: 100%;
    padding-right: 40px; /* Make room for the eye icon */
    box-sizing: border-box;
}

/* custom icon positioning */
.login-toggle {
    appearance: none;
    border: 0;
    background: transparent;
    padding: 0;
    width: 2.5rem;
    min-width: 2.5rem;
    height: 2.5rem;
    min-height: 2.5rem;
    display: inline-grid;
    place-items: center;
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    cursor: pointer;
    color: #1f5f91;
    line-height: 1;
    z-index: 2;
    user-select: none;
}
.login-toggle:hover,
.login-toggle:focus-visible { color: #123f62; outline: 2px solid #83b7e8; outline-offset: 2px; }
.login-toggle .app-icon { display: inline-flex; font-size: 1.25rem; }
.login-toggle .password-visibility-icon-hide { display: none; }
.login-toggle.is-visible .password-visibility-icon-show { display: none; }
.login-toggle.is-visible .password-visibility-icon-hide { display: inline-flex; }

/* Password visibility is an icon control, never a full-width button overlay. */
#login-form .login-field > .login-toggle {
    background: transparent !important;
    border: 0 !important;
    border-radius: 4px;
    box-sizing: border-box;
    color: #1f5f91;
    display: inline-grid !important;
    height: 2.25rem !important;
    left: auto !important;
    margin: 0 !important;
    max-width: 2.25rem !important;
    min-height: 2.25rem !important;
    min-width: 2.25rem !important;
    padding: 0 !important;
    position: absolute !important;
    right: 0.5rem !important;
    top: 50% !important;
    transform: translateY(-50%);
    width: 2.25rem !important;
}
#login-form .login-field > .login-toggle:hover { background: transparent !important; color: #123f62; outline: 0; }
#login-form .login-field > .login-toggle:focus-visible { box-shadow: 0 0 0 2px #2d8f50; outline: 0; }
#login-form .login-field > .login-largetext { padding-right: 3.25rem; }

/** CHANGED v2026-05-16.620
 *  Styles the login-screen Face ID / saved-password helper without changing the
 *  existing login action layout.
 */
.login-biometric-button {
    margin-left: 0.35rem;
}

.login-biometric-help {
    font-size: 0.9rem;
    opacity: 0.85;
}

/** CHANGED v2026-05-16.621
 *  Face ID / device saved-password helper is intended for mobile/touch login.
 *  Desktop browsers keep normal password and verification-code login options.
 */
.mobile-only-auth-option {
    display: none;
}

@media (max-width: 768px), (hover: none) and (pointer: coarse) {
    .mobile-only-auth-option {
        display: inline-block;
    }

    .login-biometric-help.mobile-only-auth-option {
        display: block;
    }
}

/* Login */

/* Matches */
/* ensure the container handles the overflow properly for the catch-all redirect fix */
.matches-container {
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* set width of table */
.matches-table {
    width: 100%;
    border-collapse: collapse;
    /* This ensures the table expands as wide as the content needs */
    min-width: max-content; 
    table-layout: auto;
}

/* specific fix for the dynamic borders */
.matches-table td {
    /* Use the variable to keep consistency */
    border: 1px solid var(--color-table-border);
}

/* set width of round column */
.matches-table-round {
    width: 5%;
}

/* set width of team column */
.matches-table-team {
    /* Remove width: 100% - it confuses iOS Safari */
    width: auto; 
    white-space: nowrap;
}


/** CHANGED v2026-05-15.24
 *  Match matches.php team-name cell padding to the Teams/Players stats tables
 *  so match rows use the same compact desktop spacing.
 */
.matches-table-team-cell {
    padding: 2px 3px;
}

/** CHANGED v2026-05-15.30
 *  Disabled obsolete match score sizing rules. The active score-cell and
 *  score-control sizing is centralized in the Phase 4 match score block below,
 *  which appears later in the cascade and already controls desktop/mobile width.
 *
/* set width of game columns */
.matches-table-game {
    /* Keep score cells compact while leaving enough room for two-digit scores. */
    width: 2.6rem;
    min-width: 2.6rem;
}

/* set width of input tag */
.input-score {
    box-sizing: border-box;
    max-width: 100%;
    text-align: center;
}

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
.matches-table-game .input-score {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    width: 2.25rem;
    min-width: 2.25rem;
    min-height: 1.75rem;
    padding-left: 0.1rem;
    padding-right: 0.1rem;
}

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
input.input-score {
    min-height: 0;
    height: 1.75rem;
}


/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
input.input-score[type='number'] {
    -moz-appearance: textfield;
}

/* *CHANGED* - Fix iOS bug that erases border */
.ios-hide {
    /* Keep the TD visible so the table grid doesn't collapse */
    visibility: visible !important; 
    border: 1px solid var(--color-table-border) !important;
    /* Box shadow creates a 'virtual' border inside the cell that iOS won't hide */
    box-shadow: inset 0 0 0 0.5px var(--color-table-border);
    background-color: var(--color-white);
}

/* Hide the input inside, but keep the parent TD visible */
.ios-hide > * {
    visibility: hidden !important;
    pointer-events: none;
}

/* highlight refinement */
.win,
.score-win {
    background-color: var(--color-game-win-bg) !important;
    -webkit-print-color-adjust: exact; /* Helps iOS maintain color during rendering */
}
/* Matches */

/* generic message types */
.success {
    display: block;
    margin: 0.35rem 0;
    color: var(--color-button-bg);
    font-weight: bold;
}

.warning {
    display: block;
    margin: 0.35rem 0;
    color: var(--color-message-warning);
    font-weight: bold;
}

.info {
    display: block;
    margin: 0.35rem 0;
    color: var(--color-message-info);
    font-weight: bold;
}

.error {
    display: block;
    margin: 0.35rem 0;
    color: var(--color-message-error);
    font-weight: bold;
}

.failure {
    display: block;
    margin: 0.35rem 0;
    color: var(--color-message-failure);
    font-weight: bold;
}

.subindicator {
    background-color: var(--color-status-substitute-bg);
}
/* generic message types */

/* Calendar */

/* Calendar team legend uses a real table so each team roster position lines up vertically. */
.calendar-team-legend {
    display: table;
    border-collapse: collapse;
    max-width: max-content;
    margin: 0.25rem 0 0.6rem;
    padding: 2px 4px;
}

.calendar-team-legend-line {
    display: table-row;
    line-height: 1.15;
    padding-block: 0;
}

.calendar-team-legend-team-cell,
.calendar-team-legend-player-cell {
    display: table-cell;
    vertical-align: middle;
    white-space: nowrap;
    padding: 0 0.65rem 0 0;
}

.calendar-team-legend-team-cell {
    width: 1.5rem;
    padding-right: 0.25rem;
}

.calendar-team-legend-line .team-profile-icon-link {
    margin-right: 0;
}

.calendar-team-legend-line .team-pair-separator {
    white-space: nowrap;
}

.calendar-team-legend-player {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.calendar-team-legend-player-cell-empty {
    min-width: 8rem;
}

.calendar-team-legend-swatch {
    display: inline-block;
    width: 1.15rem;
    min-width: 1.15rem;
    height: 0.85rem;
    padding-left: 0;
    border: 1px solid var(--color-table-border);
    border-radius: 0.2rem;
    box-shadow: inset 0 0 0 1px var(--css-color-rgba-255-255-255-0-4);
}

@media (max-width: 720px) {
    .calendar-team-legend {
        max-width: 100%;
    }

    .calendar-team-legend-team-cell,
    .calendar-team-legend-player-cell {
        padding-right: 0.45rem;
    }
}

.table-calendar th {
    text-align: center;
}

.table-calendar td {
    padding: 0px; /* remove padding */
}

/* padding for date <td> cell */
.datepad {
    padding: 4px !important;
}

.calendar-clickable-cell {
    cursor: pointer;
}

.calendar-clickable-cell:hover {
    outline: 2px solid var(--color-table-border);
    outline-offset: -2px;
}


/* ADDED v2026-06-16.8420: completed/historical Calendar cells are inert records, while their Scheduler badges remain clickable. */
.table-calendar.component-player-table--calendar-readonly .calendar-readonly-cell,
.table-calendar .calendar-readonly-cell {
    cursor: default !important;
}
.table-calendar.component-player-table--calendar-readonly .calendar-readonly-cell:hover,
.table-calendar .calendar-readonly-cell:hover {
    outline: none !important;
}
.table-calendar.component-player-table--calendar-readonly .calendar-readonly-cell .calendar-scheduler-badge,
.table-calendar .calendar-readonly-cell .calendar-scheduler-badge {
    cursor: pointer !important;
}

/* highlight time slots where two or more complete teams are available at the same time */
.calendar-overlap {
    position: relative;
    outline: none !important;
    isolation: isolate;
    outline-offset: -4px;
    box-shadow:
        inset 0 0 0 1px var(--color-white),
        inset 0 0 0 2px var(--calendar-overlap-outline, var(--calendar-overlap-outline)),
        0 0 4px var(--css-color-rgba-74-74-74-0-45);
    background: var(--color-pastel-yellow);
}

/* add before styling */
.calendar-overlap::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 5;
    box-sizing: border-box;
    border: 2px solid var(--calendar-overlap-outline, var(--calendar-overlap-outline));
    box-shadow:
        inset 0 0 0 1px var(--color-white),
        0 0 4px var(--css-color-rgba-74-74-74-0-45);
    pointer-events: none;
}


/* ADDED v2026-06-03.7271: Calendar scheduler shortcut badge for exactly resolved two-team overlap cells. */
.calendar-scheduler-badge {
    position: absolute;
    top: 3px;
    right: 3px;
    z-index: 8;
    width: 20px;
    height: 20px;
    min-width: 20px;
    padding: 0;
    border-radius: 999px;
    border: 1px solid var(--color-table-border);
    background: var(--color-white);
    color: var(--color-text, #222);
    font-size: 13px;
    line-height: 18px;
    text-align: center;
    box-shadow: 0 0 7px var(--css-color-rgba-74-74-74-0-45);
    cursor: pointer;
    touch-action: manipulation;
}

.calendar-scheduler-badge:hover,
.calendar-scheduler-badge:focus-visible {
    outline: 2px solid var(--calendar-overlap-outline, var(--color-table-border));
    outline-offset: 1px;
}

/* overlap cells keep the neutral outline only; no 2+ corner badge */
.calendar-overlap::after {
    content: none !important;
    display: none !important;
}

/* keep player colour bars close to their normal colours in overlap slots */
/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
.calendar-overlap div:not(.c0) {
    filter: saturate(1.18) brightness(0.98) contrast(1.04);
    box-shadow: inset 0 0 0 1px var(--color-white);
    font-weight: 600;
}

/* calendar touch handling now allows vertical browser scrolling */
.table-calendar {
    user-select: none;
    touch-action: pan-y;
}

/* left date column explicitly allows vertical touch scrolling */
/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
.table-calendar .datepad {
    touch-action: pan-y;
}

/* calendar hour cells also permit vertical pan gestures */
.calendar-clickable-cell {
    touch-action: pan-y;
}

/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
.c0, .c1, .c2, .c3, .c4, .c5, .c6, .c7, .c8 {
    padding-left: 1.5rem; font-size: 50%;
}

.c0 { background-color: var(--color-white); }
.c1 { background-color: var(--color-red); }
.c2 { background-color: var(--color-pastel-red); }
.c3 { background-color: var(--color-green); }
.c4 { background-color: var(--color-pastel-green); }
.c5 { background-color: var(--color-blue); }
.c6 { background-color: var(--color-pastel-blue); }
.c7 { background-color: var(--color-yellow); }
.c8 { background-color: var(--color-pastel-yellow); }

/* Hide default HTML checkbox */
.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

/* The slider */
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--color-status-unavailable-bg);
  transition: 0.2s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 16px;
  width: 16px;
  left: 4px;
  bottom: 2px;
  /** CHANGED v2026-05-15.26 - Removed duplicate semicolon while preserving the slider knob color. */
  background-color: var(--color-white);
  transition: 0.2s;
}

/* available */
/* Purpose: Styles the custom toggle switch and slider control. */
input:checked + .slider {
  background-color: var(--color-status-available-bg);
}

/* Purpose: Styles the custom toggle switch and slider control. */
input:checked + .slider:before {
  transform: translateX(36px);
}

/* rounded sliders */
/* Purpose: Styles the custom toggle switch and slider control. */
.slider.round {
  border-radius: 20px;
}

/* Purpose: Styles the custom toggle switch and slider control. */
.slider.round:before {
  border-radius: 50%;
}
/* Players */

/* Admin */
.displaysql {
  /* Styling to make div resizable */
  width: 100%;
  height: 400px;
  border: 1px solid var(--color-black);
  resize: both;
  overflow: auto;
}

.admin-subnav {
  /** CHANGED v2026-05-14.49
   *  Restore the admin submenu to two visible rows.
   *  The row wrappers are now stacked vertically instead of being treated as
   *  side-by-side flex items by the parent nav.
   */
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  gap: 0;
  margin: 0 0 1rem 0;
  padding: 0.25rem 0;
  overflow-x: hidden;
  white-space: normal;
}

.admin-subnav-link {
  position: relative;
  display: inline-block;
  padding: 0.25rem 0 0.4rem 0;
  color: var(--color-primary);
  font-weight: bold;
  text-decoration: none;
  white-space: normal;
  overflow-wrap: anywhere;
}

.admin-subnav-link::after {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  /** CHANGED v2026-05-15.22 - Use root color variable instead of hard-coded var(--color-transparent) value. */
  background: var(--color-transparent);
  content: '';
}

/* Purpose: Styles navigation links and active/hover navigation states. */
.admin-subnav-link:hover::after,
.admin-subnav-link-active::after {
  background: var(--color-accent);
}

.admin-subnav-link-active {
  color: var(--color-primary);
}

.admin-action-note {
  display: inline-block;
  max-width: 8rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}


/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-table .dashboard-status-ok {
  background-color: var(--color-pastel-green);
}

/* Purpose: Formats standard user-facing message states. */
.admin-dashboard-table .dashboard-status-warning {
  background-color: var(--color-pastel-yellow);
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-table .dashboard-status-blocked {
  background-color: var(--color-pastel-red);
}
/* Admin */

/* display content as the final styling command*/
html {
    visibility: visible;
    opacity: 1;
}
/* Added final mobile touch-action overrides for the calendar after all earlier rules */
/* The left date column and Date header explicitly allow native vertical panning */
/* Calendar hour cells allow vertical panning; JavaScript only intercepts clear horizontal drag gestures */
/* On iOS/Brave, earlier pointer handling stopped cell updates during vertical movement but still did not reliably restore page scrolling */
/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
.table-calendar,
.table-calendar tbody,
.table-calendar tr {
    touch-action: pan-y !important;
}

/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
.table-calendar td.datepad,
.table-calendar th:first-child {
    touch-action: pan-y !important;
    -webkit-user-select: none;
    user-select: none;
}

/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
.table-calendar .calendar-clickable-cell {
    touch-action: pan-y !important;
}

/* Admin Dashboard */
.admin-dashboard-section {
  margin-bottom: 1.25rem;
}

.admin-dashboard-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-table th,
.admin-dashboard-table td {
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--color-table-border);
  text-align: left;
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-table th:first-child,
.admin-dashboard-table td:first-child {
  width: 5.5rem;
  white-space: nowrap;
  overflow-wrap: normal;
}

/* Purpose: Formats standard user-facing message states. */
.dashboard-status-ok,
.dashboard-status-warning,
.dashboard-status-blocked {
  font-weight: normal;
}

/* Purpose: Formats standard user-facing message states. */
.dashboard-status-ok td:first-child,
.dashboard-status-warning td:first-child,
.dashboard-status-blocked td:first-child {
  font-weight: bold;
}
/* Admin Dashboard */

/* ADDED v2026-05-13.31: Admin pages should wrap wide content inside the page container instead of forcing horizontal scrolling. */
/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-container,
.admin-settings-container,
.admin-league-settings-container,
.admin-leagues-container,
.admin-global-players-container,
.admin-league-roster-container,
.admin-teams-container,
.admin-dupr-container,
.admin-rounds-container,
.diagnostics-container {
  max-width: 100%;
  overflow-x: hidden;
  box-sizing: border-box;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-container *,
.admin-settings-container *,
.admin-league-settings-container *,
.admin-leagues-container *,
.admin-global-players-container *,
.admin-league-roster-container *,
.admin-teams-container *,
.admin-dupr-container *,
.admin-rounds-container *,
.diagnostics-container * {
  box-sizing: border-box;
}

/* Purpose: Provides shared layout, alignment, spacing, or container utility styling. */
.admin-dashboard-container .divborder,
.admin-settings-container .divborder,
.admin-league-settings-container .divborder,
.admin-leagues-container .divborder,
.admin-global-players-container .divborder,
.admin-league-roster-container .divborder,
.admin-teams-container .divborder,
.admin-dupr-container .divborder,
.admin-rounds-container .divborder,
.diagnostics-container .divborder {
  max-width: 100%;
  overflow-x: hidden;
  overflow-wrap: anywhere;
}

/* Purpose: Provides shared layout, alignment, spacing, or container utility styling. */
.admin-dashboard-container .table-container,
.admin-settings-container .table-container,
.admin-league-settings-container .table-container,
.admin-leagues-container .table-container,
.admin-global-players-container .table-container,
.admin-league-roster-container .table-container,
.admin-teams-container .table-container,
.admin-dupr-container .table-container,
.admin-rounds-container .table-container,
.diagnostics-container .table-container {
  max-width: 100%;
  overflow-x: hidden;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-container table,
.admin-settings-container table,
.admin-league-settings-container table,
.admin-leagues-container table,
.admin-global-players-container table,
.admin-league-roster-container table,
.admin-teams-container table,
.admin-dupr-container table,
.admin-rounds-container table,
.diagnostics-container table {
  max-width: 100%;
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-container th,
.admin-dashboard-container td,
.admin-settings-container th,
.admin-settings-container td,
.admin-league-settings-container th,
.admin-league-settings-container td,
.admin-leagues-container th,
.admin-leagues-container td,
.admin-global-players-container th,
.admin-global-players-container td,
.admin-league-roster-container th,
.admin-league-roster-container td,
.admin-teams-container th,
.admin-teams-container td,
.admin-dupr-container th,
.admin-dupr-container td,
.admin-rounds-container th,
.admin-rounds-container td,
.diagnostics-container th,
.diagnostics-container td {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  vertical-align: top;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-container input,
.admin-dashboard-container select,
.admin-dashboard-container textarea,
.admin-settings-container input,
.admin-settings-container select,
.admin-settings-container textarea,
.admin-league-settings-container input,
.admin-league-settings-container select,
.admin-league-settings-container textarea,
.admin-leagues-container input,
.admin-leagues-container select,
.admin-leagues-container textarea,
.admin-global-players-container input,
.admin-global-players-container select,
.admin-global-players-container textarea,
.admin-league-roster-container input,
.admin-league-roster-container select,
.admin-league-roster-container textarea,
.admin-teams-container input,
.admin-teams-container select,
.admin-teams-container textarea,
.admin-dupr-container input,
.admin-dupr-container select,
.admin-dupr-container textarea,
.admin-rounds-container input,
.admin-rounds-container select,
.admin-rounds-container textarea,
.diagnostics-container input,
.diagnostics-container select,
.diagnostics-container textarea {
  max-width: 100%;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-dashboard-container button,
.admin-settings-container button,
.admin-league-settings-container button,
.admin-leagues-container button,
.admin-global-players-container button,
.admin-league-roster-container button,
.admin-teams-container button,
.admin-dupr-container button,
.admin-rounds-container button,
.diagnostics-container button {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* Purpose: Formats SQL/debug output so it remains readable inside the page. */
.admin-dashboard-container pre,
.admin-settings-container pre,
.admin-league-settings-container pre,
.admin-leagues-container pre,
.admin-global-players-container pre,
.admin-league-roster-container pre,
.admin-teams-container pre,
.admin-dupr-container pre,
.admin-rounds-container pre,
.diagnostics-container pre,
.admin-dashboard-container textarea,
.admin-settings-container textarea,
.admin-league-settings-container textarea,
.admin-leagues-container textarea,
.admin-global-players-container textarea,
.admin-league-roster-container textarea,
.admin-teams-container textarea,
.admin-dupr-container textarea,
.admin-rounds-container textarea,
.diagnostics-container textarea,
.displaysql {
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

/* ADDED v2026-05-14.04: Keep admin League setup fields wide while preserving container wrapping. */
/* Purpose: Hides elements that should not display in the current UI state. */
.admin-leagues-container input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.admin-leagues-container select,
.admin-leagues-container textarea {
  width: min(100%, 36rem);
}

.admin-generated-uuid {
  display: inline-block;
  max-width: 100%;
  padding: 0.2rem 0.35rem;
  border: 1px solid var(--color-table-border);
  overflow-wrap: anywhere;
}

.admin-inline-note {
  display: block;
  margin-top: 0.25rem;
  overflow-wrap: anywhere;
}

.admin-inline-fields {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.75rem;
  align-items: end;
  margin: 0.35rem 0;
}

.admin-inline-fields label {
  display: inline-block;
  margin: 0;
}

button:disabled,
input[type="submit"]:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}


/* ADDED v2026-05-14.05: Diagnostic section headers use the same table-header colour as descriptor cells. */
/* Purpose: Styles diagnostics and data-validation output. */
.diagnostics-table .diagnostic-section-header {
  background: var(--color-table-header-bg);
}


/** ADDED v2026-05-14.06
 *  Highlights the selected league template row in Admin - Leagues.
 */
.selected-row {
    font-weight: bold;
}

/** ADDED v2026-05-14.19
 *  What changed:
 *  - Added light spacing for the per-game DUPR submission request checkbox on
 *    the Matches page.
 *
 *  Why:
 *  - The option should read as secondary metadata under the score fields rather
 *    than another score input.
 */
.dupr-submit-option {
    display: inline-block;
    font-size: 0.85em;
    margin-top: 0.25rem;
    white-space: nowrap;
}

/** ADDED v2026-05-14.25
 *  What changed:
 *  - Added reusable print/export controls for generated scramble schedules.
 *
 *  Why:
 *  - Scramble managers need either a browser printout or a CSV export without
 *    changing the saved schedule data.
 */
.button-link {
    display: inline-block;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--color-button-border, var(--color-table-border));
    border-radius: 0.25rem;
    text-decoration: none;
}

/** ADDED v2026-05-14.25
 *  What changed:
 *  - Hide action controls when printing schedules.
 *
 *  Why:
 *  - Printed scramble schedules should show the schedule, not navigation or
 *    export controls.
 */
@media print {
/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    .no-print,
    nav,
    header,
    footer,
    .admin-nav,
    .admin-sub-nav {
        display: none !important;
    }
}


/** ADDED v2026-05-14.28
 *  Makes admin team note fields easier to edit without changing table layout.
 *
 *  Purpose:
 *  Team notes commonly contain both player names and short admin context, so the
 *  default browser text width is too narrow on the Current Season Teams page.
 */
.wide-note-input {
    min-width: 22rem;
    max-width: 100%;
}

/** ADDED v2026-05-14.31
 *  Styles the dedicated six-box SMS verification code form.
 *
 *  Purpose:
 *  Verification codes are entered in one digit per box and auto-submit
 *  when complete. The boxes need to be visibly distinct from the normal password
 *  field so users understand they are in the verification code step.
 */
.verification-code-box-row {
    display: flex;
    gap: 0.5rem;
    justify-content: center;
    margin: 1rem 0;
}

.verification-code-digit-box {
    font-size: 2rem;
    height: 3rem;
    text-align: center;
    width: 2.5rem;
}

/** ADDED v2026-05-14.32
 *  Styles stacked admin edit cards used where edit forms mirror create forms.
 *
 *  Purpose:
 *  Organization editing now uses one label/input row per field, matching Create
 *  Org. A light card separator keeps multiple edit forms readable without
 *  changing the existing table/input styling.
 */
.admin-edit-card {
    /** CHANGED v2026-05-15.22 - Removed hard-coded fallback color; table border color is defined in :root. */
    border-top: 1px solid var(--color-table-border);
    margin-top: 1rem;
    padding-top: 1rem;
}


/** ADDED v2026-05-14.33
 *  Admin form refinements for Phase 2 UI consistency.
 *
 *  Purpose:
 *  - Org edit fields need enough width for real organization/contact values.
 *  - Inline search actions should keep the clear action next to the search box.
 *  - People / Access role dropdowns need enough room to show full role names.
 *  - Scramble helper text should wrap inside its containing div.
 */
.org-edit-input {
    width: min(100%, 64rem);
}

.admin-org-form th {
    width: 1%;
    white-space: nowrap;
}

.admin-org-form td {
    min-width: 0;
}

.admin-org-form-table {
    table-layout: auto;
}

.admin-org-form-table th:first-child,
.admin-org-form-table td:first-child {
    width: 1% !important;
    white-space: nowrap;
}

.admin-org-form-table th:last-child,
.admin-org-form-table td:last-child {
    width: auto !important;
}

.admin-org-favicon-preview {
    display: inline-block;
    width: 2rem;
    height: 2rem;
    margin: 0 .5rem 0 0;
    vertical-align: middle;
    object-fit: contain;
}

.admin-org-selector-form {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    margin: .75rem 0;
}

.admin-org-selector-form select {
    min-width: min(100%, 24rem);
}

.admin-search-inline {
    align-items: center;
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    max-width: 100%;
}

.admin-search-inline input[type="text"] {
    width: min(100%, 24rem);
}

.icon-cancel-link {
    display: inline-block;
    font-size: 1.5rem;
    font-weight: bold;
    line-height: 1;
    padding: 0 0.35rem;
    text-decoration: none;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-people-edit-table th:nth-child(5),
.admin-people-edit-table td:nth-child(5) {
    min-width: 12rem;
}

.admin-access-select {
    min-width: 11rem;
}

.admin-help-text {
    display: block;
    max-width: 34rem;
    overflow-wrap: anywhere;
}


/** CHANGED v2026-05-14.34
 *  What changed:
 *  - Widened Org create/edit inputs further.
 *  - Added People / Access dropdown and two-column edit-form sizing.
 *
 *  Why:
 *  - Organization values and admin-role labels were still cramped in realistic
 *    production data. These widths keep forms readable without changing their
 *    existing table-based structure.
 */
.people-access-player-select {
    width: min(100%, 32rem);
}

.admin-two-column-form th {
    width: 12rem;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-two-column-form input[type="text"],
.admin-two-column-form input[type="tel"],
.admin-two-column-form input[type="number"],
.admin-two-column-form select {
    width: min(100%, 28rem);
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.admin-two-column-form .admin-access-select {
    width: min(100%, 28rem);
}


/** ADDED v2026-05-14.43 2026-05-14 07:45 PDT
 *  What changed:
 *  - Added row styling for the two-line admin navigation layout.
 *
 *  Why:
 *  - Admin navigation is now intentionally grouped into two rows, so each row
 *    needs consistent wrapping and spacing without affecting the public nav.
 */
.admin-subnav-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    justify-content: center;
    width: 100%;
    /** CHANGED v2026-05-14.49
     *  Keep each configured admin navigation group on its own line.
     */
    margin-bottom: 0;
}

/** ADDED v2026-05-14.33
 *  Styles grouped login submit actions without relying on manual <br> spacing.
 *
 *  Purpose:
 *  Login now has multiple explicit actions. A compact flex layout keeps the
 *  buttons readable on desktop and lets them wrap on narrower screens.
 */
.login-actions {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    justify-content: center;
    margin: 1rem 0;
}

/** ADDED v2026-05-14.55
 *  Make data-validation subsection headers span the full diagnostics div width.
 */
.data-validation-header {
    display: block;
    width: 100%;
    margin: 0.75rem 0 0.25rem 0;
    padding: 0.4rem 0.5rem;
    background: var(--color-table-header-bg);
    border-left: 5px solid var(--color-accent);
    box-sizing: border-box;
}


/** CHANGED v2026-05-14.57
 *  Keep diagnostics data-validation tables full width while allowing the browser
 *  to size columns from header text. Empty validation result sets otherwise make
 *  fixed-layout tables distribute narrow columns and wrap short headers even when
 *  the surrounding div has plenty of room.
 */
.diagnostics-container .data-validation-table-container {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
}

/* Purpose: Styles diagnostics and data-validation output. */
.diagnostics-container table.data-validation-table {
    display: table;
    width: 100% !important;
    max-width: none;
    min-width: 100%;
    table-layout: auto;
}

/* Purpose: Styles diagnostics and data-validation output. */
.diagnostics-container table.data-validation-table th {
    white-space: nowrap !important;
    overflow-wrap: normal;
    word-break: keep-all;
}

/* Purpose: Styles diagnostics and data-validation output. */
.diagnostics-container table.data-validation-table td {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
}

/* Purpose: Styles diagnostics and data-validation output. */
.diagnostics-container table.data-validation-table td.data-validation-empty {
    white-space: normal;
    overflow-wrap: normal;
}

#profile-photo-warning {
    margin-top: 0.35rem;
    min-height: 1.2rem;
}


/** ADDED v2026-05-14.67
 *  Phase 3 Step 6 Stats polish.
 *
 *  Purpose:
 *  Adds current-round progress cards and keeps the remaining-match list compact
 *  until the user opens it.
 */
.stats-progress-panel {
    border: 1px solid var(--color-table-border);
    border-radius: 0.5rem;
    box-sizing: border-box;
    margin: 1rem 0 1.25rem 0;
    padding: 0.9rem;
}

.stats-progress-panel h3 {
    margin-top: 0;
}

.stats-progress-grid {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    margin-bottom: 0.9rem;
}

.stats-progress-card {
    border: 1px solid var(--color-table-border);
    border-radius: 0.5rem;
    box-sizing: border-box;
    padding: 0.8rem;
}

.stats-progress-label {
    font-size: 0.82rem;
    font-weight: bold;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.stats-progress-value {
    font-size: 1.25rem;
    font-weight: bold;
    line-height: 1.2;
    margin-top: 0.25rem;
}

.stats-progress-bar {
    background: var(--color-table-border);
    border-radius: 999px;
    height: 0.65rem;
    margin-top: 0.55rem;
    overflow: hidden;
}

.stats-progress-bar span {
    background: var(--color-primary);
    display: block;
    height: 100%;
}

.stats-progress-detail {
    font-size: 0.9rem;
    margin-top: 0.4rem;
}

.stats-details {
    margin-top: 0.75rem;
}

/** ADDED v2026-05-14.62
 *  Phase 3 dashboard overview and quick-link cards.
 *
 *  Purpose:
 *  The dashboard now starts with at-a-glance operating metrics and high-value
 *  admin shortcuts before the detailed diagnostics/readiness tables.
 */
.dashboard-overview,
.dashboard-quick-links {
    margin: 1rem 0 1.25rem 0;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.dashboard-card-grid,
.dashboard-link-grid {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.dashboard-card,
.dashboard-link-card {
    border: 1px solid var(--color-table-border);
    border-radius: 0.5rem;
    box-sizing: border-box;
    padding: 0.8rem;
    text-decoration: none;
}

.dashboard-card-title {
    font-size: 0.82rem;
    font-weight: bold;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.dashboard-card-value {
    font-size: 1.5rem;
    font-weight: bold;
    line-height: 1.2;
    margin-top: 0.25rem;
}

.dashboard-card-detail {
    font-size: 0.9rem;
    margin-top: 0.35rem;
}

.dashboard-card-ok {
    background-color: var(--color-pastel-green);
}

.dashboard-card-warning {
    background-color: var(--color-pastel-yellow);
}

.dashboard-card-blocked {
    background-color: var(--color-pastel-red);
}

.dashboard-card-clickable {
    color: inherit;
    cursor: pointer;
    display: block;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.dashboard-card-clickable:hover,
.dashboard-card-clickable:focus {
    text-decoration: none;
    transform: translateY(-1px);
}

.dashboard-link-card {
    background: var(--color-button-bg);
    color: var(--color-button-text);
    display: block;
    font-weight: bold;
    text-align: center;
}

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
.dashboard-link-card:hover,
.dashboard-link-card:focus {
    filter: brightness(0.95);
}


/** ADDED v2026-05-14.64
 *  Phase 3 actionable Data Validation styling.
 *
 *  Purpose:
 *  Data Validation now displays severity counts, suggested fixes, and action links.
 *  The visual treatment keeps error/warning/info labels scannable while preserving
 *  the existing diagnostics table layout.
 */
.data-validation-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0.75rem 0 1rem 0;
}

.data-validation-check {
    margin: 0.6rem 0;
}

.data-validation-check > summary {
    font-weight: bold;
}

.data-validation-severity {
    border: 1px solid var(--color-table-border);
    border-radius: 0.35rem;
    display: inline-block;
    font-weight: bold;
    padding: 0.15rem 0.45rem;
    white-space: nowrap;
}

.data-validation-severity-error {
    background-color: var(--color-pastel-red);
}

.data-validation-severity-warning {
    background-color: var(--color-pastel-yellow);
}

.data-validation-severity-info {
    background-color: var(--color-pastel-blue);
}

.stats-explain-group {
    margin-bottom: 0.8rem;
}

.stats-explain-group h4 {
    margin: 0.6rem 0 0.25rem 0;
}

.stats-explain-group p {
    margin: 0.15rem 0;
}

/** ADDED v2026-05-14.68
 *  Phase 3 Step 6 follow-up.
 *
 *  Purpose:
 *  Keeps the compact stats tables visible inside their page divs without relying
 *  on a horizontal scrollbar that users may not notice. The first/custom column
 *  can wrap, while the short numeric stat columns stay compact.
 */


.stats-table {
    table-layout: auto;
    width: 100%;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-table th,
.stats-table td {
    font-size: 0.82rem;
    padding: 2px 3px;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-table th:first-child,
.stats-table td:first-child,
.stats-table th:nth-child(2),
.stats-table td:nth-child(2) {
    white-space: normal;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-table th:not(:first-child),
.stats-table td:not(:first-child) {
    min-width: 2.2rem;
    text-align: center;
}

/** CHANGED v2026-05-15.06
 *  Team-name cells must remain left-aligned even though most stats-table columns
 *  are centered. This rule is intentionally placed after the generic numeric
 *  column rule so CSS order cannot re-center the Teams column.
 */
.stats-table td.stats-team-cell,
.stats-table th.stats-team-cell,
.stats-table td.stats-team-cell:not(:first-child),
.stats-table th.stats-team-cell:not(:first-child) {
    text-align: left;
}


/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-table th.stats-group-start,
.stats-table td.stats-group-start {
    border-left: 3px solid var(--color-table-border);
}

.matches-table tr:target {
    outline: 3px solid var(--color-accent);
    outline-offset: 2px;
}



/** ADDED v2026-05-14.70
 *  Phase 3 Step 6 follow-up.
 *
 *  Purpose:
 *  Highlights Remaining Matches rows that include the logged-in player either
 *  as an original team member or as a substitute, making the user's own pending
 *  matches easier to spot without changing the table structure.
 */
.stats-my-remaining-match td {
    background-color: var(--color-status-partner-bg);
    font-weight: bold;
}


.team-player-list {
    display: inline-flex;
    flex-direction: column;
    gap: 0.15rem;
    max-width: 100%;
}

.team-player-line {
    display: block;
    max-width: 100%;
    white-space: nowrap;
}

.remaining-match-team {
    white-space: normal;
}

/** ADDED v2026-05-14.180
 *  Phase 3 privacy/stats refinement.
 *
 *  Purpose:
 *  Keeps the default player/team stats tables readable by showing the basic
 *  columns first and revealing the lower-priority advanced columns only when
 *  the user expands the table.
 */
.stats-table-toolbar {
    margin: 0 0 0.35rem 0;
    text-align: right;
}

.stats-advanced-toggle {
    cursor: pointer;
    font-size: 0.85rem;
    padding: 0.25rem 0.45rem;
}

.stats-advanced {
    display: none;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-advanced-visible .stats-advanced {
    display: table-cell;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-table th.stats-game-basic-start,
.stats-table td.stats-game-basic-start {
    border-left: 3px solid var(--color-table-border);
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-advanced-visible .stats-table th.stats-game-basic-start,
.stats-advanced-visible .stats-table td.stats-game-basic-start {
    border-left: 0;
}

/* Advanced standings contain substantially more short numeric columns than
 * the basic view. On desktop, preserve legible values and use the existing
 * stats-table scroll wrapper instead of collapsing every column into a
 * character-wide strip. */
@media (min-width: 761px) {
    .stats-advanced-visible .stats-table {
        width: max-content;
        min-width: 100%;
    }

    .stats-advanced-visible .stats-table th:not(:first-child),
    .stats-advanced-visible .stats-table td:not(:first-child) {
        min-width: 2.8rem;
        white-space: nowrap;
    }

    .stats-advanced-visible .stats-table th:nth-child(2),
    .stats-advanced-visible .stats-table td:nth-child(2) {
        min-width: 15rem;
    }
}

.stats-explain-note {
    margin: 0.5rem 0;
}

/** CHANGED v2026-05-15.03
 *  Tightens stats.php derived-stat table layouts.
 *
 *  Team Insight Stats keeps the full header text visible by allowing header
 *  wrapping, shrinking the team column, and keeping individual player names on
 *  their own unbroken lines. Round Trends uses the same no-horizontal-scroll
 *  approach for long header labels.
 */
.team-insight-container,
.round-trends-container {
    overflow-x: visible;
}

.team-insight-table {
    table-layout: fixed;
    width: 100%;
    font-size: 0.68rem;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.team-insight-table th,
.team-insight-table td {
    padding-left: 0.12rem;
    padding-right: 0.12rem;
    text-align: center;
}

.team-insight-table th {
    white-space: normal;
    line-height: 1.1;
    overflow-wrap: normal;
    word-break: normal;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.team-insight-table th:first-child,
.team-insight-table td:first-child {
    width: 16%;
}

.team-insight-table td:first-child {
    white-space: normal;
    text-align: left;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.team-insight-table th:not(:first-child),
.team-insight-table td:not(:first-child) {
    width: 9.33%;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.team-insight-table .team-player-line {
    white-space: nowrap;
}

/** ADDED v2026-05-15.02
 *  Phase 3 stats display refinement.
 *
 *  Purpose:
 *  - teams.php uses DisplayTeamLink() in both inline and stacked layouts.
 *  - The basic stats view stays compact with "player1 / player2".
 *  - The advanced stats view stacks team members to recover horizontal space.
 *  - stats.php Team Insight and Round Trends are separate derived-stat tables,
 *    so their compact layout is handled independently from GetPlayerStats()
 *    tables used by players.php and teams.php.
 */
.team-display-stacked {
    display: none;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-advanced-visible .team-display-inline {
    display: none;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-advanced-visible .team-display-stacked {
    display: inline;
}

.round-trends-table {
    table-layout: fixed;
    width: 100%;
    font-size: 0.82rem;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.round-trends-table th,
.round-trends-table td {
    padding-left: 0.2rem;
    padding-right: 0.2rem;
    text-align: center;
}

.round-trends-table th {
    white-space: normal;
    line-height: 1.1;
    overflow-wrap: normal;
    word-break: normal;
}

/** ADDED v2026-05-15.10
 *  Phase 4 Step 1 mobile/player-facing UX pass.
 *
 *  Purpose:
 *  - Improve readability and tap targets on public/player-facing pages.
 *  - Let navigation, forms, and dense tables adapt on phones/tablets.
 *  - Preserve existing business rules, permissions, schema, and admin workflows.
 */
* {
    box-sizing: border-box;
}



main {
    max-width: 100%;
}

.table-container {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/** CHANGED v2026-05-15.125
 *  Purpose: Lets Advanced Stats tables extend past the page div instead of
 *  adding a horizontal scrollbar inside the stats table wrapper.
 */
.stats-table-container {
    max-width: none;
    overflow-x: visible;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
select,
textarea {
    max-width: 100%;
}

@media screen and (min-width: 769px) {
/* Purpose: Controls visibility of mobile-only content. */
    .mobileonly {
        display: none !important;
    }
}

@media screen and (max-width: 768px) {
    /** CHANGED v2026-05-17.091: Hide desktop-only nav labels on mobile. */
    .desktoponly {
        display: none !important;
    }

    body {
        font-size: 1rem;
        max-width: none;
        min-width: 0;
    }

    header {
        border-radius: 0;
        padding: 0.75rem;
    }

    h1 {
        font-size: 1.25rem;
        line-height: 1.2;
    }

    h2 {
        font-size: 1.2rem;
        line-height: 1.2;
    }

    h3 {
        font-size: 1.05rem;
        line-height: 1.2;
    }

/* Purpose: Provides shared layout, alignment, spacing, or container utility styling. */
    .mainbody {
        padding: 0 0.35rem;
    }

    nav {
        align-items: center;
        display: flex;
        flex-wrap: wrap;
        gap: 0.2rem 0.45rem;
        line-height: 1.2;
    }

/* Purpose: Styles navigation links and active/hover navigation states. */
    nav .nav-link {
        display: inline-flex;
        align-items: center;
        min-height: 2rem;
        margin: 0;
        padding: 0.15rem 0.1rem;
    }

/* Purpose: Provides shared layout, alignment, spacing, or container utility styling. */
    .divborder {
        padding: 0.5rem;
    }

/* Purpose: Styles the button link component. */
    button,
    .button-link,
    input[type="submit"] {
        min-height: 2.75rem;
    }

    input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
    select,
    textarea {
        font-size: 1rem;
        min-height: 2.5rem;
        width: 100%;
    }

    table {
        max-width: 100%;
        table-layout: auto;
    }

    table th,
    table td {
        padding: 3px;
        font-size: 0.95rem;
    }

    table td {
        white-space: normal;
        overflow-wrap: anywhere;
        word-break: normal;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .table-calendar td,
    .table-calendar th,
    .matches-table-game,
    .stats-table td:not(:first-child),
    .stats-table th:not(:first-child),
    .team-insight-table td:not(:first-child),
    .team-insight-table th:not(:first-child),
    .round-trends-table td,
    .round-trends-table th {
        overflow-wrap: normal;
        word-break: normal;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .matches-container {
        overflow-x: visible;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .matches-table {
        min-width: 0;
        table-layout: fixed;
        width: 100%;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .matches-table-team {
        white-space: normal;
        overflow-wrap: normal;
    }

    /** CHANGED v2026-05-15.30
     *  Disabled obsolete mobile match score sizing rules. The active mobile
     *  score sizing is defined in the final Phase 4 media block below.
     *
    .matches-table-game {
        min-width: 2.55rem;
        width: 2.55rem;
    }

    .matches-table-game .input-score {
        width: 2.2rem;
        min-width: 2.2rem;
        min-height: 1.8rem;
        padding-left: 0.05rem;
        padding-right: 0.05rem;
        line-height: 1.2;
    }

    input.input-score {
        min-height: 0;
        height: 1.8rem;
    }
     */

/* Purpose: Styles DUPR submission controls and related form options. */
    .dupr-submit-option {
        white-space: normal;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-table th,
    .stats-table td {
        font-size: 0.86rem;
        padding: 2px;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    /** CHANGED v2026-05-15.24
     *  Keep matches.php team-name cell padding aligned with Teams/Players
     *  stats tables on mobile as well.
     */
    .matches-table-team-cell {
        padding: 2px;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-table th:not(:first-child),
    .stats-table td:not(:first-child) {
        min-width: 1.8rem;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-table-toolbar {
        text-align: left;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-advanced-toggle {
        width: 100%;
    }

/* Purpose: Applies visual status styling for availability, match, team, or player states. */
    /** CHANGED v2026-05-15.26
     *  Keep the stats progress grid single-column on mobile, but stop this
     *  earlier media block from overriding the finalized Phase 4 dashboard
     *  card counts that are defined later in the cascade.
     */
    .stats-progress-grid {
        grid-template-columns: 1fr;
    }

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    /** CHANGED v2026-05-15.26 - Dashboard mobile grid rules are centralized in the Phase 4 block near the end of this file.
    .dashboard-card-grid,
    .dashboard-link-grid {
        grid-template-columns: 1fr;
    }
    */

    .profile-photo-editor {
        flex-direction: column;
    }

/* Purpose: Styles profile photo display, preview, and removal controls. */
    .profile-photo-controls {
        flex-basis: auto;
        min-width: 0;
        width: 100%;
    }

/* Purpose: Styles login and verification-code entry controls. */
    .verification-code-box-row {
        gap: 0.3rem;
    }

/* Purpose: Styles login and verification-code entry controls. */
    .verification-code-digit-box {
        font-size: 1.6rem;
        height: 2.75rem;
        width: 2.2rem;
    }

/* Purpose: Styles login and verification-code entry controls. */
    .login-actions {
        align-items: stretch;
        flex-direction: column;
    }

/* Purpose: Styles login and verification-code entry controls. */
    .login-actions button {
        width: 100%;
    }

/* Purpose: Styles navigation links and active/hover navigation states. */
    .admin-subnav-link {
        min-height: 2rem;
    }

/* Purpose: Styles the wide note input component. */
    .wide-note-input {
        min-width: 0;
        width: 100%;
    }
}

@media screen and (max-width: 480px) {
    h1 {
        font-size: 1.12rem;
    }

    nav {
        gap: 0.1rem 0.35rem;
    }

    table th,
    table td {
        font-size: 0.82rem;
    }

    /** CHANGED v2026-05-15.30
     *  Disabled obsolete narrow-screen match score width. The final Phase 4
     *  mobile rule below now owns match score column sizing.
     *
    .matches-table-game {
        min-width: 2.2rem;
        width: 2.2rem;
    }
     */

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-table th,
    .stats-table td {
        font-size: 0.72rem;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .team-insight-table,
    .round-trends-table {
        font-size: 0.68rem;
    }
}

/** CHANGED v2026-05-15.66
 *  Keep editable and displayed match scores visually consistent. Generic form
 *  rules make text inputs expand to the full table cell on some breakpoints, so
 *  score controls need an explicit fixed width/height after those rules.
 */
.matches-table-game {
    text-align: center;
    width: 2.9rem;
    min-width: 2.9rem;
}

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
.matches-table-game .input-score,
input.input-score,
span.input-score {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem !important;
    min-width: 2.35rem !important;
    max-width: 2.35rem !important;
    height: 1.7rem !important;
    min-height: 1.7rem !important;
    padding: 0 0.1rem !important;
    font-size: 1rem !important;
    line-height: 1.2;
    text-align: center;
    vertical-align: middle;
}

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
input.input-score {
    appearance: textfield;
    -moz-appearance: textfield;
}

@media screen and (max-width: 768px) {
    body {
        font-size: 1.06rem;
    }

    table th,
    table td {
        font-size: 1rem;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .matches-table th,
    .matches-table td {
        font-size: 1.04rem;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .matches-table-game {
        width: 2.75rem;
        min-width: 2.75rem;
    }

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
    .matches-table-game .input-score,
    input.input-score,
    span.input-score {
        width: 2.3rem !important;
        min-width: 2.3rem !important;
        max-width: 2.3rem !important;
        height: 1.65rem !important;
        min-height: 1.65rem !important;
        font-size: 1.04rem !important;
    }
}

/** CHANGED v2026-05-15.68
 *  Phase 4 player-facing layout refinements.
 *
 *  Purpose:
 *  - Keeps Teams and Players stats tables readable now that the stat toggle is
 *    used for Basic Stats / Advanced Stats rather than expand/hide wording.
 *  - Uses stacked team/player display in crowded ranking tables so names wrap
 *    only at intentional boundaries instead of splitting individual names.
 *  - Adjusts calendar/dashboard desktop/mobile sizing requested during the
 *    Phase 4 layout pass.
 */
.stats-context-teams .stats-table th,
.stats-context-teams .stats-table td,
.stats-context-players .stats-table th,
.stats-context-players .stats-table td {
    font-size: 0.94rem;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-context-teams .stats-team-cell,
.stats-context-players .stats-player-cell {
    font-size: 0.98rem;
    line-height: 1.18;
    white-space: normal;

    word-break: normal;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-context-teams .team-player-list,
.stats-context-players .player-name-lines {
    display: inline-flex;
    flex-direction: column;
    gap: 0.08rem;
    max-width: 100%;
}

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
.stats-context-teams .team-player-line,
.stats-context-players .player-name-line {
    display: block;
    max-width: 100%;
    white-space: nowrap;
}

/** CHANGED v2026-05-15.26
 *  Obsolete Phase 3 responsive overrides are intentionally disabled here.
 *  The finalized Phase 4 calendar width and dashboard grid counts are defined
 *  in the dedicated Phase 4 block below so the cascade has one source of truth.
 *
.table-calendar {
    width: 110%;
    max-width: none;
}

.dashboard-card-grid,
.dashboard-link-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
 */

@media screen and (max-width: 768px) {
/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-teams .stats-table th,
    .stats-context-teams .stats-table td,
    .stats-context-players .stats-table th,
    .stats-context-players .stats-table td {
        font-size: 0.94rem;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-teams .stats-team-cell,
    .stats-context-players .stats-player-cell {
        font-size: 1rem;
    }

/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
    /** CHANGED v2026-05-15.26
     *  Disabled obsolete calendar/dashboard overrides that conflicted with the
     *  finalized Phase 4 rules below. Keeping them commented makes the older
     *  responsive intent visible without leaving contradictory active CSS.
     *
    .table-calendar {
        width: 96vw;
        max-width: 96vw;
    }

    .dashboard-card-grid,
    .dashboard-link-grid {
        grid-template-columns: 1fr;
    }
     */
}

@media screen and (max-width: 480px) {
/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-teams .stats-table th,
    .stats-context-teams .stats-table td,
    .stats-context-players .stats-table th,
    .stats-context-players .stats-table td {
        font-size: 0.9rem;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-teams .stats-team-cell,
    .stats-context-players .stats-player-cell {
        font-size: 0.96rem;
    }
}


/** ADDED v2026-05-15.20
 *  Phase 4 Step 1 layout follow-up.
 *
 *  Purpose:
 *  - Expands matches.php unavailable/withdrawn status tables to the page div.
 *  - Keeps desktop player stat names on one line while preserving mobile stacked names.
 *  - Keeps calendar.php inside its containing div on desktop and mobile.
 *  - Forces requested admin dashboard card counts: overview 4 desktop/2 mobile,
 *    quick links 4 desktop/4 mobile.
 *  - CHANGED v2026-05-15.26: this block is now the single active source for
 *    calendar width and dashboard card-count overrides.
 */
.matches-status-table {
    /** CHANGED v2026-05-15.21
     *  table-container is normally a scroll wrapper, but matches.php applies it
     *  directly to the unavailable/withdrawn tables. Restore table display so
     *  these single-column status tables expand across the full content div.
     */
    display: table;
    max-width: 100%;
    table-layout: fixed;
    width: 100%;
}

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
.matches-status-table thead,
.matches-status-table tbody {
    /** CHANGED v2026-05-15.21
     *  Keep header/body using normal table layout after overriding display above.
     */
    width: 100%;
}

.matches-status-table tr {
    /** CHANGED v2026-05-15.21
     *  Force each unavailable/withdrawn row to span the full table width.
     */
    width: 100%;
}

/* Purpose: Controls match table layout, scoring inputs, and match-result highlighting. */
.matches-status-table th,
.matches-status-table td {
    /** CHANGED v2026-05-15.21
     *  Single-column status tables should fill the matches content area.
     */
    width: 100%;
}

.table-calendar {
    max-width: 100%;
    min-width: 0;
    table-layout: fixed;
    width: 100%;
}

.dashboard-card-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.dashboard-link-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.dashboard-link-card {
    font-size: 0.9rem;
    padding: 0.55rem 0.35rem;
}

@media screen and (min-width: 769px) {
/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-players .player-name-lines {
        display: inline;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-players .player-name-line {
        display: inline;
        white-space: nowrap;
    }

/* Purpose: Styles stats tables, advanced stats controls, team/player names, and trend sections. */
    .stats-context-players .player-name-line + .player-name-line::before {
        content: " ";
    }
}

@media screen and (max-width: 768px) {
/* Purpose: Controls calendar table layout, clickable cells, and availability colour bands. */
    .table-calendar {
        max-width: 100%;
        width: 100%;
    }

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    .dashboard-card-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    .dashboard-link-grid {
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 0.35rem;
    }

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    .dashboard-card,
    .dashboard-link-card {
        padding: 0.5rem 0.35rem;
    }

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    .dashboard-card-title,
    .dashboard-card-detail,
    .dashboard-link-card {
        font-size: 0.78rem;
        line-height: 1.15;
    }

/* Purpose: Styles admin dashboards, forms, cards, tables, and action controls. */
    .dashboard-card-value {
        font-size: 1.15rem;
    }
}

/** CHANGED v2026-05-15.113
 *  Purpose: Keeps Current Round Progress > Remaining Matches compact enough to
 *  stay inside the stats panel while displaying team names on one line.
 */
.remaining-matches-container {
    overflow-x: visible;
}

/* Purpose: Compact Remaining Matches table without changing other stats tables. */
.remaining-matches-table {
    table-layout: fixed;

    font-size: 0.82rem;
}

/* Purpose: Compact Remaining Matches headers when the table is close to the panel width. */
.remaining-matches-table th {
    padding-left: 0.15rem;
    padding-right: 0.15rem;
    white-space: nowrap;
    font-size: 0.76rem;
}

/* Purpose: Keep Remaining Matches team names on a single line. */
.remaining-matches-table .remaining-match-team {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Purpose: Keep linked team members inline in Remaining Matches. */
.remaining-matches-table .team-player-list,
.remaining-matches-table .team-player-line {
    display: inline;
    white-space: nowrap;
}

/* Purpose: Format explanatory round-trend notes above the Round Trends table. */
.round-trend-insights ul {
    margin-top: 0.35rem;
    padding-left: 1.25rem;
}

@media (max-width: 700px) {
    /** CHANGED v2026-05-15.113
     *  Purpose: Further compacts Remaining Matches on narrow screens.
     */
    .remaining-matches-table {
        font-size: 0.72rem;
    }

    .remaining-matches-table th,
    .remaining-matches-table td {
        padding-left: 0.08rem;
        padding-right: 0.08rem;
    }
}

/** CHANGED v2026-05-24.4099
 *  Purpose:
 *  Tunes Add Changelog Entry column widths after adding Release Datetime. Details
 *  still receives the most space while Page, Release, Publish, and Action stay compact.
 */


/* Purpose: Keeps the changelog Page column compact. */
.admin-changelog-entry-table .admin-changelog-page-col {
  width: 12%;
}

/* Purpose: Gives the changelog Details column the most available width. */
.admin-changelog-entry-table .admin-changelog-details-col {
  width: 48%;
}

/* Purpose: Keeps the changelog Release Datetime column readable but bounded. */
.admin-changelog-entry-table .admin-changelog-release-col {

  white-space: nowrap;
}

/* Purpose: Keeps the changelog Publish checkbox column compact. */
.admin-changelog-entry-table .admin-changelog-publish-col {
  width: 5%;
  white-space: nowrap;
  text-align: center;
}

/* ADDED v2026-06-04.7465: Keeps the changelog Highlight checkbox column compact after visible row labels were removed. */
.admin-changelog-entry-table .admin-changelog-highlight-col {
  width: 5%;
  white-space: nowrap;
  text-align: center;
}

/* Purpose: Keeps the changelog Action column compact. */
.admin-changelog-entry-table .admin-changelog-action-col {
  width: 10%;
  white-space: nowrap;
}

/* Purpose: Allows changelog text/date fields to use their assigned columns. */
.admin-changelog-entry-table input[type="text"],
.admin-changelog-entry-table input[type="datetime-local"] {
  width: 100%;
}

/* Purpose: Prevents the compact Add button from stretching unnecessarily. */
.admin-changelog-entry-table .admin-changelog-action-col button {
  white-space: nowrap;
}

/* ADDED v2026-06-04.7466: Keep Add Changelog Entry table inside its parent container. */
.admin-changelog-entry-table-container {
  max-width: 100%;
  overflow-x: hidden;
  box-sizing: border-box;
}

.admin-changelog-entry-table {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  table-layout: fixed;
  font-size: 0.86rem;
}

.admin-changelog-entry-table th,
.admin-changelog-entry-table td {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  padding-left: 0.28rem;
  padding-right: 0.28rem;
  overflow-wrap: anywhere;
}

.admin-changelog-entry-table .admin-changelog-page-col {
  width: 10%;
}

.admin-changelog-entry-table .admin-changelog-details-col {
  width: 43%;
}

.admin-changelog-entry-table .admin-changelog-release-col {
  width: 20%;
}

.admin-changelog-entry-table .admin-changelog-publish-col,
.admin-changelog-entry-table .admin-changelog-highlight-col {
  width: 4.5%;
}

.admin-changelog-entry-table .admin-changelog-action-col {
  width: 18%;
}

.admin-changelog-entry-table input[type="text"],
.admin-changelog-entry-table input[type="datetime-local"] {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
}

.admin-changelog-entry-table input[type="datetime-local"] {
  font-size: 0.82rem;
}

.admin-changelog-entry-table .admin-changelog-action-col button {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}

/** CHANGED v2026-05-15.529
 *  Purpose: Keeps Approvals match links visually consistent with other compact
 *  match navigation links while relying on matches.php #match-* target outline.
 */
.workflow-match-link {
    white-space: nowrap;
}


/** CHANGED v2026-05-15.532
 *  Purpose: Keeps player workflow approval actions visible side-by-side and
 *  prevents the global full-width button rule from hiding the Reject action.
 */
.workflow-decision-form {
    display: flex;
    gap: 0.35rem;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
}

/* Purpose: Keeps Approve/Reject action buttons compact in Approvals tables. */
.workflow-decision-form button {
    width: auto;
    min-width: 4.75rem;
    padding: 0.3rem 0.55rem;
    white-space: nowrap;
}

/** CHANGED v2026-05-15.540
 *  Marks player-owned fields as read-only when a People / Access admin account
 *  is linked to an existing player. The fields remain visible for confirmation
 *  but should not appear editable from the admin-account form.
 */
.people-access-form input.readonly,
.people-access-form select.readonly {
    background-color: var(--color-page-bg);
    cursor: not-allowed;
}

/** CHANGED v2026-05-16.900
 *  Passkey UI is optional and feature-flagged. Mobile-first login styling keeps
 *  Face ID/passkey primary on touch devices without changing desktop fallback.
 */
.login-passkey-button {
    font-weight: bold;
}

.passkey-profile-panel {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--css-color-ddd);
}

.passkey-status {
    display: inline-block;
    margin-left: 0.75rem;
}

/** CHANGED v2026-05-16.910
 *  Passkey login is only visually promoted after the current device has
 *  successfully registered a passkey. Before setup, keep the button available
 *  as guidance but avoid presenting it as the primary login path.
 */
.login-passkey-button.passkey-needs-setup {
    font-weight: normal;
    opacity: 0.9;
}

.login-passkey-button.passkey-ready {
    font-weight: bold;
}

.passkey-profile-panel-prominent {
    border: 1px solid var(--css-color-ddd);
    border-radius: 8px;
    padding: 1rem;
    margin-top: 1rem;
    background: var(--color-section-bg, var(--color-white));
}

.passkey-profile-panel-prominent h4 {
    margin-top: 0;
}

/** CHANGED v2026-05-16.930
 *  When this mobile device has already registered a passkey, present passkey
 *  login as the default path while keeping password and verification-code
 *  fallback visible below it. The browser security prompt still remains required.
 */
.passkey-login-panel.mobile-only-auth-option {
    display: none;
}


/** CHANGED v2026-05-23.4046
 *  The login Face ID/passkey panel is hidden until JavaScript confirms both
 *  platform support and this browser's local passkey registration marker.
 */
.passkey-login-panel[hidden],
.login-passkey-button[hidden] {
    display: none !important;
}

@media (max-width: 768px), (hover: none) and (pointer: coarse) {
    .passkey-login-panel.mobile-only-auth-option {
        display: block;
        margin: 0.75rem 0 1rem 0;
        padding: 0.9rem;
        border: 1px solid var(--css-color-ddd);
        border-radius: 8px;
        background: var(--color-section-bg, var(--color-white));
    }

    .passkey-login-panel .login-passkey-button {
        display: block;
        width: min(100%, 20rem);
        max-width: 75%;
        margin-left: auto;
        margin-right: auto;
        padding: 0.9rem 1rem;
        font-size: 1.05rem;
    }

    .login-form-passkey-ready .passkey-login-panel {
        border-width: 2px;
    }

    .login-form-passkey-ready .login-password-fallback {
        margin-top: 0.5rem;
        padding-top: 0.75rem;
        border-top: 1px solid var(--css-color-ddd);
    }

    .login-form-passkey-ready .login-password-fallback::before {
        content: "Password / verification-code fallback";
        display: block;
        margin-bottom: 0.5rem;
        font-size: 0.85rem;
        opacity: 0.75;
        text-align: center;
    }
}


/* CHANGED v2026-05-16.1020: Team Profile page read-only scaffold styling. */


/** ADDED v2026-05-20.755-759
 *  Team Profile member photo cards.
 *  Purpose: Show the two registered team members with existing profile photos
 *  or initials fallbacks without creating page-specific inline styling.
 */
.team-profile-member-grid {

    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.75rem;
    margin: 0.75rem 0 1rem;
}

.team-profile-member-card {


    gap: 0.75rem;
    padding: 0.75rem;
    border: 1px solid var(--admin-border, var(--css-color-d0d7de));
    border-radius: var(--admin-card-radius, 0.75rem);
    background: var(--admin-surface, var(--css-color-rgba-255-255-255-0-72));
}

.team-profile-member-photo-link {
    flex: 0 0 auto;
    line-height: 0;
    text-decoration: none;
}

.team-profile-member-card .image-oval,
.team-profile-member-card .profile-initials-avatar-profile {
    width: 88px;
    height: 88px;
}



.team-profile-member-name {
    display: inline-block;
    font-weight: 700;
    line-height: 1.2;
    overflow-wrap: anywhere;
}

.team-profile-member-meta {
    margin-top: 0.25rem;
    color: var(--admin-muted-text, var(--css-color-586069));
    font-size: 0.9rem;
    line-height: 1.35;
}

@media (max-width: 520px) {
    .team-profile-member-grid {
        grid-template-columns: 1fr;
    }

    .team-profile-member-card {
        align-items: flex-start;
    }

    .team-profile-member-card .image-oval,
    .team-profile-member-card .profile-initials-avatar-profile {
        width: 72px;
        height: 72px;
    }
}

@media (prefers-color-scheme: dark) {
    .team-profile-member-card {
        border-color: var(--admin-border, var(--control-text-border));
        background: var(--admin-surface, var(--css-color-rgba-22-27-34-0-72));
    }

    .team-profile-member-meta {
        color: var(--admin-muted-text, var(--player-muted-text));
    }
}
.team-profile-section {
    margin-bottom: 1rem;
}

.team-profile-section summary {
    font-weight: 600;
}

.team-profile-link,
.small-link {
    font-size: 0.85em;
    opacity: 0.85;
}

/** CHANGED v2026-05-17.022
 *  Purpose: Render the main navigation as two explicit left-aligned rows.
 *  Primary page links stay on the first row; logged-in user utilities stay on
 *  the second row without right-aligning Logout away from the other links.
 */
nav .nav-primary-row,
nav .nav-secondary-row,
nav .nav-tertiary-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center; /** CHANGED v2026-05-17.300: Center-position main navigation link rows. */
    gap: 0.35rem 0.5rem;
}

nav .nav-secondary-row,
nav .nav-tertiary-row {
    margin-top: 0.25rem;
}

/** CHANGED v2026-05-17.023
 *  Purpose: Preserve compatibility with older nav-user-row markup while keeping
 *  legacy secondary navigation left-aligned with the active two-row header.
 */
nav .nav-user-row {
    display: flex;
    justify-content: center; /** CHANGED v2026-05-17.301: Keep legacy nav user rows centered with the active main nav rows. */
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.25rem;
}


/** CHANGED v2026-05-17.049
 *  Purpose: Teams page uses a compact icon-style link to Team Profile rather
 *  than making the full roster text a link.
 */
.team-profile-icon-link {

    font-size: 0.95rem;
    line-height: 1;
    margin-left: 0.4rem;
    opacity: 0.8;
    text-decoration: none;
}

.team-profile-icon-link:hover {
    opacity: 1;
    text-decoration: none;
}

/** CHANGED v2026-05-17.037
 *  Purpose: Keep Manage Matches game labels and status dropdowns on one line on
 *  mobile, matching the desktop modal layout.
 */
.manage-game-row {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    margin: 0.35rem 0;
}

.manage-game-row label {
    margin: 0;
    white-space: nowrap;
}

.manage-game-row select {
    width: auto;
    max-width: 12rem;
}


/** ADDED v10574
 *  Void/Forfeit is now a compact administrative outcome selector. The row no
 *  longer displays a Game N label, and the select is constrained to the modal
 *  body so native focus/dropdown chrome does not leave a clipped artifact on
 *  the left edge.
 */
.manage-outcome-row {
    width: 100%;
    max-width: 100%;
    overflow: visible;
}

.manage-outcome-row .manage-outcome-select {
    display: block;
    width: min(100%, 32rem);
    max-width: 100%;
    box-sizing: border-box;
    margin: 0 auto;
}

/** CHANGED v2026-05-17.021
 *  Purpose: Approvals tables contain long workflow labels, team names, and
 *  diagnostic text. Wrap those cells so tables fit inside the page div instead
 *  of forcing horizontal overflow for normal use.
 */
.approvals-container .table-container {

    overflow-x: hidden;
}

.approvals-container table {

    table-layout: fixed;
}

.approvals-container table td,
.approvals-container table th {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    vertical-align: top;
}

.approvals-container .workflow-decision-form,
.approvals-container .inline-form {
    white-space: normal;
}

/** CHANGED v2026-05-17.078
 *  Purpose: Make the Team Profile ✺ link match the Matches manage-action feel:
 *  a compact right-aligned symbol inside the team cell.
 */
.stats-team-cell {
    position: relative;
}

.team-profile-icon-link {
    float: right;
    min-width: 1.25rem;
    text-align: right;
    font-size: 1rem;
}

/** CHANGED v2026-05-20.404
 *  Test deployments no longer recolour winning scores. Production and test use
 *  the same win/status palette; test is identified by the header title suffix.
 */


/** CHANGED v2026-05-17.092
 *  Purpose: Keep Team Profile history opponent rosters on one line while adding
 *  a compact profile link similar to the Teams page ✺ action.
 */
.team-profile-linked-team {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.35rem;
    width: 100%;
    white-space: nowrap;
}

/** CHANGED v2026-05-17.105
 *  Purpose: Right-justify opponent Team Profile ✺ links in Team Profile history
 *  tables while preserving one-line roster display.
 */


.team-profile-inline-icon {
    flex: 0 0 auto;
    float: none;
    margin-left: auto;
    min-width: 1.25rem;
    text-align: right;
}

/** CHANGED v2026-05-17.119
 *  Purpose: Keeps compact Pool-heading app icons visually separate from the
 *  Pool label without changing the main navigation layout.
 */
.app-link-group-pool {
    vertical-align: middle;
}

/** CHANGED v2026-05-17.120
 *  Purpose: Normalizes app icon link spacing by letting the wrapper own the
 *  horizontal gap instead of relying on each nav-link margin.
 */
.app-link-group .app-icon-link {
    margin-left: 0;
    margin-right: 0;
}


/** CHANGED v2026-05-17.137
 *  Purpose: Team Profile ✺ links are left-side team actions, not right-side
 *  Manage Match actions. Keep spacing consistent wherever team names appear.
 */
.team-profile-icon-link {
    float: none;
    display: inline-block;
    margin-left: 0;
    margin-right: 0.35rem;
    min-width: 1rem;
    text-align: left;
    vertical-align: baseline;
}

.team-profile-name-with-icon,
.matches-team-profile-line,
.team-profile-linked-team {
    display: inline-flex;
    align-items: baseline;
    justify-content: flex-start;
    gap: 0.2rem;
    max-width: 100%;
}

.stats-team-cell .team-profile-icon-link,
.matches-team-profile-line .team-profile-icon-link,
.team-profile-linked-team .team-profile-icon-link {
    flex: 0 0 auto;
}

.team-profile-linked-roster {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.team-profile-inline-icon {
    margin-left: 0;
    margin-right: 0.35rem;
    min-width: 1rem;
    text-align: left;
}


/** CHANGED v2026-05-17.153
 *  Purpose: Center compact numeric/stat table cells in one shared rule.
 *  mixed.js assigns numeric-cell to integers, decimals, percentages, scores,
 *  and W-L records so page templates do not need repeated alignment rules.
 */
td.integer-cell,
td.numeric-cell,
td.score-cell,
td.percent-cell,
td.record-cell {
    text-align: center;
}

/** CHANGED v2026-05-17.154
 *  Purpose: Tighten the visual gap between the Team Profile ✺ action and the
 *  adjacent team name now that the icon sits to the left of team labels.
 */
.team-profile-name-with-icon,
.matches-team-profile-line,
.team-profile-linked-team {
    gap: 0.08rem;
}

.stats-team-cell .team-profile-icon-link,
.matches-team-profile-line .team-profile-icon-link,
.team-profile-linked-team .team-profile-icon-link,
.team-profile-inline-icon {
    margin-right: 0.12rem;
    min-width: 0.85rem;
}

/** CHANGED v2026-05-17.196
 *  Purpose: Visually separates the league description/title from navigation
 *  links in the main header.
 */
.site-league-title {
    font-size: 1.65rem;
    font-weight: 700;
    letter-spacing: 0.015em;
    margin-bottom: 0.35rem;
    text-align: center;
}

/** CHANGED v2026-05-17.197
 *  Purpose: Keeps dashboard quick links in the requested row groupings instead
 *  of one auto-flowing grid.
 */
.dashboard-link-grid-row {
    margin-bottom: 0.75rem;
}

.dashboard-link-grid-row:last-child {
    margin-bottom: 0;
}

/** CHANGED v2026-05-17.198
 *  Purpose: Distinguishes an already-configured passkey state from the setup
 *  callout without implying that another registration is needed.
 */
.passkey-profile-panel-configured {
    border: 1px solid var(--color-table-border);
    border-radius: 0.5rem;
    margin: 1rem 0;
    padding: 0.75rem;
}


/** CHANGED v2026-05-17.229
 *  Purpose: Keeps Admin Dashboard quick links in the requested 5/4 row layout.
 */
.dashboard-link-grid-row-five {
    grid-template-columns: repeat(5, minmax(7.5rem, 1fr));
}

.dashboard-link-grid-row-four {
    grid-template-columns: repeat(4, minmax(8rem, 1fr));
}

/** CHANGED v2026-05-17.230
 *  Purpose: Remaining Matches has two long team columns and two compact action/stat
 *  columns. Explicit widths reduce wasted space and prevent long teams from being
 *  cut off prematurely.
 */
.remaining-matches-table {
    table-layout: auto;
    width: 100%;
}

.remaining-matches-table .remaining-match-team-col,
.remaining-matches-table .remaining-match-team {
    width: 42%;
    white-space: normal;
}

.remaining-matches-table .remaining-match-games-col,
.remaining-matches-table .remaining-match-view-col,
.remaining-matches-table .remaining-match-view-cell {
    width: 8%;
    text-align: center;
    white-space: nowrap;
}

.stats-team-with-profile {
    align-items: baseline;
    display: inline-flex;
    gap: 0.08rem;
    max-width: 100%;
}

@media (max-width: 700px) {
    .dashboard-link-grid-row-five,
    .dashboard-link-grid-row-four {
        grid-template-columns: repeat(2, minmax(8rem, 1fr));
    }
}

/* ADDED v2026-05-18.015: Stats submitted-games-by-date chart. */
.submitted-games-chart-wrap {
    overflow-x: auto;
    padding: 0.5rem 0;
}

.submitted-games-chart {
    min-width: 100%;
    max-height: 260px;
}

.submitted-games-chart-bar {
    fill: var(--color-link, var(--css-color-2f6f9f));
}

.submitted-games-chart-bar-group:hover .submitted-games-chart-bar {
    opacity: 0.8;
}

.chart-axis {
    stroke: var(--color-border, var(--css-color-999));
    stroke-width: 1;
}

.chart-axis-label,
.chart-tick,
.chart-date-label,
.chart-bar-value {
    fill: var(--color-text, var(--css-color-333));
    font-size: 10px;
}

.chart-bar-value {
    font-weight: 600;
}

.submitted-games-table {
    margin-top: 0.5rem;
}


/* ADDED v2026-05-18.1050: Donation page card/form scaffolding. */
.donation-card {
    border: 1px solid var(--border-color, var(--css-color-ccc));
    border-radius: 8px;
    padding: 16px;
    max-width: 720px;
}

.donation-form input[type=number] {
    max-width: 180px;
}

/** ADDED v2026-05-18.1086
 *  Admin usage-stat chart styles.
 */
.admin-usage-panel {
    overflow-x: hidden;
}

.admin-usage-summary {
    display: grid;
    gap: 0.75rem;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    margin: 0.75rem 0 1rem 0;
}

.admin-usage-chart-layout {
    align-items: center;
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(11rem, 16rem) minmax(0, 1fr);
}

.admin-usage-pie {
    aspect-ratio: 1 / 1;
    border: 1px solid var(--color-table-border);
    border-radius: 50%;
    box-shadow: 0 1px 2px var(--css-color-rgba-0-0-0-0-12);
    max-width: 16rem;
    width: 100%;
}

.admin-usage-table-container {
    margin: 0;
}

.admin-usage-table td:first-child {
    min-width: 12rem;
}

.admin-usage-swatch {
    border: 1px solid var(--color-table-border);
    display: inline-block;
    height: 0.8rem;
    margin-right: 0.4rem;
    vertical-align: -0.08rem;
    width: 0.8rem;
}

@media (max-width: 700px) {
    .admin-usage-chart-layout {
        grid-template-columns: 1fr;
    }

    .admin-usage-pie {
        margin: 0 auto;
        max-width: 13rem;
    }
}

/** ADDED v2026-05-18.1096
 *  Expanded admin usage-report chart styles.
 */
.admin-usage-table .num,
.admin-dashboard-table .num {
    text-align: center;
    white-space: nowrap;
}

.admin-usage-bar-shell {
    background: var(--color-table-header-bg, var(--css-color-f0f0f0));
    border: 1px solid var(--color-table-border);
    border-radius: 999px;
    height: 0.85rem;
    min-width: 8rem;
    overflow: hidden;
}

.admin-usage-bar {
    background: currentColor;
    height: 100%;
    opacity: 0.45;
}

.admin-usage-series {
    align-items: end;
    border: 1px solid var(--color-table-border);
    display: flex;
    gap: 0.35rem;
    height: 12rem;
    margin: 0.5rem 0 1rem 0;
    overflow-x: auto;
    padding: 0.75rem 0.75rem 2.4rem 0.75rem;
}

.admin-usage-series-item {
    align-items: center;
    align-self: stretch;
    display: flex;
    flex: 0 0 2.4rem;
    flex-direction: column;
    justify-content: end;
    min-width: 2.4rem;
    position: relative;
}

.admin-usage-series-bar {
    background: currentColor;
    border-radius: 0.25rem 0.25rem 0 0;
    opacity: 0.45;
    width: 1.3rem;
}

.admin-usage-series-label {
    bottom: -2rem;
    font-size: 0.72rem;
    left: 50%;
    max-width: 4.8rem;
    overflow: hidden;
    position: absolute;
    text-align: center;
    text-overflow: ellipsis;
    transform: translateX(-50%) rotate(-35deg);
    transform-origin: top center;
    white-space: nowrap;
}

.admin-usage-panel h4 {
    margin-top: 1.25rem;
}

.admin-usage-panel h5 {
    margin-bottom: 0.25rem;
}

/** ADDED v2026-05-18.1113
 *  Usage stats table containment and collapsed report sections.
 */
.admin-usage-report {
    border: 1px solid var(--color-table-border);
    border-radius: 0.5rem;
    margin: 0.75rem 0;
    overflow: hidden;
}

.admin-usage-report > summary {
    background: var(--color-table-header-bg, var(--css-color-f0f0f0));
    cursor: pointer;
    font-weight: 700;
    padding: 0.6rem 0.8rem;
}

.admin-usage-report-body {
    padding: 0.75rem;
}

.admin-usage-table,
.admin-usage-bar-table {
    table-layout: auto;

}

.admin-usage-table th,
.admin-usage-table td,
.admin-usage-bar-table th,
.admin-usage-bar-table td {
    font-size: clamp(0.72rem, 1.4vw, 0.92rem);
    line-height: 1.2;

    padding-left: clamp(0.25rem, 0.8vw, 0.55rem);
    padding-right: clamp(0.25rem, 0.8vw, 0.55rem);

    word-break: normal;
}

.admin-usage-table td:first-child,
.admin-usage-bar-table td:first-child {
    min-width: 8rem;
    max-width: 22rem;
}



.feedback-page-path-input,
.feedback-title-input {
    box-sizing: border-box;
    max-width: 42rem;
    width: min(100%, 42rem);
}


/** CHANGED v2026-05-18.1132
 *  Usage Stats table containment. Prefer compact fixed column sizing, numeric
 *  no-wrap cells, and wrapped labels/dates so text stays inside its cell rather
 *  than spilling into adjacent columns.
 */
.admin-usage-table-container {
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
}

.admin-usage-table,
.admin-usage-bar-table {
    border-collapse: collapse;
    table-layout: fixed;
    width: 100%;
}

.admin-usage-table th,
.admin-usage-table td,
.admin-usage-bar-table th,
.admin-usage-bar-table td {
    box-sizing: border-box;
    font-size: clamp(0.68rem, 0.95vw, 0.86rem);
    line-height: 1.18;
    max-width: 0;
    overflow: hidden;

    padding: clamp(0.22rem, 0.65vw, 0.48rem);
    text-overflow: clip;
    vertical-align: top;
    white-space: normal;

}

.admin-usage-table th,
.admin-usage-bar-table th {
    font-size: clamp(0.64rem, 0.9vw, 0.8rem);
    line-height: 1.1;
}

.admin-usage-table .num,
.admin-dashboard-table .num,
.admin-usage-bar-table .num {
    text-align: center;
    white-space: nowrap;
    word-break: normal;
}

.admin-usage-swatch {
    flex: 0 0 auto;
}

.admin-usage-table td:first-child,
.admin-usage-bar-table td:first-child {
    max-width: none;
    min-width: 0;
}

.admin-usage-page-table .usage-col-page { width: 32%; }
.admin-usage-page-table .usage-col-num { width: 9%; }
.admin-usage-page-table .usage-col-percent { width: 8%; }
.admin-usage-page-table .usage-col-num-wide { width: 13%; }
.admin-usage-page-table .usage-col-date { width: 25%; }

.admin-usage-table .usage-col-label,
.admin-usage-bar-table .usage-col-label { width: 34%; }
.admin-usage-table .usage-col-num,
.admin-usage-bar-table .usage-col-num { width: 10%; }
.admin-usage-table .usage-col-percent { width: 10%; }
.admin-usage-bar-table .usage-col-bar { width: 28%; }
.admin-usage-bar-table .usage-col-extra { width: 14%; }

.admin-usage-bar-shell {
    min-width: 0;
    width: 100%;
}

@media (max-width: 760px) {
    .admin-usage-chart-layout {
        grid-template-columns: 1fr;
    }

    .admin-usage-table,
    .admin-usage-bar-table {
        min-width: 38rem;
    }
}

.feedback-page-path-input,
.feedback-title-input {
    max-width: 56rem;
    width: min(100%, 56rem);
}

/** CHANGED v2026-05-18.1144
 *  Additional Usage Stats table containment. Keep report tables compact, allow
 *  labels/headers to wrap inside their own cells, and preserve centered numeric
 *  columns without forcing text into neighbouring cells.
 */
.admin-usage-report > summary {
    overflow-wrap: anywhere;
    white-space: normal;
}

.admin-usage-table th,
.admin-usage-table td,
.admin-usage-bar-table th,
.admin-usage-bar-table td {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.admin-usage-table th.num,
.admin-usage-table td.num,
.admin-usage-bar-table th.num,
.admin-usage-bar-table td.num,
.admin-dashboard-table th.num,
.admin-dashboard-table td.num {
    text-align: center;
    white-space: nowrap;
}

.admin-usage-table td:not(.num),
.admin-usage-bar-table td:not(.num) {
    white-space: normal;
}

.admin-usage-page-table th:first-child,
.admin-usage-page-table td:first-child {
    min-width: 9rem;
}

/* ADDED v2026-05-18.1202: Keep player changelog SweetAlert readable on small screens. */
.changelog-alert-popup {
    max-height: 90vh;
}

.changelog-alert-html {
    text-align: left !important;
}

.changelog-alert-scroll {
    max-height: min(62vh, 520px);
    overflow-y: auto;
    padding-right: 0.35rem;
    text-align: left;
}

.changelog-alert-scroll ul {
    margin-top: 0.35rem;
    padding-left: 1.25rem;
}

.changelog-alert-scroll .single {
    text-align: left;
}

/* ADDED v2026-05-18.1213: Keep changelog Swal controls visually inside the modal. */
.changelog-alert-popup {
    box-sizing: border-box;
    overflow: hidden;
}

.changelog-alert-html {
    box-sizing: border-box;
    width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

.changelog-alert-scroll {
    box-sizing: border-box;
    max-height: min(58vh, 460px);
    margin: 0 auto;
    padding: 0 0.5rem 0 0.25rem;
}

.changelog-alert-actions {
    margin: 0.75rem auto 0 !important;
    padding-bottom: 0.25rem;
}

.changelog-alert-ok {
    margin: 0.25rem auto !important;
}

.changelog-alert-disable {
    display: flex !important;
    align-items: center;
    gap: 0.5rem;
    justify-content: flex-start;
    margin: 0.75rem 0 0 !important;
    text-align: left;
}

.changelog-donate-link {
    display: inline-block;
    font-size: 1.18rem;
    font-weight: 700;
    padding: 0.45rem 0.85rem;
    border-radius: 0.5rem;
}

/* ADDED v2026-05-18.1220: Prevent long admin-managed URLs from spilling outside tables. */
.wrap-anywhere { overflow-wrap: anywhere; word-break: break-word; }

/* STEP129: Admin UI/UX consolidation. Task-based admin nav and calmer dashboard shell. */
.admin-subnav-grouped {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
  gap: 0.75rem;
  margin: 0 0 1rem 0;
  padding: 0;
  overflow: visible;
}

.admin-nav-group {
  border: 1px solid var(--color-table-border);
  border-radius: 0.75rem;
  padding: 0.65rem 0.75rem;
  background: var(--color-background);
  box-shadow: 0 1px 2px var(--color-shadow, var(--css-color-rgba-0-0-0-0-08));
  min-width: 0;
}

.admin-nav-group-heading {
  font-weight: bold;
  font-size: 0.95rem;
  margin-bottom: 0.15rem;
}

.admin-nav-group-intent {
  font-size: 0.78rem;
  line-height: 1.25;
  opacity: 0.78;
  margin-bottom: 0.45rem;
}

.admin-subnav-grouped .admin-subnav-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.65rem;
}

.admin-subnav-grouped .admin-subnav-link {
  padding: 0.2rem 0 0.28rem 0;
  font-size: 0.9rem;
}

.admin-workspace-intro {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
  border: 1px solid var(--color-table-border);
  border-radius: 0.85rem;
  padding: 0.85rem 1rem;
  margin: 0 0 1rem 0;
  background: var(--color-background);
}

.admin-workspace-intro h3 {
  margin-top: 0;
  margin-bottom: 0.25rem;
}

.admin-workspace-intro p {
  margin: 0;
  line-height: 1.35;
}

.admin-workspace-chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.35rem;
  min-width: 12rem;
}

.admin-workspace-chip {
  border: 1px solid var(--color-table-border);
  border-radius: 999px;
  padding: 0.18rem 0.55rem;
  font-size: 0.78rem;
  white-space: nowrap;
  background: var(--color-background);
}

.admin-workspace-chip-warning {
  font-weight: bold;
}

.admin-dashboard-container details.admin-section,
.admin-dashboard-container details.dashboard-exclusive-details {
  border: 1px solid var(--color-table-border);
  border-radius: 0.75rem;
  padding: 0.35rem 0.7rem;
  margin-bottom: 0.75rem;
  background: var(--color-background);
}

.admin-dashboard-container details.admin-section > summary,
.admin-dashboard-container details.dashboard-exclusive-details > summary {
  cursor: pointer;
  font-weight: bold;
  padding: 0.35rem 0;
}

.admin-dashboard-container details.admin-section[open] > summary,
.admin-dashboard-container details.dashboard-exclusive-details[open] > summary {
  border-bottom: 1px solid var(--color-table-border);
  margin-bottom: 0.5rem;
}

.admin-usage-panel .admin-usage-report {
  border: 1px solid var(--color-table-border);
  border-radius: 0.65rem;
  padding: 0.3rem 0.6rem;
  margin: 0.55rem 0;
}

.admin-usage-panel .admin-usage-report > summary {
  font-weight: bold;
  cursor: pointer;
}

@media (max-width: 720px) {
  .admin-workspace-intro {
    flex-direction: column;
  }
  .admin-workspace-chips {
    justify-content: flex-start;
    min-width: 0;
  }
}

/* ADDED v2026-05-19.132: Give Admin -> External Links forms enough room for URLs and descriptions. */
.admin-external-links-container .table-container {
    max-width: 100%;
    overflow-x: auto;
}

.admin-external-links-container .admin-external-link-form-table,
.admin-external-links-container .admin-external-links-list {
    width: 100%;
    table-layout: auto;
}

.admin-external-links-container .admin-external-link-form-table th {
    width: 9rem;
    min-width: 7rem;
    white-space: nowrap;
}

.admin-external-links-container .admin-external-link-form-table td {
    white-space: normal;
}

.admin-external-links-container .admin-external-link-form-table input[type="text"],
.admin-external-links-container .admin-external-link-form-table input[type="url"],
.admin-external-links-container .admin-external-link-form-table input[type="number"],
.admin-external-links-container .admin-external-link-form-table textarea {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}

.admin-external-links-container .admin-external-link-form-table textarea {
    min-width: min(100%, 42rem);
}

.admin-external-links-container .admin-external-links-list th:nth-child(1),
.admin-external-links-container .admin-external-links-list td:nth-child(1) {
    width: 4.5rem;
}

.admin-external-links-container .admin-external-links-list th:nth-child(5),
.admin-external-links-container .admin-external-links-list td:nth-child(5) {
    width: 4.5rem;
}

.admin-external-links-container .admin-external-links-list th:nth-child(6),
.admin-external-links-container .admin-external-links-list td:nth-child(6) {
    width: 8rem;
}

.admin-external-links-container .admin-external-links-list td {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* ADDED v2026-05-19.148: Round automation job-management layout. */
.admin-round-automation .round-automation-form-table {
    width: 100%;
    table-layout: auto;
}

.admin-round-automation .round-automation-form-table th {
    width: 11rem;
    white-space: nowrap;
}

.admin-round-automation .round-automation-form-table select,
.admin-round-automation .round-automation-form-table input[type="text"],
.admin-round-automation .round-automation-form-table input[type="datetime-local"],
.admin-round-automation .round-automation-form-table textarea {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
}

.admin-round-automation .round-automation-jobs-table {
    width: 100%;
    table-layout: auto;
}

.admin-round-automation .round-automation-jobs-table th,
.admin-round-automation .round-automation-jobs-table td {
    vertical-align: top;
    white-space: normal;
}

.admin-round-automation .round-automation-actions {
    min-width: 15rem;
}

.admin-round-automation .inline-form {
    display: inline-block;
    margin: 0 0.25rem 0.25rem 0;
}

.admin-round-automation .inline-details {
    display: block;
    margin-top: 0.25rem;
}

.admin-round-automation .round-automation-reschedule-form {
    display: grid;
    grid-template-columns: minmax(12rem, 1fr);
    gap: 0.25rem;
    margin-top: 0.35rem;
}

.admin-round-automation .nowrap {
    white-space: nowrap;
}


/* ADDED v2026-05-19.1500 STEP150: client onboarding admin workspace */
.admin-client-onboarding-form {
    width: min(1100px, 100%);
    table-layout: fixed;
}
.admin-client-onboarding-form th {
    width: 180px;

    vertical-align: top;
}
.admin-client-onboarding-form input,
.admin-client-onboarding-form select {
    width: min(720px, 100%);
    box-sizing: border-box;
}
.client-onboarding-invite-url {
    width: min(900px, 100%);
    box-sizing: border-box;
    font-family: monospace;
}
.admin-client-onboarding-table {
    width: 100%;
    table-layout: fixed;
}
.admin-client-onboarding-table th,
.admin-client-onboarding-table td {
    overflow-wrap: anywhere;
    word-break: normal;
}


/* Step 152 admin/dashboard stabilization */
.admin-dashboard-container details.admin-section.admin-section-outline-error,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-error {
  border-color: var(--color-message-error);
  box-shadow: 0 0 0 1px var(--color-message-error);
}

.admin-dashboard-container details.admin-section.admin-section-outline-warning,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning {
  border-color: var(--color-message-warning);
  box-shadow: 0 0 0 1px var(--color-message-warning);
}

.admin-dashboard-container details.admin-section.admin-section-outline-ok,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok {
  border-color: var(--color-button-bg);
  box-shadow: 0 0 0 1px var(--color-button-bg);
}

.admin-dashboard-container details.admin-section.admin-section-info-only,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-info-only {
  box-shadow: none;
}

.table-calendar th.calendar-date-header,
.table-calendar th:first-child,
.table-calendar td.datepad {
  min-width: 7.5rem;
  width: 7.5rem;

}

@media (max-width: 700px) {
  .table-calendar th.calendar-date-header,
  .table-calendar th:first-child,
  .table-calendar td.datepad {
    min-width: 6.4rem;
    width: 6.4rem;
  }
}

/* STEP154: Collapsed dashboard section health states use full background fill; open sections retain quieter bordered state. */
.admin-dashboard-container details.admin-section.admin-section-outline-error:not([open]),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-error:not([open]) {
  background: var(--color-message-error);
  border-color: var(--color-message-error);
  box-shadow: none;
}

.admin-dashboard-container details.admin-section.admin-section-outline-warning:not([open]),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning:not([open]) {
  background: var(--color-message-warning);
  border-color: var(--color-message-warning);

}

.admin-dashboard-container details.admin-section.admin-section-outline-ok:not([open]),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok:not([open]) {
  background: var(--color-button-bg);
  border-color: var(--color-button-bg);

}

.admin-dashboard-container details.admin-section.admin-section-outline-error:not([open]) > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-error:not([open]) > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-warning:not([open]) > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning:not([open]) > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-ok:not([open]) > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok:not([open]) > summary {
  color: var(--color-text-on-accent, var(--color-white));
}

.admin-dashboard-container details.admin-section.admin-section-outline-ok:not(.admin-section-outline-error):not(.admin-section-outline-warning),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok:not(.admin-section-outline-error):not(.admin-section-outline-warning) {
  border-color: var(--color-button-bg);
}

.table-calendar th.calendar-date-header,
.table-calendar th:first-child,
.table-calendar td.datepad {
  min-width: 8.75rem;
  width: 8.75rem;
}

/* STEP155: Keep Calendar Date column compact while preventing date spillover. */
.table-calendar th.calendar-date-header,
.table-calendar th:first-child,
.table-calendar td.datepad {
  min-width: 4.75rem;
  width: 4.75rem;
  max-width: 4.75rem;
  white-space: nowrap;
  box-sizing: border-box;
  text-align: center;
}

@media (max-width: 700px) {
  .table-calendar th.calendar-date-header,
  .table-calendar th:first-child,
  .table-calendar td.datepad {
    min-width: 4.35rem;
    width: 4.35rem;
    max-width: 4.35rem;
  }
}

/* STEP156: Align collapsed Admin Dashboard health fills with dashboard-card colours.
   Warning uses the yellow dashboard-card colour; zero-issue OK sections use the green dashboard-card colour, not deployment button colour. */
.admin-dashboard-container details.admin-section.admin-section-outline-warning:not([open]),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning:not([open]) {
  background: var(--color-pastel-yellow);
  border-color: var(--color-pastel-yellow);
  box-shadow: none;
}

.admin-dashboard-container details.admin-section.admin-section-outline-ok:not([open]),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok:not([open]) {
  background: var(--color-pastel-green);
  border-color: var(--color-pastel-green);
  box-shadow: none;
}

.admin-dashboard-container details.admin-section.admin-section-outline-warning,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning {
  border-color: var(--color-pastel-yellow);
  box-shadow: 0 0 0 1px var(--color-pastel-yellow);
}

.admin-dashboard-container details.admin-section.admin-section-outline-ok,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok {
  border-color: var(--color-pastel-green);
  box-shadow: 0 0 0 1px var(--color-pastel-green);
}

.admin-dashboard-container details.admin-section.admin-section-outline-ok:not(.admin-section-outline-error):not(.admin-section-outline-warning),
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok:not(.admin-section-outline-error):not(.admin-section-outline-warning) {
  border-color: var(--color-pastel-green);
}

.admin-dashboard-container details.admin-section.admin-section-outline-warning:not([open]) > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning:not([open]) > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-ok:not([open]) > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok:not([open]) > summary {
  color: var(--color-black);
}

/* STEP178: Data Validation tables use full parent width and reduce unnecessary spill. */
.data-validation-table-container {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.data-validation-table-container .diagnostics-table,
.data-validation-table-container .data-validation-table {
  width: 100%;
  min-width: 100%;
  table-layout: auto;
  box-sizing: border-box;
}

.data-validation-table th,
.data-validation-table td {
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

.data-validation-table .nowrap,
.data-validation-table td.align-right.nowrap {
  white-space: nowrap;
  overflow-wrap: normal;
}

.data-validation-table .sub-dupr-validation-row .sub-dupr-player-cell {
  min-width: 10rem;
  max-width: 16rem;
  line-height: 1.3;
}

.data-validation-table .sub-dupr-validation-row td {
  padding-top: 0.45rem;
  padding-bottom: 0.45rem;
}

.muted-text {
  opacity: 0.78;
  font-size: 0.92em;
}

/* STEP178: Approvals page uses the same quiet card/details vocabulary as Admin Dashboard. */
.approvals-container {
  width: 100%;
  box-sizing: border-box;
}

.approvals-section-group {
  margin: 1rem 0 1.35rem;
  padding: 0.35rem 0.85rem 0.85rem;
  border: 1px solid var(--color-table-border);
  border-radius: 12px;
  background: var(--color-card-bg, var(--color-transparent));
  box-sizing: border-box;
}

/* v8262: Keep Approvals section headings tight to the card border so the
 * first visible line is the section title, not a blank band of container space. */
.approvals-section-group > h3 {
  margin-top: 0;
  margin-bottom: 0.55rem;
  line-height: 1.2;
}

.approvals-container details.approvals-section,
.approvals-container details.admin-section {
  margin: 0.65rem 0;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--color-table-border);
  border-radius: 10px;
  box-sizing: border-box;
}

.approvals-container details.approvals-section > summary,
.approvals-container details.admin-section > summary {
  cursor: pointer;
  font-weight: 600;
}

.approvals-container details.admin-section-outline-error:not([open]) {
  background: var(--color-message-error);
  border-color: var(--color-message-error);
}

.approvals-container details.admin-section-outline-warning:not([open]) {
  background: var(--color-pastel-yellow);
  border-color: var(--color-pastel-yellow);
}

.approvals-container details.admin-section-outline-ok:not([open]) {
  background: var(--color-pastel-green);
  border-color: var(--color-pastel-green);
}

.approvals-container details.admin-section-outline-error:not([open]) > summary {
  color: var(--color-text-on-accent, var(--color-white));
}

.approvals-container details.admin-section-outline-warning:not([open]) > summary,
.approvals-container details.admin-section-outline-ok:not([open]) > summary {
  color: var(--color-black);
}

.approvals-container details.admin-section-outline-error[open] {
  border-color: var(--color-message-error);
  box-shadow: 0 0 0 1px var(--color-message-error);
}

.approvals-container details.admin-section-outline-warning[open] {
  border-color: var(--color-pastel-yellow);
  box-shadow: 0 0 0 1px var(--color-pastel-yellow);
}

.approvals-container details.admin-section-outline-ok[open] {
  border-color: var(--color-pastel-green);
  box-shadow: 0 0 0 1px var(--color-pastel-green);
}

.approvals-container .table-container {
  width: 100%;
  max-width: 100%;
}

.approvals-container table {
  width: 100%;
  table-layout: auto;
}

.approvals-container th,
.approvals-container td {
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* STEP179: Keep bulk workflow destructive controls visually below the review table. */
.workflow-bulk-delete-actions {
  margin: 0.75rem 0 0;
  text-align: right;
}

/* STEP180: Shared health-section vocabulary for Admin Dashboard and Approvals.
   Keeps both screens visually consistent: closed sections show full status fills,
   open sections show quieter outlines, and informational-only sections stay neutral. */
.admin-health-details {
  border-radius: 10px;
  box-sizing: border-box;
}

.admin-dashboard-container details.admin-health-details,
.approvals-container details.admin-health-details {
  transition: background-color 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
}

.admin-dashboard-container details.admin-health-details > summary,
.approvals-container details.admin-health-details > summary {
  cursor: pointer;
  font-weight: 600;
  line-height: 1.35;
}

.admin-dashboard-container details.admin-health-details.admin-section-info-only,
.approvals-container details.admin-health-details.admin-section-info-only {
  background: var(--color-background);
  border-color: var(--color-table-border);
  box-shadow: none;
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-error:not([open]),
.approvals-container details.admin-health-details.admin-section-outline-error:not([open]) {
  background: var(--color-message-error);
  border-color: var(--color-message-error);
  box-shadow: none;
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-warning:not([open]),
.approvals-container details.admin-health-details.admin-section-outline-warning:not([open]) {
  background: var(--color-pastel-yellow);
  border-color: var(--color-pastel-yellow);
  box-shadow: none;
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-ok:not([open]),
.approvals-container details.admin-health-details.admin-section-outline-ok:not([open]) {
  background: var(--color-pastel-green);
  border-color: var(--color-pastel-green);
  box-shadow: none;
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-error:not([open]) > summary,
.approvals-container details.admin-health-details.admin-section-outline-error:not([open]) > summary {
  color: var(--color-text-on-accent, var(--color-white));
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-warning:not([open]) > summary,
.admin-dashboard-container details.admin-health-details.admin-section-outline-ok:not([open]) > summary,
.approvals-container details.admin-health-details.admin-section-outline-warning:not([open]) > summary,
.approvals-container details.admin-health-details.admin-section-outline-ok:not([open]) > summary {
  color: var(--color-black);
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-error[open],
.approvals-container details.admin-health-details.admin-section-outline-error[open] {
  border-color: var(--color-message-error);
  box-shadow: 0 0 0 1px var(--color-message-error);
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-warning[open],
.approvals-container details.admin-health-details.admin-section-outline-warning[open] {
  border-color: var(--color-pastel-yellow);
  box-shadow: 0 0 0 1px var(--color-pastel-yellow);
}

.admin-dashboard-container details.admin-health-details.admin-section-outline-ok[open],
.approvals-container details.admin-health-details.admin-section-outline-ok[open] {
  border-color: var(--color-pastel-green);
  box-shadow: 0 0 0 1px var(--color-pastel-green);
}

.approvals-container .approvals-section-group {
  background: var(--color-background);
}

/* STEP191: Dashboard nested readiness and validation sections use the same compact health-card treatment. */
.admin-dashboard-container details.dashboard-readiness-subsection,
.admin-dashboard-container details.data-validation-check {
  margin: 0.65rem 0;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--color-table-border);
  border-radius: 10px;
  box-sizing: border-box;
}

.admin-dashboard-container details.dashboard-readiness-subsection > summary,
.admin-dashboard-container details.data-validation-check > summary {
  cursor: pointer;
  font-weight: 600;
  line-height: 1.35;
}

.admin-dashboard-container details.dashboard-readiness-subsection[open],
.admin-dashboard-container details.data-validation-check[open] {
  background: var(--color-background);
}

.admin-dashboard-subsection-body,
.data-validation-check-body {
  margin-top: 0.5rem;
}

.admin-dashboard-readiness-table-container,
.admin-dashboard-container .data-validation-table-container {
  width: 100%;
  max-width: 100%;
}

.admin-dashboard-container .data-validation-table .validation-context-cell {
  min-width: 8rem;
  max-width: 16rem;
  line-height: 1.35;
  overflow-wrap: normal;
  word-break: normal;
}

.admin-dashboard-container .data-validation-table .validation-issue-cell {
  min-width: 12rem;
  max-width: 24rem;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.admin-dashboard-container .data-validation-table .terminal-game-change-audit-row td {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

/* STEP198: Admin -> Database Tools health-card/table layout alignment. */
.database-tools-container {
  max-width: 100%;
  box-sizing: border-box;
}

.database-tools-container details.database-tools-section {
  overflow: hidden;
}

.database-tools-container .table-container,
.database-tools-container .database-tools-table-container {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  box-sizing: border-box;
}

.database-tools-container .database-tools-table {
  width: 100%;
  min-width: 42rem;
  table-layout: auto;
}

.database-tools-container .database-tools-table th,
.database-tools-container .database-tools-table td {
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

.database-tools-container .database-tools-table code,
.database-tools-container .database-tools-error-list code {
  white-space: normal;
  overflow-wrap: anywhere;
}

.database-tools-container .database-tools-error-list {
  margin-bottom: 0.8rem;
}

@media (max-width: 720px) {
  .database-tools-container .database-tools-table {
    min-width: 36rem;
  }
}


/* STEP199: Keep Config Bootstrap / SITE_ID Audit headers readable without wrapping. */
.database-tools-container .database-tools-config-audit-table {
  min-width: 48rem;
  table-layout: fixed;
}

.database-tools-container .database-tools-config-audit-table th {
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: keep-all;
}

.database-tools-container .database-tools-config-audit-table th:nth-child(1),
.database-tools-container .database-tools-config-audit-table td:nth-child(1) {
  width: 14rem;
  min-width: 14rem;
}

.database-tools-container .database-tools-config-audit-table th:nth-child(2),
.database-tools-container .database-tools-config-audit-table td:nth-child(2) {
  width: 8rem;
  min-width: 8rem;
}

.database-tools-container .database-tools-config-audit-table th:nth-child(3),
.database-tools-container .database-tools-config-audit-table td:nth-child(3) {
  min-width: 26rem;
}

@media (max-width: 720px) {
  .database-tools-container .database-tools-config-audit-table {
    min-width: 48rem;
  }
}

/* STEP200: Shared Admin table containment.
 * Purpose: keep admin tables inside their parent cards/sections without relying on
 * page-level horizontal overflow. Tables use fixed layout, compact padding, and
 * aggressive wrapping for long labels, URLs, SQL fragments, UUIDs, notes, and
 * diagnostics text.
 */
.admin-page-container,
.approvals-container {
  max-width: 100%;
  overflow-x: hidden;
  box-sizing: border-box;
}

.admin-page-container *,
.approvals-container * {
  box-sizing: border-box;
}

.admin-page-container .divborder,
.admin-page-container .admin-dashboard-section,
.admin-page-container details,
.approvals-container .divborder,
.approvals-container .approvals-section-group,
.approvals-container details {
  max-width: 100%;
  overflow-x: hidden;
}

.admin-page-container .table-container,
.admin-page-container .usage-table-wrap,
.admin-page-container .admin-usage-table-container,
.admin-page-container .database-tools-table-container,
.approvals-container .table-container,
.approvals-container .usage-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

.admin-page-container table,
.approvals-container table {
  width: 100%;
  max-width: 100%;
  min-width: 0 !important;
  table-layout: fixed !important;
}

.admin-page-container th,
.admin-page-container td,
.approvals-container th,
.approvals-container td {
  max-width: 1px;
  min-width: 0 !important;
  padding: 3px 4px;
  white-space: normal !important;
  overflow-wrap: anywhere;
  word-break: normal;
  vertical-align: top;
}

.admin-page-container th,
.approvals-container th {
  line-height: 1.15;
}

.admin-page-container code,
.admin-page-container pre,
.admin-page-container textarea,
.admin-page-container .displaysql,
.admin-page-container .admin-generated-uuid,
.admin-page-container .admin-inline-note,
.admin-page-container .wide-note-input,
.approvals-container code,
.approvals-container pre,
.approvals-container textarea {
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  word-break: normal;
}

.admin-page-container input:not([type="checkbox"]):not([type="radio"]),
.admin-page-container select,
.admin-page-container textarea,
.approvals-container input:not([type="checkbox"]):not([type="radio"]),
.approvals-container select,
.approvals-container textarea {
  max-width: 100%;
}

.admin-page-container button,
.admin-page-container .button-link,
.admin-page-container input[type="submit"],
.approvals-container button,
.approvals-container .button-link,
.approvals-container input[type="submit"] {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* Compact predictable columns that otherwise tend to consume too much width. */
.admin-page-container .admin-dashboard-table th:first-child,
.admin-page-container .admin-dashboard-table td:first-child,
.admin-page-container .database-tools-table th:nth-child(2),
.admin-page-container .database-tools-table td:nth-child(2),
.admin-page-container .database-tools-config-audit-table th:nth-child(2),
.admin-page-container .database-tools-config-audit-table td:nth-child(2),
.admin-page-container .usage-col-num,
.admin-page-container .usage-col-num-wide,
.admin-page-container .usage-col-percent,
.admin-page-container .usage-col-date,
.approvals-container table th:first-child,
.approvals-container table td:first-child {
  width: 1%;
  max-width: 7.5rem;
  overflow-wrap: normal;
}

/* Database Tools previously forced wide tables; Step200 lets them fit the card. */
.admin-page-container .database-tools-table,
.admin-page-container .database-tools-config-audit-table {
  min-width: 0 !important;
  width: 100%;
  table-layout: fixed !important;
}

.admin-page-container .database-tools-config-audit-table th,
.admin-page-container .database-tools-config-audit-table td {
  width: auto !important;
  min-width: 0 !important;
}

.admin-page-container .database-tools-config-audit-table th:nth-child(1),
.admin-page-container .database-tools-config-audit-table td:nth-child(1) {
  width: 22% !important;
}

.admin-page-container .database-tools-config-audit-table th:nth-child(2),
.admin-page-container .database-tools-config-audit-table td:nth-child(2) {
  width: 12% !important;
  white-space: normal !important;
}

.admin-page-container .database-tools-config-audit-table th:nth-child(3),
.admin-page-container .database-tools-config-audit-table td:nth-child(3) {
  width: 66% !important;
}

.admin-page-container .admin-two-column-form th,
.admin-page-container .admin-two-column-form td:first-child {
  width: 32%;
}

@media (max-width: 720px) {
  .admin-page-container th,
  .admin-page-container td,
  .approvals-container th,
  .approvals-container td {
    font-size: 0.9rem;
    padding: 3px;
  }
}

/* STEP201: Approvals table containment and proportional columns.
 * Purpose: keep every Approvals table inside its parent card without horizontal
 * spillover, while preventing status/action/date columns from consuming too
 * much width.
 */
.approvals-container .approvals-table-container {


  overflow-x: hidden;
  box-sizing: border-box;
}

.approvals-container table.approvals-table {
  width: 100%;
  max-width: 100%;
  min-width: 0 !important;
  table-layout: fixed !important;
  border-collapse: collapse;
}

.approvals-container table.approvals-table th,
.approvals-container table.approvals-table td {
  max-width: none;
  min-width: 0 !important;
  padding: 3px 4px;
  white-space: normal !important;
  overflow-wrap: anywhere;
  word-break: normal;

}

.approvals-container table.approvals-table th {
  line-height: 1.12;
}

.approvals-container table.approvals-table code,
.approvals-container table.approvals-table a,
.approvals-container table.approvals-table strong {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

.approvals-container table.approvals-table form,
.approvals-container table.approvals-table .inline-form,
.approvals-container table.approvals-table .workflow-decision-form {
  max-width: 100%;
  white-space: normal;
}

.approvals-container table.approvals-table button,
.approvals-container table.approvals-table input[type="submit"],
.approvals-container table.approvals-table .button-link {
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
  padding-left: 0.35rem;
  padding-right: 0.35rem;
}

.approvals-container table.approvals-table textarea {
  width: 100%;
  max-width: 100%;
}

/* 5-column player/admin pending tables. */
.approvals-container .approvals-pending-table th:nth-child(1),
.approvals-container .approvals-pending-table td:nth-child(1) { width: 14%; }
.approvals-container .approvals-pending-table th:nth-child(2),
.approvals-container .approvals-pending-table td:nth-child(2) { width: 24%; }
.approvals-container .approvals-pending-table th:nth-child(3),
.approvals-container .approvals-pending-table td:nth-child(3) { width: 18%; }
.approvals-container .approvals-pending-table th:nth-child(4),
.approvals-container .approvals-pending-table td:nth-child(4) { width: 17%; }
.approvals-container .approvals-pending-table th:nth-child(5),
.approvals-container .approvals-pending-table td:nth-child(5) { width: 27%; }

/* Standard workflow status tables: Match, Type, Status, Requested By, Requested, Progress, Action. */
.approvals-container .approvals-workflow-status-table th:nth-child(1),
.approvals-container .approvals-workflow-status-table td:nth-child(1) { width: 13%; }
.approvals-container .approvals-workflow-status-table th:nth-child(2),
.approvals-container .approvals-workflow-status-table td:nth-child(2) { width: 24%; }
.approvals-container .approvals-workflow-status-table th:nth-child(3),
.approvals-container .approvals-workflow-status-table td:nth-child(3) { width: 11%; }
.approvals-container .approvals-workflow-status-table th:nth-child(4),
.approvals-container .approvals-workflow-status-table td:nth-child(4) { width: 15%; }
.approvals-container .approvals-workflow-status-table th:nth-child(5),
.approvals-container .approvals-workflow-status-table td:nth-child(5) { width: 14%; }
.approvals-container .approvals-workflow-status-table th:nth-child(6),
.approvals-container .approvals-workflow-status-table td:nth-child(6) { width: 13%; }
.approvals-container .approvals-workflow-status-table th:nth-child(7),
.approvals-container .approvals-workflow-status-table td:nth-child(7) { width: 10%; }


/* ADDED v2026-06-03.7360: Compact admin approval review tables without wrapping action button labels. */
.approvals-container .approvals-workflow-admin-actions-table {
  table-layout: fixed;
}

.approvals-container .approvals-workflow-admin-actions-table th:nth-child(1),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(1) { width: 8%; white-space: nowrap; }
.approvals-container .approvals-workflow-admin-actions-table th:nth-child(2),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(2) { width: 7%; white-space: nowrap; }
.approvals-container .approvals-workflow-admin-actions-table th:nth-child(3),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(3) { width: 35%; }
.approvals-container .approvals-workflow-admin-actions-table th:nth-child(4),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(4) { width: 9%; }
.approvals-container .approvals-workflow-admin-actions-table th:nth-child(5),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(5) { width: 13%; }
.approvals-container .approvals-workflow-admin-actions-table th:nth-child(6),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(6) { width: 14%; }
.approvals-container .approvals-workflow-admin-actions-table th:nth-child(7),
.approvals-container .approvals-workflow-admin-actions-table td:nth-child(7) { width: 14%; }

.approvals-container .approvals-workflow-admin-actions-table .workflow-admin-override-form button {
  white-space: nowrap;
  min-width: 5.6rem;
}

.approvals-container .approvals-workflow-admin-actions-table .workflow-type-primary {
  font-weight: 600;
}

.approvals-container .approvals-workflow-admin-actions-table .workflow-type-detail {
  display: inline-block;
  margin-top: 0.15rem;
}

/* Bulk workflow review table includes a leading Select column and trailing Action column. */
.approvals-container .approvals-workflow-bulk-table th:nth-child(1),
.approvals-container .approvals-workflow-bulk-table td:nth-child(1) { width: 6%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(2),
.approvals-container .approvals-workflow-bulk-table td:nth-child(2) { width: 12%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(3),
.approvals-container .approvals-workflow-bulk-table td:nth-child(3) { width: 21%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(4),
.approvals-container .approvals-workflow-bulk-table td:nth-child(4) { width: 10%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(5),
.approvals-container .approvals-workflow-bulk-table td:nth-child(5) { width: 13%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(6),
.approvals-container .approvals-workflow-bulk-table td:nth-child(6) { width: 13%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(7),
.approvals-container .approvals-workflow-bulk-table td:nth-child(7) { width: 12%; }
.approvals-container .approvals-workflow-bulk-table th:nth-child(8),
.approvals-container .approvals-workflow-bulk-table td:nth-child(8) { width: 13%; }

/* Diagnostics tables favour compact IDs/statuses and leave detail columns flexible. */
.approvals-container .approvals-game-diagnostics-table th:nth-child(1),
.approvals-container .approvals-game-diagnostics-table td:nth-child(1) { width: 10%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(2),
.approvals-container .approvals-game-diagnostics-table td:nth-child(2) { width: 16%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(3),
.approvals-container .approvals-game-diagnostics-table td:nth-child(3) { width: 10%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(4),
.approvals-container .approvals-game-diagnostics-table td:nth-child(4) { width: 16%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(5),
.approvals-container .approvals-game-diagnostics-table td:nth-child(5) { width: 15%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(6),
.approvals-container .approvals-game-diagnostics-table td:nth-child(6) { width: 13%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(7),
.approvals-container .approvals-game-diagnostics-table td:nth-child(7) { width: 10%; }
.approvals-container .approvals-game-diagnostics-table th:nth-child(8),
.approvals-container .approvals-game-diagnostics-table td:nth-child(8) { width: 10%; }

.approvals-container .approvals-dupr-diagnostics-table th:nth-child(1),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(1) { width: 6%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(2),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(2) { width: 10%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(3),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(3) { width: 8%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(4),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(4) { width: 10%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(5),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(5) { width: 18%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(6),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(6) { width: 18%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(7),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(7) { width: 12%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(8),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(8) { width: 8%; }
.approvals-container .approvals-dupr-diagnostics-table th:nth-child(9),
.approvals-container .approvals-dupr-diagnostics-table td:nth-child(9) { width: 10%; }

.approvals-container .approvals-access-table th:nth-child(1),
.approvals-container .approvals-access-table td:nth-child(1) { width: 17%; }
.approvals-container .approvals-access-table th:nth-child(2),
.approvals-container .approvals-access-table td:nth-child(2) { width: 21%; }
.approvals-container .approvals-access-table th:nth-child(3),
.approvals-container .approvals-access-table td:nth-child(3) { width: 17%; }
.approvals-container .approvals-access-table th:nth-child(4),
.approvals-container .approvals-access-table td:nth-child(4) { width: 28%; }
.approvals-container .approvals-access-table th:nth-child(5),
.approvals-container .approvals-access-table td:nth-child(5) { width: 17%; }

.approvals-container .approvals-profile-table th:nth-child(1),
.approvals-container .approvals-profile-table td:nth-child(1) { width: 16%; }
.approvals-container .approvals-profile-table th:nth-child(2),
.approvals-container .approvals-profile-table td:nth-child(2) { width: 18%; }
.approvals-container .approvals-profile-table th:nth-child(3),
.approvals-container .approvals-profile-table td:nth-child(3) { width: 18%; }
.approvals-container .approvals-profile-table th:nth-child(4),
.approvals-container .approvals-profile-table td:nth-child(4) { width: 18%; }
.approvals-container .approvals-profile-table th:nth-child(5),
.approvals-container .approvals-profile-table td:nth-child(5) { width: 30%; }

@media (max-width: 720px) {
  .approvals-container table.approvals-table th,
  .approvals-container table.approvals-table td {
    font-size: 0.86rem;
    padding: 2px 3px;
  }
}

/** ADDED v2026-05-19.2240 Phase 4 Step 224
 *  Admin/player UI/UX surface contract.
 *
 *  Admin pages are expected to be used mostly on desktop and may use wider,
 *  denser layouts. Player-facing pages are expected to be used mostly on mobile
 *  and should keep content compact and concise. Both surfaces intentionally share
 *  the same CSS variables, production colour theme, status colours, buttons,
 *  borders, rounded sections, and table-containment behavior.
 */
:root {
    --ui-page-max-player: 800px;
    --ui-page-max-admin: 1180px;
    --ui-section-radius: 0.75rem;
    --ui-section-padding-player: 0.55rem;
    --ui-section-padding-admin: 0.85rem;
    --ui-density-player-font-size: 0.92rem;
    --ui-density-admin-font-size: 0.95rem;
}

body {

    width: 100%;
}

body *,
body *::before,
body *::after {
    box-sizing: border-box;
}

.mainbody,
header,
footer {
    max-width: var(--ui-page-max-player);
    width: min(100%, var(--ui-page-max-player));
}

@media (min-width: 980px) {
    body:has(.admin-page-container) {
        max-width: none;
    }

    body:has(.admin-page-container) .mainbody,
    body:has(.admin-page-container) header,
    body:has(.admin-page-container) footer {
        max-width: var(--ui-page-max-admin);
        width: min(100%, var(--ui-page-max-admin));
    }
}

.ui-surface-admin,
.ui-surface-player {
    color: inherit;
}

.ui-surface-admin {
    font-size: var(--ui-density-admin-font-size);
}

.ui-surface-player {
    font-size: var(--ui-density-player-font-size);
}

.ui-surface-admin .divborder,
.ui-surface-admin details,
.ui-surface-admin .stats-progress-panel,
.ui-surface-player .divborder,
.ui-surface-player details,
.ui-surface-player .stats-progress-panel {
    border-radius: var(--ui-section-radius);
}

.ui-surface-admin .divborder,
.ui-surface-admin details,
.ui-surface-admin .stats-progress-panel {
    padding: var(--ui-section-padding-admin);
}

.ui-surface-player .divborder,
.ui-surface-player details,
.ui-surface-player .stats-progress-panel {
    padding: var(--ui-section-padding-player);
}

.admin-page-container .table-container,
.player-page-container .table-container {
    max-width: 100%;
}

.admin-page-container table,
.player-page-container table {
    max-width: 100%;
}

.admin-page-container th,
.admin-page-container td {
    white-space: normal;
    overflow-wrap: anywhere;
    vertical-align: top;
}

.player-page-container th,
.player-page-container td {
    overflow-wrap: anywhere;
    vertical-align: middle;
}

@media (max-width: 720px) {
    .player-page-container table td,
    .player-page-container table th {
        padding: 3px;
        font-size: 0.9rem;
    }

    .player-page-container h2 {
        font-size: 1.05rem;
    }

    .player-page-container .nav-link,
    .player-page-container button,
    .player-page-container input,
    .player-page-container select {
        max-width: 100%;
    }
}

@media (min-width: 980px) {
    .admin-page-container .table-container {
        overflow-x: hidden;
    }

    .admin-page-container table {
        table-layout: fixed;
    }

    .admin-page-container th,
    .admin-page-container td {
        padding: 5px 6px;
    }
}


/** ADDED v2026-05-19.2250 Phase 4 Step 225
 *  UI surface audit and low-risk containment cleanup.
 *  Admin pages keep desktop density; player pages keep mobile compactness.
 *  Both surfaces share the same variables and status colour system.
 */
.admin-ui-surface-audit-table th:nth-child(1),
.admin-ui-surface-audit-table td:nth-child(1) { width: 7%; }
.admin-ui-surface-audit-table th:nth-child(2),
.admin-ui-surface-audit-table td:nth-child(2) { width: 14%; }
.admin-ui-surface-audit-table th:nth-child(3),
.admin-ui-surface-audit-table td:nth-child(3) { width: 12%; }
.admin-ui-surface-audit-table th:nth-child(4),
.admin-ui-surface-audit-table td:nth-child(4) { width: 10%; }
.admin-ui-surface-audit-table th:nth-child(5),
.admin-ui-surface-audit-table td:nth-child(5) { width: 20%; }
.admin-ui-surface-audit-table th:nth-child(6),
.admin-ui-surface-audit-table td:nth-child(6) { width: 11%; }
.admin-ui-surface-audit-table th:nth-child(7),
.admin-ui-surface-audit-table td:nth-child(7) { width: 26%; }

.admin-ui-overflow-audit-table th:nth-child(1),
.admin-ui-overflow-audit-table td:nth-child(1) { width: 8%; }
.admin-ui-overflow-audit-table th:nth-child(2),
.admin-ui-overflow-audit-table td:nth-child(2) { width: 20%; }
.admin-ui-overflow-audit-table th:nth-child(3),
.admin-ui-overflow-audit-table td:nth-child(3) { width: 10%; }
.admin-ui-overflow-audit-table th:nth-child(4),
.admin-ui-overflow-audit-table td:nth-child(4) { width: 22%; }
.admin-ui-overflow-audit-table th:nth-child(5),
.admin-ui-overflow-audit-table td:nth-child(5) { width: 40%; }

.ui-surface-admin .table-container,
.ui-surface-player .table-container {
    overflow-x: auto;
    overflow-y: visible;
    max-width: 100%;
}

.ui-surface-admin table,
.ui-surface-player table {
    width: 100%;
    max-width: 100%;
}

.ui-surface-admin summary,
.ui-surface-player summary {
    overflow-wrap: anywhere;
}

@media (min-width: 980px) {
    .ui-surface-admin .admin-dashboard-table,
    .ui-surface-admin .admin-table,
    .ui-surface-admin table {
        table-layout: fixed;
    }
}

@media (max-width: 720px) {
    .ui-surface-player .table-container {
        margin-left: 0;
        margin-right: 0;
    }

    .ui-surface-player table {
        table-layout: auto;
    }
}


/** ADDED v2026-05-19.2290 Phase 4 Step 229
 *  Mobile/player table containment and test-login usability.
 *
 *  Intent:
 *  - Player-facing pages are mobile-first and must keep data inside cells.
 *  - Admin pages may be wider than a phone viewport, so these rules target the
 *    player surface only except for the small admin mobile note at the end.
 *  - Players list abbreviated public names such as "First L." should stay on
 *    one line on mobile; there is enough horizontal space in the first column.
 */
@media (max-width: 720px) {
    .players-container .stats-player-cell,
    .players-container .stats-player-cell a,
    .players-container .stats-player-cell .player-name-lines,
    .players-container .stats-player-cell .player-name-line {

        overflow-wrap: normal;
        word-break: normal;
    }

    .players-container .stats-player-cell .player-name-lines {
        display: inline;
    }

    .players-container .stats-player-cell .player-name-line {
        display: inline;
        max-width: none;
    }

    .players-container .stats-player-cell .player-name-line + .player-name-line::before {
        content: " ";
    }

    .ui-surface-player .table-container,
    .ui-surface-player .stats-table-container,
    .ui-surface-player .data-validation-table-container,
    .ui-surface-player details > div {
        max-width: 100%;
        overflow-x: hidden;
    }



    .ui-surface-player th,
    .ui-surface-player td {
        max-width: 0;
        white-space: normal;

        word-break: break-word;

        line-height: 1.18;
    }

    .ui-surface-player input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
    .ui-surface-player select,
    .ui-surface-player textarea,
    .ui-surface-player button {
        max-width: 100%;
        min-width: 0;
    }

    .test-login-panel {
        display: block;


        margin-top: 0.85rem;
    }

    .test-login-panel form {
        display: grid;
        grid-template-columns: 1fr;
        gap: 0.45rem;
        width: 100%;
        max-width: 100%;
    }

    .test-login-panel select,
    .test-login-panel button {
        width: 100%;
        max-width: 100%;
    }

    .test-login-panel .warning {
        font-size: 0.86rem;
        line-height: 1.25;
    }
}

@media (max-width: 720px) {
    .admin-page-container .table-container,
    .ui-surface-admin .table-container {
        overflow-x: auto;
    }
}

/* ADDED v2026-05-19.2300 Phase 4 Step 230: direct SQL/data-boundary diagnostics table containment. */
.admin-direct-sql-owner-table th,
.admin-direct-sql-owner-table td,
.admin-direct-sql-candidate-table th,
.admin-direct-sql-candidate-table td {
    overflow-wrap: anywhere;
    word-break: normal;
    vertical-align: top;
}
.admin-direct-sql-owner-table th:nth-child(1),
.admin-direct-sql-owner-table td:nth-child(1),
.admin-direct-sql-owner-table th:nth-child(3),
.admin-direct-sql-owner-table td:nth-child(3),
.admin-direct-sql-owner-table th:nth-child(4),
.admin-direct-sql-owner-table td:nth-child(4),
.admin-direct-sql-candidate-table th:nth-child(1),
.admin-direct-sql-candidate-table td:nth-child(1),
.admin-direct-sql-candidate-table th:nth-child(3),
.admin-direct-sql-candidate-table td:nth-child(3) {
    white-space: nowrap;
    width: 1%;
}
.admin-direct-sql-candidate-table code {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: break-word;
}

/** ADDED v2026-05-19.2310 Phase 4 Step 231
 *  Mobile player/table fit and logout/test-login visibility fixes.
 *
 *  Intent:
 *  - Player-facing mobile tables must keep content inside cell borders.
 *  - The Players page abbreviated name column should keep "First L." on one
 *    line without visually bleeding into the next stat column.
 *  - Admin pages remain desktop-oriented and may scroll horizontally on phones.
 */
@media (max-width: 720px) {
    .ui-surface-player table {
        table-layout: fixed;
        width: 100%;
        max-width: 100%;
        border-collapse: collapse;
    }

    .ui-surface-player th,
    .ui-surface-player td {
        box-sizing: border-box;
        min-width: 0;
        max-width: none;
        overflow: hidden;
        overflow-wrap: anywhere;
        word-break: normal;
        hyphens: auto;
        vertical-align: top;
    }

    .players-container .stats-table th,
    .players-container .stats-table td {
        padding-left: 0.22rem;
        padding-right: 0.22rem;
        font-size: 0.82rem;
        line-height: 1.16;
    }

    .players-container .stats-table th:first-child,
    .players-container .stats-table td.stats-player-cell {
        width: 7.2rem;
        min-width: 7.2rem;
        max-width: 7.2rem;
    }

    .players-container .stats-player-cell,
    .players-container .stats-player-cell a,
    .players-container .stats-player-cell .player-name-lines,
    .players-container .stats-player-cell .player-name-line {
        display: inline-block;
        max-width: 100%;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        vertical-align: bottom;
    }

    .players-container .stats-player-cell .player-name-lines {
        display: inline-flex;
        flex-direction: row;
        gap: 0.18rem;
    }

    .players-container .stats-player-cell .player-name-line + .player-name-line::before {
        content: "";
    }

    .players-container .stats-table th:not(:first-child),
    .players-container .stats-table td:not(.stats-player-cell) {
        width: auto;
        text-align: center;
    }

    .test-login-panel {
        display: block !important;
        visibility: visible !important;
        clear: both;
        width: 100%;
        max-width: 100%;
    }

    .test-login-panel select,
    .test-login-panel button {
        min-width: 0;
        white-space: normal;
    }
}

/** ADDED v2026-05-19.232 Phase 4 Step 232
 *  Responsive player/admin table and logout/login follow-up.
 *  - Player-facing Teams/Players can become wider than the phone viewport when
 *    needed; content must remain inside cell borders and not be clipped.
 *  - Admin pages remain desktop-oriented and may horizontally scroll on mobile.
 */

/* Profile: keep the summary table flush with the profile photo. */
.players-container .profile-summary-table {
    border-collapse: collapse;

    width: auto;
}

.players-container .profile-summary-table .profile-photo {
    padding-left: 0;
    padding-right: 0.45rem;
    vertical-align: top;
}

.players-container .profile-summary-table td {
    vertical-align: top;
}

/* Test login should be visible/usable on mobile whenever the test deployment gate allows it. */
.login-container .test-login-panel {
    box-sizing: border-box;
    max-width: 100%;
    width: 100%;
}

.login-container .test-login-panel form {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    align-items: center;
}

.login-container .test-login-panel select {
    flex: 1 1 16rem;
    min-width: min(16rem, 100%);
}

.login-container .test-login-panel button {
    flex: 0 0 auto;
}

/* Shared stats table defaults: numeric/stat cells are compact and bounded. */
.stats-context-teams .stats-table,
.stats-context-players .stats-table {
    border-collapse: collapse;
    table-layout: auto;
    width: max-content;
    min-width: 100%;
}

.stats-context-teams .stats-table th,
.stats-context-teams .stats-table td,
.stats-context-players .stats-table th,
.stats-context-players .stats-table td {
    box-sizing: border-box;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    vertical-align: middle;
    word-break: normal;
}

.stats-context-teams .stats-table th:not(.stats-team-cell),
.stats-context-teams .stats-table td:not(.stats-team-cell),
.stats-context-players .stats-table th:not(.stats-player-cell),
.stats-context-players .stats-table td:not(.stats-player-cell) {
    white-space: nowrap;
    width: 1%;
}

.stats-context-teams .stats-table th,
.stats-context-players .stats-table th {
    white-space: nowrap;
}

.stats-context-teams .stats-team-cell,
.stats-context-players .stats-player-cell {
    min-width: 0;
    overflow-wrap: normal;
    white-space: nowrap;
}

.stats-context-teams .team-profile-name-with-icon,
.stats-context-teams .team-player-list,
.stats-context-teams .team-player-line,
.stats-context-players .player-name-lines-public,
.stats-context-players .player-name-line-public {
    white-space: nowrap;
}

.stats-context-players .player-name-lines-public {
    display: inline-block;
}

/* Desktop: Teams/Players favour readable headers and single-line names; advanced stats may extend past parent divs. */
@media screen and (min-width: 769px) {
    .stats-context-teams,
    .stats-context-players {
        max-width: none;
        overflow-x: visible;
    }

    .stats-context-teams .stats-table,
    .stats-context-players .stats-table {
        width: max-content;
        min-width: 100%;
    }

    .stats-context-teams .stats-team-cell {
        min-width: 18rem;
        white-space: nowrap;
    }

    .stats-context-players .stats-player-cell {
        min-width: 9rem;
        white-space: nowrap;
    }

    .stats-context-teams .stats-table th,
    .stats-context-teams .stats-table td,
    .stats-context-players .stats-table th,
    .stats-context-players .stats-table td {
        padding-left: 0.35rem;
        padding-right: 0.35rem;
    }
}

/* Mobile player-facing Teams: keep names intact, shrink stats, and allow wide tables instead of clipping. */
@media screen and (max-width: 768px) {
    .player-page-container .stats-context-teams {
        max-width: none;
        overflow-x: visible;
    }

    .player-page-container .stats-context-teams .stats-table {
        width: max-content;
        min-width: 100%;
    }

    .player-page-container .stats-context-teams .stats-team-cell {
        min-width: 14rem;
        max-width: none;
        white-space: nowrap;
    }

    .player-page-container .stats-context-teams .stats-table th,
    .player-page-container .stats-context-teams .stats-table td {
        font-size: 0.78rem;
        line-height: 1.1;
        padding-left: 0.16rem;
        padding-right: 0.16rem;
        white-space: nowrap;
    }

    .player-page-container .stats-context-teams .stats-table .stats-team-cell {
        font-size: 0.9rem;
        padding-left: 0.25rem;
        padding-right: 0.35rem;
    }

    .player-page-container .stats-context-players {
        max-width: 100%;
        overflow-x: visible;
    }

    .player-page-container .stats-context-players .stats-table {
        table-layout: fixed;
        width: 100%;
        min-width: 0;
    }

    .player-page-container .stats-context-players .stats-player-cell {
        width: 5.6rem;
        max-width: 5.6rem;
        white-space: nowrap;
    }

    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td {
        font-size: 0.74rem;
        line-height: 1.08;
        padding-left: 0.12rem;
        padding-right: 0.12rem;
        overflow: hidden;
    }

    .player-page-container .stats-context-players .stats-table .stats-player-cell {
        font-size: 0.82rem;
        overflow: visible;
        padding-left: 0.18rem;
        padding-right: 0.18rem;
    }

    .player-page-container .stats-context-players .player-name-lines-public,
    .player-page-container .stats-context-players .player-name-line-public {
        display: inline-block;
        white-space: nowrap;
    }

    .login-container .test-login-panel form,
    .login-container .test-login-panel select,
    .login-container .test-login-panel button {
        width: 100%;
    }
}

/* Very small phones: Teams may be wide; Players stays compact with public First L. labels. */
@media screen and (max-width: 480px) {
    .player-page-container .stats-context-teams .stats-table th,
    .player-page-container .stats-context-teams .stats-table td {
        font-size: 0.72rem;
        padding-left: 0.1rem;
        padding-right: 0.1rem;
    }

    .player-page-container .stats-context-teams .stats-table .stats-team-cell {
        font-size: 0.86rem;
        min-width: 13rem;
    }

    .player-page-container .stats-context-players .stats-player-cell {
        width: 5.4rem;
        max-width: 5.4rem;
    }

    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td {
        font-size: 0.68rem;
        padding-left: 0.08rem;
        padding-right: 0.08rem;
    }

    .player-page-container .stats-context-players .stats-table .stats-player-cell {
        font-size: 0.78rem;
    }
}

/** ADDED v2026-05-19.2330 Phase 4 Step 233
 *  Teams/Players responsive table correction and logout follow-up.
 *  - Player-facing stats tables may be wider than mobile viewport when required.
 *  - Cell content must stay inside borders and must not be clipped.
 *  - Teams use one semantic stacked markup structure: desktop displays
 *    Player 1 / Player 2, mobile displays Player 1 over Player 2.
 */

/* Desktop: allow advanced Teams/Players stats to extend beyond the page card, and keep headers readable. */
@media screen and (min-width: 769px) {
    .player-page-container .stats-table-container.stats-context-teams,
    .player-page-container .stats-table-container.stats-context-players {
        max-width: none !important;
        overflow-x: visible !important;
        overflow-y: visible !important;
    }

    .player-page-container .stats-context-teams .stats-table,
    .player-page-container .stats-context-players .stats-table {
        table-layout: auto !important;
        width: max-content !important;
        min-width: 100% !important;
        max-width: none !important;
    }

    .player-page-container .stats-context-teams .stats-table th,
    .player-page-container .stats-context-players .stats-table th {
        white-space: nowrap !important;
        width: max-content;
    }

    .player-page-container .stats-context-teams .team-player-list {


        align-items: baseline;
        gap: 0;

    }



    .player-page-container .stats-context-teams .team-player-line + .team-player-line::before {
        content: "\00a0/\00a0"; /** CHANGED v2026-05-19.237: keep visible spacing before/after the team-pair slash. */
    }

    .player-page-container .stats-context-players .player-name-lines:not(.player-name-lines-public) {


        gap: 0.22rem;

    }




}

/* Mobile: Teams table can be wider than the viewport; names stay complete and stacked. */
@media screen and (max-width: 768px) {
    .player-page-container .stats-table-container.stats-context-teams,
    .player-page-container .stats-table-container.stats-context-players {
        max-width: none !important;
        overflow-x: visible !important;
        overflow-y: visible !important;
    }

    .player-page-container .stats-context-teams .stats-table,
    .player-page-container .stats-context-players .stats-table {
        table-layout: auto !important;
        width: max-content !important;
        min-width: 100% !important;
        max-width: none !important;
        border-collapse: collapse;
    }

    .player-page-container .stats-context-teams .stats-table th,
    .player-page-container .stats-context-teams .stats-table td,
    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td {
        box-sizing: border-box;
        overflow: visible !important;
        text-overflow: clip !important;
        vertical-align: middle;
    }

    .player-page-container .stats-context-teams .stats-table th:not(.stats-team-cell),
    .player-page-container .stats-context-teams .stats-table td:not(.stats-team-cell),
    .player-page-container .stats-context-players .stats-table th:not(.stats-player-cell),
    .player-page-container .stats-context-players .stats-table td:not(.stats-player-cell) {
        width: 1% !important;
        min-width: max-content;
        white-space: nowrap !important;
        padding-left: 0.14rem !important;
        padding-right: 0.14rem !important;
    }

    .player-page-container .stats-context-teams .stats-team-cell {




        padding-left: 0.22rem !important;
        padding-right: 0.35rem !important;
    }

    .player-page-container .stats-context-teams .team-profile-name-with-icon,
    .player-page-container .stats-context-teams .team-player-list {
        display: inline-flex !important;
        flex-direction: column !important;
        align-items: flex-start;
        max-width: none !important;
        white-space: nowrap !important;
    }





    .player-page-container .stats-context-players .stats-player-cell {
        width: max-content !important;
        min-width: max-content !important;


        padding-left: 0.18rem !important;

    }



    /* Anonymous/public Players: First L. stays on one line and gets a real cell width. */
    .player-page-container .stats-context-players .player-name-lines-public,
    .player-page-container .stats-context-players .player-name-line-public {

        width: max-content !important;
        max-width: none !important;

    }

    /* Logged-in Players: First over Last on mobile, with the table allowed to grow wider. */
    .player-page-container .stats-context-players .player-name-lines:not(.player-name-lines-public) {


        align-items: flex-start;
        gap: 0.02rem;
    }




}

/* Login: test-user selector should use the same content on mobile and desktop when the test gate is enabled. */
.login-container .test-login-panel {
    display: block;
    clear: both;
}

@media screen and (max-width: 768px) {
    .login-container .test-login-panel form {
        display: block !important;
    }

    .login-container .test-login-panel select,
    .login-container .test-login-panel button {
        display: block;
        box-sizing: border-box;
        width: 100% !important;
        max-width: 100%;
        margin-top: 0.35rem;
    }
}


/** ADDED v2026-05-19.2340 Phase 4 Step 234
 *  Targeted mobile Teams/Players spacing polish and login wording update.
 *
 *  Intent:
 *  - Mobile Teams: keep the Team Profile action and first player name on the
 *    same visual line, while preserving Player 1 / Player 2 stacking.
 *  - Mobile Players: keep logged-in names as First over Last, remove excessive
 *    first-column whitespace, and let the table size to its content when needed.
 */
@media (max-width: 720px) {
    .player-page-container .stats-context-teams .stats-team-cell,
    .player-page-container .stats-context-teams .stats-team-cell * {
        white-space: nowrap;
    }

    .player-page-container .stats-context-teams .team-profile-name-with-icon {
        display: inline-flex !important;
        flex-direction: row !important;
        align-items: flex-start !important;
        gap: 0.22rem !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-profile-icon-link {
        flex: 0 0 auto !important;
        margin-top: 0 !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-list {
        display: inline-flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 0 !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-line {
        display: block !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players {
        max-width: none !important;
        overflow-x: visible !important;
    }

    .player-page-container .stats-context-players .stats-table,
    .players-container .stats-table {
        table-layout: auto !important;
        width: max-content !important;
        min-width: 0 !important;
        max-width: none !important;
        border-collapse: collapse;
    }

    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td,
    .players-container .stats-table th,
    .players-container .stats-table td {
        box-sizing: border-box;
        width: 1% !important;
        max-width: none !important;
        overflow: visible !important;
        padding-left: 0.16rem;
        padding-right: 0.16rem;
        white-space: nowrap;
    }

    .player-page-container .stats-context-players .stats-table th:first-child,
    .player-page-container .stats-context-players .stats-table td.stats-player-cell,
    .players-container .stats-table th:first-child,
    .players-container .stats-table td.stats-player-cell {
        width: max-content !important;
        min-width: 4.5rem !important;
        max-width: none !important;
        padding-left: 0.2rem !important;
        padding-right: 0.28rem !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .stats-player-cell,
    .player-page-container .stats-context-players .stats-player-cell a,
    .player-page-container .stats-context-players .stats-player-cell .player-name-lines,
    .players-container .stats-player-cell,
    .players-container .stats-player-cell a,
    .players-container .stats-player-cell .player-name-lines {
        display: inline-flex !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
        word-break: normal !important;
        overflow-wrap: normal !important;
    }

    .player-page-container .stats-context-players .player-name-lines:not(.player-name-lines-public),
    .players-container .stats-player-cell .player-name-lines:not(.player-name-lines-public) {
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 0 !important;
    }

    .player-page-container .stats-context-players .player-name-line:not(.player-name-line-public),
    .players-container .stats-player-cell .player-name-line:not(.player-name-line-public) {
        display: block !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
    }

    .player-page-container .stats-context-players .player-name-line + .player-name-line::before,
    .players-container .stats-player-cell .player-name-line + .player-name-line::before {
        content: "" !important;
    }
}

/** ADDED v2026-05-19.2350 Phase 4 Step 235
 *  Mobile Players table width correction and desktop/mobile logout follow-up.
 *
 *  Intent:
 *  - Mobile Players should fill the visible parent width when the basic table is
 *    narrow, but advanced stats may still extend beyond the parent/page.
 *  - Logged-in mobile names remain First over Last, with a real first-column
 *    width so the name column aligns cleanly with the adjacent stats column.
 *  - Anonymous First L. labels stay on one line and never spill into stat cells.
 */
@media screen and (max-width: 768px) {
    .player-page-container .stats-table-container.stats-context-players,
    .players-container .stats-table-container.stats-context-players {
        box-sizing: border-box !important;
        width: 100% !important;
        max-width: none !important;
        overflow-x: visible !important;
        overflow-y: visible !important;
    }

    .player-page-container .stats-context-players .stats-table,
    .players-container .stats-table {
        table-layout: auto !important;
        width: max-content !important;
        min-width: 100% !important;
        max-width: none !important;
        border-collapse: collapse !important;
    }

    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td,
    .players-container .stats-table th,
    .players-container .stats-table td {
        box-sizing: border-box !important;
        overflow: visible !important;
        text-overflow: clip !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .stats-table th:first-child,
    .player-page-container .stats-context-players .stats-table td.stats-player-cell,
    .players-container .stats-table th:first-child,
    .players-container .stats-table td.stats-player-cell {
        width: 6.75rem !important;
        min-width: 6.75rem !important;
        max-width: none !important;
        padding-left: 0.24rem !important;
        padding-right: 0.34rem !important;
        white-space: nowrap !important;
        overflow: visible !important;
    }

    .player-page-container .stats-context-players .stats-table th:not(:first-child),
    .player-page-container .stats-context-players .stats-table td:not(.stats-player-cell),
    .players-container .stats-table th:not(:first-child),
    .players-container .stats-table td:not(.stats-player-cell) {
        width: 1% !important;
        min-width: max-content !important;
        max-width: none !important;
        padding-left: 0.14rem !important;
        padding-right: 0.14rem !important;
        text-align: center;
    }

    .player-page-container .stats-context-players .stats-player-cell,
    .player-page-container .stats-context-players .stats-player-cell a,
    .players-container .stats-player-cell,
    .players-container .stats-player-cell a {
        display: table-cell !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
        word-break: normal !important;
        overflow-wrap: normal !important;
    }

    .player-page-container .stats-context-players .stats-player-cell a,
    .players-container .stats-player-cell a {
        display: inline-block !important;
        max-width: none !important;
    }

    .player-page-container .stats-context-players .player-name-lines-public,
    .player-page-container .stats-context-players .player-name-line-public,
    .players-container .stats-player-cell .player-name-lines-public,
    .players-container .stats-player-cell .player-name-line-public {
        display: inline-block !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
    }

    .player-page-container .stats-context-players .player-name-lines:not(.player-name-lines-public),
    .players-container .stats-player-cell .player-name-lines:not(.player-name-lines-public) {
        display: inline-flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 0 !important;
        white-space: nowrap !important;
        overflow: visible !important;
    }

    .player-page-container .stats-context-players .player-name-line:not(.player-name-line-public),
    .players-container .stats-player-cell .player-name-line:not(.player-name-line-public) {
        display: block !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
    }

    .player-page-container .stats-context-players .player-name-line + .player-name-line::before,
    .players-container .stats-player-cell .player-name-line + .player-name-line::before {
        content: "" !important;
    }
}

/* ADDED v2026-05-19.237: sitewide team-pair separator spacing.
   Use a non-collapsing leading space so inline team names render as
   "Player 1 / Player 2" instead of visually tightening to "Player 1/ Player 2". */
.team-pair-separator {
    white-space: nowrap;
}

/** ADDED v2026-05-19.238 Phase 4 Step 238
 * Matches / Players / Teams responsive display contract.
 *
 * Purpose:
 * - Make logged-in and logged-out name rules explicit and consistent.
 * - Keep player-facing mobile views compact without clipping names.
 * - Allow advanced stats to extend wider than the parent when necessary.
 * - Keep desktop player-facing stats readable with non-wrapping headers.
 *
 * Name rules:
 * - Teams desktop: Player 1 / Player 2.
 * - Teams mobile: Team Profile icon + Player 1 on the first line, Player 2 below.
 * - Players desktop logged in: First Last.
 * - Players mobile logged in: First over Last.
 * - Players logged out/public: First L. on one line on desktop and mobile.
 * - Matches: each match shows Team 1 and Team 2 on separate match rows/lines;
 *   team-member formatting follows the shared team-link helper.
 */

/* Shared stats tables: stat columns are content-sized; name columns own their content. */
.player-page-container .stats-table-container.stats-context-teams,
.player-page-container .stats-table-container.stats-context-players {
    box-sizing: border-box;
    max-width: none !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
}

.player-page-container .stats-context-teams .stats-table,
.player-page-container .stats-context-players .stats-table {
    border-collapse: collapse !important;
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
}

.player-page-container .stats-context-teams .stats-table th,
.player-page-container .stats-context-teams .stats-table td,
.player-page-container .stats-context-players .stats-table th,
.player-page-container .stats-context-players .stats-table td {
    box-sizing: border-box !important;
    overflow: visible !important;
    text-overflow: clip !important;
    vertical-align: middle !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
}

.player-page-container .stats-context-teams .stats-table th:not(.stats-team-cell),
.player-page-container .stats-context-teams .stats-table td:not(.stats-team-cell),
.player-page-container .stats-context-players .stats-table th:not(.stats-player-cell),
.player-page-container .stats-context-players .stats-table td:not(.stats-player-cell) {
    width: 1% !important;
    min-width: max-content !important;
    max-width: none !important;
    white-space: nowrap !important;
    text-align: center;
}

.player-page-container .stats-context-teams .stats-table th,
.player-page-container .stats-context-players .stats-table th {
    white-space: nowrap !important;
}

/* Desktop player-facing Teams/Players: readability first; advanced stats may extend past the parent div. */
@media screen and (min-width: 769px) {
    .player-page-container .stats-context-teams .stats-table th,
    .player-page-container .stats-context-teams .stats-table td,
    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td {
        font-size: 0.94rem !important;
        line-height: 1.16 !important;
        padding-left: 0.34rem !important;
        padding-right: 0.34rem !important;
    }

    .player-page-container .stats-context-teams .stats-team-cell {
        min-width: 18rem !important;
        width: max-content !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .stats-player-cell {
        min-width: 9rem !important;
        width: max-content !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-profile-name-with-icon {
        display: inline-flex !important;
        flex-direction: row !important;
        align-items: baseline !important;
        gap: 0.22rem !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-list {
        display: inline-flex !important;
        flex-direction: row !important;
        align-items: baseline !important;
        gap: 0 !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-line {
        display: inline !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-line + .team-player-line::before {
        content: "\00a0/\00a0" !important;
    }

    .player-page-container .stats-context-players .player-name-lines:not(.player-name-lines-public) {
        display: inline-flex !important;
        flex-direction: row !important;
        align-items: baseline !important;
        gap: 0.22rem !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .player-name-line {
        display: inline !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .player-name-line + .player-name-line::before {
        content: "" !important;
    }
}

/* Mobile player-facing Teams/Players: compact columns, complete names, no clipping. */
@media screen and (max-width: 768px) {
    .player-page-container .stats-context-teams .stats-table th,
    .player-page-container .stats-context-teams .stats-table td,
    .player-page-container .stats-context-players .stats-table th,
    .player-page-container .stats-context-players .stats-table td {
        font-size: 0.76rem !important;
        line-height: 1.08 !important;
        padding-left: 0.12rem !important;
        padding-right: 0.12rem !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .stats-team-cell {
        min-width: max-content !important;
        width: max-content !important;
        max-width: none !important;
        padding-left: 0.18rem !important;
        padding-right: 0.32rem !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-profile-name-with-icon {
        display: inline-flex !important;
        flex-direction: row !important;
        align-items: flex-start !important;
        gap: 0.22rem !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-profile-icon-link {
        flex: 0 0 auto !important;
        margin-top: 0 !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-list {
        display: inline-flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 0 !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-line {
        display: block !important;
        width: max-content !important;
        max-width: none !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-teams .team-player-line + .team-player-line::before {
        content: "" !important;
    }

    .player-page-container .stats-context-players .stats-player-cell {
        min-width: 6.75rem !important;
        width: 6.75rem !important;
        max-width: none !important;
        padding-left: 0.2rem !important;
        padding-right: 0.35rem !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .stats-player-cell,
    .player-page-container .stats-context-players .stats-player-cell a,
    .player-page-container .stats-context-players .player-name-lines,
    .player-page-container .stats-context-players .player-name-line {
        overflow: visible !important;
        text-overflow: clip !important;
        white-space: nowrap !important;
        word-break: normal !important;
        overflow-wrap: normal !important;
    }

    .player-page-container .stats-context-players .player-name-lines-public,
    .player-page-container .stats-context-players .player-name-line-public {
        display: inline-block !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .player-name-lines:not(.player-name-lines-public) {
        display: inline-flex !important;
        flex-direction: column !important;
        align-items: flex-start !important;
        gap: 0 !important;
        white-space: nowrap !important;
    }

    .player-page-container .stats-context-players .player-name-line:not(.player-name-line-public) {
        display: block !important;
    }

    .player-page-container .stats-context-players .player-name-line + .player-name-line::before {
        content: "" !important;
    }
}

/* Matches layout: score/game columns are compact; team names are readable on both auth states. */
.matches-table.match-layout-table,
.matches-table {
    border-collapse: collapse;
    table-layout: auto;
    min-width: 100%;
    max-width: none;
}

.matches-table .matches-table-game,
.matches-table td.align-middle:not(.matches-table-team-cell) {
    width: 1%;
    white-space: nowrap;
    text-align: center;
}

.matches-table .matches-table-team,
.matches-table .matches-table-team-cell {
    width: auto;
    min-width: 12rem;
    white-space: normal;
}

.matches-table .matches-team-profile-line,
.matches-table .matches-team-display,
.matches-table .team-profile-name-with-icon {
    max-width: none;
    overflow: visible;
}

.matches-table .input-score {
    box-sizing: border-box;
    max-width: 100%;
}

@media screen and (max-width: 768px) {
    .matches-table.match-layout-table,
    .matches-table {
        width: max-content;
        min-width: 100%;
    }

    .matches-table th,
    .matches-table td {
        font-size: 0.82rem;
        line-height: 1.12;
        padding-left: 0.14rem;
        padding-right: 0.14rem;
    }

    .matches-table .matches-table-team,
    .matches-table .matches-table-team-cell {
        min-width: 11rem;
        white-space: normal;
    }
}

/* ADDED v2026-05-19.2390 Phase 4 Step 239: Matches/Players/Teams diagnostics table containment. */
.admin-mpt-layout-rules-table th,
.admin-mpt-overflow-table th {
  white-space: nowrap;
}
.admin-mpt-layout-rules-table td,
.admin-mpt-overflow-table td {
  vertical-align: top;
}
.admin-mpt-layout-rules-table code {
  white-space: normal;
  overflow-wrap: anywhere;
}


/** ADDED Phase 4 Step 240: targeted dashboard/admin table containment and feedback/client-onboarding layout fixes. */
.stats-details:not([open]) {
    margin-bottom: 0.6rem;
}

.admin-dashboard-container {
    scroll-padding-top: 12rem;
}

.admin-dashboard-container details.dashboard-exclusive-details,
.admin-dashboard-container details.dashboard-readiness-subsection,
.admin-dashboard-container details.data-validation-check {
    scroll-margin-top: 12rem;
}

.ui-surface-admin .admin-dashboard-table,
.ui-surface-admin .admin-table,
.ui-surface-admin .admin-feedback-table,
.ui-surface-admin .admin-client-onboarding-form,
.ui-surface-admin .admin-client-onboarding-table {
    table-layout: fixed;
    width: 100%;
    max-width: 100%;
}

.ui-surface-admin .admin-dashboard-table th,
.ui-surface-admin .admin-table th,
.ui-surface-admin .admin-feedback-table th,
.ui-surface-admin .admin-client-onboarding-form th,
.ui-surface-admin .admin-client-onboarding-table th {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: normal;
    vertical-align: top;
}

.ui-surface-admin .admin-dashboard-table td,
.ui-surface-admin .admin-table td,
.ui-surface-admin .admin-feedback-table td,
.ui-surface-admin .admin-client-onboarding-form td,
.ui-surface-admin .admin-client-onboarding-table td {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    vertical-align: top;
}

.ui-surface-admin .admin-dashboard-table td *,
.ui-surface-admin .admin-table td *,
.ui-surface-admin .admin-feedback-table td * {
    max-width: 100%;
}

.admin-client-onboarding-form th {
    width: 12rem;
    text-align: left;
}

.admin-client-onboarding-form td {
    width: auto;
}

.admin-client-onboarding-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.admin-client-onboarding-form select,
.admin-client-onboarding-form textarea,
.admin-feedback-table textarea,
.admin-feedback-table button {
    max-width: 100%;
    box-sizing: border-box;
}

.admin-feedback-table th:nth-child(1),
.admin-feedback-table td:nth-child(1) { width: 3.5rem; }
.admin-feedback-table th:nth-child(2),
.admin-feedback-table td:nth-child(2) { width: 9.5rem; }
.admin-feedback-table th:nth-child(3),
.admin-feedback-table td:nth-child(3) { width: 8rem; }
.admin-feedback-table th:nth-child(4),
.admin-feedback-table td:nth-child(4) { width: 7rem; }
.admin-feedback-table th:nth-child(5),
.admin-feedback-table td:nth-child(5) { width: 4.5rem; }
.admin-feedback-table th:nth-child(6),
.admin-feedback-table td:nth-child(6) { width: 8rem; }
.admin-feedback-table th:nth-child(7),
.admin-feedback-table td:nth-child(7) { width: auto; }
.admin-feedback-table th:nth-child(8),
.admin-feedback-table td:nth-child(8) { width: 6.5rem; }
.admin-feedback-table th:nth-child(9),
.admin-feedback-table td:nth-child(9) { width: 10rem; }

.admin-feedback-completed-details {
    margin-top: 0.85rem;
}

@media (max-width: 980px) {
    .ui-surface-admin .admin-dashboard-table,
    .ui-surface-admin .admin-table,
    .ui-surface-admin .admin-feedback-table,
    .ui-surface-admin .admin-client-onboarding-form,
    .ui-surface-admin .admin-client-onboarding-table {
        min-width: 760px;
    }

    .ui-surface-admin .table-container,
    .admin-feedback-table-container {
        overflow-x: auto;
    }
}


/** ADDED v2026-05-19.2410 Phase 4 Step 241: sitewide table formatting contract.
 * Goals:
 * - Table contents must not visually spill into adjacent cells.
 * - Header text may wrap only at word boundaries; no letter-by-letter header wrapping.
 * - Tables should fill their parent when narrow, but may be wider than the parent when required.
 * - Cell sizing should prefer content-based auto layout so columns shrink/grow from their real contents.
 * - Admin tables may scroll horizontally on narrow screens; player-facing stat tables may extend when needed.
 */
.table-container,
.admin-table-container,
.stats-table-container,
.admin-feedback-table-container {
    max-width: 100%;
    box-sizing: border-box;
}

/* Default surface: content-based sizing, at least parent width, wider only when required. */
.ui-surface-admin table,
.ui-surface-player table,
.matches-table,
.stats-table,
.admin-dashboard-table,
.admin-table,
.admin-feedback-table,
.admin-client-onboarding-form,
.admin-client-onboarding-table {
    border-collapse: collapse;
    box-sizing: border-box;
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
}

/* Headers can wrap at spaces, but never by individual letters. */
.ui-surface-admin table th,
.ui-surface-player table th,
.matches-table th,
.stats-table th,
.admin-dashboard-table th,
.admin-table th,
.admin-feedback-table th,
.admin-client-onboarding-form th,
.admin-client-onboarding-table th {
    box-sizing: border-box;
    white-space: normal !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    hyphens: none !important;
    text-overflow: clip !important;
    vertical-align: top;
}

/* Data cells must contain their own content. Normal text wraps at words; long tokens may break only as a fallback. */
.ui-surface-admin table td,
.ui-surface-player table td,
.matches-table td,
.stats-table td,
.admin-dashboard-table td,
.admin-table td,
.admin-feedback-table td,
.admin-client-onboarding-form td,
.admin-client-onboarding-table td {
    box-sizing: border-box;
    white-space: normal;
    word-break: normal;
    overflow-wrap: break-word;
    text-overflow: clip;
    vertical-align: top;
}

/* Unbroken technical values must still remain inside their cell instead of overlaying neighbours. */
.ui-surface-admin table td code,
.ui-surface-admin table td pre,
.ui-surface-admin table td a,
.ui-surface-player table td code,
.ui-surface-player table td pre,
.ui-surface-player table td a,
.admin-dashboard-table td code,
.admin-dashboard-table td pre,
.admin-dashboard-table td a,
.admin-table td code,
.admin-table td pre,
.admin-table td a,
.admin-feedback-table td code,
.admin-feedback-table td pre,
.admin-feedback-table td a {
    max-width: 100%;
    white-space: normal;
    word-break: normal;
    overflow-wrap: anywhere;
}

/* Forms and action controls should not force cells wider than needed. */
.ui-surface-admin table input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ui-surface-admin table select,
.ui-surface-admin table textarea,
.ui-surface-admin table button,
.ui-surface-player table input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ui-surface-player table select,
.ui-surface-player table textarea,
.ui-surface-player table button {
    box-sizing: border-box;
    max-width: 100%;
}

/* Admin surfaces are desktop-first: keep all data accessible and scroll horizontally on narrow screens. */
.ui-surface-admin .table-container,
.ui-surface-admin .admin-table-container,
.ui-surface-admin .admin-feedback-table-container {
    overflow-x: auto;
    overflow-y: visible;
}

/* Player stat surfaces keep compact stat columns while names/teams remain readable. */
.player-page-container .stats-table-container {
    overflow-x: visible;
    overflow-y: visible;
}
.player-page-container .stats-context-teams .stats-table th:not(.stats-team-cell),
.player-page-container .stats-context-teams .stats-table td:not(.stats-team-cell),
.player-page-container .stats-context-players .stats-table th:not(.stats-player-cell),
.player-page-container .stats-context-players .stats-table td:not(.stats-player-cell),
.matches-table .matches-table-game,
.matches-table td.align-middle:not(.matches-table-team-cell) {
    width: 1% !important;
    min-width: max-content;
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
}

/* Name/team identity cells are allowed to be wider, but not to overlap neighbours. */
.player-page-container .stats-team-cell,
.player-page-container .stats-player-cell,
.matches-table .matches-table-team,
.matches-table .matches-table-team-cell {
    width: auto !important;
    min-width: max-content;
    max-width: none !important;
    overflow: visible;
    text-overflow: clip;
}

/* Preserve explicit name/team display contracts while inheriting table containment. */
.player-page-container .stats-context-players .player-name-lines-public,
.player-page-container .stats-context-players .player-name-line-public,
.player-page-container .stats-context-teams .team-player-line,
.player-page-container .stats-context-teams .team-player-list,
.player-page-container .team-pair-separator {
    word-break: normal !important;
    overflow-wrap: normal !important;
}

@media screen and (max-width: 768px) {
    .ui-surface-admin .table-container,
    .ui-surface-admin .admin-table-container,
    .ui-surface-admin .admin-feedback-table-container {
        overflow-x: auto;
    }

    .ui-surface-player .table-container,
    .ui-surface-player .stats-table-container {
        overflow-x: visible;
        max-width: 100%;
    }
}

/* STEP259: Admin multilevel navigation replaces grouped card-style admin nav. */
.admin-subnav-multilevel {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin: 0 0 1rem 0;
  padding: 0;
  overflow: visible;
}

.admin-subnav-top-row,
.admin-subnav-child-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.65rem;
  align-items: center;
}

.admin-subnav-top-row {
  padding: 0.35rem 0.45rem;
  border: 1px solid var(--color-table-border);
  border-radius: 0.75rem;
  background: var(--color-background);
}

.admin-subnav-child-row {
  padding: 0.35rem 0.45rem 0.45rem;
  border: 1px solid var(--color-table-border);
  border-radius: 0.75rem;
  background: var(--color-background-alt, var(--color-background));
}

.admin-subnav-top-link,
.admin-subnav-multilevel .admin-subnav-link {
  position: relative;
  display: inline-block;
  padding: 0.3rem 0.35rem 0.42rem;
  color: var(--color-primary);
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
}

.admin-subnav-top-link::after,
.admin-subnav-multilevel .admin-subnav-link::after {
  position: absolute;
  left: 0.35rem;
  right: 0.35rem;
  bottom: 0.14rem;
  height: 3px;
  background: var(--color-transparent);
  content: '';
}

.admin-subnav-top-link:hover::after,
.admin-subnav-top-link-active::after,
.admin-subnav-multilevel .admin-subnav-link:hover::after,
.admin-subnav-multilevel .admin-subnav-link-active::after {
  background: var(--color-accent);
}

.admin-subnav-top-link-active,
.admin-subnav-multilevel .admin-subnav-link-active {
  color: var(--color-primary);
}


/* STEP260: Final admin navigation, diagnostics, and table consistency contract. */
.admin-subnav-multilevel {
  margin-bottom: 1rem;
}

.admin-subnav-top-row {
  gap: 0.5rem;
}

.admin-subnav-top-link,
.admin-subnav-multilevel .admin-subnav-link {
  border-radius: 0.55rem;
  line-height: 1.2;
}

.admin-subnav-top-link-active,
.admin-subnav-multilevel .admin-subnav-link-active {
  background: color-mix(in srgb, var(--color-accent) 12%, var(--color-transparent));
}

.admin-diagnostics-container .admin-diagnostics-group {
  margin: 1rem 0;
  padding: 0.85rem;
  border: 1px solid var(--color-table-border);
  border-radius: 0.9rem;
  background: var(--color-card-bg, var(--color-background));
}

.admin-diagnostics-container .admin-diagnostics-group > h3 {
  margin-top: 0;
}

.admin-dashboard-diagnostics-pointer {
  margin-top: 1rem;
  padding: 0.85rem;
  border-radius: 0.9rem;
}

/* Admin tables: desktop-first, content-safe, consistent status colouring. */
.admin-page-container table,
.ui-surface-admin table,
.admin-dashboard-container table,
.admin-diagnostics-container table,
.admin-table-container table,
.admin-dashboard-table,
.admin-diagnostic-table,
.readiness-check-table {
  width: max-content;
  min-width: 100%;
  max-width: none;
  table-layout: auto;
  border-collapse: collapse;
}

.admin-page-container .table-container,
.ui-surface-admin .table-container,
.admin-dashboard-container .table-container,
.admin-diagnostics-container .table-container,
.admin-table-container {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

.admin-page-container th,
.ui-surface-admin th,
.admin-dashboard-container th,
.admin-diagnostics-container th,
.admin-dashboard-table th,
.admin-diagnostic-table th,
.readiness-check-table th {
  white-space: nowrap;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
  vertical-align: top;
}

.admin-page-container td,
.ui-surface-admin td,
.admin-dashboard-container td,
.admin-diagnostics-container td,
.admin-dashboard-table td,
.admin-diagnostic-table td,
.readiness-check-table td {
  max-width: 34rem;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
  vertical-align: top;
}

.admin-page-container td.center,
.ui-surface-admin td.center,
.admin-dashboard-container td.center,
.admin-diagnostics-container td.center,
.admin-dashboard-table td.center,
.admin-diagnostic-table td.center,
.readiness-check-table td.center,
.admin-page-container td.num,
.ui-surface-admin td.num {
  text-align: center;
  white-space: nowrap;
  overflow-wrap: normal;
  hyphens: none;
}

.admin-page-container td code,
.ui-surface-admin td code,
.admin-dashboard-container td code,
.admin-diagnostics-container td code {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.dashboard-status-blocked,
.dashboard-status-error,
.admin-table-row-error,
.admin-table-row-blocked {
  background: var(--color-status-error-bg, var(--css-color-fdecea));
  border-left: 4px solid var(--color-status-error, var(--css-color-b42318));
}

.dashboard-status-warning,
.admin-table-row-warning {
  background: var(--color-status-warning-bg, var(--css-color-fff8db));
  border-left: 4px solid var(--color-status-warning, var(--css-color-b7791f));
}



.dashboard-status-blocked td:first-child,
.dashboard-status-error td:first-child,
.dashboard-status-warning td:first-child,
.dashboard-status-ok td:first-child,
.dashboard-status-info td:first-child,
.dashboard-status-disabled td:first-child {
  font-weight: 700;
}

.admin-status-badge,
.status-pill {
  white-space: nowrap;
}

/* Admin is available on mobile for emergencies, but the UX is intentionally desktop-first. */
@media (max-width: 760px) {
  .ui-surface-admin::before,
  .admin-page-container::before,
  .admin-dashboard-container::before,
  .admin-diagnostics-container::before {
    display: block;
    margin: 0 0 0.75rem 0;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--color-table-border);
    border-radius: 0.7rem;
    background: var(--color-status-info-bg, var(--css-color-eef7ff));
    color: var(--color-text, var(--css-color-222));
    font-size: 0.9rem;
    content: 'Admin tools are optimized for desktop screens. Mobile access is available for quick checks, but wide tables may scroll horizontally.';
  }
}


/* Phase 4 Step 4142: Sitewide SweetAlert body/html text sizing.
   Sets default SweetAlert message text to 1.1rem without changing titles, buttons,
   changelog-specific layout rules, or alert width/overflow hardening. */
.swal2-popup .swal2-html-container,
.swal2-popup .swal2-content {
    font-size: 1.1rem !important;
}

/* STEP261: Database refresh error display and SweetAlert width hardening. */
.swal2-popup.app-swal-wide {
    max-width: calc(100vw - 2rem) !important;
}
.swal2-popup.app-swal-wide .swal2-html-container,
.swal2-popup.app-swal-wide .swal2-content,
.swal2-popup.app-swal-wide .swal2-title {
    overflow-wrap: anywhere;
    word-break: normal;
}
.database-tools-table-container code,
.database-tools-error-list,
.database-tools-error-list li {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    max-width: 100%;
}


/* ADDED v2026-05-19 Phase 4 Step 266: restore current/modern login presentation after refresh recovery work. */
.login-modern-shell {
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    margin: 0.85rem auto;
    max-width: min(100%, 680px);
    width: 100%;
}

.login-modern-card {
    background: var(--color-section-bg, var(--color-white));
    border: 1px solid var(--color-border, var(--css-color-d8d8d8));
    border-radius: var(--radius-section, 12px);
    box-shadow: 0 2px 10px var(--css-color-rgba-0-0-0-0-06);
    box-sizing: border-box;
    padding: clamp(0.95rem, 2vw, 1.35rem);
    width: 100%;
}

.login-modern-title {
    margin: 0 0 0.3rem 0;
    text-align: center;
}

.login-modern-subtitle {
    color: var(--color-muted-text, var(--css-color-555));
    font-size: 0.95rem;
    line-height: 1.35;
    margin: 0 0 1rem 0;
    text-align: center;
}

.login-modern-card .login-field,
.login-modern-card .login-largetext,
.login-modern-card select,
.login-modern-card button {
    max-width: 100%;
}

.login-modern-card .login-actions button,
.login-modern-card .external-auth-buttons button,
.login-modern-card .login-biometric-button {
    white-space: normal;
}

.login-test-shell {
    margin-top: 0;
}

.login-test-card {
    border-left: 5px solid var(--color-warning, var(--css-color-d99a00));
}

.login-test-card form {
    align-items: stretch;
    display: grid;
    gap: 0.55rem;
    grid-template-columns: minmax(0, 1fr) auto;
}

.login-test-card select {
    min-width: 0;
    width: 100%;
}

@media (max-width: 768px), (hover: none) and (pointer: coarse) {
    .login-modern-shell {
        max-width: 100%;
    }

    .login-modern-card {
        border-radius: 10px;
        padding: 0.9rem;
    }

    .login-modern-card .login-actions {
        align-items: stretch;
        display: grid;
        grid-template-columns: 1fr;
    }

    .login-modern-card .login-actions button,
    .login-modern-card .login-biometric-button,
    .login-modern-card .external-auth-buttons button {
        margin-left: 0;
        width: 100%;
    }

    .login-test-card form {
        grid-template-columns: 1fr;
    }
}


/* ADDED v2026-05-19 Phase 4 Step 268: force current login presentation across every login branch. */
.login-modern-page-v268 {
    box-sizing: border-box;
    margin: 0 auto;
    max-width: 760px;
    width: 100%;
}
.login-modern-page-v268 .login-modern-shell {
    box-sizing: border-box;
    display: flex;
    justify-content: center;
    margin: 0.85rem auto;
    max-width: 100%;
    width: 100%;
}
.login-modern-page-v268 .login-modern-card,
.login-modern-page-v268 .divborder {
    background: var(--color-section-bg, var(--color-white));
    border: 1px solid var(--color-border, var(--css-color-d8d8d8));
    border-radius: 14px;
    box-shadow: 0 2px 12px var(--css-color-rgba-0-0-0-0-07);
    box-sizing: border-box;
    margin: 0.85rem auto;
    max-width: 680px;
    padding: clamp(1rem, 2vw, 1.4rem);
    width: 100%;
}
.login-modern-page-v268 .login-modern-title,
.login-modern-page-v268 h3 {
    margin-top: 0;
    text-align: center;
}
.login-modern-page-v268 .login-modern-subtitle {
    color: var(--color-muted-text, var(--css-color-555));
    line-height: 1.35;
    text-align: center;
}
.login-modern-page-v268 .login-actions {
    align-items: stretch;
    display: grid;
    gap: 0.55rem;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.login-modern-page-v268 .login-actions button,
.login-modern-page-v268 .external-auth-buttons button,
.login-modern-page-v268 .login-biometric-button {
    white-space: normal;
    width: 100%;
}
.login-modern-page-v268 input,
.login-modern-page-v268 select,
.login-modern-page-v268 textarea,
.login-modern-page-v268 button {
    box-sizing: border-box;
    max-width: 100%;
}
.login-modern-page-v268 table {
    width: 100%;
}
.login-modern-page-v268 table th {
    white-space: nowrap;
    width: 1%;
}
.login-modern-page-v268 .login-test-card {
    border-left: 5px solid var(--color-warning, var(--css-color-d99a00));
}
@media (max-width: 768px), (hover: none) and (pointer: coarse) {
    .login-modern-page-v268 {
        max-width: 100%;
    }
    .login-modern-page-v268 .login-modern-card,
    .login-modern-page-v268 .divborder {
        max-width: 100%;
    }
    .login-modern-page-v268 .login-actions {
        grid-template-columns: 1fr;
    }
}

/* ADDED v2026-05-19.2710: Database refresh scope selection. */
.database-refresh-scope-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 0.65rem;
  margin: 0.75rem 0 1rem 0;
}
.database-refresh-scope-option {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.55rem;
  align-items: start;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--border-color, var(--css-color-d7d7d7));
  border-radius: 0.75rem;
  background: var(--panel-bg, var(--color-white));
}
.database-refresh-scope-option input[type="radio"] {
  margin-top: 0.15rem;
}
.database-refresh-scope-copy {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* ADDED v2026-05-19.2730 Phase 4 Step 273: authoritative admin table layout contract.
 * Admin tables are desktop-first and must remain readable across all admin pages:
 * - headers may wrap at word breaks but never letter-by-letter;
 * - body text stays inside its cell and may wrap long values;
 * - tables fill the parent container when possible;
 * - tables may extend past the parent container when content requires it;
 * - column sizing uses content-based auto layout rather than forced equal widths.
 */
.admin-page-container .table-container,
.admin-page-container .admin-table-container,
.admin-page-container .admin-feedback-table-container,
.admin-page-container .database-tools-table-container,
.admin-page-container .diagnostics-table-container,
.admin-page-container .readiness-table-container,
.admin-dashboard-container .table-container,
.admin-dashboard-container .admin-table-container,
.admin-diagnostics-container .table-container,
.admin-diagnostics-container .admin-table-container,
.ui-surface-admin .table-container,
.ui-surface-admin .admin-table-container,
.ui-surface-admin .admin-feedback-table-container,
.ui-surface-admin .database-tools-table-container,
.ui-surface-admin .diagnostics-table-container,
.ui-surface-admin .readiness-table-container {
    box-sizing: border-box !important;
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
}

.admin-page-container table,
.admin-dashboard-container table,
.admin-diagnostics-container table,
.ui-surface-admin table,
.admin-dashboard-table,
.admin-diagnostic-table,
.admin-table,
.admin-feedback-table,
.admin-client-onboarding-table,
.admin-client-onboarding-form,
.database-tools-table,
.readiness-check-table {
    border-collapse: collapse !important;
    box-sizing: border-box !important;
    table-layout: auto !important;
    width: max-content !important;
    min-width: 100% !important;
    max-width: none !important;
}

.admin-page-container table th,
.admin-dashboard-container table th,
.admin-diagnostics-container table th,
.ui-surface-admin table th,
.admin-dashboard-table th,
.admin-diagnostic-table th,
.admin-table th,
.admin-feedback-table th,
.admin-client-onboarding-table th,
.admin-client-onboarding-form th,
.database-tools-table th,
.readiness-check-table th {
    box-sizing: border-box !important;
    max-width: 18rem !important;
    min-width: max-content;
    white-space: normal !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
    text-overflow: clip !important;
    vertical-align: top !important;
}

.admin-page-container table td,
.admin-dashboard-container table td,
.admin-diagnostics-container table td,
.ui-surface-admin table td,
.admin-dashboard-table td,
.admin-diagnostic-table td,
.admin-table td,
.admin-feedback-table td,
.admin-client-onboarding-table td,
.admin-client-onboarding-form td,
.database-tools-table td,
.readiness-check-table td {
    box-sizing: border-box !important;
    max-width: 34rem !important;
    min-width: 0 !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    hyphens: auto !important;
    text-overflow: clip !important;
    vertical-align: top !important;
}

.admin-page-container table td code,
.admin-page-container table td pre,
.admin-page-container table td samp,
.admin-page-container table td a,
.admin-dashboard-container table td code,
.admin-dashboard-container table td pre,
.admin-dashboard-container table td samp,
.admin-dashboard-container table td a,
.admin-diagnostics-container table td code,
.admin-diagnostics-container table td pre,
.admin-diagnostics-container table td samp,
.admin-diagnostics-container table td a,
.ui-surface-admin table td code,
.ui-surface-admin table td pre,
.ui-surface-admin table td samp,
.ui-surface-admin table td a {
    box-sizing: border-box !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    hyphens: none !important;
}

.admin-page-container table th code,
.admin-page-container table th pre,
.admin-dashboard-container table th code,
.admin-dashboard-container table th pre,
.admin-diagnostics-container table th code,
.admin-diagnostics-container table th pre,
.ui-surface-admin table th code,
.ui-surface-admin table th pre {
    white-space: normal !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
}

.admin-page-container table input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.admin-page-container table select,
.admin-page-container table textarea,
.admin-page-container table button,
.admin-dashboard-container table input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.admin-dashboard-container table select,
.admin-dashboard-container table textarea,
.admin-dashboard-container table button,
.admin-diagnostics-container table input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.admin-diagnostics-container table select,
.admin-diagnostics-container table textarea,
.admin-diagnostics-container table button,
.ui-surface-admin table input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
.ui-surface-admin table select,
.ui-surface-admin table textarea,
.ui-surface-admin table button {
    box-sizing: border-box !important;
    max-width: 100% !important;
}

.admin-page-container table .nowrap,
.admin-dashboard-container table .nowrap,
.admin-diagnostics-container table .nowrap,
.ui-surface-admin table .nowrap,
.admin-page-container table .status-pill,
.admin-dashboard-container table .status-pill,
.admin-diagnostics-container table .status-pill,
.ui-surface-admin table .status-pill,
.admin-page-container table .admin-status-badge,
.admin-dashboard-container table .admin-status-badge,
.admin-diagnostics-container table .admin-status-badge,
.ui-surface-admin table .admin-status-badge {
    white-space: nowrap !important;
}


/* ADDED STEP275: admin-wide severity ordering/table consistency final layer. */
.admin-page-container details.admin-section,
.admin-page-container details.admin-health-details,
.admin-page-container details.dashboard-exclusive-details {
    scroll-margin-top: 7.5rem;
}
.admin-page-container table,
.admin-dashboard-container table,
.admin-diagnostics-container table,
.admin-development-container table {
    width: max(100%, max-content);
    max-width: none;
    table-layout: auto;
    border-collapse: collapse;
}
.admin-page-container th,
.admin-dashboard-container th,
.admin-diagnostics-container th,
.admin-development-container th {
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
    vertical-align: top;
}
.admin-page-container td,
.admin-dashboard-container td,
.admin-diagnostics-container td,
.admin-development-container td {
    white-space: normal;
    overflow-wrap: break-word;
    word-break: normal;
    vertical-align: top;
}
.admin-page-container .table-container,
.admin-dashboard-container .table-container,
.admin-diagnostics-container .table-container,
.admin-development-container .table-container,
.admin-table-container {
    overflow-x: auto;
    max-width: 100%;
}
.admin-page-container tr.dashboard-status-blocked,
.admin-page-container tr.dashboard-status-error,
.admin-dashboard-container tr.dashboard-status-blocked,
.admin-dashboard-container tr.dashboard-status-error,
.admin-diagnostics-container tr.dashboard-status-blocked,
.admin-diagnostics-container tr.dashboard-status-error,
.admin-development-container tr.dashboard-status-blocked,
.admin-development-container tr.dashboard-status-error {
    background: var(--status-error-bg, var(--css-color-fde8e8));
}
.admin-page-container tr.dashboard-status-warning,
.admin-dashboard-container tr.dashboard-status-warning,
.admin-diagnostics-container tr.dashboard-status-warning,
.admin-development-container tr.dashboard-status-warning {
    background: var(--status-warning-bg, var(--css-color-fff7d6));
}
.admin-page-container tr.dashboard-status-ok,
.admin-page-container tr.dashboard-status-info,
.admin-dashboard-container tr.dashboard-status-ok,
.admin-dashboard-container tr.dashboard-status-info,
.admin-diagnostics-container tr.dashboard-status-ok,
.admin-diagnostics-container tr.dashboard-status-info,
.admin-development-container tr.dashboard-status-ok,
.admin-development-container tr.dashboard-status-info {
    background: var(--status-ok-bg, var(--css-color-eef8ee));
}
.admin-card-grid.admin-dashboard-card-grid {
    align-items: stretch;
}


/* ADDED STEP277 admin layout consistency guard */
.admin-page-container .admin-health-details, .admin-page-container details.admin-health-details { border-radius: 12px; margin: 0.75rem 0; }
.admin-page-container summary { cursor: pointer; }


/* ADDED STEP281 admin table contract enforcement */
.admin-page-container table th { white-space: normal; overflow-wrap: normal; word-break: normal; hyphens: none; }
.admin-page-container table td { overflow-wrap: anywhere; word-break: normal; }
.admin-page-container .admin-table-scroll { overflow-x: auto; max-width: 100%; }

/* Phase 4 Step 291: Admin table violation scanner markers. */
.admin-table-violation { outline: 2px solid var(--color-warning-border, var(--css-color-c77)); }

/* ADDED STEP337: Database Tools SQL previews for dry-run migration output. */
.database-tools-sql-preview {
    max-width: 100%;
    overflow-x: auto;
    white-space: pre;
    padding: 0.75rem;
    border: 1px solid var(--border-color, var(--css-color-ccc));
    border-radius: 0.5rem;
}

/* STEP347: Development / Testing submenu section labels. */
.admin-subnav-child-row-grouped {
  align-items: center;
}

.admin-subnav-section-label {
  display: inline-flex;
  align-items: center;
  margin: 0.15rem 0.15rem 0.15rem 0.35rem;
  padding: 0.22rem 0.45rem;
  border-radius: 0.55rem;
  background: var(--color-table-header-bg, var(--color-background));
  color: var(--color-text-muted, var(--color-text));
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

/* ADDED v2026-05-20.387: Admin-wide section and table formatting contract.
   Applies after older admin/table rules so all admin workspaces share the same
   health-summary highlighting and overflow-safe table behavior. */
.admin-page-container details.admin-section-outline-error > summary,
.admin-page-container details.dashboard-status-blocked > summary,
.admin-page-container details.dashboard-status-error > summary,
.admin-dashboard-container details.admin-section-outline-error > summary,
.admin-dashboard-container details.dashboard-status-blocked > summary,
.admin-dashboard-container details.dashboard-status-error > summary,
.admin-diagnostics-container details.admin-section-outline-error > summary,
.admin-diagnostics-container details.dashboard-status-blocked > summary,
.admin-diagnostics-container details.dashboard-status-error > summary,
.admin-development-container details.admin-section-outline-error > summary,
.admin-development-container details.dashboard-status-blocked > summary,
.admin-development-container details.dashboard-status-error > summary,
.diagnostics-container details.admin-section-outline-error > summary,
.approvals-container details.admin-section-outline-error > summary {
    background: var(--color-message-error);
    border: 1px solid var(--color-message-error);
    border-radius: 0.55rem;
    color: var(--color-text-on-accent, var(--color-white));
    margin: 0 0 0.5rem 0;
    padding: 0.45rem 0.65rem;
}

.admin-page-container details.admin-section-outline-warning > summary,
.admin-page-container details.dashboard-status-warning > summary,
.admin-dashboard-container details.admin-section-outline-warning > summary,
.admin-dashboard-container details.dashboard-status-warning > summary,
.admin-diagnostics-container details.admin-section-outline-warning > summary,
.admin-diagnostics-container details.dashboard-status-warning > summary,
.admin-development-container details.admin-section-outline-warning > summary,
.admin-development-container details.dashboard-status-warning > summary,
.diagnostics-container details.admin-section-outline-warning > summary,
.approvals-container details.admin-section-outline-warning > summary {
    background: var(--color-pastel-yellow);
    border: 1px solid var(--color-message-warning);
    border-radius: 0.55rem;
    color: var(--color-black);
    margin: 0 0 0.5rem 0;
    padding: 0.45rem 0.65rem;
}

.admin-page-container details,
.admin-dashboard-container details,
.admin-diagnostics-container details,
.admin-development-container details,
.diagnostics-container details,
.approvals-container details,
.admin-page-container .divborder,
.admin-dashboard-container .divborder,
.admin-diagnostics-container .divborder,
.admin-development-container .divborder,
.diagnostics-container .divborder,
.approvals-container .divborder {
    box-sizing: border-box;
    max-width: 100%;
}

.admin-page-container .table-container,
.admin-dashboard-container .table-container,
.admin-diagnostics-container .table-container,
.admin-development-container .table-container,
.diagnostics-container .table-container,
.approvals-container .table-container,
.admin-page-container .admin-table-container,
.admin-dashboard-container .admin-table-container,
.admin-diagnostics-container .admin-table-container,
.admin-development-container .admin-table-container,
.diagnostics-container .admin-table-container,
.approvals-container .admin-table-container,
.admin-page-container .admin-table-scroll,
.admin-dashboard-container .admin-table-scroll,
.admin-diagnostics-container .admin-table-scroll,
.admin-development-container .admin-table-scroll,
.diagnostics-container .admin-table-scroll,
.approvals-container .admin-table-scroll {
    box-sizing: border-box;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: visible;
}



.admin-page-container th,
.admin-dashboard-container th,
.admin-diagnostics-container th,
.admin-development-container th,
.diagnostics-container th,
.approvals-container th {

    max-width: 28rem;
    overflow-wrap: normal;
    text-wrap: wrap;

    white-space: normal;
    word-break: normal;
    hyphens: none;
}

.admin-page-container td,
.admin-dashboard-container td,
.admin-diagnostics-container td,
.admin-development-container td,
.diagnostics-container td,
.approvals-container td {


    min-width: min-content;




    white-space: normal;


}

.admin-page-container td code,
.admin-dashboard-container td code,
.admin-diagnostics-container td code,
.admin-development-container td code,
.diagnostics-container td code,
.approvals-container td code,
.admin-page-container td pre,
.admin-dashboard-container td pre,
.admin-diagnostics-container td pre,
.admin-development-container td pre,
.diagnostics-container td pre,
.approvals-container td pre {
    max-width: 100%;
    overflow-x: auto;
    white-space: pre-wrap;
    word-break: normal;
    overflow-wrap: anywhere;
}

/* ADDED v2026-05-20.392: Admin UI Theme Contract v2.
   Low-risk visual contract only: typography, spacing, buttons, forms, details,
   health summaries, and overflow-safe tables. This intentionally does not force
   every admin page into one card/grid layout. */
:root {
  --admin-ui-radius: 0.75rem;
  --admin-ui-gap: 0.75rem;
  --admin-ui-padding: 0.75rem;
  --admin-ui-muted-text: #666;
  --admin-ui-soft-bg: rgba(255, 255, 255, 0.62);
  --admin-ui-error-bg: #ffe5df;
  --admin-ui-warning-bg: #fff3bf;
  --admin-ui-ok-bg: #e8f8ed;
}

.admin-page-container,
.admin-dashboard-container,
.admin-development-container,
.admin-diagnostics-container,
.admin-settings-container,
.admin-league-settings-container,
.admin-leagues-container,
.admin-global-players-container,
.admin-league-roster-container,
.admin-teams-container,
.admin-dupr-container,
.admin-rounds-container,
.diagnostics-container {
  color: var(--color-text, var(--css-color-111));
  line-height: 1.45;
}

.admin-page-container h1,
.admin-dashboard-container h1,
.admin-development-container h1,
.admin-diagnostics-container h1,
.admin-settings-container h1,
.admin-league-settings-container h1,
.admin-leagues-container h1,
.admin-global-players-container h1,
.admin-league-roster-container h1,
.admin-teams-container h1,
.admin-dupr-container h1,
.admin-rounds-container h1,
.diagnostics-container h1 {
  margin-top: 0;
  margin-bottom: 0.75rem;
}

.admin-page-container h2,
.admin-dashboard-container h2,
.admin-development-container h2,
.admin-diagnostics-container h2,
.admin-settings-container h2,
.admin-league-settings-container h2,
.admin-leagues-container h2,
.admin-global-players-container h2,
.admin-league-roster-container h2,
.admin-teams-container h2,
.admin-dupr-container h2,
.admin-rounds-container h2,
.diagnostics-container h2,
.admin-page-container h3,
.admin-dashboard-container h3,
.admin-development-container h3,
.admin-diagnostics-container h3,
.admin-settings-container h3,
.admin-league-settings-container h3,
.admin-leagues-container h3,
.admin-global-players-container h3,
.admin-league-roster-container h3,
.admin-teams-container h3,
.admin-dupr-container h3,
.admin-rounds-container h3,
.diagnostics-container h3 {
  margin-bottom: 0.5rem;
}

.admin-page-container .muted,
.admin-dashboard-container .muted,
.admin-development-container .muted,
.admin-diagnostics-container .muted,
.diagnostics-container .muted,
.admin-page-container .muted-text,
.admin-dashboard-container .muted-text,
.admin-development-container .muted-text,
.admin-diagnostics-container .muted-text,
.diagnostics-container .muted-text {
  color: var(--admin-ui-muted-text);
}

.admin-page-container .divborder,
.admin-dashboard-container .divborder,
.admin-development-container .divborder,
.admin-diagnostics-container .divborder,
.admin-settings-container .divborder,
.admin-league-settings-container .divborder,
.admin-leagues-container .divborder,
.admin-global-players-container .divborder,
.admin-league-roster-container .divborder,
.admin-teams-container .divborder,
.admin-dupr-container .divborder,
.admin-rounds-container .divborder,
.diagnostics-container .divborder,
.admin-card,
.admin-panel,
.admin-report-card {
  border-color: var(--color-table-border);
  border-radius: var(--admin-ui-radius);
}

.admin-page-container details.admin-section,
.admin-dashboard-container details.admin-section,
.admin-development-container details.admin-section,
.admin-diagnostics-container details.admin-section,
.diagnostics-container details.admin-section,
.admin-page-container details.dashboard-exclusive-details,
.admin-dashboard-container details.dashboard-exclusive-details,
.admin-development-container details.dashboard-exclusive-details,
.admin-diagnostics-container details.dashboard-exclusive-details,
.diagnostics-container details.dashboard-exclusive-details {
  border: 1px solid var(--color-table-border);
  border-radius: var(--admin-ui-radius);
  padding: 0.45rem var(--admin-ui-padding);
  margin: 0 0 var(--admin-ui-gap) 0;
  background: var(--admin-ui-soft-bg);
  box-sizing: border-box;
}

.admin-page-container details.admin-section > summary,
.admin-dashboard-container details.admin-section > summary,
.admin-development-container details.admin-section > summary,
.admin-diagnostics-container details.admin-section > summary,
.diagnostics-container details.admin-section > summary,
.admin-page-container details.dashboard-exclusive-details > summary,
.admin-dashboard-container details.dashboard-exclusive-details > summary,
.admin-development-container details.dashboard-exclusive-details > summary,
.admin-diagnostics-container details.dashboard-exclusive-details > summary,
.diagnostics-container details.dashboard-exclusive-details > summary {
  cursor: pointer;
  font-weight: 700;
  padding: 0.35rem 0;
  overflow-wrap: anywhere;
}

.admin-page-container details.admin-section[open] > summary,
.admin-dashboard-container details.admin-section[open] > summary,
.admin-development-container details.admin-section[open] > summary,
.admin-diagnostics-container details.admin-section[open] > summary,
.diagnostics-container details.admin-section[open] > summary,
.admin-page-container details.dashboard-exclusive-details[open] > summary,
.admin-dashboard-container details.dashboard-exclusive-details[open] > summary,
.admin-development-container details.dashboard-exclusive-details[open] > summary,
.admin-diagnostics-container details.dashboard-exclusive-details[open] > summary,
.diagnostics-container details.dashboard-exclusive-details[open] > summary {
  border-bottom: 1px solid var(--color-table-border);
  margin-bottom: 0.55rem;
}

.admin-page-container details.admin-section.admin-section-outline-error > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-error > summary,
.admin-development-container details.admin-section.admin-section-outline-error > summary,
.admin-diagnostics-container details.admin-section.admin-section-outline-error > summary,
.diagnostics-container details.admin-section.admin-section-outline-error > summary,
.admin-page-container details.dashboard-exclusive-details.admin-section-outline-error > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-error > summary,
.admin-development-container details.dashboard-exclusive-details.admin-section-outline-error > summary,
.admin-diagnostics-container details.dashboard-exclusive-details.admin-section-outline-error > summary,
.diagnostics-container details.dashboard-exclusive-details.admin-section-outline-error > summary,
.admin-page-container details.admin-section.status-error > summary,
.admin-dashboard-container details.admin-section.status-error > summary,
.admin-development-container details.admin-section.status-error > summary,
.admin-diagnostics-container details.admin-section.status-error > summary,
.diagnostics-container details.admin-section.status-error > summary {
  background: var(--admin-ui-error-bg);
  color: var(--color-message-error);
  margin-left: calc(var(--admin-ui-padding) * -1);
  margin-right: calc(var(--admin-ui-padding) * -1);
  padding-left: var(--admin-ui-padding);
  padding-right: var(--admin-ui-padding);
  border-radius: calc(var(--admin-ui-radius) - 0.2rem);
}

.admin-page-container details.admin-section.admin-section-outline-warning > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-warning > summary,
.admin-development-container details.admin-section.admin-section-outline-warning > summary,
.admin-diagnostics-container details.admin-section.admin-section-outline-warning > summary,
.diagnostics-container details.admin-section.admin-section-outline-warning > summary,
.admin-page-container details.dashboard-exclusive-details.admin-section-outline-warning > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-warning > summary,
.admin-development-container details.dashboard-exclusive-details.admin-section-outline-warning > summary,
.admin-diagnostics-container details.dashboard-exclusive-details.admin-section-outline-warning > summary,
.diagnostics-container details.dashboard-exclusive-details.admin-section-outline-warning > summary,
.admin-page-container details.admin-section.status-warning > summary,
.admin-dashboard-container details.admin-section.status-warning > summary,
.admin-development-container details.admin-section.status-warning > summary,
.admin-diagnostics-container details.admin-section.status-warning > summary,
.diagnostics-container details.admin-section.status-warning > summary {
  background: var(--admin-ui-warning-bg);
  color: var(--css-color-7a3d00);
  margin-left: calc(var(--admin-ui-padding) * -1);
  margin-right: calc(var(--admin-ui-padding) * -1);
  padding-left: var(--admin-ui-padding);
  padding-right: var(--admin-ui-padding);
  border-radius: calc(var(--admin-ui-radius) - 0.2rem);
}

.admin-page-container details.admin-section.admin-section-outline-ok > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-ok > summary,
.admin-development-container details.admin-section.admin-section-outline-ok > summary,
.admin-diagnostics-container details.admin-section.admin-section-outline-ok > summary,
.diagnostics-container details.admin-section.admin-section-outline-ok > summary {
  background: var(--admin-ui-ok-bg);
  color: var(--css-color-195c2e);
  margin-left: calc(var(--admin-ui-padding) * -1);
  margin-right: calc(var(--admin-ui-padding) * -1);
  padding-left: var(--admin-ui-padding);
  padding-right: var(--admin-ui-padding);
  border-radius: calc(var(--admin-ui-radius) - 0.2rem);
}

.admin-page-container .button,
.admin-dashboard-container .button,
.admin-development-container .button,
.admin-diagnostics-container .button,
.diagnostics-container .button,
.admin-page-container button,
.admin-dashboard-container button,
.admin-development-container button,
.admin-diagnostics-container button,
.diagnostics-container button,
.admin-page-container input[type="submit"],
.admin-dashboard-container input[type="submit"],
.admin-development-container input[type="submit"],
.admin-diagnostics-container input[type="submit"],
.diagnostics-container input[type="submit"] {
  border-radius: 0.45rem;
  min-height: 2.1rem;
}

.admin-page-container input[type="text"],
.admin-dashboard-container input[type="text"],
.admin-development-container input[type="text"],
.admin-diagnostics-container input[type="text"],
.diagnostics-container input[type="text"],
.admin-page-container input[type="number"],
.admin-dashboard-container input[type="number"],
.admin-development-container input[type="number"],
.admin-diagnostics-container input[type="number"],
.diagnostics-container input[type="number"],
.admin-page-container input[type="url"],
.admin-dashboard-container input[type="url"],
.admin-development-container input[type="url"],
.admin-diagnostics-container input[type="url"],
.diagnostics-container input[type="url"],
.admin-page-container input[type="email"],
.admin-dashboard-container input[type="email"],
.admin-development-container input[type="email"],
.admin-diagnostics-container input[type="email"],
.diagnostics-container input[type="email"],
.admin-page-container select,
.admin-dashboard-container select,
.admin-development-container select,
.admin-diagnostics-container select,
.diagnostics-container select,
.admin-page-container textarea,
.admin-dashboard-container textarea,
.admin-development-container textarea,
.admin-diagnostics-container textarea,
.diagnostics-container textarea {
  border: 1px solid var(--color-table-border);
  border-radius: 0.35rem;
  padding: 0.32rem 0.45rem;
  max-width: 100%;
}

.admin-page-container .admin-table-container,
.admin-dashboard-container .admin-table-container,
.admin-development-container .admin-table-container,
.admin-diagnostics-container .admin-table-container,
.diagnostics-container .admin-table-container,
.admin-page-container .table-container,
.admin-dashboard-container .table-container,
.admin-development-container .table-container,
.admin-diagnostics-container .table-container,
.diagnostics-container .table-container {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

/* Phase 4 Step 394: standard admin report shell, intentionally low-risk. */
.admin-report-shell {
    box-sizing: border-box;
}
.admin-report-shell .admin-report-section > summary {
    cursor: pointer;
}
.admin-report-shell .admin-table-container {
    max-width: 100%;
    overflow-x: auto;
}


/* Phase 4 Step 397: CSS normalization batch 1.
   Low-risk token/selector consolidation only. Do not force page-specific layout shells. */
:root {




  --ui-radius-sm: 0.35rem;
  --ui-radius-md: 0.5rem;
  --ui-radius-lg: 0.75rem;
  --ui-border-standard: 1px solid var(--color-table-border);
  --ui-table-cell-padding-y: 0.35rem;
  --ui-table-cell-padding-x: 0.5rem;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-section, .admin-card, .admin-report-section, .diagnostic-card, .dashboard-card) {
  box-sizing: border-box;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-table-container, .table-container, .table-responsive, .responsive-table-wrap) {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(table.admin-table, table.diagnostics-table, table.report-table, .admin-table-container > table, .table-container > table) {
  table-layout: auto;
  width: max-content;
  min-width: 100%;
  max-width: none;
  border-collapse: collapse;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(th, td) {
  box-sizing: border-box;
  vertical-align: top;
  padding: var(--ui-table-cell-padding-y) var(--ui-table-cell-padding-x);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) th {
  white-space: normal;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) td {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: auto;
  max-width: min(42rem, 70vw);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(input, select, textarea, button, .button, .btn) {
  box-sizing: border-box;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(input[type="text"], input[type="number"], input[type="url"], input[type="email"], input[type="password"], select, textarea) {
  max-width: 100%;
}

:where(.content, .main-content, .page-container) :where(.table-container, .responsive-table-wrap) {
  max-width: 100%;
  overflow-x: auto;
}

/* Phase 4 Step 398: CSS normalization batch 2.
   Normalize shared UI primitives without forcing a single page layout. */
:root {
  --ui-control-min-height: 2.25rem;
  --ui-control-padding-y: 0.45rem;
  --ui-control-padding-x: 0.7rem;
  --ui-card-padding: var(--ui-space-4);
  --ui-section-gap: var(--ui-space-4);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.button, .btn, button, input[type="submit"], input[type="button"], input[type="reset"]) {
  min-height: var(--ui-control-min-height);
  border-radius: var(--ui-radius-sm);
  padding: var(--ui-control-padding-y) var(--ui-control-padding-x);
  line-height: 1.2;
  max-width: 100%;
  white-space: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-actions, .button-row, .form-actions, .dashboard-actions, .report-actions) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2);
  align-items: center;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-card, .dashboard-card, .diagnostic-card, .report-card, .admin-report-section) {
  border-radius: var(--ui-radius-md);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.status-badge, .badge, .pill, .tag) {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  max-width: 100%;
  border-radius: 999px;
  padding: 0.15rem 0.45rem;
  line-height: 1.25;
  vertical-align: baseline;
  white-space: normal;
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.notice, .warning, .error, .success, .info, .admin-notice, .diagnostic-notice) {
  box-sizing: border-box;
  max-width: 100%;
  border-radius: var(--ui-radius-md);
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(dl) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(dt) {
  font-weight: 600;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(dd) {
  margin-left: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 720px) {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-actions, .button-row, .form-actions, .dashboard-actions, .report-actions) {
    align-items: stretch;
  }

  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-actions > *, .button-row > *, .form-actions > *, .dashboard-actions > *, .report-actions > *) {
    max-width: 100%;
  }
}

/* STEP399: Admin health outline semantics.
   - 0 errors, 0 warnings, 0 info: no highlight/outline.
   - 0 errors, 0 warnings, >0 info: informational highlight/outline.
   Error and warning states continue to take priority. */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .approvals-container) details:where(.admin-section, .admin-health-details, .dashboard-exclusive-details, .database-tools-exclusive-details).admin-section-outline-none,
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .approvals-container) details:where(.admin-section, .admin-health-details, .dashboard-exclusive-details, .database-tools-exclusive-details).admin-section-outline-ok {
  border-color: var(--color-table-border, var(--css-color-d6d6d6));
  box-shadow: none;
  background: var(--color-card-bg, var(--color-white));
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .approvals-container) details:where(.admin-section, .admin-health-details, .dashboard-exclusive-details, .database-tools-exclusive-details).admin-section-outline-none > summary,
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .approvals-container) details:where(.admin-section, .admin-health-details, .dashboard-exclusive-details, .database-tools-exclusive-details).admin-section-outline-ok > summary {
  background: var(--color-transparent);
  color: inherit;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .approvals-container) details:where(.admin-section, .admin-health-details, .dashboard-exclusive-details, .database-tools-exclusive-details).admin-section-outline-info {
  border-color: var(--color-status-info, var(--css-color-2563eb));
  box-shadow: 0 0 0 1px var(--color-status-info, var(--css-color-2563eb));
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .approvals-container) details:where(.admin-section, .admin-health-details, .dashboard-exclusive-details, .database-tools-exclusive-details).admin-section-outline-info > summary {
  background: var(--color-status-info-bg, var(--css-color-eef7ff));
  color: var(--color-status-info, var(--css-color-2563eb));
}


/* Phase 4 Step 400: CSS normalization batch 3.
   Normalize low-risk content/form/report primitives without forcing a shared page layout. */
:root {
  --ui-focus-outline: 2px solid var(--color-link, #2563eb);
  --ui-focus-outline-offset: 2px;
  --ui-content-measure: 72rem;
  --ui-inline-gap: var(--ui-space-2);
  --ui-block-gap: var(--ui-space-3);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(a, button, input, select, textarea, summary):focus-visible {
  outline: var(--ui-focus-outline);
  outline-offset: var(--ui-focus-outline-offset);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(fieldset) {
  box-sizing: border-box;
  max-width: 100%;
  border: var(--ui-border-standard);
  border-radius: var(--ui-radius-md);
  padding: var(--ui-space-3);
  margin: 0 0 var(--ui-block-gap);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(legend) {
  font-weight: 600;
  padding: 0 var(--ui-space-1);
  max-width: 100%;
  white-space: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(label) {
  max-width: 100%;
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.form-row, .field-row, .admin-field-row, .filter-row) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-inline-gap);
  align-items: center;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.form-row > *, .field-row > *, .admin-field-row > *, .filter-row > *) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.help-text, .admin-help-text, .hint, .muted, .small-note, .note) {
  max-width: var(--ui-content-measure);
  overflow-wrap: anywhere;
  line-height: 1.45;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(pre, code, kbd, samp) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(pre) {
  box-sizing: border-box;
  overflow-x: auto;
  white-space: pre-wrap;
  border-radius: var(--ui-radius-sm);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(ul, ol) {
  max-width: var(--ui-content-measure);
  padding-left: 1.35rem;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(li) {
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-meta, .report-meta, .diagnostic-meta, .summary-meta) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2) var(--ui-space-3);
  align-items: center;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-meta > *, .report-meta > *, .diagnostic-meta > *, .summary-meta > *) {
  max-width: 100%;
  overflow-wrap: anywhere;
}

@media (max-width: 720px) {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.form-row, .field-row, .admin-field-row, .filter-row) {
    align-items: stretch;
  }

  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.form-row > *, .field-row > *, .admin-field-row > *, .filter-row > *) {
    flex-basis: auto;
  }
}


/* Phase 4 Step 401: CSS normalization batch 4.
   Normalize low-risk shell/card/media/navigation primitives without forcing page layout changes. */
:root {
  --ui-card-padding: var(--ui-space-3);
  --ui-card-gap: var(--ui-space-3);
  --ui-card-radius: var(--ui-radius-md);
  --ui-card-border: var(--ui-border-standard);
  --ui-muted-opacity: 0.82;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.card, .panel, .box, .tile, .admin-card, .dashboard-card, .diagnostic-card, .report-card, .stats-progress-card, .stats-progress-panel) {
  box-sizing: border-box;
  max-width: 100%;
  border-radius: var(--ui-card-radius);
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.card > *, .panel > *, .box > *, .tile > *, .admin-card > *, .dashboard-card > *, .diagnostic-card > *, .report-card > *, .stats-progress-card > *, .stats-progress-panel > *) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(img, svg, canvas, video, iframe) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(img, video) {
  height: auto;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(iframe) {
  border: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.tabs, .tab-list, .nav-tabs, .subnav, .admin-subnav, .admin-nav-group, .pagination, .pager) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2);
  align-items: center;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.tabs a, .tab-list a, .nav-tabs a, .subnav a, .admin-subnav a, .pagination a, .pager a, .pagination span, .pager span) {
  max-width: 100%;
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.empty-state, .no-data, .no-results, .nothing-found) {
  box-sizing: border-box;
  max-width: 100%;
  border-radius: var(--ui-radius-md);
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.is-muted, .muted, .secondary-text, .meta-text, .caption) {
  opacity: var(--ui-muted-opacity);
}

@media (max-width: 720px) {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.tabs, .tab-list, .nav-tabs, .subnav, .admin-subnav, .admin-nav-group, .pagination, .pager) {
    align-items: stretch;
  }

  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.tabs > *, .tab-list > *, .nav-tabs > *, .subnav > *, .admin-subnav > *, .admin-nav-group > *, .pagination > *, .pager > *) {
    max-width: 100%;
  }
}


/* Phase 4 Step 402: CSS normalization batch 5.
   Normalize low-risk state, status, and printable/report utility primitives without forcing page layout changes. */
:root {
  --ui-status-gap: var(--ui-space-2);
  --ui-status-padding-y: 0.45rem;
  --ui-status-padding-x: 0.65rem;
  --ui-status-radius: var(--ui-radius-md);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.status-row, .summary-row, .metric-row, .key-value-row, .admin-status-row, .report-status-row) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-status-gap);
  align-items: baseline;
  max-width: 100%;
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.status-row > *, .summary-row > *, .metric-row > *, .key-value-row > *, .admin-status-row > *, .report-status-row > *) {
  min-width: 0;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.status, .state, .result, .health-status, .validation-status, .status-label, .status-value, .count-badge, .number-badge) {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 1.75rem;
  padding: var(--ui-status-padding-y) var(--ui-status-padding-x);
  border-radius: var(--ui-status-radius);
  line-height: 1.2;
  white-space: normal;
  overflow-wrap: anywhere;
  vertical-align: middle;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.toolbar, .button-bar, .button-row, .admin-toolbar, .report-toolbar, .bulk-action-row, .download-links) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2);
  align-items: center;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.toolbar > *, .button-bar > *, .button-row > *, .admin-toolbar > *, .report-toolbar > *, .bulk-action-row > *, .download-links > *) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.scroll-x, .overflow-x, .wide-content, .wide-report, .wide-table, .table-scroll) {
  box-sizing: border-box;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.nowrap, .no-wrap) {
  white-space: nowrap;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.breakable, .wrap-anywhere, .path, .file-path, .route-path, .sql-snippet, .token-value) {
  overflow-wrap: anywhere;
  word-break: normal;
}

@media (max-width: 720px) {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.toolbar, .button-bar, .button-row, .admin-toolbar, .report-toolbar, .bulk-action-row, .download-links) {
    align-items: stretch;
  }
}

@media print {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) {
    max-width: none !important;
    overflow: visible !important;
  }

  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.table-container, .admin-table-container, .scroll-x, .overflow-x, .wide-content, .wide-report, .wide-table, .table-scroll) {
    overflow: visible !important;
  }
}


/* Phase 4 Step 403: Admin health outline specificity reinforcement.
   These selectors intentionally outrank older dashboard-specific outline rules.
   - 0 errors, 0 warnings, 0 info: no highlighted outline.
   - 0 errors, 0 warnings, >0 info: informational outline.
   Error and warning classes remain higher priority. */
.admin-dashboard-container details.admin-section.admin-section-outline-none,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-none,
.admin-dashboard-container details.admin-section.admin-section-outline-ok,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok,
.admin-dashboard-container details.admin-section.admin-section-info-only,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-info-only,
.admin-page-container details.admin-section.admin-section-outline-none,
.admin-page-container details.admin-health-details.admin-section-outline-none,
.admin-development-container details.admin-section.admin-section-outline-none,
.admin-development-container details.admin-health-details.admin-section-outline-none,
.admin-diagnostics-container details.admin-section.admin-section-outline-none,
.admin-diagnostics-container details.admin-health-details.admin-section-outline-none,
.diagnostics-container details.admin-section.admin-section-outline-none,
.diagnostics-container details.admin-health-details.admin-section-outline-none,
.approvals-container details.admin-section.admin-section-outline-none,
.approvals-container details.admin-health-details.admin-section-outline-none {
  border-color: var(--color-table-border, var(--css-color-d6d6d6)) !important;
  box-shadow: none !important;
  background: var(--color-card-bg, var(--color-white)) !important;
}

.admin-dashboard-container details.admin-section.admin-section-outline-none > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-none > summary,
.admin-dashboard-container details.admin-section.admin-section-outline-ok > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-ok > summary,
.admin-dashboard-container details.admin-section.admin-section-info-only > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-info-only > summary,
.admin-page-container details.admin-section.admin-section-outline-none > summary,
.admin-page-container details.admin-health-details.admin-section-outline-none > summary,
.admin-development-container details.admin-section.admin-section-outline-none > summary,
.admin-development-container details.admin-health-details.admin-section-outline-none > summary,
.admin-diagnostics-container details.admin-section.admin-section-outline-none > summary,
.admin-diagnostics-container details.admin-health-details.admin-section-outline-none > summary,
.diagnostics-container details.admin-section.admin-section-outline-none > summary,
.diagnostics-container details.admin-health-details.admin-section-outline-none > summary,
.approvals-container details.admin-section.admin-section-outline-none > summary,
.approvals-container details.admin-health-details.admin-section-outline-none > summary {
  background: var(--color-transparent) !important;
  color: inherit !important;
}

.admin-dashboard-container details.admin-section.admin-section-outline-info,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-info,
.admin-page-container details.admin-section.admin-section-outline-info,
.admin-page-container details.admin-health-details.admin-section-outline-info,
.admin-development-container details.admin-section.admin-section-outline-info,
.admin-development-container details.admin-health-details.admin-section-outline-info,
.admin-diagnostics-container details.admin-section.admin-section-outline-info,
.admin-diagnostics-container details.admin-health-details.admin-section-outline-info,
.diagnostics-container details.admin-section.admin-section-outline-info,
.diagnostics-container details.admin-health-details.admin-section-outline-info,
.approvals-container details.admin-section.admin-section-outline-info,
.approvals-container details.admin-health-details.admin-section-outline-info {
  border-color: var(--color-status-info, var(--css-color-2563eb)) !important;
  box-shadow: 0 0 0 1px var(--color-status-info, var(--css-color-2563eb)) !important;
}

.admin-dashboard-container details.admin-section.admin-section-outline-info > summary,
.admin-dashboard-container details.dashboard-exclusive-details.admin-section-outline-info > summary,
.admin-page-container details.admin-section.admin-section-outline-info > summary,
.admin-page-container details.admin-health-details.admin-section-outline-info > summary,
.admin-development-container details.admin-section.admin-section-outline-info > summary,
.admin-development-container details.admin-health-details.admin-section-outline-info > summary,
.admin-diagnostics-container details.admin-section.admin-section-outline-info > summary,
.admin-diagnostics-container details.admin-health-details.admin-section-outline-info > summary,
.diagnostics-container details.admin-section.admin-section-outline-info > summary,
.diagnostics-container details.admin-health-details.admin-section-outline-info > summary,
.approvals-container details.admin-section.admin-section-outline-info > summary,
.approvals-container details.admin-health-details.admin-section-outline-info > summary {
  background: var(--color-status-info-bg, var(--css-color-eef7ff)) !important;
  color: var(--color-status-info, var(--css-color-2563eb)) !important;
}

/* Phase 4 Step 407: CSS duplicate-selector consolidation batch 1.
   These are additive, low-specificity shared rules that consolidate repeated
   table, status, and admin report patterns without removing legacy blocks or
   forcing page layouts. */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-card, .dashboard-card, .diagnostic-card, .report-card, .admin-panel, .settings-panel, .admin-section, .admin-report-section) {
  box-sizing: border-box;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-card, .dashboard-card, .diagnostic-card, .report-card, .admin-panel, .settings-panel) > :where(h2, h3, h4, p, ul, ol, dl, table, form, details, pre) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.status-ok, .status-warning, .status-error, .status-info, .badge-ok, .badge-warning, .badge-error, .badge-info, .pill-ok, .pill-warning, .pill-error, .pill-info) {
  display: inline-flex;
  align-items: center;
  gap: var(--ui-space-1, 0.25rem);
  max-width: 100%;
  vertical-align: middle;
  white-space: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.status-ok, .status-warning, .status-error, .status-info, .badge-ok, .badge-warning, .badge-error, .badge-info, .pill-ok, .pill-warning, .pill-error, .pill-info) :where(code, span, strong, em) {
  max-width: 100%;
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-summary-grid, .report-summary-grid, .diagnostic-summary-grid, .health-summary-grid, .metric-grid) {
  box-sizing: border-box;
  display: grid;
  gap: var(--ui-space-3, 0.75rem);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-summary-grid, .report-summary-grid, .diagnostic-summary-grid, .health-summary-grid, .metric-grid) > * {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.table-container, .admin-table-container, .report-table-container, .diagnostic-table-container) > table {
  width: max-content;
  min-width: 100%;
  max-width: none;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(td, th) :where(.file-path, .route-path, .path, .sql-snippet, .token-value, code) {
  overflow-wrap: anywhere;
  word-break: normal;
}


/* Phase 4 Step 408: CSS duplicate-selector consolidation batch 2.
   Additive, low-specificity rules for repeated admin/report disclosure,
   callout, filter, and compact-table patterns. This does not remove legacy
   rules or force a single page layout. */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(details, .admin-section, .admin-health-details, .dashboard-exclusive-details, .report-section, .diagnostic-section) {
  box-sizing: border-box;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(details, .admin-section, .admin-health-details, .dashboard-exclusive-details, .report-section, .diagnostic-section) > summary {
  box-sizing: border-box;
  cursor: pointer;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.callout, .notice, .warning, .error, .success, .info, .admin-notice, .admin-warning, .admin-error, .admin-success, .admin-info, .validation-message, .status-message) {
  box-sizing: border-box;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.filters, .filter-row, .filter-bar, .admin-filters, .search-row, .search-controls, .report-controls) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2, 0.5rem);
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.filters, .filter-row, .filter-bar, .admin-filters, .search-row, .search-controls, .report-controls) > * {
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(table.compact, .compact-table, .report-table, .diagnostic-table, .admin-table) :where(th, td) {
  vertical-align: top;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(table.compact, .compact-table, .report-table, .diagnostic-table, .admin-table) th {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.table-caption, caption, .report-caption, .diagnostic-caption) {
  caption-side: top;
  max-width: 100%;
  overflow-wrap: anywhere;
  text-align: left;
  word-break: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-list, .report-list, .diagnostic-list, .issue-list, .warning-list, .error-list) {
  box-sizing: border-box;
  max-width: 100%;
  padding-left: 1.25rem;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-list, .report-list, .diagnostic-list, .issue-list, .warning-list, .error-list) > li {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}


/* Phase 4 Step 409: CSS duplicate-selector consolidation batch 3.
   Additive, low-specificity rules for repeated form, field, navigation, and
   responsive-stack patterns. This keeps existing page layouts intact and does
   not remove legacy CSS blocks. */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2, 0.5rem);
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row) > * {
  min-width: 0;
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(label, .field-label, .control-label, .setting-label) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(input, select, textarea, button) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.button-group, .button-row, .action-buttons, .form-actions, .admin-actions, .page-actions, .report-actions) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2, 0.5rem);
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.button-group, .button-row, .action-buttons, .form-actions, .admin-actions, .page-actions, .report-actions) > :where(a, button, input[type=submit], input[type=button]) {
  min-width: 0;
  max-width: 100%;
  white-space: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.breadcrumb, .breadcrumbs, .admin-breadcrumbs, .path-nav, .subtle-nav, .inline-nav) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-1, 0.25rem);
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.breadcrumb, .breadcrumbs, .admin-breadcrumbs, .path-nav, .subtle-nav, .inline-nav) :where(a, span, code) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

@media (max-width: 640px) {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row, .button-group, .button-row, .action-buttons, .form-actions, .admin-actions, .page-actions, .report-actions) {
    align-items: stretch;
  }

  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .content, .main-content, .page-container) :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row) > :where(input, select, textarea, button) {
    flex: 1 1 100%;
  }
}

/* Phase 4 Step 410: CSS duplicate-selector consolidation batch 4.
   Additive, low-specificity rules for repeated player-facing table, roster,
   match, stats, and name-line patterns. These rules preserve existing page
   layouts while improving containment and wrapping consistency. */
:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.matches-table, .stats-table, .players-table, .teams-table, .remaining-matches-table, .table-calendar, .standings-table, .schedule-table) {
  max-width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}

:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.matches-table, .stats-table, .players-table, .teams-table, .remaining-matches-table, .table-calendar, .standings-table, .schedule-table) :where(th, td) {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  vertical-align: top;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.matches-table, .stats-table, .players-table, .teams-table, .remaining-matches-table, .table-calendar, .standings-table, .schedule-table) th {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.player-name-line, .player-name-lines, .player-name-lines-public, .team-player-line, .stats-player-cell, .stats-team-cell, .match-player-cell, .team-name-cell) {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.player-name-line, .player-name-lines, .player-name-lines-public, .team-player-line, .stats-player-cell, .stats-team-cell, .match-player-cell, .team-name-cell) :where(a, span, strong, em, small) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.score-cell, .game-score-cell, .match-score-cell, .record-cell, .num, .numeric, .stat-value, .metric-value) {
  white-space: nowrap;
  text-align: right;
}

:where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.match-card, .team-card, .player-card, .stats-card, .calendar-card, .schedule-card) {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
}

@media (max-width: 640px) {
  :where(.player-page-container, .players-container, .teams-container, .matches-container, .stats-container, .calendar-container, .approvals-container, .content, .main-content, .page-container) :where(.match-card, .team-card, .player-card, .stats-card, .calendar-card, .schedule-card) {
    overflow-x: auto;
  }
}


/* Phase 4 Step 411: CSS duplicate-selector consolidation batch 5.
   Additive, low-specificity rules for repeated modal, dialog, overlay,
   dropdown, popover, tooltip, and alert patterns. These rules preserve
   existing page-specific behavior while improving containment and wrapping. */
:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) {
  box-sizing: border-box;
  max-width: min(100%, 48rem);
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(h1, h2, h3, h4, h5, h6, p, div, span, li, label, small, strong, em) {
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(table) {
  max-width: 100%;
  table-layout: auto;
}

:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(th, td) {
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(th) {
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(.modal-actions, .dialog-actions, .popup-actions, .swal2-actions, .alert-actions, .admin-modal-actions) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2, 0.5rem);
  max-width: 100%;
  min-width: 0;
}

:where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(.modal-actions, .dialog-actions, .popup-actions, .swal2-actions, .alert-actions, .admin-modal-actions) > :where(a, button, input[type=submit], input[type=button]) {
  min-width: 0;
  max-width: 100%;
  white-space: normal;
}

:where(.modal-backdrop, .dialog-backdrop, .popup-backdrop, .overlay, .loading-overlay, .swal2-container) {
  box-sizing: border-box;
  max-width: 100vw;
}

@media (max-width: 640px) {
  :where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) {
    max-width: calc(100vw - 1rem);
  }

  :where(.modal, .dialog, .popup, .popover, .dropdown-menu, .tooltip, .swal2-popup, .sweet-alert, .alert-dialog, .admin-modal, .admin-dialog) :where(.modal-actions, .dialog-actions, .popup-actions, .swal2-actions, .alert-actions, .admin-modal-actions) {
    align-items: stretch;
  }
}

/* Phase 4 Step 412: CSS duplicate-selector consolidation batch 6.
   Additive, low-specificity rules for repeated print/export/download,
   copyable-output, log, and audit/result panel patterns. These rules preserve
   existing page-specific behavior while improving containment and wrapping. */
:where(.export-panel, .download-panel, .download-links, .report-downloads, .print-actions, .copy-panel, .copyable-output, .generated-file, .generated-files, .audit-output, .audit-result, .validation-output, .log-output, .debug-output) {
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.export-panel, .download-panel, .download-links, .report-downloads, .print-actions, .copy-panel, .generated-file, .generated-files) :where(a, button, input[type=submit], input[type=button]) {
  max-width: 100%;
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.export-panel, .download-panel, .download-links, .report-downloads, .print-actions, .copy-panel) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ui-space-2, 0.5rem);
  align-items: center;
}

:where(.copyable-output, .audit-output, .audit-result, .validation-output, .log-output, .debug-output, .sql-output, .json-output, .csv-output, .manifest-output) {
  overflow-x: auto;
  white-space: pre-wrap;
}

:where(.copyable-output, .audit-output, .audit-result, .validation-output, .log-output, .debug-output, .sql-output, .json-output, .csv-output, .manifest-output) :where(code, pre, samp) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
  white-space: pre-wrap;
}

:where(.file-download-link, .manifest-download-link, .sql-download-link, .json-download-link, .csv-download-link, .report-download-link, .generated-file-link) {
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: normal;
}

:where(.admin-report-shell, .admin-page-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container) :where(.download-links, .report-downloads, .print-actions, .export-panel, .download-panel) {
  margin-block: var(--ui-space-2, 0.5rem);
}

@media print {
  :where(.download-links, .report-downloads, .print-actions, .export-panel, .download-panel, .admin-nav, .admin-subnav, .nav, .navbar) {
    display: none !important;
  }

  :where(.admin-report-shell, .admin-page-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .content, .main-content, .page-container) {
    max-width: 100% !important;
    overflow: visible !important;
  }
}

/* STEP414 CSS TOKEN ADOPTION PASS 1: low-risk shared token use for common admin/report spacing. */
:where(.admin-page-container, .admin-report-shell, .diagnostics-container, .admin-development-container) {
    gap: var(--ui-space-3, 0.75rem);
}
:where(.admin-page-container, .admin-report-shell, .diagnostics-container) > :where(h1, h2, h3, h4) {
    margin-top: 0;
    margin-bottom: var(--ui-space-3, 0.75rem);
}
:where(.admin-report-section, .admin-health-details, .admin-card, .report-card, .dashboard-card) {
    border-radius: var(--ui-radius-md, 8px);
    border: var(--ui-border-standard, 1px solid var(--css-color-ddd));
}
:where(.admin-table, .diagnostic-table, .report-table) :where(th, td) {
    padding-block: var(--ui-table-cell-padding-y, 0.35rem);
    padding-inline: var(--ui-table-cell-padding-x, 0.5rem);
}

/* STEP415 CSS TOKEN ADOPTION PASS 2: token-backed controls, notices, badges, and report content. */
:where(.admin-page-container, .admin-report-shell, .diagnostics-container) :where(.notice, .warning, .error, .success, .info, .validation-message, .admin-notice) {
    border-radius: var(--ui-radius-md, 8px);
    padding: var(--ui-space-3, 0.75rem);
}
:where(.admin-page-container, .admin-report-shell, .diagnostics-container) :where(button, .button, input[type='submit'], input[type='button']) {
    border-radius: var(--ui-radius-sm, 6px);
    padding-block: var(--ui-space-2, 0.5rem);
    padding-inline: var(--ui-space-3, 0.75rem);
}
:where(.admin-page-container, .admin-report-shell, .diagnostics-container) :where(.badge, .pill, .tag, .status-badge) {
    border-radius: var(--ui-radius-sm, 6px);
    padding-block: calc(var(--ui-space-1, 0.25rem) / 2);
    padding-inline: var(--ui-space-2, 0.5rem);
}
:where(.admin-page-container, .admin-report-shell, .diagnostics-container) :where(dl, .key-value-list, .summary-list) {
    margin-block: var(--ui-space-3, 0.75rem);
}

/* STEP421 PLAYER-FACING TABLE CONTRACT PASS: structure-preserving overflow/wrapping rules. */
:where(.page-container, .main-content, .content) :where(.matches-table, .players-table, .teams-table, .stats-table, .calendar-table, table) {
    max-width: 100%;
    table-layout: auto;
    border-collapse: collapse;
}
:where(.page-container, .main-content, .content) :where(.matches-table, .players-table, .teams-table, .stats-table, .calendar-table, table) :where(th) {
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
    white-space: normal;
}
:where(.page-container, .main-content, .content) :where(.matches-table, .players-table, .teams-table, .stats-table, .calendar-table, table) :where(td) {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: normal;
    vertical-align: top;
}
:where(.page-container, .main-content, .content) :where(.score-cell, .rank-cell, .stat-number, .game-score, .numeric) {
    white-space: nowrap;
    text-align: center;
}


/** ADDED v2026-05-20.424: Profile and admin input formatting refinements. */
.players-container .profile-summary-table {
    margin-left: 0;
    margin-right: auto;
    text-align: left;
}
.players-container .profile-summary-table .profile-photo {
    text-align: left;
}
.profile-field-label {
    display: block;
    font-weight: 600;
    margin: 0.75rem 0 0.25rem;
}
.profile-login-field {
    max-width: min(100%, 28rem);
    margin-bottom: 0.5rem;
}
.profile-login-field .login-largetext {
    padding-right: 12px;
}
.people-access-form input,
.people-access-form select,
.people-access-form textarea,
.people-access-input {
    box-sizing: border-box;
    max-width: 100%;
}

/* Phase 4 Step 429/431/433: admin normalization finishing pass. */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) :where(details) {
  max-width: 100%;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) :where(summary) {
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) :where(input, select, textarea) {
  max-width: 100%;
  box-sizing: border-box;
}

:where(.admin-action-row, .form-action-row, .button-row, .bulk-action-row, .admin-button-row) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2, .5rem);
  align-items: center;
}

/** ADDED v2026-05-20.435: Profile summary left alignment and grouped list containment. */
.players-container .profile-summary-wrap {
    display: flex;
    justify-content: flex-start;
    align-items: flex-start;
    width: 100%;
    text-align: left;
}
.players-container .profile-summary-wrap .profile-summary-table {
    margin-left: 0;
    margin-right: auto;
}
.admin-compact-list {
    margin: 0;
    padding-left: 1.25rem;
}
.admin-compact-list li {
    margin: 0.15rem 0;
    overflow-wrap: anywhere;
    word-break: normal;
}

/** ADDED v2026-05-20.436: Admin input radius normalization.
 *  Scope: admin containers only. Checkboxes/radios/hidden fields are excluded so native controls keep their expected shape.
 */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .people-access-form, .admin-form, .admin-filter-form) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    border-radius: var(--ui-radius-sm, 6px);
}


/** ADDED v2026-05-20.438: Site-wide admin input radius and People / Access input text normalization.
 *  Applies to any admin surface generated by DisplayPageHeader, not only the older admin container classes.
 */
:where(.ui-surface-admin, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    border-radius: var(--ui-radius-sm, 6px);
    box-sizing: border-box;
    max-width: 100%;
}

:where(.people-access-form, .admin-people-edit-table) :where(input, select, textarea),
:where(.people-access-form, .admin-people-edit-table) input[type="tel"] {
    font: inherit;
    font-size: inherit;
    line-height: inherit;
}


/** ADDED v2026-05-20.439: Strong player profile summary left-alignment override.
 *  Keeps the player/partner table directly beside the profile photo instead of right-aligning in the available row.
 */
.player-page-container.players-container .profile-summary-wrap,
.players-container .profile-summary-wrap {
    display: block;
    width: fit-content;
    max-width: 100%;
    margin-left: 0 !important;
    margin-right: auto !important;
    text-align: left !important;
}
.player-page-container.players-container .profile-summary-table,
.players-container .profile-summary-wrap .profile-summary-table,
.players-container .profile-summary-table {
    width: auto !important;
    margin-left: 0 !important;
    margin-right: auto !important;
    text-align: left !important;
}
.player-page-container.players-container .profile-summary-table td,
.players-container .profile-summary-table td {
    text-align: left;
}


/** ADDED v2026-05-20.441: Admin details health contract reinforcement. */
:where(.ui-surface-admin, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) details.admin-section-outline-error > summary {
    border-color: var(--color-error, var(--css-color-b00020));
    background: var(--color-error-bg, var(--css-color-ffecec));
}
:where(.ui-surface-admin, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) details.admin-section-outline-warning > summary {
    border-color: var(--color-warning, var(--css-color-9a6a00));
    background: var(--color-warning-bg, var(--css-color-fff8e1));
}
:where(.ui-surface-admin, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) details.admin-section-outline-info > summary {
    border-color: var(--color-info, var(--css-color-2271b1));
    background: var(--color-info-bg, var(--css-color-eef7ff));
}
:where(.ui-surface-admin, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) details.admin-section-outline-none > summary {
    border-color: var(--ui-border-color, var(--css-color-ddd));
    background: inherit;
}


/** ADDED v2026-05-20.448: Admin form-field consistency pass 2. */
:where(.ui-surface-admin, .admin-page-container, .admin-action-shell, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row) {
    box-sizing: border-box;
    max-width: 100%;
    gap: var(--space-sm, 0.5rem);
}
:where(.ui-surface-admin, .admin-page-container, .admin-action-shell, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .divborder) :where(label, .field-label, .setting-label) {
    max-width: 100%;
    overflow-wrap: anywhere;
}

/** ADDED v2026-05-20.449: People / Access page normalization. */
.people-access-form :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea),
.people-access-table :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea),
.admin-people-edit-table :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    border-radius: var(--radius-sm, 6px);
    font: inherit;
    font-size: inherit;
    line-height: inherit;
    max-width: 100%;
}

/** ADDED v2026-05-20.452: Player profile left-alignment verification override. */
.profile-summary-left,
.players-container .profile-summary-left,
.player-page-container .profile-summary-left {
    display: flex !important;
    justify-content: flex-start !important;
    align-items: flex-start !important;
    width: auto !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: auto !important;
    text-align: left !important;
}
.profile-summary-left > .profile-summary-table {
    margin-left: 0 !important;
    margin-right: auto !important;
    width: auto !important;
    text-align: left !important;
}

/** ADDED v2026-05-20.453: Player-facing rounded input pass. */
:where(.content, .main-content, .page-container, .players-container, .matches-container, .teams-container, .stats-container, .calendar-container, .login-container, .feedback-container) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
    border-radius: var(--radius-sm, 6px);
    max-width: 100%;
}

/* ADDED v2026-05-20.491-495: Admin CSS normalization pass for inputs, filters, buttons, notices, and table contract. */
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
  max-width: 100%;
  box-sizing: border-box;
  border-radius: var(--radius-sm, 6px);
  font: inherit;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(fieldset, .filter-form, .admin-filter-form, .search-form, .report-filter-form) {
  max-width: 100%;
  box-sizing: border-box;
  min-width: 0;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(.filter-row, .search-row, .admin-filter-row, .report-filter-row) {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: var(--space-sm, .5rem);
  min-width: 0;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(button, .button, .btn, input[type="submit"], input[type="button"], a.button, a.btn, .download-link, .export-link, .archive-link, .restore-link, .cancel-link) {
  border-radius: var(--radius-sm, 6px);
  min-height: 2.2rem;
  max-width: 100%;
  white-space: normal;
  overflow-wrap: break-word;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(.notice, .admin-notice, .callout, .message, .warning, .error, .success, .info, .validation-message, .alert, .smallnote) {
  max-width: 100%;
  box-sizing: border-box;
  overflow-wrap: anywhere;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(.table-container, .admin-table-container) {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(table.admin-table, .admin-table-container table) {
  width: max-content;
  min-width: 100%;
  table-layout: auto;
  border-collapse: collapse;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(table.admin-table th, .admin-table-container table th) {
  white-space: normal;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}
:where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(table.admin-table td, .admin-table-container table td) {
  max-width: 34rem;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: normal;
  vertical-align: top;
}
@media (max-width: 720px) {
  :where(.admin-action-shell, .admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .divborder) :where(.filter-row, .search-row, .admin-filter-row, .report-filter-row) {
    display: block;
  }
}:where(.admin-confirmation-form, .admin-sensitive-form) {
  display: grid;
  gap: var(--space-sm, .5rem);
  max-width: 52rem;
}
:where(.admin-confirmation-phrase) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs, .35rem);
  align-items: baseline;
  max-width: 100%;
  margin: var(--space-sm, .5rem) 0;
}
:where(.admin-confirmation-phrase code, .admin-path-value, .admin-file-name, .admin-route-path, .admin-output-path) {
  overflow-wrap: anywhere;
  word-break: break-word;
  white-space: normal;
}
:where(.admin-checkbox-row, .admin-radio-row) {
  display: flex;
  align-items: flex-start;
  gap: var(--space-xs, .35rem);
  max-width: 100%;
  line-height: 1.35;
}
:where(.admin-checkbox-row input[type="checkbox"], .admin-radio-row input[type="radio"]) {
  flex: 0 0 auto;
  margin-top: .18em;
  width: auto;
  min-width: 0;
  min-height: 0;
  border-radius: initial;
}
:where(.admin-danger-action-notice, .admin-warning-action-notice) {
  border-left: .35rem solid var(--color-warning, var(--css-color-9a6a00));
  padding-left: var(--space-sm, .5rem);
}
:where(.admin-button-danger, .button-danger, .danger-button, .admin-danger-action-row button) {
  font-weight: 700;
}
:where(.admin-generated-output, .admin-generated-status, .admin-safety-check, .admin-log-output, .admin-output-block) {
  max-width: 100%;
  box-sizing: border-box;
  overflow-wrap: anywhere;
}
:where(.admin-generated-output pre, .admin-log-output pre, .admin-output-block pre) {
  max-width: 100%;
  overflow-x: auto;
  white-space: pre-wrap;
}
@media (max-width: 720px) {
  :where(.admin-confirmation-form, .admin-sensitive-form) {
    max-width: 100%;
  }
  :where(.admin-confirmation-phrase) {
    display: block;
  }
}


/* ADDED v2026-05-20.515: Admin generated-output normalization pass. */
:where(.admin-page-container, .admin-action-shell, .admin-report-shell, .admin-tool-page) :where(.admin-generated-output, .admin-log-output, .admin-result-output, .admin-json-output, .admin-sql-output, .admin-validation-output) {
    max-width: 100%;
    overflow-x: auto;
    overflow-wrap: anywhere;
    word-break: normal;
    box-sizing: border-box;
}
:where(.admin-page-container, .admin-action-shell, .admin-report-shell, .admin-tool-page) :where(pre.admin-generated-output, pre.admin-log-output, pre.admin-result-output, pre.admin-json-output, pre.admin-sql-output) {
    white-space: pre-wrap;
}:where(.admin-selector-page, .admin-entity-edit-form, .admin-tool-success-output, .admin-reload-prompt) {
  max-width: 100%;
  box-sizing: border-box;
}
:where(.admin-selector-page) :where(.admin-table-container, .table-container),
:where(.admin-entity-edit-form) :where(.admin-table-container, .table-container) {
  max-width: 100%;
  overflow-x: auto;
}
:where(.admin-tool-success-output, .admin-reload-prompt, .admin-deployment-result) {
  overflow-wrap: anywhere;
  word-break: normal;
}:where(.admin-selector-page, .admin-selector-section) {
  border: var(--admin-border, 1px solid var(--css-color-rgba-0-0-0-16));
  border-radius: var(--admin-radius, .6rem);
  padding: var(--admin-space-md, .75rem);
  margin: var(--admin-space-md, .75rem) 0;
  background: var(--admin-surface, var(--color-white));
}
:where(.admin-entity-edit-form, .admin-confirmation-form) :where(input:not([type='checkbox']):not([type='radio']):not([type='hidden']), select, textarea) {
  border-radius: var(--admin-input-radius, .45rem);
  max-width: 100%;
  box-sizing: border-box;
  font: inherit;
}
:where(.admin-entity-edit-form) :where(th, td),
:where(.admin-selector-page) :where(th, td) {
  overflow-wrap: anywhere;
  word-break: normal;
  vertical-align: top;
}
:where(.admin-confirmation-form) .admin-confirmation-phrase code,
:where(.admin-danger-action-notice) code {
  font-weight: 700;
}
:where(.admin-tool-success-output, .admin-generated-output, .admin-result-output, .admin-log-output) {
  border-radius: var(--admin-radius, .6rem);
  max-width: 100%;
  overflow-x: auto;
  overflow-wrap: anywhere;
  word-break: normal;
  box-sizing: border-box;
}
:where(.admin-output-link, .admin-path-value, .admin-file-name, .admin-route-value) {
  overflow-wrap: anywhere;
  word-break: normal;
}
:where(.admin-css-removal-dry-run, .admin-dead-rule-dry-run) {
  border: var(--admin-border, 1px solid var(--css-color-rgba-0-0-0-16));
  border-radius: var(--admin-radius, .6rem);
  padding: var(--admin-space-md, .75rem);
  background: var(--admin-muted-surface, var(--css-color-rgba-0-0-0-03));
}


/* ADDED v2026-05-20.542-551: Admin CSS normalization checkpoint 9 refinements. */
:where(.admin-page-container,.admin-action-shell,.admin-tool-page,.admin-development-container,.admin-diagnostics-container) :where(.admin-selector-page,.admin-selector-section,.admin-entity-edit-form,.admin-confirmation-form,.admin-generated-output,.admin-result-output) {
    max-width: 100%;
    box-sizing: border-box;
}
:where(.admin-page-container,.admin-action-shell,.admin-tool-page) :where(.admin-selector-page,.admin-selector-section) {
    border: var(--admin-standard-border, 1px solid var(--border-color, var(--css-color-ddd)));
    border-radius: var(--admin-radius-lg, 12px);
    padding: var(--admin-spacing-md, 1rem);
    margin: var(--admin-spacing-md, 1rem) 0;
    background: var(--panel-bg, var(--color-white));
}
:where(.admin-page-container,.admin-action-shell,.admin-tool-page) :where(.admin-entity-edit-form,.admin-confirmation-form) {
    display: block;
    width: 100%;
}
:where(.admin-page-container,.admin-action-shell,.admin-tool-page) :where(.admin-entity-edit-form .admin-action-row,.admin-confirmation-form .admin-action-row,.admin-success-reload-prompt,.admin-generated-links,.admin-report-links) {
    display: flex;
    flex-wrap: wrap;
    gap: var(--admin-spacing-sm, .5rem);
    align-items: center;
}
:where(.admin-page-container,.admin-action-shell,.admin-tool-page) :where(.admin-generated-output,.admin-result-output,.admin-log-output,.admin-report-output,.admin-json-output,.admin-sql-output) {
    overflow-x: auto;
    overflow-wrap: anywhere;
    word-break: normal;
    max-width: 100%;
    border-radius: var(--admin-radius-md, 8px);
}
:where(.admin-page-container,.admin-action-shell,.admin-tool-page) :where(.admin-confirmation-phrase strong code) {
    font-weight: 700;
}
:where(.admin-page-container,.admin-action-shell,.admin-tool-page) :where(.admin-generated-link,.admin-download-link,.admin-report-link,.admin-file-link) {
    overflow-wrap: anywhere;
    word-break: normal;
}:where(.admin-sensitive-action-form) {
  border: var(--admin-standard-border, 1px solid var(--border-color, var(--css-color-ddd)));
  border-radius: var(--admin-radius-lg, 12px);
  padding: var(--admin-spacing-md, 1rem);
  background: var(--panel-bg, var(--color-white));
  max-width: 100%;
  box-sizing: border-box;
}
:where(.admin-unzip-action-form) {
  border-left: 4px solid var(--warning-border, var(--css-color-b76e00));
}
:where(.admin-delete-zip-action-form) {
  border-left: 4px solid var(--danger-border, var(--css-color-b00020));
  background: var(--admin-danger-surface, var(--css-color-rgba-176-0-32-035));
}
:where(.admin-button-secondary-danger) {
  border: 1px solid var(--danger-border, var(--css-color-b00020));
  color: var(--danger-text, var(--css-color-7a0016));
  background: var(--color-transparent);
  border-radius: var(--admin-input-radius, .45rem);
  min-height: 2.25rem;
  padding: .45rem .75rem;
  cursor: pointer;
}
:where(.admin-button-secondary-danger:hover, .admin-button-secondary-danger:focus-visible) {
  background: var(--admin-danger-surface, var(--css-color-rgba-176-0-32-08));
}:where(.admin-form-section, .admin-tool-form-section, .admin-confirmation-section, .admin-result-section) {
  border-radius: var(--admin-radius-lg, 12px);
  max-width: 100%;
  box-sizing: border-box;
}
:where(.admin-sensitive-tool-page) :where(.admin-action-row, .admin-danger-action-row, .admin-result-actions) {
  display: flex;
  flex-wrap: wrap;
  gap: var(--admin-spacing-sm, .5rem);
  align-items: center;
}
:where(.admin-tool-result, .admin-action-result, .admin-generated-output, .admin-result-output, .admin-log-output) {
  overflow-wrap: anywhere;
  word-break: normal;
  max-width: 100%;
  box-sizing: border-box;
}
:where(.admin-entity-selector, .admin-entity-selector-section, .admin-entity-management-page) {
  max-width: 100%;
  box-sizing: border-box;
}
:where(.admin-delete-action, .admin-archive-action, .admin-restore-action, .admin-deploy-action) {
  white-space: normal;
}
@media (max-width: 700px) {
  :where(.admin-sensitive-action-form) { padding: var(--admin-spacing-sm, .75rem); }
  :where(.admin-sensitive-tool-page) :where(.admin-action-row, .admin-danger-action-row) { align-items: stretch; }
  :where(.admin-sensitive-tool-page) :where(button, .admin-button) { width: 100%; }
}

/* Phase 4 Steps 564-573 / 574-583: admin alert, deployment, retention, and file-reorg UI normalization. */
:where(.admin-swal-contract, .admin-alert-contract, .admin-modal-contract) {
  max-width: 100%;
  box-sizing: border-box;
}:where(.admin-button-delete-zip, .admin-button-archive-root-shim) {
  white-space: normal;
}
:where(.admin-result-message, .admin-tool-result-message, .admin-delete-only-result, .admin-retention-result) {
  overflow-wrap: anywhere;
  word-break: normal;
  border-radius: var(--admin-radius-md, 8px);
}


/* ADDED v2026-05-20.584-593: Admin CSS normalization checkpoint 12. */
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.admin-report-shell,.admin-action-shell,.admin-tool-page) .admin-form-errors,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.admin-report-shell,.admin-action-shell,.admin-tool-page) .admin-form-warnings,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.admin-report-shell,.admin-action-shell,.admin-tool-page) .admin-form-info {
    display:block;
    margin: var(--admin-space-sm, 0.5rem) 0 var(--admin-space-md, 0.75rem);
    padding: var(--admin-space-sm, 0.5rem) var(--admin-space-md, 0.75rem);
    border-radius: var(--admin-radius-md, 0.5rem);
    overflow-wrap:anywhere;
}
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.admin-report-shell,.admin-action-shell,.admin-tool-page) .admin-form-errors { border:1px solid var(--error-color,var(--css-color-b00020)); background:var(--error-bg,var(--css-color-fff0f0)); }
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.admin-report-shell,.admin-action-shell,.admin-tool-page) .admin-form-warnings { border:1px solid var(--warning-color,var(--css-color-9a6700)); background:var(--warning-bg,var(--css-color-fff8e5)); }
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.admin-report-shell,.admin-action-shell,.admin-tool-page) .admin-form-info { border:1px solid var(--info-color,var(--css-color-2f6f9f)); background:var(--info-bg,var(--css-color-eef7ff)); }
:where(.admin-sensitive-action,.admin-sensitive-action-form,.admin-confirmation-form,.admin-archive-action,.admin-restore-action,.admin-delete-action,.admin-deploy-action) { max-width:100%; overflow-wrap:anywhere; }
:where(.admin-sensitive-action-row,.admin-danger-action-row,.admin-confirmation-actions,.admin-tool-action-row) { display:flex; flex-wrap:wrap; gap:var(--admin-space-sm,0.5rem); align-items:center; margin-top:var(--admin-space-sm,0.5rem); }
:where(.admin-generated-output,.admin-result-output,.admin-log-output,.admin-report-output,.admin-route-output,.admin-sql-output,.admin-json-output) { max-width:100%; overflow-x:auto; overflow-wrap:anywhere; border-radius:var(--admin-radius-md,0.5rem); }
:where(.admin-generated-link,.admin-report-link,.admin-download-link,.admin-log-link,.admin-manifest-link) { overflow-wrap:anywhere; word-break:break-word; }
:where(.admin-swal-contract-note,.admin-modal-contract-note) { font-size:0.95em; color:var(--muted-text,var(--css-color-555)); overflow-wrap:anywhere; }
/* ADDED v2026-05-20.604-613: Admin CSS normalization checkpoint 13 contracts. */
:where(.admin-form-errors,.admin-form-warnings,.admin-form-info){
  border:var(--admin-standard-border,1px solid var(--css-color-d0d7de));
  border-radius:var(--admin-radius,8px);
  padding:var(--admin-space-3,.75rem);
  margin:var(--admin-space-3,.75rem) 0;
  overflow-wrap:anywhere;
}
:where(.admin-form-errors){border-color:var(--danger,var(--css-color-b00020));}
:where(.admin-form-warnings){border-color:var(--warning,var(--css-color-b26b00));}
:where(.admin-form-info){border-color:var(--info,var(--css-color-1f6feb));}
:where(.admin-sensitive-action-copy,.admin-sensitive-action-copy strong){overflow-wrap:anywhere;}
:where(.admin-root-shim-action-table td,.admin-root-shim-action-table th){vertical-align:top;}
:where(.admin-route-qa-checklist li,.admin-visual-qa-checklist li){overflow-wrap:anywhere;}

/* ADDED v2026-05-20.614-623: File reorg admin UI polish. */
:where(.admin-root-shim-classification-form,.admin-root-shim-archive-form,.admin-root-shim-restore-form){
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  align-items:center;
}
:where(.admin-root-shim-classification-form input[type="text"]){min-width:min(28rem,100%);}
:where(.admin-root-policy-warning){border-left:4px solid var(--warning,var(--css-color-b26b00));}/* ADDED v2026-05-20.624: Hierarchical Development / Testing admin navigation. */
.admin-development-hierarchical-nav {
    align-items: stretch;
    gap: var(--space-sm, 0.5rem);
}
.admin-development-hierarchical-nav .admin-nav-category {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs, 0.35rem);
    min-width: min(18rem, 100%);
    max-width: 100%;
    padding: var(--space-xs, 0.35rem);
    border: 1px solid var(--border-color, var(--css-color-d7dce2));
    border-radius: var(--radius-md, 0.6rem);
    background: var(--surface-muted, var(--css-color-rgba-255-255-255-0-55));
}
.admin-nav-category-label {
    display: block;
    font-weight: 700;
    line-height: 1.25;
    white-space: normal;
    overflow-wrap: anywhere;
}
.admin-nav-section-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-2xs, 0.25rem);
}
.admin-nav-section-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2xs, 0.25rem);
    min-width: 0;
}
.admin-development-hierarchy-page {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg, 1rem);
}
.admin-development-category {
    border: 1px solid var(--border-color, var(--css-color-d7dce2));
    border-radius: var(--radius-lg, 0.8rem);
    padding: var(--space-md, 0.75rem);
    background: var(--surface-color, var(--color-white));
}
.admin-development-category > h3,
.admin-development-section > h4 {
    margin-top: 0;
}
.admin-development-section {
    margin-top: var(--space-md, 0.75rem);
}
.admin-development-card-grid {
    margin-top: var(--space-xs, 0.35rem);
}
@media (max-width: 720px) {
    .admin-development-hierarchical-nav .admin-nav-category,
    .admin-development-category {
        min-width: 100%;
    }
}

/* PHASE4 STEP634-643: Admin formatting contract finalization */
.admin-page-container details,
.admin-dashboard-container details,
.admin-development-container details,
.admin-diagnostics-container details,
.diagnostics-container details,
.admin-report-shell details {
    border-radius: var(--admin-radius, 8px);
}
.admin-health-details.admin-section-outline-error > summary,
.admin-health-details.has-error > summary,
details.has-error > summary {
    border-color: var(--admin-error-border, var(--css-color-b42318));
    background: var(--admin-error-bg, var(--css-color-fff1f0));
    color: var(--admin-error-text, var(--css-color-7a271a));
}
.admin-health-details.admin-section-outline-warning > summary,
.admin-health-details.has-warning > summary,
details.has-warning > summary {
    border-color: var(--admin-warning-border, var(--css-color-b54708));
    background: var(--admin-warning-bg, var(--css-color-fff8e6));
    color: var(--admin-warning-text, var(--css-color-7a3b00));
}
.admin-health-details.admin-section-outline-info > summary,
.admin-health-details.has-info > summary,
details.has-info > summary {
    border-color: var(--admin-info-border, var(--css-color-175cd3));
    background: var(--admin-info-bg, var(--css-color-eff8ff));
    color: var(--admin-info-text, var(--css-color-1849a9));
}
.admin-health-details.admin-section-outline-none,
.admin-health-details.admin-section-outline-none > summary,
details.admin-section-outline-none > summary {
    border-color: var(--admin-border, var(--css-color-d0d5dd));
    background: inherit;
    color: inherit;
    box-shadow: none;
}
.admin-page-container .table-container,
.admin-dashboard-container .table-container,
.admin-development-container .table-container,
.admin-diagnostics-container .table-container,
.diagnostics-container .table-container,
.admin-report-shell .table-container,
.admin-page-container .admin-table-container,
.admin-dashboard-container .admin-table-container,
.admin-development-container .admin-table-container,
.admin-diagnostics-container .admin-table-container,
.diagnostics-container .admin-table-container,
.admin-report-shell .admin-table-container {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    box-sizing: border-box;
}
.admin-page-container table,
.admin-dashboard-container table,
.admin-development-container table,
.admin-diagnostics-container table,
.diagnostics-container table,
.admin-report-shell table,
table.admin-table {
    table-layout: auto;
    width: max-content;
    min-width: 100%;
    max-width: none;
    border-collapse: collapse;
}
.admin-page-container th,
.admin-dashboard-container th,
.admin-development-container th,
.admin-diagnostics-container th,
.diagnostics-container th,
.admin-report-shell th,
table.admin-table th {
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}
.admin-page-container td,
.admin-dashboard-container td,
.admin-development-container td,
.admin-diagnostics-container td,
.diagnostics-container td,
.admin-report-shell td,
table.admin-table td {
    max-width: min(42rem, 70vw);
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    vertical-align: top;
    box-sizing: border-box;
}
.admin-page-container input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.admin-page-container select,
.admin-page-container textarea,
.admin-dashboard-container input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.admin-dashboard-container select,
.admin-dashboard-container textarea,
.admin-development-container input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.admin-development-container select,
.admin-development-container textarea,
.admin-diagnostics-container input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.admin-diagnostics-container select,
.admin-diagnostics-container textarea,
.diagnostics-container input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.diagnostics-container select,
.diagnostics-container textarea,
.admin-report-shell input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.admin-report-shell select,
.admin-report-shell textarea {
    border-radius: var(--admin-input-radius, 8px);
}
.admin-table .status-error, .admin-table .error, .admin-table tr.error, .admin-table td.error, .admin-table .severity-error {
    background: var(--admin-error-bg, var(--css-color-fff1f0));
    color: var(--admin-error-text, var(--css-color-7a271a));
}
.admin-table .status-warning, .admin-table .warning, .admin-table tr.warning, .admin-table td.warning, .admin-table .severity-warning {
    background: var(--admin-warning-bg, var(--css-color-fff8e6));
    color: var(--admin-warning-text, var(--css-color-7a3b00));
}
.admin-table .status-info, .admin-table .info, .admin-table tr.info, .admin-table td.info, .admin-table .severity-info {
    background: var(--admin-info-bg, var(--css-color-eff8ff));
    color: var(--admin-info-text, var(--css-color-1849a9));
}
.admin-issue-list .admin-error-list,
.admin-issue-list .admin-warning-list,
.admin-issue-list .admin-info-list {
    margin-block: .5rem;
}

/* PHASE4 STEP644-653: File reorg workflow visual polish */
.admin-root-shim-workflow, .admin-route-qa-checklist, .admin-root-policy-warning {
    border: 1px solid var(--admin-border, var(--css-color-d0d5dd));
    border-radius: var(--admin-radius, 8px);
    padding: 1rem;
    margin: 1rem 0;
    overflow-wrap: anywhere;
}
.admin-root-policy-warning {
    border-color: var(--admin-warning-border, var(--css-color-b54708));
    background: var(--admin-warning-bg, var(--css-color-fff8e6));
}


/* ADDED v2026-05-20.654-663: Admin CSS normalization checkpoint 16.
   Consolidates status summaries, severity rows, section outlines, form controls,
   report cards, buttons, notices, details, and overflow-safe table behavior. */
:root {
  --admin-input-radius: var(--ui-radius-sm, 0.35rem);
  --admin-section-outline-error-border: var(--color-message-error);
  --admin-section-outline-warning-border: var(--color-message-warning);
  --admin-section-outline-info-border: var(--color-link, #2f5d9f);
  --admin-section-outline-none-border: var(--color-table-border);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-status-summary, .admin-report-summary, .admin-health-summary) {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ui-space-2, 0.5rem);
  box-sizing: border-box;
  max-width: 100%;
  margin: 0 0 var(--ui-space-3, 0.75rem) 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-section-outline-error, .has-error) {
  border-color: var(--admin-section-outline-error-border) !important;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-section-outline-warning, .has-warning) {
  border-color: var(--admin-section-outline-warning-border) !important;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-section-outline-info, .has-info) {
  border-color: var(--admin-section-outline-info-border) !important;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-section-outline-none, .has-no-findings) {
  border-color: var(--admin-section-outline-none-border) !important;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) details.admin-section-outline-info > summary,
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) details.has-info > summary {
  background: var(--css-color-rgba-47-93-159-0-10);
  color: var(--color-link, var(--css-color-2f5d9f));
  border-radius: calc(var(--admin-ui-radius, 0.75rem) - 0.2rem);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.severity-error, .status-error, tr.error, .admin-notice-error) {
  background: var(--admin-ui-error-bg, var(--admin-ui-error-bg));
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.severity-warning, .status-warning, tr.warning, .admin-notice-warning) {
  background: var(--admin-ui-warning-bg, var(--admin-ui-warning-bg));
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.severity-info, .status-info, tr.info, .admin-notice-info) {
  background: var(--css-color-rgba-47-93-159-0-08);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(input[type="text"], input[type="number"], input[type="url"], input[type="email"], input[type="password"], input[type="search"], input[type="file"], select, textarea) {
  border-radius: var(--admin-input-radius);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.admin-report-card, .report-card, .admin-card, .dashboard-card) {
  box-sizing: border-box;
  max-width: 100%;
  overflow-wrap: anywhere;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.button-danger, .btn-danger, .admin-action-danger) {
  border-color: var(--color-message-error);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell) :where(.button-warning, .btn-warning, .admin-action-warning) {
  border-color: var(--color-message-warning);
}


/* ADDED v2026-05-20.674-683: Admin CSS normalization checkpoint 17.
   Additive contract layer for admin form rows, filters, report toolbars,
   destructive actions, compact tables, mobile spacing, and shared variables. */
:root {
  --admin-control-gap: var(--ui-space-2, 0.5rem);
  --admin-control-gap-lg: var(--ui-space-3, 0.75rem);
  --admin-card-gap: var(--ui-space-3, 0.75rem);
  --admin-control-border: var(--color-table-border, #d0d5dd);
  --admin-control-bg: var(--color-surface, #fff);
  --admin-muted-text: var(--color-muted, #667085);
  --admin-button-danger-border: var(--color-message-error, #b00020);
  --admin-button-danger-bg: var(--admin-ui-error-bg, #ffe5df);
  --admin-button-warning-border: var(--color-message-warning, #9a6a00);
  --admin-button-warning-bg: var(--admin-ui-warning-bg, #fff8e1);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-form-row, .form-row, .field-row, .input-row, .setting-row, .control-row, .report-form-row, .admin-inline-form) {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--admin-control-gap);
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-form-row, .form-row, .field-row, .input-row, .setting-row, .control-row, .report-form-row, .admin-inline-form) > :where(label, input, select, textarea, button, a, span, code, small) {
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-filter-panel, .admin-filter-bar, .filter-panel, .filter-bar, .filters, .filter-row, .admin-filters, .search-controls, .report-controls) {
  align-items: end;
  background: var(--admin-control-bg);
  border: 1px solid var(--admin-control-border);
  border-radius: var(--admin-ui-radius, 0.75rem);
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--admin-control-gap);
  margin-block: var(--admin-control-gap-lg);
  max-width: 100%;
  min-width: 0;
  padding: var(--admin-control-gap-lg);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-report-toolbar, .report-toolbar, .page-toolbar, .admin-toolbar, .admin-action-row, .page-actions, .report-actions, .form-actions, .action-buttons) {
  align-items: center;
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: var(--admin-control-gap);
  justify-content: flex-start;
  margin-block: var(--admin-control-gap-lg);
  max-width: 100%;
  min-width: 0;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-report-toolbar, .report-toolbar, .page-toolbar, .admin-toolbar, .admin-action-row, .page-actions, .report-actions, .form-actions, .action-buttons) :where(a, button, input[type="submit"], input[type="button"]) {
  max-width: 100%;
  min-width: 0;
  white-space: normal;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-action-danger, .button-danger, .btn-danger, .danger, .delete-button, .archive-button, button[name*="delete"], button[name*="remove"], button[name*="reject"]) {
  background: var(--admin-button-danger-bg);
  border-color: var(--admin-button-danger-border);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-action-warning, .button-warning, .btn-warning, .warning-button, button[name*="void"], button[name*="forfeit"], button[name*="archive"]) {
  background: var(--admin-button-warning-bg);
  border-color: var(--admin-button-warning-border);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-table-compact, .compact-table, table.compact, .admin-table.compact, .diagnostic-table.compact) :where(th, td) {
  padding: clamp(0.25rem, 0.8vw, 0.5rem);
  vertical-align: top;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-muted, .muted, .admin-help-text, small.help, .admin-inline-note) {
  color: var(--admin-muted-text);
}

@media (max-width: 720px) {
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) {
    padding-inline: clamp(0.5rem, 3vw, 1rem);
  }
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-filter-panel, .admin-filter-bar, .filter-panel, .filter-bar, .filters, .filter-row, .admin-filters, .search-controls, .report-controls, .admin-report-toolbar, .report-toolbar, .page-toolbar, .admin-toolbar, .admin-action-row, .page-actions, .report-actions, .form-actions, .action-buttons, .admin-form-row, .form-row, .field-row, .input-row, .setting-row, .control-row, .report-form-row, .admin-inline-form) {
    align-items: stretch;
    gap: var(--admin-control-gap);
  }
  :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-filter-panel, .admin-filter-bar, .filter-panel, .filter-bar, .filters, .filter-row, .admin-filters, .search-controls, .report-controls, .admin-form-row, .form-row, .field-row, .input-row, .setting-row, .control-row, .report-form-row, .admin-inline-form) > :where(input, select, textarea, button, a) {
    flex: 1 1 100%;
  }
}


/* ADDED v2026-05-20.694-704: Admin CSS normalization checkpoint 18.
   Applies the calendar 2+ teams dark-grey outline request and extends shared
   admin input/form/filter/toolbar/button contracts for the next adoption batch. */
:root {
  --calendar-overlap-outline: #4a4a4a;
  --calendar-overlap-outline-dark: #5f6368;
  --admin-control-radius: var(--admin-input-radius, 0.35rem);
  --admin-control-padding-y: 0.32rem;
  --admin-control-padding-x: 0.5rem;
  --admin-table-compact-padding-y: 0.25rem;
  --admin-table-compact-padding-x: 0.4rem;
}

.calendar-overlap::before {
  border-color: var(--calendar-overlap-outline, var(--calendar-overlap-outline));
}

@media (prefers-color-scheme: dark) {
  .calendar-overlap {
    box-shadow:
      inset 0 0 0 1px var(--color-white),
      inset 0 0 0 2px var(--calendar-overlap-outline-dark, var(--calendar-overlap-outline-dark)),
      0 0 4px var(--css-color-rgba-95-99-104-0-65);
  }

  .calendar-overlap::before {
    border-color: var(--calendar-overlap-outline-dark, var(--calendar-overlap-outline-dark));
  }
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-input, .admin-select, .admin-textarea) {
  border: 1px solid var(--admin-control-border, var(--color-table-border));
  border-radius: var(--admin-control-radius);
  box-sizing: border-box;
  max-width: 100%;
  min-width: 0;
  padding: var(--admin-control-padding-y) var(--admin-control-padding-x);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-form, .admin-inline-form) :where(input[type="text"], input[type="number"], input[type="date"], input[type="search"], select, textarea) {
  border-radius: var(--admin-control-radius);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-button-neutral, .admin-button-secondary, .admin-button-warning, .admin-button-danger) {
  border-radius: var(--admin-control-radius);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-button-danger, .admin-action-danger) {
  background: var(--admin-button-danger-bg);
  border-color: var(--admin-button-danger-border);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-button-warning, .admin-action-warning) {
  background: var(--admin-button-warning-bg);
  border-color: var(--admin-button-warning-border);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-table-compact, .compact-table) :where(th, td) {
  padding: var(--admin-table-compact-padding-y) var(--admin-table-compact-padding-x);
}


/** ADDED v2026-05-20.775-784
 *  Profile/photo card and remaining admin form normalization.
 */
.admin-input-uppercase {
    text-transform: uppercase;
}

.admin-people-edit-table-container {
    margin-top: 0.5rem;
}

.profile-photo-card-grid,
.team-profile-member-grid {
    align-items: stretch;
}

.profile-photo-card,
.team-profile-member-card {
    box-sizing: border-box;
}

.team-profile-member-card .profile-initials-avatar-profile {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
}

.team-profile-member-photo-link:focus-visible,
.team-profile-member-name:focus-visible {
    outline: 2px solid var(--admin-focus-outline, var(--css-color-57606a));
    outline-offset: 3px;
    border-radius: 0.375rem;
}

@media (max-width: 420px) {
    .team-profile-member-card {
        gap: 0.625rem;
        padding: 0.625rem;
    }

    .team-profile-member-meta {
        font-size: 0.85rem;
    }
}


/** ADDED v2026-05-20.795-804
 *  Admin CSS checkpoint 23 policy/grouping hooks.
 *  Static layout styling should use shared classes. Dashboard chart inline
 *  styles remain allowed only for data-derived widths, pie gradients, and
 *  swatch colours generated by report helpers.
 */
:root {
    --admin-profile-photo-size: 72px;
    --admin-profile-photo-radius: 999px;
    --admin-report-chrome-gap: 0.75rem;
}

.admin-report-chrome,
.admin-report-toolbar,
.report-actions.admin-report-toolbar {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: var(--admin-report-chrome-gap);
    margin: 0.75rem 0 1rem 0;
}

.admin-profile-photo-normalized,
.profile-photo-card .image-oval,
.team-profile-member-card .image-oval,
.profile-photo-card .profile-initials-avatar-profile,
.team-profile-member-card .profile-initials-avatar-profile {
    border-radius: var(--admin-profile-photo-radius);
}

.admin-chart-inline-policy-note {
    font-size: 0.9rem;
    margin: 0.25rem 0 0.75rem 0;
}

/* Admin CSS grouping checkpoint: forms/buttons/tables/reports/profile cards/calendar/diagnostics are intentionally grouped by nearby section comments rather than moved wholesale, preserving cascade order. */


/** ADDED v2026-05-20.815-824
 *  Player-facing UI/UX normalization checkpoint 24.
 *  Purpose: create a shared public/player page contract for mobile and desktop
 *  without rewriting page-specific business markup in this first pass.
 */
:root {
    --control-text-bg: #f6f8fa;
    --control-text-bg-focus: #e6e8eb;
    --control-text-border: var(--color-table-border, #d0d7de);
    --control-text-border-focus: var(--color-button-bg, #0969da);
    --player-page-max-width: 1180px;
    --player-page-gap: 1rem;
    --player-card-radius: 0.85rem;
    --player-card-border: var(--color-table-border, #d0d7de);
    --player-card-bg: var(--color-section-bg, rgba(255,255,255,0.82));
    --player-card-shadow: 0 1px 2px rgba(27,31,36,0.05);
    --player-touch-target-min: 44px;
}

/* Subtle text-control background requested for forms. Excludes checkboxes, radios,
   hidden fields, buttons, and submit controls so score/buttons retain existing UI. */
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]),
textarea,
select {
    background-color: var(--control-text-bg);
    border-color: var(--control-text-border);
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus,
textarea:focus,
select:focus {
    background-color: var(--control-text-bg-focus);
    border-color: var(--control-text-border-focus);
    box-shadow: 0 0 0 2px var(--css-color-rgba-9-105-218-0-12);
}

.page-title {
    line-height: 1.2;
    margin-bottom: 0.35rem;
    overflow-wrap: anywhere;
}



.player-page-container {
    max-width: var(--player-page-max-width);
    margin-inline: auto;
    padding: 0.25rem 0.25rem 1.25rem;
}

.player-page-container h3,
.player-page-container h4 {
    line-height: 1.3;
    margin-block: 0.85rem 0.55rem;
}

.player-page-container :where(.table-container, .stats-table-container) {
    margin-block: 0.75rem;
}

.player-page-container :where(table:not(.table-calendar)) {
    border-collapse: collapse;
    max-width: 100%;
}

.player-page-container :where(th, td) {
    overflow-wrap: anywhere;
}

.player-page-container :where(a, button, input, select, textarea) {
    scroll-margin-top: 0.75rem;
}

.player-page-container :where(button, input[type="submit"], .button, .btn, .action-button) {
    min-height: var(--player-touch-target-min);
}

.player-section-card,
.player-card,
.team-profile-section,
.profile-photo-card,
.team-profile-member-card,
.donation-form,
.feedback-form {
    border: 1px solid var(--player-card-border);
    border-radius: var(--player-card-radius);
    background: var(--player-card-bg);
    box-shadow: var(--player-card-shadow);
}

.team-profile-section,
.profile-photo-card,
.donation-form,
.feedback-form {
    padding: 0.85rem;
}

.player-action-row,
.player-toolbar,
.player-filter-row,
.player-page-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.55rem 0.75rem;
}

.player-page-container :where(.small-link, .team-profile-link) {
    display: inline-flex;
    align-items: center;
    min-height: 32px;
}

.calendar-container {
    max-width: 100%;
}

.calendar-container .table-calendar {
    width: max-content;
    min-width: 100%;
}

.calendar-container .calendar-team-legend {
    align-items: stretch;
    gap: 0;
    margin-bottom: 0.6rem;
}



.teams-container,
.players-container,
.stats-container,
.team-profile-container,
.calendar-container,
.donations-container,
.feedback-container {
    container-type: inline-size;
}

.team-profile-member-grid {
    width: 100%;
}

@container (max-width: 620px) {
    .team-profile-member-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    :root {
        --player-page-gap: 0.75rem;
    }

    .page-title {
        font-size: clamp(1.25rem, 5.6vw, 1.75rem);
    }

    .player-page-container {
        padding-inline: 0.15rem;
    }

    .player-page-container :where(th, td) {
        padding: 0.42rem 0.5rem;
    }

    .player-page-container :where(button, input[type="submit"], select) {
        width: 100%;
    }

    .player-action-row,
    .player-toolbar,
    .player-filter-row,
    .player-page-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .calendar-container .table-calendar {
        font-size: 0.92rem;
    }

    .calendar-container .calendar-team-legend-line {
        width: 100%;
    }
}

@media (prefers-color-scheme: dark) {
    :root {
        --control-text-bg: #1f242b;
        --control-text-bg-focus: #0d1117;
        --control-text-border: #3d444d;
        --player-card-border: #3d444d;
        --player-card-bg: rgba(22,27,34,0.76);
        --player-card-shadow: none;
        --player-muted-text: #9aa4af;
    }
}

/* UI/UX benchmark note: player-facing pages should prioritize readable hierarchy,
   consistent touch targets, contained horizontal overflow, reusable cards, and
   focus-visible controls on both mobile and desktop. */

.profile-summary-table-left {
    margin-left: 0;
    margin-right: auto;
    text-align: left;
}

.feedback-form-table-container,
.feedback-recent-table-container,
.eligible-subs-table-container,
.team-availability-table-container {
    margin-block: 0.5rem;
}

/** ADDED v2026-05-20.835-864
 *  Checkpoint 25 / player-facing checkpoint 25.
 *  Purpose: maintain a clear admin/player CSS boundary while applying the
 *  shared player-facing layout contract to more public pages.
 */
:root {
    --player-section-padding: 0.9rem;
    --player-section-gap: 0.85rem;
    --player-toolbar-gap: 0.55rem;
    --player-card-border-strong: color-mix(in srgb, var(--player-card-border) 72%, #000 8%);
}

.ui-surface-admin .player-section-card,
.ui-surface-admin .player-card,
.admin-page-container .player-section-card,
.admin-page-container .player-card {
    /* Boundary guard: player-facing card classes should not alter admin density. */
    box-shadow: none;
}

.admin-page-container :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select) {
    background-color: var(--control-text-bg);
}

.admin-page-container :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]), textarea, select):focus {
    background-color: var(--control-text-bg-focus);
}

.player-page-container :where(.divborder.player-section-card, .player-section-card, .player-card) {
    padding: var(--player-section-padding);
    margin-block: var(--player-section-gap);
}

.player-page-container :where(.divborder.player-section-card) {
    border-color: var(--player-card-border);
    background: var(--player-card-bg);
}

.player-page-container :where(details.team-profile-section, details.stats-details, details.admin-section, details.approvals-exclusive-details) {
    border: 1px solid var(--player-card-border);
    border-radius: var(--player-card-radius);
    background: var(--player-card-bg);
    padding: 0.65rem 0.8rem;
    margin-block: 0.75rem;
}

.player-page-container :where(details.team-profile-section, details.stats-details, details.admin-section, details.approvals-exclusive-details) > summary {
    cursor: pointer;
    font-weight: 650;
    min-height: 34px;
    align-content: center;
}

.season-select-list form {
    display: flex;
    flex-wrap: wrap;
    gap: var(--player-toolbar-gap);
}

.season-select-button {
    min-height: var(--player-touch-target-min);
}

.player-page-container :where(.feedback-submit-button, .stats-advanced-toggle, .primary-button, .season-select-button, button[type="submit"]) {
    min-height: var(--player-touch-target-min);
}

.player-page-container :where(.profile-summary-wrap, .team-profile-member-grid, .stats-progress-grid) {
    gap: var(--player-section-gap);
}

.player-page-container :where(.profile-summary-table, .stats-table, .remaining-matches-table, .team-insight-table, .round-trends-table) th {
    white-space: normal;
}

.player-page-container :where(.profile-summary-table, .stats-table, .remaining-matches-table, .team-insight-table, .round-trends-table) td {
    vertical-align: middle;
}

.player-page-container :where(.info, .warning, .error, .success) {
    border-radius: var(--player-card-radius);
    margin-block: 0.65rem;
}

.calendar-container .calendar-team-legend,
.teams-container .stats-table-container,
.players-container .stats-table-container,
.stats-container .stats-table-container,
.matches-container .match-pool-container {
    max-width: 100%;
}

@media (max-width: 768px) {
    .player-page-container :where(.divborder.player-section-card, .player-section-card, .player-card) {
        padding: 0.75rem;
    }


    }

    .season-select-list form,
    .season-select-list button {
        width: 100%;
    }

    .player-page-container :where(details.team-profile-section, details.stats-details, details.admin-section, details.approvals-exclusive-details) {
        padding: 0.55rem 0.65rem;
    }


/** ADDED v2026-05-20.865
 *  Admin desktop and player mobile optimization pass.
 *  Purpose: improve scan density and workstation layouts for admin pages while
 *  keeping player-facing pages thumb-friendly and single-column on mobile.
 */
:root {
    --admin-desktop-content-max: 1480px;
    --admin-desktop-card-gap: 1rem;
    --admin-desktop-section-padding: 1rem;
    --player-mobile-side-padding: 0.5rem;
    --player-mobile-card-padding: 0.7rem;
}

nav .nav-approval-count {
    min-width: 1.45em;
    text-align: center;
}

.admin-dashboard-error-warning-summary {
    margin-block: 0.75rem;
}

.admin-dashboard-error-warning-table td,
.admin-dashboard-error-warning-table th {
    vertical-align: top;
}

.admin-dashboard-error-warning-table .dashboard-status-blocked td:first-child {
    color: var(--css-color-8a1f11);
}

.admin-dashboard-error-warning-table .dashboard-status-warning td:first-child {
    color: var(--css-color-5f4b00);
}

@media (min-width: 1024px) {
    .admin-page-container,
    .admin-dashboard-container,
    .admin-tool-page,
    .admin-report-chrome {
        max-width: var(--admin-desktop-content-max);
        margin-left: auto;
        margin-right: auto;
    }

    .admin-dashboard-container .dashboard-overview,
    .admin-page-container .admin-section,
    .admin-page-container .admin-tool-section,
    .admin-page-container .admin-generated-output-section,
    .admin-report-chrome,
    .admin-tool-page {
        padding: var(--admin-desktop-section-padding);
    }

    .admin-dashboard-container .dashboard-card-grid,
    .admin-card-grid,
    .admin-overview-card-grid,
    .admin-report-card-grid {
        gap: var(--admin-desktop-card-gap);
    }

    .admin-page-container .admin-action-row,
    .admin-page-container .admin-report-toolbar,
    .admin-page-container .admin-filter-row,
    .admin-page-container .admin-toolbar {
        align-items: center;
        flex-direction: row;
        flex-wrap: wrap;
        gap: 0.65rem;
    }

    .admin-page-container .table-container,
    .admin-dashboard-container .table-container,
    .admin-tool-page .table-container {
        overflow-x: auto;
        scrollbar-gutter: stable both-edges;
    }

    .admin-page-container table.admin-table,
    .admin-dashboard-container table.admin-dashboard-table,
    .admin-tool-page table.admin-table {
        font-size: 0.95rem;
    }
}

@media (max-width: 768px) {
    .player-page-container {
        padding-left: var(--player-mobile-side-padding);
        padding-right: var(--player-mobile-side-padding);
    }

    .player-page-container :where(.player-section-card, .player-card, .divborder.player-section-card, details.team-profile-section, details.stats-details, details.approvals-exclusive-details) {
        padding: var(--player-mobile-card-padding);
        margin-block: 0.65rem;
    }

    .player-page-container :where(.page-title, h1, h2, h3) {
        line-height: 1.18;
        text-wrap: balance;
    }


    }

    .player-page-container :where(a.button-link, .button-link, button, input[type="submit"], input[type="button"], select) {
        min-height: var(--player-touch-target-min);
    }

    .player-page-container :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), textarea, select) {
        width: 100%;
        max-width: 100%;
        font-size: 16px;
    }

    .player-page-container :where(.table-container, .table-wrap, .stats-table-container, .calendar-table-wrap) {
        max-width: 100%;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .player-page-container :where(th, td) {
        line-height: 1.25;
    }

    .calendar-container .calendar-team-legend-line,
    .team-profile-member-card,
    .player-profile-card,
    .profile-summary-wrap > * {
        min-width: 0;
    }


@media (prefers-color-scheme: dark) {
    .admin-dashboard-error-warning-table .dashboard-status-blocked td:first-child {
        color: var(--css-color-ffb4a8);
    }

    .admin-dashboard-error-warning-table .dashboard-status-warning td:first-child {
        color: var(--css-color-ead678);
    }
}

/** ADDED v2026-05-20.866
 * Active text-entry field highlight.
 * Keeps idle text inputs subtly grey and focused/active text-entry fields a
 * slightly stronger light grey instead of a stark white flash.
 */
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus,
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus-visible,
textarea:focus,
textarea:focus-visible,
select:focus,
select:focus-visible {
    background-color: var(--css-color-eef1f4);
    border-color: var(--css-color-7f8a96);
    box-shadow: 0 0 0 2px var(--css-color-rgba-127-138-150-0-16);

}

/** ADDED v2026-05-20.866
 * Sysadmin donation-management layout.
 */
.admin-donations-container .admin-action-shell,
.admin-donations-container .admin-page-container {
    max-width: 1440px;
}

.admin-donation-summary-grid {
    grid-template-columns: repeat(3, minmax(160px, 1fr));
}

.admin-donation-form .admin-form-grid {
    display: grid;
    grid-template-columns: minmax(220px, 1.5fr) minmax(140px, 0.7fr) minmax(190px, 1fr);
    gap: 12px;
    align-items: end;
}

.admin-donations-table select,
.admin-donations-table input[type="number"],
.admin-donations-table input[type="datetime-local"] {
    min-width: 150px;
    width: 100%;
}

.admin-donations-table .admin-donation-inline-form {
    display: contents;
}

@media (max-width: 720px) {
    .admin-donation-summary-grid,
    .admin-donation-form .admin-form-grid {
        grid-template-columns: 1fr;
    }

    .admin-donations-table select,
    .admin-donations-table input[type="number"],
    .admin-donations-table input[type="datetime-local"] {
        min-width: 180px;
    }
}


/** ADDED v2026-05-20.895-914
 * Admin desktop and player-mobile normalization checkpoint 26.
 * Purpose: keep donation/admin operation pages dense on desktop, keep player
 * facing forms touch-friendly on mobile, and make focused text-entry controls
 * subtly light grey without changing checkbox/radio/button controls.
 */
:root {
    --control-active-bg: #e6e8eb;
    --control-active-border: #8b96a3;
    --control-active-shadow: rgba(139, 150, 163, 0.16);
    --admin-table-cell-pad-y-desktop: 0.42rem;
    --admin-table-cell-pad-x-desktop: 0.58rem;
    --player-mobile-field-gap: 0.55rem;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus,
input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="button"]):not([type="submit"]):not([type="reset"]):focus-visible,
textarea:focus,
textarea:focus-visible,
select:focus,
select:focus-visible {
    background-color: var(--control-active-bg);
    border-color: var(--control-active-border);
    box-shadow: 0 0 0 2px var(--control-active-shadow);
    outline: none;
}

.admin-donations-container .admin-action-shell {
    display: grid;
    gap: 1rem;
}

.admin-donation-summary,
.admin-donation-add-card,
.admin-donation-list-card {
    margin-block: 0;
}

.admin-donation-summary-grid .admin-dashboard-warning-card,
.admin-summary-card {
    min-height: 4.25rem;
}

.admin-donation-form label,
.admin-inline-edit-form label,
.admin-form-grid label {
    display: grid;
    gap: 0.28rem;
}

.admin-donations-table td:last-child,
.admin-donations-table th:last-child {
    text-align: right;
    white-space: nowrap;
}

.admin-donations-table .admin-button {
    min-height: 2.15rem;
}

@media (min-width: 1024px) {
    .admin-page-container .admin-section-card,
    .admin-action-shell .admin-section-card,
    .admin-dashboard-error-warning-summary {
        padding: 1rem;
    }

    .admin-page-container :where(table.admin-table, table.admin-dashboard-table) th,
    .admin-page-container :where(table.admin-table, table.admin-dashboard-table) td,
    .admin-action-shell :where(table.admin-table, table.admin-dashboard-table) th,
    .admin-action-shell :where(table.admin-table, table.admin-dashboard-table) td {
        padding: var(--admin-table-cell-pad-y-desktop) var(--admin-table-cell-pad-x-desktop);
    }

    .admin-donation-form .admin-form-grid {
        grid-template-columns: minmax(260px, 1.6fr) minmax(150px, 0.65fr) minmax(220px, 0.9fr);
    }

    .admin-donations-table {
        table-layout: auto;
    }
}



    .player-page-container :where(label, .form-row, .player-form-row) {
        display: grid;
        gap: 0.35rem;
    }

    .player-page-container :where(button, .button-link, input[type="submit"], input[type="button"]) {
        width: 100%;
        justify-content: center;
        text-align: center;
    }

    .player-page-container :where(.admin-notice, .notice, .status-box, .workflow-status-box) {
        overflow-wrap: anywhere;
    }



@media (prefers-color-scheme: dark) {
    :root {
        --control-active-bg: #20252b;
        --control-active-border: #87919d;
        --control-active-shadow: rgba(135, 145, 157, 0.24);
    }


    }

.admin-dashboard-badge-breakdown p {
    margin: 0 0 0.75rem;
}
.admin-dashboard-badge-breakdown-table th.num,
.admin-dashboard-badge-breakdown-table td.num {
    text-align: right;
    white-space: nowrap;
}
.admin-dashboard-badge-total-row td {
    border-top: 2px solid var(--admin-border-color, var(--css-color-d7d7d7));
}
@media (max-width: 640px) {
    .admin-dashboard-badge-breakdown {
        padding: 0.75rem;
    }
    .admin-dashboard-badge-breakdown-table th,
    .admin-dashboard-badge-breakdown-table td {
        white-space: normal;
    }
}

/** ADDED v2026-05-20.955-964
 * Admin Dashboard badge-breakdown and report-chrome stabilization checkpoint 28.
 */
:root {
    --admin-dashboard-breakdown-bg: #f6f7f8;
    --admin-dashboard-breakdown-border: #d9dee4;
    --admin-dashboard-breakdown-accent: #4f5965;
}

.admin-dashboard-badge-breakdown {
    border: 1px solid var(--admin-dashboard-breakdown-border);
    border-left: 4px solid var(--admin-dashboard-breakdown-accent);
    border-radius: var(--admin-card-radius, 10px);
    background: var(--admin-dashboard-breakdown-bg);
}

.admin-dashboard-badge-breakdown-table-container {
    margin-top: 0.5rem;
}

.admin-dashboard-badge-breakdown-table th,
.admin-dashboard-badge-breakdown-table td {
    vertical-align: top;
}

.admin-report-chrome,
.admin-report-toolbar,
.admin-dashboard-error-warning-summary,
.admin-dashboard-badge-breakdown {
    overflow-wrap: anywhere;
}

.nav-approval-count {
    line-height: 1;
    min-width: 1.35em;
    text-align: center;
}

@media (min-width: 1024px) {
    .admin-dashboard-badge-breakdown-table {
        table-layout: auto;
    }
    .admin-dashboard-badge-breakdown-table td:nth-child(3) {
        max-width: 46rem;
    }
}

@media (max-width: 640px) {
    .admin-dashboard-badge-breakdown-table-container {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
    .admin-dashboard-badge-breakdown-table {
        min-width: 560px;
    }
}

@media (prefers-color-scheme: dark) {
    :root {
        --admin-dashboard-breakdown-bg: #1b2026;
        --admin-dashboard-breakdown-border: #39414a;
        --admin-dashboard-breakdown-accent: #7c8794;
    }
}

/** ADDED v2026-05-20.965-974
 * Player-facing mobile refinement checkpoint 28.
 */
@media (max-width: 768px) {
    .player-page-container :where(.player-action-row, .player-toolbar, .player-filter-row, .player-page-actions) {
        display: grid;
        grid-template-columns: 1fr;
        gap: 0.55rem;
        align-items: stretch;
    }

    .player-page-container :where(.player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend) {
        border-radius: 10px;
    }

    .player-page-container :where(.calendar-team-legend-row, .calendar-team-row, .team-row, .player-row) {
        gap: 0.35rem;
        overflow-wrap: anywhere;
    }

    .player-page-container :where(input, textarea, select) {
        max-width: 100%;
    }

    .player-page-container :where(.table-container, .responsive-table-wrap, .calendar-table-wrap) {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .player-page-container :where(.workflow-status-box, .match-status-box, .approval-status-box) {
        padding: 0.7rem;
    }
}

@media (max-width: 480px) {
    .player-page-container :where(.page-title, h1) {
        font-size: clamp(1.35rem, 8vw, 1.8rem);
        line-height: 1.12;
    }

    .player-page-container :where(.team-profile-member-grid, .player-card-grid, .stats-card-grid) {
        grid-template-columns: 1fr;
    }


    }



/** ADDED v2026-05-20.1045-1064
 *  Palette regression polish after semantic colour normalization.
 *  Do not alter .c1-.c8 calendar player identity colours: those colours are
 *  intentionally paired as dark/light teammates for calendar contrast.
 */
:root {
    /* Harmonized semantic component aliases */
    --admin-notice-radius: 0.55rem;
    --admin-notice-padding: 0.65rem 0.8rem;
    --admin-table-hover-bg: #f9fafb;
    --admin-button-secondary-bg: #f6f8fa;
    --admin-button-secondary-border: #d0d7de;
    --admin-button-secondary-text: #24292f;
    --admin-badge-bg: #eef1f4;
    --admin-badge-text: #24292f;
    --admin-badge-warning-bg: var(--color-warning-bg);
    --admin-badge-warning-text: var(--color-warning-text);
    --admin-badge-danger-bg: var(--color-danger-bg);
    --admin-badge-danger-text: var(--color-danger-text);
    --player-action-secondary-bg: var(--color-surface-muted);
    --player-action-secondary-border: var(--color-border-subtle);
    --player-status-success-bg: var(--color-success-bg);
    --player-status-warning-bg: var(--color-warning-bg);
    --player-status-danger-bg: var(--color-danger-bg);
    --player-status-info-bg: var(--color-info-bg);
    --calendar-ui-today-bg: var(--color-info-bg);
    --calendar-ui-selected-bg: var(--color-success-bg);
    --calendar-ui-hover-bg: var(--color-surface-muted);
    --calendar-ui-unavailable-bg: var(--color-danger-bg);
    --calendar-ui-withdrawn-bg: var(--color-warning-bg);
    --calendar-ui-border: var(--color-border-subtle);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-notice, .notice, .alert, .admin-status-box) {
    border-radius: var(--admin-notice-radius);
    padding: var(--admin-notice-padding);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) table tr:hover td {
    background-color: var(--admin-table-hover-bg);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.admin-button-secondary, .button-secondary, a.secondary, button.secondary) {
    background-color: var(--admin-button-secondary-bg);
    border-color: var(--admin-button-secondary-border);
    color: var(--admin-button-secondary-text);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.badge, .admin-badge, .status-pill) {
    background-color: var(--admin-badge-bg);
    color: var(--admin-badge-text);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.badge-warning, .status-warning, .admin-badge-warning) {
    background-color: var(--admin-badge-warning-bg);
    color: var(--admin-badge-warning-text);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.badge-danger, .status-danger, .admin-badge-danger) {
    background-color: var(--admin-badge-danger-bg);
    color: var(--admin-badge-danger-text);
}

.player-page-container :where(.player-action-row, .player-toolbar, .player-page-actions) :where(a.secondary, button.secondary, .button-secondary) {
    background-color: var(--player-action-secondary-bg);
    border-color: var(--player-action-secondary-border);
    color: var(--color-text);
}

.player-page-container :where(.status-success, .notice-success, .message-success) {
    background-color: var(--player-status-success-bg);
    border-color: var(--color-success-border);
    color: var(--color-success-text);
}

.player-page-container :where(.status-warning, .notice-warning, .message-warning) {
    background-color: var(--player-status-warning-bg);
    border-color: var(--color-warning-border);
    color: var(--color-warning-text);
}

.player-page-container :where(.status-danger, .notice-danger, .message-error) {
    background-color: var(--player-status-danger-bg);
    border-color: var(--color-danger-border);
    color: var(--color-danger-text);
}

.player-page-container :where(.status-info, .notice-info, .message-info) {
    background-color: var(--player-status-info-bg);
    border-color: var(--color-info-border);
    color: var(--color-info-text);
}

.calendar-team-legend, .calendar-availability-legend {
    border-color: var(--calendar-ui-border);
}

.calendar-overlap {
    outline-color: var(--calendar-overlap-outline);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.warning, .dashboard-status-warning, .admin-section-outline-warning, .admin-health-warning, .status-warning) {
    color: var(--admin-warning-summary-text);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.dashboard-status-warning, tr.dashboard-status-warning, .admin-table-row-warning) {
    background-color: var(--admin-warning-summary-bg);
    border-color: var(--admin-warning-summary-border);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.error, .dashboard-status-error, .admin-section-outline-error, .admin-health-error, .status-error) {
    color: var(--admin-danger-summary-text);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.dashboard-status-error, tr.dashboard-status-error, .admin-table-row-error) {
    background-color: var(--admin-danger-summary-bg);
    border-color: var(--admin-danger-summary-border);
}

.matches-table-game .input-score,
.matches-table .input-score,
input.input-score,
span.input-score,
:where(.player-page-container, .matches-container, .team-profile-container, .match-container) :where(.score-cell, .game-score-cell, .match-score-cell, .game-score) {
    font-size: var(--game-score-display-font-size) !important;
    line-height: var(--game-score-display-line-height);
}

.matches-table-game .input-score,
input.input-score,
span.input-score {
    width: var(--game-score-display-width) !important;
    min-width: var(--game-score-display-width) !important;
    max-width: var(--game-score-display-width) !important;
    height: var(--game-score-display-height) !important;
    min-height: var(--game-score-display-height) !important;
}

.admin-external-links-list td:nth-child(3) {
    max-width: var(--external-links-url-max-width);
}

@media (max-width: 768px) {
    .matches-table-game .input-score,
    .matches-table .input-score,
    input.input-score,
    span.input-score,
    :where(.player-page-container, .matches-container, .team-profile-container, .match-container) :where(.score-cell, .game-score-cell, .match-score-cell, .game-score) {
        font-size: var(--game-score-display-font-size-mobile) !important;
    }


    }



.admin-external-links-list th:nth-child(1),
.admin-external-links-list td:nth-child(1) {
    width: var(--admin-external-links-order-width);
}

.admin-external-links-list th:nth-child(2),
.admin-external-links-list td:nth-child(2) {
    width: var(--admin-external-links-label-width);
}

.admin-external-links-list th:nth-child(4),
.admin-external-links-list td:nth-child(4) {
    width: var(--admin-external-links-active-width);
}

.admin-external-links-list th:nth-child(5),
.admin-external-links-list td:nth-child(5) {
    width: var(--admin-external-links-action-width);
    text-align: center;
}

.admin-external-link-form-table input[type='text'],
.admin-external-link-form-table input[type='url'],
.admin-external-link-form-table input[type='number'] {
    width: 100%;
    max-width: 100%;
}

.admin-external-links-list details summary,
.admin-external-links-list button,
.admin-inline-table-action,
.admin-table-action button {
    min-width: var(--admin-inline-action-min-width);
}

.admin-dashboard-container :where(.dashboard-status-warning, .admin-warning-summary, .status-warning, .notice-warning) {
    background-color: var(--admin-warning-summary-bg);
    border-color: var(--admin-warning-summary-border);
    color: var(--admin-warning-summary-text);
}

.admin-dashboard-container :where(.dashboard-status-error, .admin-danger-summary, .status-error, .notice-error) {
    background-color: var(--admin-danger-summary-bg);
    border-color: var(--admin-danger-summary-border);
    color: var(--admin-danger-summary-text);
}

.admin-report-shell,
.admin-dashboard-container,
.admin-action-shell {
    max-width: var(--admin-report-readable-max-width);
}



.player-page-container :where(a, button, summary, input, select, textarea):focus-visible {
    outline: var(--player-focus-outline-width) solid var(--color-focus-border);

}

:where(.match-container, .matches-container, .player-page-container) :where(.match-score-cell, .game-score-cell, .score-cell, .game-score) {
    font-size: var(--player-match-score-font-size) !important;
    font-weight: var(--ui-font-weight-semibold, 600);
}

:where(.player-page-container) :where(.team-name, .player-name, .team-link, .player-link) {
    line-height: var(--ui-line-height-normal);
}

.about-external-links-list,
details summary + .content ul {
    row-gap: var(--player-about-link-list-gap);
}

@media (max-width: 768px) {
    .admin-external-links-list {
        min-width: 44rem;
    }


    }



.calendar-container .calendar-team-legend-line {


    line-height: 1.15;
}:where(.admin-table-actions, .admin-inline-actions, .admin-row-actions) {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--admin-table-action-gap);
}
:where(.admin-report-shell, .admin-diagnostics-container, .admin-development-container) table :where(th, td) {
    padding-block: var(--admin-table-compact-padding-y);
    padding-inline: var(--admin-table-compact-padding-x);
}
:where(.admin-status-pill, .status-pill, .admin-badge, .badge) {
    font-size: var(--admin-status-pill-font-size);
    line-height: var(--admin-status-pill-line-height);
    padding: var(--admin-status-pill-padding-y) var(--admin-status-pill-padding-x);
}
:where(.admin-page-container, .admin-dashboard-container, .admin-action-shell, .admin-report-shell) :where(a, button, summary, input, select, textarea):focus-visible {
    outline: var(--admin-focus-outline-width) solid var(--admin-focus-outline-color);
    outline-offset: var(--admin-focus-outline-offset);
}

.calendar-container .calendar-team-legend {
    gap: var(--calendar-team-legend-row-gap-compact);
    padding: var(--calendar-team-legend-padding-compact);
}
.calendar-container .calendar-team-legend-line {
    gap: var(--calendar-team-legend-swatch-gap-compact);


    line-height: var(--calendar-team-legend-line-height-compact);
    align-items: baseline;
}
.calendar-container .calendar-team-legend-line a {
    padding-block: 0;
}

.calendar-container .calendar-team-legend-line :where(a, button):focus-visible {
    outline: var(--player-focus-outline-width) solid var(--player-focus-outline-color);
    outline-offset: var(--player-focus-outline-offset);
}
.player-page-container :where(a, button, summary, input, select, textarea):focus-visible {
    outline: var(--player-focus-outline-width) solid var(--player-focus-outline-color);
    outline-offset: var(--player-focus-outline-offset);
}

@media (max-width: 640px) {
    .calendar-container .calendar-team-legend-line {
        line-height: var(--calendar-team-legend-line-height-compact);
    }

    }

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(tr.dashboard-status-warning, tr.admin-table-row-warning) {
    background-color: var(--admin-alert-warning-bg);
    border-left-color: var(--admin-alert-warning-border);
    color: var(--admin-alert-warning-text);
}
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(details.admin-section-outline-warning > summary, details.dashboard-status-warning > summary) {
    background-color: var(--admin-alert-warning-bg);
    border-color: var(--admin-alert-warning-border);
    color: var(--admin-alert-warning-text);
}
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell) :where(.error, .errors, .admin-error, .notice-danger, .status-danger, .dashboard-status-error, .admin-health-error) {
    background-color: var(--admin-alert-danger-bg);
    border-color: var(--admin-alert-danger-border);
    color: var(--admin-alert-danger-text);
}










:where(.admin-page-container, .admin-dashboard-container, .admin-report-shell) :where(.validation-message, .field-error, .admin-validation-message) {
    font-size: var(--admin-validation-message-font-size);
}

:where(.admin-report-shell, .admin-diagnostics-container, .diagnostics-container) :where(table.admin-compact-table, table.diagnostics-table, table.checkpoint-table) :where(th, td) {
    padding-block: var(--admin-diagnostic-table-cell-padding-y);
    padding-inline: var(--admin-diagnostic-table-cell-padding-x);
}


/* ADDED v2026-05-21.1945-2034: Checkpoint 43/35 stabilization variables and guardrails. */
:root {
    --admin-alert-stack-margin-block: var(--ui-space-3);
    --admin-alert-map-warning-bg: var(--admin-warning-stable-bg);
    --admin-alert-map-warning-border: var(--admin-warning-stable-border);
    --admin-alert-map-warning-text: var(--admin-warning-stable-text);
    --admin-alert-map-danger-bg: var(--color-danger-bg);
    --admin-alert-map-danger-border: var(--color-danger-border);
    --admin-alert-map-danger-text: var(--color-danger-text);
    --admin-report-readability-gap: var(--ui-space-4);
    --admin-table-action-min-width: 8rem;
    --admin-inline-edit-control-min-width: 7rem;
    --admin-validation-summary-gap: var(--ui-space-2);
    --calendar-compact-link-min-height: 1.5rem;
}.admin-alert-stack > * + *,
.admin-notice-stack > * + *,
.admin-dashboard-alert-stack > * + * {
    margin-top: var(--admin-alert-stack-margin-block);
}

.admin-table .admin-action-column,
.admin-table .action-column,
table .admin-action-column,
table .action-column {
    min-width: var(--admin-table-action-min-width);
    text-align: right;
}

.admin-table input,
.admin-table select,
.admin-table textarea {
    min-width: min(100%, var(--admin-inline-edit-control-min-width));
}

.admin-validation-summary,
.validation-summary,
.form-error-summary {
    display: grid;
    gap: var(--admin-validation-summary-gap);
}

.admin-report-shell .admin-report-section,
.admin-report-shell details,
.admin-report-shell .admin-report-card {
    margin-block-end: var(--admin-report-readability-gap);
}

.calendar-team-legend a,
.calendar-team-legend .player-link,
.calendar-team-legend .team-profile-icon-link {
    min-height: var(--calendar-compact-link-min-height);
}



    .admin-table :where(.admin-action-column, .action-column, .table-actions),
table :where(.admin-action-column, .action-column, .table-actions) {
    gap: var(--admin-inline-action-gap-final);
}

.admin-table :where(input, select, textarea),
.admin-inline-edit :where(input, select, textarea) {
    min-width: min(100%, var(--admin-table-control-min-width-final));
}

.admin-report-shell :where(.admin-report-section, .admin-report-card, details) {
    margin-block-end: var(--admin-report-section-gap-final);
}

:where(.admin-page-container, .admin-dashboard-container, .admin-report-shell, .player-page-container) :where(a, button, input, select, textarea, summary):focus-visible {
    outline-offset: var(--admin-focus-ring-offset-final);
}




@media (max-width: 720px) {
    .stats-player-link-cell a {
        white-space: normal;
    }
}


/* ADDED v2026-05-21.2245-2274: What's New header controls and Player Profile table alignment regression fix. */
:root {
    --whats-new-header-gap: var(--space-2, 0.5rem);
    --whats-new-header-padding: var(--space-3, 0.75rem);
    --whats-new-header-border: 1px solid var(--color-border);
    --whats-new-header-bg: var(--color-surface-muted);
    --whats-new-message-font-size: 0.95rem;
    --whats-new-control-gap: var(--space-2, 0.5rem);
    --whats-new-scroll-max-height: min(48vh, 420px);
    --player-profile-summary-photo-gap: 0.45rem;
}

/* Player Profile: keep the player/partner table directly beside the profile photo. */
.player-page-container.players-container .profile-summary-wrap.profile-summary-left,
.players-container .profile-summary-wrap.profile-summary-left,
.profile-summary-wrap.profile-summary-left {
    display: inline-flex !important;
    flex-direction: row !important;


    width: fit-content !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: auto !important;
    gap: 0 !important;
    text-align: left !important;
}

.player-page-container.players-container .profile-summary-wrap.profile-summary-left > .profile-summary-table,
.players-container .profile-summary-wrap.profile-summary-left > .profile-summary-table,
.profile-summary-wrap.profile-summary-left > .profile-summary-table,
.profile-summary-table.profile-summary-table-left {
    display: table !important;


    margin-left: 0 !important;
    margin-right: auto !important;
    border-collapse: collapse !important;

    text-align: left !important;
}

.player-page-container.players-container .profile-summary-table-left .profile-photo,
.players-container .profile-summary-table-left .profile-photo,
.profile-summary-table-left .profile-photo {
    padding-left: 0 !important;
    padding-right: var(--player-profile-summary-photo-gap) !important;
    vertical-align: top !important;
    width: 1% !important;
    white-space: nowrap !important;
}

.player-page-container.players-container .profile-summary-table-left td:not(.profile-photo),
.players-container .profile-summary-table-left td:not(.profile-photo),
.profile-summary-table-left td:not(.profile-photo) {
    width: auto !important;
    max-width: 34rem;
    vertical-align: top !important;
    text-align: left !important;
}

/* What's New: keep message, donate action, and dismissal checkbox visible in the modal header area. */
.changelog-alert-header {
    box-sizing: border-box;
    display: grid;

    margin: 0 0 var(--whats-new-header-gap) 0;

    border: var(--whats-new-header-border);
    border-radius: var(--radius-md, 0.5rem);
    background: var(--whats-new-header-bg);

}

.changelog-alert-header-row {

    flex-wrap: wrap;
    align-items: center;


}

.changelog-alert-title-text {
    font-weight: 700;
    font-size: 1.05rem;
}

.changelog-alert-header-message {

    font-size: var(--whats-new-message-font-size);
    line-height: 1.35;

}



.changelog-alert-header .changelog-donate-link {
    margin: 0;
}

.changelog-alert-header .changelog-alert-disable {

    min-height: var(--player-touch-target-min, 44px);
}

.changelog-alert-scroll {
    max-height: var(--whats-new-scroll-max-height);
}

@media (max-width: 640px) {
    .changelog-alert-header-row,
    .changelog-alert-header-controls {
        align-items: stretch;
        flex-direction: column;
    }
    .changelog-alert-header .changelog-donate-link {
        text-align: center;
        width: 100%;
    }
}


/* ADDED v2026-05-21.2305-2394: What's New, Player Profile, and stabilization checkpoint 47/39 refinements. */
:root {
    --whats-new-header-gap: 0.65rem;
    --whats-new-header-padding: 0.25rem 0 0.8rem;
    --whats-new-control-gap: 0.6rem;
    --whats-new-body-margin-top: 0.7rem;
    --player-profile-photo-table-gap-final: 0.35rem;
    --player-profile-summary-max-width-final: max-content;
    --profile-link-cell-gap: 0.25rem;
}

.changelog-alert-header {
    display: flex;
    flex-direction: column;
    gap: var(--whats-new-header-gap);
    padding: var(--whats-new-header-padding);
    border-bottom: var(--border-width, 1px) solid var(--color-border-muted, var(--color-border));
    margin-bottom: var(--whats-new-body-margin-top);
    text-align: left;
}

.changelog-alert-header-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--whats-new-control-gap);
}

.changelog-alert-title-text {
    flex: 1 1 auto;
    min-width: 0;
}

.changelog-alert-header-controls {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: var(--whats-new-control-gap);
}

.changelog-alert-header-message {
    margin: 0;
    color: var(--color-text-muted);
    line-height: var(--line-height-normal, 1.45);
}

.changelog-alert-header .changelog-alert-disable {
    display: inline-flex !important;
    align-items: center;
    gap: 0.4rem;
    margin: 0 !important;
    padding: 0 !important;
    min-height: var(--touch-target-min, 44px);
    line-height: var(--line-height-normal, 1.45);
}

.changelog-alert-header .changelog-alert-disable input[type="checkbox"] {
    margin: 0;
}

.changelog-alert-header .changelog-donate-link {
    white-space: nowrap;
}

.changelog-alert-scroll {
    margin-top: 0;
}

.player-page-container.players-container .profile-summary-wrap.profile-summary-left,
.players-container .profile-summary-wrap.profile-summary-left,
.profile-summary-wrap.profile-summary-left {
    justify-content: flex-start !important;
    align-items: flex-start !important;
    width: auto !important;
    max-width: var(--player-profile-summary-max-width-final) !important;
    margin-inline-start: 0 !important;
    margin-inline-end: auto !important;
    gap: var(--player-profile-photo-table-gap-final) !important;
}

.player-page-container.players-container .profile-summary-wrap.profile-summary-left > .profile-summary-table,
.players-container .profile-summary-wrap.profile-summary-left > .profile-summary-table,
.profile-summary-wrap.profile-summary-left > .profile-summary-table,
.profile-summary-table.profile-summary-table-left {
    margin-inline-start: 0 !important;
    margin-inline-end: auto !important;
    width: auto !important;
    max-width: max-content !important;
    table-layout: auto !important;
}

.profile-summary-table-left .profile-photo,
.players-container .profile-summary-table-left .profile-photo,
.player-page-container.players-container .profile-summary-table-left .profile-photo {
    padding-right: var(--player-profile-photo-table-gap-final) !important;
}

.stats-player-link-cell {
    white-space: nowrap;
}

.stats-player-link-cell a,
.stats-player-link-cell .player-profile-link {
    display: inline-flex;
    align-items: center;
    gap: var(--profile-link-cell-gap);
}

@media (max-width: 720px) {
    .changelog-alert-header-row,
    .changelog-alert-header-controls {
        align-items: stretch;
        justify-content: flex-start;
        flex-direction: column;
    }

    .changelog-alert-header .changelog-donate-link,
    .changelog-alert-header .changelog-alert-disable {
        width: 100%;
        justify-content: flex-start;
    }

    .profile-summary-wrap.profile-summary-left,
    .players-container .profile-summary-wrap.profile-summary-left,
    .player-page-container.players-container .profile-summary-wrap.profile-summary-left {
        max-width: 100% !important;
    }
}


/* Patch 66: What's New header order, Calendar compact separator, and Team Availability verification. */
.changelog-alert-header {
    align-items: stretch;
    text-align: center;
}
.changelog-alert-header .changelog-alert-header-message {
    order: 1;
    text-align: center;
}
.changelog-alert-donate-row {
    order: 2;
    display: flex;
    justify-content: center;
    width: 100%;
}
.changelog-alert-disable-row {
    order: 3;
    display: flex;
    justify-content: center;
    width: 100%;
}
.changelog-alert-header .changelog-alert-disable {
    justify-content: center;
}
.changelog-alert-title-text,
.changelog-alert-header-row,
.changelog-alert-header-controls {
    display: none;
}
.calendar-container .calendar-team-legend-line {
    column-gap: 0;
    row-gap: 0;
}
.calendar-container .calendar-team-legend-line .team-profile-icon-link {
    margin-right: 0;
}

.calendar-container .calendar-team-legend-swatch {
    margin-right: 0.08rem;
}
.calendar-container .calendar-team-legend-line .team-pair-separator {
    margin-inline: 0.08rem;
}

/* Patch 67: What's New wording/layout, Calendar compact team rows, and ZIP deploy simplification. */
.changelog-alert-header .changelog-alert-header-message {
    margin-block: 0 0.45rem;
}
.changelog-alert-donate-row,
.changelog-alert-disable-row {
    justify-content: center;
    text-align: center;
}
.calendar-container .calendar-team-legend {
    gap: 0;
    padding-block: 0;
}
.calendar-container .calendar-team-legend-line {

    column-gap: 0;
    row-gap: 0;
    line-height: 1;
    min-height: 0;
    margin-block: 0;
    padding-block: 0;
}
.calendar-container .calendar-team-legend-line .team-profile-icon-link,
.calendar-container .calendar-team-legend-line a,
.calendar-container .calendar-team-legend-player,
.calendar-container .calendar-team-legend-swatch {
    align-items: center;
    vertical-align: middle;
    line-height: 1;
}
.calendar-container .calendar-team-legend-line .team-profile-icon-link {
    display: inline-flex;
    margin-inline-end: 0;
}
.calendar-container .calendar-team-legend-player {
    display: inline-flex;
    gap: 0;
    margin-inline: 0;
    padding-inline: 0;
}
.calendar-container .calendar-team-legend-swatch {
    margin-inline: 0 0.06rem;
}
.calendar-container .calendar-team-legend-line .team-pair-separator {
    display: none;
}


/* Patch 68: What's New title casing/login-only behaviour and calendar team-row alignment. */
.calendar-container .calendar-team-legend-line {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    column-gap: 0;
    row-gap: 0;
}
.calendar-container .calendar-team-legend-line .team-profile-icon-link,
.calendar-container .calendar-team-legend-line .calendar-team-legend-player,
.calendar-container .calendar-team-legend-line .calendar-team-legend-player a,
.calendar-container .calendar-team-legend-line .calendar-team-legend-swatch {
    display: inline-flex;
    align-items: center;
    line-height: 1;
}
.calendar-container .calendar-team-legend-line .team-profile-icon-link {
    align-self: center;
    margin-block: 0;
    padding-block: 0;
}
.calendar-container .calendar-team-legend-player {
    align-self: center;
    margin-block: 0;
    padding-block: 0;
}
.calendar-container .calendar-team-legend-player + .calendar-team-legend-player {
    margin-inline-start: 0.38rem;
}
.calendar-container .calendar-team-legend-swatch {
    align-self: center;
    margin-block: 0;
    margin-inline: 0 0.08rem;
}

/* Patch 70: Team Profile guest/static member links and unplayed score alignment. */
.team-profile-member-photo-static {
    cursor: default;
}

.team-profile-member-name-static {
    color: var(--color-text);
    text-decoration: none;
}

.team-profile-score-na {
    text-align: center;
}

/* ADDED v2026-05-21.3145: Details accordion, What's New inline donation copy, and Swal heading reset. */
.changelog-alert-popup .changelog-alert-html h3,
.swal2-popup .changelog-alert-html h3 {
  font: inherit;
  font-weight: inherit;
  line-height: inherit;
  margin: 0;
  padding: 0;
}

.changelog-alert-donate-message {
  display: grid;
  gap: var(--space-2);
  text-align: left;
}

.changelog-alert-donate-message p {
  margin-block: 0;
}

/* Patch 78: About What's New launcher and SweetAlert title clipping fix. */
.about-whats-new-panel {
  border: var(--border-width, 1px) solid var(--color-border-muted, var(--color-border));
  border-radius: var(--radius-md, 0.5rem);
  padding: var(--space-3, 0.75rem);
  background: var(--color-surface-muted, var(--color-surface));
}

.about-whats-new-panel h3 {
  margin-block: 0 0.4rem;
}

.about-whats-new-panel p {
  margin-block: 0 0.65rem;
}

.changelog-alert-popup .changelog-alert-title,
.swal2-popup.changelog-alert-popup .swal2-title {
  margin-block: 0 0.35rem !important;
  padding-block: 0.35rem 0.1rem !important;
  line-height: 1.25 !important;

}

.swal2-popup.changelog-alert-popup {
  padding-top: 1.35rem !important;
}


/* Patch 79: What's New alert icon/title spacing and About link placement. */
.about-whats-new-panel {
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
}

.about-whats-new-link-row {
  margin-block: 0.26rem var(--space-3, 0.75rem);
}

/** CHANGED v2026-05-24.4104
 *  Format the About -> What's New launcher like a standard expandable/details
 *  summary while keeping the existing SweetAlert launcher behavior.
 */
.about-whats-new-link {
  align-items: center;
  background: color-mix(in srgb, var(--color-accent, #aaffaa) 22%, #fff 78%);
  border-left: 0.38rem solid var(--color-accent, #aaffaa);
  border-radius: 0.64rem;
  box-sizing: border-box;
  color: inherit;
  cursor: pointer;
  display: flex;
  font-weight: bold;
  line-height: 1.16;
  margin: 0;
  max-width: 100%;
  min-height: 0;
  padding: 0.34rem 0.55rem;
  text-decoration: none;
  width: 100%;
}

.about-whats-new-link::before {
  content: "▶";
  display: inline-block;
  font-size: 0.74em;
  line-height: 1;
  margin-right: 0.45rem;
  transform: translateY(-0.02rem);
}

.about-whats-new-link:hover,
.about-whats-new-link:focus-visible {
  background: color-mix(in srgb, var(--color-accent, #aaffaa) 30%, #fff 70%);
  text-decoration: none;
}

.swal2-popup.changelog-alert-popup {
  overflow: visible !important;
  padding-top: 1.9rem !important;
}

.swal2-popup.changelog-alert-popup .swal2-icon {
  flex-shrink: 0 !important;
  overflow: visible !important;
  margin: 0.2rem auto 0.85rem !important;
}

.changelog-alert-popup .changelog-alert-title,
.swal2-popup.changelog-alert-popup .swal2-title {
  margin-block: 0 0.45rem !important;
  padding-block: 0.2rem 0.1rem !important;
  line-height: 1.3 !important;
  overflow: visible !important;
}

.changelog-alert-donate-message {
  gap: var(--space-3, 0.75rem);
}

.changelog-alert-donate-message p {
  line-height: var(--line-height-normal, 1.45);
}

/* Patch 81: keep What's New SweetAlert actions inside popup and neutralize h3 formatting in Swal content. */
.swal2-popup.changelog-alert-popup {
  box-sizing: border-box !important;
  max-height: calc(100vh - 2rem) !important;
  overflow: hidden !important;
  padding-block-start: 2.25rem !important;
  padding-block-end: 1.25rem !important;
}

.swal2-popup.changelog-alert-popup .swal2-icon {
  margin-block-start: 0 !important;
  margin-block-end: 0.85rem !important;
  flex: 0 0 auto !important;
}

.swal2-popup.changelog-alert-popup .swal2-title,
.changelog-alert-popup .changelog-alert-title {
  flex: 0 0 auto !important;
  margin-block: 0 0 0.45rem !important;
  padding-block: 0.15rem 0.1rem !important;
  line-height: 1.3 !important;
  overflow: visible !important;
}

.swal2-popup.changelog-alert-popup .swal2-html-container,
.swal2-popup.changelog-alert-popup .changelog-alert-html {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  min-height: 0 !important;
  overflow: hidden !important;
  margin-inline: 0 !important;
}

.swal2-popup.changelog-alert-popup .changelog-alert-scroll {
  max-height: min(48vh, 28rem) !important;
  overflow-y: auto !important;
  padding-inline-end: 0.15rem !important;
}

.swal2-popup.changelog-alert-popup .swal2-actions,
.swal2-popup.changelog-alert-popup .changelog-alert-actions {
  box-sizing: border-box !important;
  flex: 0 0 auto !important;
  width: 100% !important;
  margin: 1rem auto 0 !important;
  padding: 0 !important;
  position: static !important;
}

.swal2-popup.changelog-alert-popup .swal2-confirm,
.swal2-popup.changelog-alert-popup .changelog-alert-ok {
  position: static !important;
}

.swal2-popup h3,
.swal2-popup :where(h3),
.swal2-container h3,
.swal2-container :where(h3),
.sweet-alert h3,
.sweet-alert :where(h3),
.swal2-popup .swal2-html-container h3,
.swal2-popup .swal2-html-container :where(h3),
.swal2-popup .changelog-alert-html h3,
.swal2-popup .changelog-alert-html :where(h3),
.changelog-alert-popup .changelog-alert-html h3 {
  display: block !important;
  font: inherit !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  line-height: inherit !important;
  color: inherit !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-left: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.swal2-popup h3::before,
.swal2-popup h3::after,
.swal2-container h3::before,
.swal2-container h3::after,
.sweet-alert h3::before,
.sweet-alert h3::after {
  content: none !important;
  display: none !important;
}


/** ADDED v2026-05-21.5095
 *  Shared UI component shell classes.
 *
 *  These classes give admin and player pages the same component vocabulary while
 *  preserving distinct densities and page goals. They are additive and can be
 *  adopted page-by-page as legacy wrappers are removed.
 */
.ui-component {

    max-width: 100%;
}

.ui-component-container {

    max-width: 100%;
}

.ui-component-card {
    border: 1px solid var(--color-border);
    border-radius: var(--ui-section-radius);
    background: var(--color-white);
    margin-block: 0.6rem;
    max-width: 100%;
}

.ui-admin-card,
.ui-component-admin.ui-component-card {
    padding: var(--ui-section-padding-admin);
}

.ui-player-card,
.ui-component-player.ui-component-card {
    padding: var(--ui-section-padding-player);
}

.ui-card-title,
.ui-report-intro {
    margin-block-start: 0;
}

.ui-card-title {
    line-height: 1.2;
}

.ui-component-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    align-items: center;
    max-width: 100%;
}

.ui-admin-actions {
    justify-content: flex-start;
}

.ui-player-actions {
    justify-content: center;
}

.ui-component-table-wrap {
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

.ui-component-table {
    width: 100%;
    max-width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.ui-admin-table th,
.ui-admin-table td {

    overflow-wrap: anywhere;
}

.ui-player-table th,
.ui-player-table td {

    overflow-wrap: anywhere;
}

.ui-surface-admin .ui-component-card,
.ui-surface-admin .ui-component-table-wrap {
    font-size: var(--ui-density-admin-font-size);
}

.ui-surface-player .ui-component-card,
.ui-surface-player .ui-component-table-wrap {
    font-size: var(--ui-density-player-font-size);
}

/* Named component hooks for gradually moving page-specific styles out of broad selectors. */
.component-admin-report,
.admin-report-shell.ui-component-container {
    width: 100%;
}

.component-admin-form :is(input, select, textarea),
.component-player-form :is(input, select, textarea) {
    max-width: 100%;
}

@media (max-width: 720px) {
    .ui-component-actions {
        gap: 0.35rem;
    }

    .ui-player-card,
    .ui-component-player.ui-component-card {
        padding: var(--ui-section-padding-player);
    }
}


/* ADDED v2026-05-21.94: Calendar team legend as a borderless table/grid. */
.calendar-container .calendar-team-legend {
    display: inline-grid;
    grid-auto-rows: minmax(0, auto);
    row-gap: var(--space-1);
    align-items: center;
}

.calendar-container .calendar-team-legend-line.component-calendar-team-legend-row {
    display: grid;
    grid-template-columns: auto minmax(9rem, 1fr) minmax(9rem, 1fr);
    column-gap: var(--space-3);
    align-items: center;
    border: 0;
    padding-block: var(--space-1);
}

.calendar-container .calendar-team-legend-team-cell,
.calendar-container .calendar-team-legend-player-cell,
.calendar-container .calendar-team-legend-player {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    line-height: 1.2;
    vertical-align: middle;
}

.calendar-container .calendar-team-legend-player-cell {
    justify-content: flex-start;
}

.calendar-container .calendar-team-legend-player-empty {
    visibility: hidden;
}

.calendar-container .calendar-team-legend-swatch {
    flex: 0 0 auto;
    margin-inline-end: var(--space-1);
}

@media (max-width: 640px) {
    .calendar-container .calendar-team-legend-line.component-calendar-team-legend-row {
        grid-template-columns: auto minmax(7rem, 1fr) minmax(7rem, 1fr);
        column-gap: var(--space-2);
    }
}

/* ADDED v2026-05-21.3895
 * Shared Admin + Player UI/UX normalization pass.
 * Scope: presentation-only CSS. No schema, data, routing, or POST semantics change.
 * Intent: make admin and player surfaces share one spacing/card/form/table contract
 * while preserving admin's desktop-first workflow and player's mobile-first workflow.
 */
:root {
    --ui-page-gutter: clamp(0.45rem, 1.8vw, 1.1rem);
    --ui-player-max-width: 880px;
    --ui-admin-max-width: 1240px;
    --ui-section-gap: 0.85rem;
    --ui-card-padding: clamp(0.72rem, 1.6vw, 1rem);
    --ui-card-radius: 12px;
    --ui-card-shadow: 0 2px 10px var(--css-color-rgba-0-0-0-0-06);
    --ui-field-radius: 8px;
    --ui-focus-ring: 0 0 0 3px var(--css-color-rgba-47-93-159-0-10);
    --ui-muted-text: var(--color-muted-text, var(--css-color-555));
    --ui-section-bg: var(--color-section-bg, var(--color-white));
    --ui-subtle-bg: var(--color-subtle-bg, var(--css-color-f0f0f0));
    --ui-warning-bg: var(--color-status-warning-bg, var(--css-color-fff8db));
    --ui-info-bg: var(--color-status-info-bg, var(--css-color-eef7ff));
    --ui-error-bg: var(--color-status-error-bg, var(--css-color-fdecea));
}

body {
    box-sizing: border-box;
    width: min(calc(100% - (var(--ui-page-gutter) * 2)), var(--ui-player-max-width));
    max-width: var(--ui-player-max-width);
    margin: var(--ui-page-gutter) auto;
    line-height: 1.38;
}

body:has(.ui-surface-admin),
body:has(.admin-page-container),
body:has(.admin-dashboard-container),
body:has(.admin-diagnostics-container) {
    width: min(calc(100% - (var(--ui-page-gutter) * 2)), var(--ui-admin-max-width));
    max-width: var(--ui-admin-max-width);
}

header,
.mainbody {
    box-sizing: border-box;
    max-width: 100%;
}

header {
    box-shadow: var(--ui-card-shadow);
}

.mainbody {
    margin-top: var(--ui-section-gap);
}

.site-league-title {
    line-height: 1.15;
}

nav,
.nav-primary-row,
.nav-secondary-row {
    max-width: 100%;
}

.nav-primary-row,
.nav-secondary-row {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: 0.32rem 0.45rem;
}

.nav-secondary-row {
    margin-top: 0.4rem;
}

.nav-link,
.admin-subnav-link,
.admin-subnav-top-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2rem;
    border-radius: 999px;
    touch-action: manipulation;
}

.page-title {
    margin: 0.9rem 0 0.35rem;
    line-height: 1.18;
}

.page-title-rule {
    margin: 0.35rem 0 0.85rem;
}

.ui-surface-admin,
.ui-surface-player,
.admin-page-container,
.player-page-container,
.approvals-container {
    box-sizing: border-box;
    display: grid;
    gap: var(--ui-section-gap);
    max-width: 100%;
}

.divborder,
.admin-dashboard-section,
.approvals-section-group,
details,
.ui-panel,
.ui-card {
    box-sizing: border-box;
    max-width: 100%;
    margin: 0 0 var(--ui-section-gap) 0;
    padding: var(--ui-card-padding);
    border: 1px solid var(--color-border, var(--color-table-border));
    border-radius: var(--ui-card-radius);
    background: var(--ui-section-bg);
    box-shadow: var(--ui-card-shadow);
}

.divborder > :first-child,
.admin-dashboard-section > :first-child,
details > :first-child,
.ui-panel > :first-child,
.ui-card > :first-child {
    margin-top: 0;
}

.divborder > :last-child,
.admin-dashboard-section > :last-child,
details > :last-child,
.ui-panel > :last-child,
.ui-card > :last-child {
    margin-bottom: 0;
}

details {
    overflow: clip;
}

summary {
    cursor: pointer;
    font-weight: 700;
    line-height: 1.25;
    margin: calc(var(--ui-card-padding) * -1);
    padding: 0.72rem var(--ui-card-padding);
    border-radius: var(--ui-card-radius) var(--ui-card-radius) 0 0;
    background: var(--ui-subtle-bg);
}

details[open] > summary {
    margin-bottom: var(--ui-card-padding);
    border-bottom: 1px solid var(--color-border, var(--color-table-border));
}

button,
.button-link,
input[type="submit"],
input[type="button"],
input[type="reset"] {
    min-height: 2.25rem;
    border-radius: var(--ui-field-radius);
    line-height: 1.2;
    touch-action: manipulation;
}

input:not([type="checkbox"]):not([type="radio"]),
select,
textarea {
    box-sizing: border-box;
    max-width: 100%;
    min-height: 2.15rem;
    border-radius: var(--ui-field-radius);
}

textarea {
    min-height: 5.5rem;
}

button:focus-visible,
.button-link:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    box-shadow: var(--ui-focus-ring);
}

form {
    max-width: 100%;
}

form .form-row,
.admin-form-row,
.player-form-row,
.admin-action-row,
.player-action-row {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 0.6rem;
}

.admin-action-row,
.player-action-row {
    margin-top: 0.55rem;
}

.table-container,
.table-wrap,
.admin-table-container,
.responsive-table-wrap {
    box-sizing: border-box;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
}

.ui-surface-player table,
.player-page-container table {
    width: max-content;
    min-width: 100%;
    table-layout: auto;
}

.ui-surface-player th,
.ui-surface-player td,
.player-page-container th,
.player-page-container td {
    padding: 0.34rem 0.42rem;
    vertical-align: top;
}

.ui-surface-player th,
.player-page-container th {
    line-height: 1.15;
}

.ui-surface-player td,
.player-page-container td {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
}

.ui-surface-player td.num,
.ui-surface-player td.center,
.player-page-container td.num,
.player-page-container td.center,
.score-cell,
.game-score,
.points-cell {
    white-space: nowrap;
    text-align: center;
}

.ui-surface-admin table,
.admin-page-container table {
    width: max-content;
    min-width: 100%;
    table-layout: auto;
}

.ui-surface-admin th,
.admin-page-container th {
    white-space: nowrap;
    overflow-wrap: normal;
    word-break: normal;
}

.ui-surface-admin td,
.admin-page-container td {
    max-width: 38rem;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
    vertical-align: top;
}

.ui-surface-admin td code,
.admin-page-container td code,
.ui-surface-player td code,
.player-page-container td code,
.displaysql,
pre,
code {
    max-width: 100%;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: normal;
}

.admin-subnav-multilevel,
.admin-nav-container,
.admin-subnav-top-row,
.admin-subnav-row {
    max-width: 100%;
}

.admin-subnav-top-row,
.admin-subnav-row {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.admin-subnav-multilevel {
    padding: 0.55rem;
    border: 1px solid var(--color-border, var(--color-table-border));
    border-radius: var(--ui-card-radius);
    background: var(--ui-section-bg);
}

.admin-subnav-section-label,
.admin-subnav-group-label {
    color: var(--ui-muted-text);
    font-size: 0.86rem;
    font-weight: 700;
}

.admin-action-note,
.admin-inline-note,
.player-inline-note,
.help-text,
.form-help,
small {
    color: var(--ui-muted-text);
    line-height: 1.35;
}

.admin-status-badge,
.status-pill,
.nav-approval-count,
.permission-pill,
.role-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    min-height: 1.35rem;
    padding: 0.12rem 0.48rem;
    border-radius: 999px;
    line-height: 1.1;
    white-space: nowrap;
}

.admin-alert,
.admin-alert-info,
.admin-alert-warning,
.admin-alert-error,
.player-alert,
.notice,
.warning,
.error,
.success {
    box-sizing: border-box;
    max-width: 100%;
    margin: 0.65rem 0;
    padding: 0.65rem 0.8rem;
    border: 1px solid var(--color-border, var(--color-table-border));
    border-radius: var(--ui-card-radius);
    overflow-wrap: anywhere;
}

.admin-alert-info,
.player-alert-info,
.notice {
    background: var(--ui-info-bg);
}

.admin-alert-warning,
.player-alert-warning,
.warning {
    background: var(--ui-warning-bg);
}

.admin-alert-error,
.player-alert-error,
.error {
    background: var(--ui-error-bg);
}

.profile-summary-wrap {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.profile-summary-table {
    width: max-content;
    min-width: min(100%, 30rem);
}

.profile-photo img,
.player-photo img,
img.profile-photo,
img.player-photo {
    max-width: min(100%, 10rem);
    height: auto;
    border-radius: var(--ui-card-radius);
}

@media (max-width: 760px) {
    body,
    body:has(.ui-surface-admin),
    body:has(.admin-page-container),
    body:has(.admin-dashboard-container),
    body:has(.admin-diagnostics-container) {
        width: calc(100% - 0.7rem);
        max-width: none;
        margin: 0.35rem auto;
    }

    header {
        padding: 0.75rem;
        border-radius: 10px;
    }

    h1 { font-size: 1.25rem; }
    h2 { font-size: 1.16rem; }
    h3 { font-size: 1.03rem; }

    .nav-primary-row,
    .nav-secondary-row,
    .admin-subnav-top-row,
    .admin-subnav-row {
        gap: 0.28rem;
    }

    .nav-link,
    .admin-subnav-link,
    .admin-subnav-top-link {
        flex: 1 1 auto;
        min-width: max-content;
        padding-left: 0.55rem;
        padding-right: 0.55rem;
    }

    .divborder,
    .admin-dashboard-section,
    .approvals-section-group,
    details,
    .ui-panel,
    .ui-card {
        padding: 0.68rem;
        border-radius: 10px;
    }

    summary {
        margin: -0.68rem -0.68rem 0 -0.68rem;
        padding: 0.68rem;
    }

    details[open] > summary {
        margin-bottom: 0.68rem;
    }

    input:not([type="checkbox"]):not([type="radio"]),
    select,
    textarea,
    button,
    .button-link,
    input[type="submit"] {
        width: 100%;
    }

    .admin-action-row,
    .player-action-row,
    form .form-row,
    .admin-form-row,
    .player-form-row {
        align-items: stretch;
        display: grid;
        grid-template-columns: 1fr;
    }

    .ui-surface-player th,
    .ui-surface-player td,
    .player-page-container th,
    .player-page-container td,
    .ui-surface-admin th,
    .ui-surface-admin td,
    .admin-page-container th,
    .admin-page-container td {
        padding: 0.34rem 0.38rem;
    }

    .profile-summary-table {
        min-width: 100%;
    }
}

@media print {
    body,
    body:has(.ui-surface-admin),
    body:has(.admin-page-container) {
        width: 100%;
        max-width: none;
        margin: 0;
        background: var(--color-white);
    }

    header,
    nav,
    .admin-subnav-multilevel,
    button,
    .button-link {
        box-shadow: none !important;
    }

    .table-container,
    .admin-table-container,
    .responsive-table-wrap {
        overflow: visible;
    }
}



/** ADDED v2026-05-21.3896
 * Shared named UI components. Admin and player surfaces intentionally use the
 * same component contract with distinct density/width rules.
 */
.ui-component-container {
    box-sizing: border-box;
    width: 100%;
    margin: 0.75rem 0;
}
.ui-admin-container {
    max-width: 1180px;
    padding: 0.85rem;
}
.ui-player-container {
    max-width: 800px;
    padding: 0.6rem;
}
.ui-page-header {
    margin-bottom: 0.75rem;
}
.ui-page-header h2,
.ui-page-header h3 {
    margin-top: 0;
}
.ui-page-intro,
.ui-section-intro {
    margin: 0.25rem 0 0.75rem;
    line-height: 1.35;
}
.ui-component-card,
.ui-details-card,
.ui-file-link-card {
    box-sizing: border-box;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    background: var(--color-white);
    padding: 0.75rem;
    margin: 0.75rem 0;
    box-shadow: 0 1px 2px var(--css-color-rgba-0-0-0-0-06);
}
.ui-admin-card,
.ui-admin-details-card,
.ui-admin-notice {
    border-left: 4px solid var(--css-color-2f5d9f);
}
.ui-player-card,
.ui-player-details-card,
.ui-player-notice {
    border-left: 4px solid var(--color-primary);
}
.ui-card-title {
    margin: 0 0 0.5rem;
}
.ui-details-card summary {
    cursor: pointer;
    font-weight: 700;
    line-height: 1.3;
}
.ui-table-container,
.ui-component-table-wrap {
    width: 100%;
    overflow-x: auto;
    margin: 0.5rem 0;
}
.ui-table {
    width: 100%;
    border-collapse: collapse;
}
.ui-admin-table th,
.ui-admin-table td {
    padding: 0.45rem 0.5rem;
    vertical-align: top;
}
.ui-player-table th,
.ui-player-table td {
    padding: 0.35rem 0.4rem;
    vertical-align: middle;
}
.ui-key-value-table th {
    width: 32%;
    text-align: left;
}
.ui-component-form,
.ui-form {
    display: grid;
    gap: 0.65rem;
    margin: 0.75rem 0;
}
.ui-component-form label,
.ui-form label {
    font-weight: 600;
}
.ui-component-form input,
.ui-component-form select,
.ui-component-form textarea,
.ui-form input,
.ui-form select,
.ui-form textarea {
    box-sizing: border-box;
    max-width: 100%;
}
.ui-component-actions,
.ui-form-actions,
.admin-action-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin-top: 0.5rem;
}
.ui-notice {
    border: 1px solid var(--color-border);
    border-radius: 8px;
    background: var(--css-color-fff8e6);
    padding: 0.65rem 0.75rem;
    margin: 0.75rem 0;
}
.ui-notice-ok,
.ui-notice-success {
    background: var(--css-color-eef8ee);
}
.ui-notice-error,
.ui-notice-danger {
    background: var(--css-color-fdecea);
}
.ui-file-link-list {
    margin: 0.5rem 0 0;
    padding-left: 1.2rem;
}
.ui-file-link-list li {
    margin: 0.25rem 0;
}
.ui-file-link code {
    white-space: normal;
    overflow-wrap: anywhere;
}
@media (max-width: 720px) {
    .ui-admin-container,
    .ui-player-container {
        padding: 0.5rem;
    }
    .ui-component-card,
    .ui-details-card,
    .ui-file-link-card {
        padding: 0.55rem;
        border-radius: 8px;
    }
    .ui-admin-table th,
    .ui-admin-table td,
    .ui-player-table th,
    .ui-player-table td {
        padding: 0.32rem;
    }
    .ui-key-value-table th {
        width: auto;
    }
}


/** ADDED v2026-05-21.3898
 * Named shared component layer for ongoing admin/player normalization.
 * Page-specific classes should extend these contracts instead of redefining
 * container, card, table, form, grid, and generated-output behaviour.
 */
.ui-component-section {
    box-sizing: border-box;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    background: var(--color-white);
    padding: 0.75rem;
    margin: 0.75rem 0;
}
.ui-admin-section {
    max-width: 1180px;
}
.ui-player-section {
    max-width: 800px;
}
.ui-section-title {
    margin: 0 0 0.5rem;
    line-height: 1.25;
}
.ui-component-grid,
.ui-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.75rem;
    align-items: stretch;
}
.ui-admin-grid {
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.ui-player-grid {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.ui-action-row,
.ui-admin-actions,
.ui-player-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}
.ui-component-generated-output,
.ui-generated-output {
    box-sizing: border-box;
    border: 1px dashed var(--color-border);
    border-radius: 8px;
    background: var(--color-white);
    padding: 0.75rem;
    margin: 0.75rem 0;
    overflow-x: auto;
}
.ui-admin-generated-output {
    max-width: 1180px;
}
.ui-player-generated-output {
    max-width: 800px;
}
.ui-component-table-wrap .ui-component-table,
.ui-component-table-wrap .ui-table {
    min-width: 100%;
}
.ui-component-table-wrap th,
.ui-component-table-wrap td {
    overflow-wrap: anywhere;
}
.ui-admin-container .divborder,
.ui-admin-section .divborder,
.ui-player-container .divborder,
.ui-player-section .divborder {
    max-width: 100%;
}
@media (max-width: 720px) {
    .ui-component-grid,
    .ui-card-grid,
    .ui-admin-grid,
    .ui-player-grid {
        grid-template-columns: 1fr;
    }
    .ui-component-section {
        padding: 0.55rem;
        border-radius: 8px;
    }
}


/** ADDED v2026-05-21.3899
 * Continued admin/player CSS normalization.
 * These rules define named component contracts so pages can stop redefining
 * containers, cards, form clusters, field tables, reports, and details panels.
 */
:root {
    --ui-admin-max-width: 1180px;
    --ui-player-max-width: 820px;
    --ui-admin-density-padding: 0.85rem;
    --ui-player-density-padding: 0.6rem;
    --ui-component-radius: 10px;
    --ui-component-gap: 0.75rem;
}
.ui-surface-page {
    box-sizing: border-box;
    width: 100%;
    margin-inline: auto;
}
.ui-admin-page {
    max-width: var(--ui-admin-max-width);
    padding: var(--ui-admin-density-padding);
}
.ui-player-page {
    max-width: var(--ui-player-max-width);
    padding: var(--ui-player-density-padding);
}
.ui-admin-section-panel,
.ui-admin-card,
.ui-admin-details-card {
    --ui-surface-accent: var(--css-color-2f5d9f);
}
.ui-player-section-panel,
.ui-player-card,
.ui-player-details-card {
    --ui-surface-accent: var(--color-primary);
}
.ui-admin-section-panel,
.ui-player-section-panel,
.ui-admin-details-card,
.ui-player-details-card,
.player-profile-summary-card,
.admin-operation-section,
.admin-report-section {
    border-left: 4px solid var(--ui-surface-accent, var(--color-border));
}
.ui-normalized-details {
    display: block;
}
.ui-normalized-details > summary {
    cursor: pointer;
    font-weight: 700;
    line-height: 1.3;
    margin-bottom: 0.45rem;
}
.ui-field-table th,
.ui-field-table td {
    vertical-align: top;
}
.ui-admin-field-table th {
    width: 34%;
    text-align: left;
}
.ui-player-field-table th {
    width: 38%;
    text-align: left;
}
.ui-form-row,
.ui-filter-row,
.ui-report-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}
.ui-admin-form-cluster,
.ui-player-form-cluster {
    display: grid;
    gap: 0.65rem;
}
.ui-admin-report,
.ui-player-report {
    box-sizing: border-box;
    border: 1px solid var(--color-border);
    border-radius: var(--ui-component-radius);
    background: var(--color-white);
    padding: 0.75rem;
    margin: 0.75rem 0;
}
.ui-admin-report {
    max-width: var(--ui-admin-max-width);
}
.ui-player-report {
    max-width: var(--ui-player-max-width);
}
.admin-scrambles-section .admin-form,
.admin-scrambles-section .admin-inline-form,
.ui-admin-section-panel .admin-form,
.ui-admin-section-panel .admin-inline-form {
    margin: 0.5rem 0;
}
.admin-scrambles-section table,
.ui-admin-section-panel table,
.ui-player-section-panel table {
    max-width: 100%;
}
.player-profile-summary-card {
    background: var(--color-white);
    border-radius: var(--ui-component-radius);
    padding: 0.5rem;
    margin-bottom: 0.75rem;
}
.player-profile-details,
.player-availability-details,
.player-match-history-details,
.player-subs-details {
    margin: 0.75rem 0;
}
.ui-component-table-wrap,
.ui-table-container,
.admin-table-container,
.eligible-subs-table-container,
.team-availability-table-container {
    scrollbar-width: thin;
}
@media (max-width: 720px) {
    :root {
        --ui-admin-density-padding: 0.55rem;
        --ui-player-density-padding: 0.45rem;
        --ui-component-gap: 0.5rem;
    }
    .ui-admin-page,
    .ui-player-page,
    .ui-admin-report,
    .ui-player-report {
        max-width: 100%;
    }
    .ui-admin-field-table th,
    .ui-player-field-table th {
        width: auto;
    }
    .ui-form-row,
    .ui-filter-row,
    .ui-report-row {
        align-items: stretch;
    }
    .ui-form-row > *,
    .ui-filter-row > * {
        max-width: 100%;
    }
}

/* ADDED v2026-05-21.3900: admin/player named component normalization contracts. */
:root {
  --ui-surface-radius: 14px;
  --ui-surface-gap: 1rem;
  --ui-surface-border: 1px solid rgba(0,0,0,.12);
  --ui-surface-shadow: 0 1px 4px rgba(0,0,0,.08);
  --ui-admin-max-width: 1320px;
  --ui-player-max-width: 980px;
}

.ui-component-container,
.ui-surface-page,
.ui-named-report {
  box-sizing: border-box;
  width: min(100%, var(--ui-player-max-width));
  margin-inline: auto;
}

.ui-component-admin.ui-component-container,
.ui-admin-page,
.admin-normalized-page,
.ui-component-admin.ui-named-report {
  width: min(100%, var(--ui-admin-max-width));
}

.ui-component-player.ui-component-container,
.ui-player-page,
.player-normalized-page {
  width: min(100%, var(--ui-player-max-width));
}

.ui-page-header,
.ui-section-title,
.ui-card-title { overflow-wrap: anywhere; }

.ui-card-body,
.ui-section-intro,
.ui-page-intro,
.ui-generated-output,
.ui-definition-list dd,
.ui-definition-list dt { overflow-wrap: anywhere; }

.ui-normalized-card,
.ui-component-card,
.ui-component-section,
.ui-details-card,
.ui-generated-output,
.ui-definition-list,
.admin-normalized-section,
.player-normalized-section {
  border: var(--ui-surface-border);
  border-radius: var(--ui-surface-radius);
  box-shadow: var(--ui-surface-shadow);
  padding: clamp(.75rem, 1.5vw, 1.25rem);
  margin-block: var(--ui-surface-gap);
  box-sizing: border-box;
}

.ui-component-admin.ui-component-card,
.ui-admin-section-panel,
.admin-normalized-section,
.ui-admin-details-card,
.ui-component-admin.ui-generated-output {
  background: rgba(255,255,255,.96);
}

.ui-component-player.ui-component-card,
.ui-player-section-panel,
.player-normalized-section,
.ui-player-details-card,
.ui-component-player.ui-generated-output {
  background: rgba(255,255,255,.92);
}

.ui-card-grid,
.ui-normalized-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  gap: var(--ui-surface-gap);
  align-items: start;
}

.ui-action-row,
.ui-action-link-row,
.ui-form-actions,
.player-action-row,
.admin-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  align-items: center;
  margin-block: .75rem;
}

.ui-form,
.admin-normalized-form,
.player-normalized-form {
  display: block;
  max-width: 100%;
}

.ui-form input,
.ui-form select,
.ui-form textarea,
.admin-normalized-form input,
.admin-normalized-form select,
.admin-normalized-form textarea,
.player-normalized-form input,
.player-normalized-form select,
.player-normalized-form textarea {
  max-width: 100%;
  box-sizing: border-box;
}

.ui-button,
.ui-admin-button,
.ui-player-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  min-height: 2.35rem;
  padding: .5rem .8rem;
  border-radius: .65rem;
  text-decoration: none;
  line-height: 1.2;
  cursor: pointer;
}

.ui-player-button { min-height: 2.65rem; }
.ui-admin-button { min-height: 2.25rem; }

.ui-button-primary,
.ui-admin-button-primary,
.ui-player-button-primary { font-weight: 700; }
.ui-button-danger,
.ui-admin-button-danger { font-weight: 700; }

.ui-table-container,
.ui-component-table-wrap,
.admin-table-container,
.table-container {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.ui-table,
.ui-component-table,
.ui-admin-table,
.ui-player-table {
  width: 100%;
  border-collapse: collapse;
}

.ui-table th,
.ui-table td,
.ui-component-table th,
.ui-component-table td {

  overflow-wrap: anywhere;
}

.ui-definition-list {
  display: grid;
  gap: .5rem;
}
.ui-definition-row {
  display: grid;
  grid-template-columns: minmax(8rem, 18rem) 1fr;
  gap: .5rem 1rem;
  align-items: start;
}
.ui-definition-row dt { font-weight: 700; }
.ui-definition-row dd { margin: 0; }

.ui-status-pill {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: .2rem .55rem;
  font-size: .875em;
  font-weight: 700;
  border: var(--ui-surface-border);
}

.ui-file-link-list {
  display: grid;
  gap: .35rem;
  padding-left: 1.25rem;
}

.season-select-page .ui-form-actions { display: none; }
.season-select-form .season-select-button { margin-block: .25rem; }

@media (max-width: 720px) {
  .ui-component-container,
  .ui-surface-page,
  .ui-named-report,
  .ui-component-admin.ui-component-container,
  .ui-admin-page,
  .ui-component-player.ui-component-container,
  .ui-player-page {
    width: 100%;
  }
  .ui-definition-row { grid-template-columns: 1fr; }
  .ui-action-row,
  .ui-action-link-row,
  .ui-form-actions,
  .player-action-row,
  .admin-action-row { align-items: stretch; }
  .ui-player-button,
  .season-select-button { width: 100%; }
}

@media print {
  .ui-action-row,
  .ui-action-link-row,
  .ui-form-actions { display: none !important; }
  .ui-component-card,
  .ui-component-section,
  .ui-generated-output { box-shadow: none; }
}


/* ADDED v2026-05-21.3902 - safe SQL file link components for ModSecurity-safe admin downloads */
.ui-safe-sql-file-card .ui-file-link-list,
.ui-safe-sql-file-list {
    display: grid;
    gap: 0.5rem;
    margin-left: 0;
    padding-left: 1.1rem;
}

.ui-safe-sql-file-link {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.ui-safe-sql-file-card .file-path {
    overflow-wrap: anywhere;
}

/* ADDED v2026-05-21.3903 - admin/player CSS normalization and named component contracts */
.ui-report-surface,
.ui-component-container,
.ui-surface-page {
    box-sizing: border-box;
}

.ui-admin-page,
.ui-component-admin.ui-component-container,
.ui-report-surface.ui-component-admin {
    --ui-surface-max-width: min(1500px, calc(100vw - 2rem));
    width: var(--ui-surface-max-width);
    margin-inline: auto;
}

.ui-player-page,
.ui-component-player.ui-component-container,
.ui-report-surface.ui-component-player {
    --ui-surface-max-width: min(980px, calc(100vw - 1rem));
    width: var(--ui-surface-max-width);
    margin-inline: auto;
}

.ui-component-section,
.ui-component-card,
.ui-report-card,
.ui-report-table-card,
.ui-empty-state,
.ui-details-card {
    box-sizing: border-box;
    border: var(--ui-surface-border, 1px solid rgba(0,0,0,.12));
    border-radius: var(--ui-surface-radius, 12px);
    background: var(--ui-surface-bg, rgba(255,255,255,.9));
    padding: var(--ui-surface-padding, 1rem);
    margin-block: .85rem;
}

.ui-component-admin.ui-component-section,
.ui-component-admin.ui-component-card,
.ui-admin-section-panel,
.admin-normalized-card {
    --ui-surface-padding: 1rem;
}

.ui-component-player.ui-component-section,
.ui-component-player.ui-component-card,
.ui-player-section-panel,
.player-normalized-card {
    --ui-surface-padding: .85rem;
}

.ui-field-row {

    grid-template-columns: minmax(9rem, 16rem) minmax(0, 1fr);
    gap: .45rem 1rem;

    margin-block: .65rem;
}
.ui-field-label { font-weight: 700; }
.ui-field-control { min-width: 0; }
.ui-field-help { margin-top: .25rem; font-size: .925em; opacity: .82; }
.ui-input,
.ui-select,
.ui-textarea,
.ui-admin-input,
.ui-admin-select,
.ui-player-input,
.ui-player-select {
    max-width: 100%;
    box-sizing: border-box;
}

.ui-report-table-card .ui-table-container,
.ui-component-table-wrap {
    margin-block: .5rem;
}

.ui-empty-state {
    text-align: center;
    opacity: .95;
}
.ui-empty-state-title { margin-top: 0; }
.ui-empty-state-message { margin-bottom: 0; }

.dashboard-card-grid,
.ui-card-grid,
.admin-dashboard-card-grid,
.player-card-grid {
    align-items: stretch;
}
.dashboard-card,
.ui-component-card,
.ui-report-card {
    min-width: 0;
    overflow-wrap: anywhere;
}

.admin-normalized-page .dashboard-card-grid,
.ui-admin-page .dashboard-card-grid {
    gap: .85rem;
}
.player-normalized-page .ui-card-grid,
.ui-player-page .ui-card-grid {
    gap: .65rem;
}

@media (max-width: 720px) {
    .ui-field-row { grid-template-columns: 1fr; }
    .ui-admin-page,
    .ui-player-page,
    .ui-component-admin.ui-component-container,
    .ui-component-player.ui-component-container {
        width: 100%;
        margin-inline: 0;
    }
    .ui-component-section,
    .ui-component-card,
    .ui-report-card,
    .ui-report-table-card,
    .ui-empty-state,
    .ui-details-card {
        border-radius: 10px;
        padding: .75rem;
    }
}


/* ADDED v2026-05-21.3911 - continued admin/player CSS normalization and named presentation components. */
.ui-toolbar,
.ui-report-header,
.ui-filter-panel {
    box-sizing: border-box;
}

.ui-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-block: .65rem;
}

.ui-toolbar-item {
    min-width: 0;
}

.ui-report-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-block: .85rem;
}

.ui-report-heading {
    min-width: 0;
}

.ui-report-heading h1,
.ui-report-heading h2,
.ui-report-heading h3,
.ui-filter-title {
    margin-top: 0;
}

.ui-filter-panel {
    border: var(--ui-surface-border, 1px solid rgba(0,0,0,.12));
    border-radius: var(--ui-surface-radius, 12px);
    background: var(--ui-surface-bg, rgba(255,255,255,.88));
    padding: var(--ui-surface-padding, 1rem);
    margin-block: .85rem;
}

.ui-admin-toolbar,
.ui-admin-report-header,
.ui-admin-filter-panel {
    --ui-surface-padding: 1rem;
}

.ui-player-toolbar,
.ui-player-report-header,
.ui-player-filter-panel {
    --ui-surface-padding: .85rem;
}

.ui-admin-filter-panel {
    max-width: min(1500px, 100%);
}

.ui-player-filter-panel {
    max-width: min(980px, 100%);
}

@media (max-width: 720px) {
    .ui-report-header {
        display: block;
    }
    .ui-report-actions,
    .ui-toolbar {
        margin-top: .5rem;
    }
}

/* ADDED v2026-05-21.3912: Create League scoped rule package selection. */
.ui-admin-section-row th {
    background: #d1d1d1 !important;
    background-color: #d1d1d1 !important;
    font-size: 0.95rem;
    letter-spacing: 0.01em;
    text-align: left;
}
.ui-admin-rule-package-row select {
    max-width: 34rem;
    width: min(100%, 34rem);
}
.ui-admin-rule-package-row .admin-action-note {
    display: inline-block;
    margin-left: 0.35rem;
}
@media (max-width: 720px) {
    .ui-admin-rule-package-row .admin-action-note {
        display: block;
        margin-left: 0;
        margin-top: 0.35rem;
    }
}
/* ADDED v2026-05-21.3913 - shared component contracts for admin/player normalization. */
.ui-panel,
.ui-summary-card,
.ui-timeline,
.ui-form-table {
    box-sizing: border-box;
}

.ui-panel {
    border: var(--ui-surface-border, 1px solid rgba(0,0,0,.12));
    border-radius: var(--ui-surface-radius, 12px);
    background: var(--ui-surface-bg, rgba(255,255,255,.92));
    padding: var(--ui-surface-padding, 1rem);
    margin-block: var(--ui-surface-gap, 1rem);
}

.ui-panel-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .7rem;
}

.ui-panel-title {
    margin: 0;
}

.ui-panel-body > :first-child,
.ui-card-body > :first-child,
.ui-filter-body > :first-child {
    margin-top: 0;
}

.ui-panel-body > :last-child,
.ui-card-body > :last-child,
.ui-filter-body > :last-child {
    margin-bottom: 0;
}

.ui-report-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: .75rem;
    margin-block: .9rem;
}

.ui-summary-card {
    border: var(--ui-surface-border, 1px solid rgba(0,0,0,.10));
    border-radius: var(--ui-surface-radius, 12px);
    background: var(--ui-summary-bg, rgba(255,255,255,.84));
    padding: .85rem;
    min-width: 0;
}

.ui-summary-label {
    font-size: .78rem;
    line-height: 1.25;
    opacity: .72;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.ui-summary-value {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1.25;
    margin-top: .2rem;
}

.ui-summary-note {
    font-size: .85rem;
    opacity: .78;
    margin-top: .25rem;
}

.ui-form-table th,
.ui-form-table td {
    vertical-align: top;
}

.ui-form-table th:first-child,
.ui-form-table td:first-child {
    width: 28%;
    min-width: 11rem;
}

.ui-timeline {
    list-style: none;
    margin: .85rem 0;
    padding: 0;
}

.ui-timeline-item {
    display: grid;
    grid-template-columns: 1rem 1fr;
    gap: .6rem;
    margin-bottom: .8rem;
}

.ui-timeline-marker {
    width: .65rem;
    height: .65rem;
    border-radius: 999px;
    background: currentColor;
    opacity: .42;
    margin-top: .35rem;
}

.ui-timeline-content {
    min-width: 0;
}

.ui-timeline-title {
    display: block;
}

.ui-timeline-meta {
    display: block;
    font-size: .82rem;
    opacity: .72;
    margin-top: .1rem;
}

.ui-timeline-body {
    margin-top: .25rem;
}

.ui-timeline-empty {
    display: block;
    opacity: .72;
}

@media (max-width: 720px) {
    .ui-panel-header {
        display: block;
    }
    .ui-panel-actions {
        margin-top: .5rem;
    }
    .ui-form-table th:first-child,
    .ui-form-table td:first-child {
        width: auto;
        min-width: 0;
    }
}
/* ADDED v2026-05-21.3913 - admin theme refinements. */
.ui-component-admin,
.ui-admin-page,
.ui-admin-section,
.ui-admin-card,
.ui-admin-panel,
.ui-admin-table-wrap,
.ui-admin-form,
.ui-admin-report-header,
.ui-admin-filter-panel {
    --ui-surface-radius: 12px;
    --ui-surface-padding: 1rem;
    --ui-surface-gap: 1rem;
    --ui-summary-bg: rgba(255,255,255,.90);
}

.ui-admin-page {
    max-width: min(1540px, calc(100vw - 2rem));
}

.ui-admin-panel,
.ui-admin-card,
.ui-admin-section,
.ui-admin-filter-panel,
.ui-admin-table-wrap {
    box-shadow: 0 1px 3px rgba(0,0,0,.05);
}

.ui-admin-toolbar .ui-button,
.ui-admin-actions .ui-button,
.ui-admin-form-actions .ui-button {
    min-height: 2.15rem;
}
/* ADDED v2026-05-21.3913 - player-facing theme refinements. */
.ui-component-player,
.ui-player-page,
.ui-player-section,
.ui-player-card,
.ui-player-panel,
.ui-player-table-wrap,
.ui-player-form,
.ui-player-report-header,
.ui-player-filter-panel {
    --ui-surface-radius: 14px;
    --ui-surface-padding: .9rem;
    --ui-surface-gap: .85rem;
    --ui-summary-bg: rgba(255,255,255,.86);
}

.ui-player-page {
    max-width: min(1040px, calc(100vw - 1rem));
}

.ui-player-toolbar,
.ui-player-actions,
.ui-player-form-actions {
    justify-content: flex-start;
}

@media (max-width: 720px) {
    .ui-player-page {
        max-width: 100%;
        padding-inline: .35rem;
    }
    .ui-player-toolbar .ui-button,
    .ui-player-actions .ui-button,
    .ui-player-form-actions .ui-button {
        width: 100%;
        justify-content: center;
    }
}

/** ADDED v2026-05-21.3914
 * Player/site-side details density normalization.
 * Keep admin diagnostics/details readable, but reduce the stacked vertical space
 * between player-facing details cards generated by Ui_OpenPlayerDetails().
 */
.ui-component-player.ui-player-details-card,
.player-page-container .ui-player-details-card,
.players-container .ui-player-details-card,
.player-profile-details,
.player-availability-details,
.player-match-history-details,
.player-subs-details,
.ui-player-details-card .ui-player-normalized-details > summary,
.player-page-container .ui-normalized-details > summary,
.players-container .ui-normalized-details > summary {
    margin-bottom: 0.28rem;
}

.ui-player-details-card + .ui-player-details-card,
.ui-component-player.ui-player-details-card + .ui-component-player.ui-player-details-card,
.player-page-container .ui-player-details-card + .ui-player-details-card,
.players-container .ui-player-details-card + .ui-player-details-card {
    margin-top: 0.35rem;
}

.ui-player-details-card .ui-normalized-details > :last-child {
    margin-bottom: 0;
}

.profile-photo img.image-oval,
.player-photo img.image-oval,
img.image-oval {
    border-radius: 50%;
    object-fit: cover;
}
/* ADDED v2026-05-21.3915: shared link-card/detail/form-action component contracts. */
.ui-link-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.85rem;
    margin: 0.85rem 0;
}
.ui-link-card {
    display: block;
    text-decoration: none;
    border: 1px solid rgba(0,0,0,0.12);
    border-radius: 12px;
    padding: 0.85rem 0.95rem;
    background: rgba(255,255,255,0.82);
    color: inherit;
    transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease;
}
.ui-link-card:hover,
.ui-link-card:focus-visible {
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(0,0,0,0.10);
    border-color: rgba(0,0,0,0.22);
    outline: none;
}
.ui-link-card-title {
    font-weight: 700;
    line-height: 1.2;
}
.ui-link-card-value {
    margin-top: 0.35rem;
    font-size: 0.92rem;
    font-weight: 600;
    opacity: 0.82;
}
.ui-link-card-detail {
    margin-top: 0.45rem;
    font-size: 0.88rem;
    line-height: 1.35;
    opacity: 0.78;
}
.ui-details-list {
    display: grid;
    gap: 0.65rem;
}
.ui-details-list .ui-details-card,
.ui-player-page details.ui-player-details-card,
.ui-component-player details.ui-player-details-card {
    margin-block: 0.45rem;
}
.ui-details-body {
    padding-top: 0.5rem;
}
.ui-form-actions {
    align-items: center;
    gap: 0.55rem;
    margin-top: 0.85rem;
}
@media (max-width: 640px) {
    .ui-link-card-grid { grid-template-columns: 1fr; gap: 0.65rem; }
    .ui-link-card { padding: 0.75rem 0.8rem; }
    .ui-form-actions { flex-direction: column; align-items: stretch; }
    .ui-form-actions .ui-button { width: 100%; text-align: center; }
}
/* ADDED v2026-05-21.3915: admin-specific component density. */
.ui-admin-link-card {
    background: rgba(255,255,255,0.92);
}
.ui-admin-link-card .ui-link-card-title {
    font-size: 0.98rem;
}
.ui-admin-details-list {
    gap: 0.8rem;
}
/* ADDED v2026-05-21.3915: player-specific component density. */
.ui-player-link-card {
    background: rgba(255,255,255,0.86);
}
.ui-player-link-card .ui-link-card-title {
    font-size: 1rem;
}
.player-about-details,
.player-about-rule-details {
    margin-block: 0.35rem;
}
.player-about-rule-details summary {
    padding-block: 0.45rem;
}

/** ADDED v2026-05-21.3916
 * Stronger sitewide details-density correction.
 * Earlier component rules still inherited large global card margins from the
 * generic `details` block. This late rule intentionally wins the cascade and
 * reduces the visible vertical gap between adjacent details panels across the
 * public/player site and admin tools while preserving readable open-content
 * padding.
 */
:where(details, .ui-details-card, .ui-player-details-card, .ui-admin-details-card, .player-about-details, .player-about-rule-details) {
    margin-block: 0 0.35rem !important;
}

:where(details + details, .ui-details-card + .ui-details-card, .ui-player-details-card + .ui-player-details-card, .ui-admin-details-card + .ui-admin-details-card) {
    margin-top: 0 !important;
}

:where(details) > summary {
    padding-block: 0.48rem !important;
}

:where(details[open]) > summary {
    margin-bottom: 0.45rem !important;
}

:where(.player-page-container, .players-container, .ui-player-page, .site-page-container) :where(details, .ui-details-card, .ui-player-details-card) {
    padding-block: 0.48rem !important;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .admin-report-shell, .admin-action-shell) :where(details, .ui-details-card, .ui-admin-details-card) {
    padding-block: 0.58rem !important;
}


/** ADDED v2026-05-21.3917
 * Corrective sitewide details-density override.
 * Some pages output legacy <br> elements after componentized <details> wrappers,
 * and some parent containers use grid gaps. Hide those legacy spacers and tighten
 * the component gaps instead of relying only on details margins.
 */
:where(.ui-component-details-card, .ui-details-card, .ui-player-details-card, .ui-admin-details-card, details) + br,
:where(details) + br {
    display: none !important;
}

:where(.ui-details-list, .ui-player-page, .player-page-container, .players-container, .site-page-container) {
    gap: 0.35rem !important;
}

:where(.ui-component-details-card, .ui-details-card, .ui-player-details-card, .ui-admin-details-card) {
    margin-top: 0 !important;
    margin-bottom: 0.3rem !important;
    padding-top: 0.35rem !important;
    padding-bottom: 0.35rem !important;
}

:where(.ui-component-details-card, .ui-details-card, .ui-player-details-card, .ui-admin-details-card) > details,
:where(.ui-component-details-card, .ui-details-card, .ui-player-details-card, .ui-admin-details-card) .ui-normalized-details {
    margin: 0 !important;
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
}

:where(.ui-normalized-details, details) > summary {
    padding-top: 0.42rem !important;
    padding-bottom: 0.42rem !important;
}

:where(.ui-normalized-details[open], details[open]) > summary {
    margin-bottom: 0.35rem !important;
}

/* ADDED v2026-05-21.3919: robust routed profile-photo frame/fallback. */
.profile-photo-frame {
    align-items: center;
    display: inline-flex;
    justify-content: center;
    line-height: 0;
    vertical-align: middle;
}
.profile-photo-frame .profile-photo-image {
    display: inline-block;
    object-fit: cover;
}
.profile-photo-frame .profile-initials-avatar[hidden] {
    display: none !important;
}
.profile-photo-frame .profile-photo-image[hidden] + .profile-initials-avatar {
    display: inline-flex !important;
}

/* ADDED v2026-05-21.3920: profile photos render over an always-visible initials fallback. */
.profile-photo-frame.profile-photo-frame-has-image {
    position: relative;
    width: var(--profile-photo-size, 32px);
    height: var(--profile-photo-size, 32px);
    min-width: var(--profile-photo-size, 32px);
    min-height: var(--profile-photo-size, 32px);
    line-height: 1;
}
.profile-photo-frame.profile-photo-frame-has-image .profile-photo-fallback-avatar {
    position: absolute;
    inset: 0;
    z-index: 1;
}
.profile-photo-frame.profile-photo-frame-has-image .profile-photo-image {
    position: absolute;
    inset: 0;
    z-index: 2;
    width: var(--profile-photo-size, 32px) !important;
    height: var(--profile-photo-size, 32px) !important;
    max-width: var(--profile-photo-size, 32px) !important;
    max-height: var(--profile-photo-size, 32px) !important;
    object-fit: cover;
    background: var(--color-page-bg);
}


/* ADDED v2026-05-22.3916: Calendar density corrections.
 * - Team/member legend shrink-wraps to its content instead of expanding the page.
 * - Hour cells have no internal spacing; availability bars fill the full cell width.
 * - Date column is compact and uses the existing two-line weekday/month-day format.
 */
.calendar-container .calendar-team-legend,
.calendar-team-legend.component-calendar-team-legend {
    display: inline-grid !important;
    width: max-content !important;
    min-width: 0 !important;
    max-width: 100% !important;
    justify-content: start !important;
    align-items: start !important;
    justify-items: start !important;
    justify-self: start !important;
    row-gap: 0 !important;
    column-gap: 0 !important;
    margin-inline: 0 auto !important;
    padding: 0 !important;
}

.calendar-container .calendar-team-legend-line.component-calendar-team-legend-row,
.calendar-container .calendar-team-legend-line {
    display: grid !important;
    grid-template-columns: max-content max-content max-content !important;
    width: max-content !important;
    max-width: 100% !important;
    justify-content: start !important;
    align-items: center !important;
    column-gap: 0.45rem !important;
    row-gap: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    min-height: 0 !important;
    line-height: 1.1 !important;
}

.calendar-container .calendar-team-legend-team-cell,
.calendar-container .calendar-team-legend-player-cell,
.calendar-container .calendar-team-legend-player {
    width: max-content !important;
    max-width: 100% !important;
    min-width: 0 !important;
    white-space: nowrap !important;
    line-height: 1.1 !important;
}

.calendar-container .calendar-team-legend-player-empty {
    display: none !important;
}



.table-calendar :where(th, td) {
    padding: 0 !important;
}

.table-calendar .calendar-date-header,
.table-calendar :where(td.datepad, td.calendar-date-cell),
.table-calendar th:first-child {
    width: 1% !important;
    min-width: 0 !important;
    max-width: max-content !important;
    white-space: nowrap !important;
    padding: 0.08rem 0.22rem !important;
    text-align: center !important;
    line-height: 1.05 !important;
}

.table-calendar .calendar-date-dow,
.table-calendar .calendar-date-md,
.table-calendar .calendar-date-header-label {
    display: inline-block;
    white-space: nowrap;
    line-height: 1.05;
}

.table-calendar .calendar-clickable-cell {
    padding: 0 !important;
    min-width: 1.85rem;
    vertical-align: top;
    line-height: 0;
}

.table-calendar .calendar-clickable-cell > div,
.table-calendar .calendar-clickable-cell > :where(.c0, .c1, .c2, .c3, .c4, .c5, .c6, .c7, .c8) {
    display: block !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 100% !important;
    height: 0.48rem !important;
    min-height: 0.48rem !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    line-height: 0 !important;
    font-size: 0 !important;
}

.table-calendar .calendar-clickable-cell > div + div {
    margin-top: 0 !important;
}

@media (max-width: 640px) {
    .calendar-container .calendar-team-legend-line.component-calendar-team-legend-row,
    .calendar-container .calendar-team-legend-line {
        grid-template-columns: max-content max-content max-content !important;
        column-gap: 0.35rem !important;
    }

    .table-calendar .calendar-clickable-cell {
        min-width: 1.55rem;
    }

    .table-calendar .calendar-clickable-cell > div,
    .table-calendar .calendar-clickable-cell > :where(.c0, .c1, .c2, .c3, .c4, .c5, .c6, .c7, .c8) {
        height: 0.42rem !important;
        min-height: 0.42rem !important;
    }
}



/* ADDED v2026-05-22.3921: shared message/confirm/checkbox-table components. */
.ui-message-list {
    margin: 0.45rem 0;
    padding-left: 1.1rem;
}
.ui-message-list-item {
    margin: 0.16rem 0;
    line-height: 1.35;
}
.ui-message-list-item-info { color: var(--text, #222); }
.ui-message-list-item-warning { color: #7a4d00; }
.ui-message-list-item-error { color: #8a1f11; }
.ui-message-list-item-success { color: #176c2f; }
.ui-confirm-box {


    gap: 0.45rem;
    margin: 0.65rem 0;
    padding: 0.6rem 0.7rem;
    border: 1px solid rgba(0,0,0,0.12);
    border-radius: 0.55rem;
    background: rgba(0,0,0,0.025);
    line-height: 1.35;
}
.ui-admin-confirm-box {
    background: rgba(40, 80, 120, 0.045);
}
.ui-player-confirm-box {
    background: rgba(40, 120, 80, 0.04);
}
.ui-checkbox-table input[type='checkbox'] {
    transform: translateY(0.08rem);
}
.ui-admin-table.ui-checkbox-table th:first-child,
.ui-admin-table.ui-checkbox-table td:first-child,
.ui-player-table.ui-checkbox-table th:first-child,
.ui-player-table.ui-checkbox-table td:first-child {
    width: 1%;
    white-space: nowrap;
    text-align: center;
}
.ui-admin-page .ui-report-table-card,
.ui-player-page .ui-report-table-card {
    overflow-x: auto;
}

/* ADDED v2026-05-22.3921: admin/player theme hooks. */
.ui-admin-message-list { font-size: 0.96rem; }
.ui-player-message-list { font-size: 0.98rem; }
.ui-admin-confirm-box { border-color: rgba(40,80,120,0.18); }
.ui-player-confirm-box { border-color: rgba(40,120,80,0.16); }
/* ADDED v2026-05-22.3922: focused player-facing CSS/UX normalization.
 * Scope: player/public pages only. Admin layout remains governed by admin-theme files.
 */
:root {
    --player-surface-max-width: min(100%, 1100px);
    --player-surface-pad-y: clamp(0.45rem, 1vw, 0.85rem);
    --player-surface-pad-x: clamp(0.55rem, 1.6vw, 1rem);
    --player-section-gap: 0.38rem;
    --player-card-radius: 0.72rem;
    --player-table-cell-y: 0.22rem;
    --player-table-cell-x: 0.38rem;
}

/* Canonical public/player page shell. */
.ui-component-player.ui-component-container,
.ui-player-container,
.player-normalized-page,
.player-page-compact,
.player-calendar-page,
.player-team-profile-page,
.player-stats-page,
.player-feedback-page,
.player-donate-page,
.season-select-page {
    box-sizing: border-box;
    width: var(--player-surface-max-width);
    max-width: 100%;
    margin: 0 auto;
    padding: var(--player-surface-pad-y) var(--player-surface-pad-x);
}

.player-page-compact {
    padding-top: 0.35rem;
    padding-bottom: 0.45rem;
}

/* Canonical public/player sections and cards. */
.ui-component-player.ui-component-section,
.ui-player-section,
.player-normalized-section,
.player-section-card,
.ui-player-card,
.player-profile-card,
.stats-overview-card,
.stats-progress-panel,
.player-feedback-page .ui-component-section,
.player-recent-feedback-section {
    box-sizing: border-box;
    max-width: 100%;
    margin: var(--player-section-gap) 0;
    padding: 0.58rem 0.68rem;
    border-radius: var(--player-card-radius);
}

.ui-player-page-header,
.ui-player-section-title,
.ui-player-card-title,
.player-section-heading {
    margin-block: 0 0.32rem;
    line-height: 1.15;
}

.ui-page-intro,
.ui-section-intro,
.player-inline-message {
    margin-block: 0.18rem 0.42rem;
    line-height: 1.32;
}

/* Unified details density for all public/player details sections. */
body:not(.admin) :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details) {
    box-sizing: border-box;
    max-width: 100%;
    margin-block: 0.26rem !important;
    padding: 0 !important;
    border-radius: 0.62rem;
    overflow: clip;
}

body:not(.admin) :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details) > summary {
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0.34rem 0.55rem !important;
    line-height: 1.16 !important;
    cursor: pointer;
}

body:not(.admin) :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details)[open] {
    padding-bottom: 0.36rem !important;
}

body:not(.admin) :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details) > :where(div, p, ul, ol, table, section, .table-container, .ui-details-body):not(summary) {
    margin-top: 0.34rem;
    margin-bottom: 0.34rem;
}

/* Remove legacy visual gaps without altering document semantics. */
body:not(.admin) :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section) + br {
    display: none !important;
}

/* FIX v2026-05-22.3927:
 * Do not hide components that follow legacy <br> spacers. Earlier density cleanup
 * used `br + details` / `br + .ui-player-details-card`, which removed About
 * sections after League Details and removed the player-owned My Profile panel
 * after the profile-summary break. Only the spacer <br> should be hidden.
 */
body:not(.admin) br + :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section) {
    display: revert !important;
}

/* Unified public/player tables. */
body:not(.admin) :where(.table-container, .ui-player-table-wrap, .ui-component-player.ui-component-table-wrap) {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    margin-block: 0.32rem;
}

body:not(.admin) :where(table, .ui-player-table, .table-calendar) {
    max-width: 100%;
    border-collapse: collapse;
}

body:not(.admin) :where(th, td) {
    line-height: 1.22;
}

body:not(.admin) :where(.ui-player-table, .table-container > table, .stats-details table, .team-profile-section table, .profile-summary-table) :where(th, td) {
    padding: var(--player-table-cell-y) var(--player-table-cell-x);
    vertical-align: middle;
}

body:not(.admin) :where(.profile-summary-table th, .team-profile-section table th, .stats-details table th) {
    width: 1%;
    white-space: nowrap;
}

body:not(.admin) :where(.stats-player-link-cell, .stats-player-cell, .team-profile-member-name, .stacked-name) {
    overflow-wrap: anywhere;
}

/* Unified public/player forms. */
body:not(.admin) :where(.ui-player-form, .player-normalized-form, form.player-normalized-form, .season-select-form, .player-feedback-page form) {
    box-sizing: border-box;
    max-width: 100%;
    margin-block: 0.4rem;
}

body:not(.admin) :where(input:not([type='checkbox']):not([type='radio']):not([type='hidden']), select, textarea) {
    box-sizing: border-box;
    max-width: 100%;
}

body:not(.admin) :where(.ui-player-actions, .ui-player-form-actions, .player-action-row, .season-select-list) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.36rem;
    margin-block: 0.42rem;
}

/* Player profile/team profile alignment. */
.profile-summary-wrap.player-profile-card,
.team-profile-member-grid {
    width: max-content;
    max-width: 100%;
}

.team-profile-member-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: 0.45rem;
    margin-block: 0.35rem;
}

.team-profile-member-card {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
    padding: 0.42rem 0.5rem;
    border-radius: 0.62rem;
}

.team-profile-member-info {
    min-width: 0;
}

.team-profile-member-meta {
    line-height: 1.2;
}

/* Player calendar stays dense while remaining inside the normalized player shell. */
.player-calendar-page .calendar-instructions-heading {
    font-size: 0.98rem;
    font-weight: 600;
}

.player-calendar-page .table-calendar {
    width: auto;
    max-width: 100%;
}

/* Mobile player pages: reduce chrome before reducing content. */
@media (max-width: 720px) {
    :root {
        --player-surface-pad-y: 0.32rem;
        --player-surface-pad-x: 0.38rem;
        --player-section-gap: 0.24rem;
        --player-table-cell-y: 0.18rem;
        --player-table-cell-x: 0.28rem;
    }

    .ui-component-player.ui-component-container,
    .ui-player-container,
    .player-normalized-page,
    .player-page-compact {
        padding-inline: var(--player-surface-pad-x);
    }

    body:not(.admin) :where(details, .ui-player-details-card, .player-details-card, .stats-details, .team-profile-section) > summary {
        padding: 0.3rem 0.44rem !important;
    }

    .profile-summary-wrap.player-profile-card,
    .team-profile-member-grid {
        width: 100%;
    }
}


/* Step 3923: Stats moved from main nav into About. */
.player-about-stats-details .player-about-stats-links,
.player-about-stats-links {
    display: grid;
    gap: 0.35rem;
}

.player-about-stats-links p {
    margin: 0;
}

.player-about-stats-links .ui-link-button,
.player-about-stats-links .ui-player-link-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    max-width: 100%;
}

@media (max-width: 640px) {
    .player-about-stats-links .ui-link-button,
    .player-about-stats-links .ui-player-link-button {
        width: 100%;
    }
}

/* ADDED v2026-05-22.3923
   Unified component density and responsive defaults.
   Keep admin/player themes visually distinct while normalizing behavior. */
:root {
    --ui-space-2xs: 0.125rem;
    --ui-space-xs: 0.25rem;
    --ui-space-sm: 0.5rem;
    --ui-space-md: 0.75rem;




    --ui-border-subtle: rgba(0,0,0,0.14);
    --ui-shadow-soft: 0 1px 3px rgba(0,0,0,0.08);
    --ui-max-readable: 76rem;
    --ui-max-player: 60rem;
    --ui-max-admin: 96rem;
}

.ui-surface-page,
.ui-component-container {
    width: min(100%, var(--ui-max-readable));
    margin-inline: auto;
    padding-inline: clamp(0.5rem, 2vw, 1.25rem);
}
.ui-admin-page { width: min(100%, var(--ui-max-admin)); }
.ui-player-page { width: min(100%, var(--ui-max-player)); }
.ui-page-header { margin-block: var(--ui-space-md) var(--ui-space-lg); }
.ui-page-header h1,
.ui-page-header h2,
.ui-section-title,
.ui-card-title { margin-block: 0 var(--ui-space-sm); line-height: 1.2; }
.ui-section-intro,
.ui-page-intro { margin-block: 0 var(--ui-space-md); max-width: 70ch; }
.ui-card,
.ui-panel,
.ui-report-card,
.ui-details-card,
.ui-component-section,
.ui-filter-panel,
.ui-page-note {
    border: 1px solid var(--ui-border-subtle);
    border-radius: var(--ui-radius-lg);
    box-shadow: var(--ui-shadow-soft);
    background: var(--surface-bg, #fff);
}
.ui-card,
.ui-panel,
.ui-report-card,
.ui-filter-panel,
.ui-page-note { padding: var(--ui-space-md); margin-block: var(--ui-space-md); }
.ui-component-section { padding: var(--ui-space-md); margin-block: var(--ui-space-md); }
.ui-details-card { margin-block: var(--ui-space-sm); overflow: clip; }
.ui-details-card > summary,
.ui-normalized-details > summary,
details.ui-player-details-card > summary,
details.ui-admin-details-card > summary {
    cursor: pointer;
    padding: var(--ui-space-sm) var(--ui-space-md);
    line-height: 1.25;
}
.ui-normalized-details > :not(summary),
details.ui-player-details-card > :not(summary),
details.ui-admin-details-card > :not(summary) { margin-inline: var(--ui-space-md); }
.ui-normalized-details > :last-child,
details.ui-player-details-card > :last-child,
details.ui-admin-details-card > :last-child { margin-bottom: var(--ui-space-md); }
.ui-stack {  gap: var(--ui-space-sm); }
.ui-inline-meta {   gap: var(--ui-space-xs) var(--ui-space-md);  }
.ui-inline-meta-item { display: inline-flex; gap: var(--ui-space-xs); align-items: baseline; }
.ui-card-grid,
.ui-component-grid,
.ui-link-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: var(--ui-space-md); }
.ui-action-row,
.ui-compact-actions,
.ui-form-actions { display: flex; flex-wrap: wrap; gap: var(--ui-space-sm); align-items: center; }
.ui-table-container { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ui-table,
.ui-component-table { width: 100%; border-collapse: collapse; }
.ui-table th,
.ui-table td,
.ui-component-table th,
.ui-component-table td { padding: var(--ui-space-sm); vertical-align: top; }
.ui-field-row {  gap: var(--ui-space-xs); margin-block: var(--ui-space-sm); }
.ui-field-row label,
.ui-field-row .ui-field-label { font-weight: 600; }
.ui-admin-page .ui-card,
.ui-admin-page .ui-panel,
.ui-admin-page .ui-component-section { --surface-bg: #fff; }
.ui-player-page .ui-card,
.ui-player-page .ui-panel,
.ui-player-page .ui-component-section { --surface-bg: rgba(255,255,255,0.96); }
@media (max-width: 700px) {
    .ui-surface-page,
    .ui-component-container { padding-inline: 0.5rem; }
    .ui-card,
    .ui-panel,
    .ui-report-card,
    .ui-component-section,
    .ui-filter-panel,
    .ui-page-note { padding: var(--ui-space-sm); margin-block: var(--ui-space-sm); }
    .ui-action-row,
    .ui-compact-actions,
    .ui-form-actions { align-items: stretch; }
    .ui-action-row > *,
    .ui-compact-actions > *,
    .ui-form-actions > * { max-width: 100%; }
    .ui-table th,
    .ui-table td,
    .ui-component-table th,
    .ui-component-table td { padding: var(--ui-space-xs) var(--ui-space-sm); }
}


/* ADDED v2026-05-22.3923: Admin theme refinements. */
.ui-admin-page,
.ui-component-admin { --ui-admin-accent: #29364a; }
.ui-admin-page .ui-page-header,
.ui-component-admin .ui-page-header { border-bottom: 1px solid var(--ui-border-subtle); padding-bottom: var(--ui-space-sm); }
.ui-admin-details-card { background: #fff; }
.ui-admin-table th { white-space: nowrap; }
.ui-admin-page input,
.ui-admin-page select,
.ui-admin-page textarea { max-width: 100%; }
@media (min-width: 900px) {
    .ui-admin-page .ui-field-row { grid-template-columns: minmax(11rem, 16rem) minmax(0, 1fr); align-items: start; }
}


/* ADDED v2026-05-22.3923: Player theme refinements. */
.ui-player-page,
.ui-component-player { --ui-player-accent: #1d5f64; }
.ui-player-page .ui-page-header,
.ui-component-player .ui-page-header { text-align: left; }
.ui-player-details-card { background: rgba(255,255,255,0.96); }
.ui-player-page details + details,
.ui-player-page .ui-details-card + .ui-details-card,
.ui-component-player details + details { margin-top: var(--ui-space-xs) !important; }
.ui-player-page .ui-table th,
.ui-player-page .ui-table td { padding-block: var(--ui-space-xs); }
@media (max-width: 700px) {
    .ui-player-page { font-size: 0.98rem; }
    .ui-player-page .ui-page-header { margin-block: var(--ui-space-sm); }
}


/* ADDED v2026-05-22.3924: consolidated shared component normalization. */
:root {
    --ui-gap-xs: .25rem;
    --ui-gap-sm: .45rem;
    --ui-gap-md: .75rem;
    --ui-gap-lg: 1rem;
    --ui-radius-sm: .35rem;
    --ui-radius-md: .65rem;
    --ui-radius-lg: .9rem;
    --ui-border-soft: 1px solid rgba(0,0,0,.12);
    --ui-shadow-soft: 0 1px 2px rgba(0,0,0,.06);
    --ui-line-height: 1.42;
}
.ui-component { box-sizing: border-box; }
.ui-component-container, .ui-admin-container, .ui-player-container { width: min(100%, var(--ui-page-max-width, 1180px)); margin-inline: auto; }
.ui-card, .ui-panel, .ui-report-card, .ui-data-table-card, .ui-action-panel, .ui-callout, .ui-fieldset { border: var(--ui-border-soft); border-radius: var(--ui-radius-md); box-shadow: var(--ui-shadow-soft); background: var(--ui-surface-bg, #fff); }
.ui-card, .ui-panel, .ui-report-card, .ui-data-table-card, .ui-action-panel, .ui-callout { padding: var(--ui-card-padding, .75rem); }
.ui-content-grid, .ui-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); gap: var(--ui-grid-gap, .75rem); align-items: start; }
.ui-stack { display: grid; gap: var(--ui-stack-gap, .5rem); }
.ui-inline-meta { display: flex; flex-wrap: wrap; gap: .35rem .75rem; align-items: center; font-size: .92em; opacity: .92; }
.ui-action-row, .ui-compact-actions { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.ui-table-container, .table-container { max-width: 100%; overflow-x: auto; }
.ui-table, .admin-table, .ui-player-table { width: 100%; border-collapse: collapse; }
.ui-table th, .ui-table td, .admin-table th, .admin-table td, .ui-player-table th, .ui-player-table td { vertical-align: top; line-height: var(--ui-line-height); }
.ui-field-row { display: grid; grid-template-columns: minmax(8rem, 14rem) minmax(0, 1fr); gap: .35rem .75rem; align-items: start; }
.ui-field-row-control :is(input,select,textarea) { max-width: 100%; }
.ui-form-actions { margin-top: .75rem; }
.ui-callout-title { display: block; margin-bottom: .25rem; }
.ui-page-note { border-radius: var(--ui-radius-sm); padding: .55rem .7rem; border: var(--ui-border-soft); }
@media (max-width: 760px) {
    :root { --ui-card-padding: .62rem; --ui-grid-gap: .55rem; }
    .ui-field-row { grid-template-columns: 1fr; }
    .ui-action-row, .ui-compact-actions { align-items: stretch; }
    .ui-action-row > *, .ui-compact-actions > * { max-width: 100%; }
    .ui-table th, .ui-table td, .admin-table th, .admin-table td, .ui-player-table th, .ui-player-table td { padding: .38rem .45rem; }
}

/* ADDED v2026-05-22.3924: admin theme consistency pass. */
.ui-admin-container { --ui-page-max-width: 1380px; --ui-surface-bg: #fff; --ui-card-padding: .85rem; --ui-grid-gap: .85rem; }
.ui-admin-card, .ui-admin-panel, .ui-admin-data-table-card, .ui-admin-report-card, .ui-admin-action-panel { background: #fff; }
.ui-admin-details-card, .ui-admin-container details { margin-block: .55rem; }
.ui-admin-details-card > summary, .ui-admin-container details > summary { padding: .55rem .7rem; cursor: pointer; }
.ui-admin-form :is(input,select,textarea), .admin-feedback-action-form textarea { width: min(100%, 46rem); }
.admin-feedback-action-form textarea { min-width: 14rem; }
.admin-feedback-actions { margin-top: .35rem; }
@media (max-width: 900px) {
    .ui-admin-container { --ui-card-padding: .7rem; }
    .admin-feedback-table-card .ui-table { min-width: 58rem; }
}

/* ADDED v2026-05-22.3924: player theme consistency pass. */
.ui-player-container { --ui-page-max-width: 1040px; --ui-surface-bg: #fff; --ui-card-padding: .68rem; --ui-grid-gap: .6rem; }
.ui-player-card, .ui-player-panel, .ui-player-data-table-card, .ui-player-action-panel { background: #fff; }
.ui-player-details-card, .ui-player-container details, .player-page details { margin-block: .28rem !important; }
.ui-player-details-card > summary, .ui-player-container details > summary, .player-page details > summary { padding: .38rem .55rem !important; }
.ui-player-details-card > :not(summary), .ui-player-container details > :not(summary) { margin-top: .35rem; }
.ui-player-form :is(input,select,textarea), .player-feedback-form :is(input,select,textarea) { width: min(100%, 40rem); }
.player-feedback-form .ui-field-row { grid-template-columns: minmax(7rem, 11rem) minmax(0, 1fr); }
.player-recent-feedback-section .ui-table { min-width: 34rem; }
@media (max-width: 680px) {
    .ui-player-container { --ui-card-padding: .55rem; }
    .player-feedback-form .ui-field-row { grid-template-columns: 1fr; }
    .ui-player-container { padding-inline: .35rem; }
}


/* ADDED v2026-05-22.3925: unified component density and responsive defaults. */
:root {
    --ui-space-2xs: .18rem;
    --ui-space-xs: .32rem;
    --ui-space-sm: .5rem;
    --ui-space-md: .75rem;
    --ui-space-lg: 1rem;
    --ui-space-xl: 1.35rem;
    --ui-focus-ring: 0 0 0 3px rgba(38, 132, 255, .24);
}
.ui-section-header { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--ui-space-md); margin-bottom: var(--ui-space-sm); }
.ui-section-header-copy h3 { margin: 0; }
.ui-section-header-copy p { margin: .18rem 0 0; color: var(--ui-muted-text, #5f6368); }
.ui-metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr)); gap: var(--ui-space-sm); }
.ui-metric-card { display: grid; gap: .15rem; padding: var(--ui-space-sm); border: var(--ui-border-soft); border-radius: var(--ui-radius-md); background: var(--ui-surface-bg, #fff); }
.ui-metric-label, .ui-metric-note { font-size: .84rem; color: var(--ui-muted-text, #5f6368); }
.ui-metric-value { font-size: clamp(1rem, 1.7vw, 1.35rem); line-height: 1.1; }
.ui-inline-form { display: inline-flex; flex-wrap: wrap; gap: var(--ui-space-xs); align-items: center; margin: 0; }
.ui-inline-form :is(input, select, textarea) { max-width: 100%; }
.ui-responsive-table-card .ui-table-container { margin-top: var(--ui-space-sm); }
.ui-component :is(button, .admin-button, .player-button, .ui-button, input, select, textarea):focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ui-component details { overflow: clip; }
.ui-component summary { touch-action: manipulation; }
@media (max-width: 760px) {
    .ui-section-header { display: grid; gap: var(--ui-space-xs); }
    .ui-section-header-actions { justify-content: flex-start; }
    .ui-inline-form { display: grid; width: 100%; }
    .ui-inline-form-submit { width: 100%; }
}


/* ADDED v2026-05-22.3925: admin theme cleanup and desktop-first consistency. */
.ui-component-admin { --ui-muted-text: #4f5b66; }
.ui-admin-container, .ui-component-admin { --ui-page-max-width: 1380px; }
.ui-admin-section, .ui-admin-card, .ui-admin-panel, .ui-admin-report-card { margin-block: var(--ui-space-md); }
.ui-admin-metric-card { min-height: 4.25rem; }
.ui-admin-table-wrap { border-radius: var(--ui-radius-md); }
.ui-admin-inline-form textarea { min-width: min(22rem, 100%); }
.ui-admin-page-header { margin-block: var(--ui-space-md); }
@media (max-width: 820px) {
    .ui-admin-container { padding-inline: var(--ui-space-sm); }
    .ui-admin-table { font-size: .92rem; }
    .ui-admin-section, .ui-admin-card, .ui-admin-panel { margin-block: var(--ui-space-sm); }
}


/* ADDED v2026-05-22.3925: player theme cleanup and mobile-first consistency. */
.ui-component-player { --ui-muted-text: #53605f; }
.ui-player-container, .ui-component-player { --ui-page-max-width: 1040px; }
.ui-player-section, .ui-player-card, .ui-player-panel, .ui-player-report-card { margin-block: var(--ui-space-sm); }
.ui-player-metric-card { min-height: 3.8rem; }
.ui-player-details-card { border-radius: var(--ui-radius-md); }
.ui-player-details-card + .ui-player-details-card, .player-page details + details { margin-top: var(--ui-space-2xs) !important; }
.ui-player-table-wrap { border-radius: var(--ui-radius-md); }
.ui-player-page-header { margin-block: var(--ui-space-sm); }
@media (max-width: 680px) {
    .ui-player-container { padding-inline: var(--ui-space-xs); }
    .ui-player-table { font-size: .9rem; }
    .ui-player-section, .ui-player-card, .ui-player-panel { margin-block: var(--ui-space-xs); }
    .ui-player-metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}



/* ADDED v2026-05-22.3928: About -> Stats renders inline instead of redirecting. */
.player-about-stats-inline {
    padding: 0.25rem 0 0;
}
.player-about-stats-inline .player-stats-page {
    margin: 0;
    padding: 0;
    max-width: none;
}
.player-about-stats-inline .stats-overview-card {
    margin-top: 0.35rem;
}
.player-about-stats-inline .stats-overview-card > h3:first-child {
    margin-top: 0;
}


/* ADDED v2026-05-22.3928: Unified expandable-section summary treatment.
 * Ensure all <details> summaries share the same left accent/curved highlight,
 * including stats sections rendered from older presentation helpers.
 */
:root {
    --ui-expandable-summary-accent: var(--color-accent, #aaffaa);
    --ui-expandable-summary-bg: var(--ui-subtle-bg, rgba(170,255,170,0.12));
}

:where(details, .ui-details-card, .ui-player-details-card, .ui-admin-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details) > summary {
    box-sizing: border-box;
    display: list-item;
    border-left: 0.38rem solid var(--ui-expandable-summary-accent) !important;
    border-top-left-radius: 0.64rem !important;
    border-bottom-left-radius: 0.64rem !important;
    background: var(--ui-expandable-summary-bg) !important;
    padding-left: max(0.55rem, var(--ui-space-sm, 0.5rem)) !important;
}

:where(details[open], .ui-details-card[open], .ui-player-details-card[open], .ui-admin-details-card[open], .stats-details[open], .team-profile-section[open], .player-about-details[open], .player-about-rule-details[open]) > summary {
    border-bottom-left-radius: 0.28rem !important;
}

:where(.ui-player-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details) > summary {
    --ui-expandable-summary-accent: var(--color-accent, #aaffaa);
    --ui-expandable-summary-bg: color-mix(in srgb, var(--color-accent, #aaffaa) 22%, #fff 78%);
}

:where(.ui-admin-details-card, .admin-card, .admin-dashboard-details, .admin-report-section, .admin-health-details) > summary {
    --ui-expandable-summary-accent: var(--color-primary, #29364a);
    --ui-expandable-summary-bg: color-mix(in srgb, var(--color-primary, #29364a) 10%, #fff 90%);
}

@supports not (background: color-mix(in srgb, #fff 50%, #000 50%)) {
    :where(.ui-player-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details) > summary {
        --ui-expandable-summary-bg: #f2fff2;
    }
    :where(.ui-admin-details-card, .admin-card, .admin-dashboard-details, .admin-report-section, .admin-health-details) > summary {
        --ui-expandable-summary-bg: #f4f6f8;
    }
}

/* === Step 3928: canonical admin/player theme consolidation ===
   Keep selectors named and scoped. Avoid broad sibling selectors that can hide sections. */
:root {
  --ui-space-0: 0;
  --ui-space-1: 0.25rem;
  --ui-space-2: 0.5rem;
  --ui-space-3: 0.75rem;
  --ui-space-4: 1rem;
  --ui-space-5: 1.25rem;
  --ui-radius-sm: 0.375rem;
  --ui-radius-md: 0.625rem;
  --ui-radius-lg: 0.875rem;
  --ui-border-soft: 1px solid rgba(15, 23, 42, 0.12);
  --ui-shadow-soft: 0 1px 2px rgba(15, 23, 42, 0.06);
  --ui-max-player-width: 72rem;
  --ui-max-admin-width: 116rem;
}

.ui-page,
.ui-admin-page,
.ui-player-page {
  box-sizing: border-box;
  width: 100%;
  margin-left: auto;
  margin-right: auto;
}

.ui-admin-page {
  max-width: var(--ui-max-admin-width);
  padding-inline: clamp(var(--ui-space-2), 1.5vw, var(--ui-space-5));
}

.ui-player-page {
  max-width: var(--ui-max-player-width);
  padding-inline: clamp(var(--ui-space-2), 3vw, var(--ui-space-4));
}

.ui-card,
.ui-panel,
.ui-section,
.ui-report-card,
.ui-data-table-card,
.ui-action-panel,
.ui-admin-card,
.ui-player-card {
  box-sizing: border-box;
  max-width: 100%;
  border-radius: var(--ui-radius-lg);
  border: var(--ui-border-soft);
  box-shadow: var(--ui-shadow-soft);
  overflow-wrap: anywhere;
}

.ui-card-grid,
.ui-content-grid,
.ui-link-card-grid,
.ui-metric-grid {
  display: grid;
  gap: var(--ui-space-3);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  align-items: stretch;
}

.ui-stack,
.ui-admin-stack,
.ui-player-stack,
.ui-report-surface,
.ui-generated-output {
  display: flex;
  flex-direction: column;
  gap: var(--ui-space-3);
}

.ui-toolbar,
.ui-action-row,
.ui-form-actions,
.ui-compact-actions,
.ui-admin-toolbar,
.ui-player-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ui-space-2);
}

.ui-table-wrap,
.ui-responsive-table-card,
.ui-data-table-card,
.ui-report-table-card {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.ui-table-wrap table,
.ui-responsive-table-card table,
.ui-data-table-card table,
.ui-report-table-card table,
.ui-admin-page table,
.ui-player-page table {
  max-width: 100%;
}

.ui-admin-page input,
.ui-admin-page select,
.ui-admin-page textarea,
.ui-player-page input,
.ui-player-page select,
.ui-player-page textarea {
  max-width: 100%;
  box-sizing: border-box;
}

.ui-field-row,
.ui-inline-form,
.ui-filter-panel {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: var(--ui-space-2) var(--ui-space-3);
}

.ui-field-row > *,
.ui-inline-form > *,
.ui-filter-panel > * {
  min-width: 0;
}

.ui-admin-page details,
.ui-player-page details,
.player-page details,
.site-page details {
  max-width: 100%;
  box-sizing: border-box;
}

.ui-admin-page details + details,
.ui-admin-page .ui-details-card + .ui-details-card,
.ui-admin-page .ui-admin-details-card + .ui-admin-details-card {
  margin-top: var(--ui-space-3);
}

.ui-player-page details + details,
.ui-player-page .ui-details-card + .ui-details-card,
.ui-player-page .ui-player-details-card + .ui-player-details-card,
.player-page details + details,
.site-page details + details {
  margin-top: var(--ui-space-2);
}

.ui-admin-page summary,
.ui-player-page summary,
.player-page summary,
.site-page summary {
  cursor: pointer;
  min-height: 2.25rem;
}

.ui-player-page .ui-action-row,
.ui-player-page .ui-form-actions,
.player-page .ui-action-row,
.player-page .ui-form-actions {
  gap: var(--ui-space-2);
}

@media (max-width: 720px) {
  .ui-admin-page,
  .ui-player-page {
    padding-inline: var(--ui-space-2);
  }

  .ui-field-row,
  .ui-inline-form,
  .ui-filter-panel,
  .ui-toolbar,
  .ui-action-row,
  .ui-form-actions,
  .ui-compact-actions {
    align-items: stretch;
  }

  .ui-field-row > *,
  .ui-inline-form > *,
  .ui-filter-panel > * {
    flex: 1 1 100%;
  }

  .ui-action-row > a,
  .ui-action-row > button,
  .ui-action-row > input[type="submit"],
  .ui-form-actions > a,
  .ui-form-actions > button,
  .ui-form-actions > input[type="submit"] {
    flex: 1 1 auto;
  }
}



/* ADDED v2026-05-22.3929: Admin-wide table overflow safety.
   Admin reports often contain long file paths, SQL names, diagnostics output, or
   category labels. Any admin table that is not already wrapped by a helper must
   remain contained by its parent and become horizontally scrollable instead of
   expanding the surrounding card/details/div. */
:where(
  body:has(.admin-subnav),
  body:has(.admin-page-container),
  body:has(.ui-admin-page),
  body:has(.admin-report-shell),
  body:has(.admin-dashboard-container),
  body:has(.admin-development-container),
  body:has(.admin-diagnostics-container)
) :where(
  .mainbody,
  .content,
  .main-content,
  .page-container,
  .admin-page-container,
  .ui-admin-page,
  .admin-report-shell,
  .admin-dashboard-container,
  .admin-development-container,
  .admin-diagnostics-container,
  .ui-admin-container,
  .ui-admin-card,
  .ui-admin-panel,
  .ui-admin-details-card,
  details
) {
  min-width: 0;
  max-width: 100%;
}

:where(
  .admin-page-container,
  .ui-admin-page,
  .admin-report-shell,
  .admin-dashboard-container,
  .admin-development-container,
  .admin-diagnostics-container,
  .ui-admin-container,
  .ui-admin-card,
  .ui-admin-panel,
  .ui-admin-details-card,
  .ui-admin-report-card,
  .ui-admin-table-card,
  .ui-admin-form,
  details
) :where(.table-container, .ui-table-container, .admin-table-container, .admin-table-scroll, .table-scroll, .wide-table, .responsive-table, .ui-table-wrap, .ui-admin-table-wrap) {
  display: block;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto !important;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-inline: contain;
}

:where(
  .admin-page-container,
  .ui-admin-page,
  .admin-report-shell,
  .admin-dashboard-container,
  .admin-development-container,
  .admin-diagnostics-container,
  .ui-admin-container,
  .ui-admin-card,
  .ui-admin-panel,
  .ui-admin-details-card,
  .ui-admin-report-card,
  .ui-admin-table-card,
  details
) :where(table):not(.calendar-table):not(.availability-table):not(.admin-no-scroll-table):not(.ui-no-scroll-table) {
  max-width: 100%;
  width: max-content;
  min-width: min(100%, max-content);
}

:where(
  .admin-page-container,
  .ui-admin-page,
  .admin-report-shell,
  .admin-dashboard-container,
  .admin-development-container,
  .admin-diagnostics-container,
  .ui-admin-container,
  .ui-admin-card,
  .ui-admin-panel,
  .ui-admin-details-card,
  .ui-admin-report-card,
  .ui-admin-table-card,
  details
) > :where(table):not(.calendar-table):not(.availability-table):not(.admin-no-scroll-table):not(.ui-no-scroll-table) {
  display: block;
  overflow-x: auto !important;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}

:where(.ui-admin-table, .admin-page-container table, .admin-report-shell table) :where(th, td) {
  max-width: 32rem;
  overflow-wrap: anywhere;
}

:where(.ui-admin-table, .admin-page-container table, .admin-report-shell table) :where(td code, th code) {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

@media (max-width: 760px) {
  :where(.admin-page-container, .ui-admin-page, .admin-report-shell) :where(table):not(.admin-no-scroll-table):not(.ui-no-scroll-table) {
    font-size: 0.92rem;
  }
}


/* ADDED v2026-05-22.3934: Unified admin severity outlines/backgrounds.
   Keep error/warning/info/none/ok visual treatment consistent across admin
   dashboards, diagnostics, readiness reports, approval summaries and legacy
   details wrappers. Later cascade only; no markup changes required. */
:root {
  --admin-severity-error-border: var(--color-message-error, #c2410c);
  --admin-severity-error-bg: #fff1f0;
  --admin-severity-error-summary-bg: #ffe4e0;
  --admin-severity-error-text: #7a271a;
  --admin-severity-warning-border: var(--color-message-warning, #b76e00);
  --admin-severity-warning-bg: #fff8e6;
  --admin-severity-warning-summary-bg: #fff0c2;
  --admin-severity-warning-text: #7a3b00;
  --admin-severity-info-border: var(--color-status-info, #2563eb);
  --admin-severity-info-bg: var(--color-status-info-bg, #eef7ff);
  --admin-severity-info-summary-bg: #dbeafe;
  --admin-severity-info-text: #174ea6;
  --admin-severity-neutral-border: var(--css-color-ddd, #ddd);
  --admin-severity-neutral-bg: var(--css-color-fff, #fff);
  --admin-severity-neutral-summary-bg: var(--css-color-f7f7f7, #f7f7f7);
  --admin-severity-neutral-text: var(--css-color-222, #222);
}

:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-error,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-error {
  border-color: var(--admin-severity-error-border) !important;
  background: var(--admin-severity-error-bg) !important;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--admin-severity-error-border) 35%, transparent) !important;
}
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-error > summary,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-error > summary {
  background: var(--admin-severity-error-summary-bg) !important;
  color: var(--admin-severity-error-text) !important;
  border-left: .4rem solid var(--admin-severity-error-border) !important;
}

:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-warning,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-warning {
  border-color: var(--admin-severity-warning-border) !important;
  background: var(--admin-severity-warning-bg) !important;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--admin-severity-warning-border) 35%, transparent) !important;
}
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-warning > summary,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-warning > summary {
  background: var(--admin-severity-warning-summary-bg) !important;
  color: var(--admin-severity-warning-text) !important;
  border-left: .4rem solid var(--admin-severity-warning-border) !important;
}

:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-info,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-info {
  border-color: var(--admin-severity-info-border) !important;
  background: var(--admin-severity-info-bg) !important;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--admin-severity-info-border) 35%, transparent) !important;
}
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-info > summary,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-info > summary {
  background: var(--admin-severity-info-summary-bg) !important;
  color: var(--admin-severity-info-text) !important;
  border-left: .4rem solid var(--admin-severity-info-border) !important;
}

:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-none,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-ok,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-no-findings {
  border-color: var(--admin-severity-neutral-border) !important;
  background: var(--admin-severity-neutral-bg) !important;
  box-shadow: none !important;
}
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-none > summary,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(details.admin-section,details.admin-health-details,details.dashboard-exclusive-details,details.database-tools-exclusive-details).admin-section-outline-ok > summary,
:where(.admin-page-container,.admin-dashboard-container,.admin-development-container,.admin-diagnostics-container,.diagnostics-container,.approvals-container,.admin-report-shell,.admin-action-shell,.admin-tool-page)
:where(.admin-section,.admin-health-details,.dashboard-exclusive-details,.database-tools-exclusive-details).has-no-findings > summary {
  background: var(--admin-severity-neutral-summary-bg) !important;
  color: var(--admin-severity-neutral-text) !important;
  border-left: .4rem solid var(--admin-severity-neutral-border) !important;
}



/* PHASE4 STEP3935: Final admin details severity cascade.
   Apply severity directly from the details element, without relying on a
   specific page container. This fixes dashboard/diagnostic accordions where
   warning/error summaries were still inheriting the generic green expandable
   accent. */
:root {
  --admin-severity-error-border-final: #b42318;
  --admin-severity-error-bg-final: #fff1f0;
  --admin-severity-error-summary-bg-final: #ffe4e0;
  --admin-severity-error-text-final: #7a271a;
  --admin-severity-warning-border-final: #b54708;
  --admin-severity-warning-bg-final: #fff8e6;
  --admin-severity-warning-summary-bg-final: #fff0c2;
  --admin-severity-warning-text-final: #7a3b00;
  --admin-severity-info-border-final: #175cd3;
  --admin-severity-info-bg-final: #eff8ff;
  --admin-severity-info-summary-bg-final: #dbeafe;
  --admin-severity-info-text-final: #1849a9;
  --admin-severity-neutral-border-final: #d0d5dd;
  --admin-severity-neutral-bg-final: #fff;
  --admin-severity-neutral-summary-bg-final: #f7f7f7;
  --admin-severity-neutral-text-final: #101828;
}

details.admin-section-outline-error,
details.has-error {
  border-color: var(--admin-severity-error-border-final) !important;
  background: var(--admin-severity-error-bg-final) !important;
  box-shadow: inset 0 0 0 1px rgba(180,35,24,.25) !important;
}
details.admin-section-outline-error > summary,
details.has-error > summary {
  --ui-expandable-summary-accent: var(--admin-severity-error-border-final) !important;
  --ui-expandable-summary-bg: var(--admin-severity-error-summary-bg-final) !important;
  border-left-color: var(--admin-severity-error-border-final) !important;
  background: var(--admin-severity-error-summary-bg-final) !important;
  color: var(--admin-severity-error-text-final) !important;
}

details.admin-section-outline-warning,
details.has-warning {
  border-color: var(--admin-severity-warning-border-final) !important;
  background: var(--admin-severity-warning-bg-final) !important;
  box-shadow: inset 0 0 0 1px rgba(181,71,8,.25) !important;
}
details.admin-section-outline-warning > summary,
details.has-warning > summary {
  --ui-expandable-summary-accent: var(--admin-severity-warning-border-final) !important;
  --ui-expandable-summary-bg: var(--admin-severity-warning-summary-bg-final) !important;
  border-left-color: var(--admin-severity-warning-border-final) !important;
  background: var(--admin-severity-warning-summary-bg-final) !important;
  color: var(--admin-severity-warning-text-final) !important;
}

details.admin-section-outline-info,
details.admin-section-info-only,
details.has-info {
  border-color: var(--admin-severity-info-border-final) !important;
  background: var(--admin-severity-info-bg-final) !important;
  box-shadow: inset 0 0 0 1px rgba(23,92,211,.18) !important;
}
details.admin-section-outline-info > summary,
details.admin-section-info-only > summary,
details.has-info > summary {
  --ui-expandable-summary-accent: var(--admin-severity-info-border-final) !important;
  --ui-expandable-summary-bg: var(--admin-severity-info-summary-bg-final) !important;
  border-left-color: var(--admin-severity-info-border-final) !important;
  background: var(--admin-severity-info-summary-bg-final) !important;
  color: var(--admin-severity-info-text-final) !important;
}

details.admin-section-outline-none,
details.admin-section-outline-ok,
details.has-no-findings {
  border-color: var(--admin-severity-neutral-border-final) !important;
  background: var(--admin-severity-neutral-bg-final) !important;
  box-shadow: none !important;
}
details.admin-section-outline-none > summary,
details.admin-section-outline-ok > summary,
details.has-no-findings > summary {
  --ui-expandable-summary-accent: var(--admin-severity-neutral-border-final) !important;
  --ui-expandable-summary-bg: var(--admin-severity-neutral-summary-bg-final) !important;
  border-left-color: var(--admin-severity-neutral-border-final) !important;
  background: var(--admin-severity-neutral-summary-bg-final) !important;
  color: var(--admin-severity-neutral-text-final) !important;
}

/* Phase 4 Step 3939: Team profile round status and admin info-severity consistency. */
.team-profile-section tr.team-round-status-unavailable td,
.team-profile-section tr.team-round-status-withdrew td {
  background: rgba(245, 158, 11, 0.08);
}
.team-profile-section tr.team-round-status-withdrew td {
  background: rgba(239, 68, 68, 0.08);
}
.team-profile-section tr.team-round-status-unavailable td:nth-child(2),
.team-profile-section tr.team-round-status-withdrew td:nth-child(2) {
  font-weight: 700;
}

/* Phase 4 Step 3936: canonical admin severity, table, details, and input contract.
   This late-cascade contract intentionally overrides older dashboard/admin rules. */
:root {
  --admin-severity-error-bg: #fde8e8;
  --admin-severity-error-border: #b42318;
  --admin-severity-error-text: #7a1c12;
  --admin-severity-warning-bg: #fff4ce;
  --admin-severity-warning-border: #b7791f;
  --admin-severity-warning-text: #744210;
  --admin-severity-info-bg: #e8f3ff;
  --admin-severity-info-border: #2b6cb0;
  --admin-severity-info-text: #1a4f85;
  --admin-severity-none-bg: #ffffff;
  --admin-severity-none-border: var(--color-table-border, #d0d7de);
  --admin-severity-none-text: var(--color-text, #111827);
  --admin-input-bg: #f7f7f7;
  --admin-input-focus-bg: #e9e9e9;
}

.admin-page-container details,
.admin-dashboard-container details,
.admin-diagnostics-container details,
.admin-development-container details,
.admin-settings-container details,
.admin-league-settings-container details,
.admin-leagues-container details,
.admin-global-players-container details,
.admin-league-roster-container details,
.admin-teams-container details,
.admin-dupr-container details,
.admin-rounds-container details,
.diagnostics-container details,
.approvals-container details {
  box-sizing: border-box;
  max-width: 100%;
}

.admin-page-container details > summary,
.admin-dashboard-container details > summary,
.admin-diagnostics-container details > summary,
.admin-development-container details > summary,
.admin-settings-container details > summary,
.admin-league-settings-container details > summary,
.admin-leagues-container details > summary,
.admin-global-players-container details > summary,
.admin-league-roster-container details > summary,
.admin-teams-container details > summary,
.admin-dupr-container details > summary,
.admin-rounds-container details > summary,
.diagnostics-container details > summary,
.approvals-container details > summary {
  box-sizing: border-box;
  border-radius: 0.65rem;
  color: var(--admin-severity-none-text);
}

/* 0 errors / 0 warnings / 0 info: no colored outline or colored summary. */
.admin-page-container details.admin-section-outline-none,
.admin-page-container details.has-no-findings,
.admin-dashboard-container details.admin-section-outline-none,
.admin-dashboard-container details.has-no-findings,
.admin-diagnostics-container details.admin-section-outline-none,
.admin-diagnostics-container details.has-no-findings,
.admin-development-container details.admin-section-outline-none,
.admin-development-container details.has-no-findings,
.diagnostics-container details.admin-section-outline-none,
.diagnostics-container details.has-no-findings,
.approvals-container details.admin-section-outline-none,
.approvals-container details.has-no-findings {
  border-color: var(--admin-severity-none-border) !important;
  box-shadow: none !important;
}

.admin-page-container details.admin-section-outline-none > summary,
.admin-page-container details.has-no-findings > summary,
.admin-dashboard-container details.admin-section-outline-none > summary,
.admin-dashboard-container details.has-no-findings > summary,
.admin-diagnostics-container details.admin-section-outline-none > summary,
.admin-diagnostics-container details.has-no-findings > summary,
.admin-development-container details.admin-section-outline-none > summary,
.admin-development-container details.has-no-findings > summary,
.diagnostics-container details.admin-section-outline-none > summary,
.diagnostics-container details.has-no-findings > summary,
.approvals-container details.admin-section-outline-none > summary,
.approvals-container details.has-no-findings > summary {
  background: transparent !important;
  border-color: transparent !important;
  color: var(--admin-severity-none-text) !important;
}

/* Severity priority: error > warning > info > none. */
.admin-page-container details.admin-section-outline-error,
.admin-page-container details.has-error,
.admin-dashboard-container details.admin-section-outline-error,
.admin-dashboard-container details.has-error,
.admin-diagnostics-container details.admin-section-outline-error,
.admin-diagnostics-container details.has-error,
.admin-development-container details.admin-section-outline-error,
.admin-development-container details.has-error,
.diagnostics-container details.admin-section-outline-error,
.diagnostics-container details.has-error,
.approvals-container details.admin-section-outline-error,
.approvals-container details.has-error {
  border-color: var(--admin-severity-error-border) !important;
}
.admin-page-container details.admin-section-outline-error > summary,
.admin-page-container details.has-error > summary,
.admin-dashboard-container details.admin-section-outline-error > summary,
.admin-dashboard-container details.has-error > summary,
.admin-diagnostics-container details.admin-section-outline-error > summary,
.admin-diagnostics-container details.has-error > summary,
.admin-development-container details.admin-section-outline-error > summary,
.admin-development-container details.has-error > summary,
.diagnostics-container details.admin-section-outline-error > summary,
.diagnostics-container details.has-error > summary,
.approvals-container details.admin-section-outline-error > summary,
.approvals-container details.has-error > summary {
  background: var(--admin-severity-error-bg) !important;
  border: 1px solid var(--admin-severity-error-border) !important;
  color: var(--admin-severity-error-text) !important;
}

.admin-page-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error),
.admin-page-container details.has-warning:not(.admin-section-outline-error):not(.has-error),
.admin-dashboard-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error),
.admin-dashboard-container details.has-warning:not(.admin-section-outline-error):not(.has-error),
.admin-diagnostics-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error),
.admin-diagnostics-container details.has-warning:not(.admin-section-outline-error):not(.has-error),
.admin-development-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error),
.admin-development-container details.has-warning:not(.admin-section-outline-error):not(.has-error),
.diagnostics-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error),
.diagnostics-container details.has-warning:not(.admin-section-outline-error):not(.has-error),
.approvals-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error),
.approvals-container details.has-warning:not(.admin-section-outline-error):not(.has-error) {
  border-color: var(--admin-severity-warning-border) !important;
}
.admin-page-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-page-container details.has-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-dashboard-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-dashboard-container details.has-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-diagnostics-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-diagnostics-container details.has-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-development-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.admin-development-container details.has-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.diagnostics-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.diagnostics-container details.has-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.approvals-container details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error) > summary,
.approvals-container details.has-warning:not(.admin-section-outline-error):not(.has-error) > summary {
  background: var(--admin-severity-warning-bg) !important;
  border: 1px solid var(--admin-severity-warning-border) !important;
  color: var(--admin-severity-warning-text) !important;
}

.admin-page-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-page-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-dashboard-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-dashboard-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-diagnostics-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-diagnostics-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-development-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.admin-development-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.diagnostics-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.diagnostics-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.approvals-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning),
.approvals-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) {
  border-color: var(--admin-severity-info-border) !important;
}
.admin-page-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-page-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-dashboard-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-dashboard-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-diagnostics-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-diagnostics-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-development-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.admin-development-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.diagnostics-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.diagnostics-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.approvals-container details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary,
.approvals-container details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning) > summary {
  background: var(--admin-severity-info-bg) !important;
  border: 1px solid var(--admin-severity-info-border) !important;
  color: var(--admin-severity-info-text) !important;
}

/* Admin tables: parent stays bounded; table may widen; wrapper scrolls horizontally. */
.admin-page-container :where(.table-container,.admin-table-container,.admin-table-scroll,.ui-table-scroll,.admin-report-table-card,.ui-data-table-card),
.admin-dashboard-container :where(.table-container,.admin-table-container,.admin-table-scroll,.ui-table-scroll,.admin-report-table-card,.ui-data-table-card),
.admin-diagnostics-container :where(.table-container,.admin-table-container,.admin-table-scroll,.ui-table-scroll,.admin-report-table-card,.ui-data-table-card),
.admin-development-container :where(.table-container,.admin-table-container,.admin-table-scroll,.ui-table-scroll,.admin-report-table-card,.ui-data-table-card),
.diagnostics-container :where(.table-container,.admin-table-container,.admin-table-scroll,.ui-table-scroll,.admin-report-table-card,.ui-data-table-card),
.approvals-container :where(.table-container,.admin-table-container,.admin-table-scroll,.ui-table-scroll,.admin-report-table-card,.ui-data-table-card) {
  box-sizing: border-box !important;
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch;
}
.admin-page-container table,
.admin-dashboard-container table,
.admin-diagnostics-container table,
.admin-development-container table,
.diagnostics-container table,
.approvals-container table {
  border-collapse: collapse;
  box-sizing: border-box;
  table-layout: auto;
  width: max-content;
  min-width: 100%;
  max-width: none;
}
.admin-page-container th,
.admin-dashboard-container th,
.admin-diagnostics-container th,
.admin-development-container th,
.diagnostics-container th,
.approvals-container th {
  box-sizing: border-box;
  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;
  vertical-align: top;
}
.admin-page-container td,
.admin-dashboard-container td,
.admin-diagnostics-container td,
.admin-development-container td,
.diagnostics-container td,
.approvals-container td {
  box-sizing: border-box;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: none;
  text-overflow: clip;
  vertical-align: top;
  max-width: 34rem;
}
.admin-page-container td :where(code,pre),
.admin-dashboard-container td :where(code,pre),
.admin-diagnostics-container td :where(code,pre),
.admin-development-container td :where(code,pre),
.diagnostics-container td :where(code,pre),
.approvals-container td :where(code,pre) {
  max-width: 100%;
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: normal;
  overflow-wrap: anywhere;
}
.admin-page-container tr.dashboard-status-blocked,
.admin-page-container tr.dashboard-status-error,
.admin-page-container tr.has-error,
.admin-dashboard-container tr.dashboard-status-blocked,
.admin-dashboard-container tr.dashboard-status-error,
.admin-dashboard-container tr.has-error,
.admin-diagnostics-container tr.dashboard-status-blocked,
.admin-diagnostics-container tr.dashboard-status-error,
.admin-diagnostics-container tr.has-error,
.admin-development-container tr.dashboard-status-blocked,
.admin-development-container tr.dashboard-status-error,
.admin-development-container tr.has-error,
.diagnostics-container tr.dashboard-status-blocked,
.diagnostics-container tr.dashboard-status-error,
.diagnostics-container tr.has-error,
.approvals-container tr.dashboard-status-blocked,
.approvals-container tr.dashboard-status-error,
.approvals-container tr.has-error {
  background: var(--admin-severity-error-bg) !important;
  color: var(--admin-severity-error-text);
}
.admin-page-container tr.dashboard-status-warning,
.admin-page-container tr.has-warning,
.admin-dashboard-container tr.dashboard-status-warning,
.admin-dashboard-container tr.has-warning,
.admin-diagnostics-container tr.dashboard-status-warning,
.admin-diagnostics-container tr.has-warning,
.admin-development-container tr.dashboard-status-warning,
.admin-development-container tr.has-warning,
.diagnostics-container tr.dashboard-status-warning,
.diagnostics-container tr.has-warning,
.approvals-container tr.dashboard-status-warning,
.approvals-container tr.has-warning {
  background: var(--admin-severity-warning-bg) !important;
  color: var(--admin-severity-warning-text);
}
.admin-page-container tr.dashboard-status-info,
.admin-page-container tr.has-info,
.admin-dashboard-container tr.dashboard-status-info,
.admin-dashboard-container tr.has-info,
.admin-diagnostics-container tr.dashboard-status-info,
.admin-diagnostics-container tr.has-info,
.admin-development-container tr.dashboard-status-info,
.admin-development-container tr.has-info,
.diagnostics-container tr.dashboard-status-info,
.diagnostics-container tr.has-info,
.approvals-container tr.dashboard-status-info,
.approvals-container tr.has-info {
  background: var(--admin-severity-info-bg) !important;
  color: var(--admin-severity-info-text);
}
.admin-page-container input[type="text"],
.admin-page-container input[type="search"],
.admin-page-container input[type="number"],
.admin-page-container input[type="url"],
.admin-page-container input[type="email"],
.admin-page-container input[type="password"],
.admin-page-container select,
.admin-page-container textarea,
.admin-dashboard-container input[type="text"],
.admin-dashboard-container input[type="search"],
.admin-dashboard-container input[type="number"],
.admin-dashboard-container input[type="url"],
.admin-dashboard-container input[type="email"],
.admin-dashboard-container input[type="password"],
.admin-dashboard-container select,
.admin-dashboard-container textarea,
.admin-diagnostics-container input[type="text"],
.admin-diagnostics-container input[type="search"],
.admin-diagnostics-container input[type="number"],
.admin-diagnostics-container input[type="url"],
.admin-diagnostics-container input[type="email"],
.admin-diagnostics-container input[type="password"],
.admin-diagnostics-container select,
.admin-diagnostics-container textarea,
.admin-development-container input[type="text"],
.admin-development-container input[type="search"],
.admin-development-container input[type="number"],
.admin-development-container input[type="url"],
.admin-development-container input[type="email"],
.admin-development-container input[type="password"],
.admin-development-container select,
.admin-development-container textarea,
.diagnostics-container input[type="text"],
.diagnostics-container input[type="search"],
.diagnostics-container input[type="number"],
.diagnostics-container input[type="url"],
.diagnostics-container input[type="email"],
.diagnostics-container input[type="password"],
.diagnostics-container select,
.diagnostics-container textarea {
  background: var(--admin-input-bg) !important;
  border: 1px solid var(--color-table-border, #d0d7de) !important;
  border-radius: 0.55rem !important;
  box-sizing: border-box;
  max-width: 100%;
}
.admin-page-container input:focus,
.admin-page-container select:focus,
.admin-page-container textarea:focus,
.admin-dashboard-container input:focus,
.admin-dashboard-container select:focus,
.admin-dashboard-container textarea:focus,
.admin-diagnostics-container input:focus,
.admin-diagnostics-container select:focus,
.admin-diagnostics-container textarea:focus,
.admin-development-container input:focus,
.admin-development-container select:focus,
.admin-development-container textarea:focus,
.diagnostics-container input:focus,
.diagnostics-container select:focus,
.diagnostics-container textarea:focus {
  background: var(--admin-input-focus-bg) !important;
  outline: 2px solid rgba(80, 80, 80, 0.24);
  outline-offset: 1px;
}


/* ADDED v2026-05-22.3937: Modern data display contract.
   Admin keeps dense scrollable data grids. Player pages keep tables on desktop
   and convert table rows to labelled cards on narrow screens. */
.ui-data-display,
.ui-responsive-data-display {
    width: 100%;
    min-width: 0;
}
.ui-data-display-wrap,
.ui-responsive-table-wrap,
.ui-admin-table-wrap,
.ui-player-table-wrap {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
}
.ui-data-display-table {
    width: max-content;
    min-width: 100%;
    border-collapse: collapse;
    table-layout: auto;
}
.ui-data-display-table th {
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: none;
}
.ui-data-display-table td {
    overflow-wrap: anywhere;
    word-break: normal;
    min-width: 0;
    max-width: 34rem;
    vertical-align: top;
}
.ui-admin-data-display .ui-data-display-table,
.ui-component-admin .ui-data-display-table {
    font-size: 0.92rem;
}
.ui-player-data-display .ui-data-display-table,
.ui-component-player .ui-data-display-table {
    font-size: 0.95rem;
}
@media (max-width: 720px) {
    .ui-player-data-display .ui-responsive-table-wrap,
    .ui-component-player.ui-responsive-data-display .ui-responsive-table-wrap {
        overflow-x: visible;
    }
    .ui-player-data-display .ui-responsive-data-table,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table,
    .ui-player-data-display .ui-responsive-data-table thead,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table thead,
    .ui-player-data-display .ui-responsive-data-table tbody,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table tbody,
    .ui-player-data-display .ui-responsive-data-table tr,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table tr,
    .ui-player-data-display .ui-responsive-data-table td,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table td {
        display: block;
        width: 100%;
        min-width: 0;
        max-width: none;
    }
    .ui-player-data-display .ui-responsive-data-table,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table {
        min-width: 0;
        width: 100%;
        border-collapse: separate;
        border-spacing: 0;
    }
    .ui-player-data-display .ui-responsive-data-table thead,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table thead {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }
    .ui-player-data-display .ui-responsive-data-table tr,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table tr {
        margin: 0 0 0.75rem;
        padding: 0.65rem 0.7rem;
        border: 1px solid rgba(27, 77, 62, 0.18);
        border-radius: 0.8rem;
        background: rgba(255,255,255,0.96);
        box-shadow: 0 1px 4px rgba(0,0,0,0.04);
    }
    .ui-player-data-display .ui-responsive-data-table td,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table td {
        display: grid;
        grid-template-columns: minmax(7.5rem, 38%) 1fr;
        gap: 0.5rem;
        padding: 0.38rem 0;
        border: 0;
        border-bottom: 1px solid rgba(0,0,0,0.055);
        overflow-wrap: anywhere;
    }
    .ui-player-data-display .ui-responsive-data-table td:last-child,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table td:last-child {
        border-bottom: 0;
    }
    .ui-player-data-display .ui-responsive-data-table td::before,
    .ui-component-player.ui-responsive-data-display .ui-responsive-data-table td::before {
        content: attr(data-label);
        font-weight: 700;
        color: #315345;
        overflow-wrap: normal;
        word-break: normal;
    }
}

/* ADDED v2026-05-22.3937: player expandable-summary highlight consistency.
 * Player-facing details previously displayed two left accents at once: a dark
 * green outline on the details container plus a lighter summary accent. Use a
 * single named player accent on the summary only so About, Profile, Calendar,
 * Teams, Players, Stats, Feedback and related public pages render consistently.
 */
:root {
    --ui-player-expandable-accent: #8ee99c;
    --ui-player-expandable-bg: #f1fff2;
    --ui-player-expandable-border: rgba(35, 96, 45, 0.18);
}

body:not(.admin) :where(
    details,
    .ui-player-details-card,
    .ui-details-card,
    .stats-details,
    .team-profile-section,
    .player-about-details,
    .player-about-rule-details,
    .player-profile-details,
    .player-availability-details,
    .player-match-history-details,
    .player-subs-details,
    .approvals-exclusive-details
) {
    border-left: 0 !important;
    background-clip: padding-box;
}

body:not(.admin) :where(
    details,
    .ui-player-details-card,
    .ui-details-card,
    .stats-details,
    .team-profile-section,
    .player-about-details,
    .player-about-rule-details,
    .player-profile-details,
    .player-availability-details,
    .player-match-history-details,
    .player-subs-details,
    .approvals-exclusive-details
) > summary {
    border-left: 0.34rem solid var(--ui-player-expandable-accent) !important;
    border-top-left-radius: 0.62rem !important;
    border-bottom-left-radius: 0.62rem !important;
    background: var(--ui-player-expandable-bg) !important;
    box-shadow: inset 0 0 0 1px var(--ui-player-expandable-border) !important;
    color: inherit !important;
}

body:not(.admin) :where(
    details[open],
    .ui-player-details-card[open],
    .ui-details-card[open],
    .stats-details[open],
    .team-profile-section[open],
    .player-about-details[open],
    .player-about-rule-details[open],
    .player-profile-details[open],
    .player-availability-details[open],
    .player-match-history-details[open],
    .player-subs-details[open],
    .approvals-exclusive-details[open]
) > summary {
    border-bottom-left-radius: 0.34rem !important;
}

body:not(.admin) :where(.player-page-title, .ui-player-page-header, .site-page-header, .page-title) {
    --ui-expandable-summary-accent: var(--ui-player-expandable-accent);
}


/* ADDED v2026-05-22.3938: Team/player roster profile-photo size parity.
 * Uploaded photos now inherit the same visual box as generated initials avatars
 * inside player/team roster cards. This prevents real photos from rendering
 * larger than no-photo initials placeholders.
 */
.team-profile-member-card .profile-photo-frame.profile-photo-frame-has-image,
.profile-photo-card .profile-photo-frame.profile-photo-frame-has-image {
    --profile-photo-size: 88px !important;
    width: 88px !important;
    height: 88px !important;
    min-width: 88px !important;
    min-height: 88px !important;
    max-width: 88px !important;
    max-height: 88px !important;
    flex: 0 0 88px;
}

.team-profile-member-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-image,
.team-profile-member-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-fallback-avatar,
.profile-photo-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-image,
.profile-photo-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-fallback-avatar {
    width: 88px !important;
    height: 88px !important;
    min-width: 88px !important;
    min-height: 88px !important;
    max-width: 88px !important;
    max-height: 88px !important;
    font-size: 2rem !important;
}

@media (max-width: 520px) {
    .team-profile-member-card .profile-photo-frame.profile-photo-frame-has-image,
    .profile-photo-card .profile-photo-frame.profile-photo-frame-has-image {
        --profile-photo-size: 72px !important;
        width: 72px !important;
        height: 72px !important;
        min-width: 72px !important;
        min-height: 72px !important;
        max-width: 72px !important;
        max-height: 72px !important;
        flex-basis: 72px;
    }

    .team-profile-member-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-image,
    .team-profile-member-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-fallback-avatar,
    .profile-photo-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-image,
    .profile-photo-card .profile-photo-frame.profile-photo-frame-has-image .profile-photo-fallback-avatar {
        width: 72px !important;
        height: 72px !important;
        min-width: 72px !important;
        min-height: 72px !important;
        max-width: 72px !important;
        max-height: 72px !important;
        font-size: 1.55rem !important;
    }
}


/* ADDED v2026-05-22.3942: profile-card avatar size parity and leaked-comment guard. */
.team-profile-member-card .profile-photo-frame,
.profile-photo-card .profile-photo-frame,
.team-profile-member-photo-link .profile-photo-frame {
    --profile-photo-size: 88px !important;
    width: 88px !important;
    height: 88px !important;
    min-width: 88px !important;
    min-height: 88px !important;
    max-width: 88px !important;
    max-height: 88px !important;
    flex: 0 0 88px !important;
}
.team-profile-member-card .profile-photo-frame .profile-photo-image,
.team-profile-member-card .profile-photo-frame .profile-photo-fallback-avatar,
.team-profile-member-card .profile-initials-avatar-profile,
.profile-photo-card .profile-photo-frame .profile-photo-image,
.profile-photo-card .profile-photo-frame .profile-photo-fallback-avatar,
.profile-photo-card .profile-initials-avatar-profile,
.team-profile-member-photo-link .profile-photo-frame .profile-photo-image,
.team-profile-member-photo-link .profile-photo-frame .profile-photo-fallback-avatar,
.team-profile-member-photo-link .profile-initials-avatar-profile {
    width: 88px !important;
    height: 88px !important;
    min-width: 88px !important;
    min-height: 88px !important;
    max-width: 88px !important;
    max-height: 88px !important;
    font-size: 2rem !important;
}
@media (max-width: 520px) {
    .team-profile-member-card .profile-photo-frame,
    .profile-photo-card .profile-photo-frame,
    .team-profile-member-photo-link .profile-photo-frame,
    .team-profile-member-card .profile-initials-avatar-profile,
    .profile-photo-card .profile-initials-avatar-profile,
    .team-profile-member-photo-link .profile-initials-avatar-profile {
        --profile-photo-size: 72px !important;
        width: 72px !important;
        height: 72px !important;
        min-width: 72px !important;
        min-height: 72px !important;
        max-width: 72px !important;
        max-height: 72px !important;
        flex-basis: 72px !important;
    }
}


/* ADDED v2026-05-22.3945: player-facing UI regression fixes and neutral details contract. */
.profile-photo-editor #profile-photo-warning:empty,
.profile-photo-editor .warning:empty {
    display: none !important;
}

/* Top-level admin/player nav badges should render as centered circles. */
nav .nav-approval-count,
.nav-approval-count {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    min-width: 1.45rem !important;
    height: 1.45rem !important;
    min-height: 1.45rem !important;
    padding: 0 !important;
    line-height: 1 !important;
    vertical-align: middle !important;
    border-radius: 999px !important;
    text-align: center !important;
}

/* Neutral player/site details should not use green success highlighting. Severity classes may still opt into colour. */
body:not(.admin) :where(
    details,
    .ui-player-details-card,
    .ui-details-card,
    .stats-details,
    .team-profile-section,
    .player-about-details,
    .player-about-rule-details,
    .player-profile-details,
    .player-availability-details,
    .player-match-history-details,
    .player-subs-details,
    .approvals-exclusive-details
):not(.has-error):not(.has-warning):not(.has-info):not(.admin-section-outline-error):not(.admin-section-outline-warning):not(.admin-section-outline-info) > summary {
    border-left: 0 !important;
    background: #ffffff !important;
    box-shadow: inset 0 0 0 1px var(--color-table-border, #d0d7de) !important;
    color: inherit !important;
}

body:not(.admin) :where(
    details.has-error,
    details.admin-section-outline-error
) > summary {
    border-left: 0.34rem solid var(--color-status-error, #b42318) !important;
    background: var(--color-status-error-bg, #fdecea) !important;
}

body:not(.admin) :where(
    details.has-warning,
    details.admin-section-outline-warning
) > summary {
    border-left: 0.34rem solid var(--color-status-warning, #b7791f) !important;
    background: var(--color-status-warning-bg, #fff8db) !important;
}

body:not(.admin) :where(
    details.has-info,
    details.admin-section-outline-info
) > summary {
    border-left: 0.34rem solid var(--color-status-info, #2563eb) !important;
    background: var(--color-status-info-bg, #eef7ff) !important;
}

/* Team-profile comparison/history tables: shrink numeric/action columns and protect linked team names from wrapping. */
.team-profile-head-to-head-data .ui-responsive-data-table th,
.team-profile-match-history-data .ui-responsive-data-table th,
.team-profile-game-history-data .ui-responsive-data-table th {
    white-space: pre-line !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
    line-height: 1.12;
}

.team-profile-head-to-head-data .ui-responsive-data-table th:not(:first-child),
.team-profile-head-to-head-data .ui-responsive-data-table td:not(:first-child),
.team-profile-match-history-data .ui-responsive-data-table th:not(:nth-child(3)),
.team-profile-match-history-data .ui-responsive-data-table td:not(:nth-child(3)),
.team-profile-game-history-data .ui-responsive-data-table th:not(:nth-child(3)),
.team-profile-game-history-data .ui-responsive-data-table td:not(:nth-child(3)) {
    width: 1% !important;
    max-width: 7.5rem !important;
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
}

.team-profile-head-to-head-data .ui-responsive-data-table th:first-child,
.team-profile-head-to-head-data .ui-responsive-data-table td:first-child,
.team-profile-match-history-data .ui-responsive-data-table th:nth-child(3),
.team-profile-match-history-data .ui-responsive-data-table td:nth-child(3),
.team-profile-game-history-data .ui-responsive-data-table th:nth-child(3),
.team-profile-game-history-data .ui-responsive-data-table td:nth-child(3) {
    min-width: 14rem !important;
    max-width: none !important;
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
}

.team-profile-head-to-head-data .ui-responsive-data-table a,
.team-profile-match-history-data .ui-responsive-data-table a,
.team-profile-game-history-data .ui-responsive-data-table a {
    white-space: nowrap !important;
}

@media (max-width: 720px) {
    .team-profile-head-to-head-data .ui-responsive-data-table th,
    .team-profile-head-to-head-data .ui-responsive-data-table td,
    .team-profile-match-history-data .ui-responsive-data-table th,
    .team-profile-match-history-data .ui-responsive-data-table td,
    .team-profile-game-history-data .ui-responsive-data-table th,
    .team-profile-game-history-data .ui-responsive-data-table td {
        width: auto !important;
        max-width: none !important;
        min-width: 0 !important;
        white-space: normal !important;
        overflow-wrap: anywhere !important;
    }
    .team-profile-head-to-head-data .ui-responsive-data-table a,
    .team-profile-match-history-data .ui-responsive-data-table a,
    .team-profile-game-history-data .ui-responsive-data-table a {
        white-space: normal !important;
    }
}

/* ADDED v2026-05-22.3946: Final player-facing UI/UX contract.
 * Scope: player-facing pages only. Admin pages use the separate admin contract.
 * Goals: neutral default sections, severity-only highlighting, mobile-first
 * cards/forms/tables, predictable spacing, readable touch targets, and stable
 * avatar/table behavior.
 */
:root {
    --player-page-max-width: 980px;
    --player-page-pad-inline: clamp(0.75rem, 2.4vw, 1.4rem);
    --player-page-pad-block: clamp(0.65rem, 1.8vw, 1.15rem);
    --player-gap-xs: 0.25rem;
    --player-gap-sm: 0.45rem;
    --player-gap-md: 0.75rem;
    --player-gap-lg: 1rem;
    --player-radius-sm: 0.45rem;
    --player-radius-md: 0.7rem;
    --player-radius-lg: 1rem;
    --player-border: #d0d7de;
    --player-border-soft: #e5e7eb;
    --player-bg: #f6f8fa;
    --player-surface: #ffffff;
    --player-surface-muted: #f8fafc;
    --player-text: #111827;
    --player-muted: #4b5563;
    --player-link: #0645d9;
    --player-focus-bg: #edf2f7;
    --player-focus-ring: rgba(37, 99, 235, 0.23);
    --player-error: #b42318;
    --player-error-bg: #fdecea;
    --player-warning: #b7791f;
    --player-warning-bg: #fff8db;
    --player-info: #2563eb;
    --player-info-bg: #eef7ff;
    --player-avatar-md: 88px;
    --player-avatar-sm: 72px;
}

body.app-player {
    background: var(--player-bg);
    color: var(--player-text);
    overflow-x: hidden;
}

body.app-player .mainbody {
    box-sizing: border-box;
    width: min(100%, var(--player-page-max-width));
    margin-inline: auto;
    padding: var(--player-page-pad-block) var(--player-page-pad-inline);
}

body.app-player .site-league-title,
body.app-player h1,
body.app-player h2,
body.app-player h3 {
    text-wrap: balance;
}

body.app-player a {
    color: var(--player-link);
    overflow-wrap: break-word;
}

body.app-player nav {
    box-sizing: border-box;
    max-width: var(--player-page-max-width);
    margin-inline: auto;
    padding-inline: var(--player-page-pad-inline);
}

body.app-player .nav-primary-row,
body.app-player .nav-secondary-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
}

body.app-player .nav-link {
    display: inline-flex;
    align-items: center;
    min-height: 2.25rem;
    padding: 0.38rem 0.62rem;
    border-radius: 999px;
    line-height: 1.15;
    text-decoration: none;
}

body.app-player .nav-link:focus-visible,
body.app-player a:focus-visible,
body.app-player button:focus-visible,
body.app-player summary:focus-visible,
body.app-player input:focus-visible,
body.app-player select:focus-visible,
body.app-player textarea:focus-visible {
    outline: 3px solid var(--player-focus-ring);
    outline-offset: 2px;
}

body.app-player :where(.ui-player-page, .player-page-compact, .player-card, .ui-player-card, .ui-card, .profile-photo-card, .team-profile-member-card) {
    box-sizing: border-box;
}

body.app-player :where(.ui-player-card, .ui-card, .player-card, .profile-photo-card, .team-profile-member-card, .ui-report-card, .ui-panel) {
    background: var(--player-surface);
    border: 1px solid var(--player-border);
    border-radius: var(--player-radius-lg);
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    padding: clamp(0.75rem, 2.2vw, 1rem);
}

body.app-player :where(.ui-card-grid, .ui-player-card-grid, .team-profile-member-grid, .player-card-grid) {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
    gap: var(--player-gap-md);
    align-items: stretch;
}

body.app-player :where(details, .ui-player-details-card, .ui-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details, .player-profile-details, .player-availability-details, .player-match-history-details, .player-subs-details, .approvals-exclusive-details) {
    box-sizing: border-box;
    margin-block: var(--player-gap-sm) !important;
    border: 1px solid var(--player-border) !important;
    border-left: 1px solid var(--player-border) !important;
    border-radius: var(--player-radius-md) !important;
    background: var(--player-surface) !important;
    overflow: clip;
}

body.app-player :where(details, .ui-player-details-card, .ui-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details, .player-profile-details, .player-availability-details, .player-match-history-details, .player-subs-details, .approvals-exclusive-details) > summary {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 2.35rem;
    padding: 0.48rem 0.72rem !important;
    margin: 0 !important;
    border-left: 0 solid transparent !important;
    border-radius: var(--player-radius-md) var(--player-radius-md) 0 0 !important;
    background: var(--player-surface) !important;
    box-shadow: none !important;
    color: var(--player-text) !important;
    font-weight: 700;
    cursor: pointer;
    touch-action: manipulation;
}

body.app-player :where(details, .ui-player-details-card, .ui-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details, .player-profile-details, .player-availability-details, .player-match-history-details, .player-subs-details, .approvals-exclusive-details)[open] > summary {
    border-bottom: 1px solid var(--player-border-soft) !important;
}

body.app-player :where(details.has-error, details.admin-section-outline-error, .has-error) > summary {
    border-left: 0.34rem solid var(--player-error) !important;
    background: var(--player-error-bg) !important;
}
body.app-player :where(details.has-warning, details.admin-section-outline-warning, .has-warning) > summary {
    border-left: 0.34rem solid var(--player-warning) !important;
    background: var(--player-warning-bg) !important;
}
body.app-player :where(details.has-info, details.admin-section-outline-info, .has-info) > summary {
    border-left: 0.34rem solid var(--player-info) !important;
    background: var(--player-info-bg) !important;
}

body.app-player details > :not(summary) {
    margin-inline: 0;
}

body.app-player :where(input[type='text'], input[type='email'], input[type='tel'], input[type='number'], input[type='password'], input[type='search'], input[type='file'], select, textarea) {
    box-sizing: border-box;
    max-width: 100%;
    min-height: 2.35rem;
    border: 1px solid var(--player-border);
    border-radius: var(--player-radius-sm);
    background: var(--player-surface-muted);
    color: var(--player-text);
    padding: 0.4rem 0.55rem;
    font: inherit;
}

body.app-player :where(input[type='text'], input[type='email'], input[type='tel'], input[type='number'], input[type='password'], input[type='search'], input[type='file'], select, textarea):focus {
    background: var(--player-focus-bg);
}

body.app-player :where(button, input[type='submit'], input[type='button'], .button, .ui-button, .ui-link-button) {
    min-height: 2.35rem;
    border-radius: var(--player-radius-sm);
    touch-action: manipulation;
}

body.app-player :where(table, .ui-responsive-data-table) {
    border-collapse: collapse;
    max-width: 100%;
    table-layout: auto;
}

body.app-player :where(.ui-table-scroll, .ui-responsive-data-scroll, .ui-responsive-table-card, .table-scroll, .scroll-x) {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

body.app-player th {
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    hyphens: manual;
}

body.app-player td {
    max-width: 26rem;
    overflow-wrap: break-word;
    word-break: normal;
    vertical-align: top;
}

body.app-player :where(.ui-responsive-data-display, .player-responsive-data-display) {
    max-width: 100%;
}

body.app-player .ui-responsive-data-card-list {
    display: none;
}

body.app-player :where(.profile-photo-frame, .profile-initials-avatar-profile, .profile-photo-image, .profile-photo-fallback-avatar) {
    box-sizing: border-box;
}

body.app-player :where(.team-profile-member-card, .profile-photo-card, .team-profile-member-photo-link) :where(.profile-photo-frame, .profile-initials-avatar-profile, .profile-photo-image, .profile-photo-fallback-avatar) {
    width: var(--player-avatar-md) !important;
    height: var(--player-avatar-md) !important;
    min-width: var(--player-avatar-md) !important;
    min-height: var(--player-avatar-md) !important;
    max-width: var(--player-avatar-md) !important;
    max-height: var(--player-avatar-md) !important;
    flex: 0 0 var(--player-avatar-md) !important;
    object-fit: cover;
}

body.app-player .profile-photo-editor #profile-photo-warning:empty,
body.app-player .profile-photo-editor .warning:empty {
    display: none !important;
}

@media (max-width: 720px) {
    body.app-player .mainbody {
        width: 100%;
        padding-inline: 0.65rem;
    }

    body.app-player :where(.ui-player-card, .ui-card, .player-card, .profile-photo-card, .team-profile-member-card, .ui-report-card, .ui-panel) {
        border-radius: var(--player-radius-md);
        padding: 0.72rem;
    }

    body.app-player :where(details, .ui-player-details-card, .ui-details-card, .stats-details, .team-profile-section, .player-about-details, .player-about-rule-details, .player-profile-details, .player-availability-details, .player-match-history-details, .player-subs-details, .approvals-exclusive-details) {
        margin-block: 0.38rem !important;
    }

    body.app-player .ui-responsive-data-table {
        min-width: 0;
        width: 100%;
    }

    body.app-player .ui-responsive-data-display.has-card-list .ui-responsive-data-table-wrap {
        display: none;
    }

    body.app-player .ui-responsive-data-display.has-card-list .ui-responsive-data-card-list {
        display: grid;
        gap: 0.55rem;
    }

    body.app-player .ui-responsive-data-card {
        border: 1px solid var(--player-border);
        border-radius: var(--player-radius-md);
        background: var(--player-surface);
        padding: 0.65rem;
    }

    body.app-player .ui-responsive-data-card-row {
        display: grid;
        grid-template-columns: minmax(7.25rem, 42%) 1fr;
        gap: 0.5rem;
        padding-block: 0.18rem;
        border-bottom: 1px solid var(--player-border-soft);
    }

    body.app-player .ui-responsive-data-card-row:last-child {
        border-bottom: 0;
    }

    body.app-player .ui-responsive-data-card-label {
        color: var(--player-muted);
        font-size: 0.9rem;
        font-weight: 700;
    }

    body.app-player .ui-responsive-data-card-value {
        min-width: 0;
        overflow-wrap: anywhere;
    }

    body.app-player :where(.team-profile-member-card, .profile-photo-card, .team-profile-member-photo-link) :where(.profile-photo-frame, .profile-initials-avatar-profile, .profile-photo-image, .profile-photo-fallback-avatar) {
        width: var(--player-avatar-sm) !important;
        height: var(--player-avatar-sm) !important;
        min-width: var(--player-avatar-sm) !important;
        min-height: var(--player-avatar-sm) !important;
        max-width: var(--player-avatar-sm) !important;
        max-height: var(--player-avatar-sm) !important;
        flex-basis: var(--player-avatar-sm) !important;
    }
}

@media (max-width: 420px) {
    body.app-player .ui-responsive-data-card-row {
        grid-template-columns: 1fr;
        gap: 0.1rem;
    }

    body.app-player .nav-link {
        padding-inline: 0.52rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.app-player *,
    body.app-player *::before,
    body.app-player *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}


/* ADDED v2026-05-22.3947: cleanup confirmation checkbox shrink/wrap contract. */
.ui-confirm-box {
    max-width: 100%;
    box-sizing: border-box;
    display: flex;
    align-items: flex-start;
}
.ui-confirm-box .ui-confirm-box-checkbox,
.ui-confirm-box input[type='checkbox'] {
    flex: 0 0 auto;
    width: 1rem;
    min-width: 1rem;
    max-width: 1rem;
    height: 1rem;
    margin: 0.12rem 0 0 0;
    padding: 0;
}
.ui-confirm-box .ui-confirm-box-text {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}
.ui-admin-table.ui-checkbox-table th:first-child,
.ui-admin-table.ui-checkbox-table td:first-child {
    width: 2.25rem;
    min-width: 2.25rem;
    max-width: 2.25rem;
    padding-left: 0.25rem;
    padding-right: 0.25rem;
}
.ui-checkbox-table input[type='checkbox'] {
    width: 1rem;
    min-width: 1rem;
    max-width: 1rem;
    height: 1rem;
    margin: 0;
}

/** ADDED v2026-05-22.3949a
 *  Purpose: Restore player-facing main navigation link colour after the player
 *  link theme made generic anchors blue. Main nav links sit on the dark header
 *  surface and must remain white for contrast. Admin nav styling is handled by
 *  its own admin theme rules and is intentionally not changed here.
 */
body.app-player header nav a.nav-link,
body.app-player nav a.nav-link,
body:not(.app-admin) header nav a.nav-link,
body:not(.app-admin) nav a.nav-link {
    color: var(--color-white) !important;
}

body.app-player header nav a.nav-link:visited,
body.app-player nav a.nav-link:visited,
body:not(.app-admin) header nav a.nav-link:visited,
body:not(.app-admin) nav a.nav-link:visited {
    color: var(--color-white) !important;
}

body.app-player header nav a.nav-link:hover,
body.app-player nav a.nav-link:hover,
body:not(.app-admin) header nav a.nav-link:hover,
body:not(.app-admin) nav a.nav-link:hover,
body.app-player header nav a.nav-link:focus-visible,
body.app-player nav a.nav-link:focus-visible,
body:not(.app-admin) header nav a.nav-link:focus-visible,
body:not(.app-admin) nav a.nav-link:focus-visible {
    color: var(--color-accent) !important;
}

/* ADDED v2026-05-22.3951: admin/player normalization for roster/member data displays. */
:root {
    --ui-table-cell-pad-y: 0.42rem;
    --ui-table-cell-pad-x: 0.55rem;
    --ui-card-radius: 0.7rem;
}
body.app-admin .admin-table-scroll,
body.app-admin .ui-admin-table-scroll,
body.app-admin .ui-data-table-card {
    max-width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
}
body.app-admin table.ui-admin-table,
body.app-admin table.admin-table,
body.app-admin .ui-data-table-card table {
    width: max-content;
    min-width: 100%;
    max-width: none;
    border-collapse: collapse;
    table-layout: auto;
}
body.app-admin table.ui-admin-table th,
body.app-admin table.admin-table th,
body.app-admin table.ui-admin-table td,
body.app-admin table.admin-table td {
    padding: var(--ui-table-cell-pad-y) var(--ui-table-cell-pad-x);
    overflow-wrap: normal;
    word-break: normal;
    vertical-align: top;
}
body.app-player .ui-responsive-data-display,
body.app-player .player-card,
body.app-player .ui-player-card,
body.app-player details.ui-player-details-card {
    max-width: 100%;
    box-sizing: border-box;
}
body.app-player .ui-responsive-data-card,
body.app-player .team-roster-member-card {
    border: 1px solid var(--player-border-soft, #d9e6dc);
    border-radius: var(--ui-card-radius);
    background: var(--player-surface, #fff);
    padding: 0.65rem 0.75rem;
}
body.app-player .team-roster-member-card + .team-roster-member-card {
    margin-top: 0.45rem;
}
body.app-player details > summary {
    word-break: normal;
    overflow-wrap: break-word;
}
@media (max-width: 720px) {
    body.app-player .ui-responsive-data-table {
        display: none;
    }
    body.app-player .ui-responsive-data-cards {
        display: grid;
        gap: 0.55rem;
    }
}
@media (min-width: 721px) {
    body.app-player .ui-responsive-data-cards {
        display: none;
    }
}

/* ADDED v2026-05-22.3952: runtime CSS consolidation for read-model/report components. */
.ui-read-model-card { border-radius: 12px; overflow: hidden; }
.ui-read-model-card > summary { word-break: normal; overflow-wrap: break-word; }
.ui-responsive-data-display,
.ui-table-scroll,
.admin-table-scroll { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ui-responsive-data-display table,
.ui-table-scroll table,
.admin-table-scroll table { width: max-content; min-width: 100%; }
body.app-admin body.admin body.app-admin .ui-read-model-card,
body.admin .ui-read-model-card { background: #ffffff; border: 1px solid #d9dee5; box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06); }
body.app-admin body.admin body.app-admin .ui-read-model-card > summary,
body.admin .ui-read-model-card > summary { background: #f8fafc; color: #1f2937; padding: 0.7rem 0.9rem; }
body.app-admin .admin-table-scroll th,
body.admin .admin-table-scroll th { white-space: normal; word-break: normal; overflow-wrap: break-word; }
body.app-admin .admin-table-scroll td,
body.admin .admin-table-scroll td { max-width: 32rem; overflow-wrap: anywhere; }
body.app-player .ui-player-page,
body.player .ui-player-page { max-width: min(100%, 96rem); margin-inline: auto; }
@media (max-width: 760px) { body.app-player .ui-responsive-data-display, body.player .ui-responsive-data-display { overflow-x: visible; } }

/* ADDED v2026-05-22.3953: player/admin CSS contract tokens for roster and rules-engine surfaces. */
:root {
    --ui-normalized-surface-bg: var(--color-white);
    --ui-normalized-surface-border: var(--css-color-d9d9d9);
    --ui-normalized-surface-muted-bg: var(--css-color-f8fafc);
    --ui-normalized-surface-muted-text: var(--css-color-333);
    --ui-normalized-card-gap: 0.65rem;
    --ui-normalized-card-padding: 0.75rem;
}

.ui-roster-member-list,
.ui-rule-resolution-list,
body.app-player .ui-roster-member-list,
body.app-admin .ui-rule-resolution-list {
    display: grid;
    gap: var(--ui-normalized-card-gap);
}

.ui-roster-member-card,
.ui-rule-resolution-card,
.ui-normalized-contract-card {
    box-sizing: border-box;
    border: 1px solid var(--ui-normalized-surface-border);
    border-radius: var(--ui-card-radius);
    background: var(--ui-normalized-surface-bg);
    padding: var(--ui-normalized-card-padding);
}

.ui-roster-member-card[data-member-type="team_substitute_pool"],
.ui-roster-member-card[data-member-type="league_substitute_pool"],
.ui-roster-member-card[data-member-type="match_substitute"] {
    background: var(--css-color-eef8ee);
}

body.app-admin .ui-rule-resolution-card,
body.admin .ui-rule-resolution-card,
body.app-admin .ui-normalized-contract-card,
body.admin .ui-normalized-contract-card {
    background: var(--ui-normalized-surface-bg);
    border-color: var(--ui-normalized-surface-border);
}

body.app-player .ui-roster-member-card,
body.player .ui-roster-member-card {
    max-width: 100%;
    overflow-wrap: break-word;
}

@media (max-width: 720px) {
    .ui-normalized-contract-card,
    .ui-rule-resolution-card,
    .ui-roster-member-card {
        padding: 0.65rem;
    }
}

/* ADDED v2026-05-22.3978: Player release polish.
   Make the 2+ complete-teams calendar highlight thinner and lighter. */
:root {
    --calendar-overlap-outline: #aeb4bb;
    --calendar-overlap-outline-dark: #8f969e;
}

.calendar-overlap {
    box-shadow:
        inset 0 0 0 1px var(--calendar-overlap-outline, #aeb4bb),
        0 0 2px rgba(110, 118, 129, 0.25) !important;
}

.calendar-overlap::before {
    border: 1px solid var(--calendar-overlap-outline, #aeb4bb) !important;
    box-shadow: none !important;
}

@media (prefers-color-scheme: dark) {
    .calendar-overlap {
        box-shadow:
            inset 0 0 0 1px var(--calendar-overlap-outline-dark, #8f969e),
            0 0 2px rgba(143, 150, 158, 0.35) !important;
    }

    .calendar-overlap::before {
        border-color: var(--calendar-overlap-outline-dark, #8f969e) !important;
    }
}


/* ADDED v2026-05-22.3984: Calendar 2+ complete-team cells use
   a light-grey background fill as well as the thin neutral outline. */
:root {
    --calendar-overlap-bg: #f1f3f5;

}

.calendar-overlap {
    background-color: var(--calendar-overlap-bg, #f1f3f5) !important;
}

@media (prefers-color-scheme: dark) {
    .calendar-overlap {
        background-color: var(--calendar-overlap-bg-dark, #2f3338) !important;
    }
}

/* ADDED v2026-05-22.3985: Calendar overlap background needs to show
   through the per-player availability strips. Earlier background-color on the
   td was mostly hidden by .c0 white strips. Keep player colour strips intact,
   but tint empty strips and the cell itself light grey for visible contrast. */
:root {
    --calendar-overlap-bg: #edf0f2;
    --calendar-overlap-bg-dark: #2f3338;
}

.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell.calendar-overlap {
    background: var(--calendar-overlap-bg, #edf0f2) !important;
    background-color: var(--calendar-overlap-bg, #edf0f2) !important;
}

.table-calendar .calendar-clickable-cell.calendar-overlap > .c0,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .c0 {
    background: var(--calendar-overlap-bg, #edf0f2) !important;
    background-color: var(--calendar-overlap-bg, #edf0f2) !important;
}

@media (prefers-color-scheme: dark) {
    .table-calendar .calendar-clickable-cell.calendar-overlap,
    .table-calendar td.calendar-clickable-cell.calendar-overlap,
    .table-calendar .calendar-clickable-cell.calendar-overlap > .c0,
    .table-calendar td.calendar-clickable-cell.calendar-overlap > .c0 {
        background: var(--calendar-overlap-bg-dark, #2f3338) !important;
        background-color: var(--calendar-overlap-bg-dark, #2f3338) !important;
    }
}

/* ADDED v2026-05-23.4014: Mobile Players photo/name spacing and Player Profile team link polish. */
.player-profile-team-link {
    display: inline-block;
    margin-left: 0.45rem;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .players-container .stats-player-cell a.align-photo,
    .player-page-container .stats-context-players .stats-player-cell a.align-photo {
        display: inline-flex !important;
        align-items: center !important;
        column-gap: 0.45rem !important;
        row-gap: 0 !important;
        width: max-content !important;
        max-width: none !important;
    }

    .players-container .stats-player-cell a.align-photo .profile-photo-frame,
    .player-page-container .stats-context-players .stats-player-cell a.align-photo .profile-photo-frame,
    .players-container .stats-player-cell a.align-photo .profile-initials-avatar,
    .player-page-container .stats-context-players .stats-player-cell a.align-photo .profile-initials-avatar {
        flex: 0 0 auto !important;
        margin-right: 0 !important;
    }
}

/* ADDED v2026-05-23.4035: keep player-facing details/card body content off the left border. */
body.app-player :where(details.ui-player-details-card, details.stats-details, details.player-details-card, details.player-about-details, details.player-about-rule-details, details.ui-expandable-section) > :where(div, p, ul, ol, section, .round-trend-insights, .ui-details-body):not(summary) {
    box-sizing: border-box;
    padding-inline: 0.72rem;
}

body.app-player :where(details.ui-player-details-card, details.stats-details, details.player-details-card, details.player-about-details, details.player-about-rule-details, details.ui-expandable-section) > .table-container:not(summary) {
    box-sizing: border-box;
    width: calc(100% - 1.44rem);
    margin-inline: 0.72rem;
}

body.app-player :where(.player-community-standard-card) > :where(p, ul, ol):not(.ui-card-title) {
    margin-inline: 0.72rem;
}

body.app-player :where(.player-community-standard-card) > :where(ul, ol):not(.ui-card-title) {
    padding-left: 1.65rem;
}

/** ADDED v2026-05-23.4067
 *  Suppress the legacy left heading accent when a section heading is explicitly
 *  centered. The accent remains for normal left-aligned content headings, but it
 *  no longer appears as a disconnected vertical bar beside centered h2/h3 text.
 */
:where(h2, h3):where(.center, .centered, .text-center, .align-center, [align="center"]),
:where([style*="text-align:center"], [style*="text-align: center"], .center, .centered, .text-center, .align-center, [align="center"]) > :where(h2, h3),
:where([style*="text-align:center"], [style*="text-align: center"], .center, .centered, .text-center, .align-center, [align="center"]) :where(.ui-page-header, .player-page-title) > :where(h2, h3) {
    border-left: 0 !important;
    padding-left: 0 !important;
}

/** ADDED v2026-05-23.4069
 *  Centered login/card headings are intentionally detached from the legacy
 *  document-heading accent. The global h2/h3 accent remains for normal
 *  left-aligned page content, but centered headings inside cards must not carry
 *  the left border/padding because it renders as a stray vertical bar.
 */
.login-modern-page-v268 :where(.login-modern-title, h2, h3):where(.login-modern-title, .text-center, .center, .centered, .align-center),
.login-modern-page-v268 .login-modern-card > :where(h2, h3):first-child,
.login-modern-page-v268 .divborder > :where(h2, h3):first-child,
.login-modern-page-v268 :where(.login-modern-card, .divborder) > :where(.login-modern-title) {
    border-left: 0 !important;
    padding-left: 0 !important;
}


/* ADDED v2026-05-24.4081: Signup phone country-code split layout. */
.login-modern-page-v268 .signup-phone-split {
    display: grid;
    grid-template-columns: minmax(6.75rem, auto) 1fr;
    gap: .5rem;
    align-items: center;
}

.login-modern-page-v268 .signup-phone-split select,
.login-modern-page-v268 .signup-phone-split input {
    width: 100%;
}

.login-modern-page-v268 .login-field-help {
    margin: .35rem 0 0;
    color: var(--color-muted-text, #555);
    font-size: .9rem;
    line-height: 1.3;
}

@media (max-width: 520px) {
    .login-modern-page-v268 .signup-phone-split {
        grid-template-columns: 1fr;
    }
}

/** CHANGED v2026-05-24.4084
 *  Tune public signup field widths and keep country code + phone number on
 *  one mobile row while making the phone and DUPR fields match their expected
 *  character counts.
 *
 *  ADDED v2026-05-24.4083
 *  Tune public signup field widths after splitting the phone input. Name needs
 *  more room for full names, DUPR ID should visually match its 6-character
 *  constraint, and the national phone field should not stretch wider than a
 *  practical 12-digit entry area on desktop.
 */
.login-modern-page-v268 .signup-name-input {
    width: min(100%, 28rem);
}

.login-modern-page-v268 .signup-dupr-id-input {
    width: 9.5ch;
    max-width: 9.5ch;
    min-width: 9.5ch;
    letter-spacing: .08em;
    text-align: center;
}

.login-modern-page-v268 .signup-phone-split {
    grid-template-columns: minmax(7.75rem, max-content) minmax(16ch, 22ch);
    justify-content: start;
}

.login-modern-page-v268 .signup-phone-split select {
    width: auto;
    min-width: 7.75rem;
}

.login-modern-page-v268 .signup-phone-national-input {
    width: 22ch;
    max-width: 22ch;
}

@media (max-width: 520px) {
    .login-modern-page-v268 .signup-phone-split {
        grid-template-columns: minmax(7.75rem, max-content) minmax(16ch, 22ch);
        justify-content: start;
        max-width: 100%;
    }

    .login-modern-page-v268 .signup-phone-split select {
        width: auto;
        min-width: 7.75rem;
        max-width: 8.5rem;
    }

    .login-modern-page-v268 .signup-phone-national-input {
        width: 12ch;
        max-width: 12ch;
    }

    .login-modern-page-v268 .signup-dupr-id-input {
        width: 9.5ch;
        max-width: 9.5ch;
        min-width: 9.5ch;
        text-align: center;
    }

    .login-modern-page-v268 .signup-name-input {
        width: 100%;
        max-width: 100%;
        text-align: left;
    }
}

/** ADDED v2026-05-24.4087
 *  Desktop/mobile emoji font support for country-code dropdown flags.
 *
 *  Note:
 *  Native <select>/<option> rendering is partly controlled by the browser/OS.
 *  This font stack enables flag emoji wherever the platform has a color emoji
 *  font with regional-flag glyph support; platforms without flag glyphs may
 *  still display regional indicator letters.
 */
.login-modern-page-v268 .signup-phone-split select,
.login-modern-page-v268 .signup-phone-split option,
.login-modern-page-v268 .phone-country-code-select,
.login-modern-page-v268 .phone-country-code-select option,
body.app-player .profile-phone-split select,
body.app-player .profile-phone-split option,
body.app-player .phone-country-code-select,
body.app-player .phone-country-code-select option {
    font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla", "EmojiOne Color", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

/** ADDED v2026-05-24.4087
 *  Reuse the Sign-Up phone entry pattern inside Player Profile -> My Profile
 *  without inheriting oversized legacy login input widths.
 */
body.app-player .profile-phone-field {
    max-width: 100%;
}

body.app-player .profile-phone-split {
    display: grid;
    grid-template-columns: minmax(7.75rem, max-content) minmax(13ch, 16ch);
    gap: .5rem;
    align-items: center;
    justify-content: start;
}

body.app-player .profile-phone-split select,
body.app-player .profile-phone-split input {
    width: 100%;
}

body.app-player .profile-phone-split select {
    width: auto;
    min-width: 7.75rem;
}

body.app-player .profile-phone-split .signup-phone-national-input {
    width: 16ch;
    max-width: 16ch;
}

body.app-player .profile-phone-field .login-field-help {
    margin: .35rem 0 0;
    color: var(--color-muted-text, #555);
    font-size: .9rem;
    line-height: 1.3;
}

@media (max-width: 520px) {
    body.app-player .profile-phone-split {
        grid-template-columns: minmax(7.75rem, max-content) minmax(12ch, 1fr);
        max-width: 100%;
    }

    body.app-player .profile-phone-split select {
        min-width: 7.75rem;
        max-width: 8.75rem;
    }

    body.app-player .profile-phone-split .signup-phone-national-input {
        width: 14ch;
        max-width: 100%;
    }
}


/** ADDED v2026-05-24.4091
 *  Makes Access Requests -> Pending Requests team notes use the available
 *  approval-options cell width instead of the browser's default narrow input.
 */
.admin-access-team-note {
    box-sizing: border-box;
    width: 100%;
    min-width: 16rem;
    max-width: 100%;
}


/* ADDED v2026-05-24.4094: Final admin/player formatting contract audit normalization.
   Scope: broad body-scoped contract after older rules so admin/player pages share
   severity, table, details, and text-input behavior consistently. */
:root {
  --format-contract-error-bg: #fde8e8;
  --format-contract-error-border: #b42318;
  --format-contract-error-text: #7a1c12;
  --format-contract-warning-bg: #fff4ce;
  --format-contract-warning-border: #b7791f;
  --format-contract-warning-text: #744210;
  --format-contract-info-bg: #e8f3ff;
  --format-contract-info-border: #2b6cb0;
  --format-contract-info-text: #1a4f85;
  --format-contract-input-bg: #f6f8fa;
  --format-contract-input-focus-bg: #e5e7eb;
}

body.app-admin :where(details, .ui-details-card),
body.app-player :where(details, .ui-details-card) {
  box-sizing: border-box;
  max-width: 100%;
}

body.app-admin :where(details > summary),
body.app-player :where(details > summary) {
  box-sizing: border-box;
  cursor: pointer;
  border-radius: 0.65rem;
}

body.app-admin :where(details.admin-section-outline-none, details.has-no-findings),
body.app-player :where(details.admin-section-outline-none, details.has-no-findings) {
  box-shadow: none !important;
}

body.app-admin :where(details.admin-section-outline-none, details.has-no-findings) > summary,
body.app-player :where(details.admin-section-outline-none, details.has-no-findings) > summary {
  background: transparent !important;
  border-color: transparent !important;
}

body.app-admin :where(details.admin-section-outline-error, details.has-error),
body.app-player :where(details.admin-section-outline-error, details.has-error) {
  border-color: var(--format-contract-error-border) !important;
}
body.app-admin :where(details.admin-section-outline-error, details.has-error) > summary,
body.app-player :where(details.admin-section-outline-error, details.has-error) > summary {
  background: var(--format-contract-error-bg) !important;
  border: 1px solid var(--format-contract-error-border) !important;
  color: var(--format-contract-error-text) !important;
}

body.app-admin :where(details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error), details.has-warning:not(.admin-section-outline-error):not(.has-error)),
body.app-player :where(details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error), details.has-warning:not(.admin-section-outline-error):not(.has-error)) {
  border-color: var(--format-contract-warning-border) !important;
}
body.app-admin :where(details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error), details.has-warning:not(.admin-section-outline-error):not(.has-error)) > summary,
body.app-player :where(details.admin-section-outline-warning:not(.admin-section-outline-error):not(.has-error), details.has-warning:not(.admin-section-outline-error):not(.has-error)) > summary {
  background: var(--format-contract-warning-bg) !important;
  border: 1px solid var(--format-contract-warning-border) !important;
  color: var(--format-contract-warning-text) !important;
}

body.app-admin :where(details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning), details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning)),
body.app-player :where(details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning), details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning)) {
  border-color: var(--format-contract-info-border) !important;
}
body.app-admin :where(details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning), details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning)) > summary,
body.app-player :where(details.admin-section-outline-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning), details.has-info:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning)) > summary {
  background: var(--format-contract-info-bg) !important;
  border: 1px solid var(--format-contract-info-border) !important;
  color: var(--format-contract-info-text) !important;
}

body.app-admin :where(.table-container, .admin-table-container, .admin-table-scroll, .ui-table-scroll, .ui-responsive-data-scroll, .ui-responsive-table-card, .scroll-x),
body.app-player :where(.table-container, .admin-table-container, .admin-table-scroll, .ui-table-scroll, .ui-responsive-data-scroll, .ui-responsive-table-card, .scroll-x) {
  box-sizing: border-box !important;
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch;
}

body.app-admin :where(table),
body.app-player :where(table) {
  border-collapse: collapse;
  box-sizing: border-box;
  table-layout: auto !important;
  width: max-content;
  min-width: 100%;
  max-width: none;
}

body.app-admin :where(th),
body.app-player :where(th) {
  box-sizing: border-box;
  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;
  vertical-align: top;
}

body.app-admin :where(td),
body.app-player :where(td) {
  box-sizing: border-box;
  white-space: normal !important;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: normal;
  hyphens: none;
  text-overflow: clip;
  vertical-align: top;
}

body.app-admin :where(tr.dashboard-status-blocked, tr.dashboard-status-error, tr.has-error, tr.error, .severity-error, .status-error, .admin-notice-error),
body.app-player :where(tr.dashboard-status-blocked, tr.dashboard-status-error, tr.has-error, tr.error, .severity-error, .status-error, .admin-notice-error) {
  background: var(--format-contract-error-bg) !important;
  color: var(--format-contract-error-text);
}

body.app-admin :where(tr.dashboard-status-warning, tr.has-warning, tr.warning, .severity-warning, .status-warning, .admin-notice-warning),
body.app-player :where(tr.dashboard-status-warning, tr.has-warning, tr.warning, .severity-warning, .status-warning, .admin-notice-warning) {
  background: var(--format-contract-warning-bg) !important;
  color: var(--format-contract-warning-text);
}

body.app-admin :where(tr.dashboard-status-info, tr.has-info, tr.info, .severity-info, .status-info, .admin-notice-info),
body.app-player :where(tr.dashboard-status-info, tr.has-info, tr.info, .severity-info, .status-info, .admin-notice-info) {
  background: var(--format-contract-info-bg) !important;
  color: var(--format-contract-info-text);
}

body.app-admin :where(input[type="text"], input[type="search"], input[type="tel"], input[type="number"], input[type="url"], input[type="email"], input[type="password"], input[type="date"], input[type="time"], input[type="file"], textarea),
body.app-player :where(input[type="text"], input[type="search"], input[type="tel"], input[type="number"], input[type="url"], input[type="email"], input[type="password"], input[type="date"], input[type="time"], input[type="file"], textarea) {
  background: var(--format-contract-input-bg) !important;
  border: 1px solid var(--color-table-border, #d0d7de) !important;
  border-radius: 0.55rem !important;
  box-sizing: border-box;
  max-width: 100%;
}

body.app-admin :where(input[type="text"], input[type="search"], input[type="tel"], input[type="number"], input[type="url"], input[type="email"], input[type="password"], input[type="date"], input[type="time"], input[type="file"], textarea):focus,
body.app-player :where(input[type="text"], input[type="search"], input[type="tel"], input[type="number"], input[type="url"], input[type="email"], input[type="password"], input[type="date"], input[type="time"], input[type="file"], textarea):focus {
  background: var(--format-contract-input-focus-bg) !important;
}


/* ADDED v2026-05-24.4095: Admin-facing CSS/UI/UX standardization pass.
   Scope: admin surfaces only. This layer intentionally avoids player-facing selectors
   and reinforces common page, card, details, form, action, and table behavior after
   older operation-specific rules. */
body.app-admin {
  --admin-ui-card-bg: var(--color-surface, #fff);
  --admin-ui-card-border: var(--color-table-border, #d0d7de);
  --admin-ui-card-radius: 0.75rem;
  --admin-ui-card-shadow: 0 1px 2px rgba(0,0,0,.04);
  --admin-ui-gap: 0.75rem;
  --admin-ui-control-radius: 0.55rem;
  --admin-ui-control-bg: var(--format-contract-input-bg, #f6f8fa);
  --admin-ui-control-focus-bg: var(--format-contract-input-focus-bg, #e5e7eb);
}

body.app-admin :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell, .admin-tool-page, .divborder) {
  box-sizing: border-box;
  max-width: 100%;
}

body.app-admin :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell, .admin-tool-page) {
  display: flex;
  flex-direction: column;
  gap: var(--admin-ui-gap);
}

body.app-admin :where(.admin-card, .admin-section, .admin-normalized-section, .admin-report-section, .admin-health-details, .admin-panel, .settings-panel, .dashboard-card, .diagnostic-card, .report-card, .ui-admin-card, .ui-admin-details-card) {
  box-sizing: border-box;
  max-width: 100%;
  border: 1px solid var(--admin-ui-card-border);
  border-radius: var(--admin-ui-card-radius);
  background: var(--admin-ui-card-bg);
  box-shadow: var(--admin-ui-card-shadow);
  padding: 0.75rem;
}

body.app-admin :where(details, .ui-admin-details-card, .admin-health-details) {
  overflow: hidden;
}

body.app-admin :where(details > summary) {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  min-height: 2.25rem;
  padding: 0.5rem 0.65rem;
  font-weight: 700;
  line-height: 1.25;
  list-style-position: inside;
}

body.app-admin :where(details > summary + *) {
  margin-top: 0.65rem;
}

body.app-admin :where(.admin-form, .admin-filter-form, .admin-inline-form, .admin-entity-form, form.admin-normalized-form) {
  box-sizing: border-box;
  max-width: 100%;
}

body.app-admin :where(.admin-form-grid, .admin-controls-grid, .admin-filter-grid, .admin-card-grid, .admin-dashboard-card-grid, .ui-card-grid, .ui-content-grid) {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr));
  gap: var(--admin-ui-gap);
  align-items: start;
}

body.app-admin :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row, .filter-row, .admin-filter-row) {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  max-width: 100%;
}

body.app-admin :where(label, .field-label, .setting-label) {
  font-weight: 650;
}

body.app-admin :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
  min-height: 2.15rem;
  padding: 0.35rem 0.5rem;
  background: var(--admin-ui-control-bg) !important;
  border: 1px solid var(--admin-ui-card-border) !important;
  border-radius: var(--admin-ui-control-radius) !important;
  box-sizing: border-box;
}

body.app-admin :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea):focus {
  background: var(--admin-ui-control-focus-bg) !important;
  outline: 2px solid rgba(31,111,235,.18);
  outline-offset: 1px;
}

body.app-admin :where(.button, .btn, .button-link, button, input[type="submit"], input[type="button"], a.button, a.btn, .download-link, .export-link) {
  border-radius: 0.55rem;
  line-height: 1.2;
  min-height: 2.1rem;
  padding: 0.42rem 0.7rem;
  box-sizing: border-box;
}

body.app-admin :where(.admin-actions, .button-row, .form-actions, .dashboard-actions, .report-actions, .page-actions, .action-buttons, .admin-action-row, .admin-toolbar, .report-toolbar) {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

body.app-admin :where(.table-container, .admin-table-container, .admin-report-table-container, .ui-admin-table-wrap, .ui-table-container, .ui-table-scroll, .admin-table-scroll, .scroll-x, .divborder) {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}

body.app-admin :where(table.admin-table, table.admin-dashboard-table, table.ui-admin-table, .admin-table-container table, .table-container table) {
  width: max-content;
  min-width: 100%;
  max-width: none;
  table-layout: auto !important;
}

body.app-admin :where(table.admin-table, table.admin-dashboard-table, table.ui-admin-table, .admin-table-container table, .table-container table) :where(th, td) {
  max-width: 34rem;
  padding: 0.45rem 0.55rem;
  line-height: 1.25;
}

body.app-admin :where(table.admin-table, table.admin-dashboard-table, table.ui-admin-table, .admin-table-container table, .table-container table) th {
  white-space: normal !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
  hyphens: none !important;
}

body.app-admin :where(table.admin-table, table.admin-dashboard-table, table.ui-admin-table, .admin-table-container table, .table-container table) td {
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: normal;
  text-overflow: clip;
}

body.app-admin :where(pre, code, .admin-generated-output, .admin-json-output) {
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

body.app-admin :where(.admin-notice, .notice, .alert, .message, .callout, .admin-status-box, .validation-message) {
  box-sizing: border-box;
  max-width: 100%;
  border-radius: 0.65rem;
  padding: 0.65rem 0.75rem;
}

body.app-admin :where(.admin-notice-error, .notice.error, .alert.error, .message.error, .callout.error, .severity-error, .status-error) {
  border-color: var(--format-contract-error-border, #b42318) !important;
  background: var(--format-contract-error-bg, #fde8e8) !important;
  color: var(--format-contract-error-text, #7a1c12) !important;
}

body.app-admin :where(.admin-notice-warning, .notice.warning, .alert.warning, .message.warning, .callout.warning, .severity-warning, .status-warning) {
  border-color: var(--format-contract-warning-border, #b7791f) !important;
  background: var(--format-contract-warning-bg, #fff4ce) !important;
  color: var(--format-contract-warning-text, #744210) !important;
}

body.app-admin :where(.admin-notice-info, .notice.info, .alert.info, .message.info, .callout.info, .severity-info, .status-info) {
  border-color: var(--format-contract-info-border, #2b6cb0) !important;
  background: var(--format-contract-info-bg, #e8f3ff) !important;
  color: var(--format-contract-info-text, #1a4f85) !important;
}

@media (max-width: 700px) {
  body.app-admin :where(.admin-actions, .button-row, .form-actions, .dashboard-actions, .report-actions, .page-actions, .action-buttons, .admin-action-row, .admin-toolbar, .report-toolbar, .form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row, .filter-row, .admin-filter-row) {
    align-items: stretch;
  }

  body.app-admin :where(.admin-actions, .button-row, .form-actions, .dashboard-actions, .report-actions, .page-actions, .action-buttons, .admin-action-row, .admin-toolbar, .report-toolbar) > :where(a, button, input[type="submit"], input[type="button"]) {
    flex: 1 1 12rem;
    text-align: center;
  }

  body.app-admin :where(.form-row, .field-row, .input-row, .setting-row, .control-row, .admin-form-row, .report-form-row, .filter-row, .admin-filter-row) > :where(input, select, textarea) {
    flex: 1 1 14rem;
  }
}

.player-lazy-details-body {
    min-width: 0;
    max-width: 100%;
}


/** CHANGED v2026-05-24.4115
 *  About page details density and What's New consistency.
 *
 *  Purpose:
 *  Player lazy-details wrappers receive page-specific classes on the wrapper
 *  element. Do not style those wrappers as their own details cards on About;
 *  the nested native <details> owns the visible border/summary. This removes the
 *  large visual gap between League Details and Community Standards while keeping
 *  the current player-facing details UX. The What's New launcher now uses the
 *  same visual contract as a standard closed player details summary.
 */
body.app-player .player-lazy-details-wrapper.player-about-details {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin-block: 0.28rem !important;
    overflow: visible !important;
    padding: 0 !important;
}

body.app-player .player-lazy-details-wrapper.player-about-details > details.player-lazy-details {
    margin-block: 0 !important;
}

body.app-player .player-lazy-details-wrapper.player-about-details + br,
body.app-player .about-whats-new-link-row {
    margin: 0.28rem 0 !important;
    padding: 0 !important;
}



body.app-player .about-whats-new-link::before {
    content: "▶";
    display: inline-block;
    flex: 0 0 auto;
    font-size: 0.74em;
    line-height: 1;
    margin-right: 0;
    transform: translateY(-0.02rem);
}

body.app-player .about-whats-new-link:hover,
body.app-player .about-whats-new-link:focus-visible {

    box-shadow: var(--ui-focus-ring, 0 0 0 3px rgba(38, 132, 255, .24));

}

/** CHANGED v2026-05-24.4118
 *  About page What's New launcher matches the closed player <details> summary
 *  rows exactly while still opening the existing SweetAlert changelog dialog.
 *  The launcher is an action link, not an expandable section, so no disclosure
 *  marker is shown.
 */
body.app-player .about-whats-new-link-row {
    box-sizing: border-box;
    margin-block: var(--player-gap-sm, 0.5rem) !important;
    margin-inline: 0 !important;
    padding: 0 !important;
    width: 100%;
}

body.app-player .about-whats-new-link {
    align-items: center;
    background: var(--player-surface, #fff) !important;
    border: 1px solid var(--player-border, var(--color-table-border, #bfbfbf)) !important;
    border-left: 1px solid var(--player-border, var(--color-table-border, #bfbfbf)) !important;
    border-radius: var(--player-radius-md, 0.62rem) !important;
    box-shadow: none !important;
    box-sizing: border-box;
    color: var(--player-text, inherit) !important;
    cursor: pointer;
    display: flex;
    font-weight: 700;
    gap: 0.4rem;
    line-height: 1.16 !important;
    margin: 0 !important;
    max-width: 100%;
    min-height: 2.35rem;
    padding: 0.48rem 0.72rem !important;
    text-decoration: none !important;
    touch-action: manipulation;
    width: 100%;
}

body.app-player .about-whats-new-link::before,
body.app-player .about-whats-new-link::after {
    content: none !important;
    display: none !important;
}

body.app-player .about-whats-new-link:hover,
body.app-player .about-whats-new-link:focus-visible {
    background: var(--player-surface, #fff) !important;
    text-decoration: none !important;
}


/** CHANGED v2026-05-24.4120
 *  About League Details nested-section density.
 *
 *  Purpose:
 *  When League Details is open, its first nested section (Important Dates) should
 *  sit directly under the parent summary with the same compact spacing as other
 *  section headers. Remove legacy top spacing introduced by lazy-details body
 *  wrappers/content blocks without changing the rest of the About page layout.
 */
body.app-player .player-lazy-details-wrapper.player-about-details > details.player-lazy-details[open] > .player-lazy-details-body {
    padding-top: 0 !important;
}

body.app-player .player-lazy-details-wrapper.player-about-details > details.player-lazy-details[open] > .player-lazy-details-body > .content:first-child {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

body.app-player .player-lazy-details-wrapper.player-about-details > details.player-lazy-details[open] > .player-lazy-details-body > .content:first-child > details:first-child {
    margin-top: 0 !important;
}

/* Phase 4 Step 4146: Confirm SweetAlert action button width policy without
   forcing hidden actions visible. Confirm, cancel, and deny buttons are
   constrained to 75% of the action container width and centered when SweetAlert2
   shows them; this rule intentionally does not set display so hidden deny/cancel
   buttons remain hidden on one-button alerts. */
.swal2-popup .swal2-actions {
    align-items: center !important;
    box-sizing: border-box;
    justify-content: center !important;
    width: 100% !important;
}

.swal2-popup .swal2-actions .swal2-styled,
.swal2-popup .swal2-actions .swal2-confirm,
.swal2-popup .swal2-actions .swal2-cancel,
.swal2-popup .swal2-actions .swal2-deny {
    box-sizing: border-box !important;
    flex: 0 1 75% !important;
    max-width: 75% !important;
    width: 75% !important;
    margin-left: auto !important;
    margin-right: auto !important;
}

.swal2-popup .swal2-actions .swal2-confirm {
    background-color: var(--color-button-bg, #339955) !important;
    color: var(--color-button-text, #fff) !important;
}

.swal2-popup .swal2-actions .swal2-confirm:hover {
    background-color: var(--color-button-hover-bg, #297a44) !important;
}

.swal2-popup .swal2-icon {
    font-size: 0.9em !important;
}

/* Phase 4 Step 4147: Large standalone form/action button width policy.
   Applies the 75%-width centered button treatment only to large standalone action
   rows and form-action containers. Inline table actions, compact admin buttons,
   toolbars, nav links, and SweetAlert buttons keep their existing specialized
   rules. */
:where(
    .ui-form-actions,
    .ui-player-form-actions,
    .ui-admin-form-actions,
    .form-actions,
    .page-actions,
    .admin-action-row,
    .admin-entity-action-row,
    .admin-danger-action-row,
    .player-action-row,
    .season-select-list,
    .workflow-bulk-delete-actions,
    .login-actions,
    .login-provider-stack,
    .passkey-login-panel
) > :where(
    button,
    input[type="submit"],
    input[type="button"],
    a.button,
    a.button-link,
    a.primary-button,
    .ui-button,
    .admin-action-button,
    .login-provider-button,
    .login-passkey-button
):not(.admin-button-small):not(.stats-advanced-toggle):not(.matches-team-action) {
    box-sizing: border-box;
    margin-left: auto !important;
    margin-right: auto !important;
    max-width: 75% !important;
    width: 75% !important;
}


/* STEP4178: Database Readiness may correctly have an error outline, but that
   section-level severity must not make every nested row/details item look like
   an error. Keep actual subsection summaries free to show their own severity. */
.database-readiness-body,
.database-readiness-body :where(p, table, th, td, details, summary, textarea, code, pre) {
  color: var(--color-text, inherit);
}

.database-readiness-body details.data-validation-check:not(.admin-section-outline-error):not(.has-error):not(.admin-section-outline-warning):not(.has-warning):not(.admin-section-outline-info):not(.has-info) > summary {
  background: var(--admin-severity-neutral-summary-bg-final, var(--color-table-header-bg, #f7f7f7)) !important;
  color: var(--admin-severity-neutral-text-final, var(--color-text, #222)) !important;
  border-left-color: var(--admin-severity-neutral-border, var(--color-table-border, #ddd)) !important;
}

.database-readiness-body details.database-readiness-review-only > summary {
  background: var(--admin-severity-info-summary-bg-final, var(--color-background, #fff)) !important;
  color: var(--admin-severity-info-text, var(--color-text, #222)) !important;
}

/** ADDED v2026-05-25.4189: Player-owned notification preference controls. */
.profile-notifications-section {
    display: grid;
    gap: 0.5rem;
    margin: 0.5rem 0 1rem;
    max-width: min(100%, 34rem);
}
.profile-notification-option {
    display: block;
    padding: 0.5rem 0;
}
.player-checkbox-option-label {
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
    margin: 0;
}
.profile-notification-option input {
    margin-right: 0;
}
.player-checkbox-option-description {
    display: block;
    margin: 0.75rem 0 0 0;
}
.player-checkbox-option-status {
    display: block;
    margin: 0.75rem 0 0 0;
}

/* ADDED v2026-05-26.4225: rounded My Profile / portfolio sections. */
.profile-portfolio-section {
    border: 1px solid var(--border-color, #d0d7de);
    border-radius: 12px;
    padding: 1rem;
    margin: 0 0 1rem 0;
    background: var(--card-bg, rgba(255,255,255,0.65));
}
.profile-notification-option-disabled {
    opacity: 0.75;
}
.profile-notification-option-disabled input[type="checkbox"] {
    cursor: not-allowed;
}

/* ADDED v2026-05-26.4227: tighten My Profile subsection spacing now that each field has its own card heading. */
.profile-portfolio-section > h4:first-child {
    margin-top: 0;
    margin-bottom: 0.55rem;
}
.profile-portfolio-section > :where(.login-field, .profile-login-field, .profile-phone-field):first-of-type {
    margin-top: 0;
}
.profile-portfolio-section > :where(p, .single, .warning):first-child {
    margin-top: 0;
}

/* ADDED v2026-05-26.4229: compact My Profile subsections to match player details-card density. */
body.app-player .profile-portfolio-section {
    padding: 0.52rem 0.72rem !important;
    margin: 0 0 var(--player-gap-sm, 0.5rem) 0 !important;
    border-radius: var(--player-radius-md, 12px) !important;
}
body.app-player .profile-portfolio-section > h4:first-child {
    margin: 0 0 0.38rem 0 !important;
    padding: 0 !important;
    line-height: 1.25 !important;
}
body.app-player .profile-portfolio-section > :where(.login-field, .profile-login-field, .profile-phone-field, .profile-notifications-section, p, .single, .warning):first-child,
body.app-player .profile-portfolio-section > h4:first-child + :where(.login-field, .profile-login-field, .profile-phone-field, .profile-notifications-section, p, .single, .warning) {
    margin-top: 0 !important;
}
body.app-player .profile-portfolio-section :where(.login-field, .profile-login-field) {
    margin-block: 0.28rem !important;
}
body.app-player .profile-portfolio-section :where(p.single, p.warning, .single, .warning) {
    margin-block: 0.32rem !important;
}

/* ADDED v2026-05-26.4231: realtime Create/Change Password feedback in My Profile. */
.password-feedback {
    display: block;
    font-size: 0.92rem;
    line-height: 1.25;
    margin: 0.18rem 0 0.34rem 0;
}
.password-feedback-empty { color: var(--muted-text, #57606a); }
.password-feedback-weak,
.password-feedback-mismatch { color: var(--danger-text, #b42318); }
.password-feedback-okay { color: var(--warning-text, #8a5a00); }
.password-feedback-strong,
.password-feedback-match { color: var(--success-text, #116329); }
body.app-player .profile-portfolio-section-password .login-field {
    margin-bottom: 0.18rem !important;
}


/* ADDED v2026-05-26.4234: Standard admin boolean checkbox layout. */
body.app-admin .admin-bool-control {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 0.55rem;
  align-items: start;
  max-width: 58rem;
}
body.app-admin .admin-bool-input {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  padding-top: 0.05rem;
}
body.app-admin .admin-bool-copy {
  display: block;
  min-width: 0;
}
body.app-admin .admin-bool-label {
  display: block;
  font-weight: 600;
}
body.app-admin .admin-bool-description {
  display: block;
  margin-top: 0.12rem;
  font-size: 0.9em;
  color: var(--ui-muted-text, #666);
  line-height: 1.3;
}
body.app-admin .admin-form-table td .admin-bool-control,
body.app-admin .admin-rules-table td .admin-bool-control {
  text-align: left;
}

/* ADDED v2026-05-26.4243: remove legacy heading/accent bands from SweetAlert content.
   SweetAlert titles and HTML content can contain h2/h3 elements while the page
   theme gives headings a left accent border. Alert modals are self-contained UI
   components, so neutralize heading accents and popup edge accents inside them. */
.swal2-container .swal2-popup,
.sweet-alert {
    border-left: 0 !important;
    border-inline-start: 0 !important;
}

.swal2-container .swal2-popup :where(.swal2-title, h1, h2, h3, h4, h5, h6),
.swal2-container .swal2-popup .swal2-html-container :where(h1, h2, h3, h4, h5, h6),
.swal2-container .swal2-popup .changelog-alert-html :where(h1, h2, h3, h4, h5, h6),
.sweet-alert :where(h1, h2, h3, h4, h5, h6) {
    border: 0 !important;
    border-left: 0 !important;
    border-inline-start: 0 !important;
    padding-left: 0 !important;
    padding-inline-start: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.swal2-container .swal2-popup :where(.swal2-title, h1, h2, h3, h4, h5, h6)::before,
.swal2-container .swal2-popup :where(.swal2-title, h1, h2, h3, h4, h5, h6)::after,
.sweet-alert :where(h1, h2, h3, h4, h5, h6)::before,
.sweet-alert :where(h1, h2, h3, h4, h5, h6)::after {
    content: none !important;
    display: none !important;
}


/* STEP4269: player/mobile About and feedback polish. */
@media (max-width: 760px) {
  /* Remove the desktop-optimized admin warning from workflow pages such as Approvals. */
  .approvals-container::before,
  .player-page-approvals::before,
  .approvals-container .ui-surface-admin::before,
  .approvals-container .admin-page-container::before {
    display: none !important;
    content: none !important;
  }

  /* Keep green/info blurb text aligned with desktop card indentation. */
  body.app-player :where(.ui-page-intro, .player-page-container .ui-page-intro, .ui-player-page-header .ui-page-intro, .player-about-details > .content, .player-about-details > .indented, .player-about-feedback-anchor .indented) {
    box-sizing: border-box !important;
    padding-left: 0.82rem !important;
    padding-right: 0.82rem !important;
  }

  /* Round Trends should use the same player mobile font scale as nearby sections. */
  body.app-player :where(.round-trends-container, .round-trends-table, .round-trend-insights, .round-trend-insights li) {
    font-size: var(--player-mobile-font-size, 0.92rem) !important;
    line-height: 1.35 !important;
  }

  /* Ensure the urgent-bug checkbox remains visible in the mobile feedback table layout. */
  body.app-player .player-feedback-form-table .feedback-urgent-checkbox {
    display: grid !important;
    grid-template-columns: max-content minmax(0, 1fr) !important;
    align-items: center !important;
    column-gap: 0.45rem !important;
    width: 100% !important;
    min-width: 0 !important;
    visibility: visible !important;
    opacity: 1 !important;
  }
  body.app-player .player-feedback-form-table .feedback-urgent-checkbox input[type='checkbox'] {
    display: inline-block !important;
    appearance: auto !important;
    -webkit-appearance: checkbox !important;
    width: 1.05rem !important;
    height: 1.05rem !important;
    min-width: 1.05rem !important;
    margin: 0 !important;
    visibility: visible !important;
    opacity: 1 !important;
  }
  body.app-player .player-feedback-form-table .feedback-urgent-checkbox span {
    display: block !important;
    white-space: normal !important;
    overflow: visible !important;
    min-width: 0 !important;
  }
}

body.app-player .stats-round-details {
  margin: 0.55rem 0;
}


/* STEP4269: do not inject desktop-optimized admin copy into mobile page bodies. */
@media (max-width: 760px) {
  .ui-surface-admin::before,
  .admin-page-container::before,
  .admin-dashboard-container::before,
  .admin-diagnostics-container::before {
    display: none !important;
    content: none !important;
  }
}

/* STEP4270: tighten mobile Round Trends note typography to the normal player text scale. */
@media (max-width: 760px) {
  body.app-player .round-trend-insights,
  body.app-player .round-trend-insights *,
  body.app-player .round-trend-insights strong,
  body.app-player .round-trend-insights ul,
  body.app-player .round-trend-insights li,
  body.app-player .round-trend-insights p {
    font-size: var(--player-mobile-font-size, 0.92rem) !important;
    line-height: 1.35 !important;
  }
}

/* STEP4271: definitive mobile Round Trends note typography and feedback lazy-submit binding support. */
@media (max-width: 760px) {
  body.app-player :where(.player-about-details, .stats-details, .ui-player-details-card) :where(.round-trend-insights, .round-trend-insights *, .round-trend-label) {
    font-size: 0.92rem !important;
    line-height: 1.35 !important;
  }
  body.app-player :where(.player-about-details, .stats-details, .ui-player-details-card) .round-trend-label {
    display: inline !important;
    font-weight: 700 !important;
  }
  body.app-player :where(.player-about-details, .stats-details, .ui-player-details-card) .round-trend-insights ul {
    margin-top: 0.32rem !important;
  }
}

/* STEP4272: final mobile override for About -> Stats -> Round Trends note text.
   This intentionally avoids body-class and details-card dependencies because the
   About page can be lazy-rendered inside different public containers. */
@media (max-width: 760px) {
  html body .round-trend-insights,
  html body .round-trend-insights .round-trend-label,
  html body .round-trend-insights ul,
  html body .round-trend-insights ol,
  html body .round-trend-insights li,
  html body .round-trend-insights p,
  html body .round-trend-insights span,
  html body .round-trend-insights strong,
  html body .round-trend-insights em,
  html body .round-trend-insights * {
    font-size: 0.875rem !important;
    line-height: 1.35 !important;
  }

  html body .round-trend-insights {
    margin-top: 0.45rem !important;
    margin-bottom: 0.55rem !important;
  }

  html body .round-trend-insights .round-trend-label {
    display: inline !important;
    font-weight: 700 !important;
  }

  html body .round-trend-insights ul,
  html body .round-trend-insights ol {
    margin-top: 0.28rem !important;
    margin-bottom: 0 !important;
    padding-left: 1.15rem !important;
  }

  html body .round-trend-insights li {
    margin: 0.12rem 0 !important;
    padding: 0 !important;
  }
}

/* STEP4273: hard-stop iOS mobile text autosizing for About -> Stats -> Round Trends notes. */
.round-trend-insights,
.round-trend-insights .round-trend-label,
.round-trend-insights .round-trend-note-list,
.round-trend-insights .round-trend-note-item,
.round-trend-insights ul,
.round-trend-insights li {
    -webkit-text-size-adjust: 100% !important;
    text-size-adjust: 100% !important;
}

@media (max-width: 760px), (hover: none) and (pointer: coarse) {
    .round-trend-insights,
    .round-trend-insights .round-trend-label,
    .round-trend-insights .round-trend-note-list,
    .round-trend-insights .round-trend-note-item,
    .round-trend-insights ul,
    .round-trend-insights li,
    .round-trend-insights * {
        font-size: 0.875rem !important;
        line-height: 1.35 !important;
        -webkit-text-size-adjust: 100% !important;
        text-size-adjust: 100% !important;
    }
}

/** ADDED v2026-05-30.6367
 *  Player-facing score-table polish.
 *  - Keep G1/G2/G3 score stacks at a stable vertical rhythm regardless of which team won.
 *  - Center administrative status badges such as void/forfeit inside the same score-cell contract.
 *  - Scope to player match tables so admin/editor pages are not affected.
 */








.matches-table .game-score-stack .input-score,
.match-layout-table .game-score-stack .input-score,
:where(.matches-container, .player-page-container) .game-score-stack .input-score {


    align-items: center;
    justify-content: center;




}

.matches-table .game-score-stack .game-status-badge,
.match-layout-table .game-score-stack .game-status-badge,
:where(.matches-container, .player-page-container) .game-score-stack .game-status-badge {

    padding-inline: 0.35rem !important;


}





/** ADDED v2026-05-30.6368
 *  Player-facing match score stack hardening.
 *  Rows are block-level in the HTML and are also centered here so score controls
 *  stay vertical even when older cached CSS is present during deployment.
 */
:root {
    --player-score-stack-gap: 0.34rem;
    --player-score-badge-radius: 0.55rem;
    --player-score-status-min-width: 2.65rem;
}

.matches-table .matches-score-cell,
.match-layout-table .matches-score-cell,
:where(.matches-container, .player-page-container) .component-player-score-cell {
    vertical-align: middle;
    text-align: center;
}

.matches-table .game-score-stack,
.match-layout-table .game-score-stack,
:where(.matches-container, .player-page-container) .game-score-stack {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--player-score-stack-gap);
    line-height: 1;
    min-height: calc((var(--game-score-display-height) * 2) + var(--player-score-stack-gap));
}

.matches-table .game-score-stack--status,
.match-layout-table .game-score-stack--status,
:where(.matches-container, .player-page-container) .game-score-stack--status {
    min-height: var(--game-score-display-height);
}

.matches-table .game-score-row,
.match-layout-table .game-score-row,
:where(.matches-container, .player-page-container) .game-score-row {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--game-score-display-height);
    margin: 0;
    padding: 0;
}

.matches-table .game-score-stack .input-score,
.match-layout-table .game-score-stack .input-score,
:where(.matches-container, .player-page-container) .game-score-stack .input-score {
    box-sizing: border-box;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    line-height: 1 !important;
    border-radius: var(--player-score-badge-radius);
    vertical-align: middle;
}

.matches-table .game-score-stack .game-status-badge,
.match-layout-table .game-score-stack .game-status-badge,
:where(.matches-container, .player-page-container) .game-score-stack .game-status-badge {
    min-width: var(--player-score-status-min-width) !important;
    padding: 0 0.35rem !important;
    text-align: center;
    text-transform: lowercase;
}

.matches-table .game-score-stack br,
.match-layout-table .game-score-stack br,
:where(.matches-container, .player-page-container) .game-score-stack br {
    display: none;
}

@media (max-width: 768px) {
    :root {
        --player-score-stack-gap: 0.38rem;
        --player-score-status-min-width: 2.85rem;
    }
}


/* ADDED v2026-05-30.6370: Player match score-cell hardening.
   Loaded/duplicated after prior score rules so top/bottom winner spacing and void
   status centering remain stable across theme overrides. */
body.app-player .matches-table.match-layout-table td.component-player-score-cell {
    vertical-align: middle !important;
    text-align: center !important;
    padding-top: 0.28rem !important;
    padding-bottom: 0.28rem !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack {
    display: grid !important;
    grid-template-columns: 1fr !important;
    grid-template-rows: 1.62rem 1.62rem !important;
    row-gap: 0.26rem !important;
    align-items: center !important;
    justify-items: center !important;
    justify-content: center !important;
    min-height: 3.5rem !important;
    width: 100% !important;
    margin: 0 auto !important;
    padding: 0 !important;
    line-height: 1 !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack.game-score-stack--status {
    grid-template-rows: 1.62rem !important;
    row-gap: 0 !important;
    min-height: 1.62rem !important;
    align-content: center !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 1.62rem !important;
    height: 1.62rem !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > input.input-score,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > span.input-score {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: center !important;
    width: 2.35rem !important;
    min-width: 2.35rem !important;
    max-width: 2.35rem !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    text-align: center !important;
    vertical-align: middle !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .game-status-badge,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .void.input-score {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    align-self: center !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 0.42rem !important;
    box-sizing: border-box !important;
    text-align: center !important;
    vertical-align: middle !important;
    border-radius: 0.55rem !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell br {
    display: none !important;
}


/* CHANGED v2026-05-30.6372: Center Manage Match icon without increasing match-row height. */

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches {


    align-items: center !important;
    padding-right: calc(var(--player-action-icon-size, 1.7rem) + .45rem) !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches .component-team-pair-action,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches .component-team-pair-action {
    position: absolute !important;
    right: .22rem !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;


    height: var(--player-action-icon-size, 1.7rem) !important;



    line-height: 1 !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-manage-link,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-team-action,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-manage-link,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-team-action {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: var(--player-action-icon-size, 1.7rem) !important;
    min-width: var(--player-action-icon-size, 1.7rem) !important;
    height: var(--player-action-icon-size, 1.7rem) !important;
    min-height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1 !important;
    vertical-align: middle !important;
    text-align: center !important;
    float: none !important;
}

/* CHANGED v2026-05-30.6945: Profile-photo size classes replace inline CSS variables from DisplayPlayerPhoto(). */
.profile-photo-frame.profile-photo-frame-size-small {
    --profile-photo-size: 32px;
}

.profile-photo-frame.profile-photo-frame-size-card {
    --profile-photo-size: 88px;
}

.profile-photo-frame.profile-photo-frame-size-profile {
    --profile-photo-size: 160px;
}


/* CHANGED v2026-06-06.7650: Compact logged-in player profile-photo link fixed to the bottom-left with first name below the avatar. */
header {
    position: relative;
}

header .nav-profile-corner {
    position: absolute;
    bottom: 0.55rem;
    left: 0.65rem;
    z-index: 2;
}

header .nav-profile-corner .nav-profile-photo-link {
    font-weight: 700 !important; /** CHANGED v2026-06-08.8046: match main nav link weight. */
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0.12rem !important;
    padding: 0.1rem !important;
    min-height: 0 !important;
    line-height: 1 !important;
    border-radius: 0.45rem;
    text-align: center !important;
    text-decoration: none !important;
}

header .nav-profile-corner .nav-profile-photo-link .profile-photo-frame,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-frame.profile-photo-frame-has-image,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-image,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-fallback-avatar,
header .nav-profile-corner .nav-profile-photo-link .profile-initials-avatar,
header .nav-profile-corner .nav-profile-photo-link .profile-initials-avatar-small {
    --profile-photo-size: 34px !important;
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    max-height: 34px !important;
    flex: 0 0 34px !important;
    box-sizing: border-box !important;
    font-size: 0.82rem !important;
    line-height: 34px !important;
}

header .nav-profile-corner .nav-profile-photo-link .profile-photo-image,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-fallback-avatar,
header .nav-profile-corner .nav-profile-photo-link .profile-initials-avatar {
    border-radius: 999px !important;
}

header .nav-profile-corner .nav-profile-first-name {
    display: block !important;
    max-width: 4.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #fff !important;
    font-size: 1.25rem !important; /** CHANGED v2026-06-09.8202: match visible main nav-link text size. */
    font-weight: 700 !important; /** CHANGED v2026-06-08.8046: keep profile label bold like main nav links. */
    line-height: 1.05 !important;
    text-shadow: none !important;
}

@media (max-width: 700px) {
    header .nav-profile-corner {
        bottom: 0.35rem;
        left: 0.45rem;
    }

    header .nav-profile-corner .nav-profile-first-name {
        max-width: 3.8rem;
        font-size: 1.25rem !important; /** CHANGED v2026-06-09.8202: keep mobile profile label same size as main nav links. */
    }
}


/** ADDED v2026-05-31.7005
 *  Admin visual parity patch:
 *  - keep top/header nav links white on admin pages, matching player pages;
 *  - neutralize decorative tinted backgrounds on admin text blurbs without
 *    affecting warning/error/success/info alert panels or wide-table scrolling.
 */
body.app-admin header nav a.nav-link,
body.app-admin nav a.nav-link {
    color: var(--color-white) !important;
}

body.app-admin header nav a.nav-link:visited,
body.app-admin nav a.nav-link:visited {
    color: var(--color-white) !important;
}

body.app-admin header nav a.nav-link:hover,
body.app-admin nav a.nav-link:hover,
body.app-admin header nav a.nav-link:focus-visible,
body.app-admin nav a.nav-link:focus-visible {
    color: var(--color-accent) !important;
}

body.app-admin :where(.help-text, .admin-help-text, .hint, .muted, .small-note, .smallnote, .note, .admin-inline-note, .admin-action-note, .ui-page-note, .ui-section-intro, .ui-page-intro, .admin-page-intro, .admin-section-intro):not(.warning):not(.error):not(.success):not(.info):not(.alert):not(.validation-message) {
    background: var(--color-transparent) !important;
    background-color: var(--color-transparent) !important;
    box-shadow: none;
}

/* CHANGED v2026-05-31.7026
   Matches editable score inputs keep rounded badge corners and hidden later-game
   rows do not leave square placeholder boxes. */
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > input.input-score,
body.app-player .matches-table.match-layout-table td.component-player-score-cell input.input-score.player-score-badge,
body.app-player .player-matches-page input.input-score.player-score-badge {
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    -webkit-appearance: none !important;
    appearance: none !important;
    background-clip: padding-box !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .score-input-hidden-row,
body.app-player .player-matches-page .score-input-hidden-row {
    display: none !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--suppressed {
    min-height: 0 !important;
    height: 0 !important;
}

/* CHANGED v2026-05-31.7029
   Score approval requests use the same pending-lock visual contract as
   void/forfeit requests. */
body.app-player .matches-table.match-layout-table td.pending-game-change-score::after,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score::after {
    content: "";
}
body.app-player .pending-game-change-score input.input-score,
body.app-player input.input-score.pending-game-change-score {
    cursor: not-allowed;
}


/* ADDED v2026-05-31.7059
 * Status legend toggles are buttons for behavior/accessibility, but should look
 * like the original small inline text bubbles rather than browser buttons.
 */
.status-filter-chip {
    appearance: none;
    -webkit-appearance: none;
    border: 0;
    border-radius: 0;
    padding: 0 4px;
    margin: 0;
    font: inherit;
    font-weight: inherit;
    color: inherit;
    line-height: inherit;
    display: inline;
    vertical-align: baseline;
    box-shadow: none;
    text-align: inherit;
}

.status-filter-chip.unavailable {
    background-color: var(--color-status-unavailable-bg);
}

.status-filter-chip.withdrawn {
    background-color: var(--color-status-withdrawn-bg);
}

.status-filter-chip.single {
    background-color: var(--color-status-single-bg);
}


/* CHANGED v2026-05-31.7061
 * Keep status filter controls visually identical to the original inline legend
 * bubbles. This intentionally overrides broad button/input rules.
 */
.status-filter-chip,
span.status-filter-chip,
[role="button"].status-filter-chip {
    appearance: none !important;
    -webkit-appearance: none !important;
    border: 0 !important;
    border-radius: 0 !important;
    padding: 0 4px !important;
    margin: 0 !important;
    font: inherit !important;
    font-weight: inherit !important;
    color: inherit !important;
    line-height: inherit !important;
    display: inline !important;
    vertical-align: baseline !important;
    box-shadow: none !important;
    text-align: inherit !important;
    text-decoration: none !important;
    min-width: 0 !important;
    min-height: 0 !important;
}

.status-filter-chip.unavailable,
span.status-filter-chip.unavailable,
[role="button"].status-filter-chip.unavailable {
    background-color: var(--color-status-unavailable-bg) !important;
}

.status-filter-chip.withdrawn,
span.status-filter-chip.withdrawn,
[role="button"].status-filter-chip.withdrawn {
    background-color: var(--color-status-withdrawn-bg) !important;
}

.status-filter-chip.single,
span.status-filter-chip.single,
[role="button"].status-filter-chip.single {
    background-color: var(--color-status-single-bg) !important;
}


/* CHANGED v2026-05-31.7062
 * Status filter chips are inline links for reliable click behaviour, but must
 * continue to look like the original small legend bubbles.
 */
a.status-filter-chip,
a.status-filter-chip:link,
a.status-filter-chip:visited,
a.status-filter-chip:hover,
a.status-filter-chip:active {
    display: inline !important;
    padding: 0 4px !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    text-decoration: none !important;
    color: inherit !important;
    font: inherit !important;
    line-height: inherit !important;
    vertical-align: baseline !important;
    min-width: 0 !important;
    min-height: 0 !important;
    cursor: pointer;
}

a.status-filter-chip.unavailable {
    background-color: var(--color-status-unavailable-bg) !important;
}

a.status-filter-chip.withdrawn {
    background-color: var(--color-status-withdrawn-bg) !important;
}

a.status-filter-chip.single {
    background-color: var(--color-status-single-bg) !important;
}


/* CHANGED v2026-05-31.7064
 * Status filter link foreground must remain black, not the default site teal/blue.
 */
a.status-filter-chip,
a.status-filter-chip:link,
a.status-filter-chip:visited,
a.status-filter-chip:hover,
a.status-filter-chip:active,
a.status-filter-chip:focus {
    color: #000 !important;
}


/* ADDED v2026-05-31.7066: Final foreground override for status bubble links. */
.teams-page-heading-meta a.status-filter-chip,
.players-page-heading-subtitle a.status-filter-chip {
    color: #000 !important;
}


/* ADDED v2026-05-31.7067
 * Server-side status filter links: black text and row highlighting on table cells.
 */
.teams-page-heading-meta a.status-filter-chip,
.players-page-heading-subtitle a.status-filter-chip,
.teams-page-heading-meta a.status-filter-chip:link,
.players-page-heading-subtitle a.status-filter-chip:link,
.teams-page-heading-meta a.status-filter-chip:visited,
.players-page-heading-subtitle a.status-filter-chip:visited,
.teams-page-heading-meta a.status-filter-chip:hover,
.players-page-heading-subtitle a.status-filter-chip:hover,
.teams-page-heading-meta a.status-filter-chip:active,
.players-page-heading-subtitle a.status-filter-chip:active {
    color: #000 !important;
}

tr.unavailable > td {
    background-color: var(--color-status-unavailable-bg) !important;
}

tr.withdrawn > td {
    background-color: var(--color-status-withdrawn-bg) !important;
}

tr.single > td {
    background-color: var(--color-status-single-bg) !important;
}


/* ADDED v2026-05-31.7068
 * Stronger Teams/Players status highlighting for table cells. Some table skins
 * set td backgrounds, so row-level background alone is not enough.
 */
body.app-player table.teams tbody tr.unavailable > td,
body.app-player .teams tbody tr.unavailable > td,
body.app-player tr.unavailable[data-status-filter-row~="unavailable"] > td,
body.app-player tr.unavailable > td {
    background-color: var(--color-status-unavailable-bg) !important;
}

body.app-player table.teams tbody tr.withdrawn > td,
body.app-player .teams tbody tr.withdrawn > td,
body.app-player tr.withdrawn[data-status-filter-row~="withdrawn"] > td,
body.app-player tr.withdrawn > td {
    background-color: var(--color-status-withdrawn-bg) !important;
}


/* ADDED v2026-05-31.7070
 * Final unavailable-row highlight fallback for Teams table cells.
 */
body.app-player .player-teams-page tr.unavailable > td,
body.app-player .player-teams-section tr.unavailable > td,
body.app-player tr.unavailable > td.align-middle,
body.app-player tr.unavailable > td.stats-team-cell {
    background-color: var(--color-status-unavailable-bg) !important;
}


/* ADDED v2026-05-31.7072
 * AJAX-filtered status bubbles remain normal-looking links; the browser URL
 * state controls which rows are displayed without a full page refresh.
 */
a.status-filter-chip[data-player-ajax-filter-link] {
    cursor: pointer;
}


/* ADDED v2026-05-31.7074
 * Filter refreshes keep the existing table visible until the replacement
 * fragment arrives. This avoids a full redraw/blank-panel effect.
 */
.player-ajax-panel[aria-busy="true"] .player-ajax-panel-body,
.player-ajax-details[aria-busy="true"] .player-ajax-details-body {
    opacity: 0.72;
}


/* ADDED v2026-05-31.7076: DUPR min/max league rule controls are fixed-step selects. */
.admin-dupr-rating-select {
    min-width: 6rem;
}


/* ADDED v2026-05-31.7077: Public signup DUPR opt-out checkbox. */
.signup-no-dupr-id-label {
    display: inline-block;
    margin-top: 0.45rem;
}


/* ADDED v2026-05-31.7078: Manual team seed ordering. */
.admin-manual-seed-order-table tr[draggable="true"] {
    cursor: move;
}

.admin-manual-seed-drag-handle {
    text-align: center;
    font-weight: 700;
    cursor: grab;
}

.admin-manual-seed-dragging {
    opacity: 0.55;
}


/* ADDED v2026-06-01.7113: Keep sysadmin maintenance date and time controls on one row. */
body.app-admin .admin-maintenance-datetime-inputs {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: nowrap;
    max-width: 100%;
}

body.app-admin .admin-maintenance-datetime-inputs input[type="date"],
body.app-admin .admin-maintenance-datetime-inputs select {
    width: auto;
    max-width: 14rem;
    flex: 0 0 auto;
}

/* ADDED v2026-06-01.7169: Center non-editable team availability badges within table cells. */
.team-availability-table-container td.availability-status-cell {
    text-align: center;
    vertical-align: middle;
}
.team-availability-table-container .team-availability-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    vertical-align: middle;
}

/* ADDED v2026-06-01.7174: Team Profile availability toggle is a real button so the visible switch surface is directly actionable on mobile and desktop. */
.team-availability-toggle-button {
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 60px;
  width: 100%;
  min-height: 34px;
  height: 34px;
  vertical-align: middle;
}

.team-availability-toggle-button:disabled {
  cursor: wait;
  opacity: 0.75;
}

.team-availability-switch-visual {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 20px;
  flex: 0 0 60px;
}

.team-availability-switch-visual .slider {
  position: absolute;
  inset: 0;
}

.team-availability-toggle-button.is-on .slider {
  background-color: var(--color-status-available-bg);
}

.team-availability-toggle-button.is-on .slider:before {
  transform: translateX(36px);
}


/* ADDED v2026-06-01.7178: Team Profile availability switch posts through a normal form fallback. */
.team-availability-post-form {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  width: 100%;
}

/* ADDED v2026-06-01.7184: Make Team Profile availability forms use the full table-cell target, not only the small switch thumb. */
.availability-clickable-cell .team-availability-post-form,
.availability-clickable-cell .team-availability-toggle-button {
  width: 100%;
}

.team-availability-toggle-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ADDED v2026-06-02.7204: Team Profile withdrawal uses the same visible switch contract as availability and spans the full management table row. */
.team-withdrawal-row .withdrawal-clickable-cell {
  display: table-cell !important; /* CHANGED v2026-06-02.7205: override player pill styling on .withdrawn so colspan remains a real full-width table cell. */
  box-sizing: border-box;
  padding: 0.65rem 0.75rem;
  text-align: center;
  width: 100%;
  border-radius: 0;
}

.team-withdrawal-row-content {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  width: 100%;
}

.team-withdrawal-control {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 60px;
}

.withdrawal-clickable-cell .team-withdrawal-toggle-button {
  width: 60px;
}

.withdrawal-clickable-cell .team-withdrawal-toggle-button.is-off .slider {
  background-color: var(--color-status-unavailable-bg);
}

@media (max-width: 640px) {
  .team-withdrawal-row-content {
    flex-direction: column;
    gap: 0.45rem;
  }
}


/* ADDED v2026-06-02.7209: compact match scheduler action beside Manage Match. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches {
    padding-right: calc((var(--player-action-icon-size, 1.7rem) * 2) + .75rem) !important;
}
body.app-player .matches-table.match-layout-table .matches-team-actions {
    display: inline-flex !important;

    justify-content: center !important;
    gap: .18rem !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
}
body.app-player .matches-table.match-layout-table .matches-schedule-link {
    font-size: .95rem !important;
    text-decoration: none !important;
    opacity: .82;
}
body.app-player .matches-table.match-layout-table .matches-schedule-link:hover,
body.app-player .matches-table.match-layout-table .matches-schedule-link:focus,
body.app-player .matches-table.match-layout-table .matches-schedule-link--set {
    opacity: 1;
}
.match-scheduler-modal {
    text-align: left;
}
.match-scheduler-summary,
.match-scheduler-note {
    margin: 0 0 .75rem;
    font-size: .9rem;
}
.match-scheduler-note {
    opacity: .75;
}
.match-scheduler-field {
    display: grid;
    grid-template-columns: 6rem 1fr;
    gap: .5rem;
    align-items: center;
    margin: .45rem 0;
}
.match-scheduler-field--comment {
    align-items: start;
}
.match-scheduler-field select,
.match-scheduler-field input,
.match-scheduler-field textarea {
    width: 100%;
    box-sizing: border-box;
}


/* CHANGED v2026-06-02.7216: match-row action rail positions Manage Match top-right and Scheduler bottom-right. */

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches .component-team-pair-action,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches .component-team-pair-action {
    top: .22rem !important;
    bottom: .22rem !important;
    right: .22rem !important;

    width: var(--player-action-icon-size, 1.7rem) !important;
    min-width: var(--player-action-icon-size, 1.7rem) !important;

    min-height: var(--player-action-icon-size, 1.7rem) !important;
    align-items: stretch !important;
}
body.app-player .matches-table.match-layout-table .matches-team-actions {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: .2rem !important;
    width: var(--player-action-icon-size, 1.7rem) !important;
    min-width: var(--player-action-icon-size, 1.7rem) !important;
    height: 100% !important;
    min-height: var(--player-action-icon-size, 1.7rem) !important;
}
body.app-player .matches-table.match-layout-table .matches-team-actions .matches-manage-link {
    align-self: flex-start !important;
}
body.app-player .matches-table.match-layout-table .matches-team-actions .matches-schedule-link {
    align-self: flex-end !important;
}


/* CHANGED v2026-06-02.7218: anchor match actions to the full table cell, not the compact team-name block. */

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches {
    padding-right: calc(var(--player-action-icon-size, 1.7rem) + .65rem) !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches .component-team-pair-action,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches .component-team-pair-action {

    inset: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;

    display: contents !important;
    width: 0 !important;

    height: 0 !important;



}
body.app-player .matches-table.match-layout-table .matches-team-actions {
    display: contents !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-manage-link,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-manage-link,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link {
    position: absolute !important;
    right: .22rem !important;
    z-index: 3 !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-manage-link,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-manage-link {
    top: .22rem !important;
    bottom: auto !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link {
    top: auto !important;
    bottom: .22rem !important;
}

/* ADDED v2026-06-02.7228: visibly highlight Scheduler clock when a schedule exists for the match. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set {
    background: var(--color-status-warning-bg, #fff7cc) !important;
    border: 1px solid var(--color-status-warning, #c77800) !important;
    border-radius: 999px !important;
    box-shadow: 0 0 0 2px rgba(199, 120, 0, .18) !important;

    font-weight: 800 !important;
    line-height: 1.25 !important;
    min-width: 1.45rem !important;
    min-height: 1.45rem !important;
    text-align: center !important;
    opacity: 1 !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set:hover,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set:focus,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set:hover,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set:focus {
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .2) !important;
}

/* ADDED v2026-06-02.7225: Scheduler searchable facility list and map preview. */
.match-scheduler-facility-picker {
    display: grid;
    gap: .45rem;
}
.match-scheduler-map-wrap {
    border: 1px solid #d7d7d7;
    border-radius: .35rem;
    overflow: hidden;
    min-height: 180px;
    background: #f8f8f8;
}
.match-scheduler-map {
    width: 100%;
    height: 180px;
    border: 0;
    display: block;
}
.match-scheduler-map--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    color: #666;
    padding: 1rem;
    box-sizing: border-box;
}
.match-scheduler-map-link-wrap {
    font-size: .85rem;
}
.match-scheduler-map-link-empty {
    color: #666;
}
.match-scheduler-facility-table {
    width: 100%;
    border-collapse: collapse;
    font-size: .86rem;
}
.match-scheduler-facility-table td {
    border-top: 1px solid #e6e6e6;
    padding: .35rem .25rem;
    vertical-align: top;
}
.match-scheduler-facility-row--selected td {
    font-weight: 600;
}
.match-scheduler-facility-pick {
    appearance: none;
    background: none;
    border: 0;
    padding: 0;
    margin: 0;
    text-align: left;
    text-decoration: underline;
    cursor: pointer;
    font: inherit;
}
.match-scheduler-facility-address,
.match-scheduler-facility-empty {
    color: #666;
    font-size: .8rem;
}

/* ADDED v2026-06-02.7229: Facilities page collapsible create/edit sections and compact searchable picker. */
.admin-facilities-details {
  margin: 1rem 0;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 0.6rem;
  padding: 0.65rem 0.8rem;
  background: rgba(255, 255, 255, 0.72);
}
.admin-facilities-details > summary {
  cursor: pointer;
  font-weight: 700;
  line-height: 1.35;
}
.admin-facility-picker {
  margin: 0.75rem 0 1rem;
}
.admin-facility-search {
  display: block;
  max-width: 34rem;
  width: 100%;
  margin: 0.25rem 0 0.5rem;
}
.admin-facility-picker-scroll {
  max-height: 16rem;
  overflow-y: auto;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 0.45rem;
}
.admin-facilities-picker-table {
  margin: 0;
}
.admin-facilities-picker-table th,
.admin-facilities-picker-table td {
  padding: 0.42rem 0.55rem;
}
.admin-facility-picker-row.is-selected td {
  font-weight: 700;
}
.admin-facility-picker-link {
  font-weight: 700;
}
.admin-facility-distance {
  color: #555;
  font-size: 0.9em;
  white-space: nowrap;
}


/* ADDED v2026-06-02.7230: widen scheduler popup content and provide explicit map zoom controls. */
.swal2-popup:has(.match-scheduler-modal) {
    max-width: min(760px, calc(100vw - 1.25rem)) !important;
}
.match-scheduler-map-wrap {
    position: relative;
}
.match-scheduler-map-controls {
    position: absolute;
    top: .45rem;
    left: .45rem;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: .2rem;
}
.match-scheduler-map-zoom {
    width: 2rem;
    height: 2rem;
    border: 1px solid #b8b8b8;
    border-radius: .25rem;
    background: #fff;
    color: #222;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 1px 3px rgba(0, 0, 0, .18);
}
.match-scheduler-map-zoom:hover,
.match-scheduler-map-zoom:focus {
    background: #f2f2f2;
}
@media (max-width: 640px) {
    .match-scheduler-field {
        grid-template-columns: 1fr;
    }
    .match-scheduler-facility-table td {
        display: block;
        width: 100%;
    }
}

/* ADDED v2026-06-02.7233: scheduler popup facility chooser polish. */
.swal2-popup:has(.match-scheduler-modal) {
    width: min(920px, calc(100vw - 1.25rem)) !important;
    max-width: min(920px, calc(100vw - 1.25rem)) !important;
}
.match-scheduler-summary {
    margin-left: 0;
    text-align: center;
}
.match-scheduler-facility-scroll {
    max-height: 14rem;
    overflow-y: auto;
    border: 1px solid #d7d7d7;
    border-radius: .35rem;
    background: #fff;
}
.match-scheduler-facility-table td:first-child {
    width: 58%;
}
.match-scheduler-facility-pick {
    color: #005eb8 !important;
    opacity: 1 !important;
    min-height: 1.2rem;
}
.match-scheduler-facility-row--selected .match-scheduler-facility-pick {
    color: #003f7a !important;
}
.match-scheduler-map-zoom {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    padding: 0 !important;
}
@media (max-width: 640px) {
    .match-scheduler-summary {
        margin-left: 0;
    }
}

/* ADDED v2026-06-02.7234: Facility edit Google Maps coordinate picker and tighter radio label alignment. */
.admin-facility-latlong-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}
.admin-facility-latitude,
.admin-facility-longitude {
  width: 8rem;
  max-width: 8rem;
}
.admin-facility-map-cell label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  white-space: nowrap;
}
.admin-facility-map-picker {
  margin-top: 0.55rem;
  max-width: 44rem;
}
.admin-facility-map-frame-wrap {
  position: relative;
  height: 16rem;
  border: 1px solid rgba(0, 0, 0, 0.14);
  border-radius: 0.45rem;
  overflow: hidden;
  background: #f2f4f7;
}
.admin-facility-map-frame {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.admin-facility-map-click-layer {
  position: absolute;
  inset: 0;
  z-index: 3;
  border: 0;
  background: transparent;
  cursor: crosshair;
  padding: 0;
}
.admin-facility-map-click-layer:focus-visible {
  outline: 3px solid rgba(0, 102, 204, 0.55);
  outline-offset: -3px;
}
.admin-facility-map-zoom {
  position: absolute;
  left: 0.5rem;
  z-index: 4;
  width: 2rem;
  height: 2rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
  line-height: 1;
  font-weight: 700;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 0.35rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18);
}
.admin-facility-map-zoom-in { top: 0.5rem; }
.admin-facility-map-zoom-out { top: 2.8rem; }
.admin-facility-map-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  align-items: center;
  margin-top: 0.45rem;
}
.admin-facility-radio-group {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.9rem;
  align-items: center;
}
.admin-facility-radio-group .admin-radio-row {
  margin: 0;
  align-items: center;
  gap: 0.25rem;
}
.admin-facility-radio-group .admin-radio-row input[type="radio"] {
  margin-top: 0;
}

/* CHANGED v2026-06-02.7237: Facility form radio options use a compact, non-wrapping label contract without the global admin-radio-row wrapping behavior. */
.admin-facility-radio-option {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0 1rem 0 0;
  white-space: nowrap;
  line-height: 1.25;
  max-width: none;
}
.admin-facility-radio-option input[type="radio"] {
  flex: 0 0 auto;
  margin: 0;
}
.admin-facility-radio-option span {
  display: inline-block;
  white-space: nowrap;
}
.admin-facility-map-click-layer:hover,
.admin-facility-map-click-layer:active {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  outline: none;
}
.game-location-controls,
.game-facility-select,
.game-court-label-input,
.game-court-label-options {
  display: none !important;
}

/* ADDED v2026-06-02.7236: Shared searchable facility dropdown/list layout for Facilities admin and Schedule Match. */
/* CHANGED v2026-06-02.7237: Use a compact native dropdown menu instead of a tall scrollable listbox. */
.facility-search-dropdown-layout {
    display: grid;
    gap: .45rem;
}
.facility-search-dropdown-input {
    width: 100%;
    box-sizing: border-box;
}
.facility-search-dropdown-list {
    width: 100%;
    min-height: 0;
    height: auto;
    max-height: none;
    overflow-y: visible;
    border: 1px solid #d7d7d7;
    border-radius: .35rem;
    background: #fff;
    box-sizing: border-box;
    font: inherit;
}
.facility-search-dropdown-list option {
    padding: .35rem .45rem;
    white-space: normal;
}
.match-scheduler-facility-dropdown,
.admin-facility-dropdown {
    height: auto;
    max-width: 48rem;
}

/* CHANGED v2026-06-02.7237: Keep Schedule Match team names centered regardless of earlier field-label spacing rules. */
.match-scheduler-modal .match-scheduler-summary {
    margin-left: 0 !important;

}

/* CHANGED v2026-06-02.7239: Facility radios use a standard horizontal radio/label layout and the map iframe remains directly interactive. */
.admin-facility-radio-group {




  gap: 0.85rem !important;

  overflow-wrap: normal !important;
  word-break: normal !important;
}
.admin-facility-radio-option {




  gap: 0.3rem !important;

  min-width: max-content !important;

  margin: 0 0.85rem 0 0 !important;
  padding: 0 !important;

  overflow-wrap: normal !important;
  word-break: keep-all !important;
  line-height: 1.25 !important;
}
.admin-facility-radio-option input[type="radio"] {


  width: auto !important;
}
.admin-facility-radio-option span {


  min-width: max-content !important;



  word-break: keep-all !important;
}
.admin-facility-map-frame-wrap:hover,
.admin-facility-map-frame:hover {
  background: #f2f4f7 !important;
  border-color: rgba(0, 0, 0, 0.14) !important;
  box-shadow: none !important;
}
.admin-facility-map-click-layer { display: none !important; pointer-events: none !important; }

/* ADDED v2026-06-02.7240: Facilities/Scheduler maps now rely on native Google Maps iframe controls; keep radio labels horizontal and compact. */
.match-scheduler-map-wrap--native,
.admin-facility-map-frame-wrap {
    cursor: auto !important;
}
.match-scheduler-map-controls,
.match-scheduler-map-zoom,
.admin-facility-map-zoom,
.admin-facility-map-click-layer {
    display: none !important;
    pointer-events: none !important;
}
.match-scheduler-map-note {
    font-size: .86rem;
    color: var(--color-text-muted, #666);
    margin: .25rem 0 .4rem 0;
}
.admin-facility-radio-group {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 1.1rem !important;
    flex-wrap: wrap !important;
    white-space: normal !important;
}
.admin-facility-radio-option {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .35rem !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    white-space: nowrap !important;
    writing-mode: horizontal-tb !important;
}
.admin-facility-radio-option input[type="radio"] {
    margin: 0 !important;
    flex: 0 0 auto !important;
}
.admin-facility-radio-option span {
    display: inline !important;
    width: auto !important;
    max-width: none !important;
    white-space: nowrap !important;
    writing-mode: horizontal-tb !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
}

/* CHANGED v2026-06-02.7241: Normalize Facility radios and map preview to the shared Scheduler/Facility map contract. */
.admin-facility-radio-cell {


    white-space: normal !important;
}
.admin-facility-radio-cell .admin-facility-radio-group {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 1.25rem !important;
    width: 100% !important;
    max-width: 100% !important;
    white-space: normal !important;
}
.admin-facility-radio-cell .admin-facility-radio-option {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .35rem !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    white-space: nowrap !important;
    writing-mode: horizontal-tb !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
}
.admin-facility-radio-cell .admin-facility-radio-option input[type="radio"] {
    display: inline-block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
}
.admin-facility-radio-cell .admin-facility-radio-option span {
    display: inline-block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    text-align: left !important;
    white-space: nowrap !important;
    writing-mode: horizontal-tb !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
    line-height: 1.25 !important;
}
.admin-facility-map-picker {
    max-width: 100% !important;
}
.admin-facility-map-frame-wrap,
.match-scheduler-map-wrap {
    border: 1px solid #d7d7d7 !important;
    border-radius: .35rem !important;
    overflow: hidden !important;
    min-height: 180px !important;
    height: 180px !important;
    background: #f8f8f8 !important;
}
.admin-facility-map-frame,
.match-scheduler-map {
    width: 100% !important;
    height: 180px !important;
    border: 0 !important;
    display: block !important;
}
.admin-facility-map-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: .65rem !important;
    align-items: center !important;
    margin-top: .45rem !important;
}
.admin-facility-map-refresh {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-height: 2rem !important;
    padding: .25rem .65rem !important;
    border: 1px solid #cfd6de !important;
    border-radius: .35rem !important;
    background: #f7f9fb !important;
    color: #123 !important;
    font: inherit !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
    cursor: pointer !important;
}
.admin-facility-map-refresh:hover,
.admin-facility-map-refresh:focus {
    background: #eef3f7 !important;
    color: #123 !important;
}

/* ADDED v2026-06-03.7340: Facility map coordinate display fields beside the external Google Maps link. */
.admin-facility-map-coordinates {
    display: inline-flex !important;
    flex-wrap: wrap !important;
    gap: .45rem !important;
    align-items: center !important;
}
.admin-facility-map-coordinates label {
    display: inline-flex !important;
    align-items: center !important;
    gap: .25rem !important;
    margin: 0 !important;
    font-size: .92rem !important;
    color: #344 !important;
}
.admin-facility-map-coordinates input[disabled] {
    width: 8.5rem !important;
    max-width: 8.5rem !important;
    padding: .25rem .4rem !important;
    border: 1px solid #d4dbe2 !important;
    border-radius: .3rem !important;
    background: #f7f9fb !important;
    color: #234 !important;
    font: inherit !important;
    opacity: 1 !important;
}

/* CHANGED v2026-06-02.7242: Isolate Facility radio controls from broad admin label wrapping rules. */
.admin-facility-radio-cell {

    vertical-align: middle !important;
}
.admin-facility-choice-list {

    flex-direction: row !important;
    flex-wrap: wrap !important;


    gap: 1.25rem !important;

    max-width: 100% !important;
    min-width: 0 !important;

}
.admin-facility-choice-list .admin-facility-choice,
body.app-admin .admin-facility-choice-list .admin-facility-choice,
.admin-page-container .admin-facility-choice-list .admin-facility-choice {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .35rem !important;
    width: max-content !important;
    min-width: max-content !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: keep-all !important;
    writing-mode: horizontal-tb !important;
    line-height: 1.25 !important;
}
.admin-facility-choice-list .admin-facility-choice input[type="radio"] {






    padding: 0 !important;
}
.admin-facility-choice-list .admin-facility-choice span {
    display: inline-block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content !important;
    max-width: none !important;
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: keep-all !important;
    writing-mode: horizontal-tb !important;
    text-align: left !important;
}


/* CHANGED v2026-06-02.7244: keep embedded Google Maps previews interactive and normalize Facility radio rows. */
.admin-facility-map-frame,
.match-scheduler-map {
    pointer-events: auto !important;
}
.admin-facility-map-frame-wrap,
.match-scheduler-map-wrap {
    position: relative !important;
}
.admin-facility-radio-cell,
.admin-facility-radio-cell * {
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    word-break: normal !important;
    overflow-wrap: normal !important;
}
.admin-facility-radio-cell {
    text-align: left !important;
}
.admin-facility-choice-list {
    display: flex !important;
    flex-flow: row wrap !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .8rem 1.6rem !important;
    width: 100% !important;
    text-align: left !important;
}
.admin-facility-choice-list .admin-facility-choice {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .35rem !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    white-space: nowrap !important;
    text-align: left !important;
    line-height: 1.3 !important;
}
.admin-facility-choice-list .admin-facility-choice input[type="radio"] {
    display: inline-block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
}
.admin-facility-choice-list .admin-facility-choice label,
body.app-admin .admin-facility-choice-list .admin-facility-choice label,
.admin-page-container .admin-facility-choice-list .admin-facility-choice label {
    display: inline-block !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    white-space: nowrap !important;
    text-align: left !important;
    writing-mode: horizontal-tb !important;
}

/* ADDED v2026-06-02.7248: Scheduler disclaimer, completion, court, and calendar-entry controls. */
.match-scheduler-disclaimer {
    margin: 0 0 .85rem;
    padding: .55rem .7rem;
    border: 1px solid #e0e0e0;
    border-radius: .45rem;
    background: #fafafa;
    font-size: .86rem;
    line-height: 1.35;
    text-align: center;
}
/* REMOVED v2026-06-15.8344: Scheduler no longer has a match-complete checkbox; completion is derived from verified game results. */
.match-scheduler-calendar-link-wrap {
    margin: .45rem 0 0 6.5rem;
    font-size: .9rem;
}
.match-scheduler-calendar-link-wrap a {
    font-weight: 600;
}
@media (max-width: 640px) {
    .match-scheduler-calendar-link-wrap {
        margin-left: 0 !important;
    }
}


/* CHANGED v2026-06-02.7249: Scheduler court row always remains visible; non-bookable facilities disable the field and show placeholder text. */
.match-scheduler-field--court input:disabled {
    background: #f4f4f4 !important;
    color: #666 !important;
    cursor: not-allowed !important;
}
.match-scheduler-calendar-separator {
    color: var(--color-text-muted, #666);
    margin: 0 .35rem;
}


/* CHANGED v2026-06-02.7250: Non-bookable scheduler court rows keep the disabled input message but suppress the left-column label. */
.match-scheduler-field--court #matchScheduleCourtLabel:empty {
    display: block !important;
    min-height: 1px !important;
}
.match-scheduler-field--court input:disabled::placeholder {
    color: #666 !important;
    opacity: 1 !important;
}

/* CHANGED v2026-06-02.7250: About → Feedback helper text should use the standard white-on-green information treatment. */
/* CHANGED v2026-06-02.7251: Feedback page intro uses the standard player white-on-green information treatment. */
body.app-player .player-feedback-page .ui-page-header > .ui-page-intro,
body.app-player .player-feedback-page .component-player-page-header-final > .ui-page-intro,
body.app-player .player-feedback-page .ui-page-intro {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    box-sizing: border-box !important;
    margin: .5rem 0 .8rem !important;
    padding: .55rem .75rem !important;
    border-radius: .45rem !important;
    background: #2f8f46 !important;
    color: #fff !important;
    border: 1px solid #237338 !important;
    line-height: 1.35 !important;
}
body.app-player .player-feedback-page .ui-page-intro a {
    color: #fff !important;
    text-decoration: underline !important;
}



/* ADDED v2026-06-02.7252: iframe-based Google Maps previews are not native Maps JavaScript API maps. Show a non-blocking watermark. */
.match-scheduler-map-wrap,
.admin-facility-map-frame-wrap {
    position: relative !important;
}
.google-map-preview-watermark {
    position: absolute;
    right: .55rem;
    top: .45rem;
    z-index: 2;
    padding: .16rem .45rem;
    border-radius: .45rem;
    background: rgba(0, 0, 0, .62);
    color: #fff;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    pointer-events: none;
    user-select: none;
}

/* ADDED v2026-06-02.7253: Scheduler court selection distinguishes total courts from bookable/selectable court labels. */
.match-scheduler-court-control {
    display: block;
    width: 100%;
}
.match-scheduler-court-select,
.match-scheduler-court-control input {
    width: 100%;
    box-sizing: border-box;
}
.match-scheduler-court-meta {
    grid-column: 2;
    display: block;
    margin-top: -.25rem;
    font-size: .82rem;
    color: var(--color-text-muted, #666);
}

/* ADDED v2026-06-03.7254: Shared facility search filters for Facilities admin and Schedule Match. */
.facility-search-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem .75rem;
}
.facility-search-filter-row label {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin: 0;
    font-size: .95rem;
    white-space: nowrap;
}
.facility-search-filter-select {
    max-width: 12rem;
    padding: .25rem .35rem;
    font: inherit;
}

/* ADDED v2026-06-03.7255: Scheduler team summary and date/time row alignment. */
.match-scheduler-modal .match-scheduler-summary {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: .4rem !important;
    text-align: center !important;
    flex-wrap: wrap !important;
}
.match-scheduler-modal .match-scheduler-summary strong {
    font-weight: 700 !important;
}
.match-scheduler-field--datetime {
    /* CHANGED v2026-06-03.7264: Date, Start, and End render on one row using the Calendar hour range. */
    align-items: center;
}
.match-scheduler-field--datetime > span:first-child,
.match-scheduler-time-range-separator {
    font-size: 1rem !important;
    font-weight: 400 !important;
}
.match-scheduler-field--datetime-range {
    grid-template-columns: 6rem minmax(0, 1fr);
}
.match-scheduler-datetime-inputs {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: nowrap;
    max-width: 100%;
}
.match-scheduler-datetime-inputs input[type="date"] {
    width: 10.5rem;
    max-width: 10.5rem;
    flex: 0 0 auto;
}
.match-scheduler-datetime-inputs select {
    width: 5.75rem;
    max-width: 5.75rem;
    flex: 0 0 auto;
}
.match-scheduler-time-range-separator {
    display: inline-flex;
    align-items: center;
    font-weight: 600;
    white-space: nowrap;
}
@media (max-width: 640px) {
    .match-scheduler-field--datetime-range {
        grid-template-columns: 1fr;
    }
    .match-scheduler-datetime-inputs {
        flex-wrap: wrap;
    }
}


/* CHANGED v2026-06-03.7266: Soft scheduler glow applies only to the clock icon, not the whole match cell. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set {
    box-shadow: 0 0 0 2px rgba(199, 120, 0, .14), 0 0 12px rgba(255, 193, 7, .42) !important;
}
.match-scheduler-datetime-inputs select {
    width: 7.25rem !important;
    max-width: 7.25rem !important;
}
.match-scheduler-calendar-link-wrap {
    line-height: 1.55;
}
.match-scheduler-calendar-link-label {
    font-weight: 700;
}


/* CHANGED v2026-06-03.7267: Scheduled-match clock uses a pulsing icon-only glow. */
@keyframes matchSchedulerClockPulseGlow {
    0% { box-shadow: 0 0 0 3px rgba(199, 120, 0, .20), 0 0 8px rgba(255, 193, 7, .26); }
    50% { box-shadow: 0 0 0 4px rgba(199, 120, 0, .28), 0 0 18px rgba(255, 193, 7, .48); }
    100% { box-shadow: 0 0 0 3px rgba(199, 120, 0, .20), 0 0 8px rgba(255, 193, 7, .26); }
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set {
    animation: matchSchedulerClockPulseGlow 2.4s ease-in-out infinite !important;
    box-shadow: 0 0 0 3px rgba(199, 120, 0, .20), 0 0 8px rgba(255, 193, 7, .26) !important;
}
@media (prefers-reduced-motion: reduce) {
    body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
    body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set {
        animation: none !important;
    }
}

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set:hover,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set:focus,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set:hover,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set:focus {
    animation: matchSchedulerClockPulseGlow 2.4s ease-in-out infinite !important;
}

/* ADDED v2026-06-03.7273: Shared Maps JavaScript API renderer placeholders for Scheduler and Facilities. */
.google-map-js-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 12rem;
  padding: 1rem;
  background: #f2f4f7;
  color: #334155;
  text-align: center;
}
.google-map-js-placeholder-message {
  max-width: 30rem;
  font-size: 0.92rem;
  line-height: 1.35;
}
.match-scheduler-map,
.admin-facility-map-frame {
  min-height: 16rem;
}

/* ADDED v2026-06-03.7282: Teams round movement explanation. */
body.app-player .teams-round-movement-details {
  margin-top: 1rem;
}
body.app-player .teams-round-movement-table-wrap {
  margin-top: 0.75rem;
}

body.app-player .teams-round-movement-reason {
  min-width: 18rem;
  max-width: 34rem;
  white-space: normal;
}

/** ADDED v2026-06-03.7283
 *  Tighten collapsed player/About profile section spacing to match Team Profile.
 *
 *  About and Player Profile use lazy-details wrappers plus legacy <br> spacers.
 *  The Team Profile page uses adjacent details cards without those large spacer
 *  gaps. Keep the existing card rendering, but normalize vertical spacing for
 *  the affected player-facing pages.
 */
body.app-player :where(.player-about-page-shell, .player-profile-page, .player-page-container) :where(.player-lazy-details-wrapper.player-about-details, .player-profile-details, .player-match-history-details, .player-subs-details) {
    margin-block: 0.26rem !important;
}

body.app-player :where(.player-about-page-shell, .player-profile-page, .player-page-container) :where(.player-lazy-details-wrapper.player-about-details, .player-profile-details, .player-match-history-details, .player-subs-details) + br {
    display: none !important;
}

body.app-player :where(.player-about-page-shell, .player-profile-page, .player-page-container) br + :where(.player-lazy-details-wrapper.player-about-details, .player-profile-details, .player-match-history-details, .player-subs-details) {
    margin-top: 0.26rem !important;
}

body.app-player .player-about-content-stack > :where(.player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row) {
    margin-block: 0.26rem !important;
}

body.app-player .player-profile-page :where(.profile-summary-wrap, .player-profile-summary-card) + br {
    display: none !important;
}



/** CHANGED v2026-06-03.7285
 * Keep the round-movement explanation inside the parent card on narrow screens.
 * The table keeps a readable minimum width, while the wrapper scrolls instead of
 * forcing the full Teams page wider than its container.
 */
body.app-player .teams-round-movement-body {
  max-width: 100%;
  overflow: hidden;
}
body.app-player .teams-round-movement-table-wrap {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;

}
body.app-player .teams-round-movement-table {
  width: max-content;
  min-width: 52rem;
  max-width: none;
}
body.app-player .teams-round-movement-symbol {
  min-width: 3rem;
  text-align: center;
  white-space: nowrap;
  font-weight: 700;
}
body.app-player .teams-round-movement-record {
  min-width: 6.5rem;
  white-space: nowrap;
  line-height: 1.25;
}
body.app-player .teams-round-movement-reason {
  min-width: 16rem;
  max-width: 28rem;
}

/** ADDED v2026-06-03.7286: Teams movement overlay replacing inline collapsed section. */
body.app-player .teams-round-movement-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.45rem;
  height: 1.45rem;
  margin-left: 0.25rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,0.25);
  text-decoration: none;
  font-weight: 700;
  line-height: 1;
}
body.app-player .teams-round-movement-overlay {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 5vh 1rem 1rem;
  background: rgba(0,0,0,0.35);
}
body.app-player .teams-round-movement-overlay.is-hidden {
  display: none !important;
}
body.app-player .teams-round-movement-panel {
  width: min(96vw, 72rem);
  max-height: 88vh;
  overflow: hidden;
  border-radius: 0.75rem;
  background: #fff;
  box-shadow: 0 1rem 2.5rem rgba(0,0,0,0.28);
  display: flex;
  flex-direction: column;
}
body.app-player .teams-round-movement-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid rgba(0,0,0,0.12);
}
body.app-player .teams-round-movement-panel-header h3 {
  margin: 0;
  font-size: 1.05rem;
}
body.app-player .teams-round-movement-close {
  border: 0;
  background: transparent;
  font-size: 1.6rem;


}
body.app-player .teams-round-movement-overlay .teams-round-movement-body {
  padding: 0.85rem 1rem 1rem;
  overflow: auto;
}
body.app-player .teams-round-movement-round-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  margin: 0.5rem 0 0.75rem;
  font-size: 0.92rem;
}
body.app-player .teams-round-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.1rem;
  padding: 0.15rem 0.4rem;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,0.2);
  text-decoration: none;
}
body.app-player .teams-round-link-current {
  font-weight: 700;
  background: rgba(0,0,0,0.08);
}
body.app-player .teams-round-movement-pool {
  white-space: nowrap;
}
body.app-player .teams-round-movement-pool .teams-round-movement-symbol {
  display: inline-block;
  min-width: 1.35rem;
  margin-right: 0.2rem;
}

/** CHANGED v2026-06-03.7287
 * Movement overlay table is designed to fit the modal width so players can read
 * the Why column without horizontal scrolling on normal desktop/tablet widths.
 */
body.app-player .teams-round-movement-panel {
  width: min(98vw, 88rem) !important;
}
body.app-player .teams-round-movement-table-wrap {
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  -webkit-overflow-scrolling: touch;
}
body.app-player .teams-round-movement-table {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  table-layout: fixed !important;
  font-size: 0.86rem;
}
body.app-player .teams-round-movement-table th,
body.app-player .teams-round-movement-table td {
  padding: 0.28rem 0.36rem;
  vertical-align: top;
}
body.app-player .teams-round-rank-col { width: 7.5%; }
body.app-player .teams-round-team-col { width: 15%; }
body.app-player .teams-round-dupr-col { width: 12%; }
body.app-player .teams-round-movement-col { width: 8%; }
body.app-player .teams-round-record-col { width: 9%; }
body.app-player .teams-round-why-col { width: 39.5%; }
body.app-player .teams-round-movement-rank,
body.app-player .teams-round-movement-pool,
body.app-player .teams-round-movement-record {
  white-space: normal !important;
  line-height: 1.18;
}
body.app-player .teams-round-movement-record {
  min-width: 0 !important;
  max-width: none !important;
  text-align: center;
}

body.app-player .teams-round-movement-dupr {
  min-width: 0 !important;
  max-width: none !important;
  line-height: 1.16;
  text-align: left;
  overflow-wrap: anywhere;
}
body.app-player .teams-round-movement-dupr-change {
  display: inline-block;
  margin-bottom: 0.08rem;
}
body.app-player .teams-round-movement-dupr-delta {
  font-weight: 700;
  white-space: nowrap;
}
body.app-player .teams-round-movement-net {
  display: inline-block;
  margin-top: 0.08rem;
  font-weight: 700;
}
body.app-player .teams-round-movement-reason {
  min-width: 0 !important;
  max-width: none !important;
  line-height: 1.16;
  text-align: left;
  overflow-wrap: anywhere;
  word-break: normal;
}
body.app-player .teams-round-movement-body.is-loading {
  opacity: 0.62;
  pointer-events: none;
}
@media (max-width: 700px) {
  body.app-player .teams-round-movement-table {
    min-width: 46rem !important;
  }
}

/** CHANGED v2026-06-03.7288
 * Team Movement overlay refinements: compact title, pool-based striping, and
 * note above table.
 */
body.app-player .teams-round-movement-panel-header h3 {
  white-space: nowrap;
  overflow: visible;
  text-overflow: clip;
  flex: 0 0 auto;
}
body.app-player .teams-round-movement-note {
  margin: 0.25rem 0 0.65rem;
}
body.app-player .teams-round-movement-pool-odd > td {
  background: #fff !important;
}
body.app-player .teams-round-movement-pool-even > td {
  background: rgba(0,0,0,0.045) !important;
}
body.app-player .teams-round-movement-table .teams-round-movement-reason {
  font-size: 0.84rem;
}


/** ADDED v2026-06-03.7292
 * Match About and Player Profile collapsed-section spacing to Team Profile.
 * About uses lazy wrapper elements around native details cards; Player Profile
 * uses direct details cards. Normalize both paths and remove legacy <br> gaps.
 */
body.app-player .player-about-page-shell :where(.player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row),
body.app-player .player-profile-page :where(.player-profile-details, .player-match-history-details, .player-subs-details) {
    margin-block: 0.26rem !important;
}

body.app-player .player-about-page-shell .player-lazy-details-wrapper.player-about-details > details.player-lazy-details,
body.app-player .player-profile-page :where(.player-profile-details, .player-match-history-details, .player-subs-details) {
    margin-block: 0 !important;
}

body.app-player .player-about-page-shell :where(.player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row) + br,
body.app-player .player-profile-page :where(.player-profile-details, .player-match-history-details, .player-subs-details, .profile-summary-wrap, .player-profile-summary-card) + br {
    display: none !important;
}

body.app-player .player-about-content-stack > :where(.player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row),
body.app-player .player-profile-page > :where(.player-profile-details, .player-match-history-details, .player-subs-details) {
    margin-block: 0.26rem !important;
}


/** CHANGED v2026-06-03.7293
 *  Keep the Team Movement close control visible as a clear X button.
 */
body.app-player .teams-round-movement-panel-header {
  position: relative;
}
body.app-player .teams-round-movement-close {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 2rem;
  height: 2rem;
  min-width: 2rem;
  min-height: 2rem;
  padding: 0;
  border: 1px solid rgba(0,0,0,0.25);
  border-radius: 999px;
  background: #fff;
  color: #111;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1;
  text-decoration: none;
  opacity: 1;
  visibility: visible;
  cursor: pointer;
  z-index: 2;
}
body.app-player .teams-round-movement-close:hover,
body.app-player .teams-round-movement-close:focus {
  background: rgba(0,0,0,0.06);
  color: #000;
  outline: 2px solid rgba(0,0,0,0.18);
  outline-offset: 2px;
}

/** CHANGED v2026-06-03.7294
 *  Force About and Player Profile collapsed-section spacing to use the same
 *  compact density as Team Profile. Earlier rules missed the actual Player
 *  Profile page shell (`.player-players-page--profile`) and the About grid gap.
 */
body.app-player .player-about-page-shell .player-about-content-stack {
    gap: var(--player-section-gap, 0.32rem) !important;
    row-gap: var(--player-section-gap, 0.32rem) !important;
}

body.app-player .player-about-page-shell .player-about-content-stack > :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row),
body.app-player .player-players-page--profile > :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .profile-summary-wrap, .player-profile-summary-card),
body.app-player .player-players-page--profile :where(.player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details) {
    margin-top: var(--player-section-gap, 0.32rem) !important;
    margin-bottom: var(--player-section-gap, 0.32rem) !important;
}

body.app-player .player-about-page-shell .player-about-content-stack > :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-lazy-details-wrapper.player-about-details) > :where(details, .player-lazy-details),
body.app-player .player-players-page--profile > .ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"] > :where(details, .player-lazy-details) {
    margin: 0 !important;
}

body.app-player .player-players-page--profile > * + * {
    margin-top: var(--player-section-gap, 0.32rem) !important;
}

body.app-player .player-about-page-shell :where(.player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row) + br,
body.app-player .player-players-page--profile :where(.profile-summary-wrap, .player-profile-summary-card, .player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details, .ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"]) + br {
    display: none !important;
}


/** CHANGED v2026-06-03.7296
 *  Normalize collapsed-section spacing parity by using one adjacent-item gap.
 *  Earlier page-specific rules still combined grid gaps with child margins, so
 *  About and Player Profile rendered looser than Team Profile. Keep child
 *  wrappers marginless and let only the stack/adjacent rule create spacing.
 */
body.app-player .player-about-page-shell .player-about-content-stack {

    gap: var(--player-section-gap, 0.32rem) !important;
    row-gap: var(--player-section-gap, 0.32rem) !important;
}

body.app-player .player-about-page-shell .player-about-content-stack > *,
body.app-player .player-about-page-shell .player-about-content-stack > :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row),
body.app-player .player-players-page--profile > :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details) {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

body.app-player .player-players-page--profile > :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details)
+ :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details) {
    margin-top: var(--player-section-gap, 0.32rem) !important;
}

body.app-player .player-players-page--profile > :where(.profile-summary-wrap, .player-profile-summary-card)
+ :where(.ui-component-player.ui-player-details-card[data-ui-details-wrapper="1"], .player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details) {
    margin-top: var(--player-section-gap, 0.32rem) !important;
}



/** CHANGED v2026-06-03.7304
 *  About and Player Profile section-spacing parity with Team Profile.
 *  The earlier rules reduced some margins but still allowed global .ui-details-card
 *  and native details margins to compound on these two pages. Collapse child
 *  margins at the page shell and use a single compact adjacent-section gap.
 */
body.app-player .player-about-page-shell,
body.app-player .player-players-page--profile {
    --player-profile-section-parity-gap: var(--player-section-gap, 0.32rem);
}

body.app-player .player-about-page-shell .player-about-content-stack,
body.app-player .player-players-page--profile {
    display: grid !important;
    row-gap: var(--player-profile-section-parity-gap) !important;
    gap: var(--player-profile-section-parity-gap) !important;
}

body.app-player .player-about-page-shell .player-about-content-stack > *,
body.app-player .player-about-page-shell .player-about-content-stack > :where(.ui-component-player, .ui-details-card, .ui-player-details-card, .player-lazy-details-wrapper, .player-about-details, .about-whats-new-link-row),
body.app-player .player-players-page--profile > *,
body.app-player .player-players-page--profile > :where(.ui-component-player, .ui-details-card, .ui-player-details-card, .profile-summary-wrap, .player-profile-summary-card, .player-profile-details, .player-match-history-details, .player-subs-details, .player-availability-details) {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

body.app-player .player-about-page-shell .player-about-content-stack > :where(.ui-component-player, .ui-details-card, .ui-player-details-card, .player-lazy-details-wrapper) > :where(details, .player-lazy-details, .player-ajax-details, .ui-normalized-details),
body.app-player .player-players-page--profile > :where(.ui-component-player, .ui-details-card, .ui-player-details-card) > :where(details, .player-lazy-details, .player-ajax-details, .ui-normalized-details) {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

body.app-player .player-about-page-shell br,
body.app-player .player-players-page--profile br {
    display: none !important;
}


/* ADDED v2026-06-03.7345: Double the Facilities create/edit map height without changing Scheduler map sizing. */
.admin-facility-map-frame-wrap {
    min-height: 360px !important;
    height: 360px !important;
}
.admin-facility-map-frame {
    height: 360px !important;
}

/** ADDED v2026-06-03.7369
 * Pending competitive-result changes use one visual language. Scores,
 * forfeits, and void requests all show the same orange pending background;
 * status-specific meaning comes from the displayed score/status text.
 */
body.app-player .matches-table.match-layout-table td.pending-game-change-cell,
body.app-player .player-matches-page td.pending-game-change-cell {
    background-color: var(--color-status-dissolution-request-bg) !important;
    -webkit-print-color-adjust: exact;
}
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-forfeit::after,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-void::after,
body.app-player .player-matches-page td.pending-game-change-cell.pending-game-change-forfeit::after,
body.app-player .player-matches-page td.pending-game-change-cell.pending-game-change-void::after {
    background-color: var(--color-message-warning);
    box-shadow: 0 0 0 1px var(--color-background), 0 0 0 2px var(--color-message-warning);
}
body.app-player .matches-table.match-layout-table .pending-void-status,
body.app-player .player-matches-page .pending-void-status {
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg)) !important;
    border-color: var(--player-score-status-void-bg, var(--color-status-void-bg)) !important;
    font-weight: 700;
    text-align: center;
}

/** ADDED v2026-06-03.7371
 * Pending void/forfeit cells must use the same light-orange cell background as
 * pending score cells. Stronger player-page selectors override later table/cell
 * background rules while leaving the darker void pill and provisional score
 * badges intact.
 */
body.app-player .matches-table.match-layout-table td.component-player-score-cell.pending-game-change-cell,
body.app-player .matches-table.match-layout-table td.matches-score-cell.pending-game-change-cell,
body.app-player .player-matches-page td.component-player-score-cell.pending-game-change-cell,
body.app-player .player-matches-page td.matches-score-cell.pending-game-change-cell {
    background-color: var(--color-status-dissolution-request-bg) !important;
    background: var(--color-status-pending-change-bg) !important;
    -webkit-print-color-adjust: exact;
}
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .game-score-stack,
body.app-player .player-matches-page td.pending-game-change-cell .game-score-stack {
    background-color: transparent !important;
}
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score {
    background-color: var(--color-status-dissolution-request-bg) !important;
}
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status {
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg)) !important;
    border-color: var(--player-score-status-void-bg, var(--color-status-void-bg)) !important;
}

/** ADDED v2026-06-03.7373
 *  Pending void and forfeit cells must keep the same light-orange full-cell
 *  background as pending score cells even after later player-layout rules load.
 *  The compact void pill remains the darker void-orange so the pending cell and
 *  the requested status are visually distinct.
 */
.matches-table.match-layout-table td.component-player-score-cell.pending-game-change-cell,
.matches-table.match-layout-table td.matches-score-cell.pending-game-change-cell,
.player-matches-page td.component-player-score-cell.pending-game-change-cell,
.player-matches-page td.matches-score-cell.pending-game-change-cell,
body.app-player .matches-table.match-layout-table td.component-player-score-cell.pending-game-change-cell,
body.app-player .matches-table.match-layout-table td.matches-score-cell.pending-game-change-cell,
body.app-player .player-matches-page td.component-player-score-cell.pending-game-change-cell,
body.app-player .player-matches-page td.matches-score-cell.pending-game-change-cell {
    background-color: var(--color-status-pending-change-bg, #ffe6a6) !important;
    background: var(--color-status-pending-change-bg, #ffe6a6) !important;
    background-clip: padding-box !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
.matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
.player-matches-page td.pending-game-change-cell .pending-void-status,
.player-matches-page td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .player-status-badge--pending-void {
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    border-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;

}


/** CHANGED v2026-06-03.7374
 *  Pending score cells keep the compact upper-right pending marker, but the
 *  score badge itself should not get an extra heavy border/outline. The full
 *  cell background continues to communicate pending approval state.
 */
.matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score input.input-score.pending-game-change-score,
.matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score span.input-score.pending-game-change-score,
.player-matches-page td.pending-game-change-cell.pending-game-change-score input.input-score.pending-game-change-score,
.player-matches-page td.pending-game-change-cell.pending-game-change-score span.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score input.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score span.input-score.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell.pending-game-change-score input.input-score.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell.pending-game-change-score span.input-score.pending-game-change-score {
    border-color: var(--color-border, #cbd5e1) !important;
    box-shadow: none !important;
    outline: none !important;
}

/** CHANGED v2026-06-03.7376
 *  Pending score approvals keep the upper-right pending marker and light-orange
 *  cell background, but no score badge or score cell should render the previous
 *  heavy pending border. The pending class may be attached to either the td or
 *  the input/span badge depending on page context, so the override must cover
 *  both markup shapes.
 */
.matches-table.match-layout-table td.pending-game-change-score,
.matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score,
.player-matches-page td.pending-game-change-score,
.player-matches-page td.pending-game-change-cell.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell.pending-game-change-score {
    box-shadow: none !important;
    outline: none !important;
}
.matches-table.match-layout-table input.input-score.pending-game-change-score,
.matches-table.match-layout-table span.input-score.pending-game-change-score,
.player-matches-page input.input-score.pending-game-change-score,
.player-matches-page span.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table input.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table span.input-score.pending-game-change-score,
body.app-player .player-matches-page input.input-score.pending-game-change-score,
body.app-player .player-matches-page span.input-score.pending-game-change-score {
    border-color: transparent !important;
    box-shadow: none !important;
    outline: none !important;
}


/** CHANGED v2026-06-03.7378
 *  Pending score approvals must not draw the old heavy score-border on any
 *  edge. Earlier cleanup covered the badge shadow, but browser/native input
 *  borders and table-cell edge styling could still show as right/bottom black
 *  lines. Keep the light-orange pending cell and upper-right marker only.
 */
.matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score,
.matches-table.match-layout-table td.pending-game-change-cell:has(input.input-score.pending-game-change-score),
.matches-table.match-layout-table td.pending-game-change-cell:has(span.input-score.pending-game-change-score),
.player-matches-page td.pending-game-change-cell.pending-game-change-score,
.player-matches-page td.pending-game-change-cell:has(input.input-score.pending-game-change-score),
.player-matches-page td.pending-game-change-cell:has(span.input-score.pending-game-change-score),
body.app-player .matches-table.match-layout-table td.pending-game-change-cell.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell:has(input.input-score.pending-game-change-score),
body.app-player .matches-table.match-layout-table td.pending-game-change-cell:has(span.input-score.pending-game-change-score),
body.app-player .player-matches-page td.pending-game-change-cell.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell:has(input.input-score.pending-game-change-score),
body.app-player .player-matches-page td.pending-game-change-cell:has(span.input-score.pending-game-change-score) {
    border-color: var(--color-table-border, #bfbfbf) !important;
    box-shadow: none !important;
    outline: none !important;
}
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score,
.matches-table.match-layout-table input.input-score.pending-game-change-score,
.matches-table.match-layout-table span.input-score.pending-game-change-score,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score,
.player-matches-page input.input-score.pending-game-change-score,
.player-matches-page span.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table input.input-score.pending-game-change-score,
body.app-player .matches-table.match-layout-table span.input-score.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score,
body.app-player .player-matches-page input.input-score.pending-game-change-score,
body.app-player .player-matches-page span.input-score.pending-game-change-score {
    border: 0 !important;
    border-color: transparent !important;
    box-shadow: none !important;
    outline: none !important;
    -webkit-appearance: none !important;
    appearance: none !important;
    background-clip: padding-box !important;
}

/** ADDED v2026-06-04.7412
 *  Mobile/touch usability pass.
 *  - Give touch users a reliable tap target instead of relying on hover/title.
 *  - Keep desktop layout unchanged by scoping size increases to narrow or coarse-pointer devices.
 */
.app-mobile-title-help {
    cursor: help;
    text-decoration: underline dotted;
    text-underline-offset: 0.15em;
}
.app-mobile-title-help:focus {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

@media (pointer: coarse), (max-width: 700px) {
    button,
    input[type="button"],
    input[type="submit"],
    input[type="reset"],
    .button,
    .btn,
    .button-link,
    a.button,
    a.btn {
        min-height: 44px;
        touch-action: manipulation;
    }

    input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),
    select,
    textarea {
        min-height: 44px;
        font-size: 16px;
    }

    .matches-table button,
    .match-layout-table button,
    .table-calendar button,
    .stats-table-container button,
    .admin-card button {
        margin-top: 0.15rem;
        margin-bottom: 0.15rem;
    }

    .app-mobile-title-help {
        -webkit-tap-highlight-color: rgba(0,0,0,0.12);
    }
}


/** ADDED v2026-06-04.7431
 *  Pending approval display refinement:
 *  - pending score changes keep the normal rounded score-badge/bubble shape;
 *  - the score cell keeps the light-orange pending background and corner marker;
 *  - pending void requests render the compact void-orange pill instead of plain
 *    text on the pending cell background.
 */
.matches-table.match-layout-table input.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
.matches-table.match-layout-table span.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
.player-matches-page input.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
.player-matches-page span.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
body.app-player .matches-table.match-layout-table input.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
body.app-player .matches-table.match-layout-table span.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
body.app-player .player-matches-page input.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status),
body.app-player .player-matches-page span.input-score.player-score-badge.pending-game-change-score:not(.game-status-badge):not(.pending-void-status) {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 2.35rem !important;
    min-width: 2.35rem !important;
    max-width: 2.35rem !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    border: 1px solid var(--color-border, #cbd5e1) !important;
    background-color: var(--color-input-bg, var(--color-background, #ffffff)) !important;
    background: var(--color-input-bg, var(--color-background, #ffffff)) !important;
    box-shadow: none !important;
    outline: none !important;
    -webkit-appearance: none !important;
    appearance: none !important;
    background-clip: padding-box !important;
}
.matches-table.match-layout-table input.input-score.player-score-badge.pending-game-change-score.score-win,
.matches-table.match-layout-table input.input-score.player-score-badge.pending-game-change-score.win,
.matches-table.match-layout-table span.input-score.player-score-badge.pending-game-change-score.score-win,
.matches-table.match-layout-table span.input-score.player-score-badge.pending-game-change-score.win,
.player-matches-page input.input-score.player-score-badge.pending-game-change-score.score-win,
.player-matches-page input.input-score.player-score-badge.pending-game-change-score.win,
.player-matches-page span.input-score.player-score-badge.pending-game-change-score.score-win,
.player-matches-page span.input-score.player-score-badge.pending-game-change-score.win,
body.app-player .matches-table.match-layout-table input.input-score.player-score-badge.pending-game-change-score.score-win,
body.app-player .matches-table.match-layout-table input.input-score.player-score-badge.pending-game-change-score.win,
body.app-player .matches-table.match-layout-table span.input-score.player-score-badge.pending-game-change-score.score-win,
body.app-player .matches-table.match-layout-table span.input-score.player-score-badge.pending-game-change-score.win,
body.app-player .player-matches-page input.input-score.player-score-badge.pending-game-change-score.score-win,
body.app-player .player-matches-page input.input-score.player-score-badge.pending-game-change-score.win,
body.app-player .player-matches-page span.input-score.player-score-badge.pending-game-change-score.score-win,
body.app-player .player-matches-page span.input-score.player-score-badge.pending-game-change-score.win {
    background-color: var(--color-game-win-bg) !important;
    background: var(--color-game-win-bg) !important;
}
.matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
.matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
.player-matches-page td.pending-game-change-cell .pending-void-status,
.player-matches-page td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .player-status-badge--pending-void {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: var(--player-score-status-min-width, 2.65rem) !important;
    max-width: none !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    padding: 0 0.42rem !important;
    margin: 0 !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    border: 1px solid var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    color: var(--color-text, #111827) !important;
    box-shadow: none !important;
    outline: none !important;
    text-transform: lowercase;
}


/** CHANGED v2026-06-04.7433
 *  Pending approval display refinement.
 *  - Pending score changes must still show the winning score highlight inside
 *    the rounded score bubble.
 *  - Pending voids must render the text inside the compact void-orange pill.
 *  Use broad selectors because older score/status markup may omit the newer
 *  player-score-badge/player-status-badge helper classes.
 */
.matches-table.match-layout-table input.input-score.pending-game-change-score.score-win,
.matches-table.match-layout-table input.input-score.pending-game-change-score.win,
.matches-table.match-layout-table span.input-score.pending-game-change-score.score-win,
.matches-table.match-layout-table span.input-score.pending-game-change-score.win,
.player-matches-page input.input-score.pending-game-change-score.score-win,
.player-matches-page input.input-score.pending-game-change-score.win,
.player-matches-page span.input-score.pending-game-change-score.score-win,
.player-matches-page span.input-score.pending-game-change-score.win,
body.app-player .matches-table.match-layout-table input.input-score.pending-game-change-score.score-win,
body.app-player .matches-table.match-layout-table input.input-score.pending-game-change-score.win,
body.app-player .matches-table.match-layout-table span.input-score.pending-game-change-score.score-win,
body.app-player .matches-table.match-layout-table span.input-score.pending-game-change-score.win,
body.app-player .player-matches-page input.input-score.pending-game-change-score.score-win,
body.app-player .player-matches-page input.input-score.pending-game-change-score.win,
body.app-player .player-matches-page span.input-score.pending-game-change-score.score-win,
body.app-player .player-matches-page span.input-score.pending-game-change-score.win {
    background-color: var(--color-game-win-bg, #d1fae5) !important;
    background: var(--color-game-win-bg, #d1fae5) !important;
    border-color: var(--color-border, #cbd5e1) !important;
    border-width: 1px !important;
    border-style: solid !important;
    color: var(--color-text, #111827) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
.matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
.matches-table.match-layout-table span.input-score.pending-void-status,
.player-matches-page td.pending-game-change-cell .pending-void-status,
.player-matches-page td.pending-game-change-cell .player-status-badge--pending-void,
.player-matches-page span.input-score.pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .matches-table.match-layout-table span.input-score.pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .player-matches-page span.input-score.pending-void-status {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: var(--player-score-status-min-width, 2.65rem) !important;
    max-width: none !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    padding: 0 0.42rem !important;
    margin: 0 !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    border: 1px solid var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    color: var(--color-text, #111827) !important;
    box-shadow: none !important;
    outline: none !important;
    text-transform: lowercase;
}

/** CHANGED v2026-06-04.7440
 * Pending approval score/status display hardening.
 * - Pending score approvals keep rounded bubbles and explicitly highlight the
 *   provisional winning score, including disabled input markup.
 * - Pending void approvals display the word "void" inside the void-orange pill.
 */
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-winner,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-winner,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-winner,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-winner,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-winner,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-winner,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-winner,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-winner {
    background-color: var(--color-game-win-bg, #d1fae5) !important;
    background: var(--color-game-win-bg, #d1fae5) !important;
    color: var(--color-text, #111827) !important;
    border: 1px solid var(--color-border, #cbd5e1) !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    box-shadow: none !important;
    opacity: 1 !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
}
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-loser,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-loser,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-loser,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-loser,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-loser,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-loser,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score.pending-game-score-loser,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score.pending-game-score-loser {
    background-color: var(--color-input-bg, var(--color-background, #ffffff)) !important;
    background: var(--color-input-bg, var(--color-background, #ffffff)) !important;
    color: var(--color-text, #111827) !important;
    border: 1px solid var(--color-border, #cbd5e1) !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    box-shadow: none !important;
    opacity: 1 !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
}
.matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
.matches-table.match-layout-table td.pending-game-change-cell .pending-void-status.void,
.matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--void.pending-void-status,
.player-matches-page td.pending-game-change-cell .pending-void-status,
.player-matches-page td.pending-game-change-cell .pending-void-status.void,
.player-matches-page td.pending-game-change-cell .player-status-badge--void.pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status.void,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--void.pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status.void,
body.app-player .player-matches-page td.pending-game-change-cell .player-status-badge--void.pending-void-status {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: var(--player-score-status-min-width, 2.65rem) !important;
    width: auto !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    padding: 0 0.42rem !important;
    margin: 0 !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    border: 1px solid var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    color: var(--color-text, #111827) !important;
    box-shadow: none !important;
    outline: none !important;
    opacity: 1 !important;
    text-transform: lowercase !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
}

/** CHANGED v2026-06-04.7465
 * Deployment Upload: further widen the native file chooser filename text field
 * so long deployment ZIP names remain readable before upload.
 */
.sysadmin-deployment-upload-details .sysadmin-deployment-file-input {
    display: block;
    width: min(100%, 96rem);
    max-width: 100%;
}


/** ADDED v2026-06-04.7452
 * What's New: visually emphasize changelog rows marked with the optional
 * changelog.highlightFlag column while preserving the existing list structure.
 */
.changelog-highlight-item {
    font-weight: 700;
}

.changelog-highlight-label {
    display: inline-block;
    margin-right: 0.35rem;
    padding: 0.08rem 0.35rem;
    border-radius: 999px;
    border: 1px solid currentColor;
    font-size: 0.75em;
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}


/** ADDED v2026-06-04.7453
 * Pending approval display hardening.
 * Keep provisional winning scores visibly highlighted after pending/disabled
 * input rules, and force pending void text into the void-orange badge even when
 * older markup/class combinations are rendered.
 */
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-score-winner,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-score-winner,
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score.win,
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-change-score.score-win,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score.win,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-change-score.score-win,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-score-winner,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-score-winner,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score.win,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-change-score.score-win,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score.win,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-change-score.score-win,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-score-winner,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-score-winner,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.pending-game-score-winner,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.pending-game-score-winner {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background-color: var(--color-game-win-bg, #d1fae5) !important;
    background: var(--color-game-win-bg, #d1fae5) !important;
    color: var(--color-text, #111827) !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
    border: 1px solid var(--color-border, #cbd5e1) !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    box-shadow: none !important;
    opacity: 1 !important;
}
.matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
.matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.game-status-badge.pending-void-status,
.player-matches-page td.pending-game-change-cell .pending-void-status,
.player-matches-page td.pending-game-change-cell .player-status-badge--pending-void,
.player-matches-page td.pending-game-change-cell span.input-score.game-status-badge.pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .player-status-badge--pending-void,
body.app-player .player-matches-page td.pending-game-change-cell .pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell .player-status-badge--pending-void {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: var(--player-score-status-min-width, 2.65rem) !important;
    max-width: none !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    padding: 0 0.42rem !important;
    margin: 0 !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    border: 1px solid var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    color: var(--color-text, #111827) !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
    box-shadow: none !important;
    outline: none !important;
    opacity: 1 !important;
    text-transform: lowercase !important;
}


/** ADDED v2026-06-04.7454
 * Pending approval score/status renderer hardening.
 * Pending scores now render as readonly score badges instead of disabled inputs;
 * keep the provisional winner as the visible green winner and keep pending void
 * as a compact void-orange status pill across the active player stylesheet.
 */
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-winner,
.player-matches-page td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-winner,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-winner,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-winner {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background-color: var(--color-game-win-bg, #d1fae5) !important;
    background: var(--color-game-win-bg, #d1fae5) !important;
    color: var(--color-text, #111827) !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
    border-color: var(--color-border, #cbd5e1) !important;
    opacity: 1 !important;
}
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-loser,
.player-matches-page td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-loser,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-loser,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.player-score-badge.pending-game-change-readonly.pending-game-score-loser {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    opacity: 1 !important;
}
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.player-status-badge.game-status-badge.player-status-badge--void.pending-void-status,
.player-matches-page td.pending-game-change-cell span.input-score.player-status-badge.game-status-badge.player-status-badge--void.pending-void-status,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.player-status-badge.game-status-badge.player-status-badge--void.pending-void-status,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.player-status-badge.game-status-badge.player-status-badge--void.pending-void-status {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: var(--player-score-status-min-width, 2.65rem) !important;
    max-width: none !important;
    height: 1.62rem !important;
    min-height: 1.62rem !important;
    padding: 0 0.42rem !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    border: 1px solid var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background-color: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    background: var(--player-score-status-void-bg, var(--color-status-void-bg, #ff9466)) !important;
    color: var(--color-text, #111827) !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
    text-transform: lowercase !important;
    opacity: 1 !important;
}


/* ADDED v2026-06-04.7466B: Override broad admin table scroll rules for Add Changelog Entry containment. */
body.app-admin .admin-changelog-entry-table-container,
body.admin .admin-changelog-entry-table-container,
.admin-changelog-entry-table-container {
  max-width: 100% !important;
  overflow-x: hidden !important;
  box-sizing: border-box !important;
}

body.app-admin .admin-changelog-entry-table-container table.admin-changelog-entry-table,
body.app-admin table.admin-changelog-entry-table,
body.admin .admin-changelog-entry-table-container table.admin-changelog-entry-table,
body.admin table.admin-changelog-entry-table,
table.admin-changelog-entry-table {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  table-layout: fixed !important;
}

body.app-admin table.admin-changelog-entry-table th,
body.app-admin table.admin-changelog-entry-table td,
body.admin table.admin-changelog-entry-table th,
body.admin table.admin-changelog-entry-table td,
table.admin-changelog-entry-table th,
table.admin-changelog-entry-table td {
  max-width: 100% !important;
  min-width: 0 !important;
  padding-left: 0.28rem !important;
  padding-right: 0.28rem !important;
  overflow-wrap: anywhere !important;
  white-space: normal !important;
}

body.app-admin table.admin-changelog-entry-table input[type="text"],
body.app-admin table.admin-changelog-entry-table input[type="datetime-local"],
body.admin table.admin-changelog-entry-table input[type="text"],
body.admin table.admin-changelog-entry-table input[type="datetime-local"],
table.admin-changelog-entry-table input[type="text"],
table.admin-changelog-entry-table input[type="datetime-local"] {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}


/* ADDED v2026-06-04.7467: Admin -> Teams current-season table containment and compact seed column. */
.admin-teams-page-shell .admin-team-seed-col {
  width: 1%;
  min-width: 3.25rem;
  max-width: 4.5rem;
  white-space: nowrap;
  text-align: center;
}
.admin-teams-page-shell .admin-team-seed-input {
  width: 4rem;
  min-width: 0;
  max-width: 4rem;
  box-sizing: border-box;
}
.admin-teams-page-shell .admin-table-container {
  max-width: 100%;
}

/* ADDED v2026-06-04.7469: Add Changelog Entry direct table layout without the shared extra wrapper. */
.admin-changelog-entry-table-direct {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  table-layout: fixed;
  box-sizing: border-box;
}
.admin-changelog-entry-table-direct th {
  white-space: nowrap !important;
  overflow-wrap: normal !important;
}
.admin-changelog-entry-table-direct th,
.admin-changelog-entry-table-direct td {
  box-sizing: border-box;
  padding-left: 0.25rem !important;
  padding-right: 0.25rem !important;
}
.admin-changelog-entry-table-direct .admin-changelog-page-col {
  width: 11%;
}
.admin-changelog-entry-table-direct .admin-changelog-details-col {
  width: 53%;
}
.admin-changelog-entry-table-direct .admin-changelog-release-col {
  width: 22%;
  white-space: nowrap;
}
.admin-changelog-entry-table-direct .admin-changelog-publish-col,
.admin-changelog-entry-table-direct .admin-changelog-highlight-col {
  width: 7%;
  text-align: center;
  white-space: nowrap;
}
.admin-changelog-entry-table-direct input[type="text"],
.admin-changelog-entry-table-direct input[type="datetime-local"] {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.admin-changelog-entry-table-direct input[type="datetime-local"] {
  font-size: 0.82rem;
}
.admin-changelog-entry-row-hidden {
  display: none !important;
}
.admin-changelog-entry-actions {
  margin-top: 0.55rem;
  display: flex;
  justify-content: flex-start;
}


/* ADDED v2026-06-04.7471: Deployment upload / Admin Teams / Add Changelog hard overrides for changes that were not visible after v7470. */
.sysadmin-deployment-upload-details .sysadmin-deployment-file-input-row {
  width: 100% !important;
  max-width: none !important;
}
.sysadmin-deployment-upload-details input.sysadmin-deployment-file-input[type="file"] {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  min-width: min(100%, 96rem) !important;
  box-sizing: border-box !important;
}
.admin-teams-page-shell table.admin-current-season-teams-table {
  width: 100% !important;
  max-width: 100% !important;
  border-collapse: collapse;
}
.admin-teams-page-shell table.admin-current-season-teams-table .admin-team-seed-col {
  width: 2.75rem !important;
  min-width: 2.75rem !important;
  max-width: 2.75rem !important;
  padding-left: 0.18rem !important;
  padding-right: 0.18rem !important;
  white-space: nowrap !important;
  text-align: center !important;
}
.admin-teams-page-shell table.admin-current-season-teams-table .admin-team-seed-input {
  width: 2.55rem !important;
  min-width: 0 !important;
  max-width: 2.55rem !important;
  padding-left: 0.12rem !important;
  padding-right: 0.12rem !important;
  box-sizing: border-box !important;
}
#sysadmin-add-changelog table.admin-changelog-entry-table-direct th {
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}
#sysadmin-add-changelog tr.admin-changelog-entry-row-hidden {
  display: none !important;
}


/** ADDED v2026-06-05.7502
 * Player Profile summary layout repair.
 * The semantic summary markup introduced a nested layout div. Older profile
 * alignment rules targeted the retired rowspan table, so the fact list could
 * stack below the photo. Keep the photo and profile facts in the same row on
 * the profile summary card while allowing narrow screens to scroll rather than
 * silently re-stack the details underneath the photo.
 */
:root {
    --player-profile-summary-semantic-gap-v7502: 1rem;
    --player-profile-summary-details-min-v7502: 13rem;
}

.player-page-container.players-container .player-profile-summary-semantic,
.players-container .player-profile-summary-semantic,
.player-profile-summary-semantic {
    width: max-content !important;
    max-width: 100% !important;
    overflow-x: auto;
    overflow-y: visible;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-summary-layout,
.players-container .player-profile-summary-semantic .player-profile-summary-layout,
.player-profile-summary-semantic .player-profile-summary-layout {
    display: inline-grid !important;
    grid-template-columns: auto minmax(var(--player-profile-summary-details-min-v7502), max-content) !important;
    align-items: start !important;
    justify-content: start !important;
    column-gap: var(--player-profile-summary-semantic-gap-v7502) !important;
    row-gap: 0 !important;
    width: max-content !important;
    max-width: none !important;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-summary-photo,
.players-container .player-profile-summary-semantic .player-profile-summary-photo,
.player-profile-summary-semantic .player-profile-summary-photo {
    grid-column: 1 !important;
    grid-row: 1 !important;
    align-self: start !important;
    justify-self: start !important;
    margin: 0 !important;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-summary-details,
.players-container .player-profile-summary-semantic .player-profile-summary-details,
.player-profile-summary-semantic .player-profile-summary-details {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: start !important;
    justify-self: start !important;
    min-width: var(--player-profile-summary-details-min-v7502) !important;
    width: max-content !important;
    max-width: none !important;
    margin: 0 !important;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-list,
.players-container .player-profile-summary-semantic .player-profile-fact-list,
.player-profile-summary-semantic .player-profile-fact-list {
    margin: 0 !important;
    width: max-content !important;
    max-width: none !important;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row,
.players-container .player-profile-summary-semantic .player-profile-fact-row,
.player-profile-summary-semantic .player-profile-fact-row {
    display: grid !important;
    grid-template-columns: auto minmax(0, max-content) !important;
    column-gap: 0.55rem !important;
    align-items: baseline !important;
    width: max-content !important;
    max-width: none !important;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row dt,
.players-container .player-profile-summary-semantic .player-profile-fact-row dt,
.player-profile-summary-semantic .player-profile-fact-row dt {
    margin: 0 !important;
    min-width: 3.2rem;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row dd,
.players-container .player-profile-summary-semantic .player-profile-fact-row dd,
.player-profile-summary-semantic .player-profile-fact-row dd {
    margin: 0 !important;
    min-width: 0;
}

.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row.partner,
.players-container .player-profile-summary-semantic .player-profile-fact-row.partner,
.player-profile-summary-semantic .player-profile-fact-row.partner {
    background-clip: padding-box;
}

/* ADDED v2026-09-19.14809: Keep the current Event partner facts distinct
   from the viewer's personal profile summary. */
.player-profile-current-event .player-profile-team-profile-link {
    margin: 0.3rem 0 0.45rem;
}
.player-profile-current-event .player-profile-partner-card {
    margin: 0 0 0.75rem;
    min-width: min(100%, 22rem);
}
.player-profile-current-event .player-profile-partner-card .player-profile-summary-layout {
    display: block;
}

/* ADDED v2026-06-04.7508: Player Profile semantic summary layout repair.
   Keep the profile facts/table to the right of the photo in the current div-based markup. */
.player-profile-summary-card.player-profile-summary-semantic,
.profile-summary-wrap.player-profile-summary-semantic {
    box-sizing: border-box !important;
    display: block !important;
    width: max-content !important;
    max-width: 100% !important;
    overflow-x: auto !important;
}
.player-profile-summary-semantic > .player-profile-summary-layout {
    box-sizing: border-box !important;
    display: grid !important;
    grid-template-columns: max-content max-content !important;
    grid-auto-flow: column !important;
    align-items: start !important;
    justify-content: start !important;
    column-gap: 0.5rem !important;
    width: max-content !important;
    max-width: none !important;
    min-width: max-content !important;
}
.player-profile-summary-semantic .player-profile-summary-photo {
    grid-column: 1 !important;
    grid-row: 1 !important;
    align-self: start !important;
    width: max-content !important;
    min-width: max-content !important;
    flex: 0 0 auto !important;
}
.player-profile-summary-semantic .player-profile-summary-details {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: start !important;
    width: max-content !important;
    min-width: max-content !important;
    max-width: none !important;
    flex: 0 0 auto !important;
}
.player-profile-summary-semantic .player-profile-fact-list,
.player-profile-summary-semantic .profile-summary-facts {
    display: table !important;
    width: max-content !important;
    max-width: none !important;
    margin: 0 !important;
}
.player-profile-summary-semantic .player-profile-fact-row {
    display: table-row !important;
}
.player-profile-summary-semantic .player-profile-fact-row > dt,
.player-profile-summary-semantic .player-profile-fact-row > dd {
    display: table-cell !important;
    vertical-align: top !important;
    white-space: nowrap !important;
    padding: 0.15rem 0.35rem !important;
}


/* ADDED v2026-06-05.7642: Sysadmin recent active users compact profile-icon grid. */
.admin-sysadmin-active-user-icon-grid {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.85rem;
    margin: 1rem 0;
}

.admin-sysadmin-active-user-icon-card {
    display: flex;
    flex: 0 0 116px;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    max-width: 116px;
    min-width: 0;
    padding: 0.7rem 0.45rem;
    border: 1px solid var(--admin-border, var(--css-color-d0d7de));
    border-radius: var(--admin-card-radius, 0.75rem);
    background: var(--admin-surface, var(--css-color-rgba-255-255-255-0-72));
    text-align: center;
}

.admin-sysadmin-active-user-icon-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    overflow: hidden;
    line-height: 0;
    text-decoration: none;
}

/* CHANGED v2026-06-05.7643: Force photo and initials fallbacks to the same compact size inside the recent-active-users grid. */
.admin-sysadmin-active-user-icon-card .profile-photo-frame,
.admin-sysadmin-active-user-icon-card .profile-photo-frame.profile-photo-frame-has-image,
.admin-sysadmin-active-user-icon-card .profile-photo-image,
.admin-sysadmin-active-user-icon-card .profile-photo-fallback-avatar,
.admin-sysadmin-active-user-icon-card .profile-initials-avatar,
.admin-sysadmin-active-user-icon-card .profile-initials-avatar-profile,
.admin-sysadmin-active-user-icon-card .profile-initials-avatar-small {
    --profile-photo-size: 56px !important;
    width: 56px !important;
    height: 56px !important;
    min-width: 56px !important;
    min-height: 56px !important;
    max-width: 56px !important;
    max-height: 56px !important;
    flex: 0 0 56px !important;
    box-sizing: border-box !important;
    font-size: 1.15rem !important;
    line-height: 56px !important;
}

.admin-sysadmin-active-user-icon-name {
    max-width: 100%;
    font-weight: 700;
    line-height: 1.2;
    overflow-wrap: anywhere;
}

.admin-sysadmin-active-user-icon-meta,
.admin-sysadmin-active-user-icon-role {
    max-width: 100%;
    color: var(--admin-muted-text, var(--css-color-586069));
    font-size: 0.82rem;
    line-height: 1.25;
    overflow-wrap: anywhere;
}


/* ADDED v2026-06-07.7721: Match-score shortcut for games requiring approval from the logged-in player. */
.matches-table.match-layout-table td.pending-game-change-requires-my-approval,
.player-matches-page td.pending-game-change-requires-my-approval,
body.app-player .matches-table.match-layout-table td.pending-game-change-requires-my-approval,
body.app-player .player-matches-page td.pending-game-change-requires-my-approval {
    box-shadow: inset 0 0 0 3px rgba(120, 77, 0, 0.34);
    position: relative;
}

.matches-approval-shortcut-link {
    color: inherit;
    display: inline-block;
    line-height: inherit;
    text-decoration: none;
}

.matches-approval-shortcut-link:focus-visible {
    outline: 3px solid rgba(49, 130, 206, 0.85);
    outline-offset: 3px;
}

.matches-approval-shortcut-link:hover .input-score,
.matches-approval-shortcut-link:focus-visible .input-score,
.matches-approval-shortcut-link:hover .game-status-badge,
.matches-approval-shortcut-link:focus-visible .game-status-badge {
    text-decoration: underline;
}


/* CHANGED v2026-06-08.8033: Pending Approval-link cells use darker pending amber, not lavender/orange. */
body.app-player .matches-table.match-layout-table td.pending-game-change-requires-my-approval,
body.app-player .player-matches-page td.pending-game-change-requires-my-approval,
.matches-table.match-layout-table td.pending-game-change-requires-my-approval,
.player-matches-page td.pending-game-change-requires-my-approval {
    background-color: #fcd34d !important;
    box-shadow: inset 0 0 0 3px rgba(180, 83, 9, 0.50) !important;
    position: relative;
}

body.app-player .matches-table.match-layout-table td.pending-game-change-requires-my-approval::after,
body.app-player .player-matches-page td.pending-game-change-requires-my-approval::after,
.matches-table.match-layout-table td.pending-game-change-requires-my-approval::after,
.player-matches-page td.pending-game-change-requires-my-approval::after {
    background-color: #b45309;
    box-shadow: 0 0 0 1px var(--color-background, #ffffff), 0 0 0 2px #b45309;
}

.approvals-container table.approvals-table tr.workflow-highlighted-game-change-request > td,
tr.workflow-highlighted-game-change-request > td {
    background: #fff3cd !important;
    box-shadow: inset 0 0 0 2px rgba(120, 77, 0, 0.35);
}

/* ADDED v2026-06-07.7729: Center Admin Review Game Change Requests decision checkboxes in header and row cells. */
.approvals-container table.approvals-table th.workflow-decision-header,
.approvals-container table.approvals-table th.workflow-decision-subheader,
.approvals-container table.approvals-table td.workflow-decision-cell {
  text-align: center;
  vertical-align: middle;
}

.approvals-container table.approvals-table td.workflow-decision-cell input[type="checkbox"],
.approvals-container table.approvals-table th.workflow-decision-subheader input[type="checkbox"] {
  display: inline-block;
  margin-left: auto;
  margin-right: auto;
}


/* ADDED v2026-06-07.7731: Let Game Changes Requiring My Approval use the full available parent width.
 * The table already wraps cell text; this removes inherited shrink-to-content
 * behavior from nested details/table wrappers while keeping overflow contained.
 */
.approvals-container details.approvals-exclusive-details,
.approvals-container details.approvals-section,
.approvals-container details.admin-section {
  width: 100%;
  max-width: 100%;
}

.approvals-container .approvals-table-container {
  display: block;
  width: 100%;
  max-width: 100%;
}

.approvals-container table.approvals-game-change-table,
.approvals-container table.approvals-pending-table {
  width: 100%;
  max-width: 100%;
}

/* ADDED v2026-06-07.7732: Maximize Game Changes Requiring My Approval and My Game Change Requests table width.
 * Purpose: approvals workflow tables should occupy the full available width of
 * the parent card/details container instead of shrinking around content.
 */
.approvals-container,
.approvals-container .approvals-section-group,
.approvals-container details.approvals-exclusive-details,
.approvals-container details.approvals-section,
.approvals-container details.admin-section,
.approvals-container .approvals-table-container {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box;
}

.approvals-container table.approvals-game-change-table,
.approvals-container table.approvals-pending-table,
.approvals-container table.approvals-workflow-status-table,
.approvals-container table.approvals-workflow-pending-table,
.approvals-container table.approvals-workflow-completed-table {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 100% !important;
  table-layout: fixed !important;
}

.approvals-container table.approvals-workflow-status-table th,
.approvals-container table.approvals-workflow-status-table td,
.approvals-container table.approvals-pending-table th,
.approvals-container table.approvals-pending-table td {
  box-sizing: border-box;
}

/* ADDED v2026-06-07.7737: Compact game-change workflow table columns and keep team/score lines unwrapped. */
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table th:nth-child(1),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table td:nth-child(1),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table th:nth-child(2),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table td:nth-child(2) {
  width: 5% !important;
  white-space: nowrap !important;
}

.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table th:nth-child(3),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table td:nth-child(3) {
  width: 7% !important;
  white-space: nowrap !important;
}

.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table th:nth-child(4),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table td:nth-child(4) {
  width: 49% !important;
}

.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table th:nth-child(5),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table td:nth-child(5) {
  width: 18% !important;
}

.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table th:nth-child(6),
.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table td:nth-child(6) {
  width: 16% !important;
}

.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(1),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(1) {
  width: 6% !important;
  white-space: nowrap !important;
}

.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(2),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(2) {
  width: 7% !important;
  white-space: nowrap !important;
}

.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(3),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(3) {
  width: 43% !important;
}

.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(4),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(4) {
  width: 10% !important;
}

.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(5),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(5),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(6),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(6),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table th:nth-child(7),
.approvals-container table.approvals-workflow-bulk-table.approvals-workflow-pending-table td:nth-child(7) {
  width: 11% !important;
}

.approvals-container table.approvals-table .workflow-type-detail,
.approvals-container table.approvals-table .workflow-requested-stamp,
.approvals-container table.approvals-table .workflow-requested-time,
.approvals-container table.approvals-table .workflow-match-link {
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}



/* CHANGED v2026-06-07.7739: Let game-change approval tables size from content, with compact fixed utility columns and horizontal scroll only when required. */
.approvals-container .approvals-table-container:has(table.approvals-game-change-table),
.approvals-container .approvals-table-container:has(table.approvals-own-game-change-table) {
  overflow-x: auto !important;
  overflow-y: visible !important;
  max-width: 100%;
}

.approvals-container table.approvals-game-change-table.approvals-workflow-pending-table,
.approvals-container table.approvals-own-game-change-table.approvals-workflow-pending-table,
.approvals-container table.approvals-own-game-change-table.approvals-workflow-completed-table {
  table-layout: auto !important;
  width: max-content !important;
  min-width: 100% !important;
  max-width: none !important;
}

.approvals-container table.approvals-table col.workflow-col-decision { width: 64px; }
.approvals-container table.approvals-table col.workflow-col-cancel { width: 64px; }
.approvals-container table.approvals-table col.workflow-col-match { width: 52px; }
.approvals-container table.approvals-game-change-table col.workflow-col-request { width: auto; }
.approvals-container table.approvals-game-change-table col.workflow-col-requested-by { width: 1%; }
.approvals-container table.approvals-game-change-table col.workflow-col-requested-stamp { width: 1%; }


.approvals-container table.approvals-own-game-change-table col.workflow-col-requested-by { width: 1%; }



.approvals-container table.approvals-game-change-table th,
.approvals-container table.approvals-own-game-change-table th {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}

.approvals-container table.approvals-table th.workflow-decision-header,
.approvals-container table.approvals-table th.workflow-decision-subheader,
.approvals-container table.approvals-table td.workflow-decision-cell,
.approvals-container table.approvals-table td.workflow-match-cell {
  text-align: center !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  word-break: normal !important;
  overflow-wrap: normal !important;
}

.approvals-container table.approvals-table th.workflow-decision-subheader label {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  white-space: nowrap !important;
}

.approvals-container table.approvals-table td.workflow-request-cell,
.approvals-container table.approvals-table td.workflow-requested-by-cell,
.approvals-container table.approvals-table td.workflow-status-cell,
.approvals-container table.approvals-table td.workflow-progress-cell,
.approvals-container table.approvals-table td.workflow-requested-stamp {
  overflow: visible !important;
  text-overflow: clip !important;
}

.approvals-container table.approvals-table td.workflow-request-cell {
  min-width: max-content;
}

/* CHANGED v2026-06-07.7742: Keep the request heading, including the game number, on one line; the only intended Request-column breaks are before each team/score line. */
.approvals-container table.approvals-table .workflow-type-primary {

  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}



.approvals-container table.approvals-table .workflow-type-detail,
.approvals-container table.approvals-table .workflow-match-link,
.approvals-container table.approvals-table .workflow-requested-by-cell,
.approvals-container table.approvals-table .workflow-requested-by-cell a,
.approvals-container table.approvals-table .workflow-requested-stamp,
.approvals-container table.approvals-table .workflow-requested-time {
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}

.approvals-container table.approvals-table th,
.approvals-container table.approvals-table td {
  vertical-align: top;
}

.approvals-container table.approvals-table th.workflow-decision-header,
.approvals-container table.approvals-table th.workflow-decision-subheader,
.approvals-container table.approvals-table td.workflow-decision-cell,
.approvals-container table.approvals-table td.workflow-match-cell {
  vertical-align: middle !important;
}


/* ADDED v2026-06-07.7743: Remove extra spacer lines from Request-column details and center My Game Change Requests checkboxes.
 * Purpose: request/game heading plus one line per team-score detail, with no blank lines;
 * pending own-request selection checkboxes should be horizontally centered.
 */
.approvals-container table.approvals-table .workflow-type-primary {
  display: block;
  margin: 0 !important;
}

.approvals-container table.approvals-table .workflow-type-detail {
  display: block;
  margin: 0 !important;
  padding: 0 !important;
}

.approvals-container table.approvals-own-game-change-table.approvals-workflow-pending-table th:first-child,
.approvals-container table.approvals-own-game-change-table.approvals-workflow-pending-table td.workflow-select-cell {
  text-align: center !important;
  vertical-align: middle !important;
}

.approvals-container table.approvals-own-game-change-table.approvals-workflow-pending-table th:first-child label {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  white-space: nowrap !important;
}

.approvals-container table.approvals-own-game-change-table.approvals-workflow-pending-table th:first-child input[type="checkbox"],
.approvals-container table.approvals-own-game-change-table.approvals-workflow-pending-table td.workflow-select-cell input[type="checkbox"] {
  display: inline-block;
  margin-left: auto;
  margin-right: auto;
}


/* ADDED v2026-06-07.7744: My Game Change Requests column order is Cancel/Match/Status/Requested/Progress/Request.
 * Purpose: remove redundant Requested By and give the moved Request detail column the flexible remaining width.
 */
.approvals-container table.approvals-own-game-change-table col.workflow-col-request {
  width: auto;
}

.approvals-container table.approvals-own-game-change-table col.workflow-col-status {
  width: 86px;
}

.approvals-container table.approvals-own-game-change-table col.workflow-col-requested-stamp {
  width: 1%;
}

.approvals-container table.approvals-own-game-change-table col.workflow-col-progress {
  width: 112px;
}

/* ADDED v2026-06-07.7751: Desktop profile link parity with mobile header placement.
 * Keep the logged-in player profile link anchored at the lower-left of the green
 * header and force white text on desktop, matching the mobile header treatment.
 */
body.app-player header {
    position: relative !important;
}

body.app-player header .nav-profile-corner,
body.player-surface header .nav-profile-corner {
    position: absolute !important;
    top: auto !important;
    right: auto !important;
    bottom: 0.35rem !important;
    left: 0.45rem !important;
    z-index: 20 !important;
}

body.app-player header .nav-profile-corner .nav-profile-photo-link,
body.app-player header .nav-profile-corner .nav-profile-photo-link:link,
body.app-player header .nav-profile-corner .nav-profile-photo-link:visited,
body.app-player header .nav-profile-corner .nav-profile-photo-link:hover,
body.app-player header .nav-profile-corner .nav-profile-photo-link:active,
body.player-surface header .nav-profile-corner .nav-profile-photo-link,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:link,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:visited,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:hover,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:active {
    color: #fff !important;
    text-decoration: none !important;
}

body.app-player header .nav-profile-corner .nav-profile-first-name,
body.player-surface header .nav-profile-corner .nav-profile-first-name {
    color: #fff !important;
}

/* ADDED v2026-06-07.7756: Keep logged-in profile nav link consistent on admin and player surfaces.
 * Admin pages load admin surface CSS after the base stylesheet, so this rule is
 * repeated in admin-loaded bundles and includes body.app-admin/body.admin-surface.
 */
body.app-admin header,
body.admin-surface header,
body.app-player header,
body.player-surface header {
    position: relative !important;
}

body.app-admin header .nav-profile-corner,
body.admin-surface header .nav-profile-corner,
body.app-player header .nav-profile-corner,
body.player-surface header .nav-profile-corner {
    position: absolute !important;
    top: auto !important;
    right: auto !important;
    bottom: 0.35rem !important;
    left: 0.45rem !important;
    z-index: 20 !important;
}





/* ADDED v2026-06-07.7759: Highlight Deployment Upload warning/error rows inside collapsed summary sections. */
.admin-table tr.admin-deployment-row-error > td {
    background: #fdecea !important;
    border-color: #f5c2c7 !important;
    font-weight: 700;
}

.admin-table tr.admin-deployment-row-warning > td {
    background: #fff4ce !important;
    border-color: #ffe08a !important;
}

/* ADDED v2026-06-07.7768: Highlight Log Files section heading when retained warning/error logs need attention. */
details.admin-sysadmin-log-files-details.admin-log-files-has-errors > summary {
    background: #fdecea !important;
    border-color: #f5c2c7 !important;
    color: #842029 !important;
    font-weight: 700;
}

details.admin-sysadmin-log-files-details.admin-log-files-has-warnings > summary {
    background: #fff4ce !important;
    border-color: #ffe08a !important;
    color: #664d03 !important;
    font-weight: 700;
}

/* ADDED v2026-06-07.7780: Keep Admin Settings Rules table Rule column compact and no-wrap. */
.admin-rules-table {
    table-layout: auto !important;
}

.admin-rules-table th.admin-rule-column,
.admin-rules-table td.admin-rule-column {
    width: 1% !important;
    max-width: 18rem;
    white-space: nowrap !important;
    overflow: visible !important;
    vertical-align: top;
}

.admin-rules-table th.admin-rule-column .small,
.admin-rules-table td.admin-rule-column .small {
    white-space: nowrap !important;
}

/* ADDED v2026-06-07.7785: Checkbox/search Friendlies invite selector. */
.friendlies-invite-checkbox-form .friendlies-team-search {
    width: min(100%, 28rem);
}

.friendlies-invite-checkbox-form .friendlies-team-invite {
    display: flex;
    gap: 0.55rem;
    align-items: center;
    cursor: pointer;
}

.friendlies-invite-checkbox-form .friendlies-team-invite input[type="checkbox"] {
    flex: 0 0 auto;
}


/* ADDED v2026-06-08.8039: Calendar date cell stack renders weekday and month/day on separate lines. */
body.app-player .player-calendar-page .table-calendar td.calendar-date-cell .calendar-date-stack,
body.app-player .calendar-container .table-calendar td.calendar-date-cell .calendar-date-stack {
    display: block !important;
    line-height: 1.08 !important;
    white-space: normal !important;
    text-align: left !important;
}
body.app-player .player-calendar-page .table-calendar td.calendar-date-cell .calendar-date-dow,
body.app-player .player-calendar-page .table-calendar td.calendar-date-cell .calendar-date-md,
body.app-player .calendar-container .table-calendar td.calendar-date-cell .calendar-date-dow,
body.app-player .calendar-container .table-calendar td.calendar-date-cell .calendar-date-md {
    display: block !important;
    white-space: nowrap !important;
}

/** CHANGED v2026-06-08.8047
 *  Force the Approvals attention link text itself to black on the light-orange pill.
 *  Some header/nav link rules are loaded later and otherwise keep the anchor text white.
 */
nav a.nav-link.nav-link-attention,
nav a.nav-link.nav-link-attention:link,
nav a.nav-link.nav-link-attention:visited,
nav a.nav-link.nav-link-attention:hover,
nav a.nav-link.nav-link-attention:active,
nav a.nav-link.nav-link-attention:focus {
    color: #000000 !important;
}
nav a.nav-link.nav-link-attention .nav-approval-count {
    color: #000000 !important;
}

/** CHANGED v2026-06-08.8048
 *  Dedicated Approvals attention-link foreground override.
 *  This targets the Approvals anchor class directly so inherited/header link
 *  color rules cannot keep the word "Approvals" white on the light-orange pill.
 */
header nav a.nav-link-approvals.nav-link-attention,
header nav a.nav-link-approvals.nav-link-attention:link,
header nav a.nav-link-approvals.nav-link-attention:visited,
header nav a.nav-link-approvals.nav-link-attention:hover,
header nav a.nav-link-approvals.nav-link-attention:active,
header nav a.nav-link-approvals.nav-link-attention:focus,
body.app-player header nav a.nav-link-approvals.nav-link-attention,
body.app-player header nav a.nav-link-approvals.nav-link-attention:link,
body.app-player header nav a.nav-link-approvals.nav-link-attention:visited,
body.app-player header nav a.nav-link-approvals.nav-link-attention:hover,
body.app-player header nav a.nav-link-approvals.nav-link-attention:active,
body.app-player header nav a.nav-link-approvals.nav-link-attention:focus,
body.player-surface header nav a.nav-link-approvals.nav-link-attention,
body.player-surface header nav a.nav-link-approvals.nav-link-attention:link,
body.player-surface header nav a.nav-link-approvals.nav-link-attention:visited,
body.player-surface header nav a.nav-link-approvals.nav-link-attention:hover,
body.player-surface header nav a.nav-link-approvals.nav-link-attention:active,
body.player-surface header nav a.nav-link-approvals.nav-link-attention:focus,
body.app-admin header nav a.nav-link-approvals.nav-link-attention,
body.app-admin header nav a.nav-link-approvals.nav-link-attention:link,
body.app-admin header nav a.nav-link-approvals.nav-link-attention:visited,
body.app-admin header nav a.nav-link-approvals.nav-link-attention:hover,
body.app-admin header nav a.nav-link-approvals.nav-link-attention:active,
body.app-admin header nav a.nav-link-approvals.nav-link-attention:focus,
body.admin-surface header nav a.nav-link-approvals.nav-link-attention,
body.admin-surface header nav a.nav-link-approvals.nav-link-attention:link,
body.admin-surface header nav a.nav-link-approvals.nav-link-attention:visited,
body.admin-surface header nav a.nav-link-approvals.nav-link-attention:hover,
body.admin-surface header nav a.nav-link-approvals.nav-link-attention:active,
body.admin-surface header nav a.nav-link-approvals.nav-link-attention:focus {
    color: #000000 !important;
    -webkit-text-fill-color: #000000 !important;
}
header nav a.nav-link-approvals.nav-link-attention .nav-approval-count {
    color: #000000 !important;
    -webkit-text-fill-color: #000000 !important;
}

/** CHANGED v2026-06-08.8049
 *  Remove the pending approval corner-dot marker. The light-orange cell
 *  background now carries the pending-approval state by itself.
 */
.pending-game-change-cell::after,
.pending-game-change-cell.pending-game-change-forfeit::after,
.pending-game-change-cell.pending-game-change-void::after,
.pending-game-change-cell.pending-game-change-requires-my-approval::after,
td.pending-game-change-requires-my-approval::after {
    content: none !important;
    display: none !important;
}

/** CHANGED v2026-06-08.8050
 *  Restore the circled dot only for pending approval score cells that are
 *  actionable/clickable for the logged-in player.
 */
.pending-game-change-cell.pending-game-change-requires-my-approval::after,
td.pending-game-change-requires-my-approval::after {
    content: "" !important;
    display: block !important;
    position: absolute;
    top: 0.2rem;
    right: 0.2rem;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 999px;
    background-color: #b45309;
    box-shadow: 0 0 0 1px var(--color-background, #ffffff), 0 0 0 2px #b45309;
    pointer-events: none;
}

/* CHANGED v2026-06-09.8200: Use one stacked, bold profile-link layout on admin and player header surfaces.
 * Admin nav normalization can otherwise treat .nav-link as a horizontal pill.
 */
body.app-admin header .nav-profile-corner .nav-profile-photo-link,
body.app-admin header .nav-profile-corner .nav-profile-photo-link:link,
body.app-admin header .nav-profile-corner .nav-profile-photo-link:visited,
body.app-admin header .nav-profile-corner .nav-profile-photo-link:hover,
body.app-admin header .nav-profile-corner .nav-profile-photo-link:active,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link:link,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link:visited,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link:hover,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link:active,
body.app-player header .nav-profile-corner .nav-profile-photo-link,
body.app-player header .nav-profile-corner .nav-profile-photo-link:link,
body.app-player header .nav-profile-corner .nav-profile-photo-link:visited,
body.app-player header .nav-profile-corner .nav-profile-photo-link:hover,
body.app-player header .nav-profile-corner .nav-profile-photo-link:active,
body.player-surface header .nav-profile-corner .nav-profile-photo-link,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:link,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:visited,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:hover,
body.player-surface header .nav-profile-corner .nav-profile-photo-link:active {
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0.12rem !important;
    padding: 0.1rem !important;
    min-height: 0 !important;
    border-radius: 0.45rem !important;
    line-height: 1 !important;
    color: #fff !important;
    font-weight: 700 !important;
    text-align: center !important;
    text-decoration: none !important;
}

body.app-admin header .nav-profile-corner .nav-profile-first-name,
body.admin-surface header .nav-profile-corner .nav-profile-first-name,
body.app-player header .nav-profile-corner .nav-profile-first-name,
body.player-surface header .nav-profile-corner .nav-profile-first-name {
    display: block !important;
    max-width: 4.5rem !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    color: #fff !important;
 /** CHANGED v2026-06-09.8202: match visible main nav-link text size on admin/player headers. */


    text-align: center !important;
}



/* CHANGED v2026-06-09.8203: Final profile-link parity override.
 * Older admin-theme bundles still carried a compact 0.72rem profile label rule.
 * Keep the avatar/name stacked, but make the first name the same visible size
 * as the main header navigation links on both admin and player surfaces.
 */
body.app-admin header .nav-profile-corner .nav-profile-first-name,
body.admin-surface header .nav-profile-corner .nav-profile-first-name,
body.app-player header .nav-profile-corner .nav-profile-first-name,
body.player-surface header .nav-profile-corner .nav-profile-first-name {
    font-size: 1.25rem !important;
    font-weight: 700 !important;
    line-height: 1.05 !important;
}

/* CHANGED v2026-06-09.8204: Force shared header profile-name typography parity after all legacy theme bundles. */
body.app-admin header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.app-player header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.player-surface header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name {
    font-size: 1.25rem !important;
    font-weight: 700 !important;
    line-height: 1.05 !important;
}

/** CHANGED v2026-06-09.8206
 *  Profile-link nav parity: the profile first-name label uses the same base
 *  text size/weight as the main header nav links. Keep the avatar stacked
 *  above the label without promoting the name to oversized display text.
 */
body.app-admin header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.admin-surface header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.app-player header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.player-surface header .nav-profile-corner .nav-profile-photo-link .nav-profile-first-name,
body.app-admin header .nav-profile-corner .nav-profile-first-name,
body.admin-surface header .nav-profile-corner .nav-profile-first-name,
body.app-player header .nav-profile-corner .nav-profile-first-name,
body.player-surface header .nav-profile-corner .nav-profile-first-name {
    color: var(--color-white) !important;
    font-size: 1rem !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;
}



/** CHANGED v2026-06-09.8238
 *  Keep compact void/status badges on one line in narrow score columns.
 *  The score column may be tight during pending/admin status rendering, but
 *  status words such as "void" must never split across letters.
 */
.matches-table .game-score-stack .game-status-badge,
.match-layout-table .game-score-stack .game-status-badge,
:where(.matches-container, .player-page-container) .game-score-stack .game-status-badge,
.matches-table .game-score-stack .void,
.match-layout-table .game-score-stack .void,
:where(.matches-container, .player-page-container) .game-score-stack .void,
.matches-table.match-layout-table span.input-score.pending-void-status,
.player-matches-page span.input-score.pending-void-status,
body.app-player .matches-table.match-layout-table span.input-score.pending-void-status,
body.app-player .player-matches-page span.input-score.pending-void-status {
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    min-width: max-content !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .game-status-badge,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .void.input-score {
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    min-width: max-content !important;
    width: auto !important;
}


/** ADDED v2026-06-10.8257
 *  Matches page full-width player content alignment.
 *
 *  The shared player shell adds inline padding at mainbody and page-container
 *  levels. On the Matches page that created a visible stepped indentation:
 *  header/nav, then page title, then match table. Keep the normal body gutter,
 *  but remove the extra inner padding so the title/rule and match sections use
 *  the same available width.
 */
body.app-player .mainbody {
    padding-inline: 0;
}

body.app-player .player-page-container {
    padding-inline: 0;
}


/** ADDED v2026-06-10.8258
 *  Purpose: Keep the page title/rule and first-level page content on the same
 *  horizontal grid. Earlier desktop normalization re-centered admin and player
 *  page containers inside mainbody, creating a stepped layout where title,
 *  search/actions, and cards each started at different left edges.
 *
 *  Scope: layout alignment only. Does not alter tables, scoring, scheduler,
 *  approval, lifecycle, or authorization behavior.
 */
body.app-admin :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell, .admin-tool-page),
body.app-player :where(.player-page-container) {
  width: 100%;
  max-width: 100%;
  margin-left: 0;
  margin-right: 0;
}

@media (min-width: 1024px) {
  body.app-admin :where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .admin-action-shell, .admin-tool-page, .admin-report-chrome),
  body.app-player :where(.player-page-container) {
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    margin-right: 0;
  }
}

body.app-admin :where(.page-title, .page-title-rule, .admin-inline-search, .admin-subnav-multilevel, .divborder, details),
body.app-player :where(.page-title, .page-title-rule, .table-container, .divborder, details) {
  max-width: 100%;
  margin-left: 0;
  margin-right: 0;
}

/* ADDED v2026-06-10.8260
   Player first-level section edge alignment mirror for the combined CSS bundle.
   See public/css/player/player-layout.css for rationale.
*/
body.app-player :where(.player-page.player-layout-page, .ui-player-page, .player-page-container),
body.player-surface :where(.player-page.player-layout-page, .ui-player-page, .player-page-container) {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

body.app-player :where(.player-ajax-panel, .player-ajax-panel-body, .table-container, .ui-table-container, .ui-player-table-wrap, .stats-table-container, .component-player-stats-table-wrap),
body.player-surface :where(.player-ajax-panel, .player-ajax-panel-body, .table-container, .ui-table-container, .ui-player-table-wrap, .stats-table-container, .component-player-stats-table-wrap) {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

body.app-player :where(.stats-table-toolbar),
body.player-surface :where(.stats-table-toolbar) {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

/* ADDED v2026-06-10.8263: Flush section-card titles to their borders.
 * Purpose: remove the visible blank band above first headings in card-like
 * sections, especially Approvals, while preserving normal internal row/table
 * spacing below the title.
 */
.approvals-container .approvals-section-group {
  padding-top: 0.16rem !important;
}

.approvals-container .approvals-section-group > h2:first-child,
.approvals-container .approvals-section-group > h3:first-child,
.divborder > h2:first-child,
.divborder > h3:first-child,
.admin-dashboard-section > h2:first-child,
.admin-dashboard-section > h3:first-child,
.admin-diagnostics-container .admin-diagnostics-group > h2:first-child,
.admin-diagnostics-container .admin-diagnostics-group > h3:first-child,
.admin-development-category > h2:first-child,
.admin-development-category > h3:first-child,
.ui-panel > h2:first-child,
.ui-panel > h3:first-child,
.ui-card > h2:first-child,
.ui-card > h3:first-child {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

.approvals-container .approvals-section-group > h2:first-child,
.approvals-container .approvals-section-group > h3:first-child {
  margin-bottom: 0.55rem !important;
  line-height: 1.2;
}

/* ADDED v2026-06-10.8264: Sitewide card title top-spacing normalization.
 * Purpose: apply the v8263 Approvals title-spacing fix to similar card-like
 * sections across player, admin, and sysadmin pages. When a bordered/card
 * section starts with a title, the title should sit near the section border
 * instead of appearing after a visible blank band. Internal row/table spacing
 * below titles is intentionally preserved.
 */
body.app-admin :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-dupr-step-card, .admin-section-card, .admin-nav-section-group, .approvals-section-group, .ui-card, .ui-panel):has(> :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title):first-child),
body.admin-surface :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-dupr-step-card, .admin-section-card, .admin-nav-section-group, .approvals-section-group, .ui-card, .ui-panel):has(> :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title):first-child),
body.app-player :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .approvals-section-group, .ui-card, .ui-panel):has(> :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title, .component-player-card-title-final, .player-card-header):first-child),
body.player-surface :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .approvals-section-group, .ui-card, .ui-panel):has(> :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title, .component-player-card-title-final, .player-card-header):first-child) {
  padding-top: 0.45rem !important;
}

body.app-admin :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-dupr-step-card, .admin-section-card, .admin-nav-section-group, .approvals-section-group, .ui-card, .ui-panel) > :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title):first-child,
body.admin-surface :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-dupr-step-card, .admin-section-card, .admin-nav-section-group, .approvals-section-group, .ui-card, .ui-panel) > :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title):first-child,
body.app-player :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .approvals-section-group, .ui-card, .ui-panel) > :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title, .component-player-card-title-final, .player-card-header):first-child,
body.player-surface :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .approvals-section-group, .ui-card, .ui-panel) > :where(h1, h2, h3, h4, .ui-card-title, .ui-panel-header, .ui-panel-title, .component-player-card-title-final, .player-card-header):first-child {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

body.app-admin :where(.ui-panel) > .ui-panel-header:first-child,
body.admin-surface :where(.ui-panel) > .ui-panel-header:first-child,
body.app-player :where(.ui-panel) > .ui-panel-header:first-child,
body.player-surface :where(.ui-panel) > .ui-panel-header:first-child {
  margin-top: 0 !important;
  padding-top: 0 !important;
}



/* ADDED v2026-06-10.8265: Sitewide compact section padding normalization.
 * Purpose: make bordered/card section headers use the same compact padding
 * density as the tighter row-style sections instead of leaving a large blank
 * band above/beside titles. This affects section shells only; table cells,
 * buttons, form controls, and workflow logic are unchanged.
 */
:root {
  --ui-section-compact-padding-y: 0.45rem;
  --ui-section-compact-padding-x: 0.65rem;
  --ui-section-compact-padding: var(--ui-section-compact-padding-y) var(--ui-section-compact-padding-x);
}

body.app-admin :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-panel, .admin-section, .admin-section-card, .admin-report-card, .admin-filter-panel, .admin-dashboard-card, .admin-details-card, .admin-dupr-step-card, .admin-nav-section-group, .admin-health-details, details.admin-health-details, details.admin-section, details.admin-details-section, details.admin-sysadmin-details, .ui-admin-card, .ui-admin-panel, .ui-admin-section, .ui-card, .ui-panel, .approvals-section-group),
body.admin-surface :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-panel, .admin-section, .admin-section-card, .admin-report-card, .admin-filter-panel, .admin-dashboard-card, .admin-details-card, .admin-dupr-step-card, .admin-nav-section-group, .admin-health-details, details.admin-health-details, details.admin-section, details.admin-details-section, details.admin-sysadmin-details, .ui-admin-card, .ui-admin-panel, .ui-admin-section, .ui-card, .ui-panel, .approvals-section-group),
body.app-player :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .ui-card, .ui-panel, .approvals-section-group),
body.player-surface :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .ui-card, .ui-panel, .approvals-section-group) {
  padding: var(--ui-section-compact-padding) !important;
}

body.app-admin :where(.admin-lazy-details, details.admin-health-details, details.admin-section, details.admin-details-section, details.admin-sysadmin-details) > summary,
body.admin-surface :where(.admin-lazy-details, details.admin-health-details, details.admin-section, details.admin-details-section, details.admin-sysadmin-details) > summary,
body.app-player :where(details.divborder, details.player-card, details.player-section-card) > summary,
body.player-surface :where(details.divborder, details.player-card, details.player-section-card) > summary {
  padding: var(--ui-section-compact-padding) !important;
}

body.app-admin :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-panel, .admin-section, .admin-section-card, .admin-report-card, .admin-filter-panel, .admin-dashboard-card, .admin-details-card, .admin-dupr-step-card, .admin-nav-section-group, .admin-health-details, .ui-admin-card, .ui-admin-panel, .ui-admin-section, .ui-card, .ui-panel, .approvals-section-group) > :where(h1,h2,h3,h4,.ui-card-title,.ui-panel-header,.ui-panel-title):first-child,
body.admin-surface :where(.divborder, .admin-dashboard-section, .admin-development-category, .admin-diagnostics-group, .admin-card, .admin-panel, .admin-section, .admin-section-card, .admin-report-card, .admin-filter-panel, .admin-dashboard-card, .admin-details-card, .admin-dupr-step-card, .admin-nav-section-group, .admin-health-details, .ui-admin-card, .ui-admin-panel, .ui-admin-section, .ui-card, .ui-panel, .approvals-section-group) > :where(h1,h2,h3,h4,.ui-card-title,.ui-panel-header,.ui-panel-title):first-child,
body.app-player :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .ui-card, .ui-panel, .approvals-section-group) > :where(h1,h2,h3,h4,.ui-card-title,.ui-panel-header,.ui-panel-title,.component-player-card-title-final,.player-card-header):first-child,
body.player-surface :where(.divborder, .player-section-card, .player-card, .team-profile-member-card, .calendar-team-legend, .ui-card, .ui-panel, .approvals-section-group) > :where(h1,h2,h3,h4,.ui-card-title,.ui-panel-header,.ui-panel-title,.component-player-card-title-final,.player-card-header):first-child {
  margin-top: 0 !important;
  padding-top: 0 !important;
}

/* ADDED v2026-06-10.8267: Compact Sysadmin lazy-details open-body spacing.
 * v8266 compacted the Sysadmin details summary row, but open lazy sections still
 * inherited body top padding plus default first-child margins. That made open
 * Sysadmin sections keep a visibly wider band than other compact sections.
 */
body.app-admin :where(details.admin-lazy-details.admin-sysadmin-details[open]) > .admin-lazy-details-body,
body.admin-surface :where(details.admin-lazy-details.admin-sysadmin-details[open]) > .admin-lazy-details-body {
    padding-top: 0 !important;
}

body.app-admin :where(details.admin-lazy-details.admin-sysadmin-details[open]) > .admin-lazy-details-body > :first-child,
body.admin-surface :where(details.admin-lazy-details.admin-sysadmin-details[open]) > .admin-lazy-details-body > :first-child {
    margin-top: 0 !important;
}
/* ADDED v2026-06-10.8268: Add mobile-only breathing room between the main-nav SMS/chat icon and Calendar icon.
 * Scope stays on the player main navigation app-link group so Pool-heading icons and desktop nav density are unchanged. */
@media (max-width: 720px) {
    body.app-player header nav .app-link-group-nav .js-sms-compose-link + .app-icon-link,
    body.app-player nav .app-link-group-nav .js-sms-compose-link + .app-icon-link {
        margin-left: 0.34rem !important;
    }
}

/* ADDED v2026-06-10.8274: Compact nested Facilities subsections inside Sysadmin.
 * The Facilities lazy section renders its own nested details cards. Those child
 * cards were receiving both outer card padding and summary padding, creating a
 * visibly wider band than normal compact Sysadmin sections.
 */
body.app-admin :where(details.admin-sysadmin-facilities-details) .admin-lazy-details-body > :where(details.admin-health-details, details.admin-facilities-details),
body.admin-surface :where(details.admin-sysadmin-facilities-details) .admin-lazy-details-body > :where(details.admin-health-details, details.admin-facilities-details) {
    padding: 0 !important;
    margin: 0.45rem 0 !important;
}

body.app-admin :where(details.admin-sysadmin-facilities-details) .admin-lazy-details-body > :where(details.admin-health-details, details.admin-facilities-details) > summary,
body.admin-surface :where(details.admin-sysadmin-facilities-details) .admin-lazy-details-body > :where(details.admin-health-details, details.admin-facilities-details) > summary {
    display: block;
    margin: 0 !important;
    padding: var(--ui-section-compact-padding) !important;
}

/* ADDED v2026-06-10.8275: Calendar availability shortcuts dropdown. */
.player-calendar-page .calendar-shortcuts-bar {
    box-sizing: border-box;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.36rem;
    max-width: 100%;
    margin: 0.18rem 0 0.42rem;
}

.player-calendar-page .calendar-shortcuts-label {
    font-weight: 600;
    line-height: 1.2;
}

.player-calendar-page .calendar-shortcut-select {
    min-width: min(100%, 12rem);
    max-width: 100%;
}

.player-calendar-page .calendar-shortcut-apply-button {
    white-space: nowrap;
}

@media (max-width: 720px) {
    .player-calendar-page .calendar-shortcuts-bar {
        align-items: stretch;
    }
    .player-calendar-page .calendar-shortcuts-label {
        width: 100%;
    }
    .player-calendar-page .calendar-shortcut-select {
        flex: 1 1 11rem;
    }
}

/* ADDED v2026-06-10.8280: Add Changelog Entry Page input displays uppercase. */
#sysadmin-add-changelog table.admin-changelog-entry-table-direct input[data-changelog-page-input],
table.admin-changelog-entry-table input[data-changelog-page-input] {
  text-transform: uppercase !important;
}

/* ADDED v2026-06-10.8286: Calendar team identity colours now support variable-size rosters. */
.calendar-player-color {
    --calendar-player-color: #cccccc;
}
.table-calendar .calendar-clickable-cell > .calendar-player-band {
    display: block !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 100% !important;
    height: 0.48rem !important;
    min-height: 0.48rem !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    line-height: 1.1 !important;
    background-color: var(--color-white) !important;
}
.table-calendar .calendar-clickable-cell > .calendar-player-band.is-available,
.calendar-team-legend-swatch.calendar-player-color.is-available {
    background-color: var(--calendar-player-color) !important;
}
.calendar-overlap .calendar-player-band.is-available {
    filter: saturate(1.18) brightness(0.98) contrast(1.04);
    box-shadow: inset 0 0 0 1px var(--color-white);
    font-weight: 600;
}
.calendar-container .calendar-team-legend-players-cell {
    white-space: normal !important;
}
.calendar-container .calendar-team-legend-players-cell .calendar-team-legend-player {
    display: inline-flex !important;
    align-items: center !important;
    margin-right: 0.7rem !important;
    white-space: nowrap !important;
}



/* ADDED v2026-06-10.8289: Keep variable-size Calendar team legend in true table layout with vertically aligned roster columns. */
.calendar-team-legend.calendar-team-legend-table {
    display: table;
    border-collapse: collapse;
}
.calendar-team-legend-table .calendar-team-legend-line {
    display: table-row;
}
.calendar-team-legend-table .calendar-team-legend-team-cell,
.calendar-team-legend-table .calendar-team-legend-player-cell {
    display: table-cell;
    vertical-align: middle;
    white-space: nowrap;
}
.calendar-team-legend-table .calendar-team-legend-player-cell-empty {
    min-width: 8rem;
}


/* CHANGED v2026-06-10.8290: Calendar hour headers use left-aligned am/pm labels. */
.table-calendar th.calendar-hour-header {
    text-align: left !important;
    padding-left: 0.2rem !important;
    padding-right: 0 !important;
    white-space: nowrap !important;
}
.table-calendar th.calendar-hour-header .calendar-hour-header-label {
    display: inline-block !important;
    line-height: 1.1 !important;
}


/* ADDED v2026-06-10.8291: make Calendar 2+ overlap visible after variable team/player bands. */
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell.calendar-overlap {

    background: var(--calendar-overlap-bg, #edf0f2) !important;
    background-color: var(--calendar-overlap-bg, #edf0f2) !important;
    box-shadow:
        inset 0 0 0 2px var(--calendar-overlap-outline, #4a4a4a),
        0 0 4px rgba(74, 74, 74, 0.35) !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after {
    content: "2+" !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    position: absolute !important;
    top: 2px !important;
    left: 2px !important;
    z-index: 9 !important;
    min-width: 1.35rem !important;
    height: 1rem !important;
    padding: 0 0.25rem !important;
    border: 1px solid var(--calendar-overlap-outline, #4a4a4a) !important;
    border-radius: 999px !important;
    background: var(--color-white, #fff) !important;
    color: var(--color-text, #111) !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    pointer-events: none !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available) {
    background: transparent !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available {
    filter: saturate(1.2) brightness(0.98) contrast(1.04);
    box-shadow: inset 0 0 0 1px var(--color-white, #fff);
}
@media (prefers-color-scheme: dark) {
    .table-calendar .calendar-clickable-cell.calendar-overlap,
    .table-calendar td.calendar-clickable-cell.calendar-overlap {
        background: var(--calendar-overlap-bg-dark, #2f3338) !important;
        background-color: var(--calendar-overlap-bg-dark, #2f3338) !important;
        box-shadow:
            inset 0 0 0 2px var(--calendar-overlap-outline-dark, #8f969e),
            0 0 4px rgba(143, 150, 158, 0.45) !important;
    }
    .table-calendar .calendar-clickable-cell.calendar-overlap::after,
    .table-calendar td.calendar-clickable-cell.calendar-overlap::after {
        border-color: var(--calendar-overlap-outline-dark, #8f969e) !important;
        background: #1f2328 !important;
        color: #f2f4f6 !important;
    }
}


/* ADDED v2026-06-10.8292: Calendar 2+ overlap uses a real DOM badge and strong visible cell treatment. */
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell.calendar-overlap {

    background-color: #eef1f4 !important;
    outline: 2px solid #2f3a45 !important;
    outline-offset: -2px !important;
    box-shadow: inset 0 0 0 2px #2f3a45, 0 0 0 1px rgba(47, 58, 69, 0.25) !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after {
    content: none !important;
    display: none !important;
}
.table-calendar .calendar-clickable-cell > .calendar-overlap-badge,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-badge {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    position: absolute !important;
    top: 2px !important;
    left: 2px !important;
    z-index: 30 !important;
    min-width: 1.45rem !important;
    height: 1.1rem !important;
    padding: 0 0.25rem !important;
    border: 1px solid #2f3a45 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #111111 !important;
    font-size: 0.72rem !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    pointer-events: none !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available) {
    background-color: transparent !important;
}
@media (prefers-color-scheme: dark) {
    .table-calendar .calendar-clickable-cell.calendar-overlap,
    .table-calendar td.calendar-clickable-cell.calendar-overlap {
        background-color: #2f3338 !important;
        outline-color: #aeb4bb !important;
        box-shadow: inset 0 0 0 2px #aeb4bb, 0 0 0 1px rgba(174, 180, 187, 0.35) !important;
    }
    .table-calendar .calendar-clickable-cell > .calendar-overlap-badge,
    .table-calendar td.calendar-clickable-cell > .calendar-overlap-badge {
        border-color: #aeb4bb !important;
        background: #1f2328 !important;
        color: #f2f4f6 !important;
    }
}

/* CHANGED v2026-06-10.8293: Calendar overlap is a highlighted/clickable cell state; no literal 2+ badge. */
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell.calendar-overlap {
    position: relative !important;
    cursor: pointer !important;
    background: var(--calendar-overlap-bg, #edf0f2) !important;
    background-color: var(--calendar-overlap-bg, #edf0f2) !important;
    box-shadow: inset 0 0 0 2px var(--calendar-overlap-outline, #4a4a4a) !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell > .calendar-overlap-badge,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-badge {
    content: none !important;
    display: none !important;
}
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available) {
    background: transparent !important;
    background-color: transparent !important;
}
@media (prefers-color-scheme: dark) {
    .table-calendar .calendar-clickable-cell.calendar-overlap,
    .table-calendar td.calendar-clickable-cell.calendar-overlap {
        background: var(--calendar-overlap-bg-dark, #2f3338) !important;
        background-color: var(--calendar-overlap-bg-dark, #2f3338) !important;
        box-shadow: inset 0 0 0 2px var(--calendar-overlap-outline-dark, #8f969e) !important;
    }
}

/* CHANGED v2026-06-10.8294: Calendar overlap highlight must remain visible on desktop after variable player bands.
   Use a high-contrast selected-slot treatment without rendering a literal 2+ badge. */
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap {
    position: relative !important;
    cursor: pointer !important;
    background: #fff3bf !important;
    background-color: #fff3bf !important;
    outline: 3px solid #2f3a45 !important;
    outline-offset: -3px !important;
    box-shadow:
        inset 0 0 0 2px #ffffff,
        inset 0 0 0 5px #2f3a45,
        0 0 0 1px rgba(47, 58, 69, 0.28) !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::before,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before {
    content: "" !important;
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: 24 !important;
    border: 3px solid #2f3a45 !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::after,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
body.app-player .table-calendar .calendar-clickable-cell > .calendar-overlap-badge,
body.app-player .table-calendar td.calendar-clickable-cell > .calendar-overlap-badge,
.table-calendar .calendar-clickable-cell > .calendar-overlap-badge,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-badge {
    content: none !important;
    display: none !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available) {
    background: rgba(255, 243, 191, 0.55) !important;
    background-color: rgba(255, 243, 191, 0.55) !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available {
    filter: saturate(1.32) brightness(0.96) contrast(1.08);
}
@media (prefers-color-scheme: dark) {
    body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap,
    body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap,
    .table-calendar td.calendar-clickable-cell.calendar-overlap,
    .table-calendar .calendar-clickable-cell.calendar-overlap {
        background: #3b3420 !important;
        background-color: #3b3420 !important;
        outline-color: #f2c94c !important;
        box-shadow:
            inset 0 0 0 2px #1f2328,
            inset 0 0 0 5px #f2c94c,
            0 0 0 1px rgba(242, 201, 76, 0.35) !important;
    }
    body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::before,
    body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::before,
    .table-calendar td.calendar-clickable-cell.calendar-overlap::before,
    .table-calendar .calendar-clickable-cell.calendar-overlap::before {
        border-color: #f2c94c !important;
    }
    body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
    body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
    .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
    .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available) {
        background: rgba(59, 52, 32, 0.7) !important;
        background-color: rgba(59, 52, 32, 0.7) !important;
    }
}



/* CHANGED v2026-06-10.8295: Calendar overlap highlight targets a data attribute as well as the class so desktop and mobile render the same selected-slot state. */
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {


    background: #fff0a6 !important;
    background-color: #fff0a6 !important;
    outline: 3px solid #111827 !important;
    outline-offset: -3px !important;
    box-shadow:
        inset 0 0 0 2px #ffffff,
        inset 0 0 0 5px #111827,
        0 0 0 1px rgba(17, 24, 39, 0.35) !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before {
    content: "" !important;
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: 50 !important;
    border: 3px solid #111827 !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar .calendar-clickable-cell > .calendar-overlap-badge,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-badge {
    content: none !important;
    display: none !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available) {
    background: rgba(255, 240, 166, 0.72) !important;
    background-color: rgba(255, 240, 166, 0.72) !important;
}
@media (prefers-color-scheme: dark) {
    .table-calendar td.calendar-clickable-cell.calendar-overlap,
    .table-calendar .calendar-clickable-cell.calendar-overlap,
    .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
    .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {
        background: #3d3414 !important;
        background-color: #3d3414 !important;
        outline-color: #f2c94c !important;
        box-shadow:
            inset 0 0 0 2px #1f2328,
            inset 0 0 0 5px #f2c94c,
            0 0 0 1px rgba(242, 201, 76, 0.35) !important;
    }
    .table-calendar td.calendar-clickable-cell.calendar-overlap::before,
    .table-calendar .calendar-clickable-cell.calendar-overlap::before,
    .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
    .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before {
        border-color: #f2c94c !important;
    }
    .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
    .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
    .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available),
    .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available) {
        background: rgba(61, 52, 20, 0.74) !important;
        background-color: rgba(61, 52, 20, 0.74) !important;
    }
}


/* CHANGED v2026-06-10.8296: Calendar overlap highlight uses a non-text overlay so desktop rendering cannot lose the visible selected-slot state behind player colour bands. */


.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-overlap-highlight,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-overlap-highlight,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-overlap-highlight,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-overlap-highlight {
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: 100 !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
    border: 3px solid #111827 !important;
    background: rgba(255, 240, 166, 0.22) !important;
    box-shadow: inset 0 0 0 2px rgba(255,255,255,0.95) !important;
}

@media (prefers-color-scheme: dark) {
    .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-overlap-highlight,
    .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-overlap-highlight,
    .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-overlap-highlight,
    .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-overlap-highlight {
        border-color: #f2c94c !important;
        background: rgba(242, 201, 76, 0.18) !important;
        box-shadow: inset 0 0 0 2px rgba(31,35,40,0.95) !important;
    }
}

/* CHANGED v2026-06-10.8297: Restore 2+ Scheduler target and use a thin black selected-slot border. */
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {


    border: 1px solid #000 !important;


    box-shadow: inset 0 0 0 1px #000 !important;
    background: transparent !important;
    background-color: transparent !important;
}

.table-calendar td.calendar-clickable-cell > .calendar-overlap-highlight,
.table-calendar .calendar-clickable-cell > .calendar-overlap-highlight {
    display: none !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band {
    position: relative !important;
    z-index: 20 !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {







    z-index: 250 !important;
    width: auto !important;
    min-width: 1.45rem !important;
    height: 1.1rem !important;
    padding: 0 0.25rem !important;





    font-weight: 800 !important;



    box-shadow: 0 1px 3px rgba(0,0,0,0.25) !important;

}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge:hover,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge:hover,
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge:focus-visible,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge:focus-visible {
    outline: 2px solid #000 !important;
    outline-offset: 1px !important;
}



/* CHANGED v2026-06-10.8299: Make Calendar schedulable-cell border very thin and show the Scheduler clock glyph target. */
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {
    border: 1px solid #000 !important;


}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {
    min-width: 1.15rem !important;
    width: 1.15rem !important;
    height: 1.15rem !important;



    font-size: 0.72rem !important;

}


/* CHANGED v2026-06-10.8299: Mobile Calendar header/date sizing and thinner schedulable slot treatment. */
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {

    border-color: var(--color-table-border, #bdbdbd) !important;
    outline: 1px solid #000 !important;
    outline-offset: -1px !important;

}
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before {
    content: none !important;
    display: none !important;
    border: 0 !important;
    box-shadow: none !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {







    z-index: 1000 !important;

















}
@media (max-width: 700px) {
    .table-calendar th.calendar-hour-header {
        text-align: center !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    .table-calendar th.calendar-hour-header .calendar-hour-header-label {
        display: block !important;
        width: 100% !important;
        text-align: center !important;
    }
    .table-calendar th.calendar-hour-header .calendar-hour-ampm {
        display: none !important;
    }
    body.app-player .player-calendar-page .table-calendar td.calendar-date-cell,
    body.app-player .calendar-container .table-calendar td.calendar-date-cell,
    body.app-player .player-calendar-page .table-calendar td.datepad,
    body.app-player .calendar-container .table-calendar td.datepad {
        font-size: 0.78rem !important;
        line-height: 1.02 !important;
        padding-left: 0.1rem !important;
        padding-right: 0.05rem !important;
    }
    body.app-player .player-calendar-page .table-calendar td.calendar-date-cell .calendar-date-stack,
    body.app-player .calendar-container .table-calendar td.calendar-date-cell .calendar-date-stack {
        line-height: 1.02 !important;
    }
}


/* CHANGED v2026-06-10.8300: Calendar overlap visual cleanup.
   Use a true thin inner line instead of stacked border/outline rules, keep
   the scheduler clock as a visible upper-right hit target when a match-specific
   scheduler badge exists, and make mobile hour/date labels fit. */
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {

    border-color: var(--color-table-border, #bdbdbd) !important;

    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.72) !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
}

@media (max-width: 900px) {



    .table-calendar td.calendar-date-cell,
    .table-calendar td.datepad {

        line-height: 1.0 !important;



    }
    .table-calendar td.calendar-date-cell .calendar-date-stack,
    .table-calendar td.datepad .calendar-date-stack,
    .table-calendar td.calendar-date-cell .calendar-date-dow,
    .table-calendar td.calendar-date-cell .calendar-date-md,
    .table-calendar td.datepad .calendar-date-dow,
    .table-calendar td.datepad .calendar-date-md {


        line-height: 1.0 !important;

    }
}


/* CHANGED v2026-06-10.8301: Calendar schedulable cells use one thin border only; disable legacy thick overlay/pseudo borders. */
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {
    position: relative !important;
    border: 1px solid #000 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-highlight,
.table-calendar .calendar-clickable-cell > .calendar-overlap-highlight {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {







    z-index: 2147483000 !important;





    border: 1px solid #000 !important;



    font-size: 0.68rem !important;






    box-shadow: 0 1px 2px rgba(0,0,0,0.25) !important;

}
@media (max-width: 900px) {



    .table-calendar td.calendar-date-cell,
    .table-calendar td.datepad {
        font-size: 0.72rem !important;
        line-height: 1 !important;
        padding-left: 0.05rem !important;
        padding-right: 0.05rem !important;

    }
    .table-calendar td.calendar-date-cell .calendar-date-stack,
    .table-calendar td.datepad .calendar-date-stack,
    .table-calendar td.calendar-date-cell .calendar-date-dow,
    .table-calendar td.calendar-date-cell .calendar-date-md,
    .table-calendar td.datepad .calendar-date-dow,
    .table-calendar td.datepad .calendar-date-md {

        font-size: 0.72rem !important;
        line-height: 1 !important;

    }
}

/* CHANGED v2026-06-10.8302: Calendar overlap cells use a child frame for a very thin visual border; TD borders/legacy overlays are neutralized. */
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {





    background: transparent !important;
    background-color: transparent !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::before,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::before,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before,
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::after,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::after,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-highlight,
.table-calendar .calendar-clickable-cell > .calendar-overlap-highlight {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-overlap-frame,
.table-calendar .calendar-clickable-cell > .calendar-overlap-frame {
    display: none !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-overlap-frame,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-overlap-frame,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-overlap-frame,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-overlap-frame {
    display: block !important;
    position: absolute !important;
    inset: 1px !important;
    z-index: 180 !important;
    pointer-events: none !important;
    box-sizing: border-box !important;
    border: 1px solid rgba(0,0,0,0.72) !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {




    top: 2px !important;
    right: 2px !important;

    z-index: 500 !important;
















    box-shadow: 0 1px 2px rgba(0,0,0,0.20) !important;

}
@media (max-width: 900px) {



    .table-calendar td.calendar-date-cell,
    .table-calendar td.datepad {
        font-size: 0.68rem !important;
        line-height: 0.98 !important;
        padding-left: 0.03rem !important;
        padding-right: 0.03rem !important;
        white-space: normal !important;
    }
    .table-calendar td.calendar-date-cell .calendar-date-stack,
    .table-calendar td.datepad .calendar-date-stack,
    .table-calendar td.calendar-date-cell .calendar-date-dow,
    .table-calendar td.calendar-date-cell .calendar-date-md,
    .table-calendar td.datepad .calendar-date-dow,
    .table-calendar td.datepad .calendar-date-md {
        display: block !important;
        font-size: 0.68rem !important;
        line-height: 0.98 !important;
        white-space: normal !important;
    }
}


/* CHANGED v2026-06-10.8303: final Calendar schedulable-slot visual reset.
   Draw only a sub-pixel inner frame, keep player colour bands flush, and keep
   the Scheduler clock as a top-right hit target when a badge exists. */
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {


    border: 1px solid var(--color-table-border, #bdbdbd) !important;

    box-shadow: inset 0 0 0 0.5px rgba(0,0,0,0.88) !important;
    background: transparent !important;
    background-color: transparent !important;
}

body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band {
    position: relative !important;
    z-index: 20 !important;
    box-shadow: none !important;
    border: 0 !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available {
    box-shadow: none !important;
    border: 0 !important;
    filter: saturate(1.08) brightness(0.99) contrast(1.02) !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {







    z-index: 2147483640 !important;

















    box-shadow: 0 1px 2px rgba(0,0,0,0.2) !important;

}



/* CHANGED v2026-06-10.8304: final Calendar scheduler-cell cleanup.
   Bordered cells must always have a Scheduler clock target; draw one thin border,
   keep adjacent selected cells flush, and prevent player bands from spilling or
   creating white inset gaps inside selected cells. */

.table-calendar td.calendar-clickable-cell {
    position: relative !important;
    padding: 0 !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {


    border: 1px solid rgba(0,0,0,0.72) !important;


    background: transparent !important;
    background-color: transparent !important;

}

body.app-player .table-calendar td.calendar-clickable-cell > .calendar-player-band,
body.app-player .table-calendar .calendar-clickable-cell > .calendar-player-band,
.table-calendar td.calendar-clickable-cell > .calendar-player-band,
.table-calendar .calendar-clickable-cell > .calendar-player-band {
    display: block !important;
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    background-clip: border-box !important;
}
body.app-player .table-calendar td.calendar-clickable-cell > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell > .calendar-player-band.is-available,
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available {
    background-color: var(--calendar-player-color) !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
    filter: none !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {














    border: 1px solid rgba(0,0,0,0.75) !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #000 !important;
    font-size: 0.66rem !important;
    line-height: 1 !important;
    text-align: center !important;




    box-shadow: 0 1px 2px rgba(0,0,0,0.18) !important;
    touch-action: manipulation !important;
}
@media (max-width: 900px) {
    .table-calendar th.calendar-hour-header {
        text-align: center !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
    .table-calendar th.calendar-hour-header .calendar-hour-header-label,
    .table-calendar th.calendar-hour-header .calendar-hour-number {
        display: block !important;
        width: 100% !important;
        text-align: center !important;
        margin-left: auto !important;
        margin-right: auto !important;
    }
    .table-calendar th.calendar-hour-header .calendar-hour-ampm {
        display: none !important;
    }
    .table-calendar td.calendar-date-cell,
    .table-calendar td.datepad,
    .table-calendar td.calendar-date-cell .calendar-date-stack,
    .table-calendar td.datepad .calendar-date-stack,
    .table-calendar td.calendar-date-cell .calendar-date-dow,
    .table-calendar td.calendar-date-cell .calendar-date-md,
    .table-calendar td.datepad .calendar-date-dow,
    .table-calendar td.datepad .calendar-date-md {
        font-size: 0.68rem !important;
        line-height: 0.98 !important;
        white-space: normal !important;
    }
}



/* ADDED v8305: first-login welcome SweetAlert layout */
.player-welcome-alert-html {
  text-align: left;
}
.player-welcome-alert-html ul {
  margin: 0.75rem 0 0.75rem 1.25rem;
  padding: 0;
}
.player-welcome-alert-html li {
  margin: 0.25rem 0;
}
.player-welcome-links {
  margin: 0.85rem 0;
  font-weight: 700;
}
.player-welcome-check {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  margin: 0.6rem 0;
  text-align: left;
}
.player-welcome-check input {
  flex: 0 0 auto;
  margin-top: 0.2rem;
}
.swal2-popup.player-welcome-alert-popup .swal2-confirm:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}


/* CHANGED v2026-06-11.8310: Calendar schedulable-cell highlighting must not repaint unavailable player bands.
   Only actual .is-available bands use team colours; unavailable bands remain neutral so toggling the
   logged-in player cannot appear to change another player's availability. */
body.app-player .table-calendar td.calendar-clickable-cell > .calendar-player-band:not(.is-available),
body.app-player .table-calendar .calendar-clickable-cell > .calendar-player-band:not(.is-available),
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available),
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available) {
    background: transparent !important;
    background-color: transparent !important;
    filter: none !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
}
body.app-player .table-calendar td.calendar-clickable-cell > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell > .calendar-player-band.is-available,
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available {
    background: var(--calendar-player-color) !important;
    background-color: var(--calendar-player-color) !important;
    filter: none !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
}

/* CHANGED v2026-06-11.8311: Put Calendar schedulable outline on the actual table-cell border, not as an inset frame. */
.table-calendar {
    border-collapse: collapse !important;
    border-spacing: 0 !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {
    position: relative !important;
    cursor: pointer !important;
    border: 1px solid #000 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
    overflow: hidden !important;
}
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::before,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::before,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before,
body.app-player .table-calendar td.calendar-clickable-cell.calendar-overlap::after,
body.app-player .table-calendar .calendar-clickable-cell.calendar-overlap::after,
body.app-player .table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
body.app-player .table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar td.calendar-clickable-cell.calendar-overlap::before,
.table-calendar .calendar-clickable-cell.calendar-overlap::before,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::before,
.table-calendar td.calendar-clickable-cell.calendar-overlap::after,
.table-calendar .calendar-clickable-cell.calendar-overlap::after,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]::after,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-highlight,
.table-calendar .calendar-clickable-cell > .calendar-overlap-highlight,
.table-calendar td.calendar-clickable-cell > .calendar-overlap-frame,
.table-calendar .calendar-clickable-cell > .calendar-overlap-frame {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}




/* CHANGED v2026-06-11.8312: Put Calendar hover highlight on the table-cell border instead of using an inset outline. */
.table-calendar td.calendar-clickable-cell:hover,
.table-calendar .calendar-clickable-cell:hover {
    border: 1px solid #000 !important;


    box-shadow: none !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap:hover,
.table-calendar .calendar-clickable-cell.calendar-overlap:hover,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]:hover,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]:hover {
    border: 1px solid #000 !important;


    box-shadow: none !important;
}


/* CHANGED v2026-06-11.8313: Restore Calendar hover to a flush inset frame.
   The hover indicator no longer changes the actual table-cell border; it sits at the
   inside edge of the cell and touches the grid border instead of floating inward. */
.table-calendar td.calendar-clickable-cell:hover,
.table-calendar .calendar-clickable-cell:hover {
    border-color: var(--color-table-border, #bdbdbd) !important;
    outline: 0 !important;
    outline-offset: 0 !important;
    box-shadow: inset 0 0 0 1px #000 !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap:hover,
.table-calendar .calendar-clickable-cell.calendar-overlap:hover,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"]:hover,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"]:hover {
    border-color: #000 !important;
    outline: 0 !important;
    outline-offset: 0 !important;
    box-shadow: inset 0 0 0 1px #000 !important;
}

/* CHANGED v2026-06-11.8316: Calendar availability repaint is player-scoped; keep non-available bands neutral and clock-target cells consistent. */
.table-calendar td.calendar-clickable-cell,
.table-calendar .calendar-clickable-cell {

    padding: 0 !important;
    overflow: hidden !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-player-band,
.table-calendar .calendar-clickable-cell > .calendar-player-band {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    background-clip: border-box !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band:not(.is-available),
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available),
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band:not(.is-available) {
    background: transparent !important;
    background-color: transparent !important;
    filter: none !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell.calendar-overlap > .calendar-player-band.is-available,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available,
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] > .calendar-player-band.is-available {
    background: var(--calendar-player-color) !important;
    background-color: var(--calendar-player-color) !important;
    filter: none !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
}
.table-calendar td.calendar-clickable-cell.calendar-overlap,
.table-calendar .calendar-clickable-cell.calendar-overlap,
.table-calendar td.calendar-clickable-cell[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell[data-calendar-overlap="1"] {
    cursor: pointer !important;
}
.table-calendar td.calendar-clickable-cell:not(:has(> .calendar-scheduler-badge)).calendar-overlap,
.table-calendar .calendar-clickable-cell:not(:has(> .calendar-scheduler-badge)).calendar-overlap,
.table-calendar td.calendar-clickable-cell:not(:has(> .calendar-scheduler-badge))[data-calendar-overlap="1"],
.table-calendar .calendar-clickable-cell:not(:has(> .calendar-scheduler-badge))[data-calendar-overlap="1"] {
    border-color: var(--color-table-border, #bdbdbd) !important;
    box-shadow: none !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {

    align-items: center !important;
    justify-content: center !important;



    left: auto !important;
    z-index: 10000 !important;
    width: 1rem !important;
    min-width: 1rem !important;
    height: 1rem !important;
    min-height: 1rem !important;
    padding: 0 !important;
    margin: 0 !important;

    cursor: pointer !important;
}

/* v8325: remove visual extra parent container from selected Sysadmin sections */
body.app-admin :where(details.admin-sysadmin-no-table-wrap) > .admin-lazy-details-body > :where(.ui-table-container, .table-container),
body.admin-surface :where(details.admin-sysadmin-no-table-wrap) > .admin-lazy-details-body > :where(.ui-table-container, .table-container),
body.app-admin :where(details.admin-sysadmin-no-table-wrap) > .admin-lazy-details-body form > :where(.ui-table-container, .table-container),
body.admin-surface :where(details.admin-sysadmin-no-table-wrap) > .admin-lazy-details-body form > :where(.ui-table-container, .table-container) {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
body.app-admin :where(details.admin-sysadmin-no-table-wrap) > .admin-lazy-details-body,
body.admin-surface :where(details.admin-sysadmin-no-table-wrap) > .admin-lazy-details-body {
  overflow-x: auto;
}


/* v8328: hard-flatten selected Sysadmin form/table wrappers so forms do not render as extra parent containers */
body.app-admin details.admin-sysadmin-no-table-wrap > .admin-lazy-details-body > form.admin-form,
body.admin-surface details.admin-sysadmin-no-table-wrap > .admin-lazy-details-body > form.admin-form {
  display: contents !important;
}
body.app-admin details.admin-sysadmin-no-table-wrap :where(.ui-table-container, .table-container, .ui-admin-table-wrap, .ui-component-table-wrap),
body.admin-surface details.admin-sysadmin-no-table-wrap :where(.ui-table-container, .table-container, .ui-admin-table-wrap, .ui-component-table-wrap) {
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
body.app-admin details.admin-sysadmin-no-table-wrap table,
body.admin-surface details.admin-sysadmin-no-table-wrap table {
  margin-top: 0 !important;
}

/** ADDED v2026-06-11.8329: opt-in Calendar scheduler-state diagnostics shown only when JS appends .calendar-debug-pill (?calendarDebug=1 or ?caldebug=1). */
.table-calendar td.calendar-clickable-cell > .calendar-debug-pill,
.table-calendar .calendar-clickable-cell > .calendar-debug-pill {
    position: absolute;
    left: 1px;
    bottom: 1px;
    z-index: 8;
    display: inline-flex;
    align-items: center;
    max-width: calc(100% - 2px);
    min-height: 12px;
    padding: 0 2px;
    border: 1px solid rgba(0, 0, 0, 0.45);
    border-radius: 2px;
    background: rgba(255, 255, 255, 0.88);
    color: #111;
    font-size: 9px;
    line-height: 1.1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
}


/** ADDED v2026-06-11.8330: opt-in floating Calendar scheduler diagnostics panel shown only when JS creates it for ?calendarDebug=1 or ?caldebug=1. */
.calendar-debug-panel {
    position: fixed;
    right: 0.75rem;
    bottom: 0.75rem;
    z-index: 9999;
    max-width: min(32rem, calc(100vw - 1.5rem));
    max-height: 45vh;
    overflow: auto;
    padding: 0.625rem;
    border: 1px solid #111;
    border-radius: 0.375rem;
    background: #fff;
    color: #111;
    box-shadow: 0 0.25rem 1rem rgba(0, 0, 0, 0.2);
    font-size: 0.75rem;
    line-height: 1.25;
}
.calendar-debug-panel pre {
    margin: 0.375rem 0;
    white-space: pre-wrap;
    word-break: break-word;
    font: inherit;
}
.calendar-debug-panel button {
    margin: 0;
    padding: 0.25rem 0.5rem;
    font-size: 0.75rem;
}

/* CHANGED v2026-06-11.8334: Render Calendar hover frame above player bars.
   The hover indicator is an overlay at the cell edge, above availability bands
   and below the Scheduler clock hit target. */
.table-calendar td.calendar-clickable-cell,
.table-calendar .calendar-clickable-cell {
    position: relative !important;
    isolation: isolate !important;
}
.table-calendar td.calendar-clickable-cell:hover::before,
.table-calendar .calendar-clickable-cell:hover::before {
    content: "" !important;
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    z-index: 9000 !important;
    box-sizing: border-box !important;
    border: 1px solid #000 !important;
    background: transparent !important;
    box-shadow: none !important;
    pointer-events: none !important;
}
.table-calendar td.calendar-clickable-cell:hover > .calendar-player-band,
.table-calendar .calendar-clickable-cell:hover > .calendar-player-band {
    position: relative !important;
    z-index: 20 !important;
}
.table-calendar td.calendar-clickable-cell:hover > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell:hover > .calendar-scheduler-badge {
    z-index: 10000 !important;
}

/* v8335: keep Calendar Scheduler clock visible on mobile and desktop when JS/PHP resolves a schedulable slot. */
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge,
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: absolute !important;
    top: 1px !important;
    right: 1px !important;
    z-index: 10050 !important;
    pointer-events: auto !important;
}
.table-calendar td.calendar-clickable-cell > .calendar-scheduler-badge[hidden],
.table-calendar .calendar-clickable-cell > .calendar-scheduler-badge[hidden] {
    display: none !important;
}


/* CHANGED v2026-06-16.8463: Scheduler state highlights should render as circular halos around the clock glyph instead of filled rounded squares. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--ready,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--ready,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--complete,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--complete {
    background: transparent !important;



}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set {

    box-shadow: 0 0 0 3px rgba(199, 120, 0, .22), 0 0 12px rgba(255, 193, 7, .34) !important;
}
/* Green means unscheduled but ready because both teams have at least one shared availability slot. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--ready,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--ready {

    box-shadow: 0 0 0 3px rgba(47, 143, 79, .24), 0 0 12px rgba(47, 143, 79, .30) !important;

}
/* Streamlined Scheduler state colours. Amber means scheduled; red means completed/historical. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--complete,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--complete {

    box-shadow: 0 0 0 3px rgba(176, 0, 32, .22), 0 0 12px rgba(176, 0, 32, .28) !important;

}
body.app-player .table-calendar .calendar-overlap--scheduled {
    background: #fff7d6 !important;
}
body.app-player .table-calendar .calendar-overlap--scheduled::before,
body.app-player .table-calendar .calendar-overlap--scheduled .calendar-overlap-frame {
    border-color: #c77800 !important;
    box-shadow: inset 0 0 0 1px #fff, 0 0 6px rgba(199, 120, 0, .45) !important;
}
body.app-player .match-scheduler-state-note {
    margin: .35rem 0 .65rem;
    padding: .45rem .6rem;
    border: 1px solid #d0d5dd;
    border-radius: .5rem;
    background: #f0f0f0;
    font-weight: 700;
    text-align: center;
}

body.app-player .match-scheduler-context-note {
    margin: .25rem 0 .5rem;
    font-weight: 700;
    text-align: center;
}


/* CHANGED v2026-06-15.8360: Matches Team Movement launcher reuses the Teams page circular icon styling. */
body.app-player .matches-team-movement-swal-link {
    vertical-align: middle;
}
body.app-player .matches-team-movement-swal-payload[hidden] {
    display: none !important;
}
body.app-player .matches-team-movement-swal .teams-round-movement-body {
    text-align: left;
}
body.app-player .matches-team-movement-swal .teams-round-movement-table-wrap {
    max-height: 70vh;
    overflow: auto;
}


/** ADDED v2026-06-15.8367
 *  Matches page absent-team highlight. Uses existing unavailable/absent colour
 *  token while keeping the compact team-name line layout intact.
 */
.matches-table .matches-team-name.matches-team-name-unavailable {
    background-color: var(--color-status-unavailable-bg) !important;
    border-radius: 0.25rem;
    padding: 0.05rem 0.25rem;
}

/** CHANGED v2026-08-24: Status tables mark unavailable player names only. */
body.app-player .matches-status-table tr.unavailable > td,
.matches-status-table tr.unavailable > td {
    background-color: transparent !important;
}
.matches-status-table tr.unavailable {
    background: transparent !important;
}
.matches-status-table tr.unavailable .component-team-members a {
    background-color: var(--color-status-unavailable-bg) !important;
    border-radius: 0.25rem;
    padding: 0.05rem 0.25rem;
}
.matches-status-table .matches-team-name.matches-team-name-unavailable {
    display: inline-block;
    background-color: var(--color-status-unavailable-bg) !important;
    border-radius: 0.25rem;
    padding: 0.05rem 0.25rem;
}
.matches-status-table .matches-team-name.matches-team-name-unavailable .component-team-members a {
    background: transparent !important;
    padding: 0 !important;
}
.matches-status-table .matches-team-members-unavailable a {
    display: inline-block;
    background-color: var(--color-status-unavailable-bg) !important;
    border-radius: 0.25rem;
    padding: 0.05rem 0.25rem;
}
.matches-table .matches-team-name.matches-team-name-unavailable {
    background-color: transparent !important;
}
.matches-table .matches-team-name.matches-team-name-unavailable .component-team-members a {
    background-color: var(--color-status-unavailable-bg) !important;
    border-radius: 0.25rem;
    padding: 0.05rem 0.25rem;
    display: inline-block !important;
    width: auto !important;
    max-width: 100%;
}

/** CHANGED v2026-08-24: Event details are direct children of the form. */
body.app-admin details.admin-event-settings-details {
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    padding: 0 !important;
    overflow: visible !important;
}
.admin-event-settings-details {
    display: block;
    margin: 0;
}
.admin-event-settings-subtable {
    margin: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
}

/** ADDED v14392: Event-form explanatory copy is prose, not a selected value.
 * Keep it consistently left-aligned while controls retain their own alignment. */
body.app-admin .admin-event-settings-subtable > tbody > tr > td,
body.admin-surface .admin-event-settings-subtable > tbody > tr > td {
    text-align: left !important;
}

.player-game-history-match-void12320 {
    text-align: center !important;
    vertical-align: middle !important;
}
.player-game-history-match-void12320 .game-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.player-game-history-score12320 {
    text-align: center !important;
    vertical-align: middle !important;
}
.player-game-history-score12320 .player-game-history-forfeit12320 {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}


/** ADDED v2026-06-15.8370
 * Expandable section headers use a consistent light-grey header treatment and
 * an explicit arrow indicator so users can identify collapsed/expanded sections.
 */
:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .approvals-container, .players-container, .teams-container, .matches-container, .calendar-container, .divborder) details > summary {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  box-sizing: border-box;
  width: 100%;
  min-height: 2.35rem;
  padding: 0.5rem 0.75rem;
  background: #f1f3f5;
  border: 1px solid var(--color-table-border, #c9ced6);
  border-radius: var(--admin-ui-radius, 0.5rem);
  color: inherit;
  list-style: none;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .approvals-container, .players-container, .teams-container, .matches-container, .calendar-container, .divborder) details > summary::-webkit-details-marker {
  display: none;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .approvals-container, .players-container, .teams-container, .matches-container, .calendar-container, .divborder) details > summary::marker {
  content: "";
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .approvals-container, .players-container, .teams-container, .matches-container, .calendar-container, .divborder) details > summary::after {
  content: "▾";
  margin-left: auto;
  flex: 0 0 auto;
  color: #4d5560;
  font-size: 0.95em;
  line-height: 1;
}

:where(.admin-page-container, .admin-dashboard-container, .admin-development-container, .admin-diagnostics-container, .diagnostics-container, .admin-report-shell, .approvals-container, .players-container, .teams-container, .matches-container, .calendar-container, .divborder) details[open] > summary::after {
  content: "▴";
}

/** CHANGED v2026-06-15.8372
 * Universal collapsed-section affordance refinement.
 * Collapsed/expanded summaries use a filled light-grey background, not a
 * grey-outline-only treatment. The disclosure arrow is placed before the title
 * so the affordance appears consistently at the left edge of every section.
 */
:root {
  --app-collapsed-section-summary-bg: #eef0f2;
  --app-collapsed-section-summary-border: #d5d9df;
  --app-collapsed-section-summary-arrow: #4d5560;
}

body :where(details) > summary {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 0.5rem !important;
  box-sizing: border-box !important;
  width: 100% !important;
  min-height: 2.35rem !important;
  padding: 0.5rem 0.75rem !important;
  background-color: var(--app-collapsed-section-summary-bg) !important;
  background-image: none !important;
  border: 1px solid var(--app-collapsed-section-summary-border) !important;
  border-radius: 0.5rem !important;
  box-shadow: none !important;
  color: inherit !important;
  cursor: pointer !important;
  list-style: none !important;
}

body :where(details) > summary::-webkit-details-marker {
  display: none !important;
}

body :where(details) > summary::marker {
  content: "" !important;
}

body :where(details) > summary::before {
  content: "▾" !important;
  flex: 0 0 auto !important;
  color: var(--app-collapsed-section-summary-arrow) !important;
  font-size: 0.95em !important;
  line-height: 1 !important;
}

body :where(details[open]) > summary::before {
  content: "▴" !important;
}

body :where(details) > summary::after {
  content: none !important;
  display: none !important;
}



/** CHANGED v2026-06-15.8373
 *  Collapsed section affordance correction.
 *  - Remove extra visual parent-card treatment from player lazy details.
 *  - Give the actual collapsed summary a filled light grey background.
 *  - Keep the disclosure indicator on the left of the title.
 */
.ui-player-details-card.player-lazy-details-wrapper {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  padding: 0 !important;
}

.ui-player-normalized-details.player-lazy-details,
.team-profile-section.ui-player-normalized-details.player-lazy-details,
.team-profile-availability-details.ui-player-normalized-details.player-lazy-details {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  padding: 0 !important;
  margin: 0.75rem 0 !important;
}

.ui-player-normalized-details.player-lazy-details > summary,
.team-profile-section.ui-player-normalized-details.player-lazy-details > summary,
.team-profile-availability-details.ui-player-normalized-details.player-lazy-details > summary,
main details:not([open]) > summary {
  background: #f1f3f5 !important;
  border: 1px solid #cfd6de !important;
  border-radius: 10px !important;
  box-shadow: none !important;
  color: inherit !important;
  cursor: pointer;
  display: flex !important;
  align-items: center;
  gap: 0.45rem;
  padding: 0.55rem 0.85rem !important;
}

.ui-player-normalized-details.player-lazy-details > summary::-webkit-details-marker,
.team-profile-section.ui-player-normalized-details.player-lazy-details > summary::-webkit-details-marker,
.team-profile-availability-details.ui-player-normalized-details.player-lazy-details > summary::-webkit-details-marker,
main details > summary::-webkit-details-marker {
  display: none;
}

.ui-player-normalized-details.player-lazy-details > summary::before,
.team-profile-section.ui-player-normalized-details.player-lazy-details > summary::before,
.team-profile-availability-details.ui-player-normalized-details.player-lazy-details > summary::before,
main details:not([open]) > summary::before {
  content: '▾';
  display: inline-block;
  flex: 0 0 auto;
  font-size: 0.75em;
  line-height: 1;
  margin-right: 0.2rem;
}

.ui-player-normalized-details.player-lazy-details[open] > summary::before,
.team-profile-section.ui-player-normalized-details.player-lazy-details[open] > summary::before,
.team-profile-availability-details.ui-player-normalized-details.player-lazy-details[open] > summary::before,
main details[open] > summary::before {
  content: '▴';
}

.ui-player-normalized-details.player-lazy-details > summary::after,
.team-profile-section.ui-player-normalized-details.player-lazy-details > summary::after,
.team-profile-availability-details.ui-player-normalized-details.player-lazy-details > summary::after,
main details > summary::after {
  content: none !important;
  display: none !important;
}

/** CHANGED v2026-06-15.8374
 *  Verification code boxes are intentionally narrow and taller than wide.
 *  This overrides broad player-surface input rules and prevents the profile
 *  phone verification boxes from stretching across the row.
 */
.verification-code-box-row {
    align-items: center;
    justify-content: flex-start;
    gap: 0.55rem;
}

.verification-code-box-row .verification-code-digit-box,
body.app-player .verification-code-box-row .verification-code-digit-box {
    box-sizing: border-box;
    flex: 0 0 2.25rem;
    inline-size: 2.25rem;
    min-inline-size: 2.25rem;
    max-inline-size: 2.25rem;
    width: 2.25rem;
    min-width: 2.25rem;
    max-width: 2.25rem;
    block-size: 3.05rem;
    min-block-size: 3.05rem;
    height: 3.05rem;
    min-height: 3.05rem;
    padding: 0.25rem 0.2rem;
    text-align: center;
}

@media (max-width: 520px) {
    .verification-code-box-row {
        gap: 0.35rem;
    }
    .verification-code-box-row .verification-code-digit-box,
    body.app-player .verification-code-box-row .verification-code-digit-box {
        flex-basis: 2rem;
        inline-size: 2rem;
        min-inline-size: 2rem;
        max-inline-size: 2rem;
        width: 2rem;
        min-width: 2rem;
        max-width: 2rem;
        block-size: 2.85rem;
        min-block-size: 2.85rem;
        height: 2.85rem;
        min-height: 2.85rem;
    }
}


/** CHANGED v2026-06-15.8384
 * Expanded section headers retain the same filled light-grey affordance as
 * collapsed headers. Keep the disclosure arrow at the left and avoid reverting
 * to outline-only styling when a details section opens.
 */
body :where(details[open]) > summary,
main details[open] > summary,
.admin-page-container details[open] > summary,
.admin-dashboard-container details[open] > summary,
.admin-development-container details[open] > summary,
.admin-diagnostics-container details[open] > summary,
.diagnostics-container details[open] > summary,
.admin-report-shell details[open] > summary,
.approvals-container details[open] > summary,
.players-container details[open] > summary,
.teams-container details[open] > summary,
.matches-container details[open] > summary,
.calendar-container details[open] > summary,
.divborder details[open] > summary {
  background: #f1f3f5 !important;
  background-color: #f1f3f5 !important;
  background-image: none !important;
  border: 1px solid #cfd6de !important;
  border-radius: 10px !important;
  box-shadow: none !important;
}


/* CHANGED v8389: Keep legacy player-page h2/page-title accent; only admin shell titles are flattened. */
body.app-admin .ui-page-header > h2,
body.app-admin .ui-admin-page-header > h2,
body.app-admin .admin-action-shell .ui-page-header > h2 {
    border-left: 0 !important;
    padding-left: 0 !important;
}

/* ADDED v8388: People / Access details are intentionally flat; no extra wrapper-card chrome. */
body.app-admin .admin-people-access-details {
    margin: 0.9rem 0 !important;
}


/* ADDED v8390: Compact People / Access sections, remove nested parent chrome, and highlight only expanded sections. */
body.app-admin .admin-action-shell .admin-people-access-details {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    margin: 0.35rem 0 !important;
    padding: 0 !important;
}
body.app-admin .admin-action-shell .admin-people-access-details > summary {
    background: #f1f3f5 !important;
    border: 1px solid #cfd6de !important;
    border-radius: 10px !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 0.45rem 0.8rem !important;
}
body.app-admin .admin-action-shell .admin-people-access-details[open] {
    background: #f1f3f5 !important;
    border: 1px solid #cfd6de !important;
    border-radius: 12px !important;
    padding: 0.45rem 0.6rem 0.6rem !important;
}
body.app-admin .admin-action-shell .admin-people-access-details[open] > summary {
    border-color: transparent !important;
    border-bottom: 1px solid #cfd6de !important;
    border-radius: 0 !important;
    margin: 0 0 0.45rem 0 !important;
    padding: 0.35rem 0 !important;
}

body.app-admin .admin-action-shell .admin-people-access-details > :last-child {
    margin-bottom: 0 !important;
}
body.app-admin .admin-action-shell .admin-people-access-details h4 {
    margin: 0.55rem 0 0.35rem !important;
}
body.app-admin .admin-action-shell .admin-people-access-inline-table {
    border-collapse: collapse !important;
    box-shadow: none !important;
    margin: 0.25rem 0 0.55rem !important;
    width: 100% !important;
}
body.app-admin .admin-action-shell .admin-people-access-inline-table th,
body.app-admin .admin-action-shell .admin-people-access-inline-table td {
    background-clip: padding-box;
}
body.app-admin .admin-action-shell > .ui-page-header {
    margin-bottom: 0.65rem !important;
}


/* CHANGED v8393: Player Profile Team Profile row spans both fact-list columns like colspan=2. */
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link {
    display: block !important;
    width: 100% !important;
}
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
    background: #f1f3f5 !important;
    border: 1px solid #cfd6de !important;
    font-weight: 700 !important;
    text-align: center !important;
}
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt a {
    display: block !important;
    text-align: center !important;
}
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dd {
    display: none !important;
}

/* CHANGED v8392: People / Access sections are compact, flat, and header-highlighted without parent-container chrome. */
body.app-admin .admin-action-shell .admin-people-access-details,
body.app-admin .admin-action-shell .admin-people-access-details[open] {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin: 0.18rem 0 !important;
    padding: 0 !important;
}
body.app-admin .admin-action-shell .admin-people-access-details + .admin-people-access-details {
    margin-top: 0.25rem !important;
}
body.app-admin .admin-action-shell .admin-people-access-details > summary,
body.app-admin .admin-action-shell .admin-people-access-details[open] > summary {
    background: #f1f3f5 !important;
    background-color: #f1f3f5 !important;
    background-image: none !important;
    border: 1px solid #cfd6de !important;
    border-radius: 10px !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 0.45rem 0.8rem !important;
}
body.app-admin .admin-action-shell .admin-people-access-details > :not(summary) {
    margin-left: 0 !important;
    margin-right: 0 !important;
}
body.app-admin .admin-action-shell .admin-people-access-details h4 {
    margin: 0.45rem 0 0.25rem !important;
}
body.app-admin .admin-action-shell .people-access-form {
    margin: 0.25rem 0 0.35rem !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
}
body.app-admin .admin-action-shell .admin-people-access-form-table,
body.app-admin .admin-action-shell .admin-people-access-inline-table {
    margin: 0.15rem 0 0.35rem !important;
    box-shadow: none !important;
}


/* CHANGED v8394: Player Profile Team Profile fact row uses grid placement so it truly spans both fact columns. */
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-list,
.players-container .player-profile-summary-semantic .player-profile-fact-list,
.player-profile-summary-semantic .player-profile-fact-list,
.player-profile-summary-semantic .profile-summary-facts {
    display: grid !important;
    grid-template-columns: max-content max-content !important;
    width: max-content !important;
    max-width: none !important;
    margin: 0 !important;
    border-collapse: collapse !important;
}
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row,
.players-container .player-profile-summary-semantic .player-profile-fact-row,
.player-profile-summary-semantic .player-profile-fact-row {
    display: contents !important;
}
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row > dt,
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row > dd,
.players-container .player-profile-summary-semantic .player-profile-fact-row > dt,
.players-container .player-profile-summary-semantic .player-profile-fact-row > dd,
.player-profile-summary-semantic .player-profile-fact-row > dt,
.player-profile-summary-semantic .player-profile-fact-row > dd {
    display: block !important;
    vertical-align: top !important;
    white-space: nowrap !important;
    padding: 0.15rem 0.35rem !important;
    margin: 0 !important;
}
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt,
.players-container .player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt,
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt {
    grid-column: 1 / 3 !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 100% !important;
    background: #f1f3f5 !important;
    border: 1px solid #cfd6de !important;
    font-weight: 700 !important;
    text-align: center !important;
    justify-self: stretch !important;
}
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt a,
.players-container .player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt a,
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dt a {
    display: block !important;
    width: 100% !important;
    text-align: center !important;
}
.player-page-container.players-container .player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dd,
.players-container .player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dd,
.player-profile-summary-semantic .player-profile-fact-row.team-profile-link > dd {
    display: none !important;
}

/** ADDED v2026-06-16.8403
 *  About page feedback section spacing parity.
 *  Feedback is wrapped in a hash-target anchor outside the lazy-details wrapper;
 *  reset that anchor and its child card so the grid gap is the only vertical
 *  space between Stats, Feedback, and What's New.
 */

body.app-player .player-about-page-shell .player-about-feedback-anchor > .player-lazy-details-wrapper.player-about-details,
body.app-player .player-about-page-shell .player-about-feedback-anchor > .player-lazy-details-wrapper.player-about-details > details.player-lazy-details {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
body.app-player .player-about-page-shell .player-about-feedback-anchor + :where(.about-whats-new-link-row, .player-lazy-details-wrapper.player-about-details),
body.app-player .player-about-page-shell .player-lazy-details-wrapper.player-about-details + .player-about-feedback-anchor {
    margin-top: 0 !important;
}


/** ADDED v2026-06-16.8406
 *  About feedback spacing correction after player lazy details were flattened.
 *  The Feedback hash target wraps a direct <details> element, not the retired
 *  player-lazy-details-wrapper div. Keep the anchor and its nested details
 *  marginless so the About content grid supplies the only vertical gap.
 */
body.app-player .player-about-page-shell .player-about-content-stack > br {
    display: none !important;
}
body.app-player .player-about-page-shell .player-about-content-stack > .player-about-feedback-anchor {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.app-player .player-about-page-shell .player-about-feedback-anchor > details.player-about-details,
body.app-player .player-about-page-shell .player-about-feedback-anchor > details.player-lazy-details,
body.app-player .player-about-page-shell .player-about-feedback-anchor > .player-lazy-details-wrapper.player-about-details,
body.app-player .player-about-page-shell .player-about-feedback-anchor > .player-lazy-details-wrapper.player-about-details > details.player-lazy-details {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
body.app-player .player-about-page-shell .player-about-content-stack > .player-about-feedback-anchor + .about-whats-new-link-row,
body.app-player .player-about-page-shell .player-about-content-stack > .player-about-feedback-anchor + details.player-about-details,
body.app-player .player-about-page-shell .player-about-content-stack > details.player-about-details + .player-about-feedback-anchor {
    margin-top: 0 !important;
}


/** ADDED v2026-06-16.8408
 * About spacing canonicalization.
 * Feedback now renders as a direct lazy <details> item instead of a wrapper div.
 * Force all About stack children, including What's New, to use one gap source.
 */
body.app-player .player-about-page-shell .player-about-content-stack {
    display: grid !important;
    row-gap: var(--player-section-gap, 0.32rem) !important;
    gap: var(--player-section-gap, 0.32rem) !important;
}
body.app-player .player-about-page-shell .player-about-content-stack > :where(details.player-about-details, details.player-about-feedback-details, .player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row),
body.app-player .player-about-page-shell .player-about-content-stack > :where(details.player-about-details, details.player-about-feedback-details, .player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row) > :where(details, .player-lazy-details),
body.app-player .player-about-page-shell .player-about-content-stack > .about-whats-new-link-row > .about-whats-new-link {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}
body.app-player .player-about-page-shell .player-about-content-stack > details.player-about-details,
body.app-player .player-about-page-shell .player-about-content-stack > details.player-about-feedback-details {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
body.app-player .player-about-page-shell .player-about-content-stack > br,
body.app-player .player-about-page-shell .player-about-content-stack > .player-about-feedback-anchor {
    display: none !important;
}


/** ADDED v2026-06-16.8415
 *  About top-level section spacing final normalization.
 *
 *  Purpose:
 *  Feedback is rendered through the same lazy-details helper as the other About
 *  sections, but older generic details/br rules can still create uneven gaps.
 *  Make the About stack the only source of vertical rhythm and remove child
 *  margins from every direct section row, including Feedback and What's New.
 */
body.app-player .player-about-content-stack {
    display: flex !important;
    flex-direction: column !important;
    gap: 0.42rem !important;
}

body.app-player .player-about-content-stack > :where(.player-lazy-details-wrapper.player-about-details, .about-whats-new-link-row) {
    margin: 0 !important;
}

body.app-player .player-about-content-stack > br {
    display: none !important;
}

body.app-player .player-about-content-stack > .player-lazy-details-wrapper.player-about-details > details.player-lazy-details {
    margin: 0 !important;
}

body.app-player .player-about-content-stack .player-about-feedback-details,
body.app-player .player-about-content-stack .player-about-feedback-details > details.player-lazy-details {
    margin: 0 !important;
}

body.app-player .player-about-content-stack .about-whats-new-link-row,
body.app-player .player-about-content-stack .about-whats-new-link {
    margin: 0 !important;
}

/* ADDED v2026-06-16.8417: make completed/read-only Scheduler views present as historical display, not editable facility search. */
.match-scheduler-modal--readonly .facility-search-dropdown-input,
.match-scheduler-modal--readonly .facility-search-filter-row {
    display: none !important;
}
.match-scheduler-modal--readonly .match-scheduler-readonly-summary {
    margin: 0 0 .85rem;
    padding: .55rem .7rem;
    border: 1px solid #d5dbe3;
    border-radius: .45rem;
    background: #f8f9fb;
    font-weight: 700;
    text-align: center;
    line-height: 1.35;
}
.match-scheduler-modal--readonly .match-scheduler-field > span:first-child {
    font-weight: 700;
}
.match-scheduler-modal--readonly input:disabled,
.match-scheduler-modal--readonly select:disabled,
.match-scheduler-modal--readonly textarea:disabled {
    opacity: 1 !important;
    color: #333 !important;
    background-color: #f7f7f7 !important;
    cursor: default !important;
}


/* ADDED v2026-06-16.8418: completed/read-only Scheduler popups show the saved record, not editable form chrome. */
.match-scheduler-modal--readonly .match-scheduler-field {
    display: none !important;
}
.match-scheduler-modal--readonly #matchScheduleCalendarLinkWrap {
    display: block;
    text-align: center;
    margin-top: .65rem;
}


/* ADDED v2026-06-16.8419: completed/historical Calendar pages are view-only; keep player bands and Scheduler badge visible without presenting availability cells as editable. */
.table-calendar.component-player-table--calendar-readonly .calendar-readonly-cell,
.table-calendar .calendar-clickable-cell.calendar-readonly-cell {
    cursor: default;
}
.table-calendar.component-player-table--calendar-readonly .calendar-readonly-cell:hover,
.table-calendar .calendar-clickable-cell.calendar-readonly-cell:hover {
    background: inherit;
}
.table-calendar.component-player-table--calendar-readonly .calendar-scheduler-badge {
    cursor: pointer;
}

/** ADDED v2026-06-16.8439
 *  About -> League Details nested list marker visibility.
 *  Nested rule cards use clipped details surfaces; keep list markers inside the
 *  padded content area so bullets are not cut off at the left edge.
 */
body.app-player .player-about-page-shell .player-about-rule-details :where(ul, ol) {
    box-sizing: border-box;
    list-style-position: outside;
    margin-left: 0 !important;
    padding-left: 1.65rem !important;
}

body.app-player .player-about-page-shell .player-about-rule-details :where(ul, ol) :where(ul, ol) {
    padding-left: 1.45rem !important;
}


/** ADDED v2026-06-16.8441
 * Donation admin table-layout cleanup.
 * Add Donation now renders as a two-row table, and donation tables render
 * directly without an extra table wrapper container.
 */
.admin-donation-add-table,
.admin-donations-table {
    width: 100%;
    border-collapse: collapse;
}

.admin-donation-add-table th,
.admin-donation-add-table td {
    vertical-align: middle;
}

.admin-donation-add-table select,
.admin-donation-add-table input[type="number"],
.admin-donation-add-table input[type="datetime-local"] {
    width: 100%;
    min-width: 0;
}

.admin-donation-action-cell {
    text-align: center;
    white-space: nowrap;
}

.admin-donation-action-cell .admin-button {
    min-width: 9rem;
}

@media (max-width: 768px) {
    .admin-donation-add-table,
    .admin-donation-add-table thead,
    .admin-donation-add-table tbody,
    .admin-donation-add-table tr,
    .admin-donation-add-table th,
    .admin-donation-add-table td {
        display: block;
        width: 100%;
    }
    .admin-donation-add-table thead {
        display: none;
    }
    .admin-donation-add-table td {
        padding: 0.35rem 0;
    }
}


/* ADDED v2026-06-16.8445: Place Team Movement SweetAlert close button in upper-left corner. */
body.app-player .swal2-popup.matches-team-movement-swal .swal2-close {
    left: 0.75rem;
    right: auto;
}


/* CHANGED v2026-06-16.8446: Force Team Movement SweetAlert close control to the upper-left corner. */
body.app-player .swal2-container .swal2-popup.matches-team-movement-swal .swal2-close {
    left: 0.75rem !important;
    right: auto !important;
    top: 0.75rem !important;
    position: absolute !important;
}

/* ADDED v2026-06-16.8448: Place Stats Explained SweetAlert close button in upper-left corner. */
body.app-player .swal2-container .swal2-popup.stats-explained-swal .swal2-close {
    left: 0.75rem !important;
    right: auto !important;
    top: 0.75rem !important;
    position: absolute !important;
}



/* CHANGED v2026-06-16.8449: Match Team Movement SweetAlert close control to Stats Explained and force upper-left placement. */
.swal2-container .swal2-popup.matches-team-movement-swal .swal2-close {
    left: 0.75rem !important;
    right: auto !important;
    top: 0.75rem !important;
    position: absolute !important;
    width: 2.25rem !important;
    height: 2.25rem !important;
    line-height: 2.25rem !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    box-shadow: none !important;
}


/* ADDED v2026-06-16.8450: Hard override for Team Movement SweetAlert close button after SweetAlert default placement. */
.swal2-popup.matches-team-movement-swal button.swal2-close,
.swal2-popup.matches-team-movement-swal .swal2-close.matches-team-movement-close-left {
    left: 0.75rem !important;
    right: auto !important;
    top: 0.75rem !important;
    position: absolute !important;
    width: 2.25rem !important;
    height: 2.25rem !important;
    line-height: 2.25rem !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    box-shadow: none !important;
}


/* ADDED v2026-06-16.8452: Force Team Movement SweetAlert close control to the same upper-left placement as Stats Explained, including logical SweetAlert offsets. */
.swal2-container .swal2-popup.matches-team-movement-swal button.swal2-close,
.swal2-container .swal2-popup.matches-team-movement-swal .swal2-close,
.swal2-container .swal2-close.matches-team-movement-close-left,
.swal2-container .swal2-close.stats-explained-close-left {
    inset-inline-start: 0.75rem !important;
    inset-inline-end: auto !important;
    left: 0.75rem !important;
    right: auto !important;
    top: 0.75rem !important;
    position: absolute !important;
    width: 2.25rem !important;
    height: 2.25rem !important;
    line-height: 2.25rem !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    box-shadow: none !important;
    transform: none !important;
}


/* ADDED v2026-06-16.8453: Team Movement uses a custom in-popup close button so the X can reliably appear in the upper-left corner. */
.swal2-popup.matches-team-movement-swal .matches-team-movement-custom-close {
    position: absolute !important;
    inset-inline-start: 0.75rem !important;
    inset-inline-end: auto !important;
    left: 0.75rem !important;
    right: auto !important;
    top: 0.75rem !important;
    width: 2.25rem !important;
    height: 2.25rem !important;
    line-height: 2.25rem !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    box-shadow: none !important;
    transform: none !important;
    z-index: 5 !important;
    cursor: pointer !important;
}
.swal2-popup.matches-team-movement-swal .matches-team-movement-custom-close:hover,
.swal2-popup.matches-team-movement-swal .matches-team-movement-custom-close:focus {
    background: #f3f4f6 !important;
    outline: none !important;
}


/* ADDED v2026-06-16.8454: Final Team Movement SweetAlert close-button guard. The built-in SweetAlert close button is hidden and the custom button is pinned to the popup's upper-left even if older bundled selectors remain cached. */
.swal2-popup.matches-team-movement-swal > .swal2-close {
    display: none !important;
}
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close {
    position: absolute !important;
    top: 0.75rem !important;




    width: 2.25rem !important;
    height: 2.25rem !important;
    line-height: 2.25rem !important;
    padding: 0 !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    text-align: center !important;
    box-shadow: none !important;
    transform: none !important;
    z-index: 20 !important;
    cursor: pointer !important;
}
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close:hover,
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close:focus {
    background: #f3f4f6 !important;
    outline: none !important;
}

/* ADDED v2026-06-16.8455: Team Movement close control belongs in the upper-left for both the Teams overlay and Matches SweetAlert preview. */

body.app-player .teams-round-movement-panel-header .teams-round-movement-close {
    order: 0 !important;
    margin-right: 0.5rem !important;
    margin-left: 0 !important;
}
body.app-player .teams-round-movement-panel-header h3 {
    order: 1 !important;
}
body.app-player .teams-round-link.teams-round-link-current,
body.app-player .teams-round-link[aria-current="true"] {
    font-weight: 800 !important;
    background: rgba(0, 96, 192, 0.12) !important;
    border-color: rgba(0, 96, 192, 0.55) !important;
    color: #004fb8 !important;
}
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close {
    left: 0.75rem !important;
    right: auto !important;
    inset-inline-start: 0.75rem !important;
    inset-inline-end: auto !important;
}

/* ADDED v2026-06-16.8456: Normalize Team Movement close controls to Stats Explained upper-left circular close styling. */
body.app-player .teams-round-movement-panel-header {
    position: relative !important;
    justify-content: flex-start !important;
    min-height: 3.75rem !important;
    padding-left: 3.75rem !important;
}
body.app-player .teams-round-movement-panel-header .teams-round-movement-close.stats-explained-close-left,
body.app-player .teams-round-movement-panel-header .teams-round-movement-close,
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close,
.swal2-container .swal2-popup.stats-explained-swal .swal2-close {
    position: absolute !important;
    top: 0.75rem !important;
    left: 0.75rem !important;
    right: auto !important;
    inset-inline-start: 0.75rem !important;
    inset-inline-end: auto !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 2.25rem !important;
    height: 2.25rem !important;
    min-width: 2.25rem !important;
    line-height: 2.25rem !important;
    padding: 0 !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    text-align: center !important;
    text-decoration: none !important;
    box-shadow: none !important;
    transform: none !important;
    z-index: 20 !important;
    cursor: pointer !important;
}
body.app-player .teams-round-movement-panel-header .teams-round-movement-close.stats-explained-close-left:hover,
body.app-player .teams-round-movement-panel-header .teams-round-movement-close.stats-explained-close-left:focus,
body.app-player .teams-round-movement-panel-header .teams-round-movement-close:hover,
body.app-player .teams-round-movement-panel-header .teams-round-movement-close:focus,
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close:hover,
.swal2-popup.matches-team-movement-swal > .matches-team-movement-custom-close:focus,
.swal2-container .swal2-popup.stats-explained-swal .swal2-close:hover,
.swal2-container .swal2-popup.stats-explained-swal .swal2-close:focus {
    background: #f3f4f6 !important;
    outline: none !important;
}



/* ADDED v2026-06-16.8465: Shared upper-left SweetAlert close control for dialogs with Cancel buttons, matching Stats Explained and Team Movement. */
.swal2-popup > .app-swal-left-close,
.swal2-container .swal2-popup > .app-swal-left-close.stats-explained-close-left {
    position: absolute !important;
    top: 0.75rem !important;
    left: 0.75rem !important;
    right: auto !important;
    inset-inline-start: 0.75rem !important;
    inset-inline-end: auto !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 2.25rem !important;
    height: 2.25rem !important;
    min-width: 2.25rem !important;
    line-height: 2.25rem !important;
    padding: 0 !important;
    border: 1px solid #cfd6df !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #111827 !important;
    font-size: 1.4rem !important;
    font-weight: 700 !important;
    text-align: center !important;
    text-decoration: none !important;
    box-shadow: none !important;
    transform: none !important;
    z-index: 20 !important;
    cursor: pointer !important;
}
.swal2-popup > .app-swal-left-close:hover,
.swal2-popup > .app-swal-left-close:focus {
    background: #f3f4f6 !important;
    outline: none !important;
}
.swal2-popup:has(> .app-swal-left-close) > .swal2-title {
    padding-left: 3rem !important;
    padding-right: 3rem !important;
}

/* ADDED v2026-06-16.8465: Keep Schedule Match Google map visible inside narrow/mobile SweetAlert layouts. */
.swal2-popup.match-scheduler-swal .match-scheduler-map-wrap,
.swal2-popup.match-scheduler-swal .match-scheduler-map {
    display: block !important;
    visibility: visible !important;
    width: 100% !important;
    min-height: 180px !important;
    height: 180px !important;
}
@media (max-width: 640px) {
    .swal2-popup.match-scheduler-swal {
        width: calc(100vw - 1rem) !important;
        max-width: calc(100vw - 1rem) !important;
    }
    .swal2-popup.match-scheduler-swal .swal2-html-container {
        margin-left: .5rem !important;
        margin-right: .5rem !important;
        overflow-x: hidden !important;
    }
    .swal2-popup.match-scheduler-swal .match-scheduler-map-wrap,
    .swal2-popup.match-scheduler-swal .match-scheduler-map {
        min-height: 220px !important;
        height: 220px !important;
    }
}


/* CHANGED v2026-06-16.8475: Scheduler clock state halos use one tight icon-sized format so no square/air gap appears between the clock glyph and halo. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--ready,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--ready,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--complete,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--complete {
    --scheduler-clock-halo-size: 1.18rem;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: var(--scheduler-clock-halo-size) !important;
    min-width: var(--scheduler-clock-halo-size) !important;
    max-width: var(--scheduler-clock-halo-size) !important;
    height: var(--scheduler-clock-halo-size) !important;
    min-height: var(--scheduler-clock-halo-size) !important;
    max-height: var(--scheduler-clock-halo-size) !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    box-sizing: border-box !important;
    font-size: 1rem !important;
    line-height: 1 !important;
    overflow: visible !important;
    text-decoration: none !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set {
    color: var(--color-status-warning-text, #8a4b00) !important;
    box-shadow: 0 0 0 2px rgba(199, 120, 0, .34), 0 0 8px rgba(255, 193, 7, .34) !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--ready,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--ready {
    color: #195c2e !important;
    box-shadow: 0 0 0 2px rgba(47, 143, 79, .34), 0 0 8px rgba(47, 143, 79, .34) !important;
    animation: none !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--complete,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--complete {
    color: #7a0016 !important;
    box-shadow: 0 0 0 2px rgba(176, 0, 32, .34), 0 0 8px rgba(176, 0, 32, .34) !important;
    animation: none !important;
}
@keyframes matchSchedulerClockPulseGlow {
    0% { box-shadow: 0 0 0 2px rgba(199, 120, 0, .30), 0 0 7px rgba(255, 193, 7, .28); }
    50% { box-shadow: 0 0 0 2px rgba(199, 120, 0, .44), 0 0 14px rgba(255, 193, 7, .52); }
    100% { box-shadow: 0 0 0 2px rgba(199, 120, 0, .30), 0 0 7px rgba(255, 193, 7, .28); }
}



/* CHANGED v2026-06-16.8476: Amber scheduled Scheduler clock halo is static, matching green/red halo behavior without pulse animation. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set:hover,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-schedule-link--set:focus,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set:hover,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-schedule-link--set:focus {
    animation: none !important;
    box-shadow: 0 0 0 2px rgba(199, 120, 0, .34), 0 0 8px rgba(255, 193, 7, .34) !important;
}


/* CHANGED v2026-06-16.8484: Friendlies ad hoc availability uses Calendar cells and still needs the same selected-slot visual marker when every selected player is available. */
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-all-available,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell[data-friendlies-all-available="1"] {
    position: relative !important;
    cursor: default !important;
    border: 1px solid #000 !important;
    outline: 1px solid #000 !important;
    outline-offset: -1px !important;
    box-shadow: inset 0 0 0 1px #000 !important;
    background: transparent !important;
    background-color: transparent !important;
}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-all-available::before,
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-all-available::after,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell[data-friendlies-all-available="1"]::before,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell[data-friendlies-all-available="1"]::after {
    content: none !important;
    display: none !important;
}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-all-available > .calendar-player-band,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell[data-friendlies-all-available="1"] > .calendar-player-band {
    position: relative !important;
    z-index: 20 !important;
}
.friendlies-adhoc-player-list {
    max-height: 18rem;
    overflow: auto;
}
.friendlies-adhoc-player-option .friendlies-muted {
    font-size: 0.88em;
}

/* ADDED v2026-06-16.8483: Friendlies ad hoc availability cells are read-only, so they must receive the same player-band paint rules as league Calendar clickable cells without adding clickable behavior. */
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band,
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band {
    display: block !important;
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    transform: none !important;
    background-clip: border-box !important;
}
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band.is-available,
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band.is-available {
    background-color: var(--calendar-player-color) !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
    filter: none !important;
}


/* CHANGED v2026-06-16.8484: Friendlies ad hoc cells may be self-editable for the logged-in player while still using Friendlies-only overlap semantics. */
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell {
    cursor: pointer !important;
}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell > .calendar-player-band,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band,
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band {

    position: relative !important;
    z-index: 1 !important;

    min-width: 0 !important;
    max-width: 100% !important;



    outline: 0 !important;
    box-shadow: none !important;
    transform: none !important;

}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell > .calendar-player-band.is-available,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band.is-available,
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band.is-available {
    background-color: var(--calendar-player-color) !important;
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
    filter: none !important;
}

/* ADDED v2026-06-16.8485: Friendlies ad hoc availability uses the Calendar band elements outside the league Calendar page. Keep band height/paint identical for read-only and self-editable cells so existing availability is visible. */
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell {
    padding: 0 !important;
    min-width: 1.85rem;
    vertical-align: top;
    line-height: 0;
}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell > .calendar-player-band,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band,
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band {
    display: block !important;
    box-sizing: border-box !important;
    width: 100% !important;
    min-width: 100% !important;
    height: 0.48rem !important;
    min-height: 0.48rem !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    line-height: 0 !important;
    font-size: 0 !important;
    background-clip: border-box !important;
}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell > .calendar-player-band.is-available,
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band.is-available,
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band.is-available {
    background: var(--calendar-player-color) !important;
    background-color: var(--calendar-player-color) !important;
}
.table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell > .calendar-player-band:not(.is-available),
.table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band:not(.is-available),
.table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band:not(.is-available) {
    background: transparent !important;
    background-color: transparent !important;
}
@media (max-width: 640px) {
    .table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell,
    .table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell { min-width: 1.55rem; }
    .table-calendar.friendlies-adhoc-calendar-table td.friendlies-adhoc-clickable-cell > .calendar-player-band,
    .table-calendar.friendlies-adhoc-calendar-table td.calendar-readonly-cell > .calendar-player-band,
    .table-calendar.friendlies-adhoc-calendar-table .calendar-readonly-cell > .calendar-player-band {
        height: 0.42rem !important;
        min-height: 0.42rem !important;
    }
}

/* ADDED v2026-06-16.8487: Friendlies global player picker uses a compact dropdown instead of a long team/player list. */
.friendlies-adhoc-picker-form .friendlies-player-select {
    width: min(100%, 28rem);
    max-width: 100%;
}

/* ADDED v2026-06-16.8488: Friendlies ad hoc player selector/legend use compact player grids, not team rows. */
.friendlies-player-dropdown {
    border: 1px solid #c7d1db;
    border-radius: .45rem;
    background: #fff;
    padding: .45rem .6rem;
    margin: .35rem 0 .75rem;
    max-width: 76rem;
}
.friendlies-player-dropdown > summary {
    cursor: pointer;
    font-weight: 700;
    color: #003d73;
}
.friendlies-player-checkbox-grid,
.friendlies-adhoc-selected-player-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(10rem, 1fr));
    gap: .2rem .75rem;
    align-items: start;
    max-width: 76rem;
}
.friendlies-player-checkbox-grid { margin-top: .5rem; }
.friendlies-player-checkbox-option,
.friendlies-adhoc-selected-player {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    white-space: nowrap;
    min-width: 0;
}
.friendlies-player-checkbox-option span,
.friendlies-adhoc-selected-player a,
.friendlies-adhoc-selected-player span:not(.calendar-team-legend-swatch) {
    overflow: hidden;
    text-overflow: ellipsis;
}
.friendlies-adhoc-selected-player-grid {
    margin: .45rem 0 .75rem;
    background: #fff;
    padding: .35rem .45rem;
}
@media (max-width: 900px) {
    .friendlies-player-checkbox-grid,
    .friendlies-adhoc-selected-player-grid { grid-template-columns: repeat(2, minmax(9rem, 1fr)); }
}
@media (max-width: 560px) {
    .friendlies-player-checkbox-grid,
    .friendlies-adhoc-selected-player-grid { grid-template-columns: 1fr; }
}

/* CHANGED v2026-06-16.8489: Friendlies player picker uses compact left-checkbox rows in a bounded scroll panel. */
.friendlies-player-dropdown {
    max-height: 18rem !important;
    overflow: hidden !important;
}
.friendlies-player-checkbox-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(10rem, 1fr)) !important;
    gap: 0 .75rem !important;
    max-height: 14rem !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: .15rem .25rem .25rem !important;
    align-items: start !important;
}
.friendlies-player-checkbox-option {
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) !important;
    align-items: center !important;
    justify-content: start !important;
    gap: .35rem !important;
    margin: 0 !important;
    padding: .02rem .15rem !important;
    line-height: 1.16 !important;
    min-height: 1.15rem !important;
    white-space: nowrap !important;
}
.friendlies-player-checkbox-option .friendlies-player-checkbox-input,
.friendlies-player-checkbox-option input[type="checkbox"] {
    grid-column: 1 !important;
    grid-row: 1 !important;
    position: static !important;
    justify-self: start !important;
    align-self: center !important;
    margin: 0 !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
}
.friendlies-player-checkbox-option .friendlies-player-checkbox-name,
.friendlies-player-checkbox-option span {
    grid-column: 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}
@media (max-width: 900px) {
    .friendlies-player-checkbox-grid { grid-template-columns: repeat(2, minmax(9rem, 1fr)) !important; }
}
@media (max-width: 560px) {
    .friendlies-player-checkbox-grid { grid-template-columns: 1fr !important; }
}


/* CHANGED v2026-06-16.8490: Duplicate critical Friendlies ad hoc picker/calendar rules in static CSS; page also emits inline rules to bypass stale browser cache. */
.friendlies-adhoc-availability-section .friendlies-player-dropdown{max-height:18rem!important;overflow:hidden!important;}
.friendlies-adhoc-availability-section .friendlies-player-checkbox-grid{display:grid!important;grid-template-columns:repeat(4,minmax(10rem,1fr))!important;gap:0 .75rem!important;max-height:14rem!important;overflow-y:auto!important;overflow-x:hidden!important;padding:.15rem .25rem .25rem!important;align-items:start!important;}
.friendlies-adhoc-availability-section .friendlies-player-checkbox-option{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:.35rem!important;margin:0!important;padding:.02rem .15rem!important;line-height:1.16!important;min-height:1.15rem!important;white-space:nowrap!important;}
.friendlies-adhoc-availability-section .friendlies-player-checkbox-option input[type="checkbox"]{order:0!important;position:static!important;float:none!important;display:inline-block!important;margin:0!important;width:auto!important;min-width:0!important;max-width:none!important;flex:0 0 auto!important;}
.friendlies-adhoc-availability-section .friendlies-player-checkbox-name{order:1!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;}

.friendlies-adhoc-availability-section .friendlies-adhoc-calendar-table .calendar-player-band{display:block!important;width:100%!important;min-height:7px!important;height:9px!important;line-height:9px!important;margin:0!important;padding:0!important;border:0!important;background:transparent!important;}
.friendlies-adhoc-availability-section .friendlies-adhoc-calendar-table .calendar-player-band.is-available{background-color:var(--calendar-player-color)!important;opacity:1!important;}
@media(max-width:900px){.friendlies-adhoc-availability-section .friendlies-player-checkbox-grid,.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid{grid-template-columns:repeat(2,minmax(9rem,1fr))!important;}}


/* ADDED v2026-06-16.8498: Friendlies ad hoc picker search and compact four-column selected-player display. */
.friendlies-adhoc-availability-section .friendlies-player-search {
    display: block !important;
    width: calc(100% - .5rem) !important;
    max-width: 28rem !important;
    margin: .35rem .25rem .25rem !important;
    padding: .35rem .45rem !important;
    box-sizing: border-box !important;
}
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(10rem, 1fr)) !important;
    gap: 0 .75rem !important;

}
@media (max-width: 900px) {
    .friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid { grid-template-columns: repeat(2, minmax(9rem, 1fr)) !important; }
}
@media (max-width: 560px) {
    .friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid { grid-template-columns: 1fr !important; }
}

/* ADDED v8499: Database Tools page container normalization.
 * Keep the tool sections as first-class accordions instead of placing them
 * inside an extra bordered parent card. Also normalize section spacing so
 * each details block has consistent width, margin, padding, and summary fit.
 */
.admin-database-tools.admin-tool-page {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

.admin-database-tools.admin-tool-page > h3,
.admin-database-tools.admin-tool-page > .smallnote,
.admin-database-tools.admin-tool-page > p {
  margin-left: 0;
  margin-right: 0;
}

.admin-database-tools.admin-tool-page > details.database-tools-section,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details,
.admin-database-tools.admin-tool-page > details.admin-health-details {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  margin: 1rem 0;
  padding: 0.85rem;
  border-radius: 0.7rem;
}

.admin-database-tools.admin-tool-page > details.database-tools-section > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details > summary {
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 0.65rem 0.9rem;
  border-radius: 0.55rem;
}

.admin-database-tools.admin-tool-page > details.database-tools-section[open] > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details[open] > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details[open] > summary {
  margin-bottom: 0.75rem;
}

/* ADDED v8500: Database Tools flat section layout.
 * Remove inset/parent-card appearance from Database Tools accordions and let
 * tables fill the available content width while preserving horizontal scroll
 * for very wide SQL/history fields.
 */
.admin-database-tools.admin-tool-page {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

.admin-database-tools.admin-tool-page > h3,
.admin-database-tools.admin-tool-page > .smallnote,
.admin-database-tools.admin-tool-page > p {
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details,
.admin-database-tools.admin-tool-page > details.admin-health-details {
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  margin: 1rem 0 !important;
  padding: 0 !important;
  border-radius: .65rem !important;
  overflow: hidden !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details > summary {
  box-sizing: border-box !important;
  width: 100% !important;
  margin: 0 !important;
  padding: .65rem .9rem !important;
  border-radius: 0 !important;
  border-left: 0 !important;
  border-right: 0 !important;
  border-top: 0 !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section:not([open]) > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details:not([open]) > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details:not([open]) > summary {
  border-bottom: 0 !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section[open] > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details[open] > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details[open] > summary {
  margin-bottom: 0 !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section > :not(summary),
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > :not(summary),
.admin-database-tools.admin-tool-page > details.admin-health-details > :not(summary) {
  margin-left: .85rem;
  margin-right: .85rem;
}

.admin-database-tools.admin-tool-page > details.database-tools-section > .database-tools-table-container,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > .database-tools-table-container,
.admin-database-tools.admin-tool-page > details.admin-health-details > .database-tools-table-container,
.admin-database-tools.admin-tool-page > details.database-tools-section > .table-container,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > .table-container,
.admin-database-tools.admin-tool-page > details.admin-health-details > .table-container {
  width: calc(100% - 1.7rem) !important;
  max-width: calc(100% - 1.7rem) !important;
  box-sizing: border-box !important;
  margin: .75rem .85rem !important;
  overflow-x: auto !important;
}

.admin-database-tools.admin-tool-page .database-tools-table-container > table,
.admin-database-tools.admin-tool-page .table-container > table,
.admin-database-tools.admin-tool-page table.database-tools-table,
.admin-database-tools.admin-tool-page table.database-tools-config-audit-table {
  width: 100% !important;
  min-width: 100% !important;
  max-width: none !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page .database-tools-table th,
.admin-database-tools.admin-tool-page .database-tools-table td,
.admin-database-tools.admin-tool-page .database-tools-config-audit-table th,
.admin-database-tools.admin-tool-page .database-tools-config-audit-table td {
  box-sizing: border-box !important;
  vertical-align: top !important;
}

.admin-database-tools.admin-tool-page .database-tools-download-panel,
.admin-database-tools.admin-tool-page .database-tools-error-list,
.admin-database-tools.admin-tool-page .database-tools-sql-preview {
  max-width: calc(100% - 1.7rem) !important;
  box-sizing: border-box !important;
}

/* CHANGED v2026-06-16.8501: Friendlies + Database Tools compact layout refinements. */
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid,
.friendlies-adhoc-availability-section .friendlies-player-checkbox-grid {
  grid-template-columns: repeat(4, minmax(10rem, 1fr)) !important;
}

.database-tools-container {
  max-width: none !important;
  width: 100% !important;
}

.database-tools-container details.database-tools-section,
.database-tools-container details.database-tools-exclusive-details,
.database-tools-container details.admin-health-details {
  margin: 0.55rem 0 !important;
  padding: 0.45rem 0.55rem !important;
  border-radius: 0.55rem !important;
  box-sizing: border-box !important;
}

.database-tools-container details.database-tools-section > summary,
.database-tools-container details.database-tools-exclusive-details > summary,
.database-tools-container details.admin-health-details > summary {
  margin: -0.2rem -0.25rem 0 !important;
  padding: 0.35rem 0.45rem !important;
  border-radius: 0.45rem !important;
}

.database-tools-container details.database-tools-section[open] > summary,
.database-tools-container details.database-tools-exclusive-details[open] > summary,
.database-tools-container details.admin-health-details[open] > summary {
  margin-bottom: 0.45rem !important;
}

.database-tools-container .table-container,
.database-tools-container .database-tools-table-container,
.admin-page-container .database-tools-table-container {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0.35rem 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  box-sizing: border-box !important;
}

.database-tools-container .database-tools-table,
.database-tools-container .database-tools-config-audit-table,
.admin-page-container .database-tools-table,
.admin-page-container .database-tools-config-audit-table {
  width: max-content !important;
  min-width: 100% !important;
  max-width: none !important;
  table-layout: auto !important;
  border-collapse: collapse !important;
}

.database-tools-container .database-tools-table th,
.database-tools-container .database-tools-table td,
.database-tools-container .database-tools-config-audit-table th,
.database-tools-container .database-tools-config-audit-table td,
.admin-page-container .database-tools-table th,
.admin-page-container .database-tools-table td,
.admin-page-container .database-tools-config-audit-table th,
.admin-page-container .database-tools-config-audit-table td {
  max-width: none !important;
  width: auto !important;
  min-width: 0 !important;
  padding: 0.2rem 0.45rem !important;
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: keep-all !important;
  vertical-align: top !important;
}

.database-tools-container .database-tools-table code,
.database-tools-container .database-tools-config-audit-table code,
.admin-page-container .database-tools-table code,
.admin-page-container .database-tools-config-audit-table code {
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  word-break: keep-all !important;
}

.database-tools-container .database-tools-table p,
.database-tools-container .database-tools-table ul,
.database-tools-container .database-tools-table ol {
  margin-top: 0.15rem !important;
  margin-bottom: 0.15rem !important;
}


/* CHANGED v2026-06-16.8502: Friendlies ad hoc picker search and four-column selected-player layout hardening. */
.friendlies-adhoc-availability-section .friendlies-player-checkbox-grid,
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
}
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid {
  align-items: start !important;
  gap: 0 .65rem !important;
}
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player {
  display: inline-flex !important;
  align-items: center !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  white-space: nowrap !important;
  line-height: 1.12 !important;
}
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player a,
.friendlies-adhoc-availability-section .friendlies-adhoc-selected-player span:not(.calendar-team-legend-swatch) {
  min-width: 0 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
.friendlies-adhoc-availability-section .friendlies-player-checkbox-option[hidden] {
  display: none !important;
}
@media (max-width: 900px) {
  .friendlies-adhoc-availability-section .friendlies-player-checkbox-grid,
  .friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
@media (max-width: 560px) {
  .friendlies-adhoc-availability-section .friendlies-player-checkbox-grid,
  .friendlies-adhoc-availability-section .friendlies-adhoc-selected-player-grid {
    grid-template-columns: 1fr !important;
  }
}
.friendlies-adhoc-availability-section .friendlies-player-search-empty {
  margin: .2rem .25rem .35rem !important;
  padding: .25rem .35rem !important;
}

/* CHANGED v2026-06-16.8504: Database Tools table layout tightening.
 * Keep accordions flat, remove visible table wrapper chrome, avoid clipped
 * columns, and let wide diagnostic/export tables scroll horizontally instead
 * of wrapping or truncating text.
 */
.admin-database-tools.admin-tool-page > details.database-tools-section,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details,
.admin-database-tools.admin-tool-page > details.admin-health-details,
.database-tools-container details.database-tools-section,
.database-tools-container details.database-tools-exclusive-details,
.database-tools-container details.admin-health-details {
  margin: 0.35rem 0 !important;
  padding: 0 !important;
  border-radius: 0.55rem !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details > summary,
.database-tools-container details.database-tools-section > summary,
.database-tools-container details.database-tools-exclusive-details > summary,
.database-tools-container details.admin-health-details > summary {
  padding: 0.42rem 0.65rem !important;
  margin: 0 !important;
  border-radius: 0.5rem !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section[open] > summary,
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details[open] > summary,
.admin-database-tools.admin-tool-page > details.admin-health-details[open] > summary,
.database-tools-container details.database-tools-section[open] > summary,
.database-tools-container details.database-tools-exclusive-details[open] > summary,
.database-tools-container details.admin-health-details[open] > summary {
  margin-bottom: 0.35rem !important;
}

.admin-database-tools.admin-tool-page > details.database-tools-section > :not(summary),
.admin-database-tools.admin-tool-page > details.database-tools-exclusive-details > :not(summary),
.admin-database-tools.admin-tool-page > details.admin-health-details > :not(summary) {
  margin-left: 0.55rem !important;
  margin-right: 0.55rem !important;
}

.admin-database-tools.admin-tool-page .table-container,
.admin-database-tools.admin-tool-page .ui-table-container,
.admin-database-tools.admin-tool-page .database-tools-table-container,
.database-tools-container .table-container,
.database-tools-container .ui-table-container,
.database-tools-container .database-tools-table-container,
.admin-page-container .database-tools-table-container {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0.25rem 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: 0 !important;
  background: transparent !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page .database-tools-table,
.admin-database-tools.admin-tool-page .database-tools-config-audit-table,
.database-tools-container .database-tools-table,
.database-tools-container .database-tools-config-audit-table,
.admin-page-container .database-tools-table,
.admin-page-container .database-tools-config-audit-table {
  width: max-content !important;
  min-width: 100% !important;
  max-width: none !important;
  table-layout: auto !important;
  border-collapse: collapse !important;
}

.admin-database-tools.admin-tool-page .database-tools-table th,
.admin-database-tools.admin-tool-page .database-tools-table td,
.admin-database-tools.admin-tool-page .database-tools-config-audit-table th,
.admin-database-tools.admin-tool-page .database-tools-config-audit-table td,
.database-tools-container .database-tools-table th,
.database-tools-container .database-tools-table td,
.database-tools-container .database-tools-config-audit-table th,
.database-tools-container .database-tools-config-audit-table td,
.admin-page-container .database-tools-table th,
.admin-page-container .database-tools-table td,
.admin-page-container .database-tools-config-audit-table th,
.admin-page-container .database-tools-config-audit-table td {
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  padding: 0.22rem 0.45rem !important;
  white-space: nowrap !important;
  overflow: visible !important;
  text-overflow: clip !important;
  overflow-wrap: normal !important;
  word-break: keep-all !important;
  vertical-align: top !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table th:nth-child(1),
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table td:nth-child(1) { min-width: 17rem !important; }
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table th:nth-child(2),
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table td:nth-child(2) { min-width: 7rem !important; }
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table th:nth-child(3),
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table td:nth-child(3) { min-width: 31rem !important; }
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table th:nth-child(4),
.admin-database-tools.admin-tool-page .database-tools-fk-readiness-table td:nth-child(4) { min-width: 22rem !important; }

.admin-database-tools.admin-tool-page .database-tools-config-audit-table th:nth-child(1),
.admin-database-tools.admin-tool-page .database-tools-config-audit-table td:nth-child(1) { min-width: 14rem !important; }
.admin-database-tools.admin-tool-page .database-tools-config-audit-table th:nth-child(2),
.admin-database-tools.admin-tool-page .database-tools-config-audit-table td:nth-child(2) { min-width: 7rem !important; }
.admin-database-tools.admin-tool-page .database-tools-config-audit-table th:nth-child(3),
.admin-database-tools.admin-tool-page .database-tools-config-audit-table td:nth-child(3) { min-width: 42rem !important; }

.admin-database-tools.admin-tool-page .database-tools-settings-table th:nth-child(1),
.admin-database-tools.admin-tool-page .database-tools-settings-table td:nth-child(1) { min-width: 18rem !important; }
.admin-database-tools.admin-tool-page .database-tools-settings-table th:nth-child(2),
.admin-database-tools.admin-tool-page .database-tools-settings-table td:nth-child(2) { min-width: 40rem !important; }

/* ADDED v2026-06-18.8916: Calendar pages opened from Matches show the selected matchup in bold above the availability grid. */
.calendar-match-context-title {
    margin: 0.5rem 0 0.75rem 0;
    text-align: center;
    font-size: 1rem;
}

/** ADDED v2026-06-18.8961
 * Pool heading keeps only the mobile chat shortcut, with spacing after Pool X.
 * Match chat shortcuts render inline beside the opposing team instead of in the
 * absolute-positioned match action rail.
 */
.matches-pool-heading-cell .app-link-group-pool {
    margin-left: .45rem !important;

}
.matches-pool-heading-cell .app-link-group-pool .matches-pool-chat-link {
    margin-left: .15rem !important;
}
body.app-player .matches-table.match-layout-table .matches-inline-chat-link {
    position: static !important;
    inset: auto !important;
    transform: none !important;
    margin-left: .35rem !important;
    vertical-align: middle !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 0 .12rem !important;
    line-height: 1 !important;
    text-decoration: none !important;
}
@media screen and (max-width: 768px) {
    .matches-pool-heading-cell .app-link-group-pool .matches-pool-chat-link.mobileonly,
    body.app-player .matches-table.match-layout-table .matches-inline-chat-link.mobileonly {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
    }
}
@media screen and (min-width: 769px) {
    .matches-pool-heading-cell .app-link-group-pool .matches-pool-chat-link.mobileonly,
    body.app-player .matches-table.match-layout-table .matches-inline-chat-link.mobileonly {
        display: none !important;
    }
}


/** ADDED v2026-06-18.8963
 * Keep the match chat icon horizontally attached to Player 2's name instead of
 * wrapping onto its own line.
 */
body.app-player .matches-table.match-layout-table .matches-team-player2-with-chat {
    display: inline-flex !important;
    align-items: baseline !important;
    gap: .35rem !important;
    white-space: nowrap !important;
    vertical-align: baseline !important;
}
body.app-player .matches-table.match-layout-table .matches-team-player2-with-chat .matches-inline-chat-link {
    flex: 0 0 auto !important;
    margin-left: 0 !important;
}

/** ADDED v2026-06-18.8965
 * Prevent individual player names from wrapping when the mobile chat shortcut is
 * appended after Player 2. The icon may wrap if needed, but the name itself
 * stays intact.
 */
body.app-player .matches-table.match-layout-table .matches-team-player2-with-chat > a,
body.app-player .matches-table.match-layout-table .matches-team-player2-with-chat .player-link,
body.app-player .matches-table.match-layout-table .matches-team-player2-with-chat .component-player-link {
    white-space: nowrap !important;
    flex: 0 0 auto !important;
    min-width: max-content !important;
}

/** ADDED v2026-06-18.8966
 * Keep the full opposing team and mobile chat shortcut together on one line
 * where space allows. This is limited to match rows that append the chat icon.
 */
body.app-player .matches-table.match-layout-table .component-team-members--with-chat {
    display: inline-flex !important;
    flex-wrap: nowrap !important;
    align-items: baseline !important;
    white-space: nowrap !important;
    max-width: none !important;
}
body.app-player .matches-table.match-layout-table .component-team-members--with-chat > a,
body.app-player .matches-table.match-layout-table .component-team-members--with-chat .team-pair-separator,
body.app-player .matches-table.match-layout-table .component-team-members--with-chat .matches-team-player2-with-chat,
body.app-player .matches-table.match-layout-table .component-team-members--with-chat .matches-team-player2-with-chat > a,
body.app-player .matches-table.match-layout-table .component-team-members--with-chat .matches-inline-chat-link {
    flex: 0 0 auto !important;
    white-space: nowrap !important;
}

/* ADDED v2026-06-19.8978: Gated Challenge Mode posted-outcome challenge markers. */
.match-outcome-challenged-cell {
    background: #fff3cd !important;
}
.match-outcome-challenge-inline {
    margin-top: 0.25rem;
    text-align: center;
    font-size: 0.85rem;
    line-height: 1.1;
}
.match-outcome-challenge-link,
.match-outcome-challenge-status {
    display: inline-block;
    white-space: nowrap;
    font-size: 0.85rem;
    line-height: 1.1;
}
.match-outcome-challenge-status--active {
    font-weight: 700;
    color: #7a4b00;
}

/* ADDED v2026-06-19.8989: Pool title calendar icon opens a per-pool match schedule summary SweetAlert. */
.matches-pool-schedule-swal-link {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}
.matches-pool-schedule-swal-link:hover,
.matches-pool-schedule-swal-link:focus {
    text-decoration: underline;
}
.matches-pool-schedule-icon {
    display: inline-block;
    line-height: 1;
    font-size: 0.95em;
}
.matches-pool-schedule-summary,
.matches-pool-schedule-summary .matches-pool-schedule-list {
    text-align: left;
}
.matches-pool-schedule-list {
    margin: 0;
    padding-left: 1.5rem;
}
.matches-pool-schedule-item {
    margin: 0 0 0.85rem 0;
}
.matches-pool-schedule-label {
    font-weight: 700;
}
.matches-pool-schedule-unscheduled {
    color: #6b7280;
}

/* ADDED v2026-06-19.8991: Matches Calendar link sits to the left of team names. */
body.app-player .component-team-pair--matches.component-team-pair--has-leading {
    grid-template-columns: auto minmax(0, 1fr) auto;
    column-gap: 0.28rem;
}
body.app-player .component-team-pair--matches .component-team-pair-leading {
    align-self: center;
    justify-self: start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
body.app-player .component-team-pair--matches .component-team-pair-leading .matches-calendar-schedule-link {
    margin: 0 !important;
}


/* ADDED v2026-06-19.8992: Scheduler Calendar link sits immediately left of the team summary. */
.match-scheduler-summary-row {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    flex-wrap: wrap;
}
.match-scheduler-calendar-context-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    text-decoration: none;
}
.match-scheduler-summary-teams {
    display: inline;
}


/* ADDED v2026-06-19.8995: Calendar match-summary icon opens a SweetAlert and must not show an underline/hover artifact below the icon. */
.calendar-match-context-link,
.calendar-match-context-link:hover,
.calendar-match-context-link:focus,
.calendar-match-context-link:active {
    text-decoration: none !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
    outline-offset: 2px;
}


/* ADDED v2026-06-19.8996: Challenge history tables remain compact on player/admin review pages. */
.match-outcome-challenge-history-card {
    margin-top: 1rem;
}
.match-outcome-challenge-history-table th,
.match-outcome-challenge-history-table td {
    vertical-align: top;
}
.match-outcome-admin-challenge-row--resolved {
    opacity: 0.92;
}

/* CHANGED v2026-06-20.9116: compact persistent admin impersonation mode banner with red explicit end control. */
.admin-impersonation-banner {
    margin: 0 0 1rem 0;
}
.admin-impersonation-banner-inner {
    display: block;
}
.admin-impersonation-banner form { margin: 0; }
.admin-impersonation-banner button.admin-impersonation-end-button {
    background: #b42318 !important;
    border-color: #8f1d14 !important;
    color: #fff !important;
    white-space: normal;
    width: 100%;
}
.admin-impersonation-banner button.admin-impersonation-end-button:hover,
.admin-impersonation-banner button.admin-impersonation-end-button:focus {
    background: #8f1d14 !important;
    border-color: #73170f !important;
}


/* CHANGED v2026-06-20.9117: Force the active admin impersonation end control to render as destructive/red even after player layout button overrides. */
body .admin-impersonation-banner .admin-impersonation-end-button,
body .admin-impersonation-banner button.admin-impersonation-end-button,
body .admin-impersonation-banner form button.admin-impersonation-end-button {
    background-color: #b42318 !important;
    background: #b42318 !important;
    border-color: #8f1d14 !important;
    color: #fff !important;
}
body .admin-impersonation-banner .admin-impersonation-end-button:hover,
body .admin-impersonation-banner button.admin-impersonation-end-button:hover,
body .admin-impersonation-banner form button.admin-impersonation-end-button:hover,
body .admin-impersonation-banner .admin-impersonation-end-button:focus,
body .admin-impersonation-banner button.admin-impersonation-end-button:focus,
body .admin-impersonation-banner form button.admin-impersonation-end-button:focus {
    background-color: #8f1d14 !important;
    background: #8f1d14 !important;
    border-color: #73170f !important;
    color: #fff !important;
}

/* CHANGED v2026-06-21.9199: Simple Challenge Mode match-cell action anchor. The
   team cell owns relative positioning; the hamburger is a small absolute button
   and no stretched action rail/pseudo-overlay may cross team names. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell {
    position: relative !important;
    overflow: visible !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches {
    position: static !important;
    min-height: 0 !important;
    height: auto !important;
    align-items: flex-start !important;
    padding-right: calc(var(--player-action-icon-size, 1.7rem) + .55rem) !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .component-team-pair--matches .component-team-pair-action,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .component-team-pair--matches .component-team-pair-action {
    position: static !important;
    display: inline !important;
    inset: auto !important;
    transform: none !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-team-actions--menu,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-team-actions--menu {
    position: static !important;
    display: inline !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu {
    position: absolute !important;
    top: .22rem !important;
    right: .22rem !important;
    z-index: 40 !important;
    display: block !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;
    min-height: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu::before,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu::after,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu::before,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu::after,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-team-actions--menu::before,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-team-actions--menu::after,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-team-actions--menu::before,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-team-actions--menu::after {
    content: none !important;
    display: none !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu-toggle,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu-toggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: var(--player-action-icon-size, 1.7rem) !important;
    min-width: var(--player-action-icon-size, 1.7rem) !important;
    height: var(--player-action-icon-size, 1.7rem) !important;
    min-height: var(--player-action-icon-size, 1.7rem) !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid rgba(0,0,0,.22) !important;
    border-radius: .2rem !important;
    background: #fff !important;
    box-shadow: none !important;
    text-decoration: none !important;
    list-style: none !important;
    line-height: 1 !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu-panel,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu-panel {
    position: absolute !important;
    top: calc(100% + .18rem) !important;
    right: 0 !important;
    min-width: max-content !important;
    width: max-content !important;
    padding: .35rem !important;
    border: 1px solid rgba(0,0,0,.18) !important;
    border-radius: .5rem !important;
    background: #fff !important;
    box-shadow: 0 .35rem 1rem rgba(0,0,0,.18) !important;
    display: flex !important;
    flex-direction: column !important;
    gap: .12rem !important;
}
@media (hover: hover) and (pointer: fine) {
    body.app-player .matches-table.match-layout-table .matches-action-menu .matches-action-menu-item--match-chat,
    body.app-player .matches-table.match-layout-table .matches-action-menu .mobileonly {
        display: none !important;
    }
}


/* ADDED v2026-06-21.9200: Challenge Mode direct hamburger overlay.
   The action menu is emitted directly in the team cell, not through the older
   component-team-pair action rail. This prevents display:contents/action-rail
   rules from hiding the hamburger or drawing a horizontal guide through names. */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute {
    position: absolute !important;
    top: .22rem !important;
    right: .22rem !important;
    z-index: 60 !important;
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute .matches-action-menu,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute .matches-action-menu {
    position: static !important;
    display: block !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute::before,
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute::after,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute::before,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute::after {
    content: none !important;
    display: none !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute .matches-action-menu-toggle,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute .matches-action-menu-toggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: var(--player-action-icon-size, 1.7rem) !important;
    min-width: var(--player-action-icon-size, 1.7rem) !important;
    height: var(--player-action-icon-size, 1.7rem) !important;
    min-height: var(--player-action-icon-size, 1.7rem) !important;
    line-height: 1 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid rgba(0,0,0,.25) !important;
    border-radius: .2rem !important;
    background: #fff !important;
    color: #111 !important;
    text-decoration: none !important;
    cursor: pointer !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute .matches-action-menu-panel,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute .matches-action-menu-panel {
    position: absolute !important;
    top: calc(var(--player-action-icon-size, 1.7rem) + .35rem) !important;
    right: 0 !important;
    z-index: 80 !important;
    width: max-content !important;
    min-width: max-content !important;
    max-width: 14rem !important;
    overflow: visible !important;
}
body.app-player .matches-table.match-layout-table td.matches-table-team-cell > .matches-team-actions--absolute .matches-action-menu-item,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell > .matches-team-actions--absolute .matches-action-menu-item {
    position: static !important;
    display: flex !important;
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    align-items: center !important;
    gap: .4rem !important;
    white-space: nowrap !important;
}

/* ADDED v2026-06-21.9201: Repair Challenge Mode match-cell hamburger rendering.
   Hide the native details marker/down arrow, center the three-line icon, keep
   menu rows inside the dropdown, and hide Match Chat on desktop while keeping
   it available for mobile layouts. */
.matches-table.match-layout-table .matches-action-menu-toggle,
.matches-table.match-layout-table .matches-action-menu-toggle.matches-team-action {
    list-style: none !important;
    -webkit-appearance: none !important;
    appearance: none !important;
    text-align: center !important;
    overflow: hidden !important;
}
.matches-table.match-layout-table .matches-action-menu-toggle::-webkit-details-marker,
.matches-table.match-layout-table .matches-action-menu-toggle::marker {
    display: none !important;
    content: "" !important;
}
.matches-table.match-layout-table .matches-action-menu-toggle::before,
.matches-table.match-layout-table .matches-action-menu-toggle::after {
    content: none !important;
    display: none !important;
}
.matches-table.match-layout-table .matches-action-menu-toggle .matches-action-menu-toggle-lines,
.matches-table.match-layout-table .matches-action-menu-toggle > span {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    height: 100% !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center !important;
    transform: none !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-link.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-schedule-link.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel .matches-manage-link.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-manage-link.matches-action-menu-item {
    position: static !important;
    inset: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    left: auto !important;
    transform: none !important;
    float: none !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: .38rem .55rem !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: inherit !important;
    text-align: left !important;
    white-space: nowrap !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-text {
    white-space: nowrap !important;
}
@media (hover: hover) and (pointer: fine), (min-width: 769px) {
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat,
    .matches-table.match-layout-table .matches-action-menu-panel .mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel a.mobileonly {
        display: none !important;
    }
}
@media (hover: none), (pointer: coarse), (max-width: 768px) {
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat,
    .matches-table.match-layout-table .matches-action-menu-panel .mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel a.mobileonly {
        display: flex !important;
    }
}


/* PATCH 9202 - Match Menu Responsive Chat and Cross-Pool Score Display
   Keep Match Chat mobile-only; keep Calendar aligned as a normal dropdown row. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--calendar,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-schedule-link.matches-action-menu-item {
    position: static !important;
    inset: auto !important;
    float: none !important;
    width: 100% !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .45rem !important;
    padding: .38rem .5rem !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    white-space: nowrap !important;
    line-height: 1.2 !important;
    text-decoration: none !important;
}
.matches-table.match-layout-table .matches-action-menu-panel {

    min-width: 8.25rem !important;
    max-width: 12rem !important;

}
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat.mobileonly,
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat.mobile-only,
.matches-table.match-layout-table .matches-action-menu-panel a.mobileonly,
.matches-table.match-layout-table .matches-action-menu-panel a.mobile-only {
    display: none !important;
}
@media (hover: none), (pointer: coarse), (max-width: 720px) {
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat.mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat.mobile-only,
    .matches-table.match-layout-table .matches-action-menu-panel a.mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel a.mobile-only {
        display: flex !important;
    }
}

/* PATCH 9203 - Match menu responsive chat and Calendar row final repair */
.matches-table.match-layout-table .matches-action-menu-panel > a,
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--calendar,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item--calendar {
    position: static !important;
    inset: auto !important;
    transform: none !important;
    float: none !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .45rem !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    padding: .38rem .45rem !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    line-height: 1.2 !important;
    text-align: left !important;
    white-space: nowrap !important;
    text-decoration: none !important;
}
.matches-table.match-layout-table .matches-action-menu-panel [data-mobile-only-match-chat='1'],
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat,
.matches-table.match-layout-table .matches-action-menu-panel .mobileonly,
.matches-table.match-layout-table .matches-action-menu-panel .mobile-only { display: none !important; }
@media (hover: none), (pointer: coarse), (max-width: 720px) {
    .matches-table.match-layout-table .matches-action-menu-panel [data-mobile-only-match-chat='1'],
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat.mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat.mobile-only,
    .matches-table.match-layout-table .matches-action-menu-panel .mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel .mobile-only { display: flex !important; }
}

/* ADDED v2026-06-21.9205: Hide mobile-only Match Chat on desktop/pointer layouts. */
@media (hover: hover) and (pointer: fine), (min-width: 769px) {
  body.app-player .matches-table.match-layout-table .matches-action-menu-item--match-chat,
  body.app-player .matches-table.match-layout-table [data-mobile-only-match-chat="1"] { display: none !important; }
}


/* ADDED v2026-06-21.9206: Match menu body-layer overlay and mobile-only chat guard. */
.matches-table.match-layout-table td.matches-table-team-cell,
.matches-table.match-layout-table td.component-player-match-team-cell,
.matches-table.match-layout-table .component-team-pair,
.matches-table.match-layout-table .component-team-pair--matches,
.matches-table.match-layout-table .matches-team-actions--absolute {
    overflow: visible !important;
}
.matches-table.match-layout-table .matches-action-menu {
    position: relative !important;
    z-index: 5000 !important;
}
.matches-table.match-layout-table .matches-action-menu-panel {
    position: fixed !important;
    z-index: 2147483000 !important;
    min-width: 8.75rem !important;
    width: max-content !important;
    max-width: min(14rem, calc(100vw - 16px)) !important;
    overflow: visible !important;
    display: none !important;
}
.matches-table.match-layout-table .matches-action-menu[open] .matches-action-menu-panel {
    display: flex !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item--match-chat,
.matches-table.match-layout-table .matches-action-menu-panel .mobileonly,
.matches-table.match-layout-table .matches-action-menu-panel .mobile-only {
    display: none !important;
}
@media (max-width: 767.98px), (hover: none) and (pointer: coarse) {
    .matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item--match-chat,
    .matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item--match-chat,
    .matches-table.match-layout-table .matches-action-menu-panel .mobileonly,
    .matches-table.match-layout-table .matches-action-menu-panel .mobile-only {
        display: flex !important;
    }
}


/* PATCH 9209 - Schedule Summary link, status Calendar icons, and score-entry repair */
.matches-pool-schedule-swal-link,
.matches-pool-schedule-swal-link:hover,
.matches-pool-schedule-swal-link:focus,
.matches-pool-schedule-swal-link:active {
    text-decoration: none !important;
}
.matches-pool-schedule-swal-link .matches-pool-schedule-icon {
    text-decoration: none !important;
}

.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link {
    position: static !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: .45rem !important;
    padding: .38rem .45rem !important;
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    text-decoration: none !important;
    white-space: nowrap !important;
    width: auto !important;
    height: auto !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    height: 1.35rem !important;
    border-radius: 999px !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-status--unscheduled .matches-action-menu-icon {
    box-shadow: none !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-status--ready .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(46, 160, 67, .45) !important;
    background: rgba(46, 160, 67, .12) !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-status--set .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .55) !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-status--complete .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .55) !important;
    background: transparent !important;
}

/* PATCH 9210 - Challenge Mode Calendar menu icon/text cleanup */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:visited,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:hover,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:focus,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:active {

    outline: none !important;
    border: 0 !important;


    -webkit-text-fill-color: currentColor !important;


}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-text {

    -webkit-text-fill-color: currentColor !important;


}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon {
    outline: none !important;
    border: 0 !important;
}

.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon {

    background: rgba(46, 160, 67, .12) !important;
}




/* PATCH 9211 - Calendar menu row styling cleanup
   The Calendar menu item carries match schedule status classes so the icon can
   show a tight status halo. Those same classes must not style the whole menu
   link, because the broader scheduler-link halo/text colour creates an extra
   outline around the icon and highlights the Calendar text. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--ready,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--set,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--complete,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link.matches-schedule-link--ready,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link.matches-schedule-link--set,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link.matches-schedule-link--complete {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    padding: .38rem .55rem !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: .35rem !important;
    outline: none !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    color: inherit !important;
    -webkit-text-fill-color: currentColor !important;
    font-weight: 400 !important;
    text-decoration: none !important;
    line-height: 1.2 !important;
    overflow: visible !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-text,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link .matches-action-menu-text {
    color: inherit !important;
    -webkit-text-fill-color: currentColor !important;
    font-weight: 400 !important;
    text-decoration: none !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link .matches-action-menu-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.25rem !important;
    min-width: 1.25rem !important;
    max-width: 1.25rem !important;
    height: 1.25rem !important;
    min-height: 1.25rem !important;
    max-height: 1.25rem !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    outline: none !important;
    border-radius: 999px !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    color: inherit !important;
    -webkit-text-fill-color: currentColor !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--unscheduled .matches-action-menu-icon {
    box-shadow: none !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(46, 160, 67, .45) !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .55) !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .55) !important;
    background: transparent !important;
}

/* ADDED v2026-06-22.9213: Challenge menu item alignment. */
.matches-action-menu-item.matches-challenge-link { align-items: center; }

/* ADDED v2026-06-22.9216: Challenge Mode locked outcome status highlighting. */


.matches-table.match-layout-table .challenge-outcome-locked.input-score,
.matches-table.match-layout-table span.challenge-outcome-locked.input-score,
.player-matches-page .challenge-outcome-locked.input-score,
.player-matches-page span.challenge-outcome-locked.input-score {
    border-width: 2px;
    border-style: solid;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.55);
    cursor: help;
}

.matches-table.match-layout-table .challenge-outcome-challengeable.input-score,
.matches-table.match-layout-table td.challenge-outcome-challengeable .challenge-outcome-locked.input-score,
.player-matches-page .challenge-outcome-challengeable.input-score,
.player-matches-page td.challenge-outcome-challengeable .challenge-outcome-locked.input-score {
    border-color: #c7811d;
    background-image: linear-gradient(0deg, rgba(255, 193, 7, .20), rgba(255, 193, 7, .20));
}

.matches-table.match-layout-table .challenge-outcome-challenged.input-score,
.matches-table.match-layout-table td.challenge-outcome-challenged .challenge-outcome-locked.input-score,
.player-matches-page .challenge-outcome-challenged.input-score,
.player-matches-page td.challenge-outcome-challenged .challenge-outcome-locked.input-score {
    border-color: #b42318;
    background-image: linear-gradient(0deg, rgba(244, 67, 54, .16), rgba(244, 67, 54, .16));
}

.matches-table.match-layout-table .challenge-outcome-confirmed.input-score,
.matches-table.match-layout-table .challenge-outcome-final.input-score,
.matches-table.match-layout-table td.challenge-outcome-confirmed .challenge-outcome-locked.input-score,
.matches-table.match-layout-table td.challenge-outcome-final .challenge-outcome-locked.input-score,
.player-matches-page .challenge-outcome-confirmed.input-score,
.player-matches-page .challenge-outcome-final.input-score,
.player-matches-page td.challenge-outcome-confirmed .challenge-outcome-locked.input-score,
.player-matches-page td.challenge-outcome-final .challenge-outcome-locked.input-score {
    border-color: #667085;
    background-image: linear-gradient(0deg, rgba(102,112,133,.14), rgba(102,112,133,.14));
}



/* ADDED v2026-06-22.9218: Move Challenge Mode locked outcome status highlight from score pill/input to the table cell. */
.matches-table.match-layout-table td.challenge-outcome-cell,
.matches-table.match-layout-table td.challenge-outcome-locked,
.player-matches-page td.challenge-outcome-cell,
.player-matches-page td.challenge-outcome-locked {
    position: relative;
}

.matches-table.match-layout-table td.challenge-outcome-locked,
.player-matches-page td.challenge-outcome-locked {
    box-shadow: inset 0 0 0 2px rgba(102, 112, 133, .55);
    background-image: linear-gradient(0deg, rgba(102, 112, 133, .08), rgba(102, 112, 133, .08));
}

.matches-table.match-layout-table td.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-challengeable {
    box-shadow: inset 0 0 0 2px rgba(199, 129, 29, .80);
    background-image: linear-gradient(0deg, rgba(255, 193, 7, .14), rgba(255, 193, 7, .14));
}

.matches-table.match-layout-table td.challenge-outcome-challenged,
.player-matches-page td.challenge-outcome-challenged {
    box-shadow: inset 0 0 0 2px rgba(180, 35, 24, .85);
    background-image: linear-gradient(0deg, rgba(244, 67, 54, .12), rgba(244, 67, 54, .12));
}

.matches-table.match-layout-table td.challenge-outcome-confirmed,
.matches-table.match-layout-table td.challenge-outcome-final,
.player-matches-page td.challenge-outcome-confirmed,
.player-matches-page td.challenge-outcome-final {
    box-shadow: inset 0 0 0 2px rgba(102, 112, 133, .65);
    background-image: linear-gradient(0deg, rgba(102, 112, 133, .10), rgba(102, 112, 133, .10));
}

.matches-table.match-layout-table .challenge-outcome-locked.input-score,
.matches-table.match-layout-table span.challenge-outcome-locked.input-score,
.player-matches-page .challenge-outcome-locked.input-score,
.player-matches-page span.challenge-outcome-locked.input-score {
    border-color: #c9ced6;
    border-width: 1px;
    box-shadow: none;
    background-image: none;
}

.matches-table.match-layout-table td.challenge-outcome-challengeable .challenge-outcome-locked.input-score,
.matches-table.match-layout-table td.challenge-outcome-challenged .challenge-outcome-locked.input-score,
.matches-table.match-layout-table td.challenge-outcome-confirmed .challenge-outcome-locked.input-score,
.matches-table.match-layout-table td.challenge-outcome-final .challenge-outcome-locked.input-score,
.player-matches-page td.challenge-outcome-challengeable .challenge-outcome-locked.input-score,
.player-matches-page td.challenge-outcome-challenged .challenge-outcome-locked.input-score,
.player-matches-page td.challenge-outcome-confirmed .challenge-outcome-locked.input-score,
.player-matches-page td.challenge-outcome-final .challenge-outcome-locked.input-score {
    border-color: #c9ced6;
    background-image: none;
}

.matches-table.match-layout-table .challenge-outcome-locked.input-score.score-win,
.matches-table.match-layout-table .challenge-outcome-locked.input-score.win,
.player-matches-page .challenge-outcome-locked.input-score.score-win,
.player-matches-page .challenge-outcome-locked.input-score.win {
    background-color: var(--player-score-win-bg, #bdf8cd);
}


/* PATCH 9222 - Consolidated post-9218 UI/readback implementation repair */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:visited,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:hover,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:focus,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:active {
  color: inherit !important;
  font-weight: 400 !important;
  text-decoration: none !important;
  background: transparent !important;
  outline: 0 !important;
  box-shadow: none !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-text {
  color: inherit !important;
  font-weight: 400 !important;
  text-decoration: none !important;
  background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon *,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::after {
  outline: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
}
.matches-table.match-layout-table td.challenge-outcome-challengeable,
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-challengeable {
  border-color: rgba(214, 160, 48, .35) !important;
  box-shadow: none !important;
  outline: 0 !important;
  background-color: transparent !important;
}
.matches-table.match-layout-table .input-score.score-loss,
.matches-table.match-layout-table .input-score.loss,
.matches-table.match-layout-table .challenge-outcome-locked.input-score.score-loss,
.matches-table.match-layout-table .challenge-outcome-locked.input-score.loss,
.player-matches-page .input-score.score-loss,
.player-matches-page .input-score.loss,
.player-matches-page .challenge-outcome-locked.input-score.score-loss,
.player-matches-page .challenge-outcome-locked.input-score.loss {
  background: #fff !important;
  background-color: #fff !important;
  border-color: #c9d0d8 !important;
  color: inherit !important;
  box-shadow: none !important;
}
.challenge-event-modal .swal2-html-container { text-align: left !important; }
.challenge-event-review-note {
  background: #fff8d8;
  border: 1px solid #e4c96a;
  border-radius: 8px;
  padding: .75rem .9rem;
  margin: 0 0 1rem;
  color: #333;
}
.challenge-event-result-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  border: 1px solid #d7dde5;
  border-radius: 8px;
  padding: .7rem .8rem;
  margin: .55rem 0;
  background: #fff;
}
.challenge-event-result-main { display: flex; flex-direction: column; gap: .25rem; }
.challenge-event-result-score { font-size: 1.05rem; }
.challenge-event-result-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  padding: .45rem .7rem;
  background: #255bb7;
  color: #fff !important;
  text-decoration: none !important;
  white-space: nowrap;
}
.challenge-event-result-button:hover, .challenge-event-result-button:focus { background: #17438d; }


/* PATCH 9224 - Posted result readback and calendar menu style enforcement */
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link,
.player-matches-page .matches-action-menu-panel a.matches-calendar-menu-link,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link:link,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link:visited,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link:hover,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link:focus,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link:active {
  color: var(--player-text-color, #1f2937) !important;
  background: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  font-weight: 400 !important;
  text-decoration: none !important;
}
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-text {
  color: var(--player-text-color, #1f2937) !important;
  background: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
  font-weight: 400 !important;
  text-decoration: none !important;
}
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon *,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::before,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::after {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  text-shadow: none !important;
}
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--ready,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--set,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--complete {
  color: var(--player-text-color, #1f2937) !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* ADDED v2026-06-22.9226: Challenge Event modal winner/loser metadata. */
.challenge-event-result-teams{display:flex;flex-direction:column;gap:2px;margin-top:4px;font-size:.9em;color:#555;}
.challenge-event-result-score{display:block;margin-top:4px;}

/* PATCH 9227: compact Challenge Event score table */
.challenge-event-score-table {
  width: 100%;
  border-collapse: collapse;
  margin: .75rem 0 1rem;
}
.challenge-event-score-table th,
.challenge-event-score-table td {
  border: 1px solid #d5dbe5;
  padding: .45rem .55rem;
  text-align: center;
  vertical-align: middle;
}
.challenge-event-score-table th:first-child,
.challenge-event-score-table td:first-child,
.challenge-event-score-table .challenge-event-score-team-col {
  text-align: left;
  width: 42%;
}
.challenge-event-result-button--small {
  display: inline-block;
  margin-top: .25rem;
  padding: .2rem .45rem;
  font-size: .78rem;
  line-height: 1.2;
}

/* PATCH 9232 - Challenge Modal Menu Z-Index and PROD Refresh Table UI */
body.app-player .matches-table.match-layout-table td.matches-table-team-cell,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell,
.player-matches-page .matches-table.match-layout-table td.matches-table-team-cell,
.player-matches-page .matches-table.match-layout-table td.component-player-match-team-cell {
  overflow: visible !important;
}

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu,
.player-matches-page .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu,
.player-matches-page .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu,
.matches-action-menu {
  position: relative !important;
  z-index: 1 !important;
}

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu[open],
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu[open],
.player-matches-page .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu[open],
.player-matches-page .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu[open],
.matches-action-menu[open] {
  z-index: 30000 !important;
}

body.app-player .matches-table.match-layout-table td.matches-table-team-cell:has(.matches-action-menu[open]),
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell:has(.matches-action-menu[open]),
.player-matches-page .matches-table.match-layout-table td.matches-table-team-cell:has(.matches-action-menu[open]),
.player-matches-page .matches-table.match-layout-table td.component-player-match-team-cell:has(.matches-action-menu[open]) {
  position: relative !important;
  z-index: 29999 !important;
}

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu-panel,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu-panel,
.player-matches-page .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu-panel,
.player-matches-page .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu-panel,
.matches-action-menu-panel,
.match-action-dropdown,
.match-row-menu-panel,
.match-menu-content {
  position: absolute !important;
  z-index: 30001 !important;
  overflow: visible !important;
}

body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu > summary,
body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu > summary,
.player-matches-page .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu > summary,
.player-matches-page .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu > summary,
.matches-action-menu > summary {
  position: relative !important;
  z-index: 1 !important;
}

.challenge-event-score-table th.challenge-event-team-cell,
.challenge-event-score-table .challenge-event-team-cell,
.challenge-event-score-table tbody th,
.challenge-event-score-table tbody td:first-child {
  font-weight: 400 !important;
}

.challenge-event-score-table .challenge-event-team-cell {
  line-height: 1.22 !important;
  white-space: normal !important;
}

.admin-database-tools.admin-tool-page #database-tools-refresh-test,
.admin-database-tools.admin-tool-page details#database-tools-refresh-test {
  max-width: 100% !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page details#database-tools-refresh-test > .live-prod-refresh-table-container,
.admin-database-tools.admin-tool-page details#database-tools-refresh-test > .database-tools-table-container.live-prod-refresh-table-container,
.admin-database-tools.admin-tool-page .live-prod-refresh-table-container {
  width: calc(100% - 1.1rem) !important;
  max-width: calc(100% - 1.1rem) !important;
  margin: .4rem .55rem !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  overflow-x: hidden !important;
  overflow-y: visible !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page table.live-prod-refresh-table,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table,
.admin-database-tools.admin-tool-page .live-prod-refresh-table-container > table {
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  table-layout: fixed !important;
  border-collapse: collapse !important;
  box-sizing: border-box !important;
}

.admin-database-tools.admin-tool-page table.live-prod-refresh-table th,
.admin-database-tools.admin-tool-page table.live-prod-refresh-table td,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table th,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table td {
  box-sizing: border-box !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
}

.admin-database-tools.admin-tool-page table.live-prod-refresh-table th:first-child,
.admin-database-tools.admin-tool-page table.live-prod-refresh-table td:first-child,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table th:first-child,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table td:first-child,
.admin-database-tools.admin-tool-page table.live-prod-refresh-table .database-tools-col-setting,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table .database-tools-col-setting {
  width: 28% !important;
}

.admin-database-tools.admin-tool-page table.live-prod-refresh-table th:last-child,
.admin-database-tools.admin-tool-page table.live-prod-refresh-table td:last-child,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table th:last-child,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table td:last-child,
.admin-database-tools.admin-tool-page table.live-prod-refresh-table .database-tools-col-value,
.admin-database-tools.admin-tool-page table.prod-refresh-sql-table .database-tools-col-value {
  width: 72% !important;
}

/* PATCH 9235: place the Challenge Event modal close X in the upper-left corner. */
.swal2-popup.challenge-event-modal .swal2-close,
.swal2-popup.challenge-event-modal .challenge-event-modal-close,
.swal2-popup.challenge-event-modal .app-swal-left-close {
  left: .65rem !important;
  right: auto !important;
  top: .55rem !important;
  z-index: 20 !important;
}

.swal2-popup.challenge-event-modal .swal2-title {
  padding-left: 2.75rem !important;
  padding-right: 2.25rem !important;
}

/* PATCH 9237 - Challenge Mode scheduled/complete menu rows open Scheduler directly. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {
    border-radius: .28rem !important;
    min-width: 1.55rem !important;
    width: 1.55rem !important;
    height: 1.35rem !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .65) !important;
    background: rgba(218, 147, 22, .16) !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .65) !important;
    background: rgba(220, 38, 38, .16) !important;
}



/* PATCH 9238 - SweetAlert and Scheduler menu status layering repair. */
.swal2-container {
    z-index: 2147483600 !important;
}
.swal2-container .swal2-popup {
    z-index: 2147483601 !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {
    border-radius: .14rem !important;
    min-width: 1.8rem !important;
    width: 1.8rem !important;
    max-width: 1.8rem !important;
    height: 1.45rem !important;
    min-height: 1.45rem !important;
    max-height: 1.45rem !important;
    box-shadow: none !important;
    background-clip: padding-box !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon {
    border: 2px solid rgba(218, 147, 22, .8) !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon {
    border: 2px solid rgba(220, 38, 38, .8) !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link:not(.matches-calendar-menu-link--scheduler).matches-calendar-status--ready .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link:not(.matches-calendar-menu-link--scheduler).matches-calendar-status--ready .matches-action-menu-icon {
    border-radius: 999px !important;
    box-shadow: 0 0 0 2px rgba(46, 160, 67, .45) !important;
    border: 0 !important;
}

/* PATCH 9243 - Scheduler menu icon uses a rectangular outline with no tinted fill. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {







    height: 1.35rem !important;
    min-height: 1.35rem !important;
    max-height: 1.35rem !important;


    border-radius: 0 !important;


    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;


}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after {


    left: -.18rem !important;
    right: -.18rem !important;
    top: -.12rem !important;
    bottom: -.12rem !important;
    border: 0 !important;
    border-radius: .18rem !important;



}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}



/* PATCH 9246: stack Challenge Event submit/cancel controls. */
.match-outcome-challenge-form .match-outcome-challenge-actions {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: .65rem !important;
}

.match-outcome-challenge-form .match-outcome-challenge-actions > button,
.match-outcome-challenge-form .match-outcome-challenge-actions > .match-outcome-challenge-cancel-button {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  text-align: center !important;
  margin: 0 !important;
}

.match-outcome-challenge-form .match-outcome-challenge-cancel-button {
  text-decoration: none !important;
}

/* PATCH 9248: Challenge Event posted-results table borders and disabled game challenge buttons. */
.challenge-event-score-table,
.challenge-event-score-table th,
.challenge-event-score-table td {
  border: 1px solid #aeb8c6 !important;
}
.challenge-event-result-button--disabled,
.challenge-event-result-button--disabled:hover,
.challenge-event-result-button--disabled:focus {
  background: #9aa3af !important;
  color: #ffffff !important;
  cursor: not-allowed !important;
  opacity: .72 !important;
  text-decoration: none !important;
}


/* PATCH 9254: Challenges nav pill contrast. */
header nav a.nav-link-challenges-attention,
header nav a.nav-link-challenges-attention:link,
header nav a.nav-link-challenges-attention:visited,
header nav a.nav-link-challenges-attention:hover,
header nav a.nav-link-challenges-attention:active,
header nav a.nav-link-challenges-attention:focus,
body.app-admin header nav a.nav-link-challenges-attention,
body.admin-surface header nav a.nav-link-challenges-attention,
nav a.nav-link-challenges-attention,
nav a.nav-link-challenges-attention:link,
nav a.nav-link-challenges-attention:visited,
nav a.nav-link-challenges-attention:hover,
nav a.nav-link-challenges-attention:active,
nav a.nav-link-challenges-attention:focus {
    color: #000000 !important;
}
header nav a.nav-link-challenges-attention .nav-approval-count,
body.app-admin header nav a.nav-link-challenges-attention .nav-approval-count,
body.admin-surface header nav a.nav-link-challenges-attention .nav-approval-count,
nav a.nav-link-challenges-attention .nav-approval-count {
    color: #000000 !important;
}
.match-outcome-challenge-support-section > summary {
    cursor: pointer;
    font-size: 1.1rem;
    padding: .35rem 0;
}
.match-outcome-challenge-support-content {
    margin-top: .85rem;
}


/* PATCH 9255 - Challenges table column focus and horizontal scrolling */
.match-outcome-challenge-primary-list {
  max-width: 100%;
  overflow: hidden;
}
.match-outcome-challenge-table-container {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow-x: auto !important;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}
.match-outcome-challenge-admin-table {
  width: 100%;
  min-width: 68rem;
  max-width: none;
  table-layout: auto;
  border-collapse: collapse;
}
.match-outcome-challenge-admin-table th,
.match-outcome-challenge-admin-table td {
  vertical-align: top;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
}
.match-outcome-challenge-admin-table th:nth-child(1),
.match-outcome-challenge-admin-table td:nth-child(1) { min-width: 6rem; }
.match-outcome-challenge-admin-table th:nth-child(2),
.match-outcome-challenge-admin-table td:nth-child(2) { min-width: 7rem; }
.match-outcome-challenge-admin-table th:nth-child(4),
.match-outcome-challenge-admin-table td:nth-child(4) { min-width: 11rem; }
.match-outcome-challenge-admin-table th:nth-child(5),
.match-outcome-challenge-admin-table td:nth-child(5) { min-width: 10rem; }
.match-outcome-challenge-admin-table th:nth-child(9),
.match-outcome-challenge-admin-table td:nth-child(9) { min-width: 16rem; }


/* PATCH 9256 - Challenges table action layout and scroll container repair */
.match-outcome-challenge-table-scroll {
  display: block;
  width: 100%;
  max-width: 100%;
  overflow-x: auto !important;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  padding: 0 !important;
  margin: 0 !important;
}
.match-outcome-challenge-admin-table {
  min-width: 56rem;
}
.match-outcome-challenge-admin-table th:nth-child(8),
.match-outcome-challenge-admin-table td:nth-child(8) {
  min-width: 18rem;
}
.match-outcome-challenge-action-form input[type="text"] {
  width: 100%;
  box-sizing: border-box;
  margin-bottom: .4rem;
}
.match-outcome-challenge-action-buttons {

  flex-direction: row;
  flex-wrap: nowrap;


}
.match-outcome-challenge-action-buttons button {
  width: auto !important;
  min-width: 5.25rem;
  flex: 1 1 0;

  padding: .45rem .6rem !important;

}


/* PATCH 9257 - Resolve Challenge workflow, active-challenge outline only, and nav contrast */
header nav a.nav-link-challenges-attention,
header nav a.nav-link-challenges-attention:link,
header nav a.nav-link-challenges-attention:visited,
header nav a.nav-link-challenges-attention:hover,
header nav a.nav-link-challenges-attention:focus {
  color: #000 !important;
  background: #fff2a8 !important;
  border-color: #f3c942 !important;
}
header nav a.nav-link-challenges-attention .nav-approval-count {
  color: #000 !important;
  background: #fff !important;
  border-color: #f3c942 !important;
}
.matches-table.match-layout-table td.challenge-outcome-cell,
.matches-table.match-layout-table td.challenge-outcome-locked,
.matches-table.match-layout-table td.challenge-outcome-challengeable,
.matches-table.match-layout-table td.challenge-outcome-confirmed,
.matches-table.match-layout-table td.challenge-outcome-final,
.player-matches-page td.challenge-outcome-cell,
.player-matches-page td.challenge-outcome-locked,
.player-matches-page td.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-confirmed,
.player-matches-page td.challenge-outcome-final {
  background-image: none !important;

}
.matches-table.match-layout-table td.challenge-outcome-challenged,
.player-matches-page td.challenge-outcome-challenged {
  background-image: none !important;

}

.match-outcome-challenge-resolve-form {
  min-width: 24rem;
}
.match-outcome-challenge-resolve-grid {
  display: flex;
  flex-wrap: nowrap;
  gap: .35rem;
  align-items: center;
  margin-bottom: .35rem;
}
.match-outcome-challenge-resolve-grid select {
  flex: 1 1 14rem;
  min-width: 12rem;
}
.match-outcome-challenge-score-inputs {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: .2rem;
  white-space: nowrap;
}
.match-outcome-challenge-score-inputs input[type='number'] {
  width: 4.5rem;
  min-width: 4.5rem;
}
.match-outcome-challenge-action-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
  align-items: center;
}
.match-outcome-challenge-action-buttons button {
  flex: 1 1 7rem;
  white-space: nowrap;
}


/* PATCH 9258 - Remove residual score/event cell fills; keep active-challenge outline only */
.matches-table.match-layout-table td.challenge-outcome-cell,
.matches-table.match-layout-table td.challenge-outcome-locked,
.matches-table.match-layout-table td.challenge-outcome-challengeable,
.matches-table.match-layout-table td.challenge-outcome-confirmed,
.matches-table.match-layout-table td.challenge-outcome-final,
.player-matches-page td.challenge-outcome-cell,
.player-matches-page td.challenge-outcome-locked,
.player-matches-page td.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-confirmed,
.player-matches-page td.challenge-outcome-final {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;

}
.matches-table.match-layout-table td.challenge-outcome-challenged,
.player-matches-page td.challenge-outcome-challenged {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: inset 0 0 0 2px #b45309 !important;
}
.matches-table.match-layout-table .challenge-outcome-challengeable.input-score,
.matches-table.match-layout-table .challenge-outcome-challenged.input-score,
.matches-table.match-layout-table .challenge-outcome-confirmed.input-score,
.matches-table.match-layout-table .challenge-outcome-final.input-score,
.player-matches-page .challenge-outcome-challengeable.input-score,
.player-matches-page .challenge-outcome-challenged.input-score,
.player-matches-page .challenge-outcome-confirmed.input-score,
.player-matches-page .challenge-outcome-final.input-score {
  background-image: none !important;
}


/* PATCH 9259 - Remove higher-specificity challengeable cell background fill */
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-challengeable,
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-locked,
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-confirmed,
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-final,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-locked,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-confirmed,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-final {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-challenged,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-challenged {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: inset 0 0 0 2px #b45309 !important;
}


/* PATCH 9260 - Use player-row grey background for posted score/event game cells */
.matches-table.match-layout-table td.challenge-outcome-cell,
.matches-table.match-layout-table td.challenge-outcome-locked,
.matches-table.match-layout-table td.challenge-outcome-challengeable,
.matches-table.match-layout-table td.challenge-outcome-confirmed,
.matches-table.match-layout-table td.challenge-outcome-final,
.player-matches-page td.challenge-outcome-cell,
.player-matches-page td.challenge-outcome-locked,
.player-matches-page td.challenge-outcome-challengeable,
.player-matches-page td.challenge-outcome-confirmed,
.player-matches-page td.challenge-outcome-final {
  background: #f2f2f2 !important;
  background-color: #f2f2f2 !important;
  background-image: none !important;
  box-shadow: none !important;
}
.matches-table.match-layout-table td.challenge-outcome-cell.challenge-outcome-challenged,
.matches-table.match-layout-table td.challenge-outcome-challenged,
.player-matches-page td.challenge-outcome-cell.challenge-outcome-challenged,
.player-matches-page td.challenge-outcome-challenged {
  background: #f2f2f2 !important;
  background-color: #f2f2f2 !important;
  background-image: none !important;
  box-shadow: inset 0 0 0 2px #b45309 !important;
}

/* PATCH 9261 - Force posted score/event game columns to player-row grey background */
body.app-player .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell {
  background: #f2f2f2 !important;
  background-color: #f2f2f2 !important;
  background-image: none !important;
}
body.app-player .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
body.app-player .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
body.app-player .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell.challenge-outcome-challenged,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
.player-matches-page .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell.challenge-outcome-challenged {
  background: #f2f2f2 !important;
  background-color: #f2f2f2 !important;
  background-image: none !important;

}



/* PATCH 9262 - Score/event game cells follow their row background */
body.app-player .matches-table.match-layout-table.matches-table--current-player-pool td.component-player-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table.matches-table--current-player-pool td.matches-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table.matches-table--current-player-pool td.challenge-score-render-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table.matches-table--current-player-pool td.component-player-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table.matches-table--current-player-pool td.matches-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table.matches-table--current-player-pool td.challenge-score-render-cell.challenge-score-existing-cell {
  background: #f7f7f7 !important;
  background-color: #f7f7f7 !important;
  background-image: none !important;
}

body.app-player .matches-table.match-layout-table.matches-table--current-player-pool tr.component-player-match-row--current-player-match td.component-player-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table.matches-table--current-player-pool tr.component-player-match-row--current-player-match td.matches-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table.matches-table--current-player-pool tr.component-player-match-row--current-player-match td.challenge-score-render-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table.matches-table--current-player-pool tr.component-player-match-row--current-player-match td.component-player-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table.matches-table--current-player-pool tr.component-player-match-row--current-player-match td.matches-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table.matches-table--current-player-pool tr.component-player-match-row--current-player-match td.challenge-score-render-cell.challenge-score-existing-cell {
  background: #eeeeee !important;
  background-color: #eeeeee !important;
  background-image: none !important;
}

body.app-player .matches-table.match-layout-table:not(.matches-table--current-player-pool) td.component-player-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table:not(.matches-table--current-player-pool) td.matches-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table:not(.matches-table--current-player-pool) td.challenge-score-render-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table:not(.matches-table--current-player-pool) td.component-player-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table:not(.matches-table--current-player-pool) td.matches-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table:not(.matches-table--current-player-pool) td.challenge-score-render-cell.challenge-score-existing-cell {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}




/* PATCH 9263 - Matches/challenges cleanup and inline resolution controls. */
.matches-table.match-layout-table td.component-player-score-cell,
.matches-table.match-layout-table td.matches-score-cell,
.matches-table.match-layout-table td.challenge-score-render-cell,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell,
.player-matches-page .matches-table.match-layout-table td.challenge-score-render-cell {
  border: 1px solid rgba(0,0,0,.16) !important;
}
.match-outcome-challenge-action-buttons {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  gap: .35rem !important;
  align-items: stretch !important;
}
.match-outcome-challenge-action-buttons button {
  flex: 1 1 0 !important;
  min-width: 5.25rem !important;
  margin: 0 !important;
  white-space: nowrap !important;
}
.match-outcome-challenge-score-inputs input.match-outcome-challenge-score-locked,
.match-outcome-challenge-score-inputs input:disabled {
  opacity: .78;
  cursor: not-allowed;
}


/* PATCH 9264 - Score/event cells follow the actual row background instead of forcing pool grey. */
body.app-player .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell {
  background: inherit !important;
  background-color: inherit !important;
  background-image: none !important;
}

body.app-player .matches-table.match-layout-table tr.component-player-match-row--current-player-match td.component-player-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table tr.component-player-match-row--current-player-match td.matches-score-cell.challenge-score-existing-cell,
body.app-player .matches-table.match-layout-table tr.component-player-match-row--current-player-match td.challenge-score-render-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table tr.component-player-match-row--current-player-match td.component-player-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table tr.component-player-match-row--current-player-match td.matches-score-cell.challenge-score-existing-cell,
.player-matches-page .matches-table.match-layout-table tr.component-player-match-row--current-player-match td.challenge-score-render-cell.challenge-score-existing-cell {
  background: inherit !important;
  background-color: inherit !important;
  background-image: none !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
body.app-player .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
body.app-player .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell.challenge-outcome-challenged,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell.challenge-score-existing-cell.challenge-outcome-challenged,
.player-matches-page .matches-table.match-layout-table td.challenge-score-render-cell.challenge-score-existing-cell.challenge-outcome-challenged {
  background: inherit !important;
  background-color: inherit !important;
  background-image: none !important;
  box-shadow: inset 0 0 0 2px #b45309 !important;
}


/* PATCH 9266 - Shared main header/nav layout for admin and player surfaces. */
body.app-admin nav,
body.admin-surface nav,
body.app-player nav,
body.player-surface nav {
  box-sizing: border-box !important;
  max-width: var(--player-page-max-width) !important;
  margin-inline: auto !important;
  padding-inline: var(--player-page-pad-inline) !important;
}

body.app-admin .nav-primary-row,
body.admin-surface .nav-primary-row,
body.app-player .nav-primary-row,
body.player-surface .nav-primary-row,
body.app-admin .nav-secondary-row,
body.admin-surface .nav-secondary-row,
body.app-player .nav-secondary-row,
body.player-surface .nav-secondary-row {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 0.35rem !important;
  align-items: center !important;
  justify-content: center !important;
}

body.app-admin .nav-link,
body.admin-surface .nav-link,
body.app-player .nav-link,
body.player-surface .nav-link {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 2.25rem !important;
  padding: 0.38rem 0.62rem !important;
  border-radius: 999px !important;
  line-height: 1.15 !important;
  text-decoration: none !important;
}

body.app-admin header nav a.nav-link:not(.nav-link-attention),
body.admin-surface header nav a.nav-link:not(.nav-link-attention),
body.app-player header nav a.nav-link:not(.nav-link-attention),
body.player-surface header nav a.nav-link:not(.nav-link-attention),
body.app-admin header nav a.nav-link:not(.nav-link-attention):visited,
body.admin-surface header nav a.nav-link:not(.nav-link-attention):visited,
body.app-player header nav a.nav-link:not(.nav-link-attention):visited,
body.player-surface header nav a.nav-link:not(.nav-link-attention):visited {
  color: var(--color-white) !important;
}

body.app-admin header nav a.nav-link-challenges-attention,
body.admin-surface header nav a.nav-link-challenges-attention,
body.app-player header nav a.nav-link-challenges-attention,
body.player-surface header nav a.nav-link-challenges-attention,
header nav a.nav-link-challenges-attention,
nav a.nav-link-challenges-attention {

  background: #fff2a8 !important;
  background-color: #fff2a8 !important;

}

body.app-admin header nav a.nav-link-challenges-attention .nav-approval-count,
body.admin-surface header nav a.nav-link-challenges-attention .nav-approval-count,
body.app-player header nav a.nav-link-challenges-attention .nav-approval-count,
body.player-surface header nav a.nav-link-challenges-attention .nav-approval-count,
header nav a.nav-link-challenges-attention .nav-approval-count,
nav a.nav-link-challenges-attention .nav-approval-count {

  background: #ffffff !important;
  background-color: #ffffff !important;
  border-color: #f59e0b !important;
}


/* PATCH 9267 - Normalize admin/player main nav row spacing and Challenges pill. */
body.app-admin header nav,
body.admin-surface header nav,
body.app-player header nav,
body.player-surface header nav {
  display: block !important;
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: var(--player-page-max-width) !important;
  margin-inline: auto !important;
  padding-inline: var(--player-page-pad-inline) !important;
  text-align: center !important;
}

body.app-admin header nav .nav-primary-row,
body.admin-surface header nav .nav-primary-row,
body.app-player header nav .nav-primary-row,
body.player-surface header nav .nav-primary-row,
body.app-admin header nav .nav-secondary-row,
body.admin-surface header nav .nav-secondary-row,
body.app-player header nav .nav-secondary-row,
body.player-surface header nav .nav-secondary-row {
  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: center !important;
  column-gap: 1.25rem !important;
  row-gap: 0.35rem !important;
}

body.app-admin header nav .nav-primary-row,
body.admin-surface header nav .nav-primary-row,
body.app-player header nav .nav-primary-row,
body.player-surface header nav .nav-primary-row {
  margin-top: 0.2rem !important;
}

body.app-admin header nav .nav-secondary-row,
body.admin-surface header nav .nav-secondary-row,
body.app-player header nav .nav-secondary-row,
body.player-surface header nav .nav-secondary-row {
  margin-top: 0.45rem !important;
}

body.app-admin header nav a.nav-link,
body.admin-surface header nav a.nav-link,
body.app-player header nav a.nav-link,
body.player-surface header nav a.nav-link {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 2.1rem !important;
  padding: 0.28rem 0.28rem !important;
  line-height: 1.15 !important;
  border-radius: 999px !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}

body.app-admin header nav a.nav-link-challenges-attention,
body.admin-surface header nav a.nav-link-challenges-attention,
body.app-player header nav a.nav-link-challenges-attention,
body.player-surface header nav a.nav-link-challenges-attention,
header nav a.nav-link-challenges-attention,
nav a.nav-link-challenges-attention {
  color: #000000 !important;
  background: #fff2a8 !important;
  background-color: #fff2a8 !important;
  border: 1px solid #f59e0b !important;
  padding: 0.32rem 0.7rem !important;
  column-gap: 0.35rem !important;
}

body.app-admin header nav a.nav-link-challenges-attention:link,
body.admin-surface header nav a.nav-link-challenges-attention:link,
body.app-player header nav a.nav-link-challenges-attention:link,
body.player-surface header nav a.nav-link-challenges-attention:link,
body.app-admin header nav a.nav-link-challenges-attention:visited,
body.admin-surface header nav a.nav-link-challenges-attention:visited,
body.app-player header nav a.nav-link-challenges-attention:visited,
body.player-surface header nav a.nav-link-challenges-attention:visited,
body.app-admin header nav a.nav-link-challenges-attention:hover,
body.admin-surface header nav a.nav-link-challenges-attention:hover,
body.app-player header nav a.nav-link-challenges-attention:hover,
body.player-surface header nav a.nav-link-challenges-attention:hover,
body.app-admin header nav a.nav-link-challenges-attention:focus,
body.admin-surface header nav a.nav-link-challenges-attention:focus,
body.app-player header nav a.nav-link-challenges-attention:focus,
body.player-surface header nav a.nav-link-challenges-attention:focus {
  color: #000000 !important;
}

body.app-admin header nav a.nav-link-challenges-attention .nav-approval-count,
body.admin-surface header nav a.nav-link-challenges-attention .nav-approval-count,
body.app-player header nav a.nav-link-challenges-attention .nav-approval-count,
body.player-surface header nav a.nav-link-challenges-attention .nav-approval-count,
header nav a.nav-link-challenges-attention .nav-approval-count,
nav a.nav-link-challenges-attention .nav-approval-count {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 1.35rem !important;
  height: 1.35rem !important;
  padding: 0 0.25rem !important;
  margin-left: 0.15rem !important;
  color: #000000 !important;
  background: #ffffff !important;
  background-color: #ffffff !important;
  border: 1px solid #f59e0b !important;
  border-radius: 999px !important;
  line-height: 1 !important;
}


/* PATCH 9268 - Compact Challenges nav pill for mobile and shared header layouts. */
body.app-admin header nav a.nav-link-challenges-attention,
body.admin-surface header nav a.nav-link-challenges-attention,
body.app-player header nav a.nav-link-challenges-attention,
body.player-surface header nav a.nav-link-challenges-attention,
header nav a.nav-link-challenges-attention,
nav a.nav-link-challenges-attention {
  min-height: 1.65rem !important;
  padding: 0.14rem 0.38rem !important;
  column-gap: 0.2rem !important;
  line-height: 1.05 !important;
}
body.app-admin header nav a.nav-link-challenges-attention .nav-approval-count,
body.admin-surface header nav a.nav-link-challenges-attention .nav-approval-count,
body.app-player header nav a.nav-link-challenges-attention .nav-approval-count,
body.player-surface header nav a.nav-link-challenges-attention .nav-approval-count,
header nav a.nav-link-challenges-attention .nav-approval-count,
nav a.nav-link-challenges-attention .nav-approval-count {
  min-width: 1.05rem !important;
  height: 1.05rem !important;
  padding: 0 0.16rem !important;
  margin-left: 0.08rem !important;
  font-size: 0.78em !important;
}
@media (max-width: 560px) {
  body.app-admin header nav .nav-primary-row,
  body.admin-surface header nav .nav-primary-row,
  body.app-player header nav .nav-primary-row,
  body.player-surface header nav .nav-primary-row {
    column-gap: 0.55rem !important;
  }
  body.app-admin header nav a.nav-link-challenges-attention,
  body.admin-surface header nav a.nav-link-challenges-attention,
  body.app-player header nav a.nav-link-challenges-attention,
  body.player-surface header nav a.nav-link-challenges-attention,
  header nav a.nav-link-challenges-attention,
  nav a.nav-link-challenges-attention {
    padding: 0.12rem 0.32rem !important;
    font-size: 0.94em !important;
  }
}


/* PATCH 9270 - Compact main header/nav padding for mobile and shared layouts. */
body.app-admin > header,
body.admin-surface > header,
body.app-player > header,
body.player-surface > header,
body > header {
  padding: 0.45rem 0.6rem 0.5rem !important;
}
body.app-admin header .site-league-title,
body.admin-surface header .site-league-title,
body.app-player header .site-league-title,
body.player-surface header .site-league-title,
header .site-league-title {
  margin: 0 0 0.2rem !important;
  padding: 0 !important;
  line-height: 1.1 !important;
}
body.app-admin header nav,
body.admin-surface header nav,
body.app-player header nav,
body.player-surface header nav,
header nav {
  padding-inline: 0.35rem !important;
  margin-block: 0 !important;
}
body.app-admin header nav .nav-primary-row,
body.admin-surface header nav .nav-primary-row,
body.app-player header nav .nav-primary-row,
body.player-surface header nav .nav-primary-row,
body.app-admin header nav .nav-secondary-row,
body.admin-surface header nav .nav-secondary-row,
body.app-player header nav .nav-secondary-row,
body.player-surface header nav .nav-secondary-row,
header nav .nav-primary-row,
header nav .nav-secondary-row {
  column-gap: 0.75rem !important;
  row-gap: 0.18rem !important;
}
body.app-admin header nav .nav-primary-row,
body.admin-surface header nav .nav-primary-row,
body.app-player header nav .nav-primary-row,
body.player-surface header nav .nav-primary-row,
header nav .nav-primary-row {
  margin-top: 0 !important;
}
body.app-admin header nav .nav-secondary-row,
body.admin-surface header nav .nav-secondary-row,
body.app-player header nav .nav-secondary-row,
body.player-surface header nav .nav-secondary-row,
header nav .nav-secondary-row {
  margin-top: 0.16rem !important;
}
body.app-admin header nav a.nav-link,
body.admin-surface header nav a.nav-link,
body.app-player header nav a.nav-link,
body.player-surface header nav a.nav-link,
header nav a.nav-link {
  min-height: 1.45rem !important;
  padding: 0.08rem 0.12rem !important;
  line-height: 1.05 !important;
}
body.app-admin header nav a.nav-link-challenges-attention,
body.admin-surface header nav a.nav-link-challenges-attention,
body.app-player header nav a.nav-link-challenges-attention,
body.player-surface header nav a.nav-link-challenges-attention,
header nav a.nav-link-challenges-attention,
nav a.nav-link-challenges-attention {
  min-height: 1.35rem !important;
  padding: 0.07rem 0.26rem !important;
  column-gap: 0.14rem !important;
}
body.app-admin header nav a.nav-link-challenges-attention .nav-approval-count,
body.admin-surface header nav a.nav-link-challenges-attention .nav-approval-count,
body.app-player header nav a.nav-link-challenges-attention .nav-approval-count,
body.player-surface header nav a.nav-link-challenges-attention .nav-approval-count,
header nav a.nav-link-challenges-attention .nav-approval-count,
nav a.nav-link-challenges-attention .nav-approval-count {
  min-width: 0.95rem !important;
  height: 0.95rem !important;
  padding: 0 0.12rem !important;
  margin-left: 0.04rem !important;
  font-size: 0.72em !important;
}
header .nav-profile-corner {
  bottom: 0.32rem !important;
  left: 0.38rem !important;
}
header .nav-profile-corner .nav-profile-photo-link .profile-photo-frame,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-frame.profile-photo-frame-has-image,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-image,
header .nav-profile-corner .nav-profile-photo-link .profile-photo-fallback-avatar,
header .nav-profile-corner .nav-profile-photo-link .profile-initials-avatar,
header .nav-profile-corner .nav-profile-photo-link .profile-initials-avatar-small {
  --profile-photo-size: 30px !important;
}

/* CHANGED v11985: Front-door sessions use the same authenticated thumbnail,
 * positioned on the right side of the shared title bar. */
.site-front-navigation .nav-profile-corner {
  top: 50% !important;
  right: 0.65rem !important;
  bottom: auto !important;
  left: auto !important;
  transform: translateY(-50%) !important;
}
@media (max-width: 560px) {
  .site-front-navigation .nav-profile-corner {
    right: 0.42rem !important;
  }
}
@media (max-width: 560px) {
  body.app-admin > header,
  body.admin-surface > header,
  body.app-player > header,
  body.player-surface > header,
  body > header {
    padding: 0.34rem 0.42rem 0.4rem !important;
  }
  body.app-admin header nav .nav-primary-row,
  body.admin-surface header nav .nav-primary-row,
  body.app-player header nav .nav-primary-row,
  body.player-surface header nav .nav-primary-row,
  header nav .nav-primary-row {
    column-gap: 0.42rem !important;
  }
  body.app-admin header nav .nav-secondary-row,
  body.admin-surface header nav .nav-secondary-row,
  body.app-player header nav .nav-secondary-row,
  body.player-surface header nav .nav-secondary-row,
  header nav .nav-secondary-row {
    column-gap: 0.5rem !important;
  }
}


/* PATCH 9271 - Remove mobile underline from game score/event badges. */
.matches-table.match-layout-table .input-score,
.matches-table.match-layout-table .player-score-badge,
.matches-table.match-layout-table .game-status-badge,
.matches-table.match-layout-table .player-status-badge,
.player-matches-page .matches-table.match-layout-table .input-score,
.player-matches-page .matches-table.match-layout-table .player-score-badge,
.player-matches-page .matches-table.match-layout-table .game-status-badge,
.player-matches-page .matches-table.match-layout-table .player-status-badge,
.matches-approval-shortcut-link .input-score,
.matches-approval-shortcut-link .game-status-badge,
.matches-approval-shortcut-link:hover .input-score,
.matches-approval-shortcut-link:focus-visible .input-score,
.matches-approval-shortcut-link:hover .game-status-badge,
.matches-approval-shortcut-link:focus-visible .game-status-badge {
  text-decoration: none !important;
}

@media (pointer: coarse), (max-width: 700px) {
  .matches-table.match-layout-table .input-score,
  .matches-table.match-layout-table .player-score-badge,
  .matches-table.match-layout-table .game-status-badge,
  .matches-table.match-layout-table .player-status-badge,
  .player-matches-page .matches-table.match-layout-table .input-score,
  .player-matches-page .matches-table.match-layout-table .player-score-badge,
  .player-matches-page .matches-table.match-layout-table .game-status-badge,
  .player-matches-page .matches-table.match-layout-table .player-status-badge,
  .matches-approval-shortcut-link .input-score,
  .matches-approval-shortcut-link .game-status-badge,
  .matches-approval-shortcut-link:hover .input-score,
  .matches-approval-shortcut-link:focus-visible .input-score,
  .matches-approval-shortcut-link:hover .game-status-badge,
  .matches-approval-shortcut-link:focus-visible .game-status-badge {
    text-decoration: none !important;
  }
}


/* PATCH 9272 - Mobile score/status badges are not links and void status rows are compact. */
.matches-table.match-layout-table .matches-approval-shortcut-link,
.matches-table.match-layout-table .matches-approval-shortcut-link:link,
.matches-table.match-layout-table .matches-approval-shortcut-link:visited,
.matches-table.match-layout-table .matches-approval-shortcut-link:hover,
.matches-table.match-layout-table .matches-approval-shortcut-link:focus,
.matches-table.match-layout-table .matches-approval-shortcut-link:focus-visible,
.matches-table.match-layout-table .matches-approval-shortcut-link:active,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link:hover,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link:focus,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link:focus-visible,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link:hover,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link:focus,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link:focus-visible {
  text-decoration: none !important;
  -webkit-text-decoration-line: none !important;
  text-decoration-line: none !important;
}

.matches-table.match-layout-table .matches-approval-shortcut-link *,
.matches-table.match-layout-table .matches-approval-shortcut-link:hover *,
.matches-table.match-layout-table .matches-approval-shortcut-link:focus *,
.matches-table.match-layout-table .matches-approval-shortcut-link:focus-visible *,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link *,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link:hover *,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link:focus *,
.player-matches-page .matches-table.match-layout-table .matches-approval-shortcut-link:focus-visible *,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link *,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link:hover *,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link:focus *,
body.app-player .matches-table.match-layout-table .matches-approval-shortcut-link:focus-visible * {
  text-decoration: none !important;
  -webkit-text-decoration-line: none !important;
  text-decoration-line: none !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status {
  min-height: 1.7rem !important;
  padding-block: 0 !important;
  margin-block: 0 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row--status,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-row--status,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-row--status,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-row--status {
  min-height: 1.7rem !important;
  padding-block: 0 !important;
  margin-block: 0 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .game-status-badge,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .void.input-score,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-row > .game-status-badge,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-row > .void.input-score,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .game-status-badge,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .void.input-score,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-row > .game-status-badge,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-row > .void.input-score {
  height: 1.45rem !important;
  min-height: 1.45rem !important;
  line-height: 1 !important;
  padding: 0 .36rem !important;
}


/* PATCH 9273 - Final mobile score/event underline removal and compact void cells. */
@media (pointer: coarse), (max-width: 700px) {
  body.app-player .matches-table.match-layout-table td.component-player-score-cell,
  body.app-player .matches-table.match-layout-table td.matches-score-cell,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell,
  body.app-player .matches-table.match-layout-table td.component-player-score-cell *,
  body.app-player .matches-table.match-layout-table td.matches-score-cell *,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell *,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell * {
    text-decoration: none !important;
    -webkit-text-decoration: none !important;
    text-decoration-line: none !important;
    -webkit-text-decoration-line: none !important;
    text-underline-offset: 0 !important;
  }

  body.app-player .matches-table.match-layout-table td.component-player-score-cell .app-mobile-title-help,
  body.app-player .matches-table.match-layout-table td.matches-score-cell .app-mobile-title-help,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell .app-mobile-title-help,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell .app-mobile-title-help {
    cursor: default !important;
    text-decoration: none !important;
    -webkit-text-decoration-line: none !important;
    text-decoration-line: none !important;
  }

  body.app-player .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status),
  body.app-player .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status),
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status),
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) {
    padding-top: .05rem !important;
    padding-bottom: .05rem !important;
  }

  body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status,
  body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status,
  body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row--status,
  body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-row--status,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-row--status,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-row--status {
    min-height: 1.2rem !important;
    height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1 !important;
  }

  body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .game-status-badge,
  body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .void.input-score,
  body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-row > .game-status-badge,
  body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-row > .void.input-score,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .game-status-badge,
  .player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-row > .void.input-score,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-row > .game-status-badge,
  .player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-row > .void.input-score {
    height: 1.18rem !important;
    min-height: 1.18rem !important;
    line-height: 1 !important;
    padding: 0 .28rem !important;
    margin: 0 !important;
    text-decoration: none !important;
    -webkit-text-decoration-line: none !important;
    text-decoration-line: none !important;
  }
}


/* PATCH 9274 - Further compress void/status-only game cells. */
body.app-player .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status),
body.app-player .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status),
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status),
.player-matches-page .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) {


  line-height: 1 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status) .game-score-stack,
body.app-player .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) .game-score-stack,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status) .game-score-stack,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) .game-score-stack,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack.game-score-stack--status,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack.game-score-stack--status,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack.game-score-stack--status,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack.game-score-stack--status {
  display: inline-flex !important;
  grid-template-rows: none !important;
  min-height: 1.05rem !important;
  height: 1.05rem !important;
  max-height: 1.05rem !important;
  row-gap: 0 !important;
  gap: 0 !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  margin: 0 auto !important;
  line-height: 1 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-score-row,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-score-row,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-score-row,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-score-row {
  min-height: 1.05rem !important;
  height: 1.05rem !important;
  max-height: 1.05rem !important;



}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-status-badge,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .void.input-score,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-status-badge,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .void.input-score,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-status-badge,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .void.input-score,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-status-badge,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .void.input-score {
  min-height: 1.05rem !important;
  height: 1.05rem !important;
  max-height: 1.05rem !important;

  padding: 0 .32rem !important;

  text-decoration: none !important;

  text-decoration-line: none !important;
}


/* PATCH 9275 - Void/status pills use normal score-pill vertical sizing; compress surrounding status cell only. */
body.app-player .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status),
body.app-player .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status),
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status),
.player-matches-page .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack.game-score-stack--status,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack.game-score-stack--status,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack.game-score-stack--status,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack.game-score-stack--status,
body.app-player .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status) .game-score-stack,
body.app-player .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) .game-score-stack,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell:has(.game-score-stack--status) .game-score-stack,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell:has(.game-score-stack--status) .game-score-stack {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 1.62rem !important;
  height: 1.62rem !important;
  max-height: 1.62rem !important;
  padding: 0 !important;
  margin: 0 auto !important;
  gap: 0 !important;
  line-height: 1 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-score-row,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-score-row,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-score-row,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-score-row {
  min-height: 1.62rem !important;
  height: 1.62rem !important;
  max-height: 1.62rem !important;
  padding: 0 !important;
  margin: 0 !important;
  line-height: 1 !important;
}

body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-status-badge,
body.app-player .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .void.input-score,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-status-badge,
body.app-player .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .void.input-score,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .game-status-badge,
.player-matches-page .matches-table.match-layout-table td.component-player-score-cell .game-score-stack--status .void.input-score,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .game-status-badge,
.player-matches-page .matches-table.match-layout-table td.matches-score-cell .game-score-stack--status .void.input-score {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 1.62rem !important;
  height: 1.62rem !important;
  max-height: 1.62rem !important;
  line-height: 1 !important;
  padding: 0 !important;
  margin: 0 !important;
  text-decoration: none !important;
  -webkit-text-decoration-line: none !important;
  text-decoration-line: none !important;
}

/** ADDED v9516
 * Approval Mode score winner display hardening.
 * Some pending/readonly score paths apply cell-level approval backgrounds after
 * the generic .score-win rule. Keep the numeric winning score chip green for
 * all Matches score markup variants without changing score data or workflow
 * behavior.
 */
.matches-table.match-layout-table td.matches-score-cell input.input-score.win,
.matches-table.match-layout-table td.matches-score-cell input.input-score.score-win,
.matches-table.match-layout-table td.matches-score-cell span.input-score.win,
.matches-table.match-layout-table td.matches-score-cell span.input-score.score-win,
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.win,
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.score-win,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.win,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.score-win,
.matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-score-winner,
.matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-score-winner,
.player-matches-page td.matches-score-cell input.input-score.win,
.player-matches-page td.matches-score-cell input.input-score.score-win,
.player-matches-page td.matches-score-cell span.input-score.win,
.player-matches-page td.matches-score-cell span.input-score.score-win,
.player-matches-page td.pending-game-change-cell input.input-score.win,
.player-matches-page td.pending-game-change-cell input.input-score.score-win,
.player-matches-page td.pending-game-change-cell span.input-score.win,
.player-matches-page td.pending-game-change-cell span.input-score.score-win,
.player-matches-page td.pending-game-change-cell input.input-score.pending-game-score-winner,
.player-matches-page td.pending-game-change-cell span.input-score.pending-game-score-winner,
body.app-player .matches-table.match-layout-table td.matches-score-cell input.input-score.win,
body.app-player .matches-table.match-layout-table td.matches-score-cell input.input-score.score-win,
body.app-player .matches-table.match-layout-table td.matches-score-cell span.input-score.win,
body.app-player .matches-table.match-layout-table td.matches-score-cell span.input-score.score-win,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.win,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.score-win,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.win,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.score-win,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell input.input-score.pending-game-score-winner,
body.app-player .matches-table.match-layout-table td.pending-game-change-cell span.input-score.pending-game-score-winner,
body.app-player .player-matches-page td.matches-score-cell input.input-score.win,
body.app-player .player-matches-page td.matches-score-cell input.input-score.score-win,
body.app-player .player-matches-page td.matches-score-cell span.input-score.win,
body.app-player .player-matches-page td.matches-score-cell span.input-score.score-win,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.win,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.score-win,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.win,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.score-win,
body.app-player .player-matches-page td.pending-game-change-cell input.input-score.pending-game-score-winner,
body.app-player .player-matches-page td.pending-game-change-cell span.input-score.pending-game-score-winner {
    background-color: var(--color-game-win-bg, #d1fae5) !important;
    background: var(--color-game-win-bg, #d1fae5) !important;
    color: var(--color-text, #111827) !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
    border-color: var(--color-border, #cbd5e1) !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    background-clip: padding-box !important;
    opacity: 1 !important;
}


/** ADDED v9517
 * Approval Mode final display guard: use explicit server-rendered outcome
 * metadata as well as classes. This covers pending/read-only score badge paths
 * where intermediate Approval Mode markup can miss or override the winner class.
 */
.matches-table.match-layout-table td.matches-score-cell .input-score[data-score-outcome="win"],
.matches-table.match-layout-table td.pending-game-change-cell .input-score[data-score-outcome="win"],
.player-matches-page td.matches-score-cell .input-score[data-score-outcome="win"],
.player-matches-page td.pending-game-change-cell .input-score[data-score-outcome="win"],
body.app-player .matches-table.match-layout-table td.matches-score-cell .input-score[data-score-outcome="win"],
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .input-score[data-score-outcome="win"],
body.app-player .player-matches-page td.matches-score-cell .input-score[data-score-outcome="win"],
body.app-player .player-matches-page td.pending-game-change-cell .input-score[data-score-outcome="win"] {
    background-color: var(--color-game-win-bg, #d1fae5) !important;
    background: var(--color-game-win-bg, #d1fae5) !important;
    color: var(--color-text, #111827) !important;
    -webkit-text-fill-color: var(--color-text, #111827) !important;
    border-color: var(--color-border, #cbd5e1) !important;
    border-radius: var(--player-score-radius, var(--player-score-badge-radius, 0.55rem)) !important;
    background-clip: padding-box !important;
    opacity: 1 !important;
}


/** ADDED v9518
 * Approval Mode winner-chip final guard.
 * Some PROD/theme bundles can apply pending-cell score backgrounds after the normal win selectors. The rendered data-score-highlight marker is display-only and keeps every numeric winner visibly green.
 */
.matches-table.match-layout-table td.matches-score-cell .input-score[data-score-highlight="winner"],
.matches-table.match-layout-table td.pending-game-change-cell .input-score[data-score-highlight="winner"],
.player-matches-page td.matches-score-cell .input-score[data-score-highlight="winner"],
.player-matches-page td.pending-game-change-cell .input-score[data-score-highlight="winner"],
body.app-player .matches-table.match-layout-table td.matches-score-cell .input-score[data-score-highlight="winner"],
body.app-player .matches-table.match-layout-table td.pending-game-change-cell .input-score[data-score-highlight="winner"],
body.app-player .player-matches-page td.matches-score-cell .input-score[data-score-highlight="winner"],
body.app-player .player-matches-page td.pending-game-change-cell .input-score[data-score-highlight="winner"] {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    background-color: #d1fae5 !important;
    background: #d1fae5 !important;
    color: #111827 !important;
    -webkit-text-fill-color: #111827 !important;
    border-color: #cbd5e1 !important;
    border-radius: 0.55rem !important;
    background-clip: padding-box !important;
    opacity: 1 !important;
}


/* ADDED v2026-06-24.9607: Team Profile main-roster card cleanup. */
.team-profile-current-roster-section .team-profile-roster-main-card {
    display: grid;
    gap: 1rem;
    align-items: start;
}
@media (min-width: 760px) {
    .team-profile-current-roster-section .team-profile-roster-main-card {
        grid-template-columns: minmax(0, 1fr) minmax(14rem, 18rem);
    }
}
.team-profile-current-roster-section .team-profile-roster-fact-card {
    border: 1px solid rgba(0,0,0,.12);
    border-radius: .75rem;
    padding: .85rem;
    background: rgba(255,255,255,.72);
}
/* ADDED v2026-06-24.9608: Compact two-column Team Profile roster summary table. */
.team-profile-current-roster-section .team-profile-roster-summary-table {
    width: 100%;
    border-collapse: collapse;
}
.team-profile-current-roster-section .team-profile-roster-summary-table th,
.team-profile-current-roster-section .team-profile-roster-summary-table td {
    padding: .45rem .6rem;
    border-bottom: 1px solid rgba(0,0,0,.10);
    text-align: left;
    vertical-align: middle;
}
.team-profile-current-roster-section .team-profile-roster-summary-table tr:last-child th,
.team-profile-current-roster-section .team-profile-roster-summary-table tr:last-child td {
    border-bottom: 0;
}
.team-profile-current-roster-section .team-profile-roster-summary-table th {
    width: 55%;
    font-weight: 700;
}
.team-profile-current-roster-section .team-profile-roster-summary-table td {
    text-align: right;
}


/* ADDED v2026-06-24.9611: Team Profile roster summary polish and mobile alignment. */
.team-profile-current-roster-section .team-profile-roster-summary-table td.active {
    font-weight: 700;
    color: #166534;
}
.team-profile-current-roster-section .team-profile-roster-summary-table td.withdrawn {
    font-weight: 700;
    color: #991b1b;
}
@media (max-width: 759px) {

    .team-profile-current-roster-section .team-profile-roster-fact-card {

        box-sizing: border-box;
    }
    .team-profile-current-roster-section .team-profile-roster-summary-table th,
    .team-profile-current-roster-section .team-profile-roster-summary-table td {
        font-size: .95rem;
    }
}


/* ADDED v2026-06-24.9611: Deployment-history direction status labels. */
.admin-deploy-direction-forward,
.admin-deploy-direction-redeploy,
.admin-deploy-direction-older,
.admin-deploy-direction-unknown {
    display: inline-block;
    padding: .15rem .45rem;
    border-radius: 999px;
    font-weight: 700;
    font-size: .85em;
}
.admin-deploy-direction-forward { background: rgba(22, 101, 52, .12); color: #166534; }
.admin-deploy-direction-redeploy { background: rgba(30, 64, 175, .12); color: #1e40af; }
.admin-deploy-direction-older { background: rgba(146, 64, 14, .14); color: #92400e; }
.admin-deploy-direction-unknown { background: rgba(75, 85, 99, .12); color: #4b5563; }


/* PATCH 9660: Player Challenge cancel action uses the same green button treatment as Submit challenge. */
.match-outcome-challenge-actions .match-outcome-challenge-cancel-button,
.match-outcome-challenge-actions .match-outcome-challenge-cancel-button:link,
.match-outcome-challenge-actions .match-outcome-challenge-cancel-button:visited {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.75rem;
  padding: .65rem 1rem;
  border-radius: .45rem;
  background: #2f9852;
  border: 1px solid #2f9852;
  color: #fff !important;
  font-weight: 700;
  text-decoration: none !important;
}
.match-outcome-challenge-actions .match-outcome-challenge-cancel-button:hover,
.match-outcome-challenge-actions .match-outcome-challenge-cancel-button:focus {
  background: #267d43;
  border-color: #267d43;
  color: #fff !important;
}

/* PATCH 9673 - Challenge Event modal event statuses use the same badge language as Matches. */
.challenge-event-modal .challenge-event-status-cell {
    text-align: center;
    vertical-align: middle;
}
.challenge-event-modal .challenge-event-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: var(--player-score-status-min-width, 2.25rem);
    padding: 5px;
    border-radius: 5px;
    text-transform: lowercase;
    line-height: 1;
    box-sizing: border-box;
}

/* PATCH 9678: Return to Match uses standard green primary action styling. */
.match-outcome-challenge-return-actions .match-outcome-challenge-return-button,
.match-outcome-challenge-return-actions .match-outcome-challenge-return-button:link,
.match-outcome-challenge-return-actions .match-outcome-challenge-return-button:visited {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.75rem;
  padding: .65rem 1rem;
  border-radius: .45rem;
  background: #2f9852;
  border: 1px solid #2f9852;
  color: #fff !important;
  font-weight: 700;
  text-decoration: none !important;
}
.match-outcome-challenge-return-actions .match-outcome-challenge-return-button:hover,
.match-outcome-challenge-return-actions .match-outcome-challenge-return-button:focus {
  background: #267d43;
  border-color: #267d43;
  color: #fff !important;
}


/** ADDED v2026-06-25.9681: Challenge Event modal event badges should use Matches colours while remaining compact pills. Forfeit uses Matches blue; void keeps void orange. */
.challenge-event-status-badge.forfeit-score,
.challenge-event-status-cell .challenge-event-status-badge.forfeit-score {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    background-color: var(--color-status-forfeit-bg) !important;
    background: var(--color-status-forfeit-bg) !important;
    border-color: var(--color-status-forfeit-bg) !important;
    color: var(--color-black) !important;
}

/** CHANGED v2026-06-25.9682: Keep Challenge Event forfeit status display as a pill, not a rectangular text highlight. */
.challenge-event-modal .challenge-event-status-badge.forfeit-score,
.challenge-event-modal .challenge-event-status-cell .challenge-event-status-badge.forfeit-score {
    border-radius: 999px !important;
    padding: 0.18rem 0.45rem !important;
    line-height: 1.15 !important;
    text-decoration: none !important;
}


/** PATCH 9683: Challenge Event forfeit badge must be pill-shaped, not a rectangular text highlight. */
.swal2-popup.challenge-event-modal span.challenge-event-status-badge.forfeit-score,
.swal2-popup.challenge-event-modal .challenge-event-status-cell span.challenge-event-status-badge.forfeit-score {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    border-radius: 999px !important;
    padding: 0.18rem 0.55rem !important;
    line-height: 1.15 !important;
    background: var(--color-status-forfeit-bg) !important;
    background-color: var(--color-status-forfeit-bg) !important;
    border-color: var(--color-status-forfeit-bg) !important;
    color: var(--color-black) !important;
    text-decoration: none !important;
    box-sizing: border-box !important;
}

/* PATCH 9686 - Challenge Mode match action menu order/label/halo repair. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {




    width: 1.7rem !important;
    min-width: 1.7rem !important;
    max-width: 1.7rem !important;
    height: 1.7rem !important;
    min-height: 1.7rem !important;
    max-height: 1.7rem !important;




    background: transparent !important;


}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after {


    inset: -.08rem !important;



}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after {
    border: 2px solid rgba(218, 147, 22, .85) !important;
    background: transparent !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after {
    border: 2px solid rgba(220, 38, 38, .85) !important;
    background: transparent !important;
}


/* PATCH 9687: Challenge Event forfeit badge size and Schedule action circular halo. */
.swal2-popup.challenge-event-modal .challenge-event-score-table .challenge-event-status-badge.forfeit-score,
.swal2-popup.challenge-event-modal .challenge-event-score-table span.challenge-event-status-badge.forfeit-score {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 3.85rem !important;
    width: auto !important;
    padding: .44rem 1.08rem !important;
    line-height: 1.18 !important;
    border-radius: 999px !important;
    white-space: nowrap !important;
    box-sizing: border-box !important;
    font-weight: 600 !important;
}

.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {
    width: 1.55rem !important;
    min-width: 1.55rem !important;
    max-width: 1.55rem !important;
    height: 1.55rem !important;
    min-height: 1.55rem !important;
    max-height: 1.55rem !important;


}

.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after {
    left: 50% !important;
    right: auto !important;
    top: 50% !important;
    bottom: auto !important;
    width: 1.82rem !important;
    height: 1.82rem !important;


    box-sizing: border-box !important;
}

.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after {
    border: 2px solid rgba(218, 147, 22, .85) !important;
    border-radius: 999px !important;
}

.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after {
    border: 2px solid rgba(220, 38, 38, .85) !important;
    border-radius: 999px !important;
}


/* PATCH 9688: Render Challenge Event forfeit as a true larger pill and force Schedule menu halo to be circular in both main and player CSS bundles. */
.swal2-popup.challenge-event-modal .challenge-event-score-table .challenge-event-status-cell .challenge-event-status-badge.forfeit-score,
.swal2-popup.challenge-event-modal .challenge-event-score-table span.challenge-event-status-badge.forfeit-score,
.swal2-container .challenge-event-score-table .challenge-event-status-cell .challenge-event-status-badge.forfeit-score,
.swal2-container .challenge-event-score-table span.challenge-event-status-badge.forfeit-score {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 5.75rem !important;
    width: auto !important;
    height: 2.25rem !important;
    min-height: 2.25rem !important;
    padding: 0 1.15rem !important;
    border-radius: 9999px !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    overflow: visible !important;
    box-sizing: border-box !important;
    font-weight: 700 !important;
    font-size: 1rem !important;
    background: var(--color-status-forfeit-bg, #6dc5ee) !important;
    background-color: var(--color-status-forfeit-bg, #6dc5ee) !important;
    border: 0 !important;
    color: var(--color-black, #000) !important;
    text-decoration: none !important;
    text-shadow: none !important;
}

.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.55rem !important;
    min-width: 1.55rem !important;
    max-width: 1.55rem !important;
    height: 1.55rem !important;
    min-height: 1.55rem !important;
    max-height: 1.55rem !important;
    padding: 0 !important;
    margin: 0 !important;



    border-radius: 9999px !important;
    background: transparent !important;
    background-color: transparent !important;
    overflow: visible !important;
    isolation: isolate !important;
}
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after {
    content: '' !important;
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    right: auto !important;
    bottom: auto !important;
    width: 1.9rem !important;
    height: 1.9rem !important;
    transform: translate(-50%, -50%) !important;
    border-radius: 9999px !important;
    box-sizing: border-box !important;
    background: transparent !important;
    box-shadow: none !important;
    pointer-events: none !important;
    z-index: -1 !important;
}
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after {
    border: 2px solid rgba(218, 147, 22, .9) !important;
}
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after {
    border: 2px solid rgba(220, 38, 38, .9) !important;
}


/* PATCH 9689: Schedule action-menu calendar icon halo must wrap the icon itself, not the full menu-row corner. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.4rem !important;
    min-width: 1.4rem !important;
    max-width: 1.4rem !important;
    height: 1.4rem !important;
    min-height: 1.4rem !important;
    max-height: 1.4rem !important;
    padding: 0 !important;
    margin: 0 .1rem 0 0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    overflow: visible !important;
    isolation: isolate !important;
    line-height: 1 !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after {
    content: '' !important;
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    right: auto !important;
    bottom: auto !important;
    width: 1.72rem !important;
    height: 1.72rem !important;
    transform: translate(-50%, -50%) !important;
    border-radius: 999px !important;
    border: 2px solid transparent !important;
    background: transparent !important;
    box-shadow: none !important;
    pointer-events: none !important;
    z-index: -1 !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--set .matches-action-menu-icon::after {
    border-color: rgba(218, 147, 22, .9) !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
body.app-player .matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after {
    border-color: rgba(220, 38, 38, .9) !important;
}


/* ADDED v2026-06-25.9701: Force every availability Calendar date cell to render weekday and month/day on separate lines. */
.table-calendar td.datepad .calendar-date-stack,
.table-calendar td.calendar-date-cell .calendar-date-stack {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0 !important;
    white-space: normal !important;
    line-height: 1.05 !important;
}
.table-calendar td.datepad .calendar-date-dow,
.table-calendar td.datepad .calendar-date-md,
.table-calendar td.calendar-date-cell .calendar-date-dow,
.table-calendar td.calendar-date-cell .calendar-date-md {
    display: block !important;
    width: 100% !important;
    white-space: nowrap !important;
    line-height: 1.05 !important;
    text-align: center !important;
}
.friendlies-mobile-chat-row {
    margin: .35rem 0 .2rem !important;
}
.friendlies-sms-chat-link {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.friendlies-adhoc-availability-section .friendlies-player-profile-link,
.friendlies-adhoc-availability-section .friendlies-player-profile-link:visited {
    color: #004aad !important;
    text-decoration: none !important;
}
.friendlies-adhoc-availability-section .friendlies-player-profile-link:hover,
.friendlies-adhoc-availability-section .friendlies-player-profile-link:focus {
    color: #004aad !important;
    text-decoration: none !important;
}

/* ADDED v2026-06-25.9708: Larger Friendlies player checkboxes on mobile for easier touch selection. */
@media(max-width:560px){
  .friendlies-adhoc-availability-section .friendlies-player-checkbox-option{gap:.55rem!important;min-height:2rem!important;padding:.2rem .15rem!important;}
  .friendlies-adhoc-availability-section .friendlies-player-checkbox-option input[type="checkbox"]{width:1.35rem!important;height:1.35rem!important;min-width:1.35rem!important;accent-color:#004aad!important;}
}


/* PATCH 9779: remove residual orange/red Schedule menu icon outline and keep label neutral. */
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler .matches-action-menu-icon::before,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::before,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::before,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}


/* ADDED v2026-06-27.9810: Challenge Mode Calendar icon halo states for Availability Calendar cells. */
.calendar-scheduler-badge.calendar-scheduler-badge--ready {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .85), 0 0 7px rgba(22, 163, 74, .35) !important;
}
.calendar-scheduler-badge.calendar-scheduler-badge--set {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .9), 0 0 7px rgba(218, 147, 22, .35) !important;
}
.calendar-scheduler-badge.calendar-scheduler-badge--complete {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .9), 0 0 7px rgba(220, 38, 38, .35) !important;
}



/* ADDED v2026-06-27.9811: Explicit Challenge Mode hamburger Calendar halo states, including schedulable green ready state. */
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-halo-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-halo-icon {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .9), 0 0 7px rgba(22, 163, 74, .35) !important;
    background: rgba(22, 163, 74, .12) !important;
    border-radius: 999px !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-halo-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-halo-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .9), 0 0 7px rgba(218, 147, 22, .35) !important;
    background: transparent !important;
    border-radius: 999px !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .9), 0 0 7px rgba(220, 38, 38, .35) !important;
    background: transparent !important;
    border-radius: 999px !important;
}


/* ADDED v2026-06-27.9812: Compact circular halo around Availability Calendar schedule icon. */
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--ready,
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--set,
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--complete {
    width: 1.35rem !important;
    min-width: 1.35rem !important;
    height: 1.35rem !important;
    min-height: 1.35rem !important;
    padding: .12rem !important;
    border-radius: 999px !important;
    border: 0 !important;
    background: #fff !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    font-size: .78rem !important;
}
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--ready {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .9) !important;
}
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--set {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .92) !important;
}
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--complete {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .92) !important;
}


/* ADDED v2026-06-27.9815: Keep scheduled Calendar icon from increasing row/cell height after refresh/redraw. */
.table-calendar .component-player-calendar-hour-cell {
    position: relative !important;
}
.table-calendar .component-player-calendar-hour-cell > .calendar-scheduler-badge {
    position: absolute !important;
    top: 3px !important;
    right: 3px !important;
    margin: 0 !important;
}
.table-calendar .calendar-scheduled-protected-cell > .calendar-scheduler-badge,
.table-calendar .calendar-overlap--scheduled > .calendar-scheduler-badge {
    position: absolute !important;
    top: 3px !important;
    right: 3px !important;
}
.table-calendar .calendar-scheduled-protected-cell,
.table-calendar .calendar-overlap--scheduled {
    min-height: 0 !important;
}


/* ADDED v2026-06-27.9816: Neutral no-halo Calendar icon and stable Calendar row sizing. */
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--neutral {
    width: 1.35rem !important;
    min-width: 1.35rem !important;
    height: 1.35rem !important;
    min-height: 1.35rem !important;
    padding: .12rem !important;
    border-radius: 999px !important;
    border: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    font-size: .78rem !important;
}
.table-calendar .component-player-calendar-hour-cell,
.table-calendar td.component-player-calendar-hour-cell,
.table-calendar .ui-calendar-hour-cell-final,
.table-calendar td.ui-calendar-hour-cell-final {
    height: 5.25rem !important;
    max-height: 5.25rem !important;
    min-height: 5.25rem !important;
    vertical-align: top !important;
    overflow: hidden !important;
}
.table-calendar .calendar-player-color,
.table-calendar .calendar-player-band {
    max-height: .72rem !important;
    line-height: .72rem !important;
}
.table-calendar .component-player-calendar-row,
.table-calendar tr.component-player-calendar-row,
.table-calendar .ui-calendar-row-final {
    height: 5.25rem !important;
    max-height: 5.25rem !important;
}


/* ADDED v2026-06-27.9817: Neutral overlapping Calendar icons are informational, not Scheduler links. */
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--informational,
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--neutral[disabled] {
    cursor: default !important;
    pointer-events: auto !important;
    opacity: 1 !important;
}
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--informational:hover,
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--informational:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}


/* ADDED v2026-06-27.9818: Neutral Calendar icons are visual-only so the cell beneath remains the availability target. */
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--informational,
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--neutral,
.table-calendar .calendar-scheduler-badge[data-scheduler-informational="1"] {
    pointer-events: none !important;
    cursor: default !important;
}


/* ADDED v2026-06-27.9820: hard pointer-pass-through for neutral/no-halo Calendar indicators. */
.table-calendar button.calendar-scheduler-badge.calendar-scheduler-badge--neutral,
.table-calendar button.calendar-scheduler-badge.calendar-scheduler-badge--informational,
.table-calendar button.calendar-scheduler-badge[data-scheduler-informational="1"] {
    pointer-events: none !important;
    cursor: default !important;
}


/* ADDED v2026-06-27.9821: Neutral Calendar icon is a span visual marker, not a Scheduler button/link. */
.table-calendar .calendar-neutral-schedule-icon {
    pointer-events: none !important;
    cursor: default !important;
    user-select: none !important;
}


/* ADDED v2026-06-27.9822: Neutral schedule indicator is not a Scheduler badge/control. */
.table-calendar .calendar-neutral-schedule-icon,
.table-calendar .calendar-neutral-schedule-icon--availability-overlap {



    width: 1.35rem !important;
    min-width: 1.35rem !important;
    height: 1.35rem !important;
    min-height: 1.35rem !important;
    padding: .12rem !important;
    border-radius: 999px !important;
    border: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    font-size: .78rem !important;

    cursor: default !important;
    user-select: none !important;
}


/* ADDED v2026-06-27.9823: neutral visual icon has no actionable Scheduler element underneath. */
.table-calendar .component-player-calendar-hour-cell > .calendar-neutral-schedule-icon {
    z-index: 3 !important;
}


/* ADDED v2026-06-27.9825: Challenge Mode Availability item and reinforced Schedule halo. */
.matches-action-menu-item--availability .matches-action-menu-icon {
    border-radius: 999px !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .9), 0 0 7px rgba(22, 163, 74, .35) !important;
    border-radius: 999px !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .92), 0 0 7px rgba(218, 147, 22, .35) !important;
    border-radius: 999px !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .92), 0 0 7px rgba(220, 38, 38, .35) !important;
    border-radius: 999px !important;
}


/* ADDED v2026-06-27.9827: Restore Challenge Mode Schedule menu halos and keep neutral icons above player bands. */
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-halo-icon,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    height: 1.35rem !important;
    min-width: 1.35rem !important;
    border-radius: 999px !important;
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .9), 0 0 7px rgba(22, 163, 74, .35) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-halo-icon,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--set .matches-action-menu-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    height: 1.35rem !important;
    min-width: 1.35rem !important;
    border-radius: 999px !important;
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .92), 0 0 7px rgba(218, 147, 22, .35) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-icon,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    height: 1.35rem !important;
    min-width: 1.35rem !important;
    border-radius: 999px !important;
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .92), 0 0 7px rgba(220, 38, 38, .35) !important;
}

.table-calendar .component-player-calendar-hour-cell,
.table-calendar td.component-player-calendar-hour-cell {
    position: relative !important;
}
.table-calendar .calendar-player-band {
    position: relative !important;
    z-index: 1 !important;
}
.table-calendar .calendar-neutral-schedule-icon,
.table-calendar .calendar-neutral-schedule-icon--availability-overlap {
    z-index: 20 !important;

}


/* ADDED v2026-06-27.9828: Strong Schedule menu halo fallback and neutral icon top layer. */
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--ready {
    box-shadow: inset 4px 0 0 rgba(22, 163, 74, .95) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--set {
    box-shadow: inset 4px 0 0 rgba(218, 147, 22, .98) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete {
    box-shadow: inset 4px 0 0 rgba(220, 38, 38, .98) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--set .matches-action-menu-icon,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    height: 1.35rem !important;
    border-radius: 999px !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--ready .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .9) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--set .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .92) !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .92) !important;
}
.table-calendar .calendar-neutral-schedule-icon {
    z-index: 50 !important;
    position: absolute !important;
    top: 3px !important;
    right: 3px !important;
    opacity: 1 !important;
}


/* ADDED v2026-06-27.9831: explicit Schedule state dot in hamburger menu. */
.matches-action-menu-panel .matches-schedule-state-dot {
    display: inline-block !important;
    width: .55rem !important;
    height: .55rem !important;
    min-width: .55rem !important;
    border-radius: 999px !important;
}


/* ADDED v2026-06-27.9832: final Schedule icon halo wrapper and neutral marker layering. */
.matches-action-menu-panel .matches-calendar-state-icon {
    flex: 0 0 auto !important;
}
.table-calendar .calendar-neutral-schedule-icon,
.table-calendar .calendar-neutral-schedule-icon--availability-overlap {
    position: absolute !important;
    top: 3px !important;
    right: 3px !important;
    z-index: 80 !important;
    pointer-events: none !important;
    opacity: 1 !important;
}


/* ADDED v2026-06-27.9833: Schedule Summary selected match highlight. */
.matches-pool-schedule-item--highlight {
    background: #f1f3f5 !important;


}
.match-scheduler-complete-details {
    text-align: left;
    margin: .75rem auto;
    max-width: 34rem;
}
.match-scheduler-complete-detail {
    padding: .25rem 0;
}


/* ADDED v2026-06-27.9834: completed match label and selected schedule summary highlight. */
.match-scheduler-complete-match-label {
    text-align: center;
    margin: .25rem 0 .65rem;
    font-size: 1.05rem;
}



/* ADDED v2026-06-27.9835: completed match Schedule Summary icon and selected summary highlight. */
.match-scheduler-complete-match-label .match-scheduler-calendar-context-link--summary {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin-right: .35rem !important;
    text-decoration: none !important;
}
.matches-pool-schedule-item--highlight {
    background: #eeeeee !important;
    border-radius: .45rem !important;
    padding: .45rem .55rem !important;
}


/* ADDED v2026-06-27.9836: Neutral Calendar icon top-layer overlay above all player colour bands. */
.table-calendar .component-player-calendar-hour-cell,
.table-calendar td.component-player-calendar-hour-cell,
.table-calendar .calendar-clickable-cell {
    position: relative !important;
    overflow: visible !important;
}
.table-calendar .calendar-clickable-cell > .calendar-player-band,
.table-calendar .component-player-calendar-hour-cell > .calendar-player-band,
.table-calendar td.component-player-calendar-hour-cell > .calendar-player-band {
    position: relative !important;
    z-index: 1 !important;
}
.table-calendar .calendar-neutral-schedule-icon,
.table-calendar .calendar-neutral-schedule-icon--availability-overlap,
.table-calendar .component-player-calendar-hour-cell > .calendar-neutral-schedule-icon,
.table-calendar td.component-player-calendar-hour-cell > .calendar-neutral-schedule-icon,
.table-calendar .calendar-clickable-cell > .calendar-neutral-schedule-icon {
    position: absolute !important;
    top: 3px !important;
    right: 3px !important;
    z-index: 2147483000 !important;
    isolation: isolate !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    min-width: 1.35rem !important;
    height: 1.35rem !important;
    min-height: 1.35rem !important;
    padding: .12rem !important;
    line-height: 1 !important;
    border-radius: 999px !important;
    border: 0 !important;
    background: #fff !important;
    box-shadow: 0 0 0 1px rgba(255,255,255,.95) !important;
    opacity: 1 !important;
    pointer-events: none !important;
    transform: translateZ(0) !important;
}


/* ADDED v2026-06-27.9837: robust visible Schedule Summary current-match highlight. */
.matches-pool-schedule-item--highlight,
.matches-pool-schedule-item[data-highlighted-current-match="1"] {
    background: #eeeeee !important;
    border-radius: .45rem !important;
    padding: .45rem .55rem !important;
    outline: 2px solid #d0d0d0 !important;
    outline-offset: 2px !important;
}


/* ADDED v2026-06-27.9839: Schedule menu halo is icon-only circle; remove rectangular wrapper outline. */
.matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon,
.matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-halo-icon,
.matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon {
    outline: 0 !important;
    outline-offset: 0 !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon {
    border-radius: 999px !important;
    aspect-ratio: 1 / 1 !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}
.matches-action-menu-panel .matches-calendar-menu-link:focus,
.matches-action-menu-panel .matches-calendar-menu-link:focus-visible,
.matches-action-menu-panel .matches-calendar-menu-link:hover {
    outline: 0 !important;
}
.matches-action-menu-panel .matches-calendar-menu-link:focus .matches-calendar-state-icon,
.matches-action-menu-panel .matches-calendar-menu-link:focus-visible .matches-calendar-state-icon,
.matches-action-menu-panel .matches-calendar-menu-link:hover .matches-calendar-state-icon {
    outline: 0 !important;
}


/* ADDED v2026-06-28.9885: Calendar scheduled-match visual distinction.
   Scheduled match state is shown as a pill and protected cell outline, separate
   from availability colour bands and separate from the Scheduler calendar icon. */
.table-calendar td.calendar-cell-has-scheduled-match,
.table-calendar .calendar-cell-has-scheduled-match {
    position: relative !important;
    box-shadow: inset 0 0 0 2px rgba(37, 99, 235, .55) !important;
}

.table-calendar td.calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill,
.table-calendar .calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    position: absolute !important;


    z-index: 260 !important;
    max-width: calc(100% - 2.1rem) !important;
    min-height: 1.1rem !important;
    padding: 0 .32rem !important;
    border: 1px solid rgba(37, 99, 235, .75) !important;
    border-radius: 999px !important;
    background: rgba(255,255,255,.94) !important;
    color: #1d4ed8 !important;
    font-size: .64rem !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    pointer-events: none !important;
}

.table-calendar td.calendar-scheduled-protected-cell,
.table-calendar .calendar-scheduled-protected-cell {
    cursor: default !important;
}


/* CHANGED v2026-06-28.9886: compact scheduled-match pill for narrow hourly Calendar cells. */
.table-calendar td.calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill,
.table-calendar .calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill {
    left: 2px !important;
    top: 2px !important;
    max-width: none !important;
    min-width: 1.45rem !important;
    width: auto !important;
    height: 1.05rem !important;
    min-height: 1.05rem !important;
    padding: 0 .2rem !important;
    font-size: .58rem !important;
    letter-spacing: -0.02em !important;
}


/* CHANGED v2026-06-28.9887: completed-match pill is slot-specific and uses "Played" for clarity. */
.table-calendar td.calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill,
.table-calendar .calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill {
    min-width: 1.9rem !important;
}


/* ADDED v2026-06-28.9888: Completed match Calendar context uses Scheduled Summary instead of hourly grid. */
.calendar-completed-match-summary {
    margin: 1rem 0 !important;
}
.calendar-completed-match-summary-card .matches-pool-schedule-item--highlighted {
    border: 2px solid rgba(37, 99, 235, .55) !important;
    border-radius: .5rem !important;
    padding: .75rem !important;
    background: rgba(37, 99, 235, .06) !important;
}
.calendar-completed-match-actions {
    margin-top: .85rem !important;
}


/* ADDED v2026-06-28.9890: Completed match summary is a card, not an ordered list item. */
.calendar-completed-match-summary-list {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
.calendar-completed-match-summary-item {
    display: block !important;
    margin-left: 0 !important;
}


/* ADDED v2026-06-28.9892: Scheduled match Calendar context uses Scheduled Summary instead of hourly grid. */
.calendar-scheduled-match-summary {
    margin: 1rem 0 !important;
}
.calendar-scheduled-match-summary-card .matches-pool-schedule-item--highlighted {
    border: 2px solid rgba(218, 147, 22, .65) !important;
    border-radius: .5rem !important;
    padding: .75rem !important;
    background: rgba(218, 147, 22, .08) !important;
}
.calendar-scheduled-match-summary-list {
    list-style: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
.calendar-scheduled-match-summary-item {
    display: block !important;
    margin-left: 0 !important;
}
.calendar-scheduled-match-actions {
    align-items: stretch !important;
    display: flex !important;
    gap: .75rem !important;
    margin: .8rem 0 0 0 !important;
}


/* ADDED v2026-06-28.9901: Withdrawn teams highlighted in redrawn Matches. */
.matches-team-withdrawn,
.matches-team-main.withdrawn {
    background-color: var(--color-status-withdrawn-bg) !important;
    border-radius: 0.35rem !important;
    padding: 0.08rem 0.25rem !important;
}


/* ADDED v2026-06-29.9903: Bottom Unavailable/Withdrawn status tables on Matches. */
.matches-bottom-status-section {
    margin-top: 1rem;
}
.matches-bottom-status-section .matches-status-table {
    margin-top: 0.75rem;
}

/* ADDED v2026-06-29.9904: Compact bottom Unavailable/Withdrawn team lists on Matches. */
.matches-bottom-status-section .matches-status-table th,
.matches-bottom-status-section .matches-status-table td {
    padding-top: 0.25rem !important;
    padding-bottom: 0.25rem !important;
    line-height: 1.2 !important;
}
.matches-bottom-status-section .matches-team-profile-line {
    line-height: 1.2 !important;
}
.matches-bottom-status-section .matches-status-table-gap {
    height: 0.5rem !important;
}

/* ADDED v2026-06-29.9906: Remove extra partner/container look from Admin Round availability snapshot. */
.admin-round-availability-preflight-wrap {
    border-radius: 0 !important;
    margin: 0.5rem 0 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: transparent !important;
    box-shadow: none !important;
}
.admin-round-availability-preflight-table {
    width: 100% !important;
    margin: 0 !important;
    border-radius: 0 !important;
}
.admin-round-availability-preflight-table th,
.admin-round-availability-preflight-table td {
    padding-top: 0.3rem !important;
    padding-bottom: 0.3rem !important;
    line-height: 1.2 !important;
}

/* ADDED v2026-06-29.9907: Compact manual SQL review block and copy action. */
.display-sql-block {
    margin: 0.5rem 0;
}
.display-sql-toolbar {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}
.display-sql-copy-button {
    width: auto;
    min-width: 2rem;
    padding: 0.15rem 0.4rem;
    line-height: 1.2;
}
textarea.displaysql {
    white-space: pre;
    line-height: 1.1;
}


/** ADDED v2026-06-29.9967: Keep Team Profile Game History opponent rosters on one line. */
.team-profile-game-history-data .team-profile-linked-team,
.team-profile-game-history-data .team-profile-linked-roster,
.team-profile-game-history-data .team-profile-inline-roster,
.team-profile-game-history-data .component-team-members--inline {
    white-space: nowrap;
    flex-wrap: nowrap;
}
.team-profile-game-history-data .team-pair-separator {
    white-space: nowrap;
}


/** ADDED v2026-06-29.9970: Team Profile Game History column sizing; give Match/Opponent room and keep Result/Score compact. */
.team-profile-game-history-data table,
table.team-profile-game-history-data {
    table-layout: auto;
}
.team-profile-game-history-data th:nth-child(1),
.team-profile-game-history-data td:nth-child(1) {
    width: 23%;
    white-space: nowrap;
}
.team-profile-game-history-data th:nth-child(2),
.team-profile-game-history-data td:nth-child(2) {
    width: 50%;
    white-space: nowrap;
}
.team-profile-game-history-data th:nth-child(3),
.team-profile-game-history-data td:nth-child(3) {
    width: 17%;
    white-space: nowrap;
}
.team-profile-game-history-data th:nth-child(4),
.team-profile-game-history-data td:nth-child(4) {
    width: 10%;
    white-space: nowrap;
}
.team-profile-game-history-data .team-profile-linked-team,
.team-profile-game-history-data .team-profile-linked-roster,
.team-profile-game-history-data .team-profile-inline-roster,
.team-profile-game-history-data .component-team-display,
.team-profile-game-history-data .component-team-members,
.team-profile-game-history-data .component-team-members--inline {
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    flex-wrap: nowrap;
}


/** CHANGED v2026-06-29.9971: Content-fit Result/Score columns; Match/Opponent share remaining width. */
.team-profile-game-history-data .ui-responsive-data-table,
.team-profile-game-history-data .ui-data-display-table,
.team-profile-game-history-data table {
    width: 100%;
    table-layout: auto;
}
.team-profile-game-history-data .ui-responsive-data-table th:nth-child(1),
.team-profile-game-history-data .ui-responsive-data-table td:nth-child(1),
.team-profile-game-history-data .ui-data-display-table th:nth-child(1),
.team-profile-game-history-data .ui-data-display-table td:nth-child(1) {
    width: 1%;
    white-space: nowrap;
}
.team-profile-game-history-data .ui-responsive-data-table th:nth-child(2),
.team-profile-game-history-data .ui-responsive-data-table td:nth-child(2),
.team-profile-game-history-data .ui-data-display-table th:nth-child(2),
.team-profile-game-history-data .ui-data-display-table td:nth-child(2) {
    width: auto;
    white-space: nowrap;
}
.team-profile-game-history-data .ui-responsive-data-table th:nth-child(3),
.team-profile-game-history-data .ui-responsive-data-table td:nth-child(3),
.team-profile-game-history-data .ui-data-display-table th:nth-child(3),
.team-profile-game-history-data .ui-data-display-table td:nth-child(3) {
    width: 1%;
    white-space: nowrap;
}
.team-profile-game-history-data .ui-responsive-data-table th:nth-child(4),
.team-profile-game-history-data .ui-responsive-data-table td:nth-child(4),
.team-profile-game-history-data .ui-data-display-table th:nth-child(4),
.team-profile-game-history-data .ui-data-display-table td:nth-child(4) {
    width: 1%;
    white-space: nowrap;
}
.team-profile-game-history-data .team-profile-linked-roster,
.team-profile-game-history-data .team-profile-inline-roster,
.team-profile-game-history-data .component-team-members,
.team-profile-game-history-data .component-team-members--inline {
    min-width: max-content;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    flex-wrap: nowrap;
}


/** CHANGED v2026-06-29.9972: Dedicated Team Profile Game History table column sizing. */
.team-profile-game-history-table {
    width: 100%;

}

.team-profile-game-history-table .team-profile-game-history-col-opponent {
    width: auto;
}
.team-profile-game-history-table .team-profile-game-history-col-result {
    width: 7.5rem;
}
.team-profile-game-history-table .team-profile-game-history-col-score {
    width: 4.5rem;
}
.team-profile-game-history-table th,
.team-profile-game-history-table td {
    white-space: nowrap;
}
.team-profile-game-history-cell-result,
.team-profile-game-history-cell-score {
    width: 1%;
}
.team-profile-game-history-cell-opponent {
    min-width: 20rem;
}
.team-profile-game-history-cell-opponent .team-profile-linked-team,
.team-profile-game-history-cell-opponent .team-profile-linked-roster,
.team-profile-game-history-cell-opponent .team-profile-inline-roster,
.team-profile-game-history-cell-opponent .component-team-display,
.team-profile-game-history-cell-opponent .component-team-members,
.team-profile-game-history-cell-opponent .component-team-members--inline {
    max-width: none;
    min-width: 0;
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    flex-wrap: nowrap;
}


/** CHANGED v2026-06-29.9973: Let Game History table grow to fit opponent names; wrapper scrolls instead of clipping. */
.team-profile-game-history-data .ui-responsive-table-wrap,
.team-profile-game-history-data .ui-data-display-wrap,
.team-profile-game-history-data .ui-table-container {
    overflow-x: auto;
    max-width: 100%;
}
.team-profile-game-history-table {
    width: max-content;
    min-width: 100%;
    table-layout: auto;
}
.team-profile-game-history-table .team-profile-game-history-col-match {
    width: 13rem;
}
.team-profile-game-history-table .team-profile-game-history-col-opponent {
    width: 24rem;
}
.team-profile-game-history-table .team-profile-game-history-col-result {
    width: 7rem;
}
.team-profile-game-history-table .team-profile-game-history-col-score {
    width: 4rem;
}
.team-profile-game-history-cell-opponent,
.team-profile-game-history-cell-opponent a,
.team-profile-game-history-cell-opponent .team-profile-linked-team,
.team-profile-game-history-cell-opponent .team-profile-linked-roster,
.team-profile-game-history-cell-opponent .team-profile-inline-roster,
.team-profile-game-history-cell-opponent .component-team-display,
.team-profile-game-history-cell-opponent .component-team-members,
.team-profile-game-history-cell-opponent .component-team-members--inline {
    overflow: visible !important;
    text-overflow: clip !important;
    max-width: none !important;
    white-space: nowrap !important;
    flex-wrap: nowrap !important;
}


/** CHANGED v2026-06-29.9974: Opponent cell owns its full content width; Result/Score stay compact and text cannot spill across cell borders. */

.team-profile-game-history-table .team-profile-game-history-col-match {
    width: 13rem !important;
}

.team-profile-game-history-table .team-profile-game-history-col-result {
    width: 6.25rem !important;
}
.team-profile-game-history-table .team-profile-game-history-col-score {
    width: 6.5rem !important;
}
.team-profile-game-history-cell-result,
.team-profile-game-history-cell-score {
    width: 1% !important;

}




/** CHANGED v2026-06-29.9976: Fixed Game History columns; Result/Score compact, Opponent gets remaining width. */
.team-profile-game-history-table {

    min-width: 62rem !important;

}




.team-profile-game-history-cell-match,
.team-profile-game-history-cell-result,
.team-profile-game-history-cell-score {
    white-space: nowrap !important;
}
.team-profile-game-history-cell-opponent {

    overflow: visible !important;

}
.team-profile-game-history-cell-opponent .team-profile-linked-team,
.team-profile-game-history-cell-opponent .team-profile-linked-roster,
.team-profile-game-history-cell-opponent .team-profile-inline-roster,
.team-profile-game-history-cell-opponent .component-team-display,
.team-profile-game-history-cell-opponent .component-team-members,
.team-profile-game-history-cell-opponent .component-team-members--inline {
    width: auto !important;
    min-width: 0 !important;

    overflow: visible !important;



}


/** CHANGED v2026-06-29.9977: Opponent clips inside its own cell instead of spilling into Result. */
.team-profile-game-history-table {
    width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
}

.team-profile-game-history-table .team-profile-game-history-col-result {
    width: 6.75rem !important;
}
.team-profile-game-history-table .team-profile-game-history-col-score {
    width: 7.25rem !important;
}
.team-profile-game-history-cell-opponent,
.team-profile-game-history-cell-opponent .team-profile-linked-team,
.team-profile-game-history-cell-opponent .team-profile-linked-roster,
.team-profile-game-history-cell-opponent .team-profile-inline-roster,
.team-profile-game-history-cell-opponent .component-team-display,
.team-profile-game-history-cell-opponent .component-team-members,
.team-profile-game-history-cell-opponent .component-team-members--inline {
    min-width: 0 !important;
    max-width: 100% !important;
    width: auto !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    flex-wrap: nowrap !important;
}
.team-profile-game-history-cell-result,
.team-profile-game-history-cell-score {
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: clip !important;
}


/** CHANGED v2026-06-29.9978: Game History expands horizontally instead of clipping or spilling opponent names. */
.team-profile-game-history-data .ui-responsive-table-wrap,
.team-profile-game-history-data .ui-data-display-wrap,
.team-profile-game-history-data .ui-table-container {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
}
.team-profile-game-history-table {
    width: max-content !important;
    min-width: 100% !important;
    table-layout: auto !important;
}
.team-profile-game-history-table .team-profile-game-history-col-match {
    width: 15rem !important;
}
.team-profile-game-history-table .team-profile-game-history-col-opponent {
    width: auto !important;
}
.team-profile-game-history-table .team-profile-game-history-col-result {
    width: 6rem !important;
}
.team-profile-game-history-table .team-profile-game-history-col-score {
    width: 7.5rem !important;
}
.team-profile-game-history-table th,
.team-profile-game-history-table td {
    white-space: nowrap !important;
}
.team-profile-game-history-cell-match {
    width: 15rem !important;
}
.team-profile-game-history-cell-result {
    width: 1% !important;
    min-width: 6rem !important;
    max-width: 6rem !important;
    overflow: hidden !important;
    text-overflow: clip !important;
}
.team-profile-game-history-cell-score {
    width: 1% !important;
    min-width: 7.5rem !important;
    max-width: 7.5rem !important;
    overflow: hidden !important;
    text-overflow: clip !important;
}
.team-profile-game-history-cell-opponent {
    width: max-content !important;
    min-width: max-content !important;
    max-width: none !important;
    overflow: hidden !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
}
.team-profile-game-history-cell-opponent .team-profile-linked-team,
.team-profile-game-history-cell-opponent .team-profile-linked-roster,
.team-profile-game-history-cell-opponent .team-profile-inline-roster,
.team-profile-game-history-cell-opponent .component-team-display,
.team-profile-game-history-cell-opponent .component-team-members,
.team-profile-game-history-cell-opponent .component-team-members--inline {
    display: inline-flex !important;
    width: max-content !important;
    min-width: max-content !important;
    max-width: none !important;
    overflow: hidden !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
    flex-wrap: nowrap !important;
}


/** CHANGED v2026-06-29.9979: Final explicit Game History sizing. No opponent clipping, no spill; Result/Score compact. */
body .team-profile-game-history-data .ui-responsive-table-wrap,
body .team-profile-game-history-data .ui-data-display-wrap,
body .team-profile-game-history-data .ui-table-container {
    max-width: 100% !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
}
body .team-profile-game-history-data table.team-profile-game-history-table {
    table-layout: fixed !important;
    width: 100% !important;
    min-width: 80rem !important;
}
body .team-profile-game-history-data table.team-profile-game-history-table col.team-profile-game-history-col-match {
    width: 15rem !important;
}
body .team-profile-game-history-data table.team-profile-game-history-table col.team-profile-game-history-col-result {
    width: 7.5rem !important;
}
body .team-profile-game-history-data table.team-profile-game-history-table col.team-profile-game-history-col-score {
    width: 8rem !important;
}
body .team-profile-game-history-data table.team-profile-game-history-table col.team-profile-game-history-col-opponent {
    width: auto !important;
}
body .team-profile-game-history-table th,
body .team-profile-game-history-table td {
    white-space: nowrap !important;
}
body .team-profile-game-history-cell-result {
    width: 7.5rem !important;
    min-width: 7.5rem !important;
    max-width: 7.5rem !important;
    overflow: hidden !important;
    text-overflow: clip !important;
}
body .team-profile-game-history-cell-score {
    width: 8rem !important;
    min-width: 8rem !important;
    max-width: 8rem !important;
    overflow: hidden !important;
    text-overflow: clip !important;
}
body .team-profile-game-history-cell-match {
    width: 15rem !important;
    min-width: 15rem !important;
    max-width: 15rem !important;
    overflow: hidden !important;
    text-overflow: clip !important;
}
body .team-profile-game-history-cell-opponent {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    overflow: hidden !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
}
body .team-profile-game-history-cell-opponent .team-profile-linked-team,
body .team-profile-game-history-cell-opponent .team-profile-linked-roster,
body .team-profile-game-history-cell-opponent .team-profile-inline-roster,
body .team-profile-game-history-cell-opponent .component-team-display,
body .team-profile-game-history-cell-opponent .component-team-members,
body .team-profile-game-history-cell-opponent .component-team-members--inline {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
    flex-wrap: nowrap !important;
}


/** ADDED v2026-06-29.9980: Isolated final Game History layout; avoids all accumulated legacy width rules. */
.team-profile-game-history-final9980 {
    max-width: 100%;
}
.team-profile-game-history-wrap9980 {
    max-width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
}
.team-profile-game-history-table9980 {
    width: 100%;
    min-width: 72rem;
    border-collapse: collapse;
    table-layout: fixed;
}
.team-profile-game-history-table9980 th,
.team-profile-game-history-table9980 td {
    border: 1px solid var(--color-border, #bdbdbd);
    padding: 0.35rem 0.55rem;
    white-space: nowrap;
    vertical-align: middle;
}
.team-profile-game-history-table9980 th {
    background: var(--color-table-header-bg, #d3d3d3);
    font-weight: 700;
    text-align: center;
}
.team-profile-game-history-col-match9980,
.team-profile-game-history-th-match9980,
.team-profile-game-history-cell-match9980 {
    width: 14.5rem;
}
.team-profile-game-history-col-result9980,
.team-profile-game-history-th-result9980,
.team-profile-game-history-cell-result9980 {
    width: 6.5rem;
}
.team-profile-game-history-col-score9980,
.team-profile-game-history-th-score9980,
.team-profile-game-history-cell-score9980 {
    width: 7.5rem;
}
.team-profile-game-history-col-opponent9980,
.team-profile-game-history-th-opponent9980,
.team-profile-game-history-cell-opponent9980 {
    width: auto;
}
.team-profile-game-history-cell-match9980,
.team-profile-game-history-cell-result9980,
.team-profile-game-history-cell-score9980 {
    overflow: hidden;
    text-overflow: clip;
}
.team-profile-game-history-cell-opponent9980 {
    overflow: visible;
    text-overflow: clip;
}
.team-profile-game-history-cell-opponent9980 .team-profile-linked-team,
.team-profile-game-history-cell-opponent9980 .team-profile-linked-roster,
.team-profile-game-history-cell-opponent9980 .team-profile-inline-roster,
.team-profile-game-history-cell-opponent9980 .component-team-display,
.team-profile-game-history-cell-opponent9980 .component-team-members,
.team-profile-game-history-cell-opponent9980 .component-team-members--inline {
    display: inline-flex;
    width: auto;
    min-width: 0;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    flex-wrap: nowrap;
}


/** CHANGED v2026-06-29.9981: Widen isolated Game History Match column so "Round N, Pool X, Game Y" stays on one line. */
.team-profile-game-history-table9980 {
    min-width: 72rem !important;
}
.team-profile-game-history-col-match9980,
.team-profile-game-history-th-match9980,
.team-profile-game-history-cell-match9980 {
    width: 18rem !important;
    min-width: 18rem !important;
    max-width: 18rem !important;
    white-space: nowrap !important;
}
.team-profile-game-history-col-result9980,
.team-profile-game-history-th-result9980,
.team-profile-game-history-cell-result9980 {
    width: 6.5rem !important;
    min-width: 6.5rem !important;
    max-width: 6.5rem !important;
}
.team-profile-game-history-col-score9980,
.team-profile-game-history-th-score9980,
.team-profile-game-history-cell-score9980 {
    width: 7.5rem !important;
    min-width: 7.5rem !important;
    max-width: 7.5rem !important;
}
.team-profile-game-history-col-opponent9980,
.team-profile-game-history-th-opponent9980,
.team-profile-game-history-cell-opponent9980 {
    width: auto !important;
}


/** ADDED v2026-06-29.9982: Isolated four-column Team Profile Match History layout matching Game History. */
.team-profile-history-final9982 {
    max-width: 100%;
}
.team-profile-history-wrap9982 {
    max-width: 100%;
    overflow-x: auto;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
}
.team-profile-history-table9982 {
    width: 100%;
    min-width: 72rem;
    border-collapse: collapse;
    table-layout: fixed;
}
.team-profile-history-table9982 th,
.team-profile-history-table9982 td {
    border: 1px solid var(--color-border, #bdbdbd);
    padding: 0.35rem 0.55rem;
    white-space: nowrap;
    vertical-align: middle;
}
.team-profile-history-table9982 th {
    background: var(--color-table-header-bg, #d3d3d3);
    font-weight: 700;
    text-align: center;
}
.team-profile-history-col-match9982,
.team-profile-history-th-match9982,
.team-profile-history-cell-match9982 {
    width: 18rem;
}
.team-profile-history-col-result9982,
.team-profile-history-th-result9982,
.team-profile-history-cell-result9982 {
    width: 8rem;
}
.team-profile-history-col-score9982,
.team-profile-history-th-score9982,
.team-profile-history-cell-score9982 {
    width: 17rem;
}
.team-profile-history-col-opponent9982,
.team-profile-history-th-opponent9982,
.team-profile-history-cell-opponent9982 {
    width: auto;
}
.team-profile-history-cell-match9982,
.team-profile-history-cell-result9982,
.team-profile-history-cell-score9982 {
    overflow: hidden;
    text-overflow: clip;
}
.team-profile-history-cell-opponent9982 {
    overflow: visible;
    text-overflow: clip;
}
.team-profile-history-cell-opponent9982 .team-profile-linked-team,
.team-profile-history-cell-opponent9982 .team-profile-linked-roster,
.team-profile-history-cell-opponent9982 .team-profile-inline-roster,
.team-profile-history-cell-opponent9982 .component-team-display,
.team-profile-history-cell-opponent9982 .component-team-members,
.team-profile-history-cell-opponent9982 .component-team-members--inline {
    display: inline-flex;
    width: auto;
    min-width: 0;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    flex-wrap: nowrap;
}


/** CHANGED v2026-06-29.9984: Match History Match label is shorter, so reduce Match width to avoid desktop horizontal scroll. */
.team-profile-history-final9982-match .team-profile-history-table9982 {
    min-width: 64rem !important;
}
.team-profile-history-final9982-match .team-profile-history-col-match9982,
.team-profile-history-final9982-match .team-profile-history-th-match9982,
.team-profile-history-final9982-match .team-profile-history-cell-match9982 {
    width: 11rem !important;
    min-width: 11rem !important;
    max-width: 11rem !important;
}
.team-profile-history-final9982-match .team-profile-history-col-result9982,
.team-profile-history-final9982-match .team-profile-history-th-result9982,
.team-profile-history-final9982-match .team-profile-history-cell-result9982 {
    width: 8rem !important;
    min-width: 8rem !important;
    max-width: 8rem !important;
}
.team-profile-history-final9982-match .team-profile-history-col-score9982,
.team-profile-history-final9982-match .team-profile-history-th-score9982,
.team-profile-history-final9982-match .team-profile-history-cell-score9982 {
    width: 17rem !important;
    min-width: 17rem !important;
    max-width: 17rem !important;
}
.team-profile-history-final9982-match .team-profile-history-col-opponent9982,
.team-profile-history-final9982-match .team-profile-history-th-opponent9982,
.team-profile-history-final9982-match .team-profile-history-cell-opponent9982 {
    width: auto !important;
}


/** ADDED v2026-06-29.9990: Create Round confirmations render as separate block lines. */
.admin-create-round-checkbox-line {
    display: block;
    margin: 0.35rem 0;
}


/** CHANGED v2026-06-29.9991: Force Create Round confirmation checkboxes onto separate lines despite admin-inline-form defaults. */
.admin-create-round-form {

    width: 100%;
}

.admin-create-round-form .admin-create-round-confirmation-note {
    display: inline-flex !important;
    align-items: center;
    gap: 0.45rem;
    white-space: normal !important;
    max-width: 100%;
}
.admin-create-round-form .admin-action-button {
    display: block;
    width: 100%;
    margin-top: 0.75rem;
}


/** CHANGED v2026-06-29.9992: Create Round checkbox text uses the full parent width and does not wrap on desktop. */
.admin-create-round-form {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
}
.admin-create-round-form .admin-create-round-checkbox-line {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0.45rem 0 !important;
    clear: both;
}
.admin-create-round-form .admin-create-round-confirmation-note {
    display: grid !important;
    grid-template-columns: 1.35rem minmax(0, 1fr) !important;
    align-items: center !important;
    column-gap: 0.65rem !important;
    width: 100% !important;
    max-width: none !important;
    white-space: nowrap !important;
}
.admin-create-round-form .admin-create-round-confirmation-note input[type='checkbox'] {
    grid-column: 1;
    justify-self: center;
}
.admin-create-round-form .admin-create-round-checkbox-text {
    grid-column: 2;
    display: block;
    width: 100%;
    max-width: none;
    white-space: nowrap !important;
    overflow: visible;
    text-overflow: clip;
}
@media (max-width: 700px) {
    .admin-create-round-form .admin-create-round-confirmation-note,
    .admin-create-round-form .admin-create-round-checkbox-text {
        white-space: normal !important;
    }
}


/** ADDED v2026-06-29.9993: Current-player pool heading availability clock sits beside Schedule Summary icon without adding global clutter. */
.matches-pool-heading-cell .matches-pool-schedule-swal-link,
.matches-pool-heading-cell .matches-pool-availability-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: 0.35rem;
    text-decoration: none;
    vertical-align: middle;
    line-height: 1;
}
.matches-pool-heading-cell .matches-pool-availability-link {
    opacity: 0.82;
}
.matches-pool-heading-cell .matches-pool-availability-link:hover,
.matches-pool-heading-cell .matches-pool-availability-link:focus {
    opacity: 1;
    text-decoration: none;
}
.matches-pool-heading-cell .matches-pool-schedule-icon,
.matches-pool-heading-cell .matches-pool-availability-icon {
    display: inline-block;
    line-height: 1;
}


/** CHANGED v2026-06-29.9996: Mobile Challenge Mode hamburger panel must not be clipped by match row/table wrappers. */
@media (max-width: 760px) {
    body.app-player .matches-pool-table-wrap,
    body.app-player .matches-table.match-layout-table,
    body.app-player .matches-table.match-layout-table tbody,
    body.app-player .matches-table.match-layout-table tr.component-player-match-row,
    body.app-player .matches-table.match-layout-table td.matches-table-team-cell,
    body.app-player .matches-table.match-layout-table td.component-player-match-team-cell,
    body.app-player .matches-table.match-layout-table .component-team-pair--matches {
        overflow: visible !important;
    }
    body.app-player .matches-table.match-layout-table tr.component-player-match-row:has(.matches-action-menu[open]),
    body.app-player .matches-table.match-layout-table td.matches-table-team-cell:has(.matches-action-menu[open]),
    body.app-player .matches-table.match-layout-table td.component-player-match-team-cell:has(.matches-action-menu[open]) {
        position: relative !important;
        z-index: 900 !important;
    }
    body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu[open],
    body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu[open] {
        z-index: 1000 !important;
    }
    body.app-player .matches-table.match-layout-table td.matches-table-team-cell .matches-action-menu[open] .matches-action-menu-panel,
    body.app-player .matches-table.match-layout-table td.component-player-match-team-cell .matches-action-menu[open] .matches-action-menu-panel {
        z-index: 1001 !important;
        max-width: calc(100vw - 2rem) !important;
        right: 0 !important;
    }
}


/** ADDED v2026-06-29.9998: Opponent Notes modal and hamburger item. */
.matches-action-menu-item--opponent-notes .matches-action-menu-icon {
    min-width: 1.25rem;
    text-align: center;
}
.opponent-notes-modal .swal2-html-container {
    margin: 0.75rem 0 0 0;
    text-align: left;
}
.opponent-notes-modal-body {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    width: 100%;
}
.opponent-notes-textarea {
    display: block;
    width: 100%;
    box-sizing: border-box;
    min-height: 22rem;
    resize: vertical;
    font: inherit;
    line-height: 1.4;
    padding: 0.75rem;
}
.opponent-notes-dictate-row {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-height: 2rem;
}
.opponent-notes-dictate-button {
    padding: 0.35rem 0.7rem;
}
.opponent-notes-helper-text {
    margin: 0;
}
@media (max-width: 700px) {
    .opponent-notes-modal {
        width: 100vw !important;
        max-width: 100vw !important;

        margin: 0 !important;
        border-radius: 0 !important;
    }
    .opponent-notes-modal .swal2-html-container {
        max-height: none;
    }
    .opponent-notes-textarea {
        min-height: 62vh;
    }
}


/** CHANGED v2026-06-29.10000: Opponent Notes textarea should consume most available modal height. */
.opponent-notes-modal {
    width: min(960px, 96vw) !important;
}
.opponent-notes-modal .swal2-html-container {
    overflow: visible !important;
}
.opponent-notes-modal-body {
    height: min(74vh, 48rem);
}
.opponent-notes-textarea {
    flex: 1 1 auto;
    min-height: 34rem;
    height: 100%;
}
.match-scheduler-summary strong {
    font-weight: inherit;
}
@media (max-width: 700px) {
    .opponent-notes-modal {
        display: flex !important;
        flex-direction: column !important;
        min-height: 100vh;
        height: 100vh;
    }
    .opponent-notes-modal .swal2-html-container {
        flex: 1 1 auto;
        display: flex !important;
        flex-direction: column !important;
        width: 100%;
        margin-top: 0.35rem !important;
    }
    .opponent-notes-modal-body {
        flex: 1 1 auto;
        height: auto;
        min-height: 0;
    }
    .opponent-notes-textarea {
        min-height: 0;
        height: auto;
        flex: 1 1 auto;
    }
    .opponent-notes-modal .swal2-actions {
        flex-direction: column-reverse !important;
        gap: 0.35rem !important;
        margin-top: 0.5rem !important;
    }
    .opponent-notes-modal .swal2-actions .swal2-styled {
        margin: 0 !important;
        width: min(18rem, 86vw);
    }
}


/** CHANGED v2026-06-29.10002: Align hamburger menu icons and labels on a stable vertical centerline. */
.matches-action-menu-panel .matches-action-menu-item,
.matches-action-menu[open] .matches-action-menu-item {
    display: grid !important;
    grid-template-columns: 1.65rem minmax(0, 1fr) !important;
    align-items: center !important;
    column-gap: 0.55rem !important;
    line-height: 1.2 !important;
    min-height: 2.15rem !important;
}
.matches-action-menu-panel .matches-action-menu-icon,
.matches-action-menu[open] .matches-action-menu-icon {
    grid-column: 1 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.65rem !important;
    min-width: 1.65rem !important;
    height: 1.65rem !important;
    line-height: 1 !important;
    margin: 0 !important;
    text-align: center !important;
}

.matches-action-menu-panel .matches-calendar-state-icon,
.matches-action-menu[open] .matches-calendar-state-icon {
    grid-column: 1 !important;
    margin-right: 0 !important;
}


/** CHANGED v2026-06-29.10005: Schedule menu item uses same baseline as all other hamburger rows. */
.matches-action-menu-panel .matches-action-menu-item--calendar,
.matches-action-menu[open] .matches-action-menu-item--calendar {

    grid-template-columns: 1.4rem minmax(0, 1fr) !important;

}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-action-menu-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-action-menu-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    place-self: center !important;
    width: 1.18rem !important;
    min-width: 1.18rem !important;
    max-width: 1.18rem !important;
    height: 1.18rem !important;
    min-height: 1.18rem !important;
    max-height: 1.18rem !important;
    margin: 0 !important;
    padding: 0 !important;
    font-size: 0.78rem !important;
    line-height: 1 !important;
    vertical-align: middle !important;
    border-radius: 999px !important;
    background: #fff !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}



/** CHANGED v2026-06-29.10006: Schedule status halo must be circular in every state, including amber scheduled. */
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon {
    border-radius: 50% !important;
    aspect-ratio: 1 / 1 !important;
    background: #fff !important;
    box-shadow: none !important;
    outline: 0 !important;
    overflow: hidden !important;
    clip-path: circle(50% at 50% 50%) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon {
    border-radius: 50% !important;
    background: #fff !important;
}


/** CHANGED v2026-06-29.10007: Schedule status uses an outer box-shadow halo so the square calendar emoji cannot clip the ring. */
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon {





    width: 1.22rem !important;
    min-width: 1.22rem !important;
    max-width: 1.22rem !important;
    height: 1.22rem !important;
    min-height: 1.22rem !important;
    max-height: 1.22rem !important;
    font-size: 0.74rem !important;

}






/** CHANGED v2026-06-29.10008: Prevent legacy menu CSS from turning Schedule status into a square highlight. */
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon {
    border: 0 !important;
    background: transparent !important;
    border-radius: 999px !important;
    clip-path: none !important;
    overflow: visible !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .98) !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .95) !important;
}
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .98) !important;
}


/** CHANGED v2026-06-29.10009: Schedule hamburger icon is CSS-drawn, not emoji-based, so halo remains circular and text aligns. */
.matches-action-menu-panel .matches-action-menu-item--calendar,
.matches-action-menu[open] .matches-action-menu-item--calendar {
    display: grid !important;
    grid-template-columns: 1.55rem minmax(0, 1fr) !important;
    align-items: center !important;
    column-gap: 0.55rem !important;
    min-height: 2.05rem !important;
    line-height: 1.2 !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon {
    grid-column: 1 !important;
    place-self: center !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.18rem !important;
    min-width: 1.18rem !important;
    max-width: 1.18rem !important;
    height: 1.18rem !important;
    min-height: 1.18rem !important;
    max-height: 1.18rem !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    background: transparent !important;
    clip-path: none !important;
    overflow: visible !important;
    line-height: 1 !important;
    font-size: 0 !important;
    box-sizing: border-box !important;
    vertical-align: middle !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-css-glyph,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-css-glyph {
    display: block !important;
    position: relative !important;
    width: 0.78rem !important;
    height: 0.72rem !important;
    border: 1.5px solid #6073c9 !important;
    border-radius: 2px !important;
    background:
        linear-gradient(#6073c9, #6073c9) left 0 top 0 / 100% 0.18rem no-repeat,
        linear-gradient(90deg, transparent 31%, rgba(96,115,201,.55) 31%, rgba(96,115,201,.55) 38%, transparent 38%, transparent 62%, rgba(96,115,201,.55) 62%, rgba(96,115,201,.55) 69%, transparent 69%),
        linear-gradient(transparent 44%, rgba(96,115,201,.45) 44%, rgba(96,115,201,.45) 52%, transparent 52%) !important;
    box-sizing: border-box !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-action-menu-text,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-action-menu-text {
    grid-column: 2 !important;



    min-height: 1.4rem !important;


}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .95) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .98) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .98) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--unscheduled .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--unscheduled .matches-calendar-state-icon {
    box-shadow: none !important;
}


/** CHANGED v2026-06-29.10010: Draw Schedule status as a separate circular pseudo-element, never as the icon box. */
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon.matches-calendar-state-icon {





    border-radius: 0 !important;
    clip-path: none !important;

}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon::before {
    content: "" !important;
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.34rem !important;
    height: 1.34rem !important;
    transform: translate(-50%, -50%) !important;
    border-radius: 50% !important;
    border: 2px solid transparent !important;
    background: transparent !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
    z-index: 0 !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-css-glyph,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-css-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-css-glyph {

    z-index: 1 !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--ready .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-state-icon::before {
    border-color: rgba(22, 163, 74, .95) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--set .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-state-icon::before {
    border-color: rgba(218, 147, 22, .98) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon::before {
    border-color: rgba(220, 38, 38, .98) !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--unscheduled .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--unscheduled .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--unscheduled .matches-calendar-state-icon::before {
    border-color: transparent !important;
}


/** CHANGED v2026-06-29.10011: Schedule status halo is a real nested circular element independent of legacy icon styling. */
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon {
    position: relative !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.3rem !important;
    min-width: 1.3rem !important;
    max-width: 1.3rem !important;
    height: 1.3rem !important;
    min-height: 1.3rem !important;
    max-height: 1.3rem !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    outline: 0 !important;
    overflow: visible !important;
    clip-path: none !important;
    border-radius: 0 !important;
    font-size: 0 !important;
    line-height: 1 !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon::before {
    display: none !important;
    content: none !important;
}
.matches-calendar-halo-ring {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.28rem !important;
    height: 1.28rem !important;
    transform: translate(-50%, -50%) !important;
    border: 2px solid transparent !important;
    border-radius: 50% !important;
    background: transparent !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
    z-index: 0 !important;
}
.matches-calendar-css-glyph {
    position: relative !important;
    z-index: 1 !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-action-menu-text,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-action-menu-text {
    align-self: center !important;
    display: flex !important;
    align-items: center !important;
    line-height: 1.2 !important;
    margin: 0 !important;
}


/** CHANGED v2026-06-29.10014: Reloaded scheduled Calendar cells use the same large yellow protected fill as AJAX-scheduled cells. */
.table-calendar td.calendar-scheduled-protected-cell,
.table-calendar .calendar-scheduled-protected-cell,
.table-calendar td.calendar-cell-has-scheduled-match,
.table-calendar .calendar-cell-has-scheduled-match {
    background: rgba(218, 147, 22, .28) !important;
    cursor: default !important;
    position: relative !important;

}
.table-calendar td.calendar-scheduled-protected-cell .calendar-player-band,
.table-calendar .calendar-scheduled-protected-cell .calendar-player-band {
    opacity: .55 !important;
}


/** CHANGED v2026-06-29.10015: Ensure real Schedule halo ring is visible for scheduled hamburger rows. */
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-halo-ring,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-halo-ring,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-halo-ring {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;



    width: 1.28rem !important;
    height: 1.28rem !important;



    border-radius: 50% !important;



    z-index: 2 !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-css-glyph,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-css-glyph {
    z-index: 3 !important;
}


/** CHANGED v2026-06-29.10016: Scheduled Calendar cells use one consistent light yellow fill with amber calendar halo icon. */
.table-calendar td.calendar-scheduled-protected-cell,
.table-calendar .calendar-scheduled-protected-cell,
.table-calendar td.calendar-cell-has-scheduled-match,
.table-calendar .calendar-cell-has-scheduled-match {
    background: rgba(218, 147, 22, .16) !important;
    box-shadow: inset 0 0 0 2px rgba(218, 147, 22, .85) !important;
}
.table-calendar td.calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill,
.table-calendar .calendar-cell-has-scheduled-match > .calendar-scheduled-match-pill {
    display: none !important;
}
.table-calendar td.calendar-cell-has-scheduled-match .calendar-scheduler-badge.calendar-scheduler-badge--set,
.table-calendar .calendar-cell-has-scheduled-match .calendar-scheduler-badge.calendar-scheduler-badge--set {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    z-index: 310 !important;
}


/** CHANGED v2026-06-29.10020: Ready overlap Calendar cells must visibly show the actionable Scheduler icon. */
.table-calendar td.calendar-overlap > .calendar-scheduler-badge.calendar-scheduler-badge--ready,
.table-calendar .calendar-overlap > .calendar-scheduler-badge.calendar-scheduler-badge--ready {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: absolute !important;
    top: 2px !important;
    right: 2px !important;
    z-index: 2147483640 !important;
    pointer-events: auto !important;
    width: 1.35rem !important;
    min-width: 1.35rem !important;
    height: 1.35rem !important;
    min-height: 1.35rem !important;
    border-radius: 999px !important;
    background: #fff !important;
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .95), 0 0 7px rgba(22, 163, 74, .35) !important;
}


/** CHANGED v2026-06-29.10022: Ready overlap icons are independent of impersonation and stay above the overlap frame. */
.table-calendar td.component-player-calendar-hour-cell.calendar-overlap > .calendar-scheduler-badge.calendar-scheduler-badge--ready,
.table-calendar .component-player-calendar-hour-cell.calendar-overlap > .calendar-scheduler-badge.calendar-scheduler-badge--ready,
.table-calendar td.component-player-calendar-hour-cell[data-calendar-overlap='1'] > .calendar-scheduler-badge.calendar-scheduler-badge--ready,
.table-calendar .component-player-calendar-hour-cell[data-calendar-overlap='1'] > .calendar-scheduler-badge.calendar-scheduler-badge--ready {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    z-index: 2147483641 !important;
    pointer-events: auto !important;
}

/** CHANGED v2026-06-29.10022: Compact Calendar cells so visible player bars fill the row without a large empty bottom gap. */
.table-calendar tr.component-player-calendar-row,
.table-calendar tr.ui-calendar-row-final {
    height: auto !important;
}
.table-calendar td.component-player-calendar-hour-cell,
.table-calendar td.ui-calendar-hour-cell-final {
    height: auto !important;
    min-height: 0 !important;
    padding: 0 !important;
    vertical-align: top !important;
}
.table-calendar td.component-player-calendar-hour-cell > div[class^='c'],
.table-calendar td.component-player-calendar-hour-cell > div.calendar-player-band,
.table-calendar td.ui-calendar-hour-cell-final > div[class^='c'],
.table-calendar td.ui-calendar-hour-cell-final > div.calendar-player-band {
    height: 0.56rem !important;
    min-height: 0.56rem !important;
    line-height: 0.56rem !important;
    margin: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
.table-calendar td.component-player-calendar-hour-cell > div.c0,
.table-calendar td.ui-calendar-hour-cell-final > div.c0 {
    height: 0 !important;
    min-height: 0 !important;
    line-height: 0 !important;
    overflow: hidden !important;
}





/** ADDED v2026-06-29.10028: Pool-heading Calendar chooser icon for multiple schedulable matches in a 2+ overlap slot. */
.table-calendar .calendar-scheduler-multi-badge {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    z-index: 2147483642 !important;
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .95), 0 0 7px rgba(22, 163, 74, .35) !important;
}


/** CHANGED v2026-06-29.10035: Calendar ready/scheduled/complete states use subtle cell backgrounds, not heavy black borders. */
.table-calendar td.component-player-calendar-hour-cell.calendar-overlap,
.table-calendar .component-player-calendar-hour-cell.calendar-overlap,
.table-calendar td.component-player-calendar-hour-cell[data-calendar-overlap='1'],
.table-calendar .component-player-calendar-hour-cell[data-calendar-overlap='1'] {
    border: 1px solid #c8d8c8 !important;
    box-shadow: none !important;
    outline: none !important;
    background-color: rgba(22, 163, 74, 0.075) !important;
    background-image: none !important;
}

.table-calendar td.component-player-calendar-hour-cell.calendar-overlap.calendar-overlap--scheduled,
.table-calendar .component-player-calendar-hour-cell.calendar-overlap.calendar-overlap--scheduled,
.table-calendar td.component-player-calendar-hour-cell.calendar-cell-has-scheduled-match,
.table-calendar .component-player-calendar-hour-cell.calendar-cell-has-scheduled-match,
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell,
.table-calendar td.component-player-calendar-hour-cell[data-calendar-cell-state='scheduled-match'],
.table-calendar .component-player-calendar-hour-cell[data-calendar-cell-state='scheduled-match'] {
    border: 1px solid #e6d39a !important;
    box-shadow: none !important;
    outline: none !important;
    background-color: rgba(218, 147, 22, 0.105) !important;
    background-image: none !important;
}

/* Completed/locked Calendar cells use red only when a completion/locked class or data state is present. */
.table-calendar td.component-player-calendar-hour-cell.calendar-overlap--complete,
.table-calendar .component-player-calendar-hour-cell.calendar-overlap--complete,
.table-calendar td.component-player-calendar-hour-cell.calendar-cell-is-complete,
.table-calendar .component-player-calendar-hour-cell.calendar-cell-is-complete,
.table-calendar td.component-player-calendar-hour-cell.calendar-complete-cell,
.table-calendar .component-player-calendar-hour-cell.calendar-complete-cell,
.table-calendar td.component-player-calendar-hour-cell[data-calendar-cell-state='complete'],
.table-calendar .component-player-calendar-hour-cell[data-calendar-cell-state='complete'] {
    border: 1px solid #e7b3b3 !important;
    box-shadow: none !important;
    outline: none !important;
    background-color: rgba(220, 38, 38, 0.075) !important;
    background-image: none !important;
}

/* Keep the icons visually prominent now that the heavy border is gone. */
.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--ready,
.table-calendar .calendar-scheduler-multi-badge {
    box-shadow: 0 0 0 2px rgba(22, 163, 74, .78), 0 1px 4px rgba(15, 23, 42, .18) !important;
}

.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--set {
    box-shadow: 0 0 0 2px rgba(218, 147, 22, .82), 0 1px 4px rgba(15, 23, 42, .18) !important;
}

.table-calendar .calendar-scheduler-badge.calendar-scheduler-badge--complete {
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .82), 0 1px 4px rgba(15, 23, 42, .18) !important;
}


/** ADDED v2026-06-29.10036: Small Schedule-state dot on hamburger menu trigger. */


.matches-action-menu-status-dot {
    position: absolute !important;
    top: 0.18rem !important;
    right: 0.18rem !important;
    width: 0.43rem !important;
    height: 0.43rem !important;
    border-radius: 999px !important;
    border: 1px solid rgba(255,255,255,.95) !important;
    box-shadow: 0 0 0 1px rgba(15,23,42,.18), 0 1px 2px rgba(15,23,42,.22) !important;
    pointer-events: none !important;
    z-index: 2 !important;
}

.matches-action-menu-status-dot--ready {
    background: rgba(22, 163, 74, .96) !important;
}

.matches-action-menu-status-dot--set {
    background: rgba(218, 147, 22, .98) !important;
}

.matches-action-menu-status-dot--complete {
    background: rgba(220, 38, 38, .98) !important;
}


/** CHANGED v2026-06-29.10037: Hamburger status dot is small and pinned to upper-right corner of the toggle. */
.matches-action-menu-toggle {
    position: relative !important;
    overflow: visible !important;
}

.matches-action-menu-toggle .matches-action-menu-status-dot {
    position: absolute !important;
    top: 0.06rem !important;
    right: 0.06rem !important;
    width: 0.26rem !important;
    height: 0.26rem !important;
    min-width: 0.26rem !important;
    min-height: 0.26rem !important;
    max-width: 0.26rem !important;
    max-height: 0.26rem !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 999px !important;
    border: 1px solid rgba(255,255,255,.98) !important;
    box-shadow: 0 0 0 1px rgba(15,23,42,.24) !important;
    pointer-events: none !important;
    z-index: 5 !important;
    display: block !important;
    line-height: 0 !important;
}

.matches-action-menu-toggle .matches-action-menu-toggle-lines {
    position: relative !important;
    z-index: 1 !important;
}


/** CHANGED v2026-06-29.10038: Hamburger status dot is more visible while staying compact. */
.matches-action-menu-toggle .matches-action-menu-status-dot {
    top: 0.04rem !important;
    right: 0.04rem !important;
    width: 0.38rem !important;
    height: 0.38rem !important;
    min-width: 0.38rem !important;
    min-height: 0.38rem !important;
    max-width: 0.38rem !important;
    max-height: 0.38rem !important;
    border: 1.5px solid rgba(255,255,255,1) !important;
    box-shadow: 0 0 0 1.5px rgba(15,23,42,.28), 0 1px 3px rgba(15,23,42,.30) !important;
}


/** CHANGED v2026-06-29.10039: Hamburger status dot is borderless, slightly larger, and reads as a simple status light. */
.matches-action-menu-toggle .matches-action-menu-status-dot {
    top: 0.03rem !important;
    right: 0.03rem !important;
    width: 0.46rem !important;
    height: 0.46rem !important;
    min-width: 0.46rem !important;
    min-height: 0.46rem !important;
    max-width: 0.46rem !important;
    max-height: 0.46rem !important;
    border: 0 !important;
    box-shadow: 0 0 0 1px rgba(15,23,42,.22), 0 1px 3px rgba(15,23,42,.28) !important;
}


/** ADDED v2026-06-29.10043: Opponent Notes modal polish. */
.opponent-notes-meta-row {
    margin: 0 0 0.45rem;
    font-size: 0.82rem;
    color: #475569;
    text-align: left;
}

.opponent-notes-revisions {
    margin-top: 0.65rem;
    text-align: left;
    font-size: 0.86rem;
}

.opponent-notes-revisions > summary {
    cursor: pointer;
    font-weight: 700;
}

.opponent-notes-revisions-list {
    margin-top: 0.45rem;
    max-height: 14rem;
    overflow: auto;
    border: 1px solid #d7dee8;
    border-radius: 0.45rem;
    background: #f8fafc;
    padding: 0.45rem;
}

.opponent-notes-revision-item {
    margin-bottom: 0.4rem;
}

.opponent-notes-revision-item > summary {
    cursor: pointer;
    color: #334155;
}

.opponent-notes-revision-text {
    white-space: pre-wrap;
    margin: 0.35rem 0 0;
    padding: 0.45rem;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 0.35rem;
    max-height: 8rem;
    overflow: auto;
    font-size: 0.78rem;
}

.opponent-notes-revisions-empty {
    color: #64748b;
    font-style: italic;
}


/** ADDED v2026-06-29.10044: Opponent Notes mobile Save/Cancel buttons match Dictate size and stack vertically. */
@media (max-width: 640px) {
    .opponent-notes-modal .opponent-notes-dictate-button,
    .opponent-notes-modal .swal2-actions .swal2-confirm,
    .opponent-notes-modal .swal2-actions .swal2-cancel {
        width: 100% !important;
        min-height: 2.45rem !important;
        padding: 0.48rem 0.8rem !important;
        font-size: 0.95rem !important;
        line-height: 1.25 !important;
        border-radius: 0.42rem !important;
        box-sizing: border-box !important;
    }

    .opponent-notes-modal .swal2-actions {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        width: 100% !important;
        gap: 0.42rem !important;
        margin-top: 0.7rem !important;
    }

    .opponent-notes-modal .swal2-actions .swal2-confirm {
        order: 1 !important;
        margin: 0 !important;
    }

    .opponent-notes-modal .swal2-actions .swal2-cancel {
        order: 2 !important;
        margin: 0 !important;
    }

    .opponent-notes-modal .opponent-notes-dictate-row {


        align-items: stretch !important;
    }

    .opponent-notes-modal .opponent-notes-dictate-button {
        margin: 0 !important;
    }
}


/** CHANGED v2026-06-29.10046: Opponent Notes mobile Save/Cancel are compact and stacked, not full-width side-by-side. */
@media (max-width: 640px) {
    .swal2-popup.opponent-notes-modal .swal2-actions,
    .opponent-notes-modal.swal2-popup .swal2-actions,
    .opponent-notes-modal .swal2-actions {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: flex-start !important;
        flex-wrap: nowrap !important;
        width: auto !important;
        gap: 0.42rem !important;
        margin-top: 0.7rem !important;
    }

    .swal2-popup.opponent-notes-modal .swal2-actions .swal2-confirm,
    .swal2-popup.opponent-notes-modal .swal2-actions .swal2-cancel,
    .opponent-notes-modal.swal2-popup .swal2-actions .swal2-confirm,
    .opponent-notes-modal.swal2-popup .swal2-actions .swal2-cancel,
    .opponent-notes-modal .swal2-actions .swal2-confirm,
    .opponent-notes-modal .swal2-actions .swal2-cancel,
    .opponent-notes-modal .opponent-notes-dictate-button {
        width: auto !important;
        min-width: 7.5rem !important;
        max-width: 9.5rem !important;
        min-height: 2.15rem !important;
        padding: 0.42rem 0.8rem !important;
        font-size: 0.9rem !important;
        line-height: 1.2 !important;
        border-radius: 0.42rem !important;
        box-sizing: border-box !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .swal2-popup.opponent-notes-modal .swal2-actions .swal2-confirm,
    .opponent-notes-modal.swal2-popup .swal2-actions .swal2-confirm,
    .opponent-notes-modal .swal2-actions .swal2-confirm {
        order: 1 !important;
    }

    .swal2-popup.opponent-notes-modal .swal2-actions .swal2-cancel,
    .opponent-notes-modal.swal2-popup .swal2-actions .swal2-cancel,
    .opponent-notes-modal .swal2-actions .swal2-cancel {
        order: 2 !important;
    }

    .opponent-notes-modal .opponent-notes-dictate-row {
        width: 100% !important;
        display: flex !important;
        justify-content: flex-start !important;
        align-items: center !important;
    }
}


/** ADDED v2026-06-29.10047: Opponent Notes SweetAlert confirmation uses compact stacked mobile buttons. */
@media (max-width: 640px) {
    .swal2-popup.opponent-notes-confirm-modal .swal2-actions {
        display: flex !important;
        flex-direction: column !important;
        align-items: center !important;
        justify-content: flex-start !important;
        flex-wrap: nowrap !important;
        width: auto !important;
        gap: 0.42rem !important;
        margin-top: 0.7rem !important;
    }

    .swal2-popup.opponent-notes-confirm-modal .swal2-actions .swal2-confirm,
    .swal2-popup.opponent-notes-confirm-modal .swal2-actions .swal2-cancel {
        width: auto !important;
        min-width: 7.5rem !important;
        max-width: 9.5rem !important;
        min-height: 2.15rem !important;
        padding: 0.42rem 0.8rem !important;
        font-size: 0.9rem !important;
        line-height: 1.2 !important;
        border-radius: 0.42rem !important;
        box-sizing: border-box !important;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }

    .swal2-popup.opponent-notes-confirm-modal .swal2-actions .swal2-confirm {
        order: 1 !important;
    }

    .swal2-popup.opponent-notes-confirm-modal .swal2-actions .swal2-cancel {
        order: 2 !important;
    }
}


/** CHANGED v2026-06-29.10049: Pool heading icons use Clock=availability, Calendar=schedule summary; match-row clock colspan removed. */
.matches-pool-heading-cell .matches-pool-heading-label {
    margin-right: 0.35rem;
}

.matches-pool-heading-cell .matches-pool-availability-link,
.matches-pool-heading-cell .matches-pool-schedule-swal-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
    margin-left: 0.25rem;
    text-decoration: none;
}

.matches-pool-heading-cell .matches-pool-availability-icon,
.matches-pool-heading-cell .matches-pool-schedule-icon {
    display: inline-block;
    line-height: 1;
}

.challenge-score-blank-cell--unscheduled {
    background: inherit;
}


/** CHANGED v2026-06-29.10051: Scheduled/protected Calendar cells use two-team gradient instead of pale amber fill. */
.calendar-cell-has-scheduled-match.calendar-scheduled-protected-cell[style],
.calendar-readonly-cell.calendar-scheduled-protected-cell[style],
td.calendar-cell-has-scheduled-match[style] {
    background-size: cover !important;
    background-repeat: no-repeat !important;
}

.calendar-cell-has-scheduled-match .calendar-player-band {
    opacity: 0.78;
}

.calendar-cell-has-scheduled-match .calendar-scheduled-match-pill {
    background: rgba(255,255,255,.84) !important;
    color: #111827 !important;
    border-color: rgba(15,23,42,.25) !important;
}


/* CHANGED v2026-06-29.10052: Hide vertical divider lines inside scheduled/protected Calendar cells so adjacent gradient cells render as one seamless block. */
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell,
.table-calendar td.component-player-calendar-hour-cell[data-calendar-cell-state='scheduled-match'],
.table-calendar .component-player-calendar-hour-cell[data-calendar-cell-state='scheduled-match'] {
    border-left-color: transparent !important;
    border-right-color: transparent !important;
}


/* CHANGED v2026-06-29.10054: Scheduled/protected gradient cells hide internal player-band stripes so the gradient reads as a seamless full-cell transition. */
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell > .calendar-player-band,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell > .calendar-player-band,
.table-calendar td.component-player-calendar-hour-cell[data-calendar-cell-state='scheduled-match'] > .calendar-player-band,
.table-calendar .component-player-calendar-hour-cell[data-calendar-cell-state='scheduled-match'] > .calendar-player-band {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    opacity: 0 !important;
}

/* PATCH 10072: Challenge Event disabled state and void pill parity. */
.swal2-popup.challenge-event-modal .challenge-event-score-table .challenge-event-result-button--disabled,
.swal2-container .challenge-event-score-table .challenge-event-result-button--disabled {
    opacity: .55 !important;
    cursor: not-allowed !important;
    pointer-events: none !important;
    filter: grayscale(.15) !important;
}
.swal2-popup.challenge-event-modal .challenge-event-score-table .challenge-event-status-cell .challenge-event-status-badge.void,
.swal2-popup.challenge-event-modal .challenge-event-score-table span.challenge-event-status-badge.void,
.swal2-container .challenge-event-score-table .challenge-event-status-cell .challenge-event-status-badge.void,
.swal2-container .challenge-event-score-table span.challenge-event-status-badge.void {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 4.25rem !important;
    width: auto !important;
    height: 2.05rem !important;
    min-height: 2.05rem !important;
    padding: 0 .95rem !important;
    border-radius: 9999px !important;
    line-height: 1 !important;
    white-space: nowrap !important;
    box-sizing: border-box !important;
    font-weight: 700 !important;
    font-size: 1rem !important;
    text-decoration: none !important;
    text-shadow: none !important;
}

/* PATCH 10080 - Challenge menu reveal, mobile nav spacing, and Calendar CSS glyph repair. */
.matches-action-menu-panel .matches-challenge-link--deferred[hidden],
.matches-action-menu-panel a.matches-challenge-link--deferred[hidden] {
  display: none !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon.matches-calendar-state-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 1.42rem !important;
  min-width: 1.42rem !important;
  max-width: 1.42rem !important;
  height: 1.42rem !important;
  min-height: 1.42rem !important;
  max-height: 1.42rem !important;
  margin: 0 .55rem 0 0 !important;
  padding: 0 !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  overflow: visible !important;
  position: relative !important;
  font-size: 0 !important;
  line-height: 1 !important;
  box-sizing: border-box !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-css-glyph,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-css-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-css-glyph {
  display: inline-block !important;
  position: relative !important;
  z-index: 3 !important;
  width: 1.02rem !important;
  height: .9rem !important;
  border: 2px solid currentColor !important;
  border-top-width: 4px !important;
  border-radius: .16rem !important;
  background: transparent !important;
  box-sizing: border-box !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-css-glyph::before,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-css-glyph::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-css-glyph::before {
  content: '' !important;
  position: absolute !important;
  left: .18rem !important;
  right: .18rem !important;
  top: .24rem !important;
  border-top: 1px solid currentColor !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-css-glyph::after,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-css-glyph::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-css-glyph::after {
  content: '' !important;
  position: absolute !important;
  left: .36rem !important;
  top: .36rem !important;
  width: .16rem !important;
  height: .16rem !important;
  background: currentColor !important;
  box-shadow: .28rem 0 0 currentColor, 0 .22rem 0 currentColor, .28rem .22rem 0 currentColor !important;
}
@media (max-width: 560px) {
  body.app-admin header nav .nav-primary-row,
  body.admin-surface header nav .nav-primary-row,
  body.app-player header nav .nav-primary-row,
  body.player-surface header nav .nav-primary-row,
  header nav .nav-primary-row,
  body.app-admin header nav .nav-secondary-row,
  body.admin-surface header nav .nav-secondary-row,
  body.app-player header nav .nav-secondary-row,
  body.player-surface header nav .nav-secondary-row,
  header nav .nav-secondary-row {
    column-gap: 0.32rem !important;
    row-gap: 0.08rem !important;
  }
  body.app-admin header nav a.nav-link,
  body.admin-surface header nav a.nav-link,
  body.app-player header nav a.nav-link,
  body.player-surface header nav a.nav-link,
  header nav a.nav-link {
    min-height: 1.22rem !important;
    padding: 0.03rem 0.06rem !important;
    line-height: 1.0 !important;
  }
}


/** ADDED v2026-06-30.10093: DUPR discrepancy report photo cells use fixed 88px avatars without inheriting broader admin/header icon overrides. */
.dupr-discrepancy-flat-table .profile-initials-avatar-card,
.dupr-discrepancy-flat-table .profile-photo-frame.profile-photo-frame-size-card,
.dupr-discrepancy-flat-table .profile-photo-frame.profile-photo-frame-size-card .profile-photo-image,
.dupr-discrepancy-flat-table .profile-photo-frame.profile-photo-frame-size-card .profile-photo-fallback-avatar {
    --profile-photo-size: 88px !important;
    width: 88px !important;
    height: 88px !important;
    min-width: 88px !important;
    min-height: 88px !important;
    max-width: 88px !important;
    max-height: 88px !important;
    flex: 0 0 88px !important;
    box-sizing: border-box !important;
}
.dupr-discrepancy-flat-table .profile-initials-avatar-card,
.dupr-discrepancy-flat-table .profile-photo-frame.profile-photo-frame-size-card .profile-photo-fallback-avatar {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 1.75rem !important;
    line-height: 88px !important;
}
.dupr-discrepancy-flat-table td:first-child {
    text-align: center;
    vertical-align: middle;
}


/** ADDED v2026-06-30.10093: My Profile opponent-note team list. */
.opponent-notes-profile-list {
    list-style: none;
    margin: 0.35rem 0 0;
    padding: 0;
}
.opponent-notes-profile-item {
    border: 1px solid var(--color-border);
    border-radius: 0.45rem;
    margin: 0.35rem 0;
    padding: 0.55rem 0.65rem;
}
.opponent-notes-profile-team-link {
    font-weight: 700;
}
.opponent-notes-profile-meta {
    color: var(--color-text-muted);
    display: inline-block;
    font-size: 0.9rem;
    margin-left: 0.5rem;
}
.opponent-notes-profile-snippet {
    color: var(--color-text-muted);
    font-size: 0.92rem;
    margin-top: 0.25rem;
}


/** ADDED v2026-06-30.10094: Compact local-vs-DUPR comparison cells. */
.dupr-discrepancy-flat-table .dupr-identity-compare-cell {
    line-height: 1.35;
    white-space: nowrap;
}
.dupr-discrepancy-flat-table .dupr-identity-compare-cell strong {
    font-weight: 700;
}
.dupr-discrepancy-flat-table td:first-child .profile-initials-avatar-card {
    --profile-photo-size: 88px !important;
    width: 88px !important;
    height: 88px !important;
    min-width: 88px !important;
    min-height: 88px !important;
    max-width: 88px !important;
    max-height: 88px !important;
    line-height: 88px !important;
    font-size: 1.75rem !important;
}


/** ADDED v2026-06-30.10098: Recent active user names are profile links. */
.admin-sysadmin-active-user-name-link {
    text-decoration: none;
}
.admin-sysadmin-active-user-name-link:hover,
.admin-sysadmin-active-user-name-link:focus {
    text-decoration: underline;
}


/** ADDED v2026-06-30.10100: Player Profile summary plus compact tools card. */
.player-profile-summary-tools-row {
    align-items: stretch;
    display: flex;

    gap: 1rem;
    margin: 0.75rem 0 1rem;
}
.player-profile-summary-tools-row > .profile-summary-wrap,
.player-profile-summary-tools-row > .player-profile-summary-card {
    flex: 1 1 28rem;
    margin: 0;
}
.player-profile-quick-card {
    background: var(--color-card-bg, var(--color-page-bg));
    border: 1px solid var(--color-border);
    border-radius: 0.6rem;
    box-shadow: var(--shadow-card, none);
    box-sizing: border-box;
    flex: 0 1 20rem;
    min-width: 17rem;
    padding: 0.85rem 1rem;
}
.player-profile-quick-card h3 {
    margin: 0 0 0.65rem;
}
.player-profile-quick-row {
    margin: 0.55rem 0;
}
.player-profile-quick-row-link {
    margin-bottom: 0.8rem;
}
.player-profile-quick-label {
    display: block;
    font-weight: 700;
    margin-bottom: 0.25rem;
}
.player-profile-quick-select {
    max-width: 100%;
    width: 100%;
}
.player-profile-quick-check {
    align-items: flex-start;
    display: flex;
    gap: 0.45rem;
    margin: 0.55rem 0;
}
.player-profile-quick-save {
    margin-top: 0.35rem;
}
@media (max-width: 760px) {
    .player-profile-summary-tools-row {
        display: block;
    }
    .player-profile-quick-card {
        margin-top: 1rem;
    }
}


/** CHANGED v2026-06-30.10101: Profile Tools is a right-side companion card to the profile summary card. */
.player-profile-summary-tools-row {
    align-items: flex-start !important;

    flex-wrap: wrap;
    gap: 1rem;
}
.player-profile-summary-tools-row > .profile-summary-wrap,
.player-profile-summary-tools-row > .player-profile-summary-card {
    flex: 1 1 34rem;
}
.player-profile-summary-tools-row > .player-profile-quick-card {
    flex: 0 0 22rem;
}
.player-profile-quick-save-status {

    min-height: 1.2em;
    margin-top: 0.35rem;
}


/** CHANGED v2026-06-30.10102: Clean Profile Tools card layout to match the profile summary card. */
.player-profile-summary-tools-row {

    column-gap: 2.75rem !important;
    row-gap: 1rem !important;
}
.player-profile-summary-tools-row > .profile-summary-wrap,
.player-profile-summary-tools-row > .player-profile-summary-card {
    flex: 0 1 31rem !important;
    margin: 0 !important;
}
.player-profile-summary-tools-row > .player-profile-quick-card {
    align-self: stretch;
    background: var(--color-card-bg, #fff) !important;
    border: 1px solid var(--color-border) !important;

    box-shadow: var(--shadow-card, none);
    box-sizing: border-box;

    min-height: 100%;
    min-width: 22rem;

}
.player-profile-quick-card,
.player-profile-quick-card * {
    background-image: none !important;
}
.player-profile-quick-row {
    background: transparent !important;
    margin: 0 0 0.9rem !important;
}
.player-profile-quick-row-link {
    margin-bottom: 1.35rem !important;
}
.player-profile-quick-availability-link {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    display: inline !important;
    font-weight: 400 !important;
    padding: 0 !important;
    text-decoration: none;
}
.player-profile-quick-availability-link:hover,
.player-profile-quick-availability-link:focus {
    text-decoration: underline;
}
.player-profile-quick-options-form {
    background: transparent !important;
    margin: 0 0 0.9rem !important;
}
.player-profile-quick-check {
    align-items: center !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    display: flex !important;
    gap: 0.55rem !important;
    line-height: 1.35 !important;
    margin: 0.55rem 0 !important;
    padding: 0 !important;
}
.player-profile-quick-check input[type='checkbox'] {
    flex: 0 0 auto;
    margin: 0 !important;
}
.player-profile-quick-check span {
    background: transparent !important;
    display: inline !important;
    padding: 0 !important;
}
.player-profile-quick-row-opponent-notes {
    align-items: center;
    display: grid;
    gap: 0.75rem;
    grid-template-columns: max-content minmax(16rem, 1fr);
    margin-top: 1.15rem !important;
}
.player-profile-quick-label {
    background: transparent !important;
    display: inline !important;
    font-weight: 400 !important;
    margin: 0 !important;
    padding: 0 !important;
}
.player-profile-quick-select {
    background-color: var(--color-input-bg, #fff) !important;
    max-width: 100% !important;
    width: 100% !important;
}
.player-profile-quick-save-status {
    display: block;
    min-height: 0.5rem;
}
@media (max-width: 760px) {
    .player-profile-summary-tools-row > .profile-summary-wrap,
    .player-profile-summary-tools-row > .player-profile-summary-card,
    .player-profile-summary-tools-row > .player-profile-quick-card {
        flex-basis: auto !important;
        width: 100% !important;
    }
    .player-profile-quick-row-opponent-notes {
        grid-template-columns: 1fr;
    }
}


/** CHANGED v2026-06-30.10103: Hard override for Profile Tools companion-card placement. */
.player-profile-summary-tools-row {
    display: flex !important;

    gap: 2.75rem !important;
    flex-wrap: wrap !important;
}
.player-profile-summary-card-slot {
    flex: 0 1 31rem !important;
    min-width: 24rem !important;
}
.player-profile-summary-card-slot > .profile-summary-wrap,
.player-profile-summary-card-slot > .player-profile-summary-card {
    height: 100%;
    margin: 0 !important;
}
.player-profile-summary-tools-row > .player-profile-quick-card {
    flex: 0 1 39rem !important;
    align-self: stretch !important;
    background: #fff !important;
    border: 1px solid #cfd8e3 !important;
    border-radius: 0.6rem !important;
    box-sizing: border-box !important;
    min-width: 22rem !important;
    padding: 1rem 1.25rem !important;
}
.player-profile-summary-tools-row .player-profile-quick-card label,
.player-profile-summary-tools-row .player-profile-quick-card span,
.player-profile-summary-tools-row .player-profile-quick-card div {
    background-color: transparent !important;
}
.player-profile-summary-tools-row .player-profile-quick-check input[type='checkbox'] {
    width: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
}


/** CHANGED v2026-06-30.10104: Force player summary/tools to a two-column grid on desktop. */
.player-profile-summary-tools-row {
    display: grid !important;
    grid-template-columns: minmax(24rem, 31rem) minmax(22rem, 39rem) !important;
    align-items: stretch !important;
    column-gap: 2.75rem !important;
    row-gap: 1rem !important;
    max-width: 100% !important;
}
.player-profile-summary-card-slot {
    min-width: 0 !important;
}
.player-profile-tools-card-slot {
    min-width: 0 !important;
}
.player-profile-tools-card-slot > .player-profile-quick-card {
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
}
@media (max-width: 1100px) {
    .player-profile-summary-tools-row {
        /* The desktop markup supplies minimum column widths inline. Override
         * them as a single, shrinkable column so Other Settings follows the
         * player card rather than widening the mobile page. */
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        width: 100% !important;
        min-width: 0 !important;
        overflow-x: clip;
    }
    .player-profile-summary-tools-row > .player-profile-summary-card-slot,
    .player-profile-summary-tools-row > .player-profile-tools-card-slot,
    .player-profile-summary-tools-row .player-profile-quick-card {
        width: 100% !important;
        min-width: 0 !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
    }
}


/** ADDED v2026-06-30.10106: Exactly two scheduled matches share one Calendar hour cell as top/bottom match bands. */
.calendar-scheduled-protected-cell {
    position: relative;
}
.calendar-scheduled-two-match-stack {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    z-index: 4;
    overflow: hidden;
    pointer-events: none;
}
.calendar-scheduled-two-match-band {
    position: relative;
    flex: 1 1 50%;
    min-height: 0;
    pointer-events: auto;
}
.calendar-scheduled-two-match-band--top {
    border-bottom: 1px solid rgba(0,0,0,0.35);
}
.calendar-scheduled-two-match-badge.calendar-scheduler-badge {
    position: absolute;
    right: 0.15rem;
    top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    min-width: 1.45rem;
    min-height: 1.45rem;
    width: 1.45rem;
    height: 1.45rem;
    padding: 0;
    line-height: 1;
    font-size: 0.9rem;
}

/* ADDED v2026-06-30.10113: Pool availability proxy controls */
.calendar-proxy-controls {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin: 0.5rem 0 0.75rem;
  padding: 0.65rem 0.8rem;
  border: 1px solid #cfd8e3;
  border-radius: 0.55rem;
  background: #f8fafc;
}
.calendar-proxy-label { font-weight: 700; }
.calendar-proxy-select { max-width: 18rem; }
.calendar-proxy-note { color: #475569; font-size: 0.92rem; }
.calendar-player-band--proxy-editing { outline: 2px solid rgba(0,0,0,0.45); outline-offset: -2px; }

/* ADDED v2026-07-01.10129: focused auto-save substitutions modal. */
.match-substitutions-modal { display:flex; flex-direction:column; gap:.75rem; align-items:stretch; }
.match-substitution-row { display:flex; flex-direction:column; gap:.25rem; text-align:left; font-weight:600; }
.match-substitution-row select { width:100%; }

/* CHANGED v2026-07-01.10130: substitution modal rows no longer include side labels; center dropdowns cleanly. */
.match-substitution-row { align-items:center; }
.match-substitution-row select { max-width:24rem; }

/* ADDED v2026-07-01.10132: position Substitutions Swal higher so select dropdowns have room below. */
.match-substitutions-swal-container.swal2-top,
.swal2-container.match-substitutions-swal-container {
    align-items: flex-start !important;
    padding-top: 2rem !important;
}
.match-substitutions-swal-popup {
    margin-top: 0 !important;
}
@media (max-width: 640px) {
    .match-substitutions-swal-container.swal2-top,
    .swal2-container.match-substitutions-swal-container {
        padding-top: .75rem !important;
    }
}

/* ADDED v2026-07-01.10136: lifecycle observation status workflow grouping rows. */
.admin-lifecycle-observation-workflow-group th {
    background: rgba(0, 0, 0, .045);
    text-align: left;
    font-weight: 700;
    letter-spacing: .01em;
}

/* ADDED v2026-07-01.10137: archived lifecycle diagnostics stay visually subordinate to the main status table. */
.admin-lifecycle-observation-archive-10137 > summary,
.admin-lifecycle-observation-archive-10137 summary {
    opacity: .9;
}

/* ADDED v2026-07-01.10138: linked lifecycle stream detail cards. */
.admin-lifecycle-stream-detail-card {
    margin: 1rem 0;
    padding: .75rem;
    border: 1px solid rgba(0, 0, 0, .15);
    border-radius: .5rem;
    background: rgba(255,255,255,.65);
}
.admin-lifecycle-stream-detail-card h5 {
    margin: 0 0 .5rem 0;
    font-size: 1rem;
}

/* ADDED v2026-07-01.10139: nested diagnostic report target cards for lifecycle stream links. */
.admin-lifecycle-stream-diagnostic-card {
    margin: .75rem 0;
    padding: .65rem;
    border-left: 4px solid rgba(37, 99, 235, .65);
    background: rgba(37, 99, 235, .045);
}
.admin-lifecycle-stream-diagnostic-card h6 {
    margin: 0 0 .5rem 0;
    font-size: .95rem;
}

/* ADDED v2026-07-01.10140: sysadmin-only lifecycle nav attention state. */
.nav-link-lifecycle-attention .nav-approval-count {
    font-weight: 700;
}

/* CHANGED v2026-07-01.10142: Lifecycle nav alert pill readability. */
.nav-link-lifecycle-attention {
    color: #000 !important;
    padding-left: .95rem !important;
    padding-right: .95rem !important;
}
.nav-link-lifecycle-attention:visited,
.nav-link-lifecycle-attention:hover,
.nav-link-lifecycle-attention:focus {
    color: #000 !important;
}
.nav-link-lifecycle-attention .nav-approval-count {
    color: #000 !important;
    margin-left: .35rem;
    padding: .12rem .42rem;
}

/* ADDED v2026-07-01.10145: final Substitutions modal mobile/touch polish. */
.match-substitutions-swal-popup {
    width: min(94vw, 36rem) !important;
}
.match-substitutions-modal {
    width: 100%;
    box-sizing: border-box;
}
.match-substitutions-help {
    margin-top: 0;
    margin-bottom: .6rem;
    text-align: center;
}
.match-substitution-row {
    width: 100%;
    margin: .35rem auto;
}
.match-substitution-row select,
.match-substitution-autosave {
    width: min(100%, 24rem);
    min-height: 44px;
    font-size: 16px;
    line-height: 1.3;
    padding: .45rem 2.25rem .45rem .65rem;
    box-sizing: border-box;
}
.match-substitution-autosave:disabled {
    opacity: .72;
    cursor: wait;
}
#matchSubstitutionsAutosaveStatus {
    min-height: 1.25rem;
    text-align: center;
}
@media (max-width: 640px) {
    .match-substitutions-swal-popup {
        width: calc(100vw - 1rem) !important;
        padding-left: .75rem !important;
        padding-right: .75rem !important;
    }
    .match-substitution-row select,
    .match-substitution-autosave {
        width: 100%;
        max-width: none;
    }
}

/* ADDED v2026-07-01.10146: end-of-season readiness checklist. */
.admin-end-season-readiness-10146 code {
    white-space: normal;
}

/* CHANGED v2026-07-01.10148: end-of-season readiness table readability. */
.admin-end-season-readiness-table-wrap {
    overflow-x: visible;
}
.admin-end-season-readiness-table-10148 {
    width: 100%;
    table-layout: fixed;
}
.admin-end-season-readiness-table-10148 th,
.admin-end-season-readiness-table-10148 td {
    white-space: normal;
    overflow-wrap: anywhere;
    vertical-align: top;
}
.admin-end-season-readiness-table-10148 th:nth-child(1),
.admin-end-season-readiness-table-10148 td:nth-child(1) {
    width: 15%;
}
.admin-end-season-readiness-table-10148 th:nth-child(2),
.admin-end-season-readiness-table-10148 td:nth-child(2) {
    width: 7%;
}
.admin-end-season-readiness-table-10148 th:nth-child(3),
.admin-end-season-readiness-table-10148 td:nth-child(3) {
    width: 24%;
}
.admin-end-season-readiness-table-10148 th:nth-child(4),
.admin-end-season-readiness-table-10148 td:nth-child(4) {
    width: 29%;
}
.admin-end-season-readiness-table-10148 th:nth-child(5),
.admin-end-season-readiness-table-10148 td:nth-child(5) {
    width: 25%;
}
.admin-end-season-readiness-summary-10148 {
    margin-bottom: .65rem;
}
@media (max-width: 760px) {
    .admin-end-season-readiness-table-10148 {
        table-layout: auto;
        min-width: 760px;
    }
    .admin-end-season-readiness-table-wrap {
        overflow-x: auto;
    }
}

/* ADDED v2026-07-01.10150: framework readiness report readability. */
#framework-testing-deployment-readiness-10150 td,
#framework-safe-iterations-10150 td {
    vertical-align: top;
}
#framework-testing-deployment-readiness-10150 td:nth-child(9),
#framework-testing-deployment-readiness-10150 td:nth-child(10),
#framework-safe-iterations-10150 td:nth-child(6),
#framework-safe-iterations-10150 td:nth-child(7),
#framework-safe-iterations-10150 td:nth-child(8) {
    min-width: 18rem;
}

/* ADDED v2026-07-01.10151: Sysadmin framework readiness wrapper. */
.admin-framework-readiness-10151 .admin-table-container {
    overflow-x: auto;
}
.admin-framework-readiness-10151 table {
    min-width: 980px;
}

/* ADDED v2026-07-01.10152: framework readiness summary/priority queue readability. */
#framework-priority-queue-10152 td {
    vertical-align: top;
}
#framework-priority-queue-10152 td:nth-child(7),
#framework-priority-queue-10152 td:nth-child(8) {
    min-width: 18rem;
}
.framework-readiness-card-fallback-10152 {
    border: 1px solid rgba(0,0,0,.12);
    border-radius: .65rem;
    padding: .75rem 1rem;
    margin: .75rem 0 1rem;
}

/* ADDED v2026-07-01.10153: Rules Engine readiness inventory readability. */
.admin-rules-engine-readiness-10153 .admin-table-container {
    overflow-x: auto;
}
.admin-rules-engine-readiness-10153 table {
    min-width: 1100px;
}
#rules-engine-inventory-map-10153 td,
#rules-engine-inventory-iterations-10153 td,
#rules-engine-ownership-summary-10153 td {
    vertical-align: top;
}
#rules-engine-inventory-map-10153 td:nth-child(2),
#rules-engine-inventory-map-10153 td:nth-child(4),
#rules-engine-inventory-map-10153 td:nth-child(6),
#rules-engine-inventory-map-10153 td:nth-child(9) {
    min-width: 16rem;
}
.rules-engine-decision-point-10153 {
    border: 1px solid rgba(0,0,0,.15);
    border-radius: .65rem;
    padding: .75rem 1rem;
    margin: 1rem 0;
    background: rgba(0,0,0,.025);
}

/* ADDED v2026-07-01.10154: database-backed Rules Engine workflow foundation readability. */
.admin-rules-engine-workflow-foundation-10154 .admin-table-container {
    overflow-x: auto;
}
.admin-rules-engine-workflow-foundation-10154 table {
    min-width: 1100px;
}
#rules-engine-workflows-10154 td,
#rules-engine-decisions-10154 td,
#rules-engine-workflow-iterations-10154 td {
    vertical-align: top;
}
#rules-engine-workflows-10154 td:nth-child(6),
#rules-engine-workflows-10154 td:nth-child(7),
#rules-engine-decisions-10154 td:nth-child(2),
#rules-engine-decisions-10154 td:nth-child(3),
#rules-engine-workflow-iterations-10154 td:nth-child(4),
#rules-engine-workflow-iterations-10154 td:nth-child(5),
#rules-engine-workflow-iterations-10154 td:nth-child(7) {
    min-width: 16rem;
}

/* ADDED v2026-07-01.10155: engine registry foundation readability. */
.admin-engine-registry-foundation-10155 .admin-table-container {
    overflow-x: auto;
}
.admin-engine-registry-foundation-10155 table {
    min-width: 1100px;
}
#engine-registry-10155 td,
#engine-workflow-bindings-10155 td,
#engine-readiness-gates-10155 td,
#engine-responsibilities-10155 td {
    vertical-align: top;
}
#engine-registry-10155 td:nth-child(5),
#engine-registry-10155 td:nth-child(6),
#engine-workflow-bindings-10155 td:nth-child(4),
#engine-readiness-gates-10155 td:nth-child(4),
#engine-responsibilities-10155 td:nth-child(4) {
    min-width: 18rem;
}


/* ADDED v2026-07-01.10200: Team Profile roster initials/avatar size parity.
 * DisplayPlayerPhoto('profile-card') returns profile-initials-avatar-card when a
 * player has no photo, while uploaded photos render inside profile-photo-frame.
 * Scope the card fallback into the same 88/72px roster-avatar contract so
 * initials and photos occupy the same visual box.
 */
body.app-player :where(.team-profile-member-card, .profile-photo-card, .team-profile-member-photo-link)
:where(.profile-initials-avatar-card) {
    width: var(--player-avatar-md, 88px) !important;
    height: var(--player-avatar-md, 88px) !important;
    min-width: var(--player-avatar-md, 88px) !important;
    min-height: var(--player-avatar-md, 88px) !important;
    max-width: var(--player-avatar-md, 88px) !important;
    max-height: var(--player-avatar-md, 88px) !important;
    flex: 0 0 var(--player-avatar-md, 88px) !important;
    font-size: 1.75rem !important;
    line-height: 1 !important;
    object-fit: cover;
}

@media (max-width: 520px) {
    body.app-player :where(.team-profile-member-card, .profile-photo-card, .team-profile-member-photo-link)
    :where(.profile-initials-avatar-card) {
        width: var(--player-avatar-sm, 72px) !important;
        height: var(--player-avatar-sm, 72px) !important;
        min-width: var(--player-avatar-sm, 72px) !important;
        min-height: var(--player-avatar-sm, 72px) !important;
        max-width: var(--player-avatar-sm, 72px) !important;
        max-height: var(--player-avatar-sm, 72px) !important;
        flex-basis: var(--player-avatar-sm, 72px) !important;
        font-size: 1.55rem !important;
    }
}


/* ADDED v2026-07-01.10201: Mobile Team Profile initials avatar parity.
 * v10200 fixed desktop, but mobile theme rules normalize .profile-photo-frame,
 * .profile-initials-avatar-profile, .profile-photo-image, and
 * .profile-photo-fallback-avatar only. Add .profile-initials-avatar-card to the
 * same mobile contract and keep uploaded photos/initials aligned.
 */
@media (max-width: 720px) {
    body.app-player :where(.team-profile-member-card, .profile-photo-card, .team-profile-member-photo-link)
    :where(.profile-initials-avatar-card) {
        width: var(--player-avatar-sm, 72px) !important;
        height: var(--player-avatar-sm, 72px) !important;
        min-width: var(--player-avatar-sm, 72px) !important;
        min-height: var(--player-avatar-sm, 72px) !important;
        max-width: var(--player-avatar-sm, 72px) !important;
        max-height: var(--player-avatar-sm, 72px) !important;
        inline-size: var(--player-avatar-sm, 72px) !important;
        block-size: var(--player-avatar-sm, 72px) !important;
        flex: 0 0 var(--player-avatar-sm, 72px) !important;
        aspect-ratio: 1 / 1 !important;
        border-radius: 50% !important;
        box-sizing: border-box !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        align-self: center !important;
        font-size: 1.55rem !important;
        line-height: 1 !important;
        overflow: hidden !important;
    }

    body.app-player :where(.team-profile-member-card, .profile-photo-card, .team-profile-member-photo-link)
    :where(.profile-photo-frame, .profile-initials-avatar-profile, .profile-photo-image, .profile-photo-fallback-avatar, .profile-initials-avatar-card) {
        width: var(--player-avatar-sm, 72px) !important;
        height: var(--player-avatar-sm, 72px) !important;
        min-width: var(--player-avatar-sm, 72px) !important;
        min-height: var(--player-avatar-sm, 72px) !important;
        max-width: var(--player-avatar-sm, 72px) !important;
        max-height: var(--player-avatar-sm, 72px) !important;
        flex-basis: var(--player-avatar-sm, 72px) !important;
    }
}


/* ADDED v2026-07-01.10203: Advanced Stats horizontal scroll/parity after DUPR column.
 * The DUPR column extends the Advanced Stats table. Keep Teams/Players tables
 * horizontally scrollable instead of clipping the final advanced columns.
 */
.stats-table-container,
.component-player-stats-table-wrap,
.ui-player-table-wrap.component-player-table-scroll {
    overflow-x: auto !important;
    overflow-y: visible;
    -webkit-overflow-scrolling: touch;
    max-width: 100%;
}

.stats-table-container .stats-table,
.component-player-stats-table-wrap .stats-table,
.component-player-table--stats {
    width: max-content;
    min-width: 100%;
}

.stats-table-container .stats-dupr-rating-stat,
.component-player-stats-table-wrap .stats-dupr-rating-stat {
    white-space: nowrap;
    min-width: 4.75rem;
}


/* ADDED v2026-07-01.10204: Players Advanced Stats scroll containment.
 * v10203 made generic stats wrappers scrollable, but the Players page can still
 * clip the expanded table when a parent layout expands to table width or hides
 * overflow. This patch constrains the Players table's ancestors and the emitted
 * DisplayStatsHeader wrapper so the final DUPR column is reachable by horizontal
 * scrolling inside the table area.
 */
body.app-player .player-players-page,
body.app-player .player-players-page--list,
body.app-player .players-page,
body.app-player .player-page,
body.app-player main.player-page,
body.app-player .player-layout-page,
body.app-player .player-content,
body.app-player .page-content,
body.app-player .content,
body.app-player .main-content {
    min-width: 0 !important;
    max-width: 100% !important;
    overflow-x: visible;
}

body.app-player .stats-table-container.stats-context-players,
body.app-player .component-player-stats-table-wrap.stats-context-players,
body.app-player .ui-player-table-wrap.stats-context-players,
body.app-player [data-stats-context="players"] {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch !important;
    box-sizing: border-box !important;
    position: relative;
    contain: inline-size;
}

body.app-player .stats-table-container.stats-context-players > table,
body.app-player .component-player-stats-table-wrap.stats-context-players > table,
body.app-player .ui-player-table-wrap.stats-context-players > table,
body.app-player [data-stats-context="players"] > table,
body.app-player .stats-context-players table.component-player-table--stats {
    width: max-content !important;
    min-width: 100% !important;
    table-layout: auto !important;
}

body.app-player .stats-context-players th,
body.app-player .stats-context-players td {
    white-space: nowrap;
}

body.app-player .stats-context-players .stats-player-cell {
    position: sticky;
    left: 0;
    z-index: 2;
    background: inherit;
}


/* ADDED v2026-07-01.10205: Deployment Upload 3x3 progress phase grid. */
.admin-deployment-upload-progress-grid {
    display: grid;
    grid-template-columns: max-content minmax(4rem, max-content) minmax(12rem, 1fr);
    align-items: center;
    column-gap: .5rem;
    row-gap: .35rem;
    max-width: 36rem;
}

.admin-deployment-upload-progress-label {
    font-weight: 600;
}

.admin-deployment-upload-progress-percent {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.admin-deployment-upload-progress-bar-cell progress {
    width: 100%;
    height: .85rem;
}




/* ADDED v2026-07-01.10209: team lifecycle/availability status semantics. */
.teams-lifecycle-status {
    display: inline-block;
    margin-top: .15rem;
    padding: .08rem .35rem;
    border-radius: 999px;
    font-size: .78rem;
    line-height: 1.2;
    color: #111;
    background: transparent;
    border: 1px solid rgba(0,0,0,.18);
}
.teams-lifecycle-status--available {
    background: transparent;
}
.teams-lifecycle-status--unavailable {
    background: var(--color-status-unavailable-bg);
}
.teams-lifecycle-status--dissolution-requested {
    background: var(--color-status-dissolution-request-bg);
}
.teams-lifecycle-status--dissolved {
    background: var(--color-status-inactive-bg, #e5e7eb);
    color: #555;
}
tr.dissolution-requested {
    background-color: var(--color-status-dissolution-request-bg) !important;
}
tr.dissolved,
tr.inactive {
    background-color: var(--color-status-inactive-bg, #e5e7eb) !important;
    color: #555;
}
.matches-team-withdrawn.withdrawn {
    background-color: var(--color-status-unavailable-bg) !important;
}
.withdrawn:not(.status-filter-chip),
.dissolution-requested,
.team-dissolution-request-cell.dissolution-requested {
    background-color: var(--color-status-dissolution-request-bg) !important;
}


/** ADDED v2026-07-02.10236: Pale yellow Team Dissolve request highlight. */
.teams-lifecycle-status--dissolution-requested,
tr.dissolution-requested,
.dissolution-requested,
.team-dissolution-request-cell.dissolution-requested,
.withdrawn:not(.status-filter-chip) {
    background-color: var(--color-status-dissolution-request-bg) !important;
}

.team-profile-roster-summary-table td.dissolution-requested {
    color: #7a5b00;
    font-weight: 700;
}

.team-withdrawal-row .team-dissolution-request-cell.dissolution-requested {
    text-align: center;
    padding: 0.65rem 0.75rem;
}


/** ADDED v2026-07-02.10237: Existing Dissolve Requested row is display-only. */
body.app-player .team-dissolution-request-display-cell,
body.app-player .team-dissolution-request-display-row {
    cursor: default !important;
}
body.app-player .team-dissolution-request-display-cell {
    pointer-events: auto;
}


/** ADDED v2026-07-02.10238: Plain button for Team Dissolve request, with pale yellow row. */
body.app-player .team-dissolution-request-cell.dissolution-request-action-cell {
    background-color: var(--color-status-dissolution-request-bg) !important;
    cursor: default !important;
    text-align: center;
    padding: 0.65rem 0.75rem;
}

body.app-player .team-dissolution-request-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 12rem;
    max-width: 100%;
    padding: 0.45rem 0.85rem;
    border: 1px solid var(--color-table-border);
    border-radius: 0.45rem;
    background: var(--color-button-bg);
    color: var(--color-button-text);
    font-weight: 700;
    line-height: 1.2;
    cursor: pointer;
}

body.app-player .team-dissolution-request-button:hover,
body.app-player .team-dissolution-request-button:focus {
    background: var(--color-button-hover-bg);
}

body.app-player .team-dissolution-request-button[disabled] {
    cursor: not-allowed;
    opacity: .75;
}


/** ADDED v2026-07-02.10240: Right-align Team Profile roster status card and prevent clipping. */
.team-profile-current-roster-section .team-profile-roster-main-card {
    grid-template-columns: minmax(0, 1fr) minmax(14rem, 20rem);
    overflow: visible;
}

.team-profile-current-roster-section .team-profile-roster-fact-card {
    justify-self: end;
    align-self: start;
    width: min(100%, 20rem);
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    overflow: hidden;
}

.team-profile-current-roster-section .team-profile-roster-summary-table {
    table-layout: fixed;
    max-width: 100%;
}

.team-profile-current-roster-section .team-profile-roster-summary-table th,
.team-profile-current-roster-section .team-profile-roster-summary-table td {
    box-sizing: border-box;
    overflow-wrap: anywhere;
}

.team-profile-current-roster-section .team-profile-roster-summary-table th {
    width: 52%;
}

.team-profile-current-roster-section .team-profile-roster-summary-table td {
    width: 48%;
}

@media (max-width: 759px) {
    .team-profile-current-roster-section .team-profile-roster-main-card {
        grid-template-columns: 1fr;
    }
    .team-profile-current-roster-section .team-profile-roster-fact-card {
        justify-self: stretch;
        width: 100%;
    }
}


/** ADDED v2026-07-02.10241: Wider Team Profile status card with wrapped status values. */
@media (min-width: 760px) {
    .team-profile-current-roster-section .team-profile-roster-main-card {
        grid-template-columns: minmax(0, 1fr) minmax(18rem, 30rem) !important;
    }
}

.team-profile-current-roster-section .team-profile-roster-fact-card {
    justify-self: end !important;
    width: min(100%, 30rem) !important;
    max-width: 100% !important;
    overflow: visible !important;
}

.team-profile-current-roster-section .team-profile-roster-summary-table {
    width: 100% !important;
    max-width: 100% !important;
    table-layout: fixed !important;
}

.team-profile-current-roster-section .team-profile-roster-summary-table th {
    width: 42% !important;
}

.team-profile-current-roster-section .team-profile-roster-summary-table td {
    width: 58% !important;
    white-space: normal !important;
    overflow: visible !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
}

.team-profile-current-roster-section .team-profile-roster-summary-table td.dissolution-requested,
.team-profile-current-roster-section .team-profile-roster-summary-table td.withdrawn {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
    line-height: 1.2 !important;
}

@media (max-width: 759px) {
    .team-profile-current-roster-section .team-profile-roster-fact-card {
        justify-self: stretch !important;
        width: 100% !important;
    }
}


/** ADDED v2026-07-02.10244: Admin Attention hub. */
.admin-attention-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    gap: .75rem;
    margin: 1rem 0;
}
.admin-attention-summary-card {
    border: 1px solid var(--color-table-border, #cbd5e1);
    border-radius: .65rem;
    padding: .75rem;
    background: rgba(255,255,255,.75);
}
.admin-attention-count {
    font-size: 1.5rem;
    font-weight: 800;
}
.admin-attention-action-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .35rem .65rem;
    border-radius: .4rem;
    text-decoration: none;
}


/** ADDED v2026-07-02.10247: Team Profile Dissolve Requested two-line status readability. */
.team-profile-roster-summary-table td.dissolution-requested,
.team-profile-roster-summary-table td.withdrawn {
    line-height: 1.25;
}


/** ADDED v2026-07-03.10250: Admin Attention readback and filters. */
.admin-attention-summary-link {
    color: inherit;
    text-decoration: none;
}
.admin-attention-summary-link:hover,
.admin-attention-summary-link.is-active {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}
.admin-attention-filter-actions {
    margin: .75rem 0;
}
.admin-attention-readback {
    margin-top: 1rem;
}
.admin-attention-readback-table td.num,
.admin-attention-readback-table th.num {
    text-align: right;
}
.admin-status-muted {
    opacity: .72;
}


/** ADDED v2026-07-03.10254: Admin Attention action outcome bridge. */
.admin-attention-action-bridge {
    margin-top: 1rem;
}
.admin-attention-recent-resolved-table td {
    vertical-align: top;
}


/** ADDED v2026-07-03.10256: Admin Attention nav text contrast. */
.nav-link-admin-attention,
.nav-link-admin-attention:link,
.nav-link-admin-attention:visited,
.nav-link-admin-attention .nav-approval-count {
    color: #000 !important;
}


/** ADDED v2026-07-03.10257: stronger Admin Attention nav contrast. */
header .nav-link-admin-attention,
header .nav-link-admin-attention:link,
header .nav-link-admin-attention:visited,
header .nav-link-admin-attention:hover,
header .nav-link-admin-attention:active,
.navbar .nav-link-admin-attention,
.navbar .nav-link-admin-attention *,
.nav-link-admin-attention,
.nav-link-admin-attention * {
    color: #000 !important;
}


/** ADDED v2026-07-03.10258: force Admin Attention black in all nav contexts. */
a.nav-link-admin-attention,
a.nav-link-admin-attention:link,
a.nav-link-admin-attention:visited,
a.nav-link-admin-attention:hover,
a.nav-link-admin-attention:active,
nav a.nav-link-admin-attention,
header a.nav-link-admin-attention,
.admin-nav a.nav-link-admin-attention,
.subnav a.nav-link-admin-attention,
a.nav-link-admin-attention span,
a.nav-link-admin-attention .nav-approval-count {
    color: #000 !important;
}


/** ADDED v2026-07-03.10259: Admin Workflow lifecycle polish. */
.admin-team-lifecycle-events-table .smallnote,
.admin-attention-recent-resolved-table .smallnote {
    font-size: .82em;
    opacity: .72;
}


/** ADDED v2026-07-03.10260: Admin Attention cleanup polish. */
.admin-attention-action-bridge h3,
.admin-attention-readback h3 {
    margin-top: 0;
}
.admin-attention-recent-resolved-table td:last-child,
.admin-attention-table td:last-child {
    white-space: nowrap;
}
.admin-attention-summary-card.admin-attention-summary-link {
    display: block;
}


/** ADDED v2026-07-03.10261: Admin Workflow health stabilization. */
.admin-attention-health {
    margin: 1rem 0;
}
.admin-attention-health-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: .75rem;
    margin: .75rem 0;
}
.admin-attention-health-grid > div {
    border: 1px solid var(--color-table-border, #cbd5e1);
    border-radius: .5rem;
    padding: .65rem;
    background: rgba(255,255,255,.65);
}
.admin-attention-health-notes {
    margin: .5rem 0 0 1.25rem;
}
.admin-attention-readback summary {
    cursor: pointer;
}


/** CHANGED v2026-07-03.10347: Removed obsolete Common Admin Review card shell styles; server-owned table styles below are authoritative. */


/** ADDED v2026-07-03.10270: Admin Review Team Dissolve bulk table. */
.admin-review-bulk-actions {
    display: flex;
    gap: .75rem;
    flex-wrap: wrap;
    margin: .75rem 0 1rem;
}
.admin-review-request-table td,
.admin-review-request-table th {
    vertical-align: middle;
}
.admin-review-row-actions {
    white-space: nowrap;
}
.admin-review-highlight-row {
    outline: 2px solid rgba(37, 99, 235, .35);
    background: rgba(37, 99, 235, .06);
}


/** ADDED v2026-07-03.10271: Admin Review unified open queue table. */
.admin-review-request-table input[disabled] {
    opacity: .35;
}
.admin-review-request-table .smallnote {
    white-space: nowrap;
}


/** ADDED v2026-07-03.10273: Admin Review Challenge Event adapter. */
.admin-review-challenge-score-inputs {
    display: inline-flex;
    gap: .25rem;
    align-items: center;
    margin: .25rem .35rem .25rem 0;
}
.admin-review-challenge-score-inputs input[type="number"] {
    width: 4.5rem;
}
.admin-review-request-table select,
.admin-review-request-table input[type="text"] {
    max-width: 18rem;
}
.admin-review-request-table input[type="text"] {
    margin-top: .25rem;
}


/** ADDED v2026-07-03.10274: persistent Admin Review link. */
.admin-attention-primary-actions {
    display: flex;
    gap: .75rem;
    flex-wrap: wrap;
    margin: .75rem 0 1rem;
}


/** ADDED v2026-07-03.10275: Admin Review request history. */
.admin-review-request-history {
    margin-top: 1.25rem;
}
.admin-review-request-history-table td,
.admin-review-request-history-table th {
    vertical-align: top;
}


/** ADDED v2026-07-03.10276: consolidated common Admin Review route. */
.admin-review-request-table .smallnote {
    line-height: 1.25;
}


/** ADDED v2026-07-03.10277: Admin Review access/profile adapters. */
.admin-review-access-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
    gap: .35rem;
    align-items: center;
    min-width: 22rem;
}
.admin-review-access-grid label {
    display: inline-flex;
    gap: .25rem;
    align-items: center;
}


/** ADDED v2026-07-03.10278: Admin Review centralization status and nav contrast. */


.nav-link-admin-attention:not(.nav-link-attention),
.nav-link-admin-attention:not(.nav-link-attention) span {
    color: #fff !important;
}


/** ADDED v2026-07-03.10280: Admin Review Feedback adapter. */
.admin-review-request-table input[name^="adminReviewNote10273"] {
    display: block;
    margin-top: .35rem;
    max-width: 22rem;
}


/** ADDED v2026-07-03.10281: Admin Review centralization status route/link. */
#workflow-centralization-status {
    scroll-margin-top: 5rem;
}
.admin-review-centralization-status {
    margin-top: 1.25rem;
}
.admin-review-centralization-status h3 {
    margin-top: 0;
}
.admin-review-centralization-status-table td,
.admin-review-centralization-status-table th {
    vertical-align: top;
}


/** ADDED v2026-07-03.10283: Admin Review Player Approvals adapter. */
.admin-review-request-table .admin-status-good,
.admin-review-centralization-status-table .admin-status-good {
    font-weight: 600;
}


/** ADDED v2026-07-03.10284: Admin Review table overflow containment. */
.admin-review-table-scroll {

    overflow-x: auto;

    -webkit-overflow-scrolling: touch;
    border: 1px solid rgba(0,0,0,.12);
    background: #fff;
}
.admin-review-request-table {
    width: 100%;
    min-width: 72rem;

    margin: 0;
}
.admin-review-request-table th,
.admin-review-request-table td {
    white-space: normal;

    word-break: normal;
    vertical-align: top;
}
.admin-review-request-table th:nth-child(1),
.admin-review-request-table td:nth-child(1) {
    width: 3rem;
    text-align: center;
}
.admin-review-request-table th:nth-child(2),
.admin-review-request-table td:nth-child(2) {
    width: 10rem;
}
.admin-review-request-table th:nth-child(3),
.admin-review-request-table td:nth-child(3) {
    width: 9rem;
}
.admin-review-request-table th:nth-child(4),
.admin-review-request-table td:nth-child(4) {
    width: 22rem;
}
.admin-review-request-table th:nth-child(5),
.admin-review-request-table td:nth-child(5) {
    width: 24rem;
}
.admin-review-request-table th:nth-child(6),
.admin-review-request-table td:nth-child(6) {
    width: 9rem;
}
.admin-review-request-table th:nth-child(7),
.admin-review-request-table td:nth-child(7) {
    width: 8rem;
}
.admin-review-request-table th:nth-child(8),
.admin-review-request-table td:nth-child(8) {
    width: 16rem;
}
.admin-review-request-table th:nth-child(9),
.admin-review-request-table td:nth-child(9) {
    width: 10rem;
}

.admin-review-row-actions {
    white-space: normal;
}
@media (max-width: 900px) {
    .admin-review-request-table {
        min-width: 64rem;
    }
}


/** ADDED v2026-07-03.10285: Admin Review table fit within page width.
 *  v10284 used horizontal scrolling, but some admin shells still clipped the scroll region.
 *  Prefer wrapping to fit the card/page width.
 */
.admin-review-table-scroll {
    width: 100%;
    max-width: 100%;
    overflow-x: visible;
    overflow-y: visible;
    box-sizing: border-box;
}
.admin-review-request-table {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed;
}
.admin-review-request-table th,
.admin-review-request-table td {
    white-space: normal !important;
    overflow-wrap: anywhere;
    word-break: break-word;
    hyphens: auto;
}
.admin-review-request-table th:nth-child(1),
.admin-review-request-table td:nth-child(1) { width: 3%; }
.admin-review-request-table th:nth-child(2),
.admin-review-request-table td:nth-child(2) { width: 9%; }
.admin-review-request-table th:nth-child(3),
.admin-review-request-table td:nth-child(3) { width: 8%; }
.admin-review-request-table th:nth-child(4),
.admin-review-request-table td:nth-child(4) { width: 22%; }
.admin-review-request-table th:nth-child(5),
.admin-review-request-table td:nth-child(5) { width: 22%; }
.admin-review-request-table th:nth-child(6),
.admin-review-request-table td:nth-child(6) { width: 8%; }
.admin-review-request-table th:nth-child(7),
.admin-review-request-table td:nth-child(7) { width: 7%; }
.admin-review-request-table th:nth-child(8),
.admin-review-request-table td:nth-child(8) { width: 13%; }
.admin-review-request-table th:nth-child(9),
.admin-review-request-table td:nth-child(9) { width: 8%; }
.admin-review-request-table .admin-review-row-actions .admin-button,
.admin-review-request-table .admin-review-row-actions button {
    display: block;
    width: 100%;
    margin: 0 0 .35rem 0;
    white-space: normal;
}
.admin-review-request-table select,
.admin-review-request-table input[type="text"],
.admin-review-request-table input[type="number"] {
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
.admin-review-bulk-actions .admin-button,
.admin-review-bulk-actions button {
    max-width: 100%;
}
@media (max-width: 900px) {
    .admin-review-request-table {
        font-size: .92rem;
    }
}


/** REMOVED v2026-07-03.10347: obsolete Admin Review card fallback CSS v10286-v10288. */

/** ADDED v2026-07-03.10315: Keep Team Dissolve direct-action anchors button-like. */
a.admin-review-team-dissolve-anchor-10315,
a.admin-review-team-dissolve-anchor-10314,
a[data-admin-review-team-dissolve-action-10314] {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 0 .35rem !important;
    padding: .5rem .75rem !important;
    text-align: center !important;
    border-radius: .45rem !important;
    text-decoration: none !important;
    cursor: pointer !important;
    pointer-events: auto !important;
}


/* ADDED v2026-07-03.10321: Keep impersonation end banner destructive/red on admin surfaces as well as player pages. */
body.admin-impersonation-active .admin-impersonation-banner button.admin-impersonation-end-button,
body.admin-impersonation-active.app-admin .admin-impersonation-banner button.admin-impersonation-end-button,
body.admin-impersonation-active.admin-surface .admin-impersonation-banner button.admin-impersonation-end-button,
body.app-admin .admin-impersonation-banner button.admin-impersonation-end-button,
body.admin-surface .admin-impersonation-banner button.admin-impersonation-end-button {
    background: #b42318 !important;
    background-color: #b42318 !important;
    border-color: #8f1d14 !important;
    color: #fff !important;
}
body.admin-impersonation-active .admin-impersonation-banner button.admin-impersonation-end-button:hover,
body.admin-impersonation-active .admin-impersonation-banner button.admin-impersonation-end-button:focus,
body.app-admin .admin-impersonation-banner button.admin-impersonation-end-button:hover,
body.app-admin .admin-impersonation-banner button.admin-impersonation-end-button:focus,
body.admin-surface .admin-impersonation-banner button.admin-impersonation-end-button:hover,
body.admin-surface .admin-impersonation-banner button.admin-impersonation-end-button:focus {
    background: #8f1d14 !important;
    background-color: #8f1d14 !important;
    border-color: #73170f !important;
    color: #fff !important;
}

/* ADDED v2026-07-03.10322: impersonation-mode unscheduled match readonly score placeholders. */
body.admin-impersonation-active .challenge-impersonation-readonly-stack-10322 {
    display: inline-flex;
    flex-direction: column;
    gap: 0.25rem;
    align-items: center;
    justify-content: center;
}
body.admin-impersonation-active input.challenge-impersonation-readonly-score-10322 {
    background: #f8fafc !important;
    cursor: pointer;
    pointer-events: auto;
}

/* ADDED v2026-07-03.10330: Admin Review source-only row clarity. */
.admin-review-source-only-button-10330 {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  box-sizing: border-box !important;
  min-height: 42px !important;
  padding: 8px 18px !important;
  border-radius: 8px !important;
  background: #6c757d !important;
  color: #fff !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}
.admin-review-source-only-note-10330 {
  margin: .35rem 0 .5rem 0 !important;
  font-size: .9rem !important;
  color: #555 !important;
  line-height: 1.25 !important;
}


/* ADDED v2026-07-03.10331: Admin Review adapter summary panel. */
.admin-review-adapter-summary-10331 {
  margin: 0.65rem 0 1rem 0;
  padding: 0.75rem 0.9rem;
  border: 1px solid #cfd8e3;
  border-radius: 10px;
  background: #f8fbff;
  color: #004b8d;
  line-height: 1.35;
}
.admin-review-summary-pill-10331 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.6rem;
  padding: 0.15rem 0.5rem;
  margin: 0 0.15rem;
  border-radius: 999px;
  background: #e9ecef;
  color: #111;
  font-weight: 700;
  white-space: nowrap;
}
.admin-review-summary-pill-direct-10331 { background: #d1f2dc; color: #135c2b; }
.admin-review-summary-pill-source-10331 { background: #fff3cd; color: #7a5200; }
.admin-review-summary-detail-10331 { margin-left: 0.35rem; color: #004b8d; }
.admin-review-summary-help-10331 { margin-top: 0.35rem; font-size: 0.92rem; color: #555; }

/* REMOVED v2026-07-03.10347: obsolete Admin Review card/canonical/history rescue CSS v10332-v10342. */

/* REMOVED v2026-07-03.10347: obsolete pre-consolidation Admin Review v10343 table/modal CSS. */

/** ADDED v2026-07-03.10347: Common Admin Review one-record-per-row tables. */

.admin-review-section-10347 { margin: 1.25rem 0 2rem; }
.admin-review-table-wrap-10347 {

  max-width: 100%;
  overflow-x: auto;

  border: 1px solid #d8dee9;
  border-radius: 10px;
  background: #fff;
}
.admin-review-table-10347 {
  width: 100%;
  min-width: 920px;
  border-collapse: collapse;
  table-layout: fixed;
  background: #fff;
}
.admin-review-table-10347 th,
.admin-review-table-10347 td {
  padding: .55rem .65rem;
  border-bottom: 1px solid #e7ebf1;
  text-align: left;
  vertical-align: top;
  line-height: 1.35;
  overflow-wrap: anywhere;
  word-break: normal;
}
.admin-review-table-10347 th {
  font-weight: 700;
  background: #f5f7fb;
  color: #17324d;
  white-space: nowrap;
}
.admin-review-table-10347 .admin-review-cell-date { width: 11rem; }
.admin-review-table-10347 .admin-review-cell-status { width: 7.5rem; }
.admin-review-table-10347 .admin-review-cell-type { width: 12rem; }
.admin-review-table-10347 .admin-review-cell-request { width: 16rem; }
.admin-review-table-10347 .admin-review-cell-submitter { width: 9rem; }
.admin-review-table-10347 .admin-review-cell-actions { width: 11rem; }
.admin-review-click-row-10347 { cursor: pointer; }
.admin-review-click-row-10347:hover,
.admin-review-click-row-10347:focus { background: #f3f8ff; outline: none; }
.admin-review-table-actions-10347 { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.admin-review-action-form-10347 { display: inline-block; margin: 0; }
.admin-review-action-button-10347 { width: auto !important; min-width: 5rem; padding: .35rem .7rem !important; }
.admin-review-detail-pre-10347,
.admin-review-swal-detail-table-10347 pre { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font-family: inherit; }
.admin-review-swal-scroll-10347 { max-height: 70vh; overflow: auto; }
.admin-review-swal-detail-table-10347 { width: 100%; border-collapse: collapse; text-align: left; table-layout: fixed; }
.admin-review-swal-detail-table-10347 th,
.admin-review-swal-detail-table-10347 td { border-bottom: 1px solid #e7ebf1; padding: .45rem .55rem; vertical-align: top; }
.admin-review-swal-detail-table-10347 th { width: 13rem; background: #f5f7fb; }
@media (max-width: 800px) {
  .admin-review-table-10347 { min-width: 760px; }
}


/* ADDED v2026-07-03.10350: Calendar date-range toggle for current-date vs full-round view. */
.calendar-show-entire-round-control {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    gap: 0.5rem;
    margin: 0.75rem 0;
}
.calendar-show-entire-round-label {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-weight: 600;
    cursor: pointer;
    user-select: none;
}
.calendar-show-entire-round-label input[type="checkbox"] {
    width: 1rem;
    height: 1rem;
}


/** ADDED v2026-07-03.10360: Controlled Repair Tools table width fix. */
.admin-workflow-repairs-10359 {
  max-width: 100%;
  overflow: hidden;
}
.admin-workflow-repair-tools-wrap-10360 {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}
.admin-workflow-repair-tools-table-10360 {
  width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed;
}
.admin-workflow-repair-tools-table-10360 th,
.admin-workflow-repair-tools-table-10360 td {
  overflow-wrap: anywhere;
  word-break: normal;
}
.admin-workflow-repair-tools-table-10360 th:nth-child(1),
.admin-workflow-repair-tools-table-10360 td:nth-child(1) { width: 32%; }
.admin-workflow-repair-tools-table-10360 th:nth-child(2),
.admin-workflow-repair-tools-table-10360 td:nth-child(2) { width: 8%; white-space: normal; }
.admin-workflow-repair-tools-table-10360 th:nth-child(3),
.admin-workflow-repair-tools-table-10360 td:nth-child(3) { width: 38%; }
.admin-workflow-repair-tools-table-10360 th:nth-child(4),
.admin-workflow-repair-tools-table-10360 td:nth-child(4) { width: 22%; }
.admin-workflow-repair-form-10360 {
  max-width: 100%;
}
.admin-workflow-repair-tools-table-10360 input[type="number"],
.admin-workflow-repair-tools-table-10360 input[type="text"],
.admin-workflow-repair-item-input-10360 {
  max-width: 5.5rem;
  box-sizing: border-box;
}
.admin-workflow-repair-tools-table-10360 .button,
.admin-workflow-repair-tools-table-10360 button {
  max-width: 100%;
  min-width: 4rem;
  white-space: normal;
  padding-left: .55rem !important;
  padding-right: .55rem !important;
}
@media (max-width: 900px) {
  .admin-workflow-repair-tools-table-10360 thead { display: none; }
  .admin-workflow-repair-tools-table-10360,
  .admin-workflow-repair-tools-table-10360 tbody,
  .admin-workflow-repair-tools-table-10360 tr,
  .admin-workflow-repair-tools-table-10360 td { display: block; width: 100% !important; }
  .admin-workflow-repair-tools-table-10360 tr { border-bottom: 1px solid #d8dee9; padding: .5rem 0; }
  .admin-workflow-repair-tools-table-10360 td { border-bottom: 0; padding: .3rem .55rem; }
  .admin-workflow-repair-tools-table-10360 td:nth-child(1)::before { content: 'Action: '; font-weight: 700; }
  .admin-workflow-repair-tools-table-10360 td:nth-child(2)::before { content: 'Status: '; font-weight: 700; }
  .admin-workflow-repair-tools-table-10360 td:nth-child(3)::before { content: 'Scope: '; font-weight: 700; }
  .admin-workflow-repair-tools-table-10360 td:nth-child(4)::before { content: 'Run: '; font-weight: 700; }
}

/**
 * ADDED v2026-07-04.10370: Admin Review horizontal scrolling for wide action controls.
 * v10369 added Challenge Event resolution controls inside the Actions column, but
 * the table still used the older approve/reject sizing. Keep the table inside an
 * explicit scroll region instead of clipping controls at the viewport edge.
 */
.admin-review-page-10347,
.admin-review-section-10347 {
  max-width: 100%;
  min-width: 0;
}
.admin-review-table-wrap-10347 {
  display: block;
  width: 100%;
  max-width: calc(100vw - 2rem);
  overflow-x: auto !important;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}
.admin-review-table-10347 {
  width: max-content;
  min-width: 1320px;
  table-layout: auto;
}
.admin-review-table-open-10347 {
  min-width: 1560px;
}
.admin-review-table-10347 .admin-review-cell-date { min-width: 12rem; }
.admin-review-table-10347 .admin-review-cell-status { min-width: 5.5rem; }
.admin-review-table-10347 .admin-review-cell-type { min-width: 13rem; }
.admin-review-table-10347 .admin-review-cell-request { min-width: 20rem; }
.admin-review-table-10347 .admin-review-cell-submitter { min-width: 12rem; }
.admin-review-table-10347 .admin-review-cell-summary { min-width: 18rem; }
.admin-review-table-10347 .admin-review-cell-actions {
  min-width: 18rem;
  width: 18rem;
  overflow: visible;
}
.admin-review-challenge-resolution-form-10369 {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .35rem;
  min-width: 16rem;
  max-width: 17.5rem;
}
.admin-review-challenge-resolution-form-10369 select,
.admin-review-challenge-resolution-form-10369 input[type="text"] {
  box-sizing: border-box;
  width: 100%;
}
.admin-review-challenge-score-inputs-10369 {
  display: inline-grid;
  grid-template-columns: minmax(3.25rem, 1fr) auto minmax(3.25rem, 1fr);
  align-items: center;
  gap: .3rem;
}
.admin-review-challenge-score-inputs-10369 input[type="number"] {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
}

/**
 * ADDED v2026-07-04.10371: Admin Review history table horizontal scroll containment.
 * v10370 restored a scroll region for wide Challenge Event actions, but the
 * history table could still be clipped by page-level overflow because the
 * scroll constraint lived only on the inner wrapper. Give each Admin Review
 * section its own viewport-bound scroll container and avoid forcing long
 * history summaries to fit inside the visible page width.
 */
.admin-review-page-10347 {
  width: 100%;
  max-width: 100%;
  overflow-x: visible;
}
.admin-review-section-10347 {
  display: block;
  width: 100%;
  max-width: calc(100vw - 2rem);
  min-width: 0;
  overflow-x: auto;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
}
.admin-review-table-wrap-10347,
.admin-review-table-wrap-open-10371,
.admin-review-table-wrap-history-10371 {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto !important;
  overflow-y: visible;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box;
}
.admin-review-table-10347,
.admin-review-table-history-10347,
.admin-review-table-open-10347 {
  width: max-content !important;
  max-width: none !important;
  table-layout: auto !important;
}
.admin-review-table-history-10347 {
  min-width: 1420px;
}
.admin-review-table-history-10347 .admin-review-cell-date { min-width: 12rem; }
.admin-review-table-history-10347 .admin-review-cell-status { min-width: 6rem; }
.admin-review-table-history-10347 .admin-review-cell-type { min-width: 13rem; }
.admin-review-table-history-10347 .admin-review-cell-request { min-width: 22rem; }
.admin-review-table-history-10347 .admin-review-cell-submitter { min-width: 12rem; }
.admin-review-table-history-10347 .admin-review-cell-summary {
  min-width: 34rem;
  overflow-wrap: normal;
  word-break: normal;
}

/**
 * ADDED v2026-07-04.10372: Admin Review hard horizontal scroll viewport.
 * Earlier wrappers still allowed the table to participate in the page layout on
 * some browsers, so wide cells were clipped at the page edge instead of creating
 * a local scrollbar. This outer viewport is the only element that scrolls; the
 * inner table is deliberately wider than the viewport.
 */
.admin-review-scroll-section-10372 {
  display: block !important;
  width: 100% !important;
  max-width: calc(100vw - 2rem) !important;
  min-width: 0 !important;
  overflow-x: hidden !important;
  overflow-y: visible !important;
  box-sizing: border-box !important;
}
.admin-review-scroll-viewport-10372 {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: scroll !important;
  overflow-y: visible !important;
  -webkit-overflow-scrolling: touch;
  box-sizing: border-box !important;
  padding-bottom: .35rem;
  scrollbar-gutter: stable;
}
.admin-review-table-wrap-open-10372,
.admin-review-table-wrap-history-10372 {
  display: block !important;
  width: max-content !important;
  max-width: none !important;
  min-width: 1420px !important;
  overflow: visible !important;
  box-sizing: border-box !important;
}
.admin-review-table-wrap-open-10372 { min-width: 1560px !important; }
.admin-review-table-open-10372,
.admin-review-table-history-10372 {
  width: max-content !important;
  max-width: none !important;
  table-layout: auto !important;
}
.admin-review-table-open-10372 { min-width: 1560px !important; }
.admin-review-table-history-10372 { min-width: 1420px !important; }

/**
 * ADDED v2026-07-04.10373: Admin Review Challenge Event table readability.
 * - Date/time stack vertically.
 * - Challenge Event request cell shows each side and score on separate lines.
 * - Score correction controls stay on one compact x-y line.
 * - Resolve button remains submittable for dismiss/no-change actions even when correction fields are not being used.
 */
.admin-review-date-stack-10373 {
  display: inline-flex;
  flex-direction: column;
  gap: .1rem;
  line-height: 1.15;
  white-space: nowrap;
}
.admin-review-challenge-request-10373 {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  line-height: 1.2;
  min-width: 18rem;
}
.admin-review-challenge-title-10373 {
  font-weight: 700;
}
.admin-review-challenge-teamline-10373 {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
  white-space: nowrap;
}
.admin-review-team-label-10373 {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.admin-review-team-score-10373 {
  font-weight: 700;
  min-width: 2.5rem;
  text-align: right;
}
.admin-review-score-status-10373 {
  font-size: .85em;
  opacity: .8;
  margin-left: .25rem;
}
.admin-review-challenge-resolution-form-10369 {
  min-width: 20rem;
  max-width: 34rem;
}
.admin-review-challenge-resolution-grid-10373 {
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) auto;
  align-items: center;
  gap: .35rem .5rem;
}
.admin-review-challenge-resolution-grid-10373 select {
  min-width: 12rem;
}
.admin-review-challenge-score-inputs-10373 {
  display: inline-flex !important;
  align-items: center;
  justify-content: flex-start;
  gap: .25rem;
  white-space: nowrap;
  width: auto !important;
}
.admin-review-challenge-score-inputs-10373 input[type="number"] {
  width: 3.5rem !important;
  min-width: 3.5rem !important;
  max-width: 3.5rem !important;
  text-align: center;
}
.admin-review-score-dash-10373 {
  display: inline-block;
  min-width: .5rem;
  text-align: center;
  font-weight: 700;
}
.admin-review-challenge-submit-10373[aria-disabled="false"] {
  opacity: 1;
  pointer-events: auto;
}

/** CHANGED v2026-07-04.10374: Admin Review Challenge Event request/action layout refinements. */
.admin-review-challenge-request-10374 {
  min-width: 16rem;
}
.admin-review-challenge-title-10373 {
  display: none !important;
}
.admin-review-challenge-teamline-10374 {
  display: block !important;
  white-space: nowrap;
}
.admin-review-team-separator-10374 {
  display: inline;
  white-space: pre;
}
.admin-review-challenge-teamline-10374 .admin-review-team-score-10373 {
  display: inline;
  min-width: 0;
  text-align: left;
  font-weight: 700;
}
.admin-review-challenge-resolution-form-10374 {
  min-width: 17rem !important;
  max-width: 28rem !important;
}
.admin-review-challenge-resolution-form-10374 button.admin-review-challenge-submit-10374 {
  opacity: 1 !important;
  pointer-events: auto !important;
}
.admin-review-challenge-resolution-grid-10373 {
  display: flex !important;
  flex-direction: column;
  align-items: stretch;
  gap: .25rem;
}
.admin-review-challenge-resolution-grid-10373 select {
  width: 100%;
  min-width: 0 !important;
  max-width: 100% !important;
}
.admin-review-challenge-score-inputs-10374 {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  flex-wrap: nowrap !important;
  gap: .25rem !important;
  width: max-content !important;
  max-width: none !important;
  white-space: nowrap !important;
}
.admin-review-challenge-score-inputs-10374 input[type="number"] {
  box-sizing: border-box !important;
  width: 3rem !important;
  min-width: 3rem !important;
  max-width: 3rem !important;
  flex: 0 0 3rem !important;
  padding-left: .25rem !important;
  padding-right: .25rem !important;
  text-align: center !important;
}
.admin-review-challenge-score-inputs-10374 .admin-review-score-dash-10373 {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: .5rem !important;
}

/* ADDED v2026-07-04.10375: Admin Review challenge score inputs must fit as [score1] - [score2] on one line. */
.admin-review-challenge-resolution-form-10375 .admin-review-challenge-score-inputs-10375,
.admin-review-challenge-score-inputs-10375 {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: flex-start !important;
  flex-wrap: nowrap !important;
  gap: .25rem !important;
  width: max-content !important;
  min-width: 0 !important;
  max-width: none !important;
  white-space: nowrap !important;
}
.admin-review-challenge-resolution-form-10375 .admin-review-challenge-score-inputs-10375 input[type="number"],
.admin-review-challenge-score-inputs-10375 input[type="number"] {
  box-sizing: border-box !important;
  width: 2.6rem !important;
  min-width: 2.6rem !important;
  max-width: 2.6rem !important;
  flex: 0 0 2.6rem !important;
  padding-left: .15rem !important;
  padding-right: .15rem !important;
  text-align: center !important;
}
.admin-review-challenge-resolution-form-10375 .admin-review-score-dash-10373 {
  display: inline-block !important;
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: .5rem !important;
}
.admin-review-challenge-submit-10375 {
  opacity: 1 !important;
  pointer-events: auto !important;
}

/* ADDED v2026-07-04.10376: Scheduled Calendar cell body links back to the owning Matches row. */
.calendar-scheduled-protected-cell[data-calendar-scheduled-match-url],
.calendar-scheduled-two-match-band[data-calendar-scheduled-match-url] {
  cursor: pointer;
}


/* ADDED v2026-07-04.10379: compact Admin Review Challenge Event score controls. */
.admin-review-challenge-resolution-form-10379 { min-width: 18rem !important; }
.admin-review-challenge-resolution-grid-10379 { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; gap: .75rem !important; flex-wrap: nowrap !important; }
.admin-review-challenge-resolution-grid-10379 select { flex: 0 1 18rem !important; max-width: 18rem !important; }
.admin-review-challenge-score-inputs-10379 { display: inline-flex !important; flex-direction: row !important; align-items: center !important; flex-wrap: nowrap !important; gap: .25rem !important; width: max-content !important; min-width: 0 !important; max-width: none !important; white-space: nowrap !important; margin-left: .75rem !important; }
.admin-review-challenge-score-inputs-10379 input[type="number"] { box-sizing: border-box !important; width: 2.35rem !important; min-width: 2.35rem !important; max-width: 2.35rem !important; flex: 0 0 2.35rem !important; padding-left: .1rem !important; padding-right: .1rem !important; text-align: center !important; }
.admin-review-challenge-submit-10375, .admin-review-challenge-resolution-form-10379 button[type="submit"] { opacity: 1 !important; pointer-events: auto !important; }

/** ADDED v10464
 *  Forfeit loser chips may also carry the normal score-loss/loss classes. Late
 *  loss selectors intentionally force non-winning scores back to white, so keep
 *  the forfeit status selector later and more specific in the compiled player
 *  stylesheet. Display-only; does not affect score data or workflow. */
body.app-player .matches-table.match-layout-table td.matches-score-cell input.input-score.forfeit-score,
body.app-player .matches-table.match-layout-table td.matches-score-cell span.input-score.forfeit-score,
body.app-player .matches-table.match-layout-table td.matches-score-cell input.input-score.forfeit-score.score-loss,
body.app-player .matches-table.match-layout-table td.matches-score-cell span.input-score.forfeit-score.score-loss,
body.app-player .matches-table.match-layout-table td.matches-score-cell input.input-score.forfeit-score.loss,
body.app-player .matches-table.match-layout-table td.matches-score-cell span.input-score.forfeit-score.loss,
body.app-player .player-matches-page td.matches-score-cell input.input-score.forfeit-score,
body.app-player .player-matches-page td.matches-score-cell span.input-score.forfeit-score,
body.app-player .player-matches-page td.matches-score-cell input.input-score.forfeit-score.score-loss,
body.app-player .player-matches-page td.matches-score-cell span.input-score.forfeit-score.score-loss,
body.app-player .player-matches-page td.matches-score-cell input.input-score.forfeit-score.loss,
body.app-player .player-matches-page td.matches-score-cell span.input-score.forfeit-score.loss {
    background-color: var(--player-score-status-forfeit-bg, var(--color-status-forfeit-bg, #bae1ff)) !important;
    background: var(--player-score-status-forfeit-bg, var(--color-status-forfeit-bg, #bae1ff)) !important;
    border-color: var(--color-pastel-blue, #bae1ff) !important;
    background-clip: padding-box !important;
    opacity: 1 !important;
}

/** ADDED v10466: Challenge-locked pending forfeit loss chips must use the standard forfeit blue.
 *  This targets the actual rendered score-chip contract observed in TEST:
 *  data-pending-status="forfeit" + data-score-outcome="loss".
 */
body.app-player .matches-table.match-layout-table span.input-score.player-score-badge[data-pending-status="forfeit"][data-score-outcome="loss"],
body.app-player .matches-table span.input-score.player-score-badge[data-pending-status="forfeit"][data-score-outcome="loss"],
body.app-player :where(.match-container, .matches-container) span.input-score.player-score-badge[data-pending-status="forfeit"][data-score-outcome="loss"],
span.input-score.player-score-badge[data-pending-status="forfeit"][data-score-outcome="loss"] {
    background-color: var(--player-score-status-forfeit-bg, var(--color-status-forfeit-bg)) !important;
    border-color: var(--color-pastel-blue) !important;
    background-clip: padding-box !important;
}



/* PATCH 10563 - Completed Challenge Schedule menu row should not show an extra red icon outline.
   The completed state is already indicated by the red hamburger summary dot. Keep the Schedule row neutral
   to avoid a duplicate red halo/outline when the menu is opened. */
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::after,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::before,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::after,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::before,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::before,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::before,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-action-menu-icon::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete,
.matches-action-menu-panel a.matches-calendar-menu-link--scheduler.matches-calendar-status--complete {
    box-shadow: none !important;
    outline: 0 !important;
    border: 0 !important;
    background: transparent !important;
    color: inherit !important;
    -webkit-text-fill-color: currentColor !important;
}


/** ADDED v10575: Current-match and match-effect copy inside the Void/Forfeit modal. */
.manage-outcome-current-summary {
    text-align: left;
    max-width: 32rem;
    margin: 0 auto 0.75rem auto;
    line-height: 1.35;
}

.manage-outcome-current-row {
    margin-top: 0.25rem;
}

.manage-outcome-next-note,
.manage-outcome-effect-summary {
    max-width: 32rem;
    margin: 0.5rem auto;
    text-align: left;
    line-height: 1.35;
}

/** CHANGED v10582: completed Challenge matches use the hamburger summary red dot only; remove the extra red halo from the Schedule menu icon. */
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--complete .matches-calendar-state-icon,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-calendar-state-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon {
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon::after,
.matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--complete .matches-calendar-state-icon::after,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler.matches-calendar-status--complete .matches-calendar-state-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon::after {
    box-shadow: none !important;
    border: 0 !important;
    outline: 0 !important;
    background: transparent !important;
}
.calendar-scheduled-match-actions .calendar-scheduled-match-return-button {
    align-items: center !important;
    display: inline-flex !important;
    justify-content: center !important;
    margin-top: 0 !important;
    text-align: center !important;
    text-decoration: none !important;
}
.calendar-scheduled-match-actions > * {
    box-sizing: border-box !important;
    flex: 1 1 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    max-width: none !important;
    width: auto !important;
}

/* ADDED v10588: Keep Sysadmin Log Files bulk actions aligned horizontally despite the legacy global full-width button rule. */
.admin-log-file-bulk-actions {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: center;
  margin: 1rem 0;
}

.admin-log-file-bulk-actions button {
  width: auto;
  flex: 0 0 auto;
  min-width: 9rem;
}

.admin-log-file-bulk-actions .admin-log-copy-status {
  flex: 1 1 12rem;
}


/* ADDED v2026-07-07.10670: DUPR rating display now carries the reliability score in a circular halo badge beside the rating value. */
.player-dupr-inline-cluster {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    flex-wrap: nowrap;
    vertical-align: middle;
}
.player-dupr-inline-rating {
    display: inline-flex;
    align-items: center;
    line-height: 1.1;
}
.player-dupr-inline-rating a {
    font-weight: 600;
}
.player-dupr-reliability-badge {
    --dupr-reliability-progress: 0%;
    --dupr-reliability-color: #d9e1ee;
    --dupr-reliability-track: #d9e1ee;
    position: relative;
    width: 2.35rem;
    height: 2.35rem;
    flex: 0 0 2.35rem;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: conic-gradient(var(--dupr-reliability-color) var(--dupr-reliability-progress), var(--dupr-reliability-track) 0);
    color: #41526a;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    vertical-align: middle;
}
.player-dupr-reliability-badge::after {
    content: '';
    position: absolute;
    inset: 0.2rem;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: inset 0 0 0 1px rgba(66, 82, 110, 0.09);
}
.player-dupr-reliability-badge.is-empty {
    background: transparent;
    box-shadow: inset 0 0 0 0.18rem var(--dupr-reliability-track);
}
.player-dupr-reliability-badge.is-empty::after {
    inset: 0.22rem;
    box-shadow: none;
}
.player-dupr-reliability-badge-label {
    position: relative;
    z-index: 1;
}
.player-dupr-reliability-badge:hover,
.player-dupr-reliability-badge:focus {
    text-decoration: none;
}
.player-profile-summary-semantic .player-profile-fact-row > dd .player-dupr-inline-cluster {
    justify-content: flex-start;
}


/* ADDED v2026-07-07.10671: tighten DUPR reliability halo sizing so rows align more evenly with the DUPR rating text. */
.player-dupr-inline-cluster {
    gap: 0.42rem;
}
.player-dupr-inline-rating,
.player-dupr-inline-rating a {
    font-size: 1rem;
    line-height: 1.1;
}
.player-dupr-reliability-badge {
    width: 2rem;
    height: 2rem;
    flex: 0 0 2rem;
    font-size: 1rem;
}
.player-dupr-reliability-badge::after {
    inset: 0.18rem;
}
.player-dupr-reliability-badge.is-empty {
    box-shadow: inset 0 0 0 0.16rem var(--dupr-reliability-track);
}
.player-dupr-reliability-badge.is-empty::after {
    inset: 0.2rem;
}
.player-dupr-reliability-badge-label {
    font-size: 1rem;
    line-height: 1;
}


/* ADDED v2026-07-07.10672: inherit DUPR rating/reliability font sizing from the profile row instead of forcing custom sizes. */
.player-dupr-inline-rating,
.player-dupr-inline-rating a,
.player-dupr-reliability-badge,
.player-dupr-reliability-badge-label {
    font-size: inherit;
}


/* ADDED v2026-07-07.10674: vertically align the DUPR label with the rating/reliability halo cluster. */
.player-profile-summary-semantic .player-profile-fact-row.dupr-rating-row > dt {
    align-self: center !important;
    padding-top: 0.28rem !important;
}


/* ADDED v2026-07-07.10684: Sysadmin Log Files severity group rows. */
.admin-sysadmin-log-file-table .admin-log-severity-group-row th {
    text-align: left;
    font-weight: 700;
    padding: 0.45rem 0.75rem;
    border-top: 2px solid #c9d0d9;
}
.admin-sysadmin-log-file-table .admin-log-severity-group-critical th {
    background: #b02a37 !important;
    color: #ffffff !important;
}
.admin-sysadmin-log-file-table .admin-log-severity-group-attention th {
    background: #b58105 !important;
    color: #ffffff !important;
}
.admin-sysadmin-log-file-table .admin-log-severity-group-review th {
    background: #7a45a4 !important;
    color: #ffffff !important;
}
.admin-sysadmin-log-file-table .admin-log-severity-group-info th {
    background: #2f80c0 !important;
    color: #ffffff !important;
}
.admin-sysadmin-log-file-table .admin-log-severity-group-row th {
    letter-spacing: 0.01em;
}


/* ADDED v2026-07-07.10685: Highlight populated Sysadmin Log Files rows using their severity-group color. */
.admin-sysadmin-log-file-table .admin-log-file-row-populated-critical td {
    background: #fde7ea;
    border-top: 1px solid #f3b5bd;
    border-bottom: 1px solid #f3b5bd;
}
.admin-sysadmin-log-file-table .admin-log-file-row-populated-attention td {
    background: #fff7df;
    border-top: 1px solid #ecd18a;
    border-bottom: 1px solid #ecd18a;
}
.admin-sysadmin-log-file-table .admin-log-file-row-populated-review td {
    background: #f1e7fb;
    border-top: 1px solid #d4b9ed;
    border-bottom: 1px solid #d4b9ed;
}
.admin-sysadmin-log-file-table .admin-log-file-row-populated-info td {
    background: #e8f4ff;
    border-top: 1px solid #b8daf6;
    border-bottom: 1px solid #b8daf6;
}
.admin-sysadmin-log-file-table .admin-log-file-row-populated td:first-child {
    border-left: 0.35rem solid transparent;
}
.admin-sysadmin-log-file-table .admin-log-file-row-populated-critical td:first-child { border-left-color: #b02a37; }
.admin-sysadmin-log-file-table .admin-log-file-row-populated-attention td:first-child { border-left-color: #b58105; }
.admin-sysadmin-log-file-table .admin-log-file-row-populated-review td:first-child { border-left-color: #7a45a4; }
.admin-sysadmin-log-file-table .admin-log-file-row-populated-info td:first-child { border-left-color: #2f80c0; }
.admin-sysadmin-log-file-table .admin-log-file-row-populated code {
    background: rgba(255, 255, 255, 0.55);
}


/* CHANGED v2026-07-08.10687: Force severity group headers to render as white text on solid severity backgrounds even when table/header theme rules override TH colors. */
.admin-sysadmin-log-file-table tr.admin-log-severity-group-row th,
.admin-sysadmin-log-file-table tr.admin-log-severity-group-row th * {
    color: #ffffff !important;
}
.admin-sysadmin-log-file-table tr.admin-log-severity-group-critical th { background-color: #b02a37 !important; }
.admin-sysadmin-log-file-table tr.admin-log-severity-group-attention th { background-color: #b58105 !important; }
.admin-sysadmin-log-file-table tr.admin-log-severity-group-review th { background-color: #7a45a4 !important; }
.admin-sysadmin-log-file-table tr.admin-log-severity-group-info th { background-color: #2f80c0 !important; }

/* ADDED v10711: device-independent inline SVG icons for mobile/Android/iOS consistency. */
.app-svg-icon {
  display: inline-block;




  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;

}
.app-icon .app-svg-icon,
.matches-action-menu-icon .app-svg-icon,
.matches-pool-availability-icon .app-svg-icon,
.matches-pool-schedule-icon .app-svg-icon,
.matches-pool-test-wipe-scores-icon .app-svg-icon {
  width: 1.05em;
  height: 1.05em;
}
.sms-compose-link--group {
  touch-action: manipulation;
}


/* ADDED v10713: normalized inline SVG icon sizing and movement/challenge state icons. */
.app-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  vertical-align: -0.125em;
  color: currentColor;
}
.app-svg-icon {
  display: block;
  width: 1em;
  height: 1em;
  min-width: 1em;
  min-height: 1em;
  overflow: visible;
  vertical-align: -0.125em;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  color: currentColor;
  flex: 0 0 auto;
}
.app-icon .app-svg-icon,
.matches-action-menu-icon .app-svg-icon,
.matches-pool-availability-icon .app-svg-icon,
.matches-pool-schedule-icon .app-svg-icon,
.matches-pool-test-wipe-scores-icon .app-svg-icon,
.match-outcome-challenge-link .app-svg-icon,
.teams-round-movement-symbol .app-svg-icon {
  width: 1.05em;
  height: 1.05em;
}
.teams-round-movement-symbol .app-icon,
.match-outcome-challenge-link .app-icon {
  vertical-align: -0.1em;
}

/** ADDED v10714: Keep Explain Stats SVG launcher circular after inline SVG replacement. */
.explainstats {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.45em !important;
    min-width: 1.45em !important;
    max-width: 1.45em !important;
    height: 1.45em !important;
    min-height: 1.45em !important;
    max-height: 1.45em !important;
    padding: 0 !important;
    border-radius: 50% !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
}
.explainstats .app-icon,
.explainstats .app-icon svg,
.explainstats svg {
    width: 1em !important;
    height: 1em !important;
    min-width: 1em !important;
    min-height: 1em !important;
    display: block !important;
}

/** ADDED v10714: Remove duplicate rectangular completed Schedule outline; the halo ring is the only state marker. */
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-css-glyph,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-css-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-css-glyph {
    border-color: currentColor !important;
    box-shadow: none !important;
    outline: 0 !important;
    filter: none !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon {
    box-shadow: none !important;
    outline: 0 !important;
    border: 0 !important;
    background: transparent !important;
}

/** ADDED v10714: Scouting menu row shows green halo when an opposing-team scouting record exists. */
.matches-action-menu-panel .matches-action-menu-item--scouting-has-record .matches-scouting-state-icon,
.matches-action-menu[open] .matches-action-menu-item--scouting-has-record .matches-scouting-state-icon {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.3rem !important;
    min-width: 1.3rem !important;
    height: 1.3rem !important;
    min-height: 1.3rem !important;
    overflow: visible !important;
}
.matches-scouting-halo-ring {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.28rem !important;
    height: 1.28rem !important;
    transform: translate(-50%, -50%) !important;
    border: 2px solid rgba(22, 163, 74, .95) !important;
    border-radius: 50% !important;
    background: transparent !important;
    box-sizing: border-box !important;
    pointer-events: none !important;
    z-index: 0 !important;
}
.matches-action-menu-panel .matches-action-menu-item--scouting-has-record .matches-scouting-state-icon .app-icon,
.matches-action-menu[open] .matches-action-menu-item--scouting-has-record .matches-scouting-state-icon .app-icon,
.matches-action-menu-panel .matches-action-menu-item--scouting-has-record .matches-scouting-state-icon svg,
.matches-action-menu[open] .matches-action-menu-item--scouting-has-record .matches-scouting-state-icon svg {
    position: relative !important;
    z-index: 1 !important;
}

/** ADDED v10715: Normalize Explain Stats and Explain Team Movement launcher icon footprints. */
.explainstats,
.teams-round-movement-toggle {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.45em !important;
    min-width: 1.45em !important;
    max-width: 1.45em !important;
    height: 1.45em !important;
    min-height: 1.45em !important;
    max-height: 1.45em !important;
    padding: 0 !important;
    border-radius: 50% !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    flex: 0 0 1.45em !important;
}
.explainstats .app-icon,
.teams-round-movement-toggle .app-icon,
.explainstats .app-svg-icon,
.teams-round-movement-toggle .app-svg-icon,
.explainstats svg,
.teams-round-movement-toggle svg {
    width: 1em !important;
    height: 1em !important;
    min-width: 1em !important;
    min-height: 1em !important;
    max-width: 1em !important;
    max-height: 1em !important;
    display: block !important;
}

/** ADDED v10715: Completed hamburger Schedule state must not show a second rectangular calendar outline. */
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-css-glyph,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-css-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-css-glyph,
.matches-action-menu-panel .matches-calendar-menu-link.matches-schedule-link--complete .matches-calendar-css-glyph,
.matches-action-menu-panel .matches-calendar-state-icon--complete .matches-calendar-css-glyph {
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}


/** ADDED v10716: final mobile icon alignment and state cleanup without relocating controls. */
.matches-action-menu-panel .matches-action-menu-item,
.matches-action-menu-panel a.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item,
.player-matches-page .matches-action-menu-panel .matches-action-menu-item,
.player-matches-page .matches-action-menu-panel a.matches-action-menu-item {
    display: grid !important;
    grid-template-columns: 1.65rem auto !important;
    align-items: center !important;
    column-gap: .55rem !important;
}
.matches-action-menu-panel .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-state-icon,
.matches-action-menu-panel .matches-scouting-state-icon {
    grid-column: 1 !important;
    justify-self: center !important;
    align-self: center !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.45rem !important;
    min-width: 1.45rem !important;
    height: 1.45rem !important;
    min-height: 1.45rem !important;
    line-height: 1 !important;
}
.matches-action-menu-panel .matches-action-menu-text {
    grid-column: 2 !important;
    align-self: center !important;
    line-height: 1.2 !important;
}
.matches-action-menu-panel .matches-calendar-state-icon .matches-calendar-svg-glyph,
.matches-action-menu-panel .matches-calendar-state-icon .app-svg-icon--calendar {
    position: relative !important;
    z-index: 1 !important;
    display: block !important;
    width: 1em !important;
    height: 1em !important;
    color: currentColor !important;
    opacity: 1 !important;
}
.matches-action-menu-panel .matches-calendar-halo-ring {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.55rem !important;
    height: 1.55rem !important;
    transform: translate(-50%, -50%) !important;
    border: 2px solid currentColor !important;
    border-radius: 999px !important;
    background: transparent !important;
    box-sizing: border-box !important;
    z-index: 0 !important;
    pointer-events: none !important;
}
.team-profile-icon-link {



    width: 1.35em !important;
    min-width: 1.35em !important;
    height: 1.35em !important;
    min-height: 1.35em !important;
    margin-right: .22em !important;
    border: 1.5px solid currentColor !important;
    border-radius: 999px !important;

    text-decoration: none !important;
    vertical-align: -0.15em !important;

}

.matches-pool-heading-cell .matches-pool-test-wipe-scores-link,
.matches-pool-heading-cell .matches-pool-chat-link,
.matches-pool-heading-cell .matches-pool-availability-link,
.matches-pool-heading-cell .matches-pool-schedule-swal-link {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    vertical-align: middle !important;
    margin-left: .35rem !important;
    line-height: 1 !important;
    white-space: nowrap !important;
}
.matches-pool-heading-cell .app-link-group-pool {
    display: inline-flex !important;
    align-items: center !important;
    vertical-align: middle !important;
    margin-left: .35rem !important;
}


/* ADDED v10717: final match hamburger/pool heading icon alignment cleanup without relocating controls. */
.matches-action-menu-panel,
.matches-action-menu[open] .matches-action-menu-panel {
    --match-menu-icon-col-width: 1.75rem;
}
.matches-action-menu-panel .matches-action-menu-item,
.matches-action-menu-panel a.matches-action-menu-item,
.matches-action-menu[open] .matches-action-menu-item,
.matches-action-menu[open] a.matches-action-menu-item,
.player-matches-page .matches-action-menu-panel .matches-action-menu-item,
.player-matches-page .matches-action-menu-panel a.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item {

    grid-template-columns: var(--match-menu-icon-col-width) minmax(0, max-content) !important;



    min-height: 2.2rem !important;


}
.matches-action-menu-panel .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-state-icon,
.matches-action-menu-panel .matches-scouting-state-icon,
.matches-action-menu[open] .matches-action-menu-icon,
.matches-action-menu[open] .matches-calendar-state-icon,
.matches-action-menu[open] .matches-scouting-state-icon {
    grid-column: 1 !important;
    justify-self: center !important;
    align-self: center !important;
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.45rem !important;
    min-width: 1.45rem !important;
    max-width: 1.45rem !important;
    height: 1.45rem !important;
    min-height: 1.45rem !important;
    max-height: 1.45rem !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
}
.matches-action-menu-panel .matches-action-menu-text,
.matches-action-menu[open] .matches-action-menu-text {
    grid-column: 2 !important;
    justify-self: start !important;
    align-self: center !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.2 !important;
    text-align: left !important;
    white-space: nowrap !important;
}
.matches-action-menu-panel a.matches-calendar-menu-link,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--ready,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--set,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-calendar-menu-link,
.player-matches-page .matches-action-menu-panel a.matches-calendar-menu-link {
    box-shadow: none !important;
    outline: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon {
    box-shadow: none !important;
    outline: 0 !important;
    border: 0 !important;
    background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::after,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link--scheduler .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::before,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .matches-action-menu-icon::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-state-icon .matches-calendar-halo-ring,
.matches-action-menu[open] .matches-calendar-state-icon .matches-calendar-halo-ring {
    display: block !important;
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.45rem !important;
    height: 1.45rem !important;
    transform: translate(-50%, -50%) !important;
    border-width: 2px !important;
    border-style: solid !important;
    border-radius: 999px !important;
    background: transparent !important;
    box-shadow: none !important;
    pointer-events: none !important;
    z-index: 0 !important;
}
.matches-action-menu-panel .matches-calendar-state-icon .matches-calendar-svg-glyph,
.matches-action-menu-panel .matches-calendar-state-icon .app-svg-icon--calendar,
.matches-action-menu[open] .matches-calendar-state-icon .matches-calendar-svg-glyph,
.matches-action-menu[open] .matches-calendar-state-icon .app-svg-icon--calendar {
    display: block !important;
    position: relative !important;
    z-index: 2 !important;
    width: .92rem !important;
    min-width: .92rem !important;
    height: .92rem !important;
    min-height: .92rem !important;
    color: #111827 !important;
    stroke: #111827 !important;
    opacity: 1 !important;
    visibility: visible !important;
}
.matches-pool-heading-cell .matches-pool-heading-line {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    flex-wrap: nowrap !important;
    gap: .35rem !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
    max-width: 100% !important;
}
.matches-pool-heading-cell .matches-pool-heading-label,
.matches-pool-heading-cell .matches-pool-availability-link,
.matches-pool-heading-cell .matches-pool-schedule-swal-link,
.matches-pool-heading-cell .app-link-group-pool,
.matches-pool-heading-cell .matches-pool-chat-link,
.matches-pool-heading-cell .matches-pool-test-wipe-scores-link {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 0 0 auto !important;
    vertical-align: middle !important;
    line-height: 1 !important;
    margin: 0 !important;
    padding: 0 !important;
    white-space: nowrap !important;
}
.matches-pool-heading-cell .app-link-group-pool {
    gap: 0 !important;
}
.matches-pool-heading-cell .matches-pool-availability-icon,
.matches-pool-heading-cell .matches-pool-schedule-icon,
.matches-pool-heading-cell .matches-pool-test-wipe-scores-icon,
.matches-pool-heading-cell .matches-pool-chat-link .app-svg-icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.05rem !important;
    height: 1.05rem !important;
    line-height: 1 !important;
}
.team-profile-icon-link,
.team-profile-name-with-icon .team-profile-icon-link,
.component-team-display .team-profile-icon-link {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35em !important;
    min-width: 1.35em !important;
    height: 1.35em !important;
    min-height: 1.35em !important;
    margin-right: .25em !important;
    border: 1.5px solid currentColor !important;
    border-radius: 999px !important;
    background: #fff !important;
    line-height: 1 !important;
    text-decoration: none !important;
    vertical-align: -0.14em !important;
    box-sizing: border-box !important;
}
.team-profile-icon-link .app-icon,
.team-profile-icon-link .app-svg-icon {
    width: .88em !important;
    min-width: .88em !important;
    height: .88em !important;
    min-height: .88em !important;
}

/* PATCH 10718 - final hamburger menu icon column and completed Schedule halo cleanup.
   The Schedule row uses a real nested circular halo. Legacy status styling must not
   draw a second rounded-rectangle/box-shadow around the icon container. */
.matches-action-menu-panel,
.matches-action-menu[open] .matches-action-menu-panel {
    --match-menu-icon-col-width: 1.8rem;
}
.matches-action-menu-panel .matches-action-menu-item,
.matches-action-menu-panel a.matches-action-menu-item,
.matches-action-menu[open] .matches-action-menu-item,
.matches-action-menu[open] a.matches-action-menu-item,
.player-matches-page .matches-action-menu-panel .matches-action-menu-item,
.player-matches-page .matches-action-menu-panel a.matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel .matches-action-menu-item,
.matches-table.match-layout-table .matches-action-menu-panel a.matches-action-menu-item {
    display: grid !important;
    grid-template-columns: var(--match-menu-icon-col-width) minmax(0, 1fr) !important;
    align-items: center !important;
    justify-content: start !important;
    column-gap: .55rem !important;
    min-height: 2.25rem !important;
    padding: .4rem .75rem .4rem .6rem !important;
    text-align: left !important;
    line-height: 1.2 !important;
}
.matches-action-menu-panel .matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu-panel a.matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu-panel .matches-action-menu-item > .matches-calendar-state-icon,
.matches-action-menu-panel a.matches-action-menu-item > .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item > .matches-scouting-state-icon,
.matches-action-menu-panel a.matches-action-menu-item > .matches-scouting-state-icon,
.matches-action-menu[open] .matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu[open] a.matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu[open] .matches-action-menu-item > .matches-calendar-state-icon,
.matches-action-menu[open] a.matches-action-menu-item > .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item > .matches-scouting-state-icon,
.matches-action-menu[open] a.matches-action-menu-item > .matches-scouting-state-icon {
    grid-column: 1 !important;
    grid-row: 1 !important;
    justify-self: center !important;
    align-self: center !important;
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.45rem !important;
    min-width: 1.45rem !important;
    max-width: 1.45rem !important;
    height: 1.45rem !important;
    min-height: 1.45rem !important;
    max-height: 1.45rem !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    overflow: visible !important;
}
.matches-action-menu-panel .matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu-panel a.matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu[open] .matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu[open] a.matches-action-menu-item > .matches-action-menu-text {
    grid-column: 2 !important;
    grid-row: 1 !important;
    justify-self: start !important;
    align-self: center !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1.2 !important;
    text-align: left !important;
    white-space: nowrap !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--ready .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--set .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-state-icon {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
    border-radius: 999px !important;
    clip-path: none !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon::before,
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-state-icon::after,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-state-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-state-icon::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.matches-action-menu-panel .matches-action-menu-item--calendar .matches-calendar-halo-ring,
.matches-action-menu[open] .matches-action-menu-item--calendar .matches-calendar-halo-ring,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-calendar-halo-ring {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.55rem !important;
    height: 1.55rem !important;
    transform: translate(-50%, -50%) !important;
    border-style: solid !important;
    border-width: 2px !important;
    border-radius: 999px !important;
    background: transparent !important;
    box-shadow: none !important;
    box-sizing: border-box !important;
    z-index: 0 !important;
    pointer-events: none !important;
}
.matches-action-menu-panel .matches-calendar-state-icon .matches-calendar-svg-glyph,
.matches-action-menu-panel .matches-calendar-state-icon .app-svg-icon,
.matches-action-menu[open] .matches-calendar-state-icon .matches-calendar-svg-glyph,
.matches-action-menu[open] .matches-calendar-state-icon .app-svg-icon {
    position: relative !important;
    z-index: 1 !important;
    display: block !important;
    width: 1em !important;
    min-width: 1em !important;
    max-width: 1em !important;
    height: 1em !important;
    min-height: 1em !important;
    max-height: 1em !important;
    color: currentColor !important;
    opacity: 1 !important;
    visibility: visible !important;
}

/* PATCH 10719 - hard override for match hamburger Schedule icon layout.
   Keep the completed Schedule state as one circular halo only and align the
   Schedule row to the same fixed icon/text grid as every other hamburger row. */
.matches-action-menu-panel .matches-action-menu-item,
.matches-action-menu-panel a.matches-action-menu-item,
.matches-action-menu[open] .matches-action-menu-item,
.matches-action-menu[open] a.matches-action-menu-item,
.matches-action-menu-panel .matches-calendar-menu-link,
.matches-action-menu[open] .matches-calendar-menu-link {
    display: grid !important;
    grid-template-columns: 1.8rem minmax(0, 1fr) !important;
    align-items: center !important;
    justify-content: start !important;
    column-gap: .55rem !important;
    text-align: left !important;
}
.matches-action-menu-panel .matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu-panel a.matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-menu-link > .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-menu-link > .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu[open] a.matches-action-menu-item > .matches-action-menu-icon,
.matches-action-menu[open] .matches-calendar-menu-link > .matches-action-menu-icon,
.matches-action-menu[open] .matches-calendar-menu-link > .matches-calendar-state-icon {
    grid-column: 1 !important;
    grid-row: 1 !important;
    justify-self: center !important;
    align-self: center !important;
    margin: 0 !important;
}
.matches-action-menu-panel .matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu-panel a.matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu-panel .matches-calendar-menu-link > .matches-action-menu-text,
.matches-action-menu[open] .matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu[open] a.matches-action-menu-item > .matches-action-menu-text,
.matches-action-menu[open] .matches-calendar-menu-link > .matches-action-menu-text {
    grid-column: 2 !important;
    grid-row: 1 !important;
    justify-self: start !important;
    align-self: center !important;
    margin: 0 !important;
    padding: 0 !important;
    text-align: left !important;
    white-space: nowrap !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete,
.matches-action-menu-panel a.matches-calendar-menu-link.matches-calendar-status--complete,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete,
.matches-action-menu[open] a.matches-calendar-menu-link.matches-calendar-status--complete,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete > .matches-action-menu-icon,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete > .matches-calendar-state-icon,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete > .matches-action-menu-icon,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete > .matches-calendar-state-icon {
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
    border-radius: 0 !important;
    overflow: visible !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::after,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::before,
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::after,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::before,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::after,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::before,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-ring,
.matches-action-menu[open] .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-ring,
.matches-action-menu-panel .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-halo-ring,
.matches-action-menu[open] .matches-action-menu-item--calendar.matches-calendar-status--complete .matches-calendar-halo-ring {
    border-color: rgba(220, 38, 38, .98) !important;
    box-shadow: none !important;
}


/* PATCH 10720 - definitive match hamburger Schedule layout and completed halo cleanup.
   Earlier theme-layer rules reintroduced a scheduler rectangle around the Schedule icon.
   The hamburger row now uses one fixed two-column grid, and the completed state is shown
   only by the explicit nested circular halo. */
body.app-player .matches-action-menu-panel,
body.app-player .matches-action-menu[open] .matches-action-menu-panel,
.player-matches-page .matches-action-menu-panel,
.matches-table.match-layout-table .matches-action-menu-panel {
    --match-menu-icon-col-width: 1.65rem !important;
}
body.app-player .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link),
body.app-player .matches-action-menu[open] .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link),
.player-matches-page .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link),
.matches-table.match-layout-table .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) {








    line-height: 1.2 !important;

}
body.app-player .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon),
body.app-player .matches-action-menu[open] .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon),
.player-matches-page .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon),
.matches-table.match-layout-table .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon) {
    grid-column: 1 !important;
    grid-row: 1 !important;
    justify-self: center !important;
    align-self: center !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.25rem !important;
    min-width: 1.25rem !important;
    max-width: 1.25rem !important;
    height: 1.25rem !important;
    min-height: 1.25rem !important;
    max-height: 1.25rem !important;
    margin: 0 !important;
    padding: 0 !important;
    line-height: 1 !important;
    position: relative !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    border-radius: 999px !important;
    overflow: visible !important;
}

body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete {
    color: var(--player-text-color, #1f2937) !important;
    -webkit-text-fill-color: currentColor !important;
    background: transparent !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    text-decoration: none !important;
}
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon {
    color: var(--player-text-color, #1f2937) !important;
    background: transparent !important;
    background-color: transparent !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    border-radius: 999px !important;
}
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::before,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::after,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::before,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::before,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::after,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::before,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-action-menu-icon::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete > .matches-calendar-state-icon::after {
    content: none !important;
    display: none !important;
    border: 0 !important;
    outline: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
}
body.app-player .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-ring,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-ring,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link.matches-calendar-status--complete .matches-calendar-halo-ring {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 1.55rem !important;
    height: 1.55rem !important;
    transform: translate(-50%, -50%) !important;
    border: 2px solid rgba(220, 38, 38, .98) !important;
    border-radius: 999px !important;
    background: transparent !important;
    box-shadow: none !important;
    pointer-events: none !important;
    z-index: 0 !important;
}
body.app-player .matches-action-menu-panel .matches-calendar-menu-link .app-svg-icon,
body.app-player .matches-action-menu-panel .matches-calendar-menu-link svg,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link .app-svg-icon,
.player-matches-page .matches-action-menu-panel .matches-calendar-menu-link svg,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .app-svg-icon,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link svg {
    position: relative !important;
    z-index: 1 !important;
    display: block !important;
    width: 1em !important;
    height: 1em !important;
}

/* PATCH 10721 - hard stop for Schedule row legacy rectangle and alignment.
   Schedule now renders through .matches-menu-icon-cell, not old scheduler icon classes. */
body.app-player .matches-action-menu-panel,
body.app-player .matches-action-menu[open] .matches-action-menu-panel,
.player-matches-page .matches-action-menu-panel,
.matches-table.match-layout-table .matches-action-menu-panel {
  --match-menu-icon-col-width: 1.85rem !important;
}
body.app-player .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link),
body.app-player .matches-action-menu[open] .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link),
.player-matches-page .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link),
.matches-table.match-layout-table .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) {
  display: grid !important;
  grid-template-columns: var(--match-menu-icon-col-width) max-content !important;
  grid-auto-flow: column !important;
  align-items: center !important;
  justify-content: start !important;
  justify-items: start !important;
  column-gap: .55rem !important;
  min-height: 2.25rem !important;
  padding: .42rem .75rem .42rem .65rem !important;
  text-align: left !important;
  white-space: nowrap !important;
}
body.app-player .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-menu-icon-cell, .matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon),
body.app-player .matches-action-menu[open] .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-menu-icon-cell, .matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon),
.player-matches-page .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-menu-icon-cell, .matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon),
.matches-table.match-layout-table .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > :is(.matches-menu-icon-cell, .matches-action-menu-icon, .matches-calendar-state-icon, .matches-scouting-state-icon) {
  grid-column: 1 !important;
  grid-row: 1 !important;
  justify-self: center !important;
  align-self: center !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 1.32rem !important;
  min-width: 1.32rem !important;
  max-width: 1.32rem !important;
  height: 1.32rem !important;
  min-height: 1.32rem !important;
  max-height: 1.32rem !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border-radius: 999px !important;
  position: relative !important;
  overflow: visible !important;
  line-height: 1 !important;
}
body.app-player .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > .matches-action-menu-text,
body.app-player .matches-action-menu[open] .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > .matches-action-menu-text,
.player-matches-page .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > .matches-action-menu-text,
.matches-table.match-layout-table .matches-action-menu-panel :is(a, button, .matches-action-menu-item, .matches-calendar-menu-link) > .matches-action-menu-text {
  grid-column: 2 !important;
  grid-row: 1 !important;
  justify-self: start !important;
  align-self: center !important;
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  text-indent: 0 !important;
  line-height: 1.2 !important;
  text-align: left !important;
  white-space: nowrap !important;
  width: auto !important;
  min-width: 0 !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell::before,
.matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell::after,
.matches-action-menu[open] .matches-calendar-menu-link .matches-menu-icon-cell::before,
.matches-action-menu[open] .matches-calendar-menu-link .matches-menu-icon-cell::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell::after {
  content: none !important;
  display: none !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell,
.matches-action-menu[open] .matches-calendar-menu-link .matches-menu-icon-cell,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell .matches-calendar-halo-ring,
.matches-action-menu[open] .matches-calendar-menu-link .matches-menu-icon-cell .matches-calendar-halo-ring,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell .matches-calendar-halo-ring {
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  width: 1.55rem !important;
  height: 1.55rem !important;
  transform: translate(-50%, -50%) !important;
  border: 2px solid currentColor !important;
  border-radius: 999px !important;
  background: transparent !important;
  box-shadow: none !important;
  pointer-events: none !important;
  z-index: 0 !important;
}
.matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell .matches-calendar-svg-glyph,
.matches-action-menu[open] .matches-calendar-menu-link .matches-menu-icon-cell .matches-calendar-svg-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell .matches-calendar-svg-glyph,
.matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell svg,
.matches-action-menu[open] .matches-calendar-menu-link .matches-menu-icon-cell svg,
.matches-table.match-layout-table .matches-action-menu-panel .matches-calendar-menu-link .matches-menu-icon-cell svg {
  position: relative !important;
  z-index: 1 !important;
  display: block !important;
  width: 1em !important;
  height: 1em !important;
}

/* PATCH 10722 - dedicated hamburger Schedule row: no legacy calendar rectangle, fixed icon/text alignment. */
body.app-player .matches-action-menu-panel .matches-schedule-menu-link,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link {
  display: grid !important;
  grid-template-columns: 1.85rem max-content !important;
  grid-auto-flow: column !important;
  align-items: center !important;
  justify-content: start !important;
  justify-items: start !important;
  column-gap: .55rem !important;
  min-height: 2.25rem !important;
  padding: .42rem .75rem .42rem .65rem !important;
  margin: 0 !important;
  text-align: left !important;
  white-space: nowrap !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  text-decoration: none !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link::before,
body.app-player .matches-action-menu-panel .matches-schedule-menu-link::after,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link::before,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link::after,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link::before,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link::after {
  content: none !important;
  display: none !important;
  background: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell {
  grid-column: 1 !important;
  grid-row: 1 !important;
  justify-self: center !important;
  align-self: center !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 1.45rem !important;
  min-width: 1.45rem !important;
  max-width: 1.45rem !important;
  height: 1.45rem !important;
  min-height: 1.45rem !important;
  max-height: 1.45rem !important;
  margin: 0 !important;
  padding: 0 !important;
  position: relative !important;
  overflow: visible !important;
  color: var(--player-text-color, #1f2937) !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  border-radius: 999px !important;
  line-height: 1 !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after {
  content: none !important;
  display: none !important;
  background: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text {
  grid-column: 2 !important;
  grid-row: 1 !important;
  justify-self: start !important;
  align-self: center !important;
  display: block !important;
  width: auto !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.2 !important;
  text-align: left !important;
  white-space: nowrap !important;
  transform: none !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring {
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  width: 1.55rem !important;
  height: 1.55rem !important;
  transform: translate(-50%, -50%) !important;
  border-radius: 999px !important;
  background: transparent !important;
  box-shadow: none !important;
  pointer-events: none !important;
  z-index: 0 !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-svg-glyph,
body.app-player .matches-action-menu-panel .matches-schedule-menu-link svg,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-svg-glyph,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link svg,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-svg-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link svg {
  position: relative !important;
  z-index: 1 !important;
  display: block !important;
  width: 1em !important;
  height: 1em !important;
  max-width: 1em !important;
  max-height: 1em !important;
  background: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}

/* PATCH 10722 - Schedule menu isolation and icon/text alignment.
   The Schedule hamburger row must not inherit legacy Calendar/Scheduler status
   classes because those classes draw an offset calendar rectangle in addition
   to the intended circular halo. */
body.app-player .matches-action-menu-panel .matches-schedule-menu-link,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link,
.matches-action-menu-panel .matches-schedule-menu-link {
  display: grid !important;
  grid-template-columns: 1.85rem max-content !important;
  grid-auto-flow: column !important;
  column-gap: .55rem !important;
  align-items: center !important;
  justify-content: start !important;
  justify-items: start !important;
  min-height: 2.25rem !important;
  padding: .42rem .75rem .42rem .65rem !important;
  margin: 0 !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  text-decoration: none !important;
  text-align: left !important;
  white-space: nowrap !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link::before,
body.app-player .matches-action-menu-panel .matches-schedule-menu-link::after,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link::before,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link::after,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link::before,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link::after,
.matches-action-menu-panel .matches-schedule-menu-link::before,
.matches-action-menu-panel .matches-schedule-menu-link::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell,
.matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell {
  grid-column: 1 !important;
  grid-row: 1 !important;
  justify-self: center !important;
  align-self: center !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 1.45rem !important;
  min-width: 1.45rem !important;
  max-width: 1.45rem !important;
  height: 1.45rem !important;
  min-height: 1.45rem !important;
  max-height: 1.45rem !important;
  margin: 0 !important;
  padding: 0 !important;
  position: relative !important;
  overflow: visible !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  border-radius: 999px !important;
  line-height: 1 !important;
  transform: none !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after,
.matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::before,
.matches-action-menu-panel .matches-schedule-menu-link > .matches-menu-icon-cell::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text,
.matches-action-menu-panel .matches-schedule-menu-link > .matches-action-menu-text {
  grid-column: 2 !important;
  grid-row: 1 !important;
  justify-self: start !important;
  align-self: center !important;
  display: block !important;
  width: auto !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.2 !important;
  text-align: left !important;
  white-space: nowrap !important;
  transform: none !important;
  text-indent: 0 !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
body.app-player .matches-action-menu[open] .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring,
.matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-halo-ring {
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  width: 1.55rem !important;
  height: 1.55rem !important;
  transform: translate(-50%, -50%) !important;
  border-width: 2px !important;
  border-style: solid !important;
  border-radius: 999px !important;
  background: transparent !important;
  box-shadow: none !important;
  pointer-events: none !important;
  z-index: 0 !important;
}
body.app-player .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-svg-glyph,
body.app-player .matches-action-menu-panel .matches-schedule-menu-link svg,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-svg-glyph,
.player-matches-page .matches-action-menu-panel .matches-schedule-menu-link svg,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link .matches-calendar-svg-glyph,
.matches-table.match-layout-table .matches-action-menu-panel .matches-schedule-menu-link svg,
.matches-action-menu-panel .matches-schedule-menu-link svg {
  position: relative !important;
  z-index: 1 !important;
  display: block !important;
  width: 1em !important;
  height: 1em !important;
  max-width: 1em !important;
  max-height: 1em !important;
  margin: 0 !important;
  background: transparent !important;
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
}

/* ADDED v10725: inline Challenge Event submit form stays inside the Matches-page SweetAlert. */
.challenge-event-inline-submit {
    margin-top: 1rem;
    text-align: left;
}
.challenge-event-field-label {
    display: block;
    margin-top: .75rem;
    font-weight: 600;
}
.challenge-event-field-label select,
.challenge-event-field-label textarea {
    width: 100%;
    box-sizing: border-box;
    margin-top: .25rem;
}
.challenge-event-select-game--selected {
    outline: 2px solid #2563eb;
    outline-offset: 2px;
}

/* ADDED v10725: highlight legacy Expected outcome values that need to be folded into Details. */
.match-outcome-challenge-legacy-expected-outcome-10725,
.admin-review-legacy-expected-outcome-10725 {
    display: inline-block;
    background: #fff7cc;
    border: 1px solid #f0c94a;
    border-radius: .35rem;
    padding: .2rem .35rem;
}

/* ADDED v10726: compact inline Challenge Event modal summary table and remove redundant Details label. */
.swal2-popup.challenge-event-modal .challenge-event-score-table,
.swal2-container .challenge-event-score-table {
    width: auto;
    max-width: 100%;
    margin: .45rem auto .75rem;
    font-size: .86rem;
    table-layout: auto;
}
.swal2-popup.challenge-event-modal .challenge-event-score-table th,
.swal2-popup.challenge-event-modal .challenge-event-score-table td,
.swal2-container .challenge-event-score-table th,
.swal2-container .challenge-event-score-table td {
    padding: .28rem .38rem;
    line-height: 1.18;
}
.swal2-popup.challenge-event-modal .challenge-event-score-table th:first-child,
.swal2-popup.challenge-event-modal .challenge-event-score-table td:first-child,
.swal2-popup.challenge-event-modal .challenge-event-score-table .challenge-event-score-team-col,
.swal2-container .challenge-event-score-table th:first-child,
.swal2-container .challenge-event-score-table td:first-child,
.swal2-container .challenge-event-score-table .challenge-event-score-team-col {
    width: auto;
    min-width: 8.5rem;
    max-width: 12.5rem;
}
.swal2-popup.challenge-event-modal .challenge-event-result-button--small,
.swal2-container .challenge-event-result-button--small {
    margin-top: .18rem;
    padding: .16rem .34rem;
    font-size: .72rem;
    min-height: 1.55rem;
}
.swal2-popup.challenge-event-modal .challenge-event-field-label--details-10726,
.swal2-container .challenge-event-field-label--details-10726 {
    margin-top: .55rem;
}
.swal2-popup.challenge-event-modal .challenge-event-field-label--details-10726 textarea,
.swal2-container .challenge-event-field-label--details-10726 textarea {
    margin-top: 0;
}
@media (max-width: 640px) {
    .swal2-popup.challenge-event-modal .challenge-event-score-table,
    .swal2-container .challenge-event-score-table {
        font-size: .8rem;
    }
    .swal2-popup.challenge-event-modal .challenge-event-score-table th,
    .swal2-popup.challenge-event-modal .challenge-event-score-table td,
    .swal2-container .challenge-event-score-table th,
    .swal2-container .challenge-event-score-table td {
        padding: .22rem .28rem;
    }
    .swal2-popup.challenge-event-modal .challenge-event-score-table th:first-child,
    .swal2-popup.challenge-event-modal .challenge-event-score-table td:first-child,
    .swal2-popup.challenge-event-modal .challenge-event-score-table .challenge-event-score-team-col,
    .swal2-container .challenge-event-score-table th:first-child,
    .swal2-container .challenge-event-score-table td:first-child,
    .swal2-container .challenge-event-score-table .challenge-event-score-team-col {
        min-width: 6.75rem;
        max-width: 9.25rem;
    }
}

/* ADDED v10729: compact inline Challenge Event checkbox selector. */
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-posted-results-title {
    margin: 0 0 0.35rem 0;
    font-size: 1.05rem;
    line-height: 1.2;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect,
.swal2-container .challenge-event-score-table--checkselect {
    width: auto !important;
    max-width: 100% !important;
    margin: 0 auto 0.75rem auto !important;
    font-size: 0.9rem !important;
    table-layout: auto !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect th,
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect td,
.swal2-container .challenge-event-score-table--checkselect th,
.swal2-container .challenge-event-score-table--checkselect td {
    padding: 0.28rem 0.42rem !important;
    line-height: 1.15 !important;
    text-align: center !important;
    vertical-align: middle !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect th:first-child,
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect td:first-child,
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-team-cell,
.swal2-container .challenge-event-score-table--checkselect th:first-child,
.swal2-container .challenge-event-score-table--checkselect td:first-child,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-team-cell {
    width: auto !important;
    min-width: 7.5rem !important;
    max-width: 12rem !important;
    text-align: left !important;
    white-space: normal !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-select-row-label,
.swal2-container .challenge-event-select-row-label {
    font-weight: 600 !important;
    color: var(--color-text-muted, #4b5563) !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-select-check-cell,
.swal2-container .challenge-event-select-check-cell {
    background: var(--color-surface-muted, #f5f7fa) !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-check-label,
.swal2-container .challenge-event-game-check-label {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.7rem !important;

    margin: 0 !important;
    cursor: pointer !important;
    position: relative !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-check-label input,
.swal2-container .challenge-event-game-check-label input {
    position: absolute !important;
    opacity: 0 !important;
    width: 1px !important;
    height: 1px !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-checkmark,
.swal2-container .challenge-event-checkmark {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.35rem !important;
    height: 1.35rem !important;
    border: 2px solid var(--color-border-strong, #94a3b8) !important;
    border-radius: 999px !important;
    color: transparent !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    background: var(--color-white, #fff) !important;
    box-sizing: border-box !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-check-label input:checked + .challenge-event-checkmark,
.swal2-container .challenge-event-game-check-label input:checked + .challenge-event-checkmark {
    color: var(--color-white, #fff) !important;
    background: var(--color-action-primary, #1f58a8) !important;
    border-color: var(--color-action-primary, #1f58a8) !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-check-label input:disabled + .challenge-event-checkmark,
.swal2-container .challenge-event-game-check-label input:disabled + .challenge-event-checkmark {
    opacity: 0.38 !important;
    cursor: not-allowed !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-inline-submit,
.swal2-container .challenge-event-inline-submit {
    margin-top: 0.25rem !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-reason-row[hidden],
.swal2-container .challenge-event-reason-row[hidden] {
    display: none !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-field-label--details-10726 textarea,
.swal2-container .challenge-event-field-label--details-10726 textarea {
    min-height: 5.5rem !important;
}

/* ADDED v10730: Keep compact Challenge Event checkbox labels on one line. */
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-check-label,
.swal2-container .challenge-event-game-check-label {
    width: auto !important;
    min-width: 3.25rem !important;
    height: 1.7rem !important;
    gap: 0.25rem !important;
    white-space: nowrap !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-label,
.swal2-container .challenge-event-game-label {
    display: inline-block !important;
    white-space: nowrap !important;
    line-height: 1 !important;
}

/* ADDED v10731: Challenge Event modal moves game selectors into the header row and keeps compact labels unwrapped. */
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-select-th,
.swal2-container .challenge-event-game-select-th {
    white-space: nowrap !important;
    min-width: 4.25rem !important;
    width: 4.25rem !important;
    text-align: center !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-select-th .challenge-event-game-check-label,
.swal2-container .challenge-event-game-select-th .challenge-event-game-check-label {
    display: inline-flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 0.28rem !important;
    width: auto !important;
    min-width: 0 !important;
    height: 1.45rem !important;
    white-space: nowrap !important;
    vertical-align: middle !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-select-th .challenge-event-game-label,
.swal2-container .challenge-event-game-select-th .challenge-event-game-label {
    order: 1 !important;
    display: inline-block !important;
    white-space: nowrap !important;
    line-height: 1 !important;
    vertical-align: middle !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-game-select-th .challenge-event-checkmark,
.swal2-container .challenge-event-game-select-th .challenge-event-checkmark {
    order: 2 !important;
    width: 1.18rem !important;
    height: 1.18rem !important;
    flex: 0 0 1.18rem !important;
}


/* ADDED v10732: Hard-stop Challenge Event game selector wrapping inside SweetAlert. */
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-game-select-th,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-game-select-th {
    min-width: 5.6rem !important;
    width: 5.6rem !important;
    max-width: 5.6rem !important;
    white-space: nowrap !important;
    word-break: keep-all !important;
    overflow-wrap: normal !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-game-select-th .challenge-event-game-check-label,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-game-select-th .challenge-event-game-check-label {
    display: inline-grid !important;

    column-gap: 0.3rem !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 4.1rem !important;
    width: 4.1rem !important;

    word-break: keep-all !important;
    overflow-wrap: normal !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-game-label,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-game-label {
    display: inline-block !important;
    min-width: 1.6rem !important;




    letter-spacing: 0 !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-checkmark,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-checkmark {
    display: inline-flex !important;
    flex: 0 0 1.18rem !important;
}

/* ADDED v10733: Challenge Event header selectors use compact G1/G2/G3 labels and square checkboxes. */
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-game-label,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-game-label {
    min-width: 1.35rem !important;
    text-align: right !important;
    white-space: nowrap !important;
    word-break: keep-all !important;
    overflow-wrap: normal !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-game-select-th .challenge-event-game-check-label,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-game-select-th .challenge-event-game-check-label {
    grid-template-columns: auto 1.18rem !important;
    min-width: 3.35rem !important;
    width: 3.35rem !important;
    white-space: nowrap !important;
}
.swal2-popup.challenge-event-modal--compact-10729 .challenge-event-score-table--checkselect .challenge-event-checkmark,
.swal2-container .challenge-event-score-table--checkselect .challenge-event-checkmark {
    border-radius: 0.22rem !important;
}

/** ADDED v10741: Give inline SVG app icons their own color language so they do not flatten into adjacent link text. */
.app-svg-icon--calendar { color: #2563eb !important; stroke: #2563eb !important; }
.app-svg-icon--calendar rect { fill: rgba(37, 99, 235, .12) !important; }
.app-svg-icon--clock { color: #b45309 !important; stroke: #b45309 !important; }
.app-svg-icon--clock circle { fill: rgba(180, 83, 9, .12) !important; }
.app-svg-icon--chat { color: #0f766e !important; stroke: #0f766e !important; }
.app-svg-icon--chat path { fill: rgba(15, 118, 110, .10) !important; }
.app-svg-icon--broom { color: #7c3aed !important; stroke: #7c3aed !important; }
.app-svg-icon--menu { color: #4b5563 !important; stroke: #4b5563 !important; }
.app-svg-icon--note { color: #7c3aed !important; stroke: #7c3aed !important; }
.app-svg-icon--note path:first-of-type { fill: rgba(124, 58, 237, .10) !important; }
.app-svg-icon--warning { color: #dc2626 !important; stroke: #dc2626 !important; }
.app-svg-icon--warning path:first-of-type { fill: rgba(220, 38, 38, .12) !important; }
.app-svg-icon--copy { color: #475569 !important; stroke: #475569 !important; }
.app-svg-icon--copy rect { fill: rgba(71, 85, 105, .10) !important; }
.app-svg-icon--stats { color: #4f46e5 !important; stroke: #4f46e5 !important; }
.app-svg-icon--stats rect { fill: rgba(79, 70, 229, .20) !important; }
.app-svg-icon--movement,
.app-svg-icon--movement-up,
.app-svg-icon--movement-down,
.app-svg-icon--movement-same,
.app-svg-icon--movement-entered,
.app-svg-icon--movement-out,
.app-svg-icon--movement-none { color: #7c2d12 !important; stroke: #7c2d12 !important; }
.app-svg-icon--team-profile { color: #0d9488 !important; stroke: #0d9488 !important; }
.app-svg-icon--team-profile circle { fill: rgba(13, 148, 136, .14) !important; }
.app-svg-icon--void-forfeit { color: #b91c1c !important; stroke: #b91c1c !important; }
.app-svg-icon--void-forfeit circle { fill: rgba(185, 28, 28, .10) !important; }
.app-svg-icon--substitution { color: #0369a1 !important; stroke: #0369a1 !important; }
.app-svg-icon--substitution circle { fill: rgba(3, 105, 161, .12) !important; }
.app-svg-icon--challenge { color: #c2410c !important; stroke: #c2410c !important; }
.app-svg-icon--challenge path:nth-of-type(2) { fill: rgba(251, 146, 60, .24) !important; }

/** CHANGED v10741: Explain Stats is an informational icon, not a green action button. */
.explainstats {
    color: #4f46e5 !important;
    background: #eef2ff !important;
    border: 1px solid rgba(79, 70, 229, .45) !important;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .85) inset !important;
    text-decoration: none !important;
}
.explainstats:hover,
.explainstats:focus {
    color: #3730a3 !important;
    background: #e0e7ff !important;
    border-color: rgba(55, 48, 163, .65) !important;
    text-decoration: none !important;
}
.explainstats .app-svg-icon--stats,
.explainstats svg {
    color: #4f46e5 !important;
    stroke: #4f46e5 !important;
}
.explainstats .app-svg-icon--stats rect,
.explainstats svg rect {
    fill: rgba(79, 70, 229, .22) !important;
}

/** ADDED v10741: Keep icon-only action links distinct from adjacent text links. */
.team-profile-icon-link,
.teams-round-movement-toggle,
.matches-pool-chat-link,
.matches-pool-availability-link,
.matches-pool-schedule-swal-link,
.matches-pool-test-wipe-scores-link,
.match-outcome-challenge-link {
    text-decoration: none !important;
}


/** ADDED v10758: consistent subtle hover highlight for inline SVG action icons. */
:where(a, button, summary, .matches-action-menu-item, .team-profile-icon-link, .teams-round-movement-toggle, .match-outcome-challenge-link):has(.app-svg-icon):not(.matches-action-menu-item--disabled) {
    transition: background-color .14s ease, border-color .14s ease, box-shadow .14s ease, color .14s ease;
}
:where(a, button, summary, .matches-action-menu-item, .team-profile-icon-link, .teams-round-movement-toggle, .match-outcome-challenge-link):has(.app-svg-icon):not(.matches-action-menu-item--disabled):hover,
:where(a, button, summary, .matches-action-menu-item, .team-profile-icon-link, .teams-round-movement-toggle, .match-outcome-challenge-link):has(.app-svg-icon):not(.matches-action-menu-item--disabled):focus-visible {
    background-color: rgba(79, 70, 229, .08);
    border-color: rgba(79, 70, 229, .24);
    box-shadow: 0 0 0 1px rgba(79, 70, 229, .08) inset;
    text-decoration: none;
}
:where(a, button, summary, .matches-action-menu-item, .team-profile-icon-link, .teams-round-movement-toggle, .match-outcome-challenge-link):has(.app-svg-icon):not(.matches-action-menu-item--disabled):hover .app-svg-icon,
:where(a, button, summary, .matches-action-menu-item, .team-profile-icon-link, .teams-round-movement-toggle, .match-outcome-challenge-link):has(.app-svg-icon):not(.matches-action-menu-item--disabled):focus-visible .app-svg-icon {
    filter: drop-shadow(0 1px 2px rgba(15, 23, 42, .14));
}
.matches-action-menu-toggle:has(.app-svg-icon):hover,
.matches-action-menu-toggle:has(.app-svg-icon):focus-visible {
    border-radius: .5rem;
}



/* ADDED v10748: state-aware hamburger rows use disabled-with-reason instead of hiding feature-capable actions. */
.matches-action-menu-panel .matches-action-menu-item--disabled,
.matches-action-menu[open] .matches-action-menu-item--disabled {
    cursor: not-allowed;
    opacity: .58;
    color: #64748b;
    text-decoration: none;
}
.matches-action-menu-panel .matches-action-menu-reason,
.matches-action-menu[open] .matches-action-menu-reason {
    display: block;
    font-size: 11px;
    line-height: 1.2;
    margin-left: auto;
    max-width: 13rem;
    text-align: right;
    color: #64748b;
    white-space: normal;
}
.matches-action-menu-panel .matches-action-menu-item--enter-scores,
.matches-action-menu[open] .matches-action-menu-item--enter-scores {
    font-weight: 700;
}


/** ADDED v10762: Match Team Profile icon hover footprint to Team Movement and add breathing room before names. */
.team-profile-icon-link {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 1.45em !important;
    min-width: 1.45em !important;
    max-width: 1.45em !important;
    height: 1.45em !important;
    min-height: 1.45em !important;
    max-height: 1.45em !important;
    padding: 0 !important;
    border-radius: 50% !important;
    line-height: 1 !important;
    box-sizing: border-box !important;
    flex: 0 0 1.45em !important;
    text-align: center !important;
}
.team-profile-icon-link .app-icon,
.team-profile-icon-link .app-svg-icon,
.team-profile-icon-link svg {
    width: 1em !important;
    height: 1em !important;
    min-width: 1em !important;
    min-height: 1em !important;
    max-width: 1em !important;
    max-height: 1em !important;
    display: block !important;
}
.team-profile-icon-link:hover,
.team-profile-icon-link:focus-visible {
    background-color: rgba(79, 70, 229, .08) !important;
    border-color: rgba(79, 70, 229, .24) !important;
    box-shadow: 0 0 0 1px rgba(79, 70, 229, .08) inset !important;
    text-decoration: none !important;
}
.team-profile-name-with-icon,
.matches-team-profile-line,
.team-profile-linked-team {
    gap: 0.22rem !important;
}
.stats-team-cell .team-profile-icon-link,
.matches-team-profile-line .team-profile-icon-link,
.team-profile-linked-team .team-profile-icon-link,
.team-profile-inline-icon {
    margin-right: 0.18rem !important;
}

/* ADDED v10776: true corner-to-corner scheduled-match split using dynamic team colours. */
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match,
.calendar-scheduled-two-match-band {
    position: relative;
    overflow: hidden;
    background: transparent !important;
}
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match::before,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match::before,
.calendar-scheduled-two-match-band::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: var(--calendar-scheduled-team-a, transparent);
    clip-path: polygon(0 0, 100% 0, 0 100%);
}
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match::after,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match::after,
.calendar-scheduled-two-match-band::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: var(--calendar-scheduled-team-b, transparent);
    clip-path: polygon(100% 0, 100% 100%, 0 100%);
}
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match > *,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match > *,
.calendar-scheduled-two-match-band > * {
    position: relative;
    z-index: 1;
}


/* ADDED v10777: explicit scheduled-match triangle layers ensure both dynamic team colours render in every calendar context. */
.calendar-scheduled-match-triangle {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
    pointer-events: none !important;
    z-index: 0 !important;
}
.calendar-scheduled-match-triangle--a {
    clip-path: polygon(0 0, 100% 0, 0 100%) !important;
}
.calendar-scheduled-match-triangle--b {
    clip-path: polygon(100% 0, 100% 100%, 0 100%) !important;
}
.table-calendar td.component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match > .calendar-scheduled-match-triangle,
.table-calendar .component-player-calendar-hour-cell.calendar-scheduled-protected-cell.calendar-cell-has-scheduled-match > .calendar-scheduled-match-triangle,
.calendar-scheduled-two-match-band > .calendar-scheduled-match-triangle {
    position: absolute !important;
    z-index: 0 !important;
}

/* ADDED v10778: Lightweight, provider-neutral location picker replaces the legacy map-heavy scheduler picker. */
.match-scheduler-location-picker--lightweight {
    display: grid;
    gap: 0.55rem;
}
.match-scheduler-location-select {
    width: 100%;
    min-height: 2.4rem;
}
.match-scheduler-location-details {
    border: 1px solid rgba(100,116,139,0.28);
    border-radius: 0.55rem;
    background: rgba(248,250,252,0.85);
    padding: 0.65rem 0.75rem;
    display: grid;
    gap: 0.2rem;
    text-align: left;
}
.match-scheduler-location-details span {
    color: #475569;
}
.match-scheduler-location-link-wrap {
    text-align: left;
    font-size: 0.95rem;
}


/* ADDED v10788: compact Update Location modal displays locked date/time as plain text. */
.match-scheduler-field--datetime-readonly {
    align-items: center;
}
.match-scheduler-readonly-datetime {
    display: inline-flex;
    min-height: 2.35rem;
    align-items: center;
    font-weight: 600;
    color: #334155;
}

/* ADDED v10789: compact autocomplete layout for Update Location modal. */
.match-scheduler-location-picker--autocomplete {
    gap: 0.35rem;
}
.match-scheduler-field--facility-unlabeled {
    display: block !important;
    text-align: center !important;
}
.match-scheduler-field--facility-unlabeled .match-scheduler-location-picker {
    width: min(100%, 34rem);
    margin: 0 auto;
}
.match-scheduler-facility-select {
    width: 100%;
    margin-bottom: 0.4rem;
    font: inherit;
}
.match-scheduler-location-search-row {

    grid-template-columns: minmax(0, 1fr) auto;


}
.match-scheduler-location-search-input {

    min-height: 2.4rem;
}
.match-scheduler-map-icon-link {
    width: 2.45rem;
    height: 2.45rem;
    border: 1px solid rgba(100,116,139,0.35);
    border-radius: 0.55rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    background: rgba(248,250,252,0.95);
    color: #334155;
}
.match-scheduler-map-icon-link:hover,
.match-scheduler-map-icon-link:focus {
    background: rgba(226,232,240,0.95);
    color: #0f172a;
}
.match-scheduler-map-link-empty {
    opacity: 0.45;
    pointer-events: none;
}
.match-scheduler-map-icon-svg {
    width: 1.18rem;
    height: 1.18rem;
    fill: currentColor;
}
.match-scheduler-location-results {
    display: grid;
    gap: 0.25rem;
    max-height: 12rem;
    overflow: auto;
}
.match-scheduler-location-result {

    border: 1px solid rgba(100,116,139,0.22);
    border-radius: 0.45rem;
    background: rgba(255,255,255,0.92);
    padding: 0.45rem 0.55rem;
    text-align: left;
    cursor: pointer;
}
.match-scheduler-location-result span,
.match-scheduler-location-result small {
    display: block;
}
.match-scheduler-location-result small {
    color: #64748b;
    margin-top: 0.12rem;
}
.match-scheduler-location-result:hover,
.match-scheduler-location-result:focus,
.match-scheduler-location-result--selected {
    border-color: rgba(37,99,235,0.55);
    background: rgba(239,246,255,0.95);
}
.match-scheduler-location-result-empty {
    color: #64748b;
    font-size: 0.92rem;
    padding: 0.35rem 0.1rem;
}
.match-scheduler-schedule-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(8rem, 11rem);
    gap: 0.75rem;
    align-items: start;
}
.match-scheduler-field--court-compact select,
.match-scheduler-field--court-compact input {
    width: 100%;

}
.match-scheduler-field--court-compact .match-scheduler-court-meta {
    display: block;
    font-size: 0.78rem;
    line-height: 1.15;
}
@media (max-width: 640px) {
    .match-scheduler-schedule-row {
        grid-template-columns: 1fr;
    }
}


/* CHANGED v10790: tighten Update Location autocomplete and schedule/court layout. */
.swal2-popup.match-scheduler-swal:has(.match-scheduler-modal) {
    width: min(660px, calc(100vw - 1.25rem)) !important;
    max-width: min(660px, calc(100vw - 1.25rem)) !important;
}
.match-scheduler-location-results {
    max-height: 11rem;


}
.match-scheduler-location-result,
.match-scheduler-location-result:visited {
    color: #0f172a !important;
    display: block;
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
    white-space: normal;
    overflow: hidden;
    line-height: 1.25;
}
.match-scheduler-location-result-inner,
.match-scheduler-location-result-name,
.match-scheduler-location-result-address {
    display: block;
    min-width: 0;
    max-width: 100%;
    color: inherit !important;


    word-break: normal;
}
.match-scheduler-location-result-name {
    font-weight: 650;
}
.match-scheduler-location-result-address {
    color: #475569 !important;
    margin-top: 0.14rem;
    line-height: 1.2;
}
.match-scheduler-location-result:hover,
.match-scheduler-location-result:focus,
.match-scheduler-location-result--selected {
    color: #0f172a !important;
}
.match-scheduler-schedule-row {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 0.85rem;
    flex-wrap: wrap;
}
.match-scheduler-schedule-row .match-scheduler-field--datetime-readonly {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    flex: 1 1 auto;
    min-width: min(18rem, 100%);
    margin: 0.35rem 0;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact {


    gap: 0.45rem;

    min-width: 0;
    max-width: 100%;
    margin: 0.35rem 0;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact .match-scheduler-court-control {
    display: inline-flex;
    min-width: 0;
    max-width: 8.5rem;
}
.match-scheduler-field--court-compact select,
.match-scheduler-field--court-compact input {
    width: auto;
    min-width: 0;
    max-width: 8.5rem;
    box-sizing: border-box;
}
.match-scheduler-field--court-compact input:disabled {
    width: 7.25rem;
    max-width: 7.25rem;

}
.match-scheduler-field--court-compact .match-scheduler-court-meta {
    display: none;
}
@media (max-width: 640px) {

    .match-scheduler-schedule-row {
        align-items: stretch;
    }
    .match-scheduler-schedule-row .match-scheduler-field--datetime-readonly,
    .match-scheduler-schedule-row .match-scheduler-field--court-compact {
        width: 100%;
        flex: 1 1 100%;
    }
}

/* CHANGED v10791: final compact Update Location layout with unlabeled facility/date rows, centered calendar links, inline court info, and facility notes icon. */
.swal2-popup.match-scheduler-swal:has(.match-scheduler-modal) {
    width: min(600px, calc(100vw - 1.25rem)) !important;
    max-width: min(600px, calc(100vw - 1.25rem)) !important;
}
.match-scheduler-field--facility-unlabeled {
    display: block;
    margin: 0.35rem auto 0.55rem;
}
.match-scheduler-field--facility-unlabeled > span {
    display: none !important;
}
.match-scheduler-location-search-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 0.45rem;
    align-items: center;
}
.match-scheduler-notes-icon-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.55rem;
    height: 2.55rem;
    border: 1px solid rgba(148,163,184,0.45);
    border-radius: 0.5rem;
    background: rgba(248,250,252,0.95);
    color: #334155;
    cursor: pointer;
}
.match-scheduler-notes-icon-link:hover,
.match-scheduler-notes-icon-link:focus {
    background: rgba(226,232,240,0.95);
    color: #0f172a;
}
.match-scheduler-notes-icon-svg {
    width: 1.12rem;
    height: 1.12rem;
    fill: currentColor;
}
.match-scheduler-location-result-empty:empty,
.match-scheduler-location-results:empty {
    display: none !important;
}
.match-scheduler-schedule-row {
    justify-content: center;
    gap: 0.45rem;
    margin: 0.75rem auto 0.6rem;
}
.match-scheduler-schedule-row .match-scheduler-field--datetime-readonly {
    flex: 0 1 auto;
    min-width: 0;
    margin: 0;
}
.match-scheduler-readonly-datetime {
    white-space: nowrap;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact {
    flex: 0 1 auto;
    margin: 0;
    white-space: nowrap;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact .match-scheduler-court-control {
    max-width: 10rem;
}
.match-scheduler-field--court-compact select,
.match-scheduler-field--court-compact input {
    max-width: 10rem;
}
.match-scheduler-field--court-compact input:disabled {
    width: auto;
    max-width: 12rem;
    min-width: 0;
    text-overflow: ellipsis;
}
.match-scheduler-calendar-link-wrap {
    text-align: center;
    justify-content: center;
    margin-left: auto;
    margin-right: auto;
}
.match-scheduler-facility-notes-swal {
    text-align: left;

    white-space: normal;
}
@media (max-width: 640px) {
    .swal2-popup.match-scheduler-swal:has(.match-scheduler-modal) {
        width: calc(100vw - 1.25rem) !important;
        max-width: calc(100vw - 1.25rem) !important;
    }
    .match-scheduler-location-search-row {
        grid-template-columns: minmax(0, 1fr) auto auto;
    }
    .match-scheduler-schedule-row {
        justify-content: flex-start;
        align-items: center;
    }
    .match-scheduler-schedule-row .match-scheduler-field--datetime-readonly,
    .match-scheduler-schedule-row .match-scheduler-field--court-compact {
        width: auto;
        flex: 0 1 auto;
    }
    .match-scheduler-readonly-datetime {
        white-space: normal;
    }
}


/* ADDED v10792: Update Location modal polish. */
.match-scheduler-schedule-row .match-scheduler-field--court-compact {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact > span:first-child {
    margin-right: 0.25rem;
    white-space: nowrap;
}
.match-scheduler-notes-icon-link {
    width: 2.85rem;
    height: 2.85rem;
}
.match-scheduler-notes-icon-svg {
    width: 1.42rem;
    height: 1.42rem;
}
.match-scheduler-notes-overlay-10792 {
    position: fixed;
    inset: 0;
    z-index: 20010;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.35);
}
.match-scheduler-notes-dialog-10792 {
    position: relative;
    width: min(420px, calc(100vw - 2rem));
    max-height: min(70vh, 560px);
    overflow: auto;
    border-radius: 0.85rem;
    background: #fff;
    color: #111827;
    box-shadow: 0 1.25rem 3rem rgba(15, 23, 42, 0.28);
    padding: 1.2rem 1.25rem 1rem;
    text-align: left;
}
.match-scheduler-notes-dialog-10792 h2 {
    margin: 0 2rem 0.85rem 0;
    font-size: 1.35rem;
    line-height: 1.2;
    color: #334155;
}
.match-scheduler-notes-close-10792 {
    position: absolute;
    right: 0.75rem;
    top: 0.6rem;
    width: 2rem;
    height: 2rem;
    border: 0;
    background: transparent;
    font-size: 1.65rem;
    line-height: 1;
    cursor: pointer;
    color: #334155;
}
.match-scheduler-notes-ok-10792 {
    display: block;
    width: 100%;
    margin: 1rem 0 0;
    border: 0;
    border-radius: 0.5rem;
    padding: 0.7rem 1rem;
    background: #3085d6;
    color: #fff;
    font-weight: 700;
    cursor: pointer;
}
.match-scheduler-facility-notes-swal {
    color: #111827;
    font-size: 1rem;
    line-height: 1.45;
}


/* ADDED v10793: Update Location autocomplete result rendering/search layout fixes. */
.swal2-popup.match-scheduler-swal:has(.match-scheduler-modal) .swal2-html-container {
    overflow: visible !important;
}
.match-scheduler-location-results {
    display: block;
    max-height: min(18rem, 42vh);
    overflow-y: auto;
    overflow-x: hidden;
    padding: 0.1rem 0.1rem 0.2rem;
    margin-top: 0.35rem;

}
.match-scheduler-location-result {
    display: block;
    width: 100%;
    min-height: 3.15rem;
    height: auto;
    margin: 0 0 0.3rem;
    overflow: visible;
    box-sizing: border-box;
}
.match-scheduler-location-result:last-child {
    margin-bottom: 0;
}
.match-scheduler-location-result-inner,
.match-scheduler-location-result-name,
.match-scheduler-location-result-address {
    overflow: visible;
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.22;
}
.match-scheduler-location-result-name {
    color: #020617 !important;
}
.match-scheduler-location-result-address {
    color: #334155 !important;
    font-size: 0.82rem;
}
.match-scheduler-location-result-empty {
    margin-top: 0.25rem;
}
@media (max-height: 760px) {
    .match-scheduler-location-results {
        max-height: min(14rem, 34vh);
    }
}


/* ADDED v10794: Update Location autocomplete distance-order polish and notes-icon sizing fixes. */
.match-scheduler-field--facility-unlabeled {
    width: min(100%, 24.75rem);
    max-width: 24.75rem;
}
.match-scheduler-location-search-row {

    grid-template-columns: minmax(0, 1fr) 2.7rem 2.7rem;

}
.match-scheduler-location-search-input {
    min-width: 0;

}
.match-scheduler-map-icon-link,
.match-scheduler-notes-icon-link {
    width: 2.7rem;
    height: 2.7rem;
    min-width: 2.7rem;
    min-height: 2.7rem;

}
.match-scheduler-notes-icon-svg {
    width: 1.72rem;
    height: 1.72rem;
}
.match-scheduler-schedule-row {
    gap: 1.25rem;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact {
    gap: 0.82rem;
}
.match-scheduler-schedule-row .match-scheduler-field--court-compact > span:first-child {
    margin-right: 0.1rem;
}
.match-scheduler-location-results {
    width: 100%;
    box-sizing: border-box;
}



/* ADDED v10795: Update Location icon row sizing and empty-result suppression. */
.match-scheduler-field--facility-unlabeled {
    width: min(100%, 26rem);
    max-width: 26rem;
}
.match-scheduler-location-search-row {
    width: 100%;
    grid-template-columns: minmax(0, 1fr) 2.9rem 2.9rem;
    gap: 0.48rem;
}
.match-scheduler-location-search-input {
    min-height: 2.9rem;
}
.match-scheduler-map-icon-link,
.match-scheduler-notes-icon-link {
    width: 2.9rem;
    height: 2.9rem;
    min-width: 2.9rem;
    min-height: 2.9rem;

}
.match-scheduler-map-icon-svg,
.match-scheduler-notes-icon-svg {
    width: 1.9rem;
    height: 1.9rem;
}
.match-scheduler-location-result-empty {
    display: none !important;
}



/* ADDED v10796: Correct Update Location search/input/icon sizing. Increase only the usable input column while restoring icon wrappers and SVGs to standard sizing. */
.match-scheduler-field--facility-unlabeled {
    width: min(100%, 25.2rem);
    max-width: 25.2rem;
}







/** CHANGED v2026-08-24: Keep the searchable facility field the same visual
 * width as the facility dropdown while retaining the map and notes actions. */
.match-scheduler-location-search-row {
    position: relative;
    display: block;
}
.match-scheduler-field--facility-unlabeled .match-scheduler-facility-picker {
    width: 100%;
    max-width: 29.3rem;
    margin-inline: auto;
}
.match-scheduler-facility-select,
.match-scheduler-location-search-input {
    box-sizing: border-box;
    width: 100%;
    margin-inline: auto;
}





.team-profile-game-history-cell-score9980 {
    text-align: center !important;
    vertical-align: middle !important;
}
.team-profile-game-history-cell-score9980 .player-status-badge {
    display: inline-flex;


    width: auto;

}





/* ADDED v10797: Increase only Update Location facility search input usable width by approximately 10%; preserve icon wrapper and SVG sizing from v10796. */
.match-scheduler-field--facility-unlabeled {
    width: min(100%, 27.15rem);
    max-width: 27.15rem;
}

.match-scheduler-location-search-input {
    width: 100%;



}





/* ADDED v10798: Increase only Update Location facility search input usable width by approximately another 10%; preserve icon wrapper and SVG sizing from v10796/v10797. */
.match-scheduler-field--facility-unlabeled {
    width: min(100%, 29.3rem);
    max-width: 29.3rem;
}
.match-scheduler-location-search-row {


    width: 100% !important;
    grid-template-columns: minmax(0, 1fr) 2.45rem 2.45rem;
    gap: 0.42rem;
}
.match-scheduler-location-search-input {

    min-height: 2.45rem;
    height: 2.45rem;
    box-sizing: border-box;
    padding-right: 5.4rem;
    font: inherit;
}
.match-scheduler-location-search-row .match-scheduler-map-icon-link,
.match-scheduler-location-search-row .match-scheduler-notes-icon-link {
    position: absolute;
    top: 0.18rem;
    z-index: 1;
}
.match-scheduler-location-search-row .match-scheduler-map-icon-link { right: 2.75rem; }
.match-scheduler-location-search-row .match-scheduler-notes-icon-link { right: 0; }
.match-scheduler-modal .match-scheduler-field--datetime input[type='date'],
.match-scheduler-modal .match-scheduler-field--datetime select {
    font-family: inherit;
    font-size: 1rem;
    line-height: 1.25;
}
.match-scheduler-map-icon-link,
.match-scheduler-notes-icon-link {
    width: 2.45rem;
    height: 2.45rem;
    min-width: 2.45rem;
    min-height: 2.45rem;
    box-sizing: border-box;
}
.match-scheduler-map-icon-svg,
.match-scheduler-notes-icon-svg {
    width: 1.18rem;
    height: 1.18rem;
}
@media (max-width: 640px) {
    .match-scheduler-field--facility-unlabeled {
        width: 100%;
        max-width: 100%;
    }
}


/** CHANGED v10803: Keep the six OTP input boxes centered in the verification-code card after broad player input overrides. */
.verification-code-box-row,
body.app-player .verification-code-box-row {
    justify-content: center;
    margin-left: auto;
    margin-right: auto;
}


/** CHANGED v11314: phone mask helper, blur validation, and native country-code selection without image assets. */
.phone-entry-control-10825 {
    display: grid;
    grid-template-columns: minmax(7.5rem, max-content) minmax(13ch, 22ch);
    gap: .5rem;
    align-items: center;
    justify-content: start;
}

body.app-player .profile-phone-split.phone-entry-control-10825 {
    display: grid;
    grid-template-columns: minmax(7.5rem, max-content) minmax(13ch, 16ch);
    gap: .5rem;
    align-items: center;
    justify-content: start;
}

.phone-entry-control-10825 .phone-country-code-select {
    position: static !important;
    width: auto !important;
    height: auto !important;
    padding: .35rem .55rem !important;
    margin: 0 !important;
    overflow: visible !important;
    clip: auto !important;
    white-space: normal !important;
    border: 1px solid rgba(0,0,0,.25) !important;
    border-radius: .45rem !important;
    background: #fff !important;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.phone-mask-help {
    margin-top: .35rem;
}

.phone-validation-message {
    min-height: 1.25em;
    margin-top: .15rem;
}

.phone-validation-message.phone-validation-error {
    color: #b42318;
    font-weight: 650;
}

.phone-validation-message.phone-validation-ok {
    color: #146c2e;
}

@media (max-width: 520px) {
    .phone-entry-control-10825,
    body.app-player .profile-phone-split.phone-entry-control-10825 {
        grid-template-columns: minmax(7.5rem, max-content) minmax(12ch, 1fr);
        max-width: 100%;
    }
}



/** ADDED v10993: Players title and Explain Stats launcher share one heading row. */
.players-page-heading-title {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}
.players-page-heading-explainstats {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    line-height: 1;
}


/* ADDED v11012: shared visible footer rules and compact player footer spacing. */
.app-page-footer {
  display: block;
  width: 100%;
  max-width: none;
  clear: both;
  margin-top: 0.75rem;
  margin-bottom: 0;
  padding: 0;
  text-align: center;
}
.app-page-footer-rule {
  display: block !important;
  width: 100%;
  margin: 0.45rem 0;
  border: 0;
  border-top: 1px solid currentColor;
  opacity: 0.28;
}
.app-page-footer-text { width: 100%; margin: 0; padding: 0; text-align: center; }
body.app-player .app-page-footer,
body.player-surface .app-page-footer { margin-top: 0.35rem; }
body.app-player main.mainbody,
body.player-surface main.mainbody { padding-bottom: 0.35rem !important; }


/* CHANGED v11013: eliminate remaining player-content/footer separation. */
body.app-player main.mainbody,
body.player-surface main.mainbody {
  padding-bottom: 0 !important;
}
body.app-player .app-page-footer,
body.player-surface .app-page-footer {
  margin-top: 0 !important;
}
body.app-player .app-page-footer-rule-top,
body.player-surface .app-page-footer-rule-top {
  margin-top: 0.2rem !important;
}
body.app-player main.mainbody > :not(.app-page-footer):last-child,
body.player-surface main.mainbody > :not(.app-page-footer):last-child,
body.app-player main.mainbody > div > :last-child,
body.player-surface main.mainbody > div > :last-child {
  margin-bottom: 0 !important;
}


/* ADDED v11013: six-box Review Token entry. */
.deployment-review-otp-11013 {
  display: inline-flex;
  gap: 0.35rem;
  margin-left: 0.35rem;
  vertical-align: middle;
}
.deployment-review-otp-box-11013 {
  width: 2.6rem !important;
  min-width: 2.6rem;
  height: 2.8rem;
  padding: 0.25rem;
  border: 1px solid #8a99a8;
  border-radius: 0.45rem;
  background: #eef3f7;
  font: 700 1.2rem/1 monospace;
  text-align: center;
  text-transform: uppercase;
}
.deployment-review-otp-box-11013:focus {
  outline: 2px solid currentColor;
  outline-offset: 1px;
}
@media (max-width: 520px) {
  .deployment-review-otp-11013 { gap: 0.2rem; }
  .deployment-review-otp-box-11013 {
    width: 2.15rem !important;
    min-width: 2.15rem;
    height: 2.5rem;
  }
}


/* CHANGED v11014: remove residual player-page whitespace before the footer.
 * Some player wrappers retain legacy bottom spacing outside their final child.
 * Pull the shared footer upward by that reserved space and cancel its layout
 * footprint so the rule follows the final content block closely.
 */
body.app-player .app-page-footer,
body.player-surface .app-page-footer {
  position: relative;
  top: -2.25rem;
  margin-bottom: -2.25rem !important;
}
body.app-player .player-page-container,
body.player-surface .player-page-container {
  padding-bottom: 0 !important;
}
body.app-player .player-page-container > :last-child,
body.player-surface .player-page-container > :last-child {
  margin-bottom: 0 !important;
}


/* CHANGED v11015: force Review Token OTP inputs into one compact six-box row. */
label .deployment-review-otp-11013,
.smallnote .deployment-review-otp-11013,
.deployment-review-ajax-form-10921 .deployment-review-otp-11013,
.deployment-review-otp-11013 {
  display: inline-grid !important;
  grid-template-columns: repeat(6, 2.35rem) !important;
  grid-auto-flow: column !important;
  gap: 0.3rem !important;
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
  margin: 0 0 0 0.35rem !important;
  padding: 0 !important;
  vertical-align: middle !important;
  align-items: center !important;
}
label .deployment-review-otp-11013 input.deployment-review-otp-box-11013,
.smallnote .deployment-review-otp-11013 input.deployment-review-otp-box-11013,
.deployment-review-ajax-form-10921 .deployment-review-otp-11013 input.deployment-review-otp-box-11013,
.deployment-review-otp-11013 input.deployment-review-otp-box-11013 {
  display: inline-block !important;
  box-sizing: border-box !important;
  width: 2.35rem !important;
  min-width: 2.35rem !important;
  max-width: 2.35rem !important;
  height: 2.65rem !important;
  min-height: 2.65rem !important;
  margin: 0 !important;
  padding: 0.2rem !important;
  flex: 0 0 2.35rem !important;
  border: 1px solid #8a99a8 !important;
  border-radius: 0.45rem !important;
  background: #eef3f7 !important;
  font: 700 1.15rem/1 monospace !important;
  text-align: center !important;
  text-transform: uppercase !important;
}
@media (max-width: 520px) {
  label .deployment-review-otp-11013,
  .smallnote .deployment-review-otp-11013,
  .deployment-review-ajax-form-10921 .deployment-review-otp-11013,
  .deployment-review-otp-11013 {
    grid-template-columns: repeat(6, 2.05rem) !important;
    gap: 0.2rem !important;
  }
  label .deployment-review-otp-11013 input.deployment-review-otp-box-11013,
  .smallnote .deployment-review-otp-11013 input.deployment-review-otp-box-11013,
  .deployment-review-ajax-form-10921 .deployment-review-otp-11013 input.deployment-review-otp-box-11013,
  .deployment-review-otp-11013 input.deployment-review-otp-box-11013 {
    width: 2.05rem !important;
    min-width: 2.05rem !important;
    max-width: 2.05rem !important;
    flex-basis: 2.05rem !important;
  }
}


/* ADDED v11017: site-wide table corner contract.
 * Tables and their common scroll/container wrappers now render with four
 * visible rounded corners. Cell-level corner rules prevent header/background
 * fills from visually cutting square holes into the outer radius.
 */
:root {
  --pbplay-table-radius-11017: 0.55rem;
}

table {
  border-radius: var(--pbplay-table-radius-11017) !important;


  background-clip: padding-box !important;
}

.table-container,
.ui-table-container,
.ui-responsive-table-wrap,
.ui-data-display-wrap,
.admin-table-container,
.stats-table-container,
.team-profile-game-history-wrap9980,
.team-profile-history-wrap9982 {
  border-radius: var(--pbplay-table-radius-11017) !important;
  overflow: hidden;
  background-clip: padding-box;
}

.table-container > table,
.ui-table-container > table,
.ui-responsive-table-wrap > table,
.ui-data-display-wrap > table,
.admin-table-container > table,
.stats-table-container > table,
.team-profile-game-history-wrap9980 > table,
.team-profile-history-wrap9982 > table {
  border-radius: inherit !important;
}

table > thead:first-child > tr:first-child > th:first-child,
table > thead:first-child > tr:first-child > td:first-child,
table > tbody:first-child > tr:first-child > th:first-child,
table > tbody:first-child > tr:first-child > td:first-child {
  border-top-left-radius: var(--pbplay-table-radius-11017) !important;
}

table > thead:first-child > tr:first-child > th:last-child,
table > thead:first-child > tr:first-child > td:last-child,
table > tbody:first-child > tr:first-child > th:last-child,
table > tbody:first-child > tr:first-child > td:last-child {
  border-top-right-radius: var(--pbplay-table-radius-11017) !important;
}

table > tbody:last-child > tr:last-child > th:first-child,
table > tbody:last-child > tr:last-child > td:first-child,
table > tfoot:last-child > tr:last-child > th:first-child,
table > tfoot:last-child > tr:last-child > td:first-child {
  border-bottom-left-radius: var(--pbplay-table-radius-11017) !important;
}

table > tbody:last-child > tr:last-child > th:last-child,
table > tbody:last-child > tr:last-child > td:last-child,
table > tfoot:last-child > tr:last-child > th:last-child,
table > tfoot:last-child > tr:last-child > td:last-child {
  border-bottom-right-radius: var(--pbplay-table-radius-11017) !important;
}

/* When a table has a tfoot, the tbody is not the visual bottom edge. */
table:has(tfoot) > tbody:last-of-type > tr:last-child > th,
table:has(tfoot) > tbody:last-of-type > tr:last-child > td {
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}

/* CHANGED v11017: center Round and Pool values in Performance by Round. */
.team-profile-round-breakdown-data table th:nth-child(1),
.team-profile-round-breakdown-data table td:nth-child(1),
.team-profile-round-breakdown-data table th:nth-child(4),
.team-profile-round-breakdown-data table td:nth-child(4) {
  text-align: center !important;
  vertical-align: middle !important;
}

/* CHANGED v11017: Game History must fit inside its parent card.
 * Remove the legacy 72rem minimum width, keep the four columns proportional,
 * and allow long opponent/match content to wrap instead of widening the card.
 */
.team-profile-game-history-final9980 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}

.team-profile-game-history-wrap9980 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: hidden !important;
  overflow-y: hidden !important;
  box-sizing: border-box !important;
}

.team-profile-game-history-table9980 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
  box-sizing: border-box !important;
}

.team-profile-game-history-col-match9980,
.team-profile-game-history-th-match9980,
.team-profile-game-history-cell-match9980 {
  width: 24% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-game-history-col-opponent9980,
.team-profile-game-history-th-opponent9980,
.team-profile-game-history-cell-opponent9980 {
  width: 48% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-game-history-col-result9980,
.team-profile-game-history-th-result9980,
.team-profile-game-history-cell-result9980 {
  width: 14% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-game-history-col-score9980,
.team-profile-game-history-th-score9980,
.team-profile-game-history-cell-score9980 {
    width: 14% !important;
    min-width: 0 !important;
    max-width: none !important;
    text-align: center !important;
    vertical-align: middle !important;
}
.team-profile-game-history-cell-score9980 .player-status-badge {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: auto !important;
    min-width: 4.2rem;
}

.team-profile-game-history-table9980 th,
.team-profile-game-history-table9980 td,
.team-profile-game-history-cell-match9980,
.team-profile-game-history-cell-opponent9980,
.team-profile-game-history-cell-result9980,
.team-profile-game-history-cell-score9980 {
  min-width: 0 !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
}

.team-profile-game-history-cell-opponent9980 .team-profile-linked-team,
.team-profile-game-history-cell-opponent9980 .team-profile-linked-roster,
.team-profile-game-history-cell-opponent9980 .team-profile-inline-roster,
.team-profile-game-history-cell-opponent9980 .component-team-display,
.team-profile-game-history-cell-opponent9980 .component-team-members,
.team-profile-game-history-cell-opponent9980 .component-team-members--inline {
  display: inline-flex !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  white-space: normal !important;
  flex-wrap: wrap !important;
  overflow-wrap: anywhere !important;
}

@media (max-width: 720px) {
  .team-profile-game-history-table9980 {
    table-layout: auto !important;
  }

  .team-profile-game-history-table9980 th,
  .team-profile-game-history-table9980 td {
    padding: 0.3rem 0.4rem !important;
    font-size: 0.92rem;
  }
}


/* ADDED v11018: definitive site-wide table outline contract.
 * The table itself owns the visible rounded outline and clipping. This avoids
 * square corners, half-rounded wrappers, and empty corner gaps caused by mixed
 * wrapper/table border strategies.
 */
:root {
  --pbplay-table-radius-11018: 0.6rem;
  --pbplay-table-outline-11018: var(--color-border, #bdbdbd);
}

table {
  border-collapse: separate !important;
  border-spacing: 0 !important;
  border-radius: var(--pbplay-table-radius-11018) !important;
  overflow: hidden !important;
  clip-path: inset(0 round var(--pbplay-table-radius-11018));
  box-shadow: inset 0 0 0 1px var(--pbplay-table-outline-11018) !important;
  background-clip: padding-box !important;
}

table > thead:first-child > tr:first-child > th:first-child,
table > thead:first-child > tr:first-child > td:first-child,
table > tbody:first-child > tr:first-child > th:first-child,
table > tbody:first-child > tr:first-child > td:first-child {
  border-top-left-radius: var(--pbplay-table-radius-11018) !important;
}

table > thead:first-child > tr:first-child > th:last-child,
table > thead:first-child > tr:first-child > td:last-child,
table > tbody:first-child > tr:first-child > th:last-child,
table > tbody:first-child > tr:first-child > td:last-child {
  border-top-right-radius: var(--pbplay-table-radius-11018) !important;
}

table > tbody:last-child > tr:last-child > th:first-child,
table > tbody:last-child > tr:last-child > td:first-child,
table > tfoot:last-child > tr:last-child > th:first-child,
table > tfoot:last-child > tr:last-child > td:first-child {
  border-bottom-left-radius: var(--pbplay-table-radius-11018) !important;
}

table > tbody:last-child > tr:last-child > th:last-child,
table > tbody:last-child > tr:last-child > td:last-child,
table > tfoot:last-child > tr:last-child > th:last-child,
table > tfoot:last-child > tr:last-child > td:last-child {
  border-bottom-right-radius: var(--pbplay-table-radius-11018) !important;
}

/* Common table wrappers no longer draw a competing outline. */
.table-container,
.ui-table-container,
.ui-responsive-table-wrap,
.ui-data-display-wrap,
.admin-table-container,
.stats-table-container,
.team-profile-game-history-wrap9980,
.team-profile-history-wrap9982 {
  border-radius: var(--pbplay-table-radius-11018) !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
}

/* CHANGED v11018: proportional Performance by Round columns minimize wrapping. */


.team-profile-round-breakdown-data table th,
.team-profile-round-breakdown-data table td {
  min-width: 0 !important;
  box-sizing: border-box !important;
  overflow-wrap: normal !important;
  word-break: normal !important;
}

.team-profile-round-breakdown-data table th:nth-child(1),
.team-profile-round-breakdown-data table td:nth-child(1) {
  width: 5% !important;
  text-align: center !important;
}

.team-profile-round-breakdown-data table th:nth-child(2),
.team-profile-round-breakdown-data table td:nth-child(2) {
  width: 12% !important;
}

.team-profile-round-breakdown-data table th:nth-child(3),
.team-profile-round-breakdown-data table td:nth-child(3) {
  width: 14% !important;
}

.team-profile-round-breakdown-data table th:nth-child(4),
.team-profile-round-breakdown-data table td:nth-child(4) {
  width: 6% !important;
  text-align: center !important;
}

.team-profile-round-breakdown-data table th:nth-child(5),
.team-profile-round-breakdown-data table td:nth-child(5) {
  width: 19% !important;
}

.team-profile-round-breakdown-data table th:nth-child(6),
.team-profile-round-breakdown-data table td:nth-child(6) {
  width: 19% !important;
}

.team-profile-round-breakdown-data table th:nth-child(7),
.team-profile-round-breakdown-data table td:nth-child(7) {
  width: 25% !important;
}

/* CHANGED v11018: Match History must fit within its parent container.
 * Previous v11017 styling corrected Game History only; Match History retained
 * its older 64rem/72rem minimum widths and fixed rem columns.
 */




.team-profile-history-table9982,
.team-profile-history-final9982-match .team-profile-history-table9982 {




  box-sizing: border-box !important;
}

.team-profile-history-col-match9982,
.team-profile-history-th-match9982,
.team-profile-history-cell-match9982,
.team-profile-history-final9982-match .team-profile-history-col-match9982,
.team-profile-history-final9982-match .team-profile-history-th-match9982,
.team-profile-history-final9982-match .team-profile-history-cell-match9982 {
  width: 24% !important;


}

.team-profile-history-col-opponent9982,
.team-profile-history-th-opponent9982,
.team-profile-history-cell-opponent9982,
.team-profile-history-final9982-match .team-profile-history-col-opponent9982,
.team-profile-history-final9982-match .team-profile-history-th-opponent9982,
.team-profile-history-final9982-match .team-profile-history-cell-opponent9982 {
  width: 48% !important;


}



.team-profile-history-col-score9982,
.team-profile-history-th-score9982,
.team-profile-history-cell-score9982,
.team-profile-history-final9982-match .team-profile-history-col-score9982,
.team-profile-history-final9982-match .team-profile-history-th-score9982,
.team-profile-history-final9982-match .team-profile-history-cell-score9982 {
  width: 14% !important;


}

.team-profile-history-table9982 th,
.team-profile-history-table9982 td,
.team-profile-history-cell-match9982,
.team-profile-history-cell-opponent9982,
.team-profile-history-cell-result9982,
.team-profile-history-cell-score9982 {
  min-width: 0 !important;
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
}



@media (max-width: 760px) {
  .team-profile-round-breakdown-data table,
  .team-profile-history-table9982,
  .team-profile-history-final9982-match .team-profile-history-table9982 {
    table-layout: auto !important;
  }

  .team-profile-history-table9982 th,
  .team-profile-history-table9982 td {
    padding: 0.3rem 0.4rem !important;
    font-size: 0.92rem;
  }
}


/* ADDED v11019: effective four-corner table and Team Profile layout contract.
 * This block is present in every loaded CSS bundle so player pages, admin pages,
 * and the legacy fallback all receive the same result.
 */
:root {
  --pbplay-table-radius-11019: 0.65rem;
  --pbplay-table-outline-11019: var(--color-border, #bdbdbd);
}

/* The wrapper owns the rounded outline and clipping. The table fills it. */
.table-container,
.ui-table-container,
.ui-data-display-wrap,
.ui-responsive-table-wrap,
.team-profile-history-wrap9982,
.team-profile-game-history-wrap9980 {
  border: 1px solid var(--pbplay-table-outline-11019) !important;
  border-radius: var(--pbplay-table-radius-11019) !important;
  overflow: hidden !important;
  background: var(--color-surface, #fff) !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
}

.table-container > table,
.ui-table-container > table,
.ui-data-display-wrap > table,
.ui-responsive-table-wrap > table,
.team-profile-history-wrap9982 > table,
.team-profile-game-history-wrap9980 > table {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  box-shadow: none !important;
  clip-path: none !important;
  overflow: visible !important;
  box-sizing: border-box !important;
}

/* Remove the outer cell borders because the wrapper supplies the outline. */
.table-container > table > thead > tr:first-child > * ,
.ui-table-container > table > thead > tr:first-child > * ,
.ui-data-display-wrap > table > thead > tr:first-child > * ,
.ui-responsive-table-wrap > table > thead > tr:first-child > * ,
.team-profile-history-wrap9982 > table > thead > tr:first-child > * ,
.team-profile-game-history-wrap9980 > table > thead > tr:first-child > * {
  border-top: 0 !important;
}

.table-container > table tr > *:first-child,
.ui-table-container > table tr > *:first-child,
.ui-data-display-wrap > table tr > *:first-child,
.ui-responsive-table-wrap > table tr > *:first-child,
.team-profile-history-wrap9982 > table tr > *:first-child,
.team-profile-game-history-wrap9980 > table tr > *:first-child {
  border-left: 0 !important;
}

.table-container > table tr > *:last-child,
.ui-table-container > table tr > *:last-child,
.ui-data-display-wrap > table tr > *:last-child,
.ui-responsive-table-wrap > table tr > *:last-child,
.team-profile-history-wrap9982 > table tr > *:last-child,
.team-profile-game-history-wrap9980 > table tr > *:last-child {
  border-right: 0 !important;
}

.table-container > table > tbody > tr:last-child > *,
.ui-table-container > table > tbody > tr:last-child > *,
.ui-data-display-wrap > table > tbody > tr:last-child > *,
.ui-responsive-table-wrap > table > tbody > tr:last-child > *,
.team-profile-history-wrap9982 > table > tbody > tr:last-child > *,
.team-profile-game-history-wrap9980 > table > tbody > tr:last-child > * {
  border-bottom: 0 !important;
}

/* Performance by Round: narrow Rnd and Pool, center values, allocate width to
 * cumulative result columns, and prevent unnecessary line wrapping.
 */
.team-profile-round-breakdown-data .ui-table-container,
.team-profile-round-breakdown-data .ui-data-display-wrap,
.team-profile-round-breakdown-data .ui-responsive-table-wrap {
  overflow: hidden !important;
}

.team-profile-round-breakdown-data table {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
}

.team-profile-round-breakdown-data th,
.team-profile-round-breakdown-data td {
  min-width: 0 !important;
  box-sizing: border-box !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: clip !important;
  vertical-align: middle !important;
}

.team-profile-round-breakdown-data th:nth-child(1),
.team-profile-round-breakdown-data td:nth-child(1) {
  width: 4% !important;
  text-align: center !important;
}

.team-profile-round-breakdown-data th:nth-child(2),
.team-profile-round-breakdown-data td:nth-child(2) {
  width: 11% !important;
}

.team-profile-round-breakdown-data th:nth-child(3),
.team-profile-round-breakdown-data td:nth-child(3) {
  width: 13% !important;
}

.team-profile-round-breakdown-data th:nth-child(4),
.team-profile-round-breakdown-data td:nth-child(4) {
  width: 4% !important;
  text-align: center !important;
}

.team-profile-round-breakdown-data th:nth-child(5),
.team-profile-round-breakdown-data td:nth-child(5) {
  width: 21% !important;
}

.team-profile-round-breakdown-data th:nth-child(6),
.team-profile-round-breakdown-data td:nth-child(6) {
  width: 21% !important;
}

.team-profile-round-breakdown-data th:nth-child(7),
.team-profile-round-breakdown-data td:nth-child(7) {
  width: 26% !important;
}

/* Match History: remove all inherited desktop minimum widths and scrolling.
 * The table fits the parent and uses proportional columns.
 */
.team-profile-history-final9982,
.team-profile-history-final9982-match,
.team-profile-history-wrap9982 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

.team-profile-history-wrap9982 {
  overflow-x: hidden !important;
  overflow-y: hidden !important;
  scrollbar-width: none !important;
}

.team-profile-history-wrap9982::-webkit-scrollbar {
  display: none !important;
}

.team-profile-history-table9982,
.team-profile-history-final9982-match .team-profile-history-table9982 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
}

.team-profile-history-col-match9982,
.team-profile-history-th-match9982,
.team-profile-history-cell-match9982,
.team-profile-history-final9982-match .team-profile-history-col-match9982,
.team-profile-history-final9982-match .team-profile-history-th-match9982,
.team-profile-history-final9982-match .team-profile-history-cell-match9982 {
  width: 18% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-history-col-opponent9982,
.team-profile-history-th-opponent9982,
.team-profile-history-cell-opponent9982,
.team-profile-history-final9982-match .team-profile-history-col-opponent9982,
.team-profile-history-final9982-match .team-profile-history-th-opponent9982,
.team-profile-history-final9982-match .team-profile-history-cell-opponent9982 {
  width: 46% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-history-col-result9982,
.team-profile-history-th-result9982,
.team-profile-history-cell-result9982,
.team-profile-history-final9982-match .team-profile-history-col-result9982,
.team-profile-history-final9982-match .team-profile-history-th-result9982,
.team-profile-history-final9982-match .team-profile-history-cell-result9982 {
  width: 14% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-history-col-score9982,
.team-profile-history-th-score9982,
.team-profile-history-cell-score9982,
.team-profile-history-final9982-match .team-profile-history-col-score9982,
.team-profile-history-final9982-match .team-profile-history-th-score9982,
.team-profile-history-final9982-match .team-profile-history-cell-score9982 {
  width: 22% !important;
  min-width: 0 !important;
  max-width: none !important;
}

.team-profile-history-table9982 th,
.team-profile-history-table9982 td {
  min-width: 0 !important;
  white-space: normal !important;
  overflow: hidden !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  box-sizing: border-box !important;
}

.team-profile-history-cell-opponent9982 .team-profile-linked-team,
.team-profile-history-cell-opponent9982 .team-profile-linked-roster,
.team-profile-history-cell-opponent9982 .team-profile-inline-roster,
.team-profile-history-cell-opponent9982 .component-team-display,
.team-profile-history-cell-opponent9982 .component-team-members,
.team-profile-history-cell-opponent9982 .component-team-members--inline {
  display: inline-flex !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  flex-wrap: wrap !important;
  white-space: normal !important;
  overflow: hidden !important;
  overflow-wrap: anywhere !important;
}

@media (max-width: 760px) {
  .team-profile-round-breakdown-data th,
  .team-profile-round-breakdown-data td {
    white-space: normal !important;
  }
}

/* ADDED v11020: Match History single-line team display and proportional widths. */
.team-profile-history-final9982-match .team-profile-history-col-match9982,
.team-profile-history-final9982-match .team-profile-history-th-match9982,
.team-profile-history-final9982-match .team-profile-history-cell-match9982 { width: 16% !important; }

.team-profile-history-final9982-match .team-profile-history-col-opponent9982,
.team-profile-history-final9982-match .team-profile-history-th-opponent9982,
.team-profile-history-final9982-match .team-profile-history-cell-opponent9982 { width: 50% !important; }

.team-profile-history-final9982-match .team-profile-history-col-result9982,
.team-profile-history-final9982-match .team-profile-history-th-result9982,
.team-profile-history-final9982-match .team-profile-history-cell-result9982 { width: 13% !important; }

.team-profile-history-final9982-match .team-profile-history-col-score9982,
.team-profile-history-final9982-match .team-profile-history-th-score9982,
.team-profile-history-final9982-match .team-profile-history-cell-score9982 { width: 21% !important; }

.team-profile-history-cell-opponent9982 { white-space: nowrap !important; overflow: hidden !important; }

.team-profile-history-cell-opponent9982 .team-profile-linked-team,
.team-profile-history-cell-opponent9982 .team-profile-linked-roster,
.team-profile-history-cell-opponent9982 .team-profile-name-with-icon-inline,
.team-profile-history-cell-opponent9982 .component-team-display--inline,
.team-profile-history-cell-opponent9982 .team-profile-inline-roster,
.team-profile-history-cell-opponent9982 .component-team-members--inline {
  display: inline-flex !important;
  width: auto !important;
  max-width: 100% !important;
  min-width: 0 !important;
  flex: 0 1 auto !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
  white-space: nowrap !important;
  overflow: hidden !important;
}

.team-profile-history-cell-opponent9982 .team-profile-icon-link {
  display: inline-flex !important;
  flex: 0 0 auto !important;
  align-items: center !important;
  margin-right: 0.3rem !important;
  white-space: nowrap !important;
}

.team-profile-history-cell-opponent9982 .team-profile-inline-roster,
.team-profile-history-cell-opponent9982 .component-team-members--inline {
  flex: 1 1 auto !important;
  text-overflow: ellipsis !important;
}

.team-profile-history-cell-opponent9982 .team-pair-separator,
.team-profile-history-cell-opponent9982 a { white-space: nowrap !important; }

@media (max-width: 760px) {
  .team-profile-history-cell-opponent9982 { white-space: normal !important; }
  .team-profile-history-cell-opponent9982 .team-profile-linked-team,
  .team-profile-history-cell-opponent9982 .team-profile-linked-roster,
  .team-profile-history-cell-opponent9982 .team-profile-name-with-icon-inline,
  .team-profile-history-cell-opponent9982 .component-team-display--inline,
  .team-profile-history-cell-opponent9982 .team-profile-inline-roster,
  .team-profile-history-cell-opponent9982 .component-team-members--inline {
    flex-wrap: wrap !important;
    white-space: normal !important;
  }
}


/* ADDED v11021: reliable rounded outlines for status, Teams, and Players tables.
 * Earlier sitewide rules depended on a generic wrapper/table relationship.
 * Status tables were themselves marked as table-container, while the Teams and
 * Players table shared a wrapper with the Advanced Stats toolbar. These
 * dedicated inner wrappers now own the complete visible outline and clipping.
 */
.ui-rounded-table-outline-11021 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  border: 1px solid var(--color-border, #bdbdbd) !important;
  border-radius: var(--pbplay-table-radius-11019, 0.65rem) !important;
  overflow: hidden !important;
  background: var(--color-surface, #fff) !important;
  box-shadow: none !important;
  box-sizing: border-box !important;
}

.ui-rounded-table-outline-11021 > table.ui-rounded-table-11021 {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
  box-sizing: border-box !important;
}

.ui-rounded-table-outline-11021 > table.ui-rounded-table-11021 > thead > tr:first-child > * {
  border-top: 0 !important;
}

.ui-rounded-table-outline-11021 > table.ui-rounded-table-11021 tr > *:first-child {
  border-left: 0 !important;
}

.ui-rounded-table-outline-11021 > table.ui-rounded-table-11021 tr > *:last-child {
  border-right: 0 !important;
}

.ui-rounded-table-outline-11021 > table.ui-rounded-table-11021 > tbody > tr:last-child > * {
  border-bottom: 0 !important;
}

/* The outer stats wrapper contains the toolbar and should no longer draw a
 * competing outline around both toolbar and table.
 */
.stats-table-container:has(> .stats-table-outline-11021) {
  border: 0 !important;
  border-radius: 0 !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  background: transparent !important;
}

.stats-table-container > .stats-table-toolbar + .stats-table-outline-11021 {
  margin-top: 0.35rem !important;
}

/* Status sections remain separate tables with their existing vertical gaps. */
.status-table-outline-11021 + .matches-status-table-gap,
.matches-status-table-gap + .status-table-outline-11021 {
  margin-top: 0 !important;
}


/* CHANGED v11030: Performance by Round unavailable rows use the canonical unavailable status color. */
.team-profile-section tr.team-round-status-unavailable > td {
  background-color: var(--color-status-unavailable-bg) !important;
}


/** ADDED v11035: Restore standard rounded pool-table corners.
 * The pool wrapper clips the desktop table surface to the shared player radius.
 * Existing mobile Challenge Mode rules deliberately restore visible overflow so
 * action menus remain usable on narrow screens.
 */
body.app-player .matches-pool-table-wrap.ui-player-table-wrap {
    border-radius: var(--player-radius-md, 0.75rem) !important;
    overflow: hidden;
}
body.app-player .matches-pool-table-wrap.ui-player-table-wrap > table.matches-table {
    margin: 0;
}
@media (max-width: 760px) {
    body.app-player .matches-pool-table-wrap.ui-player-table-wrap {
        overflow: visible !important;
    }
}

/** ADDED v11038: Make Matches pool table corners visible regardless of scroll-wrapper overflow rules. */
body.app-player .matches-pool-table-wrap.ui-player-table-wrap > table.matches-table {
    border-collapse: separate !important;
    border-spacing: 0 !important;
    border-radius: var(--player-radius-md, 0.75rem) !important;
    overflow: hidden;
}
body.app-player .matches-pool-table-wrap.ui-player-table-wrap > table.matches-table > thead:first-child > tr:first-child > th:first-child {
    border-top-left-radius: var(--player-radius-md, 0.75rem) !important;
}
body.app-player .matches-pool-table-wrap.ui-player-table-wrap > table.matches-table > thead:first-child > tr:first-child > th:last-child {
    border-top-right-radius: var(--player-radius-md, 0.75rem) !important;
}
body.app-player .matches-pool-table-wrap.ui-player-table-wrap > table.matches-table > tbody:last-child > tr:last-child > td:first-child {
    border-bottom-left-radius: var(--player-radius-md, 0.75rem) !important;
}
body.app-player .matches-pool-table-wrap.ui-player-table-wrap > table.matches-table > tbody:last-child > tr:last-child > td:last-child {
    border-bottom-right-radius: var(--player-radius-md, 0.75rem) !important;
}
@media (min-width: 761px) {
    body.app-player .matches-pool-table-wrap.ui-player-table-wrap {
        overflow: hidden !important;
    }
}

/** ADDED v11279: Compact Admin Review request-detail modal/page without changing workflow behavior. */
.admin-review-detail-section .admin-review-table-wrap-10347,
.admin-review-swal-scroll-10347 {
  max-height: 78vh;
}
.admin-review-detail-table,
.admin-review-swal-detail-table-10347 {
  min-width: 0 !important;
  table-layout: fixed;
  font-size: .94rem;
  line-height: 1.2;
}
.admin-review-detail-table th,
.admin-review-detail-table td,
.admin-review-swal-detail-table-10347 th,
.admin-review-swal-detail-table-10347 td {
  padding: .28rem .45rem !important;
  line-height: 1.2 !important;
}
.admin-review-detail-table th,
.admin-review-swal-detail-table-10347 th {
  width: 10.5rem;
  white-space: normal;
}
.admin-review-detail-pre-10347,
.admin-review-swal-detail-table-10347 pre {
  line-height: 1.2;
}

/* ADDED v11481: Let mobile Teams member names wrap inside their own cell. */
@media (max-width: 640px) {
    body:not(.admin) .stats-context-teams .stats-table {
        table-layout: fixed !important;
        width: 100% !important;
        min-width: 100% !important;
    }
    body:not(.admin) .stats-context-teams .stats-table :where(th, td):first-child {
        width: 13% !important;
        min-width: 0 !important;
    }
    body:not(.admin) .stats-context-teams .stats-table .stats-team-cell {
        width: 25% !important;
        min-width: 0 !important;
        max-width: 25% !important;
        overflow: hidden !important;
    }
    body:not(.admin) .stats-context-teams .stats-table :where(th, td):not(:first-child):not(.stats-team-cell) {
        width: auto !important;
        min-width: 0 !important;
    }
    body:not(.admin) :where(.teams-container, .stats-context-teams) :where(.stats-team-cell, .team-name-cell, .team-profile-name-with-icon, .team-profile-name-with-icon-inline, .component-team-members, .component-team-members--inline, .component-team-members--stacked, .team-profile-inline-roster, .team-player-list) {
        min-width: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        white-space: normal !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
    }
    body:not(.admin) :where(.teams-container, .stats-context-teams) :where(.team-profile-name-with-icon a, .team-profile-name-with-icon-inline a, .component-team-member, .component-team-members a, .team-profile-inline-roster a, .team-player-list a) {
        min-width: 0 !important;
        max-width: 100% !important;
        white-space: normal !important;
        overflow-wrap: anywhere !important;
        word-break: normal !important;
    }
}

/** ADDED v12528: Final scheduler cascade for aligned location controls and
 * native date typography. */
.match-scheduler-location-search-row {
    position: relative !important;
    display: block !important;
}
.match-scheduler-location-search-input {
    width: 100% !important;
    box-sizing: border-box !important;
    padding-right: 6rem !important;
}
.match-scheduler-location-search-row .match-scheduler-map-icon-link,
.match-scheduler-location-search-row .match-scheduler-notes-icon-link {
    position: absolute !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
}
.match-scheduler-location-search-row .match-scheduler-map-icon-link { right: 3.3rem !important; }
.match-scheduler-location-search-row .match-scheduler-notes-icon-link { right: 0 !important; }
.match-scheduler-modal .match-scheduler-field--datetime input[type='date'] {
    font: inherit !important;
    font-size: 1rem !important;
    color: inherit !important;
}
.pupr-rating-period-status {
    margin-left: 0.25rem;
    color: #8a4b00;
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}
.event-rating-source-label {
    display: block;
    margin-top: 0.1rem;
    color: #555;
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}

/* Keep the shared Org disclosure free of a second card-like wrapper. */
.admin-org-management-details {
    margin: 0.5rem 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible !important;
}

/* Keep the Event switcher search and picklist centred within its dialog. */
.swal2-popup .event-switcher-picker {
    width: min(100%, 26rem);
    margin: 0 auto;
}
.swal2-popup .event-switcher-picker .swal2-input,
.swal2-popup .event-switcher-picker .swal2-select {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}

/* Keep every native dropdown's selected value and option labels left aligned. */
select,
select option {
    text-align: left !important;
    text-align-last: left !important;
}
/* The early browser marker is independent of viewport width and pointer
 * capabilities. This keeps desktop canvas ownership with desktop browsers and
 * prevents a mobile browser with an attached mouse from receiving it. */
html.pb-desktop-canvas body.app-player,
html.pb-desktop-canvas body.player-surface,
html.pb-desktop-canvas body.app-admin,
html.pb-desktop-canvas body.admin-surface,
html.pb-desktop-canvas body.site-front-body {
    min-width: 60rem !important;
    overflow-x: auto !important;
}

html.pb-desktop-canvas body.app-player > header.site-navigation-shell,
html.pb-desktop-canvas body.player-surface > header.site-navigation-shell,
html.pb-desktop-canvas body.app-admin > header.site-navigation-shell,
html.pb-desktop-canvas body.admin-surface > header.site-navigation-shell,
html.pb-desktop-canvas body.site-front-body > header.site-navigation-shell,
html.pb-desktop-canvas body.app-player > main.mainbody,
html.pb-desktop-canvas body.player-surface > main.mainbody,
html.pb-desktop-canvas body.app-admin > main.mainbody,
html.pb-desktop-canvas body.admin-surface > main.mainbody,
html.pb-desktop-canvas body.site-front-body .site-front-page {
    min-width: calc(60rem - (var(--app-page-shell-gutter, 16px) * 2)) !important;
}
