/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* /Components/Pages/Admin/ActivityLog.razor.rz.scp.css */
.act-head[b-f7a0q5z0lw] {
    margin-bottom: 18px;
}

.act-eyebrow[b-f7a0q5z0lw] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-4);
    margin-bottom: 10px;
}

.act-title[b-f7a0q5z0lw] {
    font-family: 'Helvetica LT', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-weight: 700;
    font-size: 30px;
    letter-spacing: -0.03em;
    color: #0e1726;
    margin: 0;
}

.act-subtitle[b-f7a0q5z0lw] {
    font-size: 14px;
    color: #5a6878;
    margin: 6px 0 0;
}

.act-card[b-f7a0q5z0lw] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    overflow-x: auto;
}

.act-row[b-f7a0q5z0lw] {
    display: grid;
    grid-template-columns: 140px 90px minmax(140px, 0.8fr) minmax(170px, 1fr) minmax(260px, 1.6fr);
    gap: 14px;
    align-items: center;
    min-width: 960px;
    padding: 12px 22px;
    border-bottom: 1px solid #ebeff5;
}

/* Grid children default to min-width:auto, which lets long keys overflow into the next column. */
.act-row > *[b-f7a0q5z0lw] {
    min-width: 0;
}

.act-row:last-child[b-f7a0q5z0lw] {
    border-bottom: none;
}

.act-row--head[b-f7a0q5z0lw] {
    background: #f5f7fb;
    border-bottom: 1px solid #dce2ed;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10.5px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #5a6878;
}

.act-when[b-f7a0q5z0lw] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: #5a6878;
}

.act-action[b-f7a0q5z0lw] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.04em;
    padding: 2px 8px;
    border-radius: 5px;
}

.act-action--insert[b-f7a0q5z0lw] { background: #d8f1e3; color: #1f8a5b; }
.act-action--update[b-f7a0q5z0lw] { background: #ffeec7; color: #b27300; }
.act-action--delete[b-f7a0q5z0lw] { background: #fbdcd7; color: #c43521; }
.act-action--select[b-f7a0q5z0lw] { background: #d6efff; color: #036fa8; }

.act-table[b-f7a0q5z0lw] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12.5px;
    font-weight: 600;
    color: #0e1726;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.act-record[b-f7a0q5z0lw] {
    display: block;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12.5px;
    color: #036fa8;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.act-record[title][b-f7a0q5z0lw] { cursor: help; }

.act-detail[b-f7a0q5z0lw] {
    font-size: 13.5px;
    color: #2c3a4f;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.act-user[b-f7a0q5z0lw] {
    color: #0e1726;
    font-weight: 500;
}

.act-empty[b-f7a0q5z0lw] {
    padding: 40px 22px;
    text-align: center;
    color: #8b99a8;
    font-size: 13.5px;
}

/* ── Toolbar filter controls ─────────────────────────────────────────────── */
.act-filter[b-f7a0q5z0lw]{
  height:38px;padding:0 12px;border:1px solid #dce2ed;border-radius:10px;
  font-size:13.5px;color:#0e1726;background:#fff;cursor:pointer;outline:none;appearance:none;
}
.act-filter:focus[b-f7a0q5z0lw]{border-color:#0599e1}
select.act-filter[b-f7a0q5z0lw]{
  padding-right:32px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;
}
.act-search[b-f7a0q5z0lw]{width:260px}

/* ── Sortable header columns ─────────────────────────────────────────────── */
.act-col-sort[b-f7a0q5z0lw]{cursor:pointer;user-select:none;display:flex;align-items:center;gap:4px}
.act-col-sort:hover[b-f7a0q5z0lw]{color:#0599e1}
.act-sort-icon[b-f7a0q5z0lw]{font-size:11px;color:#b0bac8}
.act-sort-active[b-f7a0q5z0lw]{color:#0599e1}

/* ── Pagination bar ──────────────────────────────────────────────────────── */
.act-pager[b-f7a0q5z0lw]{
  display:flex;align-items:center;gap:12px;
  padding:12px 22px 10px;font-size:13px;color:#5a6878;
  border-top:1px solid #ebeff5;
}
.act-pager-info[b-f7a0q5z0lw]{display:flex;align-items:center;gap:6px}
.act-pager-size[b-f7a0q5z0lw]{
  height:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  font-size:13px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
}
.act-pager-btn[b-f7a0q5z0lw]{
  height:28px;min-width:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  background:#fff;cursor:pointer;font-size:14px;color:#0e1726;line-height:1;
}
.act-pager-btn:disabled[b-f7a0q5z0lw]{opacity:0.35;cursor:default}
.act-pager-btn:not(:disabled):hover[b-f7a0q5z0lw]{border-color:#0599e1;color:#0599e1}
.act-pager > .act-pager-btn:first-of-type[b-f7a0q5z0lw]{margin-left:auto}
/* /Components/Pages/Admin/ImportWizard.razor.rz.scp.css */
.import-wizard[b-a6wsz1l3q9] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.import-step[b-a6wsz1l3q9] {
    border: 1px solid #e3e8ef;
    border-radius: 12px;
    background: #fff;
    padding: 14px 16px;
}

.import-step.is-locked[b-a6wsz1l3q9] {
    background: #f7f9fc;
    opacity: 0.7;
}

.import-step.is-done[b-a6wsz1l3q9] {
    border-color: #2e8b57;
}

.step-header[b-a6wsz1l3q9] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.step-status[b-a6wsz1l3q9] {
    font-size: 15px;
    width: 20px;
    text-align: center;
}

.step-title[b-a6wsz1l3q9] {
    font-weight: 600;
    font-size: 15px;
    color: #0e1726;
}

.step-lock-note[b-a6wsz1l3q9] {
    margin-left: auto;
    font-size: 12.5px;
    color: var(--ink-4);
}

.step-content[b-a6wsz1l3q9] {
    margin-top: 8px;
}

.cie-upload[b-a6wsz1l3q9] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    border-radius: 8px;
    border: 1px solid #d7dde6;
    background: #fff;
    cursor: pointer;
    font-size: 13.5px;
    color: #0e1726;
}

.cie-upload input[type="file"][b-a6wsz1l3q9] {
    display: none;
}
/* /Components/Pages/Admin/Settings.razor.rz.scp.css */
.set-subtitle[b-ey9a736lyz] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 24px;
}

/* Top two-card row */
.set-top[b-ey9a736lyz] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 28px;
}

@media (max-width: 1100px) {
    .set-top[b-ey9a736lyz] { grid-template-columns: 1fr; }
}

.set-card[b-ey9a736lyz] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 18px;
    padding: 22px 24px;
}

.set-card-head[b-ey9a736lyz] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 14px;
}

.set-card-title[b-ey9a736lyz] {
    font-weight: 700;
    font-size: 17px;
    color: #0e1726;
}

.set-cardnote[b-ey9a736lyz] {
    font-size: 12.5px;
    color: var(--ink-4);
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid #ebeff5;
}

/* Rows */
.set-rows[b-ey9a736lyz] { display: flex; flex-direction: column; }

.set-userrow[b-ey9a736lyz], .set-raterow[b-ey9a736lyz] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 2px;
    border-bottom: 1px solid #ebeff5;
}
.set-userrow:last-child[b-ey9a736lyz], .set-raterow:last-child[b-ey9a736lyz] { border-bottom: none; }

.set-userinfo[b-ey9a736lyz] { flex: 1; min-width: 0; }
.set-dept[b-ey9a736lyz] { font-family: inherit; font-size: 13px; }

.set-rate[b-ey9a736lyz] { font-weight: 700; font-size: 15px; color: #0e1726; }

.set-rateedit[b-ey9a736lyz] { display: flex; align-items: center; gap: 4px; color: #5a6878; font-weight: 600; }
.set-rateinp[b-ey9a736lyz] { width: 80px; text-align: right; }

/* Lookup tables section */
.set-eyebrow[b-ey9a736lyz] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--ink-4);
    margin-bottom: 14px;
}

.set-grid[b-ey9a736lyz] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    align-items: start;
}

@media (max-width: 1100px) {
    .set-grid[b-ey9a736lyz] { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
    .set-grid[b-ey9a736lyz] { grid-template-columns: 1fr; }
}

.set-link-card:hover[b-ey9a736lyz] { border-color: #0599e1; }
.set-linkarrow[b-ey9a736lyz] { font-weight: 700; font-size: 13.5px; color: #0599e1; white-space: nowrap; }

.set-warning[b-ey9a736lyz] {
    border: 1px solid #b9770e;
    background: #fff8e6;
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 13px;
    margin-bottom: 16px;
}
/* /Components/Pages/Admin/SettingsLabor.razor.rz.scp.css */
/* Clickable rate value — looks like static bold text until hovered, then
   reveals a dashed affordance hinting it's editable in place. */
.set-ratebtn[b-7nj3982vvm] {
    font-weight: 700;
    font-size: 15px;
    color: #0e1726;
    background: none;
    border: 1px dashed transparent;
    border-radius: 8px;
    padding: 2px 6px;
    cursor: pointer;
}
.set-ratebtn:hover[b-7nj3982vvm] { border-color: #cfe6f7; background: #f3fbff; }
/* /Components/Pages/Admin/SettingsUsers.razor.rz.scp.css */
.su-back[b-tkoza6bnbn] {
    display: inline-block;
    font-size: 13px;
    color: #5a6878;
    text-decoration: none;
    margin-bottom: 14px;
}
.su-back:hover[b-tkoza6bnbn] { color: #0599e1; }

.su-head[b-tkoza6bnbn] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 18px;
}

.su-filters[b-tkoza6bnbn] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}
.su-search[b-tkoza6bnbn] { flex: 1; min-width: 200px; }
.su-count[b-tkoza6bnbn] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: var(--ink-4);
    white-space: nowrap;
}

.su-empty[b-tkoza6bnbn] {
    text-align: center;
    color: var(--ink-4);
    padding: 32px 0;
}

/* Plant-assignment display: a clickable cluster of plant-code pills. */
.su-sitepills[b-tkoza6bnbn] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 4px;
    align-items: center;
    background: none;
    border: 1px dashed transparent;
    border-radius: 8px;
    padding: 2px 4px;
    cursor: pointer;
}
.su-sitepills:hover[b-tkoza6bnbn] { border-color: #cfe6f7; background: #f3fbff; }

.su-sitepill[b-tkoza6bnbn] {
    display: inline-block;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
    color: #0a5a8a;
    background: #e6f4fd;
    border: 1px solid #cfe6f7;
    border-radius: 6px;
    padding: 1px 6px;
}
.su-site-none[b-tkoza6bnbn] { font-size: 12px; color: var(--ink-4); }

/* Inline plant editor: vertical checkbox list + Save/Cancel. */
.su-siteedit[b-tkoza6bnbn] { display: flex; flex-direction: column; gap: 4px; }
.su-sitechk[b-tkoza6bnbn] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #0a2540;
    cursor: pointer;
}
.su-siteedit-actions[b-tkoza6bnbn] { display: flex; gap: 6px; margin-top: 6px; }
/* /Components/Pages/AssetDetail.razor.rz.scp.css */
/* Phase 6 Task 4: danger zone at the bottom of the (collapsed-by-default) Edit details panel,
   replacing a DELETE button that used to sit next to Back/Print PDF with equal visual weight. */
.ad-danger[b-rdw0dxl7zs] {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid #f1cfcf;
}
.ad-danger-title[b-rdw0dxl7zs] {
    font-size: 13px;
    font-weight: 700;
    color: #c0392b;
    margin-bottom: 4px;
}
.ad-danger-body[b-rdw0dxl7zs] {
    font-size: 13px;
    color: #7a1f16;
    margin-bottom: 10px;
}
/* /Components/Pages/Assets.razor.rz.scp.css */
.asset-title[b-8xg63jra13]{font-family:'Helvetica LT','Helvetica Neue',sans-serif;font-weight:700;font-size:34px;
  letter-spacing:-0.03em;color:#0e1726;margin:0}
.asset-subtitle[b-8xg63jra13]{font-size:15px;color:#5a6878;margin:6px 0 18px}

/* Plant filter dropdown (matches the Technicians page control). */
.asset-filter[b-8xg63jra13]{
  height:38px;padding:0 32px 0 12px;border:1px solid #dce2ed;border-radius:10px;
  font-size:13.5px;color:#0e1726;background:#fff;cursor:pointer;outline:none;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center}
.asset-filter:focus[b-8xg63jra13]{border-color:#0599e1}

/* Free-text search input — wider than the plant dropdown. */
.asset-search[b-8xg63jra13]{width:240px;background-image:none}

/* Sortable column header — pointer cursor, no-select. */
.asset-th-sort[b-8xg63jra13]{cursor:pointer;user-select:none;white-space:nowrap}
.asset-th-sort:hover[b-8xg63jra13]{color:#0599e1}

/* Sort direction arrow beside header text. */
.asset-sort-icon[b-8xg63jra13]{margin-left:4px;font-size:11px;color:#b0bac8;vertical-align:middle}
.asset-sort-active[b-8xg63jra13]{color:#0599e1}

/* Pagination bar below the table. */
.asset-pager[b-8xg63jra13]{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px 4px;
  font-size:13px;color:#5a6878;
  border-top:1px solid #eef0f5;
}
.asset-pager-info[b-8xg63jra13]{display:flex;align-items:center;gap:6px}
.asset-pager-size[b-8xg63jra13]{
  height:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  font-size:13px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
}
.asset-pager-btn[b-8xg63jra13]{
  height:28px;min-width:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  background:#fff;cursor:pointer;font-size:14px;color:#0e1726;line-height:1;
}
.asset-pager-btn:disabled[b-8xg63jra13]{opacity:0.35;cursor:default}
.asset-pager-btn:not(:disabled):hover[b-8xg63jra13]{border-color:#0599e1;color:#0599e1}

/* Push page-nav buttons to the right. */
.asset-pager > .asset-pager-btn:first-of-type[b-8xg63jra13]{margin-left:auto}
/* /Components/Pages/Dashboard.razor.rz.scp.css */
/* Plant selector in the dashboard header. */
.dash-plant[b-hyd7p2kgwf] {
    height: 40px;
    padding: 0 34px 0 14px;
    border: 1px solid #dce2ed;
    border-radius: 12px;
    font-size: 14px;
    color: #0e1726;
    background: #fff;
    cursor: pointer;
    outline: none;
    appearance: none;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat;
    background-position: right 12px center;
}
.dash-plant:focus[b-hyd7p2kgwf] { border-color: #0599e1; }

.dash-kpis[b-hyd7p2kgwf] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 18px;
}

.dash-cols[b-hyd7p2kgwf] {
    display: grid;
    grid-template-columns: 1.55fr 1fr;
    gap: 18px;
}

/* Stack on mobile so the 4 KPI cards and 2-column body don't overflow 375px. */
@media (max-width: 900px) {
    .dash-kpis[b-hyd7p2kgwf] {
        grid-template-columns: repeat(2, 1fr);
    }
    .dash-cols[b-hyd7p2kgwf] {
        grid-template-columns: 1fr;
    }
}

/* Tablet tier: the Active Work Orders widget renders each populated row as a .datarow button
   (a 3-column CSS grid defined in app.css -- 96px id / 1fr title+meta / auto pills), not as an
   .r360-table, so it does not inherit the card-stacking layout a prior task added to
   .r360-table's tablet breakpoint. At 1024px the fixed grid squeezed the middle column so hard
   that the asset text wrapped across four lines and the description lost its text entirely --
   unreadable on the plant-floor tablet form factor this widget is meant to be read on. Switch
   the row from a 3-column grid to an explicit 2-row grid instead: line 1 is the WO number +
   description, line 2 is the asset + status/priority pills. Uses the same 1200px breakpoint as
   the .r360-table tablet tier in app.css (see that file's "Viewport tiers" comment) so the
   chassis stays consistent across pages. These selectors are component-scoped
   (Dashboard.razor.css), so they only affect this page's .datarow elements, not any other page.
   Grid-area placement (rather than flex-wrap's "flex-basis:100% forces a break" trick) is used
   deliberately: with flex-wrap, a meta item wide enough to force its own line break also fills
   that entire line, leaving no room for the pills next to it and pushing them onto an
   unwanted third line. Grid areas place each of the four pieces in a fixed cell regardless of
   its content width, so line 2 reliably holds both meta and pills together.
   The empty-state row ("No active work orders") also carries the base .datarow class for its
   background/border/padding, but it is a plain <div> with a single text node -- none of the
   datarow__id/__body/__title/__pills children this rule depends on. :not(.datarow--empty)
   excludes it so it keeps its own centered single-line layout instead of being pulled into
   this rule's grid-template-areas, where its lone text node would otherwise auto-place into
   the "id" cell (a shrink-to-fit column) and be squeezed/left-aligned instead of centered. */
@media (max-width: 1200px) {
    .datarow:not(.datarow--empty)[b-hyd7p2kgwf] {
        display: grid;
        grid-template-columns: auto 1fr auto;
        grid-template-areas:
            "id    title title"
            "meta  meta  pills";
        column-gap: 10px;
        row-gap: 4px;
        align-items: center;
        padding: 10px 16px;
    }

    /* Unwraps the title+meta grouping span so its children (.datarow__title and .meta) become
       direct grid items of .datarow above, placeable into their own grid areas instead of
       staying confined to this wrapper's single "title-column" grid cell. */
    .datarow__body[b-hyd7p2kgwf] {
        display: contents;
    }

    /* Line 1, left: WO number. */
    .datarow__id[b-hyd7p2kgwf] {
        grid-area: id;
    }

    /* Line 1, right: description: fills the rest of row 1 and keeps its existing ellipsis
       truncation (min-width:0 lets a grid item shrink below its content size, which
       overflow/ellipsis needs to kick in). */
    .datarow__title[b-hyd7p2kgwf] {
        grid-area: title;
        min-width: 0;
    }

    /* Line 2, left: asset id + name, spanning most of row 2's width; truncates with an
       ellipsis instead of wrapping onto a third line if the asset name is long. */
    .meta[b-hyd7p2kgwf] {
        grid-area: meta;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    /* Line 2, right: priority/status pills, right-aligned in their own column so they don't
       get squeezed by (or squeeze) the asset text next to them. */
    .datarow__pills[b-hyd7p2kgwf] {
        grid-area: pills;
        justify-self: end;
    }
}
/* /Components/Pages/DataModel.razor.rz.scp.css */
/* DataModel.razor scoped styles */

.dm-title[b-2mhon0xgfc] {
    font-size: 2rem;
    font-weight: 700;
    color: #1a1a2e;
    margin: 0 0 4px;
}

.dm-subtitle[b-2mhon0xgfc] {
    font-size: 0.95rem;
    color: #6b7280;
    margin: 0 0 16px;
}

.dm-scaffold[b-2mhon0xgfc] {
    font-family: 'Consolas', 'Courier New', monospace;
    font-size: 0.8rem;
    background: #0f2137;
    color: #a8d8ea;
    padding: 14px 18px;
    border-radius: 10px;
    margin: 0 0 28px;
    overflow-x: auto;
    white-space: nowrap;
}

/* Grouped table grid */
.dm-groups[b-2mhon0xgfc] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: 20px;
    margin-bottom: 28px;
}

.dm-group[b-2mhon0xgfc] {
    background: #fff;
    border-radius: 12px;
    padding: 16px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}

.dm-group-title[b-2mhon0xgfc] {
    font-size: 0.95rem;
    font-weight: 700;
    color: #1a1a2e;
    padding: 2px 0 12px;
    border-bottom: 1px solid #e5e7eb;
    display: flex;
    align-items: center;
    gap: 6px;
}

.dm-group-title[b-2mhon0xgfc]::before {
    content: '';
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--mud-palette-primary, #1976d2);
    flex-shrink: 0;
}

/* Table cards */
.dm-table-card[b-2mhon0xgfc] {
    background: #f8f9fb;
    border-radius: 8px;
    padding: 10px 12px;
    margin-top: 10px;
    transition: box-shadow 0.15s ease;
}

.dm-table-card:hover[b-2mhon0xgfc] {
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

.dm-table-head[b-2mhon0xgfc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.dm-table-name[b-2mhon0xgfc] {
    font-size: 0.88rem;
    font-weight: 600;
    color: #1a1a2e;
    font-family: 'Consolas', 'Courier New', monospace;
}

.dm-badge[b-2mhon0xgfc] {
    font-size: 0.72rem;
    background: #e8eaed;
    color: #5f6368;
    padding: 2px 8px;
    border-radius: 10px;
    font-family: 'Consolas', 'Courier New', monospace;
}

/* Column chips */
.dm-cols[b-2mhon0xgfc] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.dm-col[b-2mhon0xgfc] {
    font-size: 0.75rem;
    font-family: 'Consolas', 'Courier New', monospace;
    background: #eef0f4;
    color: #4a5568;
    padding: 2px 7px;
    border-radius: 4px;
    border: 1px solid #e2e5ea;
}

.dm-col.pk[b-2mhon0xgfc] {
    background: #e3f0ff;
    color: #1565c0;
    border-color: #b8d8f7;
    font-weight: 600;
}

/* Foreign keys */
.dm-fk[b-2mhon0xgfc] {
    background: #fff;
    border-radius: 12px;
    padding: 16px 20px;
    margin-top: 4px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}

.dm-fk-row[b-2mhon0xgfc] {
    font-family: 'Consolas', 'Courier New', monospace;
    font-size: 0.82rem;
    color: #4a5568;
    padding: 3px 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}

.dm-fk-row:hover[b-2mhon0xgfc] {
    color: #1976d2;
}

.dm-fk-from[b-2mhon0xgfc] {
    font-weight: 500;
}

.dm-fk-to[b-2mhon0xgfc] {
    color: #1976d2;
    font-weight: 500;
}
/* /Components/Pages/Inventory.razor.rz.scp.css */
.inv-title[b-lcoktoub25] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.inv-subtitle[b-lcoktoub25] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 24px;
}

.inv-stock[b-lcoktoub25] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 160px;
}

.inv-bar[b-lcoktoub25] {
    height: 8px;
    background: #eaeef6;
    border-radius: 999px;
    overflow: hidden;
}

.inv-bar-fill[b-lcoktoub25] {
    display: block;
    height: 100%;
    border-radius: 999px;
}

.inv-bar-fill.success[b-lcoktoub25] {
    background: #2bb673;
}

.inv-bar-fill.warning[b-lcoktoub25] {
    background: #e6a700;
}

.inv-bar-fill.danger[b-lcoktoub25] {
    background: #e05353;
}

/* Toolbar filter controls — shared base style. */
.inv-filter[b-lcoktoub25]{
  height:38px;padding:0 12px;border:1px solid #dce2ed;border-radius:10px;
  font-size:13.5px;color:#0e1726;background:#fff;cursor:pointer;outline:none;appearance:none;
}
.inv-filter:focus[b-lcoktoub25]{border-color:#0599e1}

/* Status dropdown gets the chevron arrow. */
select.inv-filter[b-lcoktoub25]{
  padding-right:32px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;
}

/* Search input is wider and has no chevron. */
.inv-search[b-lcoktoub25]{width:240px}

/* Sortable header. */
.inv-th-sort[b-lcoktoub25]{cursor:pointer;user-select:none;white-space:nowrap}
.inv-th-sort:hover[b-lcoktoub25]{color:#0599e1}
.inv-sort-icon[b-lcoktoub25]{margin-left:4px;font-size:11px;color:#b0bac8;vertical-align:middle}
.inv-sort-active[b-lcoktoub25]{color:#0599e1}

/* Pagination bar. */
.inv-pager[b-lcoktoub25]{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px 4px;font-size:13px;color:#5a6878;
  border-top:1px solid #eef0f5;
}
.inv-pager-info[b-lcoktoub25]{display:flex;align-items:center;gap:6px}
.inv-pager-size[b-lcoktoub25]{
  height:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  font-size:13px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
}
.inv-pager-btn[b-lcoktoub25]{
  height:28px;min-width:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  background:#fff;cursor:pointer;font-size:14px;color:#0e1726;line-height:1;
}
.inv-pager-btn:disabled[b-lcoktoub25]{opacity:0.35;cursor:default}
.inv-pager-btn:not(:disabled):hover[b-lcoktoub25]{border-color:#0599e1;color:#0599e1}
.inv-pager > .inv-pager-btn:first-of-type[b-lcoktoub25]{margin-left:auto}

.inv-scale[b-lcoktoub25] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    color: #9aa3b2;
}
/* /Components/Pages/InventoryDetail.razor.rz.scp.css */
/* Branded photo-upload button for the Photos card. Mirrors AttachmentPanel.razor.css: the real
   <input type=file> (rendered by InputFile as .ap-input) is hidden and the styled label opens the
   file picker. Scoped CSS is per-component, so these rules must live here even though they duplicate
   AttachmentPanel's  -  they can't cross the component-scope boundary. */
.ap-upload[b-q4i6kpfvdb] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 16px;
    background: #0599e1;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    border-radius: 9px;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(5, 153, 225, 0.3);
    transition: background 0.15s, box-shadow 0.15s;
}
.ap-upload:hover[b-q4i6kpfvdb] {
    background: #047ab5;
    box-shadow: 0 3px 10px rgba(5, 153, 225, 0.4);
}
.ap-upload-icon[b-q4i6kpfvdb] { font-size: 16px; line-height: 1; font-weight: 400; }

/* Hide the native file input but keep it operable via the wrapping label. InputFile renders its own
   <input>, which does NOT receive this component's scope attribute, so `::deep` is required to match
   the rendered input (same reasoning as AttachmentPanel.razor.css). */
.ap-upload[b-q4i6kpfvdb]  input[type=file] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
}

.ap-hint[b-q4i6kpfvdb] {
    display: inline-block;
    margin-left: 10px;
    font-size: 12px;
    color: var(--ink-4);
    vertical-align: middle;
}
/* /Components/Pages/Preventive.razor.rz.scp.css */
.pm-title[b-4w75xrdiw6] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.pm-subtitle[b-4w75xrdiw6] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 24px;
}

.pm-gen[b-4w75xrdiw6] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 600;
    color: #fff;
    background: #0599e1;
    border: none;
    border-radius: 999px;
    padding: 6px 14px;
    cursor: pointer;
    transition: background 0.15s;
}

.pm-gen:hover[b-4w75xrdiw6] {
    background: #047ab5;
}

/* ── New PM task form ─────────────────────────────────────────────
   Self-contained card + fields. The page previously borrowed req-*
   classes scoped to the Requests page, so the inputs rendered with
   bare browser defaults; these pm-form-* rules style it properly. */
.pm-form-card[b-4w75xrdiw6] {
    background: linear-gradient(180deg, #fbfdff 0%, #fff 100%);
    border: 1px solid #e3eaf2;
    border-radius: 16px;
    padding: 20px 22px;
    margin-bottom: 16px;
    box-shadow: 0 1px 2px rgba(14, 23, 38, 0.04);
}

/* Header: square brand icon + kicker + subtitle. */
.pm-form-head[b-4w75xrdiw6] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}
.pm-form-icon[b-4w75xrdiw6] {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: #0599e1;
    color: #fff;
    font-size: 22px;
    font-weight: 400;
    line-height: 1;
    display: grid;
    place-items: center;
    box-shadow: 0 2px 6px rgba(5, 153, 225, 0.35);
}
.pm-form-kicker[b-4w75xrdiw6] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.14em;
    color: #0e1726;
}
.pm-form-sub[b-4w75xrdiw6] {
    font-size: 12.5px;
    color: var(--ink-4);
    margin-top: 2px;
}

/* Responsive field row: fields flow and wrap, button sticks to the end. */
.pm-form-grid[b-4w75xrdiw6] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: flex-end;
}
.pm-field[b-4w75xrdiw6] {
    display: flex;
    flex-direction: column;
    min-width: 150px;
}
.pm-field--sm[b-4w75xrdiw6] { min-width: 120px; max-width: 150px; }
.pm-field--grow[b-4w75xrdiw6] { flex: 1; min-width: 200px; }

.pm-label[b-4w75xrdiw6] {
    font-size: 12px;
    font-weight: 600;
    color: #5a6878;
    margin-bottom: 6px;
}

.pm-input[b-4w75xrdiw6] {
    width: 100%;
    height: 40px;
    border: 1px solid #dce2ed;
    border-radius: 10px;
    padding: 0 12px;
    font-size: 14px;
    color: #0e1726;
    background: #fff;
    box-sizing: border-box;
    transition: border-color 0.15s, box-shadow 0.15s;
    outline: none;
}
.pm-input[b-4w75xrdiw6]::placeholder { color: #aab3c0; }
.pm-input:hover[b-4w75xrdiw6] { border-color: #b9c5d6; }
.pm-input:focus[b-4w75xrdiw6] {
    border-color: #0599e1;
    box-shadow: 0 0 0 3px rgba(5, 153, 225, 0.15);
}

/* Select gets a chevron and room for it. */
.pm-select[b-4w75xrdiw6] {
    appearance: none;
    padding-right: 32px;
    cursor: pointer;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat;
    background-position: right 10px center;
}

/* Primary action: prominent, with disabled + hover states. */
.pm-submit[b-4w75xrdiw6] {
    height: 40px;
    padding: 0 22px;
    background: #0599e1;
    color: #fff;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    box-shadow: 0 2px 6px rgba(5, 153, 225, 0.3);
    transition: background 0.15s, box-shadow 0.15s;
}
.pm-submit:hover:not(:disabled)[b-4w75xrdiw6] {
    background: #047ab5;
    box-shadow: 0 3px 10px rgba(5, 153, 225, 0.4);
}
.pm-submit:disabled[b-4w75xrdiw6] {
    background: #c3ced9;
    box-shadow: none;
    cursor: not-allowed;
}

/* ── Table toolbar: tabs / search / filter / sort / pager ─────────
   Mirrors the Work Orders + Inventory table controls. */
.pm-tabs[b-4w75xrdiw6] { display: flex; gap: 8px; margin-bottom: 16px; }
.pm-tab[b-4w75xrdiw6] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: #5a6878;
    background: transparent;
    border: 1px solid #dce2ed;
    border-radius: 999px;
    padding: 6px 16px;
    cursor: pointer;
    transition: all 0.15s;
}
.pm-tab:hover[b-4w75xrdiw6] { color: #0e1726; border-color: #b0bdd0; }
.pm-tab.active[b-4w75xrdiw6] { color: #fff; background: #0599e1; border-color: #0599e1; }

.pm-filter[b-4w75xrdiw6] {
    height: 38px; padding: 0 12px; border: 1px solid #dce2ed; border-radius: 10px;
    font-size: 13.5px; color: #0e1726; background: #fff; cursor: pointer; outline: none; appearance: none;
}
.pm-filter:focus[b-4w75xrdiw6] { border-color: #0599e1; }
select.pm-filter[b-4w75xrdiw6] {
    padding-right: 32px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
    background-repeat: no-repeat; background-position: right 10px center;
}
.pm-search[b-4w75xrdiw6] { width: 280px; }

.pm-th-sort[b-4w75xrdiw6] { cursor: pointer; user-select: none; white-space: nowrap; }
.pm-th-sort:hover[b-4w75xrdiw6] { color: #0599e1; }
.pm-sort-icon[b-4w75xrdiw6] { margin-left: 4px; font-size: 11px; color: #b0bac8; vertical-align: middle; }
.pm-sort-active[b-4w75xrdiw6] { color: #0599e1; }

.pm-pager[b-4w75xrdiw6] {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 16px 4px; font-size: 13px; color: #5a6878;
    border-top: 1px solid #eef0f5;
}
.pm-pager-info[b-4w75xrdiw6] { display: flex; align-items: center; gap: 6px; }
.pm-pager-size[b-4w75xrdiw6] {
    height: 28px; padding: 0 8px; border: 1px solid #dce2ed; border-radius: 8px;
    font-size: 13px; color: #0e1726; background: #fff; cursor: pointer; outline: none;
}
.pm-pager-btn[b-4w75xrdiw6] {
    height: 28px; min-width: 28px; padding: 0 8px; border: 1px solid #dce2ed; border-radius: 8px;
    background: #fff; cursor: pointer; font-size: 14px; color: #0e1726; line-height: 1;
}
.pm-pager-btn:disabled[b-4w75xrdiw6] { opacity: 0.35; cursor: default; }
.pm-pager-btn:not(:disabled):hover[b-4w75xrdiw6] { border-color: #0599e1; color: #0599e1; }
.pm-pager > .pm-pager-btn:first-of-type[b-4w75xrdiw6] { margin-left: auto; }
/* /Components/Pages/Purchasing/Purchasing.razor.rz.scp.css */
/* Page head: title block on the left, spend figure + "New PO" on the right.
   gap + flex-wrap keep the two groups from colliding (and the button from being
   pushed off-screen) once the title and the spend figure no longer fit on one row. */
.purch-head[b-7be2jb0ryq]{display:flex;align-items:flex-start;justify-content:space-between;
  gap:16px;flex-wrap:wrap;margin-bottom:18px}
.purch-head-title[b-7be2jb0ryq]{min-width:0}
.purch-head-actions[b-7be2jb0ryq]{display:flex;align-items:center;gap:16px}
.purch-title[b-7be2jb0ryq]{font-family:'Helvetica LT','Helvetica Neue',sans-serif;font-weight:700;font-size:34px;
  letter-spacing:-0.03em;color:#0e1726;margin:0}
.purch-subtitle[b-7be2jb0ryq]{font-size:15px;color:#5a6878;margin:6px 0 0}
.purch-spend[b-7be2jb0ryq]{display:flex;flex-direction:column;align-items:flex-end}
.purch-spend-label[b-7be2jb0ryq]{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.14em;color:#9aa3b2}
.purch-spend-val[b-7be2jb0ryq]{font-family:'Helvetica LT','Helvetica Neue',sans-serif;font-weight:700;font-size:30px;
  letter-spacing:-0.03em;color:#0e1726}

/* Mobile (matches the 700px breakpoint used on the sibling Suppliers page): stack the
   spend figure and the action button in a full-width row under the title, left-aligned,
   so nothing overlaps the h1 or clips past the right edge at ~390px wide. */
@media (max-width:700px){
  .purch-head[b-7be2jb0ryq]{flex-direction:column;align-items:stretch;gap:12px}
  .purch-title[b-7be2jb0ryq]{font-size:26px}
  .purch-subtitle[b-7be2jb0ryq]{font-size:14px}
  .purch-head-actions[b-7be2jb0ryq]{width:100%;justify-content:space-between;gap:12px}
  /* Left-align the spend block once it sits under the title rather than at the far right. */
  .purch-spend[b-7be2jb0ryq]{align-items:flex-start}
  .purch-spend-val[b-7be2jb0ryq]{font-size:22px}
}

/* Toolbar filter controls. */
.purch-filter[b-7be2jb0ryq]{
  height:38px;padding:0 12px;border:1px solid #dce2ed;border-radius:10px;
  font-size:13.5px;color:#0e1726;background:#fff;cursor:pointer;outline:none;appearance:none;
}
.purch-filter:focus[b-7be2jb0ryq]{border-color:#0599e1}
select.purch-filter[b-7be2jb0ryq]{
  padding-right:32px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;
}
.purch-search[b-7be2jb0ryq]{width:240px}

/* Sortable headers. */
.purch-th-sort[b-7be2jb0ryq]{cursor:pointer;user-select:none;white-space:nowrap}
.purch-th-sort:hover[b-7be2jb0ryq]{color:#0599e1}
.purch-sort-icon[b-7be2jb0ryq]{margin-left:4px;font-size:11px;color:#b0bac8;vertical-align:middle}
.purch-sort-active[b-7be2jb0ryq]{color:#0599e1}

/* Pagination bar. */
.purch-pager[b-7be2jb0ryq]{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px 4px;font-size:13px;color:#5a6878;
  border-top:1px solid #eef0f5;
}
.purch-pager-info[b-7be2jb0ryq]{display:flex;align-items:center;gap:6px}
.purch-pager-size[b-7be2jb0ryq]{
  height:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  font-size:13px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
}
.purch-pager-btn[b-7be2jb0ryq]{
  height:28px;min-width:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  background:#fff;cursor:pointer;font-size:14px;color:#0e1726;line-height:1;
}
.purch-pager-btn:disabled[b-7be2jb0ryq]{opacity:0.35;cursor:default}
.purch-pager-btn:not(:disabled):hover[b-7be2jb0ryq]{border-color:#0599e1;color:#0599e1}
.purch-pager > .purch-pager-btn:first-of-type[b-7be2jb0ryq]{margin-left:auto}
/* /Components/Pages/Purchasing/Suppliers.razor.rz.scp.css */
.ven-title[b-0p0uluev5x] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.ven-subtitle[b-0p0uluev5x] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 24px;
}

.ven-kpis[b-0p0uluev5x] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 18px;
}

.ven-grid[b-0p0uluev5x] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
}

@media (max-width: 1100px) {
    .ven-kpis[b-0p0uluev5x] { grid-template-columns: repeat(2, 1fr); }
    .ven-grid[b-0p0uluev5x] { grid-template-columns: 1fr; }
}

.ven-card[b-0p0uluev5x] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    padding: 20px;
}

.ven-card-head[b-0p0uluev5x] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 8px;
}

.ven-score[b-0p0uluev5x] {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: #0a2540;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 18px;
    font-weight: 700;
    flex-shrink: 0;
}

.ven-name[b-0p0uluev5x] {
    font-size: 16px;
    font-weight: 600;
    color: #0e1726;
    margin: 0 0 6px;
}

.ven-subtitle[b-0p0uluev5x] {
    font-size: 12px;
    color: var(--ink-4);
    margin-bottom: 14px;
}

.ven-bar-block[b-0p0uluev5x] {
    margin-bottom: 14px;
}

.ven-bar-label[b-0p0uluev5x] {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    font-weight: 600;
    color: #5a6878;
    letter-spacing: 0.04em;
    margin-bottom: 6px;
}

.ven-bar[b-0p0uluev5x] {
    height: 8px;
    background: #eaeef6;
    border-radius: 999px;
    overflow: hidden;
}

.ven-bar-fill[b-0p0uluev5x] {
    display: block;
    height: 100%;
    border-radius: 999px;
    transition: width 0.3s;
}

.ven-bar-fill.good[b-0p0uluev5x] {
    background: #2bb673;
}

.ven-bar-fill.bad[b-0p0uluev5x] {
    background: #e05353;
}

.ven-stats[b-0p0uluev5x] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
}

.ven-stat[b-0p0uluev5x] {
    text-align: center;
    padding: 8px 4px;
    background: #f8f9fb;
    border-radius: 10px;
}

.ven-stat-label[b-0p0uluev5x] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 9px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-4);
    margin-bottom: 4px;
}

.ven-stat-val[b-0p0uluev5x] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    color: #0e1726;
}

/* Card subtitle (renamed from .ven-subtitle to avoid clashing with the page subtitle). */
.ven-card-sub[b-0p0uluev5x] { font-size: 12px; color: var(--ink-4); margin-bottom: 14px; }

/* ── Control bar ─────────────────────────────────────────────────────────── */
.ven-toolbar[b-0p0uluev5x] { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }
.ven-search[b-0p0uluev5x] {
    border: 1px solid #dce2ed; border-radius: 10px; padding: 9px 13px; font-size: 14px;
    color: #0e1726; background: #fff; min-width: 240px; font-family: inherit;
}
.ven-search:focus[b-0p0uluev5x] { outline: none; border-color: #0599e1; box-shadow: 0 0 0 3px rgba(5,153,225,.15); }
.ven-toolbar-spacer[b-0p0uluev5x] { flex: 1; }
.ven-add-btn[b-0p0uluev5x] {
    background: #0599e1; color: #fff; border: none; border-radius: 10px;
    padding: 9px 16px; font-size: 13px; font-weight: 600; cursor: pointer; transition: background .15s;
}
.ven-add-btn:hover[b-0p0uluev5x] { background: #047ab5; }

/* Cards / Table segmented toggle. */
.ven-viewtoggle[b-0p0uluev5x] { display: inline-flex; background: #eef1f6; border-radius: 10px; padding: 3px; }
.ven-toggle-btn[b-0p0uluev5x] {
    border: none; background: transparent; padding: 6px 14px; font-size: 13px; font-weight: 600;
    color: #5a6878; border-radius: 8px; cursor: pointer; transition: background .15s, color .15s;
}
.ven-toggle-btn.active[b-0p0uluev5x] { background: #fff; color: #0e1726; box-shadow: 0 1px 3px rgba(14,23,38,.1); }

/* ── Add-vendor inline form ──────────────────────────────────────────────── */
.ven-addform[b-0p0uluev5x] { margin-bottom: 16px; padding: 18px; }
.ven-addform-row[b-0p0uluev5x] { display: flex; gap: 14px; align-items: flex-end; }
.ven-addform-field[b-0p0uluev5x] { flex: 1; }
.ven-addform-field .req-label[b-0p0uluev5x] { margin-top: 0; }
/* Override the global .req-submit full-width/top-margin for this inline button. */
.ven-addform-submit[b-0p0uluev5x] { width: auto; margin-top: 0; padding: 10px 20px; white-space: nowrap; }

/* ── Table view ──────────────────────────────────────────────────────────── */
.ven-tablewrap[b-0p0uluev5x] { background: #fff; border: 1px solid #e6eaf0; border-radius: 16px; overflow: hidden; }
.ven-table[b-0p0uluev5x] { width: 100%; border-collapse: collapse; }
.ven-table th[b-0p0uluev5x] {
    text-align: left; font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 10px;
    letter-spacing: .1em; text-transform: uppercase; color: var(--ink-4); padding: 12px 16px;
    border-bottom: 1px solid #eef1f6; background: #fafbfd;
}
.ven-table th.num[b-0p0uluev5x], .ven-table td.num[b-0p0uluev5x] { text-align: right; }
.ven-table td[b-0p0uluev5x] { padding: 13px 16px; font-size: 14px; color: #0e1726; border-bottom: 1px solid #f1f4f8; }
.ven-table tbody tr:last-child td[b-0p0uluev5x] { border-bottom: none; }
.ven-table tbody tr:hover[b-0p0uluev5x] { background: #f5f9ff; }
.ven-td-name[b-0p0uluev5x] { font-weight: 600; }

/* ── Empty state ─────────────────────────────────────────────────────────── */
.ven-empty[b-0p0uluev5x] {
    border: 1px dashed #dce2ed; border-radius: 12px; padding: 28px; text-align: center;
    font-size: 14px; color: #7a8696; background: #fbfdff;
}

/* ── Pager (matches the other table pages) ───────────────────────────────── */
.ven-pager[b-0p0uluev5x] {
    display: flex; align-items: center; justify-content: flex-end; gap: 14px;
    padding: 12px 16px; font-size: 13px; color: #5a6878;
}
.ven-pager-info[b-0p0uluev5x] { display: inline-flex; align-items: center; gap: 6px; }
.ven-pager-size[b-0p0uluev5x] { border: 1px solid #dce2ed; border-radius: 8px; padding: 4px 6px; font-size: 13px; }
.ven-pager-btn[b-0p0uluev5x] {
    border: 1px solid #dce2ed; background: #fff; border-radius: 8px; width: 30px; height: 30px;
    cursor: pointer; color: #0e1726; font-size: 14px;
}
.ven-pager-btn:disabled[b-0p0uluev5x] { opacity: .4; cursor: not-allowed; }

/* Card-view pager has no wrapper card, so give it a touch of separation. */
.ven-grid + .ven-pager[b-0p0uluev5x] { margin-top: 8px; }

@media (max-width: 700px) {
    .ven-addform-row[b-0p0uluev5x] { flex-direction: column; align-items: stretch; }
    .ven-addform-submit[b-0p0uluev5x] { width: 100%; }
}

/* Shown on a vendor card when there are no received POs yet (no real metrics to display). */
.ven-nodata[b-0p0uluev5x] {
    font-size: 12.5px; color: var(--ink-4); background: #f8f9fb; border: 1px dashed #e3eaf2;
    border-radius: 10px; padding: 12px 14px; text-align: center;
}

/* Late-outstanding warning (card view): a PO past its Expected_Date that still hasn't been
   received. Sits above the on-time bar so it reads as an immediate flag, not a buried stat. */
.ven-late-warning[b-0p0uluev5x] { margin-bottom: 10px; }

/* Monthly on-time% trend strip (card view): a compact "Jun 65% · Jul 92%" list built from
   VendorPerformanceSnapshot rows, most-recent month last so it reads left-to-right as a timeline. */
.ven-trend[b-0p0uluev5x] {
    margin-top: 10px; padding-top: 10px; border-top: 1px dashed #e3eaf2;
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11px; color: #5a6878;
}
.ven-trend-label[b-0p0uluev5x] {
    font-size: 9px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-4);
    margin-right: 2px;
}
.ven-trend-point[b-0p0uluev5x] { white-space: nowrap; }
.ven-trend-sep[b-0p0uluev5x] { color: #c7cfda; }

/* Table view: trend rendered inline in its own column, same compact dot-separated format. */
.ven-td-trend[b-0p0uluev5x] {
    font-family: 'JetBrains Mono', ui-monospace, monospace; font-size: 11.5px; color: #5a6878;
    white-space: nowrap;
}

/* ── D-C7: deactivate/delete (Show inactive toggle, action buttons, inactive dimming) ────── */
.ven-showinactive[b-0p0uluev5x] {
    display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #5a6878;
    cursor: pointer; white-space: nowrap;
}
.ven-showinactive input[b-0p0uluev5x] { cursor: pointer; }

.ven-card-inactive[b-0p0uluev5x] { opacity: .6; }
.ven-row-inactive[b-0p0uluev5x] { opacity: .6; }

.ven-card-actions[b-0p0uluev5x] {
    display: flex; gap: 8px; margin-top: 14px; padding-top: 12px; border-top: 1px dashed #e3eaf2;
}
.ven-td-actions[b-0p0uluev5x] { white-space: nowrap; }

.ven-action-btn[b-0p0uluev5x] {
    border: 1px solid #dce2ed; background: #fff; border-radius: 8px; padding: 6px 12px;
    font-size: 12px; font-weight: 600; color: #5a6878; cursor: pointer; transition: background .15s;
}
.ven-action-btn:hover[b-0p0uluev5x] { background: #f5f9ff; }
.ven-action-btn.ven-action-danger[b-0p0uluev5x] { color: #c0392b; border-color: #f0d3ce; }
.ven-action-btn.ven-action-danger:hover[b-0p0uluev5x] { background: #fdf2f0; }
/* /Components/Pages/Reliability.razor.rz.scp.css */
.rel-title[b-zmdtpm9p52] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.rel-subtitle[b-zmdtpm9p52] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 24px;
}

/* ── KPI cards ───────────────────────────────────────────────── */
.rel-kpis[b-zmdtpm9p52] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 18px;
}

.rel-stat[b-zmdtpm9p52] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    padding: 22px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 118px;
}

.rel-stat-eyebrow[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #5a6878;
}

.rel-stat-val[b-zmdtpm9p52] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-top: auto;
}

.rel-stat-num[b-zmdtpm9p52] {
    font-weight: 700;
    font-size: 38px;
    line-height: 1;
    letter-spacing: -0.03em;
    color: #0e1726;
}

.rel-stat-unit[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    color: var(--ink-4);
}

.rel-stat-sub[b-zmdtpm9p52] {
    font-size: 13px;
    line-height: 18px;
    color: #5a6878;
}

/* ── Three-card analytics grid ───────────────────────────────── */
.rel-grid[b-zmdtpm9p52] {
    display: grid;
    grid-template-columns: 1.5fr 1fr;
    gap: 18px;
    align-items: start;
}

@media (max-width: 1100px) {
    .rel-kpis[b-zmdtpm9p52] { grid-template-columns: repeat(2, 1fr); }
    .rel-grid[b-zmdtpm9p52] { grid-template-columns: 1fr; }
}

.rel-card[b-zmdtpm9p52] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
}

.rel-pareto[b-zmdtpm9p52], .rel-failcodes[b-zmdtpm9p52], .rel-trend[b-zmdtpm9p52] {
    padding: 22px;
}

.rel-failcodes[b-zmdtpm9p52] {
    margin-top: 18px;
}

.rel-card-title[b-zmdtpm9p52] {
    font-weight: 700;
    font-size: 17px;
    letter-spacing: -0.02em;
    color: #0e1726;
    margin: 0;
}

.rel-card-sub[b-zmdtpm9p52] {
    font-size: 12.5px;
    color: var(--ink-4);
    margin-top: 2px;
}

.rel-card-sub--mb[b-zmdtpm9p52] {
    margin-top: 4px;
    margin-bottom: 16px;
}

.rel-card-head[b-zmdtpm9p52] {
    padding: 18px 22px 6px;
}

.rel-card-head--row[b-zmdtpm9p52] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0;
    margin-bottom: 4px;
}

/* ── Bad actors table ────────────────────────────────────────── */
.rel-ba-row[b-zmdtpm9p52] {
    display: grid;
    grid-template-columns: 1.4fr 70px 90px 70px 90px;
    gap: 10px;
    align-items: center;
    padding: 13px 22px;
}

.rel-ba-head[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #5a6878;
    padding: 12px 22px;
}

.rel-ba-data[b-zmdtpm9p52] {
    border-top: 1px solid #ebeff5;
}

.rel-num[b-zmdtpm9p52] { text-align: right; }

.rel-ba-asset[b-zmdtpm9p52] { min-width: 0; }

.rel-ba-id-line[b-zmdtpm9p52] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.rel-ba-id[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12.5px;
    color: #036fa8;
    font-weight: 600;
}

.rel-ba-name[b-zmdtpm9p52] {
    display: block;
    font-size: 13px;
    color: #0e1726;
    font-weight: 500;
    margin-top: 2px;
}

.rel-ba-faults[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    color: #0e1726;
}

.rel-ba-dt[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    color: #c43521;
    font-weight: 600;
}

.rel-ba-mttr[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    color: #5a6878;
}

.rel-ba-avail[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    color: #2c3a4f;
    font-weight: 600;
}

/* ── Pareto / failure bars ───────────────────────────────────── */
.rel-bar-block[b-zmdtpm9p52] { margin-bottom: 14px; }
.rel-failcodes .rel-bar-block[b-zmdtpm9p52] { margin-bottom: 13px; }

.rel-bar-label[b-zmdtpm9p52] {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    margin-bottom: 5px;
}

.rel-bar-name[b-zmdtpm9p52] { color: #2c3a4f; font-weight: 500; }

.rel-bar-meta[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    color: var(--ink-4);
}

.rel-bar-count[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    color: #0e1726;
    font-weight: 600;
}

.rel-bar-track[b-zmdtpm9p52] {
    height: 10px;
    background: #eaeef6;
    border-radius: 999px;
    overflow: hidden;
}

.rel-bar-fill[b-zmdtpm9p52] {
    display: block;
    height: 100%;
    border-radius: 999px;
}

.rel-bar-fill--dark[b-zmdtpm9p52] { background: #0a2540; }
.rel-bar-fill--red[b-zmdtpm9p52] { background: #c43521; }

.rel-fc-coded[b-zmdtpm9p52] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
}

.rel-fc-warn[b-zmdtpm9p52] {
    font-size: 12.5px;
    color: #b27300;
    margin-top: 10px;
    background: #fffaf0;
    border-radius: 10px;
    padding: 9px 12px;
}
/* /Components/Pages/ReportPage.razor.rz.scp.css */
.report-crumb[b-oxdaguklxk] { font-size: 12px; color: var(--ink-4); margin-bottom: 6px; }
.report-crumb a[b-oxdaguklxk] { color: var(--ink-4); text-decoration: none; }
.report-crumb a:hover[b-oxdaguklxk] { color: #0599e1; }

.report-head[b-oxdaguklxk] { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; }
.report-head__title[b-oxdaguklxk] { font-size: 28px; font-weight: 800; letter-spacing: -0.02em; color: #0e1726; margin: 0; }
.report-head__question[b-oxdaguklxk] { font-size: 13.5px; color: #5a6a7e; margin: 3px 0 0; }
.report-head__actions[b-oxdaguklxk] { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }

.report-switch[b-oxdaguklxk], .report-print[b-oxdaguklxk] {
    border: 1px solid #dce2ed;
    background: #fff;
    border-radius: 8px;
    padding: 7px 12px;
    font-size: 13px;
    color: #0e1726;
    cursor: pointer;
}
.report-switch:hover[b-oxdaguklxk], .report-print:hover[b-oxdaguklxk] { border-color: #0599e1; }

.report-filters[b-oxdaguklxk] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 16px 0 4px; }
.report-filters__label[b-oxdaguklxk] { font-size: 13px; font-weight: 600; color: var(--ink-4); }
.report-filters__select[b-oxdaguklxk] { border: 1px solid #dce2ed; border-radius: 8px; padding: 7px 12px; font-size: 13px; background: #fff; color: #0e1726; }
.report-filters__date[b-oxdaguklxk] { display: flex; align-items: center; gap: 10px; }

.report-body[b-oxdaguklxk] { margin-top: 14px; }

.report-missing[b-oxdaguklxk] { padding: 60px 24px; text-align: center; color: #5a6a7e; }
.report-missing a[b-oxdaguklxk] { color: #0599e1; text-decoration: none; font-weight: 600; }

/* Phone: header stacks and the actions sit under the title rather than squeezing it. */
@media (max-width: 680px) {
    .report-head[b-oxdaguklxk] { flex-direction: column; }
    .report-head__title[b-oxdaguklxk] { font-size: 22px; }
    .report-head__actions[b-oxdaguklxk] { width: 100%; }
    .report-switch[b-oxdaguklxk] { flex: 1; }
}
/* /Components/Pages/ReportsHub.razor.rz.scp.css */
/* Hub page shell. Scoped CSS only reaches markup this file renders -- the cards style themselves
   from ReportCard.razor.css. */
.hub-title[b-lpv0lqcqfy] { font-size: 34px; font-weight: 800; color: var(--ink, #0e1726); margin: 0 0 4px; }
.hub-subtitle[b-lpv0lqcqfy] { font-size: 15px; color: var(--ink-3, #8b97a8); margin: 0 0 20px; }

.hub-scope[b-lpv0lqcqfy] { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; }
.hub-scope__label[b-lpv0lqcqfy] { font-size: 13px; font-weight: 600; color: var(--ink-3, #8b97a8); }
.hub-scope__select[b-lpv0lqcqfy] {
    border: 1px solid var(--line, #dce2ed);
    border-radius: 8px;
    padding: 7px 12px;
    font-size: 13px;
    background: var(--paper, #fff);
    color: var(--ink, #0e1726);
}

/* Briefing strip: four tiles, each a link into the report behind the number. */
.hub-kpis[b-lpv0lqcqfy] { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 26px; }

.hub-kpi[b-lpv0lqcqfy] {
    display: block;
    text-decoration: none;
    background: var(--paper, #fff);
    border: 1px solid var(--line, #dce2ed);
    border-radius: 16px;
    padding: 16px 18px;
    transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.hub-kpi:hover[b-lpv0lqcqfy] { border-color: #0599e1; box-shadow: 0 6px 18px rgba(10, 37, 64, 0.08); }
.hub-kpi:focus-visible[b-lpv0lqcqfy] { outline: 2px solid #0599e1; outline-offset: 2px; }

.hub-kpi__label[b-lpv0lqcqfy] { display: block; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-4); }
.hub-kpi__value[b-lpv0lqcqfy] { display: block; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; color: #0a2540; margin: 2px 0; }
.hub-kpi__unit[b-lpv0lqcqfy] { font-size: 14px; font-weight: 600; color: var(--ink-4); margin-left: 4px; }
.hub-kpi__sub[b-lpv0lqcqfy] { display: block; font-size: 11.5px; color: var(--ink-4); min-height: 14px; }

.hub-section[b-lpv0lqcqfy] { font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-4); margin: 26px 0 10px; }
.hub-group[b-lpv0lqcqfy] { margin-bottom: 22px; }
.hub-group__heading[b-lpv0lqcqfy] { font-size: 14px; font-weight: 700; color: #0e1726; margin: 0 0 8px; }

.hub-grid[b-lpv0lqcqfy] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }

/* Tablet: tiles two-up, cards two-up. */
@media (max-width: 1100px) {
    .hub-kpis[b-lpv0lqcqfy] { grid-template-columns: repeat(2, 1fr); }
    .hub-grid[b-lpv0lqcqfy] { grid-template-columns: repeat(2, 1fr); }
}

/* Phone: everything stacks. */
@media (max-width: 680px) {
    .hub-title[b-lpv0lqcqfy] { font-size: 26px; }
    .hub-kpis[b-lpv0lqcqfy] { grid-template-columns: 1fr; }
    .hub-grid[b-lpv0lqcqfy] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Requests.razor.rz.scp.css */
/* Form primitives (.req-title/.req-subtitle/.req-kicker/.req-label/.req-input/.req-textarea/
   .req-submit) now live GLOBALLY in app.css so every page shares them. This file keeps only
   the layout that's specific to the Requests page (two-column grid, dark explainer, history). */
.req-cols[b-izs1bcyd8n]{display:grid;grid-template-columns:1.1fr 1fr;gap:18px;align-items:start}
.req-form[b-izs1bcyd8n]{padding:22px}
.req-explainer[b-izs1bcyd8n]{background:#0e1726;border-radius:16px;padding:22px;color:#fff}
.req-exp-kicker[b-izs1bcyd8n]{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.16em;
  color:rgba(255,255,255,.55);margin-bottom:14px}
.req-exp-step[b-izs1bcyd8n]{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.5;
  color:rgba(255,255,255,.85);margin-bottom:12px}
.req-exp-num[b-izs1bcyd8n]{flex-shrink:0;width:20px;height:20px;border-radius:6px;background:#0599e1;color:#fff;
  font-size:11px;font-weight:700;display:grid;place-items:center;margin-top:1px}
@media (max-width:900px){.req-cols[b-izs1bcyd8n]{grid-template-columns:1fr}}

/* "Your requests" history table — lets a submitter confirm and track their requests. */
.req-history[b-izs1bcyd8n]{margin-top:26px}
.req-hist-head[b-izs1bcyd8n]{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}
.req-hist-title[b-izs1bcyd8n]{font-family:'Helvetica LT','Helvetica Neue',sans-serif;font-weight:700;font-size:20px;
  letter-spacing:-0.02em;color:#0e1726;margin:0}
.req-hist-count[b-izs1bcyd8n]{font-family:'JetBrains Mono',monospace;font-size:11px;color:#9aa3b2}
.req-empty[b-izs1bcyd8n]{border:1px dashed #dce2ed;border-radius:12px;padding:18px;font-size:13px;color:#7a8696;
  background:#fbfdff;text-align:center}
.req-table[b-izs1bcyd8n]{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e6eaf0;
  border-radius:14px;overflow:hidden}
.req-table th[b-izs1bcyd8n]{text-align:left;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-4);padding:11px 14px;border-bottom:1px solid #eef1f6;background:#fafbfd}
.req-table td[b-izs1bcyd8n]{padding:12px 14px;font-size:14px;color:#0e1726;border-bottom:1px solid #f1f4f8}
.req-table tr:last-child td[b-izs1bcyd8n]{border-bottom:none}
.req-row[b-izs1bcyd8n]{cursor:pointer;transition:background .12s}
.req-row:hover[b-izs1bcyd8n]{background:#f5f9ff}
.req-mono[b-izs1bcyd8n]{font-family:'JetBrains Mono',monospace;font-size:13px;color:#0599e1;font-weight:600}
/* /Components/Pages/Scan.razor.rz.scp.css */
.scan-video[b-zpnjgmg7m0]{width:100%;border-radius:12px;margin-top:10px;background:#000}
.hidden[b-zpnjgmg7m0]{display:none}
/* /Components/Pages/Scheduler.razor.rz.scp.css */
.sch-title[b-nski6xuh2s] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.sch-subtitle[b-nski6xuh2s] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 18px;
}

.sch-weeknav[b-nski6xuh2s] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
}

/* Push "Assign range…" to the right of the Prev/Today/Next cluster. ::deep is required here:
   Btn.razor is a separate component, so its rendered <button> does NOT carry this page's scoped
   CSS attribute — a plain (non-::deep) selector would silently never match, per the project's
   documented "scoped CSS misses child MudComponents" gotcha. */
[b-nski6xuh2s] .sch-weeknav .r360-btn--primary {
    margin-left: auto;
}

.sch-legend[b-nski6xuh2s] {
    display: flex;
    gap: 16px;
    margin-bottom: 16px;
}

.sch-legend-item[b-nski6xuh2s] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: #5a6878;
}

.sch-legend-swatch[b-nski6xuh2s] {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: 3px;
}

.sch-crit[b-nski6xuh2s] { background: #c43521; }
.sch-high[b-nski6xuh2s] { background: #e6a700; }
.sch-med[b-nski6xuh2s] { background: #0599e1; }

.sch-grid-wrap[b-nski6xuh2s] {
    overflow-x: auto;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    background: #fff;
    margin-bottom: 16px;
}

.sch-grid[b-nski6xuh2s] {
    display: grid;
    grid-template-columns: 160px repeat(7, 1fr);
    min-width: 900px;
}

/* 5-day modifier (Task 5, tablet responsive chassis): applied alongside .sch-grid when the
   weekend toggle is off. Weekend columns are removed from the DOM entirely (not just hidden),
   so the column-count/min-width here must match what's actually rendered or the grid would
   leave two empty tracks. Mirrors the existing sch-today/sch-today-col conditional-class
   pattern already used in this file rather than an inline computed style attribute. */
.sch-grid.sch-grid--5day[b-nski6xuh2s] {
    grid-template-columns: 160px repeat(5, 1fr);
    min-width: 700px;
}

.sch-corner[b-nski6xuh2s] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #5a6878;
    padding: 14px 16px;
    border-bottom: 1px solid #ebeff5;
    background: #f8f9fb;
}

.sch-grid-header[b-nski6xuh2s] {
    display: contents;
}

.sch-col-head[b-nski6xuh2s] {
    text-align: center;
    padding: 14px 8px;
    border-bottom: 1px solid #ebeff5;
    background: #f8f9fb;
    font-size: 12px;
}

.sch-col-head.sch-today[b-nski6xuh2s] {
    background: #e8f4fd;
    color: #0599e1;
    font-weight: 600;
}

.sch-col-day[b-nski6xuh2s] {
    display: block;
    font-size: 10px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-4);
    margin-bottom: 2px;
}

.sch-col-date[b-nski6xuh2s] {
    display: block;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    color: #0e1726;
}

.sch-today-col[b-nski6xuh2s] {
    background: #f0f8ff;
}

.sch-row[b-nski6xuh2s] {
    display: contents;
}

.sch-tech[b-nski6xuh2s] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    border-right: 1px solid #ebeff5;
    border-bottom: 1px solid #ebeff5;
}

/* Sticky technician names (Task 5): when the grid is wider than the viewport (overflow-x:auto on
   .sch-grid-wrap already handles this), scroll it horizontally with the technician names pinned --
   otherwise you scroll right and can no longer see whose row it is. .sch-corner already carries
   its own opaque background (#f8f9fb, set above) so it is left alone here; .sch-tech had no
   background set before, so scrolled cards would show through underneath it -- this rule fixes
   that too, not just position. */
.sch-corner[b-nski6xuh2s],
.sch-tech[b-nski6xuh2s] {
    position: sticky;
    left: 0;
    z-index: 2;
}

.sch-tech[b-nski6xuh2s] {
    background: #fff;
}

.sch-avatar[b-nski6xuh2s] {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #eaeef6;
    color: #5a6878;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 600;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    flex-shrink: 0;
}

.sch-tech-name[b-nski6xuh2s] {
    font-size: 13px;
    font-weight: 500;
    color: #0e1726;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sch-cell[b-nski6xuh2s] {
    min-height: 64px;
    border-right: 1px solid #ebeff5;
    border-bottom: 1px solid #ebeff5;
    padding: 4px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.sch-wo[b-nski6xuh2s] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10.5px;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 6px;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
}

/* Multi-day visual cue (Task 27): small "day X of Y" pill on a card whose work order has more
   than one labor entry visible in the current week — signals at a glance that dragging just
   this one card only moves one day of a longer job. */
.sch-wo-badge[b-nski6xuh2s] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 5px;
    border-radius: 8px;
    background: rgba(14, 23, 38, 0.08);
    color: inherit;
    flex-shrink: 0;
}

/* Click/keyboard alternative to dragging a card to a new technician/day (WCAG 2.5.7). Sized to
   the 24x24 CSS px minimum target (WCAG 2.5.8) even inside the compact scheduler card. */
.sch-wo-reassign[b-nski6xuh2s] {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    min-width: 24px;
    border: none;
    border-radius: 6px;
    background: rgba(14, 23, 38, 0.08);
    color: inherit;
    font-size: 12px;
    line-height: 1;
    cursor: pointer;
}

.sch-wo-reassign:hover[b-nski6xuh2s],
.sch-wo-reassign:focus-visible[b-nski6xuh2s] {
    background: rgba(14, 23, 38, 0.18);
}

.sch-wo.sch-crit[b-nski6xuh2s] {
    background: #fde8e8;
    color: #c43521;
}

.sch-wo.sch-high[b-nski6xuh2s] {
    background: #fff8e1;
    color: #b8860b;
}

.sch-wo.sch-med[b-nski6xuh2s] {
    background: #e8f4fd;
    color: #0599e1;
}

.sch-empty-wo[b-nski6xuh2s] {
    position: relative;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    border: 1px dashed #dce2ed;
    color: #b0bdd0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    cursor: pointer;
    margin: auto;
    transition: all 0.15s;
}

.sch-empty-wo:hover[b-nski6xuh2s] {
    border-color: #0599e1;
    color: #0599e1;
}

/* The visible dot stays small; the TOUCHABLE area does not. 24px targets with many of them on
   screen means mis-taps, and a mis-tap here assigns work to the wrong technician on the wrong
   day -- a data-integrity problem, not just an ergonomic one. The ::before expands the hit area
   without changing the visual design. */
.sch-empty-wo[b-nski6xuh2s]::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 44px;
    height: 44px;
    transform: translate(-50%, -50%);
}

/* Day-range toggle (5-day / 7-day). Placed near the week-nav row; styled as a small segmented
   control so it reads as a view option, not a primary action competing with Prev/Today/Next. */
.sch-dayrange[b-nski6xuh2s] {
    display: flex;
    gap: 2px;
    margin-left: 12px;
    border: 1px solid #dce2ed;
    border-radius: 8px;
    padding: 2px;
    background: #f8f9fb;
}

.sch-dayrange button[b-nski6xuh2s] {
    border: none;
    background: transparent;
    padding: 5px 12px;
    font-size: 12px;
    font-weight: 600;
    color: #5a6878;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.15s;
}

.sch-dayrange button.is-active[b-nski6xuh2s] {
    background: #fff;
    color: #0599e1;
    box-shadow: 0 1px 2px rgba(14, 23, 38, 0.12);
}

.sch-dayrange button:hover:not(.is-active)[b-nski6xuh2s] {
    color: #0e1726;
}

/* First-empty-cell-of-the-week hint (Task 5): a small inline nudge next to the "+" control so a
   first-time user doesn't have to find the instruction in the page subtitle. Kept visually quiet
   -- same size/color family as .sch-col-day -- so it doesn't compete with the dot itself. */
.sch-hint[b-nski6xuh2s] {
    font-size: 10px;
    color: var(--ink-4);
    margin-top: 2px;
    text-align: center;
    line-height: 1.2;
}

.sch-backlog[b-nski6xuh2s] {
    margin-bottom: 24px;
}

.sch-backlog strong[b-nski6xuh2s] {
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #5a6878;
}

.sch-backlog-item[b-nski6xuh2s] {
    font-size: 13px;
    color: #0e1726;
    padding: 4px 0;
}

/* Backlog search + "showing N of M" hint inside the assign dialog. The dialog only ever holds one
   page of the backlog, so these two are how a planner reaches the rest of it. */
.sch-backlog-search[b-nski6xuh2s] {
    width: 100%;
    padding: 8px 12px;
    margin-bottom: 8px;
    border: 1px solid #d7dee7;
    border-radius: 8px;
    font-size: 13px;
    color: #0e1726;
}

.sch-backlog-search:focus[b-nski6xuh2s] {
    outline: none;
    border-color: #0599e1;
    box-shadow: 0 0 0 3px rgba(5, 153, 225, 0.15);
}

.sch-backlog-hint[b-nski6xuh2s] {
    margin: 0 0 10px;
    font-size: 12px;
    color: var(--ink-4);
}

/* Classes SortableJs applies to the dragged card during a drag (see scheduler-dnd.js). */
.sch-wo.sortable-ghost[b-nski6xuh2s] {
    opacity: 0.35;
}

.sch-wo.sortable-chosen[b-nski6xuh2s] {
    box-shadow: 0 0 0 2px #0599e1;
}
/* /Components/Pages/Technicians.razor.rz.scp.css */
.tech-title[b-hn51m6cm4u] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.tech-subtitle[b-hn51m6cm4u] {
    font-size: 15px;
    color: #5a6878;
    margin: 0 0 24px;
}

.tech-grid[b-hn51m6cm4u] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

.tech-card[b-hn51m6cm4u] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    padding: 20px;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.tech-card:hover[b-hn51m6cm4u] {
    border-color: #0599e1;
    box-shadow: 0 2px 12px rgba(5, 153, 225, 0.1);
}

.tech-card-head[b-hn51m6cm4u] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
}

.tech-avatar[b-hn51m6cm4u] {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #eaeef6;
    color: #5a6878;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 600;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    flex-shrink: 0;
}

.tech-name[b-hn51m6cm4u] {
    font-size: 15px;
    font-weight: 600;
    color: #0e1726;
    margin: 0;
}

.tech-dept[b-hn51m6cm4u] {
    font-size: 12.5px;
    color: #5a6878;
    margin-top: 2px;
}

.tech-stats[b-hn51m6cm4u] {
    display: flex;
    gap: 12px;
}

.tech-stat[b-hn51m6cm4u] {
    flex: 1;
    text-align: center;
    padding: 10px 8px;
    background: #f8f9fb;
    border-radius: 12px;
}

.tech-stat-label[b-hn51m6cm4u] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 9px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-4);
    margin-bottom: 4px;
}

.tech-stat-val[b-hn51m6cm4u] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 15px;
    font-weight: 600;
    color: #0e1726;
}

.tech-booked[b-hn51m6cm4u]{display:flex;align-items:baseline;justify-content:space-between;margin-top:14px}
.tech-booked-label[b-hn51m6cm4u]{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.14em;color:#9aa3b2}
.tech-booked-val[b-hn51m6cm4u]{font-family:'Helvetica LT','Helvetica Neue',sans-serif;font-weight:700;font-size:26px;
  letter-spacing:-0.02em;color:#0e1726}
.tech-booked-unit[b-hn51m6cm4u]{font-size:13px;color:#9aa3b2;font-weight:600}
.tech-bar[b-hn51m6cm4u]{height:8px;background:#eaeef6;border-radius:999px;overflow:hidden;margin-top:8px}
.tech-bar-fill[b-hn51m6cm4u]{display:block;height:100%;background:#0599e1;border-radius:999px}
.tech-foot[b-hn51m6cm4u]{font-size:12.5px;color:var(--ink-4);margin-top:10px}

/* ── Toolbar: search, filters, view toggle ──────────────────────────────── */
.tech-toolbar[b-hn51m6cm4u]{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.tech-search[b-hn51m6cm4u]{
  flex:0 1 240px;height:38px;padding:0 14px;border:1px solid #dce2ed;border-radius:10px;
  font-size:14px;color:#0e1726;background:#fff;outline:none;transition:border-color .15s}
.tech-search:focus[b-hn51m6cm4u]{border-color:#0599e1}
.tech-filter[b-hn51m6cm4u]{
  height:38px;padding:0 32px 0 12px;border:1px solid #dce2ed;border-radius:10px;
  font-size:13.5px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
  appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center}
.tech-filter:focus[b-hn51m6cm4u]{border-color:#0599e1}
.tech-toolbar-spacer[b-hn51m6cm4u]{flex:1 1 auto}

/* View toggle (Cards / Table) */
.tech-viewtoggle[b-hn51m6cm4u]{display:inline-flex;border:1px solid #dce2ed;border-radius:10px;overflow:hidden;background:#fff}
.tech-toggle-btn[b-hn51m6cm4u]{
  height:36px;padding:0 16px;border:none;background:transparent;cursor:pointer;
  font-size:13px;font-weight:600;color:#5a6878;transition:background .15s,color .15s}
.tech-toggle-btn.active[b-hn51m6cm4u]{background:#0599e1;color:#fff}

/* ── Plant tag + skill chips on the card ─────────────────────────────────── */
.tech-plant[b-hn51m6cm4u]{
  display:inline-block;font-family:'JetBrains Mono',monospace;font-size:10.5px;
  letter-spacing:.04em;color:#5a6878;background:#eef2f8;border-radius:6px;
  padding:3px 8px;margin-bottom:10px}
.tech-chips[b-hn51m6cm4u]{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:4px;min-height:22px}
.tech-chip[b-hn51m6cm4u]{
  font-size:11px;color:#3a6ea5;background:#eaf3fb;border-radius:999px;padding:2px 9px;
  white-space:nowrap}
.tech-chip-cert[b-hn51m6cm4u]{color:#1f7a4d;background:#e6f6ee}   /* certifications stand out green */
.tech-chip-more[b-hn51m6cm4u]{color:var(--ink-4);background:#f1f3f7}

/* ── Table view ──────────────────────────────────────────────────────────── */
.tech-tablewrap[b-hn51m6cm4u]{background:#fff;border:1px solid #dce2ed;border-radius:16px;overflow:hidden}
.tech-table[b-hn51m6cm4u]{width:100%;border-collapse:collapse;font-size:13.5px}
.tech-table thead th[b-hn51m6cm4u]{
  text-align:left;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-4);font-weight:700;padding:12px 16px;border-bottom:1px solid #eaeef6}
.tech-table th.num[b-hn51m6cm4u],.tech-table td.num[b-hn51m6cm4u]{text-align:right;font-family:'JetBrains Mono',monospace}
.tech-table tbody td[b-hn51m6cm4u]{padding:12px 16px;border-bottom:1px solid #f2f4f8;color:#5a6878}
.tech-table tbody tr:last-child td[b-hn51m6cm4u]{border-bottom:none}
.tech-table tbody tr:hover[b-hn51m6cm4u]{background:#f7fafd}
.tech-td-name[b-hn51m6cm4u]{font-weight:600;color:#0e1726}

.tech-empty[b-hn51m6cm4u]{padding:48px;text-align:center;color:var(--ink-4);
  border:1px dashed #dce2ed;border-radius:16px;background:#fbfcfe}

/* Card-view "No rate set" warning: sits above the booked-hours block so a missing
   Labor_Rate (which silently zeroes this tech's WO labor cost) reads as an immediate flag. */
.tech-rate-warning[b-hn51m6cm4u]{margin-top:10px}

/* ── Pagination bar (shared by card + table view) ────────────────────────── */
.tech-pager[b-hn51m6cm4u]{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px 4px;font-size:13px;color:#5a6878;
  border-top:1px solid #eef0f5;margin-top:16px;
}
/* In table view the pager sits inside .tech-tablewrap — remove top margin there. */
.tech-tablewrap .tech-pager[b-hn51m6cm4u]{margin-top:0}
.tech-pager-info[b-hn51m6cm4u]{display:flex;align-items:center;gap:6px}
.tech-pager-size[b-hn51m6cm4u]{
  height:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  font-size:13px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
}
.tech-pager-btn[b-hn51m6cm4u]{
  height:28px;min-width:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  background:#fff;cursor:pointer;font-size:14px;color:#0e1726;line-height:1;
}
.tech-pager-btn:disabled[b-hn51m6cm4u]{opacity:0.35;cursor:default}
.tech-pager-btn:not(:disabled):hover[b-hn51m6cm4u]{border-color:#0599e1;color:#0599e1}
.tech-pager > .tech-pager-btn:first-of-type[b-hn51m6cm4u]{margin-left:auto}

/* Deliberately warning-toned: an unlinked technician silently receives nothing (Phase 3). */
.tech-login--none[b-hn51m6cm4u] { font-size: 11.5px; font-weight: 600; color: #b9770e; margin-top: 2px; }
.tech-login--linked[b-hn51m6cm4u] { font-size: 12px; color: #5a6878; }
/* /Components/Pages/WorkOrders.razor.rz.scp.css */
.wo-head[b-yr1kfurxib] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 16px;
}

.wo-title[b-yr1kfurxib] {
    font-size: 34px;
    font-weight: 800;
    color: #0e1726;
    margin: 0 0 4px;
}

.wo-subtitle[b-yr1kfurxib] {
    font-size: 15px;
    color: #5a6878;
    margin: 0;
}

.wo-new[b-yr1kfurxib] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    background: #0599e1;
    border: none;
    border-radius: 999px;
    padding: 10px 22px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s;
}

.wo-new:hover[b-yr1kfurxib] {
    background: #047ab5;
}

.wo-tabs[b-yr1kfurxib] {
    display: flex;
    gap: 8px;
    margin-bottom: 18px;
}

.wo-tab[b-yr1kfurxib] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: #5a6878;
    background: transparent;
    border: 1px solid #dce2ed;
    border-radius: 999px;
    padding: 6px 16px;
    cursor: pointer;
    transition: all 0.15s;
}

.wo-tab:hover[b-yr1kfurxib] {
    color: #0e1726;
    border-color: #b0bdd0;
}

.wo-tab.active[b-yr1kfurxib] {
    color: #fff;
    background: #0599e1;
    border-color: #0599e1;
}

/* Toolbar search/filter inputs (mirrors the Inventory page). */
.wo-filter[b-yr1kfurxib]{
  height:38px;padding:0 12px;border:1px solid #dce2ed;border-radius:10px;
  font-size:13.5px;color:#0e1726;background:#fff;cursor:pointer;outline:none;appearance:none;
}
.wo-filter:focus[b-yr1kfurxib]{border-color:#0599e1}

/* Plant dropdown gets the chevron arrow. */
select.wo-filter[b-yr1kfurxib]{
  padding-right:32px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235a6878' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:right 10px center;
}

/* Search input is wider and has no chevron. */
.wo-search[b-yr1kfurxib]{width:260px}

/* Sortable header. */
.wo-th-sort[b-yr1kfurxib]{cursor:pointer;user-select:none;white-space:nowrap}
.wo-th-sort:hover[b-yr1kfurxib]{color:#0599e1}
.wo-sort-icon[b-yr1kfurxib]{margin-left:4px;font-size:11px;color:#b0bac8;vertical-align:middle}
.wo-sort-active[b-yr1kfurxib]{color:#0599e1}

/* Pagination bar. */
.wo-pager[b-yr1kfurxib]{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px 4px;font-size:13px;color:#5a6878;
  border-top:1px solid #eef0f5;
}
.wo-pager-info[b-yr1kfurxib]{display:flex;align-items:center;gap:6px}
.wo-pager-size[b-yr1kfurxib]{
  height:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  font-size:13px;color:#0e1726;background:#fff;cursor:pointer;outline:none;
}
.wo-pager-btn[b-yr1kfurxib]{
  height:28px;min-width:28px;padding:0 8px;border:1px solid #dce2ed;border-radius:8px;
  background:#fff;cursor:pointer;font-size:14px;color:#0e1726;line-height:1;
}
.wo-pager-btn:disabled[b-yr1kfurxib]{opacity:0.35;cursor:default}
.wo-pager-btn:not(:disabled):hover[b-yr1kfurxib]{border-color:#0599e1;color:#0599e1}
.wo-pager > .wo-pager-btn:first-of-type[b-yr1kfurxib]{margin-left:auto}

/* Due-date cell. Colour is a secondary signal only -- the title attribute states the
   same thing in words, because colour alone fails for colour-blind users and in print. */
.wo-due[b-yr1kfurxib] { font-size: 12px; color: #5a6878; }
.wo-due--overdue[b-yr1kfurxib] { color: #c0392b; font-weight: 700; }
.wo-due--today[b-yr1kfurxib] { color: #b9770e; font-weight: 600; }
/* /Components/Pages/WorkOrdersDetail.razor.rz.scp.css */
/* Phase 6 Task 1: WO number + description leads the page; asset name moved to a subtitle line. */
.wod-title[b-jf635o5o5d] {
    font-size: 22px;
    font-weight: 700;
    color: #0e1726;
    margin: 0;
    display: flex;
    gap: 8px;
    align-items: baseline;
    min-width: 0;
}
.wod-title__no[b-jf635o5o5d] { font-family: 'JetBrains Mono', monospace; font-size: 15px; color: #0599e1; flex-shrink: 0; }
.wod-title__sep[b-jf635o5o5d] { color: #c3ccd6; flex-shrink: 0; }
/* Truncate rather than wrap: a multi-line header pushes the tabs below the fold. */
.wod-title__desc[b-jf635o5o5d] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wod-subtitle[b-jf635o5o5d] { font-size: 13px; color: #5a6878; margin-top: 4px; margin-bottom: 12px; }
.wod-problem[b-jf635o5o5d] {
    background: #f6f8fa;
    border-left: 3px solid #0599e1;
    padding: 12px 14px;
    border-radius: 6px;
    font-size: 14px;
    color: #0e1726;
    margin: 0 0 16px;
}
/* Failure Start / Reported Time: single datetime-local input + Now button, side by side. */
.wod-datetime[b-jf635o5o5d] { display: flex; align-items: center; gap: 8px; }
.wod-datetime .r360-input[b-jf635o5o5d] { flex: 1; }

/* Task 3: expired-permit safety banner -- deliberately louder than .wod-problem (red, bordered,
   bold) since this is a "work must not proceed" state, not informational context. */
.wod-permit-alert[b-jf635o5o5d] {
    background: #fdeaea;
    border: 1px solid #c0392b;
    color: #7a1f16;
    border-radius: 8px;
    padding: 12px 14px;
    font-size: 14px;
    font-weight: 600;
    margin: 0 0 16px;
}

/* Read-only facts strip: a wrap row of label/value pairs in one tidy card. */
.wod-meta[b-jf635o5o5d] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 32px;
    background: linear-gradient(180deg, #fbfdff 0%, #fff 100%);
    border: 1px solid #e3eaf2;
    border-radius: 14px;
    padding: 14px 18px;
    margin-bottom: 16px;
}
.wod-meta-item[b-jf635o5o5d] { display: flex; flex-direction: column; gap: 2px; }
.wod-meta-label[b-jf635o5o5d] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 10px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--ink-4);
}
.wod-meta-value[b-jf635o5o5d] { font-size: 14px; font-weight: 600; color: #0e1726; }
.wod-mono[b-jf635o5o5d] { font-family: 'JetBrains Mono', ui-monospace, monospace; }

/* Editable Info fields: responsive grid, each with a small label above the control. */
.wod-fields[b-jf635o5o5d] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
}
.wod-field[b-jf635o5o5d] { display: flex; flex-direction: column; }
.wod-field-label[b-jf635o5o5d] {
    font-size: 12px;
    color: var(--ink-4);
    margin-bottom: 4px;
}

/* Muted helper text under an editable field (e.g. the Asset selector's "Plant follows the asset"
   note). Small and low-contrast so it reads as guidance, not a validation error. */
.wod-field-hint[b-jf635o5o5d] {
    font-size: 11.5px;
    color: var(--ink-4);
    margin-top: 4px;
    line-height: 1.35;
}

/* Read-only Cause/Remedy preview under the Failure Code selector (Task 15 — structured
   failure-code taxonomy). Muted/small so it reads as reference info, not an editable field. */
.wod-failurecode-detail[b-jf635o5o5d] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 4px;
    font-size: 11px;
    color: var(--ink-4);
}
.wod-failurecode-detail strong[b-jf635o5o5d] {
    color: #5a6878;
    font-weight: 600;
}

/* Collapsible secondary section, styled to match .r360-card. */
.wod-collapse[b-jf635o5o5d] {
    margin-top: 16px;
    background: #fff;
    border: 1px solid #e6eaf0;
    border-radius: 16px;
    padding: 4px 18px;
}
.wod-collapse-head[b-jf635o5o5d] {
    list-style: none;
    cursor: pointer;
    font-weight: 600;
    color: #0e1726;
    padding: 12px 0;
    display: flex;
    align-items: center;
    gap: 8px;
    user-select: none;
}
.wod-collapse-head[b-jf635o5o5d]::-webkit-details-marker { display: none; }
/* Chevron that rotates when the panel is open. */
.wod-collapse-head[b-jf635o5o5d]::before {
    content: "▸";
    font-size: 12px;
    color: var(--ink-4);
    transition: transform 0.15s;
}
.wod-collapse[open] .wod-collapse-head[b-jf635o5o5d]::before { transform: rotate(90deg); }
.wod-collapse-body[b-jf635o5o5d] { padding: 0 0 14px; }

@media (max-width: 900px){
  .wod-head[b-jf635o5o5d]{flex-wrap:wrap;gap:8px}
  .wod-head .mud-tabs[b-jf635o5o5d]{--mud-tabs-min-width:auto}
  .r360-card[b-jf635o5o5d]{padding:12px}
}

/* Task 28 — clock in/out timer card on the Labor tab. Sits above the read-only Labor Entries
   table so a tech (or anyone whose signed-in name resolves to a Technician row) can start/stop
   their own timer without leaving the desktop WO detail page. */
.wod-timer-card[b-jf635o5o5d] {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #fbfdff;
    border: 1px solid #e3eaf2;
    border-radius: 14px;
    padding: 10px 14px;
    margin-bottom: 12px;
}
.wod-timer-running[b-jf635o5o5d] { color: #1F8A5B; font-weight: 600; font-size: 13px; }
.wod-timer-stop-btn[b-jf635o5o5d] { background: #C43521 !important; color: #fff !important; }
/* /Components/Shared/AssetBreadcrumb.razor.rz.scp.css */
.asset-breadcrumb[b-8xpuwaaxt6] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    margin-bottom: 12px;
    font-size: 13px;
}

.asset-breadcrumb a[b-8xpuwaaxt6] {
    color: #0599e1;
    text-decoration: none;
}

.bc-sep[b-8xpuwaaxt6] {
    color: var(--ink-4);
}

.bc-current[b-8xpuwaaxt6] {
    color: #0e1726;
    font-weight: 600;
}
/* /Components/Shared/AttachmentPanel.razor.rz.scp.css */
/* Branded upload button. The real <input type=file> (rendered by InputFile as .ap-input)
   is hidden; clicking the styled label opens the file picker. */
.ap-upload[b-ql45p3e0zd] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 16px;
    background: #0599e1;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    border-radius: 9px;
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(5, 153, 225, 0.3);
    transition: background 0.15s, box-shadow 0.15s;
}
.ap-upload:hover[b-ql45p3e0zd] {
    background: #047ab5;
    box-shadow: 0 3px 10px rgba(5, 153, 225, 0.4);
}
.ap-upload-icon[b-ql45p3e0zd] { font-size: 16px; line-height: 1; font-weight: 400; }

/* Hide the native file input but keep it operable via the wrapping label.
   InputFile renders its own <input> (a framework component), so its element does NOT
   receive this component's scope attribute — a plain `.ap-input` selector misses it.
   `::deep` pierces into child-component output to match the rendered input. */
.ap-upload[b-ql45p3e0zd]  input[type=file] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
}

.ap-hint[b-ql45p3e0zd] {
    display: inline-block;
    margin-left: 10px;
    font-size: 12px;
    color: var(--ink-4);
    vertical-align: middle;
}
/* /Components/Shared/Btn.razor.rz.scp.css */
.r360-btn[b-xhmdvlae2c] {
    border-radius: 12px !important;
    border: none;
    cursor: pointer;
    font-family: 'Helvetica LT', 'Helvetica Neue', Helvetica, sans-serif !important;
    font-weight: 600 !important;
    font-size: 14px !important;
    min-width: 60px !important;
    height: 36px !important;
    padding: 9px 16px !important;
    line-height: 1;
}

.r360-btn--primary[b-xhmdvlae2c] {
    background: #0599e1 !important;
    color: #fff !important;
}

.r360-btn--ghost[b-xhmdvlae2c] {
    background: #fff !important;
    border: 1px solid #dce2ed !important;
    color: #0e1726 !important;
}

.r360-btn--danger[b-xhmdvlae2c] {
    background: #c0392b !important;
    color: #fff !important;
}
.r360-btn--danger:disabled[b-xhmdvlae2c] {
    background: #e3b3ac !important;
    cursor: not-allowed;
}
/* /Components/Shared/BudgetBar.razor.rz.scp.css */
.budgetbar[b-fsrkeute97] {
    position: relative;
    height: 18px;
    border-radius: 9px;
    background: #eef1f5;
    overflow: hidden;
}
.budgetbar__fill[b-fsrkeute97] {
    height: 100%;
    border-radius: 9px 0 0 9px;
}
.budgetbar__label[b-fsrkeute97] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 600;
    color: #2a2f37;
}
.budgetbar--under .budgetbar__fill[b-fsrkeute97]    { background: #4caf50; }  /* green: under budget */
.budgetbar--balanced .budgetbar__fill[b-fsrkeute97] { background: #f0ad4e; }  /* amber: tracking the plan */
.budgetbar--over .budgetbar__fill[b-fsrkeute97]     { background: #e25c5c; }  /* red: over budget */
/* /Components/Shared/CapacityBar.razor.rz.scp.css */
.capbar[b-y58nyas5ue] {
    position: relative;
    height: 18px;
    border-radius: 9px;
    background: #eef1f5;
    overflow: hidden;
}
.capbar__fill[b-y58nyas5ue] {
    height: 100%;
    border-radius: 9px 0 0 9px;
}
.capbar__label[b-y58nyas5ue] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 600;
    color: #2a2f37;
}
.capbar--under .capbar__fill[b-y58nyas5ue]    { background: #4caf50; }  /* green: spare capacity */
.capbar--balanced .capbar__fill[b-y58nyas5ue] { background: #f0ad4e; }  /* amber: comfortably loaded */
.capbar--over .capbar__fill[b-y58nyas5ue]     { background: #e25c5c; }  /* red: over-allocated */
/* /Components/Shared/Card.razor.rz.scp.css */
.r360-card[b-3u3vtofrvy] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    padding: 24px;
}

.r360-card--dark[b-3u3vtofrvy] {
    background: #0a2540;
    border-color: transparent;
    color: #fff;
}

.r360-card--flush[b-3u3vtofrvy] {
    border-radius: 0;
    padding: 12px 16px;
}

.r360-card--flush + .r360-card--flush[b-3u3vtofrvy] {
    border-top: 1px solid #ebeff5;
}
/* /Components/Shared/CsvImportExportBar.razor.rz.scp.css */
/* Branded "Import CSV" upload button — visually matches Btn's Ghost variant (white background,
   light border) but defined here rather than reusing Btn.razor.css's .r360-btn--ghost class,
   because Blazor scoped CSS only applies within the component that declares it; a raw <label>
   in this component would not pick up Btn.razor's scope attribute. Same approach as
   AttachmentPanel.razor.css's .ap-upload. */
.cie-upload[b-arh21ve9ef] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 16px;
    background: #fff;
    border: 1px solid #dce2ed;
    color: #0e1726;
    font-family: 'Helvetica LT', 'Helvetica Neue', Helvetica, sans-serif;
    font-weight: 600;
    font-size: 14px;
    border-radius: 12px;
    cursor: pointer;
    line-height: 1;
    transition: background 0.15s, border-color 0.15s;
}
.cie-upload:hover[b-arh21ve9ef] {
    background: #f4f7fb;
    border-color: #c3cddc;
}

/* Hide the native file input but keep it operable via the wrapping label. InputFile renders its
   own <input> (a framework component), so its element does NOT receive this component's scope
   attribute — a plain `input[type=file]` selector misses it. `::deep` pierces into
   child-component output to match the rendered input. */
.cie-upload[b-arh21ve9ef]  input[type=file] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
}
/* /Components/Shared/DataMapBody.razor.rz.scp.css */
.dm-head[b-9tmrmshuvt]{margin-bottom:18px}
.dm-kicker[b-9tmrmshuvt]{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.16em;color:#9aa3b2}
.dm-title[b-9tmrmshuvt]{font-size:20px;font-weight:700;color:#1f2733;margin-top:4px}
.dm-sub[b-9tmrmshuvt]{font-size:13px;color:#5b6472;margin-top:6px;line-height:1.4}
.dm-card[b-9tmrmshuvt]{border:1px solid #dce2ed;border-radius:14px;padding:14px;margin-bottom:12px}
.dm-card-top[b-9tmrmshuvt]{display:flex;align-items:center;justify-content:space-between;gap:10px}
.dm-table[b-9tmrmshuvt]{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:#1f2733}
.dm-badge[b-9tmrmshuvt]{font-family:'JetBrains Mono',monospace;font-size:10.5px;background:#eaf6fd;color:#0599e1;
  border-radius:6px;padding:3px 8px;white-space:nowrap}
/* /Components/Shared/DataRow.razor.rz.scp.css */
.r360-datarow[b-o9sbddx4rk] {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 12px;
    padding: 11px 22px;
    align-items: center;
    border-top: 1px solid #ebeff5;
}

.r360-datarow:first-child[b-o9sbddx4rk] {
    border-top: none;
}

.r360-datarow__label[b-o9sbddx4rk] {
    font-size: 12.5px;
    font-weight: 500;
    color: var(--ink-4);
    letter-spacing: 0.01em;
}

.r360-datarow__value[b-o9sbddx4rk] {
    display: flex;
    gap: 8px;
    align-items: center;
    font-size: 13px;
    font-weight: 600;
    color: #0e1726;
}
/* /Components/Shared/FailureCodeCard.razor.rz.scp.css */
/* src/Reliability360.Web/Components/Shared/FailureCodeCard.razor.css */
.fcc-card[b-qhtrppw5gn] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 16px;
    padding: 20px 22px 22px;
}

.fcc-head[b-qhtrppw5gn] { margin-bottom: 12px; }

.fcc-title[b-qhtrppw5gn] { font-weight: 700; font-size: 16px; color: #0e1726; }

.fcc-sub[b-qhtrppw5gn] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    margin-top: 3px;
}

.fcc-rowgroup[b-qhtrppw5gn] {
    border-bottom: 1px solid #ebeff5;
}

.fcc-rowgroup .fcc-row[b-qhtrppw5gn] {
    border-bottom: none;
}

.fcc-row[b-qhtrppw5gn] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 2px;
    border-bottom: 1px solid #ebeff5;
}

/* Cause/Remedy inputs shown under the main row while adding/editing a code. */
.fcc-detailrow[b-qhtrppw5gn] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 2px 9px;
}

.fcc-input-detail[b-qhtrppw5gn] {
    flex: 1;
    font-size: 12px;
}

/* Read-only Cause/Remedy preview shown under a code's row when it has either set. */
.fcc-detailpreview[b-qhtrppw5gn] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 16px;
    padding: 0 2px 9px 82px;
    font-size: 12px;
    color: var(--ink-4);
    cursor: text;
}

.fcc-detailpreview strong[b-qhtrppw5gn] {
    color: #5a6878;
    font-weight: 600;
}

.fcc-code[b-qhtrppw5gn] {
    flex: 0 0 70px;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 13px;
    font-weight: 600;
    color: #0e1726;
    cursor: text;
}

.fcc-desc[b-qhtrppw5gn] {
    flex: 1;
    font-size: 13px;
    color: var(--ink-4);
    cursor: text;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fcc-input[b-qhtrppw5gn] {
    font-size: 14px;
    font-family: inherit;
    color: #0e1726;
    border: 1px solid #0599e1;
    border-radius: 8px;
    padding: 6px 10px;
    outline: none;
}

.fcc-input-code[b-qhtrppw5gn] { flex: 0 0 70px; font-family: 'JetBrains Mono', ui-monospace, monospace; }
.fcc-input-desc[b-qhtrppw5gn] { flex: 1; }

.fcc-iconbtn[b-qhtrppw5gn] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #b9c3d1;
    font-size: 13px;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 6px;
    opacity: 0;
    transition: opacity .12s, color .12s, background .12s;
    flex-shrink: 0;
}

.fcc-row:hover .fcc-iconbtn[b-qhtrppw5gn],
.fcc-addrow .fcc-iconbtn[b-qhtrppw5gn] {
    opacity: 1;
}

.fcc-iconbtn:hover[b-qhtrppw5gn] {
    background: #f0f3f8;
    color: #5a6878;
}

.fcc-del:hover[b-qhtrppw5gn] {
    color: #c43521;
    background: #fbdcd7;
}

.fcc-save[b-qhtrppw5gn] {
    color: #1f8a5b;
    opacity: 1;
}

.fcc-save:hover[b-qhtrppw5gn] {
    background: #d8f1e3;
    color: #1f8a5b;
}

.fcc-addrow[b-qhtrppw5gn] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
}

.fcc-add[b-qhtrppw5gn] {
    margin-top: 12px;
    width: 100%;
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-weight: 600;
    font-size: 14px;
    padding: 11px;
    border-radius: 10px;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.fcc-add:hover[b-qhtrppw5gn] {
    background: #f3f8fd;
    border-color: #0599e1;
}
/* /Components/Shared/Field.razor.rz.scp.css */
.r360-field[b-0omftlb909] {
    margin-bottom: 12px;
}

.r360-field__label[b-0omftlb909] {
    display: block;
    font-family: 'Helvetica LT', 'Helvetica Neue', Helvetica, sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #0e1726;
    margin-bottom: 4px;
}

.r360-field__input[b-0omftlb909] {
    width: 100%;
    padding: 11px 13px;
    border: 1.5px solid #dce2ed;
    border-radius: 10px;
    font-family: inherit;
    font-size: 14px;
    color: #0e1726;
    background: #fff;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.r360-field__input:focus[b-0omftlb909] {
    border-color: #0599e1;
    box-shadow: 0 0 0 4px rgba(5, 153, 225, 0.15);
}
/* /Components/Shared/GlobalSearch.razor.rz.scp.css */
/* Global jump-to search, embedded in PageHeader.razor between the breadcrumb and the right-side
   actions. flex:1 lets it absorb the empty middle space in the header's flex row (the header is
   display:flex + justify-content:space-between with three other fixed-size children -- an
   auto-growing middle child eats the leftover width instead of leaving three separated gaps). */
.gs[b-ys07c1jbtr]{position:relative;flex:1 1 auto;display:flex;justify-content:center;min-width:0;margin:0 24px}

.gs-input[b-ys07c1jbtr]{width:100%;max-width:420px;height:34px;border:1px solid #dce2ed;border-radius:8px;
  padding:0 12px;font-size:13px;color:#1f2733;background:#f7f8fa}
.gs-input[b-ys07c1jbtr]::placeholder{color:#9aa3b2}
.gs-input:focus[b-ys07c1jbtr]{outline:none;border-color:#0599e1;background:#fff}

.gs-results[b-ys07c1jbtr]{position:absolute;top:40px;left:50%;transform:translateX(-50%);width:100%;
  max-width:420px;background:#fff;border:1px solid #dce2ed;border-radius:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.08);max-height:320px;overflow-y:auto;z-index:40}
.gs-result[b-ys07c1jbtr]{display:flex;align-items:center;gap:10px;padding:8px 12px;text-decoration:none;
  color:#1f2733;font-size:13px;border-bottom:1px solid #f0f2f6}
.gs-result:last-child[b-ys07c1jbtr]{border-bottom:none}
.gs-result:hover[b-ys07c1jbtr]{background:#f0f4fa}
.gs-result__kind[b-ys07c1jbtr]{flex:0 0 auto;font-family:'JetBrains Mono',monospace;font-size:10px;
  text-transform:uppercase;letter-spacing:.08em;color:#9aa3b2;min-width:64px}
.gs-result__label[b-ys07c1jbtr]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Tablet tier (<= 1200px, see app.css's "Viewport tiers" comment): the sidebar becomes a drawer
   and the hamburger appears, so give the search box back some of the room it took at desktop
   width instead of forcing the header to overflow or the actions to wrap. */
@media (max-width:1200px){
  .gs[b-ys07c1jbtr]{margin:0 12px}
  .gs-input[b-ys07c1jbtr]{max-width:220px}
}

/* Phone tier (<= 900px, matches PageHeader.razor.css's own breakpoint for dropping the
   breadcrumb/DB badge/data-mapping chrome): shrink further rather than hide outright -- unlike
   the breadcrumb, jump-to search is still a useful affordance on a narrow desktop-chassis
   browser window (the dedicated field-tech mobile flow uses its own Today/Job/MyAssets/Me
   layout, not this header, so this rule is really about a narrow desktop window, not a phone). */
@media (max-width:900px){
  .gs[b-ys07c1jbtr]{margin:0 8px}
  .gs-input[b-ys07c1jbtr]{max-width:140px;font-size:12px}
  .gs-results[b-ys07c1jbtr]{max-width:260px}
}
/* /Components/Shared/KitCard.razor.rz.scp.css */
/* src/Reliability360.Web/Components/Shared/KitCard.razor.css */
.kc-card[b-62cfcu0rht] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 16px;
    padding: 20px 22px 22px;
}

.kc-head[b-62cfcu0rht] { margin-bottom: 12px; }

.kc-title[b-62cfcu0rht] { font-weight: 700; font-size: 16px; color: #0e1726; }

.kc-sub[b-62cfcu0rht] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    margin-top: 3px;
}

.kc-rowgroup[b-62cfcu0rht] {
    border-bottom: 1px solid #ebeff5;
}

.kc-rowgroup .kc-row[b-62cfcu0rht] {
    border-bottom: none;
}

.kc-row[b-62cfcu0rht] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 2px;
    border-bottom: 1px solid #ebeff5;
}

.kc-name[b-62cfcu0rht] {
    flex: 0 0 160px;
    font-size: 14px;
    font-weight: 600;
    color: #0e1726;
    cursor: pointer;
}

.kc-desc[b-62cfcu0rht] {
    flex: 1;
    font-size: 13px;
    color: var(--ink-4);
    cursor: pointer;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kc-count[b-62cfcu0rht] {
    flex: 0 0 auto;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    cursor: pointer;
}

.kc-input[b-62cfcu0rht] {
    font-size: 14px;
    font-family: inherit;
    color: #0e1726;
    border: 1px solid #0599e1;
    border-radius: 8px;
    padding: 6px 10px;
    outline: none;
}

.kc-input-name[b-62cfcu0rht] { flex: 0 0 200px; }
.kc-input-desc[b-62cfcu0rht] { flex: 1; }
.kc-input-qty[b-62cfcu0rht] { flex: 0 0 70px; }

.kc-iconbtn[b-62cfcu0rht] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #b9c3d1;
    font-size: 13px;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 6px;
    opacity: 0;
    transition: opacity .12s, color .12s, background .12s;
    flex-shrink: 0;
}

.kc-row:hover .kc-iconbtn[b-62cfcu0rht],
.kc-editactions .kc-iconbtn[b-62cfcu0rht],
.kc-linerow .kc-iconbtn[b-62cfcu0rht] {
    opacity: 1;
}

.kc-iconbtn:hover[b-62cfcu0rht] {
    background: #f0f3f8;
    color: #5a6878;
}

.kc-del:hover[b-62cfcu0rht] {
    color: #c43521;
    background: #fbdcd7;
}

.kc-save[b-62cfcu0rht] {
    color: #1f8a5b;
    opacity: 1;
    font-weight: 600;
    padding: 6px 12px;
}

.kc-save:hover[b-62cfcu0rht] {
    background: #d8f1e3;
    color: #1f8a5b;
}

/* Inline editor (name/description + line-by-line part/qty rows) shown while adding or editing a kit. */
.kc-editor[b-62cfcu0rht] {
    padding: 12px 2px 16px;
    border-bottom: 1px solid #ebeff5;
}

.kc-editor--new[b-62cfcu0rht] {
    margin-top: 12px;
    border: 1px dashed #c7d0de;
    border-radius: 10px;
    padding: 14px;
}

.kc-editrow[b-62cfcu0rht] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.kc-linerow[b-62cfcu0rht] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.kc-addline[b-62cfcu0rht] {
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-size: 12px;
    font-weight: 600;
    padding: 6px 10px;
    border-radius: 8px;
    cursor: pointer;
    margin-bottom: 10px;
}

.kc-addline:hover[b-62cfcu0rht] {
    background: #f3f8fd;
    border-color: #0599e1;
}

.kc-editactions[b-62cfcu0rht] {
    display: flex;
    gap: 8px;
    margin-top: 4px;
}

.kc-add[b-62cfcu0rht] {
    margin-top: 12px;
    width: 100%;
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-weight: 600;
    font-size: 14px;
    padding: 11px;
    border-radius: 10px;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.kc-add:hover[b-62cfcu0rht] {
    background: #f3f8fd;
    border-color: #0599e1;
}
/* /Components/Shared/LookupTableCard.razor.rz.scp.css */
.lk-card[b-o4ejboxget] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 16px;
    padding: 20px 22px 22px;
    display: flex;
    flex-direction: column;
    height: 100%;
}

.lk-head[b-o4ejboxget] {
    margin-bottom: 12px;
}

.lk-title[b-o4ejboxget] {
    font-weight: 700;
    font-size: 16px;
    color: #0e1726;
}

.lk-sub[b-o4ejboxget] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    margin-top: 3px;
}

.lk-rows[b-o4ejboxget] {
    flex: 1;
}

.lk-row[b-o4ejboxget] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 2px;
    border-bottom: 1px solid #ebeff5;
}

.lk-num[b-o4ejboxget] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 12px;
    color: #b9c3d1;
    width: 16px;
    flex-shrink: 0;
}

.lk-name[b-o4ejboxget] {
    flex: 1;
    font-size: 14px;
    color: #0e1726;
    cursor: text;
    border-radius: 6px;
    padding: 2px 4px;
    margin: -2px -4px;
}

.lk-name:hover[b-o4ejboxget] {
    background: #f5f7fb;
}

.lk-input[b-o4ejboxget] {
    flex: 1;
    font-size: 14px;
    font-family: inherit;
    color: #0e1726;
    border: 1px solid #0599e1;
    border-radius: 8px;
    padding: 6px 10px;
    outline: none;
}

.lk-iconbtn[b-o4ejboxget] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #b9c3d1;
    font-size: 13px;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 6px;
    opacity: 0;
    transition: opacity .12s, color .12s, background .12s;
}

.lk-row:hover .lk-iconbtn[b-o4ejboxget],
.lk-addrow .lk-iconbtn[b-o4ejboxget] {
    opacity: 1;
}

.lk-iconbtn:hover[b-o4ejboxget] {
    background: #f0f3f8;
    color: #5a6878;
}

.lk-del:hover[b-o4ejboxget] {
    color: #c43521;
    background: #fbdcd7;
}

.lk-save[b-o4ejboxget] {
    color: #1f8a5b;
    opacity: 1;
}

.lk-save:hover[b-o4ejboxget] {
    background: #d8f1e3;
    color: #1f8a5b;
}

.lk-addrow[b-o4ejboxget] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
}

.lk-add[b-o4ejboxget] {
    margin-top: 12px;
    width: 100%;
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-weight: 600;
    font-size: 14px;
    padding: 11px;
    border-radius: 10px;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.lk-add:hover[b-o4ejboxget] {
    background: #f3f8fd;
    border-color: #0599e1;
}

.lk-lock[b-o4ejboxget] {
    font-size: 12px;
    color: #b9c3d1;
    padding: 4px 6px;
    line-height: 1;
}
/* /Components/Shared/MobileJobCard.razor.rz.scp.css */
/* Tappable work-order card. The left rail color is set inline (border-left-color) from the
   priority; here we only set width/style and the rest of the card chrome. */
.mjc[b-3lb4dnrwh9] {
    background: var(--paper);
    border: 1px solid var(--line);
    border-left: 4px solid var(--pri-medium);
    border-radius: var(--r-lg);
    padding: 12px 14px;
    cursor: pointer;
}

.mjc-top[b-3lb4dnrwh9] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.mjc-no[b-3lb4dnrwh9] {
    font-family: var(--f-mono);
    font-size: 12px;
    color: var(--brand);
}

/* Pushes the priority pill to the right edge. */
.mjc-spacer[b-3lb4dnrwh9] { flex: 1; }

.mjc-title[b-3lb4dnrwh9] {
    font-size: 14px;
    font-weight: 600;
    color: var(--ink);
    margin-top: 6px;
}

.mjc-asset[b-3lb4dnrwh9] {
    font-size: 12px;
    color: var(--ink-4);
    margin-top: 2px;
    font-family: var(--f-mono);
}
/* /Components/Shared/MobilePhotoPanel.razor.rz.scp.css */
.mpp[b-oyeh4okjmk] { display: flex; flex-direction: column; gap: 10px; }

.mpp-grid[b-oyeh4okjmk] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
    gap: 8px;
}

.mpp-thumb[b-oyeh4okjmk] {
    aspect-ratio: 1 / 1;
    border-radius: var(--r-sm);
    background-size: cover;
    background-position: center;
    border: 1px solid var(--line);
    display: block;
}

/* The real <input> is hidden; the label is the styled "Take photo" button. */
.mpp-input[b-oyeh4okjmk] { display: none; }

.mpp-take[b-oyeh4okjmk] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 11px;
    border: 1.5px dashed var(--line-strong);
    border-radius: var(--r-md);
    color: var(--brand);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
}

.mpp-take-ico[b-oyeh4okjmk] { font-size: 16px; }
/* /Components/Shared/MoreSheet.razor.rz.scp.css */
/* The overlay itself (.scrim backdrop + .sheet panel + .sheet__grabber handle) reuses the
   existing "Side drawer / sheet" design-system block in app.css -- that gives this sheet the
   real --paper background, 24px radius, --line grabber colour, and the app's r360sheet slide-up
   entrance animation for free, instead of a parallel hand-rolled implementation with near-miss
   values. Only the tappable list row below has no existing design-system equivalent yet.

   z-index: .scrim already sits at z-index:80 in app.css, comfortably above .r360-tabbar's
   z-index:30, so the sheet renders above the tab bar and isn't obscured by (or click-through to)
   it -- no extra z-index rule needed here. */

/* >= 44px tall: this is a gloved-thumb target list. Full-bleed within .sheet's own inset padding
   (20px 18px 30px), so rows still read as a single flush list even though the sheet panel itself
   isn't edge-to-edge with the screen. */
.ms-item[b-drx6b1wd40] {
    display: block;
    padding: 14px 6px;
    min-height: 44px;
    font-size: 15px;
    color: var(--ink);
    text-decoration: none;
    border-bottom: 1px solid var(--line-soft);
}

.ms-item:last-child[b-drx6b1wd40] {
    border-bottom: none;
}
/* /Components/Shared/PageHeader.razor.rz.scp.css */
.r360-pageheader[b-rq7yza5evt]{height:56px;display:flex;align-items:center;justify-content:space-between;
  padding:0 26px;border-bottom:1px solid #dce2ed;background:#fff;flex-shrink:0}
.ph-crumb[b-rq7yza5evt]{display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;
  font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:#9aa3b2}
.ph-group[b-rq7yza5evt]{color:#9aa3b2}
.ph-current[b-rq7yza5evt]{color:#1f2733;font-weight:600}
.ph-actions[b-rq7yza5evt]{display:flex;align-items:center;gap:14px}
.ph-dbbadge[b-rq7yza5evt]{display:flex;align-items:center;gap:7px;font-family:'JetBrains Mono',monospace;
  font-size:11px;color:#5b6472}
.ph-dot[b-rq7yza5evt]{width:7px;height:7px;border-radius:999px;background:#2bb673}
.ph-datamap[b-rq7yza5evt]{display:flex;align-items:center;gap:7px;background:#0599e1;color:#fff;border:none;
  border-radius:9px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer}

/* "+ New work order" quick-create link. Styled like .ph-datamap's existing blue pill so it reads
   as part of the same header action language rather than a foreign element -- it's a plain <a>
   (not a <button>) since it just navigates and needs no interactivity of its own. */
.ph-newwo[b-rq7yza5evt]{display:flex;align-items:center;gap:7px;background:#0599e1;color:#fff;border:none;
  border-radius:9px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;
  text-decoration:none;white-space:nowrap}
.ph-newwo:hover[b-rq7yza5evt]{background:#047ebd}

/* Mobile: drop dev chrome (breadcrumb, DB badge, data-mapping) so the bar
   doesn't crowd. Page <h1> already names the screen. View-as + bell stay. */
@media (max-width:900px){
  .r360-pageheader[b-rq7yza5evt]{padding:0 14px;gap:10px}
  .ph-crumb[b-rq7yza5evt],.ph-dbbadge[b-rq7yza5evt],.ph-datamap[b-rq7yza5evt]{display:none}
  .ph-actions[b-rq7yza5evt]{gap:10px;margin-left:auto}
}
/* /Components/Shared/Pill.razor.rz.scp.css */
.pill[b-mizvkqqg9z] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}

.pill--success[b-mizvkqqg9z] {
    background: #d8f1e3;
    color: #157349;
}

.pill--success .pill__dot[b-mizvkqqg9z] {
    background: #157349;
}

.pill--warning[b-mizvkqqg9z] {
    background: #ffeec7;
    color: #8f5c00;
}

.pill--warning .pill__dot[b-mizvkqqg9z] {
    background: #8f5c00;
}

.pill--danger[b-mizvkqqg9z] {
    background: #fbdcd7;
    color: #b32e1c;
}

.pill--danger .pill__dot[b-mizvkqqg9z] {
    background: #b32e1c;
}

.pill--info[b-mizvkqqg9z] {
    background: #d6efff;
    color: #036fa8;
}

.pill--info .pill__dot[b-mizvkqqg9z] {
    background: #036fa8;
}

.pill--neutral[b-mizvkqqg9z] {
    background: #eaeef6;
    color: #2c3a4f;
}

.pill__dot[b-mizvkqqg9z] {
    width: 6px;
    height: 6px;
    border-radius: 999px;
}
/* /Components/Shared/ReportCard.razor.rz.scp.css */
/* Report catalog card. Rendered as an anchor, so link defaults are reset explicitly. */
.report-card[b-5n1z3m3n5l] {
    display: block;
    text-decoration: none;
    background: var(--paper, #fff);
    border: 1px solid var(--line, #dce2ed);
    border-radius: 16px;
    padding: 18px;
    transition: transform 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
}

.report-card:hover[b-5n1z3m3n5l] {
    transform: translateY(-2px);
    border-color: #0599e1;
    box-shadow: 0 6px 18px rgba(10, 37, 64, 0.08);
}

/* Keyboard users get the same affordance as the hover state. */
.report-card:focus-visible[b-5n1z3m3n5l] {
    outline: 2px solid #0599e1;
    outline-offset: 2px;
}

.report-card__title[b-5n1z3m3n5l] {
    font-weight: 700;
    font-size: 15.5px;
    color: #0e1726;
    margin-bottom: 4px;
}

.report-card__question[b-5n1z3m3n5l] {
    font-size: 12.5px;
    /* Accessibility audit [A3]: was hardcoded #8b97a8 (2.96:1 on white) instead of referencing the
       app-wide --ink-4 token -- real content (report subtext), needs 4.5:1. */
    color: var(--ink-4);
    line-height: 1.4;
}

/* Live figure. Reserves its line whether or not a number is present yet. */
.report-card__headline[b-5n1z3m3n5l] {
    display: inline-block;
    margin-top: 12px;
    font-weight: 600;
    font-size: 12.5px;
    color: #0a2540;
    background: #eef2f8;
    border-radius: 999px;
    padding: 3px 10px;
    min-width: 90px;
}

/* Pending: same box, shimmering, no text. */
.report-card__headline--pending[b-5n1z3m3n5l] {
    color: transparent;
    background: linear-gradient(90deg, #eef2f8 25%, #e3e9f2 37%, #eef2f8 63%);
    background-size: 400% 100%;
    animation: report-card-shimmer-b-5n1z3m3n5l 1.4s ease infinite;
}

@keyframes report-card-shimmer-b-5n1z3m3n5l {
    0% { background-position: 100% 50%; }
    100% { background-position: 0 50%; }
}

/* Users who ask for less motion get a static placeholder. */
@media (prefers-reduced-motion: reduce) {
    .report-card__headline--pending[b-5n1z3m3n5l] { animation: none; }
}
/* /Components/Shared/ReportShell.razor.rz.scp.css */
.report-shell[b-en46jwpuai] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 20px;
    padding: 22px;
    margin-top: 18px;
}

.report-shell-title[b-en46jwpuai] {
    font-weight: 700;
    font-size: 17px;
    letter-spacing: -0.02em;
    color: #0e1726;
    margin-bottom: 14px;
}

.report-msg[b-en46jwpuai] {
    font-size: 13px;
    color: var(--ink-4);
    padding: 24px 0;
    text-align: center;
}

.report-alert[b-en46jwpuai] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: #fdecea;
    border: 1px solid #f5c2bd;
    color: #c43521;
    border-radius: 12px;
    padding: 14px 16px;
    font-size: 13px;
}

.report-retry[b-en46jwpuai] {
    border: 1px solid #c43521;
    background: #fff;
    color: #c43521;
    border-radius: 8px;
    padding: 6px 14px;
    font-size: 12.5px;
    font-weight: 600;
    cursor: pointer;
}

.report-retry:hover[b-en46jwpuai] {
    background: #c43521;
    color: #fff;
}

/* Empty state: what there isn't, why, and where to go. Centred and quiet -- it is information,
   not an error. */
.report-empty[b-en46jwpuai] {
    text-align: center;
    padding: 44px 24px;
    color: #5a6a7e;
}

.report-empty__msg[b-en46jwpuai] { font-size: 15px; font-weight: 600; color: #0e1726; margin: 0 0 6px; }
.report-empty__action[b-en46jwpuai] { font-size: 13px; color: var(--ink-4); margin: 0 0 14px; max-width: 46ch; display: inline-block; }

.report-empty__link[b-en46jwpuai] {
    display: inline-block;
    font-size: 13px;
    font-weight: 600;
    color: #0599e1;
    text-decoration: none;
    border: 1px solid #cfe4f5;
    border-radius: 999px;
    padding: 6px 16px;
}
.report-empty__link:hover[b-en46jwpuai] { background: #f2f9fe; }
/* /Components/Shared/StatCard.razor.rz.scp.css */
.statcard[b-47qyr27zu3] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-height: 118px;
    background: var(--paper);
    border: 1px solid var(--line);
    border-radius: 20px;
    padding: 22px;
}

.statcard__eyebrow[b-47qyr27zu3] {
    font-family: 'JetBrains Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #5a6878;
}

.statcard__value[b-47qyr27zu3] {
    font-family: 'Helvetica LT', 'Helvetica Neue', Helvetica, sans-serif;
    font-weight: 700;
    font-size: 38px;
    line-height: 1;
    letter-spacing: -0.03em;
    color: #0e1726;
}

.statcard__unit[b-47qyr27zu3] {
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    color: var(--ink-4);
}

.statcard__sub[b-47qyr27zu3] {
    font-size: 13px;
    line-height: 18px;
    color: #5a6878;
}
/* /Components/Shared/TypeBadge.razor.rz.scp.css */
/* src/Reliability360.Web/Components/Shared/TypeBadge.razor.css */
.type-badge[b-matcymrw3v] {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}
/* /Components/Shared/WorkOrderTypeCard.razor.rz.scp.css */
/* src/Reliability360.Web/Components/Shared/WorkOrderTypeCard.razor.css */
.wtc-card[b-yzgqad0h2r] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 16px;
    padding: 20px 22px 22px;
}

.wtc-head[b-yzgqad0h2r] { margin-bottom: 12px; }

.wtc-title[b-yzgqad0h2r] { font-weight: 700; font-size: 16px; color: #0e1726; }

.wtc-sub[b-yzgqad0h2r] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    margin-top: 3px;
}

.wtc-row[b-yzgqad0h2r] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 2px;
    border-bottom: 1px solid #ebeff5;
}

.wtc-swatch[b-yzgqad0h2r] {
    width: 18px;
    height: 18px;
    border-radius: 5px;
    border: 1px solid #dce2ed;
    flex-shrink: 0;
    cursor: pointer;
}

.wtc-name[b-yzgqad0h2r] {
    flex: 0 0 160px;
    font-size: 14px;
    color: #0e1726;
    cursor: text;
}

.wtc-desc[b-yzgqad0h2r] {
    flex: 1;
    font-size: 13px;
    color: var(--ink-4);
    cursor: text;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.wtc-lock[b-yzgqad0h2r] {
    opacity: .55;
    flex-shrink: 0;
}

.wtc-input[b-yzgqad0h2r] {
    font-size: 14px;
    font-family: inherit;
    color: #0e1726;
    border: 1px solid #0599e1;
    border-radius: 8px;
    padding: 6px 10px;
    outline: none;
}

.wtc-input-name[b-yzgqad0h2r] { flex: 0 0 160px; }
.wtc-input-desc[b-yzgqad0h2r] { flex: 1; }

.wtc-iconbtn[b-yzgqad0h2r] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #b9c3d1;
    font-size: 13px;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 6px;
    opacity: 0;
    transition: opacity .12s, color .12s, background .12s;
    flex-shrink: 0;
}

.wtc-row:hover .wtc-iconbtn[b-yzgqad0h2r],
.wtc-addrow .wtc-iconbtn[b-yzgqad0h2r] {
    opacity: 1;
}

.wtc-iconbtn:disabled[b-yzgqad0h2r] {
    opacity: .3 !important;
    cursor: not-allowed;
}

.wtc-iconbtn:hover:not(:disabled)[b-yzgqad0h2r] {
    background: #f0f3f8;
    color: #5a6878;
}

.wtc-del:hover:not(:disabled)[b-yzgqad0h2r] {
    color: #c43521;
    background: #fbdcd7;
}

.wtc-save[b-yzgqad0h2r] {
    color: #1f8a5b;
    opacity: 1;
}

.wtc-save:hover[b-yzgqad0h2r] {
    background: #d8f1e3;
    color: #1f8a5b;
}

.wtc-addrow[b-yzgqad0h2r] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
}

.wtc-add[b-yzgqad0h2r] {
    margin-top: 12px;
    width: 100%;
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-weight: 600;
    font-size: 14px;
    padding: 11px;
    border-radius: 10px;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.wtc-add:hover[b-yzgqad0h2r] {
    background: #f3f8fd;
    border-color: #0599e1;
}
/* /Components/Shared/WOTemplateCard.razor.rz.scp.css */
/* src/Reliability360.Web/Components/Shared/WOTemplateCard.razor.css */
.kc-card[b-gxo2r6b5o1] {
    background: #fff;
    border: 1px solid #dce2ed;
    border-radius: 16px;
    padding: 20px 22px 22px;
}

.kc-head[b-gxo2r6b5o1] { margin-bottom: 12px; }

.kc-title[b-gxo2r6b5o1] { font-weight: 700; font-size: 16px; color: #0e1726; }

.kc-sub[b-gxo2r6b5o1] {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    margin-top: 3px;
}

.kc-rowgroup[b-gxo2r6b5o1] {
    border-bottom: 1px solid #ebeff5;
}

.kc-rowgroup .kc-row[b-gxo2r6b5o1] {
    border-bottom: none;
}

.kc-row[b-gxo2r6b5o1] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 2px;
    border-bottom: 1px solid #ebeff5;
}

.kc-name[b-gxo2r6b5o1] {
    flex: 0 0 160px;
    font-size: 14px;
    font-weight: 600;
    color: #0e1726;
    cursor: pointer;
}

.kc-desc[b-gxo2r6b5o1] {
    flex: 1;
    font-size: 13px;
    color: var(--ink-4);
    cursor: pointer;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kc-count[b-gxo2r6b5o1] {
    flex: 0 0 auto;
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    color: var(--ink-4);
    cursor: pointer;
}

.kc-input[b-gxo2r6b5o1] {
    font-size: 14px;
    font-family: inherit;
    color: #0e1726;
    border: 1px solid #0599e1;
    border-radius: 8px;
    padding: 6px 10px;
    outline: none;
}

.kc-input-name[b-gxo2r6b5o1] { flex: 0 0 200px; }
.kc-input-desc[b-gxo2r6b5o1] { flex: 1; }
.kc-input-qty[b-gxo2r6b5o1] { flex: 0 0 70px; }

.kc-iconbtn[b-gxo2r6b5o1] {
    border: none;
    background: transparent;
    cursor: pointer;
    color: #b9c3d1;
    font-size: 13px;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 6px;
    opacity: 0;
    transition: opacity .12s, color .12s, background .12s;
    flex-shrink: 0;
}

.kc-row:hover .kc-iconbtn[b-gxo2r6b5o1],
.kc-editactions .kc-iconbtn[b-gxo2r6b5o1],
.kc-linerow .kc-iconbtn[b-gxo2r6b5o1] {
    opacity: 1;
}

.kc-iconbtn:hover[b-gxo2r6b5o1] {
    background: #f0f3f8;
    color: #5a6878;
}

.kc-del:hover[b-gxo2r6b5o1] {
    color: #c43521;
    background: #fbdcd7;
}

.kc-save[b-gxo2r6b5o1] {
    color: #1f8a5b;
    opacity: 1;
    font-weight: 600;
    padding: 6px 12px;
}

.kc-save:hover[b-gxo2r6b5o1] {
    background: #d8f1e3;
    color: #1f8a5b;
}

/* Inline editor (name/description + line-by-line part/qty rows) shown while adding or editing a template. */
.kc-editor[b-gxo2r6b5o1] {
    padding: 12px 2px 16px;
    border-bottom: 1px solid #ebeff5;
}

.kc-editor--new[b-gxo2r6b5o1] {
    margin-top: 12px;
    border: 1px dashed #c7d0de;
    border-radius: 10px;
    padding: 14px;
}

.kc-editrow[b-gxo2r6b5o1] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.kc-linerow[b-gxo2r6b5o1] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.kc-addline[b-gxo2r6b5o1] {
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-size: 12px;
    font-weight: 600;
    padding: 6px 10px;
    border-radius: 8px;
    cursor: pointer;
    margin-bottom: 10px;
}

.kc-addline:hover[b-gxo2r6b5o1] {
    background: #f3f8fd;
    border-color: #0599e1;
}

.kc-editactions[b-gxo2r6b5o1] {
    display: flex;
    gap: 8px;
    margin-top: 4px;
}

.kc-add[b-gxo2r6b5o1] {
    margin-top: 12px;
    width: 100%;
    border: 1px dashed #c7d0de;
    background: transparent;
    color: #0599e1;
    font-weight: 600;
    font-size: 14px;
    padding: 11px;
    border-radius: 10px;
    cursor: pointer;
    transition: background .12s, border-color .12s;
}

.kc-add:hover[b-gxo2r6b5o1] {
    background: #f3f8fd;
    border-color: #0599e1;
}
