/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-00uvaa0sfd] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-00uvaa0sfd] {
    flex: 1;

    /* A flex item defaults to min-width:auto, so it refuses to shrink below its widest
       content and a wide table (the activity log grid) makes the whole page scroll
       sideways instead. Zero lets the page stay put and the grid scroll inside itself. */
    min-width: 0;
}

.sidebar[b-00uvaa0sfd] {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.top-row[b-00uvaa0sfd] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-00uvaa0sfd]  a, .top-row[b-00uvaa0sfd]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-00uvaa0sfd]  a:hover, .top-row[b-00uvaa0sfd]  .btn-link:hover {
        text-decoration: underline;
    }

    /* The row's links, in one group at its left - the site's pages or a home page's own, an
       event's login, and Help last (2026-09-27) - while the profile icon stays at the right. The
       row is a flex row justified to the end, so the way to keep the group at the left is an
       auto margin on its right: it takes all the free space and pushes the rest away. */
    .top-row .cm-header-links[b-00uvaa0sfd] {
        order: -1;
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.25rem 1.25rem;
        margin-right: auto;
    }

    /* The site's own pages, About Us and Why Use Us. No ::deep - this nav is in the layout's own
       markup, and the link rules above only reach into child components. */
    .top-row .cm-sitepages[b-00uvaa0sfd],
    .top-row .cm-homesite-pages[b-00uvaa0sfd] {
        display: flex;
        flex-wrap: wrap;
        gap: 0.25rem 1.25rem;
    }

    .top-row .cm-sitepages a[b-00uvaa0sfd],
    .top-row .cm-homesite-pages a[b-00uvaa0sfd],
    .top-row .cm-header-login[b-00uvaa0sfd] {
        /* The group's gap spaces them; the row's own 1.5rem left margin on every link is not wanted
           here, where it made the gaps uneven. */
        margin-left: 0;
        white-space: nowrap;
        text-decoration: none;

        /* Bold italic, two pixels smaller than the row's own size. calc on 1em rather than a
           fixed point size, so it stays two smaller than whatever the theme sets rather than
           being pinned to what the theme happens to set today. */
        font-weight: 700;
        font-style: italic;
        font-size: calc(1em - 2px);
    }

    .top-row .cm-sitepages a:hover[b-00uvaa0sfd],
    .top-row .cm-sitepages a:focus-visible[b-00uvaa0sfd],
    .top-row .cm-homesite-pages a:hover[b-00uvaa0sfd],
    .top-row .cm-homesite-pages a:focus-visible[b-00uvaa0sfd],
    .top-row .cm-header-login:hover[b-00uvaa0sfd],
    .top-row .cm-header-login:focus-visible[b-00uvaa0sfd] {
        text-decoration: underline;
    }

    /* A home page's own pages (2026-09-27): the one being shown is underlined. */
    .top-row .cm-homesite-pages a.cm-homesite-current[b-00uvaa0sfd] {
        text-decoration: underline;
        text-underline-offset: 0.25em;
    }

    /* The row is a fixed height for its usual one line; a home page with more pages than fit
       grows it instead of letting the second line spill over the content. */
    .top-row:has(.cm-homesite-pages)[b-00uvaa0sfd] {
        height: auto;
        min-height: 3.5rem;
        padding-top: 0.5rem;
        padding-bottom: 0.5rem;
    }

    /* A home page in its own frame has no nav bar, so its logo heads this row (2026-09-27). */
    .top-row .cm-homesite-logo[b-00uvaa0sfd] {
        order: -2;
        display: inline-flex;
        align-items: center;
        margin-right: 1.25rem;
    }

    .top-row .cm-homesite-logo img[b-00uvaa0sfd] {
        width: auto;
        height: 2.5rem;
        max-width: 10rem;
        object-fit: contain;
    }

    /* ---- a home page's header in its own frame (2026-09-28, after nmra2026.org's) ------------
       Pinned to the top of the window at every width, tall with a large logo until the page is
       scrolled, then the usual size (cm-homesite-shrunk, from wwwroot/js/home-header.js). */
    .top-row.cm-homesite-header[b-00uvaa0sfd] {
        position: sticky;
        top: 0;
        z-index: 10;
        height: auto;
        min-height: 3.5rem;
        padding-top: 0.5rem;
        padding-bottom: 0.5rem;
        transition: padding 0.25s ease;
    }

    .top-row.cm-homesite-header .cm-homesite-logo img[b-00uvaa0sfd] {
        height: 6rem;
        max-width: 16rem;
        transition: height 0.25s ease, max-width 0.25s ease;
    }

    .top-row.cm-homesite-header.cm-homesite-shrunk[b-00uvaa0sfd] {
        padding-top: 0.25rem;
        padding-bottom: 0.25rem;
        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
    }

    .top-row.cm-homesite-header.cm-homesite-shrunk .cm-homesite-logo img[b-00uvaa0sfd] {
        height: 2.5rem;
        max-width: 10rem;
    }

    /* The way in - Attendees Login or RSVP Login - as a button at the right of the links, the
       way nmra2026.org's Registration stands out. Help, when shown, still comes last. */
    .top-row.cm-homesite-header .cm-header-links[b-00uvaa0sfd] {
        flex: 1;
    }

    .top-row.cm-homesite-header .cm-header-login[b-00uvaa0sfd] {
        margin-left: auto;
        padding: 0.35rem 0.9rem;
        border-radius: 0.35rem;
        background: var(--cm-accent, #1b6ec2);
        color: #ffffff;
    }

    .top-row.cm-homesite-header .cm-header-login:hover[b-00uvaa0sfd],
    .top-row.cm-homesite-header .cm-header-login:focus-visible[b-00uvaa0sfd] {
        text-decoration: none;
        filter: brightness(0.9);
    }

    /* ---- the menu, one level deep (2026-09-28) ------------------------------------------------ */
    .top-row .cm-homesite-menu[b-00uvaa0sfd] {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.25rem 1.25rem;
        margin: 0;
        padding: 0;
        list-style: none;
    }

    .top-row .cm-homesite-item[b-00uvaa0sfd] {
        position: relative;
        display: flex;
        align-items: center;
    }

    /* The arrow beside a page with pages under it: a button of its own, for a keyboard or a
       touch screen, since hover is for a mouse. */
    .top-row .cm-homesite-toggle[b-00uvaa0sfd] {
        display: inline-flex;
        align-items: center;
        margin-left: 0.15rem;
        padding: 0 0.2rem;
        border: 0;
        background: none;
        color: inherit;
        line-height: 1;
        cursor: pointer;
    }

    .top-row .cm-homesite-toggle[b-00uvaa0sfd]::before {
        content: "\25BE";
        font-size: 0.85em;
    }

    .top-row .cm-homesite-submenu[b-00uvaa0sfd] {
        display: none;
        position: absolute;
        top: 100%;
        left: 0;
        z-index: 20;
        min-width: 12rem;
        margin: 0;
        padding: 0.35rem 0;
        list-style: none;
        background: var(--cm-raised, #ffffff);
        border: 1px solid rgba(0, 0, 0, 0.15);
        border-radius: 0.35rem;
        box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    }

    .top-row .cm-homesite-item:hover > .cm-homesite-submenu[b-00uvaa0sfd],
    .top-row .cm-homesite-item:focus-within:not(.cm-dismissed) > .cm-homesite-submenu[b-00uvaa0sfd],
    .top-row .cm-homesite-item.cm-open > .cm-homesite-submenu[b-00uvaa0sfd] {
        display: block;
    }

    .top-row .cm-homesite-submenu a[b-00uvaa0sfd] {
        display: block;
        padding: 0.35rem 1rem;
    }

    .top-row .cm-homesite-submenu a:hover[b-00uvaa0sfd],
    .top-row .cm-homesite-submenu a:focus-visible[b-00uvaa0sfd] {
        background: rgba(27, 110, 194, 0.1);
        text-decoration: none;
    }

    /* The page shown is one of those under this one. */
    .top-row .cm-homesite-pages a.cm-homesite-current-branch[b-00uvaa0sfd] {
        text-decoration: underline;
        text-decoration-style: dotted;
        text-underline-offset: 0.25em;
    }

    /* The Menu button is for a narrow screen only - see below. */
    .top-row .cm-homesite-menu-button[b-00uvaa0sfd] {
        display: none;
    }

    /* The profile icon is a target, not a piece of text: a round hit area, no underline, and
       it takes its color from the theme's body text rather than the link color. */
    .top-row[b-00uvaa0sfd]  .cm-profile-link {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 2.25rem;
        height: 2.25rem;
        border-radius: 50%;
        color: var(--cm-text, #212529);
    }

    .top-row[b-00uvaa0sfd]  .cm-profile-link:hover,
    .top-row[b-00uvaa0sfd]  .cm-profile-link:focus-visible {
        text-decoration: none;
        background-color: var(--cm-raised, rgba(0, 0, 0, 0.06));
        color: var(--cm-accent, #1b6ec2);
    }

    .top-row[b-00uvaa0sfd]  .cm-profile-link svg {
        width: 1.4rem;
        height: 1.4rem;
        display: block;
    }

    .top-row[b-00uvaa0sfd]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-00uvaa0sfd] {
        justify-content: space-between;
    }

    .top-row[b-00uvaa0sfd]  a, .top-row[b-00uvaa0sfd]  .btn-link {
        margin-left: 0;
    }
}

/* A home page's menu on a narrow screen (2026-09-28): folded behind a Menu button, opening as a
   list under the header, each page's own pages listed beneath it. The logo is smaller to start. */
@media (max-width: 767.98px) {
    .top-row .cm-homesite-menu-button[b-00uvaa0sfd] {
        display: inline-flex;
        align-items: center;
        padding: 0.3rem 0.75rem;
        border: 1px solid rgba(0, 0, 0, 0.25);
        border-radius: 0.35rem;
        background: none;
        color: inherit;
    }

    .top-row .cm-homesite-menu-button[b-00uvaa0sfd]::before {
        content: "\2630";
        margin-right: 0.4rem;
    }

    .top-row .cm-homesite-pages:not(.cm-open) .cm-homesite-menu[b-00uvaa0sfd] {
        display: none;
    }

    .top-row .cm-homesite-pages.cm-open .cm-homesite-menu[b-00uvaa0sfd] {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        z-index: 20;
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
        padding: 0.75rem 1rem;
        background: var(--cm-raised, #ffffff);
        border-bottom: 1px solid rgba(0, 0, 0, 0.15);
        box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    }

    .top-row .cm-homesite-item[b-00uvaa0sfd] {
        flex-direction: column;
        align-items: flex-start;
    }

    .top-row .cm-homesite-toggle[b-00uvaa0sfd] {
        display: none;
    }

    .top-row .cm-homesite-submenu[b-00uvaa0sfd],
    .top-row .cm-homesite-item:hover > .cm-homesite-submenu[b-00uvaa0sfd] {
        display: block;
        position: static;
        min-width: 0;
        padding: 0.25rem 0 0 1rem;
        border: 0;
        box-shadow: none;
        background: none;
    }

    .top-row .cm-homesite-submenu a[b-00uvaa0sfd] {
        padding: 0.2rem 0;
    }

    .top-row.cm-homesite-header .cm-homesite-logo img[b-00uvaa0sfd] {
        height: 4rem;
        max-width: 12rem;
    }
}

/* Nothing slides for a visitor who has asked for less motion: the header changes size at once. */
@media (prefers-reduced-motion: reduce) {
    .top-row.cm-homesite-header[b-00uvaa0sfd],
    .top-row.cm-homesite-header .cm-homesite-logo img[b-00uvaa0sfd] {
        transition: none;
    }
}

@media (min-width: 641px) {
    .page[b-00uvaa0sfd] {
        flex-direction: row;
    }

    .sidebar[b-00uvaa0sfd] {
        /* 15% narrower than the 250px it was, giving the content area that much more room. */
        width: 212.5px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-00uvaa0sfd] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-00uvaa0sfd]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-00uvaa0sfd], article[b-00uvaa0sfd] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

#blazor-error-ui[b-00uvaa0sfd] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-00uvaa0sfd] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

/* ---- Page footer ------------------------------------------------------- */

/* The shell is a column: the page fills what is left above the footer, and the footer spans
   the sidebar and the content beneath both. */
.cm-shell[b-00uvaa0sfd] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.cm-shell > .page[b-00uvaa0sfd] {
    flex: 1;
}

.cm-footer[b-00uvaa0sfd] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    font-size: 0.8rem;
    border-top: 1px solid var(--cm-border, #d6d5d5);
    background-color: var(--cm-surface, #f7f7f7);
    color: var(--cm-text, #212529);
}

.cm-footer a[b-00uvaa0sfd] {
    color: var(--cm-link, #1b6ec2);
}

.cm-footer-sep[b-00uvaa0sfd] {
    opacity: 0.5;
}

.cm-copyright[b-00uvaa0sfd] {
    opacity: 0.85;
}

/* The footer is now two stacked lines - links and copyright, then the social icons - so the
   flex direction turns and each line centres its own contents. */
.cm-footer[b-00uvaa0sfd] {
    flex-direction: column;
    gap: 0.35rem;
}

.cm-footer-line[b-00uvaa0sfd] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

/* The icons take the footer's own text color rather than the link color: six colored glyphs
   in a row would shout louder than the links above them. They brighten to the link color on
   hover, which is where they do read as links. */
.cm-footer-social[b-00uvaa0sfd] {
    gap: 0.75rem;
}

    .cm-footer-social a[b-00uvaa0sfd] {
        display: inline-flex;
        color: var(--cm-text, #212529);
        opacity: 0.75;
        line-height: 1;
    }

        .cm-footer-social a:hover[b-00uvaa0sfd],
        .cm-footer-social a:focus-visible[b-00uvaa0sfd] {
            color: var(--cm-link, #1b6ec2);
            opacity: 1;
        }

    .cm-footer-social svg[b-00uvaa0sfd] {
        width: 1.05rem;
        height: 1.05rem;
        fill: currentColor;
    }

/* dbo.SystemSettings.ApplicationVersion, the last line of the footer. 8pt as asked - a point
   size rather than rem, which is what "8 point" means and what the browser converts for itself
   (8pt is about 10.7px at the default 96dpi). */
.cm-footer-version[b-00uvaa0sfd] {
    font-size: 8pt;
    font-weight: 700;
    font-style: italic;
    opacity: 0.8;
}

/* While the cookie banner is over the foot of the page, the page ends this much higher up, so
   nothing it covers is unreachable. Matches the banner's own maximum height plus its padding -
   see Components/Shared/CookieConsentBanner.razor.css - and disappears the moment the banner
   is answered. */
.cm-shell-cookie[b-00uvaa0sfd] {
    padding-bottom: 20rem;
}

/* Narrower screens wrap the banner's text and stack its buttons, so it stands taller. Both
   figures clear the banner as it first appears, measured in a browser rather than guessed;
   opening Manage Consent Preferences makes it taller still, and closing it again is how the
   reader gets the page back. */
@media (max-width: 36rem) {
    .cm-shell-cookie[b-00uvaa0sfd] {
        padding-bottom: 32rem;
    }
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-vaqw04k8ud] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: white;
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}

.navbar-toggler:checked[b-vaqw04k8ud] {
    background-color: rgba(255, 255, 255, 0.5);
}

.top-row[b-vaqw04k8ud] {
    min-height: 3.5rem;
    background-color: rgba(0,0,0,0.4);

    /* No padding, so the title centres on the sidebar rather than 8px right of it. Bootstrap's
       ps-3 used to be on this element and was removed from the markup: the spacing utilities
       are declared !important, so no amount of specificity here could have overridden it. */
    padding-left: 0;
    padding-right: 0;
}

/* Bootstrap lays this out as a flex row with space-between; centre it instead. Qualified with
   .navbar so it beats Bootstrap's own .navbar > .container-fluid on specificity rather than on
   stylesheet order. */
.top-row.navbar > .container-fluid[b-vaqw04k8ud] {
    justify-content: center;
}

.navbar-brand[b-vaqw04k8ud] {
    font-size: 1.1rem;
    line-height: 1.15;
    white-space: normal;

    /* .navbar-brand ships with a right margin for the links that normally follow it; there are
       none here, and it would shift the centred text left by that much. */
    margin-right: 0;
    text-align: center;
}

/* The organization name, with the sub-organization underneath when there is one. */
/* The mark sits beside the name rather than above it: the bar is short, and a stacked lockup
   would push the organization's name off the top row on a phone. */
.cm-brand[b-vaqw04k8ud] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}

.cm-brand-logo[b-vaqw04k8ud] {
    flex: none;
    width: 2rem;
    height: 2rem;
}

.cm-brand-text[b-vaqw04k8ud] {
    min-width: 0;
}

.cm-brand-title[b-vaqw04k8ud] {
    display: block;
}

.cm-brand-subtitle[b-vaqw04k8ud] {
    display: block;
    font-size: 0.8rem;
    opacity: 0.85;
}

/* The organization chosen from the dropdown, named under the brand. Set apart from the
   subtitle above it - that one is part of the site's identity, this one is a choice the viewer
   made and can change. */
.cm-brand-organization[b-vaqw04k8ud] {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.78rem;
    font-weight: 600;
    opacity: 0.95;
}

.bi[b-vaqw04k8ud] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
    flex-shrink: 0;    /* the icon keeps its size next to a label that wraps */
}

.bi-house-door-fill-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}




.bi-people-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M15 14s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1h8zm-7.978-1A.261.261 0 0 1 7 12.996c.001-.264.167-1.03.76-1.72C8.312 10.629 9.282 10 11 10c1.717 0 2.687.63 3.24 1.276.593.69.758 1.457.76 1.72l-.008.002a.274.274 0 0 1-.014.002H7.022zM11 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0zM6.936 9.28a5.88 5.88 0 0 0-1.23-.247A7.35 7.35 0 0 0 5 9c-4 0-5 3-5 4 0 .667.333 1 1 1h4.216A2.238 2.238 0 0 1 5 13c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816zM4.92 10A5.493 5.493 0 0 0 4 13H1c0-.26.164-1.03.76-1.724.545-.636 1.492-1.256 3.16-1.275zM1.5 5.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0zm3-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");
}

.bi-building-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M4 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm-6 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm-6 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm-6 2a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5zm3 0a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 0 1h-1a.5.5 0 0 1-.5-.5z'/%3E%3Cpath d='M2 1a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V1zm1 0v14h10V1H3z'/%3E%3C/svg%3E");
}

/* An event's gallery of uploaded photos (2026-10-12): Bootstrap Icons' image. */
.bi-image-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M6.002 5.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z'/%3E%3Cpath d='M2.002 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2h-12zm12 1a1 1 0 0 1 1 1v6.5l-3.777-1.947a.5.5 0 0 0-.577.093l-3.71 3.71-2.66-1.772a.5.5 0 0 0-.63.062L1.002 12V3a1 1 0 0 1 1-1h12z'/%3E%3C/svg%3E");
}

.bi-journal-text-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M5 10.5a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0-2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z'/%3E%3Cpath d='M3 0h10a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H3z'/%3E%3C/svg%3E");
}

.bi-gear-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M9.405 1.05c-.413-1.4-2.397-1.4-2.81 0l-.1.34a1.464 1.464 0 0 1-2.105.872l-.31-.17c-1.283-.698-2.686.705-1.987 1.987l.169.311c.446.82.023 1.841-.872 2.105l-.34.1c-1.4.413-1.4 2.397 0 2.81l.34.1a1.464 1.464 0 0 1 .872 2.105l-.17.31c-.698 1.283.705 2.686 1.987 1.987l.311-.169a1.464 1.464 0 0 1 2.105.872l.1.34c.413 1.4 2.397 1.4 2.81 0l.1-.34a1.464 1.464 0 0 1 2.105-.872l.31.17c1.283.698 2.686-.705 1.987-1.987l-.169-.311a1.464 1.464 0 0 1 .872-2.105l.34-.1c1.4-.413 1.4-2.397 0-2.81l-.34-.1a1.464 1.464 0 0 1-.872-2.105l.17-.31c.698-1.283-.705-2.686-1.987-1.987l-.311.169a1.464 1.464 0 0 1-2.105-.872l-.1-.34zM8 10.93a2.929 2.929 0 1 1 0-5.86 2.929 2.929 0 0 1 0 5.858z'/%3E%3C/svg%3E");
}

.bi-person-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person' viewBox='0 0 16 16'%3E%3Cpath d='M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z'/%3E%3C/svg%3E");
}

.bi-person-badge-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person-badge' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0z'/%3E%3Cpath d='M4.5 0A2.5 2.5 0 0 0 2 2.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2.5A2.5 2.5 0 0 0 11.5 0h-7zM3 2.5A1.5 1.5 0 0 1 4.5 1h7A1.5 1.5 0 0 1 13 2.5v10.795a4.2 4.2 0 0 0-.776-.492C11.392 12.387 10.063 12 8 12s-3.392.387-4.224.803a4.2 4.2 0 0 0-.776.492V2.5z'/%3E%3C/svg%3E");
}

.bi-person-fill-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person-fill' viewBox='0 0 16 16'%3E%3Cpath d='M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3Zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z'/%3E%3C/svg%3E");
}

.bi-arrow-bar-left-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-arrow-bar-left' viewBox='0 0 16 16'%3E%3Cpath d='M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5ZM10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5Z'/%3E%3C/svg%3E");
}

.nav-item[b-vaqw04k8ud] {
    font-size: 0.9rem;
    padding-bottom: 0.15rem;
}

    .nav-item:first-of-type[b-vaqw04k8ud] {
        padding-top: 0.5rem;
    }

    .nav-item:last-of-type[b-vaqw04k8ud] {
        padding-bottom: 0.5rem;
    }

    /* min-height rather than height, and a normal line-height: a label too long for the
       sidebar ("System settings", "Activity Log") wraps to two lines, and a fixed 3rem box
       with a 3rem line-height let the second line spill over the item below it. */
    .nav-item[b-vaqw04k8ud]  .nav-link {
        color: #d7d7d7;
        background: none;
        border: none;
        border-radius: 4px;
        /* Still a min-height rather than a height, for the same reason as before: a label too
           long for the sidebar wraps, and a fixed box would let the second line spill over the
           item below. 2.25rem keeps a comfortable target while closing up the column. */
        min-height: 2.25rem;
        display: flex;
        align-items: center;
        line-height: 1.25;
        padding-block: 0.3rem;
        width: 100%;

        /* 90% of whatever the links inherit, rather than a fixed px: expressed this way the
           ratio survives a change to the base size. The icons are sized in rem and so keep
           their own dimensions. */
        font-size: 0.9em;
        font-weight: 700;
    }

.nav-item[b-vaqw04k8ud]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-vaqw04k8ud]  .nav-link:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

.nav-scrollable[b-vaqw04k8ud] {
    display: none;
}

.navbar-toggler:checked ~ .nav-scrollable[b-vaqw04k8ud] {
    display: block;
}

@media (min-width: 641px) {
    .navbar-toggler[b-vaqw04k8ud] {
        display: none;
    }

    .nav-scrollable[b-vaqw04k8ud] {
        /* Never collapse the sidebar for wide screens */
        display: block;

        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}

/* Contact Us and Contact Messages. Both are email icons and never appear together - the form
   is hidden from system administrators, the grid is offered only to them - but the open
   envelope reads as "messages received" against the plain one for "send us a message". */
.bi-envelope-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z'/%3E%3C/svg%3E");
}

.bi-envelope-open-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M8.47 1.318a1 1 0 0 0-.94 0l-6 3.2A1 1 0 0 0 1 5.4v.817l5.75 3.45L8 8.917l1.25.75L15 6.217V5.4a1 1 0 0 0-.53-.882l-6-3.2ZM15 7.383l-4.778 2.867L15 13.117V7.383Zm-.035 6.88L8 10.082l-6.965 4.18A1 1 0 0 0 2 15h12a1 1 0 0 0 .965-.738ZM1 13.116l4.778-2.867L1 7.383v5.734ZM7.059.435a2 2 0 0 1 1.882 0l6 3.2A2 2 0 0 1 16 5.4V14a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V5.4a2 2 0 0 1 1.059-1.765l6-3.2Z'/%3E%3C/svg%3E");
}

.bi-exclamation-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016.146.146 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.163.163 0 0 1-.054.06.116.116 0 0 1-.066.017H1.146a.115.115 0 0 1-.066-.017.163.163 0 0 1-.054-.06.176.176 0 0 1 .002-.183L7.884 2.073a.147.147 0 0 1 .054-.057zm1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566z'/%3E%3Cpath d='M7.002 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0zM7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995z'/%3E%3C/svg%3E");
}

/* The organization dropdown sits where a nav link would, so it lines up with them. */
/* The dropdowns sit in the same column as the links, so they carry the same tightened gap. */
.cm-nav-select[b-vaqw04k8ud] {
    padding-block: 0.2rem;
}

/* Submitted by wwwroot/js/nav-organization.js on change, so the button is only there for a
   browser with no script. The .cm-js class is set by that file, which means the button is shown
   exactly when it is needed and never flickers in for the people who do not need it. */
.cm-nav-go[b-vaqw04k8ud] {
    width: 100%;
    margin-top: 0.3rem;
    padding: 0.15rem;
    border: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 0.25rem;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 0.78em;
    font-weight: 700;
}

/* Not :global() - that is a CSS-modules idiom and Blazor's scoped-CSS rewriter drops the rule
   outright, silently. Written plainly, the rewriter appends the scope to the last compound
   selector, giving `html.cm-js .cm-nav-go[b-hash]`, which is what this needs. */
html.cm-js .cm-nav-go[b-vaqw04k8ud] {
    display: none;
}

.cm-nav-select select[b-vaqw04k8ud] {
    width: 100%;
    font-weight: 700;

    /* Smaller than the nav links and with the side padding trimmed: "Select an Organization" is
       the longest thing this control ever shows, and at the links' own size it was clipped in
       the narrowed sidebar. The right padding still has to clear the dropdown arrow. */
    font-size: 0.78em;
    padding-inline: 0.4rem 1.5rem;
}

/* The Add Blog Entry link's glyph. Hand-written like the rest of the nav icons - the app ships
   no icon font - and white, because the sidebar is dark in every theme. */
.bi-pencil-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z'/%3E%3C/svg%3E");
}

/* Mail Merge Fields: a nested list, for a catalogue of dropdowns and their entries. */
.bi-list-nested-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

/* A question mark in a circle, for the Help System. */
.bi-question-circle-nav-menu[b-vaqw04k8ud] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z'/%3E%3Cpath d='M5.255 5.786a.237.237 0 0 0 .241.247h.825c.138 0 .248-.113.266-.25.09-.656.54-1.134 1.342-1.134.686 0 1.314.343 1.314 1.168 0 .635-.374.927-.965 1.371-.673.489-1.206 1.06-1.168 1.987l.003.217a.25.25 0 0 0 .25.246h.811a.25.25 0 0 0 .25-.25v-.105c0-.718.273-.927 1.01-1.486.609-.463 1.244-.977 1.244-2.056 0-1.511-1.276-2.241-2.673-2.241-1.267 0-2.655.59-2.75 2.286zm1.557 5.763c0 .533.425.927 1.01.927.609 0 1.028-.394 1.028-.927 0-.552-.42-.94-1.029-.94-.584 0-1.009.388-1.009.94z'/%3E%3C/svg%3E");
}


/* A home page's own logo in the corner (2026-09-27), in place of the mark: as tall as the
   bar allows and its own shape, however wide or square it was drawn. */
.cm-brand-logo-image[b-vaqw04k8ud] {
    width: auto;
    height: 2.5rem;
    max-width: 9rem;
    object-fit: contain;
    border-radius: 0.25rem;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-otq2j3d38p],
.components-reconnect-repeated-attempt-visible[b-otq2j3d38p],
.components-reconnect-failed-visible[b-otq2j3d38p],
.components-pause-visible[b-otq2j3d38p],
.components-resume-failed-visible[b-otq2j3d38p],
.components-rejoining-animation[b-otq2j3d38p] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-retrying[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-failed[b-otq2j3d38p],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-otq2j3d38p] {
    display: block;
}


#components-reconnect-modal[b-otq2j3d38p] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-otq2j3d38p 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-otq2j3d38p 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-otq2j3d38p 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-otq2j3d38p]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-otq2j3d38p 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-otq2j3d38p {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-otq2j3d38p {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-otq2j3d38p {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-otq2j3d38p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-otq2j3d38p] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-otq2j3d38p] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-otq2j3d38p] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-otq2j3d38p] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-otq2j3d38p] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-otq2j3d38p] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-otq2j3d38p 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-otq2j3d38p] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-otq2j3d38p {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/AccessibilityStatement.razor.rz.scp.css */
/* The legal pages: a single measured column, since long paragraphs are unreadable at the full
   width of a wide screen. Shared verbatim with PrivacyPolicy.razor.css and TermsOfUse.razor.css. */

.cm-legal[b-ig8ogp4a44] {
    max-width: 52rem;
}

/* The page title is an h1, like every other page's, and nothing is set on it here: it should
   look like the title of any other page. */

/* The sections within it - h2 now that the title is h1. Smaller than the title and spaced away
   from the text above. */
.cm-legal h2[b-ig8ogp4a44] {
    margin-top: 1.5rem;
    font-size: 1.1rem;
}

.cm-legal p[b-ig8ogp4a44],
.cm-legal li[b-ig8ogp4a44] {
    line-height: 1.5;
}

.cm-legal ul[b-ig8ogp4a44] {
    margin-bottom: 1rem;
}

.cm-effective[b-ig8ogp4a44] {
    opacity: 0.75;
    font-style: italic;
}

.cm-legal-address[b-ig8ogp4a44] {
    margin-top: 0.5rem;
    padding: 0.6rem 0.9rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.25rem;
    background-color: var(--cm-surface, #ffffff);
    font-style: normal;
}
/* /Components/Pages/ActivityLog.razor.rz.scp.css */
/* The activity log grid: a wide, dense table that has to stay readable on a laptop, so the
   type is small and the table gets its own horizontal scroller rather than forcing the page
   to scroll sideways. */

.cm-log[b-suev4lrrzs] {
    font-size: 0.8em;
}

.cm-section[b-suev4lrrzs] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-suev4lrrzs] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

/* Auto-fit rather than a fixed column count: the seven filters sit on one row on a wide
   screen and reflow to two or three on a narrow one without a breakpoint for each case. */
.cm-filter-fields[b-suev4lrrzs] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 0.5rem;
}

.cm-field > label[b-suev4lrrzs] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

.cm-log .form-control[b-suev4lrrzs] {
    font-size: 1em;
    padding: 0.25rem 0.5rem;
    height: auto;
    min-height: 0;
    line-height: 1.35;
}

.cm-filter-actions[b-suev4lrrzs] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 0.6rem;
}

.cm-log .btn[b-suev4lrrzs] {
    font-size: 1em;
}

.cm-count[b-suev4lrrzs] {
    opacity: 0.75;
}

.cm-empty[b-suev4lrrzs] {
    opacity: 0.75;
}

.cm-grid-scroll[b-suev4lrrzs] {
    overflow-x: auto;
}

.cm-grid[b-suev4lrrzs] {
    font-size: 1em;
    margin-bottom: 0.75rem;
}

.cm-grid th[b-suev4lrrzs] {
    white-space: nowrap;
}

.cm-grid td[b-suev4lrrzs] {
    vertical-align: top;
}

/* The timestamp reads wrong when it wraps mid-value. */
.cm-when[b-suev4lrrzs] {
    white-space: nowrap;
}

/* Everything else is nailed to a column width; the message takes what is left. */
.cm-message[b-suev4lrrzs] {
    min-width: 18rem;
}

.cm-message pre[b-suev4lrrzs] {
    white-space: pre-wrap;
    word-break: break-word;
    margin: 0.25rem 0 0;
    font-size: 0.95em;
}

.cm-message summary[b-suev4lrrzs] {
    cursor: pointer;
    opacity: 0.75;
}

.cm-ok[b-suev4lrrzs] {
    color: var(--cm-ok, #26b050);
}

.cm-bad[b-suev4lrrzs] {
    color: var(--cm-bad, #e50000);
}

.cm-paging[b-suev4lrrzs] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* The headings are the sort controls, so they should not read as links in the body text. */
.cm-grid thead a[b-suev4lrrzs] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-suev4lrrzs] {
    text-decoration: underline;
}

.cm-sorted[b-suev4lrrzs] {
    font-weight: 700;
}

.cm-arrow[b-suev4lrrzs] {
    opacity: 0.7;
}
/* /Components/Pages/AddTestOrganization.razor.rz.scp.css */
/* The Add Test Organization form: each section boxed with its title sitting on the top-left of
   the border, the way System Settings and the organization profile draw theirs. Scoped CSS reaches
   only this page, so the box rules are repeated here rather than borrowed. */

.cm-lead[b-yk9mcha402] {
    opacity: 0.85;
}

.cm-section[b-yk9mcha402] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-yk9mcha402] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-yk9mcha402] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-yk9mcha402] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* ::deep because the inputs are rendered by InputText, a child component with its own scope
   identifier rather than this page's. */
.cm-field[b-yk9mcha402]  .cm-short {
    max-width: 12rem;
}

.cm-profilebar[b-yk9mcha402] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}
/* /Components/Pages/AttendeeImport.razor.rz.scp.css */
/* The spreadsheet import. The boxed-form look is not shared between pages - each page carries its
   own copy of .cm-section, .cm-field and .cm-profilebar - so without this file the page renders as
   bare Bootstrap: no box, and a legend the full width of the page. */

.cm-attendeeimport .cm-section[b-n1khrzptd4] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-attendeeimport legend[b-n1khrzptd4] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-attendeeimport .cm-field[b-n1khrzptd4] {
    margin-bottom: 0.75rem;
}

.cm-attendeeimport .cm-field label[b-n1khrzptd4] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-attendeeimport .cm-profilebar[b-n1khrzptd4] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.25rem;
}

.cm-attendeeimport .cm-templatelink[b-n1khrzptd4] {
    margin: 0.25rem 0 0.75rem;
    font-size: 0.95em;
}

/* The drop box is every upload's now (2026-10-02) - in wwwroot/app.css. */

/* ---- what happened ------------------------------------------------------------------------ */

.cm-attendeeimport ul.text-danger[b-n1khrzptd4] {
    margin-bottom: 0;
}
/* /Components/Pages/AttendeeProfile.razor.rz.scp.css */
/* The attendee profile. Attendee Information is one tall group in the left column; Contact
   Information, Properties and Mentorship stack down the right, so the two columns finish at
   roughly the same depth instead of leaving one of them empty. */

.cm-attendeeprofile .cm-section[b-46h55xxirs] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-attendeeprofile legend[b-46h55xxirs] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-attendeeprofile .cm-field[b-46h55xxirs] {
    margin-bottom: 0.75rem;
}

.cm-attendeeprofile .cm-field label[b-46h55xxirs] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

/* A disabled fieldset greys its contents, which is right for a control that cannot be used but
   wrong for a whole form being read. Keep the text legible and let the cursor say it is not
   editable. */
.cm-attendeeprofile fieldset[disabled] .form-control[b-46h55xxirs],
.cm-attendeeprofile fieldset[disabled] .form-select[b-46h55xxirs] {
    opacity: 1;
    background-color: var(--cm-surface-muted, rgba(0, 0, 0, 0.04));
    cursor: not-allowed;
}

.cm-readonly-note[b-46h55xxirs] {
    padding: 0.5rem 0.75rem;
    border-left: 3px solid var(--cm-accent, #1b6ec2);
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 8%, transparent);
    margin-bottom: 1rem;
}

/* A flag and the date it stamps, on one row: checkbox, then the date's label, then the box.
   Everything is on one line, so the whole row centres vertically rather than aligning to the
   bottom of a label stacked above an input. */
.cm-pair[b-46h55xxirs] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

/* A minimum width on each of the two label columns, so the pairs line up with each other:
   without it "Delete Date" being wider than "Lock Date" pushes its box out of step with the
   one above, and the two rows read as ragged rather than as a pair. */
.cm-pair-check[b-46h55xxirs] {
    flex: 0 0 auto;
    min-width: 7rem;
}

.cm-pair-check .form-check[b-46h55xxirs] {
    margin-bottom: 0;
}

/* The label sits to the left of the box rather than above it, so it must not be a block and
   must not wrap - a two-word label breaking in half would drag the box down with it. */
.cm-pair-date[b-46h55xxirs] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 0 1 auto;
    min-width: 0;
}

.cm-pair-date label[b-46h55xxirs] {
    display: inline-block;
    margin-bottom: 0;
    font-weight: 700;
    white-space: nowrap;
    min-width: 6rem;
}

/* Wide enough for MM/DD/YYYY and no wider - the box is never typed into, so there is nothing
   to leave room for. */
.cm-pair-date .form-control[b-46h55xxirs] {
    width: 7.5rem;
    flex: 0 0 auto;
}

/* Narrow enough that the three parts no longer fit across, the checkbox takes its own line and
   the label and box stay together on the next one. */
@media (max-width: 991.98px) {
    .cm-pair[b-46h55xxirs] {
        display: block;
    }

    .cm-pair-check[b-46h55xxirs] {
        margin-bottom: 0.5rem;
    }
}

/* The formatted address is built by the application, never typed, so it reads as text rather
   than as an empty box waiting for input - and it does not resize: four lines holds an address.
   This scoped rule out-specifies the global one in app.css, so it has to say so itself. */
.cm-attendeeprofile .cm-address[b-46h55xxirs] {
    resize: none;
    white-space: pre-wrap;
}

.cm-attendeeprofile .cm-date[b-46h55xxirs] {
    max-width: 12rem;
}

.cm-profilebar[b-46h55xxirs] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* ---- boxes that fold (2026-09-24: Address and Dates) ---------------------------------------
   The legend is a button, dressed as the legend it stands in for: the box's title in bold, with
   an arrow saying which way it is - pointing right while folded, down while open. */

.cm-attendeeprofile .cm-fold-toggle[b-46h55xxirs] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}

.cm-attendeeprofile .cm-fold-toggle[b-46h55xxirs]::before {
    content: "";
    width: 0.45rem;
    height: 0.45rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(-45deg);
    transition: transform 0.15s ease-in-out;
}

.cm-attendeeprofile .cm-fold-toggle[aria-expanded="true"][b-46h55xxirs]::before {
    transform: rotate(45deg);
}

.cm-attendeeprofile .cm-fold-toggle:focus-visible[b-46h55xxirs] {
    outline: 2px solid var(--cm-focus, #1b6ec2);
    outline-offset: 2px;
    border-radius: 0.2rem;
}

/* Folded, the box is just its title on the border - not a tall empty frame. */
.cm-attendeeprofile .cm-fold:has(> .cm-fold-body[hidden])[b-46h55xxirs] {
    padding-bottom: 0.25rem;
}

.cm-attendeeprofile .cm-fold:has(> .cm-fold-body[hidden]) legend[b-46h55xxirs] {
    margin-bottom: 0;
}

/* ---- the RSVPs / Registration Items grid (2026-09-24) --------------------------------------
   Grid styles are scoped per page in this app, like the boxes, so this page carries its own
   copy of the few the grid uses - the same as Attendees.razor.css. */

.cm-attendeeprofile .cm-grid-scroll[b-46h55xxirs] {
    overflow-x: auto;
}

.cm-attendeeprofile .cm-grid[b-46h55xxirs] {
    font-size: 1em;
    margin-bottom: 0;
}

.cm-attendeeprofile .cm-grid th[b-46h55xxirs] {
    white-space: nowrap;
}

.cm-attendeeprofile .cm-grid td[b-46h55xxirs] {
    vertical-align: top;
    white-space: nowrap;
}

.cm-attendeeprofile .cm-grid td.cm-wrap[b-46h55xxirs] {
    white-space: normal;
}

.cm-attendeeprofile .cm-num[b-46h55xxirs] {
    text-align: right;
}

.cm-attendeeprofile .cm-empty[b-46h55xxirs] {
    opacity: 0.75;
    font-style: italic;
}

.cm-attendeeprofile .cm-flag-cell[b-46h55xxirs] {
    text-align: center;
    width: 1%;
}

/* The staff Registration page's two columns (2026-10-07: "I want the registration grid to be 60% of the width on
   the right. On the left 40% I need the EventItems"): Event Items and the Registration grid, one above the other
   on a narrow screen, and the grid alone, full width, for somebody who may only look. */
.cm-reg-columns[b-46h55xxirs] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: 1rem;
    align-items: start;
}

.cm-reg-columns.cm-reg-columns-one[b-46h55xxirs] {
    grid-template-columns: minmax(0, 1fr);
}

@media (max-width: 991.98px) {
    .cm-reg-columns[b-46h55xxirs] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Checkout's two columns (2026-10-28): Items Purchased on the left, Transactions (the card) on the right, one above the
   other on a narrow screen. The item's words wrap onto two or more lines rather than widen the grid. */
.cm-checkout-columns[b-46h55xxirs] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}

.cm-checkout-columns > .cm-section[b-46h55xxirs] {
    margin: 0;
}

.cm-attendeeprofile .cm-checkout-items td.cm-wrap[b-46h55xxirs] {
    white-space: normal;
    overflow-wrap: anywhere;
    width: 100%;
}

/* The Transactions grid's words wrap so it fits its box (2026-10-28: "The Transactions grid should wrap the text to 2+
   lines if needed so it fits in the grid's width"); the amounts stay on one line. */
.cm-attendeeprofile .cm-reg-transactions td.cm-wrap[b-46h55xxirs] {
    white-space: normal;
    overflow-wrap: break-word;
}

.cm-attendeeprofile .cm-reg-transactions td:nth-child(2)[b-46h55xxirs] {
    width: 100%;
}

@media (max-width: 991.98px) {
    .cm-checkout-columns[b-46h55xxirs] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* A long list scrolls inside its box, so the Registration grid stays in view while an item is dragged to it. */
.cm-reg-options-scroll[b-46h55xxirs] {
    max-height: 70vh;
    overflow-y: auto;
}

/* A panel per item setting, as the calendar's palette has them (2026-10-07): open, its color as a dot. */
.cm-reg-group[b-46h55xxirs] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-left: 4px solid var(--cm-reg-color, var(--cm-accent, #1b6ec2));
    border-radius: 0.375rem;
    margin-bottom: 0.5rem;
    background: var(--cm-surface, #ffffff);
}

.cm-reg-group > summary[b-46h55xxirs] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.6rem;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}

.cm-reg-group > summary[b-46h55xxirs]::before {
    content: "\25B8";
    display: inline-block;
    width: 0.8em;
    transition: transform 0.15s ease;
}

.cm-reg-group[open] > summary[b-46h55xxirs]::before {
    transform: rotate(90deg);
}

.cm-reg-group > summary[b-46h55xxirs]::-webkit-details-marker {
    display: none;
}

.cm-reg-swatch[b-46h55xxirs] {
    flex: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background: var(--cm-reg-color, var(--cm-accent, #1b6ec2));
}

.cm-reg-groupcount[b-46h55xxirs] {
    font-weight: 400;
    color: var(--cm-muted, #6c757d);
}

.cm-reg-group .cm-reg-options[b-46h55xxirs] {
    margin-bottom: 0;
}

/* An item is picked up by its row. */
.cm-reg-options tr[draggable="true"][b-46h55xxirs] {
    cursor: grab;
}

/* On at the same time as something on the registration (2026-10-12), grayed by registration-builder.js; its Add
   button says why, and a drag is stopped saying the same. */
.cm-reg-options tr.cm-reg-overlapping > td[b-46h55xxirs] {
    color: var(--cm-muted, #6c757d);
}

.cm-reg-options tr.cm-reg-overlapping[b-46h55xxirs] {
    cursor: not-allowed;
}

/* Sold out (2026-10-15: "If an EventItem is sold out, indicate it in the item on the left and don't allow it to be
   dragged"): grayed, not draggable, marked Sold Out; its Add button says so. */
.cm-reg-options tr.cm-reg-soldout > td[b-46h55xxirs] {
    color: var(--cm-muted, #6c757d);
}

.cm-reg-options tr.cm-reg-soldout[b-46h55xxirs] {
    cursor: not-allowed;
}

/* An item's Add button while it can't be used - sold out, or on at the same time as something on the registration -
   looks it; clicked, it says why (confirm-submit.js). */
.cm-reg-options [data-cm-reg-add][aria-disabled="true"][b-46h55xxirs] {
    opacity: 0.5;
    cursor: not-allowed;
}

.cm-reg-soldout-badge[b-46h55xxirs] {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0.05rem 0.4rem;
    border-radius: 0.25rem;
    background: #b02a37;
    color: #fff;
    font-size: 0.75em;
    font-weight: 700;
    white-space: nowrap;
}

/* While an item is over the grid, so it is plain where it is about to land. */
.cm-reg-dropping[b-46h55xxirs] {
    outline: 3px dashed var(--cm-accent, #6f42c1);
    outline-offset: 2px;
}

.cm-reg-qty[b-46h55xxirs] {
    width: 5.5rem;
    margin-left: auto;
    text-align: right;
}

.cm-reg-grandtotal th[b-46h55xxirs],
.cm-reg-grandtotal td[b-46h55xxirs] {
    font-weight: 700;
}

/* The staff Registration page's Payment box (2026-10-12): its facts as label and value, then Payment Received and the
   two buttons. */
.cm-reg-payfacts[b-46h55xxirs] {
    display: grid;
    grid-template-columns: max-content auto;
    column-gap: 1.5rem;
    row-gap: 0.25rem;
    margin-bottom: 1rem;
}

.cm-reg-payfacts dt[b-46h55xxirs] {
    font-weight: 600;
}

.cm-reg-payfacts dd[b-46h55xxirs] {
    margin: 0;
}

.cm-hiddenform[b-46h55xxirs] {
    margin: 0;
}

/* The staff Registration page's checkout (2026-10-13): Back to Registration, the saved lines and what is owed, then the
   card with the brands the event takes, each with its small mark. */
.cm-checkout-back[b-46h55xxirs] {
    margin-bottom: 0.75rem;
}

.cm-checkout-mark[b-46h55xxirs] {
    height: 1.5rem;
    width: auto;
    vertical-align: middle;
    margin-right: 0.25rem;
}

.cm-checkout-brands[b-46h55xxirs] {
    margin-bottom: 0.75rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.75rem;
}

.cm-checkout-brands-label[b-46h55xxirs] {
    flex-basis: 100%;
    font-weight: 600;
}

.cm-checkout-brands .form-text[b-46h55xxirs] {
    flex-basis: 100%;
}

.cm-checkout-brand[b-46h55xxirs] {
    margin-right: 0;
}

/* Gift Received Date (2026-10-14): a date, not a line of text. */
.cm-attendeeprofile .cm-gift-date[b-46h55xxirs] {
    max-width: 11rem;
}

/* A registration line's Name on Badge, under its title (2026-10-14). */
.cm-reg-badge[b-46h55xxirs] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.5rem;
    margin-top: 0.25rem;
    font-size: 0.875em;
}

.cm-reg-badge-label[b-46h55xxirs] {
    font-weight: 600;
    white-space: nowrap;
}

.cm-reg-badge .cm-reg-badge-name[b-46h55xxirs] {
    width: auto;
    min-width: 12rem;
    flex: 1 1 12rem;
}

/* Print Name Tag and Tickets, beside Membership Number at the top (2026-10-27). */
/* The membership number and the full name, side by side as headings (2026-10-28). */
.cm-reg-identity[b-46h55xxirs] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 1.25rem;
}

.cm-reg-identity h2[b-46h55xxirs] {
    font-size: 1.35rem;
    /* Bold (2026-10-28: "make the membership number and attendee name bold"); Bootstrap's headings are 500. */
    font-weight: 700;
    margin: 0 0 0.5rem 0;
}

.cm-reg-nametags[b-46h55xxirs] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* The Registration box with the Payment box under it, in the right column (2026-10-27). */
/* Event Items with Membership & Name under it, in the left column (2026-10-27). */
.cm-reg-left[b-46h55xxirs] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.cm-reg-right[b-46h55xxirs] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.cm-reg-transactions[b-46h55xxirs] {
    margin-top: 0.75rem;
}

.cm-reg-transactions .cm-reg-refund-row td[b-46h55xxirs] {
    color: light-dark(#b00020, #ff8a80);
}

/* Anything deleted from the registration, in red (2026-10-27: "anything deleted from registration should be displayed in
   red"): a canceled line and its amounts. Its Canceled column still says Yes for a screen reader. */
.cm-registration-items tr.cm-reg-canceled-line td[b-46h55xxirs] {
    color: light-dark(#b00020, #ff8a80);
}

.cm-reg-check[b-46h55xxirs] {
    margin: 0.75rem 0;
}
/* /Components/Pages/Attendees.razor.rz.scp.css */
/* The attendee grid. Five columns, so unlike the user grid it fits without shrinking the type
   and the widths can be fixed proportions rather than left to the content. */

.cm-attendees[b-16hrp8nf7x] {
    font-size: 0.9em;
}

.cm-attendeebar[b-16hrp8nf7x] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.6rem;
}

.cm-attendees .btn[b-16hrp8nf7x] {
    font-size: 1em;
}

.cm-count[b-16hrp8nf7x] {
    opacity: 0.75;
}

.cm-hint[b-16hrp8nf7x] {
    opacity: 0.6;
    font-style: italic;
}

.cm-grid-scroll[b-16hrp8nf7x] {
    overflow-x: auto;
}

.cm-grid[b-16hrp8nf7x] {
    font-size: 1em;
    margin-bottom: 0.75rem;
}

/* table-layout: fixed is what makes the colgroup widths binding; without it the browser is
   free to ignore them and size the columns by their content instead. */
.cm-attendeegrid[b-16hrp8nf7x] {
    table-layout: fixed;
    width: 100%;
    min-width: 40rem;
}

/* Seven columns now. The two flags take their width from Full Name, which had the most to
   spare - the other four were already as narrow as their content allows. */
.cm-w-id[b-16hrp8nf7x] { width: 10%; }
.cm-w-name[b-16hrp8nf7x] { width: 24%; }
.cm-w-phone[b-16hrp8nf7x] { width: 15%; }
.cm-w-email[b-16hrp8nf7x] { width: 25%; }
.cm-w-flag[b-16hrp8nf7x] { width: 8%; }
.cm-w-delete[b-16hrp8nf7x] { width: 10%; }

.cm-grid th[b-16hrp8nf7x] {
    white-space: nowrap;
}

.cm-grid td[b-16hrp8nf7x] {
    vertical-align: top;
    white-space: nowrap;
}

/* The two columns that hold free text wrap instead, so a long address or name is readable
   rather than clipped at a fixed width. */
.cm-attendeegrid td.cm-wrap[b-16hrp8nf7x] {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* The heading is the sort control, so it should not read as body text. */
.cm-grid thead a[b-16hrp8nf7x] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-16hrp8nf7x] {
    text-decoration: underline;
}

.cm-sorted[b-16hrp8nf7x] {
    font-weight: 700;
}

.cm-arrow[b-16hrp8nf7x] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its inputs should not inflate the row height. */
.cm-filters th[b-16hrp8nf7x] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
}

.cm-attendees .form-control[b-16hrp8nf7x] {
    font-size: 1em;
    padding: 0.15rem 0.35rem;
    height: auto;
    min-height: 0;
    line-height: 1.3;
    min-width: 0;
}

.cm-num[b-16hrp8nf7x] {
    text-align: right;
}

.cm-empty[b-16hrp8nf7x] {
    opacity: 0.75;
    font-style: italic;
}

/* Delete sits at the right-hand end and is centred in its column, so the row of bins reads as
   one column of controls rather than as ragged text. The two flags are centred for the same
   reason. */
.cm-delete-head[b-16hrp8nf7x],
.cm-delete-cell[b-16hrp8nf7x],
.cm-flag-cell[b-16hrp8nf7x] {
    text-align: center;
}

/* A disabled checkbox is greyed almost to invisibility by default, which is wrong for one being
   used to report a value rather than to refuse input. Keep it legible and let the cursor say it
   is not something to click. */
.cm-attendees .cm-flag[b-16hrp8nf7x] {
    opacity: 1;
    cursor: default;
    float: none;
    margin: 0;
}

.cm-attendees .cm-flag:disabled[b-16hrp8nf7x] {
    filter: none;
}

/* The minimum table width has to grow with the two extra columns, or the flags squeeze the
   name and email columns instead of turning the scroller on. */
.cm-attendeegrid[b-16hrp8nf7x] {
    min-width: 52rem;
}

.cm-trash[b-16hrp8nf7x] {
    line-height: 1;
    padding: 0.2rem 0.55rem;
}

/* The nav's .bi icons are white SVGs painted as background images, which is right on the dark
   sidebar and invisible on a white table row - and there is no bin among them. This is the
   Bootstrap Icons bin drawn as a mask instead of a background, so the shape takes the button's
   own color: red while the button is at rest, white once the hover inverts it. */
.cm-trash-icon[b-16hrp8nf7x] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-trash-mask);
    mask-image: var(--cm-trash-mask);
}

/* The way back, for a row already marked deleted. */
.cm-restore-icon[b-16hrp8nf7x] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-restore-mask);
    mask-image: var(--cm-restore-mask);
}

.cm-restore-icon[b-16hrp8nf7x] {
    --cm-restore-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z'/%3E%3Cpath d='M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466z'/%3E%3C/svg%3E");
}

/* A deleted row is still listed - it just should not read as a live one. */
.cm-attendeegrid tbody tr.cm-deleted > td[b-16hrp8nf7x] {
    opacity: 0.55;
    font-style: italic;
}

.cm-trash-icon[b-16hrp8nf7x] {
    --cm-trash-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E");
}

/* The form every delete button posts to. It carries nothing but the antiforgery token, so it
   has no height of its own and should take up no space. */
.cm-hiddenform[b-16hrp8nf7x] {
    margin: 0;
}

/* The whole row is double-clickable, so say so with the cursor and light the row under the
   pointer. The accent tint is mixed into the theme's own surface color, so it reads the same
   way on the light themes and the dark ones instead of being a fixed grey.
   Both rules have to beat Bootstrap's .table-striped, which paints every other row through
   --bs-table-striped-bg at (0,2,0); these are (0,3,0) and (0,3,1). */
.cm-grid tbody tr[data-row-href][b-16hrp8nf7x] {
    cursor: pointer;
}

.cm-attendees .cm-grid tbody tr[data-row-href]:hover > td[b-16hrp8nf7x] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

.cm-paging[b-16hrp8nf7x] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* At phone width the fixed proportions stop helping: the table keeps its minimum width and the
   scroller takes over, which is the same answer the user grid gives. */
@media (max-width: 575.98px) {
    .cm-attendees[b-16hrp8nf7x] {
        font-size: 0.8em;
    }
}
/* /Components/Pages/BlogEntry.razor.rz.scp.css */
/* The blog editor. Quill gives its container no height of its own, and an entry is longer than
   a comment or a contact message, so this one is taller than the 12rem those use. */
.cm-blogedit[b-frye8ff7pd]  .cm-quill,
.cm-blogedit .cm-quill[b-frye8ff7pd] {
    min-height: 22rem;
    background-color: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
}

/* Quill draws its own chrome, which defaults to light. Point it at the theme's colors so the
   editor does not sit as a white slab on the dark themes. */
.cm-blogedit[b-frye8ff7pd]  .ql-toolbar,
.cm-blogedit[b-frye8ff7pd]  .ql-container {
    border-color: var(--cm-border, #d6d5d5);
}

.cm-blogedit[b-frye8ff7pd]  .cm-quill-value {
    display: none;
}

.cm-field[b-frye8ff7pd] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-frye8ff7pd] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* The published flag is a checkbox with its label beside it, not above it. */
.cm-check > label[b-frye8ff7pd] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    opacity: 1;
}

.cm-section[b-frye8ff7pd] {
    max-width: 60rem;
    margin-bottom: 1rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
}

    .cm-section > legend[b-frye8ff7pd] {
        width: auto;
        padding: 0 0.4rem;
        font-size: 1rem;
        font-weight: 600;
    }

.cm-blogbar[b-frye8ff7pd] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

/* Kept clear of the save row above it: deleting an entry should not be a neighbour of saving. */
.cm-blogdelete[b-frye8ff7pd] {
    margin-top: 1.5rem;
}
/* /Components/Pages/BlogView.razor.rz.scp.css */
/* A blog entry in the content panel. The body is whatever Quill wrote, so the rules here are
   about giving that HTML sane spacing rather than styling particular elements. */

.cm-blog[b-crwd9j0ixj] {
    max-width: 52rem;
}

.cm-blog-meta[b-crwd9j0ixj] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 1rem;
    font-size: 0.85em;
    opacity: 0.75;
}

.cm-blog-sep[b-crwd9j0ixj] {
    opacity: 0.5;
}

/* A draft is only ever visible to its author or an administrator, so this says why it looks
   different from what a visitor would see. */
.cm-blog-draft[b-crwd9j0ixj] {
    padding: 0.05rem 0.4rem;
    border-radius: 0.25rem;
    background: var(--cm-bad, #e50000);
    color: #fff;
    font-size: 0.85em;
    font-weight: 600;
    opacity: 0.9;
}

.cm-blog-body[b-crwd9j0ixj] {
    line-height: 1.55;
}

    .cm-blog-body :first-child[b-crwd9j0ixj] {
        margin-top: 0;
    }

    .cm-blog-body img[b-crwd9j0ixj] {
        max-width: 100%;
        height: auto;
    }

    .cm-blog-body blockquote[b-crwd9j0ixj] {
        margin-left: 0;
        padding-left: 0.9rem;
        border-left: 3px solid var(--cm-border, #d6d5d5);
        opacity: 0.9;
    }

/* For whoever may change the entry (2026-10-12): its Published box, then Edit This Entry. */
.cm-blog-actions[b-crwd9j0ixj] {
    margin-top: 1.5rem;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.75rem 2rem;
}

.cm-blog-published .form-text[b-crwd9j0ixj] {
    margin-top: 0;
}

/* The bare /Blog address, which lists the entries instead of showing one. */
.cm-blog-list[b-crwd9j0ixj] {
    list-style: none;
    padding-left: 0;
}

    .cm-blog-list li[b-crwd9j0ixj] {
        padding: 0.25rem 0;
    }

    .cm-blog-list .cm-blog-meta[b-crwd9j0ixj] {
        display: inline;
        margin-left: 0.5rem;
    }

.cm-empty[b-crwd9j0ixj] {
    opacity: 0.75;
}

/* Previous on the left, Next on the right, at the foot of an entry. The one that has nowhere to
   go keeps its place, greyed out, so the pair does not jump about. */
/* Three columns, so Back to Blog Entry sits in the true middle however long the two either side
   are - Previous against the left edge, Next against the right. */
.cm-blog-pager[b-crwd9j0ixj] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
    margin: 2rem 0 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--cm-border, #d6d5d5);
}

.cm-blog-prev[b-crwd9j0ixj],
.cm-blog-next[b-crwd9j0ixj],
.cm-blog-back[b-crwd9j0ixj] {
    font-weight: 600;
    text-decoration: none;
}

.cm-blog-prev[b-crwd9j0ixj] {
    grid-column: 1;
    justify-self: start;
}

.cm-blog-back[b-crwd9j0ixj] {
    grid-column: 2;
    justify-self: center;
}

.cm-blog-next[b-crwd9j0ixj] {
    grid-column: 3;
    justify-self: end;
    text-align: right;
}

.cm-blog-prev:hover[b-crwd9j0ixj],
.cm-blog-next:hover[b-crwd9j0ixj],
.cm-blog-back:hover[b-crwd9j0ixj] {
    text-decoration: underline;
}

.cm-blog-off[b-crwd9j0ixj] {
    opacity: 0.4;
    cursor: default;
}
/* /Components/Pages/ContactMessages.razor.rz.scp.css */
/* The Contact Messages grid, and the panel a row opens below it. */

.cm-messages[b-1y792nvn7n] {
    font-size: 0.8em;
}

.cm-grid-scroll[b-1y792nvn7n] {
    overflow-x: auto;
}

.cm-grid[b-1y792nvn7n] {
    font-size: 1em;
    margin-bottom: 0.5rem;
}

.cm-grid th[b-1y792nvn7n] {
    white-space: nowrap;
}

.cm-grid td[b-1y792nvn7n] {
    vertical-align: top;
    white-space: nowrap;
}

.cm-when[b-1y792nvn7n] {
    white-space: nowrap;
}

/* The message preview: the full text is the browser's own tooltip. */
.cm-description[b-1y792nvn7n] {
    cursor: help;
    white-space: nowrap;
}

.cm-empty[b-1y792nvn7n] {
    opacity: 0.75;
    font-style: italic;
}

.cm-count[b-1y792nvn7n] {
    opacity: 0.75;
}

.cm-paging[b-1y792nvn7n] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

/* A single click opens the row, so say so with the cursor and light the row under the pointer.
   Both rules have to beat Bootstrap's .table-striped, which paints every other row through
   --bs-table-striped-bg at (0,2,0); these are (0,3,0) and (0,3,1). */
.cm-grid tbody tr[data-row-href][b-1y792nvn7n] {
    cursor: pointer;
}

.cm-messages .cm-grid tbody tr[data-row-href]:hover > td[b-1y792nvn7n] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

/* The row whose message is open below. (0,3,1), so it beats the striping too. */
.cm-messages .cm-grid tbody tr.cm-selected > td[b-1y792nvn7n] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 24%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    font-weight: 600;
}

/* ---- The message panel ------------------------------------------------- */

.cm-section[b-1y792nvn7n] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-1y792nvn7n] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

/* Label/value pairs in two columns, the labels sized to their content. */
.cm-detail-grid[b-1y792nvn7n] {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.2rem 1rem;
    margin: 0 0 0.9rem;
}

.cm-detail-grid dt[b-1y792nvn7n] {
    font-weight: 600;
    opacity: 0.85;
}

.cm-detail-grid dd[b-1y792nvn7n] {
    margin: 0;
}

/* The message itself is plain text, so the line breaks the sender typed are the only
   formatting there is - pre-wrap is what keeps them. */
.cm-message-body[b-1y792nvn7n] {
    white-space: pre-wrap;
    padding: 0.6rem 0.8rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.25rem;
    background-color: var(--cm-surface, #ffffff);
    margin-bottom: 0.9rem;
}

.cm-attachments h3[b-1y792nvn7n] {
    font-size: 1em;
    font-weight: 600;
    margin-bottom: 0.3rem;
}

.cm-attachments ul[b-1y792nvn7n] {
    list-style: none;
    padding-left: 0;
    margin-bottom: 0.9rem;
}

.cm-attachments li[b-1y792nvn7n] {
    margin-bottom: 0.2rem;
}

.cm-attachments li .cm-count[b-1y792nvn7n] {
    margin-left: 0.5rem;
}

/* ---- The attachment viewer --------------------------------------------- */

.cm-viewer-bar[b-1y792nvn7n] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.cm-viewer-image[b-1y792nvn7n] {
    display: block;
    max-width: 100%;
    max-height: 32rem;
    height: auto;
}

.cm-viewer-frame[b-1y792nvn7n] {
    display: block;
    width: 100%;
    height: 32rem;
    border: 1px solid var(--cm-border, #d6d5d5);
}

.cm-download[b-1y792nvn7n] {
    margin-left: 0.75rem;
}

.cm-num[b-1y792nvn7n] {
    text-align: right;
}
/* /Components/Pages/ContactUs.razor.rz.scp.css */
/* The Contact Us form: a single column, since every field is full width. */

.cm-contact[b-unqncrsyr5] {
    font-size: 0.9em;
    max-width: 48rem;
}

.cm-intro[b-unqncrsyr5] {
    opacity: 0.85;
    margin-bottom: 1rem;
}

.cm-field[b-unqncrsyr5] {
    margin-bottom: 0.9rem;
}

.cm-field > label[b-unqncrsyr5] {
    display: block;
    margin-bottom: 0.2rem;
    font-weight: 700;
}

.cm-contact[b-unqncrsyr5]  .form-control,
.cm-contact[b-unqncrsyr5]  .form-select,
.cm-contact .form-control[b-unqncrsyr5] {
    font-size: 1em;
}

.cm-contact[b-unqncrsyr5]  .form-text,
.cm-contact .form-text[b-unqncrsyr5] {
    font-size: 0.9em;
    margin-top: 0.15rem;
}

/* The editor needs a working height; Quill gives its container none of its own. */
.cm-contact[b-unqncrsyr5]  .cm-quill,
.cm-contact .cm-quill[b-unqncrsyr5] {
    min-height: 12rem;
    background-color: var(--cm-surface, #ffffff);
}
/* /Components/Pages/CSSPreview.razor.rz.scp.css */
/* Scoped to the theme preview. Everything else on the page is styled by the theme under test,
   which is the whole point - only this chrome is held constant so the themes can be compared. */

/* The theme's background color, above Heading Level One (2026-10-06). */
.cm-preview-bg[b-t0ntrya717] {
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
}

.cm-preview-bg label[b-t0ntrya717] {
    font-weight: 600;
}

.cm-preview-bg output[b-t0ntrya717] {
    font-family: Consolas, 'Courier New', monospace;
}

.cm-preview-bar[b-t0ntrya717] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: baseline;
    font-size: 0.85rem;
    margin-bottom: 0.75rem;
}

.cm-preview-themes[b-t0ntrya717] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.cm-chip[b-t0ntrya717] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35rem;
    padding: 0.2rem 0.6rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 999px;
    font-size: 0.8rem;
    text-decoration: none;
}

.cm-chip:hover[b-t0ntrya717] {
    border-color: var(--cm-accent, #1b6ec2);
}

.cm-chip-current[b-t0ntrya717] {
    background-color: var(--cm-accent, #1b6ec2);
    border-color: var(--cm-accent, #1b6ec2);
    color: var(--cm-accent-text, #ffffff);
}

.cm-chip-mode[b-t0ntrya717] {
    font-size: 0.7rem;
    opacity: 0.75;
}
/* /Components/Pages/Error.razor.rz.scp.css */
/* The error page is a short, centred message rather than a form, so it is centred on the page
   and given room to breathe instead of sitting hard against the top-left. */

.cm-error[b-pc2mowsf3s] {
    max-width: 40rem;
    margin: 0 auto;
    padding-block: 3rem;
    text-align: center;
}

.cm-error h2[b-pc2mowsf3s] {
    margin-bottom: 0.25rem;
}

.cm-error h3[b-pc2mowsf3s] {
    margin-bottom: 1.25rem;
}

.cm-error p[b-pc2mowsf3s] {
    margin-bottom: 1rem;
}

.cm-reference code[b-pc2mowsf3s] {
    /* The trace id is long and hyphen-free, so let it break rather than widen the page. */
    word-break: break-all;
}
/* /Components/Pages/ErrorLogs.razor.rz.scp.css */
/* The user grid: thirteen columns, so the type is small and the table gets its own horizontal
   scroller rather than forcing the page to scroll sideways. */

.cm-users[b-9aq2vk4web] {
    font-size: 0.8em;
}

.cm-userbar[b-9aq2vk4web] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.6rem;
}

.cm-users .btn[b-9aq2vk4web] {
    font-size: 1em;
}

.cm-count[b-9aq2vk4web] {
    opacity: 0.75;
}

.cm-hint[b-9aq2vk4web] {
    opacity: 0.6;
    font-style: italic;
}

.cm-grid-scroll[b-9aq2vk4web] {
    overflow-x: auto;
}

.cm-grid[b-9aq2vk4web] {
    font-size: 1em;
    margin-bottom: 0.75rem;
}

.cm-grid th[b-9aq2vk4web] {
    white-space: nowrap;
}

.cm-grid td[b-9aq2vk4web] {
    vertical-align: top;
    white-space: nowrap;
}

/* The heading is the sort control, so it should not read as body text. */
.cm-grid thead a[b-9aq2vk4web] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-9aq2vk4web] {
    text-decoration: underline;
}

.cm-sorted[b-9aq2vk4web] {
    font-weight: 700;
}

.cm-arrow[b-9aq2vk4web] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its inputs should not inflate the row height. */
.cm-filters th[b-9aq2vk4web] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
}

.cm-users .form-control[b-9aq2vk4web],
.cm-users .form-select[b-9aq2vk4web] {
    font-size: 1em;
    padding: 0.15rem 0.35rem;
    height: auto;
    min-height: 0;
    line-height: 1.3;
    min-width: 6rem;
}

.cm-num[b-9aq2vk4web] {
    text-align: right;
}

.cm-when[b-9aq2vk4web] {
    white-space: nowrap;
}

.cm-empty[b-9aq2vk4web] {
    opacity: 0.75;
    font-style: italic;
}

/* The whole row is double-clickable, so say so with the cursor and light the row under the
   pointer. The accent tint is mixed into the theme's own surface color, so it reads the same
   way on the light themes and the dark ones instead of being a fixed grey.
   Both rules have to beat Bootstrap's .table-striped, which paints every other row through
   --bs-table-striped-bg at (0,2,0); these are (0,3,0) and (0,3,1). */
.cm-grid tbody tr[data-row-href][b-9aq2vk4web] {
    cursor: pointer;
}

.cm-users .cm-grid tbody tr[data-row-href]:hover > td[b-9aq2vk4web] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

.cm-paging[b-9aq2vk4web] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* Only the opening of the description is shown; the rest is in the browser's own tooltip, so
   the cursor hints that hovering is worth doing. */
.cm-description[b-9aq2vk4web] {
    cursor: help;
    white-space: nowrap;
}
/* /Components/Pages/EventGallery.razor.rz.scp.css */
/* An event's gallery of uploaded photos (2026-10-12): a grid of small previews, as many to a row as fit, each opening
   at full size. */

.cm-gallery-back[b-zriwgqmn9f] {
    margin-top: -0.25rem;
    margin-bottom: 1rem;
}

.cm-gallery-count[b-zriwgqmn9f] {
    opacity: 0.8;
    margin-bottom: 0.75rem;
}

.cm-gallery[b-zriwgqmn9f] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 1rem;
}

.cm-gallery-photo[b-zriwgqmn9f] {
    margin: 0;
}

.cm-gallery-photo a[b-zriwgqmn9f] {
    display: block;
    border-radius: 0.375rem;
    overflow: hidden;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    background: var(--cm-raised, transparent);
}

.cm-gallery-photo img[b-zriwgqmn9f] {
    display: block;
    width: 100%;
    height: 10rem;
    object-fit: cover;
}

.cm-gallery-photo a:focus-visible[b-zriwgqmn9f] {
    outline: 3px solid var(--cm-accent, #0d6efd);
    outline-offset: 2px;
}

.cm-gallery-caption[b-zriwgqmn9f] {
    margin: 0.35rem 0 0;
    font-size: 0.9rem;
    overflow-wrap: break-word;
}

.cm-gallery-by[b-zriwgqmn9f] {
    opacity: 0.8;
}

.cm-gallery-empty[b-zriwgqmn9f] {
    font-style: italic;
    opacity: 0.85;
}

/* Add Your Photos (2026-10-14): where a guest who scanned the QR code adds theirs - big enough to use on a phone. */
.cm-gallery-add[b-zriwgqmn9f] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.5rem;
    background: var(--cm-raised, transparent);
    padding: 1rem;
    margin: 0 0 1.5rem;
    max-width: 44rem;
}

.cm-gallery-add h2[b-zriwgqmn9f] {
    font-size: 1.35rem;
    margin: 0 0 0.5rem;
}

.cm-gallery-add-label[b-zriwgqmn9f] {
    display: block;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.cm-gallery-add input[type="file"][b-zriwgqmn9f] {
    font-size: 1rem;
    max-width: 100%;
}

.cm-gallery-add-fields[b-zriwgqmn9f] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 0.75rem;
    margin: 0.75rem 0;
}

.cm-gallery-add-field label[b-zriwgqmn9f] {
    display: block;
    font-weight: 600;
    margin-bottom: 0.2rem;
}

.cm-gallery-add-submit[b-zriwgqmn9f] {
    width: 100%;
    max-width: 20rem;
}

.cm-gallery-add-status[b-zriwgqmn9f] {
    margin: 0.6rem 0 0;
    font-weight: 600;
}

.cm-gallery-add-status:empty[b-zriwgqmn9f] {
    display: none;
}

.cm-gallery-add-note[b-zriwgqmn9f] {
    margin: 0.6rem 0 0;
    font-size: 0.9rem;
    opacity: 0.85;
}

/* The field nobody fills in, off the page rather than hidden, which some form fillers skip. */
.cm-gallery-trap[b-zriwgqmn9f] {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
/* /Components/Pages/EventProfile.razor.rz.scp.css */
/* The event profile. Three rows: two columns of one height, then the content group across the
   full width, then social media beside the venues grid. */

.cm-eventprofile .cm-section[b-c21iqgikcm] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-eventprofile legend[b-c21iqgikcm] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-eventprofile .cm-field[b-c21iqgikcm] {
    margin-bottom: 0.75rem;
}

.cm-eventprofile .cm-field label[b-c21iqgikcm] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

/* A disabled fieldset greys its contents, which is right for a control that cannot be used but
   wrong for a whole form being read. Keep the text legible; the cursor says it is not editable. */
.cm-eventprofile fieldset[disabled] .form-control[b-c21iqgikcm],
.cm-eventprofile fieldset[disabled] .form-select[b-c21iqgikcm] {
    opacity: 1;
    background-color: var(--cm-surface-muted, rgba(0, 0, 0, 0.04));
    cursor: not-allowed;
}

.cm-readonly-note[b-c21iqgikcm] {
    padding: 0.5rem 0.75rem;
    border-left: 3px solid var(--cm-accent, #1b6ec2);
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 8%, transparent);
    margin-bottom: 1rem;
}

/* ---- boxes of their own height -------------------------------------------------------------

   These two rules made a box fill its column, so that Basic Information and Event Properties
   were always the same height. That was right while each column held one box. It is not now:
   Payment Processing and Web Pages are boxes of their own in the right-hand column, and a box
   above them stretched to the full column height left 628px of nothing between its last field
   and its own foot - and stretched the description editor beside it to match.

   So the rule is kept for anything that still asks for it by class, and the two boxes on this
   tab no longer do: each is as tall as what is in it. */
.cm-eventprofile .cm-grow[b-c21iqgikcm] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.cm-eventprofile .cm-field-grow[b-c21iqgikcm] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

/* The editor is the part that takes up the slack. min-height keeps it usable when the other
   column happens to be the shorter of the two. */
/* The description box.

   It used to be flex: 1 1 auto with a 12rem floor, which meant it stretched to whatever height
   the Event Properties column next to it happened to be - 581px on a wide screen - and the floor
   never bound it. Reducing that floor changed nothing on screen, so this sets the height
   instead: 16rem is 45% of the height it was actually rendering at, and the box scrolls when
   there is more text than that. */
.cm-eventprofile .cm-quill-grow[b-c21iqgikcm] {
    flex: 0 0 auto;
    height: 16rem;
    overflow: auto;
}

/* The toolbar-free editors in the content group. A fixed working height, since nothing here
   has to match a neighbouring column. */
.cm-eventprofile .cm-quill-block[b-c21iqgikcm] {
    min-height: 9rem;
}

/* Without a toolbar Quill's snow theme leaves the editor with no top border of its own, which
   reads as an unfinished box. Give it the same edge every other control has. */
.cm-eventprofile .cm-quill[b-c21iqgikcm] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    background: var(--cm-input-bg, #ffffff);
}

.cm-eventprofile .cm-short[b-c21iqgikcm] {
    max-width: 12rem;
}

/* ---- the venues grid ---------------------------------------------------------------------- */

.cm-venuegrid[b-c21iqgikcm] {
    font-size: 0.85em;
    margin-bottom: 0;
}

.cm-venuegrid th[b-c21iqgikcm] {
    white-space: nowrap;
}

.cm-grid-scroll[b-c21iqgikcm] {
    overflow-x: auto;
}

.cm-empty[b-c21iqgikcm] {
    opacity: 0.75;
    font-style: italic;
}

.cm-profilebar[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* The home page button and the note beside it. */
.cm-homepage[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.cm-homepage-hint[b-c21iqgikcm] {
    opacity: 0.7;
    font-style: italic;
}

/* ---- the tab strip ------------------------------------------------------------------------
   Links, not buttons: each tab is a place the server can be asked for, so the strip works with
   no script and every tab is linkable. */
/* One strip that wraps. How many tabs are on a line is the browser's to decide from the
   window: eighteen fit across a wide screen, four or five across a phone, and nothing in the
   markup names a break.

   The rule the open tab sits on is the container's, so it is always under the last line however
   many lines there are.

   row-gap is 2px rather than 0 for the sake of the open tab, which hangs 2px below itself to
   break through that rule. On the last line it breaks through and joins the panel, which is the
   point; on any line above, that 2px lands in this gap instead of over the tabs beneath. */
.cm-tabs[b-c21iqgikcm] {
    display: flex;
    flex-wrap: wrap;
    column-gap: 0.25rem;
    row-gap: 2px;
    border-bottom: 2px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    margin-bottom: 1rem;
}

.cm-tab[b-c21iqgikcm] {
    /* Tight against text this small. Narrower padding also buys width - more tabs reach each
       line before the strip wraps. */
    padding: 0.25rem 0.55rem;

    /* Every tab is drawn, in the same line and color the open one uses, so the strip reads as
       a row of tabs rather than as words with one box among them. What marks the open one is
       its fill and the way it breaks through the rule below. */
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-bottom: none;

    border-radius: 0.375rem 0.375rem 0 0;
    /* Black on a light theme, white on a dark one, whatever the tab (2026-10-26: "Make all the tabs black for light
       colored CSS themes and white for the dark themes"): every theme sets color-scheme, which light-dark() follows.
       The item colors stay on the Registration page and the calendar. */
    color: light-dark(#000000, #ffffff);
    text-decoration: none;
    white-space: nowrap;

    /* Two thirds of the body size, and bold to carry at that size. */
    font-size: 0.67rem;
    font-weight: 700;
}

/* Sits on top of the strip's own border, so the open tab joins the panel below it. Harmless on
   a tab that has wrapped above the last line: the 2px falls in the strip's row gap. */
.cm-tab[b-c21iqgikcm] {
    margin-bottom: -2px;
}

/* The content item tabs start a new line, a little below the permanent ones (2026-10-29). */
.cm-tab-break[b-c21iqgikcm] {
    flex-basis: 100%;
    height: 0.6rem;
}

.cm-tab:hover[b-c21iqgikcm] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 10%, transparent);
}

.cm-tab-on[b-c21iqgikcm] {
    border-bottom: 2px solid var(--cm-surface, #ffffff);
    background-color: var(--cm-surface, #ffffff);
}


.cm-tabpanel[b-c21iqgikcm] {
    min-height: 20rem;
}

/* ---- the bars above the grids, and the grids themselves ------------------------------------ */
.cm-rowbar[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
}

.cm-filterbox[b-c21iqgikcm] {
    max-width: 14rem;
}

.cm-count[b-c21iqgikcm] {
    opacity: 0.75;
}

.cm-hint[b-c21iqgikcm] {
    opacity: 0.6;
    font-style: italic;
}

.cm-eugrid[b-c21iqgikcm],
.cm-venuegrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-euname[b-c21iqgikcm] { width: 40%; }
.cm-w-euflag[b-c21iqgikcm] { width: 25%; }
.cm-w-euaccess[b-c21iqgikcm] { width: 20%; }

/* An event user's second grid (2026-10-02): the setting's title, then six boxes of even width. */
.cm-eusettings[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-eusettings th:first-child[b-c21iqgikcm] {
    width: 28%;
    font-weight: 600;
}

.cm-eusettings th[b-c21iqgikcm] {
    vertical-align: bottom;
}

.cm-eusettings td[b-c21iqgikcm],
.cm-eusettings thead th:not(:first-child)[b-c21iqgikcm] {
    text-align: center;
}

/* Its boxes are controls, not reports: a darker edge to see them by and a pointer. A grayed one is
   faded - clicked, it says why (wwwroot/js/event-user-access.js). */
.cm-eventprofile .cm-eusettings .cm-flag[b-c21iqgikcm] {
    border-color: #929292;
    cursor: pointer;
}

.cm-eventprofile .cm-eusettings .cm-flag[aria-disabled="true"][b-c21iqgikcm] {
    opacity: 0.4;
    cursor: not-allowed;
}
.cm-w-venue[b-c21iqgikcm] { width: 70%; }
.cm-w-venueflag[b-c21iqgikcm] { width: 30%; }

.cm-eventprofile .cm-grid td[b-c21iqgikcm] {
    vertical-align: top;
}

.cm-eventprofile .cm-grid td.cm-wrap[b-c21iqgikcm] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cm-flag-cell[b-c21iqgikcm] {
    text-align: center;
}

/* A disabled checkbox reporting a value should stay legible rather than fading out. */
.cm-eventprofile .cm-flag[b-c21iqgikcm] {
    opacity: 1;
    cursor: default;
    float: none;
    margin: 0;
}

/* Rows that open something say so, and the venue whose rooms are on show stays marked.
   Both have to beat Bootstrap's .table-striped at (0,2,0). */
.cm-eventprofile .cm-grid tbody tr[data-row-href][b-c21iqgikcm] {
    cursor: pointer;
}

.cm-eventprofile .cm-grid tbody tr[data-row-href]:hover > td[b-c21iqgikcm] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

.cm-eventprofile .cm-grid tbody tr.cm-row-on > td[b-c21iqgikcm] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 22%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    font-weight: 600;
}

/* ---- the panels below the grids ------------------------------------------------------------ */
.cm-subsection[b-c21iqgikcm] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem 0.75rem;
    margin-bottom: 1rem;
}

.cm-subsection legend[b-c21iqgikcm] {
    float: none;
    width: auto;
    padding: 0 0.35rem;
    margin-bottom: 0.35rem;
    font-size: 0.9rem;
    font-weight: 700;
}

.cm-sublabel[b-c21iqgikcm] {
    display: block;
    margin-top: 0.4rem;
    font-weight: 400;
    font-size: 0.9em;
    opacity: 0.85;
}

/* The question an empty Items grid asks. */
.cm-prompt[b-c21iqgikcm] {
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    border-left: 3px solid var(--cm-accent, #1b6ec2);
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 8%, transparent);
}

.cm-prompt p[b-c21iqgikcm] {
    margin-bottom: 0.5rem;
}

.cm-paging[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

/* ---- the venue grid's two controls ---------------------------------------------------------
   The delete column, and the bin itself. Same shape as the attendees grid, so the two read the
   same way. */
.cm-w-venue[b-c21iqgikcm] { width: 55%; }
.cm-w-venueflag[b-c21iqgikcm] { width: 27%; }
.cm-w-venuedel[b-c21iqgikcm] { width: 18%; }

.cm-trash[b-c21iqgikcm] {
    line-height: 1;
    padding: 0.2rem 0.55rem;
}

/* A bin that cannot be used right now: greyed the way Bootstrap greys a disabled button, but
   still clickable - pressing it says why, in the application's dialog (data-cm-alert,
   wwwroot/js/confirm-submit.js). A real disabled button would take no click at all. */
.cm-trash.cm-trash-locked[b-c21iqgikcm] {
    opacity: 0.45;
    cursor: not-allowed;
}

.cm-trash.cm-trash-locked:hover[b-c21iqgikcm],
.cm-trash.cm-trash-locked:focus[b-c21iqgikcm] {
    color: var(--bs-danger, #dc3545);
    background-color: transparent;
}

/* The nav's .bi icons are white SVGs painted as backgrounds - right on the dark sidebar and
   invisible on a table row - and there is no bin among them. This is the Bootstrap Icons bin
   drawn as a mask, so the shape takes the button's own color. */
.cm-trash-icon[b-c21iqgikcm] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-trash-mask);
    mask-image: var(--cm-trash-mask);
    --cm-trash-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E");
}

/* The primary box is a control, not a report, so it keeps a pointer - except on the venue that
   already holds the flag, where there is nothing to turn off. */
.cm-eventprofile .cm-venuegrid .cm-flag:not(:disabled)[b-c21iqgikcm] {
    cursor: pointer;
}

/* The forms the grid's controls post to carry nothing visible. */
.cm-hiddenform[b-c21iqgikcm] {
    margin: 0;
}

/* The fallback submit inside each primary form. wwwroot/js/venue-form.js submits on change and
   marks the document, so this is only ever seen by a browser that did not run it. */
html.cm-js .cm-nojs[b-c21iqgikcm] {
    display: none;
}

.cm-nojs[b-c21iqgikcm] {
    font-size: 0.75em;
    padding: 0.1rem 0.4rem;
}

/* The rooms grid's five columns: two names, the room use, the used flag, and the bin that takes
   the room off the event (2026-09-29). */
.cm-roomgrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-roomname[b-c21iqgikcm] { width: 27%; }
.cm-w-roomuse[b-c21iqgikcm] { width: 19%; }
.cm-w-roomused[b-c21iqgikcm] { width: 14%; }
.cm-w-roomdel[b-c21iqgikcm] { width: 13%; }

/* Room Used is a control, not a report, so it keeps a pointer while it can be changed. */
.cm-eventprofile .cm-roomgrid .cm-flag:not(:disabled)[b-c21iqgikcm] {
    cursor: pointer;
}

/* ---- Item settings ----------------------------------------------------------------------- */

/* The master list picker: a tick, a title, and what kind of item it is. Nothing here is sorted
   or filtered, so the columns carry no controls. */
.cm-mastergrid[b-c21iqgikcm],
.cm-settinggrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-include[b-c21iqgikcm] { width: 22%; }
.cm-w-mastertitle[b-c21iqgikcm] { width: 58%; }
.cm-w-masterreg[b-c21iqgikcm] { width: 20%; }

/* Eight columns, adding to 100%. Each is at least as wide as the longest word in its heading
   ("Registration", "Include", "Details"), so a heading wraps between words rather than running
   into the next one - at two-thirds of the row, which is what the grid is given from xl up. */
.cm-w-settitle[b-c21iqgikcm] { width: 25%; }
.cm-w-setflag[b-c21iqgikcm] { width: 15%; }
.cm-w-setorder[b-c21iqgikcm] { width: 9%; }
.cm-w-setcost[b-c21iqgikcm] { width: 11%; }
.cm-w-setitems[b-c21iqgikcm] { width: 9%; }
.cm-w-setcolor[b-c21iqgikcm] { width: 9%; }
.cm-w-setdetails[b-c21iqgikcm] { width: 11%; }
.cm-w-setdel[b-c21iqgikcm] { width: 11%; }

/* The Include boxes are controls, so they keep a pointer; the rest of the picker reports. */
.cm-eventprofile .cm-mastergrid .cm-flag:not(:disabled)[b-c21iqgikcm] {
    cursor: pointer;
}

/* The settings grid's Options box is a control - it posts when it changes - so it keeps a
   pointer while it can be changed, as the rooms grid's Room Used does. */
.cm-eventprofile .cm-settinggrid .cm-flag:not(:disabled)[b-c21iqgikcm] {
    cursor: pointer;
}

/* A draggable row says so: grab to pick it up, grabbing while it is held. */
.cm-eventprofile .cm-settinggrid tbody tr[draggable="true"][b-c21iqgikcm] {
    cursor: grab;
}

.cm-eventprofile .cm-settinggrid tbody tr.cm-dragging[b-c21iqgikcm],
.cm-eventprofile .cm-roomgrid tbody tr.cm-dragging[b-c21iqgikcm] {
    cursor: grabbing;
    opacity: 0.5;
}

/* Where the held row will land, drawn on the row it is over rather than as a gap, so the table
   does not reflow under the pointer mid-drag. The Rooms grid drags too (2026-09-29). */
.cm-eventprofile .cm-settinggrid tbody tr.cm-drop-before > td[b-c21iqgikcm],
.cm-eventprofile .cm-roomgrid tbody tr.cm-drop-before > td[b-c21iqgikcm] {
    box-shadow: inset 0 2px 0 0 var(--bs-primary, #0d6efd);
}

.cm-eventprofile .cm-settinggrid tbody tr.cm-drop-after > td[b-c21iqgikcm],
.cm-eventprofile .cm-roomgrid tbody tr.cm-drop-after > td[b-c21iqgikcm] {
    box-shadow: inset 0 -2px 0 0 var(--bs-primary, #0d6efd);
}

/* The message shown when a drop is refused. Over the page rather than in the flow: it is the
   answer to something the reader just tried to do, and belongs where they were looking. */
.cm-rulewarning[b-c21iqgikcm] {
    position: fixed;
    inset: 0;
    z-index: 1065;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
}

.cm-rulewarning-backdrop[b-c21iqgikcm] {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
}

.cm-rulewarning-panel[b-c21iqgikcm] {
    position: relative;
    width: min(30rem, 100%);
    background: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.35);
    padding: 1.25rem 1.5rem 1.5rem;
}

.cm-rulewarning-title[b-c21iqgikcm] {
    margin: 0 0 0.75rem;
    font-size: 1.15rem;
}

.cm-rulewarning-panel p[b-c21iqgikcm] {
    margin-bottom: 0.75rem;
}

/* Says something is wrong with what is on screen, rather than with what was just done - it
   stays until the thing it describes is fixed. */
.cm-warning[b-c21iqgikcm] {
    margin-bottom: 0.75rem;
    padding: 0.6rem 0.85rem;
    border: 1px solid rgba(180, 120, 0, 0.45);
    border-left-width: 4px;
    border-radius: 0.375rem;
    background: rgba(255, 193, 7, 0.12);
}

/* Item Order on the item setting form: a short number, so its label sits beside it rather than
   above it and the box stops at the width the value needs. */
.cm-eventprofile .cm-inline[b-c21iqgikcm] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* A label and its box, kept together when .cm-inline wraps. The space between pairs is the
   pair's own, so a pair that wraps onto a new line starts flush with the one above - which is
   why app.css's margin on the color label is taken off here. */
.cm-eventprofile .cm-inline-pair[b-c21iqgikcm] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    white-space: nowrap;
    margin-right: 0.5rem;
}

.cm-eventprofile .cm-inline-pair .cm-color-label[b-c21iqgikcm] {
    margin-left: 0;
}

.cm-eventprofile .cm-inline label[b-c21iqgikcm] {
    margin-bottom: 0;
}

/* ::deep, because the box is rendered by InputNumber rather than by this page, and a scoped
   rule only reaches markup the page wrote itself. The label above it is this page's, which is
   why the flex rule works without it. */
.cm-eventprofile .cm-inline[b-c21iqgikcm]  .cm-short {
    width: 6rem;
    flex: 0 0 auto;
}

/* The item form's Item Cost, a quarter wider than the other short boxes (2026-10-13: "on the eventitem form widen the item
   cost text box by 25%"). */
.cm-eventprofile .cm-inline[b-c21iqgikcm]  .cm-item-cost-box {
    width: 7.5rem;
}

/* A box that cannot be used right now - the item form's Duration In Minutes while Include on
   Calendar is unticked (2026-09-29). It is readonly and aria-disabled rather than disabled, so it
   still posts and says why when clicked, and is grayed here the way a disabled box is. ::deep
   because InputNumber renders the box. */
.cm-eventprofile[b-c21iqgikcm]  .form-control[aria-disabled="true"] {
    background-color: var(--bs-secondary-bg, #e9ecef);
    color: var(--cm-muted, #6c757d);
    cursor: not-allowed;
}

/* ---- Event items --------------------------------------------------------------------------- */

.cm-itemgrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-itemid[b-c21iqgikcm] { width: 9%; }
.cm-w-itemcategory[b-c21iqgikcm] { width: 22%; }
.cm-w-itemtitle[b-c21iqgikcm] { width: 29%; }
/* Without categories the title has the category's share too (2026-09-30). */
.cm-w-itemtitle-wide[b-c21iqgikcm] { width: 51%; }
/* Wide enough for the presenter's name under the photograph (2026-10-03). */
.cm-w-itemshot[b-c21iqgikcm] { width: 16%; }
/* An item's price (2026-10-15), "$30.00 - $36.00" at its widest; a narrow grid wraps a range at its dash. */
.cm-w-itemcost[b-c21iqgikcm] { width: 14%; }
.cm-itemgrid .cm-itemcost-cell[b-c21iqgikcm] { text-align: right; }
.cm-w-itempresenter[b-c21iqgikcm] { width: 24%; }
.cm-w-itemdel[b-c21iqgikcm] { width: 8%; }

/* The item's own address, which only applies to an offsite item. Disabled rather than hidden:
   the fields stay where they are so the form does not jump when the box is ticked, and greyed
   says "not for this item" more plainly than an empty space does. */
.cm-eventprofile .cm-offsite[b-c21iqgikcm] {
    margin: 0.75rem 0;
    padding: 0.5rem 0.9rem 0.75rem;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    border-radius: 0.375rem;
}

.cm-eventprofile .cm-offsite legend[b-c21iqgikcm] {
    font-size: 0.95rem;
    font-weight: 600;
    width: auto;
    padding: 0 0.35rem;
    margin: 0;
}

/* The item form's own boxes (2026-09-30): Presenters, and Cost, Attendance and Tickets. Drawn
   like the address box - groups within the form, lighter than the sections around it. */
.cm-eventprofile .cm-itemgroup[b-c21iqgikcm] {
    margin: 0 0 0.75rem;
    padding: 0.5rem 0.9rem 0.25rem;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    border-radius: 0.375rem;
}

.cm-eventprofile .cm-itemgroup legend[b-c21iqgikcm] {
    font-size: 0.95rem;
    font-weight: 600;
    width: auto;
    padding: 0 0.35rem;
    margin: 0;
}

/* The item form's band (2026-10-17): the boxes below its two columns go two to a row - Requirements beside ADA, Notes
   beside Internal Notes ("Make ADA half the screen width and put requirements to the left of ADA") - in the order they're
   dragged into, a wide box (the address, a silent auction's items) across it. One to a row where the columns are. */
.cm-eventprofile .cm-item-band[b-c21iqgikcm] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1.5rem;
    align-items: start;
}

.cm-eventprofile .cm-item-band > .cm-item-wide[b-c21iqgikcm] {
    grid-column: 1 / -1;
}

/* The address box half the band's width, on a row of its own above Requirements (2026-10-18: "Make address half width nd put
   it above Requirements"): in the first column, and whatever follows it starts the next row. */
.cm-eventprofile .cm-item-band > [data-cm-section='item-address'][b-c21iqgikcm] {
    grid-column: 1;
}

.cm-eventprofile .cm-item-band > [data-cm-section='item-address'] + [data-cm-section]:not(.cm-item-wide)[b-c21iqgikcm] {
    grid-column: 1;
}

/* Requirements as tall as ADA beside it (2026-10-18: "Make Requirements the same height as ADA when ADA COmpliant is
   checked"): stretched to its row - ADA's height once ADA Notes shows - its editor growing to fill it. */
.cm-eventprofile #cm-item-requirements[b-c21iqgikcm] {
    align-self: stretch;
    display: flex;
    flex-direction: column;
}

.cm-eventprofile #cm-item-requirements > .cm-field[b-c21iqgikcm] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

.cm-eventprofile #cm-item-requirements .cm-quill[b-c21iqgikcm] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
}

.cm-eventprofile #cm-item-requirements[b-c21iqgikcm]  .ql-editor {
    flex: 1 1 auto;
}

@media (max-width: 991.98px) {
    .cm-eventprofile .cm-item-band[b-c21iqgikcm] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* A box's legend is its handle while a system administrator may drag the item form's boxes about (2026-10-17,
   wwwroot/js/section-layout.js adds cm-draggable-legend): as on the organization profile, but the handle's mark has empty
   alternative text, so it isn't read as part of the box's name ("Presenters", not "Presenters ⠿"). */
.cm-eventprofile .cm-draggable-legend[b-c21iqgikcm] {
    cursor: grab;
}

.cm-eventprofile .cm-draggable-legend:active[b-c21iqgikcm] {
    cursor: grabbing;
}

.cm-eventprofile .cm-draggable-legend[b-c21iqgikcm]::after {
    content: " ⠿" / "";
    opacity: 0.45;
    font-size: 0.85em;
}

.cm-eventprofile .cm-section-dragging[b-c21iqgikcm] {
    opacity: 0.55;
    outline: 2px dashed var(--cm-accent, #1b6ec2);
}

.cm-eventprofile .cm-section-status[b-c21iqgikcm] {
    margin: 0 0 0.5rem 0;
    font-size: 0.85rem;
    color: var(--cm-muted, #6c757d);
}

/* A date field is as wide as a date and no wider. ::deep because InputText renders the box. */
.cm-eventprofile .cm-inline[b-c21iqgikcm]  .cm-date {
    width: 11rem;
    flex: 0 0 auto;
}

/* Item Properties' dates and cancellation, below Subject To Sales Tax (2026-10-17): the labels in one column and the boxes in
   the next, so the boxes line up, each two thirds of a date's width elsewhere ("Narrow the text boxes by 1/3 of their width for
   the dates"); Is Canceled across both, over Cancellation Date. */
.cm-eventprofile .cm-item-property-dates[b-c21iqgikcm] {
    display: grid;
    grid-template-columns: max-content max-content;
    align-items: center;
    column-gap: 0.5rem;
    row-gap: 0.4rem;
    margin-bottom: 0.75rem;
}

.cm-eventprofile .cm-item-property-dates > .cm-field[b-c21iqgikcm] {
    display: contents;
}

.cm-eventprofile .cm-item-property-dates > .form-check[b-c21iqgikcm] {
    grid-column: 1 / -1;
    margin-bottom: 0;
}

.cm-eventprofile .cm-item-property-dates .cm-inline[b-c21iqgikcm]  .cm-date {
    width: calc(11rem * 2 / 3);
    /* Less room either side, so the whole date still fits at that width: at Bootstrap's padding the year was cut off. */
    padding-left: 0.4rem;
    padding-right: 0.3rem;
}

/* Options to the right of Item Properties' dates (2026-10-17: "to the right of the approved dates"), under them when the box
   is too narrow for both. */
.cm-eventprofile .cm-item-dates-row[b-c21iqgikcm] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    column-gap: 1.25rem;
}

.cm-eventprofile .cm-item-dates-row > .cm-item-property-dates[b-c21iqgikcm] {
    flex: 0 0 auto;
}

.cm-eventprofile .cm-item-dates-row > #cm-item-options[b-c21iqgikcm] {
    flex: 1 1 18rem;
    min-width: 0;
    margin-top: 0;
}

/* Where the form's two columns are narrow (a window from 992px to under 1600px), each date's label sits above its box, so Options
   beside them has room for its grid (2026-10-20): beside them, at 1440 the option's name column all but vanished. */
@media (min-width: 992px) and (max-width: 1599.98px) {
    .cm-eventprofile .cm-item-property-dates[b-c21iqgikcm] {
        grid-template-columns: max-content;
        row-gap: 0.15rem;
    }

    .cm-eventprofile .cm-item-property-dates > .cm-field > label[b-c21iqgikcm] {
        margin-top: 0.35rem;
    }
}

/* Beside the dates at every width but a phone's since 2026-10-20 ("On right side of legend box Options Legend Box"; from a 1600px
   window until then): the options grid's name column takes what its two number columns leave. */
@media (min-width: 576px) {
    .cm-eventprofile .cm-item-dates-row[b-c21iqgikcm] {
        flex-wrap: nowrap;
    }

    .cm-eventprofile .cm-item-dates-row > #cm-item-options[b-c21iqgikcm] {
        flex-basis: 0;
    }
}

/* The item's Collateral Items box among the collateral options, below Allow Collateral Downloads since 2026-10-20. */
.cm-eventprofile .cm-item-collateral .cm-collateral-items[b-c21iqgikcm] {
    margin: 0.5rem 0 0.75rem;
}

/* Use Collateral, its due date offset and the date it comes to, on one line where there's room (2026-10-20). */
.cm-eventprofile .cm-collateral-line[b-c21iqgikcm] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 1.25rem;
    margin-bottom: 0.4rem;
}

.cm-eventprofile .cm-collateral-line > .form-check[b-c21iqgikcm] {
    margin-bottom: 0;
}

.cm-eventprofile .cm-collateral-line > .cm-collateral-due:not([hidden])[b-c21iqgikcm] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 0;
}

.cm-eventprofile .cm-collateral-line > .cm-collateral-due label[b-c21iqgikcm] {
    margin-bottom: 0;
}

/* The short editors on the item form: notes and requirements, not pages. */
.cm-eventprofile .cm-quill-short[b-c21iqgikcm]  .ql-editor,
.cm-eventprofile .cm-quill-short .ql-editor[b-c21iqgikcm] {
    min-height: 6rem;
}

/* ---- Owners and presenters ------------------------------------------------------------------ */

.cm-presentergrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-preshot[b-c21iqgikcm] { width: 8%; }
.cm-w-presname[b-c21iqgikcm] { width: 26%; }
.cm-w-preswhere[b-c21iqgikcm] { width: 22%; }
.cm-w-presitem[b-c21iqgikcm] { width: 36%; }
.cm-w-presdel[b-c21iqgikcm] { width: 8%; }

/* The head shot in the grid. Fixed at the stored proportions - 400 by 500 - so a row is the
   same height whether the person has a photograph or not, and the column does not jump as the
   pictures arrive. */
.cm-headshot-cell[b-c21iqgikcm] {
    padding-block: 0.25rem;
}

.cm-headshot-thumb[b-c21iqgikcm] {
    width: 40px;
    height: 50px;
    object-fit: cover;
    border-radius: 3px;
    display: block;
}

/* Landscape in the same 50px of row height, so the rows stay level whichever shape they hold. */
.cm-headshot-thumb.cm-landscape[b-c21iqgikcm] {
    width: 62px;
    height: 50px;
}

/* The item grid's owner or presenter, under the photograph (2026-10-03), or alone without one. Small,
   so the row stays close to the picture's height, and wrapping rather than widening the column. */
.cm-headshot-name[b-c21iqgikcm] {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.8em;
    line-height: 1.2;
    overflow-wrap: break-word;
}

/* Where a photograph would be. Drawn rather than left empty so the column reads as a column. */
.cm-headshot-none[b-c21iqgikcm] {
    display: block;
    width: 40px;
    height: 50px;
    border: 1px dashed #c9c9c9;
    border-radius: 3px;
    background: #f5f5f5;
}

/* ---- The head shot on the presenter's form --------------------------------------------------- */

.cm-headshot-row[b-c21iqgikcm] {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    flex-wrap: wrap;
}

.cm-headshot-row .cm-headshot[b-c21iqgikcm] {
    /* Half the stored size: large enough to see what it is, small enough to leave the form's
       fields beside it. */
    width: 200px;
    height: 250px;
    object-fit: cover;
    border-radius: 4px;
    flex: 0 0 auto;
}

/* A club's picture is its layout, stored the other way round. */
.cm-headshot-row .cm-headshot.cm-landscape[b-c21iqgikcm],
.cm-headshot-row .cm-headshot-none.cm-landscape[b-c21iqgikcm] {
    width: 250px;
    height: 200px;
}

.cm-headshot-row .cm-headshot-none[b-c21iqgikcm] {
    width: 200px;
    height: 250px;
}

.cm-headshot-controls[b-c21iqgikcm] {
    flex: 1 1 18rem;
    min-width: 0;
}

/* The tick and its label on one line, and the label at the weight of a choice rather than of a
   heading - it is one option among the controls, not a section of the form. */
.cm-headshot-controls .cm-flag[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.6rem;
}

.cm-headshot-controls .cm-flag label[b-c21iqgikcm] {
    font-weight: 400;
    margin: 0;
}

/* ---- Sponsors ------------------------------------------------------------------------------ */

/* Two grids in two columns, so each one is half the width the others on this page get. Fixed
   layout and named columns, because a sponsor's name and a package's are both long enough to
   push the money and the bin off the end if the browser is left to decide. */
.cm-pkggrid[b-c21iqgikcm],
.cm-spongrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-pkgname[b-c21iqgikcm] { width: 34%; }
.cm-w-pkglevel[b-c21iqgikcm] { width: 24%; }
.cm-w-pkgcost[b-c21iqgikcm] { width: 17%; }
.cm-w-pkgtaken[b-c21iqgikcm] { width: 15%; }
.cm-w-pkgdel[b-c21iqgikcm] { width: 10%; }

/* A Title or Room Sponsor package, said under its name in the grid (2026-10-01). */
.cm-sponsorship-tag[b-c21iqgikcm] {
    display: block;
    font-size: 0.85em;
    opacity: 0.8;
}

/* The package form's two sponsorship boxes, a little apart from the numbers above them. */
.cm-sponsorships[b-c21iqgikcm] {
    margin-bottom: 0.5rem;
}

/* The sponsor form's logo (2026-10-01), shown above its file box. */
.cm-sponsor-logo img[b-c21iqgikcm] {
    max-height: 5rem;
    max-width: 100%;
    margin-bottom: 0.4rem;
}

.cm-w-sponname[b-c21iqgikcm] { width: 25%; }
.cm-w-sponpkg[b-c21iqgikcm] { width: 22%; }
.cm-w-sponowed[b-c21iqgikcm] { width: 15%; }
.cm-w-sponcontract[b-c21iqgikcm] { width: 17%; }
.cm-w-sponagreement[b-c21iqgikcm] { width: 12%; }
.cm-w-spondel[b-c21iqgikcm] { width: 9%; }

/* Money and counts read down their last digit. The rule is here rather than only on the grids
   above because .cm-num is used on this page's other grids as well and was never defined for
   them - a number in a right-aligned column is the only thing that class has ever meant. */
.cm-eventprofile .cm-num[b-c21iqgikcm] {
    text-align: right;
}

/* A sponsor whose signed contract is on file cannot be removed, so the bin's place carries a
   padlock instead. It is a statement, not a control: no pointer, and the title says why. */
.cm-locked-mark[b-c21iqgikcm] {
    opacity: 0.55;
    cursor: help;
}

/* The same fact, said in full, on the form for that sponsor. */
.cm-locked[b-c21iqgikcm] {
    margin: 0.4rem 0 0;
    opacity: 0.85;
    font-style: italic;
}

/* ---- an item's variants ------------------------------------------------------------------------
   The grid sits inside the item form under Option Label, so it is sized like a field rather than
   like a page-width grid, and its columns are fixed so the cells line up under their headings. */

.cm-optionbox[b-c21iqgikcm] {
    max-width: 34rem;
}

.cm-optionbox .cm-optiongrid[b-c21iqgikcm] {
    table-layout: fixed;
    width: 100%;
    margin-bottom: 0.35rem;
}

.cm-optionbox .cm-optiongrid th[b-c21iqgikcm],
.cm-optionbox .cm-optiongrid td[b-c21iqgikcm] {
    padding: 0.2rem 0.3rem;
    vertical-align: middle;
}

.cm-optionbox .cm-optiongrid input[b-c21iqgikcm] {
    width: 100%;
}

.cm-w-optiontext[b-c21iqgikcm] { width: 58%; }
.cm-w-optionnum[b-c21iqgikcm] { width: 16%; }
.cm-w-optionbin[b-c21iqgikcm] { width: 10%; }

/* Beside the dates (2026-10-18) the options grid can be narrow: its two number columns keep room for a number, the option's
   name takes what's left. */
.cm-item-dates-row .cm-w-optionnum[b-c21iqgikcm] { width: 5rem; }
.cm-item-dates-row .cm-w-optionbin[b-c21iqgikcm] { width: 2rem; }
.cm-item-dates-row .cm-w-optiontext[b-c21iqgikcm] { width: auto; }


/* ---- the invitation and the thank you ------------------------------------------------------ */

/* The label and its edit link on one line, the link pushed to the right so the two documents'
   links sit above each other rather than wherever the label happens to end. */
.cm-eventprofile .cm-docbar[b-c21iqgikcm] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}

.cm-eventprofile .cm-docbar label[b-c21iqgikcm] {
    margin-bottom: 0;
}

/* A link in every respect but the element: no border, no padding of its own. */
.cm-eventprofile .cm-doclink[b-c21iqgikcm] {
    padding: 0;
    border: 0;
    font-size: 0.875rem;
}

/* The preview. Tall enough to show an invitation at its real size, scrolling when the document
   is longer than that, and with nothing about it that invites a click: no caret, no hover, and
   the toolbar is not rendered at all (data-quill-bare). */
.cm-eventprofile .cm-quill-preview[b-c21iqgikcm] {
    /* Half the 22rem these were. They are previews - the whole document is read in the dialog -
       so they show the opening and scroll for the rest. */
    height: 11rem;
    overflow: auto;
    background: var(--cm-input-bg, #ffffff);
}

.cm-eventprofile .cm-quill-preview[b-c21iqgikcm]  .ql-editor,
.cm-eventprofile .cm-quill-preview .ql-editor[b-c21iqgikcm] {
    cursor: default;
}

/* Quill greys a read-only editor's placeholder into near-invisibility; this is the only text an
   empty preview has, so it keeps the same weight as any other hint on the page. */
.cm-eventprofile .cm-quill-preview[b-c21iqgikcm]  .ql-editor.ql-blank::before,
.cm-eventprofile .cm-quill-preview .ql-editor.ql-blank[b-c21iqgikcm]::before {
    font-style: normal;
    color: var(--cm-muted, #6c757d);
}

/* ---- the window the editors open in -------------------------------------------------------- */

.cm-eventprofile .cm-dialog[b-c21iqgikcm] {
    position: fixed;
    inset: 0;
    z-index: 1060;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
    background: rgba(24, 20, 28, 0.55);
}

/* hidden is how the script opens and closes it, and display:flex above would otherwise win. */
.cm-eventprofile .cm-dialog[hidden][b-c21iqgikcm] {
    display: none;
}

/* The card: as tall as it needs to be up to most of the screen, never taller, because the part
   that scrolls is the body rather than the window. */
.cm-eventprofile .cm-dialog-card[b-c21iqgikcm] {
    display: flex;
    flex-direction: column;
    width: min(64rem, 100%);
    max-height: min(46rem, 90vh);
    background: var(--cm-card-bg, #ffffff);
    border-radius: 0.5rem;
    box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.35);
    overflow: hidden;
}

.cm-eventprofile .cm-dialog-head[b-c21iqgikcm],
.cm-eventprofile .cm-dialog-foot[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
}

.cm-eventprofile .cm-dialog-foot[b-c21iqgikcm] {
    border-bottom: 0;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
}

.cm-eventprofile .cm-dialog-head h2[b-c21iqgikcm] {
    flex: 1 1 auto;
    margin: 0;
    font-size: 1.15rem;
}

.cm-eventprofile .cm-dialog-x[b-c21iqgikcm] {
    border: 0;
    background: transparent;
    font-size: 1.5rem;
    line-height: 1;
    padding: 0 0.25rem;
    cursor: pointer;
    color: inherit;
}

/* The scrollable part, as asked for: the toolbar stays put at the top of the editor and the
   document moves under it. */
.cm-eventprofile .cm-dialog-body[b-c21iqgikcm] {
    flex: 1 1 auto;
    overflow: auto;
    padding: 1rem;
    min-height: 0;
}

.cm-eventprofile .cm-quill-document[b-c21iqgikcm] {
    min-height: 24rem;
}

/* Quill's toolbar sticks to the top of the scrolling body, so the formatting controls are still
   there at the foot of a long invitation. */
.cm-eventprofile .cm-dialog-body[b-c21iqgikcm]  .ql-toolbar,
.cm-eventprofile .cm-dialog-body .ql-toolbar[b-c21iqgikcm] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--cm-card-bg, #ffffff);
}


/* ---- the arrangeable sections ---------------------------------------------------------------

   The event profile's sections can be dragged between three places: the left column, the right
   column, and a band across both. The band is where the full-width sections live - the
   invitation and thank you, the social links - and a section dragged into it spans the page.

   Only the third column needs a rule: the other two are Bootstrap's own columns, and everything
   about the dragging itself is in wwwroot/js/section-layout.js and the shared styles it uses. */

.cm-eventprofile .cm-section-band[b-c21iqgikcm] {
    /* An empty band still has to be a target, or a section dragged out of it could never be put
       back. This is the height of a line, which is enough to drop onto. */
    min-height: 2rem;
}

/* The two half-width columns keep their own height while empty, for the same reason. */
.cm-eventprofile [data-cm-section-column="1"]:empty[b-c21iqgikcm],
.cm-eventprofile [data-cm-section-column="2"]:empty[b-c21iqgikcm] {
    min-height: 4rem;
}


/* ---- Continuing Education Credit Information ------------------------------------------------

   The group on the item form, the three pictures a certificate is printed with, and the window
   the certificate itself is designed in. */

.cm-eventprofile .cm-cegroup[b-c21iqgikcm] {
    /* Set apart from the item's own fields: everything inside it is about the certificate rather
       than about what the item is or costs. */
    margin-top: 1rem;
}

/* CE Verification Code and the signer's name side by side, in narrower boxes (2026-10-17), always on the one line: where
   the box is too narrow for both at their widths they narrow together, and their boxes stay level if a label wraps. */
.cm-eventprofile .cm-certificate-line[b-c21iqgikcm] {
    display: flex;
    align-items: flex-end;
    column-gap: 1rem;
}

.cm-eventprofile .cm-certificate-code[b-c21iqgikcm] {
    flex: 0 1 12rem;
    min-width: 0;
}

.cm-eventprofile .cm-certificate-signer[b-c21iqgikcm] {
    flex: 0 1 18rem;
    min-width: 0;
}

/* The Participation box's stand-in for the CE box's CE Amount line, so its signer's name is level with CE Verification
   Code beside it (2026-10-17). Taking up room, unseen; gone when the two boxes are one above the other (under xl). */
.cm-eventprofile .cm-certificate-spacer[b-c21iqgikcm] {
    visibility: hidden;
}

@media (max-width: 1199.98px) {
    .cm-eventprofile .cm-certificate-spacer[b-c21iqgikcm] {
        display: none;
    }
}

/* Each stored picture, beside what it is. A signature is wide and short, so the box is sized to
   hold one without stretching it. */
.cm-eventprofile .cm-ceimages img[b-c21iqgikcm] {
    max-width: 100%;
    max-height: 5rem;
    background: #ffffff;
}

.cm-eventprofile .cm-ceuploads .cm-rowbar[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* The certificate's window is wider than the others, because what it holds is a sheet of paper
   and the paper is not going to be narrower than 8.5 inches. */
.cm-eventprofile .cm-dialog-card.cm-dialog-page[b-c21iqgikcm] {
    width: min(58rem, 100%);
    max-height: 94vh;
}

.cm-eventprofile .cm-certificate-body[b-c21iqgikcm] {
    /* The toolbar above the page, both centered in the part that scrolls, with room around them
       so the edges of the sheet are visible against the background. A column (2026-09-30: "when
       editing a CE Certificate the editor toolbar is on the left when it should be on top"):
       Quill puts its toolbar just before the page, and a row set the two side by side. */
    display: flex;
    flex-direction: column;
    background: var(--cm-page-behind, #52504f);
    padding: 1.25rem;
}

/* The toolbar is the page's width, so it reads as the top of the sheet. Auto margins center it and
   the page while the window is wider than the paper, and give way when it is narrower, so every
   part of the sheet can still be scrolled to. It stays at the top while the page scrolls under it
   (the sticky rule on .cm-dialog-body's toolbar above). */
.cm-eventprofile .cm-certificate-body[b-c21iqgikcm]  .ql-toolbar,
.cm-eventprofile .cm-certificate-body .ql-toolbar[b-c21iqgikcm] {
    flex: 0 0 auto;
    width: 816px;
    margin-inline: auto;
}

/* A sheet of letter paper: 8.5 by 11 inches at 96 pixels to the inch, which is what the browser
   means by an inch. The editor is exactly this and no larger - a certificate that will not fit on
   the page will not fit on the paper either. */
.cm-eventprofile .cm-certificate-page[b-c21iqgikcm] {
    flex: 0 0 auto;
    width: 816px;
    margin-inline: auto;
    background-color: #ffffff;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.4);
}

/* Quill's own box has to be transparent for the background to show through it, and exactly one
   page tall: what runs past the bottom of the sheet scrolls, and prints on nothing. */
.cm-eventprofile .cm-certificate-page[b-c21iqgikcm]  .ql-container,
.cm-eventprofile .cm-certificate-page .ql-container[b-c21iqgikcm] {
    background: transparent;
    border: 0;
}

.cm-eventprofile .cm-certificate-page[b-c21iqgikcm]  .ql-editor,
.cm-eventprofile .cm-certificate-page .ql-editor[b-c21iqgikcm] {
    /* The width comes from the page above rather than being set again here: the page carries a
       border, and a second 816 inside it would be that much wider than the paper. */
    width: auto;
    height: 1056px;
    max-height: 1056px;
    overflow-y: auto;
    /* No margin: what is written reaches the edges of the sheet (2026-09-30: "I need the border
       for the page set to .0 inches"; it was half an inch). */
    padding: 0;
    background: transparent;
}

/* While a picture is over the page, so it is plain where it is about to land. */
.cm-eventprofile .cm-certificate-page.cm-certificate-dropping[b-c21iqgikcm] {
    outline: 3px dashed var(--cm-accent, #6f42c1);
    outline-offset: -3px;
}

/* The file picker is a label wrapping a hidden input, so it needs a button's cursor. */
.cm-eventprofile .cm-certificate-choose[b-c21iqgikcm] {
    margin: 0;
    cursor: pointer;
}

/* The registration tab's grid. Half the page, because registration is one item and a table of
   one row stretched across the whole width reads as though rows are missing from it. Full width
   on a narrow screen, where half of it would be too little to read. */
.cm-eventprofile .cm-halfwide[b-c21iqgikcm] {
    max-width: 50%;
}

/* The eight Include flags on the Item Setting form (2026-09-30), set a little apart from the boxes
   above them. */
.cm-eventprofile .cm-include-flags[b-c21iqgikcm] {
    margin-top: 0.5rem;
}

@media (max-width: 991.98px) {
    .cm-eventprofile .cm-halfwide[b-c21iqgikcm] {
        max-width: 100%;
    }
}

/* The upload template link on the RSVP - Attendees - tab. */
.cm-templatelink[b-c21iqgikcm] {
    margin: 0.25rem 0 0.75rem;
    font-size: 0.95em;
}

/* The website key at the top of a personal event's RSVPs tab: eight characters and a hyphen,
   read off a screen onto a card, so wide enough for those and spaced so each one is clear. */
.cm-eventprofile .cm-websitekey .form-control[b-c21iqgikcm] {
    max-width: 11rem;
    font-family: Consolas, "Courier New", monospace;
    font-size: 1.1rem;
    letter-spacing: 0.12em;
}

/* Each RSVP row's Send Invitation: the button's words stay on one line, and the column is no
   wider than they are. On a phone that one line takes the width the names need, so there the two
   words stack instead. */
.cm-send-cell[b-c21iqgikcm] {
    width: 1%;
    white-space: nowrap;
}

/* RSVP, to the left of Send Invitation / Send Confirmation in the same cell (since 2026-10-14). */
.cm-send-cell .cm-rsvp[b-c21iqgikcm] {
    margin-right: 0.25rem;
}

/* Name tags on the Attendees and Their Registration tab (2026-10-14): the stock, Save Stock and Print All Name Tags on a
   line. */
.cm-nametags[b-c21iqgikcm] {
    margin: 0.5rem 0 0.75rem;
}

.cm-nametags-label[b-c21iqgikcm] {
    font-weight: 600;
}

.cm-nametags .cm-nametags-stock[b-c21iqgikcm] {
    width: auto;
    min-width: 18rem;
    max-width: 100%;
}

/* Print All Registration Packets is white on green (2026-10-30: "Make it white on green"), whatever the theme; grayed it
   keeps the colors, faded. */
.cm-nametags .cm-print-all-packets[b-c21iqgikcm],
.cm-nametags .cm-print-all-packets:visited[b-c21iqgikcm] {
    background-color: #1e7e34;
    border-color: #1e7e34;
    color: #ffffff;
}

.cm-nametags .cm-print-all-packets:hover[b-c21iqgikcm],
.cm-nametags .cm-print-all-packets:focus-visible[b-c21iqgikcm] {
    background-color: #176428;
    border-color: #176428;
    color: #ffffff;
}

.cm-nametags .cm-print-all-packets[aria-disabled="true"][b-c21iqgikcm] {
    opacity: 0.6;
}

/* The RSVP grid's Table Number, RSVP Received and Attending (2026-10-14): a box wide enough for "12" or "Head Table", and
   ticks centered under their headings. The sortable headings keep the heading's color, as the other grids' do. */
.cm-attendeegrid .cm-table-cell[b-c21iqgikcm] {
    width: 7.5rem;
}

.cm-attendeegrid .cm-table-number[b-c21iqgikcm] {
    min-width: 5rem;
}

.cm-attendeegrid .cm-received-cell[b-c21iqgikcm],
.cm-attendeegrid .cm-attending-cell[b-c21iqgikcm] {
    width: 1%;
    white-space: nowrap;
    text-align: center;
}

.cm-attendeegrid .cm-rsvp-received[b-c21iqgikcm],
.cm-attendeegrid .cm-rsvp-attending[b-c21iqgikcm] {
    float: none;
    margin: 0;
    opacity: 0.75;
    cursor: not-allowed;
}

.cm-attendeegrid thead a.cm-attendee-sort[b-c21iqgikcm] {
    color: inherit;
    text-decoration: none;
}

.cm-attendeegrid thead a.cm-attendee-sort:hover[b-c21iqgikcm] {
    text-decoration: underline;
}

.cm-attendeegrid .cm-sorted[b-c21iqgikcm] {
    font-weight: 700;
}

.cm-attendeegrid .cm-arrow[b-c21iqgikcm] {
    opacity: 0.7;
}

.cm-table-number-status:empty[b-c21iqgikcm] {
    display: none;
}

@media (max-width: 575.98px) {
    .cm-send-cell[b-c21iqgikcm] {
        white-space: normal;
    }
}

/* The RSVP/Attendees grid keeps its words whole. "anywhere" (the grids' rule, above) lets a cell
   shrink to a letter's width, and with the invitation column taking its share a phone read
   "Simo n Tobia s"; "break-word" only breaks a word too long for any line, so the grid scrolls
   sideways in its box instead. Placed after that rule, which it matches for specificity. */
.cm-eventprofile .cm-attendeegrid td.cm-wrap[b-c21iqgikcm] {
    overflow-wrap: break-word;
}

/* An event of a locked organization (2026-09-26): upright and bold, as on the organization. */
.cm-locked-note[b-c21iqgikcm] {
    font-style: normal;
    font-weight: 700;
    opacity: 1;
    margin-bottom: 0.75rem;
}

.cm-locked-note p + p[b-c21iqgikcm] {
    font-weight: 400;
}

/* The event's logo at the top left, beside the page's title (2026-09-29). A fixed height, and no
   wider than a share of the screen, so a wide logo is shrunk whole rather than crowding the
   title; smaller on a phone. Without a logo the title keeps the space under it that it had. */
.cm-profile-heading[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.5rem;
}

.cm-profile-heading h1[b-c21iqgikcm] {
    margin: 0;
    min-width: 0;
}

/* The event's dates after its name in the heading (2026-10-13): smaller, and kept on one line. */
.cm-profile-dates[b-c21iqgikcm] {
    font-size: 0.65em;
    font-weight: 400;
    white-space: nowrap;
}

.cm-profile-logo[b-c21iqgikcm] {
    flex: none;
    height: 5rem;
    width: auto;
    max-width: min(16rem, 30vw);
    object-fit: contain;
}

@media (max-width: 575.98px) {
    .cm-profile-logo[b-c21iqgikcm] {
        height: 3.5rem;
    }
}

/* What the Category dropdown's Add New Category did, beside it (2026-09-30). */
.cm-category-status[b-c21iqgikcm] {
    display: block;
    font-size: 0.875rem;
    margin-top: 0.25rem;
}

.cm-category-status.cm-category-saved[b-c21iqgikcm] {
    color: var(--bs-success);
}

/* The item's CE certificate (2026-10-06): the page it prints on, 8.5 by 11 inches, merged with the
   item's values - see CECertificateMerge. */
.cm-item-certificate-sheet[b-c21iqgikcm] {
    box-sizing: border-box;
    width: 8.5in;
    max-width: 100%;
    min-height: 11in;
    margin: 0 auto 1rem;
    padding: 12px 15px;
    background: #ffffff;
    color: #000000;
    border: 1px solid var(--cm-border, #d6d5d5);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    overflow: auto;
}

/* A presenter's Instructors Signature on their form (2026-10-06), at the height a certificate draws it. */
.cm-signature[b-c21iqgikcm] {
    display: block;
    width: auto;
    max-width: 100%;
    margin-bottom: 0.5rem;
    background: #ffffff;
    border: 1px solid var(--cm-border, #d6d5d5);
}

/* Landscape (2026-10-06: "both portrait and landscape formats"): the CE certificate's sheet 11 by 8.5 inches -
   its toolbar as wide - in its window and on the item form. wwwroot/js/page-orientation.js turns the window's
   as the choice is made. */
.cm-eventprofile .cm-certificate-body.cm-landscape[b-c21iqgikcm]  .ql-toolbar,
.cm-eventprofile .cm-certificate-body.cm-landscape .ql-toolbar[b-c21iqgikcm] {
    width: 1056px;
}

.cm-eventprofile .cm-certificate-page.cm-landscape[b-c21iqgikcm] {
    width: 1056px;
}

.cm-eventprofile .cm-certificate-page.cm-landscape[b-c21iqgikcm]  .ql-editor,
.cm-eventprofile .cm-certificate-page.cm-landscape .ql-editor[b-c21iqgikcm] {
    height: 816px;
    max-height: 816px;
}

.cm-item-certificate-sheet.cm-landscape[b-c21iqgikcm] {
    width: 11in;
    min-height: 8.5in;
}

/* Side by side at the item's foot (2026-10-17): the sheet at its printed size, scaled to its column by
   wwwroot/js/certificate-fit.js (CSS zoom), rather than squeezed to it. */
.cm-item-certificate-fit[b-c21iqgikcm] {
    overflow: hidden;
}

.cm-item-certificate-fit .cm-item-certificate-sheet[b-c21iqgikcm] {
    max-width: none;
    overflow: visible;
    margin: 0 0 1rem;
}

/* The page frame (2026-10-06: "a page frame would work, please add it  It needs a width and a color", then
   "run it to the PDF edge"): a line along the sheet's four edges, drawn over what is written so nothing
   covers it, and the writing starting an eighth of an inch inside it (CECertificateFrame.Gap). The sheet
   carries cm-framed and the two custom properties; wwwroot/js/page-frame.js changes them in the window as
   the CE box's fields change. */
.cm-eventprofile .cm-certificate-page.cm-framed[b-c21iqgikcm],
.cm-item-certificate-sheet.cm-framed[b-c21iqgikcm] {
    position: relative;
}

.cm-eventprofile .cm-certificate-page.cm-framed[b-c21iqgikcm]::after,
.cm-item-certificate-sheet.cm-framed[b-c21iqgikcm]::after {
    content: "";
    position: absolute;
    inset: 0;
    border: var(--cm-frame-width, 0px) solid var(--cm-frame-color, #000000);
    pointer-events: none;
    z-index: 2;
}

.cm-eventprofile .cm-certificate-page.cm-framed[b-c21iqgikcm]  .ql-editor,
.cm-eventprofile .cm-certificate-page.cm-framed .ql-editor[b-c21iqgikcm],
.cm-item-certificate-sheet.cm-framed[b-c21iqgikcm] {
    padding: calc(var(--cm-frame-width, 0px) + 12px);
}

/* The Payment Processing tab's ways to pay (2026-10-12): a box, the brand's small marks and its name on one line, as
   the organization's tab draws them. Bootstrap's form-check floats its box into a gutter; here it sits in the line. */
.cm-pay-method-grid[b-c21iqgikcm] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 0.4rem 1rem;
}

.cm-pay-method[b-c21iqgikcm] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 0;
    margin: 0;
    padding-left: 0;
}

.cm-pay-method .form-check-input[b-c21iqgikcm] {
    float: none;
    flex: none;
    margin: 0;
}

.cm-pay-method .form-check-label[b-c21iqgikcm] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.cm-pay-brand[b-c21iqgikcm] {
    flex: none;
    width: 38px;
    height: 24px;
}

/* A silent auction's items (2026-10-12), on its Silent Auction item's form: the form above the grid, its amounts
   side by side, the photo's preview, and the grid. */
.cm-eventprofile .cm-auction-form[b-c21iqgikcm] {
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--cm-border, #dee2e6);
}

.cm-eventprofile .cm-auction-form-title[b-c21iqgikcm] {
    font-size: 1.05rem;
    font-weight: 600;
    margin: 0 0 0.5rem;
}

.cm-eventprofile .cm-auction-amounts[b-c21iqgikcm] {
    display: flex;
    flex-wrap: wrap;
    gap: 0 1.25rem;
}

.cm-eventprofile .cm-auction-photo[b-c21iqgikcm] {
    display: block;
    max-width: 100%;
    max-height: 160px;
    margin-bottom: 0.4rem;
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 4px;
}

.cm-eventprofile .cm-auction-printall[b-c21iqgikcm] {
    justify-content: space-between;
    align-items: center;
}

.cm-eventprofile .cm-auctiongrid td[b-c21iqgikcm],
.cm-eventprofile .cm-auctiongrid th[b-c21iqgikcm] {
    vertical-align: middle;
}

.cm-eventprofile .cm-auctiongrid .cm-auction-print[b-c21iqgikcm] {
    padding: 0;
}

/* The item form's bookmark (EventTabs.ItemFormBookmark, 2026-10-13): scrolled to, its legend clears the sticky top row
   (about 88px tall at 1280 wide). */
.cm-item-form[b-c21iqgikcm] {
    scroll-margin-top: 6.5rem;
}

/* The Sponsors grid: each sponsor's logo to the left of its name (2026-10-13: "add the sponsor's logos wherever they are
   listed to the left of their name/address, etc"). */
.cm-spon-who[b-c21iqgikcm] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.cm-spon-logo[b-c21iqgikcm] {
    flex: 0 0 auto;
    height: 2rem;
    width: auto;
    max-width: 5rem;
    object-fit: contain;
}

/* A legend box that opens and closes (2026-10-13: Event Content Items, "which should have an expandable legend box"): a
   details element drawn as the fieldsets are, its summary on the top border as a legend sits, with an arrow that turns -
   as a blog's months are. */
.cm-eventprofile details.cm-legendbox[b-c21iqgikcm] {
    padding-top: 0;
}

.cm-eventprofile details.cm-legendbox:not([open])[b-c21iqgikcm] {
    padding-bottom: 0.4rem;
}

.cm-eventprofile details.cm-legendbox > summary[b-c21iqgikcm] {
    list-style: none;
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    margin: -0.8rem 0 0.5rem -0.4rem;
    padding: 0 0.4rem;
    line-height: 1.5;
    background: var(--cm-bg, var(--bs-body-bg, #fff));
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
}

.cm-eventprofile details.cm-legendbox:not([open]) > summary[b-c21iqgikcm] {
    margin-bottom: 0;
}

.cm-eventprofile details.cm-legendbox > summary[b-c21iqgikcm]::-webkit-details-marker {
    display: none;
}

.cm-eventprofile details.cm-legendbox > summary[b-c21iqgikcm]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

.cm-eventprofile details.cm-legendbox[open] > summary[b-c21iqgikcm]::before {
    transform: rotate(90deg);
}

/* What a legend box that opens and closes holds, when it has to gray for a reader (2026-10-20: the Continuing Education
   and Certificate Layout box): a fieldset only to disable, with no border or room of its own. */
.cm-eventprofile .cm-legendbox-fields[b-c21iqgikcm] {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
}

/* The Event Dates grid at the top of Event Properties (2026-10-15): the first dates' or a day's fields side by side, the
   day's form above the grid. */
.cm-event-dates-title[b-c21iqgikcm] {
    font-weight: 600;
}

.cm-event-dates-first[b-c21iqgikcm] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 0.5rem 0.75rem;
    margin-bottom: 0.5rem;
}

.cm-event-dates-first label[b-c21iqgikcm] {
    font-size: 0.9em;
}

.cm-event-date-form[b-c21iqgikcm] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.75rem 0.6rem 0.75rem;
    margin: 0.25rem 0 0.75rem 0;
}

.cm-event-date-form > legend[b-c21iqgikcm] {
    float: none;
    width: auto;
    margin: 0;
    padding: 0 0.25rem;
    font-size: 1em;
    font-weight: 600;
}

.cm-event-date-where[b-c21iqgikcm] {
    margin-bottom: 0.5rem;
}

.cm-event-dates-grid td.cm-nowrap[b-c21iqgikcm] {
    white-space: nowrap;
}

/* The Collateral Items grid (2026-10-17): the name takes the room, Download and the bin only what they need. */
.cm-collateral-items-grid td.cm-collateral-download[b-c21iqgikcm],
.cm-collateral-items-grid td.cm-flag-cell[b-c21iqgikcm] {
    width: 1%;
    white-space: nowrap;
}
/* /Components/Pages/Events.razor.rz.scp.css */
/* The events grid. Eight columns, most of them free text, so the type is small and the table
   gets its own horizontal scroller rather than forcing the page to scroll sideways. */

.cm-events[b-q37rwwjp94] {
    font-size: 0.85em;
}

.cm-eventbar[b-q37rwwjp94] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.6rem;
}

.cm-events .btn[b-q37rwwjp94] {
    font-size: 1em;
}

.cm-count[b-q37rwwjp94] {
    opacity: 0.75;
}

.cm-hint[b-q37rwwjp94] {
    opacity: 0.6;
    font-style: italic;
}

.cm-grid-scroll[b-q37rwwjp94] {
    overflow-x: auto;
}

.cm-grid[b-q37rwwjp94] {
    font-size: 1em;
    margin-bottom: 0.75rem;
}

.cm-eventgrid[b-q37rwwjp94] {
    table-layout: fixed;
    width: 100%;
    min-width: 66rem;
}

/* The seven columns add up to 100 again now that Event Location has gone; the width it had went
   to the title and the tag line, which are the two that run out of room first. */
.cm-w-id[b-q37rwwjp94] { width: 7%; }
.cm-w-org[b-q37rwwjp94] { width: 16%; }
.cm-w-title[b-q37rwwjp94] { width: 23%; }
.cm-w-tagline[b-q37rwwjp94] { width: 24%; }
.cm-w-type[b-q37rwwjp94] { width: 10%; }
.cm-w-list[b-q37rwwjp94] { width: 10%; }
.cm-w-status[b-q37rwwjp94] { width: 10%; }

.cm-grid th[b-q37rwwjp94] {
    white-space: nowrap;
}

.cm-grid td[b-q37rwwjp94] {
    vertical-align: top;
    white-space: nowrap;
}

/* The text columns wrap instead, so a long title or tag line is readable rather than clipped. */
.cm-eventgrid td.cm-wrap[b-q37rwwjp94] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cm-grid thead a[b-q37rwwjp94] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-q37rwwjp94] {
    text-decoration: underline;
}

.cm-sorted[b-q37rwwjp94] {
    font-weight: 700;
}

.cm-arrow[b-q37rwwjp94] {
    opacity: 0.7;
}

.cm-filters th[b-q37rwwjp94] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
}

.cm-events .form-control[b-q37rwwjp94] {
    font-size: 1em;
    padding: 0.15rem 0.35rem;
    height: auto;
    min-height: 0;
    line-height: 1.3;
    min-width: 0;
}

.cm-num[b-q37rwwjp94] {
    text-align: right;
}

.cm-empty[b-q37rwwjp94] {
    opacity: 0.75;
    font-style: italic;
}

/* The whole row is double-clickable, so say so with the cursor and light the row under the
   pointer. Both rules have to beat Bootstrap's .table-striped at (0,2,0). */
.cm-grid tbody tr[data-row-href][b-q37rwwjp94] {
    cursor: pointer;
}

.cm-events .cm-grid tbody tr[data-row-href]:hover > td[b-q37rwwjp94] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

.cm-paging[b-q37rwwjp94] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}
/* /Components/Pages/EventSubmission.razor.rz.scp.css */
/* The form an event home page's "Submit a ..." links open (2026-10-05). The boxed look is scoped per
   page in this app, so this carries its own copies - the registration page's rules. */

.cm-sub-event[b-sld7eakkoo] {
    margin-top: -0.25rem;
    margin-bottom: 1rem;
    font-size: 1.1rem;
    opacity: 0.85;
}

.cm-submission[b-sld7eakkoo] {
    max-width: 52rem;
}

.cm-submission .cm-section[b-sld7eakkoo] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-submission legend[b-sld7eakkoo] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-submission .cm-field[b-sld7eakkoo] {
    margin-bottom: 0.75rem;
}

.cm-submission .cm-field label[b-sld7eakkoo] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-submission .cm-profilebar[b-sld7eakkoo] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.5rem;
}
/* /Components/Pages/EventWizard.razor.rz.scp.css */
/* The new event wizard (2026-10-20): its panels slide in from the right going forward and from the left going back
   (wwwroot/js/slide-wizard.js); the frame hides what's sliding out and follows the new panel's height. */

.cm-eventwizard[b-2altn9e2se] {
    max-width: 60rem;
}

.cm-eventwizard-for[b-2altn9e2se] {
    color: var(--cm-muted, #6c757d);
    margin-bottom: 1rem;
}

/* Whose event it is, after step 1's heading (2026-10-22), muted as its own line was, the organization's name bold. */
.cm-wizard-step1-for[b-2altn9e2se] {
    color: var(--cm-muted, #6c757d);
    font-weight: 400;
}

.cm-wizard-step1-for strong[b-2altn9e2se] {
    font-weight: 600;
}

.cm-slides[b-2altn9e2se] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.5rem;
    background: var(--cm-surface, var(--bs-body-bg, #fff));
    padding: 1rem 1.25rem 1.25rem;
}

.cm-slides-step[b-2altn9e2se] {
    margin: 0 0 0.5rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--cm-muted, #6c757d);
}

/* Clipped while the panels slide (slide-wizard.js marks the wizard data-cm-sliding then), and otherwise only from side to
   side: a list that drops below its box - step 5's venue search - would be cut off at the foot of the panel (2026-10-21).
   overflow-x: clip, unlike hidden, leaves the other direction visible. */
.cm-slides-frame[b-2altn9e2se] {
    position: relative;
    overflow-x: clip;
    overflow-y: visible;
    /* Reaching a rem past the wizard's padding on each side, the panels padded back in by as much: a Save button's
       unsaved-changes ring (app.css's .cm-save-needed, a 0.2rem ring and its glow) at a panel's left edge was cut off by
       the clip (2026-10-22: "left edge of save (grid) buttons is cut off"). */
    margin-inline: -1rem;
}

.cm-slides[data-cm-sliding] .cm-slides-frame[b-2altn9e2se] {
    overflow: hidden;
}

.cm-slide[b-2altn9e2se] {
    min-height: 12rem;
    padding-inline: 1rem;
}

.cm-slide h2[b-2altn9e2se] {
    font-size: 1.4rem;
    margin-bottom: 0.75rem;
}

/* A step's heading with its Download Template button at the top right (2026-10-22: "every step should have a Download
   Template button in the top right corner"); the button goes under the heading when there's no room beside it. */
.cm-wizard-step-head[b-2altn9e2se] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.25rem 1rem;
}

.cm-wizard-step-download[b-2altn9e2se] {
    margin: 0 0 0.75rem auto;
}

.cm-slide h2:focus[b-2altn9e2se] {
    outline: none;
}

.cm-slide h3[b-2altn9e2se] {
    font-size: 1.05rem;
    margin: 1rem 0 0.4rem;
}

.cm-slide ul[b-2altn9e2se] {
    padding-left: 1.25rem;
    margin-bottom: 0.5rem;
}

.cm-slide li[b-2altn9e2se] {
    margin-bottom: 0.35rem;
}

/* Step 1's opening paragraph runs straight into the two headings under it, which are bold (2026-10-22): its 1rem under it
   and their 1rem over them made a blank line. */
.cm-wizard-intro[b-2altn9e2se] {
    margin-bottom: 0.25rem;
}

.cm-wizard-columns h3[b-2altn9e2se] {
    margin-top: 0;
    font-weight: 700;
}

.cm-wizard-columns[b-2altn9e2se] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-areas:
        "set upload"
        "note download";
    gap: 0 1.5rem;
}

.cm-wizard-set[b-2altn9e2se] {
    grid-area: set;
}

.cm-wizard-uploads[b-2altn9e2se] {
    grid-area: upload;
}

/* The note to come back (2026-10-21), level with Download Template For across from it, a fifth larger than the tips
   ("Make the font for the paragraph about 20% larger"). */
.cm-wizard-note[b-2altn9e2se] {
    grid-area: note;
    margin: 0;
    font-size: 1.08rem;
    font-weight: 600;
}

.cm-wizard-download[b-2altn9e2se] {
    grid-area: download;
}

/* Its form first in it since "Download a template below." went (2026-10-22), so no gap above, level with the note. */
.cm-wizard-download > .cm-wizard-template[b-2altn9e2se] {
    margin-top: 0;
}

@media (max-width: 767.98px) {
    .cm-wizard-columns[b-2altn9e2se] {
        grid-template-columns: 1fr;
        grid-template-areas:
            "set"
            "upload"
            "download"
            "note";
    }

    /* One under the other on a phone, the second heading keeps some room above it. */
    .cm-wizard-uploads h3[b-2altn9e2se] {
        margin-top: 0.75rem;
    }

    .cm-wizard-note[b-2altn9e2se] {
        margin-top: 1rem;
    }
}

.cm-wizard-tip[b-2altn9e2se] {
    font-size: 0.9rem;
    color: var(--cm-muted, #6c757d);
}

/* Step 3 (2026-10-21): the event's own fields on the left, a wider column, what it includes on the right. */
.cm-wizard-pair[b-2altn9e2se] {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    gap: 0 1.5rem;
    align-items: start;
}

@media (max-width: 767.98px) {
    .cm-wizard-pair[b-2altn9e2se] {
        grid-template-columns: 1fr;
    }
}

.cm-wizard-field[b-2altn9e2se] {
    margin-bottom: 0.75rem;
}

.cm-wizard-field .form-label[b-2altn9e2se] {
    font-weight: 600;
    margin-bottom: 0.25rem;
}

/* Two by two: the start's date and time, then the end's. */
.cm-wizard-dates[b-2altn9e2se] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem 0.75rem;
}

.cm-wizard-dates label[b-2altn9e2se] {
    font-size: 0.9em;
    margin-bottom: 0.15rem;
}

.cm-wizard-includes[b-2altn9e2se] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.5rem;
    padding: 0.5rem 1rem 0.75rem;
    margin: 1rem 0 0;
}

.cm-wizard-includes legend[b-2altn9e2se] {
    float: none;
    width: auto;
    font-size: 1.05rem;
    font-weight: 600;
    padding: 0 0.35rem;
    margin-bottom: 0.25rem;
}

.cm-wizard-includes .form-check[b-2altn9e2se] {
    margin-bottom: 0.35rem;
}

/* Step 4 (2026-10-21): the content items' grid - Include narrow and centered, the titles, the custom names. */
.cm-wizard-items[b-2altn9e2se] {
    margin-bottom: 0;
}

.cm-wizard-items th[b-2altn9e2se] {
    font-weight: 600;
    white-space: nowrap;
}

.cm-wizard-items .cm-wizard-items-include[b-2altn9e2se] {
    width: 5rem;
    text-align: center;
}

.cm-wizard-items .cm-wizard-items-include .form-check-input[b-2altn9e2se] {
    float: none;
    margin: 0;
}

.cm-wizard-items-title[b-2altn9e2se] {
    margin: 0;
}

.cm-wizard-items .form-control[b-2altn9e2se] {
    min-width: 10rem;
}

/* Registration's box, checked and fixed, says why when clicked. */
.cm-wizard-items .form-check-input[aria-disabled="true"][b-2altn9e2se] {
    opacity: 0.6;
    cursor: not-allowed;
}

/* Step 5 (2026-10-21): the venue, in a column of the page's width at most, and a venue not yet on record two fields to a
   row - its name and the two address lines across both. */
.cm-wizard-venue[b-2altn9e2se] {
    max-width: 40rem;
}

.cm-wizard-newvenue[b-2altn9e2se] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.5rem;
    padding: 0.5rem 1rem 0.75rem;
    margin: 0.5rem 0 0;
}

.cm-wizard-newvenue legend[b-2altn9e2se] {
    float: none;
    width: auto;
    font-size: 1.05rem;
    font-weight: 600;
    padding: 0 0.35rem;
    margin-bottom: 0.25rem;
}

.cm-wizard-venue-fields[b-2altn9e2se] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 1rem;
}

.cm-wizard-venue-wide[b-2altn9e2se] {
    grid-column: 1 / -1;
}

@media (max-width: 575.98px) {
    .cm-wizard-venue-fields[b-2altn9e2se] {
        grid-template-columns: 1fr;
    }
}

.cm-wizard-newvenue .cm-geoapify[b-2altn9e2se] {
    margin: 0.25rem 0 0;
}

/* The template download (2026-10-20): the dropdown and its button on one line where they fit. */
.cm-wizard-template[b-2altn9e2se] {
    margin-top: 0.25rem;
}

.cm-wizard-template .form-label[b-2altn9e2se] {
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.cm-wizard-template-row[b-2altn9e2se] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.cm-wizard-template-row .form-select[b-2altn9e2se] {
    flex: 1 1 14rem;
    min-width: 0;
}

.cm-wizard-template .cm-wizard-tip[b-2altn9e2se] {
    margin: 0.4rem 0 0;
}

/* Previous Step at the left, Cancel in the center (2026-10-21), Next Step at the right - a grid, so Cancel is centered
   however wide the two step buttons are. */
.cm-slides-nav[b-2altn9e2se] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 0.75rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
}

.cm-slides-nav [data-cm-slide-back][b-2altn9e2se] {
    justify-self: start;
}

.cm-slides-nav [data-cm-slide-forward][b-2altn9e2se],
.cm-slides-nav [data-cm-slide-finish][b-2altn9e2se] {
    justify-self: end;
}

.cm-slides-cancel[b-2altn9e2se] {
    margin: 0;
}

/* On a phone the three don't fit a line: the step buttons share the first row, Cancel This Wizard centered under them. */
@media (max-width: 575.98px) {
    .cm-slides-nav[b-2altn9e2se] {
        grid-template-columns: 1fr 1fr;
    }

    .cm-slides-cancel[b-2altn9e2se] {
        grid-column: 1 / -1;
        grid-row: 2;
        justify-self: center;
    }
}

.cm-slides-nav [aria-disabled="true"][b-2altn9e2se] {
    opacity: 0.5;
    cursor: not-allowed;
}
/* /Components/Pages/Faq.razor.rz.scp.css */
/* The FAQ: one measured column, like the legal pages, because long paragraphs are unreadable at
   the full width of a wide screen. */

.cm-faq[b-hgd9ab2g0k] {
    max-width: 52rem;
}

.cm-faq-intro[b-hgd9ab2g0k] {
    margin-bottom: 1.5rem;
}

/* The section headings. Smaller than the page title and spaced away from the answers above, so
   the page reads as a handful of groups rather than one long list. */
.cm-faq h2[b-hgd9ab2g0k] {
    margin-top: 2rem;
    margin-bottom: 0.75rem;
    font-size: 1.15rem;
    padding-bottom: 0.25rem;
    border-bottom: 1px solid rgba(128, 128, 128, 0.3);
}

/* One question. A details element, so it opens on a click or the space bar with no script at
   all - and the browser's own disclosure triangle tells a screen reader whether it is open. */
.cm-faq details[b-hgd9ab2g0k] {
    border-bottom: 1px solid rgba(128, 128, 128, 0.18);
    padding: 0.1rem 0;
}

.cm-faq summary[b-hgd9ab2g0k] {
    padding: 0.55rem 0.25rem;
    cursor: pointer;
    font-weight: 600;
    line-height: 1.4;
}

/* The focus ring has to be visible: this is the only thing on the page a keyboard lands on. */
.cm-faq summary:focus-visible[b-hgd9ab2g0k] {
    outline: 2px solid var(--cm-accent, #1b6ec2);
    outline-offset: 2px;
    border-radius: 0.2rem;
}

.cm-faq summary:hover[b-hgd9ab2g0k] {
    color: var(--cm-accent, #1b6ec2);
}

/* The answer, indented under its question so an open one reads as belonging to it. */
.cm-faq details > p[b-hgd9ab2g0k],
.cm-faq details > ul[b-hgd9ab2g0k] {
    margin: 0 0 0.75rem 1.25rem;
    line-height: 1.55;
}

.cm-faq details > ul[b-hgd9ab2g0k] {
    padding-left: 1rem;
}

.cm-faq details li[b-hgd9ab2g0k] {
    margin-bottom: 0.3rem;
    line-height: 1.5;
}

.cm-faq code[b-hgd9ab2g0k] {
    font-size: 0.85em;
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* The photo rows, the text between them, the gallery and the sign-off moved to
   Shared/HomeDesign.razor.css on 2026-09-25, with the markup, so an organization's home page
   shares them. What is left is this page's own. */

/* The organization's own home page, rendered as written. Images are held to the column so a
   wide one cannot push the page sideways, and video keeps its shape. */
.cm-homepage-content[b-gts594pz0r] {
    line-height: 1.6;
}

.cm-homepage-content img[b-gts594pz0r],
.cm-homepage-content iframe[b-gts594pz0r] {
    max-width: 100%;
}

.cm-homepage-content iframe[b-gts594pz0r] {
    aspect-ratio: 16 / 9;
    height: auto;
    border: 0;
}

/* The invitation to test drive the site. Centred on the line and set in bold - it is the one
   thing on this page addressed to somebody who has not signed up yet, so it reads as an offer
   rather than as a sentence that happens to be a link.

   font-weight sits on the anchor, not on the paragraph: site.css styles links directly, and a
   weight inherited from the paragraph loses to any rule that names the anchor itself. */
.cm-testdrive[b-gts594pz0r] {
    text-align: center;
}

.cm-testdrive a[b-gts594pz0r] {
    font-weight: 700;
}
/* /Components/Pages/HomePagePreview.razor.rz.scp.css */
/* The preview. Everything outside .cm-preview-page belongs to the preview rather than to the
   page being previewed, and is kept visually apart from it for that reason. */

.cm-preview[b-vux4djvz04] {
    max-width: 60rem;
    margin: 0 auto;
}

.cm-preview-bar[b-vux4djvz04] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
}

.cm-preview-label[b-vux4djvz04] {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    opacity: 0.7;
    margin-right: 0.5rem;
}

.cm-preview-name[b-vux4djvz04] {
    font-size: 1.2rem;
    font-weight: 600;
}

/* The saved content, rendered as written. Images are held to the column so a wide one cannot
   push the page sideways. */
.cm-preview-page[b-vux4djvz04] {
    line-height: 1.6;
}

.cm-preview-page img[b-vux4djvz04],
.cm-preview-page iframe[b-vux4djvz04] {
    max-width: 100%;
}

.cm-preview-page iframe[b-vux4djvz04] {
    aspect-ratio: 16 / 9;
    height: auto;
    border: 0;
}

.cm-empty[b-vux4djvz04] {
    opacity: 0.75;
    font-style: italic;
}
/* /Components/Pages/OrganizationProfile.razor.rz.scp.css */
/* The organization profile: the same boxed sections as the system settings form, plus the
   read-only states this form has and that one does not. */

.cm-settings[b-e1i3bhzfzf] {
    font-size: 0.8em;
}

.cm-section[b-e1i3bhzfzf] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-e1i3bhzfzf] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

/* A smaller legend box inside a section (2026-10-10): the Credit Card Processing box's Sandbox and Production keys,
   its Cards Accepted and its Other Ways to Pay. */
.cm-subsection[b-e1i3bhzfzf] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.75rem 0.5rem;
    margin: 0.75rem 0;
    min-width: 0;
}

.cm-subsection > legend[b-e1i3bhzfzf] {
    float: none;
    width: auto;
    padding: 0 0.35rem;
    margin-bottom: 0.3rem;
    font-size: 0.9em;
    font-weight: 600;
    line-height: 1;
}

/* The ways to pay: a box, the brand's small marks and its name on one line. Bootstrap's form-check floats its box
   into a gutter; here it sits in the line. */
.cm-pay-method-grid[b-e1i3bhzfzf] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 0.4rem 1rem;
}

.cm-pay-method[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 0;
    margin: 0;
    padding-left: 0;
}

.cm-pay-method .form-check-input[b-e1i3bhzfzf] {
    float: none;
    flex: none;
    margin: 0;
}

.cm-pay-method .form-check-label[b-e1i3bhzfzf] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.cm-pay-brand[b-e1i3bhzfzf] {
    flex: none;
    width: 38px;
    height: 24px;
}

.cm-pay-method-row[b-e1i3bhzfzf] {
    padding: 0.4rem 0;
}

.cm-pay-method-row + .cm-pay-method-row[b-e1i3bhzfzf] {
    border-top: 1px solid var(--cm-border, #e3e3e3);
}

/* What a ticked way to pay brings with it, under its box. */
.cm-pay-method-detail[b-e1i3bhzfzf] {
    margin: 0.35rem 0 0.2rem 1.6rem;
}

.cm-pay-method-steps[b-e1i3bhzfzf] {
    margin: 0;
}

.cm-field[b-e1i3bhzfzf] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-e1i3bhzfzf] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* ::deep because most inputs are rendered by InputText/InputSelect, which are child components
   and so carry their own scope identifier rather than this page's. */
.cm-settings[b-e1i3bhzfzf]  .form-control,
.cm-settings[b-e1i3bhzfzf]  .form-select,
.cm-settings .form-control[b-e1i3bhzfzf] {
    font-size: 1em;
    padding: 0.25rem 0.5rem;
    height: auto;
    min-height: 0;
    line-height: 1.35;
}

.cm-settings[b-e1i3bhzfzf]  .form-check {
    margin-bottom: 0.5rem;
}

.cm-settings[b-e1i3bhzfzf]  .form-text,
.cm-settings .form-text[b-e1i3bhzfzf] {
    font-size: 0.9em;
    margin-top: 0.1rem;
}

.cm-settings[b-e1i3bhzfzf]  .validation-message {
    font-size: 0.9em;
}

.cm-settings[b-e1i3bhzfzf]  .btn,
.cm-settings .btn[b-e1i3bhzfzf] {
    font-size: 1em;
}

/* A disabled control still has to be legible - these are how the page shows a value that is
   computed rather than typed, so they are read, not skipped. Browsers grey them out heavily by
   default, which reads as "broken" rather than "not yours to change". */
.cm-settings .form-control:disabled[b-e1i3bhzfzf],
.cm-settings[b-e1i3bhzfzf]  .form-control:disabled,
.cm-settings[b-e1i3bhzfzf]  .form-select:disabled {
    opacity: 1;
    background-color: color-mix(in srgb, var(--cm-text, #212529) 6%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    cursor: not-allowed;
}

.cm-readonly-note[b-e1i3bhzfzf] {
    font-style: italic;
    opacity: 0.8;
    margin-bottom: 0.75rem;
}

.cm-empty[b-e1i3bhzfzf] {
    opacity: 0.75;
    font-style: italic;
}


/* ---- Organization Users grid ------------------------------------------- */

.cm-orguserbar[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
}

.cm-orguserbar input[b-e1i3bhzfzf] {
    width: auto;
    min-width: 12rem;
}

.cm-grid-scroll[b-e1i3bhzfzf] {
    overflow-x: auto;
}

.cm-grid[b-e1i3bhzfzf] {
    font-size: 1em;
    margin-bottom: 0.25rem;
}

.cm-grid th[b-e1i3bhzfzf] {
    white-space: nowrap;
}

.cm-grid td[b-e1i3bhzfzf] {
    vertical-align: middle;
    white-space: nowrap;
}

.cm-num[b-e1i3bhzfzf] {
    text-align: right;
}

.cm-centre[b-e1i3bhzfzf] {
    text-align: center;
}

.cm-count[b-e1i3bhzfzf] {
    opacity: 0.75;
}

.cm-empty[b-e1i3bhzfzf] {
    opacity: 0.75;
    font-style: italic;
}

/* The two access flags. A submit button drawn as a checkbox, so one click both sets the flag
   and saves it - there is no edit form behind this grid. */
.cm-flag[b-e1i3bhzfzf] {
    width: 1.15rem;
    height: 1.15rem;
    padding: 0;
    line-height: 1;
    font-size: 0.8rem;
    border: 1px solid var(--cm-muted, #6c757d);
    border-radius: 0.2rem;
    background-color: var(--cm-surface, #ffffff);
    color: var(--cm-accent-text, #ffffff);
    cursor: pointer;
}

.cm-flag-on[b-e1i3bhzfzf] {
    background-color: var(--cm-accent, #1b6ec2);
    border-color: var(--cm-accent, #1b6ec2);
}

.cm-flag:disabled[b-e1i3bhzfzf] {
    cursor: not-allowed;
    opacity: 0.65;
}

.cm-paging[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.25rem;
}

/* The Organization Users rows open a profile, so say so with the cursor and light the row under
   the pointer. Both rules have to beat Bootstrap's .table-striped at (0,2,0). */
.cm-grid tbody tr[data-row-href][b-e1i3bhzfzf] {
    cursor: pointer;
}

.cm-orgusers .cm-grid tbody tr[data-row-href]:hover > td[b-e1i3bhzfzf] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

/* The locked notice. Bold and upright rather than the italic, faded styling the ordinary
   read-only note uses: this one is telling someone their organization has been stopped, which
   is not a detail to be skimmed past. */
.cm-locked-note[b-e1i3bhzfzf] {
    font-style: normal;
    font-weight: 700;
    opacity: 1;
}

/* The organization's events grid. Five columns, with the title taking the width the id column
   used to hold, and wrapping rather than being clipped when a title runs long. */
.cm-orgeventgrid[b-e1i3bhzfzf] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-evtitle[b-e1i3bhzfzf] { width: 40%; }
.cm-w-evtype[b-e1i3bhzfzf] { width: 16%; }
.cm-w-evlist[b-e1i3bhzfzf] { width: 18%; }
.cm-w-evdate[b-e1i3bhzfzf] { width: 13%; }

.cm-orgeventgrid td.cm-wrap[b-e1i3bhzfzf] {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* The Add Event link above the events grid. Spaced off the grid so it reads as a control over
   it rather than as part of the table. */
.cm-orgevents .cm-rowbar[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

/* ---- arranging the sections -------------------------------------------------------------------
   wwwroot/js/section-layout.js adds cm-draggable-legend to each legend it has turned into a drag
   handle, and it only does that for a system administrator - so none of this reaches anybody
   else's page. The rules are scoped like the rest of this file, which is fine for a class added
   at runtime: the scope attribute is already on the legend the server rendered. */

.cm-draggable-legend[b-e1i3bhzfzf] {
    cursor: grab;
}

.cm-draggable-legend:active[b-e1i3bhzfzf] {
    cursor: grabbing;
}

/* The legend is the handle, so it says so where the handle is. */
.cm-draggable-legend[b-e1i3bhzfzf]::after {
    content: " ⠿";
    opacity: 0.45;
    font-size: 0.85em;
}

.cm-section-dragging[b-e1i3bhzfzf] {
    opacity: 0.55;
    outline: 2px dashed var(--cm-accent, #1b6ec2);
}

.cm-section-status[b-e1i3bhzfzf] {
    margin: 0 0 0.5rem 0;
    font-size: 0.85rem;
    color: var(--cm-muted, #6c757d);
}

/* Delete Organization, alone at the foot of Basic Information: set apart from the boxes above
   by a rule, with the note on what it does beside the button. */
.cm-delete-organization[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin: 0.5rem 0 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--cm-border, #d6d5d5);
}

.cm-delete-organization .cm-hint[b-e1i3bhzfzf] {
    font-size: 0.85rem;
    color: var(--cm-muted, #6c757d);
}

/* A deleted organization's notice, with Restore Organization at its right-hand end. */
.cm-deleted-notice[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.cm-deleted-notice > span[b-e1i3bhzfzf] {
    flex: 1 1 20rem;
}

.cm-deleted-notice form[b-e1i3bhzfzf] {
    margin: 0;
}

/* The save row: Save on the left, Add Test Organization pushed to the right-hand end and level
   with the button rather than with the notes that can sit above it. The bottom margin is the
   one the Save button used to carry itself. */
.cm-saverow[b-e1i3bhzfzf] {
    display: flex;
    align-items: flex-end;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.cm-saverow-end[b-e1i3bhzfzf] {
    margin-left: auto;
    white-space: nowrap;
}

/* A stock email trigger that is switched off reads as switched off. */
.cm-triggergrid tbody tr.cm-trigger-off > td[b-e1i3bhzfzf] {
    opacity: 0.55;
}

/* The five yes/no columns carry long names; they wrap onto two lines so all ten columns fit. */
.cm-triggergrid thead th.cm-centre[b-e1i3bhzfzf] {
    white-space: normal;
    width: 7rem;
}

/* Organization Users - deleting a user, with the bin and the way back as on the attendee grid. */
.cm-trash[b-e1i3bhzfzf] {
    line-height: 1;
    padding: 0.2rem 0.55rem;
}

/* The nav's .bi icons are white SVGs painted as background images, which is right on the dark
   sidebar and invisible on a white table row - and there is no bin among them. This is the
   Bootstrap Icons bin drawn as a mask instead of a background, so the shape takes the button's
   own color: red while the button is at rest, white once the hover inverts it. */
.cm-trash-icon[b-e1i3bhzfzf] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-trash-mask);
    mask-image: var(--cm-trash-mask);
}

/* The way back, for a row already marked deleted. */
.cm-restore-icon[b-e1i3bhzfzf] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-restore-mask);
    mask-image: var(--cm-restore-mask);
}

.cm-restore-icon[b-e1i3bhzfzf] {
    --cm-restore-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z'/%3E%3Cpath d='M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466z'/%3E%3C/svg%3E");
}

.cm-trash-icon[b-e1i3bhzfzf] {
    --cm-trash-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E");
}

/* A deleted member is still listed for an administrator - in red, so it does not read as a live one. */
.cm-orgusers .cm-grid tbody tr.cm-deleted > td[b-e1i3bhzfzf] {
    color: var(--bs-danger, #b02a37);
    font-style: italic;
}

/* Why a lock was put on, and the paragraphs after it: ordinary weight, so the one bold line above
   still reads as the headline (2026-09-26). */
.cm-locked-note p + p[b-e1i3bhzfzf] {
    font-weight: 400;
}

/* A service fee card: what is on file, then the button that replaces it. */
.cm-fee-card[b-e1i3bhzfzf] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
}

/* The Events tab's Add Event, grayed while this person cannot add one (2026-09-30), and still
   clickable: the click says why. */
.cm-add-event[aria-disabled="true"][b-e1i3bhzfzf] {
    opacity: 0.55;
    cursor: not-allowed;
}

/* ---- the IRS Exemption Letter's window ------------------------------------------------------------
   Until 2026-09-30 this page had no styles for it, so "View the IRS Exemption Letter" opened it in
   the page's own flow at the very foot of the page - which cannot scroll while a window is open
   (body.cm-dialog-showing) - and the letter was cut off at the bottom of the browser window. It is
   the event profile's window now: over the page, never taller than the screen, its body the part
   that scrolls. */
.cm-dialog[b-e1i3bhzfzf] {
    position: fixed;
    inset: 0;
    z-index: 1060;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem 1rem;
    background: rgba(24, 20, 28, 0.55);
}

/* hidden is how the script opens and closes it, and display:flex above would otherwise win. */
.cm-dialog[hidden][b-e1i3bhzfzf] {
    display: none;
}

.cm-dialog-card[b-e1i3bhzfzf] {
    display: flex;
    flex-direction: column;
    width: min(64rem, 100%);
    max-height: 90vh;
    background: var(--cm-card-bg, #ffffff);
    border-radius: 0.5rem;
    box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, 0.35);
    overflow: hidden;
}

.cm-dialog-head[b-e1i3bhzfzf],
.cm-dialog-foot[b-e1i3bhzfzf] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
}

.cm-dialog-foot[b-e1i3bhzfzf] {
    flex-wrap: wrap;
    border-bottom: 0;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
}

.cm-dialog-head h2[b-e1i3bhzfzf] {
    flex: 1 1 auto;
    margin: 0;
    font-size: 1.15rem;
}

.cm-dialog-x[b-e1i3bhzfzf] {
    border: 0;
    background: transparent;
    font-size: 1.5rem;
    line-height: 1;
    padding: 0 0.25rem;
    cursor: pointer;
    color: inherit;
}

.cm-dialog-body[b-e1i3bhzfzf] {
    flex: 1 1 auto;
    overflow: auto;
    padding: 1rem;
    min-height: 0;
}

/* The letter itself. A PDF fills the window's height - an <object> is 150 pixels high unless it is
   told otherwise - and brings its own scrolling; a picture is shown whole, never wider than the
   window. */
.cm-letter-pdf[b-e1i3bhzfzf] {
    display: block;
    width: 100%;
    height: calc(90vh - 10rem);
    min-height: 16rem;
    border: 0;
}

.cm-letter-image[b-e1i3bhzfzf] {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 0 auto;
}


/* Organization 0's Auto Approve New Organizations boxes (2026-10-15), on Basic Information. */
.cm-auto-approve[b-e1i3bhzfzf] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.5rem;
    padding: 0.35rem 0.9rem 0.6rem;
    margin: 0.75rem 0;
}

.cm-auto-approve-legend[b-e1i3bhzfzf] {
    float: none;
    width: auto;
    font-size: 0.95rem;
    font-weight: 700;
    padding: 0 0.35rem;
    margin: 0;
}
/* /Components/Pages/Organizations.razor.rz.scp.css */
/* The user grid: thirteen columns, so the type is small and the table gets its own horizontal
   scroller rather than forcing the page to scroll sideways. */

.cm-users[b-ih8u2y6a07] {
    font-size: 0.8em;
}

.cm-userbar[b-ih8u2y6a07] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.6rem;
}

.cm-users .btn[b-ih8u2y6a07] {
    font-size: 1em;
}

.cm-count[b-ih8u2y6a07] {
    opacity: 0.75;
}

.cm-hint[b-ih8u2y6a07] {
    opacity: 0.6;
    font-style: italic;
}

.cm-grid-scroll[b-ih8u2y6a07] {
    overflow-x: auto;
}

.cm-grid[b-ih8u2y6a07] {
    font-size: 1em;
    margin-bottom: 0.75rem;
}

.cm-grid th[b-ih8u2y6a07] {
    white-space: nowrap;
}

.cm-grid td[b-ih8u2y6a07] {
    vertical-align: top;
    white-space: nowrap;
}

/* The heading is the sort control, so it should not read as body text. */
.cm-grid thead a[b-ih8u2y6a07] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-ih8u2y6a07] {
    text-decoration: underline;
}

.cm-sorted[b-ih8u2y6a07] {
    font-weight: 700;
}

.cm-arrow[b-ih8u2y6a07] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its inputs should not inflate the row height. */
.cm-filters th[b-ih8u2y6a07] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
}

.cm-users .form-control[b-ih8u2y6a07],
.cm-users .form-select[b-ih8u2y6a07] {
    font-size: 1em;
    padding: 0.15rem 0.35rem;
    height: auto;
    min-height: 0;
    line-height: 1.3;
    min-width: 6rem;
}

.cm-num[b-ih8u2y6a07] {
    text-align: right;
}

.cm-when[b-ih8u2y6a07] {
    white-space: nowrap;
}

.cm-empty[b-ih8u2y6a07] {
    opacity: 0.75;
    font-style: italic;
}

/* The whole row is double-clickable, so say so with the cursor and light the row under the
   pointer. The accent tint is mixed into the theme's own surface color, so it reads the same
   way on the light themes and the dark ones instead of being a fixed grey.
   Both rules have to beat Bootstrap's .table-striped, which paints every other row through
   --bs-table-striped-bg at (0,2,0); these are (0,3,0) and (0,3,1). */
.cm-grid tbody tr[data-row-href][b-ih8u2y6a07] {
    cursor: pointer;
}

.cm-users .cm-grid tbody tr[data-row-href]:hover > td[b-ih8u2y6a07] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

.cm-paging[b-ih8u2y6a07] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* The grid lays itself out from the <colgroup> above the header rather than from its content,
   which is what makes those percentages the widths that actually render - with the default auto
   layout a percentage is only a suggestion and the content wins. Scoped to this page, so the
   users grid keeps sizing itself from its own content. */
.cm-grid[b-ih8u2y6a07] {
    table-layout: fixed;
}

/* Values wrap inside their column instead of running past it. The body cells inherit nowrap
   from the shared rule above, which with a fixed layout would push text out of the cell rather
   than into a second line; a contact name in 10% of the width needs to wrap. Headers stay on
   one line - they are short, and a wrapped sort link reads badly. */
.cm-grid td[b-ih8u2y6a07] {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* ---- Deleted and locked organizations ----------------------------------------------------

   Red is the theme's own --cm-bad, which every theme sets for its background. No theme has a
   yellow, and a fixed one fails half of them - pure yellow all but vanishes on white. So the
   yellow is mixed with the theme's text color: a dark gold on the light themes, a bright yellow
   on the dark ones, readable on both.

   Color on the cells rather than the row, because Bootstrap colors every cell itself through
   .table > :not(caption) > * > *. Both rules repeat :hover so the hover rule above, which sets
   the text color back to --cm-text, does not wash the color out; they come after that rule and
   match its weight. */
.cm-users .cm-grid tbody tr.cm-org-deleted > td[b-ih8u2y6a07],
.cm-users .cm-grid tbody tr.cm-org-deleted:hover > td[b-ih8u2y6a07],
.cm-key-deleted[b-ih8u2y6a07] {
    color: var(--cm-bad, #dc3545);
}

.cm-users .cm-grid tbody tr.cm-org-locked > td[b-ih8u2y6a07],
.cm-users .cm-grid tbody tr.cm-org-locked:hover > td[b-ih8u2y6a07],
.cm-key-locked[b-ih8u2y6a07] {
    color: color-mix(in srgb, #f2c200 60%, var(--cm-text, #212529));
}

.cm-key-deleted[b-ih8u2y6a07],
.cm-key-locked[b-ih8u2y6a07] {
    font-weight: 600;
}

.cm-rowkey[b-ih8u2y6a07] {
    font-size: 0.9em;
}
/* /Components/Pages/PrivacyPolicy.razor.rz.scp.css */
/* The legal pages: a single measured column, since long paragraphs are unreadable at the full
   width of a wide screen. Shared verbatim with TermsOfUse.razor.css. */

.cm-legal[b-obdgv8k5u7] {
    max-width: 52rem;
}

/* The page title is an h1, like every other page's, and nothing is set on it here: it should
   look like the title of any other page. */

/* The sections within it - h2 now that the title is h1. Smaller than the title and spaced away
   from the text above. */
.cm-legal h2[b-obdgv8k5u7] {
    margin-top: 1.5rem;
    font-size: 1.1rem;
}

.cm-legal p[b-obdgv8k5u7],
.cm-legal li[b-obdgv8k5u7] {
    line-height: 1.5;
}

.cm-legal ul[b-obdgv8k5u7] {
    margin-bottom: 1rem;
}

.cm-effective[b-obdgv8k5u7] {
    opacity: 0.75;
    font-style: italic;
}

.cm-legal-address[b-obdgv8k5u7] {
    margin-top: 0.5rem;
    padding: 0.6rem 0.9rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.25rem;
    background-color: var(--cm-surface, #ffffff);
    font-style: normal;
}
/* /Components/Pages/RsvpCode.razor.rz.scp.css */
/* The /rsvp code page: one short box, in the site's usual boxed look. */

.cm-rsvpcode[b-d2dudc2t34] {
    max-width: 32rem;
}

.cm-rsvpcode .cm-section[b-d2dudc2t34] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-rsvpcode legend[b-d2dudc2t34] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-rsvpcode .cm-field label[b-d2dudc2t34] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

/* A code is read off a card: large, spaced, and all capitals as it is typed. */
.cm-rsvpcode .cm-code[b-d2dudc2t34] {
    max-width: 14rem;
    font-size: 1.35rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    font-family: Consolas, "Courier New", monospace;
}

.cm-rsvpcode .cm-profilebar[b-d2dudc2t34] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.75rem;
}
/* /Components/Pages/SponsorPage.razor.rz.scp.css */
/* A sponsor's page (2026-10-01): the name, and the contact details under it. */

.cm-sponsor-page[b-a5ezya0e6j] {
    max-width: 40rem;
    margin: 1rem auto;
}

.cm-sponsor-contact[b-a5ezya0e6j] {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.5rem 1.25rem;
    font-size: 1.1em;
}

.cm-sponsor-contact dt[b-a5ezya0e6j] {
    font-weight: 700;
}

.cm-sponsor-contact dd[b-a5ezya0e6j] {
    margin: 0;
}

.cm-sponsor-none[b-a5ezya0e6j] {
    font-style: italic;
}

/* The logo to the left of the name and contact details (2026-10-13). */
.cm-sponsor-identity[b-a5ezya0e6j] {
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
}

.cm-sponsor-page-logo[b-a5ezya0e6j] {
    flex: 0 0 auto;
    max-width: min(12rem, 30vw);
    max-height: 9rem;
    width: auto;
    height: auto;
}

.cm-sponsor-identity-text[b-a5ezya0e6j] {
    flex: 1 1 auto;
    min-width: 0;
}
/* /Components/Pages/StartRegistration.razor.rz.scp.css */
/* The public RSVP / registration page. The boxed look and the grid styles are scoped per page in
   this app, so this carries its own copies - the same rules the attendee form uses. */

.cm-reg-event[b-dvk5gjby1k] {
    margin-top: -0.25rem;
    margin-bottom: 1rem;
    font-size: 1.1rem;
    opacity: 0.85;
}

.cm-registration[b-dvk5gjby1k] {
    max-width: 52rem;
}

.cm-registration .cm-section[b-dvk5gjby1k] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-registration legend[b-dvk5gjby1k] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-registration .cm-field[b-dvk5gjby1k] {
    margin-bottom: 0.75rem;
}

.cm-registration .cm-field label[b-dvk5gjby1k] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

/* A last name and a zip code are short; a full-width box for either looks like it wants a
   paragraph. */
.cm-registration .cm-short[b-dvk5gjby1k] {
    max-width: 20rem;
}

/* A short password box's eye sits in the box (2026-10-29): the wrapper the eye is placed in takes the box's width, rather
   than running the page's width with the eye at its far right. */
.cm-registration .cm-password:has(> .cm-short)[b-dvk5gjby1k] {
    max-width: 20rem;
}

.cm-registration .cm-password > .cm-short[b-dvk5gjby1k] {
    max-width: none;
}

.cm-registration .cm-profilebar[b-dvk5gjby1k] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.5rem;
}

.cm-registration .cm-grid-scroll[b-dvk5gjby1k] {
    overflow-x: auto;
}

.cm-registration .cm-grid[b-dvk5gjby1k] {
    margin-bottom: 0.5rem;
}

.cm-registration .cm-grid th[b-dvk5gjby1k] {
    white-space: nowrap;
}

.cm-registration .cm-grid td[b-dvk5gjby1k] {
    vertical-align: middle;
}

.cm-registration .cm-grid td.cm-wrap[b-dvk5gjby1k] {
    white-space: normal;
}

.cm-registration .cm-grid td label[b-dvk5gjby1k] {
    margin: 0;
    cursor: pointer;
}

.cm-registration .cm-num[b-dvk5gjby1k] {
    text-align: right;
    white-space: nowrap;
}

.cm-registration .cm-flag-cell[b-dvk5gjby1k] {
    text-align: center;
    width: 1%;
    white-space: nowrap;
}

.cm-registration .cm-reg-qty[b-dvk5gjby1k] {
    display: inline-block;
    width: auto;
}

.cm-registration .cm-empty[b-dvk5gjby1k] {
    opacity: 0.75;
    font-style: italic;
}

.cm-registration .cm-reg-count:empty[b-dvk5gjby1k] {
    display: none;
}

/* A no already on file, said above the options it can be changed with. */
.cm-registration .cm-reg-declined[b-dvk5gjby1k] {
    font-style: italic;
}

/* What is owed, as two columns: the label, then the amount lined up on the right. */
.cm-registration .cm-reg-total[b-dvk5gjby1k] {
    display: grid;
    grid-template-columns: auto auto;
    justify-content: start;
    column-gap: 2rem;
    row-gap: 0.25rem;
    margin-bottom: 1rem;
}

.cm-registration .cm-reg-total dd[b-dvk5gjby1k] {
    margin: 0;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.cm-registration .cm-reg-total dt:last-of-type[b-dvk5gjby1k],
.cm-registration .cm-reg-total dd:last-of-type[b-dvk5gjby1k] {
    font-weight: 700;
}

/* Pay Now (2026-10-12; Pay by Mail sat beside it until 2026-10-19), a form of its own. */
.cm-registration .cm-reg-paychoices[b-dvk5gjby1k] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.cm-registration .cm-reg-paychoices form[b-dvk5gjby1k] {
    margin: 0;
}


/* GoRegister (2026-10-28): its items on the left, the registration and its ledger on the right; one above the other on a
   narrow window. */
.cm-registration.cm-goreg-wide[b-dvk5gjby1k] {
    max-width: 82rem;
}

.cm-goreg-columns[b-dvk5gjby1k] {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
    gap: 0 1.25rem;
    align-items: start;
}

@media (max-width: 991.98px) {
    .cm-goreg-columns[b-dvk5gjby1k] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.cm-reg-soldout td[b-dvk5gjby1k],
.cm-reg-waiting td[b-dvk5gjby1k] {
    opacity: 0.55;
}

.cm-reg-soldout-badge[b-dvk5gjby1k] {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0 0.35rem;
    border-radius: 0.25rem;
    background: #b00020;
    color: #fff;
    font-size: 0.75rem;
    font-weight: 700;
}

.cm-reg-refund-row td[b-dvk5gjby1k] {
    color: light-dark(#b00020, #ff8a80);
}

.cm-goreg-subhead[b-dvk5gjby1k] {
    margin: 1rem 0 0.4rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-goreg-totals[b-dvk5gjby1k] {
    display: grid;
    grid-template-columns: max-content max-content;
    gap: 0.15rem 1rem;
    margin: 0.5rem 0 0;
}

.cm-goreg-totals dt[b-dvk5gjby1k] {
    font-weight: 700;
}

.cm-goreg-totals dd[b-dvk5gjby1k] {
    margin: 0;
    text-align: right;
}

/* GoRegister's items, a panel a tab (2026-10-28), as the staff Registration page draws them: its color down the left, a
   turning arrow, the tab's title and how many lines. */
.cm-reg-group[b-dvk5gjby1k] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-left: 4px solid var(--cm-reg-color, var(--cm-accent, #1b6ec2));
    border-radius: 0.375rem;
    margin-bottom: 0.5rem;
    background: var(--cm-surface, #ffffff);
}

.cm-reg-group > summary[b-dvk5gjby1k] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.6rem;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}

.cm-reg-group > summary[b-dvk5gjby1k]::before {
    content: "\25B8";
    display: inline-block;
    width: 0.8em;
    transition: transform 0.15s ease;
}

.cm-reg-group[open] > summary[b-dvk5gjby1k]::before {
    transform: rotate(90deg);
}

.cm-reg-group > summary[b-dvk5gjby1k]::-webkit-details-marker {
    display: none;
}

.cm-reg-swatch[b-dvk5gjby1k] {
    flex: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background: var(--cm-reg-color, var(--cm-accent, #1b6ec2));
}

.cm-reg-groupcount[b-dvk5gjby1k] {
    font-weight: 400;
    opacity: 0.75;
}

.cm-reg-group .cm-grid-scroll[b-dvk5gjby1k] {
    padding: 0 0.5rem 0.5rem;
}

/* Your Registration's changes (2026-10-29): a registration item's Name on Badge under its title, a Remove or Paid at the end. */
.cm-goreg-badge[b-dvk5gjby1k] {
    margin-top: 0.3rem;
    max-width: 18rem;
}

.cm-goreg-badge label[b-dvk5gjby1k] {
    display: block;
    font-size: 0.85rem;
    font-weight: 700;
    margin-bottom: 0.1rem;
}

.cm-goreg-paid[b-dvk5gjby1k] {
    font-size: 0.85rem;
    opacity: 0.75;
    white-space: nowrap;
}

/* GoRegister's Checkout (2026-10-29), as the staff Registration page's: Items Purchased on the left, Transactions (the card)
   on the right, one above the other on a narrow screen; the brands the event takes, each with its small mark. */
.cm-checkout-columns[b-dvk5gjby1k] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
}

.cm-checkout-columns > .cm-section[b-dvk5gjby1k] {
    margin: 0;
}

.cm-checkout-items td.cm-wrap[b-dvk5gjby1k],
.cm-checkout-card .cm-reg-transactions td.cm-wrap[b-dvk5gjby1k] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cm-checkout-items td.cm-wrap[b-dvk5gjby1k] {
    width: 100%;
}

@media (max-width: 991.98px) {
    .cm-checkout-columns[b-dvk5gjby1k] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.cm-checkout-back[b-dvk5gjby1k] {
    margin-bottom: 0.75rem;
}

.cm-checkout-mark[b-dvk5gjby1k] {
    height: 1.5rem;
    width: auto;
    vertical-align: middle;
    margin-right: 0.25rem;
}

.cm-checkout-brands[b-dvk5gjby1k] {
    margin-bottom: 0.75rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.75rem;
}

.cm-checkout-brands-label[b-dvk5gjby1k] {
    flex-basis: 100%;
    font-weight: 600;
}

.cm-checkout-fees[b-dvk5gjby1k] {
    margin-bottom: 0.75rem;
}

/* GoRegister's registration step is the staff Registration page's screen (2026-10-29): Event Items on the left, dragged into
   the Registration grid on the right, Transactions under it - and one above the other below 992px ("the two grids need to
   stack if on a phone rather than be next to each other"). The staff page's rules, which its scoped CSS keeps to itself. */
.cm-reg-columns[b-dvk5gjby1k] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: 1rem;
    align-items: start;
}

@media (max-width: 991.98px) {
    .cm-reg-columns[b-dvk5gjby1k] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.cm-reg-left[b-dvk5gjby1k],
.cm-reg-right[b-dvk5gjby1k] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.cm-reg-left > .cm-section[b-dvk5gjby1k],
.cm-reg-right > .cm-section[b-dvk5gjby1k] {
    margin: 0;
}

/* Your Registration stays in the window while the page scrolls down the items, so there is always somewhere to drop one
   (the items list starts below GoRegister's heading, and scrolling to an item took the grid off the top). Side by side
   only: stacked on a phone, it scrolls with the page. */
@media (min-width: 992px) {
    .cm-reg-right[b-dvk5gjby1k] {
        position: sticky;
        top: 1rem;
        max-height: calc(100vh - 2rem);
        overflow-y: auto;
    }
}

.cm-reg-options-scroll[b-dvk5gjby1k] {
    max-height: 70vh;
    overflow-y: auto;
    margin: 0;
}

.cm-reg-options tr[draggable="true"][b-dvk5gjby1k] {
    cursor: grab;
}

.cm-reg-options tr.cm-reg-overlapping > td[b-dvk5gjby1k] {
    color: var(--cm-muted, #6c757d);
}

.cm-reg-options tr.cm-reg-overlapping[b-dvk5gjby1k],
.cm-reg-options tr.cm-reg-soldout[b-dvk5gjby1k] {
    cursor: not-allowed;
}

.cm-reg-options [data-cm-reg-add][aria-disabled="true"][b-dvk5gjby1k] {
    opacity: 0.5;
    cursor: not-allowed;
}

.cm-reg-dropping[b-dvk5gjby1k] {
    outline: 3px dashed var(--cm-accent, #6f42c1);
    outline-offset: 2px;
}

.cm-registration .cm-registration-items .cm-reg-qty[b-dvk5gjby1k] {
    width: 5.5rem;
    margin-left: auto;
    text-align: right;
}

.cm-reg-grandtotal th[b-dvk5gjby1k],
.cm-reg-grandtotal td[b-dvk5gjby1k] {
    font-weight: 700;
}

.cm-reg-badge[b-dvk5gjby1k] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.5rem;
    margin-top: 0.25rem;
    font-size: 0.875em;
}

.cm-reg-badge-label[b-dvk5gjby1k] {
    font-weight: 600;
    white-space: nowrap;
}

.cm-reg-badge .cm-reg-badge-name[b-dvk5gjby1k] {
    width: auto;
    min-width: 10rem;
    flex: 1 1 10rem;
}

.cm-registration-items tr.cm-reg-canceled-line td[b-dvk5gjby1k] {
    color: light-dark(#b00020, #ff8a80);
}

.cm-hiddenform[b-dvk5gjby1k] {
    margin: 0;
}

.cm-registration-items td.cm-wrap[b-dvk5gjby1k] {
    white-space: normal;
    overflow-wrap: anywhere;
}
/* /Components/Pages/StockEmailTriggerEditor.razor.rz.scp.css */
/* The stock email trigger editor: boxed sections with their titles on the border, the way the
   profiles draw theirs. Scoped CSS reaches only this page, so the box rules are repeated here. */

.cm-lead[b-ag6hx9az4g] {
    opacity: 0.85;
}

.cm-section[b-ag6hx9az4g] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-ag6hx9az4g] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-ag6hx9az4g] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-ag6hx9az4g] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* ::deep because the inputs are rendered by InputText, a child component with its own scope
   identifier rather than this page's. */
.cm-field[b-ag6hx9az4g]  .cm-short {
    max-width: 12rem;
}

.cm-profilebar[b-ag6hx9az4g] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.cm-rowbar[b-ag6hx9az4g] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
/* /Components/Pages/Subscribe.razor.rz.scp.css */
/* The Subscribe form: one narrow column, as Contact Us is. */

.cm-subscribe-page[b-rc3snlxx68] {
    font-size: 0.9em;
    max-width: 36rem;
}

.cm-intro[b-rc3snlxx68] {
    opacity: 0.85;
    margin-bottom: 1rem;
}

.cm-field[b-rc3snlxx68] {
    margin-bottom: 0.9rem;
}

.cm-field > label:not(.form-check-label)[b-rc3snlxx68] {
    display: block;
    margin-bottom: 0.2rem;
    font-weight: 700;
}

.cm-subscribe-page[b-rc3snlxx68]  .form-control,
.cm-subscribe-page .form-control[b-rc3snlxx68] {
    font-size: 1em;
}
/* /Components/Pages/TermsOfUse.razor.rz.scp.css */
/* The legal pages: a single measured column, since long paragraphs are unreadable at the full
   width of a wide screen. Shared verbatim with TermsOfUse.razor.css. */

.cm-legal[b-97coy4ul1r] {
    max-width: 52rem;
}

/* The page title is an h1, like every other page's, and nothing is set on it here: it should
   look like the title of any other page. */

/* The sections within it - h2 now that the title is h1. Smaller than the title and spaced away
   from the text above. */
.cm-legal h2[b-97coy4ul1r] {
    margin-top: 1.5rem;
    font-size: 1.1rem;
}

.cm-legal p[b-97coy4ul1r],
.cm-legal li[b-97coy4ul1r] {
    line-height: 1.5;
}

.cm-legal ul[b-97coy4ul1r] {
    margin-bottom: 1rem;
}

.cm-effective[b-97coy4ul1r] {
    opacity: 0.75;
    font-style: italic;
}

.cm-legal-address[b-97coy4ul1r] {
    margin-top: 0.5rem;
    padding: 0.6rem 0.9rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.25rem;
    background-color: var(--cm-surface, #ffffff);
    font-style: normal;
}
/* /Components/Pages/TestDrive.razor.rz.scp.css */
/* The sign-up form's tabs (2026-10-15), shown one at a time by wwwroot/js/sign-up-wizard.js, which puts cm-wizard-on on
   the form. Without script the strip is not drawn and every tab shows, one under another. */
.cm-wizard-steps[b-yu7i3ramvd] {
    display: none;
    list-style: none;
    margin: 0 0 1rem 0;
    padding: 0;
    gap: 0.5rem;
    flex-wrap: wrap;
    counter-reset: none;
}

.cm-wizard-on .cm-wizard-steps[b-yu7i3ramvd] {
    display: flex;
}

.cm-wizard-steps li[b-yu7i3ramvd] {
    flex: 1 1 12rem;
}

.cm-wizard-step[b-yu7i3ramvd] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    width: 100%;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    background: var(--cm-surface, #fff);
    color: var(--cm-text, #212529);
    text-align: left;
    font-weight: 600;
    cursor: pointer;
}

.cm-wizard-step-number[b-yu7i3ramvd] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 50%;
    border: 2px solid currentColor;
    font-size: 0.9em;
}

.cm-wizard-step[aria-selected="true"][b-yu7i3ramvd] {
    border-color: var(--cm-accent, #258cfb);
    background: var(--cm-accent, #258cfb);
    color: var(--cm-accent-text, #fff);
}

/* A tab gone past shows a tick in place of its number. */
.cm-wizard-step.cm-wizard-step-done .cm-wizard-step-number[b-yu7i3ramvd] {
    border-color: var(--cm-accent, #258cfb);
    background: var(--cm-accent, #258cfb);
    color: var(--cm-accent-text, #fff);
    font-size: 0;
}

.cm-wizard-step.cm-wizard-step-done .cm-wizard-step-number[b-yu7i3ramvd]::after {
    content: "\2713";
    font-size: 0.9rem;
}

.cm-wizard-step:focus-visible[b-yu7i3ramvd] {
    outline: 2px solid var(--cm-focus, #258cfb);
    outline-offset: 2px;
}

.cm-wizard-heading[b-yu7i3ramvd] {
    font-size: 1.25rem;
    margin-bottom: 0.5rem;
}

.cm-wizard-nav[b-yu7i3ramvd] {
    flex-wrap: wrap;
    align-items: center;
}

.cm-wizard-error[b-yu7i3ramvd] {
    flex-basis: 100%;
    margin: 0;
}

/* Tab 1: the sample organizations in two columns (2026-10-15: "Put these in two columns"), one on a phone. */
.cm-sample-choices[b-yu7i3ramvd] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.6rem 1rem;
    margin-bottom: 0.75rem;
}

@media (max-width: 767.98px) {
    .cm-sample-choices[b-yu7i3ramvd] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.cm-sample-choice[b-yu7i3ramvd] {
    padding: 0.6rem 0.75rem 0.6rem 2.25rem;
    margin: 0;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
}

.cm-sample-choice:has(input:checked)[b-yu7i3ramvd] {
    border-color: var(--cm-accent, #258cfb);
    box-shadow: 0 0 0 1px var(--cm-accent, #258cfb);
}

.cm-sample-choice .form-check-label[b-yu7i3ramvd] {
    display: block;
    cursor: pointer;
}

.cm-sample-category[b-yu7i3ramvd] {
    margin-left: 0.4rem;
    font-size: 0.85em;
    opacity: 0.75;
}

.cm-sample-description[b-yu7i3ramvd] {
    display: block;
    margin-top: 0.25rem;
    white-space: pre-line;
}

/* Tab 4: the terms box and the blog under the two boxes. */
.cm-signup-agree[b-yu7i3ramvd] {
    margin: 0.5rem 0 1rem 0;
}

.cm-signup-agree .cm-termsopen[b-yu7i3ramvd] {
    padding-top: 0;
    padding-bottom: 0;
    vertical-align: baseline;
}

.cm-termstoggle:focus-visible ~ .cm-signup-agree .cm-termsopen[b-yu7i3ramvd] {
    outline: 2px solid var(--cm-focus, #258cfb);
    outline-offset: 2px;
}
/* /Components/Pages/UserProfile.razor.rz.scp.css */
/* The user profile form. Same boxed-section look as the system settings form, so the two read
   as one family. */

.cm-profile[b-mixb3b6ty8] {
    font-size: 0.8em;
}

.cm-section[b-mixb3b6ty8] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-mixb3b6ty8] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-mixb3b6ty8] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-mixb3b6ty8] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* ::deep because most inputs are rendered by InputText/InputSelect, which are child components
   carrying their own scope identifier rather than this page's. */
.cm-profile[b-mixb3b6ty8]  .form-control,
.cm-profile[b-mixb3b6ty8]  .form-select,
.cm-profile .form-control[b-mixb3b6ty8],
.cm-profile .form-select[b-mixb3b6ty8] {
    font-size: 1em;
    padding: 0.25rem 0.5rem;
    height: auto;
    min-height: 0;
    line-height: 1.35;
}

/* A read-only field should look settled rather than broken - muted, but not the washed-out
   grey a disabled control usually gets. */
.cm-profile .form-control[disabled][b-mixb3b6ty8] {
    background-color: var(--cm-raised, #f7f7f7);
    color: var(--cm-text, #212529);
    opacity: 1;
}

.cm-profile[b-mixb3b6ty8]  .form-text,
.cm-profile .form-text[b-mixb3b6ty8] {
    font-size: 0.9em;
    margin-top: 0.1rem;
}

.cm-profile[b-mixb3b6ty8]  .validation-message {
    font-size: 0.9em;
}

.cm-profile[b-mixb3b6ty8]  .btn {
    font-size: 1em;
}

/* ---- Comments editor --------------------------------------------------- */

/* The textarea behind the editor only carries the value to the server; the editor is the UI. */
.cm-profile[b-mixb3b6ty8]  .cm-quill-value {
    display: none;
}

.cm-quill[b-mixb3b6ty8] {
    min-height: 12rem;
    background-color: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
}

/* Quill draws its own chrome, which defaults to light. Point it at the theme's colors so the
   editor does not sit as a white slab on the dark themes. */
.cm-profile[b-mixb3b6ty8]  .ql-toolbar,
.cm-profile[b-mixb3b6ty8]  .ql-container {
    border-color: var(--cm-border, #d6d5d5);
}

.cm-profile[b-mixb3b6ty8]  .ql-toolbar {
    background-color: var(--cm-raised, #f7f7f7);
}

.cm-profile[b-mixb3b6ty8]  .ql-editor.ql-blank::before {
    color: var(--cm-muted, #6c757d);
}

.cm-profile[b-mixb3b6ty8]  .ql-snow .ql-stroke {
    stroke: var(--cm-text, #212529);
}

.cm-profile[b-mixb3b6ty8]  .ql-snow .ql-fill {
    fill: var(--cm-text, #212529);
}

.cm-profile[b-mixb3b6ty8]  .ql-snow .ql-picker {
    color: var(--cm-text, #212529);
}

.cm-profile[b-mixb3b6ty8]  .ql-snow .ql-picker-options {
    background-color: var(--cm-surface, #ffffff);
    border-color: var(--cm-border, #d6d5d5);
}

/* The Merge Content dropdown, appended to Quill's toolbar by quill-editor.js. Quill styles its
   own pickers but not a plain select, so this makes it sit with the rest of the toolbar. */
.cm-profile[b-mixb3b6ty8]  .cm-merge-group {
    float: right;
}

.cm-profile[b-mixb3b6ty8]  select.cm-merge {
    height: 24px;
    max-width: 12rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 3px;
    background-color: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
    font-size: 12px;
    padding: 0 0.25rem;
}

/* Account Delete Date: the checkbox that toggles it sits to the left of the date. ::deep for the
   checkbox, which InputCheckbox renders with its own scope. */
.cm-checkdate[b-mixb3b6ty8] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.cm-checkdate[b-mixb3b6ty8]  .form-check-input {
    flex: none;
    margin: 0;
}
/* /Components/Pages/Users.razor.rz.scp.css */
/* The user grid: thirteen columns, so the type is small and the table gets its own horizontal
   scroller rather than forcing the page to scroll sideways. */

.cm-users[b-azvcnjj47f] {
    font-size: 0.8em;
}

.cm-userbar[b-azvcnjj47f] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.6rem;
}

.cm-users .btn[b-azvcnjj47f] {
    font-size: 1em;
}

.cm-count[b-azvcnjj47f] {
    opacity: 0.75;
}

.cm-hint[b-azvcnjj47f] {
    opacity: 0.6;
    font-style: italic;
}

.cm-grid-scroll[b-azvcnjj47f] {
    overflow-x: auto;
}

.cm-grid[b-azvcnjj47f] {
    font-size: 1em;
    margin-bottom: 0.75rem;
}

.cm-grid th[b-azvcnjj47f] {
    white-space: nowrap;
}

.cm-grid td[b-azvcnjj47f] {
    vertical-align: top;
    white-space: nowrap;
}

/* The heading is the sort control, so it should not read as body text. */
.cm-grid thead a[b-azvcnjj47f] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-azvcnjj47f] {
    text-decoration: underline;
}

.cm-sorted[b-azvcnjj47f] {
    font-weight: 700;
}

.cm-arrow[b-azvcnjj47f] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its inputs should not inflate the row height. */
.cm-filters th[b-azvcnjj47f] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
}

.cm-users .form-control[b-azvcnjj47f],
.cm-users .form-select[b-azvcnjj47f] {
    font-size: 1em;
    padding: 0.15rem 0.35rem;
    height: auto;
    min-height: 0;
    line-height: 1.3;
    min-width: 6rem;
}

.cm-num[b-azvcnjj47f] {
    text-align: right;
}

.cm-when[b-azvcnjj47f] {
    white-space: nowrap;
}

.cm-empty[b-azvcnjj47f] {
    opacity: 0.75;
    font-style: italic;
}

/* The whole row is double-clickable, so say so with the cursor and light the row under the
   pointer. The accent tint is mixed into the theme's own surface color, so it reads the same
   way on the light themes and the dark ones instead of being a fixed grey.
   Both rules have to beat Bootstrap's .table-striped, which paints every other row through
   --bs-table-striped-bg at (0,2,0); these are (0,3,0) and (0,3,1). */
.cm-grid tbody tr[data-row-href][b-azvcnjj47f] {
    cursor: pointer;
}

.cm-users .cm-grid tbody tr[data-row-href]:hover > td[b-azvcnjj47f] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 14%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
}

.cm-paging[b-azvcnjj47f] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

/* Deleting a user - the bin and the way back, as on the attendee grid. */
.cm-delete-head[b-azvcnjj47f],
.cm-delete-cell[b-azvcnjj47f] {
    text-align: center;
}

.cm-trash[b-azvcnjj47f] {
    line-height: 1;
    padding: 0.2rem 0.55rem;
}

/* The nav's .bi icons are white SVGs painted as background images, which is right on the dark
   sidebar and invisible on a white table row - and there is no bin among them. This is the
   Bootstrap Icons bin drawn as a mask instead of a background, so the shape takes the button's
   own color: red while the button is at rest, white once the hover inverts it. */
.cm-trash-icon[b-azvcnjj47f] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-trash-mask);
    mask-image: var(--cm-trash-mask);
}

/* The way back, for a row already marked deleted. */
.cm-restore-icon[b-azvcnjj47f] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-restore-mask);
    mask-image: var(--cm-restore-mask);
}

.cm-restore-icon[b-azvcnjj47f] {
    --cm-restore-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M8 3a5 5 0 1 0 4.546 2.914.5.5 0 0 1 .908-.417A6 6 0 1 1 8 2v1z'/%3E%3Cpath d='M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466z'/%3E%3C/svg%3E");
}

.cm-trash-icon[b-azvcnjj47f] {
    --cm-trash-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E");
}

/* A deleted user is still listed for an administrator - it just should not read as a live one. */
.cm-grid tbody tr.cm-deleted > td[b-azvcnjj47f] {
    color: var(--bs-danger, #b02a37);
    font-style: italic;
}

/* The form every delete button posts to; it carries only the antiforgery token. */
.cm-hiddenform[b-azvcnjj47f] {
    margin: 0;
}
/* /Components/Shared/BlogPanels.razor.rz.scp.css */
/* A home site's blog page (2026-10-02): a legend box a month (2026-10-10), one under another, with a panel per entry
   in each. */
.cm-blog-panels[b-2h6djbijuw] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    margin-block: 1.5rem 1rem;
}

/* A month: drawn as the profiles' legend boxes are (a fieldset's border and its legend), but a details element, so the
   month and year in the top border open and close it. The title sits on the border with the page's own background
   behind it, as a legend does. */
.cm-blog-month[b-2h6djbijuw] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0 1rem 1rem;
}

.cm-blog-month:not([open])[b-2h6djbijuw] {
    padding-bottom: 0.4rem;
}

.cm-blog-month > summary[b-2h6djbijuw] {
    list-style: none;
    display: inline-flex;
    align-items: baseline;
    gap: 0.5rem;
    margin: -0.8rem 0 0 -0.4rem;
    padding: 0 0.4rem;
    line-height: 1.5;
    background: var(--cm-bg, var(--bs-body-bg, #fff));
    font-weight: 700;
    cursor: pointer;
}

.cm-blog-month > summary[b-2h6djbijuw]::-webkit-details-marker {
    display: none;
}

/* An arrow that turns as it opens. */
.cm-blog-month > summary[b-2h6djbijuw]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

.cm-blog-month[open] > summary[b-2h6djbijuw]::before {
    transform: rotate(90deg);
}

.cm-blog-month-title[b-2h6djbijuw] {
    font-size: 1.1em;
}

.cm-blog-month-count[b-2h6djbijuw] {
    font-weight: 400;
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-blog-month-entries[b-2h6djbijuw] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 0.4rem;
}

.cm-blog-panel[b-2h6djbijuw] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    border-radius: 0.5rem;
    background: var(--cm-raised, transparent);
}

/* The title, its date, and "more..." at the right - the whole line opens and closes it. */
.cm-blog-panel > summary[b-2h6djbijuw] {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.75rem;
    padding: 0.6rem 0.9rem;
    cursor: pointer;
}

.cm-blog-panel > summary[b-2h6djbijuw]::-webkit-details-marker {
    display: none;
}

.cm-blog-panel-title[b-2h6djbijuw] {
    flex: 1 1 auto;
    font-weight: 600;
    font-size: 1.1em;
}

.cm-blog-panel-meta[b-2h6djbijuw] {
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-blog-panel-more[b-2h6djbijuw] {
    color: var(--cm-link, var(--bs-link-color));
    text-decoration: underline;
    white-space: nowrap;
}

.cm-blog-more-open[b-2h6djbijuw],
.cm-blog-panel[open] .cm-blog-more-closed[b-2h6djbijuw] {
    display: none;
}

.cm-blog-panel[open] .cm-blog-more-open[b-2h6djbijuw] {
    display: inline;
}

.cm-blog-panel-body[b-2h6djbijuw] {
    padding: 0 0.9rem 0.9rem;
}

/* The site's blog page: the entry's own address, under its words. */
.cm-blog-panel-link[b-2h6djbijuw] {
    margin: -0.4rem 0 0;
    padding: 0 0.9rem 0.9rem;
    font-weight: 600;
}

.cm-blog-show-more[b-2h6djbijuw] {
    align-self: center;
    margin-top: 0.5rem;
}

.cm-blog-none[b-2h6djbijuw] {
    font-style: italic;
    opacity: 0.8;
}
/* /Components/Shared/BlogTab.razor.rz.scp.css */
/* The Blog tab of an organization's or an event's profile (2026-10-01): a grid of the entries and a
   panel over the page with the entry and its editor. The panel itself is .cm-modal (wwwroot/app.css),
   and so is the form's column layout there, since EditForm draws the form element. */

.cm-blogtab-bar[b-oq34ecsdr2] {
    margin-bottom: 0.75rem;
}

/* The entries in a panel a month (2026-10-09), one under another, as the Press page's are. */
.cm-blogtab-months[b-oq34ecsdr2] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.cm-blogtab-month[b-oq34ecsdr2] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    border-radius: 0.5rem;
    background: var(--cm-raised, transparent);
}

/* The month and how many: the whole line opens and closes it, with an arrow that turns. */
.cm-blogtab-month > summary[b-oq34ecsdr2] {
    list-style: none;
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.6rem 0.9rem;
    cursor: pointer;
}

.cm-blogtab-month > summary[b-oq34ecsdr2]::-webkit-details-marker {
    display: none;
}

.cm-blogtab-month > summary[b-oq34ecsdr2]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

.cm-blogtab-month[open] > summary[b-oq34ecsdr2]::before {
    transform: rotate(90deg);
}

.cm-blogtab-month-title[b-oq34ecsdr2] {
    flex: 1 1 auto;
    font-weight: 600;
    font-size: 1.1em;
}

.cm-blogtab-month-count[b-oq34ecsdr2] {
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-blogtab-list[b-oq34ecsdr2] {
    list-style: none;
    margin: 0;
    padding: 0 0.9rem 0.6rem;
}

.cm-blogtab-entry[b-oq34ecsdr2] {
    padding: 0.65rem 0;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.1));
}

/* The date and title on one line, the Published box and the trash at its right. */
.cm-blogtab-entry-head[b-oq34ecsdr2] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.75rem;
}

.cm-blogtab-entry-head time[b-oq34ecsdr2] {
    white-space: nowrap;
    opacity: 0.8;
}

.cm-blogtab-entry-title[b-oq34ecsdr2] {
    font-weight: 600;
}

.cm-blogtab-entry-tools[b-oq34ecsdr2] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

.cm-blogtab-publish[b-oq34ecsdr2] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin: 0;
    font-size: 0.9em;
    white-space: nowrap;
    cursor: pointer;
}

.cm-blogtab-publish .form-check-input[b-oq34ecsdr2] {
    margin: 0;
}

.cm-blogtab-preview[b-oq34ecsdr2] {
    margin: 0.3rem 0 0;
}

/* Show More... and Show Less: a link's look, inline at the end of the words. */
.cm-blogtab-more[b-oq34ecsdr2] {
    padding: 0;
    border: 0;
    vertical-align: baseline;
    font-weight: 600;
    white-space: nowrap;
}

.cm-blogtab-full[b-oq34ecsdr2] {
    margin-top: 0.3rem;
}

.cm-blogtab-full:focus[b-oq34ecsdr2] {
    outline: none;
}

.cm-blogtab-show-more[b-oq34ecsdr2] {
    align-self: center;
    margin-top: 0.25rem;
}

.cm-blogtab-trash[b-oq34ecsdr2] {
    padding: 0.1rem 0.35rem;
    color: var(--cm-bad, #b02a37);
}

.cm-blogtab-trash[aria-disabled="true"][b-oq34ecsdr2] {
    opacity: 0.45;
}

.cm-blogtab-trash-icon[b-oq34ecsdr2] {
    width: 1rem;
    height: 1rem;
}

/* Title, author, date and the Published box across the top of the panel; one above another on a phone. */
.cm-blogtab-fields[b-oq34ecsdr2] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) 9rem auto;
    gap: 0.5rem 1rem;
    align-items: end;
}

@media (max-width: 767.98px) {
    .cm-blogtab-fields[b-oq34ecsdr2] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* The editor gets a working height of its own; the panel's body scrolls around it. */
.cm-blogtab-quill[b-oq34ecsdr2] {
    min-height: 20rem;
}

.cm-blogtab-foot[b-oq34ecsdr2] {
    margin-top: 0;
    padding: 0.75rem 1rem;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
}
/* /Components/Shared/ConfirmDialog.razor.rz.scp.css */
/* The Yes/No dialog. It sits over the page rather than in the flow, so the question is answered
   before anything else - which is the point of asking it. */

.cm-ask[b-a9jdi0t17k] {
    position: fixed;
    inset: 0;
    z-index: 1060;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
}

.cm-ask-backdrop[b-a9jdi0t17k] {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.5);
}

/* No close control and no click-away: the two buttons are the only ways out, because the
   application is waiting for one of them. */
.cm-ask-panel[b-a9jdi0t17k] {
    position: relative;
    width: min(32rem, 100%);
    background: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.35);
    padding: 1.25rem 1.5rem 1.5rem;
}

.cm-ask-title[b-a9jdi0t17k] {
    margin: 0 0 0.5rem;
    font-size: 1.15rem;
}

.cm-ask-question[b-a9jdi0t17k] {
    margin: 0 0 0.75rem;
    font-weight: 600;
}

.cm-ask-detail[b-a9jdi0t17k] {
    margin-bottom: 1rem;
    opacity: 0.85;
}

.cm-ask-detail p:last-child[b-a9jdi0t17k] {
    margin-bottom: 0;
}

.cm-ask-buttons[b-a9jdi0t17k] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0;
}

/* Yes leads, so it is the wider of the two and the one the eye lands on first. */
.cm-ask-buttons .btn[b-a9jdi0t17k] {
    min-width: 6rem;
}

/* ---- client mode: the one shared <dialog> the script opens (2026-09-24) ---------------------
   A native dialog, so showModal() lifts it above everything else - including a panel that is
   itself asking - and the browser draws the dimmed page behind it as ::backdrop. The dialog
   element is only the frame: the panel inside is the same .cm-ask-panel as above. */

.cm-ask-dialog[b-a9jdi0t17k] {
    padding: 0;
    border: 0;
    background: transparent;
    width: min(32rem, calc(100% - 3rem));
    max-width: none;
    overflow: visible;
}

.cm-ask-dialog[b-a9jdi0t17k]::backdrop {
    background: rgba(0, 0, 0, 0.5);
}

.cm-ask-dialog .cm-ask-panel[b-a9jdi0t17k] {
    width: 100%;
}

/* The Prompt kind's text box: full width, with room between it and the buttons. */
.cm-ask-input[b-a9jdi0t17k] {
    margin-bottom: 1rem;
}

/* A label doing a question's job reads as one, not as a form field's caption. */
label.cm-ask-question[b-a9jdi0t17k] {
    display: block;
}
/* /Components/Shared/CookieConsentBanner.razor.rz.scp.css */
/* The cookie banner. Docked over the foot of the page rather than laid across it: the page
   underneath stays readable and usable, so somebody can still sign in, or read the privacy
   policy the banner points them at, before deciding. */

.cm-cookie[b-bhk76lw9yw] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1070;
    display: flex;
    justify-content: center;
    padding: 1rem;
    /* The strip itself catches no clicks - only the panel does - so nothing behind the empty
       space beside the panel is blocked. */
    pointer-events: none;
}

.cm-cookie-panel[b-bhk76lw9yw] {
    position: relative;
    pointer-events: auto;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    display: flex;
    flex-direction: column;
    width: min(46rem, 100%);
    max-height: min(26rem, 55vh);
    background: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.4);
    padding: 1.25rem 1.5rem 1.25rem;
}

.cm-cookie-title[b-bhk76lw9yw] {
    margin: 0 0 0.75rem;
    font-size: 1.3rem;
}

/* Only the text scrolls, so the three buttons are always in view - the panel cannot be
   dismissed any other way, and a visitor should never have to hunt for the way out. */
.cm-cookie-scroll[b-bhk76lw9yw] {
    overflow-y: auto;
    padding-right: 0.5rem;
    margin-bottom: 1rem;
}

.cm-cookie-scroll p[b-bhk76lw9yw] {
    margin-bottom: 0.75rem;
}

/* The disclosure holding the three categories. Closed to begin with: the buttons answer the
   banner without it, and anyone who wants the detail opens it. */
.cm-cookie-details[b-bhk76lw9yw] {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
}

.cm-cookie-manage[b-bhk76lw9yw] {
    font-size: 1.05rem;
    font-weight: 600;
    cursor: pointer;
    margin: 0 0 0.5rem;
}

.cm-cookie-details[open] .cm-cookie-manage[b-bhk76lw9yw] {
    margin-bottom: 0.75rem;
}

.cm-cookie-group[b-bhk76lw9yw] {
    padding: 0.5rem 0;
    border-bottom: 1px solid var(--cm-border, rgba(0, 0, 0, 0.1));
}

.cm-cookie-group p[b-bhk76lw9yw] {
    margin: 0.25rem 0 0.5rem;
    font-size: 0.925em;
}

.cm-cookie-head[b-bhk76lw9yw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.cm-cookie-name[b-bhk76lw9yw] {
    font-weight: 600;
    margin: 0;
}

/* The one category with no switch says so in words rather than showing a control that does
   nothing when it is pressed. */
.cm-cookie-always[b-bhk76lw9yw] {
    font-size: 0.85em;
    font-weight: 600;
    opacity: 0.75;
    white-space: nowrap;
}

.cm-cookie-rights[b-bhk76lw9yw] {
    margin-top: 1rem;
    font-size: 0.9em;
    opacity: 0.9;
}

.cm-cookie-buttons[b-bhk76lw9yw] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin: 0;
    padding-top: 0.75rem;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
}

/* ---- The switches ----------------------------------------------------------------------- */

/* A checkbox drawn as a switch: the input keeps its own behaviour, its keyboard focus and its
   posted value, and only its appearance changes. Nothing here depends on script. */
.cm-switch[b-bhk76lw9yw] {
    position: relative;
    display: inline-flex;
    flex: none;
    width: 3rem;
    height: 1.6rem;
}

.cm-switch input[b-bhk76lw9yw] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.cm-switch-track[b-bhk76lw9yw] {
    pointer-events: none;
    width: 100%;
    height: 100%;
    border-radius: 1rem;
    background: var(--cm-muted, #adb5bd);
    transition: background-color 0.15s ease-in-out;
}

/* The knob. Drawn on the track rather than as its own element, so the switch is two nodes. */
.cm-switch-track[b-bhk76lw9yw]::after {
    content: "";
    position: absolute;
    top: 0.2rem;
    left: 0.2rem;
    width: 1.2rem;
    height: 1.2rem;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
    transition: transform 0.15s ease-in-out;
}

.cm-switch input:checked + .cm-switch-track[b-bhk76lw9yw] {
    background: var(--bs-primary, #0d6efd);
}

.cm-switch input:checked + .cm-switch-track[b-bhk76lw9yw]::after {
    transform: translateX(1.4rem);
}

.cm-switch input:focus-visible + .cm-switch-track[b-bhk76lw9yw] {
    outline: 2px solid var(--bs-primary, #0d6efd);
    outline-offset: 2px;
}

/* On a narrow screen the panel takes the whole width and the buttons stack rather than
   shrinking to the point of being hard to hit. */
@media (max-width: 36rem) {
    .cm-cookie[b-bhk76lw9yw] {
        padding: 0.75rem;
    }

    .cm-cookie-panel[b-bhk76lw9yw] {
        padding: 1rem;
        max-height: 65vh;
    }

    .cm-cookie-buttons .btn[b-bhk76lw9yw] {
        flex: 1 1 100%;
    }
}
/* /Components/Shared/EmailSubscriptionAdmin.razor.rz.scp.css */
/* The Email Marketing grids' ordering and filters (2026-10-08), as the System Settings administrators grid has them. */

/* A heading is the control that orders its grid, so it reads as a heading rather than as a link. */
.cm-grid thead a[b-evcrjiys4b] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-evcrjiys4b],
.cm-grid thead a:focus-visible[b-evcrjiys4b] {
    text-decoration: underline;
}

.cm-sorted[b-evcrjiys4b] {
    font-weight: 700;
}

.cm-arrow[b-evcrjiys4b] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its boxes shouldn't make the row tall or the columns wide. */
.cm-filters th[b-evcrjiys4b] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
    font-weight: normal;
}

.cm-filters .form-control[b-evcrjiys4b],
.cm-filters .form-select[b-evcrjiys4b] {
    min-width: 6rem;
}

/* The hint, Filter and Clear above each grid, on one line while they fit. */
.cm-email-filterbar[b-evcrjiys4b] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.4rem;
}
/* /Components/Shared/EventChecklistBox.razor.rz.scp.css */
/* Getting Ready for Your Event (2026-10-16) - above a personal event's tabs. In the theme's own colors. */
.cm-checklist[b-wn1ji7ole5] {
    margin: 0 0 1rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--cm-border, #dee2e6);
    border-left: 0.35rem solid var(--cm-accent, #0d6efd);
    border-radius: 0.5rem;
    background: var(--cm-card, #ffffff);
}

.cm-checklist-head[b-wn1ji7ole5] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
}

.cm-checklist-head h2[b-wn1ji7ole5] {
    margin: 0;
    font-size: 1.15rem;
}

.cm-checklist-count[b-wn1ji7ole5] {
    font-weight: 600;
}

.cm-checklist-bar[b-wn1ji7ole5] {
    flex: 1 1 10rem;
    max-width: 18rem;
    height: 0.55rem;
    border-radius: 0.3rem;
    background: var(--cm-raised, #e9ecef);
    overflow: hidden;
}

.cm-checklist-bar > div[b-wn1ji7ole5] {
    height: 100%;
    background: var(--cm-accent, #0d6efd);
}

.cm-checklist-next[b-wn1ji7ole5] {
    margin-top: 0.75rem;
}

.cm-checklist-next-label[b-wn1ji7ole5] {
    margin: 0;
    font-size: 0.85rem;
    color: var(--cm-muted, #6c757d);
}

.cm-checklist-next h3[b-wn1ji7ole5] {
    margin: 0.15rem 0 0.25rem;
    font-size: 1.05rem;
}

.cm-checklist-next p[b-wn1ji7ole5] {
    margin: 0 0 0.4rem;
}

.cm-checklist-progress[b-wn1ji7ole5] {
    font-style: italic;
}

.cm-checklist-actions[b-wn1ji7ole5] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.cm-checklist-form[b-wn1ji7ole5] {
    display: inline;
}

.cm-checklist-all-done[b-wn1ji7ole5] {
    margin: 0.6rem 0 0;
    font-weight: 600;
}

.cm-checklist-list[b-wn1ji7ole5] {
    margin-top: 0.6rem;
}

.cm-checklist-list summary[b-wn1ji7ole5] {
    cursor: pointer;
}

.cm-checklist-list ol[b-wn1ji7ole5] {
    margin: 0.4rem 0 0;
    padding-left: 0;
    list-style: none;
}

.cm-checklist-item[b-wn1ji7ole5] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem 0.6rem;
    padding: 0.2rem 0;
}

.cm-checklist-mark[b-wn1ji7ole5] {
    width: 1.1rem;
    text-align: center;
    font-weight: 700;
}

.cm-checklist-done .cm-checklist-mark[b-wn1ji7ole5] {
    color: #198754;
}

.cm-checklist-skipped a[b-wn1ji7ole5] {
    color: var(--cm-muted, #6c757d);
    text-decoration: line-through;
}

.cm-checklist-note[b-wn1ji7ole5] {
    font-size: 0.85rem;
    color: var(--cm-muted, #6c757d);
}
/* /Components/Shared/EventCreateChoice.razor.rz.scp.css */
/* How to make a new event (2026-10-20): a dialog of two choices, each a large link with a line saying what it is. */

.cm-choice-dialog[b-1v8eb6eyfs] {
    width: min(36rem, calc(100vw - 2rem));
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.6rem;
    padding: 1.5rem 1.5rem 1rem;
    background: var(--cm-surface, var(--bs-body-bg, #fff));
    color: var(--cm-text, inherit);
    box-shadow: 0 1rem 2.5rem rgba(0, 0, 0, 0.25);
}

.cm-choice-dialog[b-1v8eb6eyfs]::backdrop {
    background: rgba(0, 0, 0, 0.45);
}

.cm-choice-dialog h2[b-1v8eb6eyfs] {
    font-size: 1.25rem;
    margin: 0 2rem 1rem 0;
}

.cm-choice-close[b-1v8eb6eyfs] {
    position: absolute;
    top: 0.5rem;
    right: 0.75rem;
    border: 0;
    background: transparent;
    font-size: 1.6rem;
    line-height: 1;
    color: var(--cm-muted, #6c757d);
    cursor: pointer;
}

.cm-choice-options[b-1v8eb6eyfs] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

@media (max-width: 575.98px) {
    .cm-choice-options[b-1v8eb6eyfs] {
        grid-template-columns: 1fr;
    }
}

.cm-choice-option[b-1v8eb6eyfs] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 1rem;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.5rem;
    text-decoration: none;
    color: inherit;
    background: var(--cm-raised, rgba(0, 0, 0, 0.02));
}

.cm-choice-option:hover[b-1v8eb6eyfs],
.cm-choice-option:focus-visible[b-1v8eb6eyfs] {
    border-color: var(--cm-accent, #1b6ec2);
    box-shadow: 0 0 0 0.15rem color-mix(in srgb, var(--cm-accent, #1b6ec2) 35%, transparent);
}

.cm-choice-name[b-1v8eb6eyfs] {
    font-weight: 700;
    font-size: 1.05rem;
    color: var(--cm-accent, #1b6ec2);
}

.cm-choice-tip[b-1v8eb6eyfs] {
    font-size: 0.9rem;
    color: var(--cm-muted, #6c757d);
}

.cm-choice-actions[b-1v8eb6eyfs] {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.75rem;
}
/* /Components/Shared/EventDayCalendar.razor.rz.scp.css */
/* The Calendar tab's day calendar (2026-09-28) - see EventDayCalendar.razor.

   One quarter hour is --cm-daycal-slot high, and everything vertical is a multiple of it: the
   hour labels, the lines in each room's column, and every block, whose top and height the
   script gives in quarter hours. The blocks, and the outline that shows where a drag would land,
   are made by wwwroot/js/event-day-calendar.js, so they carry no scope attribute and are reached
   with ::deep from the room column that holds them. */

.cm-daycal[b-jqe76kk9ik] {
    --cm-daycal-slot: 1rem;
    --cm-daycal-timecol: 5.25rem;
    --cm-daycal-colmin: 9.5rem;
    --cm-daycal-line: color-mix(in srgb, var(--cm-border, #dee2e6) 45%, transparent);
    --cm-daycal-hourline: var(--cm-border, #dee2e6);
}

/* ---- the dates, at the top ---------------------------------------------------------------- */

.cm-daycal-nav[b-jqe76kk9ik] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.cm-daycal-select[b-jqe76kk9ik] {
    width: auto;
    min-width: 17rem;
    max-width: 100%;
}

/* The room filter (2026-10-19), at the right of the dates while it shows only some rooms: what it shows, and Clear
   Filter. Wraps under the dates on a narrow screen. */
.cm-daycal-filter[b-jqe76kk9ik] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
    padding: 0.2rem 0.3rem 0.2rem 0.6rem;
    border: 1px solid color-mix(in srgb, var(--cm-accent, #1b6ec2) 45%, transparent);
    border-radius: 0.375rem;
    background: color-mix(in srgb, var(--cm-accent, #1b6ec2) 8%, var(--cm-surface, #ffffff));
    /* Its padding and border reach out above and below the row rather than making it taller, so the calendar doesn't
       move down when the filter appears in the middle of a drag. */
    margin-block: calc(-0.2rem - 1px);
}

.cm-daycal-filter[hidden][b-jqe76kk9ik] {
    display: none;
}

/* ---- the full screen (2026-10-19) -------------------------------------------------------- */

/* The button, at the left under the dates; on the full screen, Exit Full Screen in its place. */
.cm-daycal-screen[b-jqe76kk9ik] {
    margin: -0.25rem 0 0.75rem;
}

.cm-daycal-fullscreen-exit[b-jqe76kk9ik] {
    display: none;
}

.cm-daycal:fullscreen .cm-daycal-fullscreen-open[b-jqe76kk9ik] {
    display: none;
}

.cm-daycal:fullscreen .cm-daycal-fullscreen-exit[b-jqe76kk9ik] {
    display: inline-block;
}

/* The calendar alone on the screen, on the page's background: the dates and the button across the top, and the panels and
   the grid filling the height under them, each scrolling inside itself. */
.cm-daycal:fullscreen[b-jqe76kk9ik] {
    display: flex;
    flex-direction: column;
    padding: 0.75rem 1rem;
    background: var(--cm-bg, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    overflow: hidden;
}

.cm-daycal:fullscreen .cm-daycal-body[b-jqe76kk9ik] {
    flex: 1 1 auto;
    min-height: 0;
    align-items: stretch;
}

.cm-daycal:fullscreen .cm-daycal-palette[b-jqe76kk9ik] {
    max-height: none;
    position: static;
}

.cm-daycal:fullscreen .cm-daycal-main[b-jqe76kk9ik] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.cm-daycal:fullscreen .cm-daycal-scroll[b-jqe76kk9ik] {
    flex: 1 1 auto;
    min-height: 0;
    max-height: none;
}

.cm-daycal-filter-text[b-jqe76kk9ik] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--cm-text, #212529);
}

/* ---- the panels beside the calendar ------------------------------------------------------- */

.cm-daycal-body[b-jqe76kk9ik] {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
}

.cm-daycal-palette[b-jqe76kk9ik] {
    flex: 0 0 16rem;
    max-height: 75vh;
    overflow-y: auto;
    position: sticky;
    top: 0.5rem;
}

.cm-daycal-main[b-jqe76kk9ik] {
    flex: 1 1 auto;
    min-width: 0;
}

.cm-daycal-tip[b-jqe76kk9ik] {
    margin: 0 0 0.5rem;
    font-size: 0.85rem;
}

/* "(Click for more help)" (2026-10-19): a button that reads as a link, opening the help window. */
.cm-daycal-help-open[b-jqe76kk9ik] {
    display: inline;
    padding: 0;
    border: 0;
    background: none;
    color: var(--cm-link, var(--cm-accent, #1b6ec2));
    font: inherit;
    text-decoration: underline;
    cursor: pointer;
}

.cm-daycal-help-open:hover[b-jqe76kk9ik] {
    text-decoration-thickness: 2px;
}

.cm-daycal-help-open:focus-visible[b-jqe76kk9ik] {
    outline: 2px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: 2px;
}

.cm-daycal-group[b-jqe76kk9ik] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.375rem;
    margin-bottom: 0.5rem;
    background: var(--cm-surface, #ffffff);
}

.cm-daycal-group > summary[b-jqe76kk9ik] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.6rem;
    font-weight: 700;
    cursor: pointer;
}

/* The disclosure triangle, kept: it is what says the panel opens and closes. */
.cm-daycal-group > summary[b-jqe76kk9ik]::before {
    content: "\25B8";
    display: inline-block;
    width: 0.8em;
    transition: transform 0.15s ease;
}

.cm-daycal-group[open] > summary[b-jqe76kk9ik]::before {
    transform: rotate(90deg);
}

.cm-daycal-group > summary[b-jqe76kk9ik]::-webkit-details-marker {
    display: none;
}

.cm-daycal-group > summary[b-jqe76kk9ik] {
    list-style: none;
}

.cm-daycal-swatch[b-jqe76kk9ik] {
    flex: none;
    width: 0.75rem;
    height: 0.75rem;
    border-radius: 50%;
    background: var(--cm-daycal-color, var(--cm-accent, #1b6ec2));
}

.cm-daycal-groupcount[b-jqe76kk9ik] {
    font-weight: 400;
    color: var(--cm-muted, #6c757d);
}

.cm-daycal-items[b-jqe76kk9ik] {
    list-style: none;
    margin: 0;
    padding: 0 0.5rem 0.5rem;
}

.cm-daycal-noitems[b-jqe76kk9ik] {
    margin: 0;
    padding: 0 0.6rem 0.5rem;
}

.cm-daycal-item[b-jqe76kk9ik] {
    position: relative;
    display: flex;
    flex-direction: column;
    margin-top: 0.35rem;
    /* Room on the left for how many times it is held, and on the right for how many it is on the calendar. */
    padding: 0.3rem 1.1rem 0.3rem 0.95rem;
    border: 1px solid color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 40%, transparent);
    border-left: 4px solid var(--cm-daycal-color, var(--cm-accent, #1b6ec2));
    border-radius: 0.25rem;
    background: color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 10%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    font-size: 0.85rem;
    line-height: 1.25;
    cursor: grab;
    user-select: none;
}

.cm-daycal-item:hover[b-jqe76kk9ik] {
    background: color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 20%, var(--cm-surface, #ffffff));
}

.cm-daycal-item:focus-visible[b-jqe76kk9ik] {
    outline: 2px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: 1px;
}

.cm-daycal-itemtitle[b-jqe76kk9ik] {
    font-weight: 600;
}

.cm-daycal-itemmeta[b-jqe76kk9ik] {
    display: flex;
    flex-wrap: wrap;
    column-gap: 0.5rem;
    font-size: 0.75rem;
    color: var(--cm-muted, #6c757d);
}

/* How many times the item is on the calendar, on the top right corner of its name (2026-09-29).
   The page's text and surface colors turned round, so it reads in every theme whatever color the
   setting has. The item keeps room on its right for it. */
.cm-daycal-count[b-jqe76kk9ik] {
    position: absolute;
    top: -0.45rem;
    right: -0.45rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.3rem;
    height: 1.3rem;
    padding: 0 0.3rem;
    border-radius: 0.65rem;
    background: var(--cm-text, #212529);
    color: var(--cm-surface, #ffffff);
    box-shadow: 0 0 0 2px var(--cm-surface, #ffffff);
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1;
}

.cm-daycal-count[hidden][b-jqe76kk9ik] {
    display: none;
}

/* How many of its presentations are left to schedule - its Maximum Presentations, counting down as each is scheduled - on
   the top left corner of its name (2026-10-19: "put Maximum presentations in a black corcle with a white numbr in the top
   left corner of an item"): black and white whatever the theme, ringed with the page's surface as the count opposite is. */
.cm-daycal-held[b-jqe76kk9ik] {
    position: absolute;
    top: -0.45rem;
    left: -0.45rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.3rem;
    height: 1.3rem;
    padding: 0 0.3rem;
    border-radius: 0.65rem;
    background: #000000;
    color: #ffffff;
    box-shadow: 0 0 0 2px var(--cm-surface, #ffffff);
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1;
}

/* ---- the calendar ------------------------------------------------------------------------- */

.cm-daycal-scroll[b-jqe76kk9ik] {
    max-height: 75vh;
    overflow: auto;
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.375rem;
    background: var(--cm-surface, #ffffff);
}

.cm-daycal-scroll:focus-visible[b-jqe76kk9ik] {
    outline: 2px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: 2px;
}

/* At least as wide as its columns' smallest widths, so the header and the time column - which
   stick inside it - keep sticking however far the calendar is scrolled across. */
.cm-daycal-grid[b-jqe76kk9ik] {
    display: grid;
    /* Dragging across it moves blocks; it never selects the hour labels or room names. */
    user-select: none;
    grid-template-columns: var(--cm-daycal-timecol) repeat(var(--cm-daycal-rooms), minmax(var(--cm-daycal-colmin), 1fr));
    grid-template-rows: auto calc(var(--cm-daycal-slots) * var(--cm-daycal-slot));
    min-width: calc(var(--cm-daycal-timecol) + var(--cm-daycal-rooms) * var(--cm-daycal-colmin));
}

.cm-daycal-corner[b-jqe76kk9ik],
.cm-daycal-roomhead[b-jqe76kk9ik] {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--cm-surface, #ffffff);
    border-bottom: 1px solid var(--cm-daycal-hourline);
}

.cm-daycal-corner[b-jqe76kk9ik] {
    left: 0;
    z-index: 5;
    border-right: 1px solid var(--cm-daycal-hourline);
}

.cm-daycal-roomhead[b-jqe76kk9ik] {
    padding: 0.4rem 0.5rem;
    border-left: 1px solid var(--cm-daycal-hourline);
    font-weight: 700;
    font-size: 0.85rem;
    text-align: center;
    /* A word too long for the column still wraps, but only when it cannot break anywhere else. */
    overflow-wrap: break-word;
}

.cm-daycal-roomname[b-jqe76kk9ik] {
    display: block;
}

/* What the room is used for, on a line of its own below the name (2026-09-29) - and, in a grayed column (2026-10-19),
   when the room can be used. */
.cm-daycal-roomuse[b-jqe76kk9ik],
.cm-daycal-roomdates[b-jqe76kk9ik] {
    display: block;
    margin-top: 0.1rem;
    font-size: 0.75rem;
    font-weight: 400;
    line-height: 1.2;
    color: var(--cm-muted, #6c757d);
}

.cm-daycal-roomdates[b-jqe76kk9ik] {
    font-style: italic;
}

.cm-daycal-hours[b-jqe76kk9ik] {
    position: sticky;
    left: 0;
    z-index: 4;
    background: var(--cm-surface, #ffffff);
    border-right: 1px solid var(--cm-daycal-hourline);
}

.cm-daycal-hour[b-jqe76kk9ik] {
    box-sizing: border-box;
    height: calc(4 * var(--cm-daycal-slot));
    padding: 0.1rem 0.4rem 0;
    border-top: 1px solid var(--cm-daycal-hourline);
    font-size: 0.75rem;
    text-align: right;
    white-space: nowrap;
    color: var(--cm-muted, #6c757d);
}

.cm-daycal-hour:first-child[b-jqe76kk9ik] {
    border-top: 0;
}

/* A line at every quarter hour, and a stronger one on the hour. */
.cm-daycal-room[b-jqe76kk9ik] {
    position: relative;
    border-left: 1px solid var(--cm-daycal-hourline);
    background-image:
        linear-gradient(to bottom, var(--cm-daycal-hourline) 1px, transparent 1px),
        linear-gradient(to bottom, var(--cm-daycal-line) 1px, transparent 1px);
    background-size: 100% calc(4 * var(--cm-daycal-slot)), 100% var(--cm-daycal-slot);
}

.cm-daycal-room.cm-daycal-over[b-jqe76kk9ik] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 5%, transparent);
}

/* Each part of the grid in its own row, so the script can hide rooms (2026-10-19: while an item is dragged only the rooms
   that take it are shown) and give the grid fewer columns without the rest moving up into the room names' row. */
.cm-daycal-corner[b-jqe76kk9ik] {
    grid-row: 1;
    grid-column: 1;
}

.cm-daycal-roomhead[b-jqe76kk9ik] {
    grid-row: 1;
}

.cm-daycal-hours[b-jqe76kk9ik] {
    grid-row: 2;
    grid-column: 1;
}

.cm-daycal-room[b-jqe76kk9ik] {
    grid-row: 2;
}

/* In the rooms' place while an item no room on the day takes is dragged: what the rooms need. */
.cm-daycal-noroom[b-jqe76kk9ik] {
    grid-row: 1 / span 2;
    margin: 0;
    padding: 1rem;
    border-left: 1px solid var(--cm-daycal-hourline);
    background: color-mix(in srgb, var(--cm-text, #212529) 6%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    font-size: 0.9rem;
    font-weight: 600;
}

/* The room a moved block is in, when it doesn't take the block (put there before the rule): kept and grayed, its name too,
   while the drag lasts - hiding it would end the drag. And a room on a day outside its own dates (2026-10-19: "put them in
   the calendar but gray it out if it isn't set on the dates for the room"), always. Solid gray, the hours' lines still
   drawn (the same evening: "instead of hatched make it a solid gray"). Nothing is put in either: the outline over it is
   red and says so, and a drop says why. */
.cm-daycal-room.cm-daycal-closed[b-jqe76kk9ik],
.cm-daycal-room.cm-daycal-unavailable[b-jqe76kk9ik] {
    background-color: color-mix(in srgb, var(--cm-text, #212529) 16%, var(--cm-surface, #ffffff));
    cursor: not-allowed;
}

.cm-daycal-roomhead.cm-daycal-closed[b-jqe76kk9ik],
.cm-daycal-roomhead.cm-daycal-unavailable[b-jqe76kk9ik] {
    color: var(--cm-muted, #6c757d);
    background: color-mix(in srgb, var(--cm-text, #212529) 16%, var(--cm-surface, #ffffff));
}

.cm-daycal-room.cm-daycal-closed[b-jqe76kk9ik]  .cm-daycal-block {
    opacity: 0.55;
}

/* ---- the blocks, which the script draws --------------------------------------------------- */

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block {
    position: absolute;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    padding: 0.1rem 0.3rem;
    border: 1px solid color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 45%, transparent);
    border-left: 4px solid var(--cm-daycal-color, var(--cm-accent, #1b6ec2));
    border-radius: 0.25rem;
    background: color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 18%, var(--cm-surface, #ffffff));
    color: var(--cm-text, #212529);
    font-size: 0.75rem;
    line-height: 1.15;
    overflow: hidden;
    z-index: 1;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block[draggable="true"] {
    cursor: grab;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block:hover,
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block:focus-visible {
    z-index: 2;
    overflow: visible;
    min-height: fit-content;
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.2);
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block:focus-visible {
    outline: 2px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: 1px;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-blocktitle {
    font-weight: 600;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-blocktime {
    color: var(--cm-muted, #6c757d);
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-canceled .cm-daycal-blocktitle {
    text-decoration: line-through;
}

/* A block in its tab's color - its item setting's (2026-09-29: "make the calendar items background
   the color of their tab") - with its words in black or white, whichever reads better on it
   (--cm-daycal-text, from ItemColor.TextOn). A setting with no color keeps the tinted look above. */
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-colored {
    border-color: color-mix(in srgb, var(--cm-daycal-color) 70%, #000000);
    background: var(--cm-daycal-color);
    color: var(--cm-daycal-text, #000000);
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-colored .cm-daycal-blocktime {
    color: inherit;
    opacity: 0.85;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-dragging {
    opacity: 0.45;
}

/* The block a date and time in the dialog's Offered On list went to (2026-10-18), marked for a few seconds: an outline
   that breathes out three times, still for anybody who asks for less motion. */
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-found {
    z-index: 3;
    outline: 3px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: 2px;
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.25);
    animation: cm-daycal-found-b-jqe76kk9ik 0.7s ease-in-out 3;
}

@keyframes cm-daycal-found-b-jqe76kk9ik {
    50% {
        outline-offset: 6px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-found {
        animation: none;
    }
}

/* A block's bottom edge, dragged to change how long its item runs (2026-09-29). The script draws it
   straight after its block, at the block's own end and as wide - beside the block rather than in
   it, since a press inside a draggable block would start the browser's own drag. touch-action
   none, so a finger drags it rather than scrolling the page. */
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-resize {
    position: absolute;
    box-sizing: border-box;
    height: 8px;
    cursor: ns-resize;
    touch-action: none;
    border-radius: 0 0 0.25rem 0.25rem;
    z-index: 4;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-resize:hover,
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block:hover + .cm-daycal-resize,
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-resize.cm-daycal-resizing {
    background: color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 55%, transparent);
}

/* On a block of its own color the edge would not show, so it takes the block's words' color. */
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-resize.cm-daycal-colored:hover,
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block:hover + .cm-daycal-resize.cm-daycal-colored,
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-resize.cm-daycal-colored.cm-daycal-resizing {
    background: color-mix(in srgb, var(--cm-daycal-text, #000000) 40%, transparent);
}

/* While its edge is held the block is exactly as long as it would be - not grown to show its
   whole title, as hovering does - and above its neighbors. */
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-block.cm-daycal-resizing {
    min-height: 0;
    overflow: hidden;
    z-index: 3;
    box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.2);
}

/* Where a drag would land, and until when. Red when it would run past midnight. */
.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-ghost {
    position: absolute;
    left: 1px;
    right: 1px;
    box-sizing: border-box;
    padding: 0.1rem 0.3rem;
    border: 2px dashed var(--cm-daycal-color, var(--cm-accent, #1b6ec2));
    border-radius: 0.25rem;
    background: color-mix(in srgb, var(--cm-daycal-color, var(--cm-accent, #1b6ec2)) 12%, transparent);
    font-size: 0.75rem;
    font-weight: 600;
    pointer-events: none;
    z-index: 3;
}

.cm-daycal-room[b-jqe76kk9ik]  .cm-daycal-ghost.cm-daycal-refused {
    border-color: #dc3545;
    background: rgba(220, 53, 69, 0.12);
    color: #b02a37;
}

.cm-daycal-unshown[b-jqe76kk9ik] {
    margin-top: 0.5rem;
}

/* ---- the dialog: the same look as the application's own (ConfirmDialog.razor.css) ---------- */

.cm-daycal-dialog[b-jqe76kk9ik] {
    padding: 0;
    border: 0;
    background: transparent;
    width: min(30rem, calc(100% - 3rem));
    max-width: none;
    overflow: visible;
}

.cm-daycal-dialog[b-jqe76kk9ik]::backdrop {
    background: rgba(0, 0, 0, 0.5);
}

.cm-daycal-dialog-panel[b-jqe76kk9ik] {
    background: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
    border-radius: 0.5rem;
    box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.35);
    padding: 1.25rem 1.5rem 1.5rem;
}

.cm-daycal-dialog-title[b-jqe76kk9ik] {
    margin: 0 0 0.5rem;
    font-size: 1.15rem;
}

.cm-daycal-dialog-item[b-jqe76kk9ik] {
    margin: 0 0 0.75rem;
    font-weight: 600;
}

/* The dates and times the item is on the calendar (2026-10-18): a short list of buttons, scrolling inside itself when
   long. The buttons are the script's, so they're reached with ::deep. */
.cm-daycal-offerings[b-jqe76kk9ik] {
    margin: 0 0 0.85rem;
}

.cm-daycal-offerings-title[b-jqe76kk9ik] {
    margin: 0 0 0.1rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-daycal-offerings-tip[b-jqe76kk9ik],
.cm-daycal-offerings-none[b-jqe76kk9ik] {
    margin: 0 0 0.35rem;
    font-size: 0.85rem;
}

.cm-daycal-offerings-list[b-jqe76kk9ik] {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 12rem;
    overflow-y: auto;
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.375rem;
}

.cm-daycal-offerings-list:empty[b-jqe76kk9ik] {
    display: none;
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  li + li {
    border-top: 1px solid var(--cm-border, #dee2e6);
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 0.5rem;
    width: 100%;
    padding: 0.35rem 0.6rem;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering:hover,
.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering:focus-visible {
    background: color-mix(in srgb, var(--cm-accent, #1b6ec2) 12%, transparent);
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering:focus-visible {
    outline: 2px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: -2px;
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering-when {
    font-weight: 700;
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering-rooms {
    flex-basis: 100%;
    font-size: 0.85rem;
    color: var(--cm-muted, #6c757d);
}

/* The block whose dialog it is. */
.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering[aria-current="true"] {
    background: color-mix(in srgb, var(--cm-accent, #1b6ec2) 7%, transparent);
}

.cm-daycal-offerings-list[b-jqe76kk9ik]  .cm-daycal-offering-this {
    font-size: 0.85rem;
    font-style: italic;
}

.cm-daycal-field[b-jqe76kk9ik] {
    margin-bottom: 0.75rem;
}

.cm-daycal-field label[b-jqe76kk9ik] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-daycal-dialog-error[b-jqe76kk9ik] {
    margin: 0 0 0.75rem;
}

.cm-daycal-dialog-copy[b-jqe76kk9ik] {
    margin: 0 0 1rem;
}

.cm-daycal-dialog-buttons[b-jqe76kk9ik] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
}

.cm-daycal-dialog-buttons .btn[b-jqe76kk9ik] {
    min-width: 6rem;
}

/* The help window (2026-10-19): the dialog's look, a little wider, its title beside a cross that closes it. */
.cm-daycal-help[b-jqe76kk9ik] {
    width: min(36rem, calc(100% - 3rem));
}

.cm-daycal-help-head[b-jqe76kk9ik] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.cm-daycal-help-x[b-jqe76kk9ik] {
    flex: none;
    margin: -0.35rem -0.6rem 0 0;
    padding: 0 0.4rem;
    border: 0;
    background: none;
    color: inherit;
    font-size: 1.6rem;
    line-height: 1;
    cursor: pointer;
}

.cm-daycal-help-x:focus-visible[b-jqe76kk9ik] {
    outline: 2px solid var(--cm-focus, var(--cm-accent, #1b6ec2));
    outline-offset: 2px;
}

.cm-daycal-help-list[b-jqe76kk9ik] {
    margin: 0.25rem 0 1.25rem;
    padding-left: 1.25rem;
}

.cm-daycal-help-list li + li[b-jqe76kk9ik] {
    margin-top: 0.45rem;
}

/* ---- a phone: the panels above the calendar ----------------------------------------------- */

@media (max-width: 767.98px) {
    .cm-daycal-body[b-jqe76kk9ik] {
        flex-direction: column;
    }

    .cm-daycal-palette[b-jqe76kk9ik] {
        flex: none;
        width: 100%;
        max-height: 18rem;
        position: static;
    }

    .cm-daycal-main[b-jqe76kk9ik] {
        width: 100%;
    }

    .cm-daycal-select[b-jqe76kk9ik] {
        min-width: 0;
        width: 100%;
    }
}

/* The Show dropdown above an event home page's calendar (2026-10-13), at the left. */
.cm-daycal-show[b-jqe76kk9ik] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.cm-daycal-show label[b-jqe76kk9ik] {
    font-weight: 600;
}

.cm-daycal-show select[b-jqe76kk9ik] {
    width: auto;
    min-width: 12rem;
    max-width: 100%;
}
/* /Components/Shared/EventDiscountsBox.razor.rz.scp.css */
/* The Event Discounts box (2026-10-30), below Event Properties on Basic Information. Its own copy of the profile's legend box,
   since the profile's scoped styles don't reach a component's markup. A small grid: the boxes as wide as what they hold. */

.cm-section[b-prcfucor2h] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-section > legend[b-prcfucor2h] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-event-discounts-grid[b-prcfucor2h] {
    width: auto;
    max-width: 100%;
    margin-bottom: 0.5rem;
}

.cm-event-discounts-grid th[b-prcfucor2h] {
    white-space: nowrap;
}

.cm-event-discounts-grid input[type="date"][b-prcfucor2h] {
    width: 10rem;
}

.cm-event-discounts-grid .input-group[b-prcfucor2h] {
    width: 9rem;
}

.cm-event-discounts-bin[b-prcfucor2h] {
    width: 2.5rem;
}

.cm-rowbar[b-prcfucor2h] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
}

.cm-hint[b-prcfucor2h] {
    opacity: 0.6;
    font-style: italic;
    margin-bottom: 0;
}

fieldset[disabled] .form-control[b-prcfucor2h] {
    opacity: 1;
    background-color: var(--cm-surface-muted, rgba(0, 0, 0, 0.04));
    cursor: not-allowed;
}

.cm-event-discount-description[b-prcfucor2h] {
    width: 14rem;
}

.cm-event-discount-code[b-prcfucor2h] {
    width: 9rem;
    text-transform: uppercase;
}
/* /Components/Shared/EventItemGroupsTab.razor.rz.scp.css */
/* A group tab - Guided Layout Tours - (2026-10-16). Its own copy of the profile's legend box, field and grid layout, since
   the profile's scoped styles don't reach a component's markup. */

.cm-section[b-38xt7msrdc] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-section > legend[b-38xt7msrdc] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-field[b-38xt7msrdc] {
    margin-bottom: 0.75rem;
}

.cm-field > label[b-38xt7msrdc] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-field.cm-inline[b-38xt7msrdc] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.cm-field.cm-inline > label[b-38xt7msrdc] {
    margin-bottom: 0;
}

.cm-group-cost[b-38xt7msrdc] {
    max-width: 7.5rem;
    text-align: right;
}

.cm-group-checks[b-38xt7msrdc] {
    margin-bottom: 0.75rem;
}

.cm-group-checks .form-check-label[b-38xt7msrdc] {
    font-weight: 700;
}

.cm-rowbar[b-38xt7msrdc] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin: 0.25rem 0 0.5rem;
}

.cm-profilebar[b-38xt7msrdc] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.cm-hint[b-38xt7msrdc] {
    font-size: 0.875em;
    color: var(--cm-muted, #6c757d);
    margin: 0.25rem 0 0.5rem;
}

.cm-empty[b-38xt7msrdc] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-hiddenform[b-38xt7msrdc] {
    display: none;
}

.cm-flag-cell[b-38xt7msrdc] {
    text-align: center;
    width: 4.5rem;
}

.cm-trash[b-38xt7msrdc] {
    line-height: 1;
}

tr[data-row-href][b-38xt7msrdc] {
    cursor: pointer;
}

/* ---- the stops: the source tab on the left, the tour's stops on the right ---------------------------------------- */

.cm-group-columns[b-38xt7msrdc] {
    display: grid;
    grid-template-columns: 2fr 3fr;
    gap: 1rem;
}

@media (max-width: 991.98px) {
    .cm-group-columns[b-38xt7msrdc] {
        grid-template-columns: 1fr;
    }
}

.cm-group-side[b-38xt7msrdc] {
    min-width: 0;
    border: 1px dashed var(--cm-border, rgba(0, 0, 0, 0.2));
    border-radius: 0.375rem;
    padding: 0.5rem;
}

.cm-group-side.cm-group-over[b-38xt7msrdc] {
    border-color: var(--cm-accent, #0d6efd);
    background: var(--cm-raised, rgba(13, 110, 253, 0.06));
}

.cm-group-side[data-cm-group-zone="source"][b-38xt7msrdc] {
    max-height: 70vh;
    overflow-y: auto;
}

.cm-group-heading[b-38xt7msrdc] {
    font-size: 1rem;
    font-weight: 700;
    margin: 0.25rem 0 0.5rem;
}

.cm-group-table tr[draggable="true"][b-38xt7msrdc] {
    cursor: grab;
}

.cm-group-table tr.cm-group-dragging[b-38xt7msrdc] {
    opacity: 0.4;
}

.cm-group-table tr.cm-group-drop-before > td[b-38xt7msrdc] {
    box-shadow: inset 0 3px 0 var(--cm-accent, #0d6efd);
}

.cm-group-number[b-38xt7msrdc] {
    display: inline-block;
    min-width: 2.6rem;
    font-weight: 600;
}

.cm-group-other[b-38xt7msrdc] {
    display: block;
    font-size: 0.8em;
    color: var(--cm-muted, #6c757d);
}

.cm-group-drive[b-38xt7msrdc] {
    text-align: right;
    white-space: nowrap;
}

.cm-group-actions[b-38xt7msrdc] {
    text-align: right;
    white-space: nowrap;
}

.cm-group-actions .btn[b-38xt7msrdc] {
    padding: 0.1rem 0.4rem;
}

/* The same row on either side: the source shows Add and the other tours; the stops their place, drive, moves and ×. */
.cm-group-source .cm-group-pos[b-38xt7msrdc],
.cm-group-source .cm-group-drive[b-38xt7msrdc],
.cm-group-source .cm-group-move[b-38xt7msrdc],
.cm-group-source .cm-group-remove[b-38xt7msrdc] {
    display: none;
}

.cm-group-stops .cm-group-add[b-38xt7msrdc],
.cm-group-stops .cm-group-other[b-38xt7msrdc] {
    display: none;
}

.cm-group-stops .cm-group-pos[b-38xt7msrdc] {
    width: 2rem;
    font-weight: 600;
}

.cm-group-problem:empty[b-38xt7msrdc] {
    display: none;
}
/* /Components/Shared/EventPlannersTab.razor.rz.scp.css */
/* Organization 0's Press Contacts and Event Planners tabs (2026-10-14): one legend box for the grid and one for the form,
   as the Sample Organizations tab draws them. A component's styles are its own, so the profile's .cm-section rules don't
   reach it; PressContactsTab.razor.css and EventPlannersTab.razor.css are the same. */

.cm-section[b-uawgrx2jif] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-uawgrx2jif] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-outreach .form-control[b-uawgrx2jif],
.cm-outreach .form-select[b-uawgrx2jif],
.cm-outreach .btn[b-uawgrx2jif] {
    font-size: 1em;
}

.cm-outreach .form-text[b-uawgrx2jif] {
    font-size: 0.9em;
}

/* Add, the filter and the count, on one line where they fit. */
.cm-outreach-bar[b-uawgrx2jif] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    margin-bottom: 0.6rem;
}

.cm-outreach-filter[b-uawgrx2jif] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.cm-outreach-filter .form-control[b-uawgrx2jif] {
    width: 14rem;
}

.cm-outreach-filter .form-select[b-uawgrx2jif] {
    width: auto;
}

.cm-outreach-count[b-uawgrx2jif] {
    opacity: 0.8;
}

.cm-outreach-grid td[b-uawgrx2jif] {
    vertical-align: top;
}

.cm-outreach-grid tbody tr[data-row-href][b-uawgrx2jif] {
    cursor: pointer;
}

.cm-outreach-open > td[b-uawgrx2jif] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 12%, transparent) !important;
}

.cm-outreach-meta[b-uawgrx2jif] {
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-outreach-wrap[b-uawgrx2jif] {
    overflow-wrap: anywhere;
    max-width: 16rem;
}

.cm-outreach-nowrap[b-uawgrx2jif] {
    white-space: nowrap;
}

.cm-outreach-bin[b-uawgrx2jif] {
    width: 1%;
    text-align: center;
}

/* The form: as many columns as fit, Notes and Source across the whole width. */
.cm-outreach-fields[b-uawgrx2jif] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
    gap: 0.6rem 1rem;
    margin-bottom: 0.75rem;
}

.cm-outreach-field label[b-uawgrx2jif] {
    display: block;
    font-weight: 600;
    margin-bottom: 0.15rem;
}

.cm-outreach-wide[b-uawgrx2jif] {
    grid-column: 1 / -1;
}

.cm-outreach-check[b-uawgrx2jif] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding-top: 1.4rem;
}

.cm-outreach-check label[b-uawgrx2jif] {
    display: inline;
    margin: 0;
}

.cm-outreach-problems[b-uawgrx2jif] {
    margin-bottom: 0.6rem;
}

.cm-outreach-hiddenform[b-uawgrx2jif] {
    margin: 0;
}
/* /Components/Shared/GoRegisterHeading.razor.rz.scp.css */
/* GoRegister's heading: the organization and the event side by side, one above the other on a narrow window. */
.cm-goreg-head[b-gi023xgmw9] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 3rem;
    max-width: 52rem;
}

.cm-goreg-block[b-gi023xgmw9] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    line-height: 1.35;
}

.cm-goreg-name[b-gi023xgmw9],
.cm-goreg-block .cm-reg-event[b-gi023xgmw9] {
    font-weight: 700;
    font-size: 1.1rem;
    margin: 0;
}

/* The full width of the page (2026-10-29: it stopped at 52rem, about 60% across). */
.cm-goreg-rule[b-gi023xgmw9] {
    width: 100%;
    margin: 1rem 0;
}
/* /Components/Shared/GuestPhotosTab.razor.rz.scp.css */
/* The Event Profile's Uploaded Guest Photos tab (2026-10-14). Its own copy of the profile's legend box, since the
   profile's scoped styles don't reach a component's markup. */

.cm-guestphotos[b-w3ei15bcum] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-guestphotos legend[b-w3ei15bcum] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

/* The QR code beside what it's for, the gallery's address and Print QR Code. */
.cm-guestphotos-share[b-w3ei15bcum] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 1rem;
}

.cm-guestphotos-qr[b-w3ei15bcum] {
    width: 150px;
    height: 150px;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    background: #ffffff;
}

.cm-guestphotos-share-text[b-w3ei15bcum] {
    flex: 1 1 18rem;
    min-width: 0;
}

.cm-guestphotos-share-text p[b-w3ei15bcum] {
    margin-bottom: 0.5rem;
}

.cm-guestphotos-address a[b-w3ei15bcum] {
    overflow-wrap: anywhere;
}

.cm-guestphotos-count[b-w3ei15bcum] {
    font-weight: 600;
}

/* The photos, a card each, as many to a row as fit. */
.cm-guestphotos-grid[b-w3ei15bcum] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
    gap: 0.75rem;
}

.cm-guestphoto[b-w3ei15bcum] {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.5rem;
    background: var(--cm-surface, #ffffff);
}

/* Waiting for approval: marked, so they stand out among the rest. */
.cm-guestphoto-waiting[b-w3ei15bcum] {
    border-color: #c00000;
    box-shadow: 0 0 0 1px #c00000 inset;
}

.cm-guestphoto-picture[b-w3ei15bcum] {
    display: block;
    aspect-ratio: 4 / 3;
    background: rgba(0, 0, 0, 0.05);
    border-radius: 0.25rem;
    overflow: hidden;
}

.cm-guestphoto-picture img[b-w3ei15bcum] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.cm-guestphoto-about[b-w3ei15bcum] {
    flex: 1;
    margin-top: 0.4rem;
    font-size: 0.85rem;
}

.cm-guestphoto-about p[b-w3ei15bcum] {
    margin: 0 0 0.15rem;
}

.cm-guestphoto-caption[b-w3ei15bcum] {
    font-weight: 600;
}

.cm-guestphoto-state[b-w3ei15bcum] {
    font-style: italic;
}

.cm-guestphoto-waiting .cm-guestphoto-state[b-w3ei15bcum] {
    color: #c00000;
    font-style: normal;
    font-weight: 700;
}

.cm-guestphoto-actions[b-w3ei15bcum] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-top: 0.4rem;
}

.cm-guestphoto-approve[b-w3ei15bcum] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-weight: 600;
    cursor: pointer;
}

.cm-guestphoto-approve input[b-w3ei15bcum] {
    margin: 0;
}

.cm-guestphotos-hiddenform[b-w3ei15bcum] {
    margin: 0;
}

.cm-guestphotos-status:empty[b-w3ei15bcum] {
    display: none;
}
/* /Components/Shared/HomeDesign.razor.rz.scp.css */
/* The three photos above the heading: one row, always, with nothing between them and
   nothing between the row and the heading below it. */

.cm-hero[b-sjst3hdjdg] {
    display: flex;
    gap: 0;
    /* Kept on one line at every width - three across is the point of the row. */
    flex-wrap: nowrap;
}

.cm-hero img[b-sjst3hdjdg] {
    /* Equal share of the row from a zero basis, so the three photos stay the same width
       whatever their natural sizes are. min-width:0 lets a flex item shrink that far. */
    flex: 1 1 0;
    min-width: 0;

    /* The three differ in aspect ratio, so they are cropped to one common height rather
       than each keeping its own and leaving the row ragged. */
    height: clamp(110px, 17vw, 260px);
    object-fit: cover;

    /* block, or the line box around an inline image adds a few pixels of gap underneath. */
    display: block;
}

/* The word cloud is artwork, not a photograph: cropping it cuts words off, so it is fitted
   whole. Its own background is white like the page's, so the letterboxing does not show.
   Qualified with img so it outweighs the .cm-hero img rule above, which is the more specific
   of the two and would otherwise keep winning. */
.cm-hero img.cm-hero-graphic[b-sjst3hdjdg] {
    object-fit: contain;
}

/* The text sits centred in the gap between the two photo rows. Equal padding above and below
   does that, but only once the heading's own top margin and the paragraph's bottom margin are
   out of the way - those are unequal by default and would push the block off centre.

   The headings inside are the page's own markup, not this component's, so the rules below
   reach them with ::deep. */
.cm-intro[b-sjst3hdjdg] {
    text-align: center;
    padding-block: 2.5rem;
}

/* Centred on both: .cm-intro already centres its contents, and these say so on the elements
   themselves so the rule survives a heading picking up an alignment from elsewhere. Note this
   centres them in the content column, which is the page minus the nav bar - the column's centre
   is not the window's centre while the sidebar is there. */
.cm-intro[b-sjst3hdjdg]  h1 {
    margin-top: 0;
    text-align: center;
}

/* The strapline under the name - an h2 now that the greeting above it is the page's h1. */
.cm-intro[b-sjst3hdjdg]  h2 {
    text-align: center;
}

/* "Welcome To" is the first line of the one heading the page has, and the application's name is
   the second - see .cm-intro-title in app.css. Nothing between them. */
.cm-intro[b-sjst3hdjdg]  .cm-welcome {
    margin-bottom: 0;
}

.cm-intro[b-sjst3hdjdg]  p:last-child {
    margin-bottom: 0;
}

/* The second row, below the text: three photos centred as a group. Unlike the hero strip
   these keep their own proportions, so nothing is cropped. */
.cm-gallery[b-sjst3hdjdg] {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    gap: 0.75rem;
    /* Spacing above comes from .cm-intro's padding, so the text stays centred between the rows. */
    margin-top: 0;
}

.cm-gallery img[b-sjst3hdjdg] {
    /* One height for all three - the landscape photo's - with the width following from each
       photo's own aspect ratio, so the two portraits end up narrower rather than cropped. */
    height: clamp(120px, 17vw, 290px);
    width: auto;
    display: block;

    /* Three photos side by side come to about 3.2x their height in width, which is wider than
       the content column on a small screen. Allowing them to shrink keeps the row on one line
       instead of pushing the whole page into a sideways scroll; object-fit then crops rather
       than stretches. At normal widths there is room and nothing is cropped. */
    flex: 0 1 auto;
    min-width: 0;
    object-fit: cover;
}
/* /Components/Shared/HomePageEditor.razor.rz.scp.css */
/* The home page editor: a button on the form, and a panel that opens over the page. */

.cm-homepage[b-ps3wg0sroh] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.cm-homepage-hint[b-ps3wg0sroh] {
    opacity: 0.7;
    font-style: italic;
}

/* ---- the panel ------------------------------------------------------------------------- */

/* The panel's own rules - .cm-modal and its parts - are in wwwroot/app.css (2026-10-01), shared with
   the Blog tab's editor (Shared/BlogTab.razor). */

/* ---- what the panel holds ---------------------------------------------------------------- */

.cm-homepage-empty[b-ps3wg0sroh] {
    opacity: 0.75;
    font-style: italic;
}

/* The editor gets a working height of its own; the panel's body scrolls around it. */
.cm-homepage-quill[b-ps3wg0sroh] {
    min-height: 22rem;
}

/* Content laid out for reading. Media is held inside the panel rather than allowed to set the
   panel's width, and a table gets its own scroller for the same reason. */
.cm-homepage-view img[b-ps3wg0sroh],
.cm-homepage-view iframe[b-ps3wg0sroh],
.cm-homepage-view video[b-ps3wg0sroh] {
    max-width: 100%;
    height: auto;
}

.cm-homepage-view iframe[b-ps3wg0sroh] {
    aspect-ratio: 16 / 9;
    width: 100%;
    border: 0;
}

.cm-homepage-view table[b-ps3wg0sroh] {
    display: block;
    overflow-x: auto;
    max-width: 100%;
}

/* ---- the pages menu (2026-09-27) --------------------------------------------------------
   For the administrators: which page is open, the order of them all, and the open page's link.
   Above the editor, inside the part of the panel that scrolls. */

.cm-homepages[b-ps3wg0sroh] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--cm-border, #d6d5d5);
}

.cm-homepages-bar[b-ps3wg0sroh] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.cm-homepages-bar label[b-ps3wg0sroh] {
    font-weight: 600;
}

/* The tip to the right of Add a New Page. */
.cm-homepages-tip[b-ps3wg0sroh] {
    color: var(--bs-secondary-color, #6c757d);
    font-size: 0.875rem;
}

.cm-homepages-notice[b-ps3wg0sroh] {
    margin: 0;
    font-weight: 600;
}

/* The pages, in link order: one column, or two from the sixth page on (2026-09-28). */
.cm-homepages-caption[b-ps3wg0sroh] {
    margin: 0 0 0.25rem;
    font-style: italic;
    color: var(--bs-secondary-color, #6c757d);
}

.cm-homepages-list[b-ps3wg0sroh] {
    margin: 0;
    padding: 0;
    list-style: none;
    max-width: 32rem;
    border-top: 1px solid var(--cm-border, #dee2e6);
}

.cm-homepages-list.cm-homepages-two-columns[b-ps3wg0sroh] {
    columns: 2;
    column-gap: 1.5rem;
    max-width: 62rem;
}

/* Each row is picked up by its whole width, opens its page on a double-click or Enter, and is
   never split across the two columns. */
.cm-homepages-row[b-ps3wg0sroh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.2rem 0.5rem;
    border-bottom: 1px solid var(--cm-border, #dee2e6);
    break-inside: avoid;
    cursor: grab;
}

.cm-homepages-row:focus-visible[b-ps3wg0sroh] {
    outline: 2px solid var(--cm-accent, #1b6ec2);
    outline-offset: -2px;
}

.cm-homepages-position[b-ps3wg0sroh] {
    min-width: 1.5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--bs-secondary-color, #6c757d);
}

.cm-homepages-title[b-ps3wg0sroh] {
    flex: 1;
    min-width: 0;
    overflow-wrap: anywhere;
}

.cm-homepages-row.cm-dragging[b-ps3wg0sroh] {
    opacity: 0.5;
}

.cm-homepages-row.cm-drop-before[b-ps3wg0sroh] {
    box-shadow: inset 0 3px 0 var(--cm-accent, #0d6efd);
}

.cm-homepages-row.cm-drop-after[b-ps3wg0sroh] {
    box-shadow: inset 0 -3px 0 var(--cm-accent, #0d6efd);
}

/* A page listed under another in the header's menu (2026-09-28): indented beneath it. */
.cm-homepages-row.cm-homepages-child[b-ps3wg0sroh] {
    padding-left: 2rem;
}

.cm-homepages-row.cm-homepages-child .cm-homepages-title[b-ps3wg0sroh]::before {
    content: "\21B3";
    margin-right: 0.35rem;
    opacity: 0.6;
}

/* Dropped here, a page goes under this one. */
.cm-homepages-row.cm-drop-into[b-ps3wg0sroh] {
    outline: 2px dashed var(--cm-accent, #0d6efd);
    outline-offset: -2px;
    background: rgba(27, 110, 194, 0.1);
}

/* The page open in the editor. */
.cm-homepages-row.cm-homepages-open[b-ps3wg0sroh] {
    font-weight: 600;
    background: rgba(27, 110, 194, 0.08);
}

.cm-homepages-home[b-ps3wg0sroh] {
    opacity: 0.7;
    font-style: italic;
}

/* The delete icon at the end of each row (2026-09-27), in the danger color; the home page's is
   greyed and says why when pressed. */
.cm-homepages-actions[b-ps3wg0sroh] {
    flex: none;
    width: 2rem;
    text-align: center;
}

.cm-homepages-delete[b-ps3wg0sroh] {
    padding: 0 0.25rem;
    line-height: 1;
    color: var(--bs-danger, #dc3545);
    cursor: pointer;
}

.cm-homepages-delete[aria-disabled="true"][b-ps3wg0sroh] {
    color: var(--cm-text, #212529);
    opacity: 0.35;
    cursor: not-allowed;
}

.cm-homepages-trash[b-ps3wg0sroh] {
    width: 1rem;
    height: 1rem;
    display: block;
}

.cm-homepages-error[b-ps3wg0sroh] {
    margin: 0;
}

/* The open page's Link Title and Link URL, side by side where there is room. */
.cm-homepages-fields[b-ps3wg0sroh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

.cm-homepages-fields .cm-field[b-ps3wg0sroh] {
    flex: 1 1 14rem;
}

/* ---- the layout and the two menus, in a panel that folds away (2026-09-30) -------------------- */
.cm-homepages-panel[b-ps3wg0sroh] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.5rem;
    padding: 0.25rem 0.75rem 0.75rem;
}

.cm-homepages-panel > summary[b-ps3wg0sroh] {
    cursor: pointer;
    padding: 0.35rem 0;
    font-weight: 700;
}

/* The header, the footer and the sidebars, side by side: a box and a background each. */
.cm-homepages-layout[b-ps3wg0sroh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 2rem;
    align-items: flex-start;
    margin: 0.25rem 0 0.75rem;
}

.cm-layout-part[b-ps3wg0sroh] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 11rem;
}

.cm-layout-label[b-ps3wg0sroh] {
    font-weight: 600;
    font-size: 0.875rem;
    margin-top: 0.15rem;
}

/* What the Header Background's logos do (2026-10-13), under the dropdown on an event's editor. */
.cm-layout-tip[b-ps3wg0sroh] {
    display: block;
    font-size: 0.8rem;
    color: var(--cm-muted, #6c757d);
    margin-top: 0.2rem;
    max-width: 16rem;
}

/* Save Layout and what it says (2026-10-16), across the foot of the panel. */
.cm-layout-save[b-ps3wg0sroh] {
    flex-basis: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.75rem;
}

.cm-layout-status[b-ps3wg0sroh] {
    flex: 1 1 12rem;
    margin: 0;
    min-height: 1.2em;
    font-size: 0.875rem;
    color: var(--bs-secondary-color, #6c757d);
}

.cm-layout-status.cm-layout-failed[b-ps3wg0sroh] {
    color: var(--cm-bad, #c62828);
}

/* The header's menu and the sidebar's, side by side; one above the other on a narrow screen. */
.cm-homepages-menus[b-ps3wg0sroh] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem 1.5rem;
}

@media (max-width: 767.98px) {
    .cm-homepages-menus[b-ps3wg0sroh] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.cm-homepages-menu-title[b-ps3wg0sroh] {
    margin: 0 0 0.25rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-homepages-menus .cm-homepages-list[b-ps3wg0sroh] {
    max-width: none;
    min-height: 2.6rem;
}

/* An empty menu is still somewhere to drop a page, and says so. */
.cm-homepages-menus .cm-homepages-list:empty[b-ps3wg0sroh] {
    border: 1px dashed var(--cm-border, #dee2e6);
    border-radius: 0.35rem;
}

.cm-homepages-menus .cm-homepages-list:empty[b-ps3wg0sroh]::before {
    content: "Drag a page here";
    display: block;
    padding: 0.6rem 0.75rem;
    color: var(--bs-secondary-color, #6c757d);
    font-style: italic;
}

.cm-homepages-menus .cm-homepages-list.cm-drop-end[b-ps3wg0sroh] {
    outline: 2px dashed var(--cm-accent, #1b6ec2);
    outline-offset: 2px;
}

/* What the footer is, above its editor (2026-10-01: "Add a footer editor"). */
.cm-homepages-footer-tip[b-ps3wg0sroh] {
    margin: 0.5rem 0 0.75rem;
    font-size: 0.875rem;
    color: var(--bs-secondary-color, #6c757d);
}

/* The footer's social media icons, under its editor (2026-10-01): shown, not edited. The icons come
   from Shared/SocialIconLinks.razor, hence ::deep. */
.cm-homepages-footer-social[b-ps3wg0sroh] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem 1rem;
    margin-top: 0.5rem;
    font-size: 0.875rem;
    color: var(--bs-secondary-color, #6c757d);
}

.cm-homepages-footer-social[b-ps3wg0sroh]  .cm-homepages-footer-icons {
    display: flex;
    gap: 0.75rem;
}

.cm-homepages-footer-social[b-ps3wg0sroh]  .cm-homepages-footer-icons a {
    color: var(--cm-text, #212529);
}

.cm-homepages-footer-social[b-ps3wg0sroh]  .cm-homepages-footer-icons svg {
    width: 1.4rem;
    height: 1.4rem;
    fill: currentColor;
}
/* /Components/Shared/HomeSignOff.razor.rz.scp.css */
/* The sign-off closing a home page, as the first line of the page footer (2026-09-27; it sat
   under the content before). Centered like the footer's other lines, at the footer's own size,
   and set apart from the legal links under it by the italic: it names who runs the service
   rather than linking anywhere. */
.cm-system-footer[b-c27ld5yege] {
    margin: 0;
    text-align: center;
    font-style: italic;
    font-weight: 600;
    opacity: 0.85;
}
/* /Components/Shared/ItemDetailAdmin.razor.rz.scp.css */
/* This component draws its own grids, so it needs its own copy of the few rules they use. The
   pages that host it define the same ones, but scoped CSS is scoped to the file whose markup it
   came from: a rule written in EventProfile.razor.css carries that page's attribute and never
   matches a row this component rendered. That is why the delete button here was a bare rectangle
   until 2026-09-22 - the button was there, the bin was not. */

.cm-trash[b-93ivagk0o0] {
    line-height: 1;
    padding: 0.2rem 0.55rem;
}

/* The nav's .bi icons are white SVGs painted as backgrounds - right on the dark sidebar and
   invisible on a table row - and there is no bin among them. This is the Bootstrap Icons bin
   drawn as a mask, so the shape takes the button's own color. */
.cm-trash-icon[b-93ivagk0o0] {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    vertical-align: -0.15em;
    background-color: currentColor;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: contain;
    mask-size: contain;
    -webkit-mask-image: var(--cm-trash-mask);
    mask-image: var(--cm-trash-mask);
    --cm-trash-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5Zm3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0V6Z'/%3E%3Cpath d='M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1v1ZM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4H4.118ZM2.5 3h11V2h-11v1Z'/%3E%3C/svg%3E");
}

/* The eight Include flags on the master list form (2026-09-30), set a little apart from the boxes
   above them. */
.cm-include-flags[b-93ivagk0o0] {
    margin-top: 0.5rem;
}
/* /Components/Shared/MergeFieldsTab.razor.rz.scp.css */
/* The merge field catalogue. A wide, text-heavy grid, so the columns are fixed and the long
   ones wrap rather than pushing the table sideways. */

.cm-mergefields[b-nw10mvnqox] {
    max-width: 90rem;
}

.cm-mergebar[b-nw10mvnqox] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.cm-mergebar select[b-nw10mvnqox],
.cm-mergebar input[b-nw10mvnqox] {
    width: auto;
    min-width: 12rem;
}

.cm-mergegrid[b-nw10mvnqox] {
    table-layout: fixed;
    width: 100%;
}

.cm-w-mfgroup[b-nw10mvnqox] { width: 11%; }
.cm-w-mflabel[b-nw10mvnqox] { width: 24%; }
.cm-w-mfinsert[b-nw10mvnqox] { width: 22%; }
.cm-w-mfeditors[b-nw10mvnqox] { width: 33%; }
.cm-w-mfactive[b-nw10mvnqox] { width: 10%; }

.cm-mergegrid code[b-nw10mvnqox] {
    font-size: 0.9em;
    word-break: break-word;
}

/* Marks the few fields that insert text there and then rather than a token, since the two read
   alike in a list and behave nothing alike. */
.cm-mergekind[b-nw10mvnqox] {
    display: inline-block;
    font-size: 0.75em;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.05rem 0.35rem;
    margin-right: 0.35rem;
    border-radius: 0.25rem;
    background: var(--cm-muted, #adb5bd);
    color: #ffffff;
}

.cm-mergenote[b-nw10mvnqox] {
    font-size: 0.9em;
    opacity: 0.85;
}

.cm-count[b-nw10mvnqox] {
    margin-left: auto;
    opacity: 0.8;
}

/* The tick list of editors on the form: a box each, boxed off so it reads as one answer. */
.cm-mergeeditors[b-nw10mvnqox] {
    margin: 0.75rem 0;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    border-radius: 0.375rem;
}

.cm-mergeeditors legend[b-nw10mvnqox] {
    font-size: 0.95rem;
    font-weight: 600;
    width: auto;
    padding: 0 0.35rem;
    margin: 0;
}

/* Delete sits apart from Save and Cancel: it is not another way of finishing the form. */
.cm-mergedelete[b-nw10mvnqox] {
    margin-top: 1rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.12));
}

/* A label beside its box rather than above it, for the one short number on the form. */
.cm-inline[b-nw10mvnqox] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.cm-inline .cm-short[b-nw10mvnqox] {
    width: 6rem;
}

/* The row open in the form. */
.cm-mergegrid tbody tr[b-nw10mvnqox] {
    cursor: pointer;
}

/* The field's form is a boxed section, as on the rest of the profile it now sits on (2026-10-01).
   A scoped copy, since the profile's own rules carry the profile's scope and not this tab's. */
.cm-section[b-nw10mvnqox] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-nw10mvnqox] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-nw10mvnqox] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-nw10mvnqox] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}
/* /Components/Shared/NewOrganizationForm.razor.rz.scp.css */
/* The boxed-form look, copied from OrganizationProfile.razor.css: scoped styles are per
   component, and without its own copy this form's fieldset renders as a bare Bootstrap one. */

.cm-section[b-lfpa5qadpq] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
    max-width: 40rem;
}

.cm-section > legend[b-lfpa5qadpq] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-lfpa5qadpq] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-lfpa5qadpq] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* Add Organization and Cancel, under the fields. */
.cm-formbar[b-lfpa5qadpq] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-top: 0.75rem;
}
/* /Components/Shared/OrganizationAttendeesTab.razor.rz.scp.css */
/* The organization profile's Attendees tab (2026-10-23): one legend box for the open attendee's form and one for the grid,
   as the other tabs drawn outside the profile form have them. A component's styles are its own, so the profile's scoped
   .cm-section and grid rules don't reach it; these are their copies. The bin is app.css's .cm-quill-trash, the pencil beside
   it app.css's .cm-quill-edit. */

.cm-section[b-vxa2jfwol5] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-vxa2jfwol5],
.cm-org-attendee-box > legend[b-vxa2jfwol5] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

/* A box inside the form - Name, Phone and Email, Address - lighter than the form's own. */
.cm-org-attendee-box[b-vxa2jfwol5] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.125));
    border-radius: 0.375rem;
    padding: 0.4rem 0.75rem 0.15rem;
    margin-bottom: 0.75rem;
    min-width: 0;
}

/* The fieldset that grays the whole form for whoever may only look: no frame of its own. */
.cm-org-attendee-fields[b-vxa2jfwol5] {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}

.cm-orgattendees .form-control[b-vxa2jfwol5],
.cm-orgattendees .form-select[b-vxa2jfwol5],
.cm-orgattendees .btn[b-vxa2jfwol5] {
    font-size: 1em;
}

.cm-orgattendees .form-text[b-vxa2jfwol5] {
    font-size: 0.9em;
}

.cm-field[b-vxa2jfwol5] {
    margin-bottom: 0.6rem;
}

.cm-field > label[b-vxa2jfwol5] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-org-attendee-short[b-vxa2jfwol5] {
    max-width: 14rem;
}

.cm-org-attendee-problems[b-vxa2jfwol5] {
    margin-bottom: 0.6rem;
}

.cm-rowbar[b-vxa2jfwol5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    align-items: center;
    margin: 0.25rem 0 0.5rem;
}

/* The filter: the box, Filter and Clear on one line where they fit. */
.cm-org-attendees-filter[b-vxa2jfwol5] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.cm-org-attendees-filter .form-control[b-vxa2jfwol5] {
    width: 16rem;
    max-width: 100%;
}

.cm-profilebar[b-vxa2jfwol5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.cm-grid-scroll[b-vxa2jfwol5] {
    overflow-x: auto;
}

.cm-wrap[b-vxa2jfwol5] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cm-nowrap[b-vxa2jfwol5] {
    white-space: nowrap;
}

.cm-empty[b-vxa2jfwol5] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-hiddenform[b-vxa2jfwol5] {
    display: none;
}

.cm-flag-cell[b-vxa2jfwol5] {
    text-align: center;
    width: 4.5rem;
}

.cm-trash[b-vxa2jfwol5],
.cm-edit[b-vxa2jfwol5],
.cm-restore[b-vxa2jfwol5] {
    line-height: 1;
}

/* A hidden attendee, listed for a system administrator alone (2026-10-23: "Yes, grayed with a Restore"). */
.cm-org-attendee-hidden > td[b-vxa2jfwol5] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-org-attendee-hidden-tag[b-vxa2jfwol5] {
    font-size: 0.85em;
}

/* A control that can't be used right now stays visible and grayed, saying why when clicked (CLAUDE.md): a reader's bins, a
   locked organization's Restore, a hidden row's pencil. Bootstrap grays only :disabled, and these are aria-disabled. */
.cm-orgattendees .btn[aria-disabled="true"][b-vxa2jfwol5] {
    opacity: 0.55;
    cursor: not-allowed;
}

tr[data-row-href][b-vxa2jfwol5] {
    cursor: pointer;
}

/* The row whose form is open above the grid. */
.cm-org-attendee-open > td[b-vxa2jfwol5] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 12%, transparent) !important;
}
/* /Components/Shared/OrganizationHomeView.razor.rz.scp.css */
/* An organization's home page. The heading lines sit inside HomeDesign's .cm-intro, which
   centres them; these only size them. Everything here is centred, as asked: "all centered on
   the page". */

.cm-site-welcome[b-riw1exwhqr] {
    margin-bottom: 0.25rem;
    font-size: 1.5rem;
}

.cm-site-name[b-riw1exwhqr] {
    margin-bottom: 0.5rem;
}

.cm-site-presenter[b-riw1exwhqr] {
    font-style: italic;
    opacity: 0.85;
}

.cm-site-tagline[b-riw1exwhqr] {
    margin-top: 0.75rem;
}

/* The two event lists, under the heading. No bullets: a centred bulleted list puts its bullets
   wherever each line happens to start. */
.cm-site-events[b-riw1exwhqr] {
    margin-top: 1.75rem;
    text-align: center;
}

.cm-site-list[b-riw1exwhqr] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.cm-site-list li[b-riw1exwhqr] {
    margin-bottom: 0.5rem;
}

.cm-site-list a[b-riw1exwhqr] {
    font-weight: 600;
}

/* The dates on a line of their own under the title, quieter than it. */
.cm-site-dates[b-riw1exwhqr] {
    display: block;
    font-size: 0.9em;
    opacity: 0.8;
}

.cm-site-none[b-riw1exwhqr] {
    font-style: italic;
    opacity: 0.8;
}

/* Under a page the organization wrote itself, the lists get the room .cm-intro would have
   given them. */
.cm-site-events-block[b-riw1exwhqr] {
    padding-block: 1.5rem 2.5rem;
}

/* The heading and lists in place of the name and tag line of the site's stored page: centred,
   with the room HomeDesign's .cm-intro gives them on the built-in page. */
.cm-site-intro[b-riw1exwhqr] {
    text-align: center;
    padding-block: 2.5rem;
}

/* The organization's own home page, rendered as written - the same rules as the site's home
   page. ::deep because the content is markup, not this component's elements. Images are held to
   the column so a wide one cannot push the page sideways, and video keeps its shape. */
.cm-homepage-content[b-riw1exwhqr] {
    line-height: 1.6;
}

.cm-homepage-content[b-riw1exwhqr]  img,
.cm-homepage-content[b-riw1exwhqr]  iframe {
    max-width: 100%;
}

.cm-homepage-content[b-riw1exwhqr]  iframe {
    aspect-ratio: 16 / 9;
    height: auto;
    border: 0;
}
/* /Components/Shared/PageSectionsEditor.razor.rz.scp.css */
/* The Home Page Editor's Sections box (2026-10-15), in the look of its Layout and Menus panel. */

.cm-sections-panel[b-gd6i4lv81u] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.5rem;
    padding: 0.25rem 0.75rem 0.75rem;
    margin-block: 0.75rem;
}

.cm-sections-panel > summary[b-gd6i4lv81u] {
    cursor: pointer;
    padding: 0.35rem 0;
    font-weight: 700;
}

.cm-sections-tip[b-gd6i4lv81u],
.cm-sections-about[b-gd6i4lv81u] {
    font-size: 0.85rem;
    opacity: 0.85;
    margin: 0 0 0.5rem;
}

.cm-sections-status[b-gd6i4lv81u] {
    color: var(--cm-ok, #198754);
    font-weight: 600;
    margin: 0 0 0.5rem;
}

.cm-sections-error[b-gd6i4lv81u] {
    margin: 0 0 0.5rem;
}

.cm-sections-list[b-gd6i4lv81u] {
    margin: 0 0 0.75rem;
    padding: 0;
    list-style: none;
    max-width: 44rem;
    border-top: 1px solid var(--cm-border, #dee2e6);
}

.cm-sections-row[b-gd6i4lv81u] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.2rem 0.5rem;
    border-bottom: 1px solid var(--cm-border, #dee2e6);
    cursor: grab;
}

.cm-sections-row:focus-visible[b-gd6i4lv81u] {
    outline: 2px solid var(--cm-accent, #1b6ec2);
    outline-offset: -2px;
}

.cm-sections-row.cm-sections-dragging[b-gd6i4lv81u] {
    opacity: 0.5;
}

.cm-sections-row.cm-sections-open[b-gd6i4lv81u] {
    font-weight: 600;
    background: rgba(27, 110, 194, 0.08);
}

.cm-sections-row.cm-sections-hidden .cm-sections-label[b-gd6i4lv81u] {
    opacity: 0.55;
}

.cm-sections-grip[b-gd6i4lv81u] {
    opacity: 0.45;
    font-size: 1.1rem;
    line-height: 1;
}

.cm-sections-position[b-gd6i4lv81u] {
    min-width: 1.5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--bs-secondary-color, #6c757d);
}

.cm-sections-label[b-gd6i4lv81u] {
    flex: 1;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 0.5rem;
    min-width: 0;
}

.cm-sections-kind[b-gd6i4lv81u] {
    font-weight: 600;
}

.cm-sections-heading[b-gd6i4lv81u] {
    opacity: 0.8;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 22rem;
}

.cm-sections-hidden-badge[b-gd6i4lv81u] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 0 0.4rem;
    border-radius: 0.25rem;
    background: rgba(127, 127, 127, 0.2);
}

.cm-sections-actions[b-gd6i4lv81u] {
    display: flex;
    align-items: center;
    gap: 0.1rem;
}

.cm-sections-actions .btn[b-gd6i4lv81u] {
    padding: 0 0.35rem;
}

.cm-sections-delete[b-gd6i4lv81u] {
    color: var(--bs-danger, #dc3545);
    line-height: 1;
}

.cm-sections-delete[aria-disabled="true"][b-gd6i4lv81u] {
    color: var(--cm-text, #212529);
    opacity: 0.35;
    cursor: not-allowed;
}

.cm-sections-tools[b-gd6i4lv81u] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.75rem 1.5rem;
}

.cm-sections-add[b-gd6i4lv81u] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem 0.6rem;
}

.cm-sections-add label[b-gd6i4lv81u] {
    font-weight: 600;
}

.cm-sections-add select[b-gd6i4lv81u] {
    width: auto;
}

.cm-sections-add .cm-sections-about[b-gd6i4lv81u] {
    flex-basis: 100%;
    margin: 0;
}

.cm-sections-missing[b-gd6i4lv81u] {
    margin: 0.75rem 0;
}

/* The starter designs. */
.cm-design-chooser[b-gd6i4lv81u] {
    width: min(64rem, 94vw);
    max-height: 90vh;
    border: 0;
    border-radius: 0.75rem;
    padding: 1rem 1.25rem 1.25rem;
    background: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}

.cm-design-chooser[b-gd6i4lv81u]::backdrop {
    background: rgba(0, 0, 0, 0.45);
}

.cm-design-chooser-head[b-gd6i4lv81u] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.cm-design-chooser-head h3[b-gd6i4lv81u] {
    margin: 0;
    font-size: 1.3rem;
}

.cm-design-chooser-tip[b-gd6i4lv81u] {
    font-size: 0.9rem;
    opacity: 0.85;
}

.cm-design-cards[b-gd6i4lv81u] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: 1rem;
}

.cm-design-card form[b-gd6i4lv81u] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    height: 100%;
    padding: 0 0 0.75rem;
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.6rem;
    overflow: hidden;
}

.cm-design-card img[b-gd6i4lv81u] {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
}

.cm-design-name[b-gd6i4lv81u] {
    font-weight: 700;
    padding-inline: 0.75rem;
}

.cm-design-about[b-gd6i4lv81u] {
    font-size: 0.85rem;
    opacity: 0.85;
    padding-inline: 0.75rem;
    flex: 1;
}

.cm-design-card .btn[b-gd6i4lv81u] {
    align-self: flex-start;
    margin-inline: 0.75rem;
}

/* An open section's form. */
.cm-section-form[b-gd6i4lv81u] {
    margin-top: 0.5rem;
}

.cm-section-form-head[b-gd6i4lv81u] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}

.cm-section-form-title[b-gd6i4lv81u] {
    font-size: 1.2rem;
    margin: 0;
}

.cm-section-form-about[b-gd6i4lv81u] {
    font-size: 0.9rem;
    opacity: 0.85;
    margin: 0.25rem 0 0.75rem;
}

.cm-section-group[b-gd6i4lv81u] {
    border: 1px solid var(--cm-border, #dee2e6);
    border-radius: 0.5rem;
    padding: 0.5rem 0.9rem 0.75rem;
    margin-bottom: 0.9rem;
}

.cm-section-group > legend[b-gd6i4lv81u] {
    float: none;
    width: auto;
    font-size: 1rem;
    font-weight: 700;
    padding: 0 0.35rem;
    margin: 0;
}

.cm-section-group .cm-field[b-gd6i4lv81u] {
    margin-bottom: 0.6rem;
    max-width: 36rem;
}

.cm-section-group .cm-field > label[b-gd6i4lv81u],
.cm-section-boxes-label[b-gd6i4lv81u] {
    display: block;
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 0.2rem;
}

.cm-section-look[b-gd6i4lv81u] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
    gap: 0 1rem;
}

.cm-section-quill[b-gd6i4lv81u] {
    min-height: 8rem;
}

.cm-section-rows[b-gd6i4lv81u] {
    max-width: 52rem;
}

.cm-section-rows select[b-gd6i4lv81u] {
    min-width: 8rem;
}

.cm-section-number[b-gd6i4lv81u] {
    max-width: 7rem;
}

.cm-section-boxes[b-gd6i4lv81u] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.15rem 1.25rem;
}

.cm-section-photos[b-gd6i4lv81u] {
    list-style: none;
    padding: 0;
    margin: 0 0 0.6rem;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
    gap: 0.6rem;
    max-height: 18rem;
    overflow-y: auto;
}

.cm-section-photo[b-gd6i4lv81u] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.35rem;
    border: 2px solid transparent;
    border-radius: 0.5rem;
    cursor: pointer;
    font-size: 0.8rem;
}

.cm-section-photo:has(input:checked)[b-gd6i4lv81u] {
    border-color: var(--cm-accent, #1b6ec2);
    background: rgba(27, 110, 194, 0.08);
}

.cm-section-photo input[b-gd6i4lv81u] {
    align-self: flex-start;
}

.cm-section-photo img[b-gd6i4lv81u],
.cm-section-photo-blank[b-gd6i4lv81u] {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: 0.35rem;
}

.cm-section-photo-blank[b-gd6i4lv81u] {
    display: block;
    background: repeating-linear-gradient(45deg, rgba(127, 127, 127, 0.15) 0 8px, transparent 8px 16px);
}

.cm-section-photo span[b-gd6i4lv81u] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cm-section-overlay[b-gd6i4lv81u] {
    max-width: 18rem;
    vertical-align: middle;
}
/* /Components/Shared/PaymentProcessingTab.razor.rz.scp.css */
/* Organization 0's Payment Processing tab (2026-10-07): each box drawn as a legend box, as the System Settings tab's
   are ("Put Legend boxes around Admin Fees & Payment types"). A component's styles are its own, so the profile's
   .cm-section rules don't reach it; these are the System Settings tab's. */

/* No font size of its own (2026-10-14: "The font size on the organization profile for OrganizationID = 0 is very small
   compared to others"): it sits inside the profile's .cm-settings, already 0.8em, and its own 0.8em made 0.64. */

.cm-section[b-5bx4lw3c2b] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-5bx4lw3c2b] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-5bx4lw3c2b] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-5bx4lw3c2b] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

.cm-payment-processing .form-control[b-5bx4lw3c2b] {
    font-size: 1em;
    padding: 0.25rem 0.5rem;
    height: auto;
    min-height: 0;
    line-height: 1.35;
}

.cm-payment-processing .form-text[b-5bx4lw3c2b] {
    font-size: 0.9em;
    margin-top: 0.1rem;
}

.cm-payment-processing .btn[b-5bx4lw3c2b] {
    font-size: 1em;
}

.cm-short[b-5bx4lw3c2b] {
    max-width: 7rem;
}

.cm-num[b-5bx4lw3c2b] {
    text-align: right;
}

.cm-num .cm-short[b-5bx4lw3c2b] {
    margin-left: auto;
    text-align: right;
}

.cm-admin-fee-by-category > caption[b-5bx4lw3c2b] {
    caption-side: top;
    padding-top: 0.75rem;
    font-weight: 600;
    color: inherit;
}

.cm-payment-types td[b-5bx4lw3c2b],
.cm-admin-fee-by-category td[b-5bx4lw3c2b] {
    vertical-align: middle;
}

/* The admin fee test charge (2026-10-13), under the categories' table. */
.cm-admin-fee-test[b-5bx4lw3c2b] {
    margin-top: 0.75rem;
}
/* /Components/Shared/PersonalEventDiscountsTab.razor.rz.scp.css */
/* Organization 0's Personal Event Discounts tab (2026-10-16): one legend box for the form and one for the grid, as the
   outreach tabs draw them; the sortable headings and filter row as the Email Marketing grids have them. A component's styles
   are its own, so the profile's rules don't reach it. */

.cm-section[b-1ds4yykpt6] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-1ds4yykpt6] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-discounts .form-control[b-1ds4yykpt6],
.cm-discounts .form-select[b-1ds4yykpt6],
.cm-discounts .btn[b-1ds4yykpt6] {
    font-size: 1em;
}

.cm-discounts .form-text[b-1ds4yykpt6] {
    font-size: 0.9em;
}

.cm-field[b-1ds4yykpt6] {
    margin-bottom: 0.75rem;
}

.cm-field > label[b-1ds4yykpt6] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-field.cm-inline[b-1ds4yykpt6] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.cm-field.cm-inline > label[b-1ds4yykpt6] {
    margin-bottom: 0;
}

.cm-discount-code[b-1ds4yykpt6] {
    max-width: 16rem;
    text-transform: none;
}

.cm-discount-percent[b-1ds4yykpt6] {
    max-width: 6rem;
    text-align: right;
}

.cm-discount-date[b-1ds4yykpt6] {
    max-width: 11rem;
}

.cm-discount-code-cell[b-1ds4yykpt6] {
    font-weight: 600;
    font-family: var(--bs-font-monospace);
}

.cm-discount-expired[b-1ds4yykpt6] {
    margin-left: 0.35rem;
}

.cm-discount-count[b-1ds4yykpt6] {
    color: var(--cm-muted, #6c757d);
    margin-left: auto;
}

.cm-rowbar[b-1ds4yykpt6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin: 0.25rem 0 0.5rem;
}

.cm-profilebar[b-1ds4yykpt6] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.cm-grid-scroll[b-1ds4yykpt6] {
    overflow-x: auto;
}

.cm-sorted a[b-1ds4yykpt6] {
    font-weight: 700;
}

.cm-arrow[b-1ds4yykpt6] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its boxes shouldn't make the row tall or the columns wide. */
.cm-filters th[b-1ds4yykpt6] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
    font-weight: normal;
}

.cm-filters .form-control[b-1ds4yykpt6] {
    min-width: 6rem;
}

.cm-empty[b-1ds4yykpt6] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-hiddenform[b-1ds4yykpt6] {
    display: none;
}

.cm-flag-cell[b-1ds4yykpt6] {
    text-align: center;
    width: 4.5rem;
}

.cm-trash[b-1ds4yykpt6] {
    line-height: 1;
}

tr[data-row-href][b-1ds4yykpt6] {
    cursor: pointer;
}
/* /Components/Shared/PressContactsTab.razor.rz.scp.css */
/* Organization 0's Press Contacts and Event Planners tabs (2026-10-14): one legend box for the grid and one for the form,
   as the Sample Organizations tab draws them. A component's styles are its own, so the profile's .cm-section rules don't
   reach it; PressContactsTab.razor.css and EventPlannersTab.razor.css are the same. */

.cm-section[b-ywns6jgwwk] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-ywns6jgwwk] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-outreach .form-control[b-ywns6jgwwk],
.cm-outreach .form-select[b-ywns6jgwwk],
.cm-outreach .btn[b-ywns6jgwwk] {
    font-size: 1em;
}

.cm-outreach .form-text[b-ywns6jgwwk] {
    font-size: 0.9em;
}

/* Add, the filter and the count, on one line where they fit. */
.cm-outreach-bar[b-ywns6jgwwk] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    margin-bottom: 0.6rem;
}

.cm-outreach-filter[b-ywns6jgwwk] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.cm-outreach-filter .form-control[b-ywns6jgwwk] {
    width: 14rem;
}

.cm-outreach-filter .form-select[b-ywns6jgwwk] {
    width: auto;
}

.cm-outreach-count[b-ywns6jgwwk] {
    opacity: 0.8;
}

.cm-outreach-grid td[b-ywns6jgwwk] {
    vertical-align: top;
}

.cm-outreach-grid tbody tr[data-row-href][b-ywns6jgwwk] {
    cursor: pointer;
}

.cm-outreach-open > td[b-ywns6jgwwk] {
    background-color: color-mix(in srgb, var(--cm-accent, #1b6ec2) 12%, transparent) !important;
}

.cm-outreach-meta[b-ywns6jgwwk] {
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-outreach-wrap[b-ywns6jgwwk] {
    overflow-wrap: anywhere;
    max-width: 16rem;
}

.cm-outreach-nowrap[b-ywns6jgwwk] {
    white-space: nowrap;
}

.cm-outreach-bin[b-ywns6jgwwk] {
    width: 1%;
    text-align: center;
}

/* The form: as many columns as fit, Notes and Source across the whole width. */
.cm-outreach-fields[b-ywns6jgwwk] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
    gap: 0.6rem 1rem;
    margin-bottom: 0.75rem;
}

.cm-outreach-field label[b-ywns6jgwwk] {
    display: block;
    font-weight: 600;
    margin-bottom: 0.15rem;
}

.cm-outreach-wide[b-ywns6jgwwk] {
    grid-column: 1 / -1;
}

.cm-outreach-check[b-ywns6jgwwk] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding-top: 1.4rem;
}

.cm-outreach-check label[b-ywns6jgwwk] {
    display: inline;
    margin: 0;
}

.cm-outreach-problems[b-ywns6jgwwk] {
    margin-bottom: 0.6rem;
}

.cm-outreach-hiddenform[b-ywns6jgwwk] {
    margin: 0;
}
/* /Components/Shared/PressPanels.razor.rz.scp.css */
/* The Press page (2026-10-08): a panel a month, one under another, as the blog's panels are. */
.cm-press[b-bvwlhu1am8] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-block: 1rem;
}

.cm-press-month[b-bvwlhu1am8] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.15));
    border-radius: 0.5rem;
    background: var(--cm-raised, transparent);
}

/* The month and how many: the whole line opens and closes it, with an arrow that turns. */
.cm-press-month > summary[b-bvwlhu1am8] {
    list-style: none;
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    padding: 0.6rem 0.9rem;
    cursor: pointer;
}

.cm-press-month > summary[b-bvwlhu1am8]::-webkit-details-marker {
    display: none;
}

.cm-press-month > summary[b-bvwlhu1am8]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

.cm-press-month[open] > summary[b-bvwlhu1am8]::before {
    transform: rotate(90deg);
}

.cm-press-month-title[b-bvwlhu1am8] {
    flex: 1 1 auto;
    font-weight: 600;
    font-size: 1.1em;
}

.cm-press-month-count[b-bvwlhu1am8] {
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-press-list[b-bvwlhu1am8] {
    list-style: none;
    margin: 0;
    padding: 0 0.9rem 0.6rem;
}

.cm-press-release[b-bvwlhu1am8] {
    padding: 0.75rem 0;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.1));
}

.cm-press-release-head[b-bvwlhu1am8] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
    font-weight: 600;
}

.cm-press-not-public[b-bvwlhu1am8] {
    font-size: 0.8em;
    font-weight: 600;
    padding: 0.05rem 0.45rem;
    border-radius: 0.25rem;
    background: #fff3cd;
    color: #664d03;
}

.cm-press-summary[b-bvwlhu1am8] {
    margin-block: 0.35rem 0.5rem;
}

.cm-press-add[b-bvwlhu1am8] {
    margin-block: 0.5rem 1rem;
}

.cm-press-show-more[b-bvwlhu1am8] {
    align-self: center;
    margin-top: 0.5rem;
}

.cm-press-none[b-bvwlhu1am8] {
    font-style: italic;
    opacity: 0.8;
}

/* The preview window: tall enough to read a page, the PDF filling it below its head. */
.cm-press-viewer[b-bvwlhu1am8] {
    width: min(64rem, 100%);
    height: min(90vh, 70rem);
    max-height: none;
}

.cm-press-viewer-body[b-bvwlhu1am8] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
}

.cm-press-frame[b-bvwlhu1am8] {
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    border: 0;
    border-radius: 0 0 0.5rem 0.5rem;
    background: #525659;
}
/* /Components/Shared/PressTab.razor.rz.scp.css */
/* Organization 0's Press tab (2026-10-08): the grid, and the release's panel - as the Blog tab's. */
.cm-presstab-bar[b-6oii0pjpvf] {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.cm-presstab-grid th[b-6oii0pjpvf],
.cm-presstab-grid td[b-6oii0pjpvf] {
    vertical-align: top;
}

.cm-presstab-delete[b-6oii0pjpvf] {
    width: 3rem;
    text-align: center;
}

.cm-presstab-trash[b-6oii0pjpvf] {
    padding: 0 0.25rem;
    color: var(--bs-danger, #dc3545);
}

.cm-presstab-trash-icon[b-6oii0pjpvf] {
    width: 1rem;
    height: 1rem;
}

.cm-presstab-fields[b-6oii0pjpvf] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.5rem 1.5rem;
}

.cm-presstab-fields .cm-field[b-6oii0pjpvf] {
    min-width: 12rem;
}

.cm-presstab-quill[b-6oii0pjpvf] {
    min-height: 12rem;
}

.cm-presstab-current[b-6oii0pjpvf] {
    margin-bottom: 0.35rem;
}

.cm-presstab-foot[b-6oii0pjpvf] {
    padding: 0 1rem 1rem;
}
/* /Components/Shared/ReportHeadingView.razor.rz.scp.css */
.cm-report-heading[b-t5jxye9wby] { margin: 0 0 0.75rem; }
.cm-report-heading-line[b-t5jxye9wby] { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.25rem; }
.cm-report-heading-org strong[b-t5jxye9wby] { font-size: 1.15rem; }
.cm-report-heading-dates[b-t5jxye9wby] { font-size: 0.95rem; }
/* /Components/Shared/ReportsTab.razor.rz.scp.css */
/* The Event Profile's Reports tab (2026-10-14). Its own copy of the profile's legend box and field layout, since the
   profile's scoped styles don't reach a component's markup. */

.cm-report-setup[b-lqxthnqhmy] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

/* It opens and closes by its title (2026-10-29): the profile's .cm-legendbox, copied - a details element drawn as the
   legend boxes are, its summary on the top border with an arrow that turns. */
details.cm-legendbox[b-lqxthnqhmy] {
    padding-top: 0;
}

details.cm-legendbox:not([open])[b-lqxthnqhmy] {
    padding-bottom: 0.4rem;
}

details.cm-legendbox > summary[b-lqxthnqhmy] {
    list-style: none;
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    margin: -0.8rem 0 0.5rem -0.4rem;
    padding: 0 0.4rem;
    line-height: 1.5;
    background: var(--cm-bg, var(--bs-body-bg, #fff));
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
}

details.cm-legendbox:not([open]) > summary[b-lqxthnqhmy] {
    margin-bottom: 0;
}

details.cm-legendbox > summary[b-lqxthnqhmy]::-webkit-details-marker {
    display: none;
}

details.cm-legendbox > summary[b-lqxthnqhmy]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

details.cm-legendbox[open] > summary[b-lqxthnqhmy]::before {
    transform: rotate(90deg);
}

.cm-rowbar[b-lqxthnqhmy] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin: 0.5rem 0;
}

.cm-field[b-lqxthnqhmy] {
    margin-bottom: 0.75rem;
}

.cm-field > label[b-lqxthnqhmy] {
    display: block;
    font-weight: 600;
    margin-bottom: 0.2rem;
}

.cm-hint[b-lqxthnqhmy] {
    font-size: 0.875em;
    color: var(--cm-muted, #6c757d);
    margin: 0.25rem 0 0.5rem;
}

/* Saved Reports: the list, Open, and the open one's Delete, on one line. */
.cm-report-saved[b-lqxthnqhmy] {
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    margin-bottom: 0.75rem;
}

.cm-report-open[b-lqxthnqhmy] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.cm-report-open label[b-lqxthnqhmy] {
    font-weight: 600;
}

.cm-report-open select[b-lqxthnqhmy] {
    width: auto;
    min-width: 16rem;
    max-width: 100%;
}

.cm-report-kind select[b-lqxthnqhmy] {
    max-width: 24rem;
}

/* The columns: as many to a row as fit. */
.cm-report-columns[b-lqxthnqhmy],
.cm-report-filters[b-lqxthnqhmy] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem 0.5rem;
    margin-bottom: 0.75rem;
}

.cm-report-columns > legend[b-lqxthnqhmy],
.cm-report-filters > legend[b-lqxthnqhmy] {
    float: none;
    width: auto;
    padding: 0 0.3rem;
    margin-bottom: 0.25rem;
    font-size: 0.95rem;
    font-weight: 600;
}

.cm-report-column-list[b-lqxthnqhmy] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(12rem, 1fr));
    gap: 0.15rem 1rem;
}

.cm-report-filter[b-lqxthnqhmy] {
    display: grid;
    grid-template-columns: minmax(10rem, 14rem) minmax(9rem, 12rem) minmax(8rem, 1fr);
    gap: 0.5rem;
    margin-bottom: 0.4rem;
}

@media (max-width: 640px) {
    .cm-report-filter[b-lqxthnqhmy] {
        grid-template-columns: 1fr;
    }
}

.cm-report-arrange[b-lqxthnqhmy] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.5rem;
    align-items: flex-end;
}

.cm-report-pair[b-lqxthnqhmy] {
    display: flex;
    gap: 0.4rem;
}

.cm-report-pair select[b-lqxthnqhmy],
.cm-report-group select[b-lqxthnqhmy] {
    width: auto;
    min-width: 9rem;
}

.cm-report-totals[b-lqxthnqhmy] {
    margin-bottom: 0.9rem;
}

/* Save This Report As. */
.cm-report-save label[b-lqxthnqhmy] {
    font-weight: 600;
}

.cm-report-save input[type="text"][b-lqxthnqhmy] {
    width: auto;
    min-width: 16rem;
}

/* The report itself. */
.cm-report-results h3[b-lqxthnqhmy] {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: 0.15rem;
}

.cm-report-about span + span[b-lqxthnqhmy]::before {
    content: " - ";
}

.cm-report-table .cm-num[b-lqxthnqhmy] {
    text-align: right;
    white-space: nowrap;
}

.cm-report-table thead th[b-lqxthnqhmy] {
    white-space: nowrap;
}

.cm-report-grouprow th[b-lqxthnqhmy] {
    background: var(--cm-raised, #ddebf7);
    font-weight: 700;
    padding-top: 0.45rem;
}

.cm-report-groupcount[b-lqxthnqhmy] {
    font-weight: 400;
    color: var(--cm-muted, #6c757d);
}

.cm-report-subtotal th[b-lqxthnqhmy],
.cm-report-subtotal td[b-lqxthnqhmy] {
    font-weight: 700;
    border-top: 1px solid var(--cm-border, rgba(0, 0, 0, 0.3));
}

.cm-report-total th[b-lqxthnqhmy],
.cm-report-total td[b-lqxthnqhmy] {
    font-weight: 700;
    border-top: 2px solid currentColor;
}

/* Printed from the browser: only the report. */
@media print {
    .cm-report-setup[b-lqxthnqhmy] {
        display: none;
    }
}
/* /Components/Shared/SampleOrganizationsTab.razor.rz.scp.css */
/* Organization 0's Sample Organizations tab (2026-10-14): one legend box, as the System Settings and Payment Processing
   tabs draw theirs. A component's styles are its own, so the profile's .cm-section rules don't reach it. */

/* No font size of its own (2026-10-14: "The font size on the organization profile for OrganizationID = 0 is very small
   compared to others"): it sits inside the profile's .cm-settings, already 0.8em, and its own 0.8em made 0.64. */

.cm-section[b-qzw9u1wtac] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-qzw9u1wtac] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-sample-organizations .form-control[b-qzw9u1wtac] {
    font-size: 1em;
    padding: 0.25rem 0.5rem;
    line-height: 1.35;
    min-width: 16rem;
}

.cm-sample-organizations .form-text[b-qzw9u1wtac] {
    font-size: 0.9em;
}

.cm-sample-organizations .btn[b-qzw9u1wtac] {
    font-size: 1em;
}

.cm-sample-who[b-qzw9u1wtac] {
    width: 22%;
}

.cm-sample-events[b-qzw9u1wtac] {
    width: 28%;
}

.cm-sample-events ul[b-qzw9u1wtac] {
    margin: 0;
    padding-left: 1.1rem;
}

.cm-sample-meta[b-qzw9u1wtac] {
    font-size: 0.9em;
    opacity: 0.75;
}

.cm-sample-not-offered[b-qzw9u1wtac] {
    font-style: italic;
}
/* /Components/Shared/SettingRoomsBox.razor.rz.scp.css */
/* An item setting's Rooms box (2026-10-18). Its own copy of the profile's legend box, since the profile's scoped styles
   don't reach a component's markup. */

.cm-section[b-ja7u11to2r] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-section > legend[b-ja7u11to2r] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

/* It opens and closes by its title (2026-10-20): the profile's .cm-legendbox, copied - a details element drawn as the
   legend boxes are, its summary on the top border with an arrow that turns. */
details.cm-legendbox[b-ja7u11to2r] {
    padding-top: 0;
}

details.cm-legendbox:not([open])[b-ja7u11to2r] {
    padding-bottom: 0.4rem;
}

details.cm-legendbox > summary[b-ja7u11to2r] {
    list-style: none;
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    margin: -0.8rem 0 0.5rem -0.4rem;
    padding: 0 0.4rem;
    line-height: 1.5;
    background: var(--cm-bg, var(--bs-body-bg, #fff));
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
}

details.cm-legendbox:not([open]) > summary[b-ja7u11to2r] {
    margin-bottom: 0;
}

details.cm-legendbox > summary[b-ja7u11to2r]::-webkit-details-marker {
    display: none;
}

details.cm-legendbox > summary[b-ja7u11to2r]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

details.cm-legendbox[open] > summary[b-ja7u11to2r]::before {
    transform: rotate(90deg);
}

/* The grid's own fieldset only disables it for a reader: no border, no room of its own. */
.cm-setting-rooms-fields[b-ja7u11to2r] {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
}

.cm-setting-rooms-fields[disabled] .form-control[b-ja7u11to2r] {
    opacity: 1;
    background-color: var(--cm-surface-muted, rgba(0, 0, 0, 0.04));
    cursor: not-allowed;
}

.cm-setting-rooms-summary[b-ja7u11to2r],
.cm-setting-rooms-days[b-ja7u11to2r] {
    margin-bottom: 0.5rem;
}

.cm-setting-rooms-status[b-ja7u11to2r] {
    margin-bottom: 0.5rem;
    font-weight: 600;
}

.cm-setting-rooms-done[b-ja7u11to2r] {
    color: var(--bs-success, #198754);
}

.cm-grid-scroll[b-ja7u11to2r] {
    overflow-x: auto;
}

.cm-setting-rooms-grid[b-ja7u11to2r] {
    font-size: 0.9em;
    margin-bottom: 0;
}

.cm-setting-rooms-grid th[b-ja7u11to2r],
.cm-setting-rooms-grid td[b-ja7u11to2r] {
    vertical-align: middle;
}

.cm-setting-rooms-grid thead th[b-ja7u11to2r] {
    white-space: nowrap;
}

/* "Use for Hands On Clinics" wraps rather than pushing the grid past its box. */
.cm-setting-rooms-grid thead th.cm-setting-room-usehead[b-ja7u11to2r] {
    white-space: normal;
    min-width: 5.5rem;
    max-width: 8rem;
}

.cm-flag-cell[b-ja7u11to2r] {
    text-align: center;
}

.cm-num[b-ja7u11to2r] {
    text-align: right;
}

.cm-setting-room-name[b-ja7u11to2r] {
    font-weight: 600;
    min-width: 10rem;
}

/* The venue, and a word for a room the event no longer uses, under its name. */
.cm-setting-room-note[b-ja7u11to2r] {
    display: block;
    font-size: 0.85em;
    font-weight: 400;
    color: var(--cm-muted, #6c757d);
}

.cm-setting-room-unused[b-ja7u11to2r],
.cm-setting-room-wrongkind[b-ja7u11to2r] {
    color: var(--bs-danger, #b02a37);
}

.cm-setting-room-count[b-ja7u11to2r] {
    width: 4.75rem;
    margin-left: auto;
    text-align: right;
}

.cm-setting-room-other[b-ja7u11to2r],
.cm-setting-room-placed[b-ja7u11to2r] {
    font-size: 0.9em;
    min-width: 9rem;
}

/* A room not ticked reads as not holding the setting; ticked, as plainly as anything else on the page. */
tr:not(.cm-room-chosen) > .cm-setting-room-name[b-ja7u11to2r],
tr:not(.cm-room-chosen) .cm-setting-room-count[b-ja7u11to2r] {
    opacity: 0.7;
}

.cm-empty[b-ja7u11to2r] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-setting-rooms-actions[b-ja7u11to2r] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    margin-top: 0.75rem;
}

/* A button that can't be used now still takes the click that says why (data-cm-alert), and looks it. */
.btn[aria-disabled="true"][b-ja7u11to2r] {
    opacity: 0.55;
    cursor: not-allowed;
}

.cm-hiddenform[b-ja7u11to2r] {
    display: none;
}
/* /Components/Shared/StockEmailsTab.razor.rz.scp.css */
/* The stock email page: a grid of the emails with the editor beneath it. */

.cm-stock[b-93aotdqp8u] {
    font-size: 0.95em;
}

.cm-stockbar[b-93aotdqp8u] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.5rem;
}

.cm-count[b-93aotdqp8u],
.cm-hint[b-93aotdqp8u] {
    opacity: 0.75;
}

.cm-hint[b-93aotdqp8u] {
    font-style: italic;
}

.cm-grid-scroll[b-93aotdqp8u] {
    overflow-x: auto;
    margin-bottom: 1.25rem;
}

.cm-grid[b-93aotdqp8u] {
    table-layout: fixed;
}

    .cm-grid th[b-93aotdqp8u] {
        white-space: nowrap;
    }

    .cm-grid td[b-93aotdqp8u] {
        vertical-align: top;
        overflow-wrap: anywhere;
    }

    /* The whole cell is the link, so the row reads as one target rather than as two words that
       happen to be clickable. */
    .cm-grid td a[b-93aotdqp8u] {
        display: block;
        color: inherit;
        text-decoration: none;
    }

    .cm-grid tbody tr:hover td[b-93aotdqp8u] {
        background-color: var(--cm-raised, #f7f7f7);
    }

/* The row currently open in the editor below. */
.cm-grid tbody tr.cm-selected > td[b-93aotdqp8u] {
    background-color: var(--cm-accent, #1b6ec2);
    color: var(--cm-accent-text, #ffffff);
}

.cm-num[b-93aotdqp8u] {
    text-align: right;
}

.cm-preview[b-93aotdqp8u] {
    opacity: 0.8;
}

.cm-empty[b-93aotdqp8u] {
    opacity: 0.75;
    font-style: italic;
}

/* The editor. Quill gives its container no height of its own, and an email is a document, so
   this is taller than the editors that sit inside a form as one field among many. */
.cm-stock[b-93aotdqp8u]  .cm-quill,
.cm-stock .cm-quill[b-93aotdqp8u] {
    min-height: 24rem;
    background-color: var(--cm-surface, #ffffff);
    color: var(--cm-text, #212529);
}

.cm-stock[b-93aotdqp8u]  .ql-toolbar,
.cm-stock[b-93aotdqp8u]  .ql-container {
    border-color: var(--cm-border, #d6d5d5);
}

.cm-stock[b-93aotdqp8u]  .cm-quill-value {
    display: none;
}

/* The merge dropdown carries long labels - "Emergency Contact Phone Number" - so it is given
   room rather than being clipped to the width of the toolbar's other controls. */
.cm-stock[b-93aotdqp8u]  .cm-merge {
    max-width: 14rem;
}

.cm-section[b-93aotdqp8u] {
    margin-bottom: 1rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
}

    .cm-section > legend[b-93aotdqp8u] {
        width: auto;
        padding: 0 0.4rem;
        font-size: 1rem;
        font-weight: 600;
    }

.cm-field[b-93aotdqp8u] {
    margin-bottom: 0.5rem;
}

    .cm-field > label[b-93aotdqp8u] {
        display: block;
        margin-bottom: 0.15rem;
        font-size: 0.95em;
        opacity: 0.85;
    }

.cm-stockdelete[b-93aotdqp8u] {
    margin-top: 1.5rem;
}

/* The Do Not Delete column: a box set right in the grid, centred under its heading. */
.cm-flag-cell[b-93aotdqp8u] {
    text-align: center;
}

.cm-grid .cm-flag[b-93aotdqp8u] {
    float: none;
    margin: 0;
    cursor: pointer;
}

/* The one-per-row forms the boxes post carry nothing visible. */
.cm-hiddenform[b-93aotdqp8u] {
    margin: 0;
}

/* Their fallback submit. wwwroot/js/venue-form.js submits on change and marks the document, so
   this is only ever seen by a browser that did not run it. */
html.cm-js .cm-nojs[b-93aotdqp8u] {
    display: none;
}

.cm-nojs[b-93aotdqp8u] {
    font-size: 0.75em;
    padding: 0.1rem 0.4rem;
}

/* Why the delete button is greyed out, beside it. */
.cm-stockdelete .cm-hint[b-93aotdqp8u] {
    margin-left: 0.75rem;
}
/* /Components/Shared/SystemSettingsTab.razor.rz.scp.css */
/* The system settings form: compact fields, and each section boxed with its title sitting on
   the top-left of the border. A fieldset/legend pair gives that natively, so the border break
   behind the title is the browser's own rather than something faked with a background color. */

/* No font size of its own (2026-10-14: "The font size on the organization profile for OrganizationID = 0 is very small
   compared to others"): it sits inside the profile's .cm-settings, already 0.8em, and its own 0.8em made 0.64. */

.cm-section[b-lib7kq441d] {
    border: 1px solid var(--cm-border, #d6d5d5);
    border-radius: 0.375rem;
    padding: 0.25rem 0.9rem 0.6rem;
    margin-bottom: 1rem;
    min-width: 0;
}

.cm-section > legend[b-lib7kq441d] {
    float: none;              /* Bootstrap makes legends full-width block elements; undo that */
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.4rem;
    font-size: 0.95em;
    font-weight: 600;
    line-height: 1;
}

.cm-field[b-lib7kq441d] {
    margin-bottom: 0.5rem;
}

.cm-field > label[b-lib7kq441d] {
    display: block;
    margin-bottom: 0.15rem;
    font-size: 0.95em;
    opacity: 0.85;
}

/* ::deep because the inputs are rendered by InputText/InputSelect, which are child components
   and so carry their own scope identifier rather than this page's. */
.cm-settings[b-lib7kq441d]  .form-control,
.cm-settings[b-lib7kq441d]  .form-select {
    font-size: 1em;
    padding: 0.25rem 0.5rem;
    height: auto;
    min-height: 0;
    line-height: 1.35;
}

.cm-settings[b-lib7kq441d]  .form-check {
    margin-bottom: 0.5rem;
}

.cm-settings[b-lib7kq441d]  .form-text {
    font-size: 0.9em;
    margin-top: 0.1rem;
}

.cm-settings[b-lib7kq441d]  .validation-message {
    font-size: 0.9em;
}

.cm-settings[b-lib7kq441d]  .btn {
    font-size: 1em;
}


/* ---- System Administrators grid --------------------------------------- */

/* The add row and the filter row are separate forms, so each is its own flex line. */
.cm-adminbar[b-lib7kq441d] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
}

/* The button, the dropdown and its two buttons all belong on one line, so this inner group
   does not wrap even though the bar around it may. */
.cm-adminnew[b-lib7kq441d] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.5rem;
}

/* .cm-adminnew sets display:flex at (0,1,0), which would win over the browser's own
   [hidden] rule and leave the row visible. Qualified to (0,2,0) so hidden still means
   hidden - the same specificity trap that .cm-hero-graphic fell into. */
.cm-adminbar [hidden][b-lib7kq441d] {
    display: none;
}

/* Bootstrap's .form-select is width:100%, which in a flex row makes the dropdown claim the
   whole line and pushes Save and Cancel onto the next one. Sized to its content instead. */
.cm-admins select.form-select[b-lib7kq441d] {
    width: auto;
    min-width: 16rem;
    max-width: 28rem;
}

/* Wrappers for a post, with nothing of their own to show. */
.cm-rowform[b-lib7kq441d] {
    margin: 0;
}

.cm-grid-scroll[b-lib7kq441d] {
    overflow-x: auto;
}

.cm-grid[b-lib7kq441d] {
    font-size: 1em;
    margin-bottom: 0.25rem;
}

.cm-grid th[b-lib7kq441d] {
    white-space: nowrap;
}

.cm-grid td[b-lib7kq441d] {
    vertical-align: middle;
    white-space: nowrap;
}

/* The heading is the sort control, so it should not read as body text. */
.cm-grid thead a[b-lib7kq441d] {
    color: inherit;
    text-decoration: none;
}

.cm-grid thead a:hover[b-lib7kq441d] {
    text-decoration: underline;
}

.cm-sorted[b-lib7kq441d] {
    font-weight: 700;
}

.cm-arrow[b-lib7kq441d] {
    opacity: 0.7;
}

/* The filter row sits under the headings; its inputs should not inflate the row height. */
.cm-filters th[b-lib7kq441d] {
    padding-top: 0.15rem;
    padding-bottom: 0.35rem;
}

.cm-admins .form-control[b-lib7kq441d],
.cm-admins .form-select[b-lib7kq441d] {
    font-size: 1em;
    padding: 0.15rem 0.35rem;
    height: auto;
    min-height: 0;
    line-height: 1.3;
}

.cm-num[b-lib7kq441d] {
    text-align: right;
}

.cm-actions[b-lib7kq441d] {
    text-align: right;
    white-space: nowrap;
}

/* The administrators grid honours the widths declared in its <colgroup>. Without this the table
   lays itself out from its content and treats those percentages as suggestions - the delete
   column came out at 8% of the table rather than the share it was given. */
.cm-admins .cm-grid[b-lib7kq441d] {
    table-layout: fixed;
}

/* The delete button is a bin rather than the word Delete. Sized and padded so the button stays
   a comfortable target - an icon button that shrinks to the glyph is hard to hit - and the
   glyph itself takes the button's color, so the outline-danger styling still reaches it. */
.cm-delete[b-lib7kq441d] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.2rem 0.45rem;
    line-height: 1;
}

    .cm-delete svg[b-lib7kq441d] {
        width: 0.95rem;
        height: 0.95rem;
        fill: currentColor;
    }

.cm-count[b-lib7kq441d] {
    opacity: 0.75;
}

.cm-empty[b-lib7kq441d] {
    opacity: 0.75;
    font-style: italic;
}

/* ---- On organization 0's profile (2026-10-01) ------------------------------------------ */

/* The tab's own two tabs sit under the profile's, a step in from them. */
.cm-settings-tabs[b-lib7kq441d] {
    margin-bottom: 0.75rem;
}

/* Where the paired settings went, said once at the top of the box. */
.cm-settings-pairs[b-lib7kq441d] {
    margin: 0 0 0.6rem;
}

.cm-categories .cm-grid[b-lib7kq441d] {
    margin-bottom: 0.5rem;
}
/* /Components/Shared/TransportationDispatcherBox.razor.rz.scp.css */
/* The Transportation Dispatcher Report (2026-10-19), first on the Reports tab. Its own copy of the profile's legend box
   and field, since the profile's scoped styles don't reach a component's markup. */

.cm-section[b-9lejrz5yy0] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-section > legend[b-9lejrz5yy0] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

/* It opens and closes by its title (2026-10-29): the profile's .cm-legendbox, copied - a details element drawn as the
   legend boxes are, its summary on the top border with an arrow that turns. */
details.cm-legendbox[b-9lejrz5yy0] {
    padding-top: 0;
}

details.cm-legendbox:not([open])[b-9lejrz5yy0] {
    padding-bottom: 0.4rem;
}

details.cm-legendbox > summary[b-9lejrz5yy0] {
    list-style: none;
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
    margin: -0.8rem 0 0.5rem -0.4rem;
    padding: 0 0.4rem;
    line-height: 1.5;
    background: var(--cm-bg, var(--bs-body-bg, #fff));
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
}

details.cm-legendbox:not([open]) > summary[b-9lejrz5yy0] {
    margin-bottom: 0;
}

details.cm-legendbox > summary[b-9lejrz5yy0]::-webkit-details-marker {
    display: none;
}

details.cm-legendbox > summary[b-9lejrz5yy0]::before {
    content: "\25B8";
    display: inline-block;
    transition: transform 0.15s ease;
}

details.cm-legendbox[open] > summary[b-9lejrz5yy0]::before {
    transform: rotate(90deg);
}

.cm-field > label[b-9lejrz5yy0] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 600;
}

.cm-hint[b-9lejrz5yy0] {
    font-size: 0.875em;
    color: var(--cm-muted, #6c757d);
    margin: 0.25rem 0 0.5rem;
}

/* Tour Tab, Date and the buttons on one line, as far as they fit. */
.cm-dispatch-pick[b-9lejrz5yy0] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.5rem 0.75rem;
    margin-bottom: 0.6rem;
}

.cm-dispatch-pick .cm-field[b-9lejrz5yy0] {
    margin-bottom: 0;
}

.cm-dispatch-pick select[b-9lejrz5yy0] {
    width: auto;
    min-width: 12rem;
    max-width: 100%;
}

.cm-dispatch-buttons[b-9lejrz5yy0] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.cm-dispatch-assign[b-9lejrz5yy0] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 0.75rem;
    margin-bottom: 0.75rem;
}

.cm-dispatch-assign .cm-hint[b-9lejrz5yy0] {
    margin: 0;
}

.cm-dispatch-status[b-9lejrz5yy0] {
    margin-bottom: 0.6rem;
    font-weight: 600;
}

.cm-dispatch-done[b-9lejrz5yy0] {
    color: var(--cm-success, #146c43);
}

.cm-dispatch-refused[b-9lejrz5yy0] {
    color: #b02a37;
}

.cm-dispatch-empty[b-9lejrz5yy0] {
    font-style: italic;
    color: var(--cm-muted, #6c757d);
}

.cm-dispatch-hiddenform[b-9lejrz5yy0] {
    display: none;
}

/* The day, then a tab at a time. */
.cm-dispatch-title[b-9lejrz5yy0] {
    font-size: 1.15rem;
    font-weight: 700;
    margin: 0.75rem 0 0.1rem;
}

.cm-dispatch-section[b-9lejrz5yy0] {
    margin-top: 0.9rem;
}

.cm-dispatch-section h4[b-9lejrz5yy0] {
    font-size: 1.05rem;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.cm-dispatch-code[b-9lejrz5yy0] {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0 0.4rem;
    border-radius: 0.25rem;
    font-size: 0.8em;
    letter-spacing: 0.05em;
    background: var(--cm-raised, #ddebf7);
}

.cm-dispatch-scroll[b-9lejrz5yy0] {
    overflow-x: auto;
}

.cm-dispatch-grid[b-9lejrz5yy0] {
    margin-bottom: 0.25rem;
}

.cm-dispatch-grid thead th[b-9lejrz5yy0] {
    white-space: nowrap;
}

.cm-dispatch-grid .cm-num[b-9lejrz5yy0] {
    text-align: right;
    white-space: nowrap;
}

.cm-dispatch-grid .cm-nowrap[b-9lejrz5yy0] {
    white-space: nowrap;
}

/* A tour's two rows read as one: no rule between them, one under the pair. */
.cm-dispatch-tour-row > td[b-9lejrz5yy0] {
    border-bottom-width: 0;
}

.cm-dispatch-riders-row > td[b-9lejrz5yy0] {
    padding-top: 0;
}

.cm-dispatch-buses[b-9lejrz5yy0] {
    min-width: 10.5rem;
}

.cm-dispatch-bus[b-9lejrz5yy0] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    white-space: nowrap;
}

.cm-dispatch-bus-name[b-9lejrz5yy0] {
    font-weight: 700;
    letter-spacing: 0.03em;
}

.cm-dispatch-trash[b-9lejrz5yy0] {
    padding: 0 0.2rem;
    line-height: 1;
}

.cm-dispatch-nobus[b-9lejrz5yy0] {
    display: block;
    font-style: italic;
    color: var(--cm-muted, #6c757d);
}

.cm-dispatch-add[b-9lejrz5yy0] {
    margin-top: 0.3rem;
}

.cm-dispatch-tourname[b-9lejrz5yy0] {
    font-weight: 600;
}

.cm-dispatch-itemnumber[b-9lejrz5yy0] {
    margin-left: 0.35rem;
    font-size: 0.85em;
    color: var(--cm-muted, #6c757d);
}

.cm-dispatch-canceled[b-9lejrz5yy0] {
    margin-left: 0.35rem;
    font-weight: 700;
    color: #b02a37;
    text-transform: uppercase;
    font-size: 0.85em;
}

.cm-dispatch-noriders[b-9lejrz5yy0] {
    font-size: 0.875em;
    font-style: italic;
    color: var(--cm-muted, #6c757d);
}

.cm-dispatch-riders > summary[b-9lejrz5yy0] {
    cursor: pointer;
    font-size: 0.9em;
    font-weight: 600;
}

.cm-dispatch-rider-table[b-9lejrz5yy0] {
    width: auto;
    min-width: 22rem;
    margin: 0.35rem 0 0.25rem;
    font-size: 0.9em;
}

.cm-dispatch-rider-table .cm-num[b-9lejrz5yy0] {
    text-align: right;
}

/* A tour's own packet. */
.cm-dispatch-tour-print[b-9lejrz5yy0] {
    display: inline-block;
    margin-left: 0.5rem;
    font-size: 0.85em;
}
/* /Components/Shared/VendorsTab.razor.rz.scp.css */
/* The Event Profile's Vendors tab (2026-10-16). Its own copy of the profile's legend box, field and grid layout, since the
   profile's scoped styles don't reach a component's markup. */

.cm-section[b-g1xbmkma3u] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-section > legend[b-g1xbmkma3u],
.cm-vendor-box > legend[b-g1xbmkma3u] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

/* A box inside the form - Quote and Contract, Address - lighter than the form's own. */
.cm-vendor-box[b-g1xbmkma3u] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.125));
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem 0.25rem;
    margin-bottom: 0.9rem;
}

.cm-field[b-g1xbmkma3u] {
    margin-bottom: 0.75rem;
}

.cm-field > label[b-g1xbmkma3u] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-field.cm-inline[b-g1xbmkma3u] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.cm-field.cm-inline > label[b-g1xbmkma3u] {
    margin-bottom: 0;
}

/* Date Quoted and Quoted Price side by side, then Must Respond By, then the contract's date and price. */
.cm-vendor-terms[b-g1xbmkma3u] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 1rem;
}

@media (max-width: 575.98px) {
    .cm-vendor-terms[b-g1xbmkma3u] {
        grid-template-columns: 1fr;
    }
}

.cm-vendor-date[b-g1xbmkma3u] {
    max-width: 11rem;
}

.cm-vendor-money[b-g1xbmkma3u] {
    max-width: 9rem;
    text-align: right;
}

.cm-vendor-zip[b-g1xbmkma3u] {
    max-width: 9rem;
}

.cm-vendor-selected[b-g1xbmkma3u] {
    margin-bottom: 0.9rem;
}

.cm-vendor-selected .form-check-label[b-g1xbmkma3u] {
    font-weight: 700;
}

.cm-vendor-type[b-g1xbmkma3u] {
    display: block;
    font-size: 0.8em;
    color: var(--cm-muted, #6c757d);
}

.cm-vendor-selected-badge[b-g1xbmkma3u] {
    margin-left: 0.35rem;
    font-weight: 600;
}

.cm-vendor-upload[b-g1xbmkma3u] {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px dashed var(--cm-border, rgba(0, 0, 0, 0.175));
}

.cm-rowbar[b-g1xbmkma3u] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin: 0.25rem 0 0.5rem;
}

.cm-profilebar[b-g1xbmkma3u] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.cm-grid-scroll[b-g1xbmkma3u] {
    overflow-x: auto;
}

.cm-wrap[b-g1xbmkma3u] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cm-empty[b-g1xbmkma3u] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-hiddenform[b-g1xbmkma3u] {
    display: none;
}

.cm-flag-cell[b-g1xbmkma3u] {
    text-align: center;
    width: 4.5rem;
}

.cm-trash[b-g1xbmkma3u] {
    line-height: 1;
}

tr[data-row-href][b-g1xbmkma3u] {
    cursor: pointer;
}
/* /Components/Shared/VolunteersTab.razor.rz.scp.css */
/* The Event Profile's Volunteers tab (2026-10-30). Its own copy of the profile's legend box, field and grid layout, since the
   profile's scoped styles don't reach a component's markup. The calendar's own look is FullCalendar's, with app.css's
   .cm-volunteer-calendar rules (it draws its markup itself, out of scoped CSS's reach). */

.cm-section[b-n95zn2udxe] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.375rem;
    padding: 0.75rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.cm-section > legend[b-n95zn2udxe],
.cm-volunteer-box > legend[b-n95zn2udxe] {
    float: none;
    width: auto;
    padding: 0 0.4rem;
    margin-bottom: 0.5rem;
    font-size: 1rem;
    font-weight: 700;
}

.cm-volunteer-box[b-n95zn2udxe] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.125));
    border-radius: 0.375rem;
    padding: 0.5rem 0.75rem 0.75rem;
    margin-top: 1rem;
}

.cm-field[b-n95zn2udxe] {
    margin-bottom: 0.75rem;
}

.cm-field > label[b-n95zn2udxe] {
    display: block;
    margin-bottom: 0.15rem;
    font-weight: 700;
}

.cm-volunteer-facts[b-n95zn2udxe] {
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: 1rem;
    row-gap: 0.15rem;
    margin-bottom: 0.75rem;
}

.cm-volunteer-facts dt[b-n95zn2udxe] {
    font-weight: 700;
}

.cm-volunteer-facts dd[b-n95zn2udxe] {
    margin: 0;
}

.cm-volunteer-schedulebar[b-n95zn2udxe] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
    align-items: flex-start;
}

.cm-volunteer-schedulebar .cm-field[b-n95zn2udxe] {
    min-width: 16rem;
}

.cm-volunteer-schedulebar .cm-hint[b-n95zn2udxe] {
    flex: 1 1 24rem;
    margin: 0;
}

.cm-hint[b-n95zn2udxe] {
    font-size: 0.9rem;
    color: var(--cm-muted, #6c757d);
}

.cm-volunteer-days[b-n95zn2udxe] {
    font-weight: 600;
    margin: 0.25rem 0 0.5rem;
}

.cm-volunteer-dialog[b-n95zn2udxe] {
    border: 1px solid var(--cm-border, rgba(0, 0, 0, 0.175));
    border-radius: 0.5rem;
    padding: 1rem 1.25rem;
    min-width: min(26rem, 92vw);
    background: var(--cm-surface, #fff);
    color: var(--cm-text, #1f1f1f);
}

.cm-volunteer-dialog[b-n95zn2udxe]::backdrop {
    background: rgba(0, 0, 0, 0.35);
}

.cm-volunteer-dialog-title[b-n95zn2udxe] {
    font-size: 1.1rem;
    font-weight: 700;
    margin: 0 0 0.25rem;
}

.cm-volunteer-dialog-when[b-n95zn2udxe] {
    margin: 0 0 0.75rem;
}

.cm-rowbar[b-n95zn2udxe] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin: 0.25rem 0 0.5rem;
}

.cm-profilebar[b-n95zn2udxe] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.cm-grid-scroll[b-n95zn2udxe] {
    overflow-x: auto;
}

.cm-wrap[b-n95zn2udxe] {
    white-space: normal;
    overflow-wrap: anywhere;
}

.cm-empty[b-n95zn2udxe] {
    color: var(--cm-muted, #6c757d);
    font-style: italic;
}

.cm-hiddenform[b-n95zn2udxe] {
    display: none;
}

.cm-flag-cell[b-n95zn2udxe] {
    text-align: center;
    width: 4.5rem;
}

.cm-trash[b-n95zn2udxe] {
    line-height: 1;
}

tr[data-row-href][b-n95zn2udxe] {
    cursor: pointer;
}
