@import '_content/BidGlory.UI/BidGlory.UI.grm0tcwu0k.bundle.scp.css';

/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-lneei1k5q3],
.components-reconnect-repeated-attempt-visible[b-lneei1k5q3],
.components-reconnect-failed-visible[b-lneei1k5q3],
.components-pause-visible[b-lneei1k5q3],
.components-resume-failed-visible[b-lneei1k5q3],
.components-rejoining-animation[b-lneei1k5q3] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-retrying[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-failed[b-lneei1k5q3],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-lneei1k5q3] {
    display: block;
}


#components-reconnect-modal[b-lneei1k5q3] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-lneei1k5q3 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-lneei1k5q3 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-lneei1k5q3 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-lneei1k5q3]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-lneei1k5q3 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-lneei1k5q3 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-lneei1k5q3 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-lneei1k5q3 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-lneei1k5q3] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-lneei1k5q3] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-lneei1k5q3] {
    border: 0;
    background-color: var(--brand-sea);
    color: var(--text-inverse);
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-lneei1k5q3] {
        background-color: var(--brand-sea-ink);
    }

    #components-reconnect-modal button:active[b-lneei1k5q3] {
        background-color: var(--brand-sea);
    }

.components-rejoining-animation[b-lneei1k5q3] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-lneei1k5q3] {
        position: absolute;
        border: 3px solid var(--brand-glow);
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-lneei1k5q3 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-lneei1k5q3] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-lneei1k5q3 {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/AgentAccess.razor.rz.scp.css */
/* Agent access (/account/agent-access) — tokens only; colours come from theme.css. */

.agent-token-reveal[b-2exfbjqxf6] {
    border-left: 4px solid var(--status-warning);
    background: var(--surface);
}

.agent-token-reveal__row[b-2exfbjqxf6] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin: 0.5rem 0 0.75rem;
}

.agent-token-reveal__row .app-cta[b-2exfbjqxf6] {
    flex: 0 0 auto;
    white-space: nowrap;
}

.agent-token-reveal__value[b-2exfbjqxf6] {
    flex: 1 1 auto;
    min-width: 0;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.85rem;
}

.agent-token-table-wrap[b-2exfbjqxf6] {
    /* contains the visually-hidden header's absolute box, which otherwise
       escapes the scroller and widens the page at phone width */
    position: relative;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.agent-token-table[b-2exfbjqxf6] {
    min-width: 36rem;
}

.agent-token-status[b-2exfbjqxf6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    white-space: nowrap;
}

.agent-token-scopes[b-2exfbjqxf6] {
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 0.5rem 0.75rem 0.75rem;
    margin: 0;
}

.agent-token-scope[b-2exfbjqxf6] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-top: 0.4rem;
    color: var(--text);
}

.agent-token-scope--off[b-2exfbjqxf6] {
    color: var(--text-muted);
}

.agent-token-scope input[b-2exfbjqxf6] {
    margin-top: 0.2rem;
}

code[b-2exfbjqxf6] {
    overflow-wrap: anywhere;
}

/* Grid/flex children default to min-width: auto, so a wide table inside a
   panel widened the PAGE at phone width (measured: 611px scroll on a 390px
   viewport). min-width: 0 lets the table's own wrapper scroll instead. */
.app-panel[b-2exfbjqxf6],
.company-layout > *[b-2exfbjqxf6] {
    min-width: 0;
}

@media (max-width: 640px) {
    .form-grid[b-2exfbjqxf6] {
        grid-template-columns: minmax(0, 1fr);
    }

    .agent-token-reveal__row[b-2exfbjqxf6] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/AgentDrafts.razor.rz.scp.css */
/* Agent drafts (/agent-drafts) — tokens only; colours come from theme.css. */

.agent-drafts-table-wrap[b-0s7fc5n0mg] {
    /* contains the visually-hidden header's absolute box, which otherwise
       escapes the scroller and widens the page at phone width */
    position: relative;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.agent-drafts-table[b-0s7fc5n0mg] {
    min-width: 40rem;
}

.agent-drafts-actions[b-0s7fc5n0mg] {
    white-space: nowrap;
}

.agent-drafts-actions .app-cta + .app-cta[b-0s7fc5n0mg] {
    margin-left: 0.4rem;
}

.agent-drafts-filter[b-0s7fc5n0mg] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.agent-drafts-filter .flag-label[b-0s7fc5n0mg] {
    white-space: nowrap;
}

.agent-drafts-filter select[b-0s7fc5n0mg] {
    width: auto;
}

.agent-drafts-preview p[b-0s7fc5n0mg] {
    white-space: pre-wrap;
    max-width: 48rem;
    color: var(--text);
}

/* Same phone-width rule as Agent access: the table scrolls, the page does not. */
.app-panel[b-0s7fc5n0mg] {
    min-width: 0;
}

@media (max-width: 640px) {
    .agent-drafts-filter[b-0s7fc5n0mg] {
        display: flex;
        width: 100%;
    }
}

.agent-drafts-compare[b-0s7fc5n0mg] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
    margin-top: 0.4rem;
}

.agent-drafts-compare p[b-0s7fc5n0mg] {
    white-space: pre-wrap;
    margin: 0.2rem 0 0;
    color: var(--text);
}

@media (max-width: 640px) {
    .agent-drafts-compare[b-0s7fc5n0mg] {
        grid-template-columns: minmax(0, 1fr);
    }
}

.agent-drafts-warning[b-0s7fc5n0mg] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0.3rem 0 0;
    color: var(--status-warning-ink);
    background: var(--status-warning-soft);
    border-radius: var(--radius-sm);
    padding: 0.3rem 0.5rem;
}
/* /Components/Pages/BidElectrical.razor.rz.scp.css */
/* Electrical (lane C) on the bid workspace shell. The shell
   (BidWorkspaceSidebar.razor.css) lays out the sidebar, title strip and
   foot; this file styles only what this page puts in its slots and main
   column. Colours are theme.css tokens: --phase-* for the A/B/C rows
   (accent), --status-* only for the balance / utilisation verdicts. */

.bws-save[b-iepa98xi6q] { flex: 1 1 auto; min-width: 0; }
@media (min-width: 1280px) {
    .bws[data-collapsed="true"]:not([data-panel="true"]) .bws-side .bws-save__extra[b-iepa98xi6q] { display: none; }
}
@media (min-width: 768px) and (max-width: 1279.98px) and (pointer: fine),
       (min-width: 768px) and (max-width: 1279.98px) and (min-height: 501px) {
    .bws:not([data-open="true"]):not([data-panel="true"]) .bws-side .bws-save__extra[b-iepa98xi6q] { display: none; }
}

.bws-identity[b-iepa98xi6q] { display: grid; gap: .35rem; padding: .15rem 0; }
.bws-identity > div[b-iepa98xi6q] { min-width: 0; }
.bws-identity .flag-label[b-iepa98xi6q] { display: block; }
.bws-identity__value[b-iepa98xi6q] {
    margin: 0;
    font-size: .86rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--text);
    overflow-wrap: anywhere;
}

.elec-info[b-iepa98xi6q] { margin: 0; }
.elec-lock-chip[b-iepa98xi6q] { border-color: var(--status-warning); }
.elec-panel-picker .form-select[b-iepa98xi6q] { min-width: 12rem; }

/* ---- in-page tabs ---------------------------------------------------- */
.elec-tabs[b-iepa98xi6q] {
    display: flex;
    gap: .25rem;
    border-bottom: 1px solid var(--border);
    margin: .25rem 0 .5rem;
}
.elec-tab[b-iepa98xi6q] {
    border: 0;
    background: transparent;
    color: var(--text-muted);
    font-weight: 600;
    padding: .5rem .85rem;
    min-height: 2.5rem;
    border-bottom: 3px solid transparent;
    cursor: pointer;
}
.elec-tab[aria-selected="true"][b-iepa98xi6q] { color: var(--text); border-bottom-color: var(--brand-sea); }
.elec-tab:focus-visible[b-iepa98xi6q] { outline: none; box-shadow: var(--shadow-focus); }

/* ---- panel header ---------------------------------------------------- */
.elec-head[b-iepa98xi6q] { padding: .65rem .9rem; }
.elec-head__line[b-iepa98xi6q] { margin: 0; display: flex; flex-wrap: wrap; gap: .35rem .75rem; align-items: center; }
.elec-head__line + .elec-head__line[b-iepa98xi6q] { margin-top: .35rem; }
/* The header's parts wrap between each other, never mid-part, and the
   separator belongs to the part after it (no lone "· 200 A" line). */
.elec-head__parts[b-iepa98xi6q] { gap: .2rem .45rem; }
.elec-head__part[b-iepa98xi6q] { white-space: nowrap; }
.elec-head__name[b-iepa98xi6q] { font-weight: 800; }
.elec-head__part + .elec-head__part[b-iepa98xi6q]::before { content: "·"; margin-right: .45rem; color: var(--text-muted); }

.elec-status[b-iepa98xi6q] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .1rem .55rem;
    border-radius: 999px;
    font-weight: 700;
    font-size: .82rem;
}
.elec-status--success[b-iepa98xi6q] { background: var(--status-success-soft); color: var(--status-success-ink); }
.elec-status--warning[b-iepa98xi6q] { background: var(--status-warning-soft); color: var(--status-warning-ink); }
.elec-status--danger[b-iepa98xi6q]  { background: var(--status-danger-soft);  color: var(--status-danger-ink); }
.elec-status--empty[b-iepa98xi6q]   { background: var(--surface-sunken); color: var(--text-muted); }
.elec-dot[b-iepa98xi6q] { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; margin-right: .35rem; padding: 0; }

.elec-section-title[b-iepa98xi6q] { font-size: 1rem; margin: 0 0 .5rem; display: flex; gap: .5rem; align-items: center; }
.elec-ref[b-iepa98xi6q] {
    display: inline-block;
    font-size: .72rem;
    font-weight: 700;
    padding: .05rem .4rem;
    border-radius: var(--radius-xs);
    background: var(--brand-glow-soft);
    color: var(--text);
    white-space: nowrap;
}
.elec-muted[b-iepa98xi6q] { color: var(--text-muted); }

/* ---- the panel directory ----------------------------------------------
   Desktop: odd spaces left, even right, one row per pair — a real panel's
   directory. Phone: one column in slot order, empty spaces folded into the
   "Add circuit (n free)" button. */
.elec-grid-panel[b-iepa98xi6q] { container-type: inline-size; padding: .5rem; }
.elec-grid[b-iepa98xi6q] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2px 6px;
}
.elec-slot[b-iepa98xi6q] { min-width: 0; border-radius: var(--radius-xs); }
.elec-slot.phase-a[b-iepa98xi6q] { background: var(--phase-a-soft); }
.elec-slot.phase-b[b-iepa98xi6q] { background: var(--phase-b-soft); }
.elec-slot.phase-c[b-iepa98xi6q] { background: var(--phase-c-soft); }
.elec-slot--empty[b-iepa98xi6q] { opacity: .85; }
.elec-slot__btn[b-iepa98xi6q] {
    display: grid;
    grid-template-columns: 2rem 1.4rem 3.6rem minmax(0, 1fr) auto;
    grid-template-areas: "num ph brk desc va" ". . flags flags flags";
    align-items: center;
    gap: 0 .45rem;
    width: 100%;
    min-height: 2.4rem;
    padding: .3rem .5rem;
    border: 1px solid transparent;
    border-radius: inherit;
    background: transparent;
    color: var(--text);
    text-align: left;
    font: inherit;
    font-size: .84rem;
    cursor: pointer;
}
.elec-slot__btn:hover:not(:disabled)[b-iepa98xi6q] { border-color: var(--border-strong); }
.elec-slot__btn:focus-visible[b-iepa98xi6q] { outline: none; box-shadow: var(--shadow-focus); }
.elec-slot__btn:disabled[b-iepa98xi6q] { cursor: default; }
.elec-slot__num[b-iepa98xi6q] { grid-area: num; font-weight: 700; color: var(--text-muted); text-align: right; white-space: nowrap; }
.elec-slot__phase[b-iepa98xi6q] {
    grid-area: ph;
    font-weight: 800;
    font-size: .75rem;
    text-align: center;
}
.phase-a .elec-slot__phase[b-iepa98xi6q] { color: var(--phase-a); }
.phase-b .elec-slot__phase[b-iepa98xi6q] { color: var(--phase-b); }
.phase-c .elec-slot__phase[b-iepa98xi6q] { color: var(--phase-c); }
.elec-slot__brk[b-iepa98xi6q] { grid-area: brk; font-weight: 600; white-space: nowrap; }
.elec-slot__desc[b-iepa98xi6q] { grid-area: desc; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.elec-slot__va[b-iepa98xi6q] { grid-area: va; font-variant-numeric: tabular-nums; white-space: nowrap; }
.elec-slot__flags[b-iepa98xi6q] { grid-area: flags; display: flex; flex-wrap: wrap; gap: .25rem; }
.elec-slot__flags:empty[b-iepa98xi6q] { display: none; }
.elec-flag[b-iepa98xi6q] {
    font-size: .68rem;
    font-weight: 700;
    padding: 0 .35rem;
    border-radius: var(--radius-xs);
    border: 1px solid var(--border-strong);
    background: var(--surface);
    white-space: nowrap;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}
.elec-flag--muted[b-iepa98xi6q] { color: var(--text-muted); }
.elec-slot--cont .elec-slot__btn[b-iepa98xi6q] { font-style: italic; }
.elec-add-free[b-iepa98xi6q] { margin-top: .6rem; }

@container (max-width: 44rem) {
    .elec-grid[b-iepa98xi6q] { grid-template-columns: minmax(0, 1fr); }
    .elec-slot--empty[b-iepa98xi6q] { display: none; }
    .elec-slot__btn[b-iepa98xi6q] {
        min-height: 3.625rem;
        grid-template-columns: 2.4rem 1.4rem 3.6rem minmax(0, 1fr);
        grid-template-areas: "num ph brk desc" ". . va flags";
    }
    .elec-slot__va[b-iepa98xi6q]::after { content: " VA"; }
}

/* ---- load calc --------------------------------------------------------- */
.elec-methods[b-iepa98xi6q] { display: grid; gap: .75rem; }
@media (min-width: 1280px) {
    .elec-methods--two[b-iepa98xi6q] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.elec-method[b-iepa98xi6q] { container-type: inline-size; min-width: 0; }
.elec-calc[b-iepa98xi6q] { width: 100%; border-collapse: collapse; font-size: .84rem; }
.elec-calc :is(th, td)[b-iepa98xi6q] { padding: .3rem .4rem; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.elec-calc th[b-iepa98xi6q] { color: var(--text-muted); font-size: .74rem; text-transform: uppercase; letter-spacing: .03em; }
.elec-calc .num[b-iepa98xi6q] { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.elec-calc__info td[b-iepa98xi6q] { color: var(--text-muted); }
@container (max-width: 36rem) {
    .elec-calc[b-iepa98xi6q], .elec-calc tbody[b-iepa98xi6q] { display: block; }
    .elec-calc thead[b-iepa98xi6q] { display: none; }
    .elec-calc tr[b-iepa98xi6q] {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        gap: .1rem .5rem;
        padding: .45rem .1rem;
        border-bottom: 1px solid var(--border);
    }
    .elec-calc td[b-iepa98xi6q] { display: block; border: 0; padding: 0; text-align: left; }
    .elec-calc td[data-label="Category"][b-iepa98xi6q] { font-weight: 700; }
    .elec-calc td[data-label="Basis"][b-iepa98xi6q] { grid-column: 1 / -1; }
    .elec-calc td[data-label="Connected"][b-iepa98xi6q], .elec-calc td[data-label="Factor"][b-iepa98xi6q] { display: none; }
    .elec-calc td[data-label="Demand"][b-iepa98xi6q] { grid-column: 2; grid-row: 1; text-align: right; font-weight: 700; }
}
.elec-verdict[b-iepa98xi6q] { display: grid; gap: .3rem; margin: .75rem 0 0; }
.elec-verdict > div[b-iepa98xi6q] { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; }
.elec-verdict dt[b-iepa98xi6q] { color: var(--text-muted); font-weight: 600; }
.elec-verdict dd[b-iepa98xi6q] { margin: 0; font-weight: 700; }
.elec-footer[b-iepa98xi6q] { margin-top: .5rem; }

/* ---- phase balance ----------------------------------------------------- */
.elec-panel-strip[b-iepa98xi6q] { display: flex; flex-wrap: wrap; gap: .35rem; }
.elec-panel-strip__item[b-iepa98xi6q] {
    border: 1px solid var(--border);
    background: var(--surface);
    color: var(--text);
    border-radius: 999px;
    padding: .25rem .7rem;
    min-height: 2.25rem;
    cursor: pointer;
}
.elec-panel-strip__item[aria-current="true"][b-iepa98xi6q] { border-color: var(--brand-sea); font-weight: 700; }
.elec-balance__status[b-iepa98xi6q] { font-size: 1.15rem; padding: .3rem .9rem; margin: 0 0 .5rem; }
.elec-legs[b-iepa98xi6q] { display: grid; gap: .5rem; margin: .5rem 0; }
.elec-leg[b-iepa98xi6q] { display: grid; grid-template-columns: 5rem minmax(0, 1fr) auto; gap: .6rem; align-items: center; }
.elec-leg__name[b-iepa98xi6q] { font-weight: 700; }
.elec-leg__bar[b-iepa98xi6q] { display: block; height: .8rem; background: var(--surface-sunken); border-radius: 999px; overflow: hidden; }
.elec-leg__bar > span[b-iepa98xi6q] { display: block; height: 100%; border-radius: inherit; }
.elec-leg.phase-a .elec-leg__bar > span[b-iepa98xi6q] { background: var(--phase-a); }
.elec-leg.phase-b .elec-leg__bar > span[b-iepa98xi6q] { background: var(--phase-b); }
.elec-leg.phase-c .elec-leg__bar > span[b-iepa98xi6q] { background: var(--phase-c); }
.elec-leg__val[b-iepa98xi6q] { font-variant-numeric: tabular-nums; white-space: nowrap; font-size: .84rem; }
@media (max-width: 767.98px) {
    .elec-leg[b-iepa98xi6q] { grid-template-columns: minmax(0, 1fr) auto; }
    .elec-leg__bar[b-iepa98xi6q] { grid-column: 1 / -1; grid-row: 2; }
}
.elec-moves[b-iepa98xi6q] { padding-left: 1.1rem; display: grid; gap: .4rem; }
.elec-moves li[b-iepa98xi6q] { overflow-wrap: anywhere; }

.elec-warnings ul[b-iepa98xi6q] { margin: 0; padding-left: 1.1rem; display: grid; gap: .3rem; font-size: .86rem; }
.elec-warnings li[b-iepa98xi6q] { overflow-wrap: anywhere; }

.elec-empty__title[b-iepa98xi6q] { font-size: 1.15rem; margin: .25rem 0; }

/* ---- dialogs: centred on iPad/desktop, a bottom sheet on a phone -------- */
.elec-sheet[b-iepa98xi6q] { position: fixed; inset: 0; z-index: 1080; display: grid; place-items: center; padding: 1rem; }
.elec-sheet__scrim[b-iepa98xi6q] { position: absolute; inset: 0; background: rgba(15, 23, 42, .45); }
.elec-sheet__body[b-iepa98xi6q] {
    position: relative;
    width: min(40rem, 100%);
    max-height: calc(100dvh - 2rem);
    overflow: auto;
    display: grid;
    gap: .6rem;
    margin: 0;
}
.elec-sheet__head[b-iepa98xi6q] { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.elec-sheet__head h2[b-iepa98xi6q] { font-size: 1.1rem; margin: 0; }
.elec-sheet__actions[b-iepa98xi6q] { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem; }
.elec-form[b-iepa98xi6q] { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem .75rem; }
.elec-form > label[b-iepa98xi6q] { display: grid; gap: .2rem; min-width: 0; }
.elec-form .checkbox-row[b-iepa98xi6q] { margin-top: 0; display: flex; align-items: center; gap: .4rem; }
.elec-form__wide[b-iepa98xi6q] { grid-column: 1 / -1; }
.elec-danger[b-iepa98xi6q] { color: var(--status-danger-ink); border-color: var(--status-danger); }
.elec-line-picker ul[b-iepa98xi6q] { list-style: none; margin: 0; padding: 0; max-height: 14rem; overflow: auto; display: grid; gap: .2rem; }
.elec-line-picker__item[b-iepa98xi6q] {
    width: 100%;
    text-align: left;
    border: 1px solid var(--border);
    background: var(--surface);
    color: var(--text);
    border-radius: var(--radius-xs);
    padding: .45rem .6rem;
    min-height: 2.5rem;
    cursor: pointer;
}
@media (max-width: 767.98px) {
    .elec-sheet[b-iepa98xi6q] { place-items: end stretch; padding: 0; }
    .elec-sheet__body[b-iepa98xi6q] { width: 100%; max-height: 88dvh; border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
    .elec-form[b-iepa98xi6q] { grid-template-columns: minmax(0, 1fr); }
    .elec-tabs[b-iepa98xi6q] { overflow-x: auto; }
    .elec-tab[b-iepa98xi6q] { flex: 1 0 auto; }
}

/* Phone: the dock holds Bid menu, the demand and the pinned command, so the
   command keeps only its last word there, as on the rail. A 2/3-pole
   breaker's card names all its spaces ("3·5") and its continuation spaces
   fold away. */
.elec-slot__more[b-iepa98xi6q] { display: none; }
@media (max-width: 767.98px) {
    .bws-dock .bws-save__extra[b-iepa98xi6q] { display: none; }
    .bws-save[b-iepa98xi6q] { flex: 0 0 auto; }
}
@container (max-width: 44rem) {
    .elec-slot--cont[b-iepa98xi6q] { display: none; }
    .elec-slot__more[b-iepa98xi6q] { display: inline; }
}
/* /Components/Pages/BidPreview.razor.rz.scp.css */
/* BidPreview on the bid workspace shell (Feature 16264, PBI 16266).

   The shell (BidWorkspaceSidebar.razor.css) lays out the sidebar, the title
   strip and the foot; this file styles only the markup this page puts in
   its slots and its main column. Colours come from theme.css tokens. */

/* The pinned command (foot and phone dock): in the dock it takes the
   room the bid page gives its Total. */
.bws-save[b-yc2xw0cj0e] { flex: 1 1 auto; min-width: 0; }

/* On the rail the pinned command keeps only its last word ("Word",
   "Orders"); its accessible name and tooltip keep the whole label. */
@media (min-width: 1280px) {
    .bws[data-collapsed="true"]:not([data-panel="true"]) .bws-side .bws-save__extra[b-yc2xw0cj0e] { display: none; }
}
@media (min-width: 768px) and (max-width: 1279.98px) and (pointer: fine),
       (min-width: 768px) and (max-width: 1279.98px) and (min-height: 501px) {
    .bws:not([data-open="true"]):not([data-panel="true"]) .bws-side .bws-save__extra[b-yc2xw0cj0e] { display: none; }
}

/* Sidebar: the bid's identity (no pickers here; the bid page has them). */
.bws-identity[b-yc2xw0cj0e] {
    display: grid;
    gap: .35rem;
    padding: .15rem 0;
}
.bws-identity > div[b-yc2xw0cj0e] { min-width: 0; }
.bws-identity .flag-label[b-yc2xw0cj0e] { display: block; }
.bws-identity__value[b-yc2xw0cj0e] {
    margin: 0;
    font-size: .86rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--text);
    overflow: hidden;
    overflow-wrap: anywhere;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}

/* Advanced options panel: the two toggle banks one under the other, two
   checkboxes a row in the 400px sidebar (one on a narrow phone). */
.preview-options-panel .preview-toggle-bank + .preview-toggle-bank[b-yc2xw0cj0e] { margin-top: .5rem; }
.preview-options-panel .preview-toggle-grid[b-yc2xw0cj0e] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* app.css nudges every .checkbox-row / .compact-check down (1.55-1.8rem)
   to line up with labelled fields beside it; a list of toggles has none. */
.preview-options-panel .checkbox-row[b-yc2xw0cj0e] { margin-top: 0; min-height: 1.75rem; }
@media (pointer: coarse) {
    .preview-options-panel .checkbox-row[b-yc2xw0cj0e] { min-height: var(--tap-min); }
}
@media (max-width: 359.98px) {
    .preview-options-panel .preview-toggle-grid[b-yc2xw0cj0e] { grid-template-columns: minmax(0, 1fr); }
}

/* Phones: the quick controls two to a row (Selection, Opening/Closing and
   the cover choice keep a whole row) instead of one tall column. */
@media (max-width: 767.98px) {
    .preview-quick-grid[b-yc2xw0cj0e] { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem .6rem; align-items: end; }
    .preview-quick-grid .preview-scope-strip[b-yc2xw0cj0e],
    .preview-quick-grid .preview-inline-choice[b-yc2xw0cj0e] { grid-column: 1 / -1; }
    .preview-quick-grid .preview-inline-choice > .checkbox-row[b-yc2xw0cj0e] { margin-top: 0; }
    .preview-room-header .status-pill[b-yc2xw0cj0e] { white-space: nowrap; }
}

/* Proposal body: one line per item, no sideways scroll. The shell already
   drops app.css's 1320px floor; fixed layout gives the text columns what
   the fixed-width columns leave and cuts them with an ellipsis (each cell
   keeps its full text as a tooltip). */
.preview-room-section[b-yc2xw0cj0e] { container-type: inline-size; }
.preview-table th[b-yc2xw0cj0e] { top: var(--bws-top, 0px); }
.preview-items-table[b-yc2xw0cj0e] { table-layout: fixed; }
.preview-items-table :is(th, td)[b-yc2xw0cj0e] { overflow: hidden; text-overflow: ellipsis; }
.preview-items-table .c-phase[b-yc2xw0cj0e] { width: 5rem; }
.preview-items-table .c-mfg[b-yc2xw0cj0e] { width: 7.5rem; }
.preview-items-table .c-model[b-yc2xw0cj0e] { width: 8.5rem; }
.preview-items-table .c-qty[b-yc2xw0cj0e] { width: 3.5rem; }
.preview-items-table .c-unit[b-yc2xw0cj0e] { width: 3.25rem; }
.preview-items-table .c-sell[b-yc2xw0cj0e] { width: 5.75rem; }
.preview-items-table .c-total[b-yc2xw0cj0e] { width: 6.25rem; }
.preview-items-table .c-url[b-yc2xw0cj0e] { width: 9rem; }
/* Features shares the leftover width with Description; Description keeps
   the larger share (most lines have no features text). */
.preview-items-table .c-feat[b-yc2xw0cj0e] { width: 16%; }
@container (max-width: 60rem) {
    .preview-items-table .c-feat[b-yc2xw0cj0e] { width: 12%; }
}

/* Narrow (a phone, or a phone held sideways): each item is
   a two- or three-line card — model, mfg and total; the description; then
   phase, quantity and unit price — instead of a table wider than the page. */
@container (max-width: 40rem) {
    .preview-items-table[b-yc2xw0cj0e],
    .preview-items-table tbody[b-yc2xw0cj0e] { display: block; width: 100%; }
    .preview-items-table thead[b-yc2xw0cj0e] { display: none; }
    .preview-items-table tr[b-yc2xw0cj0e] {
        display: flex;
        flex-wrap: wrap;
        align-items: baseline;
        column-gap: .45rem;
        row-gap: .1rem;
        padding: .45rem .55rem;
        border-bottom: 1px solid var(--border);
    }
    /* .bid-workspace-table doubled: beats app.css's striped and hovered
       cell fills, so a card is one surface. */
    .preview-items-table.bid-workspace-table tr td[b-yc2xw0cj0e] {
        display: block;
        width: auto;
        min-width: 0;
        padding: 0;
        border: 0;
        background: transparent;
        color: inherit;
        white-space: nowrap;
    }
    .preview-items-table tr:nth-child(even)[b-yc2xw0cj0e] { background: var(--surface-sunken); }
    .preview-items-table tr:hover[b-yc2xw0cj0e] { background: var(--brand-sea-soft); }
    .preview-items-table .c-model[b-yc2xw0cj0e] { order: 1; font-weight: 700; flex: 0 1 auto; }
    .preview-items-table .c-mfg[b-yc2xw0cj0e] { order: 2; flex: 0 1 auto; color: var(--text-muted); }
    .preview-items-table .c-total[b-yc2xw0cj0e] { order: 3; margin-left: auto; font-weight: 700; flex: none; }
    .preview-items-table .c-desc[b-yc2xw0cj0e] { order: 4; flex: 1 0 100%; }
    .preview-items-table .c-feat[b-yc2xw0cj0e] { order: 5; flex: 1 0 100%; color: var(--text-muted); }
    /* On its own line the description (and features) wraps rather than
       hiding the end of a long product name behind an ellipsis no touch
       screen can hover; an unbroken name breaks inside its own line
       (verifier P3, 2026-10-10). Number cells stay nowrap. */
    .preview-items-table.bid-workspace-table tr td:is(.c-desc, .c-feat)[b-yc2xw0cj0e] {
        white-space: normal;
        overflow-wrap: anywhere;
    }
    .preview-items-table .c-phase[b-yc2xw0cj0e] { order: 6; color: var(--text-muted); font-size: .72rem; }
    .preview-items-table .c-qty[b-yc2xw0cj0e] { order: 7; }
    .preview-items-table .c-unit[b-yc2xw0cj0e] { order: 8; }
    .preview-items-table .c-sell[b-yc2xw0cj0e] { order: 9; color: var(--text-muted); }
    .preview-items-table .c-sell[b-yc2xw0cj0e]::before { content: "@ "; }
    .preview-items-table .c-url[b-yc2xw0cj0e] { order: 10; flex: 1 0 100%; color: var(--text-muted); font-size: .72rem; }
}

/* The short tables (system summary, payment plan) fit as they are; on a
   phone their headers may wrap rather than push the page sideways. */
@media (max-width: 767.98px) {
    .preview-payment-plan th[b-yc2xw0cj0e] { white-space: normal; }
    .preview-payment-plan :is(th, td)[b-yc2xw0cj0e] { padding-left: .35rem; padding-right: .35rem; }
}

/* ...until the amounts are large: five nowrap columns of a ten-figure plan
   ("$528,243,076.81") pushed the page to 391px at 320 (verifier P3,
   2026-10-10). On a phone each payment is a short card — number, percent
   and amount; the running balance; the due date (or status), each named —
   and no value ever breaks inside itself. */
@media (max-width: 640px) {
    .preview-payment-plan[b-yc2xw0cj0e],
    .preview-payment-plan tbody[b-yc2xw0cj0e] { display: block; width: 100%; min-width: 0; }
    .preview-payment-plan thead[b-yc2xw0cj0e] { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
    .preview-payment-plan tbody tr[b-yc2xw0cj0e] {
        display: grid;
        grid-template-columns: auto auto minmax(0, 1fr);
        column-gap: .5rem;
        row-gap: .1rem;
        padding: .45rem .55rem;
        border-bottom: 1px solid var(--border);
    }
    .preview-payment-plan.bid-workspace-table tbody td[b-yc2xw0cj0e] {
        padding: 0;
        border: 0;
        background: transparent;
        white-space: nowrap;
        overflow-wrap: normal;
        text-align: left;
    }
    .preview-payment-plan .pp-no[b-yc2xw0cj0e] { grid-area: 1 / 1; font-weight: 700; }
    .preview-payment-plan .pp-no[b-yc2xw0cj0e]::before { content: "#"; }
    .preview-payment-plan .pp-pct[b-yc2xw0cj0e] { grid-area: 1 / 2; color: var(--text-muted); }
    .preview-payment-plan.bid-workspace-table tbody td.pp-amt[b-yc2xw0cj0e] { grid-area: 1 / 3; text-align: right; font-weight: 700; }
    .preview-payment-plan .pp-bal[b-yc2xw0cj0e] { grid-area: 2 / 1 / 3 / 4; min-width: 0; color: var(--text-muted); font-size: .8rem; }
    .preview-payment-plan.bid-workspace-table tbody td.pp-due[b-yc2xw0cj0e] { grid-area: 3 / 1 / 4 / 4; min-width: 0; color: var(--text-muted); font-size: .8rem; white-space: normal; overflow-wrap: normal; }
    .preview-payment-plan .pp-bal[b-yc2xw0cj0e]::before,
    .preview-payment-plan .pp-due[data-label="Due"]:not(:empty)[b-yc2xw0cj0e]::before { content: attr(data-label) " "; }
}

/* R2 W1-4 — Advanced options in the page (iPad and desktop), as 815dbb6
   had them: the two banks a little apart. PHONE (the sidebar's sheet + dock
   mode, as BidWorkspaceSidebar.razor.css writes it) keeps them in the sidebar
   panel only, exactly as e10b644. */
.preview-advanced-options[b-yc2xw0cj0e] { scroll-margin-top: calc(var(--bws-top, 0px) + .75rem); }
.preview-advanced-options .preview-toggle-bank + .preview-toggle-bank[b-yc2xw0cj0e] { margin-top: 1rem; }
@media (max-width: 767.98px), (pointer: coarse) and (max-height: 500px) {
    .preview-advanced-options[b-yc2xw0cj0e] { display: none; }
}
/* /Components/Pages/BidTakeoff.razor.rz.scp.css */
/* Plan takeoff (lane D) on the bid workspace shell. Opens on the rail so the
   canvas gets the width. Colours are theme.css tokens. */

.bws-save[b-7h7ui64fhp] { flex: 1 1 auto; min-width: 0; }
@media (min-width: 1280px) {
    .bws[data-collapsed="true"]:not([data-panel="true"]) .bws-side .bws-save__extra[b-7h7ui64fhp] { display: none; }
}
@media (min-width: 768px) and (max-width: 1279.98px) and (pointer: fine),
       (min-width: 768px) and (max-width: 1279.98px) and (min-height: 501px) {
    .bws:not([data-open="true"]):not([data-panel="true"]) .bws-side .bws-save__extra[b-7h7ui64fhp] { display: none; }
}
.bws-identity[b-7h7ui64fhp] { display: grid; gap: .35rem; padding: .15rem 0; }
.bws-identity > div[b-7h7ui64fhp] { min-width: 0; }
.bws-identity .flag-label[b-7h7ui64fhp] { display: block; }
.bws-identity__value[b-7h7ui64fhp] { margin: 0; font-size: .86rem; font-weight: 700; line-height: 1.25; color: var(--text); overflow-wrap: anywhere; }

.elec-muted[b-7h7ui64fhp] { color: var(--text-muted); }
.takeoff-title[b-7h7ui64fhp] { font-size: 1rem; margin: 0 0 .5rem; }
.takeoff-link[b-7h7ui64fhp] {
    border: 0;
    background: none;
    padding: 0;
    color: var(--brand-sea-ink);
    text-decoration: underline;
    cursor: pointer;
    font: inherit;
}

/* ---- new takeoff + list ------------------------------------------------- */
.takeoff-form[b-7h7ui64fhp] { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: .55rem .75rem; }
.takeoff-form > label[b-7h7ui64fhp] { display: grid; gap: .2rem; min-width: 0; }
.takeoff-form__wide[b-7h7ui64fhp] { grid-column: 1 / -1; }
.takeoff-actions[b-7h7ui64fhp] { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.takeoff-existing[b-7h7ui64fhp] { max-width: 18rem; }
.takeoff-plans[b-7h7ui64fhp] { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.takeoff-plan[b-7h7ui64fhp] {
    width: 100%;
    display: grid;
    gap: .15rem;
    text-align: left;
    min-height: 3.625rem;
    padding: .6rem .8rem;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    color: var(--text);
    cursor: pointer;
}
.takeoff-plan:hover[b-7h7ui64fhp] { border-color: var(--brand-sea); }
.takeoff-plan:focus-visible[b-7h7ui64fhp] { outline: none; box-shadow: var(--shadow-focus); }
.takeoff-plan__title[b-7h7ui64fhp] { font-weight: 700; }
.takeoff-plan__meta[b-7h7ui64fhp] { color: var(--text-muted); font-size: .84rem; overflow-wrap: anywhere; }

/* ---- canvas layout: palette | canvas | counts --------------------------- */
.takeoff-layout[b-7h7ui64fhp] {
    display: grid;
    grid-template-columns: 15rem minmax(0, 1fr) 14rem;
    gap: .75rem;
    align-items: start;
}
@media (max-width: 1279.98px) {
    .takeoff-layout[b-7h7ui64fhp] { grid-template-columns: 14rem minmax(0, 1fr); }
    .takeoff-counts[b-7h7ui64fhp] { grid-column: 1 / -1; }
}
@media (max-width: 767.98px) {
    .takeoff-layout[b-7h7ui64fhp] { grid-template-columns: minmax(0, 1fr); }
    .takeoff-canvas-panel[b-7h7ui64fhp] { order: -1; }
    .takeoff-tool--room[b-7h7ui64fhp] { display: none; }
}
.takeoff-phone-hint[b-7h7ui64fhp] { display: none; }
@media (max-width: 767.98px) {
    .takeoff-phone-hint[b-7h7ui64fhp] { display: block; }
}

.takeoff-palette[b-7h7ui64fhp], .takeoff-counts[b-7h7ui64fhp], .takeoff-canvas-panel[b-7h7ui64fhp] { min-width: 0; }
.takeoff-tools[b-7h7ui64fhp] { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .5rem; }
.takeoff-tool[b-7h7ui64fhp] {
    flex: 1 1 auto;
    min-height: 2.5rem;
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-xs);
    background: var(--surface);
    color: var(--text);
    font-weight: 600;
    cursor: pointer;
}
.takeoff-tool[aria-pressed="true"][b-7h7ui64fhp] { background: var(--brand-sea); color: var(--text-inverse); border-color: var(--brand-sea); }
.takeoff-tool:disabled[b-7h7ui64fhp] { opacity: .55; cursor: default; }
.takeoff-symbol[b-7h7ui64fhp] { border: 0; margin: 0; padding: 0; display: grid; gap: .45rem; min-width: 0; }
.takeoff-symbol > label[b-7h7ui64fhp] { display: grid; gap: .2rem; }
.takeoff-symbol__product[b-7h7ui64fhp] { margin: 0; font-size: .86rem; overflow-wrap: anywhere; }
.takeoff-search[b-7h7ui64fhp] { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .35rem; }
.takeoff-search .form-control[b-7h7ui64fhp] { min-width: 0; }
.takeoff-search .app-cta[b-7h7ui64fhp] { white-space: nowrap; padding-inline: .7rem; }
.takeoff-results[b-7h7ui64fhp], .takeoff-palette__list[b-7h7ui64fhp] { list-style: none; margin: 0; padding: 0; display: grid; gap: .2rem; max-height: 14rem; overflow: auto; }
.takeoff-results button[b-7h7ui64fhp], .takeoff-swatch[b-7h7ui64fhp] {
    width: 100%;
    text-align: left;
    border: 1px solid var(--border);
    border-radius: var(--radius-xs);
    background: var(--surface);
    color: var(--text);
    padding: .35rem .5rem;
    min-height: 2.25rem;
    cursor: pointer;
    overflow-wrap: anywhere;
}
.takeoff-swatch[aria-pressed="true"][b-7h7ui64fhp] { border-color: var(--brand-sea); box-shadow: inset 3px 0 0 var(--brand-sea); }
.takeoff-swatch__dot[b-7h7ui64fhp] { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; background: var(--brand-sea); margin-right: .4rem; }
.takeoff-room-draft[b-7h7ui64fhp] { display: grid; gap: .4rem; margin-top: .6rem; }
.takeoff-room-draft > label[b-7h7ui64fhp] { display: grid; gap: .2rem; }
.takeoff-delete[b-7h7ui64fhp] { margin-top: .6rem; width: 100%; }

.takeoff-canvas-head[b-7h7ui64fhp] { display: flex; flex-wrap: wrap; gap: .5rem; align-items: baseline; margin-bottom: .4rem; }
.takeoff-canvas[b-7h7ui64fhp] {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-xs);
    background: var(--surface);
    touch-action: manipulation;
}
.takeoff-canvas.tool-marker[b-7h7ui64fhp], .takeoff-canvas.tool-room[b-7h7ui64fhp] { cursor: crosshair; }
.takeoff-sheet[b-7h7ui64fhp] { fill: var(--surface); }
.takeoff-grid-line[b-7h7ui64fhp] { fill: none; stroke: var(--border); stroke-width: 1; }
.takeoff-room[b-7h7ui64fhp] { fill: var(--brand-sea-soft); fill-opacity: .55; stroke: var(--brand-sea); stroke-width: 2; }
.takeoff-room.is-selected[b-7h7ui64fhp] { stroke-width: 4; stroke-dasharray: 8 4; }
.takeoff-room-draft-line[b-7h7ui64fhp] { fill: none; stroke: var(--brand-sea-ink); stroke-width: 2; stroke-dasharray: 6 4; }
.takeoff-marker circle[b-7h7ui64fhp] { fill: var(--phase-a); stroke: var(--surface); stroke-width: 2; }
.takeoff-marker.is-selected circle[b-7h7ui64fhp] { stroke: var(--ring); stroke-width: 4; }
.takeoff-canvas[b-7h7ui64fhp]  .takeoff-marker-label { font-size: 14px; fill: var(--text); paint-order: stroke; stroke: var(--surface); stroke-width: 3px; }
.takeoff-canvas[b-7h7ui64fhp]  .takeoff-room-label { font-size: 16px; font-weight: 700; fill: var(--brand-sea-ink); }
.takeoff-canvas :is(polygon, polyline, g, rect)[b-7h7ui64fhp] { pointer-events: none; }
.takeoff-canvas rect.takeoff-sheet[b-7h7ui64fhp] { pointer-events: all; }

.takeoff-details[b-7h7ui64fhp] { margin-top: .5rem; }
.takeoff-details summary[b-7h7ui64fhp] { cursor: pointer; font-weight: 600; }
.takeoff-details .takeoff-form[b-7h7ui64fhp] { margin-top: .5rem; }

/* ---- counts --------------------------------------------------------------- */
.takeoff-count-room[b-7h7ui64fhp] { margin-bottom: .6rem; }
.takeoff-count-room__name[b-7h7ui64fhp] { margin: 0 0 .2rem; font-weight: 700; display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.takeoff-count-room ul[b-7h7ui64fhp] { list-style: none; margin: 0; padding: 0; }
.takeoff-count-room li[b-7h7ui64fhp] { display: flex; justify-content: space-between; gap: .5rem; font-size: .86rem; padding: .1rem 0; border-bottom: 1px dashed var(--border); }
.takeoff-counts > .app-cta[b-7h7ui64fhp] { width: 100%; margin-top: .4rem; }

.takeoff-chip[b-7h7ui64fhp] {
    display: inline-block;
    font-size: .74rem;
    font-weight: 700;
    padding: .05rem .5rem;
    border-radius: 999px;
    white-space: nowrap;
}
.takeoff-chip--success[b-7h7ui64fhp] { background: var(--status-success-soft); color: var(--status-success-ink); }
.takeoff-chip--warning[b-7h7ui64fhp] { background: var(--status-warning-soft); color: var(--status-warning-ink); }
.takeoff-chip--danger[b-7h7ui64fhp] { background: var(--status-danger-soft); color: var(--status-danger-ink); }
.takeoff-chip--muted[b-7h7ui64fhp] { background: var(--surface-sunken); color: var(--text-muted); }

/* ---- review sheet (centred dialog; a bottom sheet on a phone) ------------ */
.elec-sheet[b-7h7ui64fhp] { position: fixed; inset: 0; z-index: 1080; display: grid; place-items: center; padding: 1rem; }
.elec-sheet__scrim[b-7h7ui64fhp] { position: absolute; inset: 0; background: rgba(15, 23, 42, .45); }
.elec-sheet__body[b-7h7ui64fhp] { position: relative; width: min(46rem, 100%); max-height: calc(100dvh - 2rem); overflow: auto; display: grid; gap: .6rem; margin: 0; }
.elec-sheet__head[b-7h7ui64fhp] { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.elec-sheet__head h2[b-7h7ui64fhp] { font-size: 1.1rem; margin: 0; }
.elec-sheet__actions[b-7h7ui64fhp] { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem; }
.takeoff-review__rows[b-7h7ui64fhp] { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.takeoff-review__row[b-7h7ui64fhp] {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1.2fr) minmax(0, 1.4fr) auto;
    gap: .5rem;
    align-items: center;
    padding: .45rem .5rem;
    border: 1px solid var(--border);
    border-radius: var(--radius-xs);
    min-height: 3.625rem;
}
.takeoff-review__what[b-7h7ui64fhp] { display: grid; min-width: 0; overflow-wrap: anywhere; }
.takeoff-review__room[b-7h7ui64fhp] { display: grid; gap: .3rem; min-width: 0; }
.takeoff-review__include input[b-7h7ui64fhp] { width: 1.2rem; height: 1.2rem; }
@media (max-width: 767.98px) {
    .elec-sheet[b-7h7ui64fhp] { place-items: end stretch; padding: 0; }
    .elec-sheet__body[b-7h7ui64fhp] { width: 100%; max-height: 88dvh; border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
    .takeoff-review__row[b-7h7ui64fhp] { grid-template-columns: 2rem minmax(0, 1fr) auto; }
    .takeoff-review__room[b-7h7ui64fhp] { grid-column: 2 / -1; }
    .takeoff-form[b-7h7ui64fhp] { grid-template-columns: minmax(0, 1fr); }
}

/* Phone: the dock's pinned command keeps only its last word, as on the rail,
   so Bid menu and the counts keep their room. */
@media (max-width: 767.98px) {
    .bws-dock .bws-save__extra[b-7h7ui64fhp] { display: none; }
    .bws-save[b-7h7ui64fhp] { flex: 0 0 auto; }
}

/* P3f: on a phone the 1200-unit canvas scaled to ~360 px drew its labels at
   ~5 px. The canvas keeps a 720 px minimum inside its own scroller (never
   the page) and its labels and markers grow, so they read at ~14-17 px. */
.takeoff-canvas-scroll[b-7h7ui64fhp] { overflow-x: auto; overscroll-behavior-x: contain; border-radius: var(--radius-xs); }
@media (max-width: 767.98px) {
    .takeoff-canvas[b-7h7ui64fhp] { min-width: 720px; }
    .takeoff-canvas[b-7h7ui64fhp]  .takeoff-marker-label { font-size: 24px; }
    .takeoff-canvas[b-7h7ui64fhp]  .takeoff-room-label { font-size: 28px; }
    .takeoff-marker circle[b-7h7ui64fhp] { r: 14px; }
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* Home page scoped styles. Relies on the global tokens from
   /wwwroot/css/theme.css. */

.home-hero[b-1sivlem6g5] {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(18rem, 1fr);
    gap: 1.25rem;
    align-items: center;
    overflow: hidden;
}

.home-hero__copy[b-1sivlem6g5] {
    min-width: 0;
}

.home-hero__ctas[b-1sivlem6g5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 1rem;
}

.home-hero__art[b-1sivlem6g5] {
    position: relative;
    display: grid;
    place-items: center;
    padding: 0.25rem;
    /* The frame stays 16:9 although the logo emblem is square.
       Framing it via aspect-ratio keeps the hero panel a
       consistent shape while Grok / swap-in art may vary
       slightly in output dimensions. */
    aspect-ratio: 16 / 9;
    min-height: 14rem;
    max-height: 22rem;
    /* The row is the frame's height, not the image's natural height
       (a square PNG at 100% width is taller than the frame), and the
       frame never grows past its column (min-height would otherwise
       push it ~410px wide and off-centre on a phone). */
    grid-template-rows: minmax(0, 1fr);
    max-width: 100%;
    border-radius: var(--radius-md);
    overflow: hidden;
    /* Subtle tinted bed behind the image so a PNG with a
       transparent background still reads as a framed focal. */
    background:
        linear-gradient(180deg,
            color-mix(in oklab, var(--brand-sea-soft) 70%, var(--surface)) 0%,
            var(--surface) 100%);
    box-shadow: inset 0 0 0 1px var(--border);
}

.home-hero__art picture[b-1sivlem6g5],
.home-hero__art picture img[b-1sivlem6g5],
.home-hero__art > img[b-1sivlem6g5] {
    width: 100%;
    /* 2/3 of the frame height: the emblem plus the brand brief's
       clear space (1/4 of its width on every side) is 1.5x the
       emblem, so contain never crops it and never stretches it. */
    height: 66.667%;
    display: block;
    object-fit: contain;
    object-position: 50% 42%;
    /* No drop-shadow: the brand brief forbids shadowing the logo. */
}

/* Collapse to single column on small screens — art goes
   underneath the copy so the call-to-action stays above the
   fold. */
@media (max-width: 1024px) {
    .home-hero[b-1sivlem6g5] {
        grid-template-columns: 1fr;
    }
    .home-hero__art[b-1sivlem6g5] {
        order: 2;
    }
    .home-hero__copy[b-1sivlem6g5] {
        order: 1;
    }
}
/* /Components/Pages/ProductDetail.razor.rz.scp.css */
.product-linked-items[b-l1m33ytfkw] {
    min-width: 50rem;
}

.product-linked-items :is(th, td):last-child[b-l1m33ytfkw] {
    width: 9.5rem;
}

.product-linked-items .linked-row-actions[b-l1m33ytfkw] {
    flex-wrap: wrap;
    justify-content: flex-start;
}

.product-suppliers-table[b-l1m33ytfkw] {
    min-width: 46rem;
}

/* Phone: the card heading's copy took the whole row and squeezed the card's
   one button ("Add linked item", "Add supplier") to 30-45px, its caption
   wrapping a few letters per line. Let the button drop under the copy. */
@media (max-width: 768px) {
    .linked-products-header[b-l1m33ytfkw] {
        flex-wrap: wrap;
    }
}
/* /Components/RecordHistoryPanel.razor.rz.scp.css */
/* Scoped styles for RecordHistoryPanel — collocated, following the
   DeviceJobDetail.razor.css pattern rather than adding a fourth inline
   timeline treatment to the app. Everything here is a token, not a
   literal colour, so the panel follows the theme system. */

.record-history[b-b6xstaqem5] {
    margin-block-start: 1rem;
}

.record-history__head[b-b6xstaqem5] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-block-end: 0.5rem;
}

.record-history__title[b-b6xstaqem5] {
    font-size: 1rem;
    margin: 0;
}

.record-history__count[b-b6xstaqem5] {
    font-size: 0.8125rem;
    color: var(--app-ink-muted, #666);
}

/* The table can outgrow a narrow viewport — a long note value is 4,000
   characters wide in the worst case. Scroll it inside its own container
   so the PAGE never scrolls sideways. */
.record-history__table[b-b6xstaqem5] {
    display: block;
    overflow-x: auto;
    max-width: 100%;
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.record-history__table th[b-b6xstaqem5],
.record-history__table td[b-b6xstaqem5] {
    text-align: left;
    padding: 0.375rem 0.625rem;
    border-block-end: 1px solid var(--app-border, #e0e0e0);
    vertical-align: top;
}

.record-history__table th[b-b6xstaqem5] {
    font-weight: 600;
    color: var(--app-ink-muted, #666);
    white-space: nowrap;
}

.record-history__when[b-b6xstaqem5] {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.record-history__who[b-b6xstaqem5],
.record-history__field[b-b6xstaqem5] {
    white-space: nowrap;
}

.record-history__field[b-b6xstaqem5] {
    font-weight: 600;
}

/* Values are the point of the panel, so give them room — but cap it, or
   one 4,000-character note pushes every other column off screen. */
.record-history__old[b-b6xstaqem5],
.record-history__new[b-b6xstaqem5] {
    max-width: 22rem;
    overflow-wrap: anywhere;
}

.record-history__old[b-b6xstaqem5] {
    color: var(--app-ink-muted, #666);
}

.record-history__row--insert .record-history__field[b-b6xstaqem5],
.record-history__row--delete .record-history__field[b-b6xstaqem5] {
    font-style: italic;
    font-weight: 500;
}

.record-history__row--delete[b-b6xstaqem5] {
    background: var(--status-danger-soft, #ffebee);
}

.record-history__note[b-b6xstaqem5] {
    margin-block-start: 0.5rem;
    margin-block-end: 0;
    font-size: 0.75rem;
    color: var(--app-ink-muted, #666);
}
/* /Components/Shared/BidPaymentPlanEditor.razor.rz.scp.css */
/* PP-3 — scoped styles for the payment-plan editor dialog. Tokens only, so
   the dialog follows the light/dark theme. The one status colour used is the
   danger token on an over-100% percent: that is a validation error on the
   field (the same token .field-error uses), not a repaint of a status. */

/* The dialog backdrop is a grid that sizes the panel to its content, and the
   table below has a 36rem minimum, so on a phone the panel grew past the
   screen and squeezed the header text to one letter per line. Capping the
   panel at the viewport (less the backdrop's 1.25rem padding each side) caps
   its content contribution too; the table then scrolls inside its wrapper. */
.payment-plan-editor[b-08wrohv6rz] {
    max-width: min(52rem, calc(100vw - 2.5rem));
}

.payment-plan-editor__note[b-08wrohv6rz] {
    margin: 0 0 0.85rem;
    padding: 0.55rem 0.75rem;
    border-radius: var(--radius-md);
    background: var(--surface-sunken);
    color: var(--text-muted);
    font-size: 0.875rem;
}

.payment-plan-editor__mode[b-08wrohv6rz] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 1rem;
    margin: 0 0 0.85rem;
    padding: 0;
    border: 0;
}

.payment-plan-editor__legend[b-08wrohv6rz] {
    float: none;
    width: auto;
    margin: 0 0.25rem 0 0;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--text);
}

/* Six rows of five inputs outgrow a phone: scroll inside the dialog so the
   page never scrolls sideways. */
.payment-plan-editor__table-wrap[b-08wrohv6rz] {
    max-width: 100%;
    overflow-x: auto;
}

.payment-plan-editor__table[b-08wrohv6rz] {
    width: 100%;
    min-width: 36rem;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.payment-plan-editor__table th[b-08wrohv6rz],
.payment-plan-editor__table td[b-08wrohv6rz] {
    padding: 0.35rem 0.45rem;
    text-align: left;
    vertical-align: middle;
    border-bottom: 1px solid var(--border);
}

.payment-plan-editor__table thead th[b-08wrohv6rz] {
    font-weight: 600;
    color: var(--text-muted);
    white-space: nowrap;
}

.payment-plan-editor__label[b-08wrohv6rz] {
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
}

.payment-plan-editor__pct-cell[b-08wrohv6rz] {
    width: 5.5rem;
}

.payment-plan-editor__amount-cell[b-08wrohv6rz] {
    width: 9rem;
}

.payment-plan-editor__due-cell[b-08wrohv6rz] {
    width: 10rem;
}

.payment-plan-editor__pct[b-08wrohv6rz],
.payment-plan-editor__amount[b-08wrohv6rz],
.payment-plan-editor__readonly[b-08wrohv6rz] {
    font-variant-numeric: tabular-nums;
}

.payment-plan-editor__readonly[b-08wrohv6rz] {
    display: block;
    padding: 0.25rem 0.5rem;
    color: var(--text);
}

/* Legacy painted the percent red while rows 1-5 exceed 100 (frmJob.vb:5184).
   The selector is deliberately specific: theme.css repaints every dark-theme
   number input with `[data-theme="dark"] input[type="number"]:not(.e-input)`
   (specificity 0,3,1), which otherwise wins and hides the red in dark. */
.payment-plan-editor__table input.payment-plan-editor__pct.payment-plan-editor__pct--over[b-08wrohv6rz],
.payment-plan-editor__table input.payment-plan-editor__pct.payment-plan-editor__pct--over:focus[b-08wrohv6rz] {
    color: var(--status-danger);
    border-color: var(--status-danger);
}

/* Locked rows (row N+1 waits for row N's percent). The same dark-theme input
   rule outranks theme.css's own `.form-control:disabled` repaint, so in dark
   a locked field looked like an open one; restate the dark disabled look
   here (light keeps Bootstrap's grey fill). */
[data-theme="dark"] .payment-plan-editor__table input.form-control:disabled[b-08wrohv6rz] {
    background-color: var(--surface);
    color: var(--text-subtle);
}

.payment-plan-editor__final th[b-08wrohv6rz],
.payment-plan-editor__final td[b-08wrohv6rz] {
    background: var(--surface-sunken);
}

.payment-plan-editor__table tfoot th[b-08wrohv6rz],
.payment-plan-editor__table tfoot td[b-08wrohv6rz] {
    border-bottom: 0;
    padding-top: 0.6rem;
}

.payment-plan-editor__grand[b-08wrohv6rz] {
    font-weight: 700;
    color: var(--text);
    font-variant-numeric: tabular-nums;
}

/* PP-8 — the save reminder (legacy dlgPaymentPlanConfirm): one sentence, a
   checkbox and OK. Narrow like the legacy window. */
.payment-plan-reminder[b-08wrohv6rz] {
    max-width: 30rem;
}

.payment-plan-reminder__text[b-08wrohv6rz] {
    margin: 0 0 0.85rem;
    color: var(--text);
}

.payment-plan-reminder__check[b-08wrohv6rz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.85rem;
}

/* Portal batch 1 — what the split total is. */
.payment-plan-editor__hint[b-08wrohv6rz] {
    display: block;
    margin-top: 0.2rem;
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--text-muted);
}
