/* /Components/AddMedicationDialog.razor.rz.scp.css */
/* Nimbus Add Medication panel — inline, 2-column, live calc.
   Rendered directly below the take-home list so prescriptions stay visible. */

@keyframes nmd-expand-b-ep9rof02cb {
    from { opacity: 0; transform: translateY(-6px); max-height: 0; }
    to   { opacity: 1; transform: translateY(0);   max-height: 1600px; }
}

.nmd-panel[b-ep9rof02cb] {
    margin: 12px 20px 20px;
    background: var(--color-canvas);
    border-radius: var(--radius-lg); border: 1px solid rgba(0, 102, 204, 0.18);
    box-shadow: var(--shadow-product);
    display: flex; flex-direction: column; overflow: hidden;
    animation: nmd-expand-b-ep9rof02cb 260ms cubic-bezier(0.16,1,0.3,1);
}

.nmd-header[b-ep9rof02cb] {
    padding: 16px 24px; border-bottom: 1px solid rgba(0, 102, 204,0.10);
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.nmd-crumb[b-ep9rof02cb] {
    font-size: 0.7rem; color: var(--fg-muted);
    display: flex; align-items: center; gap: 6px; margin-bottom: 4px;
    text-transform: uppercase; letter-spacing: 0.07em; font-weight: 600;
}
.nmd-sep[b-ep9rof02cb] { opacity: 0.4; }
.nmd-title[b-ep9rof02cb] { margin: 0; font-size: 20px; color: var(--color-ink); letter-spacing: -0.015em; font-weight: 700; }

.nmd-header-right[b-ep9rof02cb] { display: flex; align-items: center; gap: 10px; }
.nmd-pet-chip[b-ep9rof02cb] {
    display: flex; align-items: center; gap: 8px;
    padding: 5px 10px 5px 5px; border-radius: var(--radius-pill);
    background: rgba(0, 102, 204,0.08); border: 1px solid rgba(0, 102, 204,0.18);
}
.nmd-pet-av[b-ep9rof02cb] {
    width: 24px; height: 24px; border-radius: 50%;
    background: linear-gradient(135deg, var(--st-purple-fg), var(--st-purple-fg)); color: white;
    font-size: 13px; display: inline-flex; align-items: center; justify-content: center;
}
.nmd-pet-name[b-ep9rof02cb] { font-size: 12.5px; font-weight: 600; color: var(--color-ink); }
.nmd-pet-weight[b-ep9rof02cb] { font-size: 11px; color: var(--color-ink-muted-48); font-family: var(--font-mono); }

.nmd-body[b-ep9rof02cb] {
    padding: 20px 24px;
    display: grid; grid-template-columns: 340px 1fr; gap: 20px;
}
.nmd-left[b-ep9rof02cb] { min-width: 0; }
.nmd-right[b-ep9rof02cb] { min-width: 0; border-left: 1px solid rgba(0, 102, 204,0.10); padding-left: 20px; }

.nmd-loading[b-ep9rof02cb], .nmd-empty[b-ep9rof02cb] {
    color: var(--color-ink-muted-48); font-size: 12px;
    padding: 8px 10px;
}

.nmd-results[b-ep9rof02cb] {
    margin-top: 8px; display: flex; flex-direction: column; gap: 4px;
    max-height: 240px; overflow: auto;
}
.nmd-result[b-ep9rof02cb] {
    text-align: left; padding: 9px 11px; border-radius: var(--radius-md); cursor: pointer;
    background: white; border: 1px solid rgba(0, 102, 204,0.14);
    font-family: inherit;
}
.nmd-result:hover[b-ep9rof02cb] { background: rgba(0, 102, 204,0.04); }
.nmd-result-name[b-ep9rof02cb] { font-size: 12.5px; font-weight: 600; color: var(--color-ink); }
.nmd-result-sub[b-ep9rof02cb] { font-size: 10.5px; color: var(--color-ink-muted-48); margin-top: 2px; font-family: var(--font-mono); }
.nmd-result-dot[b-ep9rof02cb] { opacity: 0.4; margin: 0 4px; }

.nmd-picked[b-ep9rof02cb] {
    margin-top: 8px; padding: 10px 12px; border-radius: var(--radius-md);
    background: rgba(0, 102, 204,0.08); border: 1px solid rgba(0, 102, 204,0.2);
    display: flex; align-items: center; gap: 10px;
}
.nmd-picked-left[b-ep9rof02cb] { flex: 1; min-width: 0; }

.nmd-rule-section[b-ep9rof02cb] { margin-top: 18px; }
.nmd-rules[b-ep9rof02cb] { display: flex; flex-direction: column; gap: 5px; margin-top: 6px; }
.nmd-rule[b-ep9rof02cb] {
    text-align: left; padding: 9px 11px; border-radius: var(--radius-md); cursor: pointer;
    background: white; border: 1px solid rgba(0, 102, 204,0.14); font-family: inherit;
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.nmd-rule:hover:not(.nmd-rule-active)[b-ep9rof02cb] { background: rgba(0, 102, 204,0.04); }
.nmd-rule-active[b-ep9rof02cb] { background: rgba(0, 102, 204,0.08); border: 1.5px solid rgba(0, 102, 204,0.5); }
.nmd-rule-left[b-ep9rof02cb] { min-width: 0; flex: 1; }
.nmd-rule-ind[b-ep9rof02cb] { font-size: 12.5px; font-weight: 600; color: var(--color-ink); }
.nmd-rule-sub[b-ep9rof02cb] { font-size: 10.5px; color: var(--color-ink-muted-48); margin-top: 2px; font-family: var(--font-mono); }

.nmd-rule-oneoff[b-ep9rof02cb] {
    padding: 10px 12px; border-radius: var(--radius-md);
    background: rgba(178, 93, 0,0.08); border: 1px solid rgba(178, 93, 0,0.25);
    font-size: 11.5px; color: var(--color-warning); margin-top: 6px;
}
.nmd-oneoff-ta[b-ep9rof02cb] { margin-top: 8px; font-size: 12px; }

/* Severity glyph inside the global .tone badge (a text glyph, not an svg). */
.nmd-sev-icon[b-ep9rof02cb] { font-size: 11px; line-height: 1; }

/* Inputs */
.nmd-inputs[b-ep9rof02cb] { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 12px; }
.nmd-input-col[b-ep9rof02cb] { min-width: 0; }
.nmd-input-row[b-ep9rof02cb] { display: flex; gap: 6px; align-items: stretch; }
.nmd-input-row .inp[b-ep9rof02cb] { flex: 1; }
.nmd-unit-chip[b-ep9rof02cb] {
    padding: 0 10px; display: inline-flex; align-items: center;
    font-size: 11.5px; font-family: var(--font-mono); color: var(--color-ink-muted-48);
    background: rgba(0, 102, 204,0.05); border: 1px solid rgba(0, 102, 204,0.15);
    border-radius: var(--radius-md);
}
.nmd-mono[b-ep9rof02cb] { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }

.nmd-section-spaced[b-ep9rof02cb] { margin-top: 18px; }
.nmd-req[b-ep9rof02cb] { color: var(--color-danger); font-weight: 700; }
.nmd-opt[b-ep9rof02cb] { font-size: 10px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--color-ink-muted-48); }

/* Warnings */
.nmd-warnings[b-ep9rof02cb] { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.nmd-warn[b-ep9rof02cb] {
    padding: 7px 11px; border-radius: var(--radius-sm);
    display: flex; align-items: center; gap: 8px; font-size: 11.5px;
    border: 1px solid;
}
.nmd-warn-danger[b-ep9rof02cb] { background: rgba(193, 18, 31,0.08); border-color: rgba(193, 18, 31,0.25); color: var(--color-danger); }
.nmd-warn-caution[b-ep9rof02cb] { background: rgba(178, 93, 0,0.08); border-color: rgba(178, 93, 0,0.25); color: var(--color-warning); }
.nmd-warn-info[b-ep9rof02cb] { background: rgba(0, 102, 204,0.05); border-color: rgba(0, 102, 204,0.15); color: var(--color-primary); }
.nmd-warn-msg[b-ep9rof02cb] { color: inherit; }

/* Calc */
.nmd-calc[b-ep9rof02cb] {
    background: linear-gradient(180deg, rgba(0, 102, 204,0.04), rgba(0, 102, 204,0.015));
    border: 1px solid rgba(0, 102, 204,0.15); border-radius: var(--radius-md); padding: 14px 16px;
}
.nmd-calc-placeholder[b-ep9rof02cb] { font-size: 12px; color: var(--color-ink-muted-48); font-style: italic; }

.nmd-math[b-ep9rof02cb] {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    font-family: var(--font-mono); font-size: 12px; color: var(--color-ink-muted-80);
    margin-bottom: 10px;
}
.nmd-op[b-ep9rof02cb] { color: var(--color-primary); }
.nmd-chunk[b-ep9rof02cb] {
    display: inline-flex; flex-direction: column; gap: 1px;
    padding: 3px 8px; border-radius: var(--radius-xs);
    background: white; border: 1px solid rgba(0, 102, 204,0.12);
}
.nmd-chunk-label[b-ep9rof02cb] {
    font-size: 8.5px; letter-spacing: 0.07em; text-transform: uppercase;
    color: var(--color-primary); font-weight: 600; font-family: var(--font-sans);
}
.nmd-chunk-val[b-ep9rof02cb] { color: var(--color-ink); font-weight: 600; }

.nmd-calc-body[b-ep9rof02cb] { display: grid; grid-template-columns: 1fr 150px; gap: 12px; }
.nmd-label-card[b-ep9rof02cb] {
    background: white; border-radius: var(--radius-md); padding: 10px 14px;
    border: 1px solid rgba(0, 102, 204,0.2); font-size: 13px; line-height: 1.55; color: var(--color-ink);
}
.nmd-label-text[b-ep9rof02cb] { font-weight: 600; }
.nmd-dispense-card[b-ep9rof02cb] {
    background: white; border-radius: var(--radius-md); padding: 10px 14px;
    border: 1px solid rgba(0, 102, 204,0.2); text-align: center;
}
.nmd-dispense-num[b-ep9rof02cb] {
    font-family: var(--font-mono); font-size: 22px; font-weight: 700;
    color: var(--color-ink); letter-spacing: -0.02em; line-height: 1;
}
.nmd-dispense-unit[b-ep9rof02cb] { font-size: 10.5px; color: var(--color-ink-muted-48); margin-top: 3px; font-family: var(--font-mono); }

/* Interactions */
.nmd-interactions[b-ep9rof02cb] { display: flex; flex-direction: column; gap: 6px; }
.nmd-interact[b-ep9rof02cb] {
    padding: 9px 12px; border-radius: var(--radius-md);
    border: 1px solid;
}
.nmd-interact.nmd-warn-danger[b-ep9rof02cb] { background: rgba(193, 18, 31,0.06); border-color: rgba(193, 18, 31,0.25); }
.nmd-interact.nmd-warn-caution[b-ep9rof02cb] { background: rgba(178, 93, 0,0.06); border-color: rgba(178, 93, 0,0.25); }
.nmd-interact.nmd-warn-info[b-ep9rof02cb] { background: rgba(0, 102, 204,0.04); border-color: rgba(0, 102, 204,0.15); }
.nmd-interact-head[b-ep9rof02cb] { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.nmd-interact-with[b-ep9rof02cb] { font-size: 11.5px; color: var(--color-ink-muted-80); }
.nmd-interact-with b[b-ep9rof02cb] { color: var(--color-ink); }
.nmd-interact-note[b-ep9rof02cb] { font-size: 12px; color: var(--color-ink-muted-80); line-height: 1.5; }

.nmd-prompt[b-ep9rof02cb] {
    padding: 40px; text-align: center; color: var(--color-ink-muted-48); font-size: 13px;
}

.nmd-footer[b-ep9rof02cb] {
    padding: 14px 24px; border-top: 1px solid rgba(0, 102, 204,0.10);
    background: rgba(0, 102, 204,0.04);
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.nmd-footer-msg[b-ep9rof02cb] { font-size: 11px; color: var(--color-ink-muted-48); }
.nmd-footer-danger[b-ep9rof02cb] { color: var(--color-danger); font-weight: 600; }
.nmd-footer-actions[b-ep9rof02cb] { display: flex; gap: 8px; }
/* /Components/AddressEditor.razor.rz.scp.css */
.nae-grid[b-outdwm6eem] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.nae-span2[b-outdwm6eem] {
    grid-column: 1 / -1;
}

/* Invalid input + inline error now use global `.input.invalid` /
   `.validation-message`. The scoped re-implementations were removed. */

@media (max-width: 640px) {
    .nae-grid[b-outdwm6eem] {
        grid-template-columns: 1fr;
    }
}
/* /Components/ColorField.razor.rz.scp.css */
.cfp[b-phqksw7f3l] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1px solid var(--color-hairline);
    background: var(--color-canvas);
    border-radius: var(--radius-sm);
    padding: 4px 6px 4px 8px;
    height: 36px;
    box-sizing: border-box;
}

.cfp:focus-within[b-phqksw7f3l] {
    border-color: var(--color-primary-focus);
    box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.18);
}

.cfp-swatch[b-phqksw7f3l] {
    display: inline-block;
    width: 22px;
    height: 22px;
    border-radius: var(--radius-pill);
    border: 1px solid rgba(0, 0, 0, 0.08);
    flex: 0 0 auto;
}

.cfp-text[b-phqksw7f3l] {
    border: none;
    outline: none;
    background: transparent;
    padding: 0;
    font: inherit;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
    width: 88px;
    color: var(--color-ink);
}

.cfp-text[b-phqksw7f3l]::placeholder {
    color: var(--color-ink-muted-48);
}

.cfp-picker-wrap[b-phqksw7f3l] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: var(--radius-pill);
    cursor: pointer;
    color: #515154;
    background: transparent;
    transition: background-color 120ms ease, color 120ms ease;
}

.cfp-picker-wrap:hover[b-phqksw7f3l] {
    background: rgba(0, 102, 204, 0.08);
    color: var(--color-primary-hover);
}

.cfp-picker[b-phqksw7f3l] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    padding: 0;
    border: none;
    background: transparent;
}

.cfp-picker-icon[b-phqksw7f3l] {
    display: inline-flex;
    pointer-events: none;
}

.cfp-ro[b-phqksw7f3l] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: none;
    background: transparent;
    padding: 0;
    height: auto;
}

.cfp-ro .cfp-swatch[b-phqksw7f3l] {
    width: 18px;
    height: 18px;
}

.cfp-text-ro[b-phqksw7f3l] {
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
    color: #515154;
    font-size: 0.875rem;
}

/* ── Curated preset swatches (opt-in via the Presets parameter) ───── */
.cfp-presets[b-phqksw7f3l] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
    max-width: 220px;
}

.cfp-preset[b-phqksw7f3l] {
    width: 20px;
    height: 20px;
    padding: 0;
    border-radius: var(--radius-pill);
    border: 1px solid rgba(0, 0, 0, 0.12);
    cursor: pointer;
    flex: 0 0 auto;
    transition: transform 100ms ease, box-shadow 100ms ease;
}

.cfp-preset:hover[b-phqksw7f3l] {
    transform: scale(1.12);
}

.cfp-preset-selected[b-phqksw7f3l] {
    box-shadow: 0 0 0 2px var(--color-canvas), 0 0 0 4px var(--color-primary-focus);
}
/* /Components/ColorSwatchListbox.razor.rz.scp.css */
/* Headless colour-swatch listbox. Anchored to its trigger button; popover
   floats above sibling content via position: absolute + a z-index above the
   slide-over (which sits at 1000 for Create/Edit). Scoped `csl-` prefix. */

.csl[b-ptsnkytn4p] {
    position: relative;
    display: block;
}

.csl-trigger[b-ptsnkytn4p] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 12px;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font: inherit;
    text-align: left;
    color: var(--color-ink);
    transition: border-color 0.12s ease;
}
.csl-trigger:hover[b-ptsnkytn4p] { border-color: rgba(0, 102, 204, 0.35); }
.csl-trigger:focus-visible[b-ptsnkytn4p] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 1px;
}
.csl-trigger.is-open[b-ptsnkytn4p] { border-color: var(--color-primary); }

.csl-label[b-ptsnkytn4p] { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.csl-placeholder[b-ptsnkytn4p] { flex: 1; color: var(--color-ink-muted-48); }
.csl-caret[b-ptsnkytn4p] { color: var(--color-ink-muted-48); flex-shrink: 0; }

.csl-dot[b-ptsnkytn4p] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08) inset;
}

/* Transparent full-screen click-catcher that dismisses the open popover —
   NOT a modal scrim. */
.csl-dismiss[b-ptsnkytn4p] {
    position: fixed;
    inset: 0;
    z-index: 1100;
}

.csl-popover[b-ptsnkytn4p] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 1101;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    box-shadow: var(--shadow-product);
    max-height: 280px;
    overflow-y: auto;
}

.csl-row[b-ptsnkytn4p] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 13px;
    color: var(--color-ink);
}
.csl-row:hover[b-ptsnkytn4p],
.csl-row.is-focused[b-ptsnkytn4p] { background: rgba(0, 102, 204, 0.06); }
.csl-row.is-selected[b-ptsnkytn4p] { color: var(--color-primary); font-weight: 600; }
.csl-tick[b-ptsnkytn4p] { margin-left: auto; color: var(--color-primary); flex-shrink: 0; }
/* /Components/ConsultationPlan.razor.rz.scp.css */
/* Nimbus consultation plan — stacked layout, prescription cards */

/* Bump the inter-card gap so the Plan tab matches the breathing-room cadence
   of the Notes tab (where the global `.card-stack` patterns leave ~14-16px
   between cards plus full 20px internal card padding). */
.ncp-grid[b-w571f45p74] { display: grid; grid-template-columns: 1fr; gap: 20px; }

/* `.ncp-card { padding: 0 }` overrides the global `.card { padding: 20px }`
   so the in-card sections (`.card-header`, `.ncp-list`) can paint to the
   card edges. The inner sections below re-introduce the same generous
   vertical breathing room the Notes-tab cards get from the global
   `.card { padding: 20px }` + `.card-title { margin-bottom: 14px }` rhythm,
   so both tabs read with the same cadence. */
.ncp-card[b-w571f45p74] { padding: 0; display: flex; flex-direction: column; }

/* Header row carries the section label ("In clinic" / "Take home"). Pad it
   to match the Notes card's top inset (20px sides, 20px top) and leave a
   visible gutter above the content area below — mirrors the Notes
   `.card-title { margin-bottom: 14px }` separation. */
.ncp-card .card-header[b-w571f45p74] {
    padding: 20px 20px 0;
    margin-bottom: 14px;
}

.ncp-head-sub[b-w571f45p74] { color: var(--color-ink-muted-48); font-weight: 600; font-size: 12px; margin-left: 8px; }
.ncp-head-count[b-w571f45p74] { font-size: 11px; color: var(--color-primary); font-family: var(--font-mono); }

.ncp-list[b-w571f45p74] {
    padding: 0 20px 20px; display: flex; flex-direction: column; gap: 12px;
    flex: 1; min-height: 0;
}

.ncp-loading[b-w571f45p74], .ncp-empty[b-w571f45p74] { font-size: 12px; }

/* When a list is empty, centre its single empty-state line in a comfortable
   visible band rather than crowding it against the header above. */
.ncp-list:has(> .ncp-empty:only-child)[b-w571f45p74] { justify-content: center; min-height: 96px; }

/* In-clinic datagrid — dense list with aligned columns. Matches the Notes
   card's 20px side inset; generous top/bottom so rows aren't jammed against
   the header above or the add-row below. */
.ncp-inclinic-list[b-w571f45p74] { padding: 4px 20px; gap: 0; }
.ncp-inclinic-row[b-w571f45p74] {
    display: grid; grid-template-columns: 28px 1fr 24px;
    align-items: center; gap: 10px;
    padding: 5px 6px;
    border-bottom: 1px solid rgba(0, 102, 204,0.08);
}
.ncp-inclinic-row:last-child[b-w571f45p74] { border-bottom: 0; }
.ncp-inclinic-row:hover[b-w571f45p74] { background: rgba(0, 102, 204,0.03); }
.ncp-num[b-w571f45p74] {
    font-size: 10.5px; font-family: var(--font-mono); color: var(--color-primary);
    text-align: right;
}
.ncp-inclinic-text[b-w571f45p74] { font-size: 12.5px; color: var(--color-ink); }
.ncp-remove[b-w571f45p74] {
    background: transparent; border: 0; color: var(--color-ink-muted-48);
    cursor: pointer; font-size: 16px; padding: 2px; line-height: 1;
    justify-self: end;
}
.ncp-remove:hover[b-w571f45p74] { color: var(--color-danger); }

.ncp-inclinic-add[b-w571f45p74] {
    padding: 16px 20px 20px; display: flex; gap: 8px;
    border-top: 1px solid rgba(0, 102, 204,0.08);
    margin-top: 8px;
}
.ncp-inclinic-add .inp[b-w571f45p74] { flex: 1; }

/* Prescription card */
.ncp-rx[b-w571f45p74] {
    background: white; border: 1px solid rgba(0, 102, 204,0.16);
    border-radius: var(--radius-md); overflow: hidden;
}
.ncp-rx-head[b-w571f45p74] {
    padding: 12px 14px 10px;
    border-bottom: 1px solid rgba(0, 102, 204,0.08);
    display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
}
.ncp-rx-head-left[b-w571f45p74] { min-width: 0; flex: 1; }
.ncp-rx-chips[b-w571f45p74] { display: flex; align-items: center; gap: 8px; margin-bottom: 3px; flex-wrap: wrap; }
.ncp-rx-ind[b-w571f45p74] { font-size: 10.5px; color: var(--color-ink-muted-48); font-family: var(--font-mono); }
.ncp-rx-title[b-w571f45p74] { font-size: 14px; font-weight: 700; color: var(--color-ink); letter-spacing: -0.01em; }
.ncp-rx-actions[b-w571f45p74] { display: flex; gap: 4px; }
.ncp-rx-del[b-w571f45p74] { color: var(--color-danger); }

.ncp-rx-body[b-w571f45p74] { display: grid; grid-template-columns: 1fr 110px; gap: 0; }
.ncp-rx-label[b-w571f45p74] {
    padding: 11px 14px; border-right: 1px solid rgba(0, 102, 204,0.08);
}
.ncp-rx-label-text[b-w571f45p74] { font-size: 12.5px; color: var(--color-ink); line-height: 1.5; }
.ncp-rx-dispense[b-w571f45p74] {
    padding: 11px 14px; background: rgba(0, 102, 204,0.03); text-align: center;
}
.ncp-rx-dispense-num[b-w571f45p74] {
    font-family: var(--font-mono); font-size: 20px; font-weight: 700;
    color: var(--color-ink); letter-spacing: -0.02em; line-height: 1;
}
.ncp-rx-dispense-unit[b-w571f45p74] { font-size: 10.5px; color: var(--color-ink-muted-48); margin-top: 2px; font-family: var(--font-mono); }

.ncp-rx-foot[b-w571f45p74] {
    padding: 7px 14px; background: rgba(0, 102, 204,0.025);
    border-top: 1px solid rgba(0, 102, 204,0.08);
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    font-size: 10.5px; color: var(--color-ink-muted-48); font-family: var(--font-mono);
}
.ncp-rx-foot b[b-w571f45p74] { color: var(--color-ink-muted-80); }
.ncp-foot-sep[b-w571f45p74] { opacity: 0.4; }

.ncp-rx-error[b-w571f45p74] {
    margin: 6px 14px 10px; padding: 6px 10px; font-size: 11.5px;
    color: var(--color-warning); background: rgba(178, 93, 0,0.08);
    border: 1px solid rgba(178, 93, 0,0.25); border-radius: var(--radius-sm);
}

/* Toolbar */
.ncp-rx-toolbar[b-w571f45p74] { padding: 8px 20px 16px; }
.ncp-add-btn[b-w571f45p74] { width: 100%; justify-content: center; }

.ncp-bulk-ok[b-w571f45p74], .ncp-bulk-warn[b-w571f45p74] {
    margin: 0 20px 14px;
    padding: 7px 12px; border-radius: var(--radius-sm);
    font-size: 12px;
}
.ncp-bulk-ok[b-w571f45p74] { background: rgba(0, 102, 204,0.08); color: var(--color-primary); border: 1px solid rgba(0, 102, 204,0.2); }
.ncp-bulk-warn[b-w571f45p74] { background: rgba(178, 93, 0,0.08); color: var(--color-warning); border: 1px solid rgba(178, 93, 0,0.25); }

/* /Components/CountrySelect.razor.rz.scp.css */
/* Searchable country combobox. The input inherits the global Nimbus `.input`
   look; this file owns the popover + option rows. All selectors are prefixed
   `ncs-` per the Nimbus scoped-CSS rule (no bare element selectors). */

.ncs-root[b-9661ok97gt] {
    position: relative;
}

.ncs-input[b-9661ok97gt] {
    width: 100%;
    cursor: text;
}

/* Invalid input now uses global `.input.invalid`. The scoped re-implementation
   was removed. */

.ncs-disabled[b-9661ok97gt] {
    opacity: 0.6;
}

.ncs-list[b-9661ok97gt] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    z-index: 40;
    max-height: 280px;
    overflow-y: auto;
    margin: 0;
    padding: 4px;
    list-style: none;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-product);
}

.ncs-item[b-9661ok97gt] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: var(--radius-sm);
    font-size: 13px;
    letter-spacing: -0.2px;
    color: var(--color-ink);
    cursor: pointer;
    user-select: none;
}

.ncs-item.ncs-active[b-9661ok97gt] {
    background: var(--accent-faint-08);
}

.ncs-item.ncs-selected .ncs-name[b-9661ok97gt] {
    font-weight: 600;
}

.ncs-flag[b-9661ok97gt] {
    flex: 0 0 auto;
    font-size: 16px;
    line-height: 1;
}

.ncs-name[b-9661ok97gt] {
    flex: 1 1 auto;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ncs-dial[b-9661ok97gt] {
    flex: 0 0 auto;
    color: var(--color-ink-muted-48);
    font-variant-numeric: tabular-nums;
}

.ncs-empty[b-9661ok97gt] {
    padding: 10px;
    font-size: 13px;
    letter-spacing: -0.2px;
    color: var(--color-ink-muted-48);
    text-align: center;
}
/* /Components/DemeanourBadge.razor.rz.scp.css */
/* Demeanour chip — sentence-case (Nimbus convention). Demeanour names come
   from the DB pre-cased ('Friendly' / 'Anxious') so no text-transform here. */
.dmb[b-22cltrmtt5] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--radius-pill);
    font-weight: 600;
    letter-spacing: -0.08px;
    border: 1px solid rgba(0, 0, 0, 0.06);
    white-space: nowrap;
    line-height: 1;
}
.dmb-sm[b-22cltrmtt5] {
    padding: 3px 8px;
    font-size: 10px;
}
.dmb-md[b-22cltrmtt5] {
    padding: 4px 10px;
    font-size: 11px;
}
.dmb-lg[b-22cltrmtt5] {
    padding: 5px 12px;
    font-size: 12px;
}
/* /Components/LineItemsEditor/LineItemsEditor.razor.rz.scp.css */
.lie-section[b-kq28ptjcj7] {
    background: transparent;
    box-shadow: none;
    padding-top: 0.5rem;
}

.lie-header[b-kq28ptjcj7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.65rem;
}

.lie-header-actions[b-kq28ptjcj7] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.lie-icon-btn[b-kq28ptjcj7] {
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    background: var(--color-canvas);
    color: var(--color-ink-muted-48);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color 0.12s ease, color 0.12s ease, background 0.12s ease;
}

.lie-icon-btn:hover[b-kq28ptjcj7] {
    border-color: var(--color-primary);
    color: var(--color-primary);
    background: var(--color-canvas);
}

.lie-icon-btn:focus-visible[b-kq28ptjcj7] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 1px;
}

.lie-icon-btn svg[b-kq28ptjcj7] {
    width: 15px;
    height: 15px;
}

.lie-tbl[b-kq28ptjcj7] {
    border-collapse: collapse;
}

.lie-tbl thead th[b-kq28ptjcj7] {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-ink-muted-48);
    padding: 0.55rem 0.6rem;
    border-bottom: 1px solid var(--color-hairline);
}

.lie-tbl tbody td[b-kq28ptjcj7] {
    padding: 0.55rem 0.6rem;
    vertical-align: middle;
}

.lie-handle-col[b-kq28ptjcj7] {
    width: 1.6rem;
    padding-left: 0 !important;
    padding-right: 0 !important;
    text-align: center;
}

.lie-grip[b-kq28ptjcj7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.4rem;
    height: 1.6rem;
    color: #b0b0b5;
    cursor: grab;
    border-radius: var(--radius-xs);
    user-select: none;
}

.lie-grip:hover[b-kq28ptjcj7] {
    color: var(--color-ink-muted-48);
    background: rgba(0, 0, 0, 0.04);
}

.lie-grip:active[b-kq28ptjcj7] {
    cursor: grabbing;
}

.lie-grip svg[b-kq28ptjcj7] {
    fill: currentColor;
}

.lie-row[b-kq28ptjcj7] {
    transition: background-color 100ms ease;
}

.lie-row-dragging > td[b-kq28ptjcj7] {
    opacity: 0.45;
}

.lie-row-drop-target > td[b-kq28ptjcj7] {
    border-top: 2px solid var(--color-primary);
}

.lie-suggest[b-kq28ptjcj7] {
    margin-top: 0.5rem;
    background: rgba(255, 255, 255, 0.98);
    border-radius: var(--radius-md);
    box-shadow:
        0 1px 2px rgba(0, 0, 0, 0.04),
        0 4px 8px rgba(0, 0, 0, 0.04),
        0 12px 24px rgba(0, 0, 0, 0.06);
    overflow: hidden;
    max-height: 18rem;
    overflow-y: auto;
}

.lie-suggest-item[b-kq28ptjcj7] {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.6rem 0.85rem;
    border: none;
    background: transparent;
    text-align: left;
    cursor: pointer;
    color: var(--color-ink);
    border-bottom: 1px solid rgba(0, 102, 204, 0.08);
    font-size: 0.875rem;
}

.lie-suggest-item:last-child[b-kq28ptjcj7] {
    border-bottom: none;
}

.lie-suggest-item:hover[b-kq28ptjcj7] {
    background: rgba(0, 102, 204, 0.08);
}

.lie-suggest-item span[b-kq28ptjcj7] {
    color: var(--color-primary);
    font-variant-numeric: tabular-nums;
}

/* ── ViewOnly: clean read-only document rendering ─────────────────────── */

.lie-view-tbl tbody td[b-kq28ptjcj7] {
    padding: 0.6rem 0.65rem;
    vertical-align: middle;
}

/* Secondary columns (qty, unit price, tax) read muted so the description
   carries each line and the amounts column stays scannable. */
.lie-view-cell[b-kq28ptjcj7] {
    color: var(--color-ink-muted-48);
}

.lie-view-desc[b-kq28ptjcj7] {
    color: var(--color-ink);
    letter-spacing: -0.15px;
}

.lie-view-num[b-kq28ptjcj7] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Line total — the rightmost numeric column — sits in full ink + weight so
   the eye tracks straight down the amounts. */
.lie-view-tbl tbody td.lie-view-num:last-child[b-kq28ptjcj7] {
    color: var(--color-ink);
    font-weight: 600;
}

.lie-view-row + .lie-view-row > td[b-kq28ptjcj7] {
    border-top: 1px solid var(--color-divider-soft);
}

/* Section header row — a clean subgroup label, not a data row. */
.lie-view-header-row > td[b-kq28ptjcj7] {
    font-weight: 600;
    color: var(--color-ink-muted-48);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    font-size: 0.72rem;
    padding-top: 1.1rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--color-hairline);
}

/* ── ViewOnly receipt summary — right-aligned totals block ─────────────── */

.lie-summary[b-kq28ptjcj7] {
    margin-left: auto;
    width: min(20rem, 100%);
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-top: 0.85rem;
}

.lie-summary-row[b-kq28ptjcj7] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1.5rem;
}

.lie-summary-label[b-kq28ptjcj7] {
    color: var(--color-ink-muted-48);
    font-size: 0.875rem;
}

.lie-summary-amt[b-kq28ptjcj7] {
    color: var(--color-ink-muted-80);
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.2px;
}

/* Total — separated by a hairline rule and given the document's strongest
   numeric emphasis. */
.lie-summary-total[b-kq28ptjcj7] {
    margin-top: 0.25rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--color-hairline);
}

.lie-summary-total .lie-summary-label[b-kq28ptjcj7] {
    color: var(--color-ink);
    font-weight: 600;
    font-size: 0.95rem;
}

.lie-summary-total .lie-summary-amt[b-kq28ptjcj7] {
    color: var(--color-ink);
    font-weight: 600;
    font-size: 1rem;
}

/* ── Column widths ─────────────────────────────────────────────────────
   Base widths match the original inline `width:Nrem` hints, so the default
   (wide) table is visually unchanged. The compact variant tightens the
   numeric columns and hands the reclaimed width to Item & description. */
.lie-col-qty[b-kq28ptjcj7]     { width: 7rem; }
.lie-col-rate[b-kq28ptjcj7]    { width: 9rem; }
.lie-col-total[b-kq28ptjcj7]   { width: 10rem; }
.lie-col-actions[b-kq28ptjcj7] { width: 4rem; }

/* ── Compact (invoice-style) line table ────────────────────────────────
   Fixed layout so the tight numeric columns are honoured exactly; the
   unsized Item column absorbs the remaining width. */
.lie-tbl-compact[b-kq28ptjcj7] { table-layout: fixed; width: 100%; }
.lie-tbl-compact .lie-handle-col[b-kq28ptjcj7] { width: 1.5rem; }
.lie-tbl-compact .lie-col-qty[b-kq28ptjcj7]     { width: 56px; }
.lie-tbl-compact .lie-col-rate[b-kq28ptjcj7]    { width: 80px; }
.lie-tbl-compact .lie-col-total[b-kq28ptjcj7]   { width: 92px; }
.lie-tbl-compact .lie-col-actions[b-kq28ptjcj7] { width: 40px; }

.lie-tbl-compact thead th[b-kq28ptjcj7],
.lie-tbl-compact tbody td[b-kq28ptjcj7] { padding-left: 0.4rem; padding-right: 0.4rem; }

.lie-tbl-compact .inp[b-kq28ptjcj7] { height: 32px; font-size: 12.5px; }
.lie-tbl-compact input[data-field][b-kq28ptjcj7] { font-variant-numeric: tabular-nums; }

/* Drop number spinners so the tightened line-total column shows the value. */
.lie-tbl-compact input[type="number"][b-kq28ptjcj7] { -moz-appearance: textfield; appearance: textfield; }
.lie-tbl-compact input[type="number"][b-kq28ptjcj7]::-webkit-outer-spin-button,
.lie-tbl-compact input[type="number"][b-kq28ptjcj7]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }

/* ── Item & description cell (compact) ──────────────────────────────────
   Bold item name + pencil "change", over a borderless description input
   that reads as muted copy at rest and reveals a field on focus. */
.lie-item-cell[b-kq28ptjcj7] { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lie-item-head[b-kq28ptjcj7] { display: flex; align-items: center; gap: 4px; min-width: 0; }
.lie-item-name[b-kq28ptjcj7] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.2px;
    color: var(--color-ink);
}
.lie-item-change[b-kq28ptjcj7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    padding: 0;
    border: 0;
    border-radius: var(--radius-xs);
    background: transparent;
    color: var(--color-ink-muted-48);
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}
.lie-item-change:hover[b-kq28ptjcj7] { background: rgba(0, 0, 0, 0.05); color: var(--color-ink-muted-80); }
.lie-line-desc[b-kq28ptjcj7] {
    width: 100%;
    border: 1px solid transparent;
    background: transparent;
    padding: 2px 6px;
    margin-left: -6px;
    border-radius: var(--radius-xs);
    font-family: var(--font-text);
    font-size: 12px;
    color: var(--color-ink-muted-80);
    letter-spacing: -0.15px;
    outline: none;
    transition: background 0.12s ease, border-color 0.12s ease;
}
.lie-line-desc[b-kq28ptjcj7]::placeholder { color: var(--color-ink-muted-48); }
.lie-line-desc:hover[b-kq28ptjcj7] { background: var(--color-canvas-parchment); }
.lie-line-desc:focus[b-kq28ptjcj7] {
    background: var(--color-canvas);
    border-color: var(--color-primary);
    box-shadow: var(--shadow-focus);
}

/* Empty-row catalog search with a leading magnifier. */
.lie-search[b-kq28ptjcj7] { position: relative; display: flex; align-items: center; }
.lie-search-icon[b-kq28ptjcj7] {
    position: absolute;
    left: 9px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: var(--color-ink-muted-48);
    pointer-events: none;
}
.lie-search-input[b-kq28ptjcj7] { padding-left: 28px; }

/* Minimalist remove control — ghost trash icon, muted at rest, red on hover. */
.lie-remove[b-kq28ptjcj7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: var(--radius-xs);
    background: transparent;
    color: var(--color-ink-muted-48);
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}
.lie-remove:hover[b-kq28ptjcj7] { background: var(--color-danger-tint); color: var(--color-danger); }
.lie-remove:focus-visible[b-kq28ptjcj7] {
    outline: none;
    box-shadow: var(--shadow-focus);
}
/* /Components/Notifications/SendDocumentEmailModal.razor.rz.scp.css */
.sde-textarea[b-l5jw8htblw] {
    font-family: inherit;
}

.sde-banner[b-l5jw8htblw] {
    margin-top: 12px;
}
/* /Components/OwnerPetPicker.razor.rz.scp.css */
/* OwnerPetPicker — phone-first owner & pet picker. Scoped prefix: opp-. */

.opp-root[b-fp8rhxq58h] {
    display: block;
}

/* ── Card head ────────────────────────────────────────────── */
.opp-card-head[b-fp8rhxq58h] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
    gap: 8px;
}
.opp-card-title[b-fp8rhxq58h] {
    margin: 0;
    /* Override default card-title bottom-margin set in shared/global. */
}
.opp-card-hint[b-fp8rhxq58h] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
}

/* ── Field primitives ─────────────────────────────────────── */
.opp-field[b-fp8rhxq58h] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.opp-field-tight[b-fp8rhxq58h] { gap: 5px; }
.opp-label-tight[b-fp8rhxq58h] { margin-bottom: 0; }
/* Found-state blocks (Owner, Pick a pet) need breathing room from the phone
   "Match found" status and the owner card stacked above them. */
.opp-found-field[b-fp8rhxq58h] { margin-top: 14px; }

/* ── Phone input row ──────────────────────────────────────── */
.opp-phone-wrap[b-fp8rhxq58h] {
    position: relative;
}
.opp-phone-prefix[b-fp8rhxq58h] {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--color-ink-muted-48);
    pointer-events: none;
    display: inline-flex;
}
.opp-phone-input[b-fp8rhxq58h] {
    padding-left: 36px;
    padding-right: 36px;
    transition: border-color 0.15s, background 0.15s;
}
.opp-phone-input[data-state="found"][b-fp8rhxq58h] {
    border-color: var(--color-success);
    background: var(--color-success-tint);
}
.opp-phone-input[data-state="nomatch"][b-fp8rhxq58h] {
    border-color: var(--color-warning);
    background: var(--color-warning-tint);
}
.opp-phone-clear[b-fp8rhxq58h] {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 24px;
    height: 24px;
    border-radius: var(--radius-pill);
    border: 0;
    background: transparent;
    color: var(--color-ink-muted-48);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}
.opp-phone-clear:hover[b-fp8rhxq58h] {
    background: rgba(0, 0, 0, 0.06);
    color: var(--color-ink);
}

.opp-phone-status[b-fp8rhxq58h] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 6px;
    min-height: 18px;
    font-size: 11px;
}
.opp-status-text[b-fp8rhxq58h] {
    color: var(--color-ink-muted-48);
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.opp-pill[b-fp8rhxq58h] {
    height: 22px;
}

/* ── Searching skeletons ──────────────────────────────────── */
.opp-skel-list[b-fp8rhxq58h] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 4px;
}
.opp-skel-row[b-fp8rhxq58h] {
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    background: var(--color-canvas);
}
.opp-skel-ava[b-fp8rhxq58h] {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-pill);
    flex-shrink: 0;
}
.opp-skel-lines[b-fp8rhxq58h] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* ── Ambiguous match list ─────────────────────────────────── */
.opp-match-list[b-fp8rhxq58h] {
    list-style: none;
    margin: 4px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 240px;
    overflow-y: auto;
}
.opp-match-item[b-fp8rhxq58h] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    cursor: pointer;
    text-align: left;
    transition: border-color 0.12s, background 0.12s;
    font-family: inherit;
}
.opp-match-item:hover[b-fp8rhxq58h] {
    border-color: var(--color-primary);
    background: var(--color-info-tint);
}
.opp-match-ava[b-fp8rhxq58h] { flex-shrink: 0; }
.opp-match-body[b-fp8rhxq58h] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.opp-match-name[b-fp8rhxq58h] {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: -0.2px;
}
.opp-match-sub[b-fp8rhxq58h] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
}
.opp-match-chev[b-fp8rhxq58h] {
    color: var(--color-ink-muted-48);
    flex-shrink: 0;
}

/* ── Found state: owner card + pet picker ─────────────────── */
.opp-owner-card[b-fp8rhxq58h] {
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    background: var(--color-canvas);
}
.opp-owner-ava[b-fp8rhxq58h] { flex-shrink: 0; }
.opp-owner-body[b-fp8rhxq58h] {
    flex: 1;
    min-width: 0;
}
.opp-owner-name[b-fp8rhxq58h] {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.2px;
    color: var(--color-ink);
}
.opp-owner-meta[b-fp8rhxq58h] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
    margin-top: 2px;
}

.opp-link-btn[b-fp8rhxq58h] {
    border: 0;
    background: transparent;
    color: var(--color-primary);
    padding: 0;
    font: inherit;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}
.opp-link-btn:hover[b-fp8rhxq58h] { color: var(--color-primary-hover); text-decoration: underline; }

.opp-pet-head[b-fp8rhxq58h] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 6px;
}
.opp-pet-list[b-fp8rhxq58h] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.opp-pet-row[b-fp8rhxq58h] {
    width: 100%;
    display: flex;
    gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    cursor: pointer;
    background: var(--color-canvas);
    text-align: left;
    font-family: inherit;
    transition: border-color 0.12s, background 0.12s;
}
.opp-pet-row:hover[b-fp8rhxq58h] {
    border-color: rgba(0, 102, 204, 0.45);
}
.opp-pet-row.is-active[b-fp8rhxq58h] {
    border-color: var(--color-primary);
    background: var(--color-info-tint);
}
.opp-pet-ava[b-fp8rhxq58h] {
    background: var(--color-canvas-parchment);
    color: var(--color-ink-muted-80);
    flex-shrink: 0;
}
.opp-pet-body[b-fp8rhxq58h] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.opp-pet-name[b-fp8rhxq58h] {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: -0.2px;
}
.opp-pet-meta[b-fp8rhxq58h] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
}
.opp-pet-check[b-fp8rhxq58h] {
    color: var(--color-primary);
    flex-shrink: 0;
}
.opp-pet-radio[b-fp8rhxq58h] {
    width: 16px;
    height: 16px;
    border-radius: var(--radius-pill);
    border: 1.5px solid var(--color-hairline);
    flex-shrink: 0;
    display: inline-block;
}

/* ── Muted helper text ────────────────────────────────────── */
.opp-muted[b-fp8rhxq58h] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    margin: 8px 0 0;
}

/* ── Collapsed summary (CollapseWhenComplete) ─────────────── */
.opp-summary-input[b-fp8rhxq58h] {
    background: var(--color-canvas);
    cursor: default;
}
.opp-summary-grid[b-fp8rhxq58h] {
    display: contents;
}
.opp-summary-grid-horizontal[b-fp8rhxq58h] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
@media (max-width: 640px) {
    .opp-summary-grid-horizontal[b-fp8rhxq58h] {
        grid-template-columns: 1fr;
    }
}
.opp-edit-foot[b-fp8rhxq58h] {
    display: flex;
    justify-content: flex-end;
}
/* /Components/PercentageInput.razor.rz.scp.css */
/* PercentageInput — input with a non-interactive `%` suffix. Prefix `pip-`. */

.pip[b-u0b4wsc6ud] {
    display: inline-flex;
    align-items: center;
    gap: 0;
    position: relative;
}

.pip-input[b-u0b4wsc6ud] {
    padding-right: 1.75rem; /* room for the % suffix */
}

.pip-suffix[b-u0b4wsc6ud] {
    position: absolute;
    right: 0.625rem;
    pointer-events: none;
    color: var(--color-ink-muted-48);
    font-size: 0.875rem;
    user-select: none;
}
/* /Components/PetActionHub.razor.rz.scp.css */
/* PetActionHub — horizontal row of action tiles. Scoped tokens: pah-. */

.pah-row[b-xeke0q0ufp] {
    display: flex;
    gap: 12px;
    margin: 18px 0 24px;
}

.pah-tile[b-xeke0q0ufp] {
    flex: 1 1 0;
    min-width: 0;
    display: grid;
    grid-template-columns: 36px 1fr;
    gap: 12px;
    align-items: center;
    padding: 14px 16px;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-lg);
    text-decoration: none;
    color: var(--color-ink);
    transition: border-color 120ms ease, transform 120ms ease, background-color 120ms ease;
    cursor: pointer;
}

.pah-tile:hover[b-xeke0q0ufp] {
    border-color: var(--color-primary-hover);
    transform: translateY(-1px);
}

.pah-tile:focus-visible[b-xeke0q0ufp] {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.18);
    border-color: var(--color-primary-focus);
}

.pah-tile-primary[b-xeke0q0ufp] {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-canvas);
}

.pah-tile-primary:hover[b-xeke0q0ufp] {
    background: var(--color-primary-hover);
    border-color: var(--color-primary-hover);
    transform: translateY(-1px);
}

.pah-tile-primary:focus-visible[b-xeke0q0ufp] {
    box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.32);
    border-color: var(--color-primary-focus);
}

.pah-tile-disabled[b-xeke0q0ufp] {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}

.pah-tile-icon[b-xeke0q0ufp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: var(--radius-md);
    background: rgba(0, 102, 204, 0.08);
    color: var(--color-primary);
    flex-shrink: 0;
}

.pah-tile-primary .pah-tile-icon[b-xeke0q0ufp] {
    background: rgba(255, 255, 255, 0.18);
    color: var(--color-canvas);
}

.pah-tile-body[b-xeke0q0ufp] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.pah-tile-title[b-xeke0q0ufp] {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.224px;
    line-height: 1.2;
}

.pah-tile-subtitle[b-xeke0q0ufp] {
    font-size: 12px;
    font-weight: 400;
    letter-spacing: -0.2px;
    color: var(--color-ink-muted-48);
    line-height: 1.3;
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pah-tile-primary .pah-tile-subtitle[b-xeke0q0ufp] {
    color: rgba(255, 255, 255, 0.78);
}

@media (max-width: 768px) {
    .pah-row[b-xeke0q0ufp] {
        display: grid;
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 480px) {
    .pah-row[b-xeke0q0ufp] {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        padding-bottom: 4px;
    }
    .pah-row > .pah-tile[b-xeke0q0ufp] {
        min-width: 240px;
        scroll-snap-align: start;
    }
}
/* /Components/PetFormFields.razor.rz.scp.css */
/* Pet form fields — embeddable section. Scoped tokens: pff- (Pet Form Fields). */

/* Identity card: 2-col grid; pet name + microchip span the full row.
   Consumes the global --form-grid-gap so the in-card rhythm matches
   sibling .grid-2 / .grid-3 layouts everywhere else in the app. */
.pff-identity-grid[b-fjwuk134d8] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--form-grid-gap);
}

.pff-row-full[b-fjwuk134d8] { grid-column: 1 / -1; }

/* Fieldset reset — the visual structure comes from the chip stack inside.
   The legend reuses the .label look so heading rhythm matches sibling fields. */
.pff-radio-group[b-fjwuk134d8] {
    border: 0;
    padding: 0;
    margin: 0 0 16px 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.pff-legend[b-fjwuk134d8] {
    padding: 0;
    margin-bottom: 6px;
}

.pff-radio-chips[b-fjwuk134d8] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

/* Radio styled as a chip pill. The native input is visually hidden but
   stays keyboard-focusable; the wrapping <label> sibling <span> renders the
   pill, mirroring the existing .chip / .chip-active visual language. */
.pff-radio-chip[b-fjwuk134d8] {
    position: relative;
    display: inline-flex;
    cursor: pointer;
}

.pff-radio-chip input[type="radio"][b-fjwuk134d8] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.pff-radio-chip-label[b-fjwuk134d8] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 12px;
    border-radius: var(--radius-pill);
    font-size: 12px;
    letter-spacing: -0.12px;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    color: var(--color-ink-muted-80);
    transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
}

.pff-radio-chip:hover input:not(:checked) ~ .pff-radio-chip-label[b-fjwuk134d8] {
    background: var(--color-canvas-parchment);
}

.pff-radio-chip input:focus-visible ~ .pff-radio-chip-label[b-fjwuk134d8] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 2px;
}

.pff-radio-chip input:checked ~ .pff-radio-chip-label[b-fjwuk134d8] {
    background: var(--color-ink);
    color: var(--color-canvas);
    border-color: var(--color-ink);
}
/* /Components/PetRecentActivities.razor.rz.scp.css */
/* PetRecentActivities — pet-scoped event feed card. Scoped tokens: pra-. */

/* Composes global `.card` (canvas + hairline + radius-lg + 20px pad).
   Scoped layer adds only the slightly wider horizontal pad + bottom margin. */
.pra-card[b-ikol92y9es] {
    padding: 20px 22px;
    margin: 0 0 24px;
}

.pra-header[b-ikol92y9es] {
    margin-bottom: 12px;
}

.pra-title[b-ikol92y9es] {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    letter-spacing: -0.224px;
    color: var(--color-ink);
}

.pra-empty[b-ikol92y9es],
.pra-error[b-ikol92y9es] {
    margin: 0;
    padding: 12px 0;
    color: var(--color-ink-muted-48, #6e6e73);
    font-size: 14px;
}

.pra-error[b-ikol92y9es] {
    color: #b3261e;
}

.pra-list[b-ikol92y9es] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.pra-row[b-ikol92y9es] {
    display: grid;
    grid-template-columns: 28px 1fr;
    gap: 12px;
    align-items: start;
}

.pra-icon[b-ikol92y9es] {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-pill);
    background: var(--color-canvas-parchment);
    color: var(--color-ink, #1d1d1f);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.pra-body[b-ikol92y9es] {
    min-width: 0;
}

.pra-summary[b-ikol92y9es] {
    font-size: 14px;
    color: var(--color-ink, #1d1d1f);
    letter-spacing: -0.224px;
    line-height: 1.4;
}

.pra-summary-link[b-ikol92y9es] {
    color: var(--color-ink, #1d1d1f);
    text-decoration: none;
}

.pra-summary-link:hover[b-ikol92y9es] {
    color: var(--color-primary, #0066cc);
    text-decoration: underline;
}

.pra-meta[b-ikol92y9es] {
    margin-top: 2px;
    font-size: 12px;
    color: var(--color-ink-muted-48, #6e6e73);
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}

.pra-dot[b-ikol92y9es] {
    opacity: 0.6;
}

.pra-more-row[b-ikol92y9es] {
    margin-top: 16px;
    display: flex;
    justify-content: center;
}

.pra-more[b-ikol92y9es] {
    appearance: none;
    border: 1px solid var(--color-hairline);
    background: var(--color-canvas);
    color: var(--color-ink, #1d1d1f);
    border-radius: var(--radius-pill);
    padding: 8px 18px;
    font: inherit;
    font-size: 13px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.pra-more:hover:not(:disabled)[b-ikol92y9es] {
    border-color: var(--color-primary-hover);
    color: var(--color-primary, #0066cc);
}

.pra-more:disabled[b-ikol92y9es] {
    opacity: 0.6;
    cursor: progress;
}

/* /Components/PhoneNumberInput.razor.rz.scp.css */
.npi-root[b-6mhuzei961] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.npi-row[b-6mhuzei961] {
    display: flex;
    gap: 8px;
    align-items: stretch;
}

.npi-country[b-6mhuzei961] {
    flex: 0 0 auto;
    width: 210px;
    max-width: 210px;
}

.npi-number[b-6mhuzei961] {
    flex: 1 1 auto;
    min-width: 0;
}

/* Invalid input + inline error now use global `.input.invalid` /
   `.validation-message`. The scoped re-implementations were removed. */
/* /Components/Search/GlobalSearch.razor.rz.scp.css */
/* Global top-nav search island. Owns the search pill (replaces the styling
   formerly scoped to MainLayout) plus the results popover. Nimbus: white
   surface + hairline, single --shadow-product, action-blue active row, pill
   input, no gradients / translucency. */

.gsx-root[b-0kwyoiivji] {
    /* Replaces .app-topnav-search as the flex child of the top nav. */
    flex: 1;
    display: flex;
    justify-content: center;
    position: relative;
    z-index: 1;
}

.gsx-anchor[b-0kwyoiivji] {
    position: relative;
    width: 320px;
    max-width: 100%;
    z-index: 2; /* above the click-catching dismiss layer */
}

/* ── Search pill ──────────────────────────────────────────────────────── */
.gsx-input[b-0kwyoiivji] {
    position: relative;
    width: 100%;
    height: 28px;
}

.gsx-input svg[b-0kwyoiivji] {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    color: var(--color-ink-muted-48);
    stroke-width: 2;
    pointer-events: none;
}

.gsx-input input[b-0kwyoiivji] {
    width: 100%;
    height: 28px;
    padding: 0 14px 0 32px;
    background: rgba(0, 0, 0, 0.04);
    border: 1px solid transparent;
    border-radius: var(--radius-pill);
    font-family: inherit;
    font-size: 12px;
    color: var(--color-ink);
    letter-spacing: -0.12px;
    outline: none;
    transition: background 0.12s ease, border-color 0.12s ease;
}

.gsx-input input[b-0kwyoiivji]::placeholder {
    color: var(--color-ink-muted-48);
}

.gsx-input input:focus[b-0kwyoiivji] {
    background: var(--color-canvas);
    border-color: var(--color-primary);
}

/* ── Results popover ──────────────────────────────────────────────────── */
/* Transparent full-screen click-catcher that dismisses the open results
   popover — NOT a modal scrim. */
.gsx-dismiss[b-0kwyoiivji] {
    position: fixed;
    inset: 0;
    z-index: 1; /* below .gsx-anchor (2) so input + popover stay clickable */
    background: transparent;
}

.gsx-popover[b-0kwyoiivji] {
    position: absolute;
    top: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%);
    width: 420px;
    max-width: 92vw;
    z-index: 3;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-product);
    max-height: 60vh;
    overflow-y: auto;
    padding: 6px;
}

.gsx-group-label[b-0kwyoiivji] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: var(--color-ink-muted-48);
    padding: 8px 10px 4px;
}

.gsx-row[b-0kwyoiivji] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    width: 100%;
    text-align: left;
    padding: 7px 10px;
    border: 0;
    background: transparent;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-family: inherit;
}

.gsx-row:hover[b-0kwyoiivji],
.gsx-row-active[b-0kwyoiivji] {
    background: rgba(0, 102, 204, 0.08); /* action-blue tint */
}

.gsx-row-title[b-0kwyoiivji] {
    font-size: 13px;
    color: var(--color-ink);
    letter-spacing: -0.12px;
}

.gsx-row-active .gsx-row-title[b-0kwyoiivji] {
    color: var(--color-primary);
}

.gsx-row-subtitle[b-0kwyoiivji] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.1px;
}

.gsx-state[b-0kwyoiivji] {
    padding: 16px 12px;
    text-align: center;
    font-size: 12px;
    color: var(--color-ink-muted-48);
}

@media (max-width: 900px) {
    .gsx-anchor[b-0kwyoiivji] {
        width: 200px;
    }
}
/* /Components/SlideOver.razor.rz.scp.css */
/* Shared SlideOver chrome — production styles. Consumers can override the
   width via ExtraClass (e.g. `.so-slideover-wide { width: 640px; }`). */

.so-backdrop[b-102gnqa1x7] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.4);
    backdrop-filter: blur(2px);
    z-index: 999;
    animation: so-fade-in-b-102gnqa1x7 0.18s ease-out;
}

.so-slideover[b-102gnqa1x7] {
    position: fixed;
    top: var(--app-topnav-height, 0);
    right: 0;
    bottom: 0;
    width: 420px;
    max-width: 100%;
    background: var(--color-canvas, #ffffff);
    border-left: 1px solid var(--color-hairline, rgba(0, 0, 0, 0.08));
    box-shadow: -6px 0 32px rgba(0, 0, 0, 0.18);
    z-index: 1000;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    animation: so-slide-in-b-102gnqa1x7 0.22s cubic-bezier(0.2, 0.8, 0.2, 1);
}
/* Width modifiers — pass via ExtraClass (e.g. ExtraClass="so-md"). */
.so-slideover.so-md[b-102gnqa1x7] { width: 540px; }
.so-slideover.so-lg[b-102gnqa1x7] { width: 640px; }

.so-hdr[b-102gnqa1x7] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 18px 24px 14px;
    border-bottom: 1px solid var(--color-hairline, rgba(0, 0, 0, 0.06));
}
.so-hdr-main[b-102gnqa1x7] { min-width: 0; display: flex; flex-direction: column; gap: 0.25rem; flex: 1; }
.so-title[b-102gnqa1x7] {
    margin: 0;
    font-size: 18px;
    font-weight: 600;
    color: var(--color-ink, #1d1d1f);
    letter-spacing: -0.2px;
}
.so-sub[b-102gnqa1x7] {
    margin: 0;
    font-size: 13px;
    color: var(--color-ink-muted-48, #7a7a7a);
}

.so-hdr-actions[b-102gnqa1x7] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    flex-shrink: 0;
}
.so-esc-hint[b-102gnqa1x7] {
    font-family: 'SF Mono', ui-monospace, monospace;
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--color-ink-muted-48, #7a7a7a);
    background: rgba(0, 0, 0, 0.04);
    border: 1px solid rgba(0, 0, 0, 0.08);
    padding: 2px 6px;
    border-radius: var(--radius-xs);
    letter-spacing: 0.04em;
}
.so-close[b-102gnqa1x7] {
    width: 44px; height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--radius-pill);
    color: var(--color-ink, #1d1d1f);
    font-size: 1rem;
    cursor: pointer;
    transition: background-color 0.12s ease, border-color 0.12s ease;
}
.so-close:hover[b-102gnqa1x7] { background: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.18); }
.so-close:focus-visible[b-102gnqa1x7] {
    outline: 2px solid var(--color-primary-focus, #0071e3);
    outline-offset: 2px;
}

.so-body[b-102gnqa1x7] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 1.25rem;
}

.so-foot[b-102gnqa1x7] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 8px;
    padding: 12px 20px;
    background: var(--color-canvas-parchment, #f5f5f7);
    border-top: 1px solid var(--color-hairline, rgba(0, 0, 0, 0.06));
}
.so-shortcut-hint[b-102gnqa1x7] {
    margin-right: auto;
    font-size: 11px;
    color: var(--color-ink-muted-48, #7a7a7a);
}

@keyframes so-fade-in-b-102gnqa1x7 {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes so-slide-in-b-102gnqa1x7 {
    from { transform: translateX(8%); opacity: 0; }
    to   { transform: translateX(0); opacity: 1; }
}

/* Exit animation — mirrors the entrance. Applied via `.so-closing` while the
   component plays out before the consumer unmounts it. `forwards` holds the
   end state so it doesn't flash back to visible during the unmount tick. */
.so-backdrop.so-closing[b-102gnqa1x7] { animation: so-fade-out-b-102gnqa1x7 0.2s ease-in forwards; }
.so-slideover.so-closing[b-102gnqa1x7] { animation: so-slide-out-b-102gnqa1x7 0.2s cubic-bezier(0.4, 0, 1, 1) forwards; }

@keyframes so-fade-out-b-102gnqa1x7 {
    from { opacity: 1; }
    to   { opacity: 0; }
}
@keyframes so-slide-out-b-102gnqa1x7 {
    from { transform: translateX(0); opacity: 1; }
    to   { transform: translateX(8%); opacity: 0; }
}

@media (max-width: 640px) {
    .so-slideover[b-102gnqa1x7] { width: 100%; }
}
/* /Components/Toast/ToastHost.razor.rz.scp.css */
/* ToastHost — fixed top-right stack of toast notifications.
   All selectors prefixed `th-` per the Nimbus scoped-CSS convention. */

.th-host[b-3l2k2vh43x] {
    position: fixed;
    top: 16px;
    right: 16px;
    z-index: 9000;
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 360px;
    max-width: calc(100vw - 32px);
    pointer-events: none;
}

.th-toast[b-3l2k2vh43x] {
    pointer-events: auto;
    display: grid;
    /* Action toasts add a fourth column for the inline action button before
       the close button. `auto auto` lets either or both action+close render
       cleanly when present. */
    grid-template-columns: 20px 1fr auto auto;
    align-items: start;
    gap: 12px;
    padding: 14px 14px 14px 14px;
    border-radius: var(--radius-md);
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    box-shadow: var(--shadow-product);
    font-size: 14px;
    line-height: 1.4;
    letter-spacing: -0.224px;
    color: var(--color-body);
    animation: th-slide-in-b-3l2k2vh43x 200ms ease-out both;
}

.th-toast-action[b-3l2k2vh43x] {
    background: transparent;
    border: 1px solid currentColor;
    padding: 2px 10px;
    border-radius: var(--radius-pill);
    font: inherit;
    font-size: 12px;
    font-weight: 600;
    color: var(--color-primary);
    cursor: pointer;
    align-self: center;
}
.th-toast-action:hover[b-3l2k2vh43x] { background: rgba(0, 102, 204, 0.06); }
.th-toast-action:focus-visible[b-3l2k2vh43x] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 2px;
}

.th-toast-leaving[b-3l2k2vh43x] {
    animation: th-fade-out-b-3l2k2vh43x 200ms ease-in both;
}

.th-toast:focus-visible[b-3l2k2vh43x] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 2px;
}

.th-toast-icon[b-3l2k2vh43x] {
    width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.th-toast-icon svg[b-3l2k2vh43x] {
    width: 20px;
    height: 20px;
}

.th-toast-message[b-3l2k2vh43x] {
    word-break: break-word;
    padding-top: 1px;
}

.th-toast-close[b-3l2k2vh43x] {
    background: transparent;
    border: 0;
    padding: 0;
    width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--color-ink-muted-48);
    border-radius: var(--radius-xs);
}
.th-toast-close svg[b-3l2k2vh43x] {
    width: 16px;
    height: 16px;
}
.th-toast-close:hover[b-3l2k2vh43x] {
    color: var(--color-ink);
    background: rgba(0, 0, 0, 0.04);
}
.th-toast-close:focus-visible[b-3l2k2vh43x] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 1px;
}

/* Per-kind colouring. The left edge picks up the kind colour as a 3px stripe;
   the icon inherits that colour. Body text stays the standard ink so long
   messages remain readable. */
.th-toast-success[b-3l2k2vh43x] {
    border-left: 3px solid var(--color-success);
}
.th-toast-success .th-toast-icon[b-3l2k2vh43x] {
    color: var(--color-success);
}

.th-toast-info[b-3l2k2vh43x] {
    border-left: 3px solid var(--color-info);
}
.th-toast-info .th-toast-icon[b-3l2k2vh43x] {
    color: var(--color-info);
}

.th-toast-warning[b-3l2k2vh43x] {
    border-left: 3px solid var(--color-warning);
}
.th-toast-warning .th-toast-icon[b-3l2k2vh43x] {
    color: var(--color-warning);
}

.th-toast-error[b-3l2k2vh43x] {
    border-left: 3px solid var(--color-danger);
}
.th-toast-error .th-toast-icon[b-3l2k2vh43x] {
    color: var(--color-danger);
}

@keyframes th-slide-in-b-3l2k2vh43x {
    from {
        transform: translateX(20px);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes th-fade-out-b-3l2k2vh43x {
    from {
        opacity: 1;
    }
    to {
        opacity: 0;
    }
}

@media (prefers-reduced-motion: reduce) {
    .th-toast[b-3l2k2vh43x] {
        animation: th-fade-in-b-3l2k2vh43x 120ms ease-out both;
    }
    .th-toast-leaving[b-3l2k2vh43x] {
        animation: th-fade-out-b-3l2k2vh43x 120ms ease-in both;
    }
    @keyframes th-fade-in-b-3l2k2vh43x {
        from { opacity: 0; }
        to { opacity: 1; }
    }
}

@media (max-width: 480px) {
    .th-host[b-3l2k2vh43x] {
        top: 8px;
        left: 8px;
        right: 8px;
        width: auto;
    }
}
/* /Components/VendorPicker.razor.rz.scp.css */
.vp-root[b-024prpu0or] {
    position: relative;
    min-height: 38px;
}

.vp-root.vp-disabled[b-024prpu0or] {
    opacity: 0.6;
    pointer-events: none;
}

.vp-input-wrap[b-024prpu0or] {
    position: relative;
}

.vp-input[b-024prpu0or] {
    width: 100%;
}

.vp-pill[b-024prpu0or] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--color-canvas-parchment);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-pill);
    padding: 0.4rem 0.85rem;
    line-height: 1.2;
    font-size: 0.9rem;
    max-width: 100%;
}

.vp-pill-name[b-024prpu0or] {
    font-weight: 600;
    color: var(--color-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.vp-pill-contact[b-024prpu0or] {
    color: var(--color-ink-muted-48);
    font-size: 0.85rem;
}

.vp-pill-clear[b-024prpu0or] {
    background: transparent;
    border: 0;
    color: var(--color-ink-muted-48);
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    padding: 0 0.25rem;
    border-radius: var(--radius-pill);
}

.vp-pill-clear:hover[b-024prpu0or] {
    background: rgba(0, 0, 0, 0.08);
    color: var(--color-ink);
}

.vp-dropdown[b-024prpu0or] {
    position: absolute;
    z-index: 50;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-product);
    overflow: hidden;
    max-height: 320px;
    overflow-y: auto;
}

.vp-row[b-024prpu0or] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    width: 100%;
    padding: 0.55rem 0.85rem;
    background: transparent;
    border: 0;
    border-bottom: 1px solid #f0f0f2;
    text-align: left;
    cursor: pointer;
    font-size: 0.9rem;
}

.vp-row:last-child[b-024prpu0or] {
    border-bottom: 0;
}

.vp-row:hover[b-024prpu0or] {
    background: var(--color-canvas-parchment);
}

.vp-row-name[b-024prpu0or] {
    font-weight: 600;
    color: var(--color-ink);
}

.vp-row-contact[b-024prpu0or] {
    color: var(--color-ink-muted-48);
    font-size: 0.85rem;
}

.vp-row-status[b-024prpu0or] {
    color: var(--color-ink-muted-48);
    font-style: italic;
    cursor: default;
}

.vp-row-status:hover[b-024prpu0or] {
    background: transparent;
}

.vp-row-create[b-024prpu0or] {
    color: var(--color-primary);
    font-weight: 600;
    border-top: 1px solid var(--color-hairline);
}

.vp-row-create:hover[b-024prpu0or] {
    background: #f0f7ff;
}

.vp-form-grid[b-024prpu0or] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem 1rem;
}

.vp-form-row[b-024prpu0or] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.vp-form-row:nth-child(1)[b-024prpu0or] {
    grid-column: 1 / -1;
}

/* Required marker now uses global `.label .req` (correct --color-danger, fixing
   the old #cc0000 drift). The scoped rule was removed. `.vp-form-row` is kept as
   genuine layout (flex column + nth-child grid-span), not equivalent to the
   global `.field` margin utility. */
/* /Pages/Accounting/AuditLogViewer.razor.rz.scp.css */
.nal-verify-ok[b-n4y65jn2hk] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: rgba(31, 138, 91,0.06);
    border: 1px solid rgba(31, 138, 91,0.2);
    border-radius: var(--radius-md);
    padding: 0.875rem 1.25rem;
    margin-bottom: 1rem;
}

.nal-verify-bad[b-n4y65jn2hk] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: rgba(193, 18, 31,0.08);
    border: 1px solid rgba(193, 18, 31,0.25);
    color: var(--color-danger);
    border-radius: var(--radius-md);
    padding: 0.875rem 1.25rem;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

.nal-verify-msg[b-n4y65jn2hk] {
    font-size: 0.875rem;
    color: var(--color-ink);
}

.nal-error[b-n4y65jn2hk] {
    background: rgba(193, 18, 31,0.08);
    border: 1px solid rgba(193, 18, 31,0.25);
    color: var(--color-danger);
    border-radius: var(--radius-md);
    padding: 0.75rem 1.25rem;
    margin-bottom: 1rem;
    font-size: 0.875rem;
}
/* /Pages/Billing/InvoiceDetail.razor.rz.scp.css */
/* The void-invoice modal renders through ConfirmDialog (global .modal* stack). */

/* ── Customer particulars card ────────────────────────────────────────
   Read-only mirror of the InvoiceForm's customer card, laid out as two
   rows × two columns:
     row 1:  Owner            | Pet
     row 2:  Owner address    | [Document date | Due date]
   The right cell of row 2 is itself a 50/50 nested grid for the two
   dates. Notes / Void reason (when present) drop below as full-width
   rows under a soft divider. */
.nid-particulars[b-d4d9iy0ry1] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px 40px;
    align-items: start;
}
.nid-particulars-dates[b-d4d9iy0ry1] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px 24px;
}
.nid-field[b-d4d9iy0ry1] { min-width: 0; }
/* Address (and the free-text Notes / Void reason rows) honour embedded
   line breaks so a multi-line address renders across as many lines as
   it needs. */
.nid-address[b-d4d9iy0ry1] { white-space: pre-line; }
.nid-particulars-extra[b-d4d9iy0ry1] {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--color-divider-soft);
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* Invoice lines sit in their own card beneath the particulars, matching
   the spacing the payments / refunds history cards use. */
.nid-lines-card[b-d4d9iy0ry1] { margin-top: 16px; }

/* Stack the particulars onto a single column on narrow viewports. */
@media (max-width: 640px) {
    .nid-particulars[b-d4d9iy0ry1] { grid-template-columns: 1fr; }
}

/* Stack Notes above Summary so neither gets squished on laptop / tablet
   widths — matches the InvoiceForm's close-row breakpoint. */
@media (max-width: 1024px) {
    .nid-row-close[b-d4d9iy0ry1] { grid-template-columns: 1fr; }
}

/* Treatment-plan cross-reference panel.
   Collapsible card sitting between the invoice header and the customer/lines
   card. Default-collapsed; expanded body holds the consultation picker, deep
   links, and an inline read-only ConsultationPlan. */
.nid-tp-card[b-d4d9iy0ry1] { padding: 0; }

.nid-tp-toggle[b-d4d9iy0ry1] {
    width: 100%;
    background: transparent;
    border: 0;
    padding: 14px 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    text-align: left;
    color: var(--color-ink);
    border-radius: var(--radius-lg);
}

.nid-tp-toggle:hover[b-d4d9iy0ry1] { background: rgba(0, 102, 204, 0.03); }

.nid-tp-toggle-label[b-d4d9iy0ry1] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.nid-tp-toggle-sub[b-d4d9iy0ry1] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    font-weight: 400;
}

.nid-tp-toggle-chevron[b-d4d9iy0ry1] {
    font-size: 14px;
    color: var(--color-ink-muted-48);
    transition: transform 150ms ease;
}

.nid-tp-toggle-chevron-open[b-d4d9iy0ry1] { transform: rotate(180deg); }

.nid-tp-body[b-d4d9iy0ry1] {
    border-top: 1px solid var(--color-hairline);
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.nid-tp-picker[b-d4d9iy0ry1] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-width: 32rem;
}

.nid-tp-links[b-d4d9iy0ry1] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.nid-tp-plan[b-d4d9iy0ry1] { margin-top: 4px; }

/* ── Notes (left) + Summary (right) ───────────────────────────────────
   Read-only mirror of the InvoiceForm's close row: the notes block takes
   the flexible left column, the totals summary the fixed-width right
   column. Collapses to a single column on narrow viewports. */
.nid-row-close[b-d4d9iy0ry1] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 18px;
    align-items: start;
    margin-top: 16px;
}

/* Read-only notes — honour embedded line breaks; muted placeholder when the
   invoice carries no owner-facing note. */
.nid-notes-text[b-d4d9iy0ry1] {
    font-size: 13px;
    color: var(--color-ink);
    line-height: 1.5;
    white-space: pre-line;
}
.nid-notes-empty[b-d4d9iy0ry1] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
}

/* ── Totals (Summary card) ────────────────────────────────────────────
   Two-column dl: label | value, right-aligned values, tabular nums. The
   grand-total row is emphasised; Balance Due (issued invoices) sits beneath
   a second rule as the final receipt line. Mirrors the form's .nif-totals. */
.nid-totals[b-d4d9iy0ry1] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 11px 14px;
    margin: 0;
}
.nid-totals dt[b-d4d9iy0ry1] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.2px;
    margin: 0;
}
.nid-totals dd[b-d4d9iy0ry1] {
    margin: 0;
    font-size: 13px;
    text-align: right;
    color: var(--color-ink);
    font-variant-numeric: tabular-nums;
}
.nid-totals-rule[b-d4d9iy0ry1] {
    grid-column: 1 / -1;
    height: 1px;
    background: var(--color-hairline);
    margin: 3px 0;
}
.nid-totals-grand-label[b-d4d9iy0ry1] {
    font-size: 15px !important;
    font-weight: 600;
    color: var(--color-ink) !important;
    align-self: center;
}
.nid-totals-grand-value[b-d4d9iy0ry1] {
    font-family: var(--font-display);
    font-size: 26px !important;
    font-weight: 600;
    letter-spacing: -0.4px;
    color: var(--color-ink) !important;
}
.nid-totals-balance-label[b-d4d9iy0ry1] {
    font-size: 13px !important;
    font-weight: 600;
    color: var(--color-ink) !important;
    align-self: center;
}
.nid-totals-balance-value[b-d4d9iy0ry1] {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.2px;
}

/* ── Payments / Refunds history cards ─────────────────────────────────── */

.nid-history-card[b-d4d9iy0ry1] {
    margin-top: 16px;
}

.nid-history-head[b-d4d9iy0ry1] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 14px;
}

/* The section-label carries its own bottom margin; collapse it inside the
   flex head so label and aggregate share one baseline. */
.nid-history-head .section-label[b-d4d9iy0ry1] {
    margin-bottom: 0;
}

.nid-history-total[b-d4d9iy0ry1] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.1px;
}

.nid-empty[b-d4d9iy0ry1] {
    margin: 0;
    font-size: 13px;
    color: var(--color-ink-muted-48);
}
/* /Pages/Billing/InvoiceForm.razor.rz.scp.css */
/* Page wrapper — extra bottom space so the sticky form bar never hides
   the last row. */
.nif-page[b-kbx6fkc2p4] {
    padding-bottom: 96px;
    max-width: 1080px;
}

/* ── Customer card · two-up date grid ─────────────────────────────
   The OwnerPetPicker (left as-is) takes a full-width field above; the
   document-date / due-date row sits beneath as a 50/50 split. The column
   gap MUST stay 16px: `.field-half` is `calc(50% - 8px)`, so two halves
   only fit on one row when the gap is 16px — a wider gap overflows 100%
   and bounces the second date onto its own row. */
.nif-page[b-kbx6fkc2p4]  .fields {
    gap: 16px;
}

/* ── Treatment plan (left) + Lines (right) ────────────────────────
   40/60 split — line items get the bulk of the horizontal space so
   the catalogue inputs stay roomy while the plan card still has room
   for the consultation picker and inline plan preview. */
.nif-row-plan[b-kbx6fkc2p4] {
    display: grid;
    grid-template-columns: 2fr 3fr;
    gap: 18px;
    align-items: start;
}

/* ── Treatment plan card ──────────────────────────────────────────
   Flex column so the disabled "Pull from consultation" button pins
   beneath the empty state with consistent gap. */
.nif-tp-card[b-kbx6fkc2p4] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.nif-tp-picker[b-kbx6fkc2p4] { display: flex; flex-direction: column; gap: 6px; }
/* Dropdown + icon-button on the same row. The select stretches to fill
   the remaining space; the action sits to its right as a 32px square. */
.nif-tp-picker-row[b-kbx6fkc2p4] { display: flex; gap: 8px; align-items: stretch; }
.nif-tp-picker-row .inp[b-kbx6fkc2p4] { flex: 1; min-width: 0; }
.nif-tp-view[b-kbx6fkc2p4] {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    background: var(--color-canvas);
    color: var(--color-ink-muted-48);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: border-color 0.12s ease, color 0.12s ease;
}
.nif-tp-view:hover[b-kbx6fkc2p4] {
    border-color: var(--color-primary);
    color: var(--color-primary);
    text-decoration: none;
}
.nif-tp-view svg[b-kbx6fkc2p4] { width: 14px; height: 14px; }
.nif-tp-plan[b-kbx6fkc2p4] { margin-top: 4px; }
.nif-tp-action[b-kbx6fkc2p4] {
    width: 100%;
    justify-content: center;
    margin-top: 4px;
    opacity: 0.5;
}

/* ── Lines card ───────────────────────────────────────────────────
   LineItemsEditor brings its own header/buttons; we trim the card's
   default padding-top so the editor sits flush. */
.nif-lines-card[b-kbx6fkc2p4] { padding: 0; overflow: hidden; }
.nif-lines-card[b-kbx6fkc2p4]  .lie-section { padding: 16px 18px 4px; }

/* ── Notes (left) + Summary (right) ───────────────────────────────
   Mirrors the row-plan layout but flipped — summary is the narrow
   fixed-width column on the right. */
.nif-row-close[b-kbx6fkc2p4] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 18px;
    align-items: start;
}

/* Notes block: textarea full-width with a small info hint underneath. */
.nif-notes[b-kbx6fkc2p4] {
    resize: vertical;
    min-height: 96px;
}
.nif-notes-hint[b-kbx6fkc2p4] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    font-size: 11px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.12px;
}
.nif-notes-hint svg[b-kbx6fkc2p4] { width: 13px; height: 13px; flex-shrink: 0; }

/* ── Totals (Summary card) ────────────────────────────────────────
   Two-column dl: label | value, right-aligned values, tabular nums.
   `+ Add discount` placeholder reads as a primary link; the rule sits
   as a grid-spanning div before the Total row. */
.nif-totals[b-kbx6fkc2p4] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 11px 14px;
    margin: 0;
}
.nif-totals dt[b-kbx6fkc2p4] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.2px;
    margin: 0;
}
.nif-totals dd[b-kbx6fkc2p4] {
    margin: 0;
    font-size: 13px;
    text-align: right;
    color: var(--color-ink);
    font-variant-numeric: tabular-nums;
}
.nif-totals-disc[b-kbx6fkc2p4] {
    color: var(--color-primary) !important;
    cursor: pointer;
}
.nif-totals-rule[b-kbx6fkc2p4] {
    grid-column: 1 / -1;
    height: 1px;
    background: var(--color-hairline);
    margin: 3px 0;
}
.nif-totals-grand-label[b-kbx6fkc2p4] {
    font-size: 15px !important;
    font-weight: 600;
    color: var(--color-ink) !important;
    align-self: center;
}
.nif-totals-grand-value[b-kbx6fkc2p4] {
    font-family: var(--font-display);
    font-size: 26px !important;
    font-weight: 600;
    letter-spacing: -0.4px;
    color: var(--color-ink) !important;
}

/* ── Sticky form bar ─────────────────────────────────────────────
   Pins under the form with a frosted parchment background. Bleeds to
   the page's edge by negative-margining the page padding (28px). */
.nif-formbar[b-kbx6fkc2p4] {
    position: sticky;
    bottom: 0;
    z-index: 8;
    margin: 24px -28px -24px;
    padding: 14px 28px;
    background: rgba(245, 245, 247, 0.86);
    backdrop-filter: var(--blur-frost);
    -webkit-backdrop-filter: var(--blur-frost);
    border-top: 1px solid var(--color-hairline);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.nif-formbar-saved[b-kbx6fkc2p4] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--color-ink-muted-48);
    min-height: 13px;
}
.nif-formbar-saved svg[b-kbx6fkc2p4] {
    width: 13px;
    height: 13px;
    color: var(--color-success);
}
.nif-formbar-acts[b-kbx6fkc2p4] {
    display: flex;
    gap: 8px;
}

/* ── Narrow layouts ──────────────────────────────────────────────
   Stack the two grids so line-item inputs and the totals card don't
   get squished on laptop / tablet widths. */
@media (max-width: 1024px) {
    .nif-row-plan[b-kbx6fkc2p4],
    .nif-row-close[b-kbx6fkc2p4] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Billing/RecordPaymentModal.razor.rz.scp.css */
/* RecordPaymentModal renders through the global .modal* stack (VetOS.Server/wwwroot/nimbus.css). */
/* /Pages/Billing/RecordRefundModal.razor.rz.scp.css */
/* RecordRefundModal renders through the global .modal* stack (VetOS.Server/wwwroot/nimbus.css). */
/* /Pages/Certificates/IssueCertificate.razor.rz.scp.css */
/* Required marker now uses global `.label .req`. The scoped rule was removed. */

.nci-helper[b-w3kldrmwe0] {
    font-size: 0.82rem;
    color: var(--color-ink-muted-80);
    margin: 0;
}

.nci-checkbox-row[b-w3kldrmwe0] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0;
    color: var(--color-ink-muted-80);
    font-size: 0.85rem;
}

.nci-layout[b-w3kldrmwe0] {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
}

.nci-form-col[b-w3kldrmwe0] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.nci-preview-col[b-w3kldrmwe0] {
    min-width: 0;
}

.nci-preview-sticky[b-w3kldrmwe0] {
    position: sticky;
    top: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.nci-preview-empty[b-w3kldrmwe0] {
    background: var(--color-canvas);
    border: 1px dashed rgba(0, 102, 204, 0.3);
    border-radius: var(--radius-md);
    padding: 2.5rem 1.5rem;
    color: var(--color-ink-muted-48);
    text-align: center;
    font-size: 0.85rem;
}

.nci-preview-empty p[b-w3kldrmwe0] {
    margin: 0;
}

.nci-letterhead-toggle[b-w3kldrmwe0] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.85rem;
    color: var(--color-primary);
    cursor: pointer;
    user-select: none;
}

.nci-letterhead-toggle input[type="checkbox"][b-w3kldrmwe0] {
    accent-color: var(--color-primary);
    cursor: pointer;
}

@media (max-width: 1024px) {
    .nci-layout[b-w3kldrmwe0] {
        grid-template-columns: 1fr;
    }
    .nci-preview-sticky[b-w3kldrmwe0] {
        position: static;
    }
}
/* /Pages/Certificates/Shared/CertificatePreview.razor.rz.scp.css */
.ncv-frame[b-enlhspfv8f] {
    background: var(--color-canvas-parchment);
    border: 1px solid rgba(0, 102, 204, 0.18);
    border-radius: var(--radius-md);
    padding: 1rem;
    overflow: auto;
    max-height: 720px;
}

/* Each page is a fixed-size box sized to the SCALED page footprint (set inline),
   containing a full-size iframe shrunk to fit via transform. The box carries the
   page chrome (white surface, hairline, elevation) and clips the iframe's unscaled
   layout box. Stacking boxes gives the multi-page preview; one box is the common
   single-page case. */
.ncv-pagebox[b-enlhspfv8f] {
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    box-shadow: var(--shadow-product);
    overflow: hidden;
    display: block;
}

/* Vertical separation between stacked pages; no gap above the first page. */
.ncv-pagebox + .ncv-pagebox[b-enlhspfv8f] {
    margin-top: 1rem;
}

/* The iframe renders the certificate via the canonical stylesheets, so it matches
   the issued PDF 1:1. Typography lives inside the iframe document; the page chrome
   lives on .ncv-pagebox above, so the iframe itself is borderless. */
.ncv-page[b-enlhspfv8f] {
    border: 0;
    transform-origin: top left;
    display: block;
}

.ncv-meta[b-enlhspfv8f] {
    margin-top: 0.5rem;
    font-size: 0.75rem;
    color: var(--color-ink-muted-48);
}

.ncv-dims[b-enlhspfv8f] {
    font-weight: 600;
    color: var(--color-primary);
}
/* /Pages/Consultations/ClinicalTimeline.razor.rz.scp.css */
.ct-timeline[b-a18bb4h2yp] {
    position: relative;
    padding: 0;
}

.ct-entry[b-a18bb4h2yp] {
    display: grid;
    grid-template-columns: 100px 32px 1fr;
    gap: 0;
    margin-bottom: 1.5rem;
    min-height: 48px;
}

.ct-date[b-a18bb4h2yp] {
    font-size: 0.8rem;
    color: var(--color-ink-muted-48);
    text-align: right;
    padding-top: 0.75rem;
    padding-right: 0.5rem;
    white-space: nowrap;
}

.ct-dot-line[b-a18bb4h2yp] {
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}

.ct-dot[b-a18bb4h2yp] {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--color-primary);
    margin-top: 0.85rem;
    flex-shrink: 0;
    z-index: 1;
}

.ct-line[b-a18bb4h2yp] {
    width: 2px;
    flex: 1;
    background: rgba(0, 102, 204, 0.25);
    margin-top: 4px;
}

.ct-entry:last-child .ct-line[b-a18bb4h2yp] {
    display: none;
}

.ct-content[b-a18bb4h2yp] {
    padding-left: 0.75rem;
}

.ct-expand-toggle[b-a18bb4h2yp] {
    font-size: 0.8rem;
    color: var(--color-primary);
    cursor: pointer;
    user-select: none;
}

.ct-expand-toggle:hover[b-a18bb4h2yp] {
    color: var(--color-primary);
}

.ct-details[b-a18bb4h2yp] {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid rgba(0, 0, 0, 0.06);
}
/* /Pages/Consultations/ConsultationEditor.razor.rz.scp.css */
/* Consultation editor — Apple v3 pass.
   Two-pane layout: notes/plan on the left, pet + transcription rail on the
   right. Sticky footer with primary save / finalize actions.
   Scoped tokens: ce- (Consultation Editor). */

/* The page header for the consultation editor is sticky on scroll so the primary
   Save / Start / Finalize actions remain reachable without a duplicate footer row.
   Offset is calibrated to clear the global 52px top-nav. */
.ce-page-header[b-qsuj7eb1vw] {
    position: sticky;
    top: 52px;
    z-index: 5;
    background: var(--color-canvas-parchment);
    margin: -8px -8px 0;
    padding: 8px 8px 12px;
}

.ce-title-row[b-qsuj7eb1vw] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.ce-title-row .page-title[b-qsuj7eb1vw] { margin: 0; }

/* ── Two-pane body ──────────────────────────────────────────────── */
.ce-pane[b-qsuj7eb1vw] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 18px;
}
.ce-pane-main[b-qsuj7eb1vw] { min-width: 0; display: flex; flex-direction: column; }
.ce-pane-side[b-qsuj7eb1vw] { display: flex; flex-direction: column; }

.ce-card-stack[b-qsuj7eb1vw] { margin-top: 14px; }

.ce-panel[b-qsuj7eb1vw] { display: flex; flex-direction: column; }

.ce-checkbox[b-qsuj7eb1vw] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    cursor: pointer;
}
.ce-checkbox input[type="checkbox"][b-qsuj7eb1vw] {
    width: 16px;
    height: 16px;
    accent-color: var(--color-primary);
}

/* ── Side rail ──────────────────────────────────────────────────── */
.ce-pet-row[b-qsuj7eb1vw] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}
/* Species-glyph tile (not initials) — composes `.ava lg` for the 36px circle
   layout, overriding the fill to parchment + a larger, lighter glyph. */
.ce-pet-tile[b-qsuj7eb1vw] {
    background: var(--color-canvas-parchment);
    color: var(--color-ink-muted-80);
    font-size: 18px;
    font-weight: 400;
}
.ce-pet-name[b-qsuj7eb1vw] {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.224px;
}
.ce-pet-meta[b-qsuj7eb1vw] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
    margin-top: 1px;
}
.ce-pet-demeanour[b-qsuj7eb1vw] { margin-top: 6px; }

/* The Weight label is a single baseline row so the "Recorded …" caption
   sits in the gutter to the right of "Weight (kg)" and never wraps to a
   second line (which would push the label + input out of vertical
   alignment with the other vitals fields). */
.ce-weight-label[b-qsuj7eb1vw] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
}
.ce-weight-label-text[b-qsuj7eb1vw] {
    flex: 0 1 auto;
    min-width: 0;
}

/* Small inline caption to the right of the Weight label that surfaces when
   the field has been pre-filled from the pet's most-recent recorded weight.
   Sized to defer to the input and clamped to one line. Goes away as soon as
   the vet edits the input. */
.ce-weight-prefill-chip[b-qsuj7eb1vw] {
    flex: 0 0 auto;
    color: var(--color-ink-muted-48);
    font-size: 0.72rem;
    font-weight: 400;
    letter-spacing: 0.1px;
    white-space: nowrap;
}

.ce-pet-card-header[b-qsuj7eb1vw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
}
.ce-pet-view-profile[b-qsuj7eb1vw] {
    text-decoration: none;
}
.ce-pet-view-profile:hover[b-qsuj7eb1vw] {
    text-decoration: none;
}

.ce-transcription-row[b-qsuj7eb1vw] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}
.ce-transcription-actions[b-qsuj7eb1vw] {
    display: flex;
    gap: 6px;
}

/* ── History card ───────────────────────────────────────────────────
   Compact, unobtrusive audit trail (action · actor · relative time),
   newest first. Scroll-capped so a long history stays small in the rail. */
.ce-history-list[b-qsuj7eb1vw] {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 220px;
    overflow-y: auto;
}
.ce-history-row[b-qsuj7eb1vw] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    padding: 6px 0;
    font-size: 12px;
    letter-spacing: -0.1px;
    border-bottom: 1px solid var(--color-hairline);
}
.ce-history-row:last-child[b-qsuj7eb1vw] {
    border-bottom: none;
    padding-bottom: 0;
}
.ce-history-action[b-qsuj7eb1vw] {
    font-weight: 600;
    color: var(--color-ink);
    white-space: nowrap;
}
.ce-history-sep[b-qsuj7eb1vw] {
    color: var(--color-ink-muted-48);
}
.ce-history-actor[b-qsuj7eb1vw] {
    color: var(--color-ink-muted-80);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 1 1 auto;
}
.ce-history-time[b-qsuj7eb1vw] {
    color: var(--color-ink-muted-48);
    white-space: nowrap;
    flex: 0 0 auto;
}
.ce-history-empty[b-qsuj7eb1vw] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
}

/* The footer now carries only the Back-to-patient link; the primary
   Save / Start / Finalize actions live in the (sticky) page header. */
.ce-footer[b-qsuj7eb1vw] {
    display: flex;
    gap: 14px;
    padding: 14px 0 0;
    margin: 18px 0 0;
}

@media (max-width: 1024px) {
    .ce-pane[b-qsuj7eb1vw] { grid-template-columns: 1fr; }
}
/* /Pages/Consultations/ConsultationHistoryExport.razor.rz.scp.css */
/* Consultation history export wizard. Scoped tokens: che-. */

.che-shell[b-x3j4knknoz] {
    max-width: 920px;
}

.che-stepper[b-x3j4knknoz] {
    margin-bottom: 20px;
}

.che-empty[b-x3j4knknoz] {
    color: var(--color-ink-muted-48);
}

.che-list-head[b-x3j4knknoz] {
    padding: 4px 4px 12px;
    border-bottom: 1px solid var(--color-hairline);
    margin-bottom: 4px;
    font-weight: 600;
}

.che-list[b-x3j4knknoz] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.che-row[b-x3j4knknoz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 4px;
    border-bottom: 1px solid var(--color-hairline);
}

.che-row:last-child[b-x3j4knknoz] {
    border-bottom: 0;
}

.che-check[b-x3j4knknoz] {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}

.che-row-check[b-x3j4knknoz] {
    flex: 1 1 auto;
    min-width: 0;
}

.che-check-disabled[b-x3j4knknoz] {
    cursor: not-allowed;
    opacity: 0.6;
}

.che-row-main[b-x3j4knknoz] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.che-row-date[b-x3j4knknoz] {
    font-weight: 600;
    line-height: 1.2;
}

.che-row-meta[b-x3j4knknoz] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.che-status[b-x3j4knknoz] {
    flex-shrink: 0;
}

.che-attach[b-x3j4knknoz] {
    margin-top: 16px;
}

.che-attach-body[b-x3j4knknoz] {
    display: flex;
    flex-direction: column;
}

.che-attach-title[b-x3j4knknoz] {
    font-weight: 600;
    line-height: 1.2;
}

.che-attach-sub[b-x3j4knknoz] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
    line-height: 1.3;
}

.che-editor-card[b-x3j4knknoz] {
    padding: 12px;
}

.che-foot[b-x3j4knknoz] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 20px;
}
/* /Pages/Consultations/ConsultationList.razor.rz.scp.css */
/* Consultation list — uses the shared .list-grid table format from
   nimbus.css. Only column-specific overrides live here.
   Scoped tokens: cl- (Consultation List). */

.cl-complaint[b-eeuzvhv2i7] {
    font-style: italic;
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Toolbar action group — right-aligned cluster of buttons. Replaces the
   previous single `margin-left:auto` anchor with a flex group so the new
   "+ Create consultation" primary button sits beside "Manage templates". */
.cl-toolbar-actions[b-eeuzvhv2i7] {
    margin-left: auto;
    display: flex;
    gap: 8px;
}

/* Empty-state action pair — primary picker trigger + secondary pet-list link. */
.cl-empty-actions[b-eeuzvhv2i7] {
    display: flex;
    gap: 8px;
    justify-content: center;
    margin-top: 8px;
}

/* Row affordance — chevron at the right edge plus a styled link on the first
   cell. The whole row is click-able; the link is for users who navigate by
   tab + Enter or who expect a visible link cue. */
.cl-row-link[b-eeuzvhv2i7] {
    color: var(--color-ink);
    text-decoration: none;
    font-weight: 600;
}
.cl-row-link:hover[b-eeuzvhv2i7] { color: var(--color-primary); text-decoration: underline; }
.cl-row-link:focus-visible[b-eeuzvhv2i7] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 2px;
    border-radius: var(--radius-xs);
}

.cl-chev-col[b-eeuzvhv2i7] {
    width: 24px;
    text-align: right;
    padding-right: 8px;
}
.cl-chev[b-eeuzvhv2i7] {
    display: inline-block;
    color: var(--color-ink-muted-48);
    font-size: 18px;
    line-height: 1;
    transition: transform 0.12s ease, color 0.12s ease;
}
.row-clickable:hover .cl-chev[b-eeuzvhv2i7] {
    color: var(--color-primary);
    transform: translateX(2px);
}
/* /Pages/Consultations/NewConsultation.razor.rz.scp.css */
/* New consultation — Apple v3 pass.
   Vet picker + template grid + chief-complaint textarea, footer actions.
   Scoped tokens: nc- (New Consultation). */

.nc-shell[b-svx2n7wwis] { max-width: 920px; }
.nc-card-stack[b-svx2n7wwis] { margin-top: 14px; }

/* ── Vet picker ─────────────────────────────────────────────────── */
.nc-vet-grid[b-svx2n7wwis] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
.nc-vet-card[b-svx2n7wwis] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    background: var(--color-canvas);
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    transition: border-color 0.12s, background 0.12s;
}
.nc-vet-card:hover[b-svx2n7wwis] { border-color: #c0c0c0; }
.nc-vet-card-on[b-svx2n7wwis] {
    border-color: var(--color-primary);
    background: var(--color-info-tint);
}
.nc-vet-name[b-svx2n7wwis] {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.2px;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.nc-vet-check[b-svx2n7wwis] { color: var(--color-primary); }

/* ── Template grid ──────────────────────────────────────────────── */
.nc-template-grid[b-svx2n7wwis] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}
.nc-template-card[b-svx2n7wwis] {
    padding: 14px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    background: var(--color-canvas);
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    display: flex;
    flex-direction: column;
    gap: 4px;
    transition: border-color 0.12s, background 0.12s;
}
.nc-template-card:hover[b-svx2n7wwis] { border-color: #c0c0c0; }
.nc-template-card-on[b-svx2n7wwis] {
    border-color: var(--color-primary);
    background: var(--color-info-tint);
}
.nc-template-card-hdr[b-svx2n7wwis] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}
.nc-template-icon[b-svx2n7wwis] {
    width: 32px;
    height: 32px;
    border-radius: var(--radius-sm);
    background: var(--color-canvas-parchment);
    color: var(--color-ink-muted-80);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.nc-template-name[b-svx2n7wwis] {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.224px;
}
.nc-template-meta[b-svx2n7wwis] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
}
.nc-default-pill[b-svx2n7wwis] {
    height: 18px;
    font-size: 9px;
    padding: 0 6px;
    font-weight: 700;
}

/* ── Footer ─────────────────────────────────────────────────────── */
.nc-complaint[b-svx2n7wwis] {
    min-height: 100px;
}
.nc-foot[b-svx2n7wwis] {
    display: flex;
    justify-content: flex-end;
    margin-top: 14px;
    gap: 8px;
}

@media (max-width: 900px) {
    .nc-vet-grid[b-svx2n7wwis] { grid-template-columns: repeat(2, 1fr); }
    .nc-template-grid[b-svx2n7wwis] { grid-template-columns: repeat(2, 1fr); }
}
/* /Pages/Consultations/TemplateBuilder.razor.rz.scp.css */
/* Sections group — a subordinate collection beneath the Template Details card.
   The soft left rule + indent signals the hierarchy; the outer/inner .form-stack
   own the (uniform 28px) vertical rhythm. */
.tb-sections[b-zc85fmuj6m] {
    padding-left: var(--space-md);
    border-left: 1px solid var(--color-divider-soft);
}

.tb-sections-head[b-zc85fmuj6m] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-sm);
}

.tb-sections-hint[b-zc85fmuj6m] {
    margin: 0 0 var(--space-sm);
    color: var(--color-ink-muted-48);
    font-size: 13px;
    letter-spacing: -0.15px;
}

/* Plus glyph inside the Add section / Add field buttons. */
.tb-sections .btn svg[b-zc85fmuj6m] {
    width: 14px;
    height: 14px;
}

/* ── Section card header ──────────────────────────────────────────────── */
.tb-section-head[b-zc85fmuj6m] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-sm);
    margin-bottom: var(--space-md);
}

/* The section title reuses the global .card-title look but sits inline in the
   header row, so drop its default bottom margin. */
.tb-section-title[b-zc85fmuj6m] {
    margin-bottom: 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tb-section-actions[b-zc85fmuj6m] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.tb-section-name[b-zc85fmuj6m] {
    max-width: 420px;
}

/* ── Icon button (reorder) — mirrors LineItemsEditor .lie-icon-btn ──────── */
.tb-icon-btn[b-zc85fmuj6m] {
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    background: var(--color-canvas);
    color: var(--color-ink-muted-48);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color 0.12s ease, color 0.12s ease, background 0.12s ease;
}

.tb-icon-btn:hover:not(:disabled)[b-zc85fmuj6m] {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.tb-icon-btn:focus-visible[b-zc85fmuj6m] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 1px;
}

.tb-icon-btn:disabled[b-zc85fmuj6m] {
    opacity: 0.4;
    cursor: default;
}

.tb-icon-btn svg[b-zc85fmuj6m] {
    width: 15px;
    height: 15px;
}

/* ── Remove control — ghost trash, muted at rest, red on hover ──────────── */
.tb-remove[b-zc85fmuj6m] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 0;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--color-ink-muted-48);
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease;
}

.tb-remove:hover[b-zc85fmuj6m] {
    background: var(--color-danger-tint);
    color: var(--color-danger);
}

.tb-remove:focus-visible[b-zc85fmuj6m] {
    outline: none;
    box-shadow: var(--shadow-focus);
}

.tb-remove svg[b-zc85fmuj6m] {
    width: 15px;
    height: 15px;
}

/* ── Field table ──────────────────────────────────────────────────────── */
.tb-field-table[b-zc85fmuj6m] {
    margin-bottom: var(--space-sm);
}

.tb-field-table .inp[b-zc85fmuj6m],
.tb-field-table .sel[b-zc85fmuj6m] {
    font-size: 12.5px;
}

.tb-col-required[b-zc85fmuj6m] {
    width: 70px;
    text-align: center;
}

.tb-col-actions[b-zc85fmuj6m] {
    width: 120px;
}

.tb-muted[b-zc85fmuj6m] {
    color: var(--color-ink-muted-48);
}

/* TextArea default-value sub-row — full-width beneath its field row. */
.tb-default-row > td[b-zc85fmuj6m] {
    padding-top: 4px;
    padding-bottom: 10px;
}

.tb-default-input[b-zc85fmuj6m] {
    width: 100%;
}

.tb-add-field[b-zc85fmuj6m] {
    margin-top: 4px;
}
/* /Pages/Consultations/WeightChart.razor.rz.scp.css */
.wc-chart[b-smiyj7wq3g] {
    width: 100%;
    max-width: 700px;
    height: auto;
}

.wc-header[b-smiyj7wq3g] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

/* Voided rows stay visible but struck-through and muted, and carry no actions. */
.wc-voided[b-smiyj7wq3g] {
    text-decoration: line-through;
    color: var(--color-ink-muted-48);
    opacity: 0.7;
}

.wc-tag[b-smiyj7wq3g] {
    display: inline-block;
    margin-left: 0.5rem;
    padding: 0.05rem 0.45rem;
    border-radius: var(--radius-pill);
    background: rgba(0, 0, 0, 0.06);
    font-size: 11px;
    text-decoration: none;
    letter-spacing: 0;
}

.wc-actions[b-smiyj7wq3g] {
    text-align: right;
    white-space: nowrap;
}

.wc-actions .btn + .btn[b-smiyj7wq3g] {
    margin-left: 0.375rem;
}

.wc-void-btn[b-smiyj7wq3g] {
    color: #c4314b;
}

.wc-void-btn:hover[b-smiyj7wq3g] {
    background: rgba(196, 49, 75, 0.08);
}

.wc-readonly[b-smiyj7wq3g] {
    font-size: 12px;
    font-style: italic;
}
/* /Pages/Dashboard/Dashboard.razor.rz.scp.css */
.dsh-pet-meta[b-radhp6w07a] {
    margin-top: 2px;
    font-size: 12px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.192px;
}

.dsh-type-dot[b-radhp6w07a] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: var(--radius-pill);
    margin-right: 8px;
    vertical-align: middle;
}

.dsh-waiting[b-radhp6w07a] {
    color: var(--color-ink-muted-48);
}
/* /Pages/Estimates/EstimateDetail.razor.rz.scp.css */
.ned-row-current[b-gz5qy8gop9] {
    background: rgba(0, 102, 204, 0.05);
}
/* /Pages/Inventory/TaxRateList.razor.rz.scp.css */
.nti-add-row[b-e6k3huu81j] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.nti-add-row .inp[b-e6k3huu81j] {
    flex: 1 1 180px;
    min-width: 140px;
}

.nti-default-toggle[b-e6k3huu81j] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    color: var(--color-ink);
    padding: 0 0.5rem;
}

.nti-hint[b-e6k3huu81j] {
    margin: 0.6rem 0 0;
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
}
/* /Pages/Launcher/Launcher.razor.rz.scp.css */
/* "All features" launcher. Cards reuse the global Nimbus sh-* / nim-icon-tile
   classes (see nimbus.css); only the search box + empty state are scoped here.
   Prefix: lau- (scoped CSS isolation convention). */

.lau-toolbar[b-gzfeajotzx] {
    margin: 0 0 24px;
}

/* Composes global `div.search-input` (pill + magnifier); only the width cap is scoped. */
.lau-toolbar .search-input[b-gzfeajotzx] {
    max-width: 420px;
}

.lau-empty[b-gzfeajotzx] {
    padding: 28px 4px;
    color: var(--color-ink-muted-48, #8a8a8e);
    font-size: 14px;
    letter-spacing: -0.2px;
}
/* /Pages/Owners/OwnerDetail.razor.rz.scp.css */
/* Owner detail page — two-column layout per Nimbus v3 reference.
   Scoped tokens: nodp- (Nimbus Owner Detail Page). */

.nodp-grid[b-6kaau7joki] {
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 16px;
    align-items: start;
}

.nodp-aside[b-6kaau7joki] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    position: sticky;
    top: calc(var(--app-topnav-height) + 12px);
}

.nodp-main[b-6kaau7joki] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}

@media (max-width: 980px) {
    .nodp-grid[b-6kaau7joki] { grid-template-columns: 1fr; }
    .nodp-aside[b-6kaau7joki] { position: static; }
}

/* ── Identity card ──────────────────────────────────────────── */
.nodp-identity[b-6kaau7joki] { padding: 18px; }
.nodp-identity-head[b-6kaau7joki] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 12px;
}
.nodp-identity-name-block[b-6kaau7joki] {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.nodp-name[b-6kaau7joki] {
    font-family: var(--font-display);
    font-size: 20px;
    font-weight: 700;
    letter-spacing: -0.32px;
    color: var(--color-ink);
    margin: 0;
    line-height: 1.2;
}
.nodp-meta[b-6kaau7joki] {
    font-size: 11.5px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.12px;
    margin: 0;
    line-height: 1.35;
}
.nodp-meta-sep[b-6kaau7joki] { margin: 0 4px; opacity: 0.55; }
.nodp-id[b-6kaau7joki] { font-family: var(--font-mono); font-size: 11px; }

.nodp-identity-actions[b-6kaau7joki] {
    display: flex;
    align-items: stretch;
    gap: 6px;
}
.nodp-identity-actions .nodp-edit-btn[b-6kaau7joki] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    flex: 1;
}
.nodp-status-btn[b-6kaau7joki] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 28px;
    flex-shrink: 0;
    padding: 0;
    color: var(--color-ink-muted-80);
}
.nodp-status-btn-deactivate:hover[b-6kaau7joki] {
    color: var(--color-danger);
    border-color: rgba(193, 18, 31, 0.30);
    background: var(--color-danger-tint);
}

/* ── Contact card ───────────────────────────────────────────── */
.nodp-contact[b-6kaau7joki] { padding: 18px; }
.nodp-contact .section-label[b-6kaau7joki] { margin-bottom: 12px; }
.nodp-contact-list[b-6kaau7joki] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.nodp-contact-list li[b-6kaau7joki] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 13px;
    letter-spacing: -0.2px;
    color: var(--color-ink);
    line-height: 1.4;
}
.nodp-contact-list svg[b-6kaau7joki] {
    flex: 0 0 14px;
    margin-top: 3px;
    color: var(--color-ink-muted-48);
}
.nodp-contact-val[b-6kaau7joki] {
    word-break: break-word;
}
.nodp-contact-addr-lines[b-6kaau7joki] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

/* ── Quick stats ────────────────────────────────────────────── */
.nodp-stats[b-6kaau7joki] { padding: 18px; }
.nodp-stats .section-label[b-6kaau7joki] { margin-bottom: 14px; }
.nodp-stats-grid[b-6kaau7joki] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px 24px;
}
.nodp-stat-label[b-6kaau7joki] {
    font-size: 11px;
    font-weight: 400;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.1px;
    margin-bottom: 4px;
}
.nodp-stat-val[b-6kaau7joki] {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -0.4px;
    color: var(--color-ink);
    line-height: 1.1;
}
.nodp-stat-money[b-6kaau7joki] { font-variant-numeric: tabular-nums; }
.nodp-stat-owed[b-6kaau7joki] { color: var(--color-danger); }

/* ── Card headers shared by linked-pets + recent-activity ───── */
.nodp-card-head[b-6kaau7joki] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 18px 14px;
    border-bottom: 1px solid var(--color-divider-soft);
}
.nodp-card-head .section-label[b-6kaau7joki] { margin: 0; }

/* ── Linked pets ────────────────────────────────────────────── */
.nodp-pets[b-6kaau7joki] { padding: 0; overflow: hidden; }
.nodp-pets-empty[b-6kaau7joki] {
    padding: 28px 18px;
    text-align: center;
    color: var(--color-ink-muted-48);
    font-size: 13px;
    letter-spacing: -0.2px;
}
.nodp-pet-list[b-6kaau7joki] {
    list-style: none;
    margin: 0;
    padding: 0;
}
.nodp-pet-row[b-6kaau7joki] {
    display: grid;
    grid-template-columns: 36px 1fr auto auto;
    gap: 14px;
    align-items: center;
    padding: 14px 18px;
    border-bottom: 1px solid var(--color-divider-soft);
    cursor: pointer;
    transition: background 0.12s ease;
}
.nodp-pet-row:last-child[b-6kaau7joki] { border-bottom: none; }
.nodp-pet-row:hover[b-6kaau7joki] { background: var(--color-canvas-parchment); }
.nodp-pet-row-muted[b-6kaau7joki] { opacity: 0.55; }
.nodp-pet-row-muted:hover[b-6kaau7joki] { opacity: 0.8; }

/* Pet name + demeanour badge sit on the same line for active patients so
   handling cues are visible without scanning the tags column. */
.nodp-pet-name-row[b-6kaau7joki] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 2px;
}
.nodp-pet-name-row .nodp-pet-name[b-6kaau7joki] { margin-bottom: 0; }

/* Pets section toolbar — toggle + add-pet button live on the right. */
.nodp-pets-actions[b-6kaau7joki] {
    display: inline-flex;
    align-items: center;
    gap: 12px;
}
.nodp-toggle[b-6kaau7joki] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--color-ink-muted-48);
    cursor: pointer;
    user-select: none;
}
.nodp-toggle input[type="checkbox"][b-6kaau7joki] {
    width: 14px;
    height: 14px;
    accent-color: var(--color-primary);
}

.nodp-pet-body[b-6kaau7joki] { min-width: 0; }
.nodp-pet-name[b-6kaau7joki] {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: -0.224px;
    margin-bottom: 2px;
}
.nodp-pet-meta[b-6kaau7joki] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.12px;
}

.nodp-pet-tags[b-6kaau7joki] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.nodp-pet-actions[b-6kaau7joki] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.nodp-icon-btn[b-6kaau7joki] {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-sm);
    color: var(--color-ink-muted-48);
    background: transparent;
    border: 1px solid transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
}
.nodp-icon-btn:hover[b-6kaau7joki] {
    background: var(--color-canvas);
    border-color: var(--color-hairline);
    color: var(--color-ink);
}

/* ── Recent activity ────────────────────────────────────────── */
.nodp-activity[b-6kaau7joki] { padding: 0; }
.nodp-activity-empty[b-6kaau7joki] {
    padding: 28px 18px;
    text-align: center;
    color: var(--color-ink-muted-48);
    font-size: 13px;
    letter-spacing: -0.2px;
}
.nodp-activity-list[b-6kaau7joki] {
    list-style: none;
    margin: 0;
    padding: 4px 0;
}
.nodp-activity-row[b-6kaau7joki] {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 12px 18px;
    border-bottom: 1px solid var(--color-hairline);
}
.nodp-activity-row:last-child[b-6kaau7joki] { border-bottom: none; }
.nodp-activity-kind[b-6kaau7joki] {
    flex: 0 0 auto;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    padding: 3px 8px;
    border-radius: var(--radius-pill);
    background: #eef3f8;
    color: #324b66;
}
.nodp-activity-appointment[b-6kaau7joki] { background: #e8f1ff; color: var(--color-primary-hover); }
.nodp-activity-invoice[b-6kaau7joki] { background: #fef3e7; color: #8a4b00; }
.nodp-activity-body[b-6kaau7joki] { flex: 1 1 auto; min-width: 0; }
.nodp-activity-title[b-6kaau7joki] {
    font-size: 14px;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: -0.224px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.nodp-activity-title a[b-6kaau7joki] { color: inherit; text-decoration: none; }
.nodp-activity-title a:hover[b-6kaau7joki] { text-decoration: underline; }
.nodp-activity-status[b-6kaau7joki] {
    font-size: 11px;
    font-weight: 600;
    color: var(--color-ink-muted-48);
}
.nodp-activity-meta[b-6kaau7joki] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.15px;
    margin-top: 2px;
}

/* ── Portal link history ──────────────────────────────────── */
.nodp-portal-link-none[b-6kaau7joki] {
    color: var(--color-ink-muted-48);
    font-style: italic;
}
.nodp-portal-history[b-6kaau7joki] {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--color-hairline);
}
.nodp-portal-history-label[b-6kaau7joki] {
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-ink-muted-48);
    margin-bottom: 6px;
}
.nodp-portal-history-list[b-6kaau7joki] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.nodp-portal-history-row[b-6kaau7joki] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px;
    font-size: 12px;
}
.nodp-portal-history-action[b-6kaau7joki] { font-weight: 600; color: var(--color-ink); }
.nodp-portal-history-actor[b-6kaau7joki] { color: var(--color-ink-muted-48); }
.nodp-portal-history-when[b-6kaau7joki] {
    margin-left: auto;
    color: var(--color-ink-muted-48);
    font-variant-numeric: tabular-nums;
}

/* /Pages/Owners/OwnerForm.razor.rz.scp.css */
/* Owner form — Apple v3 pass.
   Adds the unsaved-changes amber chip and 720px max width matching the
   design. Action bar lives in the shared `.form-footer` sticky utility.
   Scoped tokens: of- (Owner Form). */

.of-form[b-feebdz2nv9] { max-width: 720px; }

.of-title-row[b-feebdz2nv9] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
/* /Pages/Owners/OwnerList.razor.rz.scp.css */
/* ── Owner cell ─────────────────────────────────────────────── */
.ownl-cell[b-oxfoq2443r] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    white-space: nowrap;
}

/* ── Contact column ─────────────────────────────────────────── */
.ownl-contact-phone[b-oxfoq2443r] {
    font-size: 13px;
    color: var(--color-ink);
}
.ownl-contact-email[b-oxfoq2443r] {
    font-size: 11.5px;
    color: var(--color-ink-muted-48);
}

/* ── Address column ─────────────────────────────────────────── */
.ownl-address-cell[b-oxfoq2443r] {
    font-size: 12.5px;
    color: var(--color-ink);
    line-height: 1.5;
}
.ownl-address-postal[b-oxfoq2443r] {
    font-size: 11.5px;
    color: var(--color-ink-muted-48);
}

/* ── Pet count ──────────────────────────────────────────────── */
.ownl-pet-count[b-oxfoq2443r] {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-ink);
}
/* /Pages/Owners/Registration.razor.rz.scp.css */
/* Client-registration wizard — Apple v3 pass.
   3 steps: owner search → pet details → done.
   Scoped tokens: rgw- (Registration WizardI). */

.reg-shell[b-o09728ts03] { max-width: 840px; }

.reg-stepper[b-o09728ts03] { margin: 0 0 24px; }

/* ── Step 1: shared OwnerPetPicker (OwnerOnly) + tip line ──────────
   Card stacking owned by the global .form-stack utility in nimbus.css. */

.reg-search-tip[b-o09728ts03] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
    margin-top: 6px;
    letter-spacing: -0.12px;
}

/* No-match prompt + "Create new owner" CTA (rendered in the picker's NoMatchContent slot). */
.reg-nomatch[b-o09728ts03] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: 14px;
}
.reg-nomatch-msg[b-o09728ts03] {
    font-size: 13px;
    color: var(--color-ink);
    margin: 0;
    letter-spacing: -0.12px;
}

/* ── Step 2: owner pill (when reusing an existing owner) ─────────── */
.reg-owner-pill[b-o09728ts03] { display: flex; align-items: center; gap: 14px; }
.reg-owner-pill-body[b-o09728ts03] { flex: 1; min-width: 0; }
.reg-owner-pill-name[b-o09728ts03] {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.224px;
}
.reg-owner-pill-meta[b-o09728ts03] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    margin-top: 2px;
}

.reg-step-foot[b-o09728ts03] {
    display: flex;
    justify-content: space-between;
    margin-top: 8px;
}

/* ── Step 3: done ────────────────────────────────────────────────── */
.reg-done-wrap[b-o09728ts03] {
    max-width: 520px;
    margin: 32px auto 0;
}
/* Stepper aligns left-of-center with the welcome card so they share an axis. */
.reg-done-stepper[b-o09728ts03] {
    justify-content: center;
    margin: 0 0 24px;
}
.reg-done-card[b-o09728ts03] {
    padding: 48px 32px;
    text-align: center;
}
.reg-done-icon[b-o09728ts03] {
    width: 64px;
    height: 64px;
    border-radius: var(--radius-lg);
    background: var(--color-success-tint);
    color: var(--color-success);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 18px;
}
.reg-done-title[b-o09728ts03] {
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 600;
    letter-spacing: -0.224px;
    margin: 0 0 6px;
    line-height: 1.2;
}
.reg-done-sub[b-o09728ts03] {
    font-size: 14px;
    color: var(--color-ink-muted-80);
    margin: 0 0 24px;
    letter-spacing: -0.224px;
    line-height: 1.43;
}
.reg-done-actions[b-o09728ts03] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.reg-done-actions .btn[b-o09728ts03] { justify-content: center; }
/* /Pages/Pets/PetDetail.razor.rz.scp.css */
/* Pet detail — Apple v3 pass.
   Hero with avatar tile + large demeanour badge, three tabs, two-column body.
   Scoped tokens: pd- (Pet Detail). */

.pd-crumb[b-lw5yylsk4t] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: var(--color-ink-muted-48);
    margin-bottom: 12px;
}
.pd-crumb a[b-lw5yylsk4t] { color: var(--color-primary); }
.pd-crumb .crumb-sep[b-lw5yylsk4t] { color: var(--color-ink-muted-48); }

.pd-hero[b-lw5yylsk4t] {
    display: grid;
    grid-template-columns: 88px 1fr auto;
    gap: 18px;
    align-items: center;
    padding: 18px 20px;
}

/* Distinct 88px hero tile — no global equivalent (`.ava.xl` is 56px + circle).
   Kept bespoke; renamed off the `avatar` segment for the cohesion ratchet. */
.pd-hero-tile[b-lw5yylsk4t] {
    width: 88px;
    height: 88px;
    border-radius: var(--radius-lg);
    background: var(--color-canvas-parchment);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.pd-hero-glyph[b-lw5yylsk4t] {
    font-size: 40px;
    line-height: 1;
}

.pd-hero-body[b-lw5yylsk4t] { min-width: 0; }
.pd-hero-name-row[b-lw5yylsk4t] {
    display: flex;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
}
.pd-hero-name[b-lw5yylsk4t] {
    font-family: var(--font-display);
    font-size: 30px;
    font-weight: 600;
    letter-spacing: -0.224px;
    margin: 0;
    line-height: 1.1;
}
.pd-hero-meta[b-lw5yylsk4t] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
    margin-top: 4px;
    letter-spacing: -0.2px;
}
.pd-hero-stats[b-lw5yylsk4t] {
    display: flex;
    gap: 18px;
    margin-top: 10px;
    font-size: 12px;
    color: var(--color-ink-muted-80);
    flex-wrap: wrap;
}
.pd-hero-stats .muted[b-lw5yylsk4t] {
    color: var(--color-ink-muted-48);
    margin-right: 4px;
}
.pd-hero-chip[b-lw5yylsk4t] {
    font-variant-numeric: tabular-nums;
    letter-spacing: 0;
}
.pd-hero-demeanour[b-lw5yylsk4t] {
    margin-top: 12px;
}
.pd-demeanour-chip[b-lw5yylsk4t] {
    position: relative;
    display: inline-block;
}
.pd-demeanour-clear[b-lw5yylsk4t] {
    position: absolute;
    top: -6px;
    right: -6px;
    width: 18px;
    height: 18px;
    border-radius: var(--radius-pill);
    border: 1px solid #d0d0d6;
    background: var(--color-canvas);
    color: #4a4a52;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    padding: 0;
    transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}
.pd-demeanour-clear:hover:not(:disabled)[b-lw5yylsk4t] {
    background: var(--color-canvas-parchment);
    color: var(--color-ink);
    border-color: #b0b0b8;
}
.pd-demeanour-clear:disabled[b-lw5yylsk4t] {
    cursor: default;
    opacity: 0.5;
}
.pd-demeanour-set[b-lw5yylsk4t] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border-radius: var(--radius-pill);
    border: 1px dashed #b0b0b8;
    color: #4a4a52;
    background: transparent;
    padding: 4px 12px;
    font-size: 12px;
    font-weight: 600;
}
.pd-demeanour-set:hover[b-lw5yylsk4t] {
    background: var(--color-canvas-parchment);
    color: var(--color-ink);
    border-color: #8a8a92;
    border-style: solid;
}
.pd-demeanour-options[b-lw5yylsk4t] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.pd-demeanour-option[b-lw5yylsk4t] {
    border: 1px solid transparent;
    background: transparent;
    padding: 2px;
    border-radius: var(--radius-pill);
    cursor: pointer;
}
.pd-demeanour-option:hover:not(:disabled)[b-lw5yylsk4t] {
    border-color: #d0d0d6;
}
.pd-demeanour-option:disabled[b-lw5yylsk4t] {
    cursor: default;
    opacity: 0.5;
}
.pd-demeanour-empty[b-lw5yylsk4t] {
    color: var(--color-ink-muted-80);
    font-size: 13px;
}

.pd-hero-actions[b-lw5yylsk4t] {
    display: flex;
    gap: 6px;
    align-self: start;
}
.pd-icon-btn[b-lw5yylsk4t] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    background: var(--color-canvas);
    color: var(--color-ink);
    padding: 0;
    cursor: pointer;
    text-decoration: none;
    transition: border-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
}
.pd-icon-btn:hover[b-lw5yylsk4t] {
    border-color: var(--color-primary-hover);
    color: var(--color-primary-hover);
}
.pd-icon-btn:focus-visible[b-lw5yylsk4t] {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.18);
    border-color: var(--color-primary-focus);
}
.pd-icon-btn-trash:hover[b-lw5yylsk4t] {
    color: var(--color-danger);
    border-color: var(--color-danger);
}
.pd-icon-btn-restore:hover[b-lw5yylsk4t] {
    color: var(--color-success);
    border-color: var(--color-success);
}

/* ── Details body ───────────────────────────────────────────────── */
.pd-grid[b-lw5yylsk4t] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 18px;
}
.pd-col-main[b-lw5yylsk4t], .pd-col-side[b-lw5yylsk4t] {
    display: flex;
    flex-direction: column;
}
.pd-card-stack[b-lw5yylsk4t] { margin-top: 14px; }

.pd-info-grid[b-lw5yylsk4t] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
}
.pd-info-label[b-lw5yylsk4t] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
}
.pd-info-value[b-lw5yylsk4t] {
    font-size: 14px;
    font-weight: 600;
    margin-top: 2px;
    letter-spacing: -0.224px;
}

.pd-owner-row[b-lw5yylsk4t] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}
.pd-owner-body[b-lw5yylsk4t] { min-width: 0; }
.pd-owner-name[b-lw5yylsk4t] {
    font-size: 14px;
    font-weight: 600;
    letter-spacing: -0.224px;
}
.pd-owner-actions[b-lw5yylsk4t] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.pd-owner-cta[b-lw5yylsk4t] {
    width: 100%;
    justify-content: center;
}

.pd-change-owner-empty[b-lw5yylsk4t] {
    font-size: 13px;
    color: var(--color-ink-muted-48);
    margin-top: 8px;
}
.pd-change-owner-list[b-lw5yylsk4t] {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 280px;
    overflow-y: auto;
}
.pd-change-owner-row[b-lw5yylsk4t] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 12px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
}
.pd-change-owner-info[b-lw5yylsk4t] { min-width: 0; }

.pd-stat-value[b-lw5yylsk4t] {
    font-family: var(--font-display);
    font-size: 22px;
    font-weight: 600;
    letter-spacing: -0.2px;
    margin-top: 2px;
}

@media (max-width: 1024px) {
    .pd-hero[b-lw5yylsk4t] { grid-template-columns: 72px 1fr auto; }
    .pd-grid[b-lw5yylsk4t] { grid-template-columns: 1fr; }
}
/* /Pages/Pets/PetForm.razor.rz.scp.css */
/* Pet form — Apple v3 pass.
   Adds the unsaved-changes amber chip and stacks cards at 840px max width.
   Scoped tokens: pf- (Pet Form). */

.pf-form[b-5so6o7lsd1] { max-width: 840px; }

.pf-title-row[b-5so6o7lsd1] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
/* /Pages/Pets/PetList.razor.rz.scp.css */
/* ── Pet name cell ──────────────────────────────────────────── */
.ptl-name-cell[b-ndafbsdwzn] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    white-space: nowrap;
}

/* ── Loading overlay ────────────────────────────────────────── */
.ptl-tbl-wrap[b-ndafbsdwzn] {
    position: relative;
    transition: opacity 0.15s ease;
}

.ptl-tbl-wrap-loading[b-ndafbsdwzn] {
    opacity: 0.55;
    pointer-events: none;
}

/* .actions-col and .icon-btn are global — defined in nimbus.css */
/* /Pages/PurchaseOrders/PurchaseOrderDetail.razor.rz.scp.css */
/* The cancel-PO modal renders through ConfirmDialog (global .modal* stack). */
/* /Pages/Schedule/CancelAppointmentDialog.razor.rz.scp.css */
/* CancelAppointmentDialog — inner content.
   Modal chrome now uses the global .nim-modal* stack (see nimbus.css).
   Scoped tokens: cancel- (Cancel Appointment dialog). */

.cancel-notify-group[b-qfihau6fsc] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 10px;
}

/* "A confirmation was sent to the client on …" — context line shown above the
   notify opt-in when the client already knows about the appointment. */
.cancel-confirmed-note[b-qfihau6fsc] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    letter-spacing: -0.2px;
    margin: 12px 0 0;
}

/* "I understand this will notify the client" pre-confirm tick (Issue #93).
   Sits between the notify-channel checkboxes and the footer; reads as the
   final acknowledgement before the destructive action unlocks. */
.cancel-acknowledge[b-qfihau6fsc] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding: 10px 12px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-danger);
    background: var(--color-danger-tint);
    font-size: 12px;
    color: var(--color-ink);
    cursor: pointer;
}
.cancel-acknowledge input[type="checkbox"][b-qfihau6fsc] {
    width: 16px; height: 16px;
    accent-color: var(--color-danger);
}

.cancel-notify-row[b-qfihau6fsc] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px;
    background: var(--color-canvas-parchment);
    border-radius: var(--radius-sm);
    cursor: pointer;
    border: 1px solid var(--color-hairline);
    margin-top: 10px;
}
.cancel-notify-row input[type="checkbox"][b-qfihau6fsc] {
    width: 16px;
    height: 16px;
    accent-color: var(--color-primary);
}
.cancel-notify-title[b-qfihau6fsc] {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.2px;
}
.cancel-notify-meta[b-qfihau6fsc] {
    font-size: 11px;
    color: var(--color-ink-muted-48);
    margin-top: 2px;
}

@keyframes cancel-fade-in-b-qfihau6fsc {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes cancel-slide-up-b-qfihau6fsc {
    from { opacity: 0; transform: translate(-50%, -48%); }
    to   { opacity: 1; transform: translate(-50%, -50%); }
}
/* /Pages/Schedule/CreateAppointmentDialog.razor.rz.scp.css */
/* CreateAppointmentDialog — drawer chrome (backdrop, header, close button,
   footer shell, slide animation) is now owned by the shared <SlideOver>.
   This file keeps the walk-in mini-form (rendered in the dialog's scope via
   the picker's no-match slot) and the type / vet / date-time / conflict
   cards laid out inside the SlideOver body. Scoped token: cad-. */

/* ── Body / sections ──────────────────────────────────────── */
/* Sits inside SlideOver's .so-body (which owns padding + scroll). We only
   stack the cards in a column with consistent spacing. */
.cad-body[b-ocu02nz947] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.cad-section[b-ocu02nz947] {
    /* Cards inside the slide-over use slightly tighter padding. */
    padding: 16px 18px;
}

.cad-card-title[b-ocu02nz947] {
    margin: 0;
    /* Override default card-title bottom-margin set in shared/global. */
}

/* ── Field primitives ─────────────────────────────────────── */
.cad-field[b-ocu02nz947] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.cad-field-tight[b-ocu02nz947] { gap: 5px; }
/* Section blocks (type, vet, date, walk-in) need breathing room from the
   card head above them. */
.cad-found-field[b-ocu02nz947] { margin-top: 14px; }

.cad-grid-2[b-ocu02nz947] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 12px;
}
.cad-grid-2 + .cad-field[b-ocu02nz947] { margin-top: 12px; }
.cad-field + .cad-grid-2[b-ocu02nz947] { margin-top: 12px; }

.cad-num[b-ocu02nz947] {
    font-variant-numeric: tabular-nums;
}
.cad-textarea[b-ocu02nz947] {
    resize: vertical;
    min-height: 56px;
    line-height: 1.45;
}
.cad-optional[b-ocu02nz947] {
    color: var(--color-ink-muted-48);
    font-weight: 400;
    text-transform: none;
    letter-spacing: normal;
}

/* Native select chevron — using a data-URI keeps the SVG inline-safe. */
.cad-select[b-ocu02nz947] {
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2386868b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
    cursor: pointer;
}

/* ── Walk-in state (rendered via the picker's no-match slot) ─── */
.cad-walkin-notice[b-ocu02nz947] {
    font-size: 12px;
    color: var(--color-ink-muted-80);
    background: var(--color-warning-tint);
    border: 1px solid rgba(178, 93, 0, 0.30);
    border-radius: var(--radius-sm);
    padding: 10px 12px;
    margin-bottom: 4px;
    display: flex;
    gap: 8px;
    align-items: flex-start;
    line-height: 1.45;
}
.cad-walkin-notice strong[b-ocu02nz947] {
    color: var(--color-ink);
    font-weight: 600;
}
.cad-walkin-icon[b-ocu02nz947] {
    color: var(--color-warning);
    flex-shrink: 0;
    display: inline-flex;
    margin-top: 1px;
}
.cad-walkin-foot[b-ocu02nz947] {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--color-divider-soft);
    font-size: 11px;
    color: var(--color-ink-muted-48);
    display: flex;
    align-items: center;
    gap: 6px;
}
.cad-walkin-foot svg[b-ocu02nz947] {
    flex-shrink: 0;
    color: var(--color-ink-muted-48);
}

/* ── Vet picker grid ─────────────────────────────────────── */
.cad-vet-grid[b-ocu02nz947] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
}
.cad-vet-tile[b-ocu02nz947] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-sm);
    cursor: pointer;
    background: var(--color-canvas);
    text-align: left;
    font-family: inherit;
    transition: border-color 0.12s, background 0.12s;
}
.cad-vet-tile:hover[b-ocu02nz947] {
    border-color: rgba(0, 102, 204, 0.45);
}
.cad-vet-tile.is-active[b-ocu02nz947] {
    border-color: var(--color-primary);
    background: var(--color-info-tint);
}
.cad-vet-ava[b-ocu02nz947] { flex-shrink: 0; }
.cad-vet-name[b-ocu02nz947] {
    flex: 1;
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: -0.2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cad-vet-check[b-ocu02nz947] {
    color: var(--color-primary);
    flex-shrink: 0;
}

/* ── Date & time grid ────────────────────────────────────── */
.cad-time-grid[b-ocu02nz947] {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr;
    gap: 10px;
}

/* ── Error / footer ──────────────────────────────────────── */
.cad-muted[b-ocu02nz947] {
    font-size: 12px;
    color: var(--color-ink-muted-48);
    margin: 8px 0 0;
}
/* Submit banner now uses global `.validation-summary-errors`. */

.cad-shortcut-hint[b-ocu02nz947] {
    margin-right: auto;
    font-size: 11px;
    color: var(--color-ink-muted-48);
    letter-spacing: 0.01em;
}

/* Walk-in form validation (Issue #50) now uses the global primitives:
   required marker = `.label .req`, invalid input = `.input.invalid`, inline
   error = `.validation-message`. The scoped re-implementations were removed. */

/* ── Conflict preview (Issue #54) ─────────────────────────── */
.cad-conflict-preview[b-ocu02nz947] {
    display: flex;
    gap: 10px;
    margin-top: 12px;
    padding: 10px 12px;
    background: rgba(178, 93, 0, 0.08);
    border: 1px solid rgba(178, 93, 0, 0.22);
    border-radius: var(--radius-sm);
    font-size: 12px;
}
.cad-conflict-icon[b-ocu02nz947] { font-size: 14px; line-height: 1; }
.cad-conflict-body[b-ocu02nz947] { flex: 1; min-width: 0; }
.cad-conflict-body strong[b-ocu02nz947] { color: #b45309; font-weight: 600; }
.cad-conflict-list[b-ocu02nz947] {
    margin: 6px 0 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
}
.cad-conflict-list li[b-ocu02nz947] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--color-ink);
}
.cad-conflict-time[b-ocu02nz947] { font-weight: 600; }
.cad-conflict-name[b-ocu02nz947] { color: var(--color-ink-muted-48); }

@media (max-width: 640px) {
    .cad-time-grid[b-ocu02nz947] { grid-template-columns: 1fr 1fr 1fr; }
    .cad-vet-grid[b-ocu02nz947] { grid-template-columns: 1fr; }
}
/* /Pages/Schedule/EditAppointmentDialog.razor.rz.scp.css */
/* EditAppointmentDialog — drawer chrome (backdrop, header, close button,
   footer shell, slide animation) is now owned by the shared <SlideOver>.
   This file keeps the read-only summary card, identity tabs, reschedule grid,
   activity timeline, and footer action layout. Tokens scoped with `ead-`. */

/* ── Body / sections ──────────────────────────────────────── */
/* Sits inside SlideOver's .so-body (which owns padding + scroll). We only
   stack the cards in a column with consistent spacing. */
.ead-body[b-9u50dqdaem] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.ead-section[b-9u50dqdaem] {
    padding: 16px 18px;
}
.ead-card-title[b-9u50dqdaem] {
    margin: 0 0 12px;
}

/* ── Read-only summary card ───────────────────────────────── */
.ead-summary[b-9u50dqdaem] {
    background: var(--color-canvas-parchment);
}
.ead-summary-head[b-9u50dqdaem] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
    gap: 8px;
}
.ead-summary-title[b-9u50dqdaem] {
    font-family: var(--font-display);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.1px;
    color: var(--color-ink);
    margin: 0;
}
.ead-summary-hint[b-9u50dqdaem] {
    margin: 12px 0 0;
    font-size: 11px;
    color: var(--color-ink-muted-48);
    font-style: italic;
}
.ead-muted[b-9u50dqdaem] {
    margin: 0;
    font-size: 12px;
    color: var(--color-ink-muted-48);
}
.ead-textarea[b-9u50dqdaem] {
    resize: vertical;
    min-height: 64px;
}

/* ── Vet picker (Issue #74) ───────────────────────────────── */
.ead-vet-grid[b-9u50dqdaem] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 8px;
}
.ead-vet-tile[b-9u50dqdaem] {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid var(--color-hairline);
    background: var(--color-canvas);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 13px;
    color: var(--color-ink);
    text-align: left;
    transition: border-color 0.12s ease, background-color 0.12s ease;
}
.ead-vet-tile:hover[b-9u50dqdaem] { border-color: rgba(0, 102, 204, 0.35); }
.ead-vet-tile.is-active[b-9u50dqdaem] {
    border-color: var(--color-primary);
    background: rgba(0, 102, 204, 0.06);
    color: var(--color-primary);
    font-weight: 600;
}
.ead-vet-name[b-9u50dqdaem] { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }

/* ── Activity timeline list primitives (shared row layout) ─── */
.ead-history-list[b-9u50dqdaem] {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.ead-history-list li[b-9u50dqdaem] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    font-size: 11px;
}
.ead-history-when[b-9u50dqdaem] { color: var(--color-ink); font-variant-numeric: tabular-nums; }
.ead-history-actor[b-9u50dqdaem] { color: var(--color-ink-muted-48); }

.ead-summary-grid[b-9u50dqdaem] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 16px;
    margin: 0;
}
.ead-summary-row[b-9u50dqdaem] {
    min-width: 0;
}
.ead-summary-label[b-9u50dqdaem] {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--color-ink-muted-48);
    font-weight: 600;
    margin: 0 0 2px;
}
.ead-summary-value[b-9u50dqdaem] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.2px;
    color: var(--color-ink);
    overflow-wrap: anywhere;
}
.ead-type-dot[b-9u50dqdaem] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: var(--radius-pill);
    flex-shrink: 0;
}

.ead-summary-foot[b-9u50dqdaem] {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--color-hairline);
}
.ead-summary-reason[b-9u50dqdaem] {
    margin: 4px 0 0;
    font-size: 12px;
    color: var(--color-ink-muted-80);
    line-height: 1.5;
    white-space: pre-wrap;
}

/* ── Field primitives ─────────────────────────────────────── */
.ead-field[b-9u50dqdaem] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.ead-field-tight[b-9u50dqdaem] { gap: 5px; }

.ead-num[b-9u50dqdaem] {
    font-variant-numeric: tabular-nums;
}
.ead-end-input[b-9u50dqdaem] {
    background: var(--color-canvas-parchment);
    color: var(--color-ink-muted-80);
    cursor: default;
}
.ead-select[b-9u50dqdaem] {
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2386868b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
    padding-right: 36px;
    cursor: pointer;
}

/* ── Reschedule grid (2x2) ────────────────────────────────── */
.ead-time-grid[b-9u50dqdaem] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}
.ead-time-meta[b-9u50dqdaem] {
    margin-top: 10px;
    font-size: 11px;
    color: var(--color-ink-muted-48);
    display: flex;
    align-items: center;
    gap: 6px;
}

/* ── Error / footer ──────────────────────────────────────── */
/* Submit banner now uses global `.validation-summary-errors`. */

/* Action row inside SlideOver's .so-foot: full-width so it forms its own row
   below the built-in Esc/Ctrl+Enter hint, with the destructive "Cancel
   appointment" pushed to the left and Cancel / Save on the right. */
.ead-foot-actions[b-9u50dqdaem] {
    width: 100%;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}
.ead-cancel-danger[b-9u50dqdaem] {
    margin-right: auto;
}

/* ── Portal source icon (header) ──────────────────────────── */
.ead-source-icon[b-9u50dqdaem] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: 8px;
    color: var(--color-action, #0066cc);
    vertical-align: middle;
}

/* ── Walk-in / Assign client panel ────────────────────────── */
.ead-assign-nomatch[b-9u50dqdaem] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 10px 0 0;
}
.ead-assign-actions[b-9u50dqdaem] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 14px;
}

/* "Change client" affordance on a linked appointment (re-link in place). */
.ead-change-client[b-9u50dqdaem] {
    margin-top: 12px;
}

/* Editable staff walk-in details (two-column form above the link picker). */
.ead-walkin-grid[b-9u50dqdaem] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 12px;
}

/* Inline "link a client first" note next to the disabled walk-in check-in. */
.ead-lifecycle-hint[b-9u50dqdaem] {
    display: inline-flex;
    align-items: center;
    font-size: 11px;
    color: var(--color-ink-muted-48);
}

/* ── Client-confirmation card (unconfirmed action only) ──── */
.ead-confirm-pending[b-9u50dqdaem] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.ead-confirm-copy .ead-card-title[b-9u50dqdaem] { margin: 0 0 4px; }
.ead-confirm-pending .btn[b-9u50dqdaem] { flex-shrink: 0; }

/* ── Activity timeline (consolidated edits + notifications) ── */
.ead-notif-type[b-9u50dqdaem] {
    font-weight: 600;
    letter-spacing: -0.2px;
    color: var(--color-ink);
}
.ead-notif-channel[b-9u50dqdaem] {
    color: var(--color-ink-muted-48);
    text-transform: uppercase;
    font-size: 10px;
    letter-spacing: 0.3px;
}

.ead-timeline-list[b-9u50dqdaem] { gap: 6px; }
.ead-timeline-row .ead-history-when[b-9u50dqdaem] { margin-left: auto; }
/* Small kind tag distinguishing an "Edit" (audit) row from a "Sent"
   (notification) row in the merged timeline. */
.ead-timeline-kind[b-9u50dqdaem] {
    flex-shrink: 0;
    padding: 1px 6px;
    border-radius: var(--radius-pill);
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}
.ead-timeline-kind.is-audit[b-9u50dqdaem] {
    background: var(--color-canvas-parchment);
    color: var(--color-ink-muted-48);
    border: 1px solid var(--color-hairline);
}
.ead-timeline-kind.is-notif[b-9u50dqdaem] {
    background: rgba(0, 102, 204, 0.08);
    color: var(--color-action, #0066cc);
    border: 1px solid rgba(0, 102, 204, 0.18);
}

@media (max-width: 640px) {
    .ead-summary-grid[b-9u50dqdaem] { grid-template-columns: 1fr; }
    .ead-time-grid[b-9u50dqdaem] { grid-template-columns: 1fr 1fr; }
}

/* ── Clinical / Portal identity tabs ──────────────────────── */
.ead-identity-head[b-9u50dqdaem] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 12px;
}
/* Identity panels stack rows so email/warning/action read top-to-bottom. */
.ead-identity .ead-summary-grid[b-9u50dqdaem] { grid-template-columns: 1fr; }

.ead-email-warn[b-9u50dqdaem] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 8px;
    font-size: 11px;
    font-weight: 600;
    color: #b54708;
}
.ead-use-portal-email[b-9u50dqdaem] {
    font-size: 12px;
    padding: 4px 12px;
}
/* /Pages/Schedule/Scheduler.razor.rz.scp.css */
/* Scheduler — production port of NimbusScheduler demo, `sch-` prefix */

.sch-hdr[b-1m46s5148v] {
    display: flex; align-items: flex-end; justify-content: flex-start;
    margin-bottom: 1.25rem; gap: 1rem; flex-wrap: wrap;
}

/* "Now ↓" pill — quick-jump-to-current-time button (Issue #3). */
.sch-now-pill[b-1m46s5148v] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 14px;
    border-radius: var(--radius-pill);
    background: rgba(0, 102, 204, 0.10);
    color: var(--color-primary);
    border: 1px solid rgba(0, 102, 204, 0.25);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.12s ease, border-color 0.12s ease;
}
.sch-now-pill:hover[b-1m46s5148v] {
    background: rgba(0, 102, 204, 0.18);
    border-color: rgba(0, 102, 204, 0.4);
}
/* Don't double-push the hub chip when both are visible. */
.sch-now-pill + .sch-hub-chip[b-1m46s5148v] { margin-left: 0; }

/* ── Realtime-hub status chip ───────────────────────────────── */
.sch-hub-chip[b-1m46s5148v] {
    margin-left: auto;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 12px;
    border-radius: var(--radius-pill);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border: 1px solid transparent;
    background: transparent;
    cursor: default;
}
.sch-hub-chip.sch-hub-reconnecting[b-1m46s5148v] {
    background: rgba(178, 93, 0, 0.12);
    border-color: rgba(178, 93, 0, 0.25);
    color: #b45309;
}
.sch-hub-chip.sch-hub-disconnected[b-1m46s5148v] {
    background: rgba(193, 18, 31, 0.10);
    border-color: rgba(193, 18, 31, 0.25);
    color: var(--color-danger);
    cursor: pointer;
}
.sch-hub-dot[b-1m46s5148v] {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: currentColor;
    animation: sch-hub-pulse-b-1m46s5148v 1.2s ease-in-out infinite;
}
@keyframes sch-hub-pulse-b-1m46s5148v {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.55; transform: scale(0.75); }
}

/* ── Colour "Key" popover ───────────────────────────────────────
   Explains the chip encoding: chip body colour = status, dot = type.
   First right-aligned control in the header, so it claims the flex
   slack; the Now pill / hub chip cluster beside it. */
.sch-key-wrap[b-1m46s5148v] {
    position: relative;
    margin-left: auto;
}
.sch-key-btn[b-1m46s5148v] {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 14px;
    border-radius: var(--radius-pill);
    background: var(--color-canvas);
    border: 1px solid rgba(0, 0, 0, 0.12);
    color: var(--color-ink);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.12s ease, border-color 0.12s ease;
}
.sch-key-btn:hover[b-1m46s5148v] {
    background: rgba(0, 102, 204, 0.05);
    border-color: rgba(0, 102, 204, 0.35);
}
.sch-key-ico[b-1m46s5148v] { display: inline-flex; color: var(--color-ink-muted-48); }

/* When the Key sits next to the Now pill, don't let the pill grab the
   slack too — the Key wrap already claimed it. */
.sch-key-wrap + .sch-now-pill[b-1m46s5148v],
.sch-key-wrap + .sch-hub-chip[b-1m46s5148v] { margin-left: 8px; }

.sch-key-dismiss[b-1m46s5148v] {
    position: fixed;
    top: var(--app-topnav-height, 52px);
    left: 0; right: 0; bottom: 0;
    z-index: 240;
}
.sch-key-pop[b-1m46s5148v] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 250;
    width: 320px; max-width: calc(100vw - 32px);
    max-height: 60vh; overflow: auto;
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-product);
    padding: 14px 16px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 16px;
    text-align: left;
}
.sch-key-sect[b-1m46s5148v] { min-width: 0; }
.sch-key-h[b-1m46s5148v] {
    margin: 0 0 8px;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--color-ink-muted-48);
}
.sch-key-item[b-1m46s5148v] {
    display: flex; align-items: center; gap: 8px;
    margin-bottom: 6px;
    font-size: 0.8rem;
    color: var(--color-ink);
    min-width: 0;
}
.sch-key-chip[b-1m46s5148v] {
    width: 18px; height: 14px;
    flex: 0 0 auto;
    box-sizing: border-box;
    border-radius: var(--radius-xs);
    background: var(--k-tint, #fff);
    border: 1px solid var(--color-hairline);
    border-left: 3px solid var(--k-border, var(--color-ink-muted-48));
}
.sch-key-dot[b-1m46s5148v] {
    width: 12px; height: 12px;
    flex: 0 0 auto;
    border-radius: var(--radius-pill);
    box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);
}
.sch-key-lbl[b-1m46s5148v] {
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sch-key-empty[b-1m46s5148v] {
    margin: 0;
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
}

.sch-card[b-1m46s5148v] { padding: 1.25rem; }

/* ── Vet filter chip row (Issue #8 + #9) ──────────────────────
   Permanent above-the-calendar chip set replacing the legacy
   Schedule-X header dropdown. Each chip carries avatar swatch + name +
   count badge; the count badge picks a workload colour band
   (green/amber/red) per VetWorkloadBand. */
.sch-vet-chip-row[b-1m46s5148v] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.85rem;
}
.sch-vet-chip[b-1m46s5148v] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 4px 10px 4px 4px;
    border-radius: var(--radius-pill);
    background: var(--color-canvas);
    border: 1px solid rgba(0, 0, 0, 0.10);
    color: var(--color-ink);
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 600;
    transition: border-color 0.12s ease, background-color 0.12s ease, opacity 0.12s ease;
    opacity: 0.55;
}
.sch-vet-chip:hover[b-1m46s5148v] { border-color: rgba(0, 102, 204, 0.35); opacity: 0.85; }
.sch-vet-chip.is-active[b-1m46s5148v] {
    opacity: 1;
    border-color: var(--color-primary, #0066cc);
    box-shadow: 0 0 0 1px var(--color-primary, #0066cc) inset;
}
/* Composes the global `.ava`; only the 26px chip-specific size + smaller
   initials override the 28px default. Colour comes from `--ava-bg`/`--ava-fg`. */
.sch-vet-chip-tile[b-1m46s5148v] {
    width: 26px; height: 26px;
    font-size: 0.65rem;
}
.sch-vet-chip-name[b-1m46s5148v] {
    max-width: 14ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Layout adjunct for the global .tone workload chip on a vet filter chip:
   keeps the count digits centred at a consistent min width. Colour + shape
   come from .tone + .tone-{green,amber,red}. */
.sch-vet-chip-count[b-1m46s5148v] {
    min-width: 24px;
    justify-content: center;
}

.sch-vet-chip-all[b-1m46s5148v] {
    padding: 4px 14px;
    font-weight: 600;
}

/* ── Keyboard shortcuts help overlay (Issue #1) ────────────────── */
.sch-kbd-hdr[b-1m46s5148v] {
    display: flex; justify-content: space-between; align-items: center;
    width: 100%;
}
.sch-kbd-list[b-1m46s5148v] {
    margin: 0; padding: 0;
    display: grid; gap: 0.5rem;
}
.sch-kbd-row[b-1m46s5148v] {
    display: grid; grid-template-columns: 72px 1fr; align-items: center;
    gap: 0.75rem;
}
.sch-kbd-row dt[b-1m46s5148v] { margin: 0; }
.sch-kbd-row dd[b-1m46s5148v] { margin: 0; color: var(--color-ink); font-size: 0.85rem; }
.sch-kbd-row kbd[b-1m46s5148v] {
    font-family: 'SF Mono', ui-monospace, monospace;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--color-ink);
    background: rgba(0, 0, 0, 0.05);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-bottom-width: 2px;
    padding: 2px 8px;
    border-radius: var(--radius-xs);
}
.sch-kbd-foot[b-1m46s5148v] {
    margin: 0.85rem 0 0;
    font-size: 0.72rem;
    color: var(--color-ink-muted-48);
}

/* ── Grid header with per-vet load badges ──────────────── */
.sch-grid-hdr[b-1m46s5148v] {
    display: grid;
    grid-template-columns: 80px repeat(auto-fit, minmax(180px, 1fr));
    gap: 0;
    border-bottom: 1px solid rgba(0, 102, 204, 0.18);
    padding-bottom: 0.75rem;
    margin-bottom: 0.75rem;
}
.sch-time-col-hdr[b-1m46s5148v] { font-size: 0.75rem; color: var(--color-ink-muted-48); padding: 0.5rem; }
.sch-prov[b-1m46s5148v] {
    display: flex; gap: 0.625rem; align-items: center;
    padding: 0.5rem 0.75rem;
}
.sch-prov-body[b-1m46s5148v] { min-width: 0; }
.sch-prov-name[b-1m46s5148v] { font-weight: 600; font-size: 0.85rem; color: var(--color-ink); }
.sch-prov-count[b-1m46s5148v] {
    font-size: 0.7rem; color: var(--color-ink-muted-48);
    display: flex; align-items: center; gap: 0.35rem;
}
/* ── Grid & columns ─────────────────────────────────────── */
.sch-grid[b-1m46s5148v] {
    display: grid;
    grid-template-columns: 80px repeat(auto-fit, minmax(180px, 1fr));
    position: relative;
    gap: 0;
}
.sch-time-col[b-1m46s5148v] {
    display: flex; flex-direction: column;
}
.sch-time-slot[b-1m46s5148v] {
    height: 88px;
    font-size: 0.75rem;
    color: var(--color-ink-muted-48);
    padding: 0.25rem 0.5rem;
    border-top: 1px solid rgba(0, 102, 204, 0.08);
}
.sch-col[b-1m46s5148v] {
    position: relative;
    border-left: 1px solid rgba(0, 102, 204, 0.08);
}
.sch-row[b-1m46s5148v] {
    height: 88px;
    border-top: 1px solid rgba(0, 102, 204, 0.08);
    /* Decorative — let mousedown/mousemove fall through to the column root so
       MouseEventArgs.OffsetY is column-relative (not target-relative). Without
       this, every click reports OffsetY 0..PxPerHour and resolves to 8–9am. */
    pointer-events: none;
}
.sch-row-even[b-1m46s5148v] { background: rgba(255, 255, 255, 0.4); }

/* ── Now-line indicator ─────────────────────────────────── */
.sch-nowline[b-1m46s5148v] {
    position: absolute;
    left: 0; right: 0;
    height: 0;
    border-top: 2px solid var(--color-danger);
    z-index: 2;
    pointer-events: none;
}
.sch-nowline-dot[b-1m46s5148v] {
    position: absolute;
    top: -5px; left: -5px;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: var(--color-danger);
    box-shadow: 0 0 0 3px rgba(193, 18, 31,0.18);
}

/* ── Appointment cards ──────────────────────────────────── */
.sch-appt[b-1m46s5148v] {
    position: absolute;
    /* Lane-driven horizontal placement. --lane-index 0..N-1, --lane-cluster
       N. 4px outer gutter on the column edge + 4px between adjacent lanes. */
    --lane-index: 0;
    --lane-cluster: 1;
    left: calc(4px + var(--lane-index) * (100% - 8px) / var(--lane-cluster));
    width: calc((100% - 8px) / var(--lane-cluster) - 4px);
    border: 1px solid rgba(0, 102, 204, 0.2);
    border-left: 4px solid var(--color-primary);
    background: var(--color-canvas);
    border-radius: var(--radius-md);
    padding: 0.5rem 0.625rem;
    text-align: left;
    cursor: grab;
    box-shadow: var(--shadow-product);
    transition: transform 0.15s, opacity 0.15s;
    overflow: hidden;
    z-index: 1;
}
.sch-appt:hover[b-1m46s5148v] { transform: translateY(-1px); }
.sch-appt:active[b-1m46s5148v] { cursor: grabbing; }
.sch-appt-dragging[b-1m46s5148v] { opacity: 0.5; cursor: grabbing; }

.sch-appt-time[b-1m46s5148v] { font-size: 0.7rem; color: var(--color-ink-muted-48); font-weight: 600; }
.sch-appt-name[b-1m46s5148v] { font-weight: 600; color: var(--color-ink); font-size: 0.85rem; margin-top: 2px; }
.sch-appt-reason[b-1m46s5148v] { font-size: 0.72rem; color: var(--color-ink-muted-80); margin-top: 2px; }
.sch-appt-foot[b-1m46s5148v] {
    display: flex; justify-content: space-between; align-items: center;
    gap: 0.3rem;
    margin-top: 4px; font-size: 0.7rem;
}
.sch-appt-owner[b-1m46s5148v] { color: var(--color-ink-muted-48); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Close button used by the keyboard-shortcut help modal. ≥44px target so
   reception touch screens hit it reliably. */
.sch-kbd-close[b-1m46s5148v] {
    width: 44px; height: 44px;
    display: inline-flex; align-items: center; justify-content: center;
    background: transparent;
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--radius-pill);
    color: var(--color-ink);
    font-size: 1rem;
    cursor: pointer;
    transition: background-color 0.12s ease, border-color 0.12s ease;
}
.sch-kbd-close:hover[b-1m46s5148v] { background: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.18); }

/* The waiting-room panel styles live in WaitingRoomPanel.razor.css (the
   component that owns `.sch-wr`). The block that used to be duplicated here was
   dead — scoped to this page, it never matched the panel's own scope attribute. */

/* ── Click + drag-create overlays ───────────────────────────── */
.sch-col[b-1m46s5148v] { cursor: crosshair; }
.sch-col .sch-appt[b-1m46s5148v] { cursor: grab; }
.sch-col .sch-appt:active[b-1m46s5148v] { cursor: grabbing; }

.sch-drag-preview[b-1m46s5148v] {
    position: absolute;
    left: 4px; right: 4px;
    background: rgba(0, 102, 204,0.18);
    border: 1px dashed var(--color-primary);
    border-radius: var(--radius-sm);
    pointer-events: none;
    z-index: 3;
}

/* Hover time cursor — thin sky-tint line spanning a column. */
.sch-time-cursor[b-1m46s5148v] {
    position: absolute;
    left: 0; right: 0;
    height: 0;
    border-top: 1px dashed rgba(0, 102, 204,0.55);
    pointer-events: none;
    /* Above .sch-appt (z-index: 1) so the dashed line stays visible in
       multi-lane clusters. */
    z-index: 2;
}
/* Label sits in the time-column gutter. */
.sch-time-cursor-label[b-1m46s5148v] {
    position: absolute;
    left: 4px;
    transform: translateY(-50%);
    background: var(--color-primary);
    color: var(--color-canvas);
    font-size: 0.65rem;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: var(--radius-pill);
    pointer-events: none;
    z-index: 2;
    white-space: nowrap;
}

/* ── Week view ──────────────────────────────────────────────── */
.sch-week-grid-hdr[b-1m46s5148v] {
    grid-template-columns: 80px repeat(7, minmax(140px, 1fr));
}
.sch-week-grid[b-1m46s5148v] {
    grid-template-columns: 80px repeat(7, minmax(140px, 1fr));
}
.sch-day-hdr[b-1m46s5148v] { padding: 0.5rem 0.75rem; }
.sch-day-hdr-today .sch-prov-name[b-1m46s5148v] { color: var(--color-primary); }
.sch-day-col[b-1m46s5148v] {
    /* Inherits .sch-col positioning + cursor; explicit for week semantics. */
    position: relative;
    border-left: 1px solid rgba(0, 102, 204,0.08);
    cursor: crosshair;
}


/* Create-appointment modal styles live in CreateAppointmentDialog.razor.css
   (Blazor scoped CSS only matches elements in the owning component). */
/* /Pages/Schedule/WaitingRoomPanel.razor.rz.scp.css */
/* Composes global `.card` (canvas + hairline + radius-lg). In-flow panel, so
   NO shadow (the old `--shadow-product` was dropped). Scoped layer keeps only
   the tighter panel padding + bottom margin. */
.sch-wr[b-vhxq8j3xg2] {
    padding: 1rem 1.1rem;
    margin-bottom: 0.85rem;
}
.sch-wr-hdr[b-vhxq8j3xg2] {
    display: flex; justify-content: space-between; align-items: baseline;
    margin-bottom: 0.5rem;
}
.sch-wr-title[b-vhxq8j3xg2] {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
/* Fixed three-track grid — equal columns side-by-side at every width. The old
   `repeat(auto-fit, minmax(220px, 1fr))` was the direct cause of the stacked
   collapse: at any narrow render width auto-fit folded the three sections into
   one column. A fixed 3-track grid (with `minmax(0, 1fr)` so cards can shrink
   instead of overflowing) guarantees the side-by-side layout. */
.sch-wr-grid[b-vhxq8j3xg2] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}
.sch-wr-col[b-vhxq8j3xg2] {
    display: flex; flex-direction: column; gap: 0.4rem;
    /* Cap the column height so a heavy day can't push the calendar grid below
       the fold — the panel stays compact and every card scrolls internally
       (no per-column entry cap; the sticky header keeps "Checked in" pinned). */
    max-height: 17.5rem;
    overflow-y: auto;
    /* Room for the scrollbar so it doesn't overlap the card meta badges. */
    padding-right: 0.2rem;
}
.sch-wr-col-hdr[b-vhxq8j3xg2] {
    display: flex; justify-content: space-between; align-items: center;
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--color-ink-muted-80);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    padding-bottom: 0.25rem;
    border-bottom: 1px solid rgba(0, 102, 204,0.12);
    /* Keep the column header pinned while its cards scroll underneath. Must be
       an explicit opaque white (the panel surface) — `background: inherit` here
       resolved to the column's transparent background, so scrolling pet names
       showed through and clashed with the header text. The padding-bottom +
       matching negative margin-bottom paint over the flex `gap` below the header
       so no card edge peeks through during scroll, without changing spacing. */
    position: sticky;
    top: 0;
    background: var(--color-canvas);
    z-index: 1;
    padding-bottom: 0.65rem;
    margin-bottom: -0.4rem;
}
/* "Recently completed" — neutral/grey accent, not the blue active accent the
   live columns use. A benign "done" column shouldn't read as urgent. */
.sch-wr-col-hdr-done[b-vhxq8j3xg2] { color: #555555; border-bottom-color: var(--color-hairline); }
.sch-wr-count[b-vhxq8j3xg2] {
    background: rgba(0, 102, 204,0.12);
    color: var(--color-primary);
    padding: 1px 8px;
    border-radius: var(--radius-pill);
    font-size: 0.68rem;
}
.sch-wr-col-hdr-done .sch-wr-count[b-vhxq8j3xg2] {
    background: #ececec;
    color: #555555;
}
.sch-wr-empty[b-vhxq8j3xg2] {
    font-size: 0.75rem;
    color: var(--color-ink-muted-48);
    font-style: italic;
    padding: 0.4rem 0;
}
.sch-wr-card[b-vhxq8j3xg2] {
    display: flex; justify-content: space-between; align-items: center;
    gap: 0.5rem;
    background: var(--color-canvas);
    border: 1px solid rgba(0, 102, 204,0.15);
    border-radius: var(--radius-md);
    padding: 0.5rem 0.65rem;
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s, transform 0.1s;
}
.sch-wr-card:hover[b-vhxq8j3xg2] { border-color: var(--color-primary); }
.sch-wr-card:active[b-vhxq8j3xg2] { transform: translateY(1px); }
.sch-wr-card-main[b-vhxq8j3xg2] {
    display: flex; flex-direction: column;
    min-width: 0; flex: 1;
}
.sch-wr-pet[b-vhxq8j3xg2] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-ink);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sch-wr-owner[b-vhxq8j3xg2] {
    font-size: 0.7rem;
    color: var(--color-ink-muted-48);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sch-wr-card-meta[b-vhxq8j3xg2] {
    display: flex; align-items: center; gap: 0.4rem;
    flex-shrink: 0;
}
.sch-wr-vet[b-vhxq8j3xg2] {
    background: var(--color-hairline);
    color: var(--color-ink-muted-80);
    font-size: 0.65rem;
    font-weight: 600;
    padding: 2px 6px;
    border-radius: var(--radius-pill);
}
.sch-wr-wait[b-vhxq8j3xg2] {
    padding: 2px 8px;
    border-radius: var(--radius-pill);
    font-size: 0.7rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.sch-wr-wait-ok[b-vhxq8j3xg2]   { background: rgba(34,197,94,0.14);  color: #15803d; }
.sch-wr-wait-warn[b-vhxq8j3xg2] { background: rgba(251,146,60,0.16); color: #c2410c; }
.sch-wr-wait-red[b-vhxq8j3xg2]  { background: rgba(193, 18, 31,0.15);  color: var(--color-danger); }
.sch-wr-wait-consult[b-vhxq8j3xg2] { background: rgba(0, 102, 204,0.14); color: var(--color-primary); }
.sch-wr-wait-done[b-vhxq8j3xg2] { background: #ececec; color: #555555; }
/* /Pages/Settings/AppointmentTypes.razor.rz.scp.css */
.at-tbl[b-1vz5c5sa24] { width: 100%; }
.at-actions[b-1vz5c5sa24] { display: flex; gap: 0.375rem; }
.at-inp-sm[b-1vz5c5sa24] { max-width: 110px; }
.at-dot[b-1vz5c5sa24] {
    display: inline-block; width: 10px; height: 10px;
    border-radius: 50%; margin-right: 0.375rem; vertical-align: middle;
}
.at-swatch[b-1vz5c5sa24] {
    display: inline-block; width: 14px; height: 14px; border-radius: var(--radius-xs);
    vertical-align: middle; border: 1px solid rgba(0, 102, 204,0.2);
    margin-right: 0.375rem;
}
.at-arch[b-1vz5c5sa24] {
    margin-left: 0.375rem;
    background: rgba(122, 122, 122,0.12); color: var(--color-ink-muted-80);
    padding: 2px 8px; border-radius: var(--radius-pill); font-size: 0.7rem;
}
.at-row-editing td[b-1vz5c5sa24] { background: rgba(0, 102, 204,0.04); }

.at-row-archived td[b-1vz5c5sa24] { opacity: 0.7; }
.at-name-archived[b-1vz5c5sa24] { font-style: italic; }

.at-archived-card[b-1vz5c5sa24] { margin-top: 1rem; padding: 0; }
.at-archived-toggle[b-1vz5c5sa24] {
    appearance: none;
    background: transparent;
    border: 0;
    width: 100%;
    text-align: left;
    padding: 14px 18px;
    font: inherit;
    font-weight: 600;
    color: var(--color-ink);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    border-radius: var(--radius-lg);
}
.at-archived-toggle:hover[b-1vz5c5sa24] { background: rgba(0, 0, 0, 0.03); }
.at-archived-toggle:focus-visible[b-1vz5c5sa24] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: -2px;
}
.at-archived-chev[b-1vz5c5sa24] {
    display: inline-block;
    transition: transform 120ms ease;
    color: var(--color-ink-muted-48);
    font-size: 0.75rem;
}
.at-archived-chev-open[b-1vz5c5sa24] { transform: rotate(90deg); }
.at-archived-body[b-1vz5c5sa24] { padding: 0 18px 14px; }
/* /Pages/Settings/Certificates/CertificateTemplateBuilder.razor.rz.scp.css */
.nct-editor-col[b-aewu1kh0k3] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
}

.nct-helper[b-aewu1kh0k3] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
    margin: 0;
}

.nct-helper code[b-aewu1kh0k3] {
    background: rgba(0, 102, 204,0.08);
    border: 1px solid rgba(0, 102, 204,0.18);
    border-radius: var(--radius-xs);
    padding: 0 0.3rem;
    font-size: 0.78rem;
    color: var(--color-primary);
}

/* TinyMCE chrome re-skinned to the Nimbus shell. The editor *body* font/size
   (Open Sans, matching the issued PDF + preview) lives in an iframe and is set
   via content_style in certificateTinyMceConf.js — not here. */
.nct-editor-shell[b-aewu1kh0k3] {
    min-width: 0;
}

.nct-editor-shell[b-aewu1kh0k3]  .tox-tinymce {
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.nct-editor-shell[b-aewu1kh0k3]  .tox-editor-header {
    border-bottom: 1px solid var(--color-hairline);
    box-shadow: none;
}

.nct-editor-shell[b-aewu1kh0k3]  .tox-toolbar__primary,
.nct-editor-shell[b-aewu1kh0k3]  .tox-toolbar-overlord {
    background: var(--color-canvas-parchment);
}

.nct-editor-shell[b-aewu1kh0k3]  .tox-tbtn {
    border-radius: var(--radius-sm);
}

.nct-editor-shell[b-aewu1kh0k3]  .tox-edit-area__iframe {
    background: var(--color-canvas);
}

.nct-layout-preview[b-aewu1kh0k3] {
    margin-top: 0.5rem;
    border: 1px solid rgba(0, 102, 204,0.18);
    border-radius: var(--radius-md);
    background: var(--color-canvas);
    padding: 0.75rem 1rem;
}

.nct-layout-preview summary[b-aewu1kh0k3] {
    cursor: pointer;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-primary);
    user-select: none;
}

.nct-layout-preview[open] summary[b-aewu1kh0k3] {
    margin-bottom: 0.5rem;
}

.nct-fields-header[b-aewu1kh0k3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.5rem;
}

.nct-advanced-toggle[b-aewu1kh0k3] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    color: var(--color-ink-muted-80);
}

.nct-fields-tbl[b-aewu1kh0k3] {
    margin-top: 0.5rem;
}

.nct-fields-tbl td[b-aewu1kh0k3],
.nct-fields-tbl th[b-aewu1kh0k3] {
    vertical-align: middle;
}

.nct-key-readonly[b-aewu1kh0k3] {
    display: inline-block;
    margin-top: 0.25rem;
    font-size: 0.72rem;
    color: var(--color-ink-muted-48);
}

.nct-key-readonly code[b-aewu1kh0k3] {
    background: rgba(0, 102, 204,0.07);
    border: 1px solid rgba(0, 102, 204,0.18);
    border-radius: var(--radius-xs);
    padding: 0 0.3rem;
    color: var(--color-primary);
}

.nct-key-input[b-aewu1kh0k3] {
    margin-top: 0.3rem;
    font-size: 0.78rem;
}

.nct-na[b-aewu1kh0k3] {
    color: var(--color-ink-muted-48);
}

.nct-row-actions[b-aewu1kh0k3] {
    display: flex;
    gap: 0.25rem;
    flex-wrap: wrap;
}

.nct-fields-actions[b-aewu1kh0k3] {
    display: flex;
    margin-top: 0.75rem;
}
/* /Pages/Settings/ClinicProfile.razor.rz.scp.css */
.cp-card[b-qo5yiwxjc3] { margin-bottom: 1rem; padding: 1.25rem 1.5rem; }
.cp-section-title[b-qo5yiwxjc3] {
    font-size: 1rem; font-weight: 600;
    color: var(--color-ink); margin: 0 0 0.75rem 0;
}
.cp-textarea[b-qo5yiwxjc3] { resize: vertical; min-height: 80px; }
.cp-help[b-qo5yiwxjc3] { font-size: 0.78rem; color: var(--color-ink-muted-48); margin-top: 0.25rem; }
.cp-logo-preview[b-qo5yiwxjc3] {
    margin-top: 0.5rem;
    padding: 0.5rem;
    background: rgba(255,255,255,0.6);
    border: 1px solid rgba(0, 102, 204,0.18);
    border-radius: var(--radius-md);
    display: inline-block;
}
.cp-logo-preview img[b-qo5yiwxjc3] { max-height: 64px; max-width: 200px; display: block; }
.cp-hours-tbl[b-qo5yiwxjc3] { width: 100%; }
.cp-hours-tbl th[b-qo5yiwxjc3] { text-align: left; }
.cp-inp-time[b-qo5yiwxjc3] { max-width: 130px; }
.cp-foot[b-qo5yiwxjc3] {
    display: flex; justify-content: flex-end;
    gap: 0.5rem; margin-top: 1rem;
}
/* /Pages/Settings/Demeanours.razor.rz.scp.css */
.ndm-tbl[b-dra7vedxiu] { width: 100%; }
.ndm-actions[b-dra7vedxiu] { display: flex; gap: 0.375rem; }
.ndm-swatch[b-dra7vedxiu] {
    display: inline-block; width: 14px; height: 14px; border-radius: var(--radius-xs);
    vertical-align: middle; border: 1px solid rgba(0, 102, 204, 0.2);
    margin-right: 0.5rem;
}
.ndm-arch[b-dra7vedxiu] {
    margin-left: 0.5rem;
    background: rgba(122, 122, 122, 0.12); color: var(--color-ink-muted-80);
    padding: 2px 8px; border-radius: var(--radius-pill); font-size: 0.7rem;
}
.ndm-row-editing td[b-dra7vedxiu] { background: rgba(0, 102, 204, 0.04); }
.ndm-inp-colour[b-dra7vedxiu] { width: 80px; padding: 0; height: 36px; cursor: pointer; }
/* /Pages/Settings/DrugInteractions.razor.rz.scp.css */
/* Nimbus drug interactions */

.ndi-crumb[b-q83uz8pakv] {
    font-size: 0.7rem; color: var(--fg-muted);
    display: flex; align-items: center; gap: 6px;
    margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.07em; font-weight: 600;
}
.ndi-crumb-sm[b-q83uz8pakv] { margin-bottom: 4px; }
.ndi-sep[b-q83uz8pakv] { opacity: 0.4; }

/* Severity glyph inside the global .tone badge (a text glyph, not an svg). */
.ndi-sev-icon[b-q83uz8pakv] { font-size: 11.5px; line-height: 1; }

/* Legend */
.ndi-legend[b-q83uz8pakv] { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.ndi-legend-card[b-q83uz8pakv] {
    flex: 1; min-width: 180px; padding: 12px 14px; border-radius: var(--radius-md);
    background: white; border: 1px solid rgba(0, 102, 204,0.12);
}
.ndi-legend-copy[b-q83uz8pakv] { font-size: 11.5px; color: var(--color-ink-muted-48); margin-top: 8px; line-height: 1.5; }
.ndi-legend-count[b-q83uz8pakv] { font-size: 11px; color: var(--color-primary); margin-top: 6px; font-family: var(--font-mono); }

/* Table */
.ndi-card[b-q83uz8pakv] { padding: 0; }
.ndi-tbl td[b-q83uz8pakv] { vertical-align: middle; }
.ndi-col-drug[b-q83uz8pakv] { width: 22%; }
.ndi-col-sev[b-q83uz8pakv] { width: 160px; }
.ndi-drug-name[b-q83uz8pakv] { font-weight: 600; color: var(--color-ink); }
.ndi-note[b-q83uz8pakv] { font-size: 12.5px; color: var(--color-ink-muted-80); line-height: 1.5; max-width: 32rem; }
.ndi-actions[b-q83uz8pakv] { width: 130px; text-align: right; white-space: nowrap; display: flex; gap: 4px; justify-content: flex-end; }
.ndi-del[b-q83uz8pakv] { color: var(--color-danger); }

/* Inner title/close row that sits inside the global .nim-modal-header. */
.ndi-titlebar[b-q83uz8pakv] { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ndi-section-spaced[b-q83uz8pakv] { margin-top: 18px; }

.ndi-pair-static[b-q83uz8pakv] {
    padding: 11px 14px; background: rgba(0, 102, 204,0.04);
    border: 1px solid rgba(0, 102, 204,0.15); border-radius: var(--radius-md);
    display: flex; align-items: center; gap: 12px;
    font-size: 13px; color: var(--color-ink);
}
.ndi-pair-drug[b-q83uz8pakv] { font-weight: 600; }
.ndi-pair-arrow[b-q83uz8pakv] { color: var(--color-primary); font-size: 18px; }

.ndi-sev-picker[b-q83uz8pakv] { display: flex; flex-direction: column; gap: 8px; }
.ndi-sev-btn[b-q83uz8pakv] {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border-radius: var(--radius-md); cursor: pointer; text-align: left;
    background: white; border: 1px solid rgba(0, 102, 204,0.14); font-family: inherit;
}
.ndi-sev-btn:hover:not(.ndi-sev-active)[b-q83uz8pakv] { background: rgba(0, 102, 204,0.04); }
.ndi-sev-active[b-q83uz8pakv] {
    background: rgba(0, 102, 204,0.07);
    border: 1.5px solid rgba(0, 102, 204,0.45);
    box-shadow: var(--shadow-focus);
}
.ndi-sev-desc[b-q83uz8pakv] { font-size: 11.5px; color: var(--color-ink-muted-48); line-height: 1.4; }

.ndi-err[b-q83uz8pakv] { margin-top: 14px; }
.ndi-req[b-q83uz8pakv] { color: var(--color-danger); font-weight: 700; }
/* /Pages/Settings/DrugMappings.razor.rz.scp.css */
/* Nimbus drug mappings */

.ndr-crumb[b-e1491foh3b] {
    font-size: 0.7rem; color: var(--fg-muted);
    display: flex; align-items: center; gap: 6px;
    margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.07em; font-weight: 600;
}
.ndr-crumb-sm[b-e1491foh3b] { margin-bottom: 4px; }
.ndr-sep[b-e1491foh3b] { opacity: 0.4; }

.ndr-rationale[b-e1491foh3b] { margin-bottom: 14px; }

.ndr-card[b-e1491foh3b] { padding: 0; }

.ndr-tbl td[b-e1491foh3b] { vertical-align: middle; }
.ndr-col-trade[b-e1491foh3b] { width: 36%; }
.ndr-col-arrow[b-e1491foh3b] { width: 4%; }

.ndr-trade[b-e1491foh3b] { display: flex; align-items: center; gap: 10px; }
.ndr-trade-name[b-e1491foh3b] { font-weight: 600; color: var(--color-ink); }

.ndr-arrow[b-e1491foh3b] { color: var(--color-primary); text-align: center; }

.ndr-generic-name[b-e1491foh3b] { font-weight: 600; color: var(--color-ink); }
.ndr-form-strength[b-e1491foh3b] {
    font-size: 11.5px; color: var(--color-ink-muted-48);
    font-family: var(--font-mono); text-align: right;
    display: flex; align-items: center; justify-content: flex-end; gap: 6px;
}
.ndr-form-dot[b-e1491foh3b] { opacity: 0.4; }
.ndr-form-tag[b-e1491foh3b] {
    font-family: var(--font-sans);
    padding: 1px 7px; border-radius: var(--radius-pill);
    background: rgba(0, 102, 204,0.06); color: var(--fg-accent);
    border: 1px solid rgba(0, 102, 204,0.18);
    font-size: 10.5px; font-weight: 600;
}

.ndr-actions[b-e1491foh3b] { width: 100px; text-align: right; }

/* Inner title/close row that sits inside the global .nim-modal-header. */
.ndr-titlebar[b-e1491foh3b] { display: flex; align-items: center; justify-content: space-between; gap: 12px; }

.ndr-arrow-between[b-e1491foh3b] {
    display: flex; justify-content: center;
    color: var(--color-primary); margin: 12px 0;
}

.ndr-err[b-e1491foh3b] { margin-top: 14px; }

.ndr-req[b-e1491foh3b] { color: var(--color-danger); font-weight: 700; }
/* /Pages/Settings/Drugs.razor.rz.scp.css */
/* Nimbus drug library — strategy-shaped rule cards, slideover detail, rule editor */

.ndl-crumb[b-5ne7lelqpr] {
    font-size: 0.7rem; color: var(--fg-muted);
    display: flex; align-items: center; gap: 6px;
    margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.07em; font-weight: 600;
}
.ndl-crumb-sm[b-5ne7lelqpr] { margin-bottom: 4px; }
.ndl-sep[b-5ne7lelqpr] { opacity: 0.4; }

.ndl-card[b-5ne7lelqpr] { padding: 0; }

/* Column widths — keep headers and data visually aligned regardless of content length */
.ndl-col-drug[b-5ne7lelqpr]  { width: auto; }
.ndl-col-form[b-5ne7lelqpr]  { width: 160px; }
.ndl-col-conc[b-5ne7lelqpr]  { width: 200px; }
.ndl-col-rules[b-5ne7lelqpr] { width: 90px; }
.ndl-col-chev[b-5ne7lelqpr]  { width: 40px; }

.ndl-tbl td[b-5ne7lelqpr] { vertical-align: top; }
.ndl-dname[b-5ne7lelqpr] { font-weight: 600; color: var(--color-ink); }
.ndl-dnote[b-5ne7lelqpr] { font-size: 11px; color: var(--color-ink-muted-48); margin-top: 2px; line-height: 1.4; }
.ndl-conc-v[b-5ne7lelqpr] { font-weight: 600; color: var(--color-ink); font-family: var(--font-mono); }
.ndl-conc-u[b-5ne7lelqpr] { color: var(--color-ink-muted-48); font-family: var(--font-mono); }

/* Header / cell alignment — driven by column, not generic .num */
.ndl-th-form[b-5ne7lelqpr], .ndl-td-form[b-5ne7lelqpr] { text-align: left; }
.ndl-th-conc[b-5ne7lelqpr], .ndl-td-conc[b-5ne7lelqpr] { text-align: right; font-variant-numeric: tabular-nums; }
.ndl-th-rules[b-5ne7lelqpr], .ndl-td-rules[b-5ne7lelqpr] { text-align: left; padding-left: 18px; }

.ndl-rule-count[b-5ne7lelqpr] {
    display: inline-flex; align-items: center; justify-content: center;
    width: 26px; height: 22px; border-radius: var(--radius-xs);
    background: rgba(0, 102, 204,0.08); color: var(--color-primary);
    font-weight: 700; font-size: 12px;
}

.ndl-chev[b-5ne7lelqpr] { width: 40px; color: var(--color-ink-muted-48); font-size: 18px; text-align: center; }

/* Slideover */
.ndl-so[b-5ne7lelqpr] { display: flex; flex-direction: column; }
.ndl-so-title[b-5ne7lelqpr] { margin: 0; font-size: 19px; color: var(--color-ink); letter-spacing: -0.01em; font-weight: 700; }
.ndl-so-meta[b-5ne7lelqpr] {
    display: flex; align-items: center; gap: 10px; margin-top: 6px;
    font-size: 12px; color: var(--color-ink-muted-80); flex-wrap: wrap;
}
.ndl-conc-mono[b-5ne7lelqpr] { font-family: var(--font-mono); }
.ndl-dot[b-5ne7lelqpr] { opacity: 0.4; }
.ndl-so-notes[b-5ne7lelqpr] { margin-bottom: 18px; }

.ndl-rules-head[b-5ne7lelqpr] { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.ndl-rules-head-actions[b-5ne7lelqpr] { display: flex; gap: 8px; }
.ndl-rules[b-5ne7lelqpr] { display: flex; flex-direction: column; gap: 10px; }

/* Rounding inputs (drug create/edit form) */
.ndl-rounding-row[b-5ne7lelqpr] {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
    align-items: stretch; margin-top: 4px;
}
.ndl-rounding-inc[b-5ne7lelqpr] { display: flex; gap: 6px; align-items: stretch; }
.ndl-rounding-inc .inp[b-5ne7lelqpr] { flex: 1; }
.ndl-rounding-modes[b-5ne7lelqpr] {
    display: flex; gap: 4px;
    background: var(--bg-input); border: 1px solid var(--border-input);
    border-radius: var(--radius-md); padding: 3px;
}
.ndl-mode-btn[b-5ne7lelqpr] {
    flex: 1; padding: 6px 0; border: 0; border-radius: var(--radius-sm);
    cursor: pointer; font-size: 11.5px; font-family: inherit;
    background: transparent; color: var(--color-ink-muted-48); font-weight: 600;
}
.ndl-mode-active[b-5ne7lelqpr] {
    background: white; color: var(--color-ink); font-weight: 600;
    box-shadow: 0 1px 3px rgba(0, 102, 204,0.15);
}

/* Rule card — shape variant */
.ndl-rule[b-5ne7lelqpr] {
    background: white; border: 1px solid rgba(0, 102, 204,0.14);
    border-radius: var(--radius-md); overflow: hidden;
    box-shadow: 0 1px 2px rgba(0, 102, 204,0.04), 0 4px 14px rgba(0, 102, 204,0.06);
}
.ndl-rule-head[b-5ne7lelqpr] {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
    padding: 11px 14px 9px; border-bottom: 1px solid rgba(0, 102, 204,0.08);
    background: linear-gradient(180deg, rgba(0, 102, 204,0.035), transparent);
}
.ndl-rule-head-left[b-5ne7lelqpr] { min-width: 0; flex: 1; }
.ndl-chips[b-5ne7lelqpr] { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.ndl-rule-ind[b-5ne7lelqpr] { font-size: 13px; font-weight: 600; color: var(--color-ink); letter-spacing: -0.01em; padding-left: 1px; }

.ndl-species-chip[b-5ne7lelqpr] {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 9px 2px 6px; border-radius: var(--radius-pill);
    background: rgba(0, 102, 204,0.07); border: 1px solid rgba(0, 102, 204,0.18);
    font-size: 11px; font-weight: 600; color: var(--color-ink);
}

/* Rule body — strategy-shaped */
.ndl-rule-body[b-5ne7lelqpr] { padding: 12px 14px; }

.ndl-rule-rate[b-5ne7lelqpr], .ndl-rule-flat[b-5ne7lelqpr] { display: flex; align-items: baseline; gap: 12px; }
.ndl-rate-num[b-5ne7lelqpr], .ndl-flat-num[b-5ne7lelqpr] {
    display: flex; align-items: baseline; gap: 4px;
    font-family: var(--font-mono); color: var(--color-ink);
}
.ndl-flat-num[b-5ne7lelqpr] { color: var(--color-success); }
.ndl-rate-val[b-5ne7lelqpr], .ndl-flat-val[b-5ne7lelqpr] { font-size: 30px; font-weight: 700; letter-spacing: -0.04em; }
.ndl-rate-unit[b-5ne7lelqpr] { font-size: 13px; font-weight: 600; color: var(--color-primary); }
.ndl-flat-unit[b-5ne7lelqpr] { font-size: 13px; font-weight: 600; color: var(--color-success); }
.ndl-rate-copy[b-5ne7lelqpr] { flex: 1; font-size: 11.5px; color: var(--color-ink-muted-48); line-height: 1.4; }
.ndl-rate-eye[b-5ne7lelqpr] { display: block; margin-bottom: 2px; }

.ndl-bands-eye[b-5ne7lelqpr] { margin-bottom: 6px; }
.ndl-bands[b-5ne7lelqpr] {
    border-radius: var(--radius-sm); border: 1px solid rgba(0, 102, 204,0.12); overflow: hidden;
}
.ndl-bands table[b-5ne7lelqpr] { width: 100%; border-collapse: collapse; font-size: 12px; }
.ndl-bands thead tr[b-5ne7lelqpr] { background: rgba(0, 102, 204,0.04); }
.ndl-bands th[b-5ne7lelqpr] {
    text-align: left; padding: 6px 10px;
    font-size: 9.5px; letter-spacing: 0.07em; text-transform: uppercase;
    color: var(--color-primary); font-weight: 600;
}
.ndl-bands th.num[b-5ne7lelqpr], .ndl-bands td.num[b-5ne7lelqpr] { text-align: right; }
.ndl-bands tbody tr[b-5ne7lelqpr] { border-top: 1px dashed rgba(0, 102, 204,0.08); }
.ndl-bands tbody tr:first-child[b-5ne7lelqpr] { border-top: 0; }
.ndl-bands td[b-5ne7lelqpr] { padding: 7px 10px; }
.ndl-mono[b-5ne7lelqpr] { font-family: var(--font-mono); color: var(--color-ink); font-variant-numeric: tabular-nums; }
.ndl-mono-bold[b-5ne7lelqpr] { font-family: var(--font-mono); color: var(--color-ink); font-weight: 600; font-variant-numeric: tabular-nums; }
.ndl-dash[b-5ne7lelqpr] { opacity: 0.5; margin: 0 4px; }
.ndl-band-dose[b-5ne7lelqpr] { font-weight: 600; color: var(--color-ink); font-variant-numeric: tabular-nums; }
.ndl-band-script[b-5ne7lelqpr] { font-size: 11.5px; color: var(--color-ink-muted-80); line-height: 1.5; }

.ndl-script[b-5ne7lelqpr] {
    font-family: var(--font-mono); font-size: 11.5px; line-height: 1.55;
    background: rgba(178, 93, 0,0.06); border: 1px dashed rgba(178, 93, 0,0.3);
    border-radius: var(--radius-sm); padding: 9px 11px; color: var(--color-warning);
}

.ndl-rule-foot[b-5ne7lelqpr] {
    display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
    padding: 8px 14px; background: rgba(0, 102, 204,0.025);
    border-top: 1px solid rgba(0, 102, 204,0.08); font-size: 11.5px;
}
.ndl-meta[b-5ne7lelqpr] { display: flex; align-items: center; gap: 6px; line-height: 1.2; }
.ndl-meta-sub[b-5ne7lelqpr] { color: var(--color-ink-muted-48); }
.ndl-rule-foot .eyebrow[b-5ne7lelqpr] { display: inline; margin-bottom: 0; line-height: 1.2; }
.ndl-freq-chip[b-5ne7lelqpr] {
    display: inline-flex; align-items: center;
    font-family: var(--font-mono); font-size: 10.5px; font-weight: 700;
    padding: 2px 7px; border-radius: var(--radius-xs);
    background: #eff6ff; border: 1px solid rgba(0, 102, 204,0.2); color: var(--color-primary);
    vertical-align: baseline; line-height: 1.2;
}
.ndl-admin[b-5ne7lelqpr] {
    color: var(--color-ink-muted-80); display: flex; align-items: center; gap: 6px;
    margin-left: auto; font-style: italic; line-height: 1.2;
}

/* Modal variants — drug create/edit (narrow) and drug detail / rule editor (wide).
   Chrome uses the global .nim-modal* stack; these are width + height overrides on
   the .nim-modal card. Both cap their height to the viewport and scroll the body,
   so a long rule list (detail) or a long band list (rule editor) never clips the
   header/footer or runs off-screen on shorter displays. The detail/editor modal
   also takes a real, responsive width so it can use more of the horizontal space. */
.ndl-drug-card[b-5ne7lelqpr],
.ndl-detail-card[b-5ne7lelqpr] {
    max-height: calc(100vh - 48px);
}
.ndl-drug-card[b-5ne7lelqpr] { max-width: 560px; }
.ndl-detail-card[b-5ne7lelqpr] { width: 920px; max-width: calc(100% - 48px); }
/* The stacked header content (breadcrumb + title row + meta) inside the global
   .nim-modal-header. */
.ndl-head[b-5ne7lelqpr] {
    display: flex; flex-direction: column; align-items: stretch; gap: 6px;
    justify-content: flex-start;
}
.ndl-titlebar[b-5ne7lelqpr] { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
/* Scrolling body — keeps the header/footer pinned while a long rule/band list
   scrolls internally on shorter viewports. (The card is already a flex column.) */
.ndl-scrollbody[b-5ne7lelqpr] {
    flex: 1 1 auto; min-height: 0; overflow-y: auto;
}

/* Rule editor form */
.ndl-grid-12[b-5ne7lelqpr] { display: grid; grid-template-columns: repeat(12, 1fr); }
.ndl-gap-14[b-5ne7lelqpr] { gap: 14px; }
.ndl-span-4[b-5ne7lelqpr] { grid-column: span 4; min-width: 0; }
.ndl-span-5[b-5ne7lelqpr] { grid-column: span 5; min-width: 0; }
.ndl-span-6[b-5ne7lelqpr] { grid-column: span 6; min-width: 0; }
.ndl-span-7[b-5ne7lelqpr] { grid-column: span 7; min-width: 0; }
.ndl-span-12[b-5ne7lelqpr] { grid-column: span 12; min-width: 0; }

.ndl-section-spaced[b-5ne7lelqpr] { margin-top: 18px; }

.ndl-strategy-grid[b-5ne7lelqpr] {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 14px;
}
.ndl-strat-btn[b-5ne7lelqpr] {
    padding: 10px 10px 9px; border-radius: var(--radius-md); cursor: pointer; text-align: left;
    background: white; border: 1px solid rgba(0, 102, 204,0.18); font-family: inherit;
    color: var(--color-ink-muted-80);
}
.ndl-strat-btn:hover:not(.ndl-strat-active)[b-5ne7lelqpr] { background: rgba(0, 102, 204,0.04); }
.ndl-strat-active[b-5ne7lelqpr] {
    background: rgba(0, 102, 204,0.08);
    border: 1.5px solid rgba(0, 102, 204,0.55);
    box-shadow: var(--shadow-focus);
    color: var(--color-ink);
}
.ndl-strat-locked:not(.ndl-strat-active)[b-5ne7lelqpr] { opacity: 0.5; cursor: not-allowed; }
.ndl-strat-btn:disabled[b-5ne7lelqpr] { cursor: not-allowed; }
.ndl-edit-note[b-5ne7lelqpr] { margin-bottom: 12px; }
.ndl-strat-label[b-5ne7lelqpr] { font-size: 12px; font-weight: 700; margin-bottom: 2px; }
.ndl-strat-short[b-5ne7lelqpr] { font-size: 10.5px; color: var(--color-ink-muted-48); font-family: var(--font-mono); }
.ndl-strat-active .ndl-strat-label[b-5ne7lelqpr] { color: var(--color-ink); }

.ndl-strategy-body[b-5ne7lelqpr] {
    background: rgba(0, 102, 204,0.03); border: 1px solid rgba(0, 102, 204,0.12);
    border-radius: var(--radius-md); padding: 14px; margin-bottom: 18px;
}

.ndl-conc-row[b-5ne7lelqpr] { display: flex; gap: 6px; align-items: stretch; }
.ndl-conc-val[b-5ne7lelqpr] { flex: 1; }
.ndl-conc-u[b-5ne7lelqpr] { width: 70px; }
.ndl-conc-slash[b-5ne7lelqpr] { padding: 0 6px; display: inline-flex; align-items: center; color: var(--color-ink-muted-48); font-weight: 600; font-size: 16px; }

.ndl-unit-chip[b-5ne7lelqpr] {
    padding: 0 10px; display: inline-flex; align-items: center;
    font-size: 12px; font-family: var(--font-mono); color: var(--color-primary);
    background: rgba(0, 102, 204,0.05); border: 1px solid rgba(0, 102, 204,0.15); border-radius: var(--radius-md);
}
.ndl-band-unit[b-5ne7lelqpr] { max-width: 90px; }

.ndl-preview[b-5ne7lelqpr] {
    padding: 8px 12px; background: white; border-radius: var(--radius-sm);
    border: 1px dashed rgba(0, 102, 204,0.25);
    font-size: 12px; color: var(--color-ink-muted-80);
}
.ndl-preview-num[b-5ne7lelqpr] { color: var(--color-ink); font-family: var(--font-mono); }
.ndl-preview-arrow[b-5ne7lelqpr] { opacity: 0.5; margin: 0 6px; }

.ndl-bands-head[b-5ne7lelqpr] { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.ndl-bands-edit[b-5ne7lelqpr] { border: 1px solid rgba(0, 102, 204,0.18); border-radius: var(--radius-sm); overflow: hidden; background: white; }
.ndl-bands-row[b-5ne7lelqpr] {
    display: grid; grid-template-columns: 1fr 1fr 1fr 40px; gap: 6px;
    padding: 6px 10px; border-top: 1px dashed rgba(0, 102, 204,0.1);
    align-items: center;
}
.ndl-bands-row:first-child[b-5ne7lelqpr] { border-top: 0; }
.ndl-bands-head-row[b-5ne7lelqpr] {
    background: rgba(0, 102, 204,0.05); padding: 7px 10px;
    font-size: 9.5px; letter-spacing: 0.07em; text-transform: uppercase;
    color: var(--color-primary); font-weight: 600;
}
.ndl-bands-row-script[b-5ne7lelqpr] { grid-template-columns: 80px 16px 80px 34px 1fr 40px; }
.ndl-dash-inline[b-5ne7lelqpr] { margin: 0; text-align: center; font-size: 16px; color: var(--color-ink-muted-48); }
.ndl-band-dose-edit[b-5ne7lelqpr] { display: flex; gap: 4px; }
.ndl-band-script-input[b-5ne7lelqpr] { width: 100%; }
.ndl-band-remove[b-5ne7lelqpr] {
    border: 0; background: transparent; color: var(--color-ink-muted-48);
    cursor: pointer; font-size: 16px; padding: 0;
}
.ndl-band-remove:hover[b-5ne7lelqpr] { color: var(--color-danger); }

/* Create drug form helpers */
.ndl-form[b-5ne7lelqpr] { display: flex; flex-direction: column; gap: 8px; }
.ndl-form .field-label[b-5ne7lelqpr] { margin-top: 10px; }
.ndl-form .field-label:first-child[b-5ne7lelqpr] { margin-top: 0; }

.ndl-req[b-5ne7lelqpr] { color: var(--color-danger); font-weight: 700; }
.ndl-opt[b-5ne7lelqpr] { font-size: 10px; font-weight: 400; text-transform: none; letter-spacing: 0; color: var(--color-ink-muted-48); }
/* /Pages/Settings/Imports/ImportHome.razor.rz.scp.css */
/* Nimbus — bulk import home (nih- prefix) */

.nih-breadcrumb[b-3f3w0lfkqa] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
    margin-bottom: 0.35rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.nih-breadcrumb a[b-3f3w0lfkqa] {
    color: var(--color-primary);
    text-decoration: none;
}

.nih-breadcrumb a:hover[b-3f3w0lfkqa] {
    text-decoration: underline;
}

.nih-breadcrumb-sep[b-3f3w0lfkqa] {
    color: var(--color-ink-muted-48);
}

.nih-grid[b-3f3w0lfkqa] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 18px;
    margin: 8px 0 28px;
}

/* Composes global `.card` (canvas + radius-lg + 20px pad). In-flow card, so
   NO resting shadow (the old `--shadow-product` was dropped). Scoped layer keeps
   the column layout, slightly wider pad, blue accent border, and the
   interactive hover-lift (these are links, not static cards). */
.nih-card[b-3f3w0lfkqa] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 22px 24px;
    border-color: rgba(0, 102, 204, 0.14);
    color: inherit;
    text-decoration: none;
    transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}

.nih-card:hover[b-3f3w0lfkqa] {
    transform: translateY(-2px);
    border-color: rgba(0, 102, 204, 0.4);
    box-shadow:
        0 1px 2px rgba(0, 0, 0, 0.05),
        0 6px 12px rgba(0, 0, 0, 0.05),
        0 18px 36px rgba(0, 102, 204, 0.18);
}

.nih-icon[b-3f3w0lfkqa] {
    width: 48px;
    height: 48px;
    border-radius: var(--radius-md);
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 102, 204, 0.10);
    border: 1px solid rgba(0, 102, 204, 0.18);
    font-size: 24px;
}

.nih-title[b-3f3w0lfkqa] {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--color-ink);
}

.nih-desc[b-3f3w0lfkqa] {
    font-size: 0.85rem;
    line-height: 1.5;
    color: var(--color-ink-muted-80);
    flex-grow: 1;
}

.nih-cta[b-3f3w0lfkqa] {
    margin-top: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-primary);
}

/* Composes global `.card`; drops the old `--shadow-product` (in-flow). Scoped
   layer keeps the tighter pad + blue accent border. */
.nih-callout[b-3f3w0lfkqa] {
    border-color: rgba(0, 102, 204, 0.14);
    padding: 18px 22px;
}

.nih-callout-title[b-3f3w0lfkqa] {
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-primary);
    margin-bottom: 8px;
}

.nih-callout-list[b-3f3w0lfkqa] {
    margin: 0;
    padding-left: 18px;
    color: var(--color-ink-muted-80);
    font-size: 0.85rem;
    line-height: 1.55;
}

.nih-callout-list li[b-3f3w0lfkqa] {
    margin-bottom: 4px;
}
/* /Pages/Settings/Imports/ImportJobsList.razor.rz.scp.css */
/* Nimbus — bulk import jobs list (njl- prefix) */

.njl-breadcrumb[b-lrhzrnl29d] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
    margin-bottom: 0.35rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.njl-breadcrumb a[b-lrhzrnl29d] {
    color: var(--color-primary);
    text-decoration: none;
}

.njl-breadcrumb a:hover[b-lrhzrnl29d] {
    text-decoration: underline;
}

.njl-breadcrumb-sep[b-lrhzrnl29d] {
    color: var(--color-ink-muted-48);
}

.njl-banner[b-lrhzrnl29d] {
    margin: 8px;
}

.njl-tbl[b-lrhzrnl29d] {
    font-size: 0.85rem;
}

.njl-num[b-lrhzrnl29d] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.njl-actions[b-lrhzrnl29d] {
    text-align: right;
}
/* /Pages/Settings/Imports/ImportWizard.razor.rz.scp.css */
/* Nimbus — bulk import wizard (niw- prefix) */

.niw-breadcrumb[b-45ry57jpwi] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
    margin-bottom: 0.35rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.niw-breadcrumb a[b-45ry57jpwi] {
    color: var(--color-primary);
    text-decoration: none;
}

.niw-breadcrumb a:hover[b-45ry57jpwi] {
    text-decoration: underline;
}

.niw-breadcrumb-sep[b-45ry57jpwi] {
    color: var(--color-ink-muted-48);
}

/* ─── Stepper ──────────────────────────────────────────────── */
/* Stepper container composes global `.card` (canvas + radius-lg); the old
   `--shadow-product` was dropped (in-flow). Scoped layer keeps the flex row,
   tighter pad, blue accent border, and list reset. */
.niw-stepper[b-45ry57jpwi] {
    display: flex;
    gap: 8px;
    list-style: none;
    margin: 0 0 24px;
    padding: 12px 16px;
    border-color: rgba(0, 102, 204, 0.14);
}

.niw-step[b-45ry57jpwi] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    border-radius: var(--radius-pill);
    font-size: 13px;
    color: var(--color-ink-muted-48);
    flex: 1;
    min-width: 0;
}

.niw-step-num[b-45ry57jpwi] {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: rgba(0, 102, 204, 0.08);
    border: 1px solid rgba(0, 102, 204, 0.20);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--color-primary);
    flex-shrink: 0;
}

.niw-step-label[b-45ry57jpwi] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.niw-step-active[b-45ry57jpwi] {
    color: var(--color-ink);
    font-weight: 600;
}

.niw-step-active .niw-step-num[b-45ry57jpwi] {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: var(--color-canvas);
}

.niw-step-done[b-45ry57jpwi] {
    color: var(--color-ink-muted-80);
}

.niw-step-done .niw-step-num[b-45ry57jpwi] {
    background: rgba(31, 138, 91, 0.15);
    border-color: rgba(31, 138, 91, 0.4);
    color: var(--color-success);
}

/* ─── Card ──────────────────────────────────────────────── */
/* Composes global `.card`; drops the old `--shadow-product` (in-flow). Scoped
   layer keeps the wider pad, blue accent border, and bottom margin. */
.niw-card[b-45ry57jpwi] {
    border-color: rgba(0, 102, 204, 0.14);
    padding: 24px 28px;
    margin-bottom: 24px;
}

.niw-card-title[b-45ry57jpwi] {
    margin: 0 0 6px;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--color-ink);
}

.niw-card-desc[b-45ry57jpwi] {
    margin: 0 0 18px;
    font-size: 0.85rem;
    color: var(--color-ink-muted-80);
    line-height: 1.5;
}

.niw-section-label[b-45ry57jpwi] {
    margin: 22px 0 10px;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--color-primary);
}

.niw-banner[b-45ry57jpwi] {
    margin: 12px 0;
}

.niw-template[b-45ry57jpwi] {
    margin-bottom: 14px;
}

/* ─── Upload ──────────────────────────────────────────────── */
.niw-upload[b-45ry57jpwi] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 6px 0 0;
}

.niw-upload-btn[b-45ry57jpwi] {
    cursor: pointer;
}

.niw-file-meta[b-45ry57jpwi] {
    font-size: 13px;
    color: var(--color-ink-muted-80);
}

.niw-busy[b-45ry57jpwi] {
    font-size: 13px;
    color: var(--color-primary);
}

/* ─── Tables ──────────────────────────────────────────────── */
/* Wrap is just a horizontal-scroll shell; border/radius/header come from `.tbl`. */
.niw-table-wrap[b-45ry57jpwi] {
    overflow-x: auto;
}

.niw-tbl[b-45ry57jpwi] {
    margin: 0;
    font-size: 0.85rem;
}

.niw-tbl-row[b-45ry57jpwi] {
    width: 60px;
    font-variant-numeric: tabular-nums;
}

/* ─── Mapping grid ──────────────────────────────────────────────── */
/* Composes global `.list-grid-rows` + `.table-head` + `.table-row`; the only
   scoped tweak is the column track sizing applied to both header + rows. */
.niw-map-grid .table-head[b-45ry57jpwi],
.niw-map-grid .table-row[b-45ry57jpwi] {
    grid-template-columns: 1.1fr 0.5fr 1.4fr;
}

.niw-map-name[b-45ry57jpwi] {
    font-size: 0.9rem;
    color: var(--color-ink);
    font-weight: 600;
}

.niw-map-required[b-45ry57jpwi] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
}

.niw-map-select[b-45ry57jpwi] {
    width: 100%;
}

/* ─── Summary stats ──────────────────────────────────────────────── */
.niw-summary[b-45ry57jpwi] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
    margin: 12px 0;
}

.niw-stat[b-45ry57jpwi] {
    padding: 14px 18px;
    border-radius: var(--radius-md);
    background: rgba(0, 102, 204, 0.06);
    border: 1px solid rgba(0, 102, 204, 0.15);
}

.niw-stat-num[b-45ry57jpwi] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--color-ink);
    font-variant-numeric: tabular-nums;
    line-height: 1.1;
}

.niw-stat-lbl[b-45ry57jpwi] {
    font-size: 0.75rem;
    color: var(--color-ink-muted-80);
    margin-top: 2px;
}

.niw-stat-ok[b-45ry57jpwi] {
    background: rgba(31, 138, 91, 0.08);
    border-color: rgba(31, 138, 91, 0.25);
}

.niw-stat-ok .niw-stat-num[b-45ry57jpwi] {
    color: var(--color-success);
}

.niw-stat-err[b-45ry57jpwi] {
    background: rgba(193, 18, 31, 0.08);
    border-color: rgba(193, 18, 31, 0.25);
}

.niw-stat-err .niw-stat-num[b-45ry57jpwi] {
    color: var(--color-danger);
}

/* ─── Status / progress ──────────────────────────────────────────── */
.niw-status[b-45ry57jpwi] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 10px 0;
}

.niw-status-meta[b-45ry57jpwi] {
    font-size: 0.8rem;
    color: var(--color-ink-muted-48);
}

.niw-progress[b-45ry57jpwi] {
    width: 100%;
    height: 10px;
    background: rgba(0, 102, 204, 0.10);
    border-radius: var(--radius-pill);
    overflow: hidden;
    margin: 10px 0 6px;
}

.niw-progress-bar[b-45ry57jpwi] {
    height: 100%;
    background: var(--color-primary);
    border-radius: var(--radius-pill);
    transition: width 0.4s ease;
}

.niw-progress-meta[b-45ry57jpwi] {
    font-size: 0.8rem;
    color: var(--color-ink-muted-48);
    margin-bottom: 12px;
}

/* ─── Footer / controls ──────────────────────────────────────────── */
.niw-foot[b-45ry57jpwi] {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 22px;
    flex-wrap: wrap;
}

.niw-foot .btn[b-45ry57jpwi] {
    min-width: 110px;
}
/* /Pages/Settings/Letterhead.razor.rz.scp.css */
.lh-grid[b-ola9df60hm] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(320px, 0.85fr);
    gap: 1.25rem;
    align-items: start;
}

@media (max-width: 1100px) {
    .lh-grid[b-ola9df60hm] {
        grid-template-columns: 1fr;
    }
}

.lh-editors[b-ola9df60hm] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    min-width: 0;
}

.lh-helper[b-ola9df60hm] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
    margin: 0 0 0.6rem;
}

.lh-enable[b-ola9df60hm] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    cursor: pointer;
}

.lh-enable input[b-ola9df60hm] {
    margin-top: 0.2rem;
}

.lh-enable-title[b-ola9df60hm] {
    display: block;
    font-weight: 600;
    color: #1a1a1a;
}

.lh-enable-sub[b-ola9df60hm] {
    display: block;
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
}

/* TinyMCE chrome re-skinned to the Nimbus shell (mirrors the certificate
   builder). The editor body font lives in the iframe via content_css. */
.lh-editor-shell[b-ola9df60hm] {
    min-width: 0;
}

.lh-editor-shell[b-ola9df60hm]  .tox-tinymce {
    border: 1px solid var(--color-hairline);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.lh-editor-shell[b-ola9df60hm]  .tox-editor-header {
    border-bottom: 1px solid var(--color-hairline);
    box-shadow: none;
}

.lh-editor-shell[b-ola9df60hm]  .tox-toolbar__primary,
.lh-editor-shell[b-ola9df60hm]  .tox-toolbar-overlord {
    background: var(--color-canvas-parchment);
}

.lh-editor-shell[b-ola9df60hm]  .tox-tbtn {
    border-radius: var(--radius-sm);
}

.lh-editor-shell[b-ola9df60hm]  .tox-edit-area__iframe {
    background: var(--color-canvas);
}

.lh-margins[b-ola9df60hm] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
}

.lh-preview-col[b-ola9df60hm] {
    position: sticky;
    top: 1rem;
}

.lh-preview-head[b-ola9df60hm] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

.lh-size-select[b-ola9df60hm] {
    width: auto;
    min-width: 120px;
}
/* /Pages/Settings/LetterheadPreview.razor.rz.scp.css */
.lhp-frame[b-2vz9hcra5k] {
    background: var(--color-canvas-parchment);
    border: 1px solid rgba(0, 102, 204, 0.18);
    border-radius: var(--radius-md);
    padding: 1rem;
    overflow: auto;
    max-height: 720px;
}

/* The page is an iframe rendering the bands via the canonical certificate
   stylesheets, so it matches the rendered document. Only the page chrome
   (white surface, hairline, elevation) is styled here. */
.lhp-page[b-2vz9hcra5k] {
    background: var(--color-canvas);
    border: 1px solid var(--color-hairline);
    box-shadow: var(--shadow-product);
    transform-origin: top left;
    display: block;
}

.lhp-meta[b-2vz9hcra5k] {
    margin-top: 0.5rem;
    font-size: 0.75rem;
    color: var(--color-ink-muted-48);
}

.lhp-dims[b-2vz9hcra5k] {
    font-weight: 600;
    color: var(--color-primary);
}
/* /Pages/Settings/Notifications/NotificationSettingsHome.razor.rz.scp.css */
/* Inline gap before a global .pill that follows descriptive text. */
.ns-pill-gap[b-7wqojt4kxp] {
    margin-left: 8px;
}

.ns-empty[b-7wqojt4kxp] {
    padding: 24px;
    text-align: center;
    color: var(--color-ink-muted-48);
}
/* /Pages/Settings/Notifications/Providers.razor.rz.scp.css */
.np-grid[b-8ytlm7f31l] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
    gap: 16px;
}

.np-card[b-8ytlm7f31l] {
    padding: 20px;
}

.np-card-head[b-8ytlm7f31l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.np-section-title[b-8ytlm7f31l] {
    font-size: 18px;
    font-weight: 600;
    margin: 0;
}

.np-readout[b-8ytlm7f31l] {
    display: grid;
    grid-template-columns: 140px 1fr;
    row-gap: 8px;
    column-gap: 12px;
    font-size: 14px;
    margin: 12px 0;
}

.np-readout dt[b-8ytlm7f31l] {
    color: var(--color-ink-muted-48);
    font-weight: 600;
}

.np-readout dd[b-8ytlm7f31l] {
    margin: 0;
    word-break: break-all;
}

.np-foot[b-8ytlm7f31l] {
    display: flex;
    gap: 8px;
    margin-top: 16px;
    flex-wrap: wrap;
}

/* /Pages/Settings/Notifications/Reminders.razor.rz.scp.css */
.nr-card[b-f50i3fv9l2] {
    padding: 20px;
}

.nr-table input.nr-inp-num[b-f50i3fv9l2] {
    width: 80px;
}

.nr-table select.nr-inp-unit[b-f50i3fv9l2] {
    width: 120px;
}

.nr-row-warn[b-f50i3fv9l2] {
    background: #fff7e6;
}

.nr-banner[b-f50i3fv9l2] {
    margin-top: 12px;
}

.nr-foot[b-f50i3fv9l2] {
    margin-top: 16px;
    display: flex;
    justify-content: flex-end;
}
/* /Pages/Settings/Notifications/Templates.razor.rz.scp.css */
.nt-layout[b-l8irzx9u65] {
    display: grid;
    grid-template-columns: minmax(260px, 320px) 1fr;
    gap: 16px;
}

.nt-list[b-l8irzx9u65] {
    padding: 16px;
    align-self: flex-start;
}

.nt-list-heading[b-l8irzx9u65] {
    font-size: 13px;
    font-weight: 600;
    color: var(--color-ink);
    letter-spacing: -0.1px;
    margin: 12px 0 8px;
}

.nt-list-heading:first-child[b-l8irzx9u65] {
    margin-top: 0;
}

/* Composes global `.nav-list`; keeps the <ul> list reset + bottom margin. */
.nt-template-list[b-l8irzx9u65] {
    list-style: none;
    padding: 0;
    margin: 0 0 12px;
}

/* Composes global `.nav-list-item`; only the name/pill split is scoped. */
.nt-template-row[b-l8irzx9u65] {
    justify-content: space-between;
}

.nt-row-name[b-l8irzx9u65] {
    flex: 1;
}

.nt-editor[b-l8irzx9u65] {
    padding: 24px;
    min-height: 480px;
}

.nt-editor-head[b-l8irzx9u65] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
}

.nt-editor-title[b-l8irzx9u65] {
    font-size: 18px;
    font-weight: 600;
    margin: 0;
}

.nt-channel-tag[b-l8irzx9u65] {
    margin-left: 8px;
    padding: 2px 8px;
    background: #f0f0f3;
    border-radius: var(--radius-pill);
    font-size: 12px;
    font-weight: 600;
    color: var(--color-ink-muted-48);
}

.nt-toggle[b-l8irzx9u65] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
    cursor: pointer;
}

.nt-textarea-mono[b-l8irzx9u65] {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 13px;
    line-height: 1.5;
}

.nt-tokens[b-l8irzx9u65] {
    margin-top: 12px;
}

.nt-tokens summary[b-l8irzx9u65] {
    cursor: pointer;
    color: var(--color-primary);
    font-size: 13px;
}

.nt-token-list[b-l8irzx9u65] {
    list-style: none;
    padding: 8px 0 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 4px;
}

.nt-token-list code[b-l8irzx9u65] {
    background: var(--color-canvas-parchment);
    padding: 2px 6px;
    border-radius: var(--radius-xs);
    font-size: 12px;
}

.nt-editor-foot[b-l8irzx9u65] {
    display: flex;
    gap: 8px;
    margin-top: 20px;
    flex-wrap: wrap;
}

.nt-empty[b-l8irzx9u65] {
    padding: 80px 0;
    text-align: center;
    color: var(--color-ink-muted-48);
}

/* /Pages/Settings/Roles.razor.rz.scp.css */
.nrp-add-row[b-681vi8coa3] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.nrp-add-row .inp[b-681vi8coa3] {
    flex: 1 1 280px;
    max-width: 360px;
}

.nrp-matrix-head[b-681vi8coa3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

.nrp-matrix-wrap[b-681vi8coa3] {
    overflow-x: auto;
}

.nrp-matrix[b-681vi8coa3] {
    width: 100%;
    border-collapse: collapse;
}

.nrp-perm-col[b-681vi8coa3] {
    text-align: left;
    min-width: 260px;
}

.nrp-role-col[b-681vi8coa3] {
    text-align: center;
    min-width: 110px;
    vertical-align: top;
}

.nrp-role-name[b-681vi8coa3] {
    font-weight: 600;
}

.nrp-perm-label[b-681vi8coa3] {
    color: var(--color-ink);
}

.nrp-category-row td[b-681vi8coa3] {
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-ink-muted-48);
    padding-top: 0.9rem;
}

.nrp-cell[b-681vi8coa3] {
    text-align: center;
}

.nrp-cell input[b-681vi8coa3] {
    width: 16px;
    height: 16px;
    cursor: pointer;
}

.nrp-link[b-681vi8coa3] {
    background: none;
    border: none;
    color: var(--color-primary);
    cursor: pointer;
    font-size: 0.78rem;
    padding: 0;
    margin-top: 0.25rem;
}

.nrp-link:hover[b-681vi8coa3] {
    color: var(--color-primary-hover);
    text-decoration: underline;
}
/* /Pages/Settings/Staff.razor.rz.scp.css */
.nst-assign-col[b-e2r29nbqy5] {
    width: 240px;
}

.nst-assign[b-e2r29nbqy5] {
    display: flex;
    gap: 0.4rem;
    align-items: center;
}

.nst-assign .sel[b-e2r29nbqy5] {
    flex: 1 1 auto;
    min-width: 140px;
}

.nst-role-pill[b-e2r29nbqy5] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin: 0 0.25rem 0.25rem 0;
}

.nst-remove[b-e2r29nbqy5] {
    background: none;
    border: none;
    color: var(--color-ink-muted-48);
    cursor: pointer;
    font-size: 0.95rem;
    line-height: 1;
    padding: 0;
}

.nst-remove:hover[b-e2r29nbqy5] {
    color: #cc0000;
}

.nst-none[b-e2r29nbqy5] {
    color: var(--color-ink-muted-48);
}
/* /Pages/Settings/Vendors.razor.rz.scp.css */
.vnd-tbl[b-qofh22f4la] {
    width: 100%;
}

.vnd-tbl td[b-qofh22f4la] {
    vertical-align: middle;
}

.vnd-arch[b-qofh22f4la] {
    color: var(--color-ink-muted-48);
    font-size: 0.75rem;
    text-transform: uppercase;
    margin-left: 0.5rem;
    letter-spacing: 0.04em;
}

.vnd-actions[b-qofh22f4la] {
    display: flex;
    gap: 0.4rem;
    justify-content: flex-end;
}

.vnd-form-grid[b-qofh22f4la] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.6rem 1rem;
    margin: 0.5rem 0;
}

.vnd-subhead[b-qofh22f4la] {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.1px;
    color: var(--color-ink);
    margin-top: 1.5rem;
    margin-bottom: 0.5rem;
}

/* Required marker now uses global `.label .req` (correct --color-danger, fixing
   the old #cc0000 drift). The scoped rule was removed. */
/* /Pages/Settings/VetSchedules.razor.rz.scp.css */
.vs-layout[b-ajrt5bevb3] {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 1.25rem;
}
@media (max-width: 900px) {
    .vs-layout[b-ajrt5bevb3] { grid-template-columns: 1fr; }
}

/* Composes global `.nav-list` (rows) — only the card padding is scoped. */
.vs-list[b-ajrt5bevb3] { padding: 0.5rem; }
.vs-list-name[b-ajrt5bevb3] { font-weight: 600; color: var(--color-ink); font-size: 0.9rem; }
.vs-list-meta[b-ajrt5bevb3] { font-size: 0.75rem; color: var(--color-ink-muted-48); display: flex; gap: 0.5rem; align-items: center; }

.vs-editor[b-ajrt5bevb3] { padding: 1.25rem; }
.vs-section-title[b-ajrt5bevb3] {
    font-size: 1rem; font-weight: 600; color: var(--color-ink);
    margin: 1.25rem 0 0.75rem; padding-top: 1rem;
    border-top: 1px dashed rgba(0, 102, 204,0.18);
}
.vs-editor > .vs-section-title:first-child[b-ajrt5bevb3] { border-top: 0; padding-top: 0; margin-top: 0; }

.vs-row[b-ajrt5bevb3] { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 0.75rem; margin-bottom: 0.5rem; }
.vs-check[b-ajrt5bevb3] { display: flex; align-items: center; gap: 0.375rem; }

.vs-bw-row[b-ajrt5bevb3] {
    display: grid;
    grid-template-columns: 110px 100px 100px auto auto;
    gap: 0.5rem;
    align-items: center;
    padding: 0.5rem 0.75rem;
    background: rgba(0, 102, 204,0.04);
    border-radius: var(--radius-md);
    margin-bottom: 0.5rem;
}
.vs-bw-types[b-ajrt5bevb3] {
    grid-column: 1 / -1;
    display: flex; flex-wrap: wrap; gap: 0.625rem;
    padding-top: 0.5rem;
}
.vs-bw-type[b-ajrt5bevb3] {
    display: flex; align-items: center; gap: 0.375rem;
    font-size: 0.85rem;
}

.vs-to-list[b-ajrt5bevb3] { list-style: none; padding: 0; margin: 0 0 0.75rem; }
.vs-to-list li[b-ajrt5bevb3] {
    display: grid;
    grid-template-columns: 2fr 1fr auto;
    gap: 0.5rem; align-items: center;
    padding: 0.5rem 0.625rem;
    border-bottom: 1px solid rgba(0, 102, 204,0.08);
}
.vs-to-range[b-ajrt5bevb3] { font-size: 0.85rem; color: var(--color-ink); font-weight: 600; }
.vs-to-reason[b-ajrt5bevb3] { font-size: 0.8rem; color: var(--color-ink-muted-48); }
.vs-to-new[b-ajrt5bevb3] { display: grid; grid-template-columns: 1fr 1fr 1.5fr auto; gap: 0.5rem; }
/* /Pages/SpeciesBreeds/SpeciesBreedManagement.razor.rz.scp.css */
/* Species & Breeds management — collapsible card list. Prefix `sb-`. */

.sb-add-species-section[b-pm9evco9wx] {
    padding-bottom: 1.25rem;
}

.sb-add-species-row[b-pm9evco9wx] {
    display: flex;
    gap: 0.5rem;
    max-width: 400px;
}

.sb-add-species-btn[b-pm9evco9wx] {
    white-space: nowrap;
}

.sb-species-header[b-pm9evco9wx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 1rem 1.75rem;
}

.sb-species-toggle[b-pm9evco9wx] {
    background: none;
    border: none;
    padding: 0;
    margin: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    text-align: left;
    font-family: inherit;
    color: inherit;
}

.sb-species-toggle:focus-visible[b-pm9evco9wx] {
    outline: 2px solid var(--color-primary-focus);
    outline-offset: 2px;
    border-radius: var(--radius-xs);
}

.sb-species-chev[b-pm9evco9wx] {
    display: inline-block;
    transition: transform 0.18s ease;
    color: var(--color-ink-muted-48);
    font-size: 0.875rem;
    width: 1rem;
    text-align: center;
}

.sb-species-chev-open[b-pm9evco9wx] {
    transform: rotate(90deg);
}

.sb-species-name[b-pm9evco9wx] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--color-ink);
}

.sb-species-count[b-pm9evco9wx] {
    font-size: 0.78rem;
    color: var(--color-ink-muted-48);
    margin-left: 0.5rem;
}

.sb-species-actions[b-pm9evco9wx] {
    display: flex;
    gap: 0.4rem;
}

.sb-rename-row[b-pm9evco9wx] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    max-width: 400px;
}

.sb-species-body[b-pm9evco9wx] {
    padding-bottom: 1rem;
}
