/* _content/OrderPulse.Cloud.Api/Components/ControlCenter/ActiveAlertsPanel.razor.rz.scp.css */
.oc-alert-item[b-xpgq0va1mq] {
    display:       flex;
    align-items:   flex-start;
    gap:           .75rem;
    padding:       .6rem 1rem;
    border-bottom: 1px solid #2a2a2a;
}
.oc-alert-item:last-child[b-xpgq0va1mq] { border-bottom: none; }

[b-xpgq0va1mq] .oc-alert-icon { flex-shrink: 0; margin-top: .1rem; font-size: 1.3rem; }
.oc-alert-item--danger[b-xpgq0va1mq]   .oc-alert-icon { color: var(--color-danger); }
.oc-alert-item--warning[b-xpgq0va1mq]  .oc-alert-icon { color: var(--color-warning); }

.oc-alert-text[b-xpgq0va1mq]  { display: flex; flex-direction: column; gap: .15rem; }
.oc-alert-title[b-xpgq0va1mq] { font-weight: 600; font-size: .85rem; }
.oc-alert-description[b-xpgq0va1mq] { color: var(--db-subtle); font-size: .78rem; }
/* _content/OrderPulse.Cloud.Api/Components/ControlCenter/CancellationsRankingTable.razor.rz.scp.css */
/* Same look as StoreRankingTable.razor.css — scoped CSS can't be shared between components. */
[b-mn1jamtjpg] .oc-cancel-table th {
    text-transform: uppercase;
    font-size: .68rem;
    letter-spacing: .04em;
    color: var(--db-subtle);
}

.oc-cancel-priority[b-mn1jamtjpg] {
    display:         inline-flex;
    align-items:     center;
    justify-content: center;
    width:           28px;
    height:          28px;
    border-radius:   50%;
    font-weight:     800;
    font-size:       .85rem;
}
.oc-cancel-priority--success[b-mn1jamtjpg] { background: var(--color-success-bg); color: var(--color-success); border: 1px solid var(--color-success-border); }
.oc-cancel-priority--warning[b-mn1jamtjpg] { background: var(--color-warning-bg); color: var(--color-warning); border: 1px solid var(--color-warning-border); }
.oc-cancel-priority--danger[b-mn1jamtjpg]  { background: var(--color-danger-bg);  color: var(--color-danger);  border: 1px solid var(--color-danger-border);  }

.oc-cancel-code[b-mn1jamtjpg] { display: block; font-weight: 700; }
.oc-cancel-name[b-mn1jamtjpg] { display: block; color: var(--db-subtle); font-size: .8rem; }

.oc-cancel-percent[b-mn1jamtjpg]          { font-weight: 800; white-space: nowrap; }
.oc-cancel-percent--success[b-mn1jamtjpg] { color: var(--color-success); }
.oc-cancel-percent--warning[b-mn1jamtjpg] { color: var(--color-warning); }
.oc-cancel-percent--danger[b-mn1jamtjpg]  { color: var(--color-danger); }

.oc-cancel-count[b-mn1jamtjpg] { white-space: nowrap; color: var(--db-subtle); }

/* The whole row opens the store's Operation Center, like the priority ranking's rows. */
.oc-cancel-row[b-mn1jamtjpg] { cursor: pointer; }
.oc-cancel-row:focus-visible[b-mn1jamtjpg] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}
/* _content/OrderPulse.Cloud.Api/Components/ControlCenter/ControlCenterKpis.razor.rz.scp.css */
[b-13rqpgreej] .oc-kpi-card { height: 100%; }

[b-13rqpgreej] .oc-kpi-label {
    display:        block;
    text-transform:  uppercase;
    letter-spacing:  .06em;
    color:           var(--db-subtle);
    margin-bottom:   .5rem;
}

.oc-kpi-dot[b-13rqpgreej] {
    display:       inline-block;
    width:         8px;
    height:        8px;
    border-radius: 50%;
    margin-right:  .4rem;
}
.oc-kpi-dot--warning[b-13rqpgreej] { background: var(--color-warning); }
.oc-kpi-dot--danger[b-13rqpgreej]  { background: var(--color-danger);  }

.oc-kpi-columns[b-13rqpgreej] {
    min-width:    0;
    display:      flex;
    align-items:  baseline;
    gap:          .6rem;
    margin-bottom: .3rem;
}

[b-13rqpgreej] .oc-kpi-icon          { font-size: 1.5rem; opacity: .85; }
[b-13rqpgreej] .oc-kpi-icon--primary { color: var(--mud-palette-primary); }
[b-13rqpgreej] .oc-kpi-icon--danger  { color: var(--color-danger); }
[b-13rqpgreej] .oc-kpi-icon--success { color: var(--color-success); }

[b-13rqpgreej] .oc-kpi-value { font-weight: 800; line-height: 1; }
/* Text values (a store code, "Sin rachas") are much wider than a 1–2 digit count: smaller type,
   and truncated with an ellipsis rather than spilling out of a narrow tablet tile. */
[b-13rqpgreej] .oc-kpi-value--text { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.oc-kpi-unit[b-13rqpgreej] { font-size: .85rem; font-weight: 400; color: var(--db-subtle); }

[b-13rqpgreej] .oc-kpi-delta          { display: block; font-weight: 600; }
[b-13rqpgreej] .oc-kpi-delta--up      { color: var(--color-success); }
[b-13rqpgreej] .oc-kpi-delta--down    { color: var(--color-danger); }

/* "Canceladas" is colored by its Normal/Atención/Crítico band, like a score badge. */
[b-13rqpgreej] .oc-kpi-icon--warning   { color: var(--color-warning); }
[b-13rqpgreej] .oc-kpi-value--success  { color: var(--color-success); }
[b-13rqpgreej] .oc-kpi-value--warning  { color: var(--color-warning); }
[b-13rqpgreej] .oc-kpi-value--danger   { color: var(--color-danger); }
[b-13rqpgreej] .oc-kpi-icon--none      { color: var(--db-subtle); }
[b-13rqpgreej] .oc-kpi-value--none     { color: var(--db-subtle); }

/* Six tiles: one row on desktop, 3×2 on a tablet (an auto-fit grid would wrap 5 + 1 orphan there),
   2×3 on a phone — same breakpoints as Centro de Desempeño's KPI row. */
.oc-kpi-grid[b-13rqpgreej] {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 8px;
    margin-bottom: 8px;
}

@media (max-width: 1279.98px) {
    .oc-kpi-grid[b-13rqpgreej] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 599.98px) {
    .oc-kpi-grid[b-13rqpgreej] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* _content/OrderPulse.Cloud.Api/Components/ControlCenter/ScoreSparkline.razor.rz.scp.css */
.score-sparkline[b-dcnznslk1w] { width: 60px; height: 24px; flex-shrink: 0; }
.score-sparkline--up[b-dcnznslk1w]   { color: var(--color-success); }
.score-sparkline--down[b-dcnznslk1w] { color: var(--color-danger); }
/* _content/OrderPulse.Cloud.Api/Components/ControlCenter/StoreRankingTable.razor.rz.scp.css */
[b-m5fj51hajz] .oc-ranking-table th {
    text-transform: uppercase;
    font-size: .68rem;
    letter-spacing: .04em;
    color: var(--db-subtle);
}

.oc-priority-badge[b-m5fj51hajz] {
    display:        inline-flex;
    align-items:    center;
    justify-content: center;
    width:          28px;
    height:         28px;
    border-radius:  50%;
    font-weight:    800;
    font-size:      .85rem;
}
.oc-priority-badge--success[b-m5fj51hajz] { background: var(--color-success-bg); color: var(--color-success); border: 1px solid var(--color-success-border); }
.oc-priority-badge--warning[b-m5fj51hajz] { background: var(--color-warning-bg); color: var(--color-warning); border: 1px solid var(--color-warning-border); }
.oc-priority-badge--danger[b-m5fj51hajz]  { background: var(--color-danger-bg);  color: var(--color-danger);  border: 1px solid var(--color-danger-border);  }

.oc-ranking-store-code[b-m5fj51hajz] { display: block; font-weight: 700; }
.oc-ranking-store-name[b-m5fj51hajz] { display: block; color: var(--db-subtle); font-size: .8rem; }

.oc-score-badge[b-m5fj51hajz] {
    display:        inline-flex;
    align-items:    center;
    justify-content: center;
    width:          40px;
    height:         40px;
    border-radius:  50%;
    font-weight:    800;
    font-size:      1rem;
}
.oc-score-badge--success[b-m5fj51hajz] { background: var(--color-success-bg); color: var(--color-success); border: 2px solid var(--color-success-border); }
.oc-score-badge--warning[b-m5fj51hajz] { background: var(--color-warning-bg); color: var(--color-warning); border: 2px solid var(--color-warning-border); }
.oc-score-badge--danger[b-m5fj51hajz]  { background: var(--color-danger-bg);  color: var(--color-danger);  border: 2px solid var(--color-danger-border);  }

.oc-problem-title[b-m5fj51hajz]  { display: block; font-weight: 600; }
.oc-problem-detail[b-m5fj51hajz] { display: block; color: var(--db-subtle); font-size: .8rem; }

/* The whole row opens the store's Operation Center (see StoreRankingTable.razor.cs). */
.oc-ranking-row[b-m5fj51hajz] {
    cursor: pointer;
}

.oc-ranking-row:focus-visible[b-m5fj51hajz] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

/* Colored by the same on-time/late thresholds every order is classified with. */
.oc-avg-time[b-m5fj51hajz]          { font-weight: 600; white-space: nowrap; }
.oc-avg-time--success[b-m5fj51hajz] { color: var(--color-success); }
.oc-avg-time--warning[b-m5fj51hajz] { color: var(--color-warning); }
.oc-avg-time--danger[b-m5fj51hajz]  { color: var(--color-danger); }
.oc-avg-time--none[b-m5fj51hajz]    { color: var(--db-subtle); font-weight: 400; }
/* _content/OrderPulse.Cloud.Api/Components/OperationCenter/OperationCenterKpis.razor.rz.scp.css */
/* Every selector here targets a class applied via Class="..." on a child Mud component
   (MudText/MudCard) — ::deep is required throughout, since those elements belong to the
   Mud components' own render output, not OperationCenterKpis's scope. */
/* Two real columns: icon on the left, a vertical stack (number, then label(s)) on the right,
   so the label text lines up directly under the number instead of spanning the full card
   width. Shared by both the top KPI row and the "estado operativo" semaphore row below. */
.kpi-columns[b-1fyrkmd4b2] {
    display:     flex;
    align-items: center;
    gap:         1.25rem;
}
.kpi-columns--compact[b-1fyrkmd4b2] { gap: .9rem; }
.kpi-text-col[b-1fyrkmd4b2] {
    display:        flex;
    flex-direction: column;
    gap:            .3rem;
}
[b-1fyrkmd4b2] .kpi-icon           { font-size: 2.2rem; opacity: .85; flex-shrink: 0; }
[b-1fyrkmd4b2] .kpi-icon--primary  { color: var(--mud-palette-primary); }
[b-1fyrkmd4b2] .kpi-icon--blue     { color: var(--color-blue); }
[b-1fyrkmd4b2] .kpi-icon--success  { color: var(--color-success); }
[b-1fyrkmd4b2] .kpi-icon--warning  { color: var(--color-warning); }
[b-1fyrkmd4b2] .kpi-icon--danger   { color: var(--color-danger); }
[b-1fyrkmd4b2] .kpi-icon--compact  { font-size: 1.9rem; }
[b-1fyrkmd4b2] .kpi-value          { font-weight: 900; line-height: 1; }
[b-1fyrkmd4b2] .kpi-value--primary { color: var(--mud-palette-primary); }
[b-1fyrkmd4b2] .kpi-value--blue    { color: var(--color-blue); }
[b-1fyrkmd4b2] .kpi-value--success { color: var(--color-success); }
[b-1fyrkmd4b2] .kpi-value--warning { color: var(--color-warning); }
[b-1fyrkmd4b2] .kpi-value--danger  { color: var(--color-danger); }
[b-1fyrkmd4b2] .kpi-label-text     { text-transform: uppercase; letter-spacing: .06em; }
[b-1fyrkmd4b2] .kpi-unit           { font-size: 1rem; font-weight: 400; }

[b-1fyrkmd4b2] .estado-operativo-title { color: #ffffff; font-weight: 700; }

[b-1fyrkmd4b2] .sem-icon           { font-size: 2.2rem; opacity: .85; flex-shrink: 0; }
[b-1fyrkmd4b2] .sem-icon--success  { color: var(--color-success); }
[b-1fyrkmd4b2] .sem-icon--warning  { color: var(--color-warning); }
[b-1fyrkmd4b2] .sem-icon--danger   { color: var(--color-danger);  }

/* align-items:stretch on the OUTER row (title+subtitle+3 boxes on the left vs. the rules panel
   on the right) makes the rules panel's MudItem match that whole left column's combined height -
   height:100% on .rules-card is what then actually stretches the card to fill it. The 3
   semaphore boxes themselves are NOT stretched to anything external anymore - they size to their
   own (now compact, single-line-label) content, same height as the KPI cards above. */
[b-1fyrkmd4b2] .estado-outer-row { align-items: stretch; }
[b-1fyrkmd4b2] .mud-card.sem-card--success { background: var(--color-success-bg) !important; border: 2px solid var(--color-success-border) !important; }
[b-1fyrkmd4b2] .mud-card.sem-card--warning { background: var(--color-warning-bg) !important; border: 2px solid var(--color-warning-border) !important; }
[b-1fyrkmd4b2] .mud-card.sem-card--danger  { background: var(--color-danger-bg)  !important; border: 2px solid var(--color-danger-border)  !important; }
[b-1fyrkmd4b2] .sem-value           { font-weight: 900; line-height: 1; }
[b-1fyrkmd4b2] .sem-value--success  { color: var(--color-success); }
[b-1fyrkmd4b2] .sem-value--warning  { color: var(--color-warning); }
[b-1fyrkmd4b2] .sem-value--danger   { color: var(--color-danger);  }
[b-1fyrkmd4b2] .sem-label           { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
[b-1fyrkmd4b2] .sem-label--success  { color: var(--color-success-light); }
[b-1fyrkmd4b2] .sem-label--warning  { color: var(--color-warning-light); }
[b-1fyrkmd4b2] .sem-label--danger   { color: var(--color-danger-light);  }
[b-1fyrkmd4b2] .sem-percent         { color: #aaaaaa; font-weight: 400; text-transform: none; letter-spacing: normal; }

[b-1fyrkmd4b2] .mud-card.rules-card { background: #1a1a1a; border: 1px solid #2e2e2e; height: 100%; }
[b-1fyrkmd4b2] .rules-title {
    display:        block;
    color:          #999999;
    text-transform: uppercase;
    letter-spacing: .06em;
    font-weight:    700;
    margin-bottom:  .6rem;
}
.score-formula[b-1fyrkmd4b2] {
    display:        flex;
    flex-direction: column;
    gap:            .5rem;
    margin-bottom:  .75rem;
}
.score-formula-row[b-1fyrkmd4b2] {
    display:     flex;
    align-items: center;
    gap:         .5rem;
}
.score-formula-dot[b-1fyrkmd4b2] {
    width:         8px;
    height:        8px;
    border-radius: 50%;
    flex-shrink:   0;
}
.score-formula-dot--success[b-1fyrkmd4b2] { background: var(--color-success); }
.score-formula-dot--warning[b-1fyrkmd4b2] { background: var(--color-warning); }
.score-formula-dot--danger[b-1fyrkmd4b2]  { background: var(--color-danger);  }
.score-formula-label[b-1fyrkmd4b2] {
    flex:      1;
    color:     #cccccc;
    font-size: .82rem;
}
.score-formula-pts[b-1fyrkmd4b2] {
    font-size:   .82rem;
    font-weight: 700;
}
.score-formula-pts--success[b-1fyrkmd4b2] { color: var(--color-success); }
.score-formula-pts--warning[b-1fyrkmd4b2] { color: var(--color-warning); }
.score-formula-pts--danger[b-1fyrkmd4b2]  { color: var(--color-danger);  }
[b-1fyrkmd4b2] .rules-footnote { display: block; color: #777777; font-size: .75rem; }
/* _content/OrderPulse.Cloud.Api/Components/PerformanceCenter/ExcellenceStreaksPanel.razor.rz.scp.css */
.pc-streaks-list[b-oynm0jkrd0] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

/* Store | bar | days — the bar column takes whatever width is left. */
.pc-streak-row[b-oynm0jkrd0] {
    display: grid;
    grid-template-columns: minmax(90px, 140px) 1fr auto;
    align-items: center;
    gap: .75rem;
    padding: .35rem .25rem;
    border-radius: 6px;
}
.pc-streak-row:hover[b-oynm0jkrd0] { background: rgba(255, 255, 255, .04); }

.pc-streak-store[b-oynm0jkrd0] { min-width: 0; }
.pc-streak-code[b-oynm0jkrd0]  { display: block; font-weight: 700; }
.pc-streak-name[b-oynm0jkrd0]  { display: block; color: var(--db-subtle); font-size: .8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.pc-streak-track[b-oynm0jkrd0] {
    height: 10px;
    border-radius: 4px;
    background: rgba(255, 255, 255, .06);
    overflow: hidden;
}

/* Normal = the "good" status color, the same green the ranking's Normal badges wear. */
.pc-streak-bar[b-oynm0jkrd0] {
    height: 100%;
    min-width: 6px;
    border-radius: 4px;
    background: var(--color-success);
}

.pc-streak-days[b-oynm0jkrd0] {
    font-weight: 600;
    font-size: .85rem;
    white-space: nowrap;
}

.pc-streaks-empty[b-oynm0jkrd0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    padding: 2rem 1rem;
    text-align: center;
    color: var(--db-subtle);
}
/* _content/OrderPulse.Cloud.Api/Components/PerformanceCenter/ImprovementsPanel.razor.rz.scp.css */
.pc-improvement-card[b-mfomuxi5hv] {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    padding: .75rem;
    border-radius: 8px;
    height: 100%;
    background: var(--color-success-bg);
    border: 1px solid var(--color-success-border);
}

[b-mfomuxi5hv] .pc-improvement-icon { flex-shrink: 0; margin-top: .1rem; color: var(--color-success); }

.pc-improvement-text[b-mfomuxi5hv] {
    display: flex;
    flex-direction: column;
    gap: .1rem;
    min-width: 0;
}

.pc-improvement-store[b-mfomuxi5hv]  { font-weight: 700; font-size: .85rem; }
.pc-improvement-score[b-mfomuxi5hv]  { font-size: .8rem; color: var(--db-subtle); }
.pc-improvement-detail[b-mfomuxi5hv] { font-size: .8rem; }
/* _content/OrderPulse.Cloud.Api/Components/PerformanceCenter/PerformanceCenterKpis.razor.rz.scp.css */
[b-s39dzyevrw] .pc-kpi-card { height: 100%; }

[b-s39dzyevrw] .pc-kpi-label {
    display: block;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--db-subtle);
    margin-bottom: .5rem;
}

.pc-kpi-dot[b-s39dzyevrw] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: .4rem;
}
.pc-kpi-dot--success[b-s39dzyevrw] { background: var(--color-success); }

.pc-kpi-columns[b-s39dzyevrw] {
    min-width: 0;
    display: flex;
    align-items: baseline;
    gap: .6rem;
    margin-bottom: .3rem;
}

[b-s39dzyevrw] .pc-kpi-icon { font-size: 1.5rem; opacity: .85; }
[b-s39dzyevrw] .pc-kpi-icon--primary { color: var(--mud-palette-primary); }
[b-s39dzyevrw] .pc-kpi-icon--blue { color: var(--color-blue); }
[b-s39dzyevrw] .pc-kpi-icon--danger { color: var(--color-danger); }
[b-s39dzyevrw] .pc-kpi-icon--success { color: var(--color-success); }
[b-s39dzyevrw] .pc-kpi-icon--gold { color: #fbbf24; }

[b-s39dzyevrw] .pc-kpi-value { font-weight: 800; line-height: 1; }
.pc-kpi-unit[b-s39dzyevrw] { font-size: .85rem; font-weight: 400; color: var(--db-subtle); }

[b-s39dzyevrw] .pc-kpi-delta { display: block; font-weight: 600; }
[b-s39dzyevrw] .pc-kpi-delta--up { color: var(--color-success); }
[b-s39dzyevrw] .pc-kpi-delta--down { color: var(--color-danger); }

/* "CODE · Store name" can be far wider than a narrow tablet tile: one line, ellipsis. */
[b-s39dzyevrw] .pc-kpi-truncate { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Six tiles: one row on desktop, 3×2 on a tablet (an auto-fit grid would wrap 5 + 1 orphan there),
   2×3 on a phone. Breakpoints are MudBlazor's lg/sm, same as the sidebar rail. */
.pc-kpi-grid[b-s39dzyevrw] {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 8px;
    margin-bottom: 8px;
}

@media (max-width: 1279.98px) {
    .pc-kpi-grid[b-s39dzyevrw] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 599.98px) {
    .pc-kpi-grid[b-s39dzyevrw] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* _content/OrderPulse.Cloud.Api/Components/PerformanceCenter/PerformanceMap.razor.rz.scp.css */
.performance-map[b-ezghdkczaj] {
    width: 100%;
    height: 420px;
    border-radius: 8px;
    overflow: hidden;
}
/* _content/OrderPulse.Cloud.Api/Components/PerformanceCenter/PerformanceRankingTable.razor.rz.scp.css */
/* Plain `th`/`td` selectors — no ::deep needed, these elements are written directly in this
   component's own template (inside MudSimpleTable's ChildContent), so they carry this
   component's own scope attribute already. */
th[b-l5ljeelcny] {
    text-transform: uppercase;
    font-size: .68rem;
    letter-spacing: .04em;
    color: var(--db-subtle);
}

.pc-ranking-row[b-l5ljeelcny] { cursor: pointer; }

.pc-ranking-store-code[b-l5ljeelcny] { display: block; font-weight: 700; }
.pc-ranking-store-name[b-l5ljeelcny] { display: block; color: var(--db-subtle); font-size: .8rem; }

.pc-score-badge[b-l5ljeelcny] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    font-weight: 800;
    font-size: 1rem;
}
.pc-score-badge--success[b-l5ljeelcny] { background: var(--color-success-bg); color: var(--color-success); border: 2px solid var(--color-success-border); }
.pc-score-badge--warning[b-l5ljeelcny] { background: var(--color-warning-bg); color: var(--color-warning); border: 2px solid var(--color-warning-border); }
.pc-score-badge--danger[b-l5ljeelcny]  { background: var(--color-danger-bg);  color: var(--color-danger);  border: 2px solid var(--color-danger-border);  }

.pc-ranking-row:focus-visible[b-l5ljeelcny] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.pc-low-volume-note[b-l5ljeelcny] {
    display: flex;
    align-items: center;
    gap: .4rem;
    padding: .5rem .5rem 0;
    font-size: .8rem;
    color: var(--db-subtle);
}
/* _content/OrderPulse.Cloud.Api/Components/Settings/AnalyticsSettingsPanel.razor.rz.scp.css */
.analytics-settings-section-title[b-ul74puwj8s] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}
/* _content/OrderPulse.Cloud.Api/Components/Settings/OrderClassificationSettingsPanel.razor.rz.scp.css */
.classification-section-title[b-i73zmf3lx7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

.classification-add-row[b-i73zmf3lx7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    max-width: 22rem;
    margin-top: 0.5rem;
}
/* _content/OrderPulse.Cloud.Api/Components/Settings/ProductCatalogPanel.razor.rz.scp.css */
[b-f2kqkmgtj7].catalog-card {
    width: 100%;
}

.catalog-current[b-f2kqkmgtj7] {
    display:     flex;
    align-items: center;
    gap:         .6rem;
}

.catalog-stats[b-f2kqkmgtj7] {
    display:   flex;
    flex-wrap: wrap;
    gap:       .75rem;
}

.catalog-stat[b-f2kqkmgtj7] {
    display:        flex;
    flex-direction: column;
    min-width:      110px;
    padding:        .6rem .9rem;
    border:         1px solid var(--mud-palette-lines-default);
    border-radius:  8px;
    font-size:      .8rem;
    color:          var(--mud-palette-text-secondary);
}

.catalog-stat-value[b-f2kqkmgtj7] {
    font-size:   1.4rem;
    font-weight: 600;
    color:       var(--mud-palette-text-primary);
}

.catalog-unrecognized[b-f2kqkmgtj7] {
    margin:      .4rem 0 0;
    padding-left: 1.2rem;
    font-size:   .8rem;
}

[b-f2kqkmgtj7].catalog-categories {
    max-height: 360px;
}

.catalog-count[b-f2kqkmgtj7] {
    text-align: right;
}
/* _content/OrderPulse.Cloud.Api/Components/Shared/ClientPagerBar.razor.rz.scp.css */
.client-pager-bar[b-uqmps39323] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.5rem 0.5rem 0;
}
/* _content/OrderPulse.Cloud.Api/Components/Stores/ManageStoreDialog.razor.rz.scp.css */
.manage-store-section-title[b-tmuw7yz2mj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.5rem;
}

.manage-store-section-heading[b-tmuw7yz2mj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

[b-tmuw7yz2mj] .manage-store-stations-table {
    margin-bottom: 0.5rem;
}

.manage-store-station-actions[b-tmuw7yz2mj] {
    white-space: nowrap;
    width: 1%;
}

.manage-store-empty-row[b-tmuw7yz2mj] {
    text-align: center;
    color: var(--mud-palette-text-secondary);
    padding: 0.75rem 0;
}
/* _content/OrderPulse.Cloud.Api/Components/Stores/StoresList.razor.rz.scp.css */
.stores-grid[b-kv041sar40] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(308px, 1fr));
    column-gap: 1rem;
    row-gap: 2rem;
    margin-top: 30px;
}

[b-kv041sar40] .store-card {
    background: #1c1c1c;
    border: 1px solid #2a2a2a;
}

.store-card-header[b-kv041sar40] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    padding: 1.5rem 1.25rem;
}

[b-kv041sar40] .store-avatar {
    flex-shrink: 0;
}

.store-card-heading[b-kv041sar40] {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.store-name[b-kv041sar40] {
    font-weight: 600;
    color: #ffffff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.store-code[b-kv041sar40] {
    font-size: 0.75rem;
    color: #888888;
    letter-spacing: 0.03em;
}

[b-kv041sar40] .store-edit-button {
    flex-shrink: 0;
}

.store-card-meta[b-kv041sar40] {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    padding: 1.35rem 1.25rem;
}

.store-meta-row[b-kv041sar40] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
    color: #cccccc;
}

[b-kv041sar40] .store-meta-icon {
    opacity: 0.6;
    flex-shrink: 0;
}

/* Full-bleed, slightly brighter than MudDivider's default so the header/body/footer split
   reads clearly against the card's own #1c1c1c background. */
[b-kv041sar40] .store-card-divider.mud-divider {
    margin: 0;
    border-color: #333333;
}

[b-kv041sar40] .store-card-actions {
    padding: 1rem 1.25rem;
    justify-content: flex-start;
    gap: 0.5rem;
}
/* _content/OrderPulse.Cloud.Api/Components/Users/AdminUsersList.razor.rz.scp.css */
.users-grid[b-d0kf9p7loc] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
    margin-top: 30px;
}

[b-d0kf9p7loc] .user-card {
    background: #1c1c1c;
    border: 1px solid #2a2a2a;
}

.user-card-header[b-d0kf9p7loc] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

[b-d0kf9p7loc] .user-avatar {
    flex-shrink: 0;
}

.user-card-heading[b-d0kf9p7loc] {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.user-email[b-d0kf9p7loc] {
    font-weight: 600;
    color: #ffffff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-status[b-d0kf9p7loc] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    color: #aaaaaa;
}

.status-dot[b-d0kf9p7loc] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.status-dot-active[b-d0kf9p7loc] {
    background: #4caf50;
}

.status-dot-inactive[b-d0kf9p7loc] {
    background: #666666;
}

.user-card-meta[b-d0kf9p7loc] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.user-meta-row[b-d0kf9p7loc] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
    color: #cccccc;
}

[b-d0kf9p7loc] .user-meta-icon {
    opacity: 0.6;
    flex-shrink: 0;
}

.user-card-created[b-d0kf9p7loc] {
    font-size: 0.75rem;
    color: #777777;
}

[b-d0kf9p7loc] .user-card-actions {
    padding: 0.5rem 1rem 1rem;
    justify-content: flex-start;
    gap: 0.25rem;
}
/* _content/OrderPulse.Cloud.Api/Components/Videos/VideosList.razor.rz.scp.css */
[b-bx36534dod] .videos-table {
    background: transparent;
    margin-top: 0.5rem;
}

[b-bx36534dod] .videos-table .mud-table-container {
    background: #1c1c1c;
    border: 1px solid #2a2a2a;
    border-radius: 8px;
}

[b-bx36534dod] .videos-table .mud-table-head {
    background: #161616;
}

[b-bx36534dod] .videos-table .mud-table-head .mud-table-cell {
    color: #999999;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.video-thumb[b-bx36534dod] {
    position: relative;
    width: 120px;
    height: 68px;
    border-radius: 6px;
    overflow: hidden;
    background: #000;
    cursor: pointer;
}

.video-thumb-media[b-bx36534dod] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

[b-bx36534dod] .video-thumb-play {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: var(--mud-palette-primary);
    font-size: 2.25rem;
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.7));
    pointer-events: none;
}

.video-time[b-bx36534dod] {
    font-size: 0.8rem;
    color: #999999;
}

[b-bx36534dod] .video-delete-btn {
    border: 1px solid var(--mud-palette-error);
    border-radius: 6px;
}
/* _content/OrderPulse.Cloud.Api/Layout/AdminLayout.razor.rz.scp.css */
.admin-shell[b-e9ge5vt43u] {
    --admin-sidebar-width: 220px;
    display: flex;
    min-height: 100vh;
}

.admin-sidebar[b-e9ge5vt43u] {
    width: var(--admin-sidebar-width);
    background: #1a1a1a;
    border-right: 1px solid #2a2a2a;
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    padding-bottom: 6rem;
}

.admin-sidebar-header[b-e9ge5vt43u] {
    background: #141416;
    padding: 2rem 1.25rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2.5rem;
    border-bottom: 1px solid #2a2a2a;
    box-sizing: border-box;
}

.admin-sidebar-store-logo[b-e9ge5vt43u] {
    height: 36px;
}

.admin-sidebar-logo[b-e9ge5vt43u] {
    height: 42px;
}

.admin-sidebar-footer[b-e9ge5vt43u] {
    position: fixed;
    bottom: 0;
    left: 0;
    width: var(--admin-sidebar-width);
    background: #1a1a1a;
    border-top: 1px solid #2a2a2a;
    z-index: 10;
}

/* !important because MudBlazor's own button CSS (loaded after app.css, same-or-higher
   specificity) otherwise wins the cascade — same gotcha documented in the CSS isolation notes:
   a plain override here isn't enough to beat MudButton's default uppercase Material-Design text. */
[b-e9ge5vt43u] .admin-logout-button {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0.55rem !important;
    width: 100% !important;
    padding: 0.7rem 1.25rem !important;
    background: none !important;
    border: none !important;
    border-left: 3px solid transparent !important;
    border-radius: 0 !important;
    color: #aaa !important;
    font-size: 0.88rem !important;
    font-weight: 500 !important;
    font-family: inherit !important;
    text-transform: none !important;
    white-space: nowrap !important;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}

[b-e9ge5vt43u] .admin-logout-button:hover {
    background: #252525;
    color: #ffffff;
    border-left-color: #DA1A32;
}

[b-e9ge5vt43u] .nav-icon {
    font-size: 1.1rem;
    opacity: 0.7;
    flex-shrink: 0;
}

.admin-poweredby[b-e9ge5vt43u] {
    padding: 1.1rem 1.25rem;
    font-size: 0.85rem;
    border-top: 1px solid #2a2a2a;
}

.admin-poweredby .poweredby-logo[b-e9ge5vt43u] {
    height: 34px;
}

.admin-content[b-e9ge5vt43u] {
    flex: 1;
    position: relative;
    /* z-index: 0 (not just position: relative) so this establishes its OWN
       stacking context. Without it, the ::before's z-index: -1 escapes to the
       page's root stacking context instead of staying local — and admin-content's
       own opaque background, painted later in that outer context, covers it entirely. */
    z-index: 0;
    padding: 2rem 2.5rem;
    background: var(--mud-palette-background);
    color: var(--mud-palette-text-primary);
}

/* Pulse line (::before, painted first — sits behind the logo) mirrors
   .login-brand-pulse's polyline points/color from app.css, just re-encoded as
   an SVG data URI since this is a background layer, not markup. */
.admin-content[b-e9ge5vt43u]::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 120' preserveAspectRatio='none'%3E%3Cpolyline points='0,60 120,60 145,60 160,20 180,100 200,10 220,90 240,60 260,60 800,60' fill='none' stroke='%23DA1A32' stroke-width='3'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center calc(50% + 70px);
    background-size: 90% 90px;
    opacity: 0.2;
    pointer-events: none;
}

.admin-content[b-e9ge5vt43u]::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background-image: url('/orderpulse-logo-horizontal.png');
    background-repeat: no-repeat;
    background-position: center;
    background-size: 420px auto;
    opacity: 0.2;
    pointer-events: none;
}

/* Not shown at full width — only the collapsed rail below swaps it in for the two big logos. */
.admin-sidebar-icon-logo[b-e9ge5vt43u] {
    display: none;
    width: 36px;
    height: auto;
}

/* Tablet widths (below MudBlazor's lg breakpoint): the sidebar collapses to an icon-only rail.
   Pure CSS on purpose — AdminLayout is a static layout (a layout can't take @rendermode), so a
   toggle button would need its own interactive island; a media query needs nothing. Labels stay
   reachable through each link's/button's title tooltip. */
@media (max-width: 1279.98px) {
    .admin-shell[b-e9ge5vt43u] {
        --admin-sidebar-width: 64px;
    }

    .admin-sidebar-header[b-e9ge5vt43u] {
        padding: 1rem 0;
        gap: 0;
    }

    .admin-sidebar-store-logo[b-e9ge5vt43u],
    .admin-sidebar-logo[b-e9ge5vt43u],
    .admin-poweredby[b-e9ge5vt43u],
    [b-e9ge5vt43u] .admin-sidebar-label {
        display: none;
    }

    .admin-sidebar-icon-logo[b-e9ge5vt43u] {
        display: block;
    }

    [b-e9ge5vt43u] .admin-logout-button {
        justify-content: center !important;
        padding: 0.85rem 0 !important;
    }

    /* MudButton reserves a right margin on its start icon for the (now hidden) label. */
    [b-e9ge5vt43u] .admin-logout-button .mud-button-icon-start {
        margin: 0 !important;
    }

    /* Lives here, not in AdminNavMenu.razor.css: AdminNavMenu renders no HTML element of its own
       (only MudNavMenu/AuthorizeView components), so nothing carries its CSS-isolation scope
       attribute and its scoped rules never match. .admin-sidebar here does carry this file's. */
    [b-e9ge5vt43u] .mud-nav-link {
        justify-content: center;
        padding-left: 0;
        padding-right: 0;
    }

    [b-e9ge5vt43u] .mud-nav-link .mud-nav-link-icon {
        margin: 0;
    }

    [b-e9ge5vt43u] .mud-nav-link .mud-nav-link-text {
        display: none;
    }

    .admin-content[b-e9ge5vt43u] {
        padding: 1.5rem 1.5rem;
    }
}
/* _content/OrderPulse.Cloud.Api/Layout/AdminPageHeader.razor.rz.scp.css */
.admin-page-header[b-emetvyk91q] {
    margin: -2rem -2.5rem 1.25rem;
    padding: 0 2.5rem;
    min-height: var(--admin-topbar-height);
    display: flex;
    align-items: center;
    border-bottom: 1px solid #2a2a2a;
}

.admin-page-title[b-emetvyk91q] {
    font-weight: 600;
}

.admin-page-header-actions[b-emetvyk91q] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

/* Keeps the header's negative margins in step with .admin-content's smaller tablet padding
   (AdminLayout.razor.css). */
@media (max-width: 1279.98px) {
    .admin-page-header[b-emetvyk91q] {
        margin: -1.5rem -1.5rem 1.25rem;
        padding: 0 1.5rem;
    }
}
/* _content/OrderPulse.Cloud.Api/Pages/Admin/ControlCenter.razor.rz.scp.css */
[b-s5y09lekiu] .oc-date-picker {
    width: 160px !important;
    flex: none !important;
}
/* _content/OrderPulse.Cloud.Api/Pages/Admin/OperationCenter.razor.rz.scp.css */
/* Ported from orderpulse-local's Dashboard.razor.css, minus the standalone kiosk chrome
   (.display-container/.display-header/live-vs-histórico badge) — this page sits inside
   AdminLayout/AdminPageHeader instead of being its own full-screen route. */

[b-1cr31z3gz3] .dashboard-store-picker {
    width: 260px !important;
    flex: none !important;
}

[b-1cr31z3gz3] .dashboard-date-picker {
    width: 130px !important;
    flex: none !important;
}

/* Title row — store name/date on the left, computed operational status pill on the right. */
.dashboard-title-row[b-1cr31z3gz3] {
    display:         flex;
    align-items:     flex-start;
    justify-content: space-between;
    gap:             1rem;
    margin-bottom:   1rem;
}

.dashboard-store-title[b-1cr31z3gz3] {
    margin:      0;
    color:       #ffffff;
    font-size:   1.5rem;
    font-weight: 800;
}

.dashboard-store-subtitle[b-1cr31z3gz3] {
    margin:    .25rem 0 0;
    color:     var(--db-subtle);
    font-size: .85rem;
}

/* One bordered box holding the whole "PULSE SCORE [icon] 92 / 100 [status pill]" group. */
.pulse-score-box[b-1cr31z3gz3] {
    display:      flex;
    align-items:  center;
    gap:          .65rem;
    flex-shrink:  0;
    padding:      .5rem 1rem;
    border:       1px solid #2a2a2a;
    border-radius: 10px;
    background:   #161616;
}

.pulse-score-label[b-1cr31z3gz3] {
    color:          var(--db-subtle);
    font-size:      .62rem;
    font-weight:    700;
    line-height:    1.25;
    letter-spacing: .04em;
}

.pulse-score-icon[b-1cr31z3gz3]           { width: 32px; height: 16px; flex-shrink: 0; }
.pulse-score-icon--success[b-1cr31z3gz3]  { color: var(--color-success); }
.pulse-score-icon--warning[b-1cr31z3gz3]  { color: var(--color-warning); }
.pulse-score-icon--danger[b-1cr31z3gz3]   { color: var(--color-danger);  }
.pulse-score-icon--none[b-1cr31z3gz3]     { color: var(--db-subtle); }

.pulse-score-value[b-1cr31z3gz3] {
    font-size:   2rem;
    font-weight: 900;
    line-height: 1;
}

.pulse-score-value--success[b-1cr31z3gz3] { color: var(--color-success); }
.pulse-score-value--warning[b-1cr31z3gz3] { color: var(--color-warning); }
.pulse-score-value--danger[b-1cr31z3gz3]  { color: var(--color-danger);  }
.pulse-score-value--none[b-1cr31z3gz3]    { color: var(--db-subtle); }

.pulse-score-max[b-1cr31z3gz3] {
    font-size: 1.1rem;
    color:     var(--db-subtle);
}

/* Groups the Pulse Score box + its color legend together as one right-aligned cluster, so
   .dashboard-title-row's space-between only has 2 real children. */
.dashboard-title-right[b-1cr31z3gz3] {
    display:     flex;
    align-items: stretch;
    gap:         .75rem;
    flex-shrink: 0;
}

.score-legend-card[b-1cr31z3gz3] {
    display:        flex;
    flex-direction: column;
    justify-content: center;
    gap:            .3rem;
    flex-shrink:    0;
    padding:        .5rem .9rem;
    border:         1px solid #2a2a2a;
    border-radius:  10px;
    background:     #161616;
    font-size:      .7rem;
    color:          #999999;
}

.score-legend-row[b-1cr31z3gz3] {
    display:     flex;
    align-items: center;
    gap:         .4rem;
}

.score-legend-dot[b-1cr31z3gz3] {
    width:         7px;
    height:        7px;
    border-radius: 50%;
    flex-shrink:   0;
}

.score-legend-dot--success[b-1cr31z3gz3] { background: var(--color-success); }
.score-legend-dot--warning[b-1cr31z3gz3] { background: var(--color-warning); }
.score-legend-dot--danger[b-1cr31z3gz3]  { background: var(--color-danger);  }

.score-legend-name[b-1cr31z3gz3] { color: #cccccc; }

.status-pill[b-1cr31z3gz3] {
    flex-shrink:    0;
    padding:        .4rem 1rem;
    border-radius:  20px;
    font-size:      .75rem;
    font-weight:    800;
    letter-spacing: .04em;
    white-space:    nowrap;
}

.status-pill--success[b-1cr31z3gz3] {
    background: var(--color-success-bg);
    border:     1px solid var(--color-success-border);
    color:      var(--color-success);
}

.status-pill--warning[b-1cr31z3gz3] {
    background: var(--color-warning-bg);
    border:     1px solid var(--color-warning-border);
    color:      var(--color-warning);
}

.status-pill--danger[b-1cr31z3gz3] {
    background: var(--color-danger-bg);
    border:     1px solid var(--color-danger-border);
    color:      var(--color-danger);
}

/* No orders in the day — neutral, nothing to judge yet. */
.status-pill--none[b-1cr31z3gz3] {
    background: transparent;
    border:     1px solid var(--db-subtle);
    color:      var(--db-subtle);
}

/* The one alert animation on the whole page — a gentle pulse for Atención, a faster/bigger/
   scaling one for Crítico. */
@keyframes statusPillBlinkSubtle-b-1cr31z3gz3 {
    0%, 100% { box-shadow: none; }
    50%      { box-shadow: 0 0 14px 3px var(--color-warning); }
}
@keyframes statusPillBlinkAlarm-b-1cr31z3gz3 {
    0%, 100% { box-shadow: 0 0 0 0 var(--color-danger); transform: scale(1); }
    50%      { box-shadow: 0 0 32px 10px var(--color-danger); transform: scale(1.05); }
}

.status-pill--blink-subtle[b-1cr31z3gz3] { animation: statusPillBlinkSubtle-b-1cr31z3gz3 2.2s ease-in-out infinite; }
.status-pill--blink-alarm[b-1cr31z3gz3]  { animation: statusPillBlinkAlarm-b-1cr31z3gz3  0.7s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
    .status-pill--blink-subtle[b-1cr31z3gz3],
    .status-pill--blink-alarm[b-1cr31z3gz3] { animation: none; }
}
/* _content/OrderPulse.Cloud.Api/Pages/Admin/PerformanceCenter.razor.rz.scp.css */
/* Plain span written in this page's own markup, so it carries the page's scope attribute — no
   ::deep needed. */
.pc-period-range[b-16f26e3xnb] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    white-space: nowrap;
    font-size: .875rem;
    color: var(--db-subtle);
}

/* MudSelect renders its own root element, which carries no scope attribute — hence ::deep. */
[b-16f26e3xnb] .pc-period-select {
    width: 190px;
    flex: 0 0 auto;
}
/* _content/OrderPulse.Cloud.Api/Pages/Admin/Videos.razor.rz.scp.css */
.videos-page-subtitle[b-b8bm7o29af] {
    margin-top: -0.75rem;
    margin-bottom: 1.5rem;
}

.videos-toolbar[b-b8bm7o29af] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 2rem;
}

.videos-toolbar-title[b-b8bm7o29af] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
