/* /Components/Chart/ChartNotePanel.razor.rz.scp.css */
/* Matches ExamNarrativePanel, which is the same panel specialised to the ten exam systems. Kept as
   two files rather than one shared class because the exam panel predates this and its markup is
   driven by ExamNarrative rather than by note sections; the styling is deliberately identical so the
   six tabs and the Physical Exam read as one feature. */

/* Sticky, so it stays put while the form beside it is worked through — legacy's was a table cell
   that scrolled away with the page, which is the one thing about it worth not reproducing. */
.chart-note-panel[b-j5d6c6a6p2] {
    position: sticky;
    top: 1rem;
    border: 1px solid var(--rz-border-color);
    border-radius: var(--rz-border-radius, 4px);
    background: var(--rz-base-background-color);
    padding: 0.75rem 1rem;
}

/* A documented visit is longer than a screen. The panel scrolls inside itself rather than
   lengthening the page, the same rule the dashboard's capped lists follow. */
.chart-note-panel__body[b-j5d6c6a6p2] {
    max-height: calc(100vh - 14rem);
    overflow-y: auto;
    scrollbar-gutter: stable;
}

.chart-note-panel__section + .chart-note-panel__section[b-j5d6c6a6p2] {
    margin-top: 0.75rem;
}

/* Legacy set the heading in smallBold and the prose in small; the prose runs on as a sentence and
   must wrap, since any free-text qualifier can be any length. */
.chart-note-panel__prose[b-j5d6c6a6p2] {
    font-size: 0.875rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
}
/* /Components/Chart/ChartProgressHeader.razor.rz.scp.css */
/* Still compact -- legacy fits this into a few lines above the tabs and spacing it out would push
   the chart itself below the fold -- but no longer the smallest text on the page. This strip is who
   the chart belongs to, and it was set at 13px against 14px body copy, so the one thing a clinician
   must not misread was the hardest thing on the screen to read. Now 16px, and centred. */

.chart-progress[b-1jwojolung] {
    font-size: 1rem;
    line-height: 1.5;
    text-align: center;
}

.chart-progress__line + .chart-progress__line[b-1jwojolung] {
    margin-top: 0.125rem;
}

/* The row's lead-in — legacy's bold "Vitals:", "Chief Complaint:". */
.chart-progress__label[b-1jwojolung] {
    font-weight: 600;
    margin-right: 0.375rem;
}

.chart-progress__part--strong[b-1jwojolung] {
    font-weight: 600;
}

/* Legacy's <font color='#ff0000'>. Not colour alone: everything marked this way is also either a
   labelled value or carries its own hover, so the meaning survives for a reader who cannot separate
   this red from the body text. */
.chart-progress__part--notable[b-1jwojolung] {
    color: var(--rz-danger, #c02626);
}

/* Legacy's "hotspot" class — a dotted underline and a help cursor, so it is visible that there is
   more text behind the hover rather than the reader having to discover it. */
.chart-progress__hover[b-1jwojolung] {
    text-decoration: underline dotted;
    text-underline-offset: 0.15em;
    cursor: help;
}
/* /Components/Chart/ChartTabTitle.razor.rz.scp.css */
/* The completion mark on a chart tab. Sits inside Radzen's own tab title, so it has to lay out as
   text rather than as a block, and it must not change the tab's height when it appears — a tab strip
   that reflows as sections fill in is a strip that moves under the pointer. */

.chart-tab-title[b-iluderoul9] {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    /* Kept on one line. Adding the mark widened every title enough that "Vital Signs" and "Physical
       Exam" wrapped to two rows, which made the whole strip twice as tall and pushed the last tab
       off the end; a strip that scrolls is better than one that reflows. */
    white-space: nowrap;
}

/* Bolder once the section has something in it. The green moved off the label and onto the tick:
   each chart tab now wears its own section's colour, and a green label would have overwritten that
   on exactly the tabs a clinician has already worked in -- so "which section is this" and "has
   anything been entered" would have been the same channel saying two things. The tick carries the
   status, the label carries the identity, and weight carries the status a second time for anyone
   who cannot separate the two greens. */
.chart-tab-title--has-data[b-iluderoul9] {
    font-weight: 600;
}

/* The mark itself is a RadzenIcon, so its colour and size are set in theme.css: scoped styles are
   stamped onto the elements this file's markup declares, and the <i> Radzen renders is not one of
   them -- a rule for it here matches nothing. */
/* /Components/Chart/Discharge/PlanNoteEditor.razor.rz.scp.css */
/* The read-only rendering of a signed chart's plan note. Sized and boxed like the editor it stands
   in for, so a signed chart does not reflow the page compared with an open one. */
.plan-note-readonly[b-exbfabz4lq] {
    min-height: 12rem;
    max-height: 420px;
    overflow-y: auto;
    padding: 0.75rem;
    border: 1px solid var(--rz-border-color);
    border-radius: var(--rz-border-radius, 4px);
    background: var(--rz-base-background-color);
    font-size: 0.9375rem;
    line-height: 1.5;
    overflow-wrap: anywhere;
}
/* /Components/Chart/Exam/BodyIllustration.razor.rz.scp.css */
/* The saved list beside the drawing surface, as legacy laid it out: a doctor compares what they are
   drawing against what is already on the visit. */
.bi[b-v4tbjcoozm] {
    align-items: flex-start;
}

.bi__list[b-v4tbjcoozm] {
    width: 15rem;
    flex: 0 0 15rem;
}

.bi__work[b-v4tbjcoozm] {
    flex: 1 1 auto;
    min-width: 0;
}

.bi__saved[b-v4tbjcoozm] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    border-bottom: 1px solid var(--rz-base-200);
}

.bi__saved button[b-v4tbjcoozm] {
    flex: 1 1 auto;
    text-align: left;
    background: none;
    border: 0;
    padding: 0.35rem 0.25rem;
    cursor: pointer;
    font: inherit;
    color: inherit;
    min-width: 0;
}

.bi__saved.on[b-v4tbjcoozm] {
    background: var(--rz-info-lighter);
}

.bi__title[b-v4tbjcoozm] {
    display: block;
    font-size: 0.84rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bi__when[b-v4tbjcoozm] {
    display: block;
    font-size: 0.72rem;
    opacity: 0.7;
}

.bi__tools[b-v4tbjcoozm] {
    margin-bottom: 0.5rem;
}

/* The drawing surface. A visible border because a white canvas on a white card has no edge, and a
   doctor needs to know where the diagram ends before drawing off it. crosshair, because a pen tip is
   the point of the tool. */
.bi__canvas[b-v4tbjcoozm] {
    display: block;
    max-width: 100%;
    height: auto;
    border: 1px solid var(--rz-base-300);
    border-radius: 4px;
    background: #fff;
    cursor: crosshair;
    touch-action: none;
    margin-bottom: 0.5rem;
}

.bi__view[b-v4tbjcoozm] {
    display: block;
    max-width: 100%;
    height: auto;
    border: 1px solid var(--rz-base-300);
    border-radius: 4px;
    margin-top: 0.5rem;
}

/* Colour swatches. Square and plain: a coloured circle beside a Radzen select bar reads as decoration,
   a bordered square reads as a choice. */
.bi__swatch[b-v4tbjcoozm] {
    width: 1.6rem;
    height: 1.6rem;
    border: 2px solid var(--rz-base-300);
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
}

.bi__swatch.on[b-v4tbjcoozm] {
    border-color: var(--rz-text-color);
    box-shadow: 0 0 0 2px var(--rz-base-100);
}

.bi__swatch:disabled[b-v4tbjcoozm] {
    cursor: default;
    opacity: 0.5;
}
/* /Components/Chart/Exam/ExamNarrativePanel.razor.rz.scp.css */
/* The note panel sits beside ten tabs of findings, so it stays put while the exam is worked
   through — legacy's was a table cell that scrolled away with the page, which is the one thing
   about it worth not reproducing. */
.exam-note[b-z5ksa69krv] {
    position: sticky;
    top: 1rem;
    border: 1px solid var(--rz-border-color);
    border-radius: var(--rz-border-radius, 4px);
    background: var(--rz-base-background-color);
    padding: 0.75rem 1rem;
}

/* Ten systems of prose is longer than a screen. The panel scrolls inside itself rather than
   lengthening the page, the same rule the dashboard's capped lists follow. */
.exam-note__body[b-z5ksa69krv] {
    max-height: calc(100vh - 14rem);
    overflow-y: auto;
    scrollbar-gutter: stable;
}

.exam-note__system + .exam-note__system[b-z5ksa69krv] {
    margin-top: 0.75rem;
}

/* Legacy set the heading in smallBold and the prose in small; the prose runs on as a sentence and
   must wrap, since a finding's free-text qualifier can be any length. */
.exam-note__prose[b-z5ksa69krv] {
    font-size: 0.875rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-vuwelap5yh] {
    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-vuwelap5yh] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-tq5mcnxczd],
.components-reconnect-repeated-attempt-visible[b-tq5mcnxczd],
.components-reconnect-failed-visible[b-tq5mcnxczd],
.components-pause-visible[b-tq5mcnxczd],
.components-resume-failed-visible[b-tq5mcnxczd],
.components-rejoining-animation[b-tq5mcnxczd] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-retrying[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-failed[b-tq5mcnxczd],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-tq5mcnxczd] {
    display: block;
}


#components-reconnect-modal[b-tq5mcnxczd] {
    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-tq5mcnxczd 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-tq5mcnxczd 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-tq5mcnxczd 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-tq5mcnxczd]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-tq5mcnxczd 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-tq5mcnxczd {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-tq5mcnxczd {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-tq5mcnxczd {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-tq5mcnxczd] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-tq5mcnxczd] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-tq5mcnxczd] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-tq5mcnxczd] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-tq5mcnxczd] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-tq5mcnxczd] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-tq5mcnxczd] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-tq5mcnxczd 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-tq5mcnxczd] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-tq5mcnxczd {
    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/Billing/SharedClaimsPage.razor.rz.scp.css */
/* The cross-clinic table. Dense on purpose: a biller scans it for codes, and a shared admission is
   only readable when the same patient's rows sit next to each other on one screen. */
.shc[b-passgn78tk] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

.shc th[b-passgn78tk] {
    text-align: left;
    padding: 0.35rem 0.5rem;
    border-bottom: 2px solid var(--rz-base-300);
    white-space: nowrap;
}

.shc td[b-passgn78tk] {
    padding: 0.3rem 0.5rem;
    border-bottom: 1px solid var(--rz-base-200);
    vertical-align: top;
}

/* This practice's own rows, so a shared admission reads at a glance as "ours and theirs" rather than as
   an undifferentiated list of clinic names. */
.shc tr.own td[b-passgn78tk] {
    background: var(--rz-info-lighter);
}

.shc .tag[b-passgn78tk] {
    margin-left: 0.35rem;
    padding: 0.05rem 0.3rem;
    border-radius: 999px;
    background: var(--rz-base-300);
    font-size: 0.66rem;
    white-space: nowrap;
}

/* A blank line between people in the shared table, which is what makes one patient's several rows read
   as one stay. */
.shc tr.gap td[b-passgn78tk] {
    border-bottom: none;
    height: 0.5rem;
    background: none;
}

.shc .codes[b-passgn78tk] {
    white-space: normal;
}

/* Monospaced, because these are read character by character and a proportional font makes 1 and l the
   same shape. */
.shc .cpt[b-passgn78tk],
.shc .icd[b-passgn78tk] {
    display: block;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.78rem;
}

.shc .icd[b-passgn78tk] {
    opacity: 0.8;
}

/* The address. Street on one line and town/state/zip beneath, because the state is the part a biller
   reads for a Medicaid patient and it should not be buried mid-sentence. */
.shc .addr[b-passgn78tk] {
    max-width: 14rem;
}

.shc .where[b-passgn78tk] {
    display: block;
    opacity: 0.75;
    font-size: 0.76rem;
}

/* The address. Street on one line, town/state/postcode beneath, because the state is the part a biller
   reads for a Medicaid patient and it should not be buried mid-sentence. */
.shc .addr[b-passgn78tk] {
    max-width: 14rem;
}

.shc .where[b-passgn78tk] {
    display: block;
    opacity: 0.75;
    font-size: 0.76rem;
}
/* /Components/Pages/Interop/ImmunizationExportPage.razor.rz.scp.css */
/* The message as it will be sent. Monospaced because HL7 v2 is field-positional to read: a person
   checking a segment counts pipes, and a proportional font makes that impossible. */
.ie-message[b-ri4ydmktpm] {
    margin: 0.5rem 0 0;
    padding: 0.6rem 0.75rem;
    background: var(--rz-base-200);
    border-radius: 4px;
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.75rem;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-all;
    overflow-x: auto;
    max-height: 22rem;
}

/* "none" and "not recorded" in the grid: present as a statement, not as an empty cell that reads like
   a rendering fault. */
.ie-missing[b-ri4ydmktpm] {
    color: var(--rz-text-tertiary-color, #888);
    font-style: italic;
}
/* /Components/Pages/Interop/PatientRecordPage.razor.rz.scp.css */
/* The document as it will be sent. Monospaced and scrollable: somebody checking a C-CDA reads the
   template identifiers and the nesting, both of which a proportional font makes harder. */
.pr-document[b-kuaz4l560q] {
    margin: 0.5rem 0 0;
    padding: 0.6rem 0.75rem;
    background: var(--rz-base-200);
    border-radius: 4px;
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.7rem;
    line-height: 1.5;
    white-space: pre;
    overflow: auto;
    max-height: 30rem;
}
/* /Components/Pages/Interop/QualityMeasuresPage.razor.rz.scp.css */
/* The findings and the steps. Numbered and spaced, because this page exists to be read and acted on
   rather than skimmed. */
.qm-findings[b-1rq3eyymwz] {
    margin: 0.5rem 0 0.75rem;
    padding-left: 1.4rem;
    font-size: 0.85rem;
    line-height: 1.6;
}

.qm-findings li[b-1rq3eyymwz] {
    margin-bottom: 0.5rem;
}
/* /Components/Pages/Patients/LabResults.razor.rz.scp.css */
/* The lab's narrative arrives as HL7 NTE lines: prose broken across segments, already column-aligned
   by the lab for a fixed-width report. Rendering it in a proportional font destroys that alignment,
   which is how a culture's sensitivity table becomes unreadable. */
.lab-report[b-grps5wsn4h] {
    margin: 0;
    padding: 0.5rem 0.75rem;
    background: var(--rz-base-200);
    border-radius: 4px;
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 0.8rem;
    line-height: 1.45;
    white-space: pre-wrap;
    overflow-x: auto;
}

/* A tint rather than coloured text: a flagged row has to be findable by scanning the grid, and
   colouring only the flag column puts the signal in the one place the eye is not travelling. Kept
   light enough that the value itself stays the most legible thing in the row. */
[b-grps5wsn4h] tr.lab-abnormal td {
    background: color-mix(in srgb, var(--rz-warning) 12%, transparent);
}

[b-grps5wsn4h] tr.lab-critical td {
    background: color-mix(in srgb, var(--rz-danger) 14%, transparent);
    font-weight: 600;
}
/* /Components/Pages/Reports/ClaimsReviewPage.razor.rz.scp.css */
/* A tint on the row rather than colour on one cell: a claim past its filing limit has to be findable
   by scanning the grid. Legacy coloured the whole row too, from a hidden column holding the literal
   word "Red" -- the difference is that the row here also carries the words, so the meaning does not
   depend on seeing the colour. */
[b-q134a0vk76] tr.cr-past td {
    background: color-mix(in srgb, var(--rz-danger) 14%, transparent);
}

[b-q134a0vk76] tr.cr-soon td {
    background: color-mix(in srgb, var(--rz-warning) 14%, transparent);
}

/* The two counts that mean money, in the summary strip. */
.cr-lost :last-child[b-q134a0vk76] {
    color: var(--rz-danger);
    font-weight: 700;
}

.cr-due :last-child[b-q134a0vk76] {
    color: var(--rz-warning-dark, var(--rz-warning));
    font-weight: 700;
}
/* /Components/Pages/Reports/PatientListPage.razor.rz.scp.css */
/* Three columns of short facts per patient. A data grid would give each of them a header row and a
   border, which is a lot of chrome for a list of four diagnoses. */
.pl-list[b-usmv3m23w0] {
    margin: 0.25rem 0 0;
    padding-left: 1.1rem;
    font-size: 0.82rem;
    line-height: 1.5;
}

.pl-list li[b-usmv3m23w0] {
    margin-bottom: 0.1rem;
}

/* When a diagnosis was added, kept quiet: it matters for reading the history but should not compete
   with the diagnosis itself. */
.pl-when[b-usmv3m23w0] {
    color: var(--rz-text-tertiary-color, #888);
    font-size: 0.75rem;
}
/* /Components/Pages/Reports/PatientRemindersPage.razor.rz.scp.css */
/* The chart number and age under the name, and the "that field is blank" note under the contact
   preference. Quiet enough not to compete with what the row is for -- a phone number to dial. */
.pr-sub[b-9gsc6eebfi] {
    font-size: 0.72rem;
    color: var(--rz-text-tertiary-color, #888);
}

.pr-warn[b-9gsc6eebfi] {
    font-size: 0.72rem;
    color: var(--rz-warning-dark, var(--rz-warning));
}
