@import '_content/AppMain.Components/AppMain.Components.qe3vxm53na.bundle.scp.css';
@import '_content/Microsoft.AspNetCore.Components.QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.25o87uqmvr.bundle.scp.css';

/* /Pages/Admin/Shared/ListUsers.razor.rz.scp.css */
.progress[b-h0tit237xk],
.progress .progress-bar[b-h0tit237xk] {
  height: 12px !important; }
/* /Pages/Domain/Dashboard/RFQ/AppCardRFQDetailDetail.razor.rz.scp.css */
/* Clickable RFQ history lines in the "RFQ Line Info" modal (#3196 follow-up).
   The app's global styling strips the underline from anchors, so the history
   links read as plain blue text; restore an on-hover underline + pointer so
   they're clearly clickable. The external-link icon signals they open a new tab. */
.rfq-history-link[b-0b00cuzbxs] {
    cursor: pointer;
}

.rfq-history-link:hover[b-0b00cuzbxs] {
    text-decoration: underline;
}
/* /Pages/Domain/Dashboard/RFQ/AppPageRFQSpreadsheet.razor.rz.scp.css */
/* Modern progress bar — solid fill with a glossy shimmer wave that flows
   left-to-right across the filled portion. The fill width animates smoothly
   between value updates so each tick slides into place instead of teleporting. */

.rfq-progress[b-ah9dbd9sua] {
    position: relative;
    height: 14px;
    border-radius: 8px;
    background-color: #e9ecef;
    overflow: hidden;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);
}

.rfq-progress-fill[b-ah9dbd9sua] {
    height: 100%;
    border-radius: 8px;
    transition: width 250ms cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}

.rfq-progress-active[b-ah9dbd9sua] {
    background: linear-gradient(90deg, #2563eb 0%, #3b82f6 100%);
}

.rfq-progress-complete[b-ah9dbd9sua] {
    background: linear-gradient(90deg, #16a34a 0%, #22c55e 100%);
}

.rfq-progress-cancelled[b-ah9dbd9sua] {
    background: linear-gradient(90deg, #6b7280 0%, #9ca3af 100%);
}
/* /Pages/Domain/TenantAdmin/ListUsers.razor.rz.scp.css */
.progress[b-2cv00al3ye],
.progress .progress-bar[b-2cv00al3ye] {
  height: 12px !important; }
/* /Pages/Help/Help.razor.rz.scp.css */
iframe[b-fk9iasd6am] {
  width: 100%;
  height: 100%;
}
/* /Pages/Home/Dashboards/ProcurementDashboard.razor.rz.scp.css */
/* #3495 — Procurement dashboard, scoped styles. Base palette matches the sales
   dashboard (Natsco navy/blue); the four contract-health colors are the one
   deliberate addition (the client's design keys everything off them). */
.proc-dash[b-wcb37shcaz]{
    --navy:#02103D;
    --blue:#1B45B5;
    --blue-300:#5B7BE0;
    --ink:#0E1726;
    --muted:#64708A;
    --slate:#54627E;
    --line:#E4E9F3;
    --card:#FFFFFF;
    --red:#E0245E;
    --amber:#C67C00;
    --green:#16863D;
}

/* ── Header ── */
.proc-topbar[b-wcb37shcaz]{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.proc-title[b-wcb37shcaz]{min-width:0}
.proc-eyebrow[b-wcb37shcaz]{font-size:12.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);margin-bottom:6px}
.proc-h1[b-wcb37shcaz]{font-weight:800;font-size:30px;letter-spacing:-.02em;color:var(--navy);line-height:1.08;margin:0}
.proc-h1 .light[b-wcb37shcaz]{color:var(--blue-300);font-weight:500}
.proc-topright[b-wcb37shcaz]{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.proc-asof[b-wcb37shcaz]{font-size:12.5px;color:var(--muted);font-weight:600;cursor:help}
.proc-asof .dim[b-wcb37shcaz]{color:var(--muted);opacity:.75}

/* Shown only when saving the arrangement was refused — hover carries the reason. */
.proc-layout-warn[b-wcb37shcaz]{color:var(--red);font-size:11.5px;font-weight:700;cursor:help}

/* Global company filter — three words under the heading, the chosen one carrying a
   rule in the page's own blue. The segmented pill this replaced sat at the far edge
   and out-weighed the title beside it, which is not where the eye should start
   (#3744). */
.proc-cofilter[b-wcb37shcaz]{display:inline-flex;gap:18px;margin-top:10px}
.proc-cofilter button[b-wcb37shcaz]{
    border:none;background:transparent;padding:2px 0 5px;font-size:13px;font-weight:700;
    color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;
}
.proc-cofilter button.on[b-wcb37shcaz]{color:var(--navy);border-bottom-color:var(--blue)}
.proc-cofilter button:not(.on):hover[b-wcb37shcaz]{color:var(--blue)}

/* The cards menu — which cards are on the dashboard, and the way back. */
.proc-cardsmenu[b-wcb37shcaz]{position:relative}
.proc-menubtn[b-wcb37shcaz]{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 14px;font-size:12px;font-weight:700;color:var(--slate);cursor:pointer}
.proc-menubtn:hover[b-wcb37shcaz],.proc-menubtn.on[b-wcb37shcaz]{border-color:var(--blue-300);color:var(--blue)}
.proc-menubadge[b-wcb37shcaz]{font-size:10.5px;font-weight:800;color:var(--blue);background:rgba(27,69,181,.1);border-radius:999px;padding:1px 7px}
/* The click-anywhere-else target. It sits under the panel and over everything else. */
.proc-menubackdrop[b-wcb37shcaz]{position:fixed;inset:0;z-index:40}
.proc-menupanel[b-wcb37shcaz]{
    position:absolute;top:calc(100% + 8px);right:0;z-index:41;min-width:266px;
    background:#fff;border:1px solid var(--line);border-radius:14px;padding:7px;
    box-shadow:0 20px 44px -18px rgba(2,16,61,.42),0 1px 2px rgba(2,16,61,.06);
}
.proc-menuhead[b-wcb37shcaz]{padding:7px 11px 9px;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.proc-menuitem[b-wcb37shcaz]{display:flex;align-items:center;gap:10px;width:100%;border:none;background:transparent;border-radius:9px;padding:8px 11px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;text-align:left}
.proc-menuitem:hover[b-wcb37shcaz]{background:#F4F7FF;color:var(--blue)}
.proc-menuitem > i[b-wcb37shcaz]{width:15px;text-align:center;color:var(--muted)}
.proc-menuitem > i.on[b-wcb37shcaz]{color:var(--blue)}
.proc-menuitem > i.dim[b-wcb37shcaz]{opacity:.5;font-size:12px}
.proc-menuitem > span[b-wcb37shcaz]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proc-menusep[b-wcb37shcaz]{height:1px;background:var(--line);margin:6px 9px}

/* Every card removed. The way back is the whole point of the panel. */
.proc-empty[b-wcb37shcaz]{border:1px dashed var(--line);border-radius:16px;background:#fff;padding:46px 24px;text-align:center}
.proc-empty > i[b-wcb37shcaz]{font-size:34px;color:var(--blue-300)}
.proc-empty-t[b-wcb37shcaz]{margin-top:14px;font-size:17px;font-weight:800;color:var(--navy)}
.proc-empty-d[b-wcb37shcaz]{margin:6px auto 0;max-width:460px;font-size:13px;color:var(--muted);font-weight:600}
.proc-empty-btn[b-wcb37shcaz]{margin-top:18px;border:none;background:var(--blue);color:#fff;border-radius:999px;padding:9px 20px;font-size:13px;font-weight:700;cursor:pointer}
.proc-empty-btn:hover[b-wcb37shcaz]{background:var(--navy)}

/* ── Arrangeable tiles (#3744) ──
   The tiles carry the card chrome the AppCards used to: white, hairline border,
   the same radius and shadow as the status cards. Telerik owns the grid itself
   (Columns / RowHeight / spacing come from the component), so everything here is
   skin — and it all needs ::deep, since the markup is the component's, not ours. */
/* grid-auto-flow: dense is the one line that lets a short card sit beside a tall
   one. Without it CSS grid never goes back for a hole it has passed, so once a card
   is taller than the row it starts, everything after it is pushed past its full
   height and the space beside it cannot be filled — which reads exactly like being
   stopped from stacking cards vertically (#3744). */
.proc-tiles[b-wcb37shcaz]  .k-tilelayout{background:transparent;padding:0;grid-auto-flow:row dense}
.proc-tiles[b-wcb37shcaz]  .k-tilelayout-item{
    background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;
    box-shadow:0 1px 2px rgba(2,16,61,.04),0 8px 24px -12px rgba(2,16,61,.18);
}
.proc-tiles[b-wcb37shcaz]  .k-tilelayout-item-header{padding:0;border-bottom:1px solid var(--line);background:#fff;cursor:move}
/* The body is a flex column, and NOTHING inside it scrolls vertically: the list
   region (.proc-fit) takes the leftover height and clips, and the page decides how
   many rows to draw from the height that region reports back. The pager is the last
   flex child, so it is on the card's floor at every size (#3744). */
/* position:relative makes the body the containing block for the off-screen rulers
   inside the status card, so they are clipped to the tile they belong to and can
   never reach the page's own scroll box. */
.proc-tiles[b-wcb37shcaz]  .k-tilelayout-item-body{padding:0;overflow:hidden;display:flex;flex-direction:column;position:relative}
.proc-tiles .proc-fit[b-wcb37shcaz]{flex:1 1 auto;min-height:0;overflow:hidden}
.proc-tiles .proc-footer[b-wcb37shcaz]{flex:0 0 auto;margin-top:auto;border-top:1px solid var(--line);background:#fff}
/* The overview tile wraps its whole body in the scroll anchor, so that wrapper is
   the flex column the toolbar, the table and the pager hang off. */
.proc-tiles #proc-overview[b-wcb37shcaz]{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
.proc-tiles #proc-overview .proc-toolbar[b-wcb37shcaz]{flex:0 0 auto}
/* Grid/flex children default to min-width:auto — without this a nowrap table
   stretches its tile and the whole page with it. */
.proc-tiles[b-wcb37shcaz]  .k-tilelayout-item,
.proc-tiles[b-wcb37shcaz]  .k-tilelayout-item-body,
.proc-tiles #proc-overview[b-wcb37shcaz]{min-width:0}

.proc-tiles[b-wcb37shcaz]  .proc-tile-head{display:flex;align-items:center;gap:9px;padding:11px 16px;font-size:13px;font-weight:800;color:var(--navy)}
.proc-tiles[b-wcb37shcaz]  .proc-tile-head > i{color:var(--blue);font-size:14px}
.proc-tiles[b-wcb37shcaz]  .proc-tile-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:auto}
.proc-tiles[b-wcb37shcaz]  .proc-tile-btn{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:3px 7px;border-radius:7px;font-size:12px;line-height:1}
.proc-tiles[b-wcb37shcaz]  .proc-tile-btn:hover{color:var(--blue);background:rgba(27,69,181,.08)}
/* Removing a card is one click and it is undone from the Cards menu, but it should
   still not look like the chevron beside it. */
.proc-tiles[b-wcb37shcaz]  .proc-tile-btn.danger:hover{color:var(--red);background:rgba(224,36,94,.1)}

/* Collapsed = header only. The tile is already sized to one row; this hides the
   body so the content can't spill inside that row. */
.proc-tiles[b-wcb37shcaz]  .proc-tile-collapsed .k-tilelayout-item-body{display:none}
/* Removed = out of the grid. The markup stays so Telerik keeps handing every card
   its own saved state; display:none is what takes it out of the layout. */
.proc-tiles[b-wcb37shcaz]  .proc-tile-hidden{display:none!important}

/* ── Status cards (clickable filters) ──
   The five KPIs wrap on the TILE's width, not the viewport's: narrowing the status
   tile drops them to fewer per row instead of squashing them (#3744).

   --kpi-min is the narrowest a KPI may be drawn IN THE FORM THE CARD IS DRAWING, set
   on the element by the page from a MEASURED one of them (see the rulers in the
   markup). One variable for every density, because only one density is ever on the
   card: the grid and the code behind work from that one number, so the column the
   browser draws and the column the floors are worked out from cannot be different
   widths — which is what was cutting names and counts off at some sizes and not
   others. The fallback carries the first paint only.

   The five sit in the MIDDLE of whatever height the card has. There is always some
   space left over — a form is only taken when it fits whole, so the leftover is
   everything between this form and the next one up — and left at the bottom it reads
   as a card that failed to fill itself. safe center so content larger than the box
   still starts at the top rather than being clipped at both ends. */
.proc-kpis[b-wcb37shcaz]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--kpi-min,190px),100%),1fr));gap:14px;padding:14px 16px;align-content:center;align-content:safe center}

/* The two thinner forms of the same five cards. Nothing here clips text — each
   density drops a whole line and re-proportions what is left, so a short card is a
   smaller card and never a cut-off one (#3744).

   What a density may NOT change is the region's own box, because that box is what
   the page picks the density from: a density that moved its own measurement could
   qualify for the one it just left and flip between the two forever. It cannot —
   .proc-kpis is the tile body's flex child and takes the leftover height whatever
   is inside it, and clientWidth/clientHeight (what app.js reports) count the
   padding in. So the inside of a density is free; the outside is not. */
/* A compact KPI has no sub-line under it, so it is narrower than a full one — its
   own measured column floor arrives in --kpi-min with the density. */
.proc-kpis.kpi-compact .proc-kpi[b-wcb37shcaz]{padding:11px 16px 10px}
.proc-kpis.kpi-compact .proc-kpi-sub[b-wcb37shcaz]{display:none}
.proc-kpis.kpi-compact .proc-kpi-num[b-wcb37shcaz]{font-size:23px;margin-top:2px}
.proc-kpis.kpi-compact .proc-kpi-ico[b-wcb37shcaz]{top:11px;right:14px;font-size:16px}

/* The floor: five chips, each one a name and a count, both whole. The chips WRAP.
   They used to share one non-wrapping line five ways, which at a narrow card left
   every label ellipsed down to a letter and a half — the card scaled below the two
   things it exists to say (#3744). Now a chip never goes under --kpi-min: the
   row breaks instead, and both of the card's floors are worked out from that width
   so the worst case it can produce — all five chips on a line of their own — fits
   the smallest card the drag will allow, on any screen.
   --kpi-min at this density is the WIDEST of the five chips as the browser actually
   drew it, measured; sizing the column to the widest and not to the average is the
   point, because a column that fits four of the five is a column that ellipses the
   fifth. */
.proc-kpis.kpi-minimal[b-wcb37shcaz]{gap:6px;padding:10px 12px}
.proc-kpis.kpi-minimal .proc-kpi[b-wcb37shcaz]{
    min-width:0;display:flex;align-items:baseline;gap:7px;
    padding:4px 12px;border-radius:999px;box-shadow:none;
}
.proc-kpis.kpi-minimal .proc-kpi:not(.static):hover[b-wcb37shcaz]{transform:none;box-shadow:none;border-color:var(--blue-300)}
.proc-kpis.kpi-minimal .proc-kpi[b-wcb37shcaz]::after{display:none}
.proc-kpis.kpi-minimal .proc-kpi-sub[b-wcb37shcaz],
.proc-kpis.kpi-minimal .proc-kpi-ico[b-wcb37shcaz]{display:none}
/* No icon in a chip, so no reserve for one. */
.proc-kpis.kpi-minimal .proc-kpi-label[b-wcb37shcaz]{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;letter-spacing:.03em;padding-right:0}
/* The count is the last thing that would ever give way, so it is out of the
   shrinking entirely: it keeps its own width and the label yields around it. */
.proc-kpis.kpi-minimal .proc-kpi-num[b-wcb37shcaz]{flex:0 0 auto;margin-left:auto;font-size:15px;margin-top:0;white-space:nowrap}
.proc-kpis.kpi-minimal .proc-kpi.on[b-wcb37shcaz]{box-shadow:none}

/* Two names per KPI, one shown at a time. Both are always in the markup and the
   density says which is read, so the ruler for a form is measuring the same string
   the card it sizes will draw.

   The short name is its own rung, not a property of the chips: what pushes a wide,
   short card down to chips is "TOTAL PROTECTED INVENTORY" claiming a 240px column
   and putting the fifth KPI on a row that will not fit, so the same tiles under the
   short names go across in one row and the card keeps its real KPIs (#3744). */
.proc-kpi-short[b-wcb37shcaz]{display:none}
.proc-kpis.kpi-short .proc-kpi-long[b-wcb37shcaz]{display:none}
.proc-kpis.kpi-short .proc-kpi-short[b-wcb37shcaz]{display:inline}
.proc-kpi[b-wcb37shcaz]{
    position:relative;display:block;color:inherit;text-decoration:none;cursor:pointer;
    background:var(--card);border:1px solid var(--line);border-radius:16px;
    padding:16px 18px 14px;overflow:hidden;
    box-shadow:0 1px 2px rgba(2,16,61,.04),0 8px 24px -12px rgba(2,16,61,.18);
    transition:transform .18s,box-shadow .18s,border-color .18s;
}
.proc-kpi:not(.static):hover[b-wcb37shcaz]{transform:translateY(-3px);color:inherit;text-decoration:none;box-shadow:0 18px 40px -18px rgba(2,16,61,.42)}
.proc-kpi.static[b-wcb37shcaz]{cursor:default}
.proc-kpi[b-wcb37shcaz]::after{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--blue),var(--blue-300))}
/* The icon is positioned over the KPI's top-right corner, which is the line the
   label is on. The reserve keeps the name clear of it — and because it is padding
   on the label rather than a number in the code behind, it is inside the width the
   ruler measures, so the column the name gets is wide enough for both of them. */
.proc-kpi-label[b-wcb37shcaz]{font-size:11.5px;color:var(--muted);font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding-right:28px}
.proc-kpis.kpi-compact .proc-kpi-label[b-wcb37shcaz]{padding-right:24px}
.proc-kpi-num[b-wcb37shcaz]{font-weight:800;font-size:28px;letter-spacing:-.02em;line-height:1.1;margin-top:4px;color:var(--navy);font-variant-numeric:tabular-nums}
.proc-kpi-sub[b-wcb37shcaz]{font-size:11.5px;color:var(--muted);margin-top:6px;font-weight:600}
.proc-kpi-ico[b-wcb37shcaz]{position:absolute;top:14px;right:16px;font-size:19px;opacity:.85}

/* ── The rulers ──
   Five KPIs in each of the three forms, drawn off-screen at their own natural
   width so the page can ask the browser how wide each form has to be and how tall
   it comes out — with this font, this padding and today's numbers in it.
   width:max-content is the whole trick: it is the width at which nothing wraps and
   nothing is cut, which is exactly the number the grid's columns need as a floor.
   They are out of flow and hidden, so they take no space and cost no layout inside
   the card they are measuring for; visibility:hidden keeps them off the screen and
   out of the accessibility tree while leaving them measurable (display:none would
   not be). */
.proc-kpi-rulers[b-wcb37shcaz]{position:absolute;top:0;left:0;width:max-content;visibility:hidden;pointer-events:none;z-index:-1}
.proc-kpi-rulers .proc-kpis[b-wcb37shcaz]{display:block;padding:0;width:max-content;min-height:0}
.proc-kpi-rulers .proc-kpi[b-wcb37shcaz]{width:max-content;max-width:none;transform:none;transition:none}

.proc-kpi.shortage[b-wcb37shcaz]::after{background:var(--red)}
.proc-kpi.shortage .proc-kpi-num[b-wcb37shcaz],.proc-kpi.shortage .proc-kpi-ico[b-wcb37shcaz]{color:var(--red)}
.proc-kpi.atrisk[b-wcb37shcaz]::after{background:var(--amber)}
.proc-kpi.atrisk .proc-kpi-num[b-wcb37shcaz],.proc-kpi.atrisk .proc-kpi-ico[b-wcb37shcaz]{color:var(--amber)}
.proc-kpi.healthy[b-wcb37shcaz]::after{background:var(--green)}
.proc-kpi.healthy .proc-kpi-num[b-wcb37shcaz],.proc-kpi.healthy .proc-kpi-ico[b-wcb37shcaz]{color:var(--green)}
.proc-kpi.excess[b-wcb37shcaz]::after{background:var(--blue)}
.proc-kpi.excess .proc-kpi-num[b-wcb37shcaz],.proc-kpi.excess .proc-kpi-ico[b-wcb37shcaz]{color:var(--blue)}

/* Active filter state — ring in the card's own color. */
.proc-kpi.on[b-wcb37shcaz]{border-color:currentColor}
.proc-kpi.shortage.on[b-wcb37shcaz]{box-shadow:0 0 0 2px var(--red),0 8px 24px -12px rgba(2,16,61,.18);background:#FFF7F9}
.proc-kpi.atrisk.on[b-wcb37shcaz]{box-shadow:0 0 0 2px var(--amber),0 8px 24px -12px rgba(2,16,61,.18);background:#FFFBF2}
.proc-kpi.healthy.on[b-wcb37shcaz]{box-shadow:0 0 0 2px var(--green),0 8px 24px -12px rgba(2,16,61,.18);background:#F4FBF6}
.proc-kpi.excess.on[b-wcb37shcaz]{box-shadow:0 0 0 2px var(--blue),0 8px 24px -12px rgba(2,16,61,.18);background:#F4F7FF}

/* ── Overview toolbar ── */
.proc-toolbar[b-wcb37shcaz]{display:flex;gap:10px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.proc-searchwrap[b-wcb37shcaz]{position:relative;flex:1 1 260px;min-width:200px}
.proc-search[b-wcb37shcaz]{width:100%;padding:8px 34px 8px 12px;border:1px solid var(--line);border-radius:9px;font-size:13px;color:var(--ink)}
.proc-search:focus[b-wcb37shcaz]{outline:none;border-color:var(--blue-300)}
.proc-search-clear[b-wcb37shcaz]{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--muted);cursor:pointer;padding:4px 7px;border-radius:6px;font-size:13px;line-height:1}
.proc-search-clear:hover[b-wcb37shcaz]{color:var(--red);background:rgba(100,112,138,.12)}
.proc-select[b-wcb37shcaz]{padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px;color:var(--ink);background:#fff}
.proc-clear[b-wcb37shcaz]{display:inline-flex;align-items:center;padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(27,69,181,.08);color:var(--blue);font-size:12.5px;font-weight:700;cursor:pointer}
.proc-clear:hover[b-wcb37shcaz]{background:rgba(27,69,181,.14)}
/* Export to Excel (#3743) — sits at the right end of the toolbar on a wide
   screen, wraps under the search on a narrow one like every other control here. */
.proc-export[b-wcb37shcaz]{display:inline-flex;align-items:center;margin-left:auto;padding:7px 14px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--green);font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.proc-export:hover:not(:disabled)[b-wcb37shcaz]{background:#F4FBF6;border-color:var(--green)}
.proc-export:disabled[b-wcb37shcaz]{color:var(--muted);cursor:default;opacity:.6}

/* ── Overview table ── */
/* Sideways only. Sixteen columns of numbers have nothing to thin out, so the wide
   table keeps its horizontal scroll — but it never scrolls DOWN: the rows drawn are
   the rows that fit (#3744). */
.proc-tablewrap[b-wcb37shcaz]{overflow-x:auto;overflow-y:hidden}
.proc-table[b-wcb37shcaz]{width:100%;border-collapse:collapse;font-size:12px}
.proc-table th[b-wcb37shcaz]{position:sticky;top:0;background:#F8FAFD;color:var(--slate);font-size:10.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;padding:6px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;cursor:default}
.proc-table th.sortable[b-wcb37shcaz]{cursor:pointer;user-select:none}
.proc-table th.sortable:hover[b-wcb37shcaz]{color:var(--blue)}
.proc-table th i.dim[b-wcb37shcaz]{opacity:.35}
.proc-table th i.on[b-wcb37shcaz]{opacity:1;color:var(--blue)}
.proc-table td[b-wcb37shcaz]{padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap;color:var(--ink)}
.proc-table tbody tr[b-wcb37shcaz]{cursor:pointer;transition:background .12s}
.proc-table tbody tr:hover[b-wcb37shcaz]{background:#F7F9FE}
.proc-table .num[b-wcb37shcaz]{text-align:right;font-variant-numeric:tabular-nums}
.proc-table .part[b-wcb37shcaz]{color:var(--blue);font-weight:700}
.proc-table .desc[b-wcb37shcaz]{max-width:180px;overflow:hidden;text-overflow:ellipsis}
.proc-table .good[b-wcb37shcaz]{color:var(--green);font-weight:700}
.proc-table .bad[b-wcb37shcaz]{color:var(--red);font-weight:700}

.proc-dot[b-wcb37shcaz]{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}
.proc-dot.g[b-wcb37shcaz]{background:var(--green)}
.proc-dot.a[b-wcb37shcaz]{background:var(--amber)}
.proc-dot.r[b-wcb37shcaz]{background:var(--red)}
.proc-dot.b[b-wcb37shcaz]{background:var(--blue)}
.proc-dot.n[b-wcb37shcaz]{background:var(--muted);opacity:.55}

/* The footer holds the count on the left and the numbered AppPager on the right;
   the pager brings its own styles (nav.app-pager) and reads the palette variables
   from .proc-dash. gap keeps the two apart when a long number run wraps under the
   count. The count itself is the only direct span, and it ellipsises rather than
   push the pager off a narrow tile (#3744). */
.proc-footer[b-wcb37shcaz]{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 16px;font-size:12px;color:var(--muted);font-weight:600;flex-wrap:wrap}
.proc-footer > span[b-wcb37shcaz]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.proc-footer .dim[b-wcb37shcaz]{opacity:.7;font-weight:500}

/* ── Status Summary groups ── */
.proc-group[b-wcb37shcaz]{border-bottom:1px solid var(--line)}
.proc-group:last-child[b-wcb37shcaz]{border-bottom:none}
.proc-group-title[b-wcb37shcaz]{display:flex;align-items:center;gap:8px;padding:11px 16px;font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.proc-group.shortage .proc-group-title[b-wcb37shcaz]{color:var(--red);background:rgba(224,36,94,.05)}
.proc-group.atrisk .proc-group-title[b-wcb37shcaz]{color:var(--amber);background:rgba(198,124,0,.06)}
.proc-group.excess .proc-group-title[b-wcb37shcaz]{color:var(--blue);background:rgba(27,69,181,.05)}
.proc-group-title a[b-wcb37shcaz]{margin-left:auto;font-size:11px;color:var(--blue);cursor:pointer;text-transform:none;letter-spacing:0;font-weight:700}
.proc-group-title a:hover[b-wcb37shcaz]{text-decoration:underline}
.proc-group-empty[b-wcb37shcaz]{padding:12px 16px;font-size:12.5px;color:var(--muted)}

/* table-layout:fixed is what makes "never scrolls sideways" true rather than
   hoped for: the columns are shared out from the card's width instead of grown to
   fit their content, so a long customer name ends in an ellipsis and the table
   still ends at the card's edge. The columns that survive at each width are chosen
   in the page (SummaryShow*), and the whole row is on its tooltip (#3744). */
.proc-summary[b-wcb37shcaz]{overflow:hidden}
.proc-minitable[b-wcb37shcaz]{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12px}
.proc-minitable th[b-wcb37shcaz]{background:#F8FAFD;color:var(--slate);font-size:10.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;padding:7px 10px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.proc-minitable td[b-wcb37shcaz]{padding:7px 10px;border-top:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.proc-minitable tbody tr[b-wcb37shcaz]{cursor:pointer;transition:background .12s}
.proc-minitable tbody tr:hover[b-wcb37shcaz]{background:#F7F9FE}
.proc-minitable .num[b-wcb37shcaz]{text-align:right;font-variant-numeric:tabular-nums;width:22%}
.proc-minitable .part[b-wcb37shcaz]{color:var(--blue);font-weight:700;width:26%}
.proc-minitable .co[b-wcb37shcaz]{width:44px;text-align:center}
.proc-minitable .eta[b-wcb37shcaz]{width:78px}
/* With a fixed layout the head row is what sets the columns, so the part number
   claims its share there. Everything unclaimed splits what is left. */
.proc-minitable th:first-child[b-wcb37shcaz]{width:28%}
.proc-minitable .bad[b-wcb37shcaz]{color:var(--red);font-weight:700}

.proc-warnnote[b-wcb37shcaz]{margin:12px 16px;padding:10px 12px;border:1px solid rgba(198,124,0,.35);background:#FFF9EC;border-radius:9px;font-size:12.5px;color:#7A5200;font-weight:600}

/* ── System Alerts + Suggested Actions ── */
.proc-alert[b-wcb37shcaz]{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}
.proc-alert:hover[b-wcb37shcaz]{background:#F7F9FE}
.proc-alert:last-child[b-wcb37shcaz]{border-bottom:none}
.proc-alert-ico[b-wcb37shcaz]{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;font-size:14px}
.proc-alert-ico.crit[b-wcb37shcaz]{background:rgba(224,36,94,.12);color:var(--red)}
.proc-alert-ico.warn[b-wcb37shcaz]{background:rgba(198,124,0,.12);color:var(--amber)}
.proc-alert-ico.info[b-wcb37shcaz]{background:rgba(27,69,181,.1);color:var(--blue)}
.proc-alert-text[b-wcb37shcaz]{font-size:13px;font-weight:600;color:var(--ink)}

.proc-action[b-wcb37shcaz]{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}
.proc-action:hover[b-wcb37shcaz]{background:#F7F9FE}
.proc-action:last-child[b-wcb37shcaz]{border-bottom:none}
.proc-verb[b-wcb37shcaz]{flex-shrink:0;min-width:132px;text-align:center;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--blue);background:rgba(27,69,181,.1)}
.proc-action-body[b-wcb37shcaz]{min-width:0}
.proc-action-t[b-wcb37shcaz]{font-size:13px;font-weight:700;color:var(--ink)}
.proc-action-d[b-wcb37shcaz]{font-size:12px;color:var(--muted)}

/* ── Part detail dialog ── */
.proc-detail-meta[b-wcb37shcaz]{display:flex;align-items:center;gap:14px;margin-bottom:14px;font-size:12.5px;color:var(--muted);font-weight:600}
.proc-chip[b-wcb37shcaz]{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;font-size:11.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.proc-chip.r[b-wcb37shcaz]{color:var(--red);background:rgba(224,36,94,.12)}
.proc-chip.a[b-wcb37shcaz]{color:var(--amber);background:rgba(198,124,0,.12)}
.proc-chip.g[b-wcb37shcaz]{color:var(--green);background:rgba(22,134,61,.12)}
.proc-chip.b[b-wcb37shcaz]{color:var(--blue);background:rgba(27,69,181,.12)}
.proc-detail-grid[b-wcb37shcaz]{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.proc-box[b-wcb37shcaz]{border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.proc-box h4[b-wcb37shcaz]{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--blue);margin:0 0 8px}
.proc-kv[b-wcb37shcaz]{display:flex;justify-content:space-between;gap:12px;font-size:13px;padding:4px 0;color:var(--ink)}
.proc-kv span[b-wcb37shcaz]{color:var(--muted);font-weight:600}
.proc-kv b[b-wcb37shcaz]{font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}
.proc-kv.big[b-wcb37shcaz]{border-top:1px solid var(--line);margin-top:4px;padding-top:7px}
.proc-kv.big span[b-wcb37shcaz]{font-weight:800;letter-spacing:.03em}
.proc-kv.good span[b-wcb37shcaz],.proc-kv.good b[b-wcb37shcaz]{color:var(--green)}
.proc-kv.bad span[b-wcb37shcaz],.proc-kv.bad b[b-wcb37shcaz]{color:var(--red)}
@media(max-width:640px){.proc-detail-grid[b-wcb37shcaz]{grid-template-columns:1fr}}

/* Loading / empty states */
.proc-state[b-wcb37shcaz]{padding:26px 20px;text-align:center;color:var(--muted);font-size:13.5px}
.proc-state-hint[b-wcb37shcaz]{margin-top:6px;font-size:12.5px;color:var(--blue);font-weight:600}

/* Phones and narrow tablets: a half-width tile is unreadable and there is nothing
   to drag with a finger, so the arrangement is set aside — one tile per row, each
   as tall as its own content. Telerik writes the spans as inline styles, hence the
   !important. The saved layout is untouched and comes back on a wide screen.
   Nothing scrolls inside a tile here: the tile grows and the page scrolls, so the
   pager is still the last thing under the rows it pages. */
@media(max-width:900px){
    .proc-tiles[b-wcb37shcaz]  .k-tilelayout{grid-template-columns:1fr!important;grid-auto-rows:auto!important}
    .proc-tiles[b-wcb37shcaz]  .k-tilelayout-item{grid-column:auto/span 1!important;grid-row:auto!important}
    .proc-tiles .proc-fit[b-wcb37shcaz]{overflow:visible}
    .proc-tiles .proc-tablewrap[b-wcb37shcaz]{overflow-x:auto;overflow-y:visible}
    .proc-footer .dim[b-wcb37shcaz]{display:none}
    .proc-topbar[b-wcb37shcaz]{flex-direction:column;align-items:flex-start}
    .proc-topright[b-wcb37shcaz]{justify-content:flex-start}
    .proc-menupanel[b-wcb37shcaz]{right:auto;left:0}
}
@media(max-width:760px){
    .proc-h1[b-wcb37shcaz]{font-size:25px}
}
/* /Pages/Home/Dashboards/SalesDashboard.razor.rz.scp.css */
/* #3487 — Sales dashboard, scoped styles. Palette: Natsco navy/blue + grays, no yellow.
   Carried over from the pre-#3487 Pages/Home/Index.razor.css and extended for the
   combined RFQ/Contract cards, Company Notes, and Recent History. */
.home-dash[b-c61exs3d1k]{
    --navy:#02103D;
    --blue:#1B45B5;
    --blue-300:#5B7BE0;
    --ink:#0E1726;
    --muted:#64708A;
    --slate:#54627E;
    --line:#E4E9F3;
    --card:#FFFFFF;
    --red:#E0245E;
}

/* ── Header ── */
.home-topbar[b-c61exs3d1k]{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.home-greeting[b-c61exs3d1k]{flex:1 1 auto;min-width:0}
.home-eyebrow[b-c61exs3d1k]{font-size:12.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);margin-bottom:6px}
.home-h1[b-c61exs3d1k]{font-weight:800;font-size:30px;letter-spacing:-.02em;color:var(--navy);line-height:1.08;margin:0}
.home-h1 .light[b-c61exs3d1k]{color:var(--blue-300);font-weight:500}
.home-newrfq[b-c61exs3d1k]{flex-shrink:0;display:inline-flex;align-items:center;white-space:nowrap;text-decoration:none;background:#0A2680;color:#fff;font-weight:600;font-size:13.5px;padding:11px 16px;border-radius:12px;transition:background .18s}
.home-newrfq:hover[b-c61exs3d1k]{background:var(--navy);color:#fff;text-decoration:none}

/* ── KPI tiles (Awarded CA / US) ── */
.home-kpis[b-c61exs3d1k]{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:20px}
.home-kpis.two[b-c61exs3d1k]{grid-template-columns:repeat(2,1fr)}
.home-kpi[b-c61exs3d1k]{
    position:relative;display:block;text-decoration:none;color:inherit;
    background:var(--card);border:1px solid var(--line);border-radius:16px;
    padding:20px 20px 18px;overflow:hidden;
    box-shadow:0 1px 2px rgba(2,16,61,.04),0 8px 24px -12px rgba(2,16,61,.18);
    transition:transform .18s,box-shadow .18s,border-color .18s;
}
.home-kpi:not(.static):hover[b-c61exs3d1k]{transform:translateY(-3px);border-color:var(--blue-300);box-shadow:0 18px 40px -18px rgba(2,16,61,.42);color:inherit;text-decoration:none}
.home-kpi[b-c61exs3d1k]::after{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--blue),var(--blue-300))}
.home-kpi-ico[b-c61exs3d1k]{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;font-size:18px;background:linear-gradient(160deg,rgba(27,69,181,.12),rgba(91,123,224,.16));color:var(--blue);margin-bottom:14px}
.home-kpi-label[b-c61exs3d1k]{font-size:12.5px;color:var(--muted);font-weight:600}
.home-kpi-num[b-c61exs3d1k]{font-weight:800;font-size:30px;color:var(--navy);letter-spacing:-.02em;line-height:1.1;margin-top:2px;font-variant-numeric:tabular-nums}
.home-kpi-sub[b-c61exs3d1k]{font-size:12px;color:var(--muted);margin-top:9px;font-weight:600}

/* ── Chips ── */
.home-chip[b-c61exs3d1k]{display:inline-flex;align-items:center;font-size:12px;font-weight:700;margin-top:9px;padding:3px 9px;border-radius:999px}
.home-chip.up[b-c61exs3d1k]{color:var(--blue);background:rgba(27,69,181,.1)}
.home-chip.soon[b-c61exs3d1k]{color:var(--blue);background:rgba(27,69,181,.1)}
.home-chip.flat[b-c61exs3d1k]{color:var(--slate);background:rgba(100,112,138,.12)}
.home-chip.today[b-c61exs3d1k]{color:var(--red);background:rgba(224,36,94,.12)}

/* ── Main grid ── */
.home-grid[b-c61exs3d1k]{display:grid;grid-template-columns:1.6fr 1fr;gap:18px}
.home-main[b-c61exs3d1k]{display:flex;flex-direction:column;gap:18px}
.home-side[b-c61exs3d1k]{display:flex;flex-direction:column;gap:18px}

/* ── In-card stat strip (RFQ open / processed, contracts active) ── */
.home-stats[b-c61exs3d1k]{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}
.home-stats[b-c61exs3d1k]  a{text-decoration:none}
.home-stat[b-c61exs3d1k]{display:block;padding:16px 20px;color:inherit;text-decoration:none;transition:background .15s}
.home-stat + .home-stat[b-c61exs3d1k]{border-left:1px solid var(--line)}
a.home-stat:hover[b-c61exs3d1k]{background:#F7F9FE;color:inherit;text-decoration:none}
.home-stat-num[b-c61exs3d1k]{font-weight:800;font-size:26px;color:var(--navy);letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}
.home-stat-label[b-c61exs3d1k]{font-size:12px;color:var(--muted);font-weight:600;margin-top:3px}

/* Section label inside cards (URGENT / Expiring) */
.home-sect[b-c61exs3d1k]{padding:10px 20px;font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--red);background:rgba(224,36,94,.05);border-bottom:1px solid var(--line)}

/* RFQ list rows */
.home-rfq[b-c61exs3d1k]{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line);cursor:pointer;transition:background .15s}
.home-rfq:hover[b-c61exs3d1k]{background:#F7F9FE}
.home-rfq-badge[b-c61exs3d1k]{width:46px;height:46px;border-radius:12px;flex-shrink:0;display:grid;place-items:center;font-weight:800;color:#fff;font-size:13px;background:linear-gradient(160deg,var(--blue),var(--navy))}
.home-rfq-body[b-c61exs3d1k]{flex:1;min-width:0}
.home-rfq-cust[b-c61exs3d1k]{font-weight:700;color:var(--ink);font-size:14.5px}
.home-rfq-meta[b-c61exs3d1k]{color:var(--muted);font-size:12.5px;margin-top:2px}
.home-rfq-val[b-c61exs3d1k]{text-align:right;flex-shrink:0}
.home-rfq-amt[b-c61exs3d1k]{font-weight:800;color:var(--navy);font-size:16px;font-variant-numeric:tabular-nums}
.home-rfq-all[b-c61exs3d1k]{display:flex;align-items:center;justify-content:center;padding:13px;color:var(--blue);font-weight:600;font-size:13px;text-decoration:none}
.home-rfq-all:hover[b-c61exs3d1k]{background:#F7F9FE;color:var(--blue)}

/* Expiring-contract rows */
.home-ct[b-c61exs3d1k]{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:background .15s}
.home-ct:hover[b-c61exs3d1k]{background:#F7F9FE;color:inherit;text-decoration:none}
.home-ct-badge[b-c61exs3d1k]{width:40px;height:40px;border-radius:11px;flex-shrink:0;display:grid;place-items:center;font-size:16px;background:linear-gradient(160deg,rgba(27,69,181,.12),rgba(91,123,224,.16));color:var(--blue)}
.home-ct-body[b-c61exs3d1k]{flex:1;min-width:0}
.home-ct-title[b-c61exs3d1k]{font-weight:700;color:var(--ink);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-ct-meta[b-c61exs3d1k]{color:var(--muted);font-size:12.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-ct-val[b-c61exs3d1k]{text-align:right;flex-shrink:0}
.home-ct-amt[b-c61exs3d1k]{font-weight:800;color:var(--navy);font-size:14.5px;font-variant-numeric:tabular-nums}
.home-ct-amt .cur[b-c61exs3d1k]{font-size:11px;color:var(--muted);font-weight:600}

/* Company Notes */
.home-notes-meta[b-c61exs3d1k]{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);font-weight:600}

/* Recent history rows */
.home-hist[b-c61exs3d1k]{display:flex;align-items:center;gap:12px;padding:11px 20px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:background .15s}
.home-hist:hover[b-c61exs3d1k]{background:#F7F9FE;color:inherit;text-decoration:none}
.home-hist-ico[b-c61exs3d1k]{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;font-size:13px;background:rgba(27,69,181,.08);color:var(--blue)}
.home-hist-body[b-c61exs3d1k]{flex:1;min-width:0}
.home-hist-t[b-c61exs3d1k]{font-size:13.5px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-hist-d[b-c61exs3d1k]{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-hist-time[b-c61exs3d1k]{flex-shrink:0;font-size:11.5px;color:var(--muted);font-weight:600}

/* Alerts */
.home-alert[b-c61exs3d1k]{display:flex;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line)}
.home-alert-ico[b-c61exs3d1k]{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;font-size:14px;background:rgba(100,112,138,.12);color:var(--slate)}
.home-alert-ico.critical[b-c61exs3d1k]{background:rgba(224,36,94,.12);color:var(--red)}
.home-alert-ico.ok[b-c61exs3d1k]{background:rgba(27,69,181,.1);color:var(--blue)}
.home-alert-t[b-c61exs3d1k]{font-size:13.5px;font-weight:600;color:var(--ink)}
.home-alert-d[b-c61exs3d1k]{font-size:12px;color:var(--muted);margin-top:1px}

/* Loading / empty states */
.home-state[b-c61exs3d1k]{padding:26px 20px;text-align:center;color:var(--muted);font-size:13.5px}

@media(max-width:980px){
    .home-kpis[b-c61exs3d1k],.home-kpis.two[b-c61exs3d1k]{grid-template-columns:1fr 1fr}
    .home-grid[b-c61exs3d1k]{grid-template-columns:1fr}
}
@media(max-width:760px){
    .home-h1[b-c61exs3d1k]{font-size:25px}
    .home-kpis.two[b-c61exs3d1k]{grid-template-columns:1fr}
}
/* /Pages/Home/Index.razor.rz.scp.css */
/* #3495 — admin-only dashboard switcher chips, right-aligned above the mounted dashboard. */
.host-switch[b-ok9uhpnhry]{display:flex;justify-content:flex-end;gap:8px;margin-bottom:10px}
/* /Pages/Reports/ExcelReports/AppPageExcelReports.razor.rz.scp.css */
/* Progress bar for the Excel Reports processing dialog. Mirrors the RFQ spreadsheet
   page's bar; defined here because Blazor CSS isolation scopes .razor.css to its own
   component, so the RFQ page's styles do not apply to this page. */

.rfq-progress[b-1gwn8jgue1] {
    position: relative;
    height: 14px;
    border-radius: 8px;
    background-color: #e9ecef;
    overflow: hidden;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);
}

.rfq-progress-fill[b-1gwn8jgue1] {
    height: 100%;
    border-radius: 8px;
    transition: width 250ms cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    overflow: hidden;
}

.rfq-progress-active[b-1gwn8jgue1] {
    background: linear-gradient(90deg, #2563eb 0%, #3b82f6 100%);
}

.rfq-progress-complete[b-1gwn8jgue1] {
    background: linear-gradient(90deg, #16a34a 0%, #22c55e 100%);
}

.rfq-progress-cancelled[b-1gwn8jgue1] {
    background: linear-gradient(90deg, #6b7280 0%, #9ca3af 100%);
}
/* /Pages/Shared/Components/AppPager.razor.rz.scp.css */
/* AppPager — numbered pagination. The colors come from the host page when it
   sets them (the dashboards declare --blue / --line / --slate on their root);
   the fallbacks are the same values, so the control reads correctly anywhere. */
.app-pager[b-0clty4f2lw]{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.app-pager button[b-0clty4f2lw]{
    min-width:30px;height:28px;padding:0 8px;
    border:1px solid var(--line,#E4E9F3);background:#fff;border-radius:8px;
    color:var(--slate,#54627E);font-size:12px;font-weight:700;
    font-variant-numeric:tabular-nums;cursor:pointer;
    transition:background .12s,border-color .12s,color .12s;
}
.app-pager button:disabled[b-0clty4f2lw]{opacity:.4;cursor:default}
.app-pager button:not(:disabled):hover[b-0clty4f2lw]{border-color:var(--blue-300,#5B7BE0);color:var(--blue,#1B45B5)}
/* The current page is a destination, not a button to press again. */
.app-pager button.on[b-0clty4f2lw],.app-pager button.on:hover[b-0clty4f2lw]{
    background:var(--blue,#1B45B5);border-color:var(--blue,#1B45B5);color:#fff;cursor:default;
}
.app-pager-gap[b-0clty4f2lw]{padding:0 2px;color:var(--muted,#64708A);font-size:12px;font-weight:700;user-select:none}
/* /Pages/Shared/Dashboard/AppFileDropZone.razor.rz.scp.css */
/* The zone wraps cards that paint their own opaque background and are themselves positioned,
   so an outline or tint on the wrapper is drawn underneath them and never seen. Draw the
   highlight in an overlay stacked above the wrapped content instead, and keep it click-through
   so the card underneath still takes its normal clicks. Nothing is painted until a file drag
   enters, and the overlay is out of flow, so the surrounding grid cannot shift. */
.app-file-drop-zone[b-yfrjgz4qmn] {
    position: relative;
}

.app-file-drop-zone-active[b-yfrjgz4qmn]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 10;
    pointer-events: none;
    border: 2px dashed #00aeef;
    border-radius: .25rem;
    background-color: rgba(0, 174, 239, .10);
}

/* Row mode. The rows belong to AppListView, not to this component, so ::deep is what lets the
   rule reach them. An inset shadow rather than a border keeps the row height identical while
   it is lit, so the list does not jitter as the pointer moves down it. */
[b-yfrjgz4qmn] .app-file-drop-row-active {
    background-color: rgba(0, 174, 239, .14) !important;
    box-shadow: inset 0 0 0 2px #00aeef;
}
/* /Pages/Shared/MainLayout.razor.rz.scp.css */
.side-nav[b-93s4dl9pn2] {
  background-color: transparent !important;
  background-image: linear-gradient(180deg, #02103D 0%, #1B45B5 100%) !important;
  background-attachment: scroll !important;
}

.side-nav .sidenav-bg[b-93s4dl9pn2] {
  background-image: linear-gradient(180deg, #02103D 0%, #1B45B5 100%) !important;
  background-attachment: scroll !important;
}

.side-nav .sidenav-bg[b-93s4dl9pn2]:after,
.side-nav .sidenav-bg.mask-strong[b-93s4dl9pn2]:after,
.side-nav .sidenav-bg.mask-light[b-93s4dl9pn2]:after,
.side-nav .sidenav-bg.mask-slight[b-93s4dl9pn2]:after {
  background: transparent !important;
}

[b-93s4dl9pn2] .side-nav .collapsible li a:not(.collapsible-header),
[b-93s4dl9pn2] .side-nav .collapsible li .collapsible-header {
  color: #ffffff !important;
}

[b-93s4dl9pn2] .side-nav .collapsible li a:not(.collapsible-header) i,
[b-93s4dl9pn2] .side-nav .collapsible li .collapsible-header i {
  color: #ffffff !important;
}

.main-logo-wrap[b-93s4dl9pn2] {
  width: 100px;
}

.main-nav-title[b-93s4dl9pn2] {
  padding-top: 0;
  padding-left: 1rem;
  margin: 0;
}

@media (min-width: 1440px) {
  .main-nav-title-wrap[b-93s4dl9pn2] {
    margin-right: auto !important;
  }
  .main-nav-title-wrap .main-nav-title-logo[b-93s4dl9pn2] {
    display: none !important;
  }
}
@media (max-width: 768px) {
  .main-nav-title-logo-hide[b-93s4dl9pn2] {
    display: none !important;
  }
}
@media (max-width: 1439px) {
  .main-nav-title-wrap[b-93s4dl9pn2] {
    margin: auto !important;
  }
}

.nav-flex-icons[b-93s4dl9pn2] {
  align-items: center;
  gap: 0.5rem;
}

.app-share-label[b-93s4dl9pn2] {
  margin-left: 0.4rem;
}

.navbar.scrolling-navbar[b-93s4dl9pn2],
.navbar.scrolling-navbar.top-nav-collapse[b-93s4dl9pn2] {
  padding-top: 5px;
  padding-bottom: 5px;
  transition: background 0.5s ease-in-out;
}
/* /Pages/User/Profile.razor.rz.scp.css */
@media (min-width: 768px) {
  .app-user-card[b-7zn7lcvd9d] {
    margin-top: 80px !important;
  }
}
