/*!
 * Datetimepicker for Bootstrap 3
 * version : 4.17.47
 * https://github.com/Eonasdan/bootstrap-datetimepicker/
 */.bootstrap-datetimepicker-widget{list-style:none}.bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.bootstrap-datetimepicker-widget.dropdown-menu:before,.bootstrap-datetimepicker-widget.dropdown-menu:after{content:'';display:inline-block;position:absolute}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,0.2);top:-7px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white;top:-6px;left:8px}.bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,0.2);bottom:-7px;left:6px}.bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid white;bottom:-6px;left:7px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.bootstrap-datetimepicker-widget .list-unstyled{margin:0}.bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.bootstrap-datetimepicker-widget .timepicker-hour,.bootstrap-datetimepicker-widget .timepicker-minute,.bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:bold;font-size:1.2em;margin:0}.bootstrap-datetimepicker-widget button[data-action]{padding:6px}.bootstrap-datetimepicker-widget .btn[data-action="incrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Hours"}.bootstrap-datetimepicker-widget .btn[data-action="incrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Increment Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="decrementHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Hours"}.bootstrap-datetimepicker-widget .btn[data-action="decrementMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Decrement Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="showHours"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Hours"}.bootstrap-datetimepicker-widget .btn[data-action="showMinutes"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Show Minutes"}.bootstrap-datetimepicker-widget .btn[data-action="togglePeriod"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle AM/PM"}.bootstrap-datetimepicker-widget .btn[data-action="clear"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Clear the picker"}.bootstrap-datetimepicker-widget .btn[data-action="today"]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Set the date to today"}.bootstrap-datetimepicker-widget .picker-switch{text-align:center}.bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Toggle Date and Time Screens"}.bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.bootstrap-datetimepicker-widget table{width:100%;margin:0}.bootstrap-datetimepicker-widget table td,.bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.bootstrap-datetimepicker-widget table th.disabled,.bootstrap-datetimepicker-widget table th.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Previous Month"}.bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0;content:"Next Month"}.bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.bootstrap-datetimepicker-widget table td.day:hover,.bootstrap-datetimepicker-widget table td.hour:hover,.bootstrap-datetimepicker-widget table td.minute:hover,.bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.bootstrap-datetimepicker-widget table td.old,.bootstrap-datetimepicker-widget table td.new{color:#777}.bootstrap-datetimepicker-widget table td.today{position:relative}.bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,0.2);position:absolute;bottom:4px;right:4px}.bootstrap-datetimepicker-widget table td.active,.bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.bootstrap-datetimepicker-widget table td.disabled,.bootstrap-datetimepicker-widget table td.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.bootstrap-datetimepicker-widget table td span:hover{background:#eee}.bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.bootstrap-datetimepicker-widget table td span.old{color:#777}.bootstrap-datetimepicker-widget table td span.disabled,.bootstrap-datetimepicker-widget table td span.disabled:hover{background:none;color:#777;cursor:not-allowed}.bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.bootstrap-datetimepicker-widget.wider{width:21em}.bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em !important}.input-group.date .input-group-addon{cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}ux-dialog-body#an-emailer {
    background-color: #F4F4F4 !important;
}

#an-email-container {
    height: 100%;
    display: grid;
    grid-template-areas:
        "top top"
        "nav body"
        ". body";
    grid-template-rows: min-content minmax(0, 80vh) 1fr;
    grid-template-columns: min-content 1fr;
}

#an-email-container>div {
    height: 100%;
    grid-area: body;
}

#an-email-container .an-email-container-left,
#an-email-container .an-email-container-right {
    display: flex;
    flex-direction: column;
    width: 270px;
    height: 100%;
    padding: 1.5em;
}

#an-email-container .an-email-container-left {
    background-color: #fff;
    box-shadow: 0 0 12px rgba(36, 28, 21, .12);
    -webkit-box-shadow: 0 0 12px rgb(36 28 21 / 12%);
}

#an-email-container .an-email-container-align button.active {
    border-color: #4A8A9E;
    background-color: #083549;
    color: #fff !important;
}

#an-email-container .an-email-container-right {
    background-color: #fff;
    box-shadow: -8px 0px 12px -7px rgb(36 28 21 / 12%);
    -webkit-box-shadow: -8px 0px 12px -7px rgb(36 28 21 / 12%);
}

#an-email-container .an-email-content {
    overflow-y: auto;
    height: calc(100vh - 250px);
}

#an-email-container .an-email-content hr {
    margin: 0;
    padding: 0;
}

#an-email-container .an-email-content-editor {
    background-color: #fff;
    font-family: Arial, Calibri;
    font-size: 11pt;
    width: 660px;
    height: auto;
    margin: 0 auto;
    padding: 19.5px 13px;
    overflow-y: hidden;
}

#an-email-container .an-email-content-editor-item {
    position: relative;
}

#an-email-container .an-email-content-editor-item .draggable {
    opacity: 0.5;
}

#an-email-container .an-email-content-editor-item .draggable:hover {
    opacity: 1;
}

#an-email-container .an-email-content-editor-item>td:hover {
    cursor: move;
}

#an-email-container .an-email-content-editor-item .fr-element:hover {
    cursor: text;
}

#an-email-container .an-email-content-editor-item>td:hover img {
    cursor: pointer;
}

#an-email-container .an-email-editor-block-control {
    display: none;
    position: absolute;
    justify-content: end;
    width: 100%;
    max-width: 150px;
    z-index: 4;
    right: 0;
    margin-left: auto;
    top: -18px;
}

#an-email-container .an-email-editor-add {
    display: none;
    position: absolute;
    z-index: 1;
}

#an-email-container .an-email-editor-add.end {
    bottom: -1.15em;
}

#an-email-container .an-email-editor-add.start {
    top: -1em;
}

#an-email-container .an-email-content-editor-item-inner-content {
    position: relative;
    color: initial;
}

#an-email-container .an-email-content-editor-item-inner.block-error {
    border-bottom: 1px solid red;
}

#an-email-container .an-email-content-editor-item-inner:not(.editing):hover,
#an-email-container .an-email-content-editor-item-inner.active,
#an-email-container .an-email-content-editor-item-inner-content-none {
    border-top: 1px solid #4A8A9E;
    border-bottom: 1px solid #4A8A9E;
}

#an-email-container .an-email-content-editor-item-inner .an-email-editor-delete,
#an-email-container .an-email-content-editor-item-inner .an-email-editor-edit,
#an-email-container .an-email-content-editor-item-inner .an-email-editor-close {
    z-index: 1;
    background: white;
    padding: 5px;
    border-radius: 10px;
    border: 1px solid gray;
}

#an-email-container .an-email-content-editor-item-inner .an-email-editor-edit {
    right: 20px;
}

#an-email-container .an-email-content-editor-item-inner:not(.editing):hover .an-email-editor-add {
    display: flex;
    justify-content: center;
    left: 0;
}

#an-email-container .an-email-content-editor-item-inner:not(.editing):hover .an-email-editor-block-control,
#an-email-container .an-email-content-editor-item-inner.editing .an-email-editor-block-control {
    display: flex;
    animation: fadeInControl .3s;
}

#an-email-container .an-email-content-editor-item-inner.editing .an-email-editor-block-control .an-email-editor-delete {
    display: none;
}

#an-email-container .an-email-content-editor-item .an-email-editor-submit {
    color: #fff;
    padding: 0.75em;
}

#an-email-container .an-email-content-editor-item .an-email-editor-submit svg {
    font-size: 1.3em;
}

#an-email-container .an-email-editor-image {
    width: fit-content;
    padding: 10px;
    border: 1px solid transparent;
}

#an-email-container .an-email-editor-image.active,
#an-email-container .an-email-editor-image:hover {
    border: 1px solid #4A8A9E;
    border-radius: 5px;
}

#an-email-container .an-email-editor-image svg {
    padding: 0 10px;
    height: 100%;
}

#an-email-container .an-email-empty::before {
    position: relative;
    color: rgba(0, 0, 0, 0.2);
    content: "Add some text";
    cursor: text;
}

.an-email-content-editor-item-inner-content-p h1 {
    margin: inherit;
    font-size: inherit;
    font-family: inherit;
    font-weight: inherit;
    line-height: inherit;
    color: inherit;
}

.an-email-content-editor-item-inner-content-p p {
    margin-bottom: inherit;
    word-break: break-word;
}

.resizable {
    display: inline-block;
    background: inherit;
    resize: both;
    overflow: hidden;
    line-height: 0;
    max-width: 630px;
}

.an-email-content-editor-item-inner-content .resizable.resizable-twocol {
    max-width: 280px;
}

.resizable img {
    max-width: 630px;
    width: 100%;
    height: auto;
}

ux-dialog-overlay+ux-dialog-container>div>div {
    width: 100%;
}

@keyframes fadeInControl {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}
/* ==========================================================================
   Assistant (Portal + Admin)

   One launcher and one panel, shared by both areas. Uses the client `--brand`
   accent where one is set and falls back to the portal primary, so the
   assistant looks like part of each school's site rather than a bolted-on
   widget. The OPEN panel sits above Bootstrap modals' backdrop tier but below
   toasts (1080), so a toast can still be read while it is open; the launcher at
   rest sits below every overlay (see .an-assist-launcher).

   PALETTE: every colour resolves through a local token with a literal fallback,
   because the assistant renders on both themes and only one of them defines the
   --an-* set. StyleManager.themeForPath returns 'old' for every admin route, which
   loads styles.css and NOT new-portal-styles.css -- so on the Admin surface the
   portal tokens are simply undefined. Without these fallbacks the admin panel
   renders with no background and no accent. The literals mirror the :root values
   in new-portal-styles.css, so the two surfaces look the same.
   ========================================================================== */

.an-assist-launcher,
.an-assist-panel {
    /* Client brand accent first, portal primary next, literal last. */
    --an-assist-accent: var(--an-maroon-color, var(--an-color-primary, #4f46e5));
    --an-assist-on-accent: var(--an-color-on-dark, #ffffff);
    --an-assist-surface: var(--an-white-color, #ffffff);
    --an-assist-text: var(--an-color-on-light, #212529);
    --an-assist-muted: var(--an-color-muted, rgba(33, 37, 41, 0.75));
    --an-assist-border: var(--an-color-border-subtle, rgba(0, 0, 0, 0.1));
    --an-assist-tint-1: var(--an-bg-gray-1-color, #eceeee);
    --an-assist-tint-2: var(--an-bg-gray-2-color, #f6f6f7);
}

.an-assist-launcher {
    position: fixed;
    right: 1.25rem;
    bottom: 1.25rem;
    /* At rest the launcher is ambient chrome, so it sits UNDER every overlay rather than
       over them. Lifted to 1055 by .is-open below, where it has to clear its own backdrop.

       1025, and specifically below 1030 -- not merely below the overlays' own values.
       An overlay's z-index only counts inside the stacking context it is mounted in, and
       the portal mounts some of them inside the header: <mini-cart> renders its offcanvas
       within .an-header-stack on desktop (sticky, z-index 1030) and within nav.fixed-top
       on mobile (Bootstrap, 1030). Both create stacking contexts, and Bootstrap 5 inserts
       an offcanvas backdrop beside its drawer (rootElement: parentNode), so the basket
       drawer, its 1045 and its dimmed backdrop all resolve to 1030 at page level. At 1035
       the launcher still painted over the Checkout button despite clearing 1045 on paper.

       Still above Bootstrap's sticky-top (1020) and dropdowns (1000). Body-mounted
       overlays -- aurelia-dialog (1040, main.ts), modals, other offcanvases -- are higher
       still. The rule further down, which hides the launcher while any drawer or modal is
       open, is what makes this independent of where an overlay happens to be mounted;
       this tier is the fallback for browsers without :has(). */
    z-index: 1025;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 3.25rem;
    height: 3.25rem;
    padding: 0;

    border: none;
    border-radius: 50%;
    background: var(--an-assist-accent);
    color: var(--an-assist-on-accent);
    font-size: 1.25rem;
    line-height: 1;

    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.22);
    transition: transform 0.15s ease, box-shadow 0.15s ease, filter 0.15s ease;
}

.an-assist-launcher:hover,
.an-assist-launcher:focus-visible {
    filter: brightness(0.92);
    box-shadow: 0 8px 26px rgba(0, 0, 0, 0.28);
    transform: translateY(-1px);
}

.an-assist-launcher.is-open {
    /* Reads as "pressed" while the panel is open. */
    filter: brightness(0.85);
    transform: none;
    /* Above the assistant's own backdrop (1054); see .an-assist-backdrop. */
    z-index: 1055;
}

/* Out of the way of bottom-docked page controls.

   Layering beneath these is not enough: they are short bars, not full-height drawers,
   so a launcher layered beneath would poke a half-circle out above the top edge of each one. It
   is hidden instead, while the thing it would collide with is on screen:

     .an-checkout-sticky-bar  shop checkout -- terms checkbox and Place Order
     .an-mobile-summary       event detail -- ticket total and Book
     .an-event-spotlight      feed promo card, docked to this same corner

   The two bars are d-lg-none, so their rule is scoped to the same breakpoint: above it
   they are still in the DOM (display:none), and an unscoped :has() would hide the
   launcher on desktop for no reason. Both bars are if.bind-rendered, so outside those
   pages they are absent and nothing matches.

   visibility rather than display: it also drops the button from the tab order and the
   accessibility tree, and Ctrl/Cmd-J still opens the panel from the keyboard.
   :not(.is-open) so an already-open assistant never loses its close affordance.
   Browsers without :has() ignore these rules and keep today's overlap -- the overlay
   fix above does not depend on them. */
@media (max-width: 991.98px) {
    body:has(.an-checkout-sticky-bar, .an-mobile-summary) .an-assist-launcher:not(.is-open) {
        visibility: hidden;
    }
}

body:has(.an-event-spotlight.is-visible) .an-assist-launcher:not(.is-open) {
    visibility: hidden;
}

/* Out of the way of any open drawer or modal, wherever it is mounted.

   Layering alone cannot guarantee this: a z-index tier is only as good as the stacking
   context each overlay ends up in, and several portal drawers live inside components
   (the basket inside the header, filter drawers inside list pages). Keying off the
   overlay's own open state sidesteps that entirely. .showing / .hiding cover Bootstrap
   5's transition classes, so the launcher is gone before the drawer slides over it and
   does not reappear until the drawer has left. ux-dialog-container is aurelia-dialog,
   present only while a dialog is open. */
body:has(.offcanvas.show, .offcanvas.showing, .offcanvas.hiding, .modal.show, ux-dialog-container) .an-assist-launcher:not(.is-open) {
    visibility: hidden;
}

/* Click-anywhere-to-dismiss, made visible.

   Sits at 1054 -- directly under the open launcher and panel (1055) and above everything
   the page itself puts on top, including the portal search dropdown and the contact
   overlay (both 1050), so those dim with the rest rather than punching through.

   The launcher stays ABOVE it deliberately: it keeps its accent and its pressed state
   while the panel is open, and clicking it runs toggle() rather than being swallowed.
   Either way the panel closes, but only this way does the button still look live.

   Deliberately NOT a modal: no scroll lock and no focus trap, so the panel stays
   `aria-modal="false"` honestly -- the page behind remains reachable and working, and
   a click there dismisses rather than being blocked. It also keeps the case in
   openRow() where downloading an invoice PDF leaves the panel open. Neutral black
   rather than the brand accent, because a scrim should recede, not decorate. */
.an-assist-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1054;
    background: rgba(0, 0, 0, 0.2);
    animation: an-assist-backdrop-in 0.15s ease-out;
}

@keyframes an-assist-backdrop-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.an-assist-panel {
    position: fixed;
    right: 1.25rem;
    bottom: 5.25rem;
    z-index: 1055;

    display: flex;
    flex-direction: column;

    /* Width is driven by a token so the wide variant below can change it without
       fighting the mobile rule, which overrides `width` directly. */
    --an-assist-width: 30rem;
    --an-assist-max-h: 34rem;

    width: min(var(--an-assist-width), calc(100vw - 2.5rem));
    /* Bounded so a long result scrolls inside the panel rather than growing it
       past the viewport on short screens. */
    max-height: min(var(--an-assist-max-h), calc(100vh - 8rem));

    background: var(--an-assist-surface);
    border: 1px solid var(--an-assist-border);
    border-radius: 0.75rem;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);
    overflow: hidden;
}

/* A result table gets a wider panel. Aged debtors is seven columns of money and a
   name; at the conversational 30rem that is mostly horizontal scrolling. The cap
   against the viewport still applies, so this only widens where there is room. */
.an-assist-panel.is-wide {
    --an-assist-width: 58rem;
    /* Taller too, so the capped table wrapper actually gets its 24rem. Set as a
       token, not `max-height`, so the mobile rule below still wins. */
    --an-assist-max-h: 44rem;
}

.an-assist-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;

    padding: 0.75rem 1rem;
    background: var(--an-assist-accent);
    color: var(--an-assist-on-accent);
}

.an-assist-heading {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
}

.an-assist-close {
    border: none;
    background: transparent;
    color: inherit;
    padding: 0.25rem;
    line-height: 1;
    opacity: 0.85;
}

.an-assist-close:hover {
    opacity: 1;
}

.an-assist-form {
    display: flex;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--an-assist-border);
}

.an-assist-input {
    flex: 1 1 auto;
    min-width: 0;
}

.an-assist-submit {
    flex: 0 0 auto;
    min-width: 2.5rem;

    border: none;
    border-radius: 0.375rem;
    background: var(--an-assist-accent);
    color: var(--an-assist-on-accent);
}

.an-assist-submit:disabled {
    opacity: 0.5;
}

.an-assist-body {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 0.875rem 1rem 1rem;
}

.an-assist-hint {
    margin: 0 0 0.5rem;
    font-size: 0.8125rem;
    color: var(--an-assist-muted);
}

.an-assist-chip {
    display: inline-block;
    margin: 0 0.375rem 0.375rem 0;
    padding: 0.3125rem 0.625rem;

    border: 1px solid var(--an-assist-border);
    border-radius: 999px;
    background: var(--an-assist-tint-2);
    color: var(--an-assist-text);
    font-size: 0.8125rem;
    text-align: left;
}

.an-assist-chip:hover {
    border-color: var(--an-assist-accent);
    color: var(--an-assist-accent);
}

/* What matched and how confidently. Deliberately prominent: a visible score is
   what lets someone spot a wrong match instead of trusting a wrong number. */
.an-assist-match {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-bottom: 0.5rem;
}

.an-assist-match-title {
    font-weight: 600;
}

.an-assist-match-period {
    font-size: 0.8125rem;
    color: var(--an-assist-muted);
}

.an-assist-match-score {
    margin-left: auto;
    padding: 0.125rem 0.4375rem;
    border-radius: 999px;
    background: var(--an-assist-tint-1);
    font-size: 0.75rem;
    color: var(--an-assist-muted);
}

.an-assist-source {
    margin-bottom: 0.625rem;
    font-size: 0.75rem;
    color: var(--an-assist-muted);
}

.an-assist-source code {
    color: inherit;
}

/* Wide result sets scroll inside their own container so the panel never scrolls
   sideways.

   The height cap is what makes the horizontal scrollbar usable. With overflow-x
   alone the wrapper grows to the full height of the table, so its horizontal
   scrollbar renders below every row -- with 200 results you had to scroll the panel
   to the very bottom before you could scroll right. Bounding the height and letting
   the wrapper own both axes keeps that scrollbar pinned to the bottom of the
   visible box, next to the rows it scrolls. */
.an-assist-table-wrap {
    overflow: auto;
    max-height: min(24rem, 55vh);
    overscroll-behavior: contain;
}

.an-assist-table {
    font-size: 0.8125rem;
    white-space: nowrap;
    margin-bottom: 0;
}

/* The wrapper now scrolls vertically, so the header has to stay put or you lose
   track of which money column you are reading. */
.an-assist-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--an-assist-surface);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .13em;
}

.an-assist-truncated {
    margin: 0.5rem 0 0;
    font-size: 0.75rem;
    color: var(--an-assist-muted);
}

.an-assist-documents {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.an-assist-document {
    display: block;
    width: 100%;
    padding: 0.625rem 0.75rem;

    border: 1px solid var(--an-assist-border);
    border-radius: 0.5rem;
    background: var(--an-assist-surface);
    text-align: left;
}

.an-assist-document:hover {
    border-color: var(--an-assist-accent);
    background: var(--an-assist-tint-2);
}

.an-assist-document-title {
    display: block;
    font-weight: 600;
    font-size: 0.875rem;
}

.an-assist-document-snippet {
    display: block;
    margin-top: 0.1875rem;
    font-size: 0.8125rem;
    color: var(--an-assist-muted);
}

.an-assist-empty {
    font-size: 0.875rem;
    color: var(--an-assist-muted);
}

.an-assist-reset {
    margin-top: 0.875rem;
    padding: 0;
    border: none;
    background: none;
    color: var(--an-assist-accent);
    font-size: 0.8125rem;
    text-decoration: underline;
}

/* On phones the panel is a sheet: a floating card that narrow would be unusable
   for a results table. */
@media (max-width: 575.98px) {
    .an-assist-panel {
        right: 0;
        left: 0;
        bottom: 0;
        width: 100%;
        max-height: 80vh;
        border-radius: 0.75rem 0.75rem 0 0;
        border-left: none;
        border-right: none;
        border-bottom: none;
    }

    .an-assist-launcher {
        right: 1rem;
        bottom: 1rem;
    }

    /* A sheet at 80vh reads as modal whether or not it is one, so the scrim carries
       its usual weight here. On desktop the panel is a corner popover and the same
       dimming would be overbearing. */
    .an-assist-backdrop {
        background: rgba(0, 0, 0, 0.4);
    }
}

@media (prefers-reduced-motion: reduce) {
    .an-assist-launcher {
        transition: none;
    }

    .an-assist-launcher:hover,
    .an-assist-launcher:focus-visible {
        transform: none;
    }

    .an-assist-backdrop {
        animation: none;
    }
}

/* Clickable result rows. Only rows whose intent declared a link get the affordance --
   a hover state on a dead row is worse than none, because it promises something. */
.an-assist-table tbody tr.is-clickable {
    cursor: pointer;
}

.an-assist-table tbody tr.is-clickable:hover td {
    background: var(--an-assist-tint-2);
}

.an-assist-table tbody tr.is-clickable:focus-visible td {
    outline: 2px solid var(--an-assist-accent);
    outline-offset: -2px;
}

.an-assist-table tbody tr.is-clickable.is-busy td {
    color: var(--an-assist-muted);
}

/* "Open billing documents ->" under the table: the row opens one record, this
   actions the whole set. */
.an-assist-result-link {
    display: inline-flex;
    align-items: center;
    gap: 0.125rem;

    margin-top: 0.625rem;
    padding: 0;

    border: none;
    background: none;
    color: var(--an-assist-accent);
    font-size: 0.8125rem;
    font-weight: 600;
}

.an-assist-result-link:hover {
    text-decoration: underline;
}
.an-forum-page {
    background: #f5f5f7;
    min-height: 80vh;
}

.an-forum-topic-card {
    border-radius: 0.75rem;
    transition: box-shadow 0.15s;
}

.an-forum-topic-card:hover {
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.1) !important;
}

.an-forum-topic-title {
    color: #212529;
}

.an-forum-topic-title:hover {
    color: var(--bs-primary);
}

.an-forum-avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: #dee2e6;
    color: #495057;
    font-size: 0.85rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
}

.min-width-0 {
    min-width: 0;
}

.an-forum-detail {
    background: #f5f5f7;
    min-height: 80vh;
}

.an-forum-detail-card {
    border-radius: 1.25rem;
}

.an-forum-body {
    font-size: 1rem;
    line-height: 1.7;
    color: #333;
}

.an-forum-detail-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: #dee2e6;
    color: #495057;
    font-size: 0.9rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
}

.an-forum-comments {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.an-comment-item {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    background: #f8f9fa;
    border-radius: 0.625rem;
    padding: 0.75rem 1rem;
}

.comment-avatar {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #dee2e6;
    color: #495057;
    font-size: 0.8rem;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
}

.comment-body {
    flex: 1;
    min-width: 0;
}

.comment-meta {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
    flex-wrap: wrap;
}

.comment-author {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #212529;
}

.comment-date {
    font-size: 0.75rem;
    color: #adb5bd;
}

.comment-text {
    font-size: 0.875rem;
    color: #495057;
    line-height: 1.5;
}

.btn-xs {
    padding: 0.15rem 0.4rem;
    font-size: 0.75rem;
}

.ws-pre-line {
    white-space: pre-line;
}

@media (max-width: 991.98px) {
    .an-forum-detail-card {
        border-radius: 0.75rem;
    }
}
.toast-title {
  font-weight: bold;
}
.toast-message {
  -ms-word-wrap: break-word;
  word-wrap: break-word;
}
.toast-message a,
.toast-message label {
  color: #FFFFFF;
}
.toast-message a:hover {
  color: #CCCCCC;
  text-decoration: none;
}
.toast-close-button {
  position: relative;
  right: -0.3em;
  top: -0.3em;
  float: right;
  font-size: 20px;
  font-weight: bold;
  color: #FFFFFF;
  -webkit-text-shadow: 0 1px 0 #ffffff;
  text-shadow: 0 1px 0 #ffffff;
  opacity: 0.8;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  filter: alpha(opacity=80);
  line-height: 1;
}
.toast-close-button:hover,
.toast-close-button:focus {
  color: #000000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.4;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
  filter: alpha(opacity=40);
}
.rtl .toast-close-button {
  left: -0.3em;
  float: left;
  right: 0.3em;
}
/*Additional properties for button version
 iOS requires the button element instead of an anchor tag.
 If you want the anchor version, it requires `href="#"`.*/
button.toast-close-button {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.toast-top-center {
  top: 0;
  right: 0;
  width: 100%;
}
.toast-bottom-center {
  bottom: 0;
  right: 0;
  width: 100%;
}
.toast-top-full-width {
  top: 0;
  right: 0;
  width: 100%;
}
.toast-bottom-full-width {
  bottom: 0;
  right: 0;
  width: 100%;
}
.toast-top-left {
  top: 12px;
  left: 12px;
}
.toast-top-right {
  top: 12px;
  right: 12px;
}
.toast-bottom-right {
  right: 12px;
  bottom: 12px;
}
.toast-bottom-left {
  bottom: 12px;
  left: 12px;
}
#toast-container {
  position: fixed;
  z-index: 999999;
  pointer-events: none;
  /*overrides*/
}
#toast-container * {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
#toast-container > div {
  position: relative;
  pointer-events: auto;
  overflow: hidden;
  margin: 0 0 6px;
  padding: 15px 15px 15px 50px;
  width: 300px;
  -moz-border-radius: 3px 3px 3px 3px;
  -webkit-border-radius: 3px 3px 3px 3px;
  border-radius: 3px 3px 3px 3px;
  background-position: 15px center;
  background-repeat: no-repeat;
  -moz-box-shadow: 0 0 12px #999999;
  -webkit-box-shadow: 0 0 12px #999999;
  box-shadow: 0 0 12px #999999;
  color: #FFFFFF;
  opacity: 0.8;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  filter: alpha(opacity=80);
}
#toast-container > div.rtl {
  direction: rtl;
  padding: 15px 50px 15px 15px;
  background-position: right 15px center;
}
#toast-container > div:hover {
  -moz-box-shadow: 0 0 12px #000000;
  -webkit-box-shadow: 0 0 12px #000000;
  box-shadow: 0 0 12px #000000;
  opacity: 1;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
  filter: alpha(opacity=100);
  cursor: pointer;
}
#toast-container > .toast-info {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-error {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}
#toast-container > .toast-success {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}
#toast-container > .toast-warning {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}
#toast-container.toast-top-center > div,
#toast-container.toast-bottom-center > div {
  width: 300px;
  margin-left: auto;
  margin-right: auto;
}
#toast-container.toast-top-full-width > div,
#toast-container.toast-bottom-full-width > div {
  width: 96%;
  margin-left: auto;
  margin-right: auto;
}
.toast {
  background-color: #030303;
}
.toast-success {
  background-color: #51A351;
}
.toast-error {
  background-color: #BD362F;
}
.toast-info {
  background-color: #2F96B4;
}
.toast-warning {
  background-color: #F89406;
}
.toast-progress {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 4px;
  background-color: #000000;
  opacity: 0.4;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
  filter: alpha(opacity=40);
}
/*Responsive Design*/
@media all and (max-width: 240px) {
  #toast-container > div {
    padding: 8px 8px 8px 50px;
    width: 11em;
  }
  #toast-container > div.rtl {
    padding: 8px 50px 8px 8px;
  }
  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
  #toast-container .rtl .toast-close-button {
    left: -0.2em;
    right: 0.2em;
  }
}
@media all and (min-width: 241px) and (max-width: 480px) {
  #toast-container > div {
    padding: 8px 8px 8px 50px;
    width: 18em;
  }
  #toast-container > div.rtl {
    padding: 8px 50px 8px 8px;
  }
  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
  #toast-container .rtl .toast-close-button {
    left: -0.2em;
    right: 0.2em;
  }
}
@media all and (min-width: 481px) and (max-width: 768px) {
  #toast-container > div {
    padding: 15px 15px 15px 50px;
    width: 25em;
  }
  #toast-container > div.rtl {
    padding: 15px 50px 15px 15px;
  }
}

/*# sourceMappingURL=app.ac6ff525b734f73acfb4.bundle.map*/